From de6940352a2f708376219a89ec84a8e6d25ca59e Mon Sep 17 00:00:00 2001 From: Christoph Wurst Date: Tue, 17 Sep 2019 16:33:27 +0200 Subject: Move settings to an app Signed-off-by: Christoph Wurst Signed-off-by: npmbuildbot[bot] --- .gitattributes | 3 +- .gitignore | 1 + apps/provisioning_api/lib/AppInfo/Application.php | 2 +- .../lib/Controller/UsersController.php | 2 +- .../tests/Controller/UsersControllerTest.php | 2 +- apps/settings/.babelrc.js | 13 + apps/settings/.editorconfig | 12 + apps/settings/.gitignore | 12 + apps/settings/.l10nignore | 14 + apps/settings/appinfo/info.xml | 19 + apps/settings/appinfo/routes.php | 100 ++ apps/settings/composer/autoload.php | 7 + apps/settings/composer/composer.json | 13 + apps/settings/composer/composer/ClassLoader.php | 445 ++++++ apps/settings/composer/composer/LICENSE | 21 + .../composer/composer/autoload_classmap.php | 43 + .../composer/composer/autoload_namespaces.php | 9 + apps/settings/composer/composer/autoload_psr4.php | 10 + apps/settings/composer/composer/autoload_real.php | 43 + .../settings/composer/composer/autoload_static.php | 69 + apps/settings/css/settings.scss | 1557 ++++++++++++++++++++ apps/settings/help.php | 58 + apps/settings/img/admin.svg | 1 + apps/settings/img/apps.svg | 1 + apps/settings/img/change.svg | 1 + apps/settings/img/help.svg | 1 + apps/settings/img/password.svg | 1 + apps/settings/img/personal.png | Bin 0 -> 497 bytes apps/settings/img/personal.svg | 1 + apps/settings/img/share.svg | 1 + apps/settings/img/toggle-filelist.svg | 1 + apps/settings/img/users.svg | 1 + apps/settings/js/admin.js | 319 ++++ apps/settings/js/apps.js | 113 ++ apps/settings/js/certificates.js | 70 + apps/settings/js/federationscopemenu.js | 130 ++ apps/settings/js/federationsettingsview.js | 228 +++ apps/settings/js/log.js | 85 ++ apps/settings/js/security_password.js | 86 ++ apps/settings/js/settings.js | 96 ++ apps/settings/js/settings/personalInfo.js | 379 +++++ apps/settings/js/templates.js | 36 + .../js/templates/federationscopemenu.handlebars | 17 + apps/settings/js/usersettings.js | 50 + apps/settings/js/vue-0.js | 838 +++++++++++ apps/settings/js/vue-0.js.map | 1 + apps/settings/js/vue-4.js | 2 + apps/settings/js/vue-4.js.map | 1 + apps/settings/js/vue-5.js | 2 + apps/settings/js/vue-5.js.map | 1 + apps/settings/js/vue-6.js | 8 + apps/settings/js/vue-6.js.map | 1 + apps/settings/js/vue-settings-admin-security.js | 880 +++++++++++ .../settings/js/vue-settings-admin-security.js.map | 1 + .../js/vue-settings-apps-users-management.js | 113 ++ .../js/vue-settings-apps-users-management.js.map | 1 + apps/settings/js/vue-settings-personal-security.js | 908 ++++++++++++ .../js/vue-settings-personal-security.js.map | 1 + apps/settings/l10n/ar.js | 241 +++ apps/settings/l10n/ar.json | 239 +++ apps/settings/l10n/ast.js | 221 +++ apps/settings/l10n/ast.json | 219 +++ apps/settings/l10n/bg.js | 231 +++ apps/settings/l10n/bg.json | 229 +++ apps/settings/l10n/ca.js | 823 +++++++++++ apps/settings/l10n/ca.json | 821 +++++++++++ apps/settings/l10n/cs.js | 522 +++++++ apps/settings/l10n/cs.json | 520 +++++++ apps/settings/l10n/da.js | 298 ++++ apps/settings/l10n/da.json | 296 ++++ apps/settings/l10n/de.js | 823 +++++++++++ apps/settings/l10n/de.json | 821 +++++++++++ apps/settings/l10n/de_DE.js | 823 +++++++++++ apps/settings/l10n/de_DE.json | 821 +++++++++++ apps/settings/l10n/el.js | 314 ++++ apps/settings/l10n/el.json | 312 ++++ apps/settings/l10n/en_GB.js | 270 ++++ apps/settings/l10n/en_GB.json | 268 ++++ apps/settings/l10n/eo.js | 701 +++++++++ apps/settings/l10n/eo.json | 699 +++++++++ apps/settings/l10n/es.js | 823 +++++++++++ apps/settings/l10n/es.json | 821 +++++++++++ apps/settings/l10n/es_419.js | 269 ++++ apps/settings/l10n/es_419.json | 267 ++++ apps/settings/l10n/es_AR.js | 245 +++ apps/settings/l10n/es_AR.json | 243 +++ apps/settings/l10n/es_CL.js | 264 ++++ apps/settings/l10n/es_CL.json | 262 ++++ apps/settings/l10n/es_CO.js | 264 ++++ apps/settings/l10n/es_CO.json | 262 ++++ apps/settings/l10n/es_CR.js | 264 ++++ apps/settings/l10n/es_CR.json | 262 ++++ apps/settings/l10n/es_DO.js | 264 ++++ apps/settings/l10n/es_DO.json | 262 ++++ apps/settings/l10n/es_EC.js | 264 ++++ apps/settings/l10n/es_EC.json | 262 ++++ apps/settings/l10n/es_GT.js | 264 ++++ apps/settings/l10n/es_GT.json | 262 ++++ apps/settings/l10n/es_HN.js | 258 ++++ apps/settings/l10n/es_HN.json | 256 ++++ apps/settings/l10n/es_MX.js | 275 ++++ apps/settings/l10n/es_MX.json | 273 ++++ apps/settings/l10n/es_NI.js | 258 ++++ apps/settings/l10n/es_NI.json | 256 ++++ apps/settings/l10n/es_PA.js | 258 ++++ apps/settings/l10n/es_PA.json | 256 ++++ apps/settings/l10n/es_PE.js | 258 ++++ apps/settings/l10n/es_PE.json | 256 ++++ apps/settings/l10n/es_PR.js | 258 ++++ apps/settings/l10n/es_PR.json | 256 ++++ apps/settings/l10n/es_PY.js | 258 ++++ apps/settings/l10n/es_PY.json | 256 ++++ apps/settings/l10n/es_SV.js | 264 ++++ apps/settings/l10n/es_SV.json | 262 ++++ apps/settings/l10n/es_UY.js | 258 ++++ apps/settings/l10n/es_UY.json | 256 ++++ apps/settings/l10n/et_EE.js | 246 ++++ apps/settings/l10n/et_EE.json | 244 +++ apps/settings/l10n/eu.js | 362 +++++ apps/settings/l10n/eu.json | 360 +++++ apps/settings/l10n/fi.js | 353 +++++ apps/settings/l10n/fi.json | 351 +++++ apps/settings/l10n/fr.js | 714 +++++++++ apps/settings/l10n/fr.json | 712 +++++++++ apps/settings/l10n/gl.js | 823 +++++++++++ apps/settings/l10n/gl.json | 821 +++++++++++ apps/settings/l10n/he.js | 465 ++++++ apps/settings/l10n/he.json | 463 ++++++ apps/settings/l10n/hr.js | 823 +++++++++++ apps/settings/l10n/hr.json | 821 +++++++++++ apps/settings/l10n/hu.js | 365 +++++ apps/settings/l10n/hu.json | 363 +++++ apps/settings/l10n/id.js | 428 ++++++ apps/settings/l10n/id.json | 426 ++++++ apps/settings/l10n/is.js | 809 ++++++++++ apps/settings/l10n/is.json | 807 ++++++++++ apps/settings/l10n/it.js | 823 +++++++++++ apps/settings/l10n/it.json | 821 +++++++++++ apps/settings/l10n/ja.js | 820 +++++++++++ apps/settings/l10n/ja.json | 818 ++++++++++ apps/settings/l10n/ka_GE.js | 261 ++++ apps/settings/l10n/ka_GE.json | 259 ++++ apps/settings/l10n/ko.js | 333 +++++ apps/settings/l10n/ko.json | 331 +++++ apps/settings/l10n/lt_LT.js | 356 +++++ apps/settings/l10n/lt_LT.json | 354 +++++ apps/settings/l10n/mk.js | 791 ++++++++++ apps/settings/l10n/mk.json | 789 ++++++++++ apps/settings/l10n/nb.js | 348 +++++ apps/settings/l10n/nb.json | 346 +++++ apps/settings/l10n/nl.js | 823 +++++++++++ apps/settings/l10n/nl.json | 821 +++++++++++ apps/settings/l10n/pl.js | 823 +++++++++++ apps/settings/l10n/pl.json | 821 +++++++++++ apps/settings/l10n/pt_BR.js | 823 +++++++++++ apps/settings/l10n/pt_BR.json | 821 +++++++++++ apps/settings/l10n/pt_PT.js | 260 ++++ apps/settings/l10n/pt_PT.json | 258 ++++ apps/settings/l10n/ro.js | 314 ++++ apps/settings/l10n/ro.json | 312 ++++ apps/settings/l10n/ru.js | 822 +++++++++++ apps/settings/l10n/ru.json | 820 +++++++++++ apps/settings/l10n/sk.js | 362 +++++ apps/settings/l10n/sk.json | 360 +++++ apps/settings/l10n/sl.js | 297 ++++ apps/settings/l10n/sl.json | 295 ++++ apps/settings/l10n/sq.js | 256 ++++ apps/settings/l10n/sq.json | 254 ++++ apps/settings/l10n/sr.js | 822 +++++++++++ apps/settings/l10n/sr.json | 820 +++++++++++ apps/settings/l10n/sv.js | 823 +++++++++++ apps/settings/l10n/sv.json | 821 +++++++++++ apps/settings/l10n/tr.js | 823 +++++++++++ apps/settings/l10n/tr.json | 821 +++++++++++ apps/settings/l10n/uk.js | 312 ++++ apps/settings/l10n/uk.json | 310 ++++ apps/settings/l10n/vi.js | 263 ++++ apps/settings/l10n/vi.json | 261 ++++ apps/settings/l10n/zh_CN.js | 823 +++++++++++ apps/settings/l10n/zh_CN.json | 821 +++++++++++ apps/settings/l10n/zh_TW.js | 257 ++++ apps/settings/l10n/zh_TW.json | 255 ++++ apps/settings/lib/Activity/GroupProvider.php | 202 +++ apps/settings/lib/Activity/GroupSetting.php | 98 ++ apps/settings/lib/Activity/Provider.php | 220 +++ apps/settings/lib/Activity/SecurityFilter.php | 67 + apps/settings/lib/Activity/SecurityProvider.php | 112 ++ apps/settings/lib/Activity/SecuritySetting.php | 66 + apps/settings/lib/Activity/Setting.php | 98 ++ apps/settings/lib/AppInfo/Application.php | 229 +++ .../settings/lib/BackgroundJobs/VerifyUserData.php | 301 ++++ .../lib/Controller/AdminSettingsController.php | 121 ++ .../lib/Controller/AppSettingsController.php | 563 +++++++ .../lib/Controller/AuthSettingsController.php | 289 ++++ .../lib/Controller/CertificateController.php | 178 +++ .../lib/Controller/ChangePasswordController.php | 275 ++++ .../lib/Controller/CheckSetupController.php | 701 +++++++++ .../lib/Controller/CommonSettingsTrait.php | 154 ++ .../lib/Controller/LogSettingsController.php | 60 + .../lib/Controller/MailSettingsController.php | 169 +++ .../lib/Controller/PersonalSettingsController.php | 112 ++ .../lib/Controller/TwoFactorSettingsController.php | 60 + apps/settings/lib/Controller/UsersController.php | 498 +++++++ apps/settings/lib/Hooks.php | 294 ++++ apps/settings/lib/Mailer/NewUserMailHelper.php | 173 +++ .../settings/lib/Middleware/SubadminMiddleware.php | 92 ++ apps/settings/lib/Settings/Admin/Mail.php | 91 ++ apps/settings/lib/Settings/Admin/Overview.php | 66 + apps/settings/lib/Settings/Admin/Security.php | 109 ++ apps/settings/lib/Settings/Admin/Server.php | 77 + apps/settings/lib/Settings/Admin/Sharing.php | 137 ++ apps/settings/lib/Settings/Personal/Additional.php | 59 + .../lib/Settings/Personal/PersonalInfo.php | 280 ++++ apps/settings/lib/Settings/Personal/Security.php | 128 ++ .../lib/Settings/Personal/Security/Authtokens.php | 107 ++ .../lib/Settings/Personal/ServerDevNotice.php | 54 + apps/settings/src/.jshintrc | 3 + apps/settings/src/App.vue | 38 + apps/settings/src/components/AdminTwoFactor.vue | 168 +++ apps/settings/src/components/AuthToken.vue | 306 ++++ apps/settings/src/components/AuthTokenList.vue | 135 ++ apps/settings/src/components/AuthTokenSection.vue | 178 +++ .../src/components/AuthTokenSetupDialogue.vue | 204 +++ apps/settings/src/components/appDetails.vue | 237 +++ apps/settings/src/components/appList.vue | 184 +++ apps/settings/src/components/appList/appItem.vue | 136 ++ apps/settings/src/components/appList/appScore.vue | 38 + apps/settings/src/components/appManagement.vue | 138 ++ apps/settings/src/components/popoverMenu.vue | 40 + apps/settings/src/components/prefixMixin.vue | 32 + apps/settings/src/components/svgFilterMixin.vue | 40 + apps/settings/src/components/userList.vue | 429 ++++++ apps/settings/src/components/userList/userRow.vue | 574 ++++++++ apps/settings/src/main-admin-security.js | 21 + apps/settings/src/main-apps-users-management.js | 57 + apps/settings/src/main-personal-security.js | 40 + apps/settings/src/router.js | 83 ++ apps/settings/src/store/admin-security.js | 63 + apps/settings/src/store/api.js | 81 + apps/settings/src/store/apps.js | 327 ++++ apps/settings/src/store/index.js | 57 + apps/settings/src/store/oc.js | 47 + apps/settings/src/store/settings.js | 40 + apps/settings/src/store/users.js | 532 +++++++ apps/settings/src/views/Apps.vue | 226 +++ apps/settings/src/views/Users.vue | 446 ++++++ apps/settings/templates/certificates.php | 44 + apps/settings/templates/help.php | 33 + apps/settings/templates/settings-vue.php | 31 + apps/settings/templates/settings/additional.php | 33 + .../templates/settings/admin/additional-mail.php | 152 ++ .../settings/templates/settings/admin/overview.php | 66 + .../settings/templates/settings/admin/security.php | 97 ++ apps/settings/templates/settings/admin/server.php | 100 ++ apps/settings/templates/settings/admin/sharing.php | 120 ++ apps/settings/templates/settings/empty.php | 25 + apps/settings/templates/settings/frame.php | 92 ++ .../settings/personal/development.notice.php | 66 + .../templates/settings/personal/personal.info.php | 383 +++++ .../templates/settings/personal/security.php | 106 ++ .../settings/personal/security/authtokens.php | 31 + .../settings/tests/Activity/SecurityFilterTest.php | 87 ++ .../tests/Activity/SecurityProviderTest.php | 136 ++ .../tests/Activity/SecuritySettingTest.php | 73 + apps/settings/tests/AppInfo/ApplicationTest.php | 118 ++ .../Controller/AdminSettingsControllerTest.php | 128 ++ .../tests/Controller/AppSettingsControllerTest.php | 247 ++++ .../Controller/AuthSettingsControllerTest.php | 400 +++++ .../tests/Controller/CertificateControllerTest.php | 190 +++ .../tests/Controller/CheckSetupControllerTest.php | 1449 ++++++++++++++++++ .../Controller/MailSettingsControllerTest.php | 178 +++ .../Controller/TwoFactorSettingsControllerTest.php | 84 ++ .../tests/Controller/UsersControllerTest.php | 552 +++++++ .../tests/Mailer/NewUserMailHelperTest.php | 881 +++++++++++ .../tests/Middleware/SubadminMiddlewareTest.php | 104 ++ .../tests/Personal/Security/AuthtokensTest.php | 124 ++ apps/settings/tests/Settings/Admin/MailTest.php | 133 ++ .../settings/tests/Settings/Admin/SecurityTest.php | 149 ++ apps/settings/tests/Settings/Admin/ServerTest.php | 85 ++ apps/settings/tests/Settings/Admin/SharingTest.php | 271 ++++ .../tests/Settings/Personal/SecurityTest.php | 119 ++ apps/settings/webpack.js | 20 + autotest-checkers.sh | 1 + build/.phan/config.php | 2 + build/files-checker.php | 1 - build/integration/features/provisioning-v1.feature | 1 + composer.json | 1 - core/js/dist/login.js | 2 +- core/js/dist/login.js.map | 2 +- core/js/dist/main.js | 2 +- core/js/dist/main.js.map | 2 +- core/js/dist/maintenance.js | 2 +- core/js/dist/maintenance.js.map | 2 +- core/shipped.json | 2 + core/src/OC/constants.js | 2 +- core/src/OC/routing.js | 2 +- lib/base.php | 3 +- lib/composer/composer/autoload_classmap.php | 34 - lib/composer/composer/autoload_psr4.php | 1 - lib/composer/composer/autoload_static.php | 39 - lib/private/Accounts/AccountManager.php | 2 +- lib/private/AppFramework/App.php | 2 - lib/private/L10N/Factory.php | 3 +- lib/private/Route/Router.php | 5 +- lib/private/Settings/Manager.php | 21 +- settings/.babelrc.js | 13 - settings/.editorconfig | 12 - settings/.gitignore | 12 - settings/.l10nignore | 14 - settings/Activity/GroupProvider.php | 202 --- settings/Activity/GroupSetting.php | 98 -- settings/Activity/Provider.php | 220 --- settings/Activity/SecurityFilter.php | 67 - settings/Activity/SecurityProvider.php | 112 -- settings/Activity/SecuritySetting.php | 66 - settings/Activity/Setting.php | 98 -- settings/Application.php | 230 --- settings/BackgroundJobs/VerifyUserData.php | 301 ---- settings/Controller/AdminSettingsController.php | 124 -- settings/Controller/AppSettingsController.php | 566 ------- settings/Controller/AuthSettingsController.php | 289 ---- settings/Controller/CertificateController.php | 181 --- settings/Controller/ChangePasswordController.php | 275 ---- settings/Controller/CheckSetupController.php | 704 --------- settings/Controller/CommonSettingsTrait.php | 154 -- settings/Controller/LogSettingsController.php | 65 - settings/Controller/MailSettingsController.php | 172 --- settings/Controller/PersonalSettingsController.php | 112 -- .../Controller/TwoFactorSettingsController.php | 60 - settings/Controller/UsersController.php | 501 ------- settings/Hooks.php | 294 ---- settings/Mailer/NewUserMailHelper.php | 173 --- settings/Middleware/SubadminMiddleware.php | 94 -- settings/Settings/Admin/Mail.php | 91 -- settings/Settings/Admin/Overview.php | 66 - settings/Settings/Admin/Security.php | 109 -- settings/Settings/Admin/Server.php | 77 - settings/Settings/Admin/Sharing.php | 137 -- settings/Settings/Personal/Additional.php | 59 - settings/Settings/Personal/PersonalInfo.php | 280 ---- settings/Settings/Personal/Security.php | 128 -- settings/Settings/Personal/Security/Authtokens.php | 107 -- settings/Settings/Personal/ServerDevNotice.php | 54 - settings/css/settings.scss | 1557 -------------------- settings/help.php | 58 - settings/img/admin.svg | 1 - settings/img/apps.svg | 1 - settings/img/change.svg | 1 - settings/img/help.svg | 1 - settings/img/password.svg | 1 - settings/img/personal.png | Bin 497 -> 0 bytes settings/img/personal.svg | 1 - settings/img/share.svg | 1 - settings/img/toggle-filelist.svg | 1 - settings/img/users.svg | 1 - settings/js/admin.js | 319 ---- settings/js/apps.js | 113 -- settings/js/certificates.js | 70 - settings/js/federationscopemenu.js | 130 -- settings/js/federationsettingsview.js | 228 --- settings/js/log.js | 85 -- settings/js/security_password.js | 86 -- settings/js/settings.js | 96 -- settings/js/settings/personalInfo.js | 379 ----- settings/js/templates.js | 36 - .../js/templates/federationscopemenu.handlebars | 17 - settings/js/usersettings.js | 50 - settings/js/vue-0.js | 838 ----------- settings/js/vue-0.js.map | 1 - settings/js/vue-4.js | 2 - settings/js/vue-4.js.map | 1 - settings/js/vue-5.js | 2 - settings/js/vue-5.js.map | 1 - settings/js/vue-6.js | 8 - settings/js/vue-6.js.map | 1 - settings/js/vue-settings-admin-security.js | 880 ----------- settings/js/vue-settings-admin-security.js.map | 1 - settings/js/vue-settings-apps-users-management.js | 113 -- .../js/vue-settings-apps-users-management.js.map | 1 - settings/js/vue-settings-personal-security.js | 908 ------------ settings/js/vue-settings-personal-security.js.map | 1 - settings/l10n/ar.js | 241 --- settings/l10n/ar.json | 239 --- settings/l10n/ast.js | 221 --- settings/l10n/ast.json | 219 --- settings/l10n/bg.js | 231 --- settings/l10n/bg.json | 229 --- settings/l10n/ca.js | 823 ----------- settings/l10n/ca.json | 821 ----------- settings/l10n/cs.js | 522 ------- settings/l10n/cs.json | 520 ------- settings/l10n/da.js | 298 ---- settings/l10n/da.json | 296 ---- settings/l10n/de.js | 823 ----------- settings/l10n/de.json | 821 ----------- settings/l10n/de_DE.js | 823 ----------- settings/l10n/de_DE.json | 821 ----------- settings/l10n/el.js | 314 ---- settings/l10n/el.json | 312 ---- settings/l10n/en_GB.js | 270 ---- settings/l10n/en_GB.json | 268 ---- settings/l10n/eo.js | 701 --------- settings/l10n/eo.json | 699 --------- settings/l10n/es.js | 823 ----------- settings/l10n/es.json | 821 ----------- settings/l10n/es_419.js | 269 ---- settings/l10n/es_419.json | 267 ---- settings/l10n/es_AR.js | 245 --- settings/l10n/es_AR.json | 243 --- settings/l10n/es_CL.js | 264 ---- settings/l10n/es_CL.json | 262 ---- settings/l10n/es_CO.js | 264 ---- settings/l10n/es_CO.json | 262 ---- settings/l10n/es_CR.js | 264 ---- settings/l10n/es_CR.json | 262 ---- settings/l10n/es_DO.js | 264 ---- settings/l10n/es_DO.json | 262 ---- settings/l10n/es_EC.js | 264 ---- settings/l10n/es_EC.json | 262 ---- settings/l10n/es_GT.js | 264 ---- settings/l10n/es_GT.json | 262 ---- settings/l10n/es_HN.js | 258 ---- settings/l10n/es_HN.json | 256 ---- settings/l10n/es_MX.js | 275 ---- settings/l10n/es_MX.json | 273 ---- settings/l10n/es_NI.js | 258 ---- settings/l10n/es_NI.json | 256 ---- settings/l10n/es_PA.js | 258 ---- settings/l10n/es_PA.json | 256 ---- settings/l10n/es_PE.js | 258 ---- settings/l10n/es_PE.json | 256 ---- settings/l10n/es_PR.js | 258 ---- settings/l10n/es_PR.json | 256 ---- settings/l10n/es_PY.js | 258 ---- settings/l10n/es_PY.json | 256 ---- settings/l10n/es_SV.js | 264 ---- settings/l10n/es_SV.json | 262 ---- settings/l10n/es_UY.js | 258 ---- settings/l10n/es_UY.json | 256 ---- settings/l10n/et_EE.js | 246 ---- settings/l10n/et_EE.json | 244 --- settings/l10n/eu.js | 362 ----- settings/l10n/eu.json | 360 ----- settings/l10n/fi.js | 353 ----- settings/l10n/fi.json | 351 ----- settings/l10n/fr.js | 714 --------- settings/l10n/fr.json | 712 --------- settings/l10n/gl.js | 823 ----------- settings/l10n/gl.json | 821 ----------- settings/l10n/he.js | 465 ------ settings/l10n/he.json | 463 ------ settings/l10n/hr.js | 823 ----------- settings/l10n/hr.json | 821 ----------- settings/l10n/hu.js | 365 ----- settings/l10n/hu.json | 363 ----- settings/l10n/id.js | 428 ------ settings/l10n/id.json | 426 ------ settings/l10n/is.js | 809 ---------- settings/l10n/is.json | 807 ---------- settings/l10n/it.js | 823 ----------- settings/l10n/it.json | 821 ----------- settings/l10n/ja.js | 820 ----------- settings/l10n/ja.json | 818 ---------- settings/l10n/ka_GE.js | 261 ---- settings/l10n/ka_GE.json | 259 ---- settings/l10n/ko.js | 333 ----- settings/l10n/ko.json | 331 ----- settings/l10n/lt_LT.js | 356 ----- settings/l10n/lt_LT.json | 354 ----- settings/l10n/mk.js | 791 ---------- settings/l10n/mk.json | 789 ---------- settings/l10n/nb.js | 348 ----- settings/l10n/nb.json | 346 ----- settings/l10n/nl.js | 823 ----------- settings/l10n/nl.json | 821 ----------- settings/l10n/pl.js | 823 ----------- settings/l10n/pl.json | 821 ----------- settings/l10n/pt_BR.js | 823 ----------- settings/l10n/pt_BR.json | 821 ----------- settings/l10n/pt_PT.js | 260 ---- settings/l10n/pt_PT.json | 258 ---- settings/l10n/ro.js | 314 ---- settings/l10n/ro.json | 312 ---- settings/l10n/ru.js | 822 ----------- settings/l10n/ru.json | 820 ----------- settings/l10n/sk.js | 362 ----- settings/l10n/sk.json | 360 ----- settings/l10n/sl.js | 297 ---- settings/l10n/sl.json | 295 ---- settings/l10n/sq.js | 256 ---- settings/l10n/sq.json | 254 ---- settings/l10n/sr.js | 822 ----------- settings/l10n/sr.json | 820 ----------- settings/l10n/sv.js | 823 ----------- settings/l10n/sv.json | 821 ----------- settings/l10n/tr.js | 823 ----------- settings/l10n/tr.json | 821 ----------- settings/l10n/uk.js | 312 ---- settings/l10n/uk.json | 310 ---- settings/l10n/vi.js | 263 ---- settings/l10n/vi.json | 261 ---- settings/l10n/zh_CN.js | 823 ----------- settings/l10n/zh_CN.json | 821 ----------- settings/l10n/zh_TW.js | 257 ---- settings/l10n/zh_TW.json | 255 ---- settings/routes.php | 97 -- settings/src/.jshintrc | 3 - settings/src/App.vue | 38 - settings/src/components/AdminTwoFactor.vue | 168 --- settings/src/components/AuthToken.vue | 306 ---- settings/src/components/AuthTokenList.vue | 135 -- settings/src/components/AuthTokenSection.vue | 178 --- settings/src/components/AuthTokenSetupDialogue.vue | 204 --- settings/src/components/appDetails.vue | 237 --- settings/src/components/appList.vue | 184 --- settings/src/components/appList/appItem.vue | 136 -- settings/src/components/appList/appScore.vue | 38 - settings/src/components/appManagement.vue | 138 -- settings/src/components/popoverMenu.vue | 40 - settings/src/components/prefixMixin.vue | 32 - settings/src/components/svgFilterMixin.vue | 40 - settings/src/components/userList.vue | 429 ------ settings/src/components/userList/userRow.vue | 574 -------- settings/src/main-admin-security.js | 21 - settings/src/main-apps-users-management.js | 57 - settings/src/main-personal-security.js | 40 - settings/src/router.js | 83 -- settings/src/store/admin-security.js | 63 - settings/src/store/api.js | 81 - settings/src/store/apps.js | 327 ---- settings/src/store/index.js | 57 - settings/src/store/oc.js | 47 - settings/src/store/settings.js | 40 - settings/src/store/users.js | 532 ------- settings/src/views/Apps.vue | 226 --- settings/src/views/Users.vue | 446 ------ settings/templates/certificates.php | 44 - settings/templates/help.php | 33 - settings/templates/settings-vue.php | 31 - settings/templates/settings/additional.php | 33 - .../templates/settings/admin/additional-mail.php | 152 -- settings/templates/settings/admin/overview.php | 66 - settings/templates/settings/admin/security.php | 97 -- settings/templates/settings/admin/server.php | 100 -- settings/templates/settings/admin/sharing.php | 120 -- settings/templates/settings/empty.php | 25 - settings/templates/settings/frame.php | 92 -- .../settings/personal/development.notice.php | 66 - .../templates/settings/personal/personal.info.php | 383 ----- settings/templates/settings/personal/security.php | 106 -- .../settings/personal/security/authtokens.php | 31 - settings/webpack.js | 20 - .../Controller/ChangePasswordControllerTest.php | 2 +- tests/Settings/Activity/SecurityFilterTest.php | 83 -- tests/Settings/Activity/SecurityProviderTest.php | 136 -- tests/Settings/Activity/SecuritySettingTest.php | 73 - tests/Settings/ApplicationTest.php | 118 -- .../Controller/AdminSettingsControllerTest.php | 128 -- .../Controller/AppSettingsControllerTest.php | 246 ---- .../Controller/AuthSettingsControllerTest.php | 400 ----- .../Controller/CertificateControllerTest.php | 190 --- .../Controller/CheckSetupControllerTest.php | 1449 ------------------ .../Controller/MailSettingsControllerTest.php | 178 --- .../Controller/TwoFactorSettingsControllerTest.php | 84 -- tests/Settings/Controller/UsersControllerTest.php | 562 ------- tests/Settings/Mailer/NewUserMailHelperTest.php | 881 ----------- .../Settings/Middleware/SubadminMiddlewareTest.php | 104 -- .../Settings/Personal/Security/AuthtokensTest.php | 124 -- tests/lib/App/AppManagerTest.php | 5 + tests/lib/AppFramework/AppTest.php | 2 +- tests/lib/AppTest.php | 9 +- tests/lib/InfoXmlTest.php | 1 + tests/lib/L10N/FactoryTest.php | 4 +- tests/lib/Settings/Admin/MailTest.php | 134 -- tests/lib/Settings/Admin/SecurityTest.php | 149 -- tests/lib/Settings/Admin/ServerTest.php | 85 -- tests/lib/Settings/Admin/SharingTest.php | 271 ---- tests/lib/Settings/ManagerTest.php | 9 +- tests/lib/Settings/Personal/SecurityTest.php | 120 -- tests/lib/Settings/SectionTest.php | 2 +- tests/phpunit-autotest.xml | 1 + webpack.common.js | 4 +- 582 files changed, 81917 insertions(+), 81329 deletions(-) create mode 100644 apps/settings/.babelrc.js create mode 100644 apps/settings/.editorconfig create mode 100644 apps/settings/.gitignore create mode 100644 apps/settings/.l10nignore create mode 100644 apps/settings/appinfo/info.xml create mode 100644 apps/settings/appinfo/routes.php create mode 100644 apps/settings/composer/autoload.php create mode 100644 apps/settings/composer/composer.json create mode 100644 apps/settings/composer/composer/ClassLoader.php create mode 100644 apps/settings/composer/composer/LICENSE create mode 100644 apps/settings/composer/composer/autoload_classmap.php create mode 100644 apps/settings/composer/composer/autoload_namespaces.php create mode 100644 apps/settings/composer/composer/autoload_psr4.php create mode 100644 apps/settings/composer/composer/autoload_real.php create mode 100644 apps/settings/composer/composer/autoload_static.php create mode 100644 apps/settings/css/settings.scss create mode 100644 apps/settings/help.php create mode 100644 apps/settings/img/admin.svg create mode 100644 apps/settings/img/apps.svg create mode 100644 apps/settings/img/change.svg create mode 100644 apps/settings/img/help.svg create mode 100644 apps/settings/img/password.svg create mode 100644 apps/settings/img/personal.png create mode 100644 apps/settings/img/personal.svg create mode 100644 apps/settings/img/share.svg create mode 100644 apps/settings/img/toggle-filelist.svg create mode 100644 apps/settings/img/users.svg create mode 100644 apps/settings/js/admin.js create mode 100644 apps/settings/js/apps.js create mode 100644 apps/settings/js/certificates.js create mode 100644 apps/settings/js/federationscopemenu.js create mode 100644 apps/settings/js/federationsettingsview.js create mode 100644 apps/settings/js/log.js create mode 100644 apps/settings/js/security_password.js create mode 100644 apps/settings/js/settings.js create mode 100644 apps/settings/js/settings/personalInfo.js create mode 100644 apps/settings/js/templates.js create mode 100644 apps/settings/js/templates/federationscopemenu.handlebars create mode 100644 apps/settings/js/usersettings.js create mode 100644 apps/settings/js/vue-0.js create mode 100644 apps/settings/js/vue-0.js.map create mode 100644 apps/settings/js/vue-4.js create mode 100644 apps/settings/js/vue-4.js.map create mode 100644 apps/settings/js/vue-5.js create mode 100644 apps/settings/js/vue-5.js.map create mode 100644 apps/settings/js/vue-6.js create mode 100644 apps/settings/js/vue-6.js.map create mode 100644 apps/settings/js/vue-settings-admin-security.js create mode 100644 apps/settings/js/vue-settings-admin-security.js.map create mode 100644 apps/settings/js/vue-settings-apps-users-management.js create mode 100644 apps/settings/js/vue-settings-apps-users-management.js.map create mode 100644 apps/settings/js/vue-settings-personal-security.js create mode 100644 apps/settings/js/vue-settings-personal-security.js.map create mode 100644 apps/settings/l10n/ar.js create mode 100644 apps/settings/l10n/ar.json create mode 100644 apps/settings/l10n/ast.js create mode 100644 apps/settings/l10n/ast.json create mode 100644 apps/settings/l10n/bg.js create mode 100644 apps/settings/l10n/bg.json create mode 100644 apps/settings/l10n/ca.js create mode 100644 apps/settings/l10n/ca.json create mode 100644 apps/settings/l10n/cs.js create mode 100644 apps/settings/l10n/cs.json create mode 100644 apps/settings/l10n/da.js create mode 100644 apps/settings/l10n/da.json create mode 100644 apps/settings/l10n/de.js create mode 100644 apps/settings/l10n/de.json create mode 100644 apps/settings/l10n/de_DE.js create mode 100644 apps/settings/l10n/de_DE.json create mode 100644 apps/settings/l10n/el.js create mode 100644 apps/settings/l10n/el.json create mode 100644 apps/settings/l10n/en_GB.js create mode 100644 apps/settings/l10n/en_GB.json create mode 100644 apps/settings/l10n/eo.js create mode 100644 apps/settings/l10n/eo.json create mode 100644 apps/settings/l10n/es.js create mode 100644 apps/settings/l10n/es.json create mode 100644 apps/settings/l10n/es_419.js create mode 100644 apps/settings/l10n/es_419.json create mode 100644 apps/settings/l10n/es_AR.js create mode 100644 apps/settings/l10n/es_AR.json create mode 100644 apps/settings/l10n/es_CL.js create mode 100644 apps/settings/l10n/es_CL.json create mode 100644 apps/settings/l10n/es_CO.js create mode 100644 apps/settings/l10n/es_CO.json create mode 100644 apps/settings/l10n/es_CR.js create mode 100644 apps/settings/l10n/es_CR.json create mode 100644 apps/settings/l10n/es_DO.js create mode 100644 apps/settings/l10n/es_DO.json create mode 100644 apps/settings/l10n/es_EC.js create mode 100644 apps/settings/l10n/es_EC.json create mode 100644 apps/settings/l10n/es_GT.js create mode 100644 apps/settings/l10n/es_GT.json create mode 100644 apps/settings/l10n/es_HN.js create mode 100644 apps/settings/l10n/es_HN.json create mode 100644 apps/settings/l10n/es_MX.js create mode 100644 apps/settings/l10n/es_MX.json create mode 100644 apps/settings/l10n/es_NI.js create mode 100644 apps/settings/l10n/es_NI.json create mode 100644 apps/settings/l10n/es_PA.js create mode 100644 apps/settings/l10n/es_PA.json create mode 100644 apps/settings/l10n/es_PE.js create mode 100644 apps/settings/l10n/es_PE.json create mode 100644 apps/settings/l10n/es_PR.js create mode 100644 apps/settings/l10n/es_PR.json create mode 100644 apps/settings/l10n/es_PY.js create mode 100644 apps/settings/l10n/es_PY.json create mode 100644 apps/settings/l10n/es_SV.js create mode 100644 apps/settings/l10n/es_SV.json create mode 100644 apps/settings/l10n/es_UY.js create mode 100644 apps/settings/l10n/es_UY.json create mode 100644 apps/settings/l10n/et_EE.js create mode 100644 apps/settings/l10n/et_EE.json create mode 100644 apps/settings/l10n/eu.js create mode 100644 apps/settings/l10n/eu.json create mode 100644 apps/settings/l10n/fi.js create mode 100644 apps/settings/l10n/fi.json create mode 100644 apps/settings/l10n/fr.js create mode 100644 apps/settings/l10n/fr.json create mode 100644 apps/settings/l10n/gl.js create mode 100644 apps/settings/l10n/gl.json create mode 100644 apps/settings/l10n/he.js create mode 100644 apps/settings/l10n/he.json create mode 100644 apps/settings/l10n/hr.js create mode 100644 apps/settings/l10n/hr.json create mode 100644 apps/settings/l10n/hu.js create mode 100644 apps/settings/l10n/hu.json create mode 100644 apps/settings/l10n/id.js create mode 100644 apps/settings/l10n/id.json create mode 100644 apps/settings/l10n/is.js create mode 100644 apps/settings/l10n/is.json create mode 100644 apps/settings/l10n/it.js create mode 100644 apps/settings/l10n/it.json create mode 100644 apps/settings/l10n/ja.js create mode 100644 apps/settings/l10n/ja.json create mode 100644 apps/settings/l10n/ka_GE.js create mode 100644 apps/settings/l10n/ka_GE.json create mode 100644 apps/settings/l10n/ko.js create mode 100644 apps/settings/l10n/ko.json create mode 100644 apps/settings/l10n/lt_LT.js create mode 100644 apps/settings/l10n/lt_LT.json create mode 100644 apps/settings/l10n/mk.js create mode 100644 apps/settings/l10n/mk.json create mode 100644 apps/settings/l10n/nb.js create mode 100644 apps/settings/l10n/nb.json create mode 100644 apps/settings/l10n/nl.js create mode 100644 apps/settings/l10n/nl.json create mode 100644 apps/settings/l10n/pl.js create mode 100644 apps/settings/l10n/pl.json create mode 100644 apps/settings/l10n/pt_BR.js create mode 100644 apps/settings/l10n/pt_BR.json create mode 100644 apps/settings/l10n/pt_PT.js create mode 100644 apps/settings/l10n/pt_PT.json create mode 100644 apps/settings/l10n/ro.js create mode 100644 apps/settings/l10n/ro.json create mode 100644 apps/settings/l10n/ru.js create mode 100644 apps/settings/l10n/ru.json create mode 100644 apps/settings/l10n/sk.js create mode 100644 apps/settings/l10n/sk.json create mode 100644 apps/settings/l10n/sl.js create mode 100644 apps/settings/l10n/sl.json create mode 100644 apps/settings/l10n/sq.js create mode 100644 apps/settings/l10n/sq.json create mode 100644 apps/settings/l10n/sr.js create mode 100644 apps/settings/l10n/sr.json create mode 100644 apps/settings/l10n/sv.js create mode 100644 apps/settings/l10n/sv.json create mode 100644 apps/settings/l10n/tr.js create mode 100644 apps/settings/l10n/tr.json create mode 100644 apps/settings/l10n/uk.js create mode 100644 apps/settings/l10n/uk.json create mode 100644 apps/settings/l10n/vi.js create mode 100644 apps/settings/l10n/vi.json create mode 100644 apps/settings/l10n/zh_CN.js create mode 100644 apps/settings/l10n/zh_CN.json create mode 100644 apps/settings/l10n/zh_TW.js create mode 100644 apps/settings/l10n/zh_TW.json create mode 100644 apps/settings/lib/Activity/GroupProvider.php create mode 100644 apps/settings/lib/Activity/GroupSetting.php create mode 100644 apps/settings/lib/Activity/Provider.php create mode 100644 apps/settings/lib/Activity/SecurityFilter.php create mode 100644 apps/settings/lib/Activity/SecurityProvider.php create mode 100644 apps/settings/lib/Activity/SecuritySetting.php create mode 100644 apps/settings/lib/Activity/Setting.php create mode 100644 apps/settings/lib/AppInfo/Application.php create mode 100644 apps/settings/lib/BackgroundJobs/VerifyUserData.php create mode 100644 apps/settings/lib/Controller/AdminSettingsController.php create mode 100644 apps/settings/lib/Controller/AppSettingsController.php create mode 100644 apps/settings/lib/Controller/AuthSettingsController.php create mode 100644 apps/settings/lib/Controller/CertificateController.php create mode 100644 apps/settings/lib/Controller/ChangePasswordController.php create mode 100644 apps/settings/lib/Controller/CheckSetupController.php create mode 100644 apps/settings/lib/Controller/CommonSettingsTrait.php create mode 100644 apps/settings/lib/Controller/LogSettingsController.php create mode 100644 apps/settings/lib/Controller/MailSettingsController.php create mode 100644 apps/settings/lib/Controller/PersonalSettingsController.php create mode 100644 apps/settings/lib/Controller/TwoFactorSettingsController.php create mode 100644 apps/settings/lib/Controller/UsersController.php create mode 100644 apps/settings/lib/Hooks.php create mode 100644 apps/settings/lib/Mailer/NewUserMailHelper.php create mode 100644 apps/settings/lib/Middleware/SubadminMiddleware.php create mode 100644 apps/settings/lib/Settings/Admin/Mail.php create mode 100644 apps/settings/lib/Settings/Admin/Overview.php create mode 100644 apps/settings/lib/Settings/Admin/Security.php create mode 100644 apps/settings/lib/Settings/Admin/Server.php create mode 100644 apps/settings/lib/Settings/Admin/Sharing.php create mode 100644 apps/settings/lib/Settings/Personal/Additional.php create mode 100644 apps/settings/lib/Settings/Personal/PersonalInfo.php create mode 100644 apps/settings/lib/Settings/Personal/Security.php create mode 100644 apps/settings/lib/Settings/Personal/Security/Authtokens.php create mode 100644 apps/settings/lib/Settings/Personal/ServerDevNotice.php create mode 100644 apps/settings/src/.jshintrc create mode 100644 apps/settings/src/App.vue create mode 100644 apps/settings/src/components/AdminTwoFactor.vue create mode 100644 apps/settings/src/components/AuthToken.vue create mode 100644 apps/settings/src/components/AuthTokenList.vue create mode 100644 apps/settings/src/components/AuthTokenSection.vue create mode 100644 apps/settings/src/components/AuthTokenSetupDialogue.vue create mode 100644 apps/settings/src/components/appDetails.vue create mode 100644 apps/settings/src/components/appList.vue create mode 100644 apps/settings/src/components/appList/appItem.vue create mode 100644 apps/settings/src/components/appList/appScore.vue create mode 100644 apps/settings/src/components/appManagement.vue create mode 100644 apps/settings/src/components/popoverMenu.vue create mode 100644 apps/settings/src/components/prefixMixin.vue create mode 100644 apps/settings/src/components/svgFilterMixin.vue create mode 100644 apps/settings/src/components/userList.vue create mode 100644 apps/settings/src/components/userList/userRow.vue create mode 100644 apps/settings/src/main-admin-security.js create mode 100644 apps/settings/src/main-apps-users-management.js create mode 100644 apps/settings/src/main-personal-security.js create mode 100644 apps/settings/src/router.js create mode 100644 apps/settings/src/store/admin-security.js create mode 100644 apps/settings/src/store/api.js create mode 100644 apps/settings/src/store/apps.js create mode 100644 apps/settings/src/store/index.js create mode 100644 apps/settings/src/store/oc.js create mode 100644 apps/settings/src/store/settings.js create mode 100644 apps/settings/src/store/users.js create mode 100644 apps/settings/src/views/Apps.vue create mode 100644 apps/settings/src/views/Users.vue create mode 100644 apps/settings/templates/certificates.php create mode 100644 apps/settings/templates/help.php create mode 100644 apps/settings/templates/settings-vue.php create mode 100644 apps/settings/templates/settings/additional.php create mode 100644 apps/settings/templates/settings/admin/additional-mail.php create mode 100644 apps/settings/templates/settings/admin/overview.php create mode 100644 apps/settings/templates/settings/admin/security.php create mode 100644 apps/settings/templates/settings/admin/server.php create mode 100644 apps/settings/templates/settings/admin/sharing.php create mode 100644 apps/settings/templates/settings/empty.php create mode 100644 apps/settings/templates/settings/frame.php create mode 100644 apps/settings/templates/settings/personal/development.notice.php create mode 100644 apps/settings/templates/settings/personal/personal.info.php create mode 100644 apps/settings/templates/settings/personal/security.php create mode 100644 apps/settings/templates/settings/personal/security/authtokens.php create mode 100644 apps/settings/tests/Activity/SecurityFilterTest.php create mode 100644 apps/settings/tests/Activity/SecurityProviderTest.php create mode 100644 apps/settings/tests/Activity/SecuritySettingTest.php create mode 100644 apps/settings/tests/AppInfo/ApplicationTest.php create mode 100644 apps/settings/tests/Controller/AdminSettingsControllerTest.php create mode 100644 apps/settings/tests/Controller/AppSettingsControllerTest.php create mode 100644 apps/settings/tests/Controller/AuthSettingsControllerTest.php create mode 100644 apps/settings/tests/Controller/CertificateControllerTest.php create mode 100644 apps/settings/tests/Controller/CheckSetupControllerTest.php create mode 100644 apps/settings/tests/Controller/MailSettingsControllerTest.php create mode 100644 apps/settings/tests/Controller/TwoFactorSettingsControllerTest.php create mode 100644 apps/settings/tests/Controller/UsersControllerTest.php create mode 100644 apps/settings/tests/Mailer/NewUserMailHelperTest.php create mode 100644 apps/settings/tests/Middleware/SubadminMiddlewareTest.php create mode 100644 apps/settings/tests/Personal/Security/AuthtokensTest.php create mode 100644 apps/settings/tests/Settings/Admin/MailTest.php create mode 100644 apps/settings/tests/Settings/Admin/SecurityTest.php create mode 100644 apps/settings/tests/Settings/Admin/ServerTest.php create mode 100644 apps/settings/tests/Settings/Admin/SharingTest.php create mode 100644 apps/settings/tests/Settings/Personal/SecurityTest.php create mode 100644 apps/settings/webpack.js delete mode 100644 settings/.babelrc.js delete mode 100644 settings/.editorconfig delete mode 100644 settings/.gitignore delete mode 100644 settings/.l10nignore delete mode 100644 settings/Activity/GroupProvider.php delete mode 100644 settings/Activity/GroupSetting.php delete mode 100644 settings/Activity/Provider.php delete mode 100644 settings/Activity/SecurityFilter.php delete mode 100644 settings/Activity/SecurityProvider.php delete mode 100644 settings/Activity/SecuritySetting.php delete mode 100644 settings/Activity/Setting.php delete mode 100644 settings/Application.php delete mode 100644 settings/BackgroundJobs/VerifyUserData.php delete mode 100644 settings/Controller/AdminSettingsController.php delete mode 100644 settings/Controller/AppSettingsController.php delete mode 100644 settings/Controller/AuthSettingsController.php delete mode 100644 settings/Controller/CertificateController.php delete mode 100644 settings/Controller/ChangePasswordController.php delete mode 100644 settings/Controller/CheckSetupController.php delete mode 100644 settings/Controller/CommonSettingsTrait.php delete mode 100644 settings/Controller/LogSettingsController.php delete mode 100644 settings/Controller/MailSettingsController.php delete mode 100644 settings/Controller/PersonalSettingsController.php delete mode 100644 settings/Controller/TwoFactorSettingsController.php delete mode 100644 settings/Controller/UsersController.php delete mode 100644 settings/Hooks.php delete mode 100644 settings/Mailer/NewUserMailHelper.php delete mode 100644 settings/Middleware/SubadminMiddleware.php delete mode 100644 settings/Settings/Admin/Mail.php delete mode 100644 settings/Settings/Admin/Overview.php delete mode 100644 settings/Settings/Admin/Security.php delete mode 100644 settings/Settings/Admin/Server.php delete mode 100644 settings/Settings/Admin/Sharing.php delete mode 100644 settings/Settings/Personal/Additional.php delete mode 100644 settings/Settings/Personal/PersonalInfo.php delete mode 100644 settings/Settings/Personal/Security.php delete mode 100644 settings/Settings/Personal/Security/Authtokens.php delete mode 100644 settings/Settings/Personal/ServerDevNotice.php delete mode 100644 settings/css/settings.scss delete mode 100644 settings/help.php delete mode 100644 settings/img/admin.svg delete mode 100644 settings/img/apps.svg delete mode 100644 settings/img/change.svg delete mode 100644 settings/img/help.svg delete mode 100644 settings/img/password.svg delete mode 100644 settings/img/personal.png delete mode 100644 settings/img/personal.svg delete mode 100644 settings/img/share.svg delete mode 100644 settings/img/toggle-filelist.svg delete mode 100644 settings/img/users.svg delete mode 100644 settings/js/admin.js delete mode 100644 settings/js/apps.js delete mode 100644 settings/js/certificates.js delete mode 100644 settings/js/federationscopemenu.js delete mode 100644 settings/js/federationsettingsview.js delete mode 100644 settings/js/log.js delete mode 100644 settings/js/security_password.js delete mode 100644 settings/js/settings.js delete mode 100644 settings/js/settings/personalInfo.js delete mode 100644 settings/js/templates.js delete mode 100644 settings/js/templates/federationscopemenu.handlebars delete mode 100644 settings/js/usersettings.js delete mode 100644 settings/js/vue-0.js delete mode 100644 settings/js/vue-0.js.map delete mode 100644 settings/js/vue-4.js delete mode 100644 settings/js/vue-4.js.map delete mode 100644 settings/js/vue-5.js delete mode 100644 settings/js/vue-5.js.map delete mode 100644 settings/js/vue-6.js delete mode 100644 settings/js/vue-6.js.map delete mode 100644 settings/js/vue-settings-admin-security.js delete mode 100644 settings/js/vue-settings-admin-security.js.map delete mode 100644 settings/js/vue-settings-apps-users-management.js delete mode 100644 settings/js/vue-settings-apps-users-management.js.map delete mode 100644 settings/js/vue-settings-personal-security.js delete mode 100644 settings/js/vue-settings-personal-security.js.map delete mode 100644 settings/l10n/ar.js delete mode 100644 settings/l10n/ar.json delete mode 100644 settings/l10n/ast.js delete mode 100644 settings/l10n/ast.json delete mode 100644 settings/l10n/bg.js delete mode 100644 settings/l10n/bg.json delete mode 100644 settings/l10n/ca.js delete mode 100644 settings/l10n/ca.json delete mode 100644 settings/l10n/cs.js delete mode 100644 settings/l10n/cs.json delete mode 100644 settings/l10n/da.js delete mode 100644 settings/l10n/da.json delete mode 100644 settings/l10n/de.js delete mode 100644 settings/l10n/de.json delete mode 100644 settings/l10n/de_DE.js delete mode 100644 settings/l10n/de_DE.json delete mode 100644 settings/l10n/el.js delete mode 100644 settings/l10n/el.json delete mode 100644 settings/l10n/en_GB.js delete mode 100644 settings/l10n/en_GB.json delete mode 100644 settings/l10n/eo.js delete mode 100644 settings/l10n/eo.json delete mode 100644 settings/l10n/es.js delete mode 100644 settings/l10n/es.json delete mode 100644 settings/l10n/es_419.js delete mode 100644 settings/l10n/es_419.json delete mode 100644 settings/l10n/es_AR.js delete mode 100644 settings/l10n/es_AR.json delete mode 100644 settings/l10n/es_CL.js delete mode 100644 settings/l10n/es_CL.json delete mode 100644 settings/l10n/es_CO.js delete mode 100644 settings/l10n/es_CO.json delete mode 100644 settings/l10n/es_CR.js delete mode 100644 settings/l10n/es_CR.json delete mode 100644 settings/l10n/es_DO.js delete mode 100644 settings/l10n/es_DO.json delete mode 100644 settings/l10n/es_EC.js delete mode 100644 settings/l10n/es_EC.json delete mode 100644 settings/l10n/es_GT.js delete mode 100644 settings/l10n/es_GT.json delete mode 100644 settings/l10n/es_HN.js delete mode 100644 settings/l10n/es_HN.json delete mode 100644 settings/l10n/es_MX.js delete mode 100644 settings/l10n/es_MX.json delete mode 100644 settings/l10n/es_NI.js delete mode 100644 settings/l10n/es_NI.json delete mode 100644 settings/l10n/es_PA.js delete mode 100644 settings/l10n/es_PA.json delete mode 100644 settings/l10n/es_PE.js delete mode 100644 settings/l10n/es_PE.json delete mode 100644 settings/l10n/es_PR.js delete mode 100644 settings/l10n/es_PR.json delete mode 100644 settings/l10n/es_PY.js delete mode 100644 settings/l10n/es_PY.json delete mode 100644 settings/l10n/es_SV.js delete mode 100644 settings/l10n/es_SV.json delete mode 100644 settings/l10n/es_UY.js delete mode 100644 settings/l10n/es_UY.json delete mode 100644 settings/l10n/et_EE.js delete mode 100644 settings/l10n/et_EE.json delete mode 100644 settings/l10n/eu.js delete mode 100644 settings/l10n/eu.json delete mode 100644 settings/l10n/fi.js delete mode 100644 settings/l10n/fi.json delete mode 100644 settings/l10n/fr.js delete mode 100644 settings/l10n/fr.json delete mode 100644 settings/l10n/gl.js delete mode 100644 settings/l10n/gl.json delete mode 100644 settings/l10n/he.js delete mode 100644 settings/l10n/he.json delete mode 100644 settings/l10n/hr.js delete mode 100644 settings/l10n/hr.json delete mode 100644 settings/l10n/hu.js delete mode 100644 settings/l10n/hu.json delete mode 100644 settings/l10n/id.js delete mode 100644 settings/l10n/id.json delete mode 100644 settings/l10n/is.js delete mode 100644 settings/l10n/is.json delete mode 100644 settings/l10n/it.js delete mode 100644 settings/l10n/it.json delete mode 100644 settings/l10n/ja.js delete mode 100644 settings/l10n/ja.json delete mode 100644 settings/l10n/ka_GE.js delete mode 100644 settings/l10n/ka_GE.json delete mode 100644 settings/l10n/ko.js delete mode 100644 settings/l10n/ko.json delete mode 100644 settings/l10n/lt_LT.js delete mode 100644 settings/l10n/lt_LT.json delete mode 100644 settings/l10n/mk.js delete mode 100644 settings/l10n/mk.json delete mode 100644 settings/l10n/nb.js delete mode 100644 settings/l10n/nb.json delete mode 100644 settings/l10n/nl.js delete mode 100644 settings/l10n/nl.json delete mode 100644 settings/l10n/pl.js delete mode 100644 settings/l10n/pl.json delete mode 100644 settings/l10n/pt_BR.js delete mode 100644 settings/l10n/pt_BR.json delete mode 100644 settings/l10n/pt_PT.js delete mode 100644 settings/l10n/pt_PT.json delete mode 100644 settings/l10n/ro.js delete mode 100644 settings/l10n/ro.json delete mode 100644 settings/l10n/ru.js delete mode 100644 settings/l10n/ru.json delete mode 100644 settings/l10n/sk.js delete mode 100644 settings/l10n/sk.json delete mode 100644 settings/l10n/sl.js delete mode 100644 settings/l10n/sl.json delete mode 100644 settings/l10n/sq.js delete mode 100644 settings/l10n/sq.json delete mode 100644 settings/l10n/sr.js delete mode 100644 settings/l10n/sr.json delete mode 100644 settings/l10n/sv.js delete mode 100644 settings/l10n/sv.json delete mode 100644 settings/l10n/tr.js delete mode 100644 settings/l10n/tr.json delete mode 100644 settings/l10n/uk.js delete mode 100644 settings/l10n/uk.json delete mode 100644 settings/l10n/vi.js delete mode 100644 settings/l10n/vi.json delete mode 100644 settings/l10n/zh_CN.js delete mode 100644 settings/l10n/zh_CN.json delete mode 100644 settings/l10n/zh_TW.js delete mode 100644 settings/l10n/zh_TW.json delete mode 100644 settings/routes.php delete mode 100644 settings/src/.jshintrc delete mode 100644 settings/src/App.vue delete mode 100644 settings/src/components/AdminTwoFactor.vue delete mode 100644 settings/src/components/AuthToken.vue delete mode 100644 settings/src/components/AuthTokenList.vue delete mode 100644 settings/src/components/AuthTokenSection.vue delete mode 100644 settings/src/components/AuthTokenSetupDialogue.vue delete mode 100644 settings/src/components/appDetails.vue delete mode 100644 settings/src/components/appList.vue delete mode 100644 settings/src/components/appList/appItem.vue delete mode 100644 settings/src/components/appList/appScore.vue delete mode 100644 settings/src/components/appManagement.vue delete mode 100644 settings/src/components/popoverMenu.vue delete mode 100644 settings/src/components/prefixMixin.vue delete mode 100644 settings/src/components/svgFilterMixin.vue delete mode 100644 settings/src/components/userList.vue delete mode 100644 settings/src/components/userList/userRow.vue delete mode 100644 settings/src/main-admin-security.js delete mode 100644 settings/src/main-apps-users-management.js delete mode 100644 settings/src/main-personal-security.js delete mode 100644 settings/src/router.js delete mode 100644 settings/src/store/admin-security.js delete mode 100644 settings/src/store/api.js delete mode 100644 settings/src/store/apps.js delete mode 100644 settings/src/store/index.js delete mode 100644 settings/src/store/oc.js delete mode 100644 settings/src/store/settings.js delete mode 100644 settings/src/store/users.js delete mode 100644 settings/src/views/Apps.vue delete mode 100644 settings/src/views/Users.vue delete mode 100644 settings/templates/certificates.php delete mode 100644 settings/templates/help.php delete mode 100644 settings/templates/settings-vue.php delete mode 100644 settings/templates/settings/additional.php delete mode 100644 settings/templates/settings/admin/additional-mail.php delete mode 100644 settings/templates/settings/admin/overview.php delete mode 100644 settings/templates/settings/admin/security.php delete mode 100644 settings/templates/settings/admin/server.php delete mode 100644 settings/templates/settings/admin/sharing.php delete mode 100644 settings/templates/settings/empty.php delete mode 100644 settings/templates/settings/frame.php delete mode 100644 settings/templates/settings/personal/development.notice.php delete mode 100644 settings/templates/settings/personal/personal.info.php delete mode 100644 settings/templates/settings/personal/security.php delete mode 100644 settings/templates/settings/personal/security/authtokens.php delete mode 100644 settings/webpack.js delete mode 100644 tests/Settings/Activity/SecurityFilterTest.php delete mode 100644 tests/Settings/Activity/SecurityProviderTest.php delete mode 100644 tests/Settings/Activity/SecuritySettingTest.php delete mode 100644 tests/Settings/ApplicationTest.php delete mode 100644 tests/Settings/Controller/AdminSettingsControllerTest.php delete mode 100644 tests/Settings/Controller/AppSettingsControllerTest.php delete mode 100644 tests/Settings/Controller/AuthSettingsControllerTest.php delete mode 100644 tests/Settings/Controller/CertificateControllerTest.php delete mode 100644 tests/Settings/Controller/CheckSetupControllerTest.php delete mode 100644 tests/Settings/Controller/MailSettingsControllerTest.php delete mode 100644 tests/Settings/Controller/TwoFactorSettingsControllerTest.php delete mode 100644 tests/Settings/Controller/UsersControllerTest.php delete mode 100644 tests/Settings/Mailer/NewUserMailHelperTest.php delete mode 100644 tests/Settings/Middleware/SubadminMiddlewareTest.php delete mode 100644 tests/Settings/Personal/Security/AuthtokensTest.php delete mode 100644 tests/lib/Settings/Admin/MailTest.php delete mode 100644 tests/lib/Settings/Admin/SecurityTest.php delete mode 100644 tests/lib/Settings/Admin/ServerTest.php delete mode 100644 tests/lib/Settings/Admin/SharingTest.php delete mode 100644 tests/lib/Settings/Personal/SecurityTest.php diff --git a/.gitattributes b/.gitattributes index 1e809562fb6..4e522fbd42f 100644 --- a/.gitattributes +++ b/.gitattributes @@ -11,6 +11,7 @@ /apps/files_versions/js/files_versions.js.map binary /apps/oauth2/js/oauth2.js binary /apps/oauth2/js/oauth2.js.map binary +/apps/settings/js/vue* binary /apps/systemtags/js/systemtags.js binary /apps/systemtags/js/systemtags.js.map binary /apps/twofactor_backupcodes/js/*.js binary @@ -19,5 +20,3 @@ /apps/updatenotification/js/updatenotification.js.map binary /apps/workflowengine/js/*.js binary /apps/workflowengine/js/*.js.map binary - -/settings/js/vue* binary diff --git a/.gitignore b/.gitignore index 938ccba2544..d0d8fe14122 100644 --- a/.gitignore +++ b/.gitignore @@ -30,6 +30,7 @@ !/apps/user_ldap !/apps/oauth2 !/apps/provisioning_api +!/apps/settings !/apps/systemtags !/apps/testing !/apps/admin_audit diff --git a/apps/provisioning_api/lib/AppInfo/Application.php b/apps/provisioning_api/lib/AppInfo/Application.php index 4bf7eb7445c..d642d095d5d 100644 --- a/apps/provisioning_api/lib/AppInfo/Application.php +++ b/apps/provisioning_api/lib/AppInfo/Application.php @@ -26,7 +26,7 @@ namespace OCA\Provisioning_API\AppInfo; use OC\AppFramework\Utility\SimpleContainer; use OC\AppFramework\Utility\TimeFactory; -use OC\Settings\Mailer\NewUserMailHelper; +use OCA\Settings\Mailer\NewUserMailHelper; use OCA\Provisioning_API\Middleware\ProvisioningApiMiddleware; use OCP\AppFramework\App; use OCP\AppFramework\Utility\IControllerMethodReflector; diff --git a/apps/provisioning_api/lib/Controller/UsersController.php b/apps/provisioning_api/lib/Controller/UsersController.php index dd54d7ebf75..c69c7d62605 100644 --- a/apps/provisioning_api/lib/Controller/UsersController.php +++ b/apps/provisioning_api/lib/Controller/UsersController.php @@ -36,7 +36,7 @@ namespace OCA\Provisioning_API\Controller; use OC\Accounts\AccountManager; use OC\Authentication\Token\RemoteWipe; use OC\HintException; -use OC\Settings\Mailer\NewUserMailHelper; +use OCA\Settings\Mailer\NewUserMailHelper; use OCA\Provisioning_API\FederatedFileSharingFactory; use OCP\App\IAppManager; use OCP\AppFramework\Http\DataResponse; diff --git a/apps/provisioning_api/tests/Controller/UsersControllerTest.php b/apps/provisioning_api/tests/Controller/UsersControllerTest.php index 325b1b204dc..d1b0754633d 100644 --- a/apps/provisioning_api/tests/Controller/UsersControllerTest.php +++ b/apps/provisioning_api/tests/Controller/UsersControllerTest.php @@ -40,7 +40,7 @@ use OCA\FederatedFileSharing\FederatedShareProvider; use OCA\Provisioning_API\FederatedFileSharingFactory; use OCP\App\IAppManager; use OCP\Mail\IEMailTemplate; -use OC\Settings\Mailer\NewUserMailHelper; +use OCA\Settings\Mailer\NewUserMailHelper; use OC\SubAdmin; use OCA\Provisioning_API\Controller\UsersController; use OCP\AppFramework\Http\DataResponse; diff --git a/apps/settings/.babelrc.js b/apps/settings/.babelrc.js new file mode 100644 index 00000000000..a1690d0d862 --- /dev/null +++ b/apps/settings/.babelrc.js @@ -0,0 +1,13 @@ +module.exports = { + plugins: ['@babel/plugin-syntax-dynamic-import'], + presets: [ + [ + '@babel/preset-env', + { + targets: { + browsers: ['last 2 versions', 'ie >= 11'] + } + } + ] + ] +} diff --git a/apps/settings/.editorconfig b/apps/settings/.editorconfig new file mode 100644 index 00000000000..442058331bb --- /dev/null +++ b/apps/settings/.editorconfig @@ -0,0 +1,12 @@ +root = true + +[*] +charset = utf-8 +indent_style = tab +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true + +[{package.json,.travis.yml,webpack.config.js}] +indent_style = space +indent_size = 2 \ No newline at end of file diff --git a/apps/settings/.gitignore b/apps/settings/.gitignore new file mode 100644 index 00000000000..a0446a54854 --- /dev/null +++ b/apps/settings/.gitignore @@ -0,0 +1,12 @@ +.DS_Store +node_modules/ +dist/ +npm-debug.log +yarn-error.log + +# Editor directories and files +.idea +*.suo +*.ntvs* +*.njsproj +*.sln diff --git a/apps/settings/.l10nignore b/apps/settings/.l10nignore new file mode 100644 index 00000000000..0361e8a12c4 --- /dev/null +++ b/apps/settings/.l10nignore @@ -0,0 +1,14 @@ +# compiled vue templates +js/vue-0.js +js/vue-1.js +js/vue-2.js +js/vue-3.js +js/vue-4.js +js/vue-5.js +js/vue-6.js +js/vue-7.js +js/vue-8.js +js/vue-settings-admin-security.js +js/vue-settings-apps-users-management.js +js/vue-settings-personal-security.js +js/templates.js diff --git a/apps/settings/appinfo/info.xml b/apps/settings/appinfo/info.xml new file mode 100644 index 00000000000..acbf5caaac8 --- /dev/null +++ b/apps/settings/appinfo/info.xml @@ -0,0 +1,19 @@ + + + settings + Nextcloud settings + Nextcloud settings + Nextcloud settings + 1.0.0 + agpl + Nextcloud + Settings + + + customization + https://github.com/nextcloud/server/issues + + + + diff --git a/apps/settings/appinfo/routes.php b/apps/settings/appinfo/routes.php new file mode 100644 index 00000000000..b55bea0de68 --- /dev/null +++ b/apps/settings/appinfo/routes.php @@ -0,0 +1,100 @@ + + * @author Bart Visscher + * @author Bjoern Schiessle + * @author Björn Schießle + * @author Christoph Wurst + * @author Frank Karlitschek + * @author Georg Ehrke + * @author Lukas Reschke + * @author Morris Jobke + * @author Raghu Nayyar + * @author Robin Appelman + * @author Roeland Jago Douma + * @author Thomas Müller + * @author Thomas Pulzer + * @author Vincent Petry + * + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see + * + */ + +namespace OCA\Settings; + +use OCA\Settings\AppInfo\Application; + +$application = new Application(); +$this->useCollection('root'); +$application->registerRoutes($this, [ + 'resources' => [ + 'AuthSettings' => ['url' => '/settings/personal/authtokens'], + ], + 'routes' => [ + ['name' => 'AuthSettings#wipe', 'url' => '/settings/personal/authtokens/wipe/{id}', 'verb' => 'POST'], + + ['name' => 'MailSettings#setMailSettings', 'url' => '/settings/admin/mailsettings', 'verb' => 'POST'], + ['name' => 'MailSettings#storeCredentials', 'url' => '/settings/admin/mailsettings/credentials', 'verb' => 'POST'], + ['name' => 'MailSettings#sendTestMail', 'url' => '/settings/admin/mailtest', 'verb' => 'POST'], + ['name' => 'Encryption#startMigration', 'url' => '/settings/admin/startmigration', 'verb' => 'POST'], + + ['name' => 'AppSettings#listCategories', 'url' => '/settings/apps/categories', 'verb' => 'GET'], + ['name' => 'AppSettings#viewApps', 'url' => '/settings/apps', 'verb' => 'GET'], + ['name' => 'AppSettings#listApps', 'url' => '/settings/apps/list', 'verb' => 'GET'], + ['name' => 'AppSettings#enableApp', 'url' => '/settings/apps/enable/{appId}', 'verb' => 'GET'], + ['name' => 'AppSettings#enableApp', 'url' => '/settings/apps/enable/{appId}', 'verb' => 'POST'], + ['name' => 'AppSettings#enableApps', 'url' => '/settings/apps/enable', 'verb' => 'POST'], + ['name' => 'AppSettings#disableApp', 'url' => '/settings/apps/disable/{appId}', 'verb' => 'GET'], + ['name' => 'AppSettings#disableApps', 'url' => '/settings/apps/disable', 'verb' => 'POST'], + ['name' => 'AppSettings#updateApp', 'url' => '/settings/apps/update/{appId}', 'verb' => 'GET'], + ['name' => 'AppSettings#uninstallApp', 'url' => '/settings/apps/uninstall/{appId}', 'verb' => 'GET'], + ['name' => 'AppSettings#viewApps', 'url' => '/settings/apps/{category}', 'verb' => 'GET', 'defaults' => ['category' => '']], + ['name' => 'AppSettings#viewApps', 'url' => '/settings/apps/{category}/{id}', 'verb' => 'GET', 'defaults' => ['category' => '', 'id' => '']], + ['name' => 'AppSettings#force', 'url' => '/settings/apps/force', 'verb' => 'POST'], + + ['name' => 'Users#setDisplayName', 'url' => '/settings/users/{username}/displayName', 'verb' => 'POST'], + ['name' => 'Users#setEMailAddress', 'url' => '/settings/users/{id}/mailAddress', 'verb' => 'PUT'], + ['name' => 'Users#setUserSettings', 'url' => '/settings/users/{username}/settings', 'verb' => 'PUT'], + ['name' => 'Users#getVerificationCode', 'url' => '/settings/users/{account}/verify', 'verb' => 'GET'], + ['name' => 'Users#usersList', 'url' => '/settings/users', 'verb' => 'GET'], + ['name' => 'Users#usersListByGroup', 'url' => '/settings/users/{group}', 'verb' => 'GET', 'requirements' => ['group' => '.+']], + ['name' => 'LogSettings#setLogLevel', 'url' => '/settings/admin/log/level', 'verb' => 'POST'], + ['name' => 'LogSettings#getEntries', 'url' => '/settings/admin/log/entries', 'verb' => 'GET'], + ['name' => 'LogSettings#download', 'url' => '/settings/admin/log/download', 'verb' => 'GET'], + ['name' => 'CheckSetup#check', 'url' => '/settings/ajax/checksetup', 'verb' => 'GET'], + ['name' => 'CheckSetup#getFailedIntegrityCheckFiles', 'url' => '/settings/integrity/failed', 'verb' => 'GET'], + ['name' => 'CheckSetup#rescanFailedIntegrityCheck', 'url' => '/settings/integrity/rescan', 'verb' => 'GET'], + ['name' => 'Certificate#addPersonalRootCertificate', 'url' => '/settings/personal/certificate', 'verb' => 'POST'], + ['name' => 'Certificate#removePersonalRootCertificate', 'url' => '/settings/personal/certificate/{certificateIdentifier}', 'verb' => 'DELETE'], + ['name' => 'Certificate#addSystemRootCertificate', 'url' => '/settings/admin/certificate', 'verb' => 'POST'], + ['name' => 'Certificate#removeSystemRootCertificate', 'url' => '/settings/admin/certificate/{certificateIdentifier}', 'verb' => 'DELETE'], + ['name' => 'PersonalSettings#index', 'url' => '/settings/user/{section}', 'verb' => 'GET', 'defaults' => ['section' => 'personal-info']], + ['name' => 'AdminSettings#index', 'url' => '/settings/admin/{section}', 'verb' => 'GET', 'defaults' => ['section' => 'server']], + ['name' => 'AdminSettings#form', 'url' => '/settings/admin/{section}', 'verb' => 'GET'], + ['name' => 'ChangePassword#changePersonalPassword', 'url' => '/settings/personal/changepassword', 'verb' => 'POST'], + ['name' => 'ChangePassword#changeUserPassword', 'url' => '/settings/users/changepassword', 'verb' => 'POST'], + ['name' => 'TwoFactorSettings#index', 'url' => '/settings/api/admin/twofactorauth', 'verb' => 'GET'], + ['name' => 'TwoFactorSettings#update', 'url' => '/settings/api/admin/twofactorauth', 'verb' => 'PUT'], + ] +]); + +/** @var $this \OCP\Route\IRouter */ + +// Settings pages +$this->create('settings_help', '/settings/help') + ->actionInclude('settings/help.php'); + diff --git a/apps/settings/composer/autoload.php b/apps/settings/composer/autoload.php new file mode 100644 index 00000000000..04ff46ee987 --- /dev/null +++ b/apps/settings/composer/autoload.php @@ -0,0 +1,7 @@ + + * Jordi Boggiano + * + * 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 + * @author Jordi Boggiano + * @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', $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/apps/settings/composer/composer/LICENSE b/apps/settings/composer/composer/LICENSE new file mode 100644 index 00000000000..f27399a042d --- /dev/null +++ b/apps/settings/composer/composer/LICENSE @@ -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/apps/settings/composer/composer/autoload_classmap.php b/apps/settings/composer/composer/autoload_classmap.php new file mode 100644 index 00000000000..e2a08896ccc --- /dev/null +++ b/apps/settings/composer/composer/autoload_classmap.php @@ -0,0 +1,43 @@ + $baseDir . '/../lib/Activity/GroupProvider.php', + 'OCA\\Settings\\Activity\\GroupSetting' => $baseDir . '/../lib/Activity/GroupSetting.php', + 'OCA\\Settings\\Activity\\Provider' => $baseDir . '/../lib/Activity/Provider.php', + 'OCA\\Settings\\Activity\\SecurityFilter' => $baseDir . '/../lib/Activity/SecurityFilter.php', + 'OCA\\Settings\\Activity\\SecurityProvider' => $baseDir . '/../lib/Activity/SecurityProvider.php', + 'OCA\\Settings\\Activity\\SecuritySetting' => $baseDir . '/../lib/Activity/SecuritySetting.php', + 'OCA\\Settings\\Activity\\Setting' => $baseDir . '/../lib/Activity/Setting.php', + 'OCA\\Settings\\Admin\\Mail' => $baseDir . '/../lib/Settings/Admin/Mail.php', + 'OCA\\Settings\\Admin\\Overview' => $baseDir . '/../lib/Settings/Admin/Overview.php', + 'OCA\\Settings\\Admin\\Security' => $baseDir . '/../lib/Settings/Admin/Security.php', + 'OCA\\Settings\\Admin\\Server' => $baseDir . '/../lib/Settings/Admin/Server.php', + 'OCA\\Settings\\Admin\\Sharing' => $baseDir . '/../lib/Settings/Admin/Sharing.php', + 'OCA\\Settings\\AppInfo\\Application' => $baseDir . '/../lib/AppInfo/Application.php', + 'OCA\\Settings\\BackgroundJobs\\VerifyUserData' => $baseDir . '/../lib/BackgroundJobs/VerifyUserData.php', + 'OCA\\Settings\\Controller\\AdminSettingsController' => $baseDir . '/../lib/Controller/AdminSettingsController.php', + 'OCA\\Settings\\Controller\\AppSettingsController' => $baseDir . '/../lib/Controller/AppSettingsController.php', + 'OCA\\Settings\\Controller\\AuthSettingsController' => $baseDir . '/../lib/Controller/AuthSettingsController.php', + 'OCA\\Settings\\Controller\\CertificateController' => $baseDir . '/../lib/Controller/CertificateController.php', + 'OCA\\Settings\\Controller\\ChangePasswordController' => $baseDir . '/../lib/Controller/ChangePasswordController.php', + 'OCA\\Settings\\Controller\\CheckSetupController' => $baseDir . '/../lib/Controller/CheckSetupController.php', + 'OCA\\Settings\\Controller\\CommonSettingsTrait' => $baseDir . '/../lib/Controller/CommonSettingsTrait.php', + 'OCA\\Settings\\Controller\\LogSettingsController' => $baseDir . '/../lib/Controller/LogSettingsController.php', + 'OCA\\Settings\\Controller\\MailSettingsController' => $baseDir . '/../lib/Controller/MailSettingsController.php', + 'OCA\\Settings\\Controller\\PersonalSettingsController' => $baseDir . '/../lib/Controller/PersonalSettingsController.php', + 'OCA\\Settings\\Controller\\TwoFactorSettingsController' => $baseDir . '/../lib/Controller/TwoFactorSettingsController.php', + 'OCA\\Settings\\Controller\\UsersController' => $baseDir . '/../lib/Controller/UsersController.php', + 'OCA\\Settings\\Hooks' => $baseDir . '/../lib/Hooks.php', + 'OCA\\Settings\\Mailer\\NewUserMailHelper' => $baseDir . '/../lib/Mailer/NewUserMailHelper.php', + 'OCA\\Settings\\Middleware\\SubadminMiddleware' => $baseDir . '/../lib/Middleware/SubadminMiddleware.php', + 'OCA\\Settings\\Personal\\Additional' => $baseDir . '/../lib/Settings/Personal/Additional.php', + 'OCA\\Settings\\Personal\\PersonalInfo' => $baseDir . '/../lib/Settings/Personal/PersonalInfo.php', + 'OCA\\Settings\\Personal\\Security' => $baseDir . '/../lib/Settings/Personal/Security.php', + 'OCA\\Settings\\Personal\\Security\\Authtokens' => $baseDir . '/../lib/Settings/Personal/Security/Authtokens.php', + 'OCA\\Settings\\Personal\\ServerDevNotice' => $baseDir . '/../lib/Settings/Personal/ServerDevNotice.php', +); diff --git a/apps/settings/composer/composer/autoload_namespaces.php b/apps/settings/composer/composer/autoload_namespaces.php new file mode 100644 index 00000000000..71c9e91858d --- /dev/null +++ b/apps/settings/composer/composer/autoload_namespaces.php @@ -0,0 +1,9 @@ + array($baseDir . '/../lib'), +); diff --git a/apps/settings/composer/composer/autoload_real.php b/apps/settings/composer/composer/autoload_real.php new file mode 100644 index 00000000000..903e9d72eac --- /dev/null +++ b/apps/settings/composer/composer/autoload_real.php @@ -0,0 +1,43 @@ += 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\ComposerStaticInitSettings::getInitializer($loader)); + } else { + $classMap = require __DIR__ . '/autoload_classmap.php'; + if ($classMap) { + $loader->addClassMap($classMap); + } + } + + $loader->setClassMapAuthoritative(true); + $loader->register(true); + + return $loader; + } +} diff --git a/apps/settings/composer/composer/autoload_static.php b/apps/settings/composer/composer/autoload_static.php new file mode 100644 index 00000000000..3dd12edc57c --- /dev/null +++ b/apps/settings/composer/composer/autoload_static.php @@ -0,0 +1,69 @@ + + array ( + 'OCA\\Settings\\' => 13, + ), + ); + + public static $prefixDirsPsr4 = array ( + 'OCA\\Settings\\' => + array ( + 0 => __DIR__ . '/..' . '/../lib', + ), + ); + + public static $classMap = array ( + 'OCA\\Settings\\Activity\\GroupProvider' => __DIR__ . '/..' . '/../lib/Activity/GroupProvider.php', + 'OCA\\Settings\\Activity\\GroupSetting' => __DIR__ . '/..' . '/../lib/Activity/GroupSetting.php', + 'OCA\\Settings\\Activity\\Provider' => __DIR__ . '/..' . '/../lib/Activity/Provider.php', + 'OCA\\Settings\\Activity\\SecurityFilter' => __DIR__ . '/..' . '/../lib/Activity/SecurityFilter.php', + 'OCA\\Settings\\Activity\\SecurityProvider' => __DIR__ . '/..' . '/../lib/Activity/SecurityProvider.php', + 'OCA\\Settings\\Activity\\SecuritySetting' => __DIR__ . '/..' . '/../lib/Activity/SecuritySetting.php', + 'OCA\\Settings\\Activity\\Setting' => __DIR__ . '/..' . '/../lib/Activity/Setting.php', + 'OCA\\Settings\\Admin\\Mail' => __DIR__ . '/..' . '/../lib/Settings/Admin/Mail.php', + 'OCA\\Settings\\Admin\\Overview' => __DIR__ . '/..' . '/../lib/Settings/Admin/Overview.php', + 'OCA\\Settings\\Admin\\Security' => __DIR__ . '/..' . '/../lib/Settings/Admin/Security.php', + 'OCA\\Settings\\Admin\\Server' => __DIR__ . '/..' . '/../lib/Settings/Admin/Server.php', + 'OCA\\Settings\\Admin\\Sharing' => __DIR__ . '/..' . '/../lib/Settings/Admin/Sharing.php', + 'OCA\\Settings\\AppInfo\\Application' => __DIR__ . '/..' . '/../lib/AppInfo/Application.php', + 'OCA\\Settings\\BackgroundJobs\\VerifyUserData' => __DIR__ . '/..' . '/../lib/BackgroundJobs/VerifyUserData.php', + 'OCA\\Settings\\Controller\\AdminSettingsController' => __DIR__ . '/..' . '/../lib/Controller/AdminSettingsController.php', + 'OCA\\Settings\\Controller\\AppSettingsController' => __DIR__ . '/..' . '/../lib/Controller/AppSettingsController.php', + 'OCA\\Settings\\Controller\\AuthSettingsController' => __DIR__ . '/..' . '/../lib/Controller/AuthSettingsController.php', + 'OCA\\Settings\\Controller\\CertificateController' => __DIR__ . '/..' . '/../lib/Controller/CertificateController.php', + 'OCA\\Settings\\Controller\\ChangePasswordController' => __DIR__ . '/..' . '/../lib/Controller/ChangePasswordController.php', + 'OCA\\Settings\\Controller\\CheckSetupController' => __DIR__ . '/..' . '/../lib/Controller/CheckSetupController.php', + 'OCA\\Settings\\Controller\\CommonSettingsTrait' => __DIR__ . '/..' . '/../lib/Controller/CommonSettingsTrait.php', + 'OCA\\Settings\\Controller\\LogSettingsController' => __DIR__ . '/..' . '/../lib/Controller/LogSettingsController.php', + 'OCA\\Settings\\Controller\\MailSettingsController' => __DIR__ . '/..' . '/../lib/Controller/MailSettingsController.php', + 'OCA\\Settings\\Controller\\PersonalSettingsController' => __DIR__ . '/..' . '/../lib/Controller/PersonalSettingsController.php', + 'OCA\\Settings\\Controller\\TwoFactorSettingsController' => __DIR__ . '/..' . '/../lib/Controller/TwoFactorSettingsController.php', + 'OCA\\Settings\\Controller\\UsersController' => __DIR__ . '/..' . '/../lib/Controller/UsersController.php', + 'OCA\\Settings\\Hooks' => __DIR__ . '/..' . '/../lib/Hooks.php', + 'OCA\\Settings\\Mailer\\NewUserMailHelper' => __DIR__ . '/..' . '/../lib/Mailer/NewUserMailHelper.php', + 'OCA\\Settings\\Middleware\\SubadminMiddleware' => __DIR__ . '/..' . '/../lib/Middleware/SubadminMiddleware.php', + 'OCA\\Settings\\Personal\\Additional' => __DIR__ . '/..' . '/../lib/Settings/Personal/Additional.php', + 'OCA\\Settings\\Personal\\PersonalInfo' => __DIR__ . '/..' . '/../lib/Settings/Personal/PersonalInfo.php', + 'OCA\\Settings\\Personal\\Security' => __DIR__ . '/..' . '/../lib/Settings/Personal/Security.php', + 'OCA\\Settings\\Personal\\Security\\Authtokens' => __DIR__ . '/..' . '/../lib/Settings/Personal/Security/Authtokens.php', + 'OCA\\Settings\\Personal\\ServerDevNotice' => __DIR__ . '/..' . '/../lib/Settings/Personal/ServerDevNotice.php', + ); + + public static function getInitializer(ClassLoader $loader) + { + return \Closure::bind(function () use ($loader) { + $loader->prefixLengthsPsr4 = ComposerStaticInitSettings::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInitSettings::$prefixDirsPsr4; + $loader->classMap = ComposerStaticInitSettings::$classMap; + + }, null, ClassLoader::class); + } +} diff --git a/apps/settings/css/settings.scss b/apps/settings/css/settings.scss new file mode 100644 index 00000000000..02c85b5a34f --- /dev/null +++ b/apps/settings/css/settings.scss @@ -0,0 +1,1557 @@ +/* Copyright (c) 2011, Jan-Christoph Borchardt, http://jancborchardt.net + This file is licensed under the Affero General Public License version 3 or later. + See the COPYING-README file. */ + +input { + &#openid, &#webdav { + width: 20em; + } +} + +/* PERSONAL */ +.clear { + clear: both; +} + +/* icons for sidebar */ +.nav-icon-personal-settings { + @include icon-color('personal', 'settings', $color-black); +} + +.nav-icon-security { + @include icon-color('toggle-filelist', 'settings', $color-black); +} + +.nav-icon-clientsbox { + @include icon-color('change', 'settings', $color-black); +} + +.nav-icon-federated-cloud { + @include icon-color('share', 'settings', $color-black); +} + +.nav-icon-second-factor-backup-codes, .nav-icon-ssl-root-certificate { + @include icon-color('password', 'settings', $color-black); +} + +#avatarform { + .avatardiv { + margin: 10px auto; + } + .warning { + width: 100%; + } + .jcrop-keymgr { + display: none !important; + } +} + +#displayavatar { + text-align: center; +} + +#uploadavatarbutton, #selectavatar, #removeavatar { + padding: 21px; +} + +.jcrop-holder { + z-index: 500; +} + +#cropper { + float: left; + z-index: 500; + /* float cropper above settings page to prevent unexpected flowing from dynamically sized element */ + position: fixed; + background-color: rgba(0, 0, 0, 0.2); + box-sizing: border-box; + top: 45px; + left: 0; + width: 100%; + height: calc(100% - 45px); + .inner-container { + z-index: 2001; + /* above the top bar if needed */ + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + background: #fff; + color: #333; + border-radius: var(--border-radius-large); + box-shadow: 0 0 10px var(--color-box-shadow); + padding: 15px; + .jcrop-holder, + .jcrop-holder img, + img.jcrop-preview { + border-radius: var(--border-radius); + } + + .button { + margin-top: 15px; + } + .primary { + float: right; + } + } +} + +#personal-settings-avatar-container { + display: inline-grid; + grid-template-columns: 1fr; + grid-template-rows: 2fr 1fr; + vertical-align: top; +} + +.profile-settings-container { + display: inline-grid; + grid-template-columns: 1fr; + grid-template-rows: 1fr 2fr 1fr; +} + +.personal-show-container { + width: 100%; +} + +.personal-settings-setting-box input { + &[type='text'], &[type='email'], &[type='tel'], &[type='url'] { + width: 100%; + } +} + +select { + &#timezone, + &#languageinput, + &#localeinput { + width: 100%; + } +} + +#personal-settings { + display: grid; + padding: 20px; + max-width: 1500px; + grid-template-columns:1fr 2fr 1fr; + .section { + padding: 10px 10px; + border: 0; + h2 { + margin-bottom: 12px; + } + } + .personal-info { + margin-right: 10%; + margin-bottom: 12px; + margin-top: 12px; + } + .personal-info[class^='icon-'], .personal-info[class*=' icon-'] { + background-position: 0px 2px; + padding-left: 30px; + opacity: 0.7; + } +} + + +@media (min-width: 1200px) and (max-width: 1400px) { + #personal-settings { + display: grid; + grid-template-columns: 1fr 2fr; + #personal-settings-avatar-container { + grid-template-columns: 1fr; + grid-template-rows: 1fr; + } + .personal-settings-container { + grid-template-columns: 1fr 1fr; + grid-template-rows: 1fr 1fr 1fr; + } + .profile-settings-container { + grid-template-columns: 1fr 1fr; + grid-template-rows: 1fr; + grid-column: 2; + } + } +} + +@media (max-width: 1200px) { + #personal-settings { + display: grid; + grid-template-columns: 1fr; + #personal-settings-avatar-container { + grid-template-rows: 1fr; + } + .personal-settings-container { + grid-template-columns: 1fr 1fr; + grid-template-rows: 1fr 1fr 1fr; + } + .profile-settings-container { + grid-template-columns: 1fr 1fr; + grid-template-rows: 1fr; + } + } +} + +@media (max-width: 560px) { + #personal-settings { + display: grid; + grid-template-columns: 1fr; + #personal-settings-avatar-container { + grid-template-rows: 1fr; + } + .personal-settings-container { + grid-template-columns: 1fr; + grid-template-rows: 1fr 1fr 1fr 1fr 1fr 1fr; + } + .profile-settings-container { + grid-template-columns: 1fr; + grid-template-rows: 1fr 1fr; + } + } +} + +.personal-settings-container { + display: inline-grid; + grid-template-columns: 1fr 1fr; + grid-template-rows: 1fr 1fr 2fr; + &:after { + clear: both; + } + > div { + h3 { + position: relative; + display: inline-flex; + flex-wrap: nowrap; + justify-content: flex-start; + width: 100%; + + > label { + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + } + } + > form span { + &[class^='icon-checkmark'], &[class^='icon-error'] { + position: relative; + right: 8px; + top: -28px; + pointer-events: none; + float: right; + } + } + } + .verify { + position: relative; + left: 100%; + top: 0; + height: 0; + img { + padding: 12px 7px 6px; + } + } + .verify-action { + cursor: pointer; + } + input:disabled { + background-color: white; + color: black; + border: none; + opacity: 100; + } +} + + +#body-settings #quota { + cursor: default; + position: relative; + progress { + height: 6px; + &::-moz-progress-bar { + border-radius: 3px 0 0 3px; + } + &::-webkit-progress-value { + border-radius: 3px 0 0 3px; + } + } + div { + font-weight: normal; + white-space: nowrap; + } +} + + +/* verify accounts */ +/* only show pointer cursor when popup will be there */ +.verification-dialog { + display: none; + right: -9px; + top: 40px; + width: 275px; + p { + padding: 10px; + } + .verificationCode { + font-family: monospace; + display: block; + overflow-wrap: break-word; + } +} + +.federation-menu { + position: relative; + cursor: pointer; + margin-left: 10px; + &:focus { + .icon-federation-menu { + opacity: 0.7; + } + } + .icon-federation-menu { + padding-left: 16px; + background-size: 16px; + background-position: left center; + opacity: .3; + cursor: inherit; + .icon-triangle-s { + display: inline-block; + vertical-align: middle; + cursor: inherit; + } + } + .federationScopeMenu { + top: 44px; + &.popovermenu { + .menuitem { + // override h3 heading font size + font-size: 12.8px; + line-height: 1.6em; + .menuitem-text-detail { + opacity: .75; + } + &.active { + box-shadow: inset 2px 0 var(--color-primary); + .menuitem-text { + font-weight: bold; + } + } + } + } + } +} + +#groups-groups { + padding-top: 5px; +} + +.clientsbox img { + height: 60px; +} + +#sslCertificate { + tr.expired { + background-color: rgba(255, 0, 0, 0.5); + } + td { + padding: 5px; + } +} + +#displaynameerror, +#displaynamechanged { + display: none; +} + +input#identity { + width: 20em; +} + +#showWizard { + display: inline-block; +} + +.msg { + &.success { + color: #fff; + background-color: #47a447; + padding: 3px; + } + &.error { + color: #fff; + background-color: #d2322d; + padding: 3px; + } +} + + + +table.nostyle { + label { + margin-right: 2em; + } + td { + padding: 0.2em 0; + } +} + +#security-password { + #passwordform { + display: flex; + flex-wrap: wrap; + #pass1, .personal-show-container, #passwordbutton { + flex-shrink: 1; + width: 200px; + min-width: 150px; + } + #pass2 { + width: 100%; + } + .password-state { + display: inline-block; + } + .strengthify-wrapper { + position: absolute; + left: 0; + width: 100%; + border-radius: 0 0 2px 2px; + margin-top: -6px; + overflow: hidden; + height: 3px; + } + } +} + +/* Two-Factor Authentication (2FA) */ + +#two-factor-auth { + h3 { + margin-top: 24px; + } + + li > div { + margin-left: 20px; + } + + .two-factor-provider-settings-icon { + width: 16px; + height: 16px; + vertical-align: sub; + } +} + +.social-button { + padding-left: 0 !important; + margin-left: -10px; + img { + padding: 10px; + } +} + +/* USERS */ + +.isgroup { + .groupname { + width: 85%; + display: block; + overflow: hidden; + text-overflow: ellipsis; + } + &.active .groupname { + width: 65%; + } +} + +li.active { + .delete, + .rename { + display: block; + } +} + +.app-navigation-entry-utils { + .delete, + .rename { + display: none; + } +} + +#usersearchform { + position: absolute; + top: 2px; + right: 0; + input { + width: 150px; + } + label { + font-weight: bold; + } +} + +/* display table at full width */ +table.grid { + width: 100%; + th { + height: 2em; + color: #999; + border-bottom: 1px solid var(--color-border); + padding: 0 .5em; + padding-left: .8em; + text-align: left; + font-weight: normal; + } + td { + border-bottom: 1px solid var(--color-border); + padding: 0 .5em; + padding-left: .8em; + text-align: left; + font-weight: normal; + } +} + +td, th { + &.name { + padding-left: .8em; + min-width: 5em; + max-width: 12em; + text-overflow: ellipsis; + overflow: hidden; + } + &.password { + padding-left: .8em; + > img { + visibility: hidden; + } + } + &.displayName > img { + visibility: hidden; + } + &.password, + &.displayName, + &.mailAddress { + min-width: 5em; + max-width: 12em; + cursor: pointer; + span { + width: 90%; + display: inline-block; + text-overflow: ellipsis; + overflow: hidden; + } + } + &.mailAddress { + cursor: pointer; + } + &.password > span { + margin-right: 1.2em; + color: #C7C7C7; + } +} + +span.usersLastLoginTooltip { + white-space: nowrap; +} + +/* dropdowns will be relative to this element */ +#userlist { + position: relative; + .storageLocation, .userBackend, .lastLogin { + display: none; + } + th.name { + color: #000; + } + tr { + height: 50px; + } + .mailAddress .loading-small { + width: 16px; + height: 16px; + margin-left: -26px; + position: relative; + top: 3px; + } + .groupsListContainer.hidden { + display: none; + } + thead th, + thead tr { + z-index: 100; + background-color: var(--color-main-background); + @include position('sticky'); + // positional attribute is required for position to take affect. + top: 0; + } +} + +#newuser { + .groupsListContainer.hidden { + display: none; + } + .multiselect { + min-width: 150px !important; + position: relative; + top: -1px; + } + input { + &:not([type='submit']), + &:not([type='reset']) { + width: 100%; + } + } + .userActions input { + width: 44px; + height: 44px; + &.icon-close { + border: none; + background-color: initial; + opacity: .5; + } + &:hover { + opacity: 1; + } + } +} + +/* used to highlight a user row in red */ + +#userlist tr.row-warning { + background-color: #FDD; +} + +/* APPS */ +#app-content > svg.app-filter { + float: left; + height: 0; + width: 0; +} + +#app-category-app-bundles { + margin-bottom: 20px; +} + +.appinfo { + margin: 1em 40px; +} + +#app-navigation { + /* Navigation icons */ + img { + margin-bottom: -3px; + margin-right: 6px; + width: 16px; + } + li span.no-icon { + padding-left: 32px; + } + ul li.active > span.utils { + .delete, .rename { + display: block; + } + } + .appwarning { + background: #fcc; + } + &.appwarning:hover { + background: #fbb; + } + .app-external { + color: var(--color-text-maxcontrast); + } +} + +span.version { + margin-left: 1em; + margin-right: 1em; + color: var(--color-text-maxcontrast); +} + +.app-version { + color: var(--color-text-maxcontrast); +} + +.app-level { + margin-top: 8px; + span { + color: var(--color-text-maxcontrast); + background-color: transparent; + border: 1px solid var(--color-text-maxcontrast); + border-radius: var(--border-radius); + padding: 3px 6px; + } + a { + padding: 10px; + margin: -6px; + white-space: nowrap; + } + .official { + background-position: left center; + background-position: 5px center; + padding-left: 25px; + } + .supported { + border-color: var(--color-success); + background-position: left center; + background-position: 5px center; + padding-left: 25px; + color: var(--color-success) ; + } +} + +.app-score { + position: relative; + top: 4px; + opacity: .5; +} + +.app-settings-content { + #searchresults { + display: none; + } +} +#apps-list.store { + .section { + border: 0; + } + .app-name { + display: block; + margin: 5px 0; + } + .app-name, .app-image * { + cursor: pointer; + } + .app-summary { + opacity: .7; + } + .app-image-icon .icon-settings-dark { + width: 100%; + height: 150px; + background-size: 45px; + opacity: 0.5; + } + .app-score-image { + height: 14px; + } + .actions { + margin-top: 10px; + } +} + +#app-sidebar #app-details-view { + h2 { + .icon-settings-dark, + svg { + display: inline-block; + width: 16px; + height: 16px; + margin-right: 10px; + opacity: .7; + } + } + .app-level { + clear: right; + width: 100%; + .supported, + .official { + vertical-align: top; + } + .app-score-image { + float: right; + } + } + .app-author, .app-licence { + color: var(--color-text-maxcontrast); + } + .app-dependencies { + margin: 10px 0; + } + .app-description p { + margin: 10px 0; + } + .close { + position: absolute; + top: 0; + right: 0; + padding: 14px; + opacity: 0.5; + z-index: 1; + width: 44px; + height: 44px; + } + .actions { + display: flex; + align-items: center; + + .app-groups{ + padding: 5px; + } + } + .appslink { + text-decoration: underline; + margin-right: 5px; + } + .app-level, + .actions, + .documentation, + .app-dependencies, + .app-description { + margin: 20px 0; + } +} + +@media only screen and (min-width: 1601px) { + .store .section { + width: 25%; + } + .with-app-sidebar .store .section { + width: 33%; + } +} + +@media only screen and (max-width: 1600px) { + .store .section { + width: 25%; + } + .with-app-sidebar .store .section { + width: 33%; + } +} + +@media only screen and (max-width: 1400px) { + .store .section { + width: 33%; + } + .with-app-sidebar .store .section { + width: 50%; + } +} + +@media only screen and (max-width: 900px) { + .store .section { + width: 50%; + } + .with-app-sidebar .store .section { + width: 100%; + } +} + +@media only screen and (max-width: $breakpoint-mobile) { + .store .section { + width: 50%; + } +} + +@media only screen and (max-width: 480px) { + .store .section { + width: 100%; + } +} + +/* hide app version and level on narrower screens */ +@media only screen and (max-width: 900px) { + .apps-list.installed { + .app-version, .app-level { + display: none !important; + } + } +} + +@media only screen and (max-width: 500px) { + .apps-list.installed .app-groups { + display: none !important; + } +} + +#version.section { + border-bottom: none; +} + +.section { + margin-bottom: 0; + /* section divider lines, none needed for last one */ + &:not(:last-child) { + border-bottom: 1px solid var(--color-border); + } + + /* correctly display help icons next to headings */ + h2 { + margin-bottom: 22px; + .icon-info { + padding: 6px 20px; + vertical-align: text-bottom; + display: inline-block; + } + } +} + +.personal-settings-setting-box .section { + padding: 10px 30px; +} + +.followupsection { + display: block; + padding: 0 30px 30px 30px; + color: #555; +} + +.app-image { + position: relative; + height: 150px; + opacity: 1; + overflow: hidden; +} + +.app-name, .app-version, .app-score, .app-level { + display: inline-block; +} + +.app-description-toggle-show, .app-description-toggle-hide { + clear: both; + padding: 7px 0; + cursor: pointer; + opacity: .5; +} + +.app-description-container { + clear: both; + position: relative; + top: 7px; +} + +.app-description { + clear: both; +} + +#app-category-1 { + margin-bottom: 18px; +} + +/* capitalize 'Other' category */ + +#app-category-925 { + text-transform: capitalize; +} + +.app-dependencies { + color: #ce3702; +} + +.missing-dependencies { + list-style: initial; + list-style-type: initial; + list-style-position: inside; +} + +.apps-list { + .section { + cursor: pointer; + } + .app-list-move { + transition: transform 1s; + } + &.installed { + .apps-list-container { + display: table; + width: 100%; + height: auto; + } + margin-bottom: 100px; + .section { + display: table-row; + padding: 0; + margin: 0; + > * { + display: table-cell; + height: initial; + vertical-align: middle; + float: none; + border-bottom: 1px solid var(--color-border); + padding: 6px; + box-sizing: border-box; + } + &.selected { + background-color: var(--color-background-dark); + } + } + .groups-enable { + margin-top: 0; + label { + margin-right: 3px; + } + } + .app-image { + width: 44px; + height: auto; + text-align: right; + } + .app-image-icon svg, + .app-image-icon .icon-settings-dark { + margin-top: 5px; + width: 20px; + height: 20px; + opacity: .5; + background-size: cover; + display: inline-block; + } + .actions { + text-align: right; + .icon-loading-small { + display: inline-block; + top: 4px; + margin-right: 10px; + } + } + } + &:not(.installed) .app-image-icon svg { + position: absolute; + bottom: 43px; + /* position halfway vertically */ + width: 64px; + height: 64px; + opacity: .1; + } + display: flex; + flex-wrap: wrap; + align-content: flex-start; + &.hidden { + display: none; + } + .section { + position: relative; + flex: 0 0 auto; + + h2.app-name { + display: block; + margin: 8px 0; + } + &:hover { + background-color: var(--color-background-dark); + } + } + .app-description { + p { + margin: 10px 0; + } + ul { + list-style: disc; + } + ol { + list-style: decimal; + ol, ul { + padding-left: 15px; + } + } + > { + ul, ol { + margin-left: 19px; + } + } + ul { + ol, ul { + padding-left: 15px; + } + } + } + /* Bundle header */ + .apps-header { + display: table-row; + position: relative; + div { + display: table-cell; + height: 70px; + } + h2 { + display: table-cell; + position: absolute; + padding-left: 6px; + padding-top: 15px; + + .enable { + position: relative; + top: -1px; + margin-left: 12px; + } + + .section { + margin-top: 50px; + } + } + } +} + +#apps-list-search { + .section { + h2 { + margin-bottom: 0; + } + } +} + +/* LOG */ +#log { + white-space: normal; + margin-bottom: 14px; +} + +#lessLog { + display: none; +} + +table.grid td.date { + white-space: nowrap; +} + +#log-section p { + margin-top: 20px; +} + +#security-warning-state-ok, +#security-warning-state-warning, +#security-warning-state-failure, +#security-warning-state-loading { + span { + vertical-align: middle; + + &.message { + padding: 12px; + } + &.icon { + width: 32px; + height: 32px; + background-position: center center; + display: inline-block; + border-radius: 50%; + } + &.icon-checkmark-white { + background-color: var(--color-success); + } + &.icon-error-white { + background-color: var(--color-warning); + } + &.icon-close-white { + background-color: var(--color-error); + } + } +} + +#shareAPI { + p { + padding-bottom: 0.8em; + } + input#shareapiExpireAfterNDays { + width: 40px; + } + .indent { + padding-left: 28px; + } + .double-indent { + padding-left: 56px; + } + .nocheckbox { + padding-left: 20px; + } +} + +#shareApiDefaultPermissionsSection label { + margin-right: 20px; +} + +#fileSharingSettings h3 { + display: inline-block; +} + +#publicShareDisclaimerText { + width: calc(100% - 23px); + /* 20 px left margin, 3 px right margin */ + max-width: 600px; + height: 150px; + margin-left: 20px; + box-sizing: border-box; +} + +/* correctly display help icons next to headings */ + +.icon-info { + padding: 11px 20px; + vertical-align: text-bottom; + opacity: .5; +} + +#two-factor-auth h2, +#shareAPI h2, +#encryptionAPI h2, +#mail_general_settings h2 { + display: inline-block; +} + +#encryptionAPI li { + list-style-type: initial; + margin-left: 20px; + padding: 5px 0; +} + +.mail_settings p { + label:first-child { + display: inline-block; + width: 300px; + text-align: right; + } + select:nth-child(2), + input:not([type='button']) { + width: 143px; + } +} + +#mail_smtpport { + width: 40px; +} + +.cronlog { + margin-left: 10px; +} + +.status { + display: inline-block; + height: 16px; + width: 16px; + vertical-align: text-bottom; + &.success { + border-radius: 50%; + } +} + +#selectGroups select { + box-sizing: border-box; + display: inline-block; + height: 36px; + padding: 7px 10px; +} + +#log .log-message { + word-break: break-all; + min-width: 180px; +} + +span { + &.success { + background-color: var(--color-success); + border-radius: var(--border-radius); + } + &.error { + background-color: var(--color-error); + } + &.indeterminate { + background-color: var(--color-warning); + border-radius: 40% 0; + } +} + + + +/* OPERA hack for strengthify*/ +doesnotexist:-o-prefocus, .strengthify-wrapper { + left: 185px; + width: 129px; +} + +.trusted-domain-warning { + color: #fff; + padding: 5px; + background: #ce3702; + border-radius: 5px; + font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; +} + +/* HELP */ +.help-includes { + overflow: hidden !important; +} + +.help-iframe { + width: 100%; + height: 100%; + margin: 0; + padding: 0; + border: 0; + overflow: auto; +} + +#postsetupchecks { + ul { + margin-left: 44px; + list-style: disc; + + li { + margin: 10px 0; + } + + ul { + list-style: circle; + } + } + + .loading { + height: 50px; + background-position: left center; + } + .errors, .errors a { + color: var(--color-error); + } + .warnings, .warnings a { + color: var(--color-warning); + } + + .hint { + margin: 20px 0; + } +} + +#security-warning { + a { + text-decoration: underline; + } + + .extra-top-margin { + margin-top: 12px; + } +} + +#admin-tips li { + list-style: initial; + a { + display: inline-block; + padding: 3px 0; + } +} + +#selectEncryptionModules { + margin-left: 30px; + padding: 10px; +} + +#encryptionModules { + padding: 10px; +} + +#warning { + color: red; +} + +.settings-hint { + margin-top: -12px; + margin-bottom: 12px; + opacity: .7; +} + + +/* USERS LIST -------------------------------------------------------------- */ +#body-settings { + $grid-row-height: 46px; + $grid-col-min-width: 120px; + #app-content.user-list-grid { + display: grid; + grid-auto-columns: 1fr; + grid-auto-rows: $grid-row-height; + grid-column-gap: 20px; + .row { + // TODO replace with css4 subgrid when available + // fallback for ie11 no grid + display: flex; + display: grid; + grid-row-start: span 1; + grid-gap: 3px; + align-items: center; + /* let's define the column until storage path, + what follows will be manually defined */ + grid-template-columns: 44px minmax($grid-col-min-width + 30px, 1fr) repeat(auto-fit, minmax($grid-col-min-width, 1fr)); + border-bottom: var(--color-border) 1px solid; + &.disabled { + opacity: .5; + } + + /* grid col width */ + .name, + .displayName, + .password, + .mailAddress, + .languages, + .storageLocation, + .userBackend, + .lastLogin { + min-width: $grid-col-min-width; + } + .groups, + .subadmins, + .quota { + .multiselect { + min-width: $grid-col-min-width; + } + } + .obfuscated { + width: 400px; + opacity: .7; + } + .userActions { + min-width: 44px; + } + + /* various */ + &#grid-header, + &#new-user { + @include position('sticky'); + align-self: normal; + background-color: var(--color-main-background); + z-index: 55; /* above multiselect */ + top: $header-height; + &.sticky { + box-shadow: 0 -2px 10px 1px var(--color-box-shadow); + } + /* fake input for groups validation */ + input#newgroups { + position: absolute; + opacity: 0; + width: 80% !important; + margin: 0 10%; + z-index: 0; + } + } + // separate prop to set initial value to top: 50px + &#new-user { + top: $header-height + $grid-row-height; + } + &#grid-header { + color: var(--color-text-maxcontrast); + z-index: 60; /* above new-user */ + + #headerDisplayName, + #headerPassword, + #headerAddress, + #headerGroups, + #headerSubAdmins, + #headerQuota, + #headerLanguages { + /* Line up header text with column content for when there’s inputs */ + padding-left: 7px; + } + } + &:hover { + input:not([type='submit']):not(:focus):not(:active) { + border-color: var(--color-border) !important; + } + &:not(#grid-header) { + box-shadow: 5px 0 0 var(--color-primary-element) inset; + } + } + > div, + > form { + grid-row: 1; + display: inline-flex; + align-items: center; + color: var(--color-text); + position: relative; + > input:not(:focus):not(:active) { + border-color: transparent; + cursor: pointer; + } + > input:focus, >input:active { + + .icon-confirm { + display: block !important; + } + } + /* inputs like mail, username, password */ + &:not(.userActions) > input:not([type='submit']) { + width: 100%; + min-width: 0; + } + &.name { + word-break: break-all; + } + &.displayName, + &.mailAddress { + > input { + text-overflow: ellipsis; + } + } + &.name, + &.storageLocation { + /* better multi-line visual */ + line-height: 1.3em; + max-height: 100%; + overflow : hidden; + /* not supported by all browsers + so we keep the overflow hidden + as a fallback */ + text-overflow: ellipsis; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + } + &.quota { + .multiselect--active + progress { + display: none; + } + progress { + position: absolute; + width: calc(100% - 4px); /* minus left and right */ + left: 2px; + bottom: 2px; + height: 3px; + z-index: 5; /* above multiselect */ + } + } + .icon-confirm { + flex: 0 0 auto; + cursor: pointer; + &:not(:active) { + display: none; + } + } + &.avatar { + height: 32px; + width: 32px; + margin: 6px; + img { + display: block; + } + } + &.userActions { + #newsubmit { + width: 100%; + } + .toggleUserActions { + position: relative; + .icon-more { + width: 44px; + height: 44px; + opacity: .5; + cursor: pointer; + &:hover { + opacity: .7; + } + } + } + .feedback { + display: flex; + align-items: center; + white-space: nowrap; + transition: opacity 200ms ease-in-out; + .icon-checkmark { + opacity: .5; + margin-right: 5px; + } + } + } + /* Fill the grid cell */ + .multiselect.multiselect-vue { + width: 100%; + } + } + } + .infinite-loading-container { + display: flex; + align-items: center; + justify-content: center; + grid-row-start: span 4; + } + .users-list-end { + opacity: .5; + user-select: none; + } + } +} diff --git a/apps/settings/help.php b/apps/settings/help.php new file mode 100644 index 00000000000..62f10ade521 --- /dev/null +++ b/apps/settings/help.php @@ -0,0 +1,58 @@ + + * @author Christopher Schäpers + * @author Frank Karlitschek + * @author Jakob Sack + * @author Jan-Christoph Borchardt + * @author Lukas Reschke + * @author Morris Jobke + * @author Robin Appelman + * @author Roeland Jago Douma + * + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see + * + */ + +OC_Util::checkLoggedIn(); + +// Load the files we need +OC_Util::addStyle( "settings", "settings" ); +\OC::$server->getNavigationManager()->setActiveEntry('help'); + + +if(isset($_GET['mode']) and $_GET['mode'] === 'admin') { + $url=\OCP\Util::linkToAbsolute( 'core', 'doc/admin/index.html' ); + $style1=''; + $style2=' active'; +}else{ + $url=\OCP\Util::linkToAbsolute( 'core', 'doc/user/index.html' ); + $style1=' active'; + $style2=''; +} + +$url1=\OC::$server->getURLGenerator()->linkToRoute('settings_help').'?mode=user'; +$url2=\OC::$server->getURLGenerator()->linkToRoute('settings_help').'?mode=admin'; + +$tmpl = new OC_Template( "settings", "help", "user" ); +$tmpl->assign( "admin", OC_User::isAdminUser(OC_User::getUser())); +$tmpl->assign( "url", $url ); +$tmpl->assign( "url1", $url1 ); +$tmpl->assign( "url2", $url2 ); +$tmpl->assign( "style1", $style1 ); +$tmpl->assign( "style2", $style2 ); +$tmpl->printPage(); diff --git a/apps/settings/img/admin.svg b/apps/settings/img/admin.svg new file mode 100644 index 00000000000..750ac552933 --- /dev/null +++ b/apps/settings/img/admin.svg @@ -0,0 +1 @@ + diff --git a/apps/settings/img/apps.svg b/apps/settings/img/apps.svg new file mode 100644 index 00000000000..130516e99d2 --- /dev/null +++ b/apps/settings/img/apps.svg @@ -0,0 +1 @@ + diff --git a/apps/settings/img/change.svg b/apps/settings/img/change.svg new file mode 100644 index 00000000000..12071422b7f --- /dev/null +++ b/apps/settings/img/change.svg @@ -0,0 +1 @@ + diff --git a/apps/settings/img/help.svg b/apps/settings/img/help.svg new file mode 100644 index 00000000000..e2d23fb62fb --- /dev/null +++ b/apps/settings/img/help.svg @@ -0,0 +1 @@ + diff --git a/apps/settings/img/password.svg b/apps/settings/img/password.svg new file mode 100644 index 00000000000..edd1edf6c03 --- /dev/null +++ b/apps/settings/img/password.svg @@ -0,0 +1 @@ + diff --git a/apps/settings/img/personal.png b/apps/settings/img/personal.png new file mode 100644 index 00000000000..643d6036d69 Binary files /dev/null and b/apps/settings/img/personal.png differ diff --git a/apps/settings/img/personal.svg b/apps/settings/img/personal.svg new file mode 100644 index 00000000000..91097e5cd71 --- /dev/null +++ b/apps/settings/img/personal.svg @@ -0,0 +1 @@ + diff --git a/apps/settings/img/share.svg b/apps/settings/img/share.svg new file mode 100644 index 00000000000..014392d5a57 --- /dev/null +++ b/apps/settings/img/share.svg @@ -0,0 +1 @@ + diff --git a/apps/settings/img/toggle-filelist.svg b/apps/settings/img/toggle-filelist.svg new file mode 100644 index 00000000000..16ebc047f8c --- /dev/null +++ b/apps/settings/img/toggle-filelist.svg @@ -0,0 +1 @@ + diff --git a/apps/settings/img/users.svg b/apps/settings/img/users.svg new file mode 100644 index 00000000000..97361beb9d0 --- /dev/null +++ b/apps/settings/img/users.svg @@ -0,0 +1 @@ + diff --git a/apps/settings/js/admin.js b/apps/settings/js/admin.js new file mode 100644 index 00000000000..b2078862079 --- /dev/null +++ b/apps/settings/js/admin.js @@ -0,0 +1,319 @@ +$(document).ready(function(){ + $('#excludedGroups').each(function (index, element) { + OC.Settings.setupGroupsSelect($(element)); + $(element).change(function(ev) { + var groups = ev.val || []; + groups = JSON.stringify(groups); + OCP.AppConfig.setValue('core', $(this).attr('name'), groups); + }); + }); + + + $('#loglevel').change(function(){ + $.post(OC.generateUrl('/settings/admin/log/level'), {level: $(this).val()},function(){ + OC.Log.reload(); + } ); + }); + + $('#backgroundjobs span.crondate').tooltip({placement: 'top'}); + + $('#backgroundjobs input').change(function(){ + if($(this).is(':checked')){ + var mode = $(this).val(); + if (mode === 'ajax' || mode === 'webcron' || mode === 'cron') { + OCP.AppConfig.setValue('core', 'backgroundjobs_mode', mode, { + success: function() { + // clear cron errors on background job mode change + OCP.AppConfig.deleteKey('core', 'cronErrors'); + } + }); + } + } + }); + + $('#shareAPIEnabled').change(function() { + $('#shareAPI p:not(#enable)').toggleClass('hidden', !this.checked); + }); + + $('#enableEncryption').change(function() { + $('#encryptionAPI div#EncryptionWarning').toggleClass('hidden'); + }); + + $('#reallyEnableEncryption').click(function() { + $('#encryptionAPI div#EncryptionWarning').toggleClass('hidden'); + $('#encryptionAPI div#EncryptionSettingsArea').toggleClass('hidden'); + OCP.AppConfig.setValue('core', 'encryption_enabled', 'yes'); + $('#enableEncryption').attr('disabled', 'disabled'); + }); + + $('#startmigration').click(function(event){ + $(window).on('beforeunload.encryption', function(e) { + return t('settings', 'Migration in progress. Please wait until the migration is finished'); + }); + event.preventDefault(); + $('#startmigration').prop('disabled', true); + OC.msg.startAction('#startmigration_msg', t('settings', 'Migration started …')); + $.post(OC.generateUrl('/settings/admin/startmigration'), '', function(data){ + OC.msg.finishedAction('#startmigration_msg', data); + if (data['status'] === 'success') { + $('#encryptionAPI div#selectEncryptionModules').toggleClass('hidden'); + $('#encryptionAPI div#migrationWarning').toggleClass('hidden'); + } else { + $('#startmigration').prop('disabled', false); + } + $(window).off('beforeunload.encryption'); + + }); + }); + + $('#shareapiExpireAfterNDays').on('input', function() { + this.value = this.value.replace(/\D/g, ''); + }); + + $('#shareAPI input:not(.noJSAutoUpdate)').change(function() { + var value = $(this).val(); + if ($(this).attr('type') === 'checkbox') { + if (this.checked) { + value = 'yes'; + } else { + value = 'no'; + } + } + OCP.AppConfig.setValue('core', $(this).attr('name'), value); + }); + + $('#shareapiDefaultExpireDate').change(function() { + $("#setDefaultExpireDate").toggleClass('hidden', !this.checked); + }); + + $('#publicShareDisclaimer').change(function() { + $("#publicShareDisclaimerText").toggleClass('hidden', !this.checked); + if(!this.checked) { + savePublicShareDisclaimerText(''); + } + }); + + $('#shareApiDefaultPermissionsSection input').change(function(ev) { + var $el = $('#shareApiDefaultPermissions'); + var $target = $(ev.target); + + var value = $el.val(); + if ($target.is(':checked')) { + value = value | $target.val(); + } else { + value = value & ~$target.val(); + } + + // always set read permission + value |= OC.PERMISSION_READ; + + // this will trigger the field's change event and will save it + $el.val(value).change(); + + ev.preventDefault(); + + return false; + }); + + var savePublicShareDisclaimerText = _.debounce(function(value) { + var options = { + success: function() { + OC.msg.finishedSuccess('#publicShareDisclaimerStatus', t('core', 'Saved')); + }, + error: function() { + OC.msg.finishedError('#publicShareDisclaimerStatus', t('core', 'Not saved')); + } + }; + + OC.msg.startSaving('#publicShareDisclaimerStatus'); + if (_.isString(value) && value !== '') { + OCP.AppConfig.setValue('core', 'shareapi_public_link_disclaimertext', value, options); + } else { + $('#publicShareDisclaimerText').val(''); + OCP.AppConfig.deleteKey('core', 'shareapi_public_link_disclaimertext', options); + } + }, 500); + + $('#publicShareDisclaimerText').on('change, keyup', function() { + savePublicShareDisclaimerText(this.value); + }); + + $('#allowLinks').change(function() { + $("#publicLinkSettings").toggleClass('hidden', !this.checked); + $('#setDefaultExpireDate').toggleClass('hidden', !(this.checked && $('#shareapiDefaultExpireDate')[0].checked)); + }); + + $('#mail_smtpauth').change(function() { + if (!this.checked) { + $('#mail_credentials').addClass('hidden'); + } else { + $('#mail_credentials').removeClass('hidden'); + } + }); + + $('#mail_smtpmode').change(function() { + if ($(this).val() !== 'smtp') { + $('#setting_smtpauth').addClass('hidden'); + $('#setting_smtphost').addClass('hidden'); + $('#mail_smtpsecure_label').addClass('hidden'); + $('#mail_smtpsecure').addClass('hidden'); + $('#mail_credentials').addClass('hidden'); + $('#mail_sendmailmode_label, #mail_sendmailmode').removeClass('hidden'); + } else { + $('#setting_smtpauth').removeClass('hidden'); + $('#setting_smtphost').removeClass('hidden'); + $('#mail_smtpsecure_label').removeClass('hidden'); + $('#mail_smtpsecure').removeClass('hidden'); + if ($('#mail_smtpauth').is(':checked')) { + $('#mail_credentials').removeClass('hidden'); + } + $('#mail_sendmailmode_label, #mail_sendmailmode').addClass('hidden'); + } + }); + + var changeEmailSettings = function() { + if (OC.PasswordConfirmation.requiresPasswordConfirmation()) { + OC.PasswordConfirmation.requirePasswordConfirmation(changeEmailSettings); + return; + } + + OC.msg.startSaving('#mail_settings_msg'); + $.ajax({ + url: OC.generateUrl('/settings/admin/mailsettings'), + type: 'POST', + data: $('#mail_general_settings_form').serialize(), + success: function(){ + OC.msg.finishedSuccess('#mail_settings_msg', t('settings', 'Saved')); + }, + error: function(xhr){ + OC.msg.finishedError('#mail_settings_msg', xhr.responseJSON); + } + }); + }; + + var toggleEmailCredentials = function() { + if (OC.PasswordConfirmation.requiresPasswordConfirmation()) { + OC.PasswordConfirmation.requirePasswordConfirmation(toggleEmailCredentials); + return; + } + + OC.msg.startSaving('#mail_settings_msg'); + $.ajax({ + url: OC.generateUrl('/settings/admin/mailsettings/credentials'), + type: 'POST', + data: $('#mail_credentials_settings').serialize(), + success: function(){ + OC.msg.finishedSuccess('#mail_settings_msg', t('settings', 'Saved')); + }, + error: function(xhr){ + OC.msg.finishedError('#mail_settings_msg', xhr.responseJSON); + } + }); + }; + + $('#mail_general_settings_form').change(changeEmailSettings); + $('#mail_credentials_settings_submit').click(toggleEmailCredentials); + $('#mail_smtppassword').click(function() { + if (this.type === 'text' && this.value === '********') { + this.type = 'password'; + this.value = ''; + } + }); + + $('#sendtestemail').click(function(event){ + event.preventDefault(); + OC.msg.startAction('#sendtestmail_msg', t('settings', 'Sending…')); + + $.ajax({ + url: OC.generateUrl('/settings/admin/mailtest'), + type: 'POST', + success: function(){ + OC.msg.finishedSuccess('#sendtestmail_msg', t('settings', 'Email sent')); + }, + error: function(xhr){ + OC.msg.finishedError('#sendtestmail_msg', xhr.responseJSON); + } + }); + }); + + $('#allowGroupSharing').change(function() { + $('#allowGroupSharing').toggleClass('hidden', !this.checked); + }); + + $('#shareapiExcludeGroups').change(function() { + $("#selectExcludedGroups").toggleClass('hidden', !this.checked); + }); + + var setupChecks = function () { + // run setup checks then gather error messages + $.when( + OC.SetupChecks.checkWebDAV(), + OC.SetupChecks.checkWellKnownUrl('/.well-known/webfinger', OC.theme.docPlaceholderUrl, $('#postsetupchecks').data('check-wellknown') === true && !!OC.appConfig.core.public_webfinger, [200, 404]), + OC.SetupChecks.checkWellKnownUrl('/.well-known/nodeinfo', OC.theme.docPlaceholderUrl, $('#postsetupchecks').data('check-wellknown') === true && !!OC.appConfig.core.public_nodeinfo, [200, 404]), + OC.SetupChecks.checkWellKnownUrl('/.well-known/caldav', OC.theme.docPlaceholderUrl, $('#postsetupchecks').data('check-wellknown') === true), + OC.SetupChecks.checkWellKnownUrl('/.well-known/carddav', OC.theme.docPlaceholderUrl, $('#postsetupchecks').data('check-wellknown') === true), + OC.SetupChecks.checkProviderUrl(OC.getRootPath() + '/ocm-provider/', OC.theme.docPlaceholderUrl, $('#postsetupchecks').data('check-wellknown') === true), + OC.SetupChecks.checkProviderUrl(OC.getRootPath() + '/ocs-provider/', OC.theme.docPlaceholderUrl, $('#postsetupchecks').data('check-wellknown') === true), + OC.SetupChecks.checkSetup(), + OC.SetupChecks.checkGeneric(), + OC.SetupChecks.checkWOFF2Loading(OC.filePath('core', '', 'fonts/NotoSans-Regular-latin.woff2'), OC.theme.docPlaceholderUrl), + OC.SetupChecks.checkDataProtected() + ).then(function (check1, check2, check3, check4, check5, check6, check7, check8, check9, check10, check11) { + var messages = [].concat(check1, check2, check3, check4, check5, check6, check7, check8, check9, check10, check11); + var $el = $('#postsetupchecks'); + $('#security-warning-state-loading').addClass('hidden'); + + var hasMessages = false; + var $errorsEl = $el.find('.errors'); + var $warningsEl = $el.find('.warnings'); + var $infoEl = $el.find('.info'); + + for (var i = 0; i < messages.length; i++) { + switch (messages[i].type) { + case OC.SetupChecks.MESSAGE_TYPE_INFO: + $infoEl.append('
  • ' + messages[i].msg + '
  • '); + break; + case OC.SetupChecks.MESSAGE_TYPE_WARNING: + $warningsEl.append('
  • ' + messages[i].msg + '
  • '); + break; + case OC.SetupChecks.MESSAGE_TYPE_ERROR: + default: + $errorsEl.append('
  • ' + messages[i].msg + '
  • '); + } + } + + if ($errorsEl.find('li').length > 0) { + $errorsEl.removeClass('hidden'); + hasMessages = true; + } + if ($warningsEl.find('li').length > 0) { + $warningsEl.removeClass('hidden'); + hasMessages = true; + } + if ($infoEl.find('li').length > 0) { + $infoEl.removeClass('hidden'); + hasMessages = true; + } + + if (hasMessages) { + $('#postsetupchecks-hint').removeClass('hidden'); + if ($errorsEl.find('li').length > 0) { + $('#security-warning-state-failure').removeClass('hidden'); + } else { + $('#security-warning-state-warning').removeClass('hidden'); + } + } else { + var securityWarning = $('#security-warning'); + if (securityWarning.children('ul').children().length === 0) { + $('#security-warning-state-ok').removeClass('hidden'); + } else { + $('#security-warning-state-failure').removeClass('hidden'); + } + } + }); + }; + + if (document.getElementById('security-warning') !== null) { + setupChecks(); + } +}); diff --git a/apps/settings/js/apps.js b/apps/settings/js/apps.js new file mode 100644 index 00000000000..70857a8f201 --- /dev/null +++ b/apps/settings/js/apps.js @@ -0,0 +1,113 @@ +/* global Handlebars */ +OC.Settings = OC.Settings || {}; +OC.Settings.Apps = OC.Settings.Apps || { + rebuildNavigation: function() { + $.getJSON(OC.linkToOCS('core/navigation', 2) + 'apps?format=json').done(function(response){ + if(response.ocs.meta.status === 'ok') { + var addedApps = {}; + var navEntries = response.ocs.data; + var container = $('#navigation #apps ul'); + + // remove disabled apps + for (var i = 0; i < navEntries.length; i++) { + var entry = navEntries[i]; + if(container.children('li[data-id="' + entry.id + '"]').length === 0) { + addedApps[entry.id] = true; + } + } + container.children('li[data-id]').each(function (index, el) { + var id = $(el).data('id'); + // remove all apps that are not in the correct order + if (!navEntries[index] || (navEntries[index] && navEntries[index].id !== $(el).data('id'))) { + $(el).remove(); + $('#appmenu li[data-id='+id+']').remove(); + } + }); + + var previousEntry = {}; + // add enabled apps to #navigation and #appmenu + for (var i = 0; i < navEntries.length; i++) { + var entry = navEntries[i]; + if (container.children('li[data-id="' + entry.id + '"]').length === 0) { + var li = $('
  • '); + li.attr('data-id', entry.id); + var img = ''; + if (OCA.Theming && OCA.Theming.inverted) { + img += ''; + img += ''; + } else { + img += ''; + } + img += ''; + var a = $('').attr('href', entry.href); + var filename = $(''); + var loading = $('
    ').css('display', 'none'); + filename.text(entry.name); filename.text(entry.name); + a.prepend(loading); + a.prepend(img); + li.append(a); + li.append(filename); + + // add app icon to the navigation + var previousElement = $('#navigation li[data-id=' + previousEntry.id + ']'); + if (previousElement.length > 0) { + previousElement.after(li); + } else { + $('#navigation #apps').prepend(li); + } + + // draw attention to the newly added app entry + // by flashing twice the more apps menu + if(addedApps[entry.id]) { + $('#header #more-apps') + .animate({opacity: 0.5}) + .animate({opacity: 1}) + .animate({opacity: 0.5}) + .animate({opacity: 1}); + } + } + + if ($('#appmenu').children('li[data-id="' + entry.id + '"]').length === 0) { + var li = $('
  • '); + li.attr('data-id', entry.id); + // Generating svg embedded image (see layout.user.php) + var img = ''; + if (OCA.Theming && OCA.Theming.inverted) { + img += ''; + img += ''; + } else { + img += ''; + } + img += ''; + var a = $('').attr('href', entry.href); + var filename = $(''); + var loading = $('
    ').css('display', 'none'); + filename.text(entry.name); + a.prepend(loading); + a.prepend(img); + li.append(a); + li.append(filename); + + // add app icon to the navigation + var previousElement = $('#appmenu li[data-id=' + previousEntry.id + ']'); + if (previousElement.length > 0) { + previousElement.after(li); + } else { + $('#appmenu').prepend(li); + } + + if(addedApps[entry.id]) { + li.animate({opacity: 0.5}) + .animate({opacity: 1}) + .animate({opacity: 0.5}) + .animate({opacity: 1}); + } + } + previousEntry = entry; + } + + $(window).trigger('resize'); + } + }); + } +}; diff --git a/apps/settings/js/certificates.js b/apps/settings/js/certificates.js new file mode 100644 index 00000000000..f73ceea23f3 --- /dev/null +++ b/apps/settings/js/certificates.js @@ -0,0 +1,70 @@ +$(document).ready(function () { + var type = $('#sslCertificate').data('type'); + $('#sslCertificate').on('click', 'td.remove', function () { + var row = $(this).parent(); + $.ajax(OC.generateUrl('settings/' + type + '/certificate/{certificate}', {certificate: row.data('name')}), { + type: 'DELETE' + }); + row.remove(); + + if ($('#sslCertificate > tbody > tr').length === 0) { + $('#sslCertificate').hide(); + } + return true; + }); + + $('#sslCertificate tr > td').tooltip({placement: 'bottom', container: 'body'}); + + $('#rootcert_import').fileupload({ + pasteZone: null, + submit: function (e, data) { + data.formData = _.extend(data.formData || {}, { + requesttoken: OC.requestToken + }); + }, + success: function (data) { + if (typeof data === 'string') { + data = JSON.parse(data); + } else if (data && data.length) { + // fetch response from iframe + data = JSON.parse(data[0].body.innerText); + } + if (!data || typeof(data) === 'string') { + // IE8 iframe workaround comes here instead of fail() + OC.Notification.showTemporary( + t('settings', 'An error occurred. Please upload an ASCII-encoded PEM certificate.')); + return; + } + var issueDate = new Date(data.validFrom * 1000); + var expireDate = new Date(data.validTill * 1000); + var now = new Date(); + var isExpired = !(issueDate <= now && now <= expireDate); + + var row = $(''); + row.data('name', data.name); + row.addClass(isExpired ? 'expired' : 'valid'); + row.append($('').attr('title', data.organization).text(data.commonName)); + row.append($('').attr('title', t('core,', 'Valid until {date}', {date: data.validTillString})) + .text(data.validTillString)); + row.append($('').attr('title', data.issuerOrganization).text(data.issuer)); + row.append($('').addClass('remove').append( + $('').attr({ + alt: t('core', 'Delete'), + title: t('core', 'Delete'), + src: OC.imagePath('core', 'actions/delete.svg') + }).addClass('action') + )); + + $('#sslCertificate tbody').append(row); + $('#sslCertificate').show(); + }, + fail: function () { + OC.Notification.showTemporary( + t('settings', 'An error occurred. Please upload an ASCII-encoded PEM certificate.')); + } + }); + + if ($('#sslCertificate > tbody > tr').length === 0) { + $('#sslCertificate').hide(); + } +}); diff --git a/apps/settings/js/federationscopemenu.js b/apps/settings/js/federationscopemenu.js new file mode 100644 index 00000000000..29303258c98 --- /dev/null +++ b/apps/settings/js/federationscopemenu.js @@ -0,0 +1,130 @@ +/* + * Copyright (c) 2016 + * + * This file is licensed under the Affero General Public License version 3 + * or later. + * + * See the COPYING-README file. + * + */ + +/* global OC, Handlebars */ +(function() { + + /** + * Construct a new FederationScopeMenu instance + * @constructs FederationScopeMenu + * @memberof OC.Settings + */ + var FederationScopeMenu = OC.Backbone.View.extend({ + tagName: 'div', + className: 'federationScopeMenu popovermenu bubble menu menu-center', + field: undefined, + _scopes: undefined, + + initialize: function(options) { + this.field = options.field; + this._scopes = [ + { + name: 'private', + displayName: (this.field === 'avatar' || this.field === 'displayname') ? t('settings', 'Local') : t('settings', 'Private'), + tooltip: (this.field === 'avatar' || this.field === 'displayname') ? t('settings', 'Only visible to local users') : t('settings', 'Only visible to you'), + iconClass: 'icon-password', + active: false + }, + { + name: 'contacts', + displayName: t('settings', 'Contacts'), + tooltip: t('settings', 'Visible to local users and to trusted servers'), + iconClass: 'icon-contacts-dark', + active: false + }, + { + name: 'public', + displayName: t('settings', 'Public'), + tooltip: t('settings', 'Will be synced to a global and public address book'), + iconClass: 'icon-link', + active: false + } + ]; + }, + + /** + * Current context + * + * @type OCA.Files.FileActionContext + */ + _context: null, + + events: { + 'click a.action': '_onSelectScope', + 'keydown a.action': '_onSelectScopeKeyboard' + }, + + /** + * Event handler whenever an action has been clicked within the menu + * + * @param {Object} event event object + */ + _onSelectScope: function(event) { + var $target = $(event.currentTarget); + if (!$target.hasClass('menuitem')) { + $target = $target.closest('.menuitem'); + } + + this.trigger('select:scope', $target.data('action')); + + OC.hideMenus(); + }, + + _onSelectScopeKeyboard: function(event) { + if (event.keyCode === 13 || event.keyCode === 32) { + // Enter and space can be used to select a scope + event.preventDefault(); + this._onSelectScope(event); + } + }, + + /** + * Renders the menu with the currently set items + */ + render: function() { + this.$el.html(OC.Settings.Templates['federationscopemenu']({ + items: this._scopes + })); + }, + + /** + * Displays the menu + */ + show: function(context) { + this._context = context; + var currentlyActiveValue = $('#'+context.target.closest('form').id).find('input[type="hidden"]')[0].value; + + for(var i in this._scopes) { + this._scopes[i].active = false; + } + + switch (currentlyActiveValue) { + case "private": + this._scopes[0].active = true; + break; + case "contacts": + this._scopes[1].active = true; + break; + case "public": + this._scopes[2].active = true; + break; + } + + this.render(); + this.$el.removeClass('hidden'); + + OC.showMenu(null, this.$el); + } + }); + + OC.Settings = OC.Settings || {}; + OC.Settings.FederationScopeMenu = FederationScopeMenu; + +})(); diff --git a/apps/settings/js/federationsettingsview.js b/apps/settings/js/federationsettingsview.js new file mode 100644 index 00000000000..9cefaf132f2 --- /dev/null +++ b/apps/settings/js/federationsettingsview.js @@ -0,0 +1,228 @@ +/* global OC, result, _ */ + +/** + * Copyright (c) 2016, Christoph Wurst + * + * This file is licensed under the Affero General Public License version 3 or later. + * See the COPYING-README file. + */ + +(function(_, $, OC) { + 'use strict'; + + var FederationSettingsView = OC.Backbone.View.extend({ + _inputFields: undefined, + + /** @var Backbone.Model */ + _config: undefined, + + initialize: function(options) { + options = options || {}; + + if (options.config) { + this._config = options.config; + } else { + this._config = new OC.Settings.UserSettings(); + } + + this._inputFields = [ + 'displayname', + 'phone', + 'email', + 'website', + 'twitter', + 'address', + 'avatar' + ]; + + var self = this; + _.each(this._inputFields, function(field) { + var scopeOnly = field === 'avatar'; + + // Initialize config model + if (!scopeOnly) { + self._config.set(field, $('#' + field).val()); + } + self._config.set(field + 'Scope', $('#' + field + 'scope').val()); + + // Set inputs whenever model values change + if (!scopeOnly) { + self.listenTo(self._config, 'change:' + field, function() { + self.$('#' + field).val(self._config.get(field)); + }); + } + self.listenTo(self._config, 'change:' + field + 'Scope', function() { + self._setFieldScopeIcon(field, self._config.get(field + 'Scope')); + }); + }); + + this._registerEvents(); + }, + + render: function() { + var self = this; + _.each(this._inputFields, function(field) { + var $icon = self.$('#' + field + 'form h3 > .federation-menu'); + var scopeMenu = new OC.Settings.FederationScopeMenu({field: field}); + + self.listenTo(scopeMenu, 'select:scope', function(scope) { + self._onScopeChanged(field, scope); + }); + $icon.append(scopeMenu.$el); + $icon.on('click', _.bind(scopeMenu.show, scopeMenu)); + $icon.on('keydown', function(e) { + if (e.keyCode === 32) { + // Open the menu when the user presses the space bar + e.preventDefault(); + scopeMenu.show(e); + } else if (e.keyCode === 27) { + // Close the menu again if opened + OC.hideMenus(); + } + }.bind(this)); + + // Restore initial state + self._setFieldScopeIcon(field, self._config.get(field + 'Scope')); + }); + }, + + _registerEvents: function() { + var self = this; + _.each(this._inputFields, function(field) { + if (field === 'avatar') { + return; + } + self.$('#' + field).keyUpDelayedOrEnter(_.bind(self._onInputChanged, self), true); + }); + }, + + _onInputChanged: function(e) { + var self = this; + + var $dialog = $('.oc-dialog:visible'); + if (OC.PasswordConfirmation.requiresPasswordConfirmation()) { + if($dialog.length === 0) { + OC.PasswordConfirmation.requirePasswordConfirmation(_.bind(this._onInputChanged, this, e)); + } + return; + } + var $target = $(e.target); + var value = $target.val(); + var field = $target.attr('id'); + this._config.set(field, value); + + var savingData = this._config.save({ + error: function(jqXHR) { + OC.msg.finishedSaving('#personal-settings-container .msg', jqXHR); + } + }); + + $.when(savingData).done(function(data) { + if (data.status === "success") { + self._showInputChangeSuccess(field); + } else { + self._showInputChangeFail(field); + } + }); + }, + + _onScopeChanged: function(field, scope) { + var $dialog = $('.oc-dialog:visible'); + if (OC.PasswordConfirmation.requiresPasswordConfirmation()) { + if($dialog.length === 0) { + OC.PasswordConfirmation.requirePasswordConfirmation(_.bind(this._onScopeChanged, this, field, scope)); + } + return; + } + + this._config.set(field + 'Scope', scope); + + $('#' + field + 'scope').val(scope); + + // TODO: user loading/success feedback + this._config.save(); + this._setFieldScopeIcon(field, scope); + this._updateVerifyButton(field, scope); + }, + + _updateVerifyButton: function(field, scope) { + // show verification button if the value is set and the scope is 'public' + if (field === 'twitter' || field === 'website'|| field === 'email') { + var verify = this.$('#' + field + 'form > .verify'); + var scope = this.$('#' + field + 'scope').val(); + var value = this.$('#' + field).val(); + + if (scope === 'public' && value !== '') { + verify.removeClass('hidden'); + return true; + } else { + verify.addClass('hidden'); + } + } + + return false; + }, + + _showInputChangeSuccess: function(field) { + var $icon = this.$('#' + field + 'form > .icon-checkmark'); + $icon.fadeIn(200); + setTimeout(function() { + $icon.fadeOut(300); + }, 2000); + + var scope = this.$('#' + field + 'scope').val(); + var verifyAvailable = this._updateVerifyButton(field, scope); + + // change verification buttons from 'verify' to 'verifying...' on value change + if (verifyAvailable) { + if (field === 'twitter' || field === 'website') { + var verifyStatus = this.$('#' + field + 'form > .verify > #verify-' + field); + verifyStatus.attr('data-origin-title', t('core', 'Verify')); + verifyStatus.attr('src', OC.imagePath('core', 'actions/verify.svg')); + verifyStatus.data('status', '0'); + verifyStatus.addClass('verify-action'); + } else if (field === 'email') { + var verifyStatus = this.$('#' + field + 'form > .verify > #verify-' + field); + verifyStatus.attr('data-origin-title', t('core', 'Verifying …')); + verifyStatus.data('status', '1'); + verifyStatus.attr('src', OC.imagePath('core', 'actions/verifying.svg')); + } + } + }, + + _showInputChangeFail: function(field) { + var $icon = this.$('#' + field + 'form > .icon-error'); + $icon.fadeIn(200); + setTimeout(function() { + $icon.fadeOut(300); + }, 2000); + }, + + _setFieldScopeIcon: function(field, scope) { + var $icon = this.$('#' + field + 'form > h3 .icon-federation-menu'); + + $icon.removeClass('icon-password'); + $icon.removeClass('icon-contacts-dark'); + $icon.removeClass('icon-link'); + $icon.addClass('hidden'); + + switch (scope) { + case 'private': + $icon.addClass('icon-password'); + $icon.removeClass('hidden'); + break; + case 'contacts': + $icon.addClass('icon-contacts-dark'); + $icon.removeClass('hidden'); + break; + case 'public': + $icon.addClass('icon-link'); + $icon.removeClass('hidden'); + break; + } + } + }); + + OC.Settings = OC.Settings || {}; + OC.Settings.FederationSettingsView = FederationSettingsView; +})(_, $, OC); diff --git a/apps/settings/js/log.js b/apps/settings/js/log.js new file mode 100644 index 00000000000..a1ad29d72e7 --- /dev/null +++ b/apps/settings/js/log.js @@ -0,0 +1,85 @@ +/** + * Copyright (c) 2012, Robin Appelman + * Copyright (c) 2013, Morris Jobke + * This file is licensed under the Affero General Public License version 3 or later. + * See the COPYING-README file. + */ + +/* global formatDate */ + +OC.Log = { + reload: function (count) { + if (!count) { + count = OC.Log.loaded; + } + OC.Log.loaded = 0; + $('#log tbody').empty(); + OC.Log.getMore(count); + }, + levels: ['Debug', 'Info', 'Warning', 'Error', 'Fatal'], + loaded: 3,//are initially loaded + getMore: function (count) { + count = count || 10; + $.get(OC.generateUrl('/settings/admin/log/entries'), {offset: OC.Log.loaded, count: count}, function (result) { + OC.Log.addEntries(result.data); + if (!result.remain) { + $('#moreLog').hide(); + } + $('#lessLog').show(); + }); + }, + showLess: function (count) { + count = count || 10; + //calculate remaining items - at least 3 + OC.Log.loaded = Math.max(3, OC.Log.loaded - count); + $('#moreLog').show(); + // remove all non-remaining items + $('#log tr').slice(OC.Log.loaded).remove(); + if (OC.Log.loaded <= 3) { + $('#lessLog').hide(); + } + }, + addEntries: function (entries) { + for (var i = 0; i < entries.length; i++) { + var entry = entries[i]; + var row = $(''); + var levelTd = $(''); + levelTd.text(OC.Log.levels[entry.level]); + row.append(levelTd); + + var appTd = $(''); + appTd.text(entry.app); + row.append(appTd); + + var messageTd = $(''); + messageTd.addClass('log-message'); + messageTd.text(entry.message); + row.append(messageTd); + + var timeTd = $(''); + timeTd.addClass('date'); + if (isNaN(entry.time)) { + timeTd.text(entry.time); + } else { + timeTd.text(formatDate(entry.time * 1000)); + } + row.append(timeTd); + + var userTd = $(''); + userTd.text(entry.user); + row.append(userTd); + + $('#log').append(row); + } + OC.Log.loaded += entries.length; + } +}; + +$(document).ready(function () { + $('#moreLog').click(function () { + OC.Log.getMore(); + }); + $('#lessLog').click(function () { + OC.Log.showLess(); + }); +}); diff --git a/apps/settings/js/security_password.js b/apps/settings/js/security_password.js new file mode 100644 index 00000000000..c23e60cfea6 --- /dev/null +++ b/apps/settings/js/security_password.js @@ -0,0 +1,86 @@ +/* global OC */ + +/** + * Copyright (c) 2011, Robin Appelman + * 2013, Morris Jobke + * 2016, Christoph Wurst + * 2017, Arthur Schiwon + * 2017, Thomas Citharel + * This file is licensed under the Affero General Public License version 3 or later. + * See the COPYING-README file. + */ + +$(document).ready(function () { + if($('#pass2').length) { + $('#pass2').showPassword().keyup(); + } + + var removeloader = function () { + setTimeout(function(){ + if ($('.password-state').length > 0) { + $('.password-state').remove(); + } + }, 5000) + }; + + $("#passwordbutton").click(function () { + if ($('#pass1').val() !== '' && $('#pass2').val() !== '') { + // Serialize the data + var post = $("#passwordform").serialize(); + $('#passwordchanged').hide(); + $('#passworderror').hide(); + $("#passwordbutton").attr('disabled', 'disabled'); + $("#passwordbutton").after(""); + $(".personal-show-label").hide(); + // Ajax foo + $.post(OC.generateUrl('/settings/personal/changepassword'), post, function (data) { + if (data.status === "success") { + $("#passwordbutton").after(""); + removeloader(); + $('#pass1').val(''); + $('#pass2').val('').change(); + } + if (typeof(data.data) !== "undefined") { + OC.msg.finishedSaving('#password-error-msg', data); + } else { + OC.msg.finishedSaving('#password-error-msg', + { + 'status' : 'error', + 'data' : { + 'message' : t('settings', 'Unable to change password') + } + } + ); + } + $(".personal-show-label").show(); + $(".password-loading").remove(); + $("#passwordbutton").removeAttr('disabled'); + }); + return false; + } else { + OC.msg.finishedSaving('#password-error-msg', + { + 'status' : 'error', + 'data' : { + 'message' : t('settings', 'Unable to change password') + } + } + ); + return false; + } + }); + + $('#pass2').strengthify({ + zxcvbn: OC.linkTo('core','vendor/zxcvbn/dist/zxcvbn.js'), + titles: [ + t('settings', 'Very weak password'), + t('settings', 'Weak password'), + t('settings', 'So-so password'), + t('settings', 'Good password'), + t('settings', 'Strong password') + ], + drawTitles: true, + $addAfter: $('input[name="newpassword-clone"]'), + nonce: btoa(OC.requestToken), + }); +}); diff --git a/apps/settings/js/settings.js b/apps/settings/js/settings.js new file mode 100644 index 00000000000..2c4f9c4c94f --- /dev/null +++ b/apps/settings/js/settings.js @@ -0,0 +1,96 @@ +/** + * Copyright (c) 2014, Vincent Petry + * This file is licensed under the Affero General Public License version 3 or later. + * See the COPYING-README file. + */ +OC.Settings = OC.Settings || {}; +OC.Settings = _.extend(OC.Settings, { + + _cachedGroups: null, + + /** + * Setup selection box for group selection. + * + * Values need to be separated by a pipe "|" character. + * (mostly because a comma is more likely to be used + * for groups) + * + * @param $elements jQuery element (hidden input) to setup select2 on + * @param {Array} [extraOptions] extra options hash to pass to select2 + * @param {Array} [options] extra options + * @param {Array} [options.excludeAdmins=false] flag whether to exclude admin groups + */ + setupGroupsSelect: function($elements, extraOptions, options) { + var self = this; + options = options || {}; + if ($elements.length > 0) { + // Let's load the data and THEN init our select + $.ajax({ + url: OC.linkToOCS('cloud/groups', 2) + 'details', + dataType: 'json', + success: function(data) { + var results = []; + + if (data.ocs.data.groups && data.ocs.data.groups.length > 0) { + + data.ocs.data.groups.forEach(function(group) { + if (!options.excludeAdmins || group.id !== 'admin') { + results.push({ id: group.id, displayname: group.displayname }); + } + }) + + // note: settings are saved through a "change" event registered + // on all input fields + $elements.select2(_.extend({ + placeholder: t('core', 'Groups'), + allowClear: true, + multiple: true, + toggleSelect: true, + separator: '|', + data: { results: results, text: 'displayname' }, + initSelection: function(element, callback) { + var groups = $(element).val(); + var selection; + if (groups && results.length > 0) { + selection = _.map((groups || []).split('|').sort(), function(groupId) { + return { + id: groupId, + displayname: results.find(function (group) { + return group.id === groupId; + }).displayname + }; + }); + } else if (groups) { + selection = _.map((groups || []).split('|').sort(), function(groupId) { + return { + id: groupId, + displayname: groupId + }; + }); + } + callback(selection); + }, + formatResult: function(element) { + return escapeHTML(element.displayname); + }, + formatSelection: function(element) { + return escapeHTML(element.displayname); + }, + escapeMarkup: function(m) { + // prevent double markup escape + return m; + } + }, extraOptions || {})); + } else { + OC.Notification.show(t('settings', 'Group list is empty'), { type: 'error' }); + console.log(data); + } + }, + error: function(data) { + OC.Notification.show(t('settings', 'Unable to retrieve the group list'), { type: 'error' }); + console.log(data); + } + }); + } + } +}); \ No newline at end of file diff --git a/apps/settings/js/settings/personalInfo.js b/apps/settings/js/settings/personalInfo.js new file mode 100644 index 00000000000..454374b303d --- /dev/null +++ b/apps/settings/js/settings/personalInfo.js @@ -0,0 +1,379 @@ +/* global OC */ + +/** + * Copyright (c) 2011, Robin Appelman + * 2013, Morris Jobke + * 2016, Christoph Wurst + * 2017, Arthur Schiwon + * 2017, Thomas Citharel + * This file is licensed under the Affero General Public License version 3 or later. + * See the COPYING-README file. + */ + +OC.Settings = OC.Settings || {}; + +/** + * The callback will be fired as soon as enter is pressed by the + * user or 1 second after the last data entry + * + * @param callback + * @param allowEmptyValue if this is set to true the callback is also called when the value is empty + */ +jQuery.fn.keyUpDelayedOrEnter = function (callback, allowEmptyValue) { + var cb = callback; + var that = this; + + this.on('input', _.debounce(function (event) { + // enter is already handled in keypress + if (event.keyCode === 13) { + return; + } + if (allowEmptyValue || that.val() !== '') { + cb(event); + } + }, 1000)); + + this.keypress(function (event) { + if (event.keyCode === 13 && (allowEmptyValue || that.val() !== '')) { + event.preventDefault(); + cb(event); + } + }); +}; + +function updateAvatar (hidedefault) { + var $headerdiv = $('#header .avatardiv'), + $displaydiv = $('#displayavatar .avatardiv'), + user = OC.getCurrentUser(); + + //Bump avatar avatarversion + oc_userconfig.avatar.version = -(Math.floor(Math.random() * 1000)); + + if (hidedefault) { + $headerdiv.hide(); + $('#header .avatardiv').removeClass('avatardiv-shown'); + } else { + $headerdiv.css({'background-color': ''}); + $headerdiv.avatar(user.uid, 32, true, false, undefined, user.displayName); + $('#header .avatardiv').addClass('avatardiv-shown'); + } + $displaydiv.css({'background-color': ''}); + $displaydiv.avatar(user.uid, 145, true, null, function() { + $displaydiv.removeClass('loading'); + $('#displayavatar img').show(); + if($('#displayavatar img').length === 0 || oc_userconfig.avatar.generated) { + $('#removeavatar').removeClass('inlineblock').addClass('hidden'); + } else { + $('#removeavatar').removeClass('hidden').addClass('inlineblock'); + } + }, user.displayName); + $('#uploadavatar').prop('disabled', false); +} + +function showAvatarCropper () { + var $cropper = $('#cropper'); + var $cropperImage = $(''); + $cropperImage.css('opacity', 0); // prevent showing the unresized image + $cropper.children('.inner-container').prepend($cropperImage); + + $cropperImage.attr('src', + OC.generateUrl('/avatar/tmp') + '?requesttoken=' + encodeURIComponent(OC.requestToken) + '#' + Math.floor(Math.random() * 1000)); + + $cropperImage.load(function () { + var img = $cropperImage.get()[0]; + var selectSize = Math.min(img.width, img.height); + var offsetX = (img.width - selectSize) / 2; + var offsetY = (img.height - selectSize) / 2; + $cropperImage.Jcrop({ + onChange: saveCoords, + onSelect: saveCoords, + aspectRatio: 1, + boxHeight: Math.min(500, $('#app-content').height() -100), + boxWidth: Math.min(500, $('#app-content').width()), + setSelect: [offsetX, offsetY, selectSize, selectSize] + }, function() { + $cropper.show(); + }); + }); +} + +function sendCropData () { + cleanCropper(); + + var cropperData = $('#cropper').data(); + var data = { + x: cropperData.x, + y: cropperData.y, + w: cropperData.w, + h: cropperData.h + }; + $.post(OC.generateUrl('/avatar/cropped'), {crop: data}, avatarResponseHandler); +} + +function saveCoords (c) { + $('#cropper').data(c); +} + +function cleanCropper () { + var $cropper = $('#cropper'); + $('#displayavatar').show(); + $cropper.hide(); + $('.jcrop-holder').remove(); + $('#cropper img').removeData('Jcrop').removeAttr('style').removeAttr('src'); + $('#cropper img').remove(); +} + +function avatarResponseHandler (data) { + if (typeof data === 'string') { + data = JSON.parse(data); + } + var $warning = $('#avatarform .warning'); + $warning.hide(); + if (data.status === "success") { + $('#displayavatar .avatardiv').removeClass('icon-loading'); + oc_userconfig.avatar.generated = false; + updateAvatar(); + } else if (data.data === "notsquare") { + showAvatarCropper(); + } else { + $warning.show(); + $warning.text(data.data.message); + } +} + +$(document).ready(function () { + if($('#pass2').length) { + $('#pass2').showPassword().keyup(); + } + + var showVerifyDialog = function(dialog, howToVerify, verificationCode) { + var dialogContent = dialog.children('.verification-dialog-content'); + dialogContent.children(".explainVerification").text(howToVerify); + dialogContent.children(".verificationCode").text(verificationCode); + dialog.css('display', 'block'); + }; + + $(".verify").click(function (event) { + + event.stopPropagation(); + + var verify = $(this); + var indicator = $(this).children('img'); + var accountId = indicator.attr('id'); + var status = indicator.data('status'); + + var onlyVerificationCode = false; + if (parseInt(status) === 1) { + onlyVerificationCode = true; + } + + if (indicator.hasClass('verify-action')) { + $.ajax( + OC.generateUrl('/settings/users/{account}/verify', {account: accountId}), + { + method: 'GET', + data: {onlyVerificationCode: onlyVerificationCode} + } + ).done(function (data) { + var dialog = verify.children('.verification-dialog'); + showVerifyDialog($(dialog), data.msg, data.code); + indicator.attr('data-origin-title', t('settings', 'Verifying …')); + indicator.attr('src', OC.imagePath('core', 'actions/verifying.svg')); + indicator.data('status', '1'); + }); + } + + }); + + // When the user clicks anywhere outside of the verification dialog we close it + $(document).click(function(event){ + var element = event.target; + var isDialog = $(element).hasClass('verificationCode') + || $(element).hasClass('explainVerification') + || $(element).hasClass('verification-dialog-content') + || $(element).hasClass('verification-dialog'); + if (!isDialog) { + $(document).find('.verification-dialog').css('display', 'none'); + } + }); + + + var userSettings = new OC.Settings.UserSettings(); + var federationSettingsView = new OC.Settings.FederationSettingsView({ + el: '#personal-settings', + config: userSettings + }); + + userSettings.on("sync", function() { + updateAvatar(false); + }); + federationSettingsView.render(); + + var updateLanguage = function () { + if (OC.PasswordConfirmation.requiresPasswordConfirmation()) { + OC.PasswordConfirmation.requirePasswordConfirmation(updateLanguage); + return; + } + + var selectedLang = $("#languageinput").val(), + user = OC.getCurrentUser(); + + $.ajax({ + url: OC.linkToOCS('cloud/users', 2) + user['uid'], + method: 'PUT', + data: { + key: 'language', + value: selectedLang + }, + success: function() { + location.reload(); + }, + fail: function() { + OC.Notification.showTemporary(t('settings', 'An error occurred while changing your language. Please reload the page and try again.')); + } + }); + }; + $("#languageinput").change(updateLanguage); + + var updateLocale = function () { + if (OC.PasswordConfirmation.requiresPasswordConfirmation()) { + OC.PasswordConfirmation.requirePasswordConfirmation(updateLocale); + return; + } + + var selectedLocale = $("#localeinput").val(), + user = OC.getCurrentUser(); + + $.ajax({ + url: OC.linkToOCS('cloud/users', 2) + user['uid'], + method: 'PUT', + data: { + key: 'locale', + value: selectedLocale + }, + success: function() { + moment.locale(selectedLocale); + }, + fail: function() { + OC.Notification.showTemporary(t('settings', 'An error occurred while changing your locale. Please reload the page and try again.')); + } + }); + }; + $("#localeinput").change(updateLocale); + + var uploadparms = { + pasteZone: null, + done: function (e, data) { + var response = data; + if (typeof data.result === 'string') { + response = JSON.parse(data.result); + } else if (data.result && data.result.length) { + // fetch response from iframe + response = JSON.parse(data.result[0].body.innerText); + } else { + response = data.result; + } + avatarResponseHandler(response); + }, + submit: function(e, data) { + $('#displayavatar img').hide(); + $('#displayavatar .avatardiv').addClass('icon-loading'); + $('#uploadavatar').prop('disabled', true) + data.formData = _.extend(data.formData || {}, { + requesttoken: OC.requestToken + }); + }, + fail: function (e, data) { + $('#displayavatar .avatardiv').removeClass('icon-loading'); + $('#uploadavatar').prop('disabled', false) + var msg = data.jqXHR.statusText + ' (' + data.jqXHR.status + ')'; + if (!_.isUndefined(data.jqXHR.responseJSON) && + !_.isUndefined(data.jqXHR.responseJSON.data) && + !_.isUndefined(data.jqXHR.responseJSON.data.message) + ) { + msg = data.jqXHR.responseJSON.data.message; + } + avatarResponseHandler({ + data: { + message: msg + } + }); + } + }; + + $('#uploadavatar').fileupload(uploadparms); + + $('#selectavatar').click(function () { + OC.dialogs.filepicker( + t('settings', "Select a profile picture"), + function (path) { + $('#displayavatar img').hide(); + $('#displayavatar .avatardiv').addClass('icon-loading'); + $('#uploadavatar').prop('disabled', true); + $.ajax({ + type: "POST", + url: OC.generateUrl('/avatar/'), + data: { path: path } + }).done(avatarResponseHandler) + .fail(function(jqXHR) { + var msg = jqXHR.statusText + ' (' + jqXHR.status + ')'; + if (!_.isUndefined(jqXHR.responseJSON) && + !_.isUndefined(jqXHR.responseJSON.data) && + !_.isUndefined(jqXHR.responseJSON.data.message) + ) { + msg = jqXHR.responseJSON.data.message; + } + avatarResponseHandler({ + data: { + message: msg + } + }); + }); + }, + false, + ["image/png", "image/jpeg"] + ); + }); + + $('#removeavatar').click(function () { + $.ajax({ + type: 'DELETE', + url: OC.generateUrl('/avatar/'), + success: function () { + oc_userconfig.avatar.generated = true; + updateAvatar(true); + } + }); + }); + + $('#abortcropperbutton').click(function () { + $('#displayavatar .avatardiv').removeClass('icon-loading'); + $('#displayavatar img').show(); + $('#uploadavatar').prop('disabled', false); + cleanCropper(); + }); + + $('#sendcropperbutton').click(function () { + sendCropData(); + }); + + // Load the big avatar + var user = OC.getCurrentUser(); + $('#avatarform .avatardiv').avatar(user.uid, 145, true, null, function() { + if($('#displayavatar img').length === 0 || oc_userconfig.avatar.generated) { + $('#removeavatar').removeClass('inlineblock').addClass('hidden'); + } else { + $('#removeavatar').removeClass('hidden').addClass('inlineblock'); + } + }, user.displayName); +}); + +window.setInterval(function() { + $('#localeexample-time').text(moment().format('LTS')); + $('#localeexample-date').text(moment().format('L')); + $('#localeexample-fdow').text(t('settings', 'Week starts on {fdow}', + {fdow: moment().weekday(0).format('dddd')})); + +}, 1000); + +OC.Settings.updateAvatar = updateAvatar; diff --git a/apps/settings/js/templates.js b/apps/settings/js/templates.js new file mode 100644 index 00000000000..94e44eebf55 --- /dev/null +++ b/apps/settings/js/templates.js @@ -0,0 +1,36 @@ +(function() { + var template = Handlebars.template, templates = OC.Settings.Templates = OC.Settings.Templates || {}; +templates['federationscopemenu'] = template({"1":function(container,depth0,helpers,partials,data) { + var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression; + + return "
  • \n \n" + + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.iconClass : depth0),{"name":"if","hash":{},"fn":container.program(4, data, 0),"inverse":container.program(6, data, 0),"data":data})) != null ? stack1 : "") + + "

    \n " + + alias4(((helper = (helper = helpers.displayName || (depth0 != null ? depth0.displayName : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"displayName","hash":{},"data":data}) : helper))) + + "
    \n " + + alias4(((helper = (helper = helpers.tooltip || (depth0 != null ? depth0.tooltip : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"tooltip","hash":{},"data":data}) : helper))) + + "\n

    \n
    \n
  • \n"; +},"2":function(container,depth0,helpers,partials,data) { + return "active"; +},"4":function(container,depth0,helpers,partials,data) { + var helper; + + return " \n"; +},"6":function(container,depth0,helpers,partials,data) { + return " \n"; +},"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) { + var stack1; + + return "
      \n" + + ((stack1 = helpers.each.call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.items : depth0),{"name":"each","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + + "
    \n"; +},"useData":true}); +})(); \ No newline at end of file diff --git a/apps/settings/js/templates/federationscopemenu.handlebars b/apps/settings/js/templates/federationscopemenu.handlebars new file mode 100644 index 00000000000..4bd945b094d --- /dev/null +++ b/apps/settings/js/templates/federationscopemenu.handlebars @@ -0,0 +1,17 @@ + diff --git a/apps/settings/js/usersettings.js b/apps/settings/js/usersettings.js new file mode 100644 index 00000000000..fcfe556b1d9 --- /dev/null +++ b/apps/settings/js/usersettings.js @@ -0,0 +1,50 @@ +/* global OC */ + +/** + * Copyright (c) 2016, Christoph Wurst + * + * This file is licensed under the Affero General Public License version 3 or later. + * See the COPYING-README file. + */ + +(function() { + 'use strict'; + + /** + * Model for storing and saving user settings + * + * @class UserSettings + */ + var UserSettings = OC.Backbone.Model.extend({ + url: OC.generateUrl('/settings/users/{id}/settings', {id: OC.currentUser}), + isNew: function() { + return false; // Force PUT on .save() + }, + parse: function(data) { + if (_.isUndefined(data)) { + return null; + } + if (_.isUndefined(data.data)) { + return null; + } + data = data.data; + + var ignored = [ + 'userId', + 'message' + ]; + + _.each(ignored, function(ign) { + if (!_.isUndefined(data[ign])) { + delete data[ign]; + } + }); + + return data; + } + }); + + OC.Settings = OC.Settings || {}; + + OC.Settings.UserSettings = UserSettings; +})(); \ No newline at end of file diff --git a/apps/settings/js/vue-0.js b/apps/settings/js/vue-0.js new file mode 100644 index 00000000000..d0e70867fd0 --- /dev/null +++ b/apps/settings/js/vue-0.js @@ -0,0 +1,838 @@ +(window.webpackJsonpSettings=window.webpackJsonpSettings||[]).push([[0],{16:function(e,n,i){!function(t,n){e.exports=n(i(2))}(window,(function(e){return function(t){var e={};function n(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return t[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(i,o,function(e){return t[e]}.bind(null,o));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="/dist/",n(n.s=182)}([function(t,e,n){"use strict";function i(t,e,n,i,o,a,r,s){var c,l="function"==typeof t?t.options:t;if(e&&(l.render=e,l.staticRenderFns=n,l._compiled=!0),i&&(l.functional=!0),a&&(l._scopeId="data-v-"+a),r?(c=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),o&&o.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(r)},l._ssrRegister=c):o&&(c=s?function(){o.call(this,this.$root.$options.shadowRoot)}:o),c)if(l.functional){l._injectStyles=c;var u=l.render;l.render=function(t,e){return c.call(e),u(t,e)}}else{var d=l.beforeCreate;l.beforeCreate=d?[].concat(d,c):[c]}return{exports:t,options:l}}n.d(e,"a",(function(){return i}))},function(t,e,n){"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var n=function(t,e){var n,i,o,a=t[1]||"",r=t[3];if(!r)return a;if(e&&"function"==typeof btoa){var s=(n=r,i=btoa(unescape(encodeURIComponent(JSON.stringify(n)))),o="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(i),"/*# ".concat(o," */")),c=r.sources.map((function(t){return"/*# sourceURL=".concat(r.sourceRoot).concat(t," */")}));return[a].concat(c).concat([s]).join("\n")}return[a].join("\n")}(e,t);return e[2]?"@media ".concat(e[2],"{").concat(n,"}"):n})).join("")},e.i=function(t,n){"string"==typeof t&&(t=[[null,t,""]]);for(var i={},o=0;on.parts.length&&(i.parts.length=n.parts.length)}else{var r=[];for(o=0;o
    ',trigger:"hover focus",offset:0},v=[],m=function(){function t(e,n){var i=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),s(this,"_events",[]),s(this,"_setTooltipNodeEvent",(function(t,e,n,o){var a=t.relatedreference||t.toElement||t.relatedTarget;return!!i._tooltipNode.contains(a)&&(i._tooltipNode.addEventListener(t.type,(function n(a){var r=a.relatedreference||a.toElement||a.relatedTarget;i._tooltipNode.removeEventListener(t.type,n),e.contains(r)||i._scheduleHide(e,o.delay,o,a)})),!0)})),n=c({},A,n),e.jquery&&(e=e[0]),this.show=this.show.bind(this),this.hide=this.hide.bind(this),this.reference=e,this.options=n,this._isOpen=!1,this._init()}var e,n;return e=t,(n=[{key:"show",value:function(){this._show(this.reference,this.options)}},{key:"hide",value:function(){this._hide()}},{key:"dispose",value:function(){this._dispose()}},{key:"toggle",value:function(){return this._isOpen?this.hide():this.show()}},{key:"setClasses",value:function(t){this._classes=t}},{key:"setContent",value:function(t){this.options.title=t,this._tooltipNode&&this._setContent(t,this.options)}},{key:"setOptions",value:function(t){var e=!1,n=t&&t.classes||C.options.defaultClass;this._classes!==n&&(this.setClasses(n),e=!0),t=x(t);var i=!1,o=!1;for(var a in this.options.offset===t.offset&&this.options.placement===t.placement||(i=!0),(this.options.template!==t.template||this.options.trigger!==t.trigger||this.options.container!==t.container||e)&&(o=!0),t)this.options[a]=t[a];if(this._tooltipNode)if(o){var r=this._isOpen;this.dispose(),this._init(),r&&this.show()}else i&&this.popperInstance.update()}},{key:"_init",value:function(){var t="string"==typeof this.options.trigger?this.options.trigger.split(" "):[];this._isDisposed=!1,this._enableDocumentTouch=-1===t.indexOf("manual"),t=t.filter((function(t){return-1!==["click","hover","focus"].indexOf(t)})),this._setEventListeners(this.reference,t,this.options),this.$_originalTitle=this.reference.getAttribute("title"),this.reference.removeAttribute("title"),this.reference.setAttribute("data-original-title",this.$_originalTitle)}},{key:"_create",value:function(t,e){var n=window.document.createElement("div");n.innerHTML=e.trim();var i=n.childNodes[0];return i.id="tooltip_".concat(Math.random().toString(36).substr(2,10)),i.setAttribute("aria-hidden","true"),this.options.autoHide&&-1!==this.options.trigger.indexOf("hover")&&(i.addEventListener("mouseenter",this.hide),i.addEventListener("click",this.hide)),i}},{key:"_setContent",value:function(t,e){var n=this;this.asyncContent=!1,this._applyContent(t,e).then((function(){n.popperInstance.update()}))}},{key:"_applyContent",value:function(t,e){var n=this;return new Promise((function(i,o){var a=e.html,r=n._tooltipNode;if(r){var s=r.querySelector(n.options.innerSelector);if(1===t.nodeType){if(a){for(;s.firstChild;)s.removeChild(s.firstChild);s.appendChild(t)}}else{if("function"==typeof t){var c=t();return void(c&&"function"==typeof c.then?(n.asyncContent=!0,e.loadingClass&&d(r,e.loadingClass),e.loadingContent&&n._applyContent(e.loadingContent,e),c.then((function(t){return e.loadingClass&&p(r,e.loadingClass),n._applyContent(t,e)})).then(i).catch(o)):n._applyContent(c,e).then(i).catch(o))}a?s.innerHTML=t:s.innerText=t}i()}}))}},{key:"_show",value:function(t,e){if(!e||"string"!=typeof e.container||document.querySelector(e.container)){clearTimeout(this._disposeTimer),delete(e=Object.assign({},e)).offset;var n=!0;this._tooltipNode&&(d(this._tooltipNode,this._classes),n=!1);var i=this._ensureShown(t,e);return n&&this._tooltipNode&&d(this._tooltipNode,this._classes),d(t,["v-tooltip-open"]),i}}},{key:"_ensureShown",value:function(t,e){var n=this;if(this._isOpen)return this;if(this._isOpen=!0,v.push(this),this._tooltipNode)return this._tooltipNode.style.display="",this._tooltipNode.setAttribute("aria-hidden","false"),this.popperInstance.enableEventListeners(),this.popperInstance.update(),this.asyncContent&&this._setContent(e.title,e),this;var o=t.getAttribute("title")||e.title;if(!o)return this;var a=this._create(t,e.template);this._tooltipNode=a,t.setAttribute("aria-describedby",a.id);var r=this._findContainer(e.container,t);this._append(a,r);var s=c({},e.popperOptions,{placement:e.placement});return s.modifiers=c({},s.modifiers,{arrow:{element:this.options.arrowSelector}}),e.boundariesElement&&(s.modifiers.preventOverflow={boundariesElement:e.boundariesElement}),this.popperInstance=new i.a(t,a,s),this._setContent(o,e),requestAnimationFrame((function(){!n._isDisposed&&n.popperInstance?(n.popperInstance.update(),requestAnimationFrame((function(){n._isDisposed?n.dispose():n._isOpen&&a.setAttribute("aria-hidden","false")}))):n.dispose()})),this}},{key:"_noLongerOpen",value:function(){var t=v.indexOf(this);-1!==t&&v.splice(t,1)}},{key:"_hide",value:function(){var t=this;if(!this._isOpen)return this;this._isOpen=!1,this._noLongerOpen(),this._tooltipNode.style.display="none",this._tooltipNode.setAttribute("aria-hidden","true"),this.popperInstance.disableEventListeners(),clearTimeout(this._disposeTimer);var e=C.options.disposeTimeout;return null!==e&&(this._disposeTimer=setTimeout((function(){t._tooltipNode&&(t._tooltipNode.removeEventListener("mouseenter",t.hide),t._tooltipNode.removeEventListener("click",t.hide),t._removeTooltipNode())}),e)),p(this.reference,["v-tooltip-open"]),this}},{key:"_removeTooltipNode",value:function(){if(this._tooltipNode){var t=this._tooltipNode.parentNode;t&&(t.removeChild(this._tooltipNode),this.reference.removeAttribute("aria-describedby")),this._tooltipNode=null}}},{key:"_dispose",value:function(){var t=this;return this._isDisposed=!0,this.reference.removeAttribute("data-original-title"),this.$_originalTitle&&this.reference.setAttribute("title",this.$_originalTitle),this._events.forEach((function(e){var n=e.func,i=e.event;t.reference.removeEventListener(i,n)})),this._events=[],this._tooltipNode?(this._hide(),this._tooltipNode.removeEventListener("mouseenter",this.hide),this._tooltipNode.removeEventListener("click",this.hide),this.popperInstance.destroy(),this.popperInstance.options.removeOnDestroy||this._removeTooltipNode()):this._noLongerOpen(),this}},{key:"_findContainer",value:function(t,e){return"string"==typeof t?t=window.document.querySelector(t):!1===t&&(t=e.parentNode),t}},{key:"_append",value:function(t,e){e.appendChild(t)}},{key:"_setEventListeners",value:function(t,e,n){var i=this,o=[],a=[];e.forEach((function(t){switch(t){case"hover":o.push("mouseenter"),a.push("mouseleave"),i.options.hideOnTargetClick&&a.push("click");break;case"focus":o.push("focus"),a.push("blur"),i.options.hideOnTargetClick&&a.push("click");break;case"click":o.push("click"),a.push("click")}})),o.forEach((function(e){var o=function(e){!0!==i._isOpen&&(e.usedByTooltip=!0,i._scheduleShow(t,n.delay,n,e))};i._events.push({event:e,func:o}),t.addEventListener(e,o)})),a.forEach((function(e){var o=function(e){!0!==e.usedByTooltip&&i._scheduleHide(t,n.delay,n,e)};i._events.push({event:e,func:o}),t.addEventListener(e,o)}))}},{key:"_onDocumentTouch",value:function(t){this._enableDocumentTouch&&this._scheduleHide(this.reference,this.options.delay,this.options,t)}},{key:"_scheduleShow",value:function(t,e,n){var i=this,o=e&&e.show||e||0;clearTimeout(this._scheduleTimer),this._scheduleTimer=window.setTimeout((function(){return i._show(t,n)}),o)}},{key:"_scheduleHide",value:function(t,e,n,i){var o=this,a=e&&e.hide||e||0;clearTimeout(this._scheduleTimer),this._scheduleTimer=window.setTimeout((function(){if(!1!==o._isOpen&&document.body.contains(o._tooltipNode)){if("mouseleave"===i.type&&o._setTooltipNodeEvent(i,t,e,n))return;o._hide(t,n)}}),a)}}])&&r(e.prototype,n),t}();"undefined"!=typeof document&&document.addEventListener("touchstart",(function(t){for(var e=0;e
    ',defaultArrowSelector:".tooltip-arrow, .tooltip__arrow",defaultInnerSelector:".tooltip-inner, .tooltip__inner",defaultDelay:0,defaultTrigger:"hover focus",defaultOffset:0,defaultContainer:"body",defaultBoundariesElement:void 0,defaultPopperOptions:{},defaultLoadingClass:"tooltip-loading",defaultLoadingContent:"...",autoHide:!0,defaultHideOnTargetClick:!0,disposeTimeout:5e3,popover:{defaultPlacement:"bottom",defaultClass:"vue-popover-theme",defaultBaseClass:"tooltip popover",defaultWrapperClass:"wrapper",defaultInnerClass:"tooltip-inner popover-inner",defaultArrowClass:"tooltip-arrow popover-arrow",defaultOpenClass:"open",defaultDelay:0,defaultTrigger:"click",defaultOffset:0,defaultContainer:"body",defaultBoundariesElement:void 0,defaultPopperOptions:{},defaultAutoHide:!0,defaultHandleResize:!0}};function x(t){var e={placement:void 0!==t.placement?t.placement:C.options.defaultPlacement,delay:void 0!==t.delay?t.delay:C.options.defaultDelay,html:void 0!==t.html?t.html:C.options.defaultHtml,template:void 0!==t.template?t.template:C.options.defaultTemplate,arrowSelector:void 0!==t.arrowSelector?t.arrowSelector:C.options.defaultArrowSelector,innerSelector:void 0!==t.innerSelector?t.innerSelector:C.options.defaultInnerSelector,trigger:void 0!==t.trigger?t.trigger:C.options.defaultTrigger,offset:void 0!==t.offset?t.offset:C.options.defaultOffset,container:void 0!==t.container?t.container:C.options.defaultContainer,boundariesElement:void 0!==t.boundariesElement?t.boundariesElement:C.options.defaultBoundariesElement,autoHide:void 0!==t.autoHide?t.autoHide:C.options.autoHide,hideOnTargetClick:void 0!==t.hideOnTargetClick?t.hideOnTargetClick:C.options.defaultHideOnTargetClick,loadingClass:void 0!==t.loadingClass?t.loadingClass:C.options.defaultLoadingClass,loadingContent:void 0!==t.loadingContent?t.loadingContent:C.options.defaultLoadingContent,popperOptions:c({},void 0!==t.popperOptions?t.popperOptions:C.options.defaultPopperOptions)};if(e.offset){var n=a(e.offset),i=e.offset;("number"===n||"string"===n&&-1===i.indexOf(","))&&(i="0, ".concat(i)),e.popperOptions.modifiers||(e.popperOptions.modifiers={}),e.popperOptions.modifiers.offset={offset:i}}return e.trigger&&-1!==e.trigger.indexOf("click")&&(e.hideOnTargetClick=!1),e}function w(t,e){for(var n=t.placement,i=0;i2&&void 0!==arguments[2]?arguments[2]:{},i=_(e),o=void 0!==e.classes?e.classes:C.options.defaultClass,a=c({title:i},x(c({},e,{placement:w(e,n)}))),r=t._tooltip=new m(t,a);r.setClasses(o),r._vueEl=t;var s=void 0!==e.targetClasses?e.targetClasses:C.options.defaultTargetClass;return t._tooltipTargetClasses=s,d(t,s),r}(t,i,o),void 0!==i.show&&i.show!==t._tooltipOldShow&&(t._tooltipOldShow=i.show,i.show?n.show():n.hide())):T(t)}var C={options:y,bind:k,update:k,unbind:function(t){T(t)}};function E(t){t.addEventListener("click",S),t.addEventListener("touchstart",D,!!f&&{passive:!0})}function M(t){t.removeEventListener("click",S),t.removeEventListener("touchstart",D),t.removeEventListener("touchend",O),t.removeEventListener("touchcancel",B)}function S(t){var e=t.currentTarget;t.closePopover=!e.$_vclosepopover_touch,t.closeAllPopover=e.$_closePopoverModifiers&&!!e.$_closePopoverModifiers.all}function D(t){if(1===t.changedTouches.length){var e=t.currentTarget;e.$_vclosepopover_touch=!0;var n=t.changedTouches[0];e.$_vclosepopover_touchPoint=n,e.addEventListener("touchend",O),e.addEventListener("touchcancel",B)}}function O(t){var e=t.currentTarget;if(e.$_vclosepopover_touch=!1,1===t.changedTouches.length){var n=t.changedTouches[0],i=e.$_vclosepopover_touchPoint;t.closePopover=Math.abs(n.screenY-i.screenY)<20&&Math.abs(n.screenX-i.screenX)<20,t.closeAllPopover=e.$_closePopoverModifiers&&!!e.$_closePopoverModifiers.all}}function B(t){t.currentTarget.$_vclosepopover_touch=!1}var I={bind:function(t,e){var n=e.value,i=e.modifiers;t.$_closePopoverModifiers=i,(void 0===n||n)&&E(t)},update:function(t,e){var n=e.value,i=e.oldValue,o=e.modifiers;t.$_closePopoverModifiers=o,n!==i&&(void 0===n||n?E(t):M(t))},unbind:function(t){M(t)}};function N(t){var e=C.options.popover[t];return void 0===e?C.options[t]:e}var L=!1;"undefined"!=typeof window&&"undefined"!=typeof navigator&&(L=/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream);var P=[],j=function(){};"undefined"!=typeof window&&(j=window.Element);var $={name:"VPopover",components:{ResizeObserver:o.a},props:{open:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},placement:{type:String,default:function(){return N("defaultPlacement")}},delay:{type:[String,Number,Object],default:function(){return N("defaultDelay")}},offset:{type:[String,Number],default:function(){return N("defaultOffset")}},trigger:{type:String,default:function(){return N("defaultTrigger")}},container:{type:[String,Object,j,Boolean],default:function(){return N("defaultContainer")}},boundariesElement:{type:[String,j],default:function(){return N("defaultBoundariesElement")}},popperOptions:{type:Object,default:function(){return N("defaultPopperOptions")}},popoverClass:{type:[String,Array],default:function(){return N("defaultClass")}},popoverBaseClass:{type:[String,Array],default:function(){return C.options.popover.defaultBaseClass}},popoverInnerClass:{type:[String,Array],default:function(){return C.options.popover.defaultInnerClass}},popoverWrapperClass:{type:[String,Array],default:function(){return C.options.popover.defaultWrapperClass}},popoverArrowClass:{type:[String,Array],default:function(){return C.options.popover.defaultArrowClass}},autoHide:{type:Boolean,default:function(){return C.options.popover.defaultAutoHide}},handleResize:{type:Boolean,default:function(){return C.options.popover.defaultHandleResize}},openGroup:{type:String,default:null},openClass:{type:[String,Array],default:function(){return C.options.popover.defaultOpenClass}}},data:function(){return{isOpen:!1,id:Math.random().toString(36).substr(2,10)}},computed:{cssClass:function(){return s({},this.openClass,this.isOpen)},popoverId:function(){return"popover_".concat(this.id)}},watch:{open:function(t){t?this.show():this.hide()},disabled:function(t,e){t!==e&&(t?this.hide():this.open&&this.show())},container:function(t){if(this.isOpen&&this.popperInstance){var e=this.$refs.popover,n=this.$refs.trigger,i=this.$_findContainer(this.container,n);if(!i)return void console.warn("No container for popover",this);i.appendChild(e),this.popperInstance.scheduleUpdate()}},trigger:function(t){this.$_removeEventListeners(),this.$_addEventListeners()},placement:function(t){var e=this;this.$_updatePopper((function(){e.popperInstance.options.placement=t}))},offset:"$_restartPopper",boundariesElement:"$_restartPopper",popperOptions:{handler:"$_restartPopper",deep:!0}},created:function(){this.$_isDisposed=!1,this.$_mounted=!1,this.$_events=[],this.$_preventOpen=!1},mounted:function(){var t=this.$refs.popover;t.parentNode&&t.parentNode.removeChild(t),this.$_init(),this.open&&this.show()},deactivated:function(){this.hide()},beforeDestroy:function(){this.dispose()},methods:{show:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.event,i=(e.skipDelay,e.force),o=void 0!==i&&i;!o&&this.disabled||(this.$_scheduleShow(n),this.$emit("show")),this.$emit("update:open",!0),this.$_beingShowed=!0,requestAnimationFrame((function(){t.$_beingShowed=!1}))},hide:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.event;t.skipDelay,this.$_scheduleHide(e),this.$emit("hide"),this.$emit("update:open",!1)},dispose:function(){if(this.$_isDisposed=!0,this.$_removeEventListeners(),this.hide({skipDelay:!0}),this.popperInstance&&(this.popperInstance.destroy(),!this.popperInstance.options.removeOnDestroy)){var t=this.$refs.popover;t.parentNode&&t.parentNode.removeChild(t)}this.$_mounted=!1,this.popperInstance=null,this.isOpen=!1,this.$emit("dispose")},$_init:function(){-1===this.trigger.indexOf("manual")&&this.$_addEventListeners()},$_show:function(){var t=this,e=this.$refs.trigger,n=this.$refs.popover;if(clearTimeout(this.$_disposeTimer),!this.isOpen){if(this.popperInstance&&(this.isOpen=!0,this.popperInstance.enableEventListeners(),this.popperInstance.scheduleUpdate()),!this.$_mounted){var o=this.$_findContainer(this.container,e);if(!o)return void console.warn("No container for popover",this);o.appendChild(n),this.$_mounted=!0}if(!this.popperInstance){var a=c({},this.popperOptions,{placement:this.placement});if(a.modifiers=c({},a.modifiers,{arrow:c({},a.modifiers&&a.modifiers.arrow,{element:this.$refs.arrow})}),this.offset){var r=this.$_getOffset();a.modifiers.offset=c({},a.modifiers&&a.modifiers.offset,{offset:r})}this.boundariesElement&&(a.modifiers.preventOverflow=c({},a.modifiers&&a.modifiers.preventOverflow,{boundariesElement:this.boundariesElement})),this.popperInstance=new i.a(e,n,a),requestAnimationFrame((function(){if(t.hidden)return t.hidden=!1,void t.$_hide();!t.$_isDisposed&&t.popperInstance?(t.popperInstance.scheduleUpdate(),requestAnimationFrame((function(){if(t.hidden)return t.hidden=!1,void t.$_hide();t.$_isDisposed?t.dispose():t.isOpen=!0}))):t.dispose()}))}var s=this.openGroup;if(s)for(var l,u=0;u1&&void 0!==arguments[1]&&arguments[1];if(clearTimeout(this.$_scheduleTimer),t)this.$_show();else{var e=parseInt(this.delay&&this.delay.show||this.delay||0);this.$_scheduleTimer=setTimeout(this.$_show.bind(this),e)}},$_scheduleHide:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(clearTimeout(this.$_scheduleTimer),n)this.$_hide();else{var i=parseInt(this.delay&&this.delay.hide||this.delay||0);this.$_scheduleTimer=setTimeout((function(){if(t.isOpen){if(e&&"mouseleave"===e.type&&t.$_setTooltipNodeEvent(e))return;t.$_hide()}}),i)}},$_setTooltipNodeEvent:function(t){var e=this,n=this.$refs.trigger,i=this.$refs.popover,o=t.relatedreference||t.toElement||t.relatedTarget;return!!i.contains(o)&&(i.addEventListener(t.type,(function o(a){var r=a.relatedreference||a.toElement||a.relatedTarget;i.removeEventListener(t.type,o),n.contains(r)||e.hide({event:a})})),!0)},$_removeEventListeners:function(){var t=this.$refs.trigger;this.$_events.forEach((function(e){var n=e.func,i=e.event;t.removeEventListener(i,n)})),this.$_events=[]},$_updatePopper:function(t){this.popperInstance&&(t(),this.isOpen&&this.popperInstance.scheduleUpdate())},$_restartPopper:function(){if(this.popperInstance){var t=this.isOpen;this.dispose(),this.$_isDisposed=!1,this.$_init(),t&&this.show({skipDelay:!0,force:!0})}},$_handleGlobalClose:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.$_beingShowed||(this.hide({event:t}),t.closePopover?this.$emit("close-directive"):this.$emit("auto-hide"),n&&(this.$_preventOpen=!0,setTimeout((function(){e.$_preventOpen=!1}),300)))},$_handleResize:function(){this.isOpen&&this.popperInstance&&(this.popperInstance.scheduleUpdate(),this.$emit("resize"))}}};function F(t){for(var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=function(n){var i=P[n];if(i.$refs.popover){var o=i.$refs.popover.contains(t.target);requestAnimationFrame((function(){(t.closeAllPopover||t.closePopover&&o||i.autoHide&&!o)&&i.$_handleGlobalClose(t,e)}))}},i=0;i-1},G.prototype.set=function(t,e){var n=this.__data__,i=Q(n,t);return i<0?(++this.size,n.push([t,e])):n[i][1]=e,this};var U=G,W="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==t?t:"undefined"!=typeof self?self:{};function Z(t,e){return t(e={exports:{}},e.exports),e.exports}var X,q="object"==typeof W&&W&&W.Object===Object&&W,K="object"==typeof self&&self&&self.Object===Object&&self,J=q||K||Function("return this")(),tt=J.Symbol,et=Object.prototype,nt=et.hasOwnProperty,it=et.toString,ot=tt?tt.toStringTag:void 0,at=Object.prototype.toString,rt=tt?tt.toStringTag:void 0,st=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":rt&&rt in Object(t)?function(t){var e=nt.call(t,ot),n=t[ot];try{t[ot]=void 0;var i=!0}catch(t){}var o=it.call(t);return i&&(e?t[ot]=n:delete t[ot]),o}(t):function(t){return at.call(t)}(t)},ct=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)},lt=function(t){if(!ct(t))return!1;var e=st(t);return"[object Function]"==e||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e},ut=J["__core-js_shared__"],dt=(X=/[^.]+$/.exec(ut&&ut.keys&&ut.keys.IE_PROTO||""))?"Symbol(src)_1."+X:"",pt=Function.prototype.toString,ft=/^\[object .+?Constructor\]$/,ht=Function.prototype,At=Object.prototype,vt=ht.toString,mt=At.hasOwnProperty,gt=RegExp("^"+vt.call(mt).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),bt=function(t){return!(!ct(t)||function(t){return!!dt&&dt in t}(t))&&(lt(t)?gt:ft).test(function(t){if(null!=t){try{return pt.call(t)}catch(t){}try{return t+""}catch(t){}}return""}(t))},yt=function(t,e){var n=function(t,e){return null==t?void 0:t[e]}(t,e);return bt(n)?n:void 0},xt=yt(J,"Map"),wt=yt(Object,"create"),_t=Object.prototype.hasOwnProperty,Tt=Object.prototype.hasOwnProperty;function kt(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e-1&&t%1==0&&t<=9007199254740991},Kt=function(t){return null!=t&&qt(t.length)&&!lt(t)},Jt=function(){return!1},te=Z((function(t,e){var n=e&&!e.nodeType&&e,i=n&&t&&!t.nodeType&&t,o=i&&i.exports===n?J.Buffer:void 0,a=(o?o.isBuffer:void 0)||Jt;t.exports=a})),ee=Function.prototype,ne=Object.prototype,ie=ee.toString,oe=ne.hasOwnProperty,ae=ie.call(Object),re={};re["[object Float32Array]"]=re["[object Float64Array]"]=re["[object Int8Array]"]=re["[object Int16Array]"]=re["[object Int32Array]"]=re["[object Uint8Array]"]=re["[object Uint8ClampedArray]"]=re["[object Uint16Array]"]=re["[object Uint32Array]"]=!0,re["[object Arguments]"]=re["[object Array]"]=re["[object ArrayBuffer]"]=re["[object Boolean]"]=re["[object DataView]"]=re["[object Date]"]=re["[object Error]"]=re["[object Function]"]=re["[object Map]"]=re["[object Number]"]=re["[object Object]"]=re["[object RegExp]"]=re["[object Set]"]=re["[object String]"]=re["[object WeakMap]"]=!1;var se=Z((function(t,e){var n=e&&!e.nodeType&&e,i=n&&t&&!t.nodeType&&t,o=i&&i.exports===n&&q.process,a=function(){try{return i&&i.require&&i.require("util").types||o&&o.binding&&o.binding("util")}catch(t){}}();t.exports=a})),ce=se&&se.isTypedArray,le=ce?function(t){return function(e){return t(e)}}(ce):function(t){return Qt(t)&&qt(t.length)&&!!re[st(t)]},ue=function(t,e){if("__proto__"!=e)return t[e]},de=Object.prototype.hasOwnProperty,pe=function(t,e,n){var i=t[e];de.call(t,e)&&H(i,n)&&(void 0!==n||e in t)||It(t,e,n)},fe=/^(?:0|[1-9]\d*)$/,he=function(t,e){var n=typeof t;return!!(e=null==e?9007199254740991:e)&&("number"==n||"symbol"!=n&&fe.test(t))&&t>-1&&t%1==0&&t0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(Ce),Se=function(t,e){return Me(function(t,e,n){return e=Te(void 0===e?t.length-1:e,0),function(){for(var i=arguments,o=-1,a=Te(i.length-e,0),r=Array(a);++o1?n[o-1]:void 0,r=o>2?n[2]:void 0;for(a=t.length>3&&"function"==typeof a?(o--,a):void 0,r&&function(t,e,n){if(!ct(n))return!1;var i=typeof e;return!!("number"==i?Kt(n)&&he(e,n.length):"string"==i&&e in n)&&H(n[e],t)}(n[0],n[1],r)&&(a=o<3?void 0:a,o=1),e=Object(e);++i1&&void 0!==arguments[1]?arguments[1]:{};if(!t.installed){t.installed=!0;var i={};De(i,y,n),Be.options=i,C.options=i,e.directive("tooltip",C),e.directive("close-popover",I),e.component("v-popover",z)}},get enabled(){return g.enabled},set enabled(t){g.enabled=t}},Ie=null;"undefined"!=typeof window?Ie=window.Vue:void 0!==t&&(Ie=t.Vue),Ie&&Ie.use(Be)}).call(this,n(15))},function(t,e,n){"use strict";n.r(e);var i=n(5);n(32), +/** + * @copyright Copyright (c) 2019 Julius Härtl + * + * @author Julius Härtl + * @author John Molakvoæ + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ +i.a.options.defaultTemplate=''),i.a.options.defaultHtml=!1,e.default=i.a},function(t,e,n){"use strict";var i=n(3),o=n.n(i); +/** + * @copyright Copyright (c) 2019 John Molakvoæ + * + * @author John Molakvoæ + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */e.a={before:function(){this.$slots.default&&""!==this.text.trim()||(o.a.util.warn("".concat(this.$options.name," cannot be empty and requires a meaningful text content"),this),this.$destroy(),this.$el.remove())},beforeUpdate:function(){this.text=this.getText()},data:function(){return{text:this.getText()}},computed:{isLongText:function(){return this.text&&this.text.trim().length>20}},methods:{getText:function(){return this.$slots.default?this.$slots.default[0].text.trim():""}}}},function(t,e,n){"use strict";t.exports=function(t,e){return"string"!=typeof(t=t.__esModule?t.default:t)?t:(/^['"].*['"]$/.test(t)&&(t=t.slice(1,-1)),/["'() \t\n]/.test(t)||e?'"'.concat(t.replace(/"/g,'\\"').replace(/\n/g,"\\n"),'"'):t)}},function(t,e){t.exports="data:application/vnd.ms-fontobject;base64,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"},function(t,e){t.exports="data:font/woff;base64,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"},function(t,e){t.exports="data:font/ttf;base64,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"},function(t,e){t.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCIgPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48bWV0YWRhdGE+PC9tZXRhZGF0YT48ZGVmcz48Zm9udCBpZD0iaWNvbmZvbnQtdnVlIiBob3Jpei1hZHYteD0iNTAwMCI+PGZvbnQtZmFjZSBmb250LWZhbWlseT0iaWNvbmZvbnQtdnVlIiBmb250LXdlaWdodD0iNDAwIiBmb250LXN0cmV0Y2g9Im5vcm1hbCIgdW5pdHMtcGVyLWVtPSI1MDAwIiBwYW5vc2UtMT0iMiAwIDUgMyAwIDAgMCAwIDAgMCIgYXNjZW50PSI1MDAwIiBkZXNjZW50PSIwIiB4LWhlaWdodD0iMCIgYmJveD0iLTEgMCA1MDExIDQ4NDQiIHVuZGVybGluZS10aGlja25lc3M9IjAiIHVuZGVybGluZS1wb3NpdGlvbj0iNTAiIHVuaWNvZGUtcmFuZ2U9IlUrZWEwMS1lYTBiIiAvPjxtaXNzaW5nLWdseXBoIGhvcml6LWFkdi14PSIwIiAgLz48Z2x5cGggZ2x5cGgtbmFtZT0iYXJyb3ctbGVmdC1kb3VibGUiIHVuaWNvZGU9IiYjeGVhMDE7IiBkPSJNMzc1MCAzOTA2IGwtMTQwNiAtMTQwNiBsMTQwNiAtMTQwNiBsMCAzMTIgbC0xMDk0IDEwOTQgbDEwOTQgMTA5NCBsMCAzMTIgWk0yMzQ0IDM5MDYgbC0xNDA2IC0xNDA2IGwxNDA2IC0xNDA2IGwwIDMxMiBsLTEwOTQgMTA5NCBsMTA5NCAxMDk0IGwwIDMxMiBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJhcnJvdy1sZWZ0IiB1bmljb2RlPSImI3hlYTAyOyIgZD0iTTE1NjMgMjUwMCBsMTg3NSAtMTg3NSBsMCAtMzEyIGwtMjE4OCAyMTg3IGwyMTg4IDIxODggbDAgLTMxMyBsLTE4NzUgLTE4NzUgWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0iYXJyb3ctcmlnaHQtZG91YmxlIiB1bmljb2RlPSImI3hlYTAzOyIgZD0iTTEyNTAgMTA5NCBsMTQwNiAxNDA2IGwtMTQwNiAxNDA2IGwwIC0zMTIgbDEwOTQgLTEwOTQgbC0xMDk0IC0xMDk0IGwwIC0zMTIgWk0yNjU2IDEwOTQgbDE0MDcgMTQwNiBsLTE0MDcgMTQwNiBsMCAtMzEyIGwxMDk0IC0xMDk0IGwtMTA5NCAtMTA5NCBsMCAtMzEyIFoiIC8+PGdseXBoIGdseXBoLW5hbWU9ImFycm93LXJpZ2h0IiB1bmljb2RlPSImI3hlYTA0OyIgZD0iTTM0MzggMjUwMCBsLTE4NzUgMTg3NSBsMCAzMTMgbDIxODcgLTIxODggbC0yMTg3IC0yMTg3IGwwIDMxMiBsMTg3NSAxODc1IFoiIC8+PGdseXBoIGdseXBoLW5hbWU9ImNsb3NlIiB1bmljb2RlPSImI3hlYTA1OyIgZD0iTTQzNzUgMTE1NiBsLTUzMSAtNTMxIGwtMTM0NCAxMzQ0IGwtMTM0NCAtMTM0NCBsLTUzMSA1MzEgbDEzNDQgMTM0NCBsLTEzNDQgMTM0NCBsNTMxIDUzMSBsMTM0NCAtMTM0NCBsMTM0NCAxMzQ0IGw1MzEgLTUzMSBsLTEzNDQgLTEzNDQgbDEzNDQgLTEzNDQgWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0iY29uZmlybS1mYWRlIiB1bmljb2RlPSImI3hlYTA2OyYjeGVhMDc7IiBkPSJNMjY1NiA0ODQ0IHEtMTAxIDAgLTE4MCAtNTcgcS03NCAtNTIgLTEwOSAtMTM4IHEtMzUgLTg2IC0xOSAtMTc1IHExOCAtOTYgOTAgLTE2NyBsMTQ5NSAtMTQ5NCBsLTM2MTYgMCBxLTc3IDEgLTEzOSAtMjYgcS01OCAtMjQgLTk5IC03MCBxLTM5IC00NCAtNTkgLTEwMSBxLTIwIC01NiAtMjAgLTExNiBxMCAtNjAgMjAgLTExNiBxMjAgLTU3IDU5IC0xMDEgcTQxIC00NiA5OSAtNzAgcTYyIC0yNyAxMzkgLTI1IGwzNjE2IDAgbC0xNDk1IC0xNDk1IHEtNTUgLTUzIC04MSAtMTE2IHEtMjQgLTU5IC0yMSAtMTIxIHEzIC01OCAzMCAtMTEzIHEyNSAtNTQgNjggLTk3IHE0MyAtNDMgOTYgLTY4IHE1NSAtMjYgMTE0IC0yOSBxNjIgLTMgMTIwIDIxIHE2MyAyNSAxMTYgODEgbDIwMjkgMjAyOCBxNTkgNjAgODAgMTQxIHEyMSA4MCAxIDE1OSBxLTIxIDgyIC04MSAxNDIgbC0yMDI5IDIwMjggcS00NCA0NSAtMTAyIDcwIHEtNTggMjUgLTEyMiAyNSBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJtZW51IiB1bmljb2RlPSImI3hlYTA4OyIgZD0iTTYyNSA0Mzc1IGwwIC02MjUgbDM3NTAgMCBsMCA2MjUgbC0zNzUwIDAgWk02MjUgMjgxMyBsMCAtNjI1IGwzNzUwIDAgbDAgNjI1IGwtMzc1MCAwIFpNNjI1IDEyNTAgbDAgLTYyNSBsMzc1MCAwIGwwIDYyNSBsLTM3NTAgMCBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJtb3JlIiB1bmljb2RlPSImI3hlYTA5OyIgZD0iTTkzOCAzMTI1IHEtMTI4IDAgLTI0NCAtNDkgcS0xMTIgLTQ4IC0xOTguNSAtMTM0LjUgcS04Ni41IC04Ni41IC0xMzMuNSAtMTk4LjUgcS01MCAtMTE2IC00OS41IC0yNDMgcTAuNSAtMTI3IDQ5LjUgLTI0MyBxNDcgLTExMiAxMzMuNSAtMTk4LjUgcTg2LjUgLTg2LjUgMTk4LjUgLTEzNC41IHExMTYgLTQ5IDI0My41IC00OSBxMTI3LjUgMCAyNDMuNSA0OSBxMTEyIDQ4IDE5OC41IDEzNC41IHE4Ni41IDg2LjUgMTMzLjUgMTk4LjUgcTUwIDExNiA1MCAyNDMgcTAgMTI3IC01MCAyNDMgcS00NyAxMTIgLTEzMy41IDE5OC41IHEtODYuNSA4Ni41IC0xOTguNSAxMzQuNSBxLTExNiA0OSAtMjQzIDQ5IFpNMjUwMCAzMTI1IHEtMTI3IDAgLTI0MyAtNDkgcS0xMTIgLTQ4IC0xOTguNSAtMTM0LjUgcS04Ni41IC04Ni41IC0xMzQuNSAtMTk4LjUgcS00OSAtMTE2IC00OSAtMjQzIHEwIC0xMjcgNDkgLTI0MyBxNDggLTExMiAxMzQuNSAtMTk4LjUgcTg2LjUgLTg2LjUgMTk4LjUgLTEzNC41IHExMTYgLTQ5IDI0MyAtNDkgcTEyNyAwIDI0MyA0OSBxMTEyIDQ4IDE5OC41IDEzNC41IHE4Ni41IDg2LjUgMTM0LjUgMTk4LjUgcTQ5IDExNiA0OSAyNDMgcTAgMTI3IC00OSAyNDMgcS00OCAxMTIgLTEzNC41IDE5OC41IHEtODYuNSA4Ni41IC0xOTguNSAxMzQuNSBxLTExNiA0OSAtMjQzIDQ5IFpNNDA2MyAzMTI1IHEtMTI4IDAgLTI0NCAtNDkgcS0xMTIgLTQ4IC0xOTguNSAtMTM0LjUgcS04Ni41IC04Ni41IC0xMzMuNSAtMTk4LjUgcS00OSAtMTE2IC00OSAtMjQzIHEwIC0xMjcgNDkgLTI0MyBxNDcgLTExMiAxMzMuNSAtMTk4LjUgcTg2LjUgLTg2LjUgMTk4LjUgLTEzNC41IHExMTYgLTQ5IDI0My41IC00OSBxMTI3LjUgMCAyNDMuNSA0OSBxMTEyIDQ4IDE5OC41IDEzNC41IHE4Ni41IDg2LjUgMTMzLjUgMTk4LjUgcTUwIDExNiA1MCAyNDMgcTAgMTI3IC01MCAyNDMgcS00NyAxMTIgLTEzMy41IDE5OC41IHEtODYuNSA4Ni41IC0xOTguNSAxMzQuNSBxLTExNiA0OSAtMjQzIDQ5IFoiIC8+PGdseXBoIGdseXBoLW5hbWU9InBhdXNlIiB1bmljb2RlPSImI3hlYTBhOyIgZD0iTTkzOCA0MDYzIGwwIC0zMTI1IGwxMjUwIDAgbDAgMzEyNSBsLTEyNTAgMCBaTTI4MTMgNDA2MyBsMCAtMzEyNSBsMTI1MCAwIGwwIDMxMjUgbC0xMjUwIDAgWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0icGxheSIgdW5pY29kZT0iJiN4ZWEwYjsiIGQ9Ik02MjUgNDM3NSBsMzc1MCAtMTg3NSBsLTM3NTAgLTE4NzUgbDAgMzc1MCBaIiAvPjwvZm9udD48L2RlZnM+PC9zdmc+"},function(t,e){function n(t){return"function"==typeof t.value||(console.warn("[Vue-click-outside:] provided expression",t.expression,"is not a function."),!1)}function i(t){return void 0!==t.componentInstance&&t.componentInstance.$isServer}t.exports={bind:function(t,e,o){function a(e){if(o.context){var n=e.path||e.composedPath&&e.composedPath();n&&n.length>0&&n.unshift(e.target),t.contains(e.target)||function(t,e){if(!t||!e)return!1;for(var n=0,i=e.length;n + * + * @author John Molakvoæ + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */e.a={mixins:[i.a],props:{icon:{type:String,default:"",required:!0},title:{type:String,default:""}},computed:{isIconUrl:function(){try{return new URL(this.icon)}catch(t){return!1}}},methods:{onClick:function(t){this.$emit("click",t)}}}},function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){"use strict";(function(t){for( +/**! + * @fileOverview Kickass library to create and place poppers near their reference elements. + * @version 1.15.0 + * @license + * Copyright (c) 2016 Federico Zivolo and contributors + * + * 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. + */ +var n="undefined"!=typeof window&&"undefined"!=typeof document,i=["Edge","Trident","Firefox"],o=0,a=0;a=0){o=1;break}var r=n&&window.Promise?function(t){var e=!1;return function(){e||(e=!0,window.Promise.resolve().then((function(){e=!1,t()})))}}:function(t){var e=!1;return function(){e||(e=!0,setTimeout((function(){e=!1,t()}),o))}};function s(t){return t&&"[object Function]"==={}.toString.call(t)}function c(t,e){if(1!==t.nodeType)return[];var n=t.ownerDocument.defaultView.getComputedStyle(t,null);return e?n[e]:n}function l(t){return"HTML"===t.nodeName?t:t.parentNode||t.host}function u(t){if(!t)return document.body;switch(t.nodeName){case"HTML":case"BODY":return t.ownerDocument.body;case"#document":return t.body}var e=c(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/(auto|scroll|overlay)/.test(n+o+i)?t:u(l(t))}var d=n&&!(!window.MSInputMethodContext||!document.documentMode),p=n&&/MSIE 10/.test(navigator.userAgent);function f(t){return 11===t?d:10===t?p:d||p}function h(t){if(!t)return document.documentElement;for(var e=f(10)?document.body:null,n=t.offsetParent||null;n===e&&t.nextElementSibling;)n=(t=t.nextElementSibling).offsetParent;var i=n&&n.nodeName;return i&&"BODY"!==i&&"HTML"!==i?-1!==["TH","TD","TABLE"].indexOf(n.nodeName)&&"static"===c(n,"position")?h(n):n:t?t.ownerDocument.documentElement:document.documentElement}function A(t){return null!==t.parentNode?A(t.parentNode):t}function v(t,e){if(!(t&&t.nodeType&&e&&e.nodeType))return document.documentElement;var n=t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING,i=n?t:e,o=n?e:t,a=document.createRange();a.setStart(i,0),a.setEnd(o,0);var r,s,c=a.commonAncestorContainer;if(t!==c&&e!==c||i.contains(o))return"BODY"===(s=(r=c).nodeName)||"HTML"!==s&&h(r.firstElementChild)!==r?h(c):c;var l=A(t);return l.host?v(l.host,e):v(t,A(e).host)}function m(t){var e="top"===(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"top")?"scrollTop":"scrollLeft",n=t.nodeName;if("BODY"===n||"HTML"===n){var i=t.ownerDocument.documentElement;return(t.ownerDocument.scrollingElement||i)[e]}return t[e]}function g(t,e){var n="x"===e?"Left":"Top",i="Left"===n?"Right":"Bottom";return parseFloat(t["border"+n+"Width"],10)+parseFloat(t["border"+i+"Width"],10)}function b(t,e,n,i){return Math.max(e["offset"+t],e["scroll"+t],n["client"+t],n["offset"+t],n["scroll"+t],f(10)?parseInt(n["offset"+t])+parseInt(i["margin"+("Height"===t?"Top":"Left")])+parseInt(i["margin"+("Height"===t?"Bottom":"Right")]):0)}function y(t){var e=t.body,n=t.documentElement,i=f(10)&&getComputedStyle(n);return{height:b("Height",e,n,i),width:b("Width",e,n,i)}}var x=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},w=function(){function t(t,e){for(var n=0;n2&&void 0!==arguments[2]&&arguments[2],i=f(10),o="HTML"===e.nodeName,a=C(t),r=C(e),s=u(t),l=c(e),d=parseFloat(l.borderTopWidth,10),p=parseFloat(l.borderLeftWidth,10);n&&o&&(r.top=Math.max(r.top,0),r.left=Math.max(r.left,0));var h=k({top:a.top-r.top-d,left:a.left-r.left-p,width:a.width,height:a.height});if(h.marginTop=0,h.marginLeft=0,!i&&o){var A=parseFloat(l.marginTop,10),v=parseFloat(l.marginLeft,10);h.top-=d-A,h.bottom-=d-A,h.left-=p-v,h.right-=p-v,h.marginTop=A,h.marginLeft=v}return(i&&!n?e.contains(s):e===s&&"BODY"!==s.nodeName)&&(h=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=m(e,"top"),o=m(e,"left"),a=n?-1:1;return t.top+=i*a,t.bottom+=i*a,t.left+=o*a,t.right+=o*a,t}(h,e)),h}function M(t){if(!t||!t.parentElement||f())return document.documentElement;for(var e=t.parentElement;e&&"none"===c(e,"transform");)e=e.parentElement;return e||document.documentElement}function S(t,e,n,i){var o=arguments.length>4&&void 0!==arguments[4]&&arguments[4],a={top:0,left:0},r=o?M(t):v(t,e);if("viewport"===i)a=function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=t.ownerDocument.documentElement,i=E(t,n),o=Math.max(n.clientWidth,window.innerWidth||0),a=Math.max(n.clientHeight,window.innerHeight||0),r=e?0:m(n),s=e?0:m(n,"left");return k({top:r-i.top+i.marginTop,left:s-i.left+i.marginLeft,width:o,height:a})}(r,o);else{var s=void 0;"scrollParent"===i?"BODY"===(s=u(l(e))).nodeName&&(s=t.ownerDocument.documentElement):s="window"===i?t.ownerDocument.documentElement:i;var d=E(s,r,o);if("HTML"!==s.nodeName||function t(e){var n=e.nodeName;if("BODY"===n||"HTML"===n)return!1;if("fixed"===c(e,"position"))return!0;var i=l(e);return!!i&&t(i)}(r))a=d;else{var p=y(t.ownerDocument),f=p.height,h=p.width;a.top+=d.top-d.marginTop,a.bottom=f+d.top,a.left+=d.left-d.marginLeft,a.right=h+d.left}}var A="number"==typeof(n=n||0);return a.left+=A?n:n.left||0,a.top+=A?n:n.top||0,a.right-=A?n:n.right||0,a.bottom-=A?n:n.bottom||0,a}function D(t,e,n,i,o){var a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===t.indexOf("auto"))return t;var r=S(n,i,a,o),s={top:{width:r.width,height:e.top-r.top},right:{width:r.right-e.right,height:r.height},bottom:{width:r.width,height:r.bottom-e.bottom},left:{width:e.left-r.left,height:r.height}},c=Object.keys(s).map((function(t){return T({key:t},s[t],{area:(e=s[t],e.width*e.height)});var e})).sort((function(t,e){return e.area-t.area})),l=c.filter((function(t){var e=t.width,i=t.height;return e>=n.clientWidth&&i>=n.clientHeight})),u=l.length>0?l[0].key:c[0].key,d=t.split("-")[1];return u+(d?"-"+d:"")}function O(t,e,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;return E(n,i?M(e):v(e,n),i)}function B(t){var e=t.ownerDocument.defaultView.getComputedStyle(t),n=parseFloat(e.marginTop||0)+parseFloat(e.marginBottom||0),i=parseFloat(e.marginLeft||0)+parseFloat(e.marginRight||0);return{width:t.offsetWidth+i,height:t.offsetHeight+n}}function I(t){var e={left:"right",right:"left",bottom:"top",top:"bottom"};return t.replace(/left|right|bottom|top/g,(function(t){return e[t]}))}function N(t,e,n){n=n.split("-")[0];var i=B(t),o={width:i.width,height:i.height},a=-1!==["right","left"].indexOf(n),r=a?"top":"left",s=a?"left":"top",c=a?"height":"width",l=a?"width":"height";return o[r]=e[r]+e[c]/2-i[c]/2,o[s]=n===s?e[s]-i[l]:e[I(s)],o}function L(t,e){return Array.prototype.find?t.find(e):t.filter(e)[0]}function P(t,e,n){return(void 0===n?t:t.slice(0,function(t,e,n){if(Array.prototype.findIndex)return t.findIndex((function(t){return t[e]===n}));var i=L(t,(function(t){return t[e]===n}));return t.indexOf(i)}(t,"name",n))).forEach((function(t){t.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var n=t.function||t.fn;t.enabled&&s(n)&&(e.offsets.popper=k(e.offsets.popper),e.offsets.reference=k(e.offsets.reference),e=n(e,t))})),e}function j(t,e){return t.some((function(t){var n=t.name;return t.enabled&&n===e}))}function $(t){for(var e=[!1,"ms","Webkit","Moz","O"],n=t.charAt(0).toUpperCase()+t.slice(1),i=0;i1&&void 0!==arguments[1]&&arguments[1],n=G.indexOf(t),i=G.slice(n+1).concat(G.slice(0,n));return e?i.reverse():i}var W="flip",Z="clockwise",X="counterclockwise";var q={placement:"bottom",positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(t){var e=t.placement,n=e.split("-")[0],i=e.split("-")[1];if(i){var o=t.offsets,a=o.reference,r=o.popper,s=-1!==["bottom","top"].indexOf(n),c=s?"left":"top",l=s?"width":"height",u={start:_({},c,a[c]),end:_({},c,a[c]+a[l]-r[l])};t.offsets.popper=T({},r,u[i])}return t}},offset:{order:200,enabled:!0,fn:function(t,e){var n,i=e.offset,o=t.placement,a=t.offsets,r=a.popper,s=a.reference,c=o.split("-")[0];return n=R(+i)?[+i,0]:function(t,e,n,i){var o=[0,0],a=-1!==["right","left"].indexOf(i),r=t.split(/(\+|\-)/).map((function(t){return t.trim()})),s=r.indexOf(L(r,(function(t){return-1!==t.search(/,|\s/)})));r[s]&&-1===r[s].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var c=/\s*,\s*|\s+/,l=-1!==s?[r.slice(0,s).concat([r[s].split(c)[0]]),[r[s].split(c)[1]].concat(r.slice(s+1))]:[r];return(l=l.map((function(t,i){var o=(1===i?!a:a)?"height":"width",r=!1;return t.reduce((function(t,e){return""===t[t.length-1]&&-1!==["+","-"].indexOf(e)?(t[t.length-1]=e,r=!0,t):r?(t[t.length-1]+=e,r=!1,t):t.concat(e)}),[]).map((function(t){return function(t,e,n,i){var o=t.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),a=+o[1],r=o[2];if(!a)return t;if(0===r.indexOf("%")){var s=void 0;switch(r){case"%p":s=n;break;case"%":case"%r":default:s=i}return k(s)[e]/100*a}return"vh"===r||"vw"===r?("vh"===r?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*a:a}(t,o,e,n)}))}))).forEach((function(t,e){t.forEach((function(n,i){R(n)&&(o[e]+=n*("-"===t[i-1]?-1:1))}))})),o}(i,r,s,c),"left"===c?(r.top+=n[0],r.left-=n[1]):"right"===c?(r.top+=n[0],r.left+=n[1]):"top"===c?(r.left+=n[0],r.top-=n[1]):"bottom"===c&&(r.left+=n[0],r.top+=n[1]),t.popper=r,t},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(t,e){var n=e.boundariesElement||h(t.instance.popper);t.instance.reference===n&&(n=h(n));var i=$("transform"),o=t.instance.popper.style,a=o.top,r=o.left,s=o[i];o.top="",o.left="",o[i]="";var c=S(t.instance.popper,t.instance.reference,e.padding,n,t.positionFixed);o.top=a,o.left=r,o[i]=s,e.boundaries=c;var l=e.priority,u=t.offsets.popper,d={primary:function(t){var n=u[t];return u[t]c[t]&&!e.escapeWithReference&&(i=Math.min(u[n],c[t]-("right"===t?u.width:u.height))),_({},n,i)}};return l.forEach((function(t){var e=-1!==["left","top"].indexOf(t)?"primary":"secondary";u=T({},u,d[e](t))})),t.offsets.popper=u,t},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(t){var e=t.offsets,n=e.popper,i=e.reference,o=t.placement.split("-")[0],a=Math.floor,r=-1!==["top","bottom"].indexOf(o),s=r?"right":"bottom",c=r?"left":"top",l=r?"width":"height";return n[s]a(i[s])&&(t.offsets.popper[c]=a(i[s])),t}},arrow:{order:500,enabled:!0,fn:function(t,e){var n;if(!Q(t.instance.modifiers,"arrow","keepTogether"))return t;var i=e.element;if("string"==typeof i){if(!(i=t.instance.popper.querySelector(i)))return t}else if(!t.instance.popper.contains(i))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),t;var o=t.placement.split("-")[0],a=t.offsets,r=a.popper,s=a.reference,l=-1!==["left","right"].indexOf(o),u=l?"height":"width",d=l?"Top":"Left",p=d.toLowerCase(),f=l?"left":"top",h=l?"bottom":"right",A=B(i)[u];s[h]-Ar[h]&&(t.offsets.popper[p]+=s[p]+A-r[h]),t.offsets.popper=k(t.offsets.popper);var v=s[p]+s[u]/2-A/2,m=c(t.instance.popper),g=parseFloat(m["margin"+d],10),b=parseFloat(m["border"+d+"Width"],10),y=v-t.offsets.popper[p]-g-b;return y=Math.max(Math.min(r[u]-A,y),0),t.arrowElement=i,t.offsets.arrow=(_(n={},p,Math.round(y)),_(n,f,""),n),t},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(t,e){if(j(t.instance.modifiers,"inner"))return t;if(t.flipped&&t.placement===t.originalPlacement)return t;var n=S(t.instance.popper,t.instance.reference,e.padding,e.boundariesElement,t.positionFixed),i=t.placement.split("-")[0],o=I(i),a=t.placement.split("-")[1]||"",r=[];switch(e.behavior){case W:r=[i,o];break;case Z:r=U(i);break;case X:r=U(i,!0);break;default:r=e.behavior}return r.forEach((function(s,c){if(i!==s||r.length===c+1)return t;i=t.placement.split("-")[0],o=I(i);var l=t.offsets.popper,u=t.offsets.reference,d=Math.floor,p="left"===i&&d(l.right)>d(u.left)||"right"===i&&d(l.left)d(u.top)||"bottom"===i&&d(l.top)d(n.right),A=d(l.top)d(n.bottom),m="left"===i&&f||"right"===i&&h||"top"===i&&A||"bottom"===i&&v,g=-1!==["top","bottom"].indexOf(i),b=!!e.flipVariations&&(g&&"start"===a&&f||g&&"end"===a&&h||!g&&"start"===a&&A||!g&&"end"===a&&v),y=!!e.flipVariationsByContent&&(g&&"start"===a&&h||g&&"end"===a&&f||!g&&"start"===a&&v||!g&&"end"===a&&A),x=b||y;(p||m||x)&&(t.flipped=!0,(p||m)&&(i=r[c+1]),x&&(a=function(t){return"end"===t?"start":"start"===t?"end":t}(a)),t.placement=i+(a?"-"+a:""),t.offsets.popper=T({},t.offsets.popper,N(t.instance.popper,t.offsets.reference,t.placement)),t=P(t.instance.modifiers,t,"flip"))})),t},behavior:"flip",padding:5,boundariesElement:"viewport",flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:function(t){var e=t.placement,n=e.split("-")[0],i=t.offsets,o=i.popper,a=i.reference,r=-1!==["left","right"].indexOf(n),s=-1===["top","left"].indexOf(n);return o[r?"left":"top"]=a[n]-(s?o[r?"width":"height"]:0),t.placement=I(e),t.offsets.popper=k(o),t}},hide:{order:800,enabled:!0,fn:function(t){if(!Q(t.instance.modifiers,"hide","preventOverflow"))return t;var e=t.offsets.reference,n=L(t.instance.modifiers,(function(t){return"preventOverflow"===t.name})).boundaries;if(e.bottomn.right||e.top>n.bottom||e.right2&&void 0!==arguments[2]?arguments[2]:{};x(this,t),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=r(this.update.bind(this)),this.options=T({},t.Defaults,o),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=e&&e.jquery?e[0]:e,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(T({},t.Defaults.modifiers,o.modifiers)).forEach((function(e){i.options.modifiers[e]=T({},t.Defaults.modifiers[e]||{},o.modifiers?o.modifiers[e]:{})})),this.modifiers=Object.keys(this.options.modifiers).map((function(t){return T({name:t},i.options.modifiers[t])})).sort((function(t,e){return t.order-e.order})),this.modifiers.forEach((function(t){t.enabled&&s(t.onLoad)&&t.onLoad(i.reference,i.popper,i.options,t,i.state)})),this.update();var a=this.options.eventsEnabled;a&&this.enableEventListeners(),this.state.eventsEnabled=a}return w(t,[{key:"update",value:function(){return function(){if(!this.state.isDestroyed){var t={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};t.offsets.reference=O(this.state,this.popper,this.reference,this.options.positionFixed),t.placement=D(this.options.placement,t.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),t.originalPlacement=t.placement,t.positionFixed=this.options.positionFixed,t.offsets.popper=N(this.popper,t.offsets.reference,t.placement),t.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",t=P(this.modifiers,t),this.state.isCreated?this.options.onUpdate(t):(this.state.isCreated=!0,this.options.onCreate(t))}}.call(this)}},{key:"destroy",value:function(){return function(){return this.state.isDestroyed=!0,j(this.modifiers,"applyStyle")&&(this.popper.removeAttribute("x-placement"),this.popper.style.position="",this.popper.style.top="",this.popper.style.left="",this.popper.style.right="",this.popper.style.bottom="",this.popper.style.willChange="",this.popper.style[$("transform")]=""),this.disableEventListeners(),this.options.removeOnDestroy&&this.popper.parentNode.removeChild(this.popper),this}.call(this)}},{key:"enableEventListeners",value:function(){return function(){this.state.eventsEnabled||(this.state=function(t,e,n,i){n.updateBound=i,F(t).addEventListener("resize",n.updateBound,{passive:!0});var o=u(t);return function t(e,n,i,o){var a="BODY"===e.nodeName,r=a?e.ownerDocument.defaultView:e;r.addEventListener(n,i,{passive:!0}),a||t(u(r.parentNode),n,i,o),o.push(r)}(o,"scroll",n.updateBound,n.scrollParents),n.scrollElement=o,n.eventsEnabled=!0,n}(this.reference,this.options,this.state,this.scheduleUpdate))}.call(this)}},{key:"disableEventListeners",value:function(){return Y.call(this)}}]),t}();K.Utils=("undefined"!=typeof window?window:t).PopperUtils,K.placements=V,K.Defaults=q,e.a=K}).call(this,n(15))},function(t,e,n){"use strict"; +/** + * @copyright Copyright (c) 2018 John Molakvoæ + * + * @author John Molakvoæ + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */e.a=function(t){return Math.random().toString(36).replace(/[^a-z]+/g,"").substr(0,t||5)}},function(t,e,n){var i=n(42);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("6d914181",i,!0,{})},function(t,e,n){var i=n(44);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("2fc216d3",i,!0,{})},function(t,e,n){var i=n(46);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("95523852",i,!0,{})},function(t,e,n){"use strict";(function(t){n.d(e,"a",(function(){return o}));var i=void 0;var o={render:function(){var t=this.$createElement;return(this._self._c||t)("div",{staticClass:"resize-observer",attrs:{tabindex:"-1"}})},staticRenderFns:[],_scopeId:"data-v-b329ee4c",name:"resize-observer",methods:{compareAndNotify:function(){this._w===this.$el.offsetWidth&&this._h===this.$el.offsetHeight||(this._w=this.$el.offsetWidth,this._h=this.$el.offsetHeight,this.$emit("notify"))},addResizeHandlers:function(){this._resizeObject.contentDocument.defaultView.addEventListener("resize",this.compareAndNotify),this.compareAndNotify()},removeResizeHandlers:function(){this._resizeObject&&this._resizeObject.onload&&(!i&&this._resizeObject.contentDocument&&this._resizeObject.contentDocument.defaultView.removeEventListener("resize",this.compareAndNotify),delete this._resizeObject.onload)}},mounted:function(){var t=this;(function t(){t.init||(t.init=!0,i=-1!==function(){var t=window.navigator.userAgent,e=t.indexOf("MSIE ");if(e>0)return parseInt(t.substring(e+5,t.indexOf(".",e)),10);if(t.indexOf("Trident/")>0){var n=t.indexOf("rv:");return parseInt(t.substring(n+3,t.indexOf(".",n)),10)}var i=t.indexOf("Edge/");return i>0?parseInt(t.substring(i+5,t.indexOf(".",i)),10):-1}())})(),this.$nextTick((function(){t._w=t.$el.offsetWidth,t._h=t.$el.offsetHeight}));var e=document.createElement("object");this._resizeObject=e,e.setAttribute("aria-hidden","true"),e.setAttribute("tabindex",-1),e.onload=this.addResizeHandlers,e.type="text/html",i&&this.$el.appendChild(e),e.data="about:blank",i||this.$el.appendChild(e)},beforeDestroy:function(){this.removeResizeHandlers()}},a={version:"0.4.5",install:function(t){t.component("resize-observer",o),t.component("ResizeObserver",o)}},r=null;"undefined"!=typeof window?r=window.Vue:void 0!==t&&(r=t.Vue),r&&r.use(a)}).call(this,n(15))},function(t,e,n){var i=n(81);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("1351c3b7",i,!0,{})},function(t,e,n){"use strict"; +/** + * @copyright Copyright (c) 2018 John Molakvoæ + * + * @author John Molakvoæ + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */e.a=function(t){t.mounted?Array.isArray(t.mounted)||(t.mounted=[t.mounted]):t.mounted=[],t.mounted.push((function(){this.$el.setAttribute("data-v-".concat("6673a70"),"")}))}},function(t,e,n){"use strict";n.r(e);var i={name:"PopoverMenuItem",props:{item:{type:Object,required:!0,default:function(){return{key:"nextcloud-link",href:"https://nextcloud.com",icon:"icon-links",text:"Nextcloud"}},validator:function(t){return!t.input||-1!==["text","checkbox"].indexOf(t.input)}}},computed:{key:function(){return this.item.key?this.item.key:Math.round(16*Math.random()*1e6).toString(16)},iconIsUrl:function(){try{return new URL(this.item.icon),!0}catch(t){return!1}}},methods:{action:function(t){this.item.action&&this.item.action(t)}}},o=(n(41),n(43),n(0)),a={name:"PopoverMenu",components:{PopoverMenuItem:Object(o.a)(i,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("li",[t.item.href?n("a",{staticClass:"focusable",attrs:{href:t.item.href?t.item.href:"#",target:t.item.target?t.item.target:"",download:t.item.download,rel:"noreferrer noopener"},on:{click:t.action}},[t.iconIsUrl?n("img",{attrs:{src:t.item.icon}}):n("span",{class:t.item.icon}),t._v(" "),t.item.text&&t.item.longtext?n("p",[n("strong",{staticClass:"menuitem-text"},[t._v("\n\t\t\t\t"+t._s(t.item.text)+"\n\t\t\t")]),n("br"),t._v(" "),n("span",{staticClass:"menuitem-text-detail"},[t._v("\n\t\t\t\t"+t._s(t.item.longtext)+"\n\t\t\t")])]):t.item.text?n("span",[t._v("\n\t\t\t"+t._s(t.item.text)+"\n\t\t")]):t.item.longtext?n("p",[t._v("\n\t\t\t"+t._s(t.item.longtext)+"\n\t\t")]):t._e()]):t.item.input?n("span",{staticClass:"menuitem",class:{active:t.item.active}},["checkbox"!==t.item.input?n("span",{class:t.item.icon}):t._e(),t._v(" "),"text"===t.item.input?n("form",{class:t.item.input,on:{submit:function(e){return e.preventDefault(),t.item.action(e)}}},[n("input",{attrs:{type:t.item.input,placeholder:t.item.text,required:""},domProps:{value:t.item.value}}),t._v(" "),n("input",{staticClass:"icon-confirm",attrs:{type:"submit",value:""}})]):["checkbox"===t.item.input?n("input",{directives:[{name:"model",rawName:"v-model",value:t.item.model,expression:"item.model"}],class:t.item.input,attrs:{id:t.key,type:"checkbox"},domProps:{checked:Array.isArray(t.item.model)?t._i(t.item.model,null)>-1:t.item.model},on:{change:[function(e){var n=t.item.model,i=e.target,o=!!i.checked;if(Array.isArray(n)){var a=t._i(n,null);i.checked?a<0&&t.$set(t.item,"model",n.concat([null])):a>-1&&t.$set(t.item,"model",n.slice(0,a).concat(n.slice(a+1)))}else t.$set(t.item,"model",o)},t.item.action]}}):"radio"===t.item.input?n("input",{directives:[{name:"model",rawName:"v-model",value:t.item.model,expression:"item.model"}],class:t.item.input,attrs:{id:t.key,type:"radio"},domProps:{checked:t._q(t.item.model,null)},on:{change:[function(e){return t.$set(t.item,"model",null)},t.item.action]}}):n("input",{directives:[{name:"model",rawName:"v-model",value:t.item.model,expression:"item.model"}],class:t.item.input,attrs:{id:t.key,type:t.item.input},domProps:{value:t.item.model},on:{change:t.item.action,input:function(e){e.target.composing||t.$set(t.item,"model",e.target.value)}}}),t._v(" "),n("label",{attrs:{for:t.key},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.item.action(e)}}},[t._v("\n\t\t\t\t"+t._s(t.item.text)+"\n\t\t\t")])]],2):t.item.action?n("button",{staticClass:"menuitem focusable",class:{active:t.item.active},attrs:{disabled:t.item.disabled},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.item.action(e)}}},[n("span",{class:t.item.icon}),t._v(" "),t.item.text&&t.item.longtext?n("p",[n("strong",{staticClass:"menuitem-text"},[t._v("\n\t\t\t\t"+t._s(t.item.text)+"\n\t\t\t")]),n("br"),t._v(" "),n("span",{staticClass:"menuitem-text-detail"},[t._v("\n\t\t\t\t"+t._s(t.item.longtext)+"\n\t\t\t")])]):t.item.text?n("span",[t._v("\n\t\t\t"+t._s(t.item.text)+"\n\t\t")]):t.item.longtext?n("p",[t._v("\n\t\t\t"+t._s(t.item.longtext)+"\n\t\t")]):t._e()]):n("span",{staticClass:"menuitem",class:{active:t.item.active}},[n("span",{class:t.item.icon}),t._v(" "),t.item.text&&t.item.longtext?n("p",[n("strong",{staticClass:"menuitem-text"},[t._v("\n\t\t\t\t"+t._s(t.item.text)+"\n\t\t\t")]),n("br"),t._v(" "),n("span",{staticClass:"menuitem-text-detail"},[t._v("\n\t\t\t\t"+t._s(t.item.longtext)+"\n\t\t\t")])]):t.item.text?n("span",[t._v("\n\t\t\t"+t._s(t.item.text)+"\n\t\t")]):t.item.longtext?n("p",[t._v("\n\t\t\t"+t._s(t.item.longtext)+"\n\t\t")]):t._e()])])}),[],!1,null,"8dc4efb0",null).exports},props:{menu:{type:Array,default:function(){return[{href:"https://nextcloud.com",icon:"icon-links",text:"Nextcloud"}]},required:!0}}},r=(n(45),Object(o.a)(a,(function(){var t=this.$createElement,e=this._self._c||t;return e("ul",this._l(this.menu,(function(t,n){return e("PopoverMenuItem",{key:n,attrs:{item:t}})})),1)}),[],!1,null,"2f982451",null).exports);n.d(e,"PopoverMenu",(function(){return r})), +/** + * @copyright Copyright (c) 2018 John Molakvoæ + * + * @author John Molakvoæ + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ +e.default=r},function(t,e){},function(t,e,n){var i=n(91);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("2601b667",i,!0,{})},function(t,e,n){var i=n(95);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("a39cae00",i,!0,{})},function(t,e,n){var i=n(97);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("30f6e694",i,!0,{})},function(t,e,n){var i=n(120);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("51023bd3",i,!0,{})},function(t,e,n){"use strict";n.r(e);var i=n(13),o=n.n(i),a=n(6),r=n(17),s=n(3),c=n.n(s),l=function(t,e,n){t.forEach((function(i,o){var a=!i.componentOptions&&i.tag,r=i.componentOptions&&"string"==typeof i.componentOptions.tag&&-1===e.indexOf(i.componentOptions.tag);(a||r)&&(c.a.util.warn("".concat(a?i.tag:i.componentOptions.tag," is not allowed inside the ").concat(n.$options.name," component"),n),t.splice(o,1))}))},u=["ActionButton","ActionCheckbox","ActionInput","ActionLink","ActionRouter","ActionText","ActionTextEditable"],d={name:"Actions",directives:{ClickOutside:o.a,tooltip:a.default},props:{open:{type:Boolean,default:!1},menuAlign:{type:String,default:"center",validator:function(t){return["left","center","right"].indexOf(t)>-1}}},data:function(){return{actions:[],opened:this.open,focusIndex:0,randomId:"menu-"+Object(r.a)(),offsetX:0}},computed:{isValidSingleAction:function(){return 1===this.actions.length},firstAction:function(){return this.actions[0]},firstActionElement:function(){if(this.firstAction&&this.firstAction.componentOptions){var t=this.firstAction.componentOptions.tag;if("ActionLink"===t)return{is:"a",href:this.getVNodeProp(this.firstAction,"href"),target:this.getVNodeProp(this.firstAction,"target")};if("ActionRouter"===t)return{is:"router-link",to:this.getVNodeProp(this.firstAction,"to"),exact:this.getVNodeProp(this.firstAction,"exact")}}return{is:"button"}},firstActionEvent:function(){return this.firstAction&&this.firstAction.componentOptions&&this.firstAction.componentOptions.listeners&&this.firstAction.componentOptions.listeners.click?"click":null}},watch:{open:function(t){var e=this;this.opened=t,this.opened&&this.$nextTick((function(){e.onOpen()}))}},beforeMount:function(){this.initActions(),l(this.$slots.default,u,this)},mounted:function(){this.popupItem=this.$el},beforeUpdate:function(){l(this.$slots.default,u,this)},methods:{toggleMenu:function(){var t=this;this.opened=!this.opened,this.opened&&(this.$nextTick((function(){t.onOpen(),t.focusFirstAction()})),this.$emit("open")),this.$emit("update:open",this.opened)},closeMenu:function(){this.opened&&(this.$emit("update:open",!1),this.$emit("close")),this.opened=!1,this.offsetX=0},onOpen:function(){this.offsetX=0;var t=function(t){var e=t.getBoundingClientRect(),n=document.documentElement.clientHeight,i=document.documentElement.clientWidth,o=Object.assign({});return o.top=e.top<0,o.left=e.left<0,o.bottom=e.bottom>n,o.right=e.right>i,o.any=o.top||o.left||o.bottom||o.right,o.all=o.top&&o.left&&o.bottom&&o.right,o.offsetY=o.top?e.top:o.bottom?e.bottom-n:0,o.offsetX=o.left?e.left:o.right?e.right-i:0,o}(this.$refs.menu);t.any&&(this.offsetX=t.offsetX>0?Math.round(t.offsetX)+5:Math.round(t.offsetX)-5)},onMouseFocusAction:function(t){if(document.activeElement!==t.target){var e=t.target.closest("li");if(e){var n=e.querySelector(".focusable");if(n){var i=this.$refs.menu.querySelectorAll(".focusable"),o=Array.prototype.indexOf.call(i,n);o>-1&&(this.focusIndex=o,this.focusAction())}}}},removeCurrentActive:function(){var t=this.$refs.menu.querySelector("li.active");t&&t.classList.remove("active")},focusAction:function(){var t=this.$refs.menu.querySelectorAll(".focusable")[this.focusIndex];if(t){var e=t.closest("li");t.focus(),e&&(this.removeCurrentActive(),e.classList.add("active"))}},focusPreviousAction:function(){this.focusIndex=Math.max(this.focusIndex-1,0),this.focusAction()},focusNextAction:function(){this.focusIndex=Math.min(this.focusIndex+1,this.$refs.menu.querySelectorAll(".focusable").length-1),this.focusAction()},focusFirstAction:function(){this.focusIndex=0,this.focusAction()},focusLastAction:function(){this.focusIndex=this.$el.querySelectorAll(".focusable").length-1,this.focusAction()},getVNodeProp:function(t,e){return t.componentOptions.propsData[e]},execFirstAction:function(t){this.firstAction&&this.firstAction.componentOptions&&this.firstAction.componentOptions.listeners&&this.firstAction.componentOptions.listeners.click&&(this.firstAction.componentOptions.listeners.click(t),t.preventDefault())},initActions:function(){this.actions=this.$slots.default.filter((function(t){return t&&t.componentOptions}))||[]}}},p=(n(80),n(0)),f=n(25),h=n.n(f),A=Object(p.a)(d,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.isValidSingleAction?n("element",t._b({directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.getVNodeProp(t.firstAction,"text"),expression:"getVNodeProp(firstAction, 'text')",modifiers:{auto:!0}}],staticClass:"action-item action-item--single",class:t.getVNodeProp(t.firstAction,"icon"),attrs:{rel:"noreferrer noopener"},on:t._d({},[t.firstActionEvent,t.execFirstAction])},"element",t.firstActionElement,!1),[n("span",{attrs:{"aria-hidden":!0,hidden:""}},[t._t("default")],2)]):n("div",{directives:[{name:"show",rawName:"v-show",value:t.actions.length>0,expression:"actions.length > 0"}],staticClass:"action-item",class:{"action-item--open":t.opened},on:{keydown:[function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"up",38,e.key,["Up","ArrowUp"])?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.focusPreviousAction(e))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"down",40,e.key,["Down","ArrowDown"])?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.focusNextAction(e))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"tab",9,e.key,"Tab")?null:e.shiftKey?(e.preventDefault(),t.focusPreviousAction(e)):null},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"page-up",void 0,e.key,void 0)?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.focusFirstAction(e))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"page-down",void 0,e.key,void 0)?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.focusLastAction(e))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"esc",27,e.key,["Esc","Escape"])?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.closeMenu(e))}]}},[n("a",{directives:[{name:"click-outside",rawName:"v-click-outside",value:t.closeMenu,expression:"closeMenu"}],staticClass:"icon action-item__menutoggle",attrs:{href:"#","aria-haspopup":"true","aria-controls":t.randomId,"aria-expanded":t.opened},on:{click:function(e){return e.preventDefault(),t.toggleMenu(e)},keydown:function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"space",32,e.key,[" ","Spacebar"])?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.toggleMenu(e))}}}),t._v(" "),t.opened?n("div",{ref:"menu",staticClass:"action-item__menu",class:["menu-"+t.menuAlign,{open:t.opened}],style:{marginRight:t.offsetX+"px"},attrs:{tabindex:"-1"},on:{mousemove:t.onMouseFocusAction}},[n("div",{staticClass:"action-item__menu_arrow",style:{transform:"translateX("+t.offsetX+"px)"}}),t._v(" "),n("ul",{attrs:{id:t.randomId,tabindex:"-1"}},[t._t("default")],2)]):t._e()])}),[],!1,null,"627a433f",null);"function"==typeof h.a&&h()(A);var v=A.exports;n.d(e,"Actions",(function(){return v})), +/** + * @copyright Copyright (c) 2018 John Molakvoæ + * + * @author John Molakvoæ + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ +e.default=v},function(t,e,n){window,t.exports=function(t){var e={};function n(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return t[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:i})},n.r=function(t){Object.defineProperty(t,"__esModule",{value:!0})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=3)}([function(t,e,n){var i;!function(o){"use strict";var a={},r=/d{1,4}|M{1,4}|YY(?:YY)?|S{1,3}|Do|ZZ|([HhMsDm])\1?|[aA]|"[^"]*"|'[^']*'/g,s=/\d\d?/,c=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,l=/\[([^]*?)\]/gm,u=function(){};function d(t,e){for(var n=[],i=0,o=t.length;i3?0:(t-t%10!=10)*t%10]}};var g={D:function(t){return t.getDate()},DD:function(t){return f(t.getDate())},Do:function(t,e){return e.DoFn(t.getDate())},d:function(t){return t.getDay()},dd:function(t){return f(t.getDay())},ddd:function(t,e){return e.dayNamesShort[t.getDay()]},dddd:function(t,e){return e.dayNames[t.getDay()]},M:function(t){return t.getMonth()+1},MM:function(t){return f(t.getMonth()+1)},MMM:function(t,e){return e.monthNamesShort[t.getMonth()]},MMMM:function(t,e){return e.monthNames[t.getMonth()]},YY:function(t){return String(t.getFullYear()).substr(2)},YYYY:function(t){return f(t.getFullYear(),4)},h:function(t){return t.getHours()%12||12},hh:function(t){return f(t.getHours()%12||12)},H:function(t){return t.getHours()},HH:function(t){return f(t.getHours())},m:function(t){return t.getMinutes()},mm:function(t){return f(t.getMinutes())},s:function(t){return t.getSeconds()},ss:function(t){return f(t.getSeconds())},S:function(t){return Math.round(t.getMilliseconds()/100)},SS:function(t){return f(Math.round(t.getMilliseconds()/10),2)},SSS:function(t){return f(t.getMilliseconds(),3)},a:function(t,e){return t.getHours()<12?e.amPm[0]:e.amPm[1]},A:function(t,e){return t.getHours()<12?e.amPm[0].toUpperCase():e.amPm[1].toUpperCase()},ZZ:function(t){var e=t.getTimezoneOffset();return(e>0?"-":"+")+f(100*Math.floor(Math.abs(e)/60)+Math.abs(e)%60,4)}},b={D:[s,function(t,e){t.day=e}],Do:[new RegExp(s.source+c.source),function(t,e){t.day=parseInt(e,10)}],M:[s,function(t,e){t.month=e-1}],YY:[s,function(t,e){var n=+(""+(new Date).getFullYear()).substr(0,2);t.year=""+(e>68?n-1:n)+e}],h:[s,function(t,e){t.hour=e}],m:[s,function(t,e){t.minute=e}],s:[s,function(t,e){t.second=e}],YYYY:[/\d{4}/,function(t,e){t.year=e}],S:[/\d/,function(t,e){t.millisecond=100*e}],SS:[/\d{2}/,function(t,e){t.millisecond=10*e}],SSS:[/\d{3}/,function(t,e){t.millisecond=e}],d:[s,u],ddd:[c,u],MMM:[c,p("monthNamesShort")],MMMM:[c,p("monthNames")],a:[c,function(t,e,n){var i=e.toLowerCase();i===n.amPm[0]?t.isPm=!1:i===n.amPm[1]&&(t.isPm=!0)}],ZZ:[/([\+\-]\d\d:?\d\d|Z)/,function(t,e){"Z"===e&&(e="+00:00");var n,i=(e+"").match(/([\+\-]|\d\d)/gi);i&&(n=60*i[1]+parseInt(i[2],10),t.timezoneOffset="+"===i[0]?n:-n)}]};b.dd=b.d,b.dddd=b.ddd,b.DD=b.D,b.mm=b.m,b.hh=b.H=b.HH=b.h,b.MM=b.M,b.ss=b.s,b.A=b.a,a.masks={default:"ddd MMM DD YYYY HH:mm:ss",shortDate:"M/D/YY",mediumDate:"MMM D, YYYY",longDate:"MMMM D, YYYY",fullDate:"dddd, MMMM D, YYYY",shortTime:"HH:mm",mediumTime:"HH:mm:ss",longTime:"HH:mm:ss.SSS"},a.format=function(t,e,n){var i=n||a.i18n;if("number"==typeof t&&(t=new Date(t)),"[object Date]"!==Object.prototype.toString.call(t)||isNaN(t.getTime()))throw new Error("Invalid Date in fecha.format");var o=[];return(e=(e=(e=a.masks[e]||e||a.masks.default).replace(l,(function(t,e){return o.push(e),"??"}))).replace(r,(function(e){return e in g?g[e](t,i):e.slice(1,e.length-1)}))).replace(/\?\?/g,(function(){return o.shift()}))},a.parse=function(t,e,n){var i=n||a.i18n;if("string"!=typeof e)throw new Error("Invalid format in fecha.parse");if(e=a.masks[e]||e,t.length>1e3)return!1;var o=!0,s={};if(e.replace(r,(function(e){if(b[e]){var n=b[e],a=t.search(n[0]);~a?t.replace(n[0],(function(e){return n[1](s,e,i),t=t.substr(a+e.length),e})):o=!1}return b[e]?"":e.slice(1,e.length-1)})),!o)return!1;var c,l=new Date;return!0===s.isPm&&null!=s.hour&&12!=+s.hour?s.hour=+s.hour+12:!1===s.isPm&&12==+s.hour&&(s.hour=0),null!=s.timezoneOffset?(s.minute=+(s.minute||0)-+s.timezoneOffset,c=new Date(Date.UTC(s.year||l.getFullYear(),s.month||0,s.day||1,s.hour||0,s.minute||0,s.second||0,s.millisecond||0))):c=new Date(s.year||l.getFullYear(),s.month||0,s.day||1,s.hour||0,s.minute||0,s.second||0,s.millisecond||0),c},void 0!==t&&t.exports?t.exports=a:void 0===(i=function(){return a}.call(e,n,e,t))||(t.exports=i)}()},function(t,e){var n=/^(attrs|props|on|nativeOn|class|style|hook)$/;function i(t,e){return function(){t&&t.apply(this,arguments),e&&e.apply(this,arguments)}}t.exports=function(t){return t.reduce((function(t,e){var o,a,r,s,c;for(r in e)if(o=t[r],a=e[r],o&&n.test(r))if("class"===r&&("string"==typeof o&&(c=o,t[r]=o={},o[c]=!0),"string"==typeof a&&(c=a,e[r]=a={},a[c]=!0)),"on"===r||"nativeOn"===r||"hook"===r)for(s in a)o[s]=i(o[s],a[s]);else if(Array.isArray(o))t[r]=o.concat(a);else if(Array.isArray(a))t[r]=[o].concat(a);else for(s in a)o[s]=a[s];else t[r]=e[r];return t}),{})}},function(t,e,n){"use strict";function i(t,e){for(var n=[],i={},o=0;on.parts.length&&(i.parts.length=n.parts.length)}else{var r=[];for(o=0;o=2?{hours:parseInt(e[0],10),minutes:parseInt(e[1],10)}:null}function p(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"24",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"a",i=t.hours,o=(i=(i="24"===e?i:i%12||12)<10?"0"+i:i)+":"+(t.minutes<10?"0"+t.minutes:t.minutes);if("12"===e){var a=t.hours>=12?"pm":"am";"A"===n&&(a=a.toUpperCase()),o=o+" "+a}return o}function f(t,e){if(!t)return"";try{return o.a.format(new Date(t),e)}catch(t){return""}}var h={date:{value2date:function(t){return u(t)?new Date(t):null},date2value:function(t){return t}},timestamp:{value2date:function(t){return u(t)?new Date(t):null},date2value:function(t){return t&&new Date(t).getTime()}}},A={zh:{days:["日","一","二","三","四","五","六"],months:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],pickers:["未来7天","未来30天","最近7天","最近30天"],placeholder:{date:"请选择日期",dateRange:"请选择日期范围"}},en:{days:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],pickers:["next 7 days","next 30 days","previous 7 days","previous 30 days"],placeholder:{date:"Select Date",dateRange:"Select Date Range"}},ro:{days:["Lun","Mar","Mie","Joi","Vin","Sâm","Dum"],months:["Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Noi","Dec"],pickers:["urmatoarele 7 zile","urmatoarele 30 zile","ultimele 7 zile","ultimele 30 zile"],placeholder:{date:"Selectați Data",dateRange:"Selectați Intervalul De Date"}},fr:{days:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"],months:["Jan","Fev","Mar","Avr","Mai","Juin","Juil","Aout","Sep","Oct","Nov","Dec"],pickers:["7 jours suivants","30 jours suivants","7 jours précédents","30 jours précédents"],placeholder:{date:"Sélectionnez une date",dateRange:"Sélectionnez une période"}},es:{days:["Dom","Lun","mar","Mie","Jue","Vie","Sab"],months:["Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Sep","Oct","Nov","Dic"],pickers:["próximos 7 días","próximos 30 días","7 días anteriores","30 días anteriores"],placeholder:{date:"Seleccionar fecha",dateRange:"Seleccionar un rango de fechas"}},"pt-br":{days:["Dom","Seg","Ter","Qua","Quin","Sex","Sáb"],months:["Jan","Fev","Mar","Abr","Maio","Jun","Jul","Ago","Set","Out","Nov","Dez"],pickers:["próximos 7 dias","próximos 30 dias","7 dias anteriores"," 30 dias anteriores"],placeholder:{date:"Selecione uma data",dateRange:"Selecione um período"}},ru:{days:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],months:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],pickers:["след. 7 дней","след. 30 дней","прош. 7 дней","прош. 30 дней"],placeholder:{date:"Выберите дату",dateRange:"Выберите период"}},de:{days:["So","Mo","Di","Mi","Do","Fr","Sa"],months:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],pickers:["nächsten 7 Tage","nächsten 30 Tage","vorigen 7 Tage","vorigen 30 Tage"],placeholder:{date:"Datum auswählen",dateRange:"Zeitraum auswählen"}},it:{days:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],months:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],pickers:["successivi 7 giorni","successivi 30 giorni","precedenti 7 giorni","precedenti 30 giorni"],placeholder:{date:"Seleziona una data",dateRange:"Seleziona un intervallo date"}},cs:{days:["Ned","Pon","Úte","Stř","Čtv","Pát","Sob"],months:["Led","Úno","Bře","Dub","Kvě","Čer","Čerc","Srp","Zář","Říj","Lis","Pro"],pickers:["příštích 7 dní","příštích 30 dní","předchozích 7 dní","předchozích 30 dní"],placeholder:{date:"Vyberte datum",dateRange:"Vyberte časové rozmezí"}},sl:{days:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"],months:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],pickers:["naslednjih 7 dni","naslednjih 30 dni","prejšnjih 7 dni","prejšnjih 30 dni"],placeholder:{date:"Izberite datum",dateRange:"Izberite razpon med 2 datumoma"}}},v=A.zh,m={methods:{t:function(t){for(var e=this,n=e.$options.name;e&&(!n||"DatePicker"!==n);)(e=e.$parent)&&(n=e.$options.name);for(var i=e&&e.language||v,o=t.split("."),a=i,r=void 0,s=0,c=o.length;ss&&(t.scrollTop=a-t.clientHeight)}else t.scrollTop=0}var b=n(1),y=n.n(b),x={name:"panelDate",mixins:[m],props:{value:null,startAt:null,endAt:null,dateFormat:{type:String,default:"YYYY-MM-DD"},calendarMonth:{default:(new Date).getMonth()},calendarYear:{default:(new Date).getFullYear()},firstDayOfWeek:{default:7,type:Number,validator:function(t){return t>=1&&t<=7}},disabledDate:{type:Function,default:function(){return!1}}},methods:{selectDate:function(t){var e=t.year,n=t.month,i=t.day,o=new Date(e,n,i);this.disabledDate(o)||this.$emit("select",o)},getDays:function(t){var e=this.t("days"),n=parseInt(t,10);return e.concat(e).slice(n,n+7)},getDates:function(t,e,n){var i=[],o=new Date(t,e);o.setDate(0);for(var a=(o.getDay()+7-n)%7+1,r=o.getDate()-(a-1),s=0;sthis.calendarMonth?o.push("next-month"):o.push("cur-month"),a===r&&o.push("today"),this.disabledDate(a)&&o.push("disabled"),s&&(a===s?o.push("actived"):c&&a<=s?o.push("inrange"):l&&a>=s&&o.push("inrange")),o},getCellTitle:function(t){var e=t.year,n=t.month,i=t.day;return f(new Date(e,n,i),this.dateFormat)}},render:function(t){var e=this,n=this.getDays(this.firstDayOfWeek).map((function(e){return t("th",[e])})),i=this.getDates(this.calendarYear,this.calendarMonth,this.firstDayOfWeek),o=Array.apply(null,{length:6}).map((function(n,o){var a=i.slice(7*o,7*o+7).map((function(n){var i={class:e.getCellClasses(n)};return t("td",y()([{class:"cell"},i,{attrs:{"data-year":n.year,"data-month":n.month,title:e.getCellTitle(n)},on:{click:e.selectDate.bind(e,n)}}]),[n.day])}));return t("tr",[a])}));return t("table",{class:"mx-panel mx-panel-date"},[t("thead",[t("tr",[n])]),t("tbody",[o])])}},w={name:"panelYear",props:{value:null,firstYear:Number,disabledYear:Function},methods:{isDisabled:function(t){return!("function"!=typeof this.disabledYear||!this.disabledYear(t))},selectYear:function(t){this.isDisabled(t)||this.$emit("select",t)}},render:function(t){var e=this,n=10*Math.floor(this.firstYear/10),i=this.value&&new Date(this.value).getFullYear(),o=Array.apply(null,{length:10}).map((function(o,a){var r=n+a;return t("span",{class:{cell:!0,actived:i===r,disabled:e.isDisabled(r)},on:{click:e.selectYear.bind(e,r)}},[r])}));return t("div",{class:"mx-panel mx-panel-year"},[o])}},_={name:"panelMonth",mixins:[m],props:{value:null,calendarYear:{default:(new Date).getFullYear()},disabledMonth:Function},methods:{isDisabled:function(t){return!("function"!=typeof this.disabledMonth||!this.disabledMonth(t))},selectMonth:function(t){this.isDisabled(t)||this.$emit("select",t)}},render:function(t){var e=this,n=this.t("months"),i=this.value&&new Date(this.value).getFullYear(),o=this.value&&new Date(this.value).getMonth();return n=n.map((function(n,a){return t("span",{class:{cell:!0,actived:i===e.calendarYear&&o===a,disabled:e.isDisabled(a)},on:{click:e.selectMonth.bind(e,a)}},[n])})),t("div",{class:"mx-panel mx-panel-month"},[n])}},T=Object.assign||function(t){for(var e=1;e=0&&t<=60}},value:null,timeType:{type:Array,default:function(){return["24","a"]}},disabledTime:Function},computed:{currentHours:function(){return this.value?new Date(this.value).getHours():0},currentMinutes:function(){return this.value?new Date(this.value).getMinutes():0},currentSeconds:function(){return this.value?new Date(this.value).getSeconds():0}},methods:{stringifyText:function(t){return("00"+t).slice(String(t).length)},selectTime:function(t){"function"==typeof this.disabledTime&&this.disabledTime(t)||this.$emit("select",new Date(t))},pickTime:function(t){"function"==typeof this.disabledTime&&this.disabledTime(t)||this.$emit("pick",new Date(t))},getTimePickerOptions:function(){var t=[],e=this.timePickerOptions;if(!e)return[];if("function"==typeof e)return e()||[];var n=d(e.start),i=d(e.end),o=d(e.step);if(n&&i&&o)for(var a=n.minutes+60*n.hours,r=i.minutes+60*i.hours,s=o.minutes+60*o.hours,c=Math.floor((r-a)/s),l=0;l<=c;l++){var u=a+l*s,f={hours:Math.floor(u/60),minutes:u%60};t.push({value:f,label:p.apply(void 0,[f].concat(C(this.timeType)))})}return t}},render:function(t){var e=this,n=this.value?new Date(this.value):(new Date).setHours(0,0,0,0),i="function"==typeof this.disabledTime&&this.disabledTime,o=this.getTimePickerOptions();if(Array.isArray(o)&&o.length)return o=o.map((function(o){var a=o.value.hours,r=o.value.minutes,s=new Date(n).setHours(a,r,0);return t("li",{class:{"mx-time-picker-item":!0,cell:!0,actived:a===e.currentHours&&r===e.currentMinutes,disabled:i&&i(s)},on:{click:e.pickTime.bind(e,s)}},[o.label])})),t("div",{class:"mx-panel mx-panel-time"},[t("ul",{class:"mx-time-list"},[o])]);var a=this.minuteStep||1,r=parseInt(60/a),s={hours:Array.apply(null,{length:24}).map((function(t,e){return e})),minutes:Array.apply(null,{length:r}).map((function(t,e){return e*a})),seconds:0===this.minuteStep?Array.apply(null,{length:60}).map((function(t,e){return e})):[]};this.timeSelectOptions&&"object"===k(this.timeSelectOptions)&&(s=T({},s,this.timeSelectOptions));var c=[s.hours.map((function(o){var a=new Date(n).setHours(o);return t("li",{class:{cell:!0,actived:o===e.currentHours,disabled:i&&i(a)},on:{click:e.selectTime.bind(e,a)}},[e.stringifyText(o)])})),s.minutes.map((function(o){var a=new Date(n).setMinutes(o);return t("li",{class:{cell:!0,actived:o===e.currentMinutes,disabled:i&&i(a)},on:{click:e.selectTime.bind(e,a)}},[e.stringifyText(o)])})),s.seconds.map((function(o){var a=new Date(n).setSeconds(o);return t("li",{class:{cell:!0,actived:o===e.currentSeconds,disabled:i&&i(a)},on:{click:e.selectTime.bind(e,a)}},[e.stringifyText(o)])}))].filter((function(t){return t.length>0}));return c=c.map((function(e){return t("ul",{class:"mx-time-list",style:{width:100/c.length+"%"}},[e])})),t("div",{class:"mx-panel mx-panel-time"},[c])}}},mixins:[m,{methods:{dispatch:function(t,e,n){for(var i=this.$parent||this.$root,o=i.$options.name;i&&(!o||o!==t);)(i=i.$parent)&&(o=i.$options.name);o&&o===t&&(i=i||this).$emit.apply(i,[e].concat(n))}}}],props:{value:{default:null,validator:function(t){return null===t||u(t)}},startAt:null,endAt:null,visible:{type:Boolean,default:!1},type:{type:String,default:"date"},dateFormat:{type:String,default:"YYYY-MM-DD"},index:Number,defaultValue:{validator:function(t){return u(t)}},firstDayOfWeek:{default:7,type:Number,validator:function(t){return t>=1&&t<=7}},notBefore:{default:null,validator:function(t){return!t||u(t)}},notAfter:{default:null,validator:function(t){return!t||u(t)}},disabledDays:{type:[Array,Function],default:function(){return[]}},minuteStep:{type:Number,default:0,validator:function(t){return t>=0&&t<=60}},timeSelectOptions:{type:Object,default:function(){return null}},timePickerOptions:{type:[Object,Function],default:function(){return null}}},data:function(){var t=this.getNow(this.value),e=t.getFullYear();return{panel:"NONE",dates:[],calendarMonth:t.getMonth(),calendarYear:e,firstYear:10*Math.floor(e/10)}},computed:{now:{get:function(){return new Date(this.calendarYear,this.calendarMonth).getTime()},set:function(t){var e=new Date(t);this.calendarYear=e.getFullYear(),this.calendarMonth=e.getMonth()}},timeType:function(){return[/h+/.test(this.$parent.format)?"12":"24",/A/.test(this.$parent.format)?"A":"a"]},timeHeader:function(){return"time"===this.type?this.$parent.format:this.value&&f(this.value,this.dateFormat)},yearHeader:function(){return this.firstYear+" ~ "+(this.firstYear+9)},months:function(){return this.t("months")},notBeforeTime:function(){return this.getCriticalTime(this.notBefore)},notAfterTime:function(){return this.getCriticalTime(this.notAfter)}},watch:{value:{immediate:!0,handler:"updateNow"},visible:{immediate:!0,handler:"init"},panel:{handler:"handelPanelChange"}},methods:{handelPanelChange:function(t,e){var n=this;this.dispatch("DatePicker","panel-change",[t,e]),"YEAR"===t?this.firstYear=10*Math.floor(this.calendarYear/10):"TIME"===t&&this.$nextTick((function(){for(var t=n.$el.querySelectorAll(".mx-panel-time .mx-time-list"),e=0,i=t.length;ethis.notAfterTime||e&&t>this.getCriticalTime(e)},inDisabledDays:function(t){var e=this;return Array.isArray(this.disabledDays)?this.disabledDays.some((function(n){return e.getCriticalTime(n)===t})):"function"==typeof this.disabledDays&&this.disabledDays(new Date(t))},isDisabledYear:function(t){var e=new Date(t,0).getTime(),n=new Date(t+1,0).getTime()-1;return this.inBefore(n)||this.inAfter(e)||"year"===this.type&&this.inDisabledDays(e)},isDisabledMonth:function(t){var e=new Date(this.calendarYear,t).getTime(),n=new Date(this.calendarYear,t+1).getTime()-1;return this.inBefore(n)||this.inAfter(e)||"month"===this.type&&this.inDisabledDays(e)},isDisabledDate:function(t){var e=new Date(t).getTime(),n=new Date(t).setHours(23,59,59,999);return this.inBefore(n)||this.inAfter(e)||this.inDisabledDays(e)},isDisabledTime:function(t,e,n){var i=new Date(t).getTime();return this.inBefore(i,e)||this.inAfter(i,n)||this.inDisabledDays(i)},selectDate:function(t){if("datetime"===this.type){var e=new Date(t);return l(this.value)&&e.setHours(this.value.getHours(),this.value.getMinutes(),this.value.getSeconds()),this.isDisabledTime(e)&&(e.setHours(0,0,0,0),this.notBefore&&e.getTime()=e?r():i=setTimeout(r,e)}}),window.addEventListener("resize",this._displayPopup),window.addEventListener("scroll",this._displayPopup)},beforeDestroy:function(){this.popupElm&&this.popupElm.parentNode===document.body&&document.body.removeChild(this.popupElm),window.removeEventListener("resize",this._displayPopup),window.removeEventListener("scroll",this._displayPopup)},methods:{initCalendar:function(){this.handleValueChange(this.value),this.displayPopup()},stringify:function(t){return c(this.format)&&"function"==typeof this.format.stringify?this.format.stringify(t):f(t,this.format)},parse:function(t){return c(this.format)&&"function"==typeof this.format.parse?this.format.parse(t):function(t,e){try{return o.a.parse(t,e)||null}catch(t){return null}}(t,this.format)},isValidValue:function(t){return u((0,this.transform.value2date)(t))},isValidRangeValue:function(t){var e=this.transform.value2date;return Array.isArray(t)&&2===t.length&&this.isValidValue(t[0])&&this.isValidValue(t[1])&&e(t[1]).getTime()>=e(t[0]).getTime()},dateEqual:function(t,e){return l(t)&&l(e)&&t.getTime()===e.getTime()},rangeEqual:function(t,e){var n=this;return Array.isArray(t)&&Array.isArray(e)&&t.length===e.length&&t.every((function(t,i){return n.dateEqual(t,e[i])}))},selectRange:function(t){"function"==typeof t.onClick?!1!==t.onClick(this)&&this.closePopup():(this.currentValue=[new Date(t.start),new Date(t.end)],this.updateDate(!0),this.closePopup())},clearDate:function(){var t=this.range?[null,null]:null;this.currentValue=t,this.updateDate(!0),this.$emit("clear")},confirmDate:function(){var t;(this.range?(t=this.currentValue,Array.isArray(t)&&2===t.length&&u(t[0])&&u(t[1])&&new Date(t[1]).getTime()>=new Date(t[0]).getTime()):u(this.currentValue))&&this.updateDate(!0),this.emitDate("confirm"),this.closePopup()},updateDate:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return!(this.confirm&&!t||this.disabled||(this.range?this.rangeEqual(this.value,this.currentValue):this.dateEqual(this.value,this.currentValue))||(this.emitDate("input"),this.emitDate("change"),0))},emitDate:function(t){var e=this.transform.date2value,n=this.range?this.currentValue.map(e):e(this.currentValue);this.$emit(t,n)},handleValueChange:function(t){var e=this.transform.value2date;this.range?this.currentValue=this.isValidRangeValue(t)?t.map(e):[null,null]:this.currentValue=this.isValidValue(t)?e(t):null},selectDate:function(t){this.currentValue=t,this.updateDate()&&this.closePopup()},selectStartDate:function(t){this.$set(this.currentValue,0,t),this.currentValue[1]&&this.updateDate()},selectEndDate:function(t){this.$set(this.currentValue,1,t),this.currentValue[0]&&this.updateDate()},selectTime:function(t,e){this.currentValue=t,this.updateDate()&&e&&this.closePopup()},selectStartTime:function(t){this.selectStartDate(t)},selectEndTime:function(t){this.selectEndDate(t)},showPopup:function(){this.disabled||(this.popupVisible=!0)},closePopup:function(){this.popupVisible=!1},getPopupSize:function(t){var e=t.style.display,n=t.style.visibility;t.style.display="block",t.style.visibility="hidden";var i=window.getComputedStyle(t),o={width:t.offsetWidth+parseInt(i.marginLeft)+parseInt(i.marginRight),height:t.offsetHeight+parseInt(i.marginTop)+parseInt(i.marginBottom)};return t.style.display=e,t.style.visibility=n,o},displayPopup:function(){var t=document.documentElement.clientWidth,e=document.documentElement.clientHeight,n=this.$el.getBoundingClientRect(),i=this._popupRect||(this._popupRect=this.getPopupSize(this.$refs.calendar)),o={},a=0,r=0;this.appendToBody&&(a=window.pageXOffset+n.left,r=window.pageYOffset+n.top),t-n.left]/;t.exports=function(t){var e,n=""+t,o=i.exec(n);if(!o)return n;var a="",r=0,s=0;for(r=o.index;r\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",a=o.console&&(o.console.warn||o.console.log);return a&&a.call(o.console,i,n),t.apply(this,arguments)}}c="function"!=typeof Object.assign?function(t){if(t===s||null===t)throw new TypeError("Cannot convert undefined or null to object");for(var e=Object(t),n=1;n-1}function S(t){return t.trim().split(/\s+/g)}function D(t,e,n){if(t.indexOf&&!n)return t.indexOf(e);for(var i=0;in[e]})):i.sort()),i}function I(t,e){for(var n,i,o=e[0].toUpperCase()+e.slice(1),a=0;a1&&!n.firstMultiple?n.firstMultiple=et(e):1===o&&(n.firstMultiple=!1);var a=n.firstInput,r=n.firstMultiple,c=r?r.center:a.center,l=e.center=nt(i);e.timeStamp=h(),e.deltaTime=e.timeStamp-a.timeStamp,e.angle=rt(c,l),e.distance=at(c,l),function(t,e){var n=e.center,i=t.offsetDelta||{},o=t.prevDelta||{},a=t.prevInput||{};e.eventType!==Y&&a.eventType!==R||(o=t.prevDelta={x:a.deltaX||0,y:a.deltaY||0},i=t.offsetDelta={x:n.x,y:n.y}),e.deltaX=o.x+(n.x-i.x),e.deltaY=o.y+(n.y-i.y)}(n,e),e.offsetDirection=ot(e.deltaX,e.deltaY);var u,d,p=it(e.deltaTime,e.deltaX,e.deltaY);e.overallVelocityX=p.x,e.overallVelocityY=p.y,e.overallVelocity=f(p.x)>f(p.y)?p.x:p.y,e.scale=r?(u=r.pointers,at((d=i)[0],d[1],K)/at(u[0],u[1],K)):1,e.rotation=r?function(t,e){return rt(e[1],e[0],K)+rt(t[1],t[0],K)}(r.pointers,i):0,e.maxPointers=n.prevInput?e.pointers.length>n.prevInput.maxPointers?e.pointers.length:n.prevInput.maxPointers:e.pointers.length,function(t,e){var n,i,o,a,r=t.lastInterval||e,c=e.timeStamp-r.timeStamp;if(e.eventType!=z&&(c>F||r.velocity===s)){var l=e.deltaX-r.deltaX,u=e.deltaY-r.deltaY,d=it(c,l,u);i=d.x,o=d.y,n=f(d.x)>f(d.y)?d.x:d.y,a=ot(l,u),t.lastInterval=e}else n=r.velocity,i=r.velocityX,o=r.velocityY,a=r.direction;e.velocity=n,e.velocityX=i,e.velocityY=o,e.direction=a}(n,e);var A=t.element;E(e.srcEvent.target,A)&&(A=e.srcEvent.target),e.target=A}(t,n),t.emit("hammer.input",n),t.recognize(n),t.session.prevInput=n}function et(t){for(var e=[],n=0;n=f(e)?t<0?Q:V:e<0?G:U}function at(t,e,n){n||(n=q);var i=e[n[0]]-t[n[0]],o=e[n[1]]-t[n[1]];return Math.sqrt(i*i+o*o)}function rt(t,e,n){n||(n=q);var i=e[n[0]]-t[n[0]],o=e[n[1]]-t[n[1]];return 180*Math.atan2(o,i)/Math.PI}J.prototype={handler:function(){},init:function(){this.evEl&&k(this.element,this.evEl,this.domHandler),this.evTarget&&k(this.target,this.evTarget,this.domHandler),this.evWin&&k(L(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&C(this.element,this.evEl,this.domHandler),this.evTarget&&C(this.target,this.evTarget,this.domHandler),this.evWin&&C(L(this.element),this.evWin,this.domHandler)}};var st={mousedown:Y,mousemove:2,mouseup:R},ct="mousedown",lt="mousemove mouseup";function ut(){this.evEl=ct,this.evWin=lt,this.pressed=!1,J.apply(this,arguments)}x(ut,J,{handler:function(t){var e=st[t.type];e&Y&&0===t.button&&(this.pressed=!0),2&e&&1!==t.which&&(e=R),this.pressed&&(e&R&&(this.pressed=!1),this.callback(this.manager,e,{pointers:[t],changedPointers:[t],pointerType:"mouse",srcEvent:t}))}});var dt={pointerdown:Y,pointermove:2,pointerup:R,pointercancel:z,pointerout:z},pt={2:"touch",3:"pen",4:"mouse",5:"kinect"},ft="pointerdown",ht="pointermove pointerup pointercancel";function At(){this.evEl=ft,this.evWin=ht,J.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}o.MSPointerEvent&&!o.PointerEvent&&(ft="MSPointerDown",ht="MSPointerMove MSPointerUp MSPointerCancel"),x(At,J,{handler:function(t){var e=this.store,n=!1,i=t.type.toLowerCase().replace("ms",""),o=dt[i],a=pt[t.pointerType]||t.pointerType,r="touch"==a,s=D(e,t.pointerId,"pointerId");o&Y&&(0===t.button||r)?s<0&&(e.push(t),s=e.length-1):o&(R|z)&&(n=!0),s<0||(e[s]=t,this.callback(this.manager,o,{pointers:e,changedPointers:[t],pointerType:a,srcEvent:t}),n&&e.splice(s,1))}});var vt={touchstart:Y,touchmove:2,touchend:R,touchcancel:z},mt="touchstart",gt="touchstart touchmove touchend touchcancel";function bt(){this.evTarget=mt,this.evWin=gt,this.started=!1,J.apply(this,arguments)}x(bt,J,{handler:function(t){var e=vt[t.type];if(e===Y&&(this.started=!0),this.started){var n=function(t,e){var n=O(t.touches),i=O(t.changedTouches);return e&(R|z)&&(n=B(n.concat(i),"identifier",!0)),[n,i]}.call(this,t,e);e&(R|z)&&n[0].length-n[1].length==0&&(this.started=!1),this.callback(this.manager,e,{pointers:n[0],changedPointers:n[1],pointerType:"touch",srcEvent:t})}}});var yt={touchstart:Y,touchmove:2,touchend:R,touchcancel:z},xt="touchstart touchmove touchend touchcancel";function wt(){this.evTarget=xt,this.targetIds={},J.apply(this,arguments)}x(wt,J,{handler:function(t){var e=yt[t.type],n=function(t,e){var n=O(t.touches),i=this.targetIds;if(e&(2|Y)&&1===n.length)return i[n[0].identifier]=!0,[n,n];var o,a,r=O(t.changedTouches),s=[],c=this.target;if(a=n.filter((function(t){return E(t.target,c)})),e===Y)for(o=0;o-1&&i.splice(t,1)}),_t)}}x(Tt,J,{handler:function(t,e,n){var i="touch"==n.pointerType,o="mouse"==n.pointerType;if(!(o&&n.sourceCapabilities&&n.sourceCapabilities.firesTouchEvents)){if(i)(function(t,e){t&Y?(this.primaryTouch=e.changedPointers[0].identifier,kt.call(this,e)):t&(R|z)&&kt.call(this,e)}).call(this,e,n);else if(o&&function(t){for(var e=t.srcEvent.clientX,n=t.srcEvent.clientY,i=0;i-1&&this.requireFail.splice(e,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(t){return!!this.simultaneous[t.id]},emit:function(t){var e=this,n=this.state;function i(n){e.manager.emit(n,t)}n=jt&&i(e.options.event+Rt(n))},tryEmit:function(t){if(this.canEmit())return this.emit(t);this.state=32},canEmit:function(){for(var t=0;te.threshold&&o&e.direction},attrTest:function(t){return Qt.prototype.attrTest.call(this,t)&&(this.state&Lt||!(this.state&Lt)&&this.directionTest(t))},emit:function(t){this.pX=t.deltaX,this.pY=t.deltaY;var e=zt(t.direction);e&&(t.additionalEvent=this.options.event+e),this._super.emit.call(this,t)}}),x(Gt,Qt,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[St]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.scale-1)>this.options.threshold||this.state&Lt)},emit:function(t){if(1!==t.scale){var e=t.scale<1?"in":"out";t.additionalEvent=this.options.event+e}this._super.emit.call(this,t)}}),x(Ut,Yt,{defaults:{event:"press",pointers:1,time:251,threshold:9},getTouchAction:function(){return["auto"]},process:function(t){var e=this.options,n=t.pointers.length===e.pointers,i=t.distancee.time;if(this._input=t,!i||!n||t.eventType&(R|z)&&!o)this.reset();else if(t.eventType&Y)this.reset(),this._timer=A((function(){this.state=$t,this.tryEmit()}),e.time,this);else if(t.eventType&R)return $t;return 32},reset:function(){clearTimeout(this._timer)},emit:function(t){this.state===$t&&(t&&t.eventType&R?this.manager.emit(this.options.event+"up",t):(this._input.timeStamp=h(),this.manager.emit(this.options.event,this._input)))}}),x(Wt,Qt,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[St]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.rotation)>this.options.threshold||this.state&Lt)}}),x(Zt,Qt,{defaults:{event:"swipe",threshold:10,velocity:.3,direction:W|Z,pointers:1},getTouchAction:function(){return Vt.prototype.getTouchAction.call(this)},attrTest:function(t){var e,n=this.options.direction;return n&(W|Z)?e=t.overallVelocity:n&W?e=t.overallVelocityX:n&Z&&(e=t.overallVelocityY),this._super.attrTest.call(this,t)&&n&t.offsetDirection&&t.distance>this.options.threshold&&t.maxPointers==this.options.pointers&&f(e)>this.options.velocity&&t.eventType&R},emit:function(t){var e=zt(t.offsetDirection);e&&this.manager.emit(this.options.event+e,t),this.manager.emit(this.options.event,t)}}),x(Xt,Yt,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[Mt]},process:function(t){var e=this.options,n=t.pointers.length===e.pointers,i=t.distancebutton[data-v-8dc4efb0],li>a[data-v-8dc4efb0],li>.menuitem[data-v-8dc4efb0]{cursor:pointer;line-height:44px;border:0;border-radius:0;background-color:transparent;display:flex;align-items:flex-start;height:auto;margin:0;padding:0;font-weight:normal;box-shadow:none;width:100%;color:var(--color-main-text);white-space:nowrap;opacity:.7}li>button span[class^='icon-'][data-v-8dc4efb0],li>button span[class*=' icon-'][data-v-8dc4efb0],li>button[class^='icon-'][data-v-8dc4efb0],li>button[class*=' icon-'][data-v-8dc4efb0],li>a span[class^='icon-'][data-v-8dc4efb0],li>a span[class*=' icon-'][data-v-8dc4efb0],li>a[class^='icon-'][data-v-8dc4efb0],li>a[class*=' icon-'][data-v-8dc4efb0],li>.menuitem span[class^='icon-'][data-v-8dc4efb0],li>.menuitem span[class*=' icon-'][data-v-8dc4efb0],li>.menuitem[class^='icon-'][data-v-8dc4efb0],li>.menuitem[class*=' icon-'][data-v-8dc4efb0]{min-width:0;min-height:0;background-position:14px center;background-size:16px}li>button span[class^='icon-'][data-v-8dc4efb0],li>button span[class*=' icon-'][data-v-8dc4efb0],li>a span[class^='icon-'][data-v-8dc4efb0],li>a span[class*=' icon-'][data-v-8dc4efb0],li>.menuitem span[class^='icon-'][data-v-8dc4efb0],li>.menuitem span[class*=' icon-'][data-v-8dc4efb0]{padding:22px 0 22px 44px}li>button:not([class^='icon-']):not([class*='icon-'])>span[data-v-8dc4efb0]:not([class^='icon-']):not([class*='icon-']):first-child,li>button:not([class^='icon-']):not([class*='icon-'])>input[data-v-8dc4efb0]:not([class^='icon-']):not([class*='icon-']):first-child,li>button:not([class^='icon-']):not([class*='icon-'])>form[data-v-8dc4efb0]:not([class^='icon-']):not([class*='icon-']):first-child,li>a:not([class^='icon-']):not([class*='icon-'])>span[data-v-8dc4efb0]:not([class^='icon-']):not([class*='icon-']):first-child,li>a:not([class^='icon-']):not([class*='icon-'])>input[data-v-8dc4efb0]:not([class^='icon-']):not([class*='icon-']):first-child,li>a:not([class^='icon-']):not([class*='icon-'])>form[data-v-8dc4efb0]:not([class^='icon-']):not([class*='icon-']):first-child,li>.menuitem:not([class^='icon-']):not([class*='icon-'])>span[data-v-8dc4efb0]:not([class^='icon-']):not([class*='icon-']):first-child,li>.menuitem:not([class^='icon-']):not([class*='icon-'])>input[data-v-8dc4efb0]:not([class^='icon-']):not([class*='icon-']):first-child,li>.menuitem:not([class^='icon-']):not([class*='icon-'])>form[data-v-8dc4efb0]:not([class^='icon-']):not([class*='icon-']):first-child{margin-left:44px}li>button[class^='icon-'][data-v-8dc4efb0],li>button[class*=' icon-'][data-v-8dc4efb0],li>a[class^='icon-'][data-v-8dc4efb0],li>a[class*=' icon-'][data-v-8dc4efb0],li>.menuitem[class^='icon-'][data-v-8dc4efb0],li>.menuitem[class*=' icon-'][data-v-8dc4efb0]{padding:0 14px 0 44px}li>button[data-v-8dc4efb0]:not(:disabled):hover,li>button[data-v-8dc4efb0]:not(:disabled):focus,li>button:not(:disabled).active[data-v-8dc4efb0],li>a[data-v-8dc4efb0]:not(:disabled):hover,li>a[data-v-8dc4efb0]:not(:disabled):focus,li>a:not(:disabled).active[data-v-8dc4efb0],li>.menuitem[data-v-8dc4efb0]:not(:disabled):hover,li>.menuitem[data-v-8dc4efb0]:not(:disabled):focus,li>.menuitem:not(:disabled).active[data-v-8dc4efb0]{opacity:1 !important}li>button.action[data-v-8dc4efb0],li>a.action[data-v-8dc4efb0],li>.menuitem.action[data-v-8dc4efb0]{padding:inherit !important}li>button>span[data-v-8dc4efb0],li>a>span[data-v-8dc4efb0],li>.menuitem>span[data-v-8dc4efb0]{cursor:pointer;white-space:nowrap}li>button>p[data-v-8dc4efb0],li>a>p[data-v-8dc4efb0],li>.menuitem>p[data-v-8dc4efb0]{width:150px;line-height:1.6em;padding:8px 0;white-space:normal}li>button>select[data-v-8dc4efb0],li>a>select[data-v-8dc4efb0],li>.menuitem>select[data-v-8dc4efb0]{margin:0;margin-left:6px}li>button[data-v-8dc4efb0]:not(:empty),li>a[data-v-8dc4efb0]:not(:empty),li>.menuitem[data-v-8dc4efb0]:not(:empty){padding-right:14px !important}li>button>img[data-v-8dc4efb0],li>a>img[data-v-8dc4efb0],li>.menuitem>img[data-v-8dc4efb0]{width:16px;padding:14px}li>button>input.radio+label[data-v-8dc4efb0],li>button>input.checkbox+label[data-v-8dc4efb0],li>a>input.radio+label[data-v-8dc4efb0],li>a>input.checkbox+label[data-v-8dc4efb0],li>.menuitem>input.radio+label[data-v-8dc4efb0],li>.menuitem>input.checkbox+label[data-v-8dc4efb0]{padding:0 !important;width:100%}li>button>input.checkbox+label[data-v-8dc4efb0]::before,li>a>input.checkbox+label[data-v-8dc4efb0]::before,li>.menuitem>input.checkbox+label[data-v-8dc4efb0]::before{margin:-2px 13px 0}li>button>input.radio+label[data-v-8dc4efb0]::before,li>a>input.radio+label[data-v-8dc4efb0]::before,li>.menuitem>input.radio+label[data-v-8dc4efb0]::before{margin:-2px 12px 0}li>button>input[data-v-8dc4efb0]:not([type=radio]):not([type=checkbox]):not([type=image]),li>a>input[data-v-8dc4efb0]:not([type=radio]):not([type=checkbox]):not([type=image]),li>.menuitem>input[data-v-8dc4efb0]:not([type=radio]):not([type=checkbox]):not([type=image]){width:150px}li>button form[data-v-8dc4efb0],li>a form[data-v-8dc4efb0],li>.menuitem form[data-v-8dc4efb0]{display:flex;flex:1 1 auto}li>button form[data-v-8dc4efb0]:not(:first-child),li>a form[data-v-8dc4efb0]:not(:first-child),li>.menuitem form[data-v-8dc4efb0]:not(:first-child){margin-left:5px}li>button>span.hidden+form[data-v-8dc4efb0],li>button>span[style*='display:none']+form[data-v-8dc4efb0],li>a>span.hidden+form[data-v-8dc4efb0],li>a>span[style*='display:none']+form[data-v-8dc4efb0],li>.menuitem>span.hidden+form[data-v-8dc4efb0],li>.menuitem>span[style*='display:none']+form[data-v-8dc4efb0]{margin-left:0}li>button input[data-v-8dc4efb0],li>a input[data-v-8dc4efb0],li>.menuitem input[data-v-8dc4efb0]{min-width:44px;max-height:40px;margin:2px 0;flex:1 1 auto}li>button input[data-v-8dc4efb0]:not(:first-child),li>a input[data-v-8dc4efb0]:not(:first-child),li>.menuitem input[data-v-8dc4efb0]:not(:first-child){margin-left:5px}li:not(.hidden):not([style*='display:none']):first-of-type>button>form[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):first-of-type>button>input[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):first-of-type>a>form[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):first-of-type>a>input[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):first-of-type>.menuitem>form[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):first-of-type>.menuitem>input[data-v-8dc4efb0]{margin-top:12px}li:not(.hidden):not([style*='display:none']):last-of-type>button>form[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):last-of-type>button>input[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):last-of-type>a>form[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):last-of-type>a>input[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):last-of-type>.menuitem>form[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):last-of-type>.menuitem>input[data-v-8dc4efb0]{margin-bottom:12px}li>button[data-v-8dc4efb0]{padding:0}li>button span[data-v-8dc4efb0]{opacity:1}\n",""])},function(t,e,n){"use strict";var i=n(20);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,"ul[data-v-2f982451]{display:flex;flex-direction:column}\n",""])},function(t,e,n){var i=n(146);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("504198fc",i,!0,{})},function(t,e,n){var i=n(148);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("efb117ce",i,!0,{})},function(t,e,n){var i=n(150);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("89c943dc",i,!0,{})},function(t,e,n){var i=n(152);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("766647a2",i,!0,{})},function(t,e,n){var i=n(154);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("55805cbd",i,!0,{})},function(t,e,n){var i=n(156);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("19f30fef",i,!0,{})},function(t,e,n){var i=n(158);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("55b308c7",i,!0,{})},function(t,e,n){var i=n(160);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("0c820946",i,!0,{})},function(t,e,n){var i=n(162);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("7d41231a",i,!0,{})},function(t,e,n){var i=n(164);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("4b6feab4",i,!0,{})},function(t,e,n){var i=n(166);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("2eb234c2",i,!0,{})},function(t,e,n){var i=n(168);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("30caeb37",i,!0,{})},function(t,e,n){var i=n(170);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("4dd3631b",i,!0,{})},function(t,e,n){var i=n(172);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("0a4af55c",i,!0,{})},function(t,e,n){var i=n(174);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("acfb770c",i,!0,{})},function(t,e,n){var i=n(176);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("05387ef8",i,!0,{})},function(t,e,n){var i=n(178);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("a375d0ac",i,!0,{})},function(t,e,n){"use strict";n.r(e);var i,o=n(38),a=n.n(o),r=n(77),s=n.n(r),c=n(6),l=n(24),u=n(13),d=n.n(u),p=n(78),f=n.n(p),h=n(79),A=n.n(h),v={name:"Avatar",directives:{tooltip:c.default,ClickOutside:d.a},components:{PopoverMenu:l.PopoverMenu},props:{url:{type:String,default:void 0},user:{type:String,default:void 0},isGuest:{type:Boolean,default:!1},displayName:{type:String,default:void 0},size:{type:Number,default:32},allowPlaceholder:{type:Boolean,default:!0},disableTooltip:{type:Boolean,default:!1},disableMenu:{type:Boolean,default:!1},tooltipMessage:{type:String,default:null},isNoUser:{type:Boolean,default:!1},status:{type:String,default:null,validator:function(t){switch(t){case"positive":case"negative":case"neutral":return!0}return!1}},statusColor:{type:[Number,String],default:null,validator:function(t){return/^([a-f0-9]{3}){1,2}$/i.test(t)}}},data:function(){return{avatarUrlLoaded:null,avatarSrcSetLoaded:null,userDoesNotExist:!1,isAvatarLoaded:!1,isMenuLoaded:!1,contactsMenuActions:[],contactsMenuOpenState:!1}},computed:{getUserIdentifier:function(){return this.isDisplayNameDefined?this.displayName:this.isUserDefined?this.user:""},isUserDefined:function(){return void 0!==this.user},isDisplayNameDefined:function(){return void 0!==this.displayName},isUrlDefined:function(){return void 0!==this.url},hasMenu:function(){return!this.disableMenu&&(this.isMenuLoaded?this.menu.length>0:!(this.user===OC.getCurrentUser().uid||this.userDoesNotExist||this.url))},shouldShowPlaceholder:function(){return this.allowPlaceholder&&this.userDoesNotExist},avatarStyle:function(){var t={width:this.size+"px",height:this.size+"px",lineHeight:this.size+"px",fontSize:Math.round(.55*this.size)+"px"},e=function(t){var e=t.toLowerCase();function n(t,e,n){this.r=t,this.g=e,this.b=n}function i(t,e,i){var o=[];o.push(e);for(var a=function(t,e){var n=new Array(3);return n[0]=(e[1].r-e[0].r)/t,n[1]=(e[1].g-e[0].g)/t,n[2]=(e[1].b-e[0].b)/t,n}(t,[e,i]),r=1;r + * + * @author Julius Härtl + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ +e.default=x},function(t,e,n){"use strict";n.r(e);var i={name:"ActionButton",mixins:[n(14).a],props:{disabled:{type:Boolean,default:!1}},computed:{isFocusable:function(){return!this.disabled}}},o=(n(90),n(0)),a=n(35),r=n.n(a),s=Object(o.a)(i,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("li",{class:{"action--disabled":t.disabled}},[n("button",{staticClass:"action-button",class:{focusable:t.isFocusable},on:{click:t.onClick}},[n("span",{staticClass:"action-button__icon",class:[t.isIconUrl?"action-button__icon--url":t.icon],style:{backgroundImage:t.isIconUrl?"url("+t.icon+")":null}}),t._v(" "),t.title?n("p",[n("strong",{staticClass:"action-button__title"},[t._v("\n\t\t\t\t"+t._s(t.title)+"\n\t\t\t")]),t._v(" "),n("br"),t._v(" "),n("span",{staticClass:"action-button__longtext",domProps:{textContent:t._s(t.text)}})]):t.isLongText?n("p",{staticClass:"action-button__longtext",domProps:{textContent:t._s(t.text)}}):n("span",{staticClass:"action-button__text"},[t._v(t._s(t.text))]),t._v(" "),t._e()],2)])}),[],!1,null,"37538719",null);"function"==typeof r.a&&r()(s);var c=s.exports;n.d(e,"ActionButton",(function(){return c})), +/** + * @copyright Copyright (c) 2019 John Molakvoæ + * + * @author John Molakvoæ + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ +e.default=c},function(t,e,n){"use strict";n.r(e);var i=n(23),o=n(31),a=n.n(o);a.a.components.CalendarPanel.components.PanelTime.methods.stringifyText=function(t){return t},a.a.methods.displayPopup=function(){var t=this.$el.querySelector(".mx-datepicker-popup");t&&!t.classList.contains("popovermenu")&&(t.className+=" popovermenu menu-center open")};var r={name:"DatetimePicker",components:{DatePicker:a.a},inheritAttrs:!1,props:{value:{default:function(){return new Date}}},methods:{handleSelectYear:function(t){var e=this.$refs.datepicker.currentValue;if(e)try{var n=new Date(new Date(e).setFullYear(t));this.$refs.datepicker.selectDate(n)}catch(n){console.error("Invalid value",e,t)}},handleSelectMonth:function(t){var e=this.$refs.datepicker.currentValue;if(e)try{var n=new Date(new Date(e).setMonth(t));this.$refs.datepicker.selectDate(n)}catch(n){console.error("Invalid value",e,t)}}}},s=n(0),c=n(36),l=n.n(c),u=Object(s.a)(r,(function(){var t=this,e=t.$createElement;return(t._self._c||e)("DatePicker",t._g(t._b({ref:"datepicker",attrs:{clearable:!1,"minute-step":10,value:t.value},on:{"select-year":t.handleSelectYear,"select-month":t.handleSelectMonth,"update:value":function(e){return t.$emit("update:value",t.value)}}},"DatePicker",t.$attrs,!1),t.$listeners))}),[],!1,null,null,null);"function"==typeof l.a&&l()(u);var d=u.exports;n(92),n.d(e,"DatetimePicker",(function(){return d})), +/** + * @copyright Copyright (c) 2018 John Molakvoæ + * + * @author John Molakvoæ + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ +Object(i.a)(d),e.default=d},function(t,e,n){"use strict";n.r(e);var i={name:"AppNavigationCounter",props:{highlighted:{type:Boolean,default:!1}}},o=(n(96),n(0)),a=n(37),r=n.n(a),s=Object(o.a)(i,(function(){var t=this.$createElement,e=this._self._c||t;return e("li",{staticClass:"app-navigation-entry-utils-counter",class:{highlighted:this.highlighted}},[e("span",[this._t("default")],2)])}),[],!1,null,"7ed17014",null);"function"==typeof r.a&&r()(s);var c=s.exports;n.d(e,"AppNavigationCounter",(function(){return c})), +/** + * @copyright Copyright (c) 2019 Marco Ambrosini + * + * @author Marco Ambrosini + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ +e.default=c},function(t,e,n){"use strict";t.exports=function(t,e){return function(){for(var n=new Array(arguments.length),i=0;i=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};i.forEach(["delete","get","head"],(function(t){c.headers[t]={}})),i.forEach(["post","put","patch"],(function(t){c.headers[t]=i.merge(a)})),t.exports=c}).call(this,n(106))},function(t,e,n){"use strict";var i=n(4),o=n(108),a=n(69),r=n(110),s=n(111),c=n(73);t.exports=function(t){return new Promise((function(e,l){var u=t.data,d=t.headers;i.isFormData(u)&&delete d["Content-Type"];var p=new XMLHttpRequest;if(t.auth){var f=t.auth.username||"",h=t.auth.password||"";d.Authorization="Basic "+btoa(f+":"+h)}if(p.open(t.method.toUpperCase(),a(t.url,t.params,t.paramsSerializer),!0),p.timeout=t.timeout,p.onreadystatechange=function(){if(p&&4===p.readyState&&(0!==p.status||p.responseURL&&0===p.responseURL.indexOf("file:"))){var n="getAllResponseHeaders"in p?r(p.getAllResponseHeaders()):null,i={data:t.responseType&&"text"!==t.responseType?p.response:p.responseText,status:p.status,statusText:p.statusText,headers:n,config:t,request:p};o(e,l,i),p=null}},p.onabort=function(){p&&(l(c("Request aborted",t,"ECONNABORTED",p)),p=null)},p.onerror=function(){l(c("Network Error",t,null,p)),p=null},p.ontimeout=function(){l(c("timeout of "+t.timeout+"ms exceeded",t,"ECONNABORTED",p)),p=null},i.isStandardBrowserEnv()){var A=n(112),v=(t.withCredentials||s(t.url))&&t.xsrfCookieName?A.read(t.xsrfCookieName):void 0;v&&(d[t.xsrfHeaderName]=v)}if("setRequestHeader"in p&&i.forEach(d,(function(t,e){void 0===u&&"content-type"===e.toLowerCase()?delete d[e]:p.setRequestHeader(e,t)})),t.withCredentials&&(p.withCredentials=!0),t.responseType)try{p.responseType=t.responseType}catch(e){if("json"!==t.responseType)throw e}"function"==typeof t.onDownloadProgress&&p.addEventListener("progress",t.onDownloadProgress),"function"==typeof t.onUploadProgress&&p.upload&&p.upload.addEventListener("progress",t.onUploadProgress),t.cancelToken&&t.cancelToken.promise.then((function(t){p&&(p.abort(),l(t),p=null)})),void 0===u&&(u=null),p.send(u)}))}},function(t,e,n){"use strict";var i=n(109);t.exports=function(t,e,n,o,a){var r=new Error(t);return i(r,e,n,o,a)}},function(t,e,n){"use strict";var i=n(4);t.exports=function(t,e){e=e||{};var n={};return i.forEach(["url","method","params","data"],(function(t){void 0!==e[t]&&(n[t]=e[t])})),i.forEach(["headers","auth","proxy"],(function(o){i.isObject(e[o])?n[o]=i.deepMerge(t[o],e[o]):void 0!==e[o]?n[o]=e[o]:i.isObject(t[o])?n[o]=i.deepMerge(t[o]):void 0!==t[o]&&(n[o]=t[o])})),i.forEach(["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","maxContentLength","validateStatus","maxRedirects","httpAgent","httpsAgent","cancelToken","socketPath"],(function(i){void 0!==e[i]?n[i]=e[i]:void 0!==t[i]&&(n[i]=t[i])})),n}},function(t,e,n){"use strict";function i(t){this.message=t}i.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},i.prototype.__CANCEL__=!0,t.exports=i},function(t,e){var n={utf8:{stringToBytes:function(t){return n.bin.stringToBytes(unescape(encodeURIComponent(t)))},bytesToString:function(t){return decodeURIComponent(escape(n.bin.bytesToString(t)))}},bin:{stringToBytes:function(t){for(var e=[],n=0;n>>24)|4278255360&(n[f]<<24|n[f]>>>8);n[c>>>5]|=128<>>9<<4)]=c;var h=s._ff,A=s._gg,v=s._hh,m=s._ii;for(f=0;f>>0,u=u+b>>>0,d=d+y>>>0,p=p+x>>>0}return i.endian([l,u,d,p])})._ff=function(t,e,n,i,o,a,r){var s=t+(e&n|~e&i)+(o>>>0)+r;return(s<>>32-a)+e},s._gg=function(t,e,n,i,o,a,r){var s=t+(e&i|n&~i)+(o>>>0)+r;return(s<>>32-a)+e},s._hh=function(t,e,n,i,o,a,r){var s=t+(e^n^i)+(o>>>0)+r;return(s<>>32-a)+e},s._ii=function(t,e,n,i,o,a,r){var s=t+(n^(e|~i))+(o>>>0)+r;return(s<>>32-a)+e},s._blocksize=16,s._digestsize=16,t.exports=function(t,e){if(null==t)throw new Error("Illegal argument "+t);var n=i.wordsToBytes(s(t,e));return e&&e.asBytes?n:e&&e.asString?r.bytesToString(n):i.bytesToHex(n)}},function(t,e,n){"use strict";var i=n(22);n.n(i).a},function(t,e,n){e=t.exports=n(1)(!1);var i=n(8),o=i(n(9)),a=i(n(10)),r=i(n(11)),s=i(n(12));e.push([t.i,'@font-face{font-family:"iconfont-vue";src:url('+o+");src:url("+o+') format("embedded-opentype"),url('+a+') format("woff"),url('+r+') format("truetype"),url('+s+') format("svg")}.icon[data-v-627a433f]{font-style:normal;font-weight:400}.icon.arrow-left-double[data-v-627a433f]:before{font-family:"iconfont-vue";content:""}.icon.arrow-left[data-v-627a433f]:before{font-family:"iconfont-vue";content:""}.icon.arrow-right-double[data-v-627a433f]:before{font-family:"iconfont-vue";content:""}.icon.arrow-right[data-v-627a433f]:before{font-family:"iconfont-vue";content:""}.icon.close[data-v-627a433f]:before{font-family:"iconfont-vue";content:""}.icon.confirm-fade[data-v-627a433f]:before{font-family:"iconfont-vue";content:""}.icon.confirm[data-v-627a433f]:before{font-family:"iconfont-vue";content:""}.icon.menu[data-v-627a433f]:before{font-family:"iconfont-vue";content:""}.icon.more[data-v-627a433f]:before{font-family:"iconfont-vue";content:""}.icon.pause[data-v-627a433f]:before{font-family:"iconfont-vue";content:""}.icon.play[data-v-627a433f]:before{font-family:"iconfont-vue";content:""}.action-item[data-v-627a433f]{position:relative;display:inline-block}.action-item--single[data-v-627a433f]:hover,.action-item--single[data-v-627a433f]:focus,.action-item--single[data-v-627a433f]:active,.action-item__menutoggle[data-v-627a433f]:hover,.action-item__menutoggle[data-v-627a433f]:focus,.action-item__menutoggle[data-v-627a433f]:active{border-radius:22px;background-color:rgba(127,127,127,0.25) !important;opacity:1}.action-item.action-item--open .action-item__menutoggle[data-v-627a433f]{opacity:1;border-radius:22px;background-color:rgba(127,127,127,0.25)}.action-item--single[data-v-627a433f],.action-item__menutoggle[data-v-627a433f]{box-sizing:border-box;width:44px;height:44px;margin:0;padding:14px;cursor:pointer;border:none;background-color:transparent}.action-item__menutoggle[data-v-627a433f]{display:flex;align-items:center;justify-content:center;opacity:.7;font-size:16px}.action-item__menutoggle[data-v-627a433f]:before{font-family:"iconfont-vue";font-style:normal;font-weight:400;content:""}.action-item--single[data-v-627a433f]{opacity:.7}.action-item--single[data-v-627a433f]:hover,.action-item--single[data-v-627a433f]:focus,.action-item--single[data-v-627a433f]:active{opacity:1}.action-item--single>[hidden][data-v-627a433f]{display:none}.action-item--multiple[data-v-627a433f]{position:relative}.action-item__menu[data-v-627a433f]{position:absolute;z-index:110;right:50%;display:none;margin:10px;margin-top:-5px;transform:translateX(50%);color:var(--color-main-text);border-radius:var(--border-radius);background-color:var(--color-main-background);filter:drop-shadow(0 1px 3px var(--color-box-shadow))}.action-item__menu ul[data-v-627a433f]>:not(li){display:none}.action-item__menu.open[data-v-627a433f]{display:block}.action-item__menu .action-item__menu_arrow[data-v-627a433f]{position:absolute;right:50%;bottom:100%;width:0;height:0;margin-right:-9px;content:\' \';pointer-events:none;border:solid transparent;border-width:9px;border-bottom-color:var(--color-main-background)}.action-item__menu.menu-right[data-v-627a433f]{right:0;left:auto;transform:none}.action-item__menu.menu-right .action-item__menu_arrow[data-v-627a433f]{right:13px;margin-right:0}.action-item__menu.menu-left[data-v-627a433f]{right:auto;left:0;transform:none}.action-item__menu.menu-left .action-item__menu_arrow[data-v-627a433f]{right:auto;left:13px;margin-right:0}.ie .action-item__menu[data-v-627a433f],.ie .action-item__menu .action-item__menu_arrow[data-v-627a433f],.edge .action-item__menu[data-v-627a433f],.edge .action-item__menu .action-item__menu_arrow[data-v-627a433f]{border:1px solid var(--color-border)}\n',""])},function(t,e,n){"use strict";n.r(e);var i=(n(94),n(0)),o=Object(i.a)({name:"AppNavigationToggle",methods:{emitClick:function(){this.$emit("click")}}},(function(){var t=this,e=t.$createElement;return(t._self._c||e)("a",{attrs:{id:"app-navigation-toggle",tabindex:"0",href:"#"},on:{click:function(e){return e.preventDefault(),t.emitClick(e)},keydown:function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"space",32,e.key,[" ","Spacebar"])?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.emitClick(e))}}})}),[],!1,null,"d9538ec8",null).exports;n.d(e,"AppNavigationSpacer",(function(){return o})), +/** + * @copyright 2019 Christoph Wurst + * + * @author 2019 Christoph Wurst + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ +e.default=o},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e,n){"use strict";var i=n(26);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,"li.active[data-v-37538719]{box-shadow:inset 4px 0 var(--color-primary)}.action--disabled[data-v-37538719]{pointer-events:none;opacity:.5}.action--disabled[data-v-37538719]:hover,.action--disabled[data-v-37538719]:focus{cursor:default;opacity:.5}.action--disabled *[data-v-37538719]{opacity:1 !important}.action-button[data-v-37538719]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;padding-right:14px;cursor:pointer;white-space:nowrap;opacity:.7;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:normal;line-height:44px}.action-button[data-v-37538719]:hover,.action-button[data-v-37538719]:focus{opacity:1}.action-button>span[data-v-37538719]{cursor:pointer;white-space:nowrap}.action-button__icon[data-v-37538719]{width:44px;height:44px;opacity:1;background-position:14px center;background-size:16px}.action-button p[data-v-37538719]{width:150px;padding:7px 0;cursor:pointer;text-align:left;line-height:1.6em}.action-button__longtext[data-v-37538719]{cursor:pointer;white-space:pre-wrap}.action-button__title[data-v-37538719]{font-weight:bold}\n",""])},function(t,e,n){var i=n(93);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("600615ea",i,!0,{})},function(t,e,n){e=t.exports=n(1)(!1);var i=n(8),o=i(n(9)),a=i(n(10)),r=i(n(11)),s=i(n(12));e.push([t.i,'@font-face{font-family:"iconfont-vue";src:url('+o+");src:url("+o+') format("embedded-opentype"),url('+a+') format("woff"),url('+r+') format("truetype"),url('+s+') format("svg")}.icon{font-style:normal;font-weight:400}.icon.arrow-left-double:before{font-family:"iconfont-vue";content:""}.icon.arrow-left:before{font-family:"iconfont-vue";content:""}.icon.arrow-right-double:before{font-family:"iconfont-vue";content:""}.icon.arrow-right:before{font-family:"iconfont-vue";content:""}.icon.close:before{font-family:"iconfont-vue";content:""}.icon.confirm-fade:before{font-family:"iconfont-vue";content:""}.icon.confirm:before{font-family:"iconfont-vue";content:""}.icon.menu:before{font-family:"iconfont-vue";content:""}.icon.more:before{font-family:"iconfont-vue";content:""}.icon.pause:before{font-family:"iconfont-vue";content:""}.icon.play:before{font-family:"iconfont-vue";content:""}.mx-datepicker[data-v-6673a70]{width:210px;color:inherit;user-select:none;position:relative;display:inline-block}.mx-datepicker[data-v-6673a70].disabled{opacity:.7;cursor:not-allowed}.mx-datepicker[data-v-6673a70] .mx-input-wrapper .mx-input{width:100%}.mx-datepicker[data-v-6673a70] .mx-input-wrapper .mx-input-append{position:absolute;top:0;right:0;width:30px;height:100%;padding:6px;background-color:var(--color-main-background);background-clip:content-box}.mx-datepicker[data-v-6673a70] .mx-input-wrapper .mx-input-append .mx-input-icon{display:inline-block;font-style:normal;text-align:center;cursor:pointer}.mx-datepicker[data-v-6673a70] .mx-input-wrapper .mx-input-append .mx-clear-wrapper{display:none}.mx-datepicker[data-v-6673a70] .mx-input-wrapper .mx-input-append .mx-calendar-icon{stroke-width:8px;stroke:currentColor;fill:currentColor;width:100%;height:100%;color:var(--color-text-lighter)}.mx-datepicker[data-v-6673a70] .mx-datepicker-popup{box-shadow:none;background-color:var(--color-main-background);position:absolute;margin-top:1px;margin-bottom:1px;z-index:1000}.mx-datepicker[data-v-6673a70] .mx-range-wrapper{display:flex;overflow:hidden}.mx-datepicker[data-v-6673a70] .mx-range-wrapper .mx-calendar:first-child{box-shadow:var(--color-border) 1px 0px !important}.mx-datepicker[data-v-6673a70] .mx-range-wrapper .mx-calendar-content .mx-panel .cell.actived{border-radius:var(--border-radius) 0 0 var(--border-radius)}.mx-datepicker[data-v-6673a70] .mx-range-wrapper .mx-calendar-content .mx-panel .cell.inrange+.cell.actived{border-radius:0 var(--border-radius) var(--border-radius) 0}.mx-datepicker[data-v-6673a70] .mx-shortcuts-wrapper{display:flex;justify-content:space-evenly;padding:5px;border-bottom:1px solid var(--color-border)}.mx-datepicker[data-v-6673a70] .mx-shortcuts-wrapper .mx-shortcuts{font-weight:normal}.mx-datepicker[data-v-6673a70] .mx-calendar{font:inherit;color:var(--color-main-text);padding:5px;width:234px}.mx-datepicker[data-v-6673a70] .mx-calendar-header{padding:0 4px;margin-bottom:4px;text-align:center;overflow:hidden;display:flex;align-items:center;justify-content:space-between}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a{text-decoration:none;cursor:pointer;color:var(--color-text-lighter);padding:7px 10px;margin:0 auto;border-radius:32px;height:32px;line-height:20px;min-width:32px}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a:hover,.mx-datepicker[data-v-6673a70] .mx-calendar-header>a:focus{opacity:1;color:var(--color-main-text);background-color:var(--color-background-darker)}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-last-year,.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-last-month,.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-next-month,.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-next-year{background-position:center;background-repeat:no-repeat;font-size:0;opacity:.5;display:flex;align-items:center;justify-content:center;padding:0}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-last-year:before,.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-last-month:before,.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-next-month:before,.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-next-year:before{display:block;font-size:16px}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-last-year:before{font-family:"iconfont-vue";font-style:normal;font-weight:400;content:""}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-last-month:before{font-family:"iconfont-vue";font-style:normal;font-weight:400;content:""}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-next-month{order:3}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-next-month:before{font-family:"iconfont-vue";font-style:normal;font-weight:400;content:""}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-next-year{order:4}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-next-year:before{font-family:"iconfont-vue";font-style:normal;font-weight:400;content:""}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel{width:100%;height:100%;text-align:center}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel .cell{opacity:.7;border-radius:50px;transition:all 100ms ease-in-out;cursor:pointer}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel .cell:hover,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel .cell:focus,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel .cell.actived,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel .cell.inrange{font-weight:bold;opacity:1;color:var(--color-primary-text);background-color:var(--color-primary-element)}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel .cell.inrange,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel .cell.disabled{border-radius:0;font-weight:normal}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel .cell.inrange{opacity:.7}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel .cell.disabled{color:var(--color-text-lighter);opacity:.5;background-color:var(--color-background-darker)}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel span.cell,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel li.cell{min-height:32px}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date{table-layout:fixed;border-collapse:collapse;border-spacing:0}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date td,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date th{font-size:12px;width:32px;height:32px;line-height:30px;border:0;padding:0;padding-top:2px;overflow:hidden;text-align:center}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date th{color:var(--color-text-lighter);opacity:.5}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date td.today{color:var(--color-primary);opacity:1;font-weight:bold}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date td.last-month,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date td.next-month{color:var(--color-text-lighter);opacity:.5}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date tr:hover,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date tr:focus,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date tr:active{background:none}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-year,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-month{display:flex;flex-wrap:wrap;justify-content:space-around}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-year span.cell,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-month span.cell{display:block;padding:5px;height:44px;line-height:36px;margin-bottom:1%}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-year .cell{width:45%}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-month .cell{width:30%}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-time{display:flex}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-time .mx-time-list{position:relative;width:100%;height:100%;padding:5px;margin:0;list-style:none;overflow-y:auto;max-height:220px}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-time .mx-time-list .mx-time-picker-item{display:block;text-align:left;padding-left:10px}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-time .mx-time-list .cell{display:flex;justify-content:center;margin-bottom:1px;width:100%;font-size:12px;height:32px;line-height:32px}.mx-datepicker[data-v-6673a70] .mx-datepicker-footer{padding:4px;clear:both;text-align:right;border-top:1px solid var(--color-border)}\n',""])},function(t,e,n){"use strict";var i=n(27);n.n(i).a},function(t,e,n){e=t.exports=n(1)(!1);var i=n(8),o=i(n(9)),a=i(n(10)),r=i(n(11)),s=i(n(12));e.push([t.i,'@font-face{font-family:"iconfont-vue";src:url('+o+");src:url("+o+') format("embedded-opentype"),url('+a+') format("woff"),url('+r+') format("truetype"),url('+s+') format("svg")}.icon[data-v-d9538ec8]{font-style:normal;font-weight:400}.icon.arrow-left-double[data-v-d9538ec8]:before{font-family:"iconfont-vue";content:""}.icon.arrow-left[data-v-d9538ec8]:before{font-family:"iconfont-vue";content:""}.icon.arrow-right-double[data-v-d9538ec8]:before{font-family:"iconfont-vue";content:""}.icon.arrow-right[data-v-d9538ec8]:before{font-family:"iconfont-vue";content:""}.icon.close[data-v-d9538ec8]:before{font-family:"iconfont-vue";content:""}.icon.confirm-fade[data-v-d9538ec8]:before{font-family:"iconfont-vue";content:""}.icon.confirm[data-v-d9538ec8]:before{font-family:"iconfont-vue";content:""}.icon.menu[data-v-d9538ec8]:before{font-family:"iconfont-vue";content:""}.icon.more[data-v-d9538ec8]:before{font-family:"iconfont-vue";content:""}.icon.pause[data-v-d9538ec8]:before{font-family:"iconfont-vue";content:""}.icon.play[data-v-d9538ec8]:before{font-family:"iconfont-vue";content:""}#app-navigation-toggle[data-v-d9538ec8]{display:none;position:fixed;z-index:1050;left:0;width:44px;height:44px;padding:14px;cursor:pointer;opacity:0.6;font-size:16px;line-height:17px}#app-navigation-toggle[data-v-d9538ec8]:before{font-family:"iconfont-vue";font-style:normal;font-weight:400;content:""}#app-navigation-toggle[data-v-d9538ec8]:hover,#app-navigation-toggle[data-v-d9538ec8]:focus{opacity:1}@media only screen and (max-width: 768px){#app-navigation-toggle[data-v-d9538ec8]{display:inline-block !important}}\n',""])},function(t,e,n){"use strict";var i=n(28);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,".app-navigation-entry-utils-counter[data-v-7ed17014]{overflow:hidden;text-align:right;font-size:9px;line-height:44px;padding:0 12px}.highlighted[data-v-7ed17014]{padding:0;text-align:center}.highlighted span[data-v-7ed17014]{padding:2px 5px;border-radius:10px;background-color:var(--color-primary);color:var(--color-primary-text)}\n",""])},function(t,e,n){var i=function(t){"use strict";var e,n=Object.prototype,i=n.hasOwnProperty,o="function"==typeof Symbol?Symbol:{},a=o.iterator||"@@iterator",r=o.asyncIterator||"@@asyncIterator",s=o.toStringTag||"@@toStringTag";function c(t,e,n,i){var o=e&&e.prototype instanceof A?e:A,a=Object.create(o.prototype),r=new E(i||[]);return a._invoke=function(t,e,n){var i=u;return function(o,a){if(i===p)throw new Error("Generator is already running");if(i===f){if("throw"===o)throw a;return S()}for(n.method=o,n.arg=a;;){var r=n.delegate;if(r){var s=T(r,n);if(s){if(s===h)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(i===u)throw i=f,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);i=p;var c=l(t,e,n);if("normal"===c.type){if(i=n.done?f:d,c.arg===h)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(i=f,n.method="throw",n.arg=c.arg)}}}(t,n,r),a}function l(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}t.wrap=c;var u="suspendedStart",d="suspendedYield",p="executing",f="completed",h={};function A(){}function v(){}function m(){}var g={};g[a]=function(){return this};var b=Object.getPrototypeOf,y=b&&b(b(M([])));y&&y!==n&&i.call(y,a)&&(g=y);var x=m.prototype=A.prototype=Object.create(g);function w(t){["next","throw","return"].forEach((function(e){t[e]=function(t){return this._invoke(e,t)}}))}function _(t){var e;this._invoke=function(n,o){function a(){return new Promise((function(e,a){!function e(n,o,a,r){var s=l(t[n],t,o);if("throw"!==s.type){var c=s.arg,u=c.value;return u&&"object"==typeof u&&i.call(u,"__await")?Promise.resolve(u.__await).then((function(t){e("next",t,a,r)}),(function(t){e("throw",t,a,r)})):Promise.resolve(u).then((function(t){c.value=t,a(c)}),(function(t){return e("throw",t,a,r)}))}r(s.arg)}(n,o,e,a)}))}return e=e?e.then(a,a):a()}}function T(t,n){var i=t.iterator[n.method];if(i===e){if(n.delegate=null,"throw"===n.method){if(t.iterator.return&&(n.method="return",n.arg=e,T(t,n),"throw"===n.method))return h;n.method="throw",n.arg=new TypeError("The iterator does not provide a 'throw' method")}return h}var o=l(i,t.iterator,n.arg);if("throw"===o.type)return n.method="throw",n.arg=o.arg,n.delegate=null,h;var a=o.arg;return a?a.done?(n[t.resultName]=a.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,h):a:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,h)}function k(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function C(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function E(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(k,this),this.reset(!0)}function M(t){if(t){var n=t[a];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var o=-1,r=function n(){for(;++o=0;--a){var r=this.tryEntries[a],s=r.completion;if("root"===r.tryLoc)return o("end");if(r.tryLoc<=this.prev){var c=i.call(r,"catchLoc"),l=i.call(r,"finallyLoc");if(c&&l){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&i.call(o,"finallyLoc")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),C(n),h}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var o=i.arg;C(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,i){return this.delegate={iterator:M(t),resultName:n,nextLoc:i},"next"===this.method&&(this.arg=e),h}},t}(t.exports);try{regeneratorRuntime=i}catch(t){Function("r","regeneratorRuntime = r")(i)}},function(t,e,n){t.exports=n(100)},function(t,e,n){"use strict";var i=n(4),o=n(68),a=n(102),r=n(74);function s(t){var e=new a(t),n=o(a.prototype.request,e);return i.extend(n,a.prototype,e),i.extend(n,e),n}var c=s(n(71));c.Axios=a,c.create=function(t){return s(r(c.defaults,t))},c.Cancel=n(75),c.CancelToken=n(115),c.isCancel=n(70),c.all=function(t){return Promise.all(t)},c.spread=n(116),t.exports=c,t.exports.default=c},function(t,e){ +/*! + * Determine if an object is a Buffer + * + * @author Feross Aboukhadijeh + * @license MIT + */ +t.exports=function(t){return null!=t&&null!=t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}},function(t,e,n){"use strict";var i=n(4),o=n(69),a=n(103),r=n(104),s=n(74);function c(t){this.defaults=t,this.interceptors={request:new a,response:new a}}c.prototype.request=function(t){"string"==typeof t?(t=arguments[1]||{}).url=arguments[0]:t=t||{},(t=s(this.defaults,t)).method=t.method?t.method.toLowerCase():"get";var e=[r,void 0],n=Promise.resolve(t);for(this.interceptors.request.forEach((function(t){e.unshift(t.fulfilled,t.rejected)})),this.interceptors.response.forEach((function(t){e.push(t.fulfilled,t.rejected)}));e.length;)n=n.then(e.shift(),e.shift());return n},c.prototype.getUri=function(t){return t=s(this.defaults,t),o(t.url,t.params,t.paramsSerializer).replace(/^\?/,"")},i.forEach(["delete","get","head","options"],(function(t){c.prototype[t]=function(e,n){return this.request(i.merge(n||{},{method:t,url:e}))}})),i.forEach(["post","put","patch"],(function(t){c.prototype[t]=function(e,n,o){return this.request(i.merge(o||{},{method:t,url:e,data:n}))}})),t.exports=c},function(t,e,n){"use strict";var i=n(4);function o(){this.handlers=[]}o.prototype.use=function(t,e){return this.handlers.push({fulfilled:t,rejected:e}),this.handlers.length-1},o.prototype.eject=function(t){this.handlers[t]&&(this.handlers[t]=null)},o.prototype.forEach=function(t){i.forEach(this.handlers,(function(e){null!==e&&t(e)}))},t.exports=o},function(t,e,n){"use strict";var i=n(4),o=n(105),a=n(70),r=n(71),s=n(113),c=n(114);function l(t){t.cancelToken&&t.cancelToken.throwIfRequested()}t.exports=function(t){return l(t),t.baseURL&&!s(t.url)&&(t.url=c(t.baseURL,t.url)),t.headers=t.headers||{},t.data=o(t.data,t.headers,t.transformRequest),t.headers=i.merge(t.headers.common||{},t.headers[t.method]||{},t.headers||{}),i.forEach(["delete","get","head","post","put","patch","common"],(function(e){delete t.headers[e]})),(t.adapter||r.adapter)(t).then((function(e){return l(t),e.data=o(e.data,e.headers,t.transformResponse),e}),(function(e){return a(e)||(l(t),e&&e.response&&(e.response.data=o(e.response.data,e.response.headers,t.transformResponse))),Promise.reject(e)}))}},function(t,e,n){"use strict";var i=n(4);t.exports=function(t,e,n){return i.forEach(n,(function(n){t=n(t,e)})),t}},function(t,e){var n,i,o=t.exports={};function a(){throw new Error("setTimeout has not been defined")}function r(){throw new Error("clearTimeout has not been defined")}function s(t){if(n===setTimeout)return setTimeout(t,0);if((n===a||!n)&&setTimeout)return n=setTimeout,setTimeout(t,0);try{return n(t,0)}catch(e){try{return n.call(null,t,0)}catch(e){return n.call(this,t,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:a}catch(t){n=a}try{i="function"==typeof clearTimeout?clearTimeout:r}catch(t){i=r}}();var c,l=[],u=!1,d=-1;function p(){u&&c&&(u=!1,c.length?l=c.concat(l):d=-1,l.length&&f())}function f(){if(!u){var t=s(p);u=!0;for(var e=l.length;e;){for(c=l,l=[];++d1)for(var n=1;n=0)return;r[e]="set-cookie"===e?(r[e]?r[e]:[]).concat([n]):r[e]?r[e]+", "+n:n}})),r):r}},function(t,e,n){"use strict";var i=n(4);t.exports=i.isStandardBrowserEnv()?function(){var t,e=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function o(t){var i=t;return e&&(n.setAttribute("href",i),i=n.href),n.setAttribute("href",i),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return t=o(window.location.href),function(e){var n=i.isString(e)?o(e):e;return n.protocol===t.protocol&&n.host===t.host}}():function(){return!0}},function(t,e,n){"use strict";var i=n(4);t.exports=i.isStandardBrowserEnv()?{write:function(t,e,n,o,a,r){var s=[];s.push(t+"="+encodeURIComponent(e)),i.isNumber(n)&&s.push("expires="+new Date(n).toGMTString()),i.isString(o)&&s.push("path="+o),i.isString(a)&&s.push("domain="+a),!0===r&&s.push("secure"),document.cookie=s.join("; ")},read:function(t){var e=document.cookie.match(new RegExp("(^|;\\s*)("+t+")=([^;]*)"));return e?decodeURIComponent(e[3]):null},remove:function(t){this.write(t,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},function(t,e,n){"use strict";t.exports=function(t){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(t)}},function(t,e,n){"use strict";t.exports=function(t,e){return e?t.replace(/\/+$/,"")+"/"+e.replace(/^\/+/,""):t}},function(t,e,n){"use strict";var i=n(75);function o(t){if("function"!=typeof t)throw new TypeError("executor must be a function.");var e;this.promise=new Promise((function(t){e=t}));var n=this;t((function(t){n.reason||(n.reason=new i(t),e(n.reason))}))}o.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},o.source=function(){var t;return{token:new o((function(e){t=e})),cancel:t}},t.exports=o},function(t,e,n){"use strict";t.exports=function(t){return function(e){return t.apply(null,e)}}},function(t,e){var n,i;n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i={rotl:function(t,e){return t<>>32-e},rotr:function(t,e){return t<<32-e|t>>>e},endian:function(t){if(t.constructor==Number)return 16711935&i.rotl(t,8)|4278255360&i.rotl(t,24);for(var e=0;e0;t--)e.push(Math.floor(256*Math.random()));return e},bytesToWords:function(t){for(var e=[],n=0,i=0;n>>5]|=t[n]<<24-i%32;return e},wordsToBytes:function(t){for(var e=[],n=0;n<32*t.length;n+=8)e.push(t[n>>>5]>>>24-n%32&255);return e},bytesToHex:function(t){for(var e=[],n=0;n>>4).toString(16)),e.push((15&t[n]).toString(16));return e.join("")},hexToBytes:function(t){for(var e=[],n=0;n>>6*(3-a)&63)):e.push("=");return e.join("")},base64ToBytes:function(t){t=t.replace(/[^A-Z0-9+\/]/gi,"");for(var e=[],i=0,o=0;i>>6-2*o);return e}},t.exports=i},function(t,e){function n(t){return!!t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)} +/*! + * Determine if an object is a Buffer + * + * @author Feross Aboukhadijeh + * @license MIT + */t.exports=function(t){return null!=t&&(n(t)||function(t){return"function"==typeof t.readFloatLE&&"function"==typeof t.slice&&n(t.slice(0,0))}(t)||!!t._isBuffer)}},function(t,e,n){"use strict";var i=n(29);n.n(i).a},function(t,e,n){e=t.exports=n(1)(!1);var i=n(8),o=i(n(9)),a=i(n(10)),r=i(n(11)),s=i(n(12));e.push([t.i,'@font-face{font-family:"iconfont-vue";src:url('+o+");src:url("+o+') format("embedded-opentype"),url('+a+') format("woff"),url('+r+') format("truetype"),url('+s+') format("svg")}.icon[data-v-6015a092]{font-style:normal;font-weight:400}.icon.arrow-left-double[data-v-6015a092]:before{font-family:"iconfont-vue";content:""}.icon.arrow-left[data-v-6015a092]:before{font-family:"iconfont-vue";content:""}.icon.arrow-right-double[data-v-6015a092]:before{font-family:"iconfont-vue";content:""}.icon.arrow-right[data-v-6015a092]:before{font-family:"iconfont-vue";content:""}.icon.close[data-v-6015a092]:before{font-family:"iconfont-vue";content:""}.icon.confirm-fade[data-v-6015a092]:before{font-family:"iconfont-vue";content:""}.icon.confirm[data-v-6015a092]:before{font-family:"iconfont-vue";content:""}.icon.menu[data-v-6015a092]:before{font-family:"iconfont-vue";content:""}.icon.more[data-v-6015a092]:before{font-family:"iconfont-vue";content:""}.icon.pause[data-v-6015a092]:before{font-family:"iconfont-vue";content:""}.icon.play[data-v-6015a092]:before{font-family:"iconfont-vue";content:""}.avatardiv[data-v-6015a092]{position:relative;display:inline-block}.avatardiv--unknown[data-v-6015a092]{position:relative;background-color:var(--color-text-maxcontrast)}.avatardiv--with-menu[data-v-6015a092]{cursor:pointer}.avatardiv--with-menu .icon-more[data-v-6015a092]{position:absolute;top:0;left:0;display:flex;align-items:center;justify-content:center;width:inherit;height:inherit;cursor:pointer;opacity:0;background:none;font-size:18px}.avatardiv--with-menu .icon-more[data-v-6015a092]:before{font-family:"iconfont-vue";font-style:normal;font-weight:400;content:""}.avatardiv--with-menu .icon-more[data-v-6015a092]::before{display:block}.avatardiv--with-menu:focus .icon-more[data-v-6015a092],.avatardiv--with-menu:hover .icon-more[data-v-6015a092]{opacity:1}.avatardiv--with-menu:focus img[data-v-6015a092],.avatardiv--with-menu:hover img[data-v-6015a092]{opacity:0}.avatardiv--with-menu .icon-more[data-v-6015a092],.avatardiv--with-menu img[data-v-6015a092]{transition:opacity var(--animation-quick)}.avatardiv>.unknown[data-v-6015a092]{position:absolute;top:0;left:0;display:block;width:100%;text-align:center;color:var(--color-main-background)}.avatardiv img[data-v-6015a092]{width:100%;height:100%}.avatardiv .avatardiv__status[data-v-6015a092]{position:absolute;top:22px;left:22px;width:10px;height:10px;border:1px solid rgba(255,255,255,0.5);background-clip:content-box}.avatardiv .avatardiv__status--positive[data-v-6015a092]{border-radius:50%;background-color:var(--color-success)}.avatardiv .avatardiv__status--negative[data-v-6015a092]{background-color:var(--color-error)}.avatardiv .avatardiv__status--neutral[data-v-6015a092]{border:none;background-color:transparent !important}.avatardiv .avatardiv__status--neutral svg[data-v-6015a092]{position:absolute;top:-3px;left:-2px}.avatardiv .avatardiv__status--neutral svg path[data-v-6015a092]{fill:#aaa}.avatardiv .popovermenu-wrapper[data-v-6015a092]{position:relative;display:inline-block}.avatardiv .popovermenu[data-v-6015a092]{display:block;margin:0;font-size:initial}\n',""])},function(t,e){function n(t){return(n="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})(t)}function i(e){return"function"==typeof Symbol&&"symbol"===n(Symbol.iterator)?t.exports=i=function(t){return n(t)}:t.exports=i=function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":n(t)},i(e)}t.exports=i},function(t,e,n){t.exports=function(t){function e(i){if(n[i])return n[i].exports;var o=n[i]={i:i,l:!1,exports:{}};return t[i].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var n={};return e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,i){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:i})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="/",e(e.s=60)}([function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(t,e,n){var i=n(49)("wks"),o=n(30),a=n(0).Symbol,r="function"==typeof a;(t.exports=function(t){return i[t]||(i[t]=r&&a[t]||(r?a:o)("Symbol."+t))}).store=i},function(t,e,n){var i=n(5);t.exports=function(t){if(!i(t))throw TypeError(t+" is not an object!");return t}},function(t,e,n){var i=n(0),o=n(10),a=n(8),r=n(6),s=n(11),c=function(t,e,n){var l,u,d,p,f=t&c.F,h=t&c.G,A=t&c.S,v=t&c.P,m=t&c.B,g=h?i:A?i[e]||(i[e]={}):(i[e]||{}).prototype,b=h?o:o[e]||(o[e]={}),y=b.prototype||(b.prototype={});for(l in h&&(n=e),n)d=((u=!f&&g&&void 0!==g[l])?g:n)[l],p=m&&u?s(d,i):v&&"function"==typeof d?s(Function.call,d):d,g&&r(g,l,d,t&c.U),b[l]!=d&&a(b,l,p),v&&y[l]!=d&&(y[l]=d)};i.core=o,c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,t.exports=c},function(t,e,n){t.exports=!n(7)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,e,n){var i=n(0),o=n(8),a=n(12),r=n(30)("src"),s=Function.toString,c=(""+s).split("toString");n(10).inspectSource=function(t){return s.call(t)},(t.exports=function(t,e,n,s){var l="function"==typeof n;l&&(a(n,"name")||o(n,"name",e)),t[e]!==n&&(l&&(a(n,r)||o(n,r,t[e]?""+t[e]:c.join(String(e)))),t===i?t[e]=n:s?t[e]?t[e]=n:o(t,e,n):(delete t[e],o(t,e,n)))})(Function.prototype,"toString",(function(){return"function"==typeof this&&this[r]||s.call(this)}))},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,n){var i=n(13),o=n(25);t.exports=n(4)?function(t,e,n){return i.f(t,e,o(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,e){var n=t.exports={version:"2.5.7"};"number"==typeof __e&&(__e=n)},function(t,e,n){var i=n(14);t.exports=function(t,e,n){if(i(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,i){return t.call(e,n,i)};case 3:return function(n,i,o){return t.call(e,n,i,o)}}return function(){return t.apply(e,arguments)}}},function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},function(t,e,n){var i=n(2),o=n(41),a=n(29),r=Object.defineProperty;e.f=n(4)?Object.defineProperty:function(t,e,n){if(i(t),e=a(e,!0),i(n),o)try{return r(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e){t.exports={}},function(t,e){t.exports=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t}},function(t,e,n){"use strict";var i=n(7);t.exports=function(t,e){return!!t&&i((function(){e?t.call(null,(function(){}),1):t.call(null)}))}},function(t,e,n){var i=n(23),o=n(16);t.exports=function(t){return i(o(t))}},function(t,e,n){var i=n(53),o=Math.min;t.exports=function(t){return t>0?o(i(t),9007199254740991):0}},function(t,e,n){var i=n(11),o=n(23),a=n(28),r=n(19),s=n(64);t.exports=function(t,e){var n=1==t,c=2==t,l=3==t,u=4==t,d=6==t,p=5==t||d,f=e||s;return function(e,s,h){for(var A,v,m=a(e),g=o(m),b=i(s,h,3),y=r(g.length),x=0,w=n?f(e,y):c?f(e,0):void 0;y>x;x++)if((p||x in g)&&(v=b(A=g[x],x,m),t))if(n)w[x]=v;else if(v)switch(t){case 3:return!0;case 5:return A;case 6:return x;case 2:w.push(A)}else if(u)return!1;return d?-1:l||u?u:w}}},function(t,e,n){var i=n(5),o=n(0).document,a=i(o)&&i(o.createElement);t.exports=function(t){return a?o.createElement(t):{}}},function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,e,n){var i=n(9);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==i(t)?t.split(""):Object(t)}},function(t,e){t.exports=!1},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,n){var i=n(13).f,o=n(12),a=n(1)("toStringTag");t.exports=function(t,e,n){t&&!o(t=n?t:t.prototype,a)&&i(t,a,{configurable:!0,value:e})}},function(t,e,n){var i=n(49)("keys"),o=n(30);t.exports=function(t){return i[t]||(i[t]=o(t))}},function(t,e,n){var i=n(16);t.exports=function(t){return Object(i(t))}},function(t,e,n){var i=n(5);t.exports=function(t,e){if(!i(t))return t;var n,o;if(e&&"function"==typeof(n=t.toString)&&!i(o=n.call(t)))return o;if("function"==typeof(n=t.valueOf)&&!i(o=n.call(t)))return o;if(!e&&"function"==typeof(n=t.toString)&&!i(o=n.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},function(t,e){var n=0,i=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+i).toString(36))}},function(t,e,n){"use strict";var i=n(0),o=n(12),a=n(9),r=n(67),s=n(29),c=n(7),l=n(77).f,u=n(45).f,d=n(13).f,p=n(51).trim,f=i.Number,h=f,A=f.prototype,v="Number"==a(n(44)(A)),m="trim"in String.prototype,g=function(t){var e=s(t,!1);if("string"==typeof e&&e.length>2){var n,i,o,a=(e=m?e.trim():p(e,3)).charCodeAt(0);if(43===a||45===a){if(88===(n=e.charCodeAt(2))||120===n)return NaN}else if(48===a){switch(e.charCodeAt(1)){case 66:case 98:i=2,o=49;break;case 79:case 111:i=8,o=55;break;default:return+e}for(var r,c=e.slice(2),l=0,u=c.length;lo)return NaN;return parseInt(c,i)}}return+e};if(!f(" 0o1")||!f("0b1")||f("+0x1")){f=function(t){var e=arguments.length<1?0:t,n=this;return n instanceof f&&(v?c((function(){A.valueOf.call(n)})):"Number"!=a(n))?r(new h(g(e)),n,f):g(e)};for(var b,y=n(4)?l(h):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),x=0;y.length>x;x++)o(h,b=y[x])&&!o(f,b)&&d(f,b,u(h,b));f.prototype=A,A.constructor=f,n(6)(i,"Number",f)}},function(t,e,n){"use strict";function i(t){return!(0===t||(!Array.isArray(t)||0!==t.length)&&t)}function o(t,e,n,i){return t.filter((function(t){return function(t,e){return void 0===t&&(t="undefined"),null===t&&(t="null"),!1===t&&(t="false"),-1!==t.toString().toLowerCase().indexOf(e.trim())}(i(t,n),e)}))}function a(t){return t.filter((function(t){return!t.$isLabel}))}function r(t,e){return function(n){return n.reduce((function(n,i){return i[t]&&i[t].length?(n.push({$groupLabel:i[e],$isLabel:!0}),n.concat(i[t])):n}),[])}}function s(t,e,i,a,r){return function(s){return s.map((function(s){var c;if(!s[i])return console.warn("Options passed to vue-multiselect do not contain groups, despite the config."),[];var l=o(s[i],t,e,r);return l.length?(c={},n.i(p.a)(c,a,s[a]),n.i(p.a)(c,i,l),c):[]}))}}var c=n(59),l=n(54),u=(n.n(l),n(95)),d=(n.n(u),n(31)),p=(n.n(d),n(58)),f=n(91),h=(n.n(f),n(98)),A=(n.n(h),n(92)),v=(n.n(A),n(88)),m=(n.n(v),n(97)),g=(n.n(m),n(89)),b=(n.n(g),n(96)),y=(n.n(b),n(93)),x=(n.n(y),n(90)),w=(n.n(x),function(){for(var t=arguments.length,e=new Array(t),n=0;n-1},isSelected:function(t){var e=this.trackBy?t[this.trackBy]:t;return this.valueKeys.indexOf(e)>-1},isOptionDisabled:function(t){return!!t.$isDisabled},getOptionLabel:function(t){if(i(t))return"";if(t.isTag)return t.label;if(t.$isLabel)return t.$groupLabel;var e=this.customLabel(t,this.label);return i(e)?"":e},select:function(t,e){if(t.$isLabel&&this.groupSelect)this.selectGroup(t);else if(!(-1!==this.blockKeys.indexOf(e)||this.disabled||t.$isDisabled||t.$isLabel)&&(!this.max||!this.multiple||this.internalValue.length!==this.max)&&("Tab"!==e||this.pointerDirty)){if(t.isTag)this.$emit("tag",t.label,this.id),this.search="",this.closeOnSelect&&!this.multiple&&this.deactivate();else{if(this.isSelected(t))return void("Tab"!==e&&this.removeElement(t));this.$emit("select",t,this.id),this.multiple?this.$emit("input",this.internalValue.concat([t]),this.id):this.$emit("input",t,this.id),this.clearOnSelect&&(this.search="")}this.closeOnSelect&&this.deactivate()}},selectGroup:function(t){var e=this,n=this.options.find((function(n){return n[e.groupLabel]===t.$groupLabel}));if(n)if(this.wholeGroupSelected(n)){this.$emit("remove",n[this.groupValues],this.id);var i=this.internalValue.filter((function(t){return-1===n[e.groupValues].indexOf(t)}));this.$emit("input",i,this.id)}else{var o=n[this.groupValues].filter((function(t){return!(e.isOptionDisabled(t)||e.isSelected(t))}));this.$emit("select",o,this.id),this.$emit("input",this.internalValue.concat(o),this.id)}},wholeGroupSelected:function(t){var e=this;return t[this.groupValues].every((function(t){return e.isSelected(t)||e.isOptionDisabled(t)}))},wholeGroupDisabled:function(t){return t[this.groupValues].every(this.isOptionDisabled)},removeElement:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(!this.disabled&&!t.$isDisabled){if(!this.allowEmpty&&this.internalValue.length<=1)return void this.deactivate();var i="object"===n.i(c.a)(t)?this.valueKeys.indexOf(t[this.trackBy]):this.valueKeys.indexOf(t);if(this.$emit("remove",t,this.id),this.multiple){var o=this.internalValue.slice(0,i).concat(this.internalValue.slice(i+1));this.$emit("input",o,this.id)}else this.$emit("input",null,this.id);this.closeOnSelect&&e&&this.deactivate()}},removeLastElement:function(){-1===this.blockKeys.indexOf("Delete")&&0===this.search.length&&Array.isArray(this.internalValue)&&this.internalValue.length&&this.removeElement(this.internalValue[this.internalValue.length-1],!1)},activate:function(){var t=this;this.isOpen||this.disabled||(this.adjustPosition(),this.groupValues&&0===this.pointer&&this.filteredOptions.length&&(this.pointer=1),this.isOpen=!0,this.searchable?(this.preserveSearch||(this.search=""),this.$nextTick((function(){return t.$refs.search.focus()}))):this.$el.focus(),this.$emit("open",this.id))},deactivate:function(){this.isOpen&&(this.isOpen=!1,this.searchable?this.$refs.search.blur():this.$el.blur(),this.preserveSearch||(this.search=""),this.$emit("close",this.getValue(),this.id))},toggle:function(){this.isOpen?this.deactivate():this.activate()},adjustPosition:function(){if("undefined"!=typeof window){var t=this.$el.getBoundingClientRect().top,e=window.innerHeight-this.$el.getBoundingClientRect().bottom;e>this.maxHeight||e>t||"below"===this.openDirection||"bottom"===this.openDirection?(this.preferredOpenDirection="below",this.optimizedHeight=Math.min(e-40,this.maxHeight)):(this.preferredOpenDirection="above",this.optimizedHeight=Math.min(t-40,this.maxHeight))}}}}},function(t,e,n){"use strict";var i=n(54),o=(n.n(i),n(31));n.n(o),e.a={data:function(){return{pointer:0,pointerDirty:!1}},props:{showPointer:{type:Boolean,default:!0},optionHeight:{type:Number,default:40}},computed:{pointerPosition:function(){return this.pointer*this.optionHeight},visibleElements:function(){return this.optimizedHeight/this.optionHeight}},watch:{filteredOptions:function(){this.pointerAdjust()},isOpen:function(){this.pointerDirty=!1}},methods:{optionHighlight:function(t,e){return{"multiselect__option--highlight":t===this.pointer&&this.showPointer,"multiselect__option--selected":this.isSelected(e)}},groupHighlight:function(t,e){var n=this;if(!this.groupSelect)return["multiselect__option--group","multiselect__option--disabled"];var i=this.options.find((function(t){return t[n.groupLabel]===e.$groupLabel}));return i&&!this.wholeGroupDisabled(i)?["multiselect__option--group",{"multiselect__option--highlight":t===this.pointer&&this.showPointer},{"multiselect__option--group-selected":this.wholeGroupSelected(i)}]:"multiselect__option--disabled"},addPointerElement:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"Enter",e=t.key;this.filteredOptions.length>0&&this.select(this.filteredOptions[this.pointer],e),this.pointerReset()},pointerForward:function(){this.pointer0?(this.pointer--,this.$refs.list.scrollTop>=this.pointerPosition&&(this.$refs.list.scrollTop=this.pointerPosition),this.filteredOptions[this.pointer]&&this.filteredOptions[this.pointer].$isLabel&&!this.groupSelect&&this.pointerBackward()):this.filteredOptions[this.pointer]&&this.filteredOptions[0].$isLabel&&!this.groupSelect&&this.pointerForward(),this.pointerDirty=!0},pointerReset:function(){this.closeOnSelect&&(this.pointer=0,this.$refs.list&&(this.$refs.list.scrollTop=0))},pointerAdjust:function(){this.pointer>=this.filteredOptions.length-1&&(this.pointer=this.filteredOptions.length?this.filteredOptions.length-1:0),this.filteredOptions.length>0&&this.filteredOptions[this.pointer].$isLabel&&!this.groupSelect&&this.pointerForward()},pointerSet:function(t){this.pointer=t,this.pointerDirty=!0}}}},function(t,e,n){"use strict";var i=n(36),o=n(74),a=n(15),r=n(18);t.exports=n(72)(Array,"Array",(function(t,e){this._t=r(t),this._i=0,this._k=e}),(function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,o(1)):o(0,"keys"==e?n:"values"==e?t[n]:[n,t[n]])}),"values"),a.Arguments=a.Array,i("keys"),i("values"),i("entries")},function(t,e,n){"use strict";var i=n(31),o=(n.n(i),n(32)),a=n(33);e.a={name:"vue-multiselect",mixins:[o.a,a.a],props:{name:{type:String,default:""},selectLabel:{type:String,default:"Press enter to select"},selectGroupLabel:{type:String,default:"Press enter to select group"},selectedLabel:{type:String,default:"Selected"},deselectLabel:{type:String,default:"Press enter to remove"},deselectGroupLabel:{type:String,default:"Press enter to deselect group"},showLabels:{type:Boolean,default:!0},limit:{type:Number,default:99999},maxHeight:{type:Number,default:300},limitText:{type:Function,default:function(t){return"and ".concat(t," more")}},loading:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},openDirection:{type:String,default:""},showNoOptions:{type:Boolean,default:!0},showNoResults:{type:Boolean,default:!0},tabindex:{type:Number,default:0}},computed:{isSingleLabelVisible:function(){return(this.singleValue||0===this.singleValue)&&(!this.isOpen||!this.searchable)&&!this.visibleValues.length},isPlaceholderVisible:function(){return!(this.internalValue.length||this.searchable&&this.isOpen)},visibleValues:function(){return this.multiple?this.internalValue.slice(0,this.limit):[]},singleValue:function(){return this.internalValue[0]},deselectLabelText:function(){return this.showLabels?this.deselectLabel:""},deselectGroupLabelText:function(){return this.showLabels?this.deselectGroupLabel:""},selectLabelText:function(){return this.showLabels?this.selectLabel:""},selectGroupLabelText:function(){return this.showLabels?this.selectGroupLabel:""},selectedLabelText:function(){return this.showLabels?this.selectedLabel:""},inputStyle:function(){if(this.searchable||this.multiple&&this.value&&this.value.length)return this.isOpen?{width:"100%"}:{width:"0",position:"absolute",padding:"0"}},contentStyle:function(){return this.options.length?{display:"inline-block"}:{display:"block"}},isAbove:function(){return"above"===this.openDirection||"top"===this.openDirection||"below"!==this.openDirection&&"bottom"!==this.openDirection&&"above"===this.preferredOpenDirection},showSearchInput:function(){return this.searchable&&(!this.hasSingleSelectedSlot||!this.visibleSingleValue&&0!==this.visibleSingleValue||this.isOpen)}}}},function(t,e,n){var i=n(1)("unscopables"),o=Array.prototype;null==o[i]&&n(8)(o,i,{}),t.exports=function(t){o[i][t]=!0}},function(t,e,n){var i=n(18),o=n(19),a=n(85);t.exports=function(t){return function(e,n,r){var s,c=i(e),l=o(c.length),u=a(r,l);if(t&&n!=n){for(;l>u;)if((s=c[u++])!=s)return!0}else for(;l>u;u++)if((t||u in c)&&c[u]===n)return t||u||0;return!t&&-1}}},function(t,e,n){var i=n(9),o=n(1)("toStringTag"),a="Arguments"==i(function(){return arguments}());t.exports=function(t){var e,n,r;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=function(t,e){try{return t[e]}catch(t){}}(e=Object(t),o))?n:a?i(e):"Object"==(r=i(e))&&"function"==typeof e.callee?"Arguments":r}},function(t,e,n){"use strict";var i=n(2);t.exports=function(){var t=i(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},function(t,e,n){var i=n(0).document;t.exports=i&&i.documentElement},function(t,e,n){t.exports=!n(4)&&!n(7)((function(){return 7!=Object.defineProperty(n(21)("div"),"a",{get:function(){return 7}}).a}))},function(t,e,n){var i=n(9);t.exports=Array.isArray||function(t){return"Array"==i(t)}},function(t,e,n){"use strict";function i(t){var e,n;this.promise=new t((function(t,i){if(void 0!==e||void 0!==n)throw TypeError("Bad Promise constructor");e=t,n=i})),this.resolve=o(e),this.reject=o(n)}var o=n(14);t.exports.f=function(t){return new i(t)}},function(t,e,n){var i=n(2),o=n(76),a=n(22),r=n(27)("IE_PROTO"),s=function(){},c=function(){var t,e=n(21)("iframe"),i=a.length;for(e.style.display="none",n(40).appendChild(e),e.src="javascript:",(t=e.contentWindow.document).open(),t.write("","import { render, staticRenderFns } from \"./appScore.vue?vue&type=template&id=32130928&\"\nimport script from \"./appScore.vue?vue&type=script&lang=js&\"\nexport * from \"./appScore.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('img',{staticClass:\"app-score-image\",attrs:{\"src\":_vm.scoreImage}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appManagement.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appManagement.vue?vue&type=script&lang=js&\"","\n\n\n","var render, staticRenderFns\nimport script from \"./appManagement.vue?vue&type=script&lang=js&\"\nexport * from \"./appManagement.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./svgFilterMixin.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./svgFilterMixin.vue?vue&type=script&lang=js&\"","\n\n","var render, staticRenderFns\nimport script from \"./svgFilterMixin.vue?vue&type=script&lang=js&\"\nexport * from \"./svgFilterMixin.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appItem.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appItem.vue?vue&type=script&lang=js&\"","\n\n\n\n\n\n\n","import { render, staticRenderFns } from \"./appItem.vue?vue&type=template&id=3a8596d2&scoped=true&\"\nimport script from \"./appItem.vue?vue&type=script&lang=js&\"\nexport * from \"./appItem.vue?vue&type=script&lang=js&\"\nimport style0 from \"./appItem.vue?vue&type=style&index=0&id=3a8596d2&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3a8596d2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"section\",class:{ selected: _vm.isSelected },on:{\"click\":_vm.showAppDetails}},[_c('div',{staticClass:\"app-image app-image-icon\",on:{\"click\":_vm.showAppDetails}},[((_vm.listView && !_vm.app.preview) || (!_vm.listView && !_vm.app.screenshot))?_c('div',{staticClass:\"icon-settings-dark\"}):_vm._e(),_vm._v(\" \"),(_vm.listView && _vm.app.preview)?_c('svg',{attrs:{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"0 0 32 32\"}},[_c('defs',[_c('filter',{attrs:{\"id\":_vm.filterId}},[_c('feColorMatrix',{attrs:{\"in\":\"SourceGraphic\",\"type\":\"matrix\",\"values\":\"-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0\"}})],1)]),_vm._v(\" \"),_c('image',{staticClass:\"app-icon\",attrs:{\"x\":\"0\",\"y\":\"0\",\"width\":\"32\",\"height\":\"32\",\"preserveAspectRatio\":\"xMinYMin meet\",\"filter\":_vm.filterUrl,\"xlink:href\":_vm.app.preview}})]):_vm._e(),_vm._v(\" \"),(!_vm.listView && _vm.app.screenshot)?_c('img',{attrs:{\"src\":_vm.app.screenshot,\"width\":\"100%\"}}):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"app-name\",on:{\"click\":_vm.showAppDetails}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.app.name)+\"\\n\\t\")]),_vm._v(\" \"),(!_vm.listView)?_c('div',{staticClass:\"app-summary\"},[_vm._v(_vm._s(_vm.app.summary))]):_vm._e(),_vm._v(\" \"),(_vm.listView)?_c('div',{staticClass:\"app-version\"},[(_vm.app.version)?_c('span',[_vm._v(_vm._s(_vm.app.version))]):(_vm.app.appstoreData.releases[0].version)?_c('span',[_vm._v(_vm._s(_vm.app.appstoreData.releases[0].version))]):_vm._e()]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"app-level\"},[(_vm.app.level === 300)?_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.t('settings', 'This app is supported via your current Nextcloud subscription.')),expression:\"t('settings', 'This app is supported via your current Nextcloud subscription.')\",modifiers:{\"auto\":true}}],staticClass:\"supported icon-checkmark-color\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Supported')))]):_vm._e(),_vm._v(\" \"),(_vm.app.level === 200)?_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.t('settings', 'Official apps are developed by and within the community. They offer central functionality and are ready for production use.')),expression:\"t('settings', 'Official apps are developed by and within the community. They offer central functionality and are ready for production use.')\",modifiers:{\"auto\":true}}],staticClass:\"official icon-checkmark\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Official')))]):_vm._e(),_vm._v(\" \"),(_vm.hasRating && !_vm.listView)?_c('app-score',{attrs:{\"score\":_vm.app.score}}):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"actions\"},[(_vm.app.error)?_c('div',{staticClass:\"warning\"},[_vm._v(_vm._s(_vm.app.error))]):_vm._e(),_vm._v(\" \"),(_vm.loading(_vm.app.id))?_c('div',{staticClass:\"icon icon-loading-small\"}):_vm._e(),_vm._v(\" \"),(_vm.app.update)?_c('input',{staticClass:\"update primary\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings', 'Update to {update}', {update:_vm.app.update}),\"disabled\":_vm.installing || _vm.loading(_vm.app.id)},on:{\"click\":function($event){$event.stopPropagation();return _vm.update(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(_vm.app.canUnInstall)?_c('input',{staticClass:\"uninstall\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings', 'Remove'),\"disabled\":_vm.installing || _vm.loading(_vm.app.id)},on:{\"click\":function($event){$event.stopPropagation();return _vm.remove(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(_vm.app.active)?_c('input',{staticClass:\"enable\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings','Disable'),\"disabled\":_vm.installing || _vm.loading(_vm.app.id)},on:{\"click\":function($event){$event.stopPropagation();return _vm.disable(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(!_vm.app.active && (_vm.app.canInstall || _vm.app.isCompatible))?_c('input',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.enableButtonTooltip),expression:\"enableButtonTooltip\",modifiers:{\"auto\":true}}],staticClass:\"enable\",attrs:{\"type\":\"button\",\"value\":_vm.enableButtonText,\"disabled\":!_vm.app.canInstall || _vm.installing || _vm.loading(_vm.app.id)},on:{\"click\":function($event){$event.stopPropagation();return _vm.enable(_vm.app.id)}}}):(!_vm.app.active)?_c('input',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.forceEnableButtonTooltip),expression:\"forceEnableButtonTooltip\",modifiers:{\"auto\":true}}],staticClass:\"enable force\",attrs:{\"type\":\"button\",\"value\":_vm.forceEnableButtonText,\"disabled\":_vm.installing || _vm.loading(_vm.app.id)},on:{\"click\":function($event){$event.stopPropagation();return _vm.forceEnable(_vm.app.id)}}}):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./prefixMixin.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./prefixMixin.vue?vue&type=script&lang=js&\"","\n\n","var render, staticRenderFns\nimport script from \"./prefixMixin.vue?vue&type=script&lang=js&\"\nexport * from \"./prefixMixin.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appList.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./appList.vue?vue&type=template&id=10e658e0&\"\nimport script from \"./appList.vue?vue&type=script&lang=js&\"\nexport * from \"./appList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app-content-inner\"}},[_c('div',{staticClass:\"apps-list\",class:{installed: (_vm.useBundleView || _vm.useListView), store: _vm.useAppStoreView},attrs:{\"id\":\"apps-list\"}},[(_vm.useListView)?[_c('transition-group',{staticClass:\"apps-list-container\",attrs:{\"name\":\"app-list\",\"tag\":\"div\"}},_vm._l((_vm.apps),function(app){return _c('app-item',{key:app.id,attrs:{\"app\":app,\"category\":_vm.category}})}),1)]:_vm._e(),_vm._v(\" \"),_vm._l((_vm.bundles),function(bundle){return (_vm.useBundleView && _vm.bundleApps(bundle.id).length > 0)?[_c('transition-group',{staticClass:\"apps-list-container\",attrs:{\"name\":\"app-list\",\"tag\":\"div\"}},[_c('div',{key:bundle.id,staticClass:\"apps-header\"},[_c('div',{staticClass:\"app-image\"}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(bundle.name)+\" \"),_c('input',{attrs:{\"type\":\"button\",\"value\":_vm.bundleToggleText(bundle.id)},on:{\"click\":function($event){return _vm.toggleBundle(bundle.id)}}})]),_vm._v(\" \"),_c('div',{staticClass:\"app-version\"}),_vm._v(\" \"),_c('div',{staticClass:\"app-level\"}),_vm._v(\" \"),_c('div',{staticClass:\"app-groups\"}),_vm._v(\" \"),_c('div',{staticClass:\"actions\"},[_vm._v(\" \")])]),_vm._v(\" \"),_vm._l((_vm.bundleApps(bundle.id)),function(app){return _c('app-item',{key:bundle.id + app.id,attrs:{\"app\":app,\"category\":_vm.category}})})],2)]:_vm._e()}),_vm._v(\" \"),(_vm.useAppStoreView)?_vm._l((_vm.apps),function(app){return _c('app-item',{key:app.id,attrs:{\"app\":app,\"category\":_vm.category,\"list-view\":false}})}):_vm._e()],2),_vm._v(\" \"),_c('div',{staticClass:\"apps-list installed\",attrs:{\"id\":\"apps-list-search\"}},[_c('div',{staticClass:\"apps-list-container\"},[(_vm.search !== '' && _vm.searchApps.length > 0)?[_c('div',{staticClass:\"section\"},[_c('div'),_vm._v(\" \"),_c('td',{attrs:{\"colspan\":\"5\"}},[_c('h2',[_vm._v(_vm._s(_vm.t('settings', 'Results from other categories')))])])]),_vm._v(\" \"),_vm._l((_vm.searchApps),function(app){return _c('app-item',{key:app.id,attrs:{\"app\":app,\"category\":_vm.category,\"list-view\":true}})})]:_vm._e()],2)]),_vm._v(\" \"),(_vm.search !== '' && !_vm.loading && _vm.searchApps.length === 0 && _vm.apps.length === 0)?_c('div',{staticClass:\"emptycontent emptycontent-search\",attrs:{\"id\":\"apps-list-empty\"}},[_c('div',{staticClass:\"icon-settings-dark\",attrs:{\"id\":\"app-list-empty-icon\"}}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('settings', 'No apps found for your version')))])]):_vm._e(),_vm._v(\" \"),_c('div',{attrs:{\"id\":\"searchresults\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appDetails.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appDetails.vue?vue&type=script&lang=js&\"","\n\n\n\n\n\n\n","import { render, staticRenderFns } from \"./appDetails.vue?vue&type=template&id=17f3e48f&scoped=true&\"\nimport script from \"./appDetails.vue?vue&type=script&lang=js&\"\nexport * from \"./appDetails.vue?vue&type=script&lang=js&\"\nimport style0 from \"./appDetails.vue?vue&type=style&index=0&id=17f3e48f&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"17f3e48f\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"padding\":\"20px\"},attrs:{\"id\":\"app-details-view\"}},[_c('h2',[(!_vm.app.preview)?_c('div',{staticClass:\"icon-settings-dark\"}):_vm._e(),_vm._v(\" \"),(_vm.app.previewAsIcon && _vm.app.preview)?_c('svg',{attrs:{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"0 0 32 32\"}},[_c('defs',[_c('filter',{attrs:{\"id\":_vm.filterId}},[_c('feColorMatrix',{attrs:{\"in\":\"SourceGraphic\",\"type\":\"matrix\",\"values\":\"-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0\"}})],1)]),_vm._v(\" \"),_c('image',{staticClass:\"app-icon\",attrs:{\"x\":\"0\",\"y\":\"0\",\"width\":\"32\",\"height\":\"32\",\"preserveAspectRatio\":\"xMinYMin meet\",\"filter\":_vm.filterUrl,\"xlink:href\":_vm.app.preview}})]):_vm._e(),_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.app.name))]),_vm._v(\" \"),(_vm.app.screenshot)?_c('img',{attrs:{\"src\":_vm.app.screenshot,\"width\":\"100%\"}}):_vm._e(),_vm._v(\" \"),(_vm.app.level === 300 || _vm.app.level === 200 || _vm.hasRating)?_c('div',{staticClass:\"app-level\"},[(_vm.app.level === 300)?_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.t('settings', 'This app is supported via your current Nextcloud subscription.')),expression:\"t('settings', 'This app is supported via your current Nextcloud subscription.')\",modifiers:{\"auto\":true}}],staticClass:\"supported icon-checkmark-color\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Supported')))]):_vm._e(),_vm._v(\" \"),(_vm.app.level === 200)?_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.t('settings', 'Official apps are developed by and within the community. They offer central functionality and are ready for production use.')),expression:\"t('settings', 'Official apps are developed by and within the community. They offer central functionality and are ready for production use.')\",modifiers:{\"auto\":true}}],staticClass:\"official icon-checkmark\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Official')))]):_vm._e(),_vm._v(\" \"),(_vm.hasRating)?_c('app-score',{attrs:{\"score\":_vm.app.appstoreData.ratingOverall}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.author)?_c('div',{staticClass:\"app-author\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'by'))+\"\\n\\t\\t\"),_vm._l((_vm.author),function(a,index){return _c('span',[(a['@attributes'] && a['@attributes']['homepage'])?_c('a',{attrs:{\"href\":a['@attributes']['homepage']}},[_vm._v(_vm._s(a['@value']))]):(a['@value'])?_c('span',[_vm._v(_vm._s(a['@value']))]):_c('span',[_vm._v(_vm._s(a))]),(index+1 < _vm.author.length)?_c('span',[_vm._v(\", \")]):_vm._e()])})],2):_vm._e(),_vm._v(\" \"),(_vm.licence)?_c('div',{staticClass:\"app-licence\"},[_vm._v(_vm._s(_vm.licence))]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"actions\"},[_c('div',{staticClass:\"actions-buttons\"},[(_vm.app.update)?_c('input',{staticClass:\"update primary\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings', 'Update to {version}', {version: _vm.app.update}),\"disabled\":_vm.installing || _vm.loading(_vm.app.id)},on:{\"click\":function($event){return _vm.update(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(_vm.app.canUnInstall)?_c('input',{staticClass:\"uninstall\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings', 'Remove'),\"disabled\":_vm.installing || _vm.loading(_vm.app.id)},on:{\"click\":function($event){return _vm.remove(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(_vm.app.active)?_c('input',{staticClass:\"enable\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings','Disable'),\"disabled\":_vm.installing || _vm.loading(_vm.app.id)},on:{\"click\":function($event){return _vm.disable(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(!_vm.app.active && (_vm.app.canInstall || _vm.app.isCompatible))?_c('input',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.enableButtonTooltip),expression:\"enableButtonTooltip\",modifiers:{\"auto\":true}}],staticClass:\"enable primary\",attrs:{\"type\":\"button\",\"value\":_vm.enableButtonText,\"disabled\":!_vm.app.canInstall || _vm.installing || _vm.loading(_vm.app.id)},on:{\"click\":function($event){return _vm.enable(_vm.app.id)}}}):(!_vm.app.active)?_c('input',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.forceEnableButtonTooltip),expression:\"forceEnableButtonTooltip\",modifiers:{\"auto\":true}}],staticClass:\"enable force\",attrs:{\"type\":\"button\",\"value\":_vm.forceEnableButtonText,\"disabled\":_vm.installing || _vm.loading(_vm.app.id)},on:{\"click\":function($event){return _vm.forceEnable(_vm.app.id)}}}):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"app-groups\"},[(_vm.app.active && _vm.canLimitToGroups(_vm.app))?_c('div',{staticClass:\"groups-enable\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.groupCheckedAppsData),expression:\"groupCheckedAppsData\"}],staticClass:\"groups-enable__checkbox checkbox\",attrs:{\"type\":\"checkbox\",\"id\":_vm.prefix('groups_enable', _vm.app.id)},domProps:{\"value\":_vm.app.id,\"checked\":Array.isArray(_vm.groupCheckedAppsData)?_vm._i(_vm.groupCheckedAppsData,_vm.app.id)>-1:(_vm.groupCheckedAppsData)},on:{\"change\":[function($event){var $$a=_vm.groupCheckedAppsData,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=_vm.app.id,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.groupCheckedAppsData=$$a.concat([$$v]))}else{$$i>-1&&(_vm.groupCheckedAppsData=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.groupCheckedAppsData=$$c}},_vm.setGroupLimit]}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":_vm.prefix('groups_enable', _vm.app.id)}},[_vm._v(_vm._s(_vm.t('settings', 'Limit to groups')))]),_vm._v(\" \"),_c('input',{staticClass:\"group_select\",attrs:{\"type\":\"hidden\",\"title\":_vm.t('settings', 'All'),\"value\":\"\"}}),_vm._v(\" \"),(_vm.isLimitedToGroups(_vm.app))?_c('multiselect',{staticClass:\"multiselect-vue\",attrs:{\"options\":_vm.groups,\"value\":_vm.appGroups,\"options-limit\":5,\"placeholder\":_vm.t('settings', 'Limit app usage to groups'),\"label\":\"name\",\"track-by\":\"id\",\"multiple\":true,\"close-on-select\":false,\"tag-width\":60},on:{\"select\":_vm.addGroupLimitation,\"remove\":_vm.removeGroupLimitation,\"search-change\":_vm.asyncFindGroup}},[_c('span',{attrs:{\"slot\":\"noResult\"},slot:\"noResult\"},[_vm._v(_vm._s(_vm.t('settings', 'No results')))])]):_vm._e()],1):_vm._e()])]),_vm._v(\" \"),_c('ul',{staticClass:\"app-dependencies\"},[(_vm.app.missingMinOwnCloudVersion)?_c('li',[_vm._v(_vm._s(_vm.t('settings', 'This app has no minimum Nextcloud version assigned. This will be an error in the future.')))]):_vm._e(),_vm._v(\" \"),(_vm.app.missingMaxOwnCloudVersion)?_c('li',[_vm._v(_vm._s(_vm.t('settings', 'This app has no maximum Nextcloud version assigned. This will be an error in the future.')))]):_vm._e(),_vm._v(\" \"),(!_vm.app.canInstall)?_c('li',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'This app cannot be installed because the following dependencies are not fulfilled:'))+\"\\n\\t\\t\\t\"),_c('ul',{staticClass:\"missing-dependencies\"},_vm._l((_vm.app.missingDependencies),function(dep){return _c('li',[_vm._v(_vm._s(dep))])}),0)]):_vm._e()]),_vm._v(\" \"),_c('p',{staticClass:\"documentation\"},[(!_vm.app.internal)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.appstoreUrl,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'View in store'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.website)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.website,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'Visit website'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.bugs)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.bugs,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'Report a bug'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.documentation && _vm.app.documentation.user)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.documentation.user,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'User documentation'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.documentation && _vm.app.documentation.admin)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.documentation.admin,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'Admin documentation'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.documentation && _vm.app.documentation.developer)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.documentation.developer,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'Developer documentation'))+\" ↗\")]):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"app-description\",domProps:{\"innerHTML\":_vm._s(_vm.renderMarkdown)}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Apps.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Apps.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Apps.vue?vue&type=template&id=f06cbaa8&\"\nimport script from \"./Apps.vue?vue&type=script&lang=js&\"\nexport * from \"./Apps.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/apps/settings/js/vue-5.js b/apps/settings/js/vue-5.js new file mode 100644 index 00000000000..00efabc0129 --- /dev/null +++ b/apps/settings/js/vue-5.js @@ -0,0 +1,2 @@ +(window.webpackJsonpSettings=window.webpackJsonpSettings||[]).push([[5],{19:function(e,t,n){"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n=function(e,t){var n=e[1]||"",r=e[3];if(!r)return n;if(t&&"function"==typeof btoa){var i=(o=r,a=btoa(unescape(encodeURIComponent(JSON.stringify(o)))),l="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(a),"/*# ".concat(l," */")),s=r.sources.map((function(e){return"/*# sourceURL=".concat(r.sourceRoot).concat(e," */")}));return[n].concat(s).concat([i]).join("\n")}var o,a,l;return[n].join("\n")}(t,e);return t[2]?"@media ".concat(t[2],"{").concat(n,"}"):n})).join("")},t.i=function(e,n){"string"==typeof e&&(e=[[null,e,""]]);for(var r={},i=0;i ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3})(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:"^ {0,3}(?:<(script|pre|style)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?\\?>\\n*|\\n*|\\n*|)[\\s\\S]*?(?:\\n{2,}|$)|<(?!script|pre|style)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$))",def:/^ {0,3}\[(label)\]: *\n? *]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,nptable:m,table:m,lheading:/^([^\n]+)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html)[^\n]+)*)/,text:/^[^\n]+/};function r(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||_.defaults,this.rules=n.normal,this.options.pedantic?this.rules=n.pedantic:this.options.gfm&&(this.rules=n.gfm)}n._label=/(?!\s*\])(?:\\[\[\]]|[^\[\]])+/,n._title=/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/,n.def=h(n.def).replace("label",n._label).replace("title",n._title).getRegex(),n.bullet=/(?:[*+-]|\d{1,9}\.)/,n.item=/^( *)(bull) ?[^\n]*(?:\n(?!\1bull ?)[^\n]*)*/,n.item=h(n.item,"gm").replace(/bull/g,n.bullet).getRegex(),n.list=h(n.list).replace(/bull/g,n.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+n.def.source+")").getRegex(),n._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",n._comment=//,n.html=h(n.html,"i").replace("comment",n._comment).replace("tag",n._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),n.paragraph=h(n._paragraph).replace("hr",n.hr).replace("heading"," {0,3}#{1,6} +").replace("|lheading","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}|~{3,})[^`\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|!--)").replace("tag",n._tag).getRegex(),n.blockquote=h(n.blockquote).replace("paragraph",n.paragraph).getRegex(),n.normal=b({},n),n.gfm=b({},n.normal,{nptable:/^ *([^|\n ].*\|.*)\n *([-:]+ *\|[-| :]*)(?:\n((?:.*[^>\n ].*(?:\n|$))*)\n*|$)/,table:/^ *\|(.+)\n *\|?( *[-:]+[-| :]*)(?:\n((?: *[^>\n ].*(?:\n|$))*)\n*|$)/}),n.pedantic=b({},n.normal,{html:h("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",n._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *(?:#+ *)?(?:\n+|$)/,fences:m,paragraph:h(n.normal._paragraph).replace("hr",n.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",n.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()}),r.rules=n,r.lex=function(e,t){return new r(t).lex(e)},r.prototype.lex=function(e){return e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g," ").replace(/\u00a0/g," ").replace(/\u2424/g,"\n"),this.token(e,!0)},r.prototype.token=function(e,t){var r,i,s,o,a,l,c,p,h,d,f,g,m,b,v,x;for(e=e.replace(/^ +$/gm,"");e;)if((s=this.rules.newline.exec(e))&&(e=e.substring(s[0].length),s[0].length>1&&this.tokens.push({type:"space"})),s=this.rules.code.exec(e)){var _=this.tokens[this.tokens.length-1];e=e.substring(s[0].length),_&&"paragraph"===_.type?_.text+="\n"+s[0].trimRight():(s=s[0].replace(/^ {4}/gm,""),this.tokens.push({type:"code",codeBlockStyle:"indented",text:this.options.pedantic?s:k(s,"\n")}))}else if(s=this.rules.fences.exec(e))e=e.substring(s[0].length),this.tokens.push({type:"code",lang:s[2]?s[2].trim():s[2],text:s[3]||""});else if(s=this.rules.heading.exec(e))e=e.substring(s[0].length),this.tokens.push({type:"heading",depth:s[1].length,text:s[2]});else if((s=this.rules.nptable.exec(e))&&(l={type:"table",header:y(s[1].replace(/^ *| *\| *$/g,"")),align:s[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:s[3]?s[3].replace(/\n$/,"").split("\n"):[]}).header.length===l.align.length){for(e=e.substring(s[0].length),f=0;f ?/gm,""),this.token(s,t),this.tokens.push({type:"blockquote_end"});else if(s=this.rules.list.exec(e)){for(e=e.substring(s[0].length),c={type:"list_start",ordered:b=(o=s[2]).length>1,start:b?+o:"",loose:!1},this.tokens.push(c),p=[],r=!1,m=(s=s[0].match(this.rules.item)).length,f=0;f1?1===a.length:a.length>1||this.options.smartLists&&a!==o)&&(e=s.slice(f+1).join("\n")+e,f=m-1)),i=r||/\n\n(?!\s*$)/.test(l),f!==m-1&&(r="\n"===l.charAt(l.length-1),i||(i=r)),i&&(c.loose=!0),x=void 0,(v=/^\[[ xX]\] /.test(l))&&(x=" "!==l[1],l=l.replace(/^\[[ xX]\] +/,"")),h={type:"list_item_start",task:v,checked:x,loose:i},p.push(h),this.tokens.push(h),this.token(l,!1),this.tokens.push({type:"list_item_end"});if(c.loose)for(m=p.length,f=0;f?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:m,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(?!\s*\])((?:\\[\[\]]?|[^\[\]\\])+)\]/,nolink:/^!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?/,strong:/^__([^\s_])__(?!_)|^\*\*([^\s*])\*\*(?!\*)|^__([^\s][\s\S]*?[^\s])__(?!_)|^\*\*([^\s][\s\S]*?[^\s])\*\*(?!\*)/,em:/^_([^\s_])_(?!_)|^\*([^\s*<\[])\*(?!\*)|^_([^\s<][\s\S]*?[^\s_])_(?!_|[^\spunctuation])|^_([^\s_<][\s\S]*?[^\s])_(?!_|[^\spunctuation])|^\*([^\s<"][\s\S]*?[^\s\*])\*(?!\*|[^\spunctuation])|^\*([^\s*"<\[][\s\S]*?[^\s])\*(?!\*)/,code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:m,text:/^(`+|[^`])(?:[\s\S]*?(?:(?=[\\?@\\[^_{|}~",i.em=h(i.em).replace(/punctuation/g,i._punctuation).getRegex(),i._escapes=/\\([!"#$%&'()*+,\-.\/:;<=>?@\[\]\\^_`{|}~])/g,i._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,i._email=/[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])?)+(?![-_])/,i.autolink=h(i.autolink).replace("scheme",i._scheme).replace("email",i._email).getRegex(),i._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,i.tag=h(i.tag).replace("comment",n._comment).replace("attribute",i._attribute).getRegex(),i._label=/(?:\[[^\[\]]*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,i._href=/<(?:\\[<>]?|[^\s<>\\])*>|[^\s\x00-\x1f]*/,i._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,i.link=h(i.link).replace("label",i._label).replace("href",i._href).replace("title",i._title).getRegex(),i.reflink=h(i.reflink).replace("label",i._label).getRegex(),i.normal=b({},i),i.pedantic=b({},i.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/,link:h(/^!?\[(label)\]\((.*?)\)/).replace("label",i._label).getRegex(),reflink:h(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",i._label).getRegex()}),i.gfm=b({},i.normal,{escape:h(i.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^~+(?=\S)([\s\S]*?\S)~+/,text:/^(`+|[^`])(?:[\s\S]*?(?:(?=[\\/i.test(o[0])&&(this.inLink=!1),!this.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(o[0])?this.inRawBlock=!0:this.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(o[0])&&(this.inRawBlock=!1),e=e.substring(o[0].length),l+=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(o[0]):u(o[0]):o[0];else if(o=this.rules.link.exec(e)){var c=v(o[2],"()");if(c>-1){var p=4+o[1].length+c;o[2]=o[2].substring(0,c),o[0]=o[0].substring(0,p).trim(),o[3]=""}e=e.substring(o[0].length),this.inLink=!0,r=o[2],this.options.pedantic?(t=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(r))?(r=t[1],i=t[3]):i="":i=o[3]?o[3].slice(1,-1):"",r=r.trim().replace(/^<([\s\S]*)>$/,"$1"),l+=this.outputLink(o,{href:s.escapes(r),title:s.escapes(i)}),this.inLink=!1}else if((o=this.rules.reflink.exec(e))||(o=this.rules.nolink.exec(e))){if(e=e.substring(o[0].length),t=(o[2]||o[1]).replace(/\s+/g," "),!(t=this.links[t.toLowerCase()])||!t.href){l+=o[0].charAt(0),e=o[0].substring(1)+e;continue}this.inLink=!0,l+=this.outputLink(o,t),this.inLink=!1}else if(o=this.rules.strong.exec(e))e=e.substring(o[0].length),l+=this.renderer.strong(this.output(o[4]||o[3]||o[2]||o[1]));else if(o=this.rules.em.exec(e))e=e.substring(o[0].length),l+=this.renderer.em(this.output(o[6]||o[5]||o[4]||o[3]||o[2]||o[1]));else if(o=this.rules.code.exec(e))e=e.substring(o[0].length),l+=this.renderer.codespan(u(o[2].trim(),!0));else if(o=this.rules.br.exec(e))e=e.substring(o[0].length),l+=this.renderer.br();else if(o=this.rules.del.exec(e))e=e.substring(o[0].length),l+=this.renderer.del(this.output(o[1]));else if(o=this.rules.autolink.exec(e))e=e.substring(o[0].length),r="@"===o[2]?"mailto:"+(n=u(this.mangle(o[1]))):n=u(o[1]),l+=this.renderer.link(r,null,n);else if(this.inLink||!(o=this.rules.url.exec(e))){if(o=this.rules.text.exec(e))e=e.substring(o[0].length),this.inRawBlock?l+=this.renderer.text(this.options.sanitize?this.options.sanitizer?this.options.sanitizer(o[0]):u(o[0]):o[0]):l+=this.renderer.text(u(this.smartypants(o[0])));else if(e)throw new Error("Infinite loop on byte: "+e.charCodeAt(0))}else{if("@"===o[2])r="mailto:"+(n=u(o[0]));else{do{a=o[0],o[0]=this.rules._backpedal.exec(o[0])[0]}while(a!==o[0]);n=u(o[0]),r="www."===o[1]?"http://"+n:n}e=e.substring(o[0].length),l+=this.renderer.link(r,null,n)}return l},s.escapes=function(e){return e?e.replace(s.rules._escapes,"$1"):e},s.prototype.outputLink=function(e,t){var n=t.href,r=t.title?u(t.title):null;return"!"!==e[0].charAt(0)?this.renderer.link(n,r,this.output(e[1])):this.renderer.image(n,r,u(e[1]))},s.prototype.smartypants=function(e){return this.options.smartypants?e.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014\/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014\/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…"):e},s.prototype.mangle=function(e){if(!this.options.mangle)return e;for(var t,n="",r=e.length,i=0;i.5&&(t="x"+t.toString(16)),n+="&#"+t+";";return n},o.prototype.code=function(e,t,n){var r=(t||"").match(/\S*/)[0];if(this.options.highlight){var i=this.options.highlight(e,r);null!=i&&i!==e&&(n=!0,e=i)}return r?'
    '+(n?e:u(e,!0))+"
    \n":"
    "+(n?e:u(e,!0))+"
    "},o.prototype.blockquote=function(e){return"
    \n"+e+"
    \n"},o.prototype.html=function(e){return e},o.prototype.heading=function(e,t,n,r){return this.options.headerIds?"'+e+"\n":""+e+"\n"},o.prototype.hr=function(){return this.options.xhtml?"
    \n":"
    \n"},o.prototype.list=function(e,t,n){var r=t?"ol":"ul";return"<"+r+(t&&1!==n?' start="'+n+'"':"")+">\n"+e+"\n"},o.prototype.listitem=function(e){return"
  • "+e+"
  • \n"},o.prototype.checkbox=function(e){return" "},o.prototype.paragraph=function(e){return"

    "+e+"

    \n"},o.prototype.table=function(e,t){return t&&(t=""+t+""),"\n\n"+e+"\n"+t+"
    \n"},o.prototype.tablerow=function(e){return"\n"+e+"\n"},o.prototype.tablecell=function(e,t){var n=t.header?"th":"td";return(t.align?"<"+n+' align="'+t.align+'">':"<"+n+">")+e+"\n"},o.prototype.strong=function(e){return""+e+""},o.prototype.em=function(e){return""+e+""},o.prototype.codespan=function(e){return""+e+""},o.prototype.br=function(){return this.options.xhtml?"
    ":"
    "},o.prototype.del=function(e){return""+e+""},o.prototype.link=function(e,t,n){if(null===(e=d(this.options.sanitize,this.options.baseUrl,e)))return n;var r='"},o.prototype.image=function(e,t,n){if(null===(e=d(this.options.sanitize,this.options.baseUrl,e)))return n;var r=''+n+'":">"},o.prototype.text=function(e){return e},a.prototype.strong=a.prototype.em=a.prototype.codespan=a.prototype.del=a.prototype.text=function(e){return e},a.prototype.link=a.prototype.image=function(e,t,n){return""+n},a.prototype.br=function(){return""},l.parse=function(e,t){return new l(t).parse(e)},l.prototype.parse=function(e){this.inline=new s(e.links,this.options),this.inlineText=new s(e.links,b({},this.options,{renderer:new a})),this.tokens=e.reverse();for(var t="";this.next();)t+=this.tok();return t},l.prototype.next=function(){return this.token=this.tokens.pop(),this.token},l.prototype.peek=function(){return this.tokens[this.tokens.length-1]||0},l.prototype.parseText=function(){for(var e=this.token.text;"text"===this.peek().type;)e+="\n"+this.next().text;return this.inline.output(e)},l.prototype.tok=function(){switch(this.token.type){case"space":return"";case"hr":return this.renderer.hr();case"heading":return this.renderer.heading(this.inline.output(this.token.text),this.token.depth,p(this.inlineText.output(this.token.text)),this.slugger);case"code":return this.renderer.code(this.token.text,this.token.lang,this.token.escaped);case"table":var e,t,n,r,i="",s="";for(n="",e=0;e?@[\]^`{|}~]/g,"").replace(/\s/g,"-");if(this.seen.hasOwnProperty(t)){var n=t;do{this.seen[n]++,t=n+"-"+this.seen[n]}while(this.seen.hasOwnProperty(t))}return this.seen[t]=0,t},u.escapeTest=/[&<>"']/,u.escapeReplace=/[&<>"']/g,u.replacements={"&":"&","<":"<",">":">",'"':""","'":"'"},u.escapeTestNoEncode=/[<>"']|&(?!#?\w+;)/,u.escapeReplaceNoEncode=/[<>"']|&(?!#?\w+;)/g;var f={},g=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function m(){}function b(e){for(var t,n,r=1;r=0&&"\\"===n[i];)r=!r;return r?"|":" |"})).split(/ \|/),r=0;if(n.length>t)n.splice(t);else for(;n.lengthAn error occurred:

    "+u(e.message+"",!0)+"
    ";throw e}}m.exec=m,_.options=_.setOptions=function(e){return b(_.defaults,e),_},_.getDefaults=function(){return{baseUrl:null,breaks:!1,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:new o,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,xhtml:!1}},_.defaults=_.getDefaults(),_.Parser=l,_.parser=l.parse,_.Renderer=o,_.TextRenderer=a,_.Lexer=r,_.lexer=r.lex,_.InlineLexer=s,_.inlineLexer=s.output,_.Slugger=c,_.parse=_,e.exports=_}(this||"undefined"!=typeof window&&window)}).call(this,n(3))},73:function(e,t,n){e.exports=function(){"use strict";var e=Object.freeze||function(e){return e},t=e(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),n=e(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","audio","canvas","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","video","view","vkern"]),r=e(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),i=e(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover"]),s=e(["#text"]),o=Object.freeze||function(e){return e},a=o(["accept","action","align","alt","autocomplete","background","bgcolor","border","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","coords","crossorigin","datetime","default","dir","disabled","download","enctype","face","for","headers","height","hidden","high","href","hreflang","id","integrity","ismap","label","lang","list","loop","low","max","maxlength","media","method","min","minlength","multiple","name","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","type","usemap","valign","value","width","xmlns"]),l=o(["accent-height","accumulate","additive","alignment-baseline","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","specularconstant","specularexponent","spreadmethod","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","tabindex","targetx","targety","transform","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),c=o(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),u=o(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),p=Object.hasOwnProperty,h=Object.setPrototypeOf,d=("undefined"!=typeof Reflect&&Reflect).apply;function f(e,t){h&&h(e,null);for(var n=t.length;n--;){var r=t[n];if("string"==typeof r){var i=r.toLowerCase();i!==r&&(Object.isFrozen(t)||(t[n]=i),r=i)}e[r]=!0}return e}function g(e){var t={},n=void 0;for(n in e)d(p,e,[n])&&(t[n]=e[n]);return t}d||(d=function(e,t,n){return e.apply(t,n)});var m=Object.seal||function(e){return e},b=m(/\{\{[\s\S]*|[\s\S]*\}\}/gm),y=m(/<%[\s\S]*|[\s\S]*%>/gm),k=m(/^data-[\-\w.\u00B7-\uFFFF]/),v=m(/^aria-[\-\w]+$/),x=m(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),_=m(/^(?:\w+script|data):/i),w=m(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g),A="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 S(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0&&void 0!==arguments[0]?arguments[0]:E(),p=function(t){return e(t)};if(p.version="2.0.1",p.removed=[],!o||!o.document||9!==o.document.nodeType)return p.isSupported=!1,p;var h=o.document,d=!1,m=!1,O=!1,C=o.document,M=o.DocumentFragment,N=o.HTMLTemplateElement,$=o.Node,D=o.NodeFilter,H=o.NamedNodeMap,F=void 0===H?o.NamedNodeMap||o.MozNamedAttrMap:H,I=o.Text,j=o.Comment,q=o.DOMParser,U=o.TrustedTypes;if("function"==typeof N){var P=C.createElement("template");P.content&&P.content.ownerDocument&&(C=P.content.ownerDocument)}var Z=z(U,h),B=Z?Z.createHTML(""):"",W=C,G=W.implementation,J=W.createNodeIterator,V=W.getElementsByTagName,X=W.createDocumentFragment,Y=h.importNode,K={};p.isSupported=G&&void 0!==G.createHTMLDocument&&9!==C.documentMode;var Q=b,ee=y,te=k,ne=v,re=_,ie=w,se=x,oe=null,ae=f({},[].concat(S(t),S(n),S(r),S(i),S(s))),le=null,ce=f({},[].concat(S(a),S(l),S(c),S(u))),ue=null,pe=null,he=!0,de=!0,fe=!1,ge=!1,me=!1,be=!1,ye=!1,ke=!1,ve=!1,xe=!1,_e=!1,we=!1,Ae=!0,Se=!0,Te=!1,Le={},Re=f({},["audio","head","math","script","style","template","svg","video"]),Ee=f({},["audio","video","img","source","image"]),ze=null,Oe=f({},["alt","class","for","id","label","name","pattern","placeholder","summary","title","value","style","xmlns"]),Ce=null,Me=C.createElement("form"),Ne=function(e){Ce&&Ce===e||(e&&"object"===(void 0===e?"undefined":A(e))||(e={}),oe="ALLOWED_TAGS"in e?f({},e.ALLOWED_TAGS):ae,le="ALLOWED_ATTR"in e?f({},e.ALLOWED_ATTR):ce,ze="ADD_URI_SAFE_ATTR"in e?f({},e.ADD_URI_SAFE_ATTR):Oe,ue="FORBID_TAGS"in e?f({},e.FORBID_TAGS):{},pe="FORBID_ATTR"in e?f({},e.FORBID_ATTR):{},Le="USE_PROFILES"in e&&e.USE_PROFILES,he=!1!==e.ALLOW_ARIA_ATTR,de=!1!==e.ALLOW_DATA_ATTR,fe=e.ALLOW_UNKNOWN_PROTOCOLS||!1,ge=e.SAFE_FOR_JQUERY||!1,me=e.SAFE_FOR_TEMPLATES||!1,be=e.WHOLE_DOCUMENT||!1,ve=e.RETURN_DOM||!1,xe=e.RETURN_DOM_FRAGMENT||!1,_e=e.RETURN_DOM_IMPORT||!1,we=e.RETURN_TRUSTED_TYPE||!1,ke=e.FORCE_BODY||!1,Ae=!1!==e.SANITIZE_DOM,Se=!1!==e.KEEP_CONTENT,Te=e.IN_PLACE||!1,se=e.ALLOWED_URI_REGEXP||se,me&&(de=!1),xe&&(ve=!0),Le&&(oe=f({},[].concat(S(s))),le=[],!0===Le.html&&(f(oe,t),f(le,a)),!0===Le.svg&&(f(oe,n),f(le,l),f(le,u)),!0===Le.svgFilters&&(f(oe,r),f(le,l),f(le,u)),!0===Le.mathMl&&(f(oe,i),f(le,c),f(le,u))),e.ADD_TAGS&&(oe===ae&&(oe=g(oe)),f(oe,e.ADD_TAGS)),e.ADD_ATTR&&(le===ce&&(le=g(le)),f(le,e.ADD_ATTR)),e.ADD_URI_SAFE_ATTR&&f(ze,e.ADD_URI_SAFE_ATTR),Se&&(oe["#text"]=!0),be&&f(oe,["html","head","body"]),oe.table&&f(oe,["tbody"]),R&&R(e),Ce=e)},$e=function(e){p.removed.push({element:e});try{e.parentNode.removeChild(e)}catch(t){e.outerHTML=B}},De=function(e,t){try{p.removed.push({attribute:t.getAttributeNode(e),from:t})}catch(e){p.removed.push({attribute:null,from:t})}t.removeAttribute(e)},He=function(e){var t=void 0,n=void 0;if(ke)e=""+e;else{var r=e.match(/^[\s]+/);(n=r&&r[0])&&(e=e.slice(n.length))}if(d)try{t=(new q).parseFromString(e,"text/html")}catch(e){}if(O&&f(ue,["title"]),!t||!t.documentElement){var i=(t=G.createHTMLDocument("")).body;i.parentNode.removeChild(i.parentNode.firstElementChild),i.outerHTML=Z?Z.createHTML(e):e}return n&&t.body.insertBefore(C.createTextNode(n),t.body.childNodes[0]||null),V.call(t,be?"html":"body")[0]};p.isSupported&&(function(){try{He('

    ').querySelector("svg img")&&(d=!0)}catch(e){}}(),function(){try{He("

    ").querySelector("svg p")&&(m=!0)}catch(e){}}(),function(){try{He("</title><img>").querySelector("title").innerHTML.match(/<\/title/)&&(O=!0)}catch(e){}}());var Fe=function(e){return J.call(e.ownerDocument||e,e,D.SHOW_ELEMENT|D.SHOW_COMMENT|D.SHOW_TEXT,(function(){return D.FILTER_ACCEPT}),!1)},Ie=function(e){return"object"===(void 0===$?"undefined":A($))?e instanceof $:e&&"object"===(void 0===e?"undefined":A(e))&&"number"==typeof e.nodeType&&"string"==typeof e.nodeName},je=function(e,t,n){K[e]&&K[e].forEach((function(e){e.call(p,t,n,Ce)}))},qe=function(e){var t,n=void 0;if(je("beforeSanitizeElements",e,null),!((t=e)instanceof I||t instanceof j||"string"==typeof t.nodeName&&"string"==typeof t.textContent&&"function"==typeof t.removeChild&&t.attributes instanceof F&&"function"==typeof t.removeAttribute&&"function"==typeof t.setAttribute))return $e(e),!0;var r=e.nodeName.toLowerCase();if(je("uponSanitizeElement",e,{tagName:r,allowedTags:oe}),!oe[r]||ue[r]){if(Se&&!Re[r]&&"function"==typeof e.insertAdjacentHTML)try{var i=e.innerHTML;e.insertAdjacentHTML("AfterEnd",Z?Z.createHTML(i):i)}catch(e){}return $e(e),!0}return"noscript"===r&&e.innerHTML.match(/<\/noscript/i)?($e(e),!0):"noembed"===r&&e.innerHTML.match(/<\/noembed/i)?($e(e),!0):(!ge||e.firstElementChild||e.content&&e.content.firstElementChild||!/</g.test(e.textContent)||(p.removed.push({element:e.cloneNode()}),e.innerHTML?e.innerHTML=e.innerHTML.replace(/</g,"<"):e.innerHTML=e.textContent.replace(/</g,"<")),me&&3===e.nodeType&&(n=(n=(n=e.textContent).replace(Q," ")).replace(ee," "),e.textContent!==n&&(p.removed.push({element:e.cloneNode()}),e.textContent=n)),je("afterSanitizeElements",e,null),!1)},Ue=function(e,t,n){if(Ae&&("id"===t||"name"===t)&&(n in C||n in Me))return!1;if(de&&te.test(t));else if(he&&ne.test(t));else{if(!le[t]||pe[t])return!1;if(ze[t]);else if(se.test(n.replace(ie,"")));else if("src"!==t&&"xlink:href"!==t&&"href"!==t||"script"===e||0!==n.indexOf("data:")||!Ee[e])if(fe&&!re.test(n.replace(ie,"")));else if(n)return!1}return!0},Pe=function(e){var t=void 0,n=void 0,r=void 0,i=void 0,s=void 0;je("beforeSanitizeAttributes",e,null);var o=e.attributes;if(o){var a={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:le};for(s=o.length;s--;){var l=t=o[s],c=l.name,u=l.namespaceURI;if(n=t.value.trim(),r=c.toLowerCase(),a.attrName=r,a.attrValue=n,a.keepAttr=!0,je("uponSanitizeAttribute",e,a),n=a.attrValue,m&&n.match(/<\//)&&$e(e),"name"===r&&"IMG"===e.nodeName&&o.id)i=o.id,o=T(L,o,[]),De("id",e),De(c,e),o.indexOf(i)>s&&e.setAttribute("id",i.value);else{if("INPUT"===e.nodeName&&"type"===r&&"file"===n&&a.keepAttr&&(le[r]||!pe[r]))continue;"id"===c&&e.setAttribute(c,""),De(c,e)}if(a.keepAttr){me&&(n=(n=n.replace(Q," ")).replace(ee," "));var h=e.nodeName.toLowerCase();if(Ue(h,r,n))try{u?e.setAttributeNS(u,c,n):e.setAttribute(c,n),p.removed.pop()}catch(e){}}}je("afterSanitizeAttributes",e,null)}},Ze=function e(t){var n=void 0,r=Fe(t);for(je("beforeSanitizeShadowDOM",t,null);n=r.nextNode();)je("uponSanitizeShadowNode",n,null),qe(n)||(n.content instanceof M&&e(n.content),Pe(n));je("afterSanitizeShadowDOM",t,null)};return p.sanitize=function(e,t){var n=void 0,r=void 0,i=void 0,s=void 0,a=void 0;if(e||(e="\x3c!--\x3e"),"string"!=typeof e&&!Ie(e)){if("function"!=typeof e.toString)throw new TypeError("toString is not a function");if("string"!=typeof(e=e.toString()))throw new TypeError("dirty is not a string, aborting")}if(!p.isSupported){if("object"===A(o.toStaticHTML)||"function"==typeof o.toStaticHTML){if("string"==typeof e)return o.toStaticHTML(e);if(Ie(e))return o.toStaticHTML(e.outerHTML)}return e}if(ye||Ne(t),p.removed=[],Te);else if(e instanceof $)1===(r=(n=He("\x3c!--\x3e")).ownerDocument.importNode(e,!0)).nodeType&&"BODY"===r.nodeName?n=r:"HTML"===r.nodeName?n=r:n.appendChild(r);else{if(!ve&&!me&&!be&&we&&-1===e.indexOf("<"))return Z?Z.createHTML(e):e;if(!(n=He(e)))return ve?null:B}n&&ke&&$e(n.firstChild);for(var l=Fe(Te?e:n);i=l.nextNode();)3===i.nodeType&&i===s||qe(i)||(i.content instanceof M&&Ze(i.content),Pe(i),s=i);if(s=null,Te)return e;if(ve){if(xe)for(a=X.call(n.ownerDocument);n.firstChild;)a.appendChild(n.firstChild);else a=n;return _e&&(a=Y.call(h,a,!0)),a}var c=be?n.outerHTML:n.innerHTML;return me&&(c=(c=c.replace(Q," ")).replace(ee," ")),Z&&we?Z.createHTML(c):c},p.setConfig=function(e){Ne(e),ye=!0},p.clearConfig=function(){Ce=null,ye=!1},p.isValidAttribute=function(e,t,n){Ce||Ne({});var r=e.toLowerCase(),i=t.toLowerCase();return Ue(r,i,n)},p.addHook=function(e,t){"function"==typeof t&&(K[e]=K[e]||[],K[e].push(t))},p.removeHook=function(e){K[e]&&K[e].pop()},p.removeHooks=function(e){K[e]&&(K[e]=[])},p.removeAllHooks=function(){K={}},p}()}()}}]); +//# sourceMappingURL=vue-5.js.map?v=d01635292ff764289c84 \ No newline at end of file diff --git a/apps/settings/js/vue-5.js.map b/apps/settings/js/vue-5.js.map new file mode 100644 index 00000000000..71fab8b69e5 --- /dev/null +++ b/apps/settings/js/vue-5.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./node_modules/css-loader/dist/runtime/api.js","webpack:///./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack:///./node_modules/marked/lib/marked.js","webpack:///./node_modules/dompurify/dist/purify.js"],"names":["module","exports","useSourceMap","list","toString","this","map","item","content","cssMapping","btoa","sourceMapping","sourceMap","base64","unescape","encodeURIComponent","JSON","stringify","data","concat","sourceURLs","sources","source","sourceRoot","join","cssWithMappingToString","i","modules","mediaQuery","alreadyImportedModules","length","id","_i","push","memo","stylesInDom","isOldIE","Boolean","window","document","all","atob","getTarget","target","styleTarget","querySelector","HTMLIFrameElement","contentDocument","head","e","listToStyles","options","styles","newStyles","base","part","css","media","parts","addStylesToDom","domStyle","j","refs","addStyle","insertStyleElement","style","createElement","attributes","nonce","Object","keys","forEach","key","setAttribute","insert","Error","appendChild","textStore","replaceText","index","replacement","filter","applyToSingletonTag","remove","obj","styleSheet","cssText","cssNode","createTextNode","childNodes","removeChild","insertBefore","applyToTag","firstChild","singleton","singletonCounter","update","styleIndex","bind","parentNode","removeStyleElement","newObj","newList","mayRemove","_domStyle","root","block","newline","code","fences","hr","heading","blockquote","html","def","nptable","noop","table","lheading","_paragraph","text","Lexer","tokens","links","create","marked","defaults","rules","normal","pedantic","gfm","_label","_title","edit","replace","getRegex","bullet","_tag","_comment","paragraph","merge","lex","src","prototype","token","top","next","loose","cap","bull","b","listStart","listItems","t","space","tag","l","isordered","istask","ischecked","exec","substring","type","lastToken","trimRight","codeBlockStyle","rtrim","lang","trim","depth","header","splitCells","align","split","cells","test","ordered","start","match","indexOf","RegExp","smartLists","slice","charAt","undefined","task","checked","sanitize","pre","sanitizer","escape","toLowerCase","href","title","charCodeAt","inline","autolink","url","link","reflink","nolink","strong","em","br","del","InlineLexer","renderer","Renderer","breaks","TextRenderer","Parser","slugger","Slugger","seen","encode","escapeTest","escapeReplace","ch","replacements","escapeTestNoEncode","escapeReplaceNoEncode","_","n","String","fromCharCode","parseInt","regex","opt","name","val","cleanUrl","prot","decodeURIComponent","originIndependentUrl","baseUrls","resolveUrl","encodeURI","_punctuation","_escapes","_scheme","_email","_attribute","_href","_extended_email","_backpedal","output","prevCapZero","out","inLink","inRawBlock","lastParenIndex","findClosingBracket","linkLen","outputLink","escapes","codespan","mangle","smartypants","image","Math","random","infostring","escaped","highlight","langPrefix","quote","level","raw","headerIds","headerPrefix","slug","xhtml","body","listitem","checkbox","tablerow","tablecell","flags","baseUrl","parse","inlineText","reverse","tok","pop","peek","parseText","row","cell","errMsg","silent","console","log","value","hasOwnProperty","originalSlug","arguments","call","tableRow","count","offset","str","curr","splice","c","invert","suffLen","currChar","substr","checkSanitizeDeprecation","warn","callback","pending","done","err","message","setOptions","getDefaults","parser","lexer","inlineLexer","freeze$1","freeze","x","svg","svgFilters","mathMl","freeze$2","html$1","svg$1","mathMl$1","xml","setPrototypeOf","apply$1","Reflect","apply","addToSet","set","array","element","lcElement","isFrozen","clone","object","newObject","property","fun","thisValue","args","seal","MUSTACHE_EXPR","ERB_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","_typeof","Symbol","iterator","constructor","_toConsumableArray","arr","Array","isArray","arr2","from","arraySlice","getGlobal","_createTrustedTypesPolicy","trustedTypes","createPolicy","suffix","currentScript","hasAttribute","getAttribute","policyName","createHTML","html$$1","error","createDOMPurify","DOMPurify","version","removed","nodeType","isSupported","originalDocument","useDOMParser","removeSVGAttr","removeTitle","DocumentFragment","HTMLTemplateElement","Node","NodeFilter","_window$NamedNodeMap","NamedNodeMap","MozNamedAttrMap","Text","Comment","DOMParser","TrustedTypes","template","ownerDocument","trustedTypesPolicy","emptyHTML","_document","implementation","createNodeIterator","getElementsByTagName","createDocumentFragment","importNode","hooks","createHTMLDocument","documentMode","MUSTACHE_EXPR$$1","ERB_EXPR$$1","DATA_ATTR$$1","ARIA_ATTR$$1","IS_SCRIPT_OR_DATA$$1","ATTR_WHITESPACE$$1","IS_ALLOWED_URI$$1","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","FORBID_TAGS","FORBID_ATTR","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","SAFE_FOR_JQUERY","SAFE_FOR_TEMPLATES","WHOLE_DOCUMENT","SET_CONFIG","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_DOM_IMPORT","RETURN_TRUSTED_TYPE","SANITIZE_DOM","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","CONFIG","formElement","_parseConfig","cfg","ADD_URI_SAFE_ATTR","ALLOWED_URI_REGEXP","ADD_TAGS","ADD_ATTR","_forceRemove","node","outerHTML","_removeAttribute","attribute","getAttributeNode","removeAttribute","_initDocument","dirty","doc","leadingWhitespace","matches","parseFromString","documentElement","firstElementChild","innerHTML","_createIterator","SHOW_ELEMENT","SHOW_COMMENT","SHOW_TEXT","FILTER_ACCEPT","_isNode","nodeName","_executeHook","entryPoint","currentNode","hook","_sanitizeElements","elm","textContent","tagName","allowedTags","insertAdjacentHTML","htmlToInsert","cloneNode","_isValidAttribute","lcTag","lcName","_sanitizeAttributes","attr","idAttr","hookEvent","attrName","attrValue","keepAttr","allowedAttributes","_attr","namespaceURI","setAttributeNS","_sanitizeShadowDOM","fragment","shadowNode","shadowIterator","nextNode","importedNode","oldNode","returnNode","TypeError","toStaticHTML","nodeIterator","serializedHTML","setConfig","clearConfig","isValidAttribute","addHook","hookFunction","removeHook","removeHooks","removeAllHooks","factory"],"mappings":"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","file":"vue-5.js?v=d01635292ff764289c84","sourcesContent":["\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (useSourceMap) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item, useSourceMap);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \"{\").concat(content, \"}\");\n }\n\n return content;\n }).join('');\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery) {\n if (typeof modules === 'string') {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, '']];\n }\n\n var alreadyImportedModules = {};\n\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = modules[_i]; // skip already imported module\n // this implementation is not 100% perfect for weird media query combinations\n // when a module is imported multiple times with different media queries.\n // I hope this will never occur (Hey this way we have smaller bundles)\n\n if (item[0] == null || !alreadyImportedModules[item[0]]) {\n if (mediaQuery && !item[2]) {\n item[2] = mediaQuery;\n } else if (mediaQuery) {\n item[2] = \"(\".concat(item[2], \") and (\").concat(mediaQuery, \")\");\n }\n\n list.push(item);\n }\n }\n };\n\n return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring\n\n var cssMapping = item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (useSourceMap && typeof btoa === 'function') {\n var sourceMapping = toComment(cssMapping);\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot).concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n }\n\n return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n return \"/*# \".concat(data, \" */\");\n}","\"use strict\";\n\nvar stylesInDom = {};\n\nvar isOldIE = function isOldIE() {\n var memo;\n return function memorize() {\n if (typeof memo === 'undefined') {\n // Test for IE <= 9 as proposed by Browserhacks\n // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n // Tests for existence of standard globals is to allow style-loader\n // to operate correctly into non-standard environments\n // @see https://github.com/webpack-contrib/style-loader/issues/177\n memo = Boolean(window && document && document.all && !window.atob);\n }\n\n return memo;\n };\n}();\n\nvar getTarget = function getTarget() {\n var memo = {};\n return function memorize(target) {\n if (typeof memo[target] === 'undefined') {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n };\n}();\n\nfunction listToStyles(list, options) {\n var styles = [];\n var newStyles = {};\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var css = item[1];\n var media = item[2];\n var sourceMap = item[3];\n var part = {\n css: css,\n media: media,\n sourceMap: sourceMap\n };\n\n if (!newStyles[id]) {\n styles.push(newStyles[id] = {\n id: id,\n parts: [part]\n });\n } else {\n newStyles[id].parts.push(part);\n }\n }\n\n return styles;\n}\n\nfunction addStylesToDom(styles, options) {\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i];\n var domStyle = stylesInDom[item.id];\n var j = 0;\n\n if (domStyle) {\n domStyle.refs++;\n\n for (; j < domStyle.parts.length; j++) {\n domStyle.parts[j](item.parts[j]);\n }\n\n for (; j < item.parts.length; j++) {\n domStyle.parts.push(addStyle(item.parts[j], options));\n }\n } else {\n var parts = [];\n\n for (; j < item.parts.length; j++) {\n parts.push(addStyle(item.parts[j], options));\n }\n\n stylesInDom[item.id] = {\n id: item.id,\n refs: 1,\n parts: parts\n };\n }\n }\n}\n\nfunction insertStyleElement(options) {\n var style = document.createElement('style');\n\n if (typeof options.attributes.nonce === 'undefined') {\n var nonce = typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n\n if (nonce) {\n options.attributes.nonce = nonce;\n }\n }\n\n Object.keys(options.attributes).forEach(function (key) {\n style.setAttribute(key, options.attributes[key]);\n });\n\n if (typeof options.insert === 'function') {\n options.insert(style);\n } else {\n var target = getTarget(options.insert || 'head');\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n }\n\n return style;\n}\n\nfunction removeStyleElement(style) {\n // istanbul ignore if\n if (style.parentNode === null) {\n return false;\n }\n\n style.parentNode.removeChild(style);\n}\n/* istanbul ignore next */\n\n\nvar replaceText = function replaceText() {\n var textStore = [];\n return function replace(index, replacement) {\n textStore[index] = replacement;\n return textStore.filter(Boolean).join('\\n');\n };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n var css = remove ? '' : obj.css; // For old IE\n\n /* istanbul ignore if */\n\n if (style.styleSheet) {\n style.styleSheet.cssText = replaceText(index, css);\n } else {\n var cssNode = document.createTextNode(css);\n var childNodes = style.childNodes;\n\n if (childNodes[index]) {\n style.removeChild(childNodes[index]);\n }\n\n if (childNodes.length) {\n style.insertBefore(cssNode, childNodes[index]);\n } else {\n style.appendChild(cssNode);\n }\n }\n}\n\nfunction applyToTag(style, options, obj) {\n var css = obj.css;\n var media = obj.media;\n var sourceMap = obj.sourceMap;\n\n if (media) {\n style.setAttribute('media', media);\n }\n\n if (sourceMap && btoa) {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n while (style.firstChild) {\n style.removeChild(style.firstChild);\n }\n\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n var style;\n var update;\n var remove;\n\n if (options.singleton) {\n var styleIndex = singletonCounter++;\n style = singleton || (singleton = insertStyleElement(options));\n update = applyToSingletonTag.bind(null, style, styleIndex, false);\n remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n } else {\n style = insertStyleElement(options);\n update = applyToTag.bind(null, style, options);\n\n remove = function remove() {\n removeStyleElement(style);\n };\n }\n\n update(obj);\n return function updateStyle(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n return;\n }\n\n update(obj = newObj);\n } else {\n remove();\n }\n };\n}\n\nmodule.exports = function (list, options) {\n options = options || {};\n options.attributes = typeof options.attributes === 'object' ? options.attributes : {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n // tags it will allow on a page\n\n if (!options.singleton && typeof options.singleton !== 'boolean') {\n options.singleton = isOldIE();\n }\n\n var styles = listToStyles(list, options);\n addStylesToDom(styles, options);\n return function update(newList) {\n var mayRemove = [];\n\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i];\n var domStyle = stylesInDom[item.id];\n\n if (domStyle) {\n domStyle.refs--;\n mayRemove.push(domStyle);\n }\n }\n\n if (newList) {\n var newStyles = listToStyles(newList, options);\n addStylesToDom(newStyles, options);\n }\n\n for (var _i = 0; _i < mayRemove.length; _i++) {\n var _domStyle = mayRemove[_i];\n\n if (_domStyle.refs === 0) {\n for (var j = 0; j < _domStyle.parts.length; j++) {\n _domStyle.parts[j]();\n }\n\n delete stylesInDom[_domStyle.id];\n }\n }\n };\n};","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2018, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n;(function(root) {\n'use strict';\n\n/**\n * Block-Level Grammar\n */\n\nvar block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: /^ {0,3}(`{3,}|~{3,})([^`~\\n]*)\\n(?:|([\\s\\S]*?)\\n)(?: {0,3}\\1[~`]* *(?:\\n+|$)|$)/,\n hr: /^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6}) +([^\\n]*?)(?: +#+)? *(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3})(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?\\\\?>\\\\n*' // (3)\n + '|<![A-Z][\\\\s\\\\S]*?>\\\\n*' // (4)\n + '|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>\\\\n*' // (5)\n + '|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (6)\n + '|<(?!script|pre|style)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (7) open tag\n + '|</(?!script|pre|style)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *\\n? *<?([^\\s>]+)>?(?:(?: +\\n? *| *\\n *)(title))? *(?:\\n+|$)/,\n nptable: noop,\n table: noop,\n lheading: /^([^\\n]+)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\n\nblock._label = /(?!\\s*\\])(?:\\\\[\\[\\]]|[^\\[\\]])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\n\nblock.bullet = /(?:[*+-]|\\d{1,9}\\.)/;\nblock.item = /^( *)(bull) ?[^\\n]*(?:\\n(?!\\1bull ?)[^\\n]*)*/;\nblock.item = edit(block.item, 'gm')\n .replace(/bull/g, block.bullet)\n .getRegex();\n\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\n\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = /<!--(?!-?>)[\\s\\S]*?-->/;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} +')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}|~{3,})[^`\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n nptable: /^ *([^|\\n ].*\\|.*)\\n *([-:]+ *\\|[-| :]*)(?:\\n((?:.*[^>\\n ].*(?:\\n|$))*)\\n*|$)/,\n table: /^ *\\|(.+)\\n *\\|?( *[-:]+[-| :]*)(?:\\n((?: *[^>\\n ].*(?:\\n|$))*)\\n*|$)/\n});\n\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nblock.pedantic = merge({}, block.normal, {\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|<tag(?:\"[^\"]*\"|\\'[^\\']*\\'|\\\\s[^\\'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *(?:#+ *)?(?:\\n+|$)/,\n fences: noop, // fences not supported\n paragraph: edit(block.normal._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n});\n\n/**\n * Block Lexer\n */\n\nfunction Lexer(options) {\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || marked.defaults;\n this.rules = block.normal;\n\n if (this.options.pedantic) {\n this.rules = block.pedantic;\n } else if (this.options.gfm) {\n this.rules = block.gfm;\n }\n}\n\n/**\n * Expose Block Rules\n */\n\nLexer.rules = block;\n\n/**\n * Static Lex Method\n */\n\nLexer.lex = function(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n};\n\n/**\n * Preprocessing\n */\n\nLexer.prototype.lex = function(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ')\n .replace(/\\u00a0/g, ' ')\n .replace(/\\u2424/g, '\\n');\n\n return this.token(src, true);\n};\n\n/**\n * Lexing\n */\n\nLexer.prototype.token = function(src, top) {\n src = src.replace(/^ +$/gm, '');\n var next,\n loose,\n cap,\n bull,\n b,\n item,\n listStart,\n listItems,\n t,\n space,\n i,\n tag,\n l,\n isordered,\n istask,\n ischecked;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n var lastToken = this.tokens[this.tokens.length - 1];\n src = src.substring(cap[0].length);\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && lastToken.type === 'paragraph') {\n lastToken.text += '\\n' + cap[0].trimRight();\n } else {\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(cap, '\\n')\n : cap\n });\n }\n continue;\n }\n\n // fences\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2] ? cap[2].trim() : cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (cap = this.rules.nptable.exec(src)) {\n item = {\n type: 'table',\n header: splitCells(cap[1].replace(/^ *| *\\| *$/g, '')),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3] ? cap[3].replace(/\\n$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n src = src.substring(cap[0].length);\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = splitCells(item.cells[i], item.header.length);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n isordered = bull.length > 1;\n\n listStart = {\n type: 'list_start',\n ordered: isordered,\n start: isordered ? +bull : '',\n loose: false\n };\n\n this.tokens.push(listStart);\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n listItems = [];\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) */, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull.length > 1 ? b.length === 1\n : (b.length > 1 || (this.options.smartLists && b !== bull))) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n if (loose) {\n listStart.loose = true;\n }\n\n // Check for task list items\n istask = /^\\[[ xX]\\] /.test(item);\n ischecked = undefined;\n if (istask) {\n ischecked = item[1] !== ' ';\n item = item.replace(/^\\[[ xX]\\] +/, '');\n }\n\n t = {\n type: 'list_item_start',\n task: istask,\n checked: ischecked,\n loose: loose\n };\n\n listItems.push(t);\n this.tokens.push(t);\n\n // Recurse.\n this.token(item, false);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n if (listStart.loose) {\n l = listItems.length;\n i = 0;\n for (; i < l; i++) {\n listItems[i].loose = true;\n }\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0]\n });\n continue;\n }\n\n // def\n if (top && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n if (cap[3]) cap[3] = cap[3].substring(1, cap[3].length - 1);\n tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n if (!this.tokens.links[tag]) {\n this.tokens.links[tag] = {\n href: cap[2],\n title: cap[3]\n };\n }\n continue;\n }\n\n // table (gfm)\n if (cap = this.rules.table.exec(src)) {\n item = {\n type: 'table',\n header: splitCells(cap[1].replace(/^ *| *\\| *$/g, '')),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3] ? cap[3].replace(/\\n$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n src = src.substring(cap[0].length);\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = splitCells(\n item.cells[i].replace(/^ *\\| *| *\\| *$/g, ''),\n item.header.length);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n};\n\n/**\n * Inline-Level Grammar\n */\n\nvar inline = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noop,\n tag: '^comment'\n + '|^</[a-zA-Z][\\\\w:-]*\\\\s*>' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. <?php ?>\n + '|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>' // declaration, e.g. <!DOCTYPE html>\n + '|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>', // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(?!\\s*\\])((?:\\\\[\\[\\]]?|[^\\[\\]\\\\])+)\\]/,\n nolink: /^!?\\[(?!\\s*\\])((?:\\[[^\\[\\]]*\\]|\\\\[\\[\\]]|[^\\[\\]])*)\\](?:\\[\\])?/,\n strong: /^__([^\\s_])__(?!_)|^\\*\\*([^\\s*])\\*\\*(?!\\*)|^__([^\\s][\\s\\S]*?[^\\s])__(?!_)|^\\*\\*([^\\s][\\s\\S]*?[^\\s])\\*\\*(?!\\*)/,\n em: /^_([^\\s_])_(?!_)|^\\*([^\\s*<\\[])\\*(?!\\*)|^_([^\\s<][\\s\\S]*?[^\\s_])_(?!_|[^\\spunctuation])|^_([^\\s_<][\\s\\S]*?[^\\s])_(?!_|[^\\spunctuation])|^\\*([^\\s<\"][\\s\\S]*?[^\\s\\*])\\*(?!\\*|[^\\spunctuation])|^\\*([^\\s*\"<\\[][\\s\\S]*?[^\\s])\\*(?!\\*)/,\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noop,\n text: /^(`+|[^`])(?:[\\s\\S]*?(?:(?=[\\\\<!\\[`*]|\\b_|$)|[^ ](?= {2,}\\n))|(?= {2,}\\n))/\n};\n\n// list of punctuation marks from common mark spec\n// without ` and ] to workaround Rule 17 (inline code blocks/links)\ninline._punctuation = '!\"#$%&\\'()*+,\\\\-./:;<=>?@\\\\[^_{|}~';\ninline.em = edit(inline.em).replace(/punctuation/g, inline._punctuation).getRegex();\n\ninline._escapes = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/g;\n\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[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])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\n\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline.tag = edit(inline.tag)\n .replace('comment', block._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\n\ninline._label = /(?:\\[[^\\[\\]]*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\[<>]?|[^\\s<>\\\\])*>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\n\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/,\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,\n del: /^~+(?=\\S)([\\s\\S]*?\\S)~+/,\n text: /^(`+|[^`])(?:[\\s\\S]*?(?:(?=[\\\\<!\\[`*~]|\\b_|https?:\\/\\/|ftp:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@))|(?= {2,}\\n|[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@))/\n});\n\ninline.gfm.url = edit(inline.gfm.url, 'i')\n .replace('email', inline.gfm._extended_email)\n .getRegex();\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = merge({}, inline.gfm, {\n br: edit(inline.br).replace('{2,}', '*').getRegex(),\n text: edit(inline.gfm.text)\n .replace('\\\\b_', '\\\\b_| {2,}\\\\n')\n .replace(/\\{2,\\}/g, '*')\n .getRegex()\n});\n\n/**\n * Inline Lexer & Compiler\n */\n\nfunction InlineLexer(links, options) {\n this.options = options || marked.defaults;\n this.links = links;\n this.rules = inline.normal;\n this.renderer = this.options.renderer || new Renderer();\n this.renderer.options = this.options;\n\n if (!this.links) {\n throw new Error('Tokens array requires a `links` property.');\n }\n\n if (this.options.pedantic) {\n this.rules = inline.pedantic;\n } else if (this.options.gfm) {\n if (this.options.breaks) {\n this.rules = inline.breaks;\n } else {\n this.rules = inline.gfm;\n }\n }\n}\n\n/**\n * Expose Inline Rules\n */\n\nInlineLexer.rules = inline;\n\n/**\n * Static Lexing/Compiling Method\n */\n\nInlineLexer.output = function(src, links, options) {\n var inline = new InlineLexer(links, options);\n return inline.output(src);\n};\n\n/**\n * Lexing/Compiling\n */\n\nInlineLexer.prototype.output = function(src) {\n var out = '',\n link,\n text,\n href,\n title,\n cap,\n prevCapZero;\n\n while (src) {\n // escape\n if (cap = this.rules.escape.exec(src)) {\n src = src.substring(cap[0].length);\n out += escape(cap[1]);\n continue;\n }\n\n // tag\n if (cap = this.rules.tag.exec(src)) {\n if (!this.inLink && /^<a /i.test(cap[0])) {\n this.inLink = true;\n } else if (this.inLink && /^<\\/a>/i.test(cap[0])) {\n this.inLink = false;\n }\n if (!this.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.inRawBlock = true;\n } else if (this.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.inRawBlock = false;\n }\n\n src = src.substring(cap[0].length);\n out += this.options.sanitize\n ? this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0])\n : cap[0];\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n var lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n var linkLen = 4 + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n src = src.substring(cap[0].length);\n this.inLink = true;\n href = cap[2];\n if (this.options.pedantic) {\n link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n } else {\n title = '';\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim().replace(/^<([\\s\\S]*)>$/, '$1');\n out += this.outputLink(cap, {\n href: InlineLexer.escapes(href),\n title: InlineLexer.escapes(title)\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[4] || cap[3] || cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[6] || cap[5] || cap[4] || cap[3] || cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2].trim(), true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = escape(this.mangle(cap[1]));\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n if (cap[2] === '@') {\n text = escape(cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + text;\n } else {\n href = text;\n }\n }\n src = src.substring(cap[0].length);\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n if (this.inRawBlock) {\n out += this.renderer.text(this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0]);\n } else {\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n }\n continue;\n }\n\n if (src) {\n throw new Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n};\n\nInlineLexer.escapes = function(text) {\n return text ? text.replace(InlineLexer.rules._escapes, '$1') : text;\n};\n\n/**\n * Compile Link\n */\n\nInlineLexer.prototype.outputLink = function(cap, link) {\n var href = link.href,\n title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n};\n\n/**\n * Smartypants Transformations\n */\n\nInlineLexer.prototype.smartypants = function(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n};\n\n/**\n * Mangle Links\n */\n\nInlineLexer.prototype.mangle = function(text) {\n if (!this.options.mangle) return text;\n var out = '',\n l = text.length,\n i = 0,\n ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n};\n\n/**\n * Renderer\n */\n\nfunction Renderer(options) {\n this.options = options || marked.defaults;\n}\n\nRenderer.prototype.code = function(code, infostring, escaped) {\n var lang = (infostring || '').match(/\\S*/)[0];\n if (this.options.highlight) {\n var out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '<pre><code>'\n + (escaped ? code : escape(code, true))\n + '</code></pre>';\n }\n\n return '<pre><code class=\"'\n + this.options.langPrefix\n + escape(lang, true)\n + '\">'\n + (escaped ? code : escape(code, true))\n + '</code></pre>\\n';\n};\n\nRenderer.prototype.blockquote = function(quote) {\n return '<blockquote>\\n' + quote + '</blockquote>\\n';\n};\n\nRenderer.prototype.html = function(html) {\n return html;\n};\n\nRenderer.prototype.heading = function(text, level, raw, slugger) {\n if (this.options.headerIds) {\n return '<h'\n + level\n + ' id=\"'\n + this.options.headerPrefix\n + slugger.slug(raw)\n + '\">'\n + text\n + '</h'\n + level\n + '>\\n';\n }\n // ignore IDs\n return '<h' + level + '>' + text + '</h' + level + '>\\n';\n};\n\nRenderer.prototype.hr = function() {\n return this.options.xhtml ? '<hr/>\\n' : '<hr>\\n';\n};\n\nRenderer.prototype.list = function(body, ordered, start) {\n var type = ordered ? 'ol' : 'ul',\n startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '</' + type + '>\\n';\n};\n\nRenderer.prototype.listitem = function(text) {\n return '<li>' + text + '</li>\\n';\n};\n\nRenderer.prototype.checkbox = function(checked) {\n return '<input '\n + (checked ? 'checked=\"\" ' : '')\n + 'disabled=\"\" type=\"checkbox\"'\n + (this.options.xhtml ? ' /' : '')\n + '> ';\n};\n\nRenderer.prototype.paragraph = function(text) {\n return '<p>' + text + '</p>\\n';\n};\n\nRenderer.prototype.table = function(header, body) {\n if (body) body = '<tbody>' + body + '</tbody>';\n\n return '<table>\\n'\n + '<thead>\\n'\n + header\n + '</thead>\\n'\n + body\n + '</table>\\n';\n};\n\nRenderer.prototype.tablerow = function(content) {\n return '<tr>\\n' + content + '</tr>\\n';\n};\n\nRenderer.prototype.tablecell = function(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align\n ? '<' + type + ' align=\"' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '</' + type + '>\\n';\n};\n\n// span level renderer\nRenderer.prototype.strong = function(text) {\n return '<strong>' + text + '</strong>';\n};\n\nRenderer.prototype.em = function(text) {\n return '<em>' + text + '</em>';\n};\n\nRenderer.prototype.codespan = function(text) {\n return '<code>' + text + '</code>';\n};\n\nRenderer.prototype.br = function() {\n return this.options.xhtml ? '<br/>' : '<br>';\n};\n\nRenderer.prototype.del = function(text) {\n return '<del>' + text + '</del>';\n};\n\nRenderer.prototype.link = function(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n var out = '<a href=\"' + escape(href) + '\"';\n if (title) {\n out += ' title=\"' + title + '\"';\n }\n out += '>' + text + '</a>';\n return out;\n};\n\nRenderer.prototype.image = function(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n\n var out = '<img src=\"' + href + '\" alt=\"' + text + '\"';\n if (title) {\n out += ' title=\"' + title + '\"';\n }\n out += this.options.xhtml ? '/>' : '>';\n return out;\n};\n\nRenderer.prototype.text = function(text) {\n return text;\n};\n\n/**\n * TextRenderer\n * returns only the textual part of the token\n */\n\nfunction TextRenderer() {}\n\n// no need for block level renderers\n\nTextRenderer.prototype.strong =\nTextRenderer.prototype.em =\nTextRenderer.prototype.codespan =\nTextRenderer.prototype.del =\nTextRenderer.prototype.text = function(text) {\n return text;\n};\n\nTextRenderer.prototype.link =\nTextRenderer.prototype.image = function(href, title, text) {\n return '' + text;\n};\n\nTextRenderer.prototype.br = function() {\n return '';\n};\n\n/**\n * Parsing & Compiling\n */\n\nfunction Parser(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || marked.defaults;\n this.options.renderer = this.options.renderer || new Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.slugger = new Slugger();\n}\n\n/**\n * Static Parse Method\n */\n\nParser.parse = function(src, options) {\n var parser = new Parser(options);\n return parser.parse(src);\n};\n\n/**\n * Parse Loop\n */\n\nParser.prototype.parse = function(src) {\n this.inline = new InlineLexer(src.links, this.options);\n // use an InlineLexer with a TextRenderer to extract pure text\n this.inlineText = new InlineLexer(\n src.links,\n merge({}, this.options, { renderer: new TextRenderer() })\n );\n this.tokens = src.reverse();\n\n var out = '';\n while (this.next()) {\n out += this.tok();\n }\n\n return out;\n};\n\n/**\n * Next Token\n */\n\nParser.prototype.next = function() {\n this.token = this.tokens.pop();\n return this.token;\n};\n\n/**\n * Preview Next Token\n */\n\nParser.prototype.peek = function() {\n return this.tokens[this.tokens.length - 1] || 0;\n};\n\n/**\n * Parse Text Tokens\n */\n\nParser.prototype.parseText = function() {\n var body = this.token.text;\n\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n\n return this.inline.output(body);\n};\n\n/**\n * Parse Current Token\n */\n\nParser.prototype.tok = function() {\n switch (this.token.type) {\n case 'space': {\n return '';\n }\n case 'hr': {\n return this.renderer.hr();\n }\n case 'heading': {\n return this.renderer.heading(\n this.inline.output(this.token.text),\n this.token.depth,\n unescape(this.inlineText.output(this.token.text)),\n this.slugger);\n }\n case 'code': {\n return this.renderer.code(this.token.text,\n this.token.lang,\n this.token.escaped);\n }\n case 'table': {\n var header = '',\n body = '',\n i,\n row,\n cell,\n j;\n\n // header\n cell = '';\n for (i = 0; i < this.token.header.length; i++) {\n cell += this.renderer.tablecell(\n this.inline.output(this.token.header[i]),\n { header: true, align: this.token.align[i] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n cell = '';\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(\n this.inline.output(row[j]),\n { header: false, align: this.token.align[j] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n return this.renderer.table(header, body);\n }\n case 'blockquote_start': {\n body = '';\n\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n\n return this.renderer.blockquote(body);\n }\n case 'list_start': {\n body = '';\n var ordered = this.token.ordered,\n start = this.token.start;\n\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n\n return this.renderer.list(body, ordered, start);\n }\n case 'list_item_start': {\n body = '';\n var loose = this.token.loose;\n var checked = this.token.checked;\n var task = this.token.task;\n\n if (this.token.task) {\n body += this.renderer.checkbox(checked);\n }\n\n while (this.next().type !== 'list_item_end') {\n body += !loose && this.token.type === 'text'\n ? this.parseText()\n : this.tok();\n }\n return this.renderer.listitem(body, task, checked);\n }\n case 'html': {\n // TODO parse inline content if parameter markdown=1\n return this.renderer.html(this.token.text);\n }\n case 'paragraph': {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n case 'text': {\n return this.renderer.paragraph(this.parseText());\n }\n default: {\n var errMsg = 'Token with \"' + this.token.type + '\" type was not found.';\n if (this.options.silent) {\n console.log(errMsg);\n } else {\n throw new Error(errMsg);\n }\n }\n }\n};\n\n/**\n * Slugger generates header id\n */\n\nfunction Slugger() {\n this.seen = {};\n}\n\n/**\n * Convert string to unique id\n */\n\nSlugger.prototype.slug = function(value) {\n var slug = value\n .toLowerCase()\n .trim()\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n\n if (this.seen.hasOwnProperty(slug)) {\n var originalSlug = slug;\n do {\n this.seen[originalSlug]++;\n slug = originalSlug + '-' + this.seen[originalSlug];\n } while (this.seen.hasOwnProperty(slug));\n }\n this.seen[slug] = 0;\n\n return slug;\n};\n\n/**\n * Helpers\n */\n\nfunction escape(html, encode) {\n if (encode) {\n if (escape.escapeTest.test(html)) {\n return html.replace(escape.escapeReplace, function(ch) { return escape.replacements[ch]; });\n }\n } else {\n if (escape.escapeTestNoEncode.test(html)) {\n return html.replace(escape.escapeReplaceNoEncode, function(ch) { return escape.replacements[ch]; });\n }\n }\n\n return html;\n}\n\nescape.escapeTest = /[&<>\"']/;\nescape.escapeReplace = /[&<>\"']/g;\nescape.replacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\n\nescape.escapeTestNoEncode = /[<>\"']|&(?!#?\\w+;)/;\nescape.escapeReplaceNoEncode = /[<>\"']|&(?!#?\\w+;)/g;\n\nfunction unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig, function(_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nfunction edit(regex, opt) {\n regex = regex.source || regex;\n opt = opt || '';\n return {\n replace: function(name, val) {\n val = val.source || val;\n val = val.replace(/(^|[^\\[])\\^/g, '$1');\n regex = regex.replace(name, val);\n return this;\n },\n getRegex: function() {\n return new RegExp(regex, opt);\n }\n };\n}\n\nfunction cleanUrl(sanitize, base, href) {\n if (sanitize) {\n try {\n var prot = decodeURIComponent(unescape(href))\n .replace(/[^\\w:]/g, '')\n .toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\n\nfunction resolveUrl(base, href) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (/^[^:]+:\\/*[^/]*$/.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n\n if (href.slice(0, 2) === '//') {\n return base.replace(/:[\\s\\S]*/, ':') + href;\n } else if (href.charAt(0) === '/') {\n return base.replace(/(:\\/*[^/]*)[\\s\\S]*/, '$1') + href;\n } else {\n return base + href;\n }\n}\nvar baseUrls = {};\nvar originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\nfunction noop() {}\nnoop.exec = noop;\n\nfunction merge(obj) {\n var i = 1,\n target,\n key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\nfunction splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n var row = tableRow.replace(/\\|/g, function(match, offset, str) {\n var escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/),\n i = 0;\n\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n\n// Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n// /c*$/ is vulnerable to REDOS.\n// invert: Remove suffix of non-c chars instead. Default falsey.\nfunction rtrim(str, c, invert) {\n if (str.length === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n var suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < str.length) {\n var currChar = str.charAt(str.length - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.substr(0, str.length - suffLen);\n}\n\nfunction findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n var level = 0;\n for (var i = 0; i < str.length; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nfunction checkSanitizeDeprecation(opt) {\n if (opt && opt.sanitize && !opt.silent) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n}\n\n/**\n * Marked\n */\n\nfunction marked(src, opt, callback) {\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n throw new Error('marked(): input parameter is undefined or null');\n }\n if (typeof src !== 'string') {\n throw new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected');\n }\n\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n checkSanitizeDeprecation(opt);\n\n var highlight = opt.highlight,\n tokens,\n pending,\n i = 0;\n\n try {\n tokens = Lexer.lex(src, opt);\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n var done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n var out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n if (opt) opt = merge({}, marked.defaults, opt);\n checkSanitizeDeprecation(opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if ((opt || marked.defaults).silent) {\n return '<p>An error occurred:</p><pre>'\n + escape(e.message + '', true)\n + '</pre>';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n return marked;\n};\n\nmarked.getDefaults = function() {\n return {\n baseUrl: null,\n breaks: false,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: new Renderer(),\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartLists: false,\n smartypants: false,\n xhtml: false\n };\n};\n\nmarked.defaults = marked.getDefaults();\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\nmarked.TextRenderer = TextRenderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.Slugger = Slugger;\n\nmarked.parse = marked;\n\nif (typeof module !== 'undefined' && typeof exports === 'object') {\n module.exports = marked;\n} else if (typeof define === 'function' && define.amd) {\n define(function() { return marked; });\n} else {\n root.marked = marked;\n}\n})(this || (typeof window !== 'undefined' ? window : global));\n","(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.DOMPurify = factory());\n}(this, (function () { 'use strict';\n\nvar freeze$1 = Object.freeze || function (x) {\n return x;\n};\n\nvar html = freeze$1(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\n\n// SVG\nvar svg = freeze$1(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'audio', 'canvas', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'video', 'view', 'vkern']);\n\nvar svgFilters = freeze$1(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n\nvar mathMl = freeze$1(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover']);\n\nvar text = freeze$1(['#text']);\n\nvar freeze$2 = Object.freeze || function (x) {\n return x;\n};\n\nvar html$1 = freeze$2(['accept', 'action', 'align', 'alt', 'autocomplete', 'background', 'bgcolor', 'border', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'coords', 'crossorigin', 'datetime', 'default', 'dir', 'disabled', 'download', 'enctype', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'integrity', 'ismap', 'label', 'lang', 'list', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'name', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'type', 'usemap', 'valign', 'value', 'width', 'xmlns']);\n\nvar svg$1 = freeze$2(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'specularconstant', 'specularexponent', 'spreadmethod', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'tabindex', 'targetx', 'targety', 'transform', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\n\nvar mathMl$1 = freeze$2(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\n\nvar xml = freeze$2(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\nvar hasOwnProperty = Object.hasOwnProperty;\nvar setPrototypeOf = Object.setPrototypeOf;\n\nvar _ref$1 = typeof Reflect !== 'undefined' && Reflect;\nvar apply$1 = _ref$1.apply;\n\nif (!apply$1) {\n apply$1 = function apply(fun, thisValue, args) {\n return fun.apply(thisValue, args);\n };\n}\n\n/* Add properties to a lookup table */\nfunction addToSet(set, array) {\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n\n var l = array.length;\n while (l--) {\n var element = array[l];\n if (typeof element === 'string') {\n var lcElement = element.toLowerCase();\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!Object.isFrozen(array)) {\n array[l] = lcElement;\n }\n\n element = lcElement;\n }\n }\n\n set[element] = true;\n }\n\n return set;\n}\n\n/* Shallow clone an object */\nfunction clone(object) {\n var newObject = {};\n\n var property = void 0;\n for (property in object) {\n if (apply$1(hasOwnProperty, object, [property])) {\n newObject[property] = object[property];\n }\n }\n\n return newObject;\n}\n\nvar seal = Object.seal || function (x) {\n return x;\n};\n\nvar MUSTACHE_EXPR = seal(/\\{\\{[\\s\\S]*|[\\s\\S]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nvar ERB_EXPR = seal(/<%[\\s\\S]*|[\\s\\S]*%>/gm);\nvar DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/); // eslint-disable-line no-useless-escape\nvar ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nvar IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nvar IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nvar ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205f\\u3000]/g // eslint-disable-line no-control-regex\n);\n\nvar _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; };\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar _ref = typeof Reflect !== 'undefined' && Reflect;\nvar apply = _ref.apply;\n\nvar arraySlice = Array.prototype.slice;\nvar freeze = Object.freeze;\n\nvar getGlobal = function getGlobal() {\n return typeof window === 'undefined' ? null : window;\n};\n\nif (!apply) {\n apply = function apply(fun, thisValue, args) {\n return fun.apply(thisValue, args);\n };\n}\n\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param {?TrustedTypePolicyFactory} trustedTypes The policy factory.\n * @param {Document} document The document object (to determine policy name suffix)\n * @return {?TrustedTypePolicy} The policy created (or null, if Trusted Types\n * are not supported).\n */\nvar _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, document) {\n if ((typeof trustedTypes === 'undefined' ? 'undefined' : _typeof(trustedTypes)) !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n return null;\n }\n\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n var suffix = null;\n var ATTR_NAME = 'data-tt-policy-suffix';\n if (document.currentScript && document.currentScript.hasAttribute(ATTR_NAME)) {\n suffix = document.currentScript.getAttribute(ATTR_NAME);\n }\n\n var policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML: function createHTML(html$$1) {\n return html$$1;\n }\n });\n } catch (error) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n return null;\n }\n};\n\nfunction createDOMPurify() {\n var window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n\n var DOMPurify = function DOMPurify(root) {\n return createDOMPurify(root);\n };\n\n /**\n * Version label, exposed for easier checks\n * if DOMPurify is up to date or not\n */\n DOMPurify.version = '2.0.1';\n\n /**\n * Array of elements that DOMPurify removed during sanitation.\n * Empty if nothing was removed.\n */\n DOMPurify.removed = [];\n\n if (!window || !window.document || window.document.nodeType !== 9) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n\n return DOMPurify;\n }\n\n var originalDocument = window.document;\n var useDOMParser = false;\n var removeSVGAttr = false;\n var removeTitle = false;\n\n var document = window.document;\n var DocumentFragment = window.DocumentFragment,\n HTMLTemplateElement = window.HTMLTemplateElement,\n Node = window.Node,\n NodeFilter = window.NodeFilter,\n _window$NamedNodeMap = window.NamedNodeMap,\n NamedNodeMap = _window$NamedNodeMap === undefined ? window.NamedNodeMap || window.MozNamedAttrMap : _window$NamedNodeMap,\n Text = window.Text,\n Comment = window.Comment,\n DOMParser = window.DOMParser,\n TrustedTypes = window.TrustedTypes;\n\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n\n if (typeof HTMLTemplateElement === 'function') {\n var template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n\n var trustedTypesPolicy = _createTrustedTypesPolicy(TrustedTypes, originalDocument);\n var emptyHTML = trustedTypesPolicy ? trustedTypesPolicy.createHTML('') : '';\n\n var _document = document,\n implementation = _document.implementation,\n createNodeIterator = _document.createNodeIterator,\n getElementsByTagName = _document.getElementsByTagName,\n createDocumentFragment = _document.createDocumentFragment;\n var importNode = originalDocument.importNode;\n\n\n var hooks = {};\n\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported = implementation && typeof implementation.createHTMLDocument !== 'undefined' && document.documentMode !== 9;\n\n var MUSTACHE_EXPR$$1 = MUSTACHE_EXPR,\n ERB_EXPR$$1 = ERB_EXPR,\n DATA_ATTR$$1 = DATA_ATTR,\n ARIA_ATTR$$1 = ARIA_ATTR,\n IS_SCRIPT_OR_DATA$$1 = IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE$$1 = ATTR_WHITESPACE;\n var IS_ALLOWED_URI$$1 = IS_ALLOWED_URI;\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n\n /* allowed element names */\n\n var ALLOWED_TAGS = null;\n var DEFAULT_ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray(html), _toConsumableArray(svg), _toConsumableArray(svgFilters), _toConsumableArray(mathMl), _toConsumableArray(text)));\n\n /* Allowed attribute names */\n var ALLOWED_ATTR = null;\n var DEFAULT_ALLOWED_ATTR = addToSet({}, [].concat(_toConsumableArray(html$1), _toConsumableArray(svg$1), _toConsumableArray(mathMl$1), _toConsumableArray(xml)));\n\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n var FORBID_TAGS = null;\n\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n var FORBID_ATTR = null;\n\n /* Decide if ARIA attributes are okay */\n var ALLOW_ARIA_ATTR = true;\n\n /* Decide if custom data attributes are okay */\n var ALLOW_DATA_ATTR = true;\n\n /* Decide if unknown protocols are okay */\n var ALLOW_UNKNOWN_PROTOCOLS = false;\n\n /* Output should be safe for jQuery's $() factory? */\n var SAFE_FOR_JQUERY = false;\n\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n var SAFE_FOR_TEMPLATES = false;\n\n /* Decide if document with <html>... should be returned */\n var WHOLE_DOCUMENT = false;\n\n /* Track whether config is already set on this instance of DOMPurify. */\n var SET_CONFIG = false;\n\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n var FORCE_BODY = false;\n\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n var RETURN_DOM = false;\n\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n var RETURN_DOM_FRAGMENT = false;\n\n /* If `RETURN_DOM` or `RETURN_DOM_FRAGMENT` is enabled, decide if the returned DOM\n * `Node` is imported into the current `Document`. If this flag is not enabled the\n * `Node` will belong (its ownerDocument) to a fresh `HTMLDocument`, created by\n * DOMPurify. */\n var RETURN_DOM_IMPORT = false;\n\n /* Try to return a Trusted Type object instead of a string, retrun a string in\n * case Trusted Types are not supported */\n var RETURN_TRUSTED_TYPE = false;\n\n /* Output should be free from DOM clobbering attacks? */\n var SANITIZE_DOM = true;\n\n /* Keep element content when removing element? */\n var KEEP_CONTENT = true;\n\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n var IN_PLACE = false;\n\n /* Allow usage of profiles like html, svg and mathMl */\n var USE_PROFILES = {};\n\n /* Tags to ignore content of when KEEP_CONTENT is true */\n var FORBID_CONTENTS = addToSet({}, ['audio', 'head', 'math', 'script', 'style', 'template', 'svg', 'video']);\n\n /* Tags that are safe for data: URIs */\n var DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image']);\n\n /* Attributes safe for values like \"javascript:\" */\n var URI_SAFE_ATTRIBUTES = null;\n var DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'summary', 'title', 'value', 'style', 'xmlns']);\n\n /* Keep a reference to config to pass to hooks */\n var CONFIG = null;\n\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n\n var formElement = document.createElement('form');\n\n /**\n * _parseConfig\n *\n * @param {Object} cfg optional config literal\n */\n // eslint-disable-next-line complexity\n var _parseConfig = function _parseConfig(cfg) {\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n\n /* Shield configuration object from tampering */\n if (!cfg || (typeof cfg === 'undefined' ? 'undefined' : _typeof(cfg)) !== 'object') {\n cfg = {};\n }\n\n /* Set configuration parameters */\n ALLOWED_TAGS = 'ALLOWED_TAGS' in cfg ? addToSet({}, cfg.ALLOWED_TAGS) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = 'ALLOWED_ATTR' in cfg ? addToSet({}, cfg.ALLOWED_ATTR) : DEFAULT_ALLOWED_ATTR;\n URI_SAFE_ATTRIBUTES = 'ADD_URI_SAFE_ATTR' in cfg ? addToSet({}, cfg.ADD_URI_SAFE_ATTR) : DEFAULT_URI_SAFE_ATTRIBUTES;\n FORBID_TAGS = 'FORBID_TAGS' in cfg ? addToSet({}, cfg.FORBID_TAGS) : {};\n FORBID_ATTR = 'FORBID_ATTR' in cfg ? addToSet({}, cfg.FORBID_ATTR) : {};\n USE_PROFILES = 'USE_PROFILES' in cfg ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n SAFE_FOR_JQUERY = cfg.SAFE_FOR_JQUERY || false; // Default false\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_DOM_IMPORT = cfg.RETURN_DOM_IMPORT || false; // Default false\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n\n IS_ALLOWED_URI$$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI$$1;\n\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray(text)));\n ALLOWED_ATTR = [];\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html);\n addToSet(ALLOWED_ATTR, html$1);\n }\n\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg);\n addToSet(ALLOWED_ATTR, svg$1);\n addToSet(ALLOWED_ATTR, xml);\n }\n\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg$1);\n addToSet(ALLOWED_ATTR, xml);\n }\n\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl);\n addToSet(ALLOWED_ATTR, mathMl$1);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n\n /* Merge configuration parameters */\n if (cfg.ADD_TAGS) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS);\n }\n\n if (cfg.ADD_ATTR) {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR);\n }\n\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR);\n }\n\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n }\n\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n\n CONFIG = cfg;\n };\n\n /**\n * _forceRemove\n *\n * @param {Node} node a DOM node\n */\n var _forceRemove = function _forceRemove(node) {\n DOMPurify.removed.push({ element: node });\n try {\n node.parentNode.removeChild(node);\n } catch (error) {\n node.outerHTML = emptyHTML;\n }\n };\n\n /**\n * _removeAttribute\n *\n * @param {String} name an Attribute name\n * @param {Node} node a DOM node\n */\n var _removeAttribute = function _removeAttribute(name, node) {\n try {\n DOMPurify.removed.push({\n attribute: node.getAttributeNode(name),\n from: node\n });\n } catch (error) {\n DOMPurify.removed.push({\n attribute: null,\n from: node\n });\n }\n\n node.removeAttribute(name);\n };\n\n /**\n * _initDocument\n *\n * @param {String} dirty a string of dirty markup\n * @return {Document} a DOM, filled with the dirty markup\n */\n var _initDocument = function _initDocument(dirty) {\n /* Create a HTML document */\n var doc = void 0;\n var leadingWhitespace = void 0;\n\n if (FORCE_BODY) {\n dirty = '<remove></remove>' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n var matches = dirty.match(/^[\\s]+/);\n leadingWhitespace = matches && matches[0];\n if (leadingWhitespace) {\n dirty = dirty.slice(leadingWhitespace.length);\n }\n }\n\n /* Use DOMParser to workaround Firefox bug (see comment below) */\n if (useDOMParser) {\n try {\n doc = new DOMParser().parseFromString(dirty, 'text/html');\n } catch (error) {}\n }\n\n /* Remove title to fix a mXSS bug in older MS Edge */\n if (removeTitle) {\n addToSet(FORBID_TAGS, ['title']);\n }\n\n /* Otherwise use createHTMLDocument, because DOMParser is unsafe in\n Safari (see comment below) */\n if (!doc || !doc.documentElement) {\n doc = implementation.createHTMLDocument('');\n var _doc = doc,\n body = _doc.body;\n\n body.parentNode.removeChild(body.parentNode.firstElementChild);\n body.outerHTML = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n }\n\n if (leadingWhitespace) {\n doc.body.insertBefore(document.createTextNode(leadingWhitespace), doc.body.childNodes[0] || null);\n }\n\n /* Work on whole document or just its body */\n return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n };\n\n // Firefox uses a different parser for innerHTML rather than\n // DOMParser (see https://bugzilla.mozilla.org/show_bug.cgi?id=1205631)\n // which means that you *must* use DOMParser, otherwise the output may\n // not be safe if used in a document.write context later.\n //\n // So we feature detect the Firefox bug and use the DOMParser if necessary.\n //\n // MS Edge, in older versions, is affected by an mXSS behavior. The second\n // check tests for the behavior and fixes it if necessary.\n if (DOMPurify.isSupported) {\n (function () {\n try {\n var doc = _initDocument('<svg><p><textarea><img src=\"</textarea><img src=x onerror=1//\">');\n if (doc.querySelector('svg img')) {\n useDOMParser = true;\n }\n } catch (error) {}\n })();\n\n (function () {\n try {\n var doc = _initDocument('<svg></p></svg>');\n if (doc.querySelector('svg p')) {\n removeSVGAttr = true;\n }\n } catch (error) {}\n })();\n\n (function () {\n try {\n var doc = _initDocument('<x/><title></title><img>');\n if (doc.querySelector('title').innerHTML.match(/<\\/title/)) {\n removeTitle = true;\n }\n } catch (error) {}\n })();\n }\n\n /**\n * _createIterator\n *\n * @param {Document} root document/fragment to create iterator for\n * @return {Iterator} iterator instance\n */\n var _createIterator = function _createIterator(root) {\n return createNodeIterator.call(root.ownerDocument || root, root, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT, function () {\n return NodeFilter.FILTER_ACCEPT;\n }, false);\n };\n\n /**\n * _isClobbered\n *\n * @param {Node} elm element to check for clobbering attacks\n * @return {Boolean} true if clobbered, false if safe\n */\n var _isClobbered = function _isClobbered(elm) {\n if (elm instanceof Text || elm instanceof Comment) {\n return false;\n }\n\n if (typeof elm.nodeName !== 'string' || typeof elm.textContent !== 'string' || typeof elm.removeChild !== 'function' || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== 'function' || typeof elm.setAttribute !== 'function') {\n return true;\n }\n\n return false;\n };\n\n /**\n * _isNode\n *\n * @param {Node} obj object to check whether it's a DOM node\n * @return {Boolean} true is object is a DOM node\n */\n var _isNode = function _isNode(obj) {\n return (typeof Node === 'undefined' ? 'undefined' : _typeof(Node)) === 'object' ? obj instanceof Node : obj && (typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object' && typeof obj.nodeType === 'number' && typeof obj.nodeName === 'string';\n };\n\n /**\n * _executeHook\n * Execute user configurable hooks\n *\n * @param {String} entryPoint Name of the hook's entry point\n * @param {Node} currentNode node to work on with the hook\n * @param {Object} data additional hook parameters\n */\n var _executeHook = function _executeHook(entryPoint, currentNode, data) {\n if (!hooks[entryPoint]) {\n return;\n }\n\n hooks[entryPoint].forEach(function (hook) {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n };\n\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n *\n * @param {Node} currentNode to check for permission to exist\n * @return {Boolean} true if node was killed, false if left alive\n */\n // eslint-disable-next-line complexity\n var _sanitizeElements = function _sanitizeElements(currentNode) {\n var content = void 0;\n\n /* Execute a hook if present */\n _executeHook('beforeSanitizeElements', currentNode, null);\n\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Now let's check the element's type and name */\n var tagName = currentNode.nodeName.toLowerCase();\n\n /* Execute a hook if present */\n _executeHook('uponSanitizeElement', currentNode, {\n tagName: tagName,\n allowedTags: ALLOWED_TAGS\n });\n\n /* Remove element if anything forbids its presence */\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n /* Keep content except for black-listed elements */\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName] && typeof currentNode.insertAdjacentHTML === 'function') {\n try {\n var htmlToInsert = currentNode.innerHTML;\n currentNode.insertAdjacentHTML('AfterEnd', trustedTypesPolicy ? trustedTypesPolicy.createHTML(htmlToInsert) : htmlToInsert);\n } catch (error) {}\n }\n\n _forceRemove(currentNode);\n return true;\n }\n\n /* Remove in case a noscript/noembed XSS is suspected */\n if (tagName === 'noscript' && currentNode.innerHTML.match(/<\\/noscript/i)) {\n _forceRemove(currentNode);\n return true;\n }\n\n if (tagName === 'noembed' && currentNode.innerHTML.match(/<\\/noembed/i)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Convert markup to cover jQuery behavior */\n if (SAFE_FOR_JQUERY && !currentNode.firstElementChild && (!currentNode.content || !currentNode.content.firstElementChild) && /</g.test(currentNode.textContent)) {\n DOMPurify.removed.push({ element: currentNode.cloneNode() });\n if (currentNode.innerHTML) {\n currentNode.innerHTML = currentNode.innerHTML.replace(/</g, '<');\n } else {\n currentNode.innerHTML = currentNode.textContent.replace(/</g, '<');\n }\n }\n\n /* Sanitize element content to be template-safe */\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === 3) {\n /* Get the element's text content */\n content = currentNode.textContent;\n content = content.replace(MUSTACHE_EXPR$$1, ' ');\n content = content.replace(ERB_EXPR$$1, ' ');\n if (currentNode.textContent !== content) {\n DOMPurify.removed.push({ element: currentNode.cloneNode() });\n currentNode.textContent = content;\n }\n }\n\n /* Execute a hook if present */\n _executeHook('afterSanitizeElements', currentNode, null);\n\n return false;\n };\n\n /**\n * _isValidAttribute\n *\n * @param {string} lcTag Lowercase tag name of containing element.\n * @param {string} lcName Lowercase attribute name.\n * @param {string} value Attribute value.\n * @return {Boolean} Returns true if `value` is valid, otherwise false.\n */\n // eslint-disable-next-line complexity\n var _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n /* Make sure attribute cannot clobber */\n if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n return false;\n }\n\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n if (ALLOW_DATA_ATTR && DATA_ATTR$$1.test(lcName)) {\n // This attribute is safe\n } else if (ALLOW_ARIA_ATTR && ARIA_ATTR$$1.test(lcName)) {\n // This attribute is safe\n /* Otherwise, check the name is permitted */\n } else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n return false;\n\n /* Check value is safe. First, is attr inert? If so, is safe */\n } else if (URI_SAFE_ATTRIBUTES[lcName]) {\n // This attribute is safe\n /* Check no script, data or unknown possibly unsafe URI\n unless we know URI values are safe for that attribute */\n } else if (IS_ALLOWED_URI$$1.test(value.replace(ATTR_WHITESPACE$$1, ''))) {\n // This attribute is safe\n /* Keep image data URIs alive if src/xlink:href is allowed */\n /* Further prevent gadget XSS for dynamically built script tags */\n } else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && value.indexOf('data:') === 0 && DATA_URI_TAGS[lcTag]) {\n // This attribute is safe\n /* Allow unknown protocols: This provides support for links that\n are handled by protocol handlers which may be unknown ahead of\n time, e.g. fb:, spotify: */\n } else if (ALLOW_UNKNOWN_PROTOCOLS && !IS_SCRIPT_OR_DATA$$1.test(value.replace(ATTR_WHITESPACE$$1, ''))) {\n // This attribute is safe\n /* Check for binary attributes */\n // eslint-disable-next-line no-negated-condition\n } else if (!value) {\n // Binary attributes are safe at this point\n /* Anything else, presume unsafe, do not add it back */\n } else {\n return false;\n }\n\n return true;\n };\n\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param {Node} currentNode to sanitize\n */\n var _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n var attr = void 0;\n var value = void 0;\n var lcName = void 0;\n var idAttr = void 0;\n var l = void 0;\n /* Execute a hook if present */\n _executeHook('beforeSanitizeAttributes', currentNode, null);\n\n var attributes = currentNode.attributes;\n\n /* Check if we have attributes; if not we might have a text node */\n\n if (!attributes) {\n return;\n }\n\n var hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR\n };\n l = attributes.length;\n\n /* Go backwards over all attributes; safely remove bad ones */\n while (l--) {\n attr = attributes[l];\n var _attr = attr,\n name = _attr.name,\n namespaceURI = _attr.namespaceURI;\n\n value = attr.value.trim();\n lcName = name.toLowerCase();\n\n /* Execute a hook if present */\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n _executeHook('uponSanitizeAttribute', currentNode, hookEvent);\n value = hookEvent.attrValue;\n\n /* Check for possible Chrome mXSS */\n if (removeSVGAttr && value.match(/<\\//)) {\n _forceRemove(currentNode);\n }\n\n /* Remove attribute */\n // Safari (iOS + Mac), last tested v8.0.5, crashes if you try to\n // remove a \"name\" attribute from an <img> tag that has an \"id\"\n // attribute at the time.\n if (lcName === 'name' && currentNode.nodeName === 'IMG' && attributes.id) {\n idAttr = attributes.id;\n attributes = apply(arraySlice, attributes, []);\n _removeAttribute('id', currentNode);\n _removeAttribute(name, currentNode);\n if (attributes.indexOf(idAttr) > l) {\n currentNode.setAttribute('id', idAttr.value);\n }\n } else if (\n // This works around a bug in Safari, where input[type=file]\n // cannot be dynamically set after type has been removed\n currentNode.nodeName === 'INPUT' && lcName === 'type' && value === 'file' && hookEvent.keepAttr && (ALLOWED_ATTR[lcName] || !FORBID_ATTR[lcName])) {\n continue;\n } else {\n // This avoids a crash in Safari v9.0 with double-ids.\n // The trick is to first set the id to be empty and then to\n // remove the attribute\n if (name === 'id') {\n currentNode.setAttribute(name, '');\n }\n\n _removeAttribute(name, currentNode);\n }\n\n /* Did the hooks approve of the attribute? */\n if (!hookEvent.keepAttr) {\n continue;\n }\n\n /* Sanitize attribute content to be template-safe */\n if (SAFE_FOR_TEMPLATES) {\n value = value.replace(MUSTACHE_EXPR$$1, ' ');\n value = value.replace(ERB_EXPR$$1, ' ');\n }\n\n /* Is `value` valid for this attribute? */\n var lcTag = currentNode.nodeName.toLowerCase();\n if (!_isValidAttribute(lcTag, lcName, value)) {\n continue;\n }\n\n /* Handle invalid data-* attribute set by try-catching it */\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n\n DOMPurify.removed.pop();\n } catch (error) {}\n }\n\n /* Execute a hook if present */\n _executeHook('afterSanitizeAttributes', currentNode, null);\n };\n\n /**\n * _sanitizeShadowDOM\n *\n * @param {DocumentFragment} fragment to iterate over recursively\n */\n var _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n var shadowNode = void 0;\n var shadowIterator = _createIterator(fragment);\n\n /* Execute a hook if present */\n _executeHook('beforeSanitizeShadowDOM', fragment, null);\n\n while (shadowNode = shadowIterator.nextNode()) {\n /* Execute a hook if present */\n _executeHook('uponSanitizeShadowNode', shadowNode, null);\n\n /* Sanitize tags and elements */\n if (_sanitizeElements(shadowNode)) {\n continue;\n }\n\n /* Deep shadow DOM detected */\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(shadowNode.content);\n }\n\n /* Check attributes, sanitize if necessary */\n _sanitizeAttributes(shadowNode);\n }\n\n /* Execute a hook if present */\n _executeHook('afterSanitizeShadowDOM', fragment, null);\n };\n\n /**\n * Sanitize\n * Public method providing core sanitation functionality\n *\n * @param {String|Node} dirty string or DOM node\n * @param {Object} configuration object\n */\n // eslint-disable-next-line complexity\n DOMPurify.sanitize = function (dirty, cfg) {\n var body = void 0;\n var importedNode = void 0;\n var currentNode = void 0;\n var oldNode = void 0;\n var returnNode = void 0;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n if (!dirty) {\n dirty = '<!-->';\n }\n\n /* Stringify, in case dirty is an object */\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n // eslint-disable-next-line no-negated-condition\n if (typeof dirty.toString !== 'function') {\n throw new TypeError('toString is not a function');\n } else {\n dirty = dirty.toString();\n if (typeof dirty !== 'string') {\n throw new TypeError('dirty is not a string, aborting');\n }\n }\n }\n\n /* Check we can run. Otherwise fall back or ignore */\n if (!DOMPurify.isSupported) {\n if (_typeof(window.toStaticHTML) === 'object' || typeof window.toStaticHTML === 'function') {\n if (typeof dirty === 'string') {\n return window.toStaticHTML(dirty);\n }\n\n if (_isNode(dirty)) {\n return window.toStaticHTML(dirty.outerHTML);\n }\n }\n\n return dirty;\n }\n\n /* Assign config vars */\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n\n /* Clean up removed elements */\n DOMPurify.removed = [];\n\n if (IN_PLACE) {\n /* No special handling necessary for in-place sanitization */\n } else if (dirty instanceof Node) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('<!-->');\n importedNode = body.ownerDocument.importNode(dirty, true);\n if (importedNode.nodeType === 1 && importedNode.nodeName === 'BODY') {\n /* Node is already a body, use as is */\n body = importedNode;\n } else if (importedNode.nodeName === 'HTML') {\n body = importedNode;\n } else {\n // eslint-disable-next-line unicorn/prefer-node-append\n body.appendChild(importedNode);\n }\n } else {\n /* Exit directly if we have nothing to do */\n if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT && RETURN_TRUSTED_TYPE && dirty.indexOf('<') === -1) {\n return trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n }\n\n /* Initialize the document to work on */\n body = _initDocument(dirty);\n\n /* Check we have a DOM node from the data */\n if (!body) {\n return RETURN_DOM ? null : emptyHTML;\n }\n }\n\n /* Remove first element node (ours) if FORCE_BODY is set */\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n\n /* Get node iterator */\n var nodeIterator = _createIterator(IN_PLACE ? dirty : body);\n\n /* Now start iterating over the created document */\n while (currentNode = nodeIterator.nextNode()) {\n /* Fix IE's strange behavior with manipulated textNodes #89 */\n if (currentNode.nodeType === 3 && currentNode === oldNode) {\n continue;\n }\n\n /* Sanitize tags and elements */\n if (_sanitizeElements(currentNode)) {\n continue;\n }\n\n /* Shadow DOM detected, sanitize it */\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n\n /* Check attributes, sanitize if necessary */\n _sanitizeAttributes(currentNode);\n\n oldNode = currentNode;\n }\n\n oldNode = null;\n\n /* If we sanitized `dirty` in-place, return it. */\n if (IN_PLACE) {\n return dirty;\n }\n\n /* Return sanitized string or DOM */\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n\n while (body.firstChild) {\n // eslint-disable-next-line unicorn/prefer-node-append\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n\n if (RETURN_DOM_IMPORT) {\n /* AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs. */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n\n return returnNode;\n }\n\n var serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n\n /* Sanitize final string template-safe */\n if (SAFE_FOR_TEMPLATES) {\n serializedHTML = serializedHTML.replace(MUSTACHE_EXPR$$1, ' ');\n serializedHTML = serializedHTML.replace(ERB_EXPR$$1, ' ');\n }\n\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n };\n\n /**\n * Public method to set the configuration once\n * setConfig\n *\n * @param {Object} cfg configuration object\n */\n DOMPurify.setConfig = function (cfg) {\n _parseConfig(cfg);\n SET_CONFIG = true;\n };\n\n /**\n * Public method to remove the configuration\n * clearConfig\n *\n */\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n };\n\n /**\n * Public method to check if an attribute value is valid.\n * Uses last set config, if any. Otherwise, uses config defaults.\n * isValidAttribute\n *\n * @param {string} tag Tag name of containing element.\n * @param {string} attr Attribute name.\n * @param {string} value Attribute value.\n * @return {Boolean} Returns true if `value` is valid. Otherwise, returns false.\n */\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n\n var lcTag = tag.toLowerCase();\n var lcName = attr.toLowerCase();\n return _isValidAttribute(lcTag, lcName, value);\n };\n\n /**\n * AddHook\n * Public method to add DOMPurify hooks\n *\n * @param {String} entryPoint entry point for the hook to add\n * @param {Function} hookFunction function to execute\n */\n DOMPurify.addHook = function (entryPoint, hookFunction) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n\n hooks[entryPoint] = hooks[entryPoint] || [];\n hooks[entryPoint].push(hookFunction);\n };\n\n /**\n * RemoveHook\n * Public method to remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if more are present)\n *\n * @param {String} entryPoint entry point for the hook to remove\n */\n DOMPurify.removeHook = function (entryPoint) {\n if (hooks[entryPoint]) {\n hooks[entryPoint].pop();\n }\n };\n\n /**\n * RemoveHooks\n * Public method to remove all DOMPurify hooks at a given entryPoint\n *\n * @param {String} entryPoint entry point for the hooks to remove\n */\n DOMPurify.removeHooks = function (entryPoint) {\n if (hooks[entryPoint]) {\n hooks[entryPoint] = [];\n }\n };\n\n /**\n * RemoveAllHooks\n * Public method to remove all DOMPurify hooks\n *\n */\n DOMPurify.removeAllHooks = function () {\n hooks = {};\n };\n\n return DOMPurify;\n}\n\nvar purify = createDOMPurify();\n\nreturn purify;\n\n})));\n//# sourceMappingURL=purify.js.map\n"],"sourceRoot":""} \ No newline at end of file diff --git a/apps/settings/js/vue-6.js b/apps/settings/js/vue-6.js new file mode 100644 index 00000000000..6329428e6c7 --- /dev/null +++ b/apps/settings/js/vue-6.js @@ -0,0 +1,8 @@ +(window.webpackJsonpSettings=window.webpackJsonpSettings||[]).push([[6],{68:function(t,e){function s(t){return"function"==typeof t.value||(console.warn("[Vue-click-outside:] provided expression",t.expression,"is not a function."),!1)}function i(t){return void 0!==t.componentInstance&&t.componentInstance.$isServer}t.exports={bind:function(t,e,n){function a(e){if(n.context){var s=e.path||e.composedPath&&e.composedPath();s&&s.length>0&&s.unshift(e.target),t.contains(e.target)||function(t,e){if(!t||!e)return!1;for(var s=0,i=e.length;s<i;s++)try{if(t.contains(e[s]))return!0;if(e[s].contains(t))return!1}catch(t){return!1}return!1}(n.context.popupItem,s)||t.__vueClickOutside__.callback(e)}}s(e)&&(t.__vueClickOutside__={handler:a,callback:e.value},!i(n)&&document.addEventListener("click",a))},update:function(t,e){s(e)&&(t.__vueClickOutside__.callback=e.value)},unbind:function(t,e,s){!i(s)&&document.removeEventListener("click",t.__vueClickOutside__.handler),delete t.__vueClickOutside__}}},69:function(t,e,s){ +/*! + * vue-infinite-loading v2.4.4 + * (c) 2016-2019 PeachScript + * MIT License + */ +t.exports=function(t){var e={};function s(i){if(e[i])return e[i].exports;var n=e[i]={i:i,l:!1,exports:{}};return t[i].call(n.exports,n,n.exports,s),n.l=!0,n.exports}return s.m=t,s.c=e,s.d=function(t,e,i){s.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},s.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},s.t=function(t,e){if(1&e&&(t=s(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(s.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)s.d(i,n,function(e){return t[e]}.bind(null,n));return i},s.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return s.d(e,"a",e),e},s.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},s.p="",s(s.s=9)}([function(t,e,s){var i=s(6);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,s(3).default)("09280948",i,!0,{})},function(t,e,s){var i=s(8);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,s(3).default)("51e4c3f9",i,!0,{})},function(t,e){t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var s=function(t,e){var s,i=t[1]||"",n=t[3];if(!n)return i;if(e&&"function"==typeof btoa){var a=(s=n,"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(s))))+" */"),o=n.sources.map((function(t){return"/*# sourceURL="+n.sourceRoot+t+" */"}));return[i].concat(o).concat([a]).join("\n")}return[i].join("\n")}(e,t);return e[2]?"@media "+e[2]+"{"+s+"}":s})).join("")},e.i=function(t,s){"string"==typeof t&&(t=[[null,t,""]]);for(var i={},n=0;n<this.length;n++){var a=this[n][0];"number"==typeof a&&(i[a]=!0)}for(n=0;n<t.length;n++){var o=t[n];"number"==typeof o[0]&&i[o[0]]||(s&&!o[2]?o[2]=s:s&&(o[2]="("+o[2]+") and ("+s+")"),e.push(o))}},e}},function(t,e,s){"use strict";function i(t,e){for(var s=[],i={},n=0;n<e.length;n++){var a=e[n],o=a[0],r={id:t+":"+n,css:a[1],media:a[2],sourceMap:a[3]};i[o]?i[o].parts.push(r):s.push(i[o]={id:o,parts:[r]})}return s}s.r(e),s.d(e,"default",(function(){return h}));var n="undefined"!=typeof document;if("undefined"!=typeof DEBUG&&DEBUG&&!n)throw new Error("vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.");var a={},o=n&&(document.head||document.getElementsByTagName("head")[0]),r=null,l=0,u=!1,d=function(){},c=null,p="data-vue-ssr-id",g="undefined"!=typeof navigator&&/msie [6-9]\b/.test(navigator.userAgent.toLowerCase());function h(t,e,s,n){u=s,c=n||{};var o=i(t,e);return f(o),function(e){for(var s=[],n=0;n<o.length;n++){var r=o[n];(l=a[r.id]).refs--,s.push(l)}for(e?f(o=i(t,e)):o=[],n=0;n<s.length;n++){var l;if(0===(l=s[n]).refs){for(var u=0;u<l.parts.length;u++)l.parts[u]();delete a[l.id]}}}}function f(t){for(var e=0;e<t.length;e++){var s=t[e],i=a[s.id];if(i){i.refs++;for(var n=0;n<i.parts.length;n++)i.parts[n](s.parts[n]);for(;n<s.parts.length;n++)i.parts.push(v(s.parts[n]));i.parts.length>s.parts.length&&(i.parts.length=s.parts.length)}else{var o=[];for(n=0;n<s.parts.length;n++)o.push(v(s.parts[n]));a[s.id]={id:s.id,refs:1,parts:o}}}}function m(){var t=document.createElement("style");return t.type="text/css",o.appendChild(t),t}function v(t){var e,s,i=document.querySelector("style["+p+'~="'+t.id+'"]');if(i){if(u)return d;i.parentNode.removeChild(i)}if(g){var n=l++;i=r||(r=m()),e=y.bind(null,i,n,!1),s=y.bind(null,i,n,!0)}else i=m(),e=function(t,e){var s=e.css,i=e.media,n=e.sourceMap;if(i&&t.setAttribute("media",i),c.ssrId&&t.setAttribute(p,e.id),n&&(s+="\n/*# sourceURL="+n.sources[0]+" */",s+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(n))))+" */"),t.styleSheet)t.styleSheet.cssText=s;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(s))}}.bind(null,i),s=function(){i.parentNode.removeChild(i)};return e(t),function(i){if(i){if(i.css===t.css&&i.media===t.media&&i.sourceMap===t.sourceMap)return;e(t=i)}else s()}}var b,w=(b=[],function(t,e){return b[t]=e,b.filter(Boolean).join("\n")});function y(t,e,s,i){var n=s?"":i.css;if(t.styleSheet)t.styleSheet.cssText=w(e,n);else{var a=document.createTextNode(n),o=t.childNodes;o[e]&&t.removeChild(o[e]),o.length?t.insertBefore(a,o[e]):t.appendChild(a)}}},function(t,e){function s(t){return(s="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})(t)}function i(e){return"function"==typeof Symbol&&"symbol"===s(Symbol.iterator)?t.exports=i=function(t){return s(t)}:t.exports=i=function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":s(t)},i(e)}t.exports=i},function(t,e,s){"use strict";s.r(e);var i=s(0),n=s.n(i);for(var a in i)"default"!==a&&function(t){s.d(e,t,(function(){return i[t]}))}(a);e.default=n.a},function(t,e,s){(t.exports=s(2)(!1)).push([t.i,'.loading-wave-dots[data-v-46b20d22]{position:relative}.loading-wave-dots[data-v-46b20d22] .wave-item{position:absolute;top:50%;left:50%;display:inline-block;margin-top:-4px;width:8px;height:8px;border-radius:50%;-webkit-animation:loading-wave-dots-data-v-46b20d22 linear 2.8s infinite;animation:loading-wave-dots-data-v-46b20d22 linear 2.8s infinite}.loading-wave-dots[data-v-46b20d22] .wave-item:first-child{margin-left:-36px}.loading-wave-dots[data-v-46b20d22] .wave-item:nth-child(2){margin-left:-20px;-webkit-animation-delay:.14s;animation-delay:.14s}.loading-wave-dots[data-v-46b20d22] .wave-item:nth-child(3){margin-left:-4px;-webkit-animation-delay:.28s;animation-delay:.28s}.loading-wave-dots[data-v-46b20d22] .wave-item:nth-child(4){margin-left:12px;-webkit-animation-delay:.42s;animation-delay:.42s}.loading-wave-dots[data-v-46b20d22] .wave-item:last-child{margin-left:28px;-webkit-animation-delay:.56s;animation-delay:.56s}@-webkit-keyframes loading-wave-dots-data-v-46b20d22{0%{-webkit-transform:translateY(0);transform:translateY(0);background:#bbb}10%{-webkit-transform:translateY(-6px);transform:translateY(-6px);background:#999}20%{-webkit-transform:translateY(0);transform:translateY(0);background:#bbb}to{-webkit-transform:translateY(0);transform:translateY(0);background:#bbb}}@keyframes loading-wave-dots-data-v-46b20d22{0%{-webkit-transform:translateY(0);transform:translateY(0);background:#bbb}10%{-webkit-transform:translateY(-6px);transform:translateY(-6px);background:#999}20%{-webkit-transform:translateY(0);transform:translateY(0);background:#bbb}to{-webkit-transform:translateY(0);transform:translateY(0);background:#bbb}}.loading-circles[data-v-46b20d22] .circle-item{width:5px;height:5px;-webkit-animation:loading-circles-data-v-46b20d22 linear .75s infinite;animation:loading-circles-data-v-46b20d22 linear .75s infinite}.loading-circles[data-v-46b20d22] .circle-item:first-child{margin-top:-14.5px;margin-left:-2.5px}.loading-circles[data-v-46b20d22] .circle-item:nth-child(2){margin-top:-11.26px;margin-left:6.26px}.loading-circles[data-v-46b20d22] .circle-item:nth-child(3){margin-top:-2.5px;margin-left:9.5px}.loading-circles[data-v-46b20d22] .circle-item:nth-child(4){margin-top:6.26px;margin-left:6.26px}.loading-circles[data-v-46b20d22] .circle-item:nth-child(5){margin-top:9.5px;margin-left:-2.5px}.loading-circles[data-v-46b20d22] .circle-item:nth-child(6){margin-top:6.26px;margin-left:-11.26px}.loading-circles[data-v-46b20d22] .circle-item:nth-child(7){margin-top:-2.5px;margin-left:-14.5px}.loading-circles[data-v-46b20d22] .circle-item:last-child{margin-top:-11.26px;margin-left:-11.26px}@-webkit-keyframes loading-circles-data-v-46b20d22{0%{background:#dfdfdf}90%{background:#505050}to{background:#dfdfdf}}@keyframes loading-circles-data-v-46b20d22{0%{background:#dfdfdf}90%{background:#505050}to{background:#dfdfdf}}.loading-bubbles[data-v-46b20d22] .bubble-item{background:#666;-webkit-animation:loading-bubbles-data-v-46b20d22 linear .75s infinite;animation:loading-bubbles-data-v-46b20d22 linear .75s infinite}.loading-bubbles[data-v-46b20d22] .bubble-item:first-child{margin-top:-12.5px;margin-left:-.5px}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(2){margin-top:-9.26px;margin-left:8.26px}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(3){margin-top:-.5px;margin-left:11.5px}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(4){margin-top:8.26px;margin-left:8.26px}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(5){margin-top:11.5px;margin-left:-.5px}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(6){margin-top:8.26px;margin-left:-9.26px}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(7){margin-top:-.5px;margin-left:-12.5px}.loading-bubbles[data-v-46b20d22] .bubble-item:last-child{margin-top:-9.26px;margin-left:-9.26px}@-webkit-keyframes loading-bubbles-data-v-46b20d22{0%{width:1px;height:1px;box-shadow:0 0 0 3px #666}90%{width:1px;height:1px;box-shadow:0 0 0 0 #666}to{width:1px;height:1px;box-shadow:0 0 0 3px #666}}@keyframes loading-bubbles-data-v-46b20d22{0%{width:1px;height:1px;box-shadow:0 0 0 3px #666}90%{width:1px;height:1px;box-shadow:0 0 0 0 #666}to{width:1px;height:1px;box-shadow:0 0 0 3px #666}}.loading-default[data-v-46b20d22]{position:relative;border:1px solid #999;-webkit-animation:loading-rotating-data-v-46b20d22 ease 1.5s infinite;animation:loading-rotating-data-v-46b20d22 ease 1.5s infinite}.loading-default[data-v-46b20d22]:before{content:"";position:absolute;display:block;top:0;left:50%;margin-top:-3px;margin-left:-3px;width:6px;height:6px;background-color:#999;border-radius:50%}.loading-spiral[data-v-46b20d22]{border:2px solid #777;border-right-color:transparent;-webkit-animation:loading-rotating-data-v-46b20d22 linear .85s infinite;animation:loading-rotating-data-v-46b20d22 linear .85s infinite}@-webkit-keyframes loading-rotating-data-v-46b20d22{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes loading-rotating-data-v-46b20d22{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.loading-bubbles[data-v-46b20d22],.loading-circles[data-v-46b20d22]{position:relative}.loading-bubbles[data-v-46b20d22] .bubble-item,.loading-circles[data-v-46b20d22] .circle-item{position:absolute;top:50%;left:50%;display:inline-block;border-radius:50%}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(2),.loading-circles[data-v-46b20d22] .circle-item:nth-child(2){-webkit-animation-delay:93ms;animation-delay:93ms}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(3),.loading-circles[data-v-46b20d22] .circle-item:nth-child(3){-webkit-animation-delay:.186s;animation-delay:.186s}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(4),.loading-circles[data-v-46b20d22] .circle-item:nth-child(4){-webkit-animation-delay:.279s;animation-delay:.279s}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(5),.loading-circles[data-v-46b20d22] .circle-item:nth-child(5){-webkit-animation-delay:.372s;animation-delay:.372s}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(6),.loading-circles[data-v-46b20d22] .circle-item:nth-child(6){-webkit-animation-delay:.465s;animation-delay:.465s}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(7),.loading-circles[data-v-46b20d22] .circle-item:nth-child(7){-webkit-animation-delay:.558s;animation-delay:.558s}.loading-bubbles[data-v-46b20d22] .bubble-item:last-child,.loading-circles[data-v-46b20d22] .circle-item:last-child{-webkit-animation-delay:.651s;animation-delay:.651s}',""])},function(t,e,s){"use strict";s.r(e);var i=s(1),n=s.n(i);for(var a in i)"default"!==a&&function(t){s.d(e,t,(function(){return i[t]}))}(a);e.default=n.a},function(t,e,s){(t.exports=s(2)(!1)).push([t.i,".infinite-loading-container[data-v-46b21138]{clear:both;text-align:center}.infinite-loading-container[data-v-46b21138] [class^=loading-]{display:inline-block;margin:5px 0;width:28px;height:28px;font-size:28px;line-height:28px;border-radius:50%}.btn-try-infinite[data-v-46b21138]{margin-top:5px;padding:5px 10px;color:#999;font-size:14px;line-height:1;background:transparent;border:1px solid #ccc;border-radius:3px;outline:none;cursor:pointer}.btn-try-infinite[data-v-46b21138]:not(:active):hover{opacity:.8}",""])},function(t,e,s){"use strict";s.r(e);var i={throttleLimit:50,loopCheckTimeout:1e3,loopCheckMaxCalls:10},n=function(){var t=!1;try{var e=Object.defineProperty({},"passive",{get:function(){return t={passive:!0},!0}});window.addEventListener("testpassive",e,e),window.remove("testpassive",e,e)}catch(t){}return t}(),a={STATE_CHANGER:["emit `loaded` and `complete` event through component instance of `$refs` may cause error, so it will be deprecated soon, please use the `$state` argument instead (`$state` just the special `$event` variable):","\ntemplate:",'<infinite-loading @infinite="infiniteHandler"></infinite-loading>',"\nscript:\n...\ninfiniteHandler($state) {\n ajax('https://www.example.com/api/news')\n .then((res) => {\n if (res.data.length) {\n $state.loaded();\n } else {\n $state.complete();\n }\n });\n}\n...","","more details: https://github.com/PeachScript/vue-infinite-loading/issues/57#issuecomment-324370549"].join("\n"),INFINITE_EVENT:"`:on-infinite` property will be deprecated soon, please use `@infinite` event instead.",IDENTIFIER:"the `reset` event will be deprecated soon, please reset this component by change the `identifier` property."},o={INFINITE_LOOP:["executed the callback function more than ".concat(i.loopCheckMaxCalls," times for a short time, it looks like searched a wrong scroll wrapper that doest not has fixed height or maximum height, please check it. If you want to force to set a element as scroll wrapper ranther than automatic searching, you can do this:"),'\n\x3c!-- add a special attribute for the real scroll wrapper --\x3e\n<div infinite-wrapper>\n ...\n \x3c!-- set force-use-infinite-wrapper --\x3e\n <infinite-loading force-use-infinite-wrapper></infinite-loading>\n</div>\nor\n<div class="infinite-wrapper">\n ...\n \x3c!-- set force-use-infinite-wrapper as css selector of the real scroll wrapper --\x3e\n <infinite-loading force-use-infinite-wrapper=".infinite-wrapper"></infinite-loading>\n</div>\n ',"more details: https://github.com/PeachScript/vue-infinite-loading/issues/55#issuecomment-316934169"].join("\n")},r={READY:0,LOADING:1,COMPLETE:2,ERROR:3},l={color:"#666",fontSize:"14px",padding:"10px 0"},u={mode:"development",props:{spinner:"default",distance:100,forceUseInfiniteWrapper:!1},system:i,slots:{noResults:"No results :(",noMore:"No more data :)",error:"Opps, something went wrong :(",errorBtnText:"Retry",spinner:""},WARNINGS:a,ERRORS:o,STATUS:r},d=s(4),c=s.n(d),p={BUBBLES:{render:function(t){return t("span",{attrs:{class:"loading-bubbles"}},Array.apply(Array,Array(8)).map((function(){return t("span",{attrs:{class:"bubble-item"}})})))}},CIRCLES:{render:function(t){return t("span",{attrs:{class:"loading-circles"}},Array.apply(Array,Array(8)).map((function(){return t("span",{attrs:{class:"circle-item"}})})))}},DEFAULT:{render:function(t){return t("i",{attrs:{class:"loading-default"}})}},SPIRAL:{render:function(t){return t("i",{attrs:{class:"loading-spiral"}})}},WAVEDOTS:{render:function(t){return t("span",{attrs:{class:"loading-wave-dots"}},Array.apply(Array,Array(5)).map((function(){return t("span",{attrs:{class:"wave-item"}})})))}}};function g(t,e,s,i,n,a,o,r){var l,u="function"==typeof t?t.options:t;if(e&&(u.render=e,u.staticRenderFns=s,u._compiled=!0),i&&(u.functional=!0),a&&(u._scopeId="data-v-"+a),o?(l=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),n&&n.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(o)},u._ssrRegister=l):n&&(l=r?function(){n.call(this,this.$root.$options.shadowRoot)}:n),l)if(u.functional){u._injectStyles=l;var d=u.render;u.render=function(t,e){return l.call(e),d(t,e)}}else{var c=u.beforeCreate;u.beforeCreate=c?[].concat(c,l):[l]}return{exports:t,options:u}}var h=g({name:"Spinner",computed:{spinnerView:function(){return p[(this.$attrs.spinner||"").toUpperCase()]||this.spinnerInConfig},spinnerInConfig:function(){return u.slots.spinner&&"string"==typeof u.slots.spinner?{render:function(){return this._v(u.slots.spinner)}}:"object"===c()(u.slots.spinner)?u.slots.spinner:p[u.props.spinner.toUpperCase()]||p.DEFAULT}}},(function(){var t=this.$createElement;return(this._self._c||t)(this.spinnerView,{tag:"component"})}),[],!1,(function(t){var e=s(5);e.__inject__&&e.__inject__(t)}),"46b20d22",null);h.options.__file="Spinner.vue";var f=h.exports;function m(t){"production"!==u.mode&&console.warn("[Vue-infinite-loading warn]: ".concat(t))}var v={timers:[],caches:[],throttle:function(t){var e=this;-1===this.caches.indexOf(t)&&(this.caches.push(t),this.timers.push(setTimeout((function(){t(),e.caches.splice(e.caches.indexOf(t),1),e.timers.shift()}),u.system.throttleLimit)))},reset:function(){this.timers.forEach((function(t){clearTimeout(t)})),this.timers.length=0,this.caches=[]}},b={isChecked:!1,timer:null,times:0,track:function(){var t=this;this.times+=1,clearTimeout(this.timer),this.timer=setTimeout((function(){t.isChecked=!0}),u.system.loopCheckTimeout),this.times>u.system.loopCheckMaxCalls&&(function(t){console.error("[Vue-infinite-loading error]: ".concat(t))}(o.INFINITE_LOOP),this.isChecked=!0)}},w={key:"_infiniteScrollHeight",getScrollElm:function(t){return t===window?document.documentElement:t},save:function(t){var e=this.getScrollElm(t);e[this.key]=e.scrollHeight},restore:function(t){var e=this.getScrollElm(t);"number"==typeof e[this.key]&&(e.scrollTop=e.scrollHeight-e[this.key]+e.scrollTop),this.remove(e)},remove:function(t){void 0!==t[this.key]&&delete t[this.key]}};function y(t){return t.offsetWidth+t.offsetHeight>0}var _=g({name:"InfiniteLoading",data:function(){return{scrollParent:null,scrollHandler:null,isFirstLoad:!0,status:r.READY,slots:u.slots}},components:{Spinner:f},computed:{isShowSpinner:function(){return this.status===r.LOADING},isShowError:function(){return this.status===r.ERROR},isShowNoResults:function(){return this.status===r.COMPLETE&&this.isFirstLoad},isShowNoMore:function(){return this.status===r.COMPLETE&&!this.isFirstLoad},slotStyles:function(){var t=this,e={};return Object.keys(u.slots).forEach((function(s){var i=function(t){return t.replace(/[A-Z]/g,(function(t){return"-".concat(t.toLowerCase())}))}(s);(!t.$slots[i]&&!u.slots[s].render||t.$slots[i]&&!t.$slots[i][0].tag)&&(e[s]=l)})),e}},props:{distance:{type:Number,default:u.props.distance},spinner:String,direction:{type:String,default:"bottom"},forceUseInfiniteWrapper:{type:[Boolean,String],default:u.props.forceUseInfiniteWrapper},identifier:{default:+new Date},onInfinite:Function},watch:{identifier:function(){this.stateChanger.reset()}},mounted:function(){var t=this;this.$watch("forceUseInfiniteWrapper",(function(){t.scrollParent=t.getScrollParent()}),{immediate:!0}),this.scrollHandler=function(e){t.status===r.READY&&(e&&e.constructor===Event&&y(t.$el)?v.throttle(t.attemptLoad):t.attemptLoad())},setTimeout((function(){t.scrollHandler(),t.scrollParent.addEventListener("scroll",t.scrollHandler,n)}),1),this.$on("$InfiniteLoading:loaded",(function(e){t.isFirstLoad=!1,"top"===t.direction&&t.$nextTick((function(){w.restore(t.scrollParent)})),t.status===r.LOADING&&t.$nextTick(t.attemptLoad.bind(null,!0)),e&&e.target===t||m(a.STATE_CHANGER)})),this.$on("$InfiniteLoading:complete",(function(e){t.status=r.COMPLETE,t.$nextTick((function(){t.$forceUpdate()})),t.scrollParent.removeEventListener("scroll",t.scrollHandler,n),e&&e.target===t||m(a.STATE_CHANGER)})),this.$on("$InfiniteLoading:reset",(function(e){t.status=r.READY,t.isFirstLoad=!0,w.remove(t.scrollParent),t.scrollParent.addEventListener("scroll",t.scrollHandler,n),setTimeout((function(){v.reset(),t.scrollHandler()}),1),e&&e.target===t||m(a.IDENTIFIER)})),this.stateChanger={loaded:function(){t.$emit("$InfiniteLoading:loaded",{target:t})},complete:function(){t.$emit("$InfiniteLoading:complete",{target:t})},reset:function(){t.$emit("$InfiniteLoading:reset",{target:t})},error:function(){t.status=r.ERROR,v.reset()}},this.onInfinite&&m(a.INFINITE_EVENT)},deactivated:function(){this.status===r.LOADING&&(this.status=r.READY),this.scrollParent.removeEventListener("scroll",this.scrollHandler,n)},activated:function(){this.scrollParent.addEventListener("scroll",this.scrollHandler,n)},methods:{attemptLoad:function(t){var e=this;this.status!==r.COMPLETE&&y(this.$el)&&this.getCurrentDistance()<=this.distance?(this.status=r.LOADING,"top"===this.direction&&this.$nextTick((function(){w.save(e.scrollParent)})),"function"==typeof this.onInfinite?this.onInfinite.call(null,this.stateChanger):this.$emit("infinite",this.stateChanger),!t||this.forceUseInfiniteWrapper||b.isChecked||b.track()):this.status===r.LOADING&&(this.status=r.READY)},getCurrentDistance:function(){return"top"===this.direction?"number"==typeof this.scrollParent.scrollTop?this.scrollParent.scrollTop:this.scrollParent.pageYOffset:this.$el.getBoundingClientRect().top-(this.scrollParent===window?window.innerHeight:this.scrollParent.getBoundingClientRect().bottom)},getScrollParent:function(){var t,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.$el;return"string"==typeof this.forceUseInfiniteWrapper&&(t=e.querySelector(this.forceUseInfiniteWrapper)),t||("BODY"===e.tagName?t=window:!this.forceUseInfiniteWrapper&&["scroll","auto"].indexOf(getComputedStyle(e).overflowY)>-1?t=e:(e.hasAttribute("infinite-wrapper")||e.hasAttribute("data-infinite-wrapper"))&&(t=e)),t||this.getScrollParent(e.parentNode)}},destroyed:function(){!this.status!==r.COMPLETE&&(v.reset(),w.remove(this.scrollParent),this.scrollParent.removeEventListener("scroll",this.scrollHandler,n))}},(function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"infinite-loading-container"},[s("div",{directives:[{name:"show",rawName:"v-show",value:t.isShowSpinner,expression:"isShowSpinner"}],staticClass:"infinite-status-prompt",style:t.slotStyles.spinner},[t._t("spinner",[s("spinner",{attrs:{spinner:t.spinner}})])],2),t._v(" "),s("div",{directives:[{name:"show",rawName:"v-show",value:t.isShowNoResults,expression:"isShowNoResults"}],staticClass:"infinite-status-prompt",style:t.slotStyles.noResults},[t._t("no-results",[t.slots.noResults.render?s(t.slots.noResults,{tag:"component"}):[t._v(t._s(t.slots.noResults))]])],2),t._v(" "),s("div",{directives:[{name:"show",rawName:"v-show",value:t.isShowNoMore,expression:"isShowNoMore"}],staticClass:"infinite-status-prompt",style:t.slotStyles.noMore},[t._t("no-more",[t.slots.noMore.render?s(t.slots.noMore,{tag:"component"}):[t._v(t._s(t.slots.noMore))]])],2),t._v(" "),s("div",{directives:[{name:"show",rawName:"v-show",value:t.isShowError,expression:"isShowError"}],staticClass:"infinite-status-prompt",style:t.slotStyles.error},[t._t("error",[t.slots.error.render?s(t.slots.error,{tag:"component",attrs:{trigger:t.attemptLoad}}):[t._v("\n "+t._s(t.slots.error)+"\n "),s("br"),t._v(" "),s("button",{staticClass:"btn-try-infinite",domProps:{textContent:t._s(t.slots.errorBtnText)},on:{click:t.attemptLoad}})]],{trigger:t.attemptLoad})],2)])}),[],!1,(function(t){var e=s(7);e.__inject__&&e.__inject__(t)}),"46b21138",null);_.options.__file="InfiniteLoading.vue";var C=_.exports;function x(t){u.mode=t.config.productionTip?"development":"production"}Object.defineProperty(C,"install",{configurable:!1,enumerable:!1,value:function(t,e){Object.assign(u.props,e&&e.props),Object.assign(u.slots,e&&e.slots),Object.assign(u.system,e&&e.system),t.component("infinite-loading",C),x(t)}}),"undefined"!=typeof window&&window.Vue&&(window.Vue.component("infinite-loading",C),x(window.Vue)),e.default=C}])},77:function(e,s,i){"use strict";i.r(s);var n=i(2),a=i(67),o=i.n(a),r=i(16),l=i(68),u=i.n(l),d=i(41);function c(t){return(c="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})(t)}n.default.use(d.a);var p={name:"userRow",props:["user","settings","groups","subAdminsGroups","quotaOptions","showConfig","languages","externalActions"],components:{PopoverMenu:r.PopoverMenu,Multiselect:r.Multiselect},directives:{ClickOutside:u.a},mounted:function(){},data:function(){return{rand:parseInt(1e3*Math.random()),openedMenu:!1,feedbackMessage:"",loading:{all:!1,displayName:!1,password:!1,mailAddress:!1,groups:!1,subadmins:!1,quota:!1,delete:!1,disable:!1,languages:!1,wipe:!1}}},computed:{userActions:function(){var e=[{icon:"icon-delete",text:t("settings","Delete user"),action:this.deleteUser},{icon:"icon-delete",text:t("settings","Wipe all devices"),action:this.wipeUserDevices},{icon:this.user.enabled?"icon-close":"icon-add",text:this.user.enabled?t("settings","Disable user"):t("settings","Enable user"),action:this.enableDisableUser}];return null!==this.user.email&&""!==this.user.email&&e.push({icon:"icon-mail",text:t("settings","Resend welcome email"),action:this.sendWelcomeMail}),e.concat(this.externalActions)},userGroups:function(){var t=this,e=this.groups.filter((function(e){return t.user.groups.includes(e.id)}));return e},userSubAdminsGroups:function(){var t=this,e=this.subAdminsGroups.filter((function(e){return t.user.subadmin.includes(e.id)}));return e},availableGroups:function(){var t=this;return this.groups.map((function(e){var s=Object.assign({},e);return s.$isDisabled=!1===e.canAdd&&!t.user.groups.includes(e.id)||!1===e.canRemove&&t.user.groups.includes(e.id),s}))},usedSpace:function(){return this.user.quota.used?t("settings","{size} used",{size:OC.Util.humanFileSize(this.user.quota.used)}):t("settings","{size} used",{size:OC.Util.humanFileSize(0)})},usedQuota:function(){var t=this.user.quota.quota;t>0?t=Math.min(100,Math.round(this.user.quota.used/t*100)):t=95*(1-1/(this.user.quota.used/(10*Math.pow(2,30))+1));return isNaN(t)?0:t},userQuota:function(){if(this.user.quota.quota>=0){var t=OC.Util.humanFileSize(this.user.quota.quota),e=this.quotaOptions.find((function(e){return e.id===t}));return e||{id:t,label:t}}return"default"===this.user.quota.quota?this.quotaOptions[0]:this.quotaOptions[1]},minPasswordLength:function(){return this.$store.getters.getPasswordPolicyMinLength},userLanguage:function(){var t=this,e=this.languages[0].languages.concat(this.languages[1].languages).find((function(e){return e.code===t.user.language}));return"object"!==c(e)&&""!==this.user.language?{code:this.user.language,name:this.user.language}:""!==this.user.language&&e}},methods:{toggleMenu:function(){this.openedMenu=!this.openedMenu},hideMenu:function(){this.openedMenu=!1},generateAvatar:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:32;return OC.generateUrl("/avatar/{user}/{size}?v={version}",{user:t,size:e,version:oc_userconfig.avatar.version})},formatGroupsTitle:function(t){return t.map((function(t){return t.name})).slice(2).join(", ")},wipeUserDevices:function(){var t=this;this.loading.wipe=!0,this.loading.all=!0;var e=this.user.id;return this.$store.dispatch("wipeUserDevices",e).then((function(){t.loading.wipe=!1,t.loading.all=!1}))},deleteUser:function(){var t=this;this.loading.delete=!0,this.loading.all=!0;var e=this.user.id;return this.$store.dispatch("deleteUser",e).then((function(){t.loading.delete=!1,t.loading.all=!1}))},enableDisableUser:function(){var t=this;this.loading.delete=!0,this.loading.all=!0;var e=this.user.id,s=!this.user.enabled;return this.$store.dispatch("enableDisableUser",{userid:e,enabled:s}).then((function(){t.loading.delete=!1,t.loading.all=!1}))},updateDisplayName:function(){var t=this,e=this.$refs.displayName.value;this.loading.displayName=!0,this.$store.dispatch("setUserData",{userid:this.user.id,key:"displayname",value:e}).then((function(){t.loading.displayName=!1,t.$refs.displayName.value=e}))},updatePassword:function(){var t=this,e=this.$refs.password.value;this.loading.password=!0,this.$store.dispatch("setUserData",{userid:this.user.id,key:"password",value:e}).then((function(){t.loading.password=!1,t.$refs.password.value=""}))},updateEmail:function(){var t=this,e=this.$refs.mailAddress.value;this.loading.mailAddress=!0,this.$store.dispatch("setUserData",{userid:this.user.id,key:"email",value:e}).then((function(){t.loading.mailAddress=!1,t.$refs.mailAddress.value=e}))},createGroup:function(t){var e=this;return this.loading={groups:!0,subadmins:!0},this.$store.dispatch("addGroup",t).then((function(){e.loading={groups:!1,subadmins:!1};var s=e.user.id;e.$store.dispatch("addUserGroup",{userid:s,gid:t})})).catch((function(){e.loading={groups:!1,subadmins:!1}})),this.$store.getters.getGroups[this.groups.length]},addUserGroup:function(t){var e=this;if(!1===t.canAdd)return!1;this.loading.groups=!0;var s=this.user.id,i=t.id;return this.$store.dispatch("addUserGroup",{userid:s,gid:i}).then((function(){return e.loading.groups=!1}))},removeUserGroup:function(t){var e=this;if(!1===t.canRemove)return!1;this.loading.groups=!0;var s=this.user.id,i=t.id;return this.$store.dispatch("removeUserGroup",{userid:s,gid:i}).then((function(){e.loading.groups=!1,e.$route.params.selectedGroup===i&&e.$store.commit("deleteUser",s)})).catch((function(){e.loading.groups=!1}))},addUserSubAdmin:function(t){var e=this;this.loading.subadmins=!0;var s=this.user.id,i=t.id;return this.$store.dispatch("addUserSubAdmin",{userid:s,gid:i}).then((function(){return e.loading.subadmins=!1}))},removeUserSubAdmin:function(t){var e=this;this.loading.subadmins=!0;var s=this.user.id,i=t.id;return this.$store.dispatch("removeUserSubAdmin",{userid:s,gid:i}).then((function(){return e.loading.subadmins=!1}))},setUserQuota:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"none";return this.loading.quota=!0,e=e.id?e.id:e,this.$store.dispatch("setUserData",{userid:this.user.id,key:"quota",value:e}).then((function(){return t.loading.quota=!1})),e},validateQuota:function(t){var e=OC.Util.computerFileSize(t);return null!==e&&e>=0&&this.setUserQuota(OC.Util.humanFileSize(OC.Util.computerFileSize(t)))},setUserLanguage:function(t){var e=this;return this.loading.languages=!0,this.$store.dispatch("setUserData",{userid:this.user.id,key:"language",value:t.code}).then((function(){return e.loading.languages=!1})),t},sendWelcomeMail:function(){var e=this;this.loading.all=!0,this.$store.dispatch("sendWelcomeMail",this.user.id).then((function(s){s&&(e.feedbackMessage=t("setting","Welcome mail sent!"),setTimeout((function(){e.feedbackMessage=""}),2e3)),e.loading.all=!1}))}}},g=i(5),h=Object(g.a)(p,(function(){var t=this,e=t.$createElement,s=t._self._c||e;return 1===Object.keys(t.user).length?s("div",{staticClass:"row",attrs:{"data-id":t.user.id}},[s("div",{staticClass:"avatar",class:{"icon-loading-small":t.loading.delete||t.loading.disable||t.loading.wipe}},[t.loading.delete||t.loading.disable||t.loading.wipe?t._e():s("img",{attrs:{alt:"",width:"32",height:"32",src:t.generateAvatar(t.user.id,32),srcset:t.generateAvatar(t.user.id,64)+" 2x, "+t.generateAvatar(t.user.id,128)+" 4x"}})]),t._v(" "),s("div",{staticClass:"name"},[t._v(t._s(t.user.id))]),t._v(" "),s("div",{staticClass:"obfuscated"},[t._v(t._s(t.t("settings","You do not have permissions to see the details of this user")))])]):s("div",{staticClass:"row",class:{disabled:t.loading.delete||t.loading.disable},attrs:{"data-id":t.user.id}},[s("div",{staticClass:"avatar",class:{"icon-loading-small":t.loading.delete||t.loading.disable||t.loading.wipe}},[t.loading.delete||t.loading.disable||t.loading.wipe?t._e():s("img",{attrs:{alt:"",width:"32",height:"32",src:t.generateAvatar(t.user.id,32),srcset:t.generateAvatar(t.user.id,64)+" 2x, "+t.generateAvatar(t.user.id,128)+" 4x"}})]),t._v(" "),s("div",{staticClass:"name"},[t._v(t._s(t.user.id))]),t._v(" "),s("form",{staticClass:"displayName",class:{"icon-loading-small":t.loading.displayName},on:{submit:function(e){return e.preventDefault(),t.updateDisplayName(e)}}},[t.user.backendCapabilities.setDisplayName?[t.user.backendCapabilities.setDisplayName?s("input",{ref:"displayName",attrs:{id:"displayName"+t.user.id+t.rand,type:"text",disabled:t.loading.displayName||t.loading.all,autocomplete:"new-password",autocorrect:"off",autocapitalize:"off",spellcheck:"false"},domProps:{value:t.user.displayname}}):t._e(),t._v(" "),t.user.backendCapabilities.setDisplayName?s("input",{staticClass:"icon-confirm",attrs:{type:"submit",value:""}}):t._e()]:s("div",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.t("settings","The backend does not support changing the display name"),expression:"t('settings', 'The backend does not support changing the display name')",modifiers:{auto:!0}}],staticClass:"name"},[t._v(t._s(t.user.displayname))])],2),t._v(" "),t.settings.canChangePassword&&t.user.backendCapabilities.setPassword?s("form",{staticClass:"password",class:{"icon-loading-small":t.loading.password},on:{submit:function(e){return e.preventDefault(),t.updatePassword(e)}}},[s("input",{ref:"password",attrs:{id:"password"+t.user.id+t.rand,type:"password",required:"",disabled:t.loading.password||t.loading.all,minlength:t.minPasswordLength,value:"",placeholder:t.t("settings","New password"),autocomplete:"new-password",autocorrect:"off",autocapitalize:"off",spellcheck:"false"}}),t._v(" "),s("input",{staticClass:"icon-confirm",attrs:{type:"submit",value:""}})]):s("div"),t._v(" "),s("form",{staticClass:"mailAddress",class:{"icon-loading-small":t.loading.mailAddress},on:{submit:function(e){return e.preventDefault(),t.updateEmail(e)}}},[s("input",{ref:"mailAddress",attrs:{id:"mailAddress"+t.user.id+t.rand,type:"email",disabled:t.loading.mailAddress||t.loading.all,autocomplete:"new-password",autocorrect:"off",autocapitalize:"off",spellcheck:"false"},domProps:{value:t.user.email}}),t._v(" "),s("input",{staticClass:"icon-confirm",attrs:{type:"submit",value:""}})]),t._v(" "),s("div",{staticClass:"groups",class:{"icon-loading-small":t.loading.groups}},[s("multiselect",{staticClass:"multiselect-vue",attrs:{value:t.userGroups,options:t.availableGroups,disabled:t.loading.groups||t.loading.all,"tag-placeholder":"create",placeholder:t.t("settings","Add user in group"),label:"name","track-by":"id",limit:2,multiple:!0,taggable:t.settings.isAdmin,closeOnSelect:!1,"tag-width":60},on:{tag:t.createGroup,select:t.addUserGroup,remove:t.removeUserGroup}},[s("span",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.formatGroupsTitle(t.userGroups),expression:"formatGroupsTitle(userGroups)",modifiers:{auto:!0}}],staticClass:"multiselect__limit",attrs:{slot:"limit"},slot:"limit"},[t._v("+"+t._s(t.userGroups.length-2))]),t._v(" "),s("span",{attrs:{slot:"noResult"},slot:"noResult"},[t._v(t._s(t.t("settings","No results")))])])],1),t._v(" "),t.subAdminsGroups.length>0&&t.settings.isAdmin?s("div",{staticClass:"subadmins",class:{"icon-loading-small":t.loading.subadmins}},[s("multiselect",{staticClass:"multiselect-vue",attrs:{value:t.userSubAdminsGroups,options:t.subAdminsGroups,disabled:t.loading.subadmins||t.loading.all,placeholder:t.t("settings","Set user as admin for"),label:"name","track-by":"id",limit:2,multiple:!0,closeOnSelect:!1,"tag-width":60},on:{select:t.addUserSubAdmin,remove:t.removeUserSubAdmin}},[s("span",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.formatGroupsTitle(t.userSubAdminsGroups),expression:"formatGroupsTitle(userSubAdminsGroups)",modifiers:{auto:!0}}],staticClass:"multiselect__limit",attrs:{slot:"limit"},slot:"limit"},[t._v("+"+t._s(t.userSubAdminsGroups.length-2))]),t._v(" "),s("span",{attrs:{slot:"noResult"},slot:"noResult"},[t._v(t._s(t.t("settings","No results")))])])],1):t._e(),t._v(" "),s("div",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.usedSpace,expression:"usedSpace",modifiers:{auto:!0}}],staticClass:"quota",class:{"icon-loading-small":t.loading.quota}},[s("multiselect",{staticClass:"multiselect-vue",attrs:{value:t.userQuota,options:t.quotaOptions,disabled:t.loading.quota||t.loading.all,"tag-placeholder":"create",placeholder:t.t("settings","Select user quota"),label:"label","track-by":"id",allowEmpty:!1,taggable:!0},on:{tag:t.validateQuota,input:t.setUserQuota}}),t._v(" "),s("progress",{staticClass:"quota-user-progress",class:{warn:t.usedQuota>80},attrs:{max:"100"},domProps:{value:t.usedQuota}})],1),t._v(" "),t.showConfig.showLanguages?s("div",{staticClass:"languages",class:{"icon-loading-small":t.loading.languages}},[s("multiselect",{staticClass:"multiselect-vue",attrs:{value:t.userLanguage,options:t.languages,disabled:t.loading.languages||t.loading.all,placeholder:t.t("settings","No language set"),label:"name","track-by":"code",allowEmpty:!1,"group-values":"languages","group-label":"label"},on:{input:t.setUserLanguage}})],1):t._e(),t._v(" "),t.showConfig.showStoragePath?s("div",{staticClass:"storageLocation"},[t._v(t._s(t.user.storageLocation))]):t._e(),t._v(" "),t.showConfig.showUserBackend?s("div",{staticClass:"userBackend"},[t._v(t._s(t.user.backend))]):t._e(),t._v(" "),t.showConfig.showLastLogin?s("div",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.user.lastLogin>0?t.OC.Util.formatDate(t.user.lastLogin):"",expression:"user.lastLogin>0 ? OC.Util.formatDate(user.lastLogin) : ''",modifiers:{auto:!0}}],staticClass:"lastLogin"},[t._v("\n\t\t"+t._s(t.user.lastLogin>0?t.OC.Util.relativeModifiedDate(t.user.lastLogin):t.t("settings","Never"))+"\n\t")]):t._e(),t._v(" "),s("div",{staticClass:"userActions"},[t.OC.currentUser===t.user.id||"admin"===t.user.id||t.loading.all?t._e():s("div",{staticClass:"toggleUserActions"},[s("div",{directives:[{name:"click-outside",rawName:"v-click-outside",value:t.hideMenu,expression:"hideMenu"}],staticClass:"icon-more",on:{click:t.toggleMenu}}),t._v(" "),s("div",{staticClass:"popovermenu",class:{open:t.openedMenu}},[s("popover-menu",{attrs:{menu:t.userActions}})],1)]),t._v(" "),s("div",{staticClass:"feedback",style:{opacity:""!==t.feedbackMessage?1:0}},[s("div",{staticClass:"icon-checkmark"}),t._v("\n\t\t\t"+t._s(t.feedbackMessage)+"\n\t\t")])])])}),[],!1,null,null,null).exports,f=i(69),m=i.n(f),v={id:"none",label:t("settings","Unlimited")},b={id:"default",label:t("settings","Default quota")},w={id:"",displayName:"",password:"",mailAddress:"",groups:[],subAdminsGroups:[],quota:b,language:{code:"en",name:t("settings","Default language")}},y={name:"userList",props:["users","showConfig","selectedGroup","externalActions"],components:{userRow:h,Multiselect:r.Multiselect,InfiniteLoading:m.a},data:function(){return{unlimitedQuota:v,defaultQuota:b,loading:{all:!1,groups:!1},scrolled:!1,searchQuery:"",newUser:Object.assign({},w)}},mounted:function(){this.settings.canChangePassword||OC.Notification.showTemporary(t("settings","Password change is disabled because the master key is disabled")),this.resetForm(),this.userSearch=new OCA.Search(this.search,this.resetSearch)},computed:{settings:function(){return this.$store.getters.getServerData},filteredUsers:function(){if("disabled"===this.selectedGroup){var t=this.users.filter((function(t){return!1===t.enabled}));return 0===t.length&&this.$refs.infiniteLoading&&this.$refs.infiniteLoading.isComplete&&(this.$router.push({name:"users"}),this.$refs.infiniteLoading.stateChanger.reset()),t}return this.settings.isAdmin?this.users.filter((function(t){return!1!==t.enabled})):this.users.filter((function(t){return!1!==t.enabled&&t.id!==OC.getCurrentUser().uid}))},groups:function(){return this.$store.getters.getGroups.filter((function(t){return"disabled"!==t.id})).sort((function(t,e){return t.name.localeCompare(e.name)}))},canAddGroups:function(){return this.groups.map((function(t){return(t=Object.assign({},t)).$isDisabled=!1===t.canAdd,t}))},subAdminsGroups:function(){return this.$store.getters.getSubadminGroups},quotaOptions:function(){var t=this.settings.quotaPreset.reduce((function(t,e){return t.concat({id:e,label:e})}),[]);return t.unshift(this.unlimitedQuota),t.unshift(this.defaultQuota),t},minPasswordLength:function(){return this.$store.getters.getPasswordPolicyMinLength},usersOffset:function(){return this.$store.getters.getUsersOffset},usersLimit:function(){return this.$store.getters.getUsersLimit},usersCount:function(){return this.users.length},languages:function(){return Array({label:t("settings","Common languages"),languages:this.settings.languages.commonlanguages},{label:t("settings","All languages"),languages:this.settings.languages.languages})}},watch:{selectedGroup:function(t,e){this.$store.commit("resetUsers"),this.$refs.infiniteLoading.stateChanger.reset(),this.setNewUserDefaultGroup(t)},usersCount:function(t,e){0===t&&1===e?this.$refs.infiniteLoading.stateChanger.reset():1===t&&0===e&&this.$refs.infiniteLoading.stateChanger.loaded()}},methods:{onScroll:function(t){this.scrolled=t.target.scrollTo>0},validateQuota:function(t){var e=OC.Util.computerFileSize(t);return null!==e&&e>=0?(t=OC.Util.humanFileSize(OC.Util.computerFileSize(t)),this.newUser.quota={id:t,label:t}):this.newUser.quota=this.quotaOptions[0]},infiniteHandler:function(t){this.$store.dispatch("getUsers",{offset:this.usersOffset,limit:this.usersLimit,group:"disabled"!==this.selectedGroup?this.selectedGroup:"",search:this.searchQuery}).then((function(e){e?t.loaded():t.complete()}))},search:function(t){this.searchQuery=t,this.$store.commit("resetUsers"),this.$refs.infiniteLoading.stateChanger.reset()},resetSearch:function(){this.search("")},resetForm:function(){this.newUser=Object.assign({},w),this.settings.defaultLanguage&&n.default.set(this.newUser.language,"code",this.settings.defaultLanguage),this.setNewUserDefaultGroup(this.selectedGroup),this.loading.all=!1},createUser:function(){var t=this;this.loading.all=!0,this.$store.dispatch("addUser",{userid:this.newUser.id,password:this.newUser.password,displayName:this.newUser.displayName,email:this.newUser.mailAddress,groups:this.newUser.groups.map((function(t){return t.id})),subadmin:this.newUser.subAdminsGroups.map((function(t){return t.id})),quota:this.newUser.quota.id,language:this.newUser.language.code}).then((function(){t.resetForm(),t.$refs.newusername.focus()})).catch((function(e){if(t.loading.all=!1,e.response&&e.response.data&&e.response.data.ocs&&e.response.data.ocs.meta){var s=e.response.data.ocs.meta.statuscode;102===s?t.$refs.newusername.focus():107===s&&t.$refs.newuserpassword.focus()}}))},setNewUserDefaultGroup:function(t){if(t&&t.length>0){var e=this.groups.find((function(e){return e.id===t}));if(e)return void(this.newUser.groups=[e])}this.newUser.groups=[]},createGroup:function(t){var e=this;return this.loading.groups=!0,this.$store.dispatch("addGroup",t).then((function(s){e.newUser.groups.push(e.groups.find((function(e){return e.id===t}))),e.loading.groups=!1})).catch((function(){e.loading.groups=!1})),this.$store.getters.getGroups[this.groups.length]}}},_=Object(g.a)(y,(function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"user-list-grid",attrs:{id:"app-content"},on:{"&scroll":function(e){return t.onScroll(e)}}},[s("div",{staticClass:"row",class:{sticky:t.scrolled&&!t.showConfig.showNewUserForm},attrs:{id:"grid-header"}},[s("div",{staticClass:"avatar",attrs:{id:"headerAvatar"}}),t._v(" "),s("div",{staticClass:"name",attrs:{id:"headerName"}},[t._v(t._s(t.t("settings","Username")))]),t._v(" "),s("div",{staticClass:"displayName",attrs:{id:"headerDisplayName"}},[t._v(t._s(t.t("settings","Display name")))]),t._v(" "),s("div",{staticClass:"password",attrs:{id:"headerPassword"}},[t._v(t._s(t.t("settings","Password")))]),t._v(" "),s("div",{staticClass:"mailAddress",attrs:{id:"headerAddress"}},[t._v(t._s(t.t("settings","Email")))]),t._v(" "),s("div",{staticClass:"groups",attrs:{id:"headerGroups"}},[t._v(t._s(t.t("settings","Groups")))]),t._v(" "),t.subAdminsGroups.length>0&&t.settings.isAdmin?s("div",{staticClass:"subadmins",attrs:{id:"headerSubAdmins"}},[t._v(t._s(t.t("settings","Group admin for")))]):t._e(),t._v(" "),s("div",{staticClass:"quota",attrs:{id:"headerQuota"}},[t._v(t._s(t.t("settings","Quota")))]),t._v(" "),t.showConfig.showLanguages?s("div",{staticClass:"languages",attrs:{id:"headerLanguages"}},[t._v(t._s(t.t("settings","Language")))]):t._e(),t._v(" "),t.showConfig.showStoragePath?s("div",{staticClass:"headerStorageLocation storageLocation"},[t._v(t._s(t.t("settings","Storage location")))]):t._e(),t._v(" "),t.showConfig.showUserBackend?s("div",{staticClass:"headerUserBackend userBackend"},[t._v(t._s(t.t("settings","User backend")))]):t._e(),t._v(" "),t.showConfig.showLastLogin?s("div",{staticClass:"headerLastLogin lastLogin"},[t._v(t._s(t.t("settings","Last login")))]):t._e(),t._v(" "),s("div",{staticClass:"userActions"})]),t._v(" "),s("form",{directives:[{name:"show",rawName:"v-show",value:t.showConfig.showNewUserForm,expression:"showConfig.showNewUserForm"}],staticClass:"row",class:{sticky:t.scrolled&&t.showConfig.showNewUserForm},attrs:{id:"new-user",disabled:t.loading.all},on:{submit:function(e){return e.preventDefault(),t.createUser(e)}}},[s("div",{class:t.loading.all?"icon-loading-small":"icon-add"}),t._v(" "),s("div",{staticClass:"name"},[s("input",{directives:[{name:"model",rawName:"v-model",value:t.newUser.id,expression:"newUser.id"}],ref:"newusername",attrs:{id:"newusername",type:"text",required:"",placeholder:this.settings.newUserGenerateUserID?t.t("settings","Will be autogenerated"):t.t("settings","Username"),name:"username",autocomplete:"off",autocapitalize:"none",autocorrect:"off",pattern:"[a-zA-Z0-9 _\\.@\\-']+",disabled:this.settings.newUserGenerateUserID},domProps:{value:t.newUser.id},on:{input:function(e){e.target.composing||t.$set(t.newUser,"id",e.target.value)}}})]),t._v(" "),s("div",{staticClass:"displayName"},[s("input",{directives:[{name:"model",rawName:"v-model",value:t.newUser.displayName,expression:"newUser.displayName"}],attrs:{id:"newdisplayname",type:"text",placeholder:t.t("settings","Display name"),name:"displayname",autocomplete:"off",autocapitalize:"none",autocorrect:"off"},domProps:{value:t.newUser.displayName},on:{input:function(e){e.target.composing||t.$set(t.newUser,"displayName",e.target.value)}}})]),t._v(" "),s("div",{staticClass:"password"},[s("input",{directives:[{name:"model",rawName:"v-model",value:t.newUser.password,expression:"newUser.password"}],ref:"newuserpassword",attrs:{id:"newuserpassword",type:"password",required:""===t.newUser.mailAddress,placeholder:t.t("settings","Password"),name:"password",autocomplete:"new-password",autocapitalize:"none",autocorrect:"off",minlength:t.minPasswordLength},domProps:{value:t.newUser.password},on:{input:function(e){e.target.composing||t.$set(t.newUser,"password",e.target.value)}}})]),t._v(" "),s("div",{staticClass:"mailAddress"},[s("input",{directives:[{name:"model",rawName:"v-model",value:t.newUser.mailAddress,expression:"newUser.mailAddress"}],attrs:{id:"newemail",type:"email",required:""===t.newUser.password||this.settings.newUserRequireEmail,placeholder:t.t("settings","Email"),name:"email",autocomplete:"off",autocapitalize:"none",autocorrect:"off"},domProps:{value:t.newUser.mailAddress},on:{input:function(e){e.target.composing||t.$set(t.newUser,"mailAddress",e.target.value)}}})]),t._v(" "),s("div",{staticClass:"groups"},[t.settings.isAdmin?t._e():s("input",{class:{"icon-loading-small":t.loading.groups},attrs:{type:"text",tabindex:"-1",id:"newgroups",required:!t.settings.isAdmin},domProps:{value:t.newUser.groups}}),t._v(" "),s("multiselect",{staticClass:"multiselect-vue",attrs:{options:t.canAddGroups,disabled:t.loading.groups||t.loading.all,"tag-placeholder":"create",placeholder:t.t("settings","Add user in group"),label:"name","track-by":"id",multiple:!0,taggable:!0,"close-on-select":!1,"tag-width":60},on:{tag:t.createGroup},model:{value:t.newUser.groups,callback:function(e){t.$set(t.newUser,"groups",e)},expression:"newUser.groups"}},[s("span",{attrs:{slot:"noResult"},slot:"noResult"},[t._v(t._s(t.t("settings","No results")))])])],1),t._v(" "),t.subAdminsGroups.length>0&&t.settings.isAdmin?s("div",{staticClass:"subadmins"},[s("multiselect",{staticClass:"multiselect-vue",attrs:{options:t.subAdminsGroups,placeholder:t.t("settings","Set user as admin for"),label:"name","track-by":"id",multiple:!0,"close-on-select":!1,"tag-width":60},model:{value:t.newUser.subAdminsGroups,callback:function(e){t.$set(t.newUser,"subAdminsGroups",e)},expression:"newUser.subAdminsGroups"}},[s("span",{attrs:{slot:"noResult"},slot:"noResult"},[t._v(t._s(t.t("settings","No results")))])])],1):t._e(),t._v(" "),s("div",{staticClass:"quota"},[s("multiselect",{staticClass:"multiselect-vue",attrs:{options:t.quotaOptions,placeholder:t.t("settings","Select user quota"),label:"label","track-by":"id",allowEmpty:!1,taggable:!0},on:{tag:t.validateQuota},model:{value:t.newUser.quota,callback:function(e){t.$set(t.newUser,"quota",e)},expression:"newUser.quota"}})],1),t._v(" "),t.showConfig.showLanguages?s("div",{staticClass:"languages"},[s("multiselect",{staticClass:"multiselect-vue",attrs:{options:t.languages,placeholder:t.t("settings","Default language"),label:"name","track-by":"code",allowEmpty:!1,"group-values":"languages","group-label":"label"},model:{value:t.newUser.language,callback:function(e){t.$set(t.newUser,"language",e)},expression:"newUser.language"}})],1):t._e(),t._v(" "),t.showConfig.showStoragePath?s("div",{staticClass:"storageLocation"}):t._e(),t._v(" "),t.showConfig.showUserBackend?s("div",{staticClass:"userBackend"}):t._e(),t._v(" "),t.showConfig.showLastLogin?s("div",{staticClass:"lastLogin"}):t._e(),t._v(" "),s("div",{staticClass:"userActions"},[s("input",{staticClass:"button primary icon-checkmark-white has-tooltip",attrs:{type:"submit",id:"newsubmit",value:"",title:t.t("settings","Add a new user")}})])]),t._v(" "),t._l(t.filteredUsers,(function(e,i){return s("user-row",{key:i,attrs:{user:e,settings:t.settings,showConfig:t.showConfig,groups:t.groups,subAdminsGroups:t.subAdminsGroups,quotaOptions:t.quotaOptions,languages:t.languages,externalActions:t.externalActions}})})),t._v(" "),s("infinite-loading",{ref:"infiniteLoading",on:{infinite:t.infiniteHandler}},[s("div",{attrs:{slot:"spinner"},slot:"spinner"},[s("div",{staticClass:"users-icon-loading icon-loading"})]),t._v(" "),s("div",{attrs:{slot:"no-more"},slot:"no-more"},[s("div",{staticClass:"users-list-end"})]),t._v(" "),s("div",{attrs:{slot:"no-results"},slot:"no-results"},[s("div",{attrs:{id:"emptycontent"}},[s("div",{staticClass:"icon-contacts-dark"}),t._v(" "),s("h2",[t._v(t._s(t.t("settings","No users in here")))])])])])],2)}),[],!1,null,null,null).exports;i(0);function C(t){return(C="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})(t)}n.default.use(o.a);var x={name:"Users",props:["selectedGroup"],components:{AppContent:r.AppContent,AppNavigation:r.AppNavigation,AppNavigationItem:r.AppNavigationItem,AppNavigationNew:r.AppNavigationNew,AppNavigationSettings:r.AppNavigationSettings,AppSidebar:r.AppSidebar,Content:r.Content,UserList:_,Multiselect:r.Multiselect},beforeMount:function(){this.$store.commit("initGroups",{groups:this.$store.getters.getServerData.groups,orderBy:this.$store.getters.getServerData.sortGroups,userCount:this.$store.getters.getServerData.userCount}),this.$store.dispatch("getPasswordPolicyMinLength")},created:function(){Object.assign(OCA,{Settings:{UserList:{registerAction:this.registerAction}}})},data:function(){return{unlimitedQuota:{id:"none",label:t("settings","Unlimited")},selectedQuota:!1,externalActions:[],showAddGroupEntry:!1,loadingAddGroup:!1,showConfig:{showStoragePath:!1,showUserBackend:!1,showLastLogin:!1,showNewUserForm:!1,showLanguages:!1}}},methods:{toggleNewUserMenu:function(){this.showConfig.showNewUserForm=!this.showConfig.showNewUserForm,this.showConfig.showNewUserForm&&n.default.nextTick((function(){window.newusername.focus()}))},getLocalstorage:function(t){var e=this.$localStorage.get(t);return this.showConfig[t]=null!==e?"true"===e:this.showConfig[t],this.showConfig[t]},setLocalStorage:function(t,e){return this.showConfig[t]=e,this.$localStorage.set(t,e),e},removeGroup:function(e){var s=this;OC.dialogs.confirm(t("settings","You are about to remove the group {group}. The users will NOT be deleted.",{group:e}),t("settings","Please confirm the group removal "),(function(t){t&&s.$store.dispatch("removeGroup",e)}))},setDefaultQuota:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"none";this.$store.dispatch("setAppConfig",{app:"files",key:"default_quota",value:e.id?e.id:e}).then((function(){"object"!==C(e)&&(e={id:e,label:e}),t.defaultQuota=e}))},validateQuota:function(t){return null===OC.Util.computerFileSize(t)?this.setDefaultQuota("none"):this.setDefaultQuota(OC.Util.humanFileSize(OC.Util.computerFileSize(t)))},registerAction:function(t,e,s){return this.externalActions.push({icon:t,text:e,action:s}),this.externalActions},createGroup:function(t){var e=this,s=t.target[0].value;this.loadingAddGroup=!0,this.$store.dispatch("addGroup",s).then((function(){e.showAddGroupEntry=!1,e.loadingAddGroup=!1,e.$router.push({name:"group",params:{selectedGroup:s}})})).catch((function(){e.loadingAddGroup=!1}))}},computed:{users:function(){return this.$store.getters.getUsers},usersOffset:function(){return this.$store.getters.getUsersOffset},usersLimit:function(){return this.$store.getters.getUsersLimit},showLanguages:{get:function(){return this.getLocalstorage("showLanguages")},set:function(t){this.setLocalStorage("showLanguages",t)}},showLastLogin:{get:function(){return this.getLocalstorage("showLastLogin")},set:function(t){this.setLocalStorage("showLastLogin",t)}},showUserBackend:{get:function(){return this.getLocalstorage("showUserBackend")},set:function(t){this.setLocalStorage("showUserBackend",t)}},showStoragePath:{get:function(){return this.getLocalstorage("showStoragePath")},set:function(t){this.setLocalStorage("showStoragePath",t)}},userCount:function(){return this.$store.getters.getUserCount},settings:function(){return this.$store.getters.getServerData},quotaOptions:function(){var t=this.settings.quotaPreset.reduce((function(t,e){return t.concat({id:e,label:e})}),[]);return t.unshift(this.unlimitedQuota),t},defaultQuota:{get:function(){return!1!==this.selectedQuota?this.selectedQuota:this.settings.defaultQuota!==this.unlimitedQuota.id&&OC.Util.computerFileSize(this.settings.defaultQuota)>=0?{id:this.settings.defaultQuota,label:this.settings.defaultQuota}:this.unlimitedQuota},set:function(t){this.selectedQuota=t}},menu:function(){var e=this,s=this,i=this.$store.getters.getGroups,a=(i=(i=Array.isArray(i)?i:[]).map((function(i){var n={};return n.id=i.id.replace(" ","_"),n.key=n.id,n.utils={},n.router={name:"group",params:{selectedGroup:i.id}},n.text=i.name,n.title=i.name,(i.usercount-i.disabled>0||-1===i.usercount)&&(n.utils.counter=i.usercount-i.disabled),"admin"!==n.id&&"disabled"!==n.id&&e.settings.isAdmin&&(n.utils.actions=[{icon:"icon-delete",text:t("settings","Remove group"),action:function(){s.removeGroup(i.id)}}]),n}))).find((function(t){return"disabled"!==t.id&&"admin"!==t.id}));if(a=void 0===a?[]:a,(a=Array.isArray(a)?a:[a]).length>0){var o={caption:!0,text:t("settings","Groups")};i.unshift(o)}var r=i.find((function(t){return"admin"==t.id})),l=i.find((function(t){return"disabled"==t.id}));i=i.filter((function(t){return-1===["admin","disabled"].indexOf(t.id)})),r&&r.text&&(r.text=t("settings","Admins"),r.icon="icon-user-admin",i.unshift(r)),l&&l.text&&(l.text=t("settings","Disabled users"),l.icon="icon-disabled-users",l.utils&&(l.utils.counter>0||-1===l.utils.counter)&&i.unshift(l));var u={id:"everyone",key:"everyone",icon:"icon-contacts-dark",router:{name:"users"},text:t("settings","Everyone")};this.userCount>0&&n.default.set(u,"utils",{counter:this.userCount}),i.unshift(u);var d={id:"addgroup",key:"addgroup",icon:"icon-add",text:t("settings","Add group"),classes:this.loadingAddGroup?"icon-loading-small":""};return this.showAddGroupEntry?(n.default.set(d,"edit",{text:t("settings","Add group"),action:this.createGroup,reset:function(){s.showAddGroupEntry=!1}}),d.classes="editing"):n.default.set(d,"action",(function(){s.showAddGroupEntry=!0,n.default.nextTick((function(){window.addgroup.querySelector('form > input[type="text"]').focus()}))})),i.unshift(d),i}}},k=Object(g.a)(x,(function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("Content",{attrs:{"app-name":"settings","navigation-class":{"icon-loading":t.loadingAddGroup}}},[s("AppNavigation",[s("AppNavigationNew",{attrs:{"button-id":"new-user-button",text:t.t("settings","New user"),"button-class":"icon-add"},on:{click:t.toggleNewUserMenu}}),t._v(" "),s("ul",{attrs:{id:"usergrouplist"}},t._l(t.menu,(function(t){return s("AppNavigationItem",{key:t.key,attrs:{item:t}})})),1),t._v(" "),s("AppNavigationSettings",[s("div",[s("p",[t._v(t._s(t.t("settings","Default quota:")))]),t._v(" "),s("Multiselect",{attrs:{value:t.defaultQuota,options:t.quotaOptions,"tag-placeholder":"create",placeholder:t.t("settings","Select default quota"),label:"label","track-by":"id",allowEmpty:!1,taggable:!0},on:{tag:t.validateQuota,input:t.setDefaultQuota}})],1),t._v(" "),s("div",[s("input",{directives:[{name:"model",rawName:"v-model",value:t.showLanguages,expression:"showLanguages"}],staticClass:"checkbox",attrs:{type:"checkbox",id:"showLanguages"},domProps:{checked:Array.isArray(t.showLanguages)?t._i(t.showLanguages,null)>-1:t.showLanguages},on:{change:function(e){var s=t.showLanguages,i=e.target,n=!!i.checked;if(Array.isArray(s)){var a=t._i(s,null);i.checked?a<0&&(t.showLanguages=s.concat([null])):a>-1&&(t.showLanguages=s.slice(0,a).concat(s.slice(a+1)))}else t.showLanguages=n}}}),t._v(" "),s("label",{attrs:{for:"showLanguages"}},[t._v(t._s(t.t("settings","Show Languages")))])]),t._v(" "),s("div",[s("input",{directives:[{name:"model",rawName:"v-model",value:t.showLastLogin,expression:"showLastLogin"}],staticClass:"checkbox",attrs:{type:"checkbox",id:"showLastLogin"},domProps:{checked:Array.isArray(t.showLastLogin)?t._i(t.showLastLogin,null)>-1:t.showLastLogin},on:{change:function(e){var s=t.showLastLogin,i=e.target,n=!!i.checked;if(Array.isArray(s)){var a=t._i(s,null);i.checked?a<0&&(t.showLastLogin=s.concat([null])):a>-1&&(t.showLastLogin=s.slice(0,a).concat(s.slice(a+1)))}else t.showLastLogin=n}}}),t._v(" "),s("label",{attrs:{for:"showLastLogin"}},[t._v(t._s(t.t("settings","Show last login")))])]),t._v(" "),s("div",[s("input",{directives:[{name:"model",rawName:"v-model",value:t.showUserBackend,expression:"showUserBackend"}],staticClass:"checkbox",attrs:{type:"checkbox",id:"showUserBackend"},domProps:{checked:Array.isArray(t.showUserBackend)?t._i(t.showUserBackend,null)>-1:t.showUserBackend},on:{change:function(e){var s=t.showUserBackend,i=e.target,n=!!i.checked;if(Array.isArray(s)){var a=t._i(s,null);i.checked?a<0&&(t.showUserBackend=s.concat([null])):a>-1&&(t.showUserBackend=s.slice(0,a).concat(s.slice(a+1)))}else t.showUserBackend=n}}}),t._v(" "),s("label",{attrs:{for:"showUserBackend"}},[t._v(t._s(t.t("settings","Show user backend")))])]),t._v(" "),s("div",[s("input",{directives:[{name:"model",rawName:"v-model",value:t.showStoragePath,expression:"showStoragePath"}],staticClass:"checkbox",attrs:{type:"checkbox",id:"showStoragePath"},domProps:{checked:Array.isArray(t.showStoragePath)?t._i(t.showStoragePath,null)>-1:t.showStoragePath},on:{change:function(e){var s=t.showStoragePath,i=e.target,n=!!i.checked;if(Array.isArray(s)){var a=t._i(s,null);i.checked?a<0&&(t.showStoragePath=s.concat([null])):a>-1&&(t.showStoragePath=s.slice(0,a).concat(s.slice(a+1)))}else t.showStoragePath=n}}}),t._v(" "),s("label",{attrs:{for:"showStoragePath"}},[t._v(t._s(t.t("settings","Show storage path")))])])])],1),t._v(" "),s("AppContent",[s("UserList",{attrs:{users:t.users,showConfig:t.showConfig,selectedGroup:t.selectedGroup,externalActions:t.externalActions},scopedSlots:t._u([{key:"content",fn:function(){},proxy:!0}])})],1)],1)}),[],!1,null,null,null);s.default=k.exports}}]); +//# sourceMappingURL=vue-6.js.map?v=2095f447189973aa4e3b \ No newline at end of file diff --git a/apps/settings/js/vue-6.js.map b/apps/settings/js/vue-6.js.map new file mode 100644 index 00000000000..74c9d474ea7 --- /dev/null +++ b/apps/settings/js/vue-6.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./node_modules/vue-click-outside/index.js","webpack:///./node_modules/vue-infinite-loading/dist/vue-infinite-loading.js","webpack:///./apps/settings/src/views/Users.vue?3e20","webpack:///apps/settings/src/components/userList/userRow.vue","webpack:///./apps/settings/src/components/userList/userRow.vue?df4c","webpack:///./apps/settings/src/components/userList/userRow.vue","webpack:///./apps/settings/src/components/userList/userRow.vue?121d","webpack:///apps/settings/src/components/userList.vue","webpack:///./apps/settings/src/components/userList.vue?da1f","webpack:///./apps/settings/src/components/userList.vue","webpack:///./apps/settings/src/components/userList.vue?e68c","webpack:///apps/settings/src/views/Users.vue","webpack:///./apps/settings/src/views/Users.vue?ede2","webpack:///./apps/settings/src/views/Users.vue"],"names":["validate","binding","value","console","warn","expression","isServer","vNode","componentInstance","$isServer","module","exports","bind","el","handler","e","context","elements","path","composedPath","length","unshift","target","contains","popupItem","i","len","isPopup","__vueClickOutside__","callback","document","addEventListener","update","unbind","removeEventListener","t","n","r","l","call","m","c","d","o","Object","defineProperty","enumerable","get","Symbol","toStringTag","__esModule","create","default","prototype","hasOwnProperty","p","s","locals","toString","this","map","btoa","unescape","encodeURIComponent","JSON","stringify","a","sources","sourceRoot","concat","join","push","id","css","media","sourceMap","parts","b","DEBUG","Error","head","getElementsByTagName","u","f","navigator","test","userAgent","toLowerCase","h","refs","g","createElement","type","appendChild","querySelector","parentNode","removeChild","w","setAttribute","ssrId","styleSheet","cssText","firstChild","createTextNode","v","y","filter","Boolean","childNodes","insertBefore","iterator","constructor","throttleLimit","loopCheckTimeout","loopCheckMaxCalls","passive","window","remove","STATE_CHANGER","INFINITE_EVENT","IDENTIFIER","INFINITE_LOOP","READY","LOADING","COMPLETE","ERROR","color","fontSize","padding","mode","props","spinner","distance","forceUseInfiniteWrapper","system","slots","noResults","noMore","error","errorBtnText","WARNINGS","ERRORS","STATUS","BUBBLES","render","attrs","class","Array","apply","CIRCLES","DEFAULT","SPIRAL","WAVEDOTS","options","staticRenderFns","_compiled","functional","_scopeId","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","_injectStyles","beforeCreate","name","computed","spinnerView","$attrs","toUpperCase","spinnerInConfig","_v","$createElement","_self","_c","tag","__inject__","__file","timers","caches","throttle","indexOf","setTimeout","splice","shift","reset","forEach","clearTimeout","isChecked","timer","times","track","key","getScrollElm","documentElement","save","scrollHeight","restore","scrollTop","k","offsetWidth","offsetHeight","S","data","scrollParent","scrollHandler","isFirstLoad","status","components","Spinner","isShowSpinner","isShowError","isShowNoResults","isShowNoMore","slotStyles","keys","replace","x","$slots","Number","String","direction","identifier","Date","onInfinite","Function","watch","stateChanger","mounted","$watch","getScrollParent","immediate","Event","$el","attemptLoad","$on","$nextTick","$forceUpdate","loaded","$emit","complete","deactivated","activated","methods","getCurrentDistance","pageYOffset","getBoundingClientRect","top","innerHeight","bottom","arguments","tagName","getComputedStyle","overflowY","hasAttribute","destroyed","staticClass","directives","rawName","style","_t","_s","trigger","domProps","textContent","on","click","E","_","config","productionTip","configurable","assign","component","Vue","_vm","_h","user","loading","delete","disable","wipe","_e","generateAvatar","displayName","$event","preventDefault","updateDisplayName","backendCapabilities","ref","rand","all","displayname","modifiers","settings","canChangePassword","setPassword","password","updatePassword","minPasswordLength","mailAddress","updateEmail","email","groups","userGroups","availableGroups","isAdmin","createGroup","addUserGroup","removeUserGroup","formatGroupsTitle","slot","subAdminsGroups","subadmins","userSubAdminsGroups","addUserSubAdmin","removeUserSubAdmin","quota","userQuota","quotaOptions","validateQuota","setUserQuota","usedQuota","showConfig","languages","userLanguage","setUserLanguage","storageLocation","backend","lastLogin","OC","Util","formatDate","relativeModifiedDate","currentUser","toggleMenu","openedMenu","userActions","opacity","feedbackMessage","onScroll","scrolled","showNewUserForm","createUser","newUser","newUserGenerateUserID","composing","$set","newUserRequireEmail","canAddGroups","model","$$v","_l","externalActions","infiniteHandler","loadingAddGroup","toggleNewUserMenu","item","defaultQuota","setDefaultQuota","isArray","showLanguages","_i","$$a","$$el","$$c","checked","$$i","slice","showLastLogin","showUserBackend","showStoragePath","users","selectedGroup","scopedSlots","_u","fn","proxy"],"mappings":"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nCA,WAmCA,WACA,oFACA,UAEA,gBAvCA,WAuCA,WACA,oCAGA,0BAUA,OALA,eACA,eACA,+BACA,iBACA,6BACA,MAKA,UA1DA,WA2DA,4BACA,+EAEA,6DAEA,UAhEA,WAiEA,4BACA,IACA,uDAIA,WAFA,yCAEA,IAEA,qBAGA,UA5EA,WA6EA,6BAEA,mDACA,yDACA,yBACA,wCAEA,qBAEA,sBAIA,kBA1FA,WA2FA,uDAIA,aA/FA,WA+FA,WAEA,EADA,gEACA,qDACA,+CACA,CACA,wBACA,yBAEA,yBAGA,IAGA,SAEA,WAFA,WAGA,kCAEA,SALA,WAMA,oBAUA,eAhBA,SAgBA,mEACA,sBACA,oCACA,CACA,OACA,OACA,wCAWA,kBAjCA,SAiCA,GAEA,OADA,oCACA,qBAGA,gBAtCA,WAsCA,WACA,qBACA,oBACA,mBACA,iDACA,iBACA,kBACA,qBAIA,WAjDA,WAiDA,WACA,uBACA,oBACA,mBACA,4CACA,iBACA,oBACA,qBAIA,kBA5DA,WA4DA,WACA,uBACA,oBACA,mBACA,qBACA,sEACA,iBACA,oBACA,qBAUA,kBA9EA,WA8EA,WACA,+BACA,4BACA,oCACA,oBACA,kBACA,UACA,iBACA,yBACA,gCAUA,eAjGA,WAiGA,WACA,4BACA,yBACA,oCACA,oBACA,eACA,UACA,iBACA,sBACA,8BAUA,YApHA,WAoHA,WACA,+BACA,4BACA,oCACA,oBACA,YACA,UACA,iBACA,yBACA,gCAUA,YAvIA,SAuIA,cAWA,OAVA,sCACA,mCACA,iBACA,mCACA,gBACA,sDAEA,kBACA,sCAEA,mDASA,aA3JA,SA2JA,cACA,iBACA,SAEA,uBACA,mBACA,OACA,6DACA,gDASA,gBA5KA,SA4KA,cACA,oBACA,SAEA,uBACA,mBACA,OACA,gEACA,iBACA,oBAEA,mCACA,mCAGA,kBACA,wBAUA,gBAtMA,SAsMA,cACA,0BACA,mBACA,OACA,gEACA,mDASA,mBApNA,SAoNA,cACA,0BACA,mBACA,OACA,mEACA,mDASA,aAlOA,WAkOA,2EASA,OARA,sBAEA,cACA,oCACA,oBACA,YACA,U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CA,YACA,wBACA,8BACA,sCACA,oCACA,8CACA,wBACA,kBACA,WACA,2BAEA,YAdA,WAeA,iCACA,gDACA,qDACA,wDAEA,oDAEA,QAtBA,WAyBA,mBACA,UACA,UACA,wCAKA,KAjCA,WAkCA,OAEA,2DAEA,iBACA,mBACA,qBACA,mBACA,YACA,mBACA,mBACA,iBACA,mBACA,oBAIA,SACA,kBADA,WAEA,iEACA,iCACA,+BACA,+BAIA,gBATA,SASA,GAEA,gCAGA,OADA,0DACA,oBAEA,gBAhBA,SAgBA,KAGA,OAFA,qBACA,4BACA,GAEA,YArBA,SAqBA,GACA,WAEA,mBACA,oGACA,mDACA,YACA,GACA,uCAYA,gBAzCA,WAyCA,2EACA,qCACA,YACA,oBAEA,oBACA,iBACA,kBACA,kBAEA,qBAUA,cA7DA,SA6DA,GAGA,cADA,4BAEA,6BAGA,0EAaA,eAjFA,SAiFA,OAMA,OALA,2BACA,OACA,OACA,WAEA,sBAQA,YA/FA,SA+FA,cACA,oBACA,wBACA,mCACA,iBACA,uBACA,qBACA,gBACA,aACA,QACA,sBAIA,kBACA,0BAIA,UACA,MADA,WAEA,qCAEA,YAJA,WAKA,2CAEA,WAPA,WAQA,0CAIA,eACA,6DACA,gBACA,0CAGA,eACA,6DACA,gBACA,0CAGA,iBACA,+DACA,gBACA,4CAGA,iBACA,+DACA,gBACA,4CAIA,UArCA,WAsCA,yCAEA,SAxCA,WAyCA,0CAIA,aA7CA,WA+CA,4FAGA,OADA,+BACA,GAGA,cACA,eACA,8BACA,mBAEA,6GAEA,iEAEA,qBAEA,gBACA,uBAMA,KAvEA,WAuEA,WAEA,OACA,gCA0CA,GAtCA,GAHA,yBAGA,iBACA,SA8BA,OA7BA,2BACA,WACA,WAGA,UACA,aACA,6BAIA,cACA,gBAGA,8CACA,wCAGA,wDAEA,kBACA,mBACA,kCACA,kBACA,wBAIA,MAOA,6DAGA,GAFA,mBACA,0BACA,UACA,OACA,WACA,6BAEA,aAIA,iDACA,gDAGA,yEAEA,YACA,8BACA,yBACA,cAEA,YACA,sCACA,6BACA,UACA,oBACA,sBAEA,cAMA,OACA,cACA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","file":"vue-6.js?v=2095f447189973aa4e3b","sourcesContent":["function validate(binding) {\r\n if (typeof binding.value !== 'function') {\r\n console.warn('[Vue-click-outside:] provided expression', binding.expression, 'is not a function.')\r\n return false\r\n }\r\n\r\n return true\r\n}\r\n\r\nfunction isPopup(popupItem, elements) {\r\n if (!popupItem || !elements)\r\n return false\r\n\r\n for (var i = 0, len = elements.length; i < len; i++) {\r\n try {\r\n if (popupItem.contains(elements[i])) {\r\n return true\r\n }\r\n if (elements[i].contains(popupItem)) {\r\n return false\r\n }\r\n } catch(e) {\r\n return false\r\n }\r\n }\r\n\r\n return false\r\n}\r\n\r\nfunction isServer(vNode) {\r\n return typeof vNode.componentInstance !== 'undefined' && vNode.componentInstance.$isServer\r\n}\r\n\r\nexports = module.exports = {\r\n bind: function (el, binding, vNode) {\r\n if (!validate(binding)) return\r\n\r\n // Define Handler and cache it on the element\r\n function handler(e) {\r\n if (!vNode.context) return\r\n\r\n // some components may have related popup item, on which we shall prevent the click outside event handler.\r\n var elements = e.path || (e.composedPath && e.composedPath())\r\n elements && elements.length > 0 && elements.unshift(e.target)\r\n \r\n if (el.contains(e.target) || isPopup(vNode.context.popupItem, elements)) return\r\n\r\n el.__vueClickOutside__.callback(e)\r\n }\r\n\r\n // add Event Listeners\r\n el.__vueClickOutside__ = {\r\n handler: handler,\r\n callback: binding.value\r\n }\r\n !isServer(vNode) && document.addEventListener('click', handler)\r\n },\r\n\r\n update: function (el, binding) {\r\n if (validate(binding)) el.__vueClickOutside__.callback = binding.value\r\n },\r\n \r\n unbind: function (el, binding, vNode) {\r\n // Remove Event Listeners\r\n !isServer(vNode) && document.removeEventListener('click', el.__vueClickOutside__.handler)\r\n delete el.__vueClickOutside__\r\n }\r\n}\r\n","/*!\n * vue-infinite-loading v2.4.4\n * (c) 2016-2019 PeachScript\n * MIT License\n */\n!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.VueInfiniteLoading=e():t.VueInfiniteLoading=e()}(this,function(){return function(t){var e={};function n(i){if(e[i])return e[i].exports;var r=e[i]={i:i,l:!1,exports:{}};return t[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var r in t)n.d(i,r,function(e){return t[e]}.bind(null,r));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=9)}([function(t,e,n){var i=n(6);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(3).default)(\"09280948\",i,!0,{})},function(t,e,n){var i=n(8);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(3).default)(\"51e4c3f9\",i,!0,{})},function(t,e){t.exports=function(t){var e=[];return e.toString=function(){return this.map(function(e){var n=function(t,e){var n=t[1]||\"\",i=t[3];if(!i)return n;if(e&&\"function\"==typeof btoa){var r=(o=i,\"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,\"+btoa(unescape(encodeURIComponent(JSON.stringify(o))))+\" */\"),a=i.sources.map(function(t){return\"/*# sourceURL=\"+i.sourceRoot+t+\" */\"});return[n].concat(a).concat([r]).join(\"\\n\")}var o;return[n].join(\"\\n\")}(e,t);return e[2]?\"@media \"+e[2]+\"{\"+n+\"}\":n}).join(\"\")},e.i=function(t,n){\"string\"==typeof t&&(t=[[null,t,\"\"]]);for(var i={},r=0;r<this.length;r++){var a=this[r][0];\"number\"==typeof a&&(i[a]=!0)}for(r=0;r<t.length;r++){var o=t[r];\"number\"==typeof o[0]&&i[o[0]]||(n&&!o[2]?o[2]=n:n&&(o[2]=\"(\"+o[2]+\") and (\"+n+\")\"),e.push(o))}},e}},function(t,e,n){\"use strict\";function i(t,e){for(var n=[],i={},r=0;r<e.length;r++){var a=e[r],o=a[0],s={id:t+\":\"+r,css:a[1],media:a[2],sourceMap:a[3]};i[o]?i[o].parts.push(s):n.push(i[o]={id:o,parts:[s]})}return n}n.r(e),n.d(e,\"default\",function(){return b});var r=\"undefined\"!=typeof document;if(\"undefined\"!=typeof DEBUG&&DEBUG&&!r)throw new Error(\"vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\");var a={},o=r&&(document.head||document.getElementsByTagName(\"head\")[0]),s=null,l=0,d=!1,c=function(){},u=null,p=\"data-vue-ssr-id\",f=\"undefined\"!=typeof navigator&&/msie [6-9]\\b/.test(navigator.userAgent.toLowerCase());function b(t,e,n,r){d=n,u=r||{};var o=i(t,e);return h(o),function(e){for(var n=[],r=0;r<o.length;r++){var s=o[r];(l=a[s.id]).refs--,n.push(l)}e?h(o=i(t,e)):o=[];for(r=0;r<n.length;r++){var l;if(0===(l=n[r]).refs){for(var d=0;d<l.parts.length;d++)l.parts[d]();delete a[l.id]}}}}function h(t){for(var e=0;e<t.length;e++){var n=t[e],i=a[n.id];if(i){i.refs++;for(var r=0;r<i.parts.length;r++)i.parts[r](n.parts[r]);for(;r<n.parts.length;r++)i.parts.push(g(n.parts[r]));i.parts.length>n.parts.length&&(i.parts.length=n.parts.length)}else{var o=[];for(r=0;r<n.parts.length;r++)o.push(g(n.parts[r]));a[n.id]={id:n.id,refs:1,parts:o}}}}function m(){var t=document.createElement(\"style\");return t.type=\"text/css\",o.appendChild(t),t}function g(t){var e,n,i=document.querySelector(\"style[\"+p+'~=\"'+t.id+'\"]');if(i){if(d)return c;i.parentNode.removeChild(i)}if(f){var r=l++;i=s||(s=m()),e=w.bind(null,i,r,!1),n=w.bind(null,i,r,!0)}else i=m(),e=function(t,e){var n=e.css,i=e.media,r=e.sourceMap;i&&t.setAttribute(\"media\",i);u.ssrId&&t.setAttribute(p,e.id);r&&(n+=\"\\n/*# sourceURL=\"+r.sources[0]+\" */\",n+=\"\\n/*# sourceMappingURL=data:application/json;base64,\"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+\" */\");if(t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}.bind(null,i),n=function(){i.parentNode.removeChild(i)};return e(t),function(i){if(i){if(i.css===t.css&&i.media===t.media&&i.sourceMap===t.sourceMap)return;e(t=i)}else n()}}var v,y=(v=[],function(t,e){return v[t]=e,v.filter(Boolean).join(\"\\n\")});function w(t,e,n,i){var r=n?\"\":i.css;if(t.styleSheet)t.styleSheet.cssText=y(e,r);else{var a=document.createTextNode(r),o=t.childNodes;o[e]&&t.removeChild(o[e]),o.length?t.insertBefore(a,o[e]):t.appendChild(a)}}},function(t,e){function n(t){return(n=\"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})(t)}function i(e){return\"function\"==typeof Symbol&&\"symbol\"===n(Symbol.iterator)?t.exports=i=function(t){return n(t)}:t.exports=i=function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":n(t)},i(e)}t.exports=i},function(t,e,n){\"use strict\";n.r(e);var i=n(0),r=n.n(i);for(var a in i)\"default\"!==a&&function(t){n.d(e,t,function(){return i[t]})}(a);e.default=r.a},function(t,e,n){(t.exports=n(2)(!1)).push([t.i,'.loading-wave-dots[data-v-46b20d22]{position:relative}.loading-wave-dots[data-v-46b20d22] .wave-item{position:absolute;top:50%;left:50%;display:inline-block;margin-top:-4px;width:8px;height:8px;border-radius:50%;-webkit-animation:loading-wave-dots-data-v-46b20d22 linear 2.8s infinite;animation:loading-wave-dots-data-v-46b20d22 linear 2.8s infinite}.loading-wave-dots[data-v-46b20d22] .wave-item:first-child{margin-left:-36px}.loading-wave-dots[data-v-46b20d22] .wave-item:nth-child(2){margin-left:-20px;-webkit-animation-delay:.14s;animation-delay:.14s}.loading-wave-dots[data-v-46b20d22] .wave-item:nth-child(3){margin-left:-4px;-webkit-animation-delay:.28s;animation-delay:.28s}.loading-wave-dots[data-v-46b20d22] .wave-item:nth-child(4){margin-left:12px;-webkit-animation-delay:.42s;animation-delay:.42s}.loading-wave-dots[data-v-46b20d22] .wave-item:last-child{margin-left:28px;-webkit-animation-delay:.56s;animation-delay:.56s}@-webkit-keyframes loading-wave-dots-data-v-46b20d22{0%{-webkit-transform:translateY(0);transform:translateY(0);background:#bbb}10%{-webkit-transform:translateY(-6px);transform:translateY(-6px);background:#999}20%{-webkit-transform:translateY(0);transform:translateY(0);background:#bbb}to{-webkit-transform:translateY(0);transform:translateY(0);background:#bbb}}@keyframes loading-wave-dots-data-v-46b20d22{0%{-webkit-transform:translateY(0);transform:translateY(0);background:#bbb}10%{-webkit-transform:translateY(-6px);transform:translateY(-6px);background:#999}20%{-webkit-transform:translateY(0);transform:translateY(0);background:#bbb}to{-webkit-transform:translateY(0);transform:translateY(0);background:#bbb}}.loading-circles[data-v-46b20d22] .circle-item{width:5px;height:5px;-webkit-animation:loading-circles-data-v-46b20d22 linear .75s infinite;animation:loading-circles-data-v-46b20d22 linear .75s infinite}.loading-circles[data-v-46b20d22] .circle-item:first-child{margin-top:-14.5px;margin-left:-2.5px}.loading-circles[data-v-46b20d22] .circle-item:nth-child(2){margin-top:-11.26px;margin-left:6.26px}.loading-circles[data-v-46b20d22] .circle-item:nth-child(3){margin-top:-2.5px;margin-left:9.5px}.loading-circles[data-v-46b20d22] .circle-item:nth-child(4){margin-top:6.26px;margin-left:6.26px}.loading-circles[data-v-46b20d22] .circle-item:nth-child(5){margin-top:9.5px;margin-left:-2.5px}.loading-circles[data-v-46b20d22] .circle-item:nth-child(6){margin-top:6.26px;margin-left:-11.26px}.loading-circles[data-v-46b20d22] .circle-item:nth-child(7){margin-top:-2.5px;margin-left:-14.5px}.loading-circles[data-v-46b20d22] .circle-item:last-child{margin-top:-11.26px;margin-left:-11.26px}@-webkit-keyframes loading-circles-data-v-46b20d22{0%{background:#dfdfdf}90%{background:#505050}to{background:#dfdfdf}}@keyframes loading-circles-data-v-46b20d22{0%{background:#dfdfdf}90%{background:#505050}to{background:#dfdfdf}}.loading-bubbles[data-v-46b20d22] .bubble-item{background:#666;-webkit-animation:loading-bubbles-data-v-46b20d22 linear .75s infinite;animation:loading-bubbles-data-v-46b20d22 linear .75s infinite}.loading-bubbles[data-v-46b20d22] .bubble-item:first-child{margin-top:-12.5px;margin-left:-.5px}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(2){margin-top:-9.26px;margin-left:8.26px}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(3){margin-top:-.5px;margin-left:11.5px}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(4){margin-top:8.26px;margin-left:8.26px}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(5){margin-top:11.5px;margin-left:-.5px}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(6){margin-top:8.26px;margin-left:-9.26px}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(7){margin-top:-.5px;margin-left:-12.5px}.loading-bubbles[data-v-46b20d22] .bubble-item:last-child{margin-top:-9.26px;margin-left:-9.26px}@-webkit-keyframes loading-bubbles-data-v-46b20d22{0%{width:1px;height:1px;box-shadow:0 0 0 3px #666}90%{width:1px;height:1px;box-shadow:0 0 0 0 #666}to{width:1px;height:1px;box-shadow:0 0 0 3px #666}}@keyframes loading-bubbles-data-v-46b20d22{0%{width:1px;height:1px;box-shadow:0 0 0 3px #666}90%{width:1px;height:1px;box-shadow:0 0 0 0 #666}to{width:1px;height:1px;box-shadow:0 0 0 3px #666}}.loading-default[data-v-46b20d22]{position:relative;border:1px solid #999;-webkit-animation:loading-rotating-data-v-46b20d22 ease 1.5s infinite;animation:loading-rotating-data-v-46b20d22 ease 1.5s infinite}.loading-default[data-v-46b20d22]:before{content:\"\";position:absolute;display:block;top:0;left:50%;margin-top:-3px;margin-left:-3px;width:6px;height:6px;background-color:#999;border-radius:50%}.loading-spiral[data-v-46b20d22]{border:2px solid #777;border-right-color:transparent;-webkit-animation:loading-rotating-data-v-46b20d22 linear .85s infinite;animation:loading-rotating-data-v-46b20d22 linear .85s infinite}@-webkit-keyframes loading-rotating-data-v-46b20d22{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes loading-rotating-data-v-46b20d22{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.loading-bubbles[data-v-46b20d22],.loading-circles[data-v-46b20d22]{position:relative}.loading-bubbles[data-v-46b20d22] .bubble-item,.loading-circles[data-v-46b20d22] .circle-item{position:absolute;top:50%;left:50%;display:inline-block;border-radius:50%}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(2),.loading-circles[data-v-46b20d22] .circle-item:nth-child(2){-webkit-animation-delay:93ms;animation-delay:93ms}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(3),.loading-circles[data-v-46b20d22] .circle-item:nth-child(3){-webkit-animation-delay:.186s;animation-delay:.186s}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(4),.loading-circles[data-v-46b20d22] .circle-item:nth-child(4){-webkit-animation-delay:.279s;animation-delay:.279s}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(5),.loading-circles[data-v-46b20d22] .circle-item:nth-child(5){-webkit-animation-delay:.372s;animation-delay:.372s}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(6),.loading-circles[data-v-46b20d22] .circle-item:nth-child(6){-webkit-animation-delay:.465s;animation-delay:.465s}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(7),.loading-circles[data-v-46b20d22] .circle-item:nth-child(7){-webkit-animation-delay:.558s;animation-delay:.558s}.loading-bubbles[data-v-46b20d22] .bubble-item:last-child,.loading-circles[data-v-46b20d22] .circle-item:last-child{-webkit-animation-delay:.651s;animation-delay:.651s}',\"\"])},function(t,e,n){\"use strict\";n.r(e);var i=n(1),r=n.n(i);for(var a in i)\"default\"!==a&&function(t){n.d(e,t,function(){return i[t]})}(a);e.default=r.a},function(t,e,n){(t.exports=n(2)(!1)).push([t.i,\".infinite-loading-container[data-v-46b21138]{clear:both;text-align:center}.infinite-loading-container[data-v-46b21138] [class^=loading-]{display:inline-block;margin:5px 0;width:28px;height:28px;font-size:28px;line-height:28px;border-radius:50%}.btn-try-infinite[data-v-46b21138]{margin-top:5px;padding:5px 10px;color:#999;font-size:14px;line-height:1;background:transparent;border:1px solid #ccc;border-radius:3px;outline:none;cursor:pointer}.btn-try-infinite[data-v-46b21138]:not(:active):hover{opacity:.8}\",\"\"])},function(t,e,n){\"use strict\";n.r(e);var i={throttleLimit:50,loopCheckTimeout:1e3,loopCheckMaxCalls:10},r=function(){var t=!1;try{var e=Object.defineProperty({},\"passive\",{get:function(){return t={passive:!0},!0}});window.addEventListener(\"testpassive\",e,e),window.remove(\"testpassive\",e,e)}catch(t){}return t}(),a={STATE_CHANGER:[\"emit `loaded` and `complete` event through component instance of `$refs` may cause error, so it will be deprecated soon, please use the `$state` argument instead (`$state` just the special `$event` variable):\",\"\\ntemplate:\",'<infinite-loading @infinite=\"infiniteHandler\"></infinite-loading>',\"\\nscript:\\n...\\ninfiniteHandler($state) {\\n ajax('https://www.example.com/api/news')\\n .then((res) => {\\n if (res.data.length) {\\n $state.loaded();\\n } else {\\n $state.complete();\\n }\\n });\\n}\\n...\",\"\",\"more details: https://github.com/PeachScript/vue-infinite-loading/issues/57#issuecomment-324370549\"].join(\"\\n\"),INFINITE_EVENT:\"`:on-infinite` property will be deprecated soon, please use `@infinite` event instead.\",IDENTIFIER:\"the `reset` event will be deprecated soon, please reset this component by change the `identifier` property.\"},o={INFINITE_LOOP:[\"executed the callback function more than \".concat(i.loopCheckMaxCalls,\" times for a short time, it looks like searched a wrong scroll wrapper that doest not has fixed height or maximum height, please check it. If you want to force to set a element as scroll wrapper ranther than automatic searching, you can do this:\"),'\\n\\x3c!-- add a special attribute for the real scroll wrapper --\\x3e\\n<div infinite-wrapper>\\n ...\\n \\x3c!-- set force-use-infinite-wrapper --\\x3e\\n <infinite-loading force-use-infinite-wrapper></infinite-loading>\\n</div>\\nor\\n<div class=\"infinite-wrapper\">\\n ...\\n \\x3c!-- set force-use-infinite-wrapper as css selector of the real scroll wrapper --\\x3e\\n <infinite-loading force-use-infinite-wrapper=\".infinite-wrapper\"></infinite-loading>\\n</div>\\n ',\"more details: https://github.com/PeachScript/vue-infinite-loading/issues/55#issuecomment-316934169\"].join(\"\\n\")},s={READY:0,LOADING:1,COMPLETE:2,ERROR:3},l={color:\"#666\",fontSize:\"14px\",padding:\"10px 0\"},d={mode:\"development\",props:{spinner:\"default\",distance:100,forceUseInfiniteWrapper:!1},system:i,slots:{noResults:\"No results :(\",noMore:\"No more data :)\",error:\"Opps, something went wrong :(\",errorBtnText:\"Retry\",spinner:\"\"},WARNINGS:a,ERRORS:o,STATUS:s},c=n(4),u=n.n(c),p={BUBBLES:{render:function(t){return t(\"span\",{attrs:{class:\"loading-bubbles\"}},Array.apply(Array,Array(8)).map(function(){return t(\"span\",{attrs:{class:\"bubble-item\"}})}))}},CIRCLES:{render:function(t){return t(\"span\",{attrs:{class:\"loading-circles\"}},Array.apply(Array,Array(8)).map(function(){return t(\"span\",{attrs:{class:\"circle-item\"}})}))}},DEFAULT:{render:function(t){return t(\"i\",{attrs:{class:\"loading-default\"}})}},SPIRAL:{render:function(t){return t(\"i\",{attrs:{class:\"loading-spiral\"}})}},WAVEDOTS:{render:function(t){return t(\"span\",{attrs:{class:\"loading-wave-dots\"}},Array.apply(Array,Array(5)).map(function(){return t(\"span\",{attrs:{class:\"wave-item\"}})}))}}};function f(t,e,n,i,r,a,o,s){var l,d=\"function\"==typeof t?t.options:t;if(e&&(d.render=e,d.staticRenderFns=n,d._compiled=!0),i&&(d.functional=!0),a&&(d._scopeId=\"data-v-\"+a),o?(l=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),r&&r.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(o)},d._ssrRegister=l):r&&(l=s?function(){r.call(this,this.$root.$options.shadowRoot)}:r),l)if(d.functional){d._injectStyles=l;var c=d.render;d.render=function(t,e){return l.call(e),c(t,e)}}else{var u=d.beforeCreate;d.beforeCreate=u?[].concat(u,l):[l]}return{exports:t,options:d}}var b=f({name:\"Spinner\",computed:{spinnerView:function(){return p[(this.$attrs.spinner||\"\").toUpperCase()]||this.spinnerInConfig},spinnerInConfig:function(){return d.slots.spinner&&\"string\"==typeof d.slots.spinner?{render:function(){return this._v(d.slots.spinner)}}:\"object\"===u()(d.slots.spinner)?d.slots.spinner:p[d.props.spinner.toUpperCase()]||p.DEFAULT}}},function(){var t=this.$createElement;return(this._self._c||t)(this.spinnerView,{tag:\"component\"})},[],!1,function(t){var e=n(5);e.__inject__&&e.__inject__(t)},\"46b20d22\",null);b.options.__file=\"Spinner.vue\";var h=b.exports;function m(t){\"production\"!==d.mode&&console.warn(\"[Vue-infinite-loading warn]: \".concat(t))}function g(t){console.error(\"[Vue-infinite-loading error]: \".concat(t))}var v={timers:[],caches:[],throttle:function(t){var e=this;-1===this.caches.indexOf(t)&&(this.caches.push(t),this.timers.push(setTimeout(function(){t(),e.caches.splice(e.caches.indexOf(t),1),e.timers.shift()},d.system.throttleLimit)))},reset:function(){this.timers.forEach(function(t){clearTimeout(t)}),this.timers.length=0,this.caches=[]}},y={isChecked:!1,timer:null,times:0,track:function(){var t=this;this.times+=1,clearTimeout(this.timer),this.timer=setTimeout(function(){t.isChecked=!0},d.system.loopCheckTimeout),this.times>d.system.loopCheckMaxCalls&&(g(o.INFINITE_LOOP),this.isChecked=!0)}},w={key:\"_infiniteScrollHeight\",getScrollElm:function(t){return t===window?document.documentElement:t},save:function(t){var e=this.getScrollElm(t);e[this.key]=e.scrollHeight},restore:function(t){var e=this.getScrollElm(t);\"number\"==typeof e[this.key]&&(e.scrollTop=e.scrollHeight-e[this.key]+e.scrollTop),this.remove(e)},remove:function(t){void 0!==t[this.key]&&delete t[this.key]}};function x(t){return t.replace(/[A-Z]/g,function(t){return\"-\".concat(t.toLowerCase())})}function k(t){return t.offsetWidth+t.offsetHeight>0}var S=f({name:\"InfiniteLoading\",data:function(){return{scrollParent:null,scrollHandler:null,isFirstLoad:!0,status:s.READY,slots:d.slots}},components:{Spinner:h},computed:{isShowSpinner:function(){return this.status===s.LOADING},isShowError:function(){return this.status===s.ERROR},isShowNoResults:function(){return this.status===s.COMPLETE&&this.isFirstLoad},isShowNoMore:function(){return this.status===s.COMPLETE&&!this.isFirstLoad},slotStyles:function(){var t=this,e={};return Object.keys(d.slots).forEach(function(n){var i=x(n);(!t.$slots[i]&&!d.slots[n].render||t.$slots[i]&&!t.$slots[i][0].tag)&&(e[n]=l)}),e}},props:{distance:{type:Number,default:d.props.distance},spinner:String,direction:{type:String,default:\"bottom\"},forceUseInfiniteWrapper:{type:[Boolean,String],default:d.props.forceUseInfiniteWrapper},identifier:{default:+new Date},onInfinite:Function},watch:{identifier:function(){this.stateChanger.reset()}},mounted:function(){var t=this;this.$watch(\"forceUseInfiniteWrapper\",function(){t.scrollParent=t.getScrollParent()},{immediate:!0}),this.scrollHandler=function(e){t.status===s.READY&&(e&&e.constructor===Event&&k(t.$el)?v.throttle(t.attemptLoad):t.attemptLoad())},setTimeout(function(){t.scrollHandler(),t.scrollParent.addEventListener(\"scroll\",t.scrollHandler,r)},1),this.$on(\"$InfiniteLoading:loaded\",function(e){t.isFirstLoad=!1,\"top\"===t.direction&&t.$nextTick(function(){w.restore(t.scrollParent)}),t.status===s.LOADING&&t.$nextTick(t.attemptLoad.bind(null,!0)),e&&e.target===t||m(a.STATE_CHANGER)}),this.$on(\"$InfiniteLoading:complete\",function(e){t.status=s.COMPLETE,t.$nextTick(function(){t.$forceUpdate()}),t.scrollParent.removeEventListener(\"scroll\",t.scrollHandler,r),e&&e.target===t||m(a.STATE_CHANGER)}),this.$on(\"$InfiniteLoading:reset\",function(e){t.status=s.READY,t.isFirstLoad=!0,w.remove(t.scrollParent),t.scrollParent.addEventListener(\"scroll\",t.scrollHandler,r),setTimeout(function(){v.reset(),t.scrollHandler()},1),e&&e.target===t||m(a.IDENTIFIER)}),this.stateChanger={loaded:function(){t.$emit(\"$InfiniteLoading:loaded\",{target:t})},complete:function(){t.$emit(\"$InfiniteLoading:complete\",{target:t})},reset:function(){t.$emit(\"$InfiniteLoading:reset\",{target:t})},error:function(){t.status=s.ERROR,v.reset()}},this.onInfinite&&m(a.INFINITE_EVENT)},deactivated:function(){this.status===s.LOADING&&(this.status=s.READY),this.scrollParent.removeEventListener(\"scroll\",this.scrollHandler,r)},activated:function(){this.scrollParent.addEventListener(\"scroll\",this.scrollHandler,r)},methods:{attemptLoad:function(t){var e=this;this.status!==s.COMPLETE&&k(this.$el)&&this.getCurrentDistance()<=this.distance?(this.status=s.LOADING,\"top\"===this.direction&&this.$nextTick(function(){w.save(e.scrollParent)}),\"function\"==typeof this.onInfinite?this.onInfinite.call(null,this.stateChanger):this.$emit(\"infinite\",this.stateChanger),!t||this.forceUseInfiniteWrapper||y.isChecked||y.track()):this.status===s.LOADING&&(this.status=s.READY)},getCurrentDistance:function(){var t;\"top\"===this.direction?t=\"number\"==typeof this.scrollParent.scrollTop?this.scrollParent.scrollTop:this.scrollParent.pageYOffset:t=this.$el.getBoundingClientRect().top-(this.scrollParent===window?window.innerHeight:this.scrollParent.getBoundingClientRect().bottom);return t},getScrollParent:function(){var t,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.$el;return\"string\"==typeof this.forceUseInfiniteWrapper&&(t=e.querySelector(this.forceUseInfiniteWrapper)),t||(\"BODY\"===e.tagName?t=window:!this.forceUseInfiniteWrapper&&[\"scroll\",\"auto\"].indexOf(getComputedStyle(e).overflowY)>-1?t=e:(e.hasAttribute(\"infinite-wrapper\")||e.hasAttribute(\"data-infinite-wrapper\"))&&(t=e)),t||this.getScrollParent(e.parentNode)}},destroyed:function(){!this.status!==s.COMPLETE&&(v.reset(),w.remove(this.scrollParent),this.scrollParent.removeEventListener(\"scroll\",this.scrollHandler,r))}},function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{staticClass:\"infinite-loading-container\"},[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.isShowSpinner,expression:\"isShowSpinner\"}],staticClass:\"infinite-status-prompt\",style:t.slotStyles.spinner},[t._t(\"spinner\",[n(\"spinner\",{attrs:{spinner:t.spinner}})])],2),t._v(\" \"),n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.isShowNoResults,expression:\"isShowNoResults\"}],staticClass:\"infinite-status-prompt\",style:t.slotStyles.noResults},[t._t(\"no-results\",[t.slots.noResults.render?n(t.slots.noResults,{tag:\"component\"}):[t._v(t._s(t.slots.noResults))]])],2),t._v(\" \"),n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.isShowNoMore,expression:\"isShowNoMore\"}],staticClass:\"infinite-status-prompt\",style:t.slotStyles.noMore},[t._t(\"no-more\",[t.slots.noMore.render?n(t.slots.noMore,{tag:\"component\"}):[t._v(t._s(t.slots.noMore))]])],2),t._v(\" \"),n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.isShowError,expression:\"isShowError\"}],staticClass:\"infinite-status-prompt\",style:t.slotStyles.error},[t._t(\"error\",[t.slots.error.render?n(t.slots.error,{tag:\"component\",attrs:{trigger:t.attemptLoad}}):[t._v(\"\\n \"+t._s(t.slots.error)+\"\\n \"),n(\"br\"),t._v(\" \"),n(\"button\",{staticClass:\"btn-try-infinite\",domProps:{textContent:t._s(t.slots.errorBtnText)},on:{click:t.attemptLoad}})]],{trigger:t.attemptLoad})],2)])},[],!1,function(t){var e=n(7);e.__inject__&&e.__inject__(t)},\"46b21138\",null);S.options.__file=\"InfiniteLoading.vue\";var E=S.exports;function _(t){d.mode=t.config.productionTip?\"development\":\"production\"}Object.defineProperty(E,\"install\",{configurable:!1,enumerable:!1,value:function(t,e){Object.assign(d.props,e&&e.props),Object.assign(d.slots,e&&e.slots),Object.assign(d.system,e&&e.system),t.component(\"infinite-loading\",E),_(t)}}),\"undefined\"!=typeof window&&window.Vue&&(window.Vue.component(\"infinite-loading\",E),_(window.Vue));e.default=E}])});","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Content',{attrs:{\"app-name\":\"settings\",\"navigation-class\":{ 'icon-loading': _vm.loadingAddGroup }}},[_c('AppNavigation',[_c('AppNavigationNew',{attrs:{\"button-id\":\"new-user-button\",\"text\":_vm.t('settings','New user'),\"button-class\":\"icon-add\"},on:{\"click\":_vm.toggleNewUserMenu}}),_vm._v(\" \"),_c('ul',{attrs:{\"id\":\"usergrouplist\"}},_vm._l((_vm.menu),function(item){return _c('AppNavigationItem',{key:item.key,attrs:{\"item\":item}})}),1),_vm._v(\" \"),_c('AppNavigationSettings',[_c('div',[_c('p',[_vm._v(_vm._s(_vm.t('settings', 'Default quota:')))]),_vm._v(\" \"),_c('Multiselect',{attrs:{\"value\":_vm.defaultQuota,\"options\":_vm.quotaOptions,\"tag-placeholder\":\"create\",\"placeholder\":_vm.t('settings', 'Select default quota'),\"label\":\"label\",\"track-by\":\"id\",\"allowEmpty\":false,\"taggable\":true},on:{\"tag\":_vm.validateQuota,\"input\":_vm.setDefaultQuota}})],1),_vm._v(\" \"),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.showLanguages),expression:\"showLanguages\"}],staticClass:\"checkbox\",attrs:{\"type\":\"checkbox\",\"id\":\"showLanguages\"},domProps:{\"checked\":Array.isArray(_vm.showLanguages)?_vm._i(_vm.showLanguages,null)>-1:(_vm.showLanguages)},on:{\"change\":function($event){var $$a=_vm.showLanguages,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.showLanguages=$$a.concat([$$v]))}else{$$i>-1&&(_vm.showLanguages=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.showLanguages=$$c}}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"showLanguages\"}},[_vm._v(_vm._s(_vm.t('settings', 'Show Languages')))])]),_vm._v(\" \"),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.showLastLogin),expression:\"showLastLogin\"}],staticClass:\"checkbox\",attrs:{\"type\":\"checkbox\",\"id\":\"showLastLogin\"},domProps:{\"checked\":Array.isArray(_vm.showLastLogin)?_vm._i(_vm.showLastLogin,null)>-1:(_vm.showLastLogin)},on:{\"change\":function($event){var $$a=_vm.showLastLogin,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.showLastLogin=$$a.concat([$$v]))}else{$$i>-1&&(_vm.showLastLogin=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.showLastLogin=$$c}}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"showLastLogin\"}},[_vm._v(_vm._s(_vm.t('settings', 'Show last login')))])]),_vm._v(\" \"),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.showUserBackend),expression:\"showUserBackend\"}],staticClass:\"checkbox\",attrs:{\"type\":\"checkbox\",\"id\":\"showUserBackend\"},domProps:{\"checked\":Array.isArray(_vm.showUserBackend)?_vm._i(_vm.showUserBackend,null)>-1:(_vm.showUserBackend)},on:{\"change\":function($event){var $$a=_vm.showUserBackend,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.showUserBackend=$$a.concat([$$v]))}else{$$i>-1&&(_vm.showUserBackend=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.showUserBackend=$$c}}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"showUserBackend\"}},[_vm._v(_vm._s(_vm.t('settings', 'Show user backend')))])]),_vm._v(\" \"),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.showStoragePath),expression:\"showStoragePath\"}],staticClass:\"checkbox\",attrs:{\"type\":\"checkbox\",\"id\":\"showStoragePath\"},domProps:{\"checked\":Array.isArray(_vm.showStoragePath)?_vm._i(_vm.showStoragePath,null)>-1:(_vm.showStoragePath)},on:{\"change\":function($event){var $$a=_vm.showStoragePath,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.showStoragePath=$$a.concat([$$v]))}else{$$i>-1&&(_vm.showStoragePath=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.showStoragePath=$$c}}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"showStoragePath\"}},[_vm._v(_vm._s(_vm.t('settings', 'Show storage path')))])])])],1),_vm._v(\" \"),_c('AppContent',[_c('UserList',{attrs:{\"users\":_vm.users,\"showConfig\":_vm.showConfig,\"selectedGroup\":_vm.selectedGroup,\"externalActions\":_vm.externalActions},scopedSlots:_vm._u([{key:\"content\",fn:function(){return undefined},proxy:true}])})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<!-- Obfuscated user: Logged in user does not have permissions to see all of the data -->\n\t<div class=\"row\" v-if=\"Object.keys(user).length ===1\" :data-id=\"user.id\">\n\t\t<div class=\"avatar\" :class=\"{'icon-loading-small': loading.delete || loading.disable || loading.wipe}\">\n\t\t\t<img alt=\"\" width=\"32\" height=\"32\" :src=\"generateAvatar(user.id, 32)\"\n\t\t\t\t :srcset=\"generateAvatar(user.id, 64)+' 2x, '+generateAvatar(user.id, 128)+' 4x'\"\n\t\t\t\t v-if=\"!loading.delete && !loading.disable && !loading.wipe\">\n\t\t</div>\n\t\t<div class=\"name\">{{user.id}}</div>\n\t\t<div class=\"obfuscated\">{{t('settings','You do not have permissions to see the details of this user')}}</div>\n\t</div>\n\n\t<!-- User full data -->\n\t<div class=\"row\" v-else :class=\"{'disabled': loading.delete || loading.disable}\" :data-id=\"user.id\">\n\t\t<div class=\"avatar\" :class=\"{'icon-loading-small': loading.delete || loading.disable || loading.wipe}\">\n\t\t\t<img alt=\"\" width=\"32\" height=\"32\" :src=\"generateAvatar(user.id, 32)\"\n\t\t\t\t :srcset=\"generateAvatar(user.id, 64)+' 2x, '+generateAvatar(user.id, 128)+' 4x'\"\n\t\t\t\t v-if=\"!loading.delete && !loading.disable && !loading.wipe\">\n\t\t</div>\n\t\t<!-- dirty hack to ellipsis on two lines -->\n\t\t<div class=\"name\">{{user.id}}</div>\n\t\t<form class=\"displayName\" :class=\"{'icon-loading-small': loading.displayName}\" v-on:submit.prevent=\"updateDisplayName\">\n\t\t\t<template v-if=\"user.backendCapabilities.setDisplayName\">\n\t\t\t\t<input v-if=\"user.backendCapabilities.setDisplayName\"\n\t\t\t\t\t\t:id=\"'displayName'+user.id+rand\" type=\"text\"\n\t\t\t\t\t\t:disabled=\"loading.displayName||loading.all\"\n\t\t\t\t\t\t:value=\"user.displayname\" ref=\"displayName\"\n\t\t\t\t\t\tautocomplete=\"new-password\" autocorrect=\"off\" autocapitalize=\"off\" spellcheck=\"false\" />\n\t\t\t\t<input v-if=\"user.backendCapabilities.setDisplayName\" type=\"submit\" class=\"icon-confirm\" value=\"\" />\n\t\t\t</template>\n\t\t\t<div v-else class=\"name\" v-tooltip.auto=\"t('settings', 'The backend does not support changing the display name')\">{{user.displayname}}</div>\n\t\t</form>\n\t\t<form class=\"password\" v-if=\"settings.canChangePassword && user.backendCapabilities.setPassword\" :class=\"{'icon-loading-small': loading.password}\"\n\t\t\t v-on:submit.prevent=\"updatePassword\">\n\t\t\t<input :id=\"'password'+user.id+rand\" type=\"password\" required\n\t\t\t\t\t:disabled=\"loading.password||loading.all\" :minlength=\"minPasswordLength\"\n\t\t\t\t\tvalue=\"\" :placeholder=\"t('settings', 'New password')\" ref=\"password\"\n\t\t\t\t\tautocomplete=\"new-password\" autocorrect=\"off\" autocapitalize=\"off\" spellcheck=\"false\" />\n\t\t\t<input type=\"submit\" class=\"icon-confirm\" value=\"\" />\n\t\t</form>\n\t\t<div v-else></div>\n\t\t<form class=\"mailAddress\" :class=\"{'icon-loading-small': loading.mailAddress}\" v-on:submit.prevent=\"updateEmail\">\n\t\t\t<input :id=\"'mailAddress'+user.id+rand\" type=\"email\"\n\t\t\t\t\t:disabled=\"loading.mailAddress||loading.all\"\n\t\t\t\t\t:value=\"user.email\" ref=\"mailAddress\"\n\t\t\t\t\tautocomplete=\"new-password\" autocorrect=\"off\" autocapitalize=\"off\" spellcheck=\"false\" />\n\t\t\t<input type=\"submit\" class=\"icon-confirm\" value=\"\" />\n\t\t</form>\n\t\t<div class=\"groups\" :class=\"{'icon-loading-small': loading.groups}\">\n\t\t\t<multiselect :value=\"userGroups\" :options=\"availableGroups\" :disabled=\"loading.groups||loading.all\"\n\t\t\t\t\t\t tag-placeholder=\"create\" :placeholder=\"t('settings', 'Add user in group')\"\n\t\t\t\t\t\t label=\"name\" track-by=\"id\" class=\"multiselect-vue\" :limit=\"2\"\n\t\t\t\t\t\t :multiple=\"true\" :taggable=\"settings.isAdmin\" :closeOnSelect=\"false\"\n\t\t\t\t\t\t :tag-width=\"60\"\n\t\t\t\t\t\t @tag=\"createGroup\" @select=\"addUserGroup\" @remove=\"removeUserGroup\">\n\t\t\t\t<span slot=\"limit\" class=\"multiselect__limit\" v-tooltip.auto=\"formatGroupsTitle(userGroups)\">+{{userGroups.length-2}}</span>\n\t\t\t\t<span slot=\"noResult\">{{t('settings', 'No results')}}</span>\n\t\t\t</multiselect>\n\t\t</div>\n\t\t<div class=\"subadmins\" v-if=\"subAdminsGroups.length>0 && settings.isAdmin\" :class=\"{'icon-loading-small': loading.subadmins}\">\n\t\t\t<multiselect :value=\"userSubAdminsGroups\" :options=\"subAdminsGroups\" :disabled=\"loading.subadmins||loading.all\"\n\t\t\t\t\t\t :placeholder=\"t('settings', 'Set user as admin for')\"\n\t\t\t\t\t\t label=\"name\" track-by=\"id\" class=\"multiselect-vue\" :limit=\"2\"\n\t\t\t\t\t\t :multiple=\"true\" :closeOnSelect=\"false\" :tag-width=\"60\"\n\t\t\t\t\t\t @select=\"addUserSubAdmin\" @remove=\"removeUserSubAdmin\">\n\t\t\t\t<span slot=\"limit\" class=\"multiselect__limit\" v-tooltip.auto=\"formatGroupsTitle(userSubAdminsGroups)\">+{{userSubAdminsGroups.length-2}}</span>\n\t\t\t\t<span slot=\"noResult\">{{t('settings', 'No results')}}</span>\n\t\t\t</multiselect>\n\t\t</div>\n\t\t<div class=\"quota\" :class=\"{'icon-loading-small': loading.quota}\" v-tooltip.auto=\"usedSpace\">\n\t\t\t<multiselect :value=\"userQuota\" :options=\"quotaOptions\" :disabled=\"loading.quota||loading.all\"\n\t\t\t\t\t\t tag-placeholder=\"create\" :placeholder=\"t('settings', 'Select user quota')\"\n\t\t\t\t\t\t label=\"label\" track-by=\"id\" class=\"multiselect-vue\"\n\t\t\t\t\t\t :allowEmpty=\"false\" :taggable=\"true\"\n\t\t\t\t\t\t @tag=\"validateQuota\" @input=\"setUserQuota\">\n\t\t\t</multiselect>\n\t\t\t<progress class=\"quota-user-progress\" :class=\"{'warn':usedQuota>80}\" :value=\"usedQuota\" max=\"100\"></progress>\n\t\t</div>\n\t\t<div class=\"languages\" :class=\"{'icon-loading-small': loading.languages}\"\n\t\t\t v-if=\"showConfig.showLanguages\">\n\t\t\t<multiselect :value=\"userLanguage\" :options=\"languages\" :disabled=\"loading.languages||loading.all\"\n\t\t\t\t\t\t :placeholder=\"t('settings', 'No language set')\"\n\t\t\t\t\t\t label=\"name\" track-by=\"code\" class=\"multiselect-vue\"\n\t\t\t\t\t\t :allowEmpty=\"false\" group-values=\"languages\" group-label=\"label\"\n\t\t\t\t\t\t @input=\"setUserLanguage\">\n\t\t\t</multiselect>\n\t\t</div>\n\t\t<div class=\"storageLocation\" v-if=\"showConfig.showStoragePath\">{{user.storageLocation}}</div>\n\t\t<div class=\"userBackend\" v-if=\"showConfig.showUserBackend\">{{user.backend}}</div>\n\t\t<div class=\"lastLogin\" v-if=\"showConfig.showLastLogin\" v-tooltip.auto=\"user.lastLogin>0 ? OC.Util.formatDate(user.lastLogin) : ''\">\n\t\t\t{{user.lastLogin>0 ? OC.Util.relativeModifiedDate(user.lastLogin) : t('settings','Never')}}\n\t\t</div>\n\t\t<div class=\"userActions\">\n\t\t\t<div class=\"toggleUserActions\" v-if=\"OC.currentUser !== user.id && user.id !== 'admin' && !loading.all\">\n\t\t\t\t<div class=\"icon-more\" v-click-outside=\"hideMenu\" @click=\"toggleMenu\"></div>\n\t\t\t\t<div class=\"popovermenu\" :class=\"{ 'open': openedMenu }\">\n\t\t\t\t\t<popover-menu :menu=\"userActions\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"feedback\" :style=\"{opacity: feedbackMessage !== '' ? 1 : 0}\">\n\t\t\t\t<div class=\"icon-checkmark\"></div>\n\t\t\t\t{{feedbackMessage}}\n\t\t\t</div>\n\t\t</div>\n\t\t</div>\n</template>\n\n<script>\nimport ClickOutside from 'vue-click-outside';\nimport Vue from 'vue'\nimport VTooltip from 'v-tooltip'\nimport { PopoverMenu, Multiselect } from 'nextcloud-vue'\n\nVue.use(VTooltip)\n\nexport default {\n\tname: 'userRow',\n\tprops: ['user', 'settings', 'groups', 'subAdminsGroups', 'quotaOptions', 'showConfig', 'languages', 'externalActions'],\n\tcomponents: {\n\t\tPopoverMenu,\n\t\tMultiselect\n\t},\n\tdirectives: {\n\t\tClickOutside\n\t},\n\tmounted() {\n\t\t// required if popup needs to stay opened after menu click\n\t\t// since we only have disable/delete actions, let's close it directly\n\t\t// this.popupItem = this.$el;\n\t},\n\tdata() {\n\t\treturn {\n\t\t\trand: parseInt(Math.random() * 1000),\n\t\t\topenedMenu: false,\n\t\t\tfeedbackMessage: '',\n\t\t\tloading: {\n\t\t\t\tall: false,\n\t\t\t\tdisplayName: false,\n\t\t\t\tpassword: false,\n\t\t\t\tmailAddress: false,\n\t\t\t\tgroups: false,\n\t\t\t\tsubadmins: false,\n\t\t\t\tquota: false,\n\t\t\t\tdelete: false,\n\t\t\t\tdisable: false,\n\t\t\t\tlanguages: false,\n\t\t\t\twipe: false,\n\t\t\t}\n\t\t}\n\t},\n\tcomputed: {\n\t\t/* USER POPOVERMENU ACTIONS */\n\t\tuserActions() {\n\t\t\tlet actions = [\n\t\t\t\t{\n\t\t\t\t\ticon: 'icon-delete',\n\t\t\t\t\ttext: t('settings', 'Delete user'),\n\t\t\t\t\taction: this.deleteUser,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ticon: 'icon-delete',\n\t\t\t\t\ttext: t('settings', 'Wipe all devices'),\n\t\t\t\t\taction: this.wipeUserDevices,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ticon: this.user.enabled ? 'icon-close' : 'icon-add',\n\t\t\t\t\ttext: this.user.enabled ? t('settings', 'Disable user') : t('settings', 'Enable user'),\n\t\t\t\t\taction: this.enableDisableUser,\n\t\t\t\t},\n\t\t\t];\n\t\t\tif (this.user.email !== null && this.user.email !== '') {\n\t\t\t\tactions.push({\n\t\t\t\t\ticon: 'icon-mail',\n\t\t\t\t\ttext: t('settings','Resend welcome email'),\n\t\t\t\t\taction: this.sendWelcomeMail\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn actions.concat(this.externalActions);\n\t\t},\n\n\t\t/* GROUPS MANAGEMENT */\n\t\tuserGroups() {\n\t\t\tlet userGroups = this.groups.filter(group => this.user.groups.includes(group.id));\n\t\t\treturn userGroups;\n\t\t},\n\t\tuserSubAdminsGroups() {\n\t\t\tlet userSubAdminsGroups = this.subAdminsGroups.filter(group => this.user.subadmin.includes(group.id));\n\t\t\treturn userSubAdminsGroups;\n\t\t},\n\t\tavailableGroups() {\n\t\t\treturn this.groups.map((group) => {\n\t\t\t\t// clone object because we don't want\n\t\t\t\t// to edit the original groups\n\t\t\t\tlet groupClone = Object.assign({}, group);\n\n\t\t\t\t// two settings here:\n\t\t\t\t// 1. user NOT in group but no permission to add\n\t\t\t\t// 2. user is in group but no permission to remove\n\t\t\t\tgroupClone.$isDisabled =\n\t\t\t\t\t(group.canAdd === false &&\n\t\t\t\t\t\t!this.user.groups.includes(group.id)) ||\n\t\t\t\t\t(group.canRemove === false &&\n\t\t\t\t\t\tthis.user.groups.includes(group.id));\n\t\t\t\treturn groupClone;\n\t\t\t});\n\t\t},\n\n\t\t/* QUOTA MANAGEMENT */\n\t\tusedSpace() {\n\t\t\tif (this.user.quota.used) {\n\t\t\t\treturn t('settings', '{size} used', {size: OC.Util.humanFileSize(this.user.quota.used)});\n\t\t\t}\n\t\t\treturn t('settings', '{size} used', {size: OC.Util.humanFileSize(0)});\n\t\t},\n\t\tusedQuota() {\n\t\t\tlet quota = this.user.quota.quota;\n\t\t\tif (quota > 0) {\n\t\t\t\tquota = Math.min(100, Math.round(this.user.quota.used / quota * 100));\n\t\t\t} else {\n\t\t\t\tvar usedInGB = this.user.quota.used / (10 * Math.pow(2, 30));\n\t\t\t\t//asymptotic curve approaching 50% at 10GB to visualize used stace with infinite quota\n\t\t\t\tquota = 95 * (1 - (1 / (usedInGB + 1)));\n\t\t\t}\n\t\t\treturn isNaN(quota) ? 0 : quota;\n\t\t},\n\t\t// Mapping saved values to objects\n\t\tuserQuota() {\n\t\t\tif (this.user.quota.quota >= 0) {\n\t\t\t\t// if value is valid, let's map the quotaOptions or return custom quota\n\t\t\t\tlet humanQuota = OC.Util.humanFileSize(this.user.quota.quota);\n\t\t\t\tlet userQuota = this.quotaOptions.find(quota => quota.id === humanQuota);\n\t\t\t\treturn userQuota ? userQuota : {id:humanQuota, label:humanQuota};\n\t\t\t} else if (this.user.quota.quota === 'default') {\n\t\t\t\t// default quota is replaced by the proper value on load\n\t\t\t\treturn this.quotaOptions[0];\n\t\t\t}\n\t\t\treturn this.quotaOptions[1]; // unlimited\n\t\t},\n\n\t\t/* PASSWORD POLICY? */\n\t\tminPasswordLength() {\n\t\t\treturn this.$store.getters.getPasswordPolicyMinLength;\n\t\t},\n\n\t\t/* LANGUAGE */\n\t\tuserLanguage() {\n\t\t\tlet availableLanguages = this.languages[0].languages.concat(this.languages[1].languages);\n\t\t\tlet userLang = availableLanguages.find(lang => lang.code === this.user.language);\n\t\t\tif (typeof userLang !== 'object' && this.user.language !== '') {\n\t\t\t\treturn {\n\t\t\t\t\tcode: this.user.language,\n\t\t\t\t\tname: this.user.language\n\t\t\t\t}\n\t\t\t} else if(this.user.language === '') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn userLang;\n\t\t}\n\t},\n\tmethods: {\n\t\t/* MENU HANDLING */\n\t\ttoggleMenu() {\n\t\t\tthis.openedMenu = !this.openedMenu;\n\t\t},\n\t\thideMenu() {\n\t\t\tthis.openedMenu = false;\n\t\t},\n\n\t\t/**\n\t\t * Generate avatar url\n\t\t * \n\t\t * @param {string} user The user name\n\t\t * @param {int} size Size integer, default 32\n\t\t * @returns {string}\n\t\t */\n\t\tgenerateAvatar(user, size=32) {\n\t\t\treturn OC.generateUrl(\n\t\t\t\t'/avatar/{user}/{size}?v={version}',\n\t\t\t\t{\n\t\t\t\t\tuser: user,\n\t\t\t\t\tsize: size,\n\t\t\t\t\tversion: oc_userconfig.avatar.version\n\t\t\t\t}\n\t\t\t);\n\t\t},\n\n\t\t/**\n\t\t * Format array of groups objects to a string for the popup\n\t\t * \n\t\t * @param {array} groups The groups\n\t\t * @returns {string}\n\t\t */\n\t\tformatGroupsTitle(groups) {\n\t\t\tlet names = groups.map(group => group.name);\n\t\t\treturn names.slice(2,).join(', ');\n\t\t},\n\n\t\twipeUserDevices() {\n\t\t\tthis.loading.wipe = true;\n\t\t\tthis.loading.all = true;\n\t\t\tlet userid = this.user.id;\n\t\t\treturn this.$store.dispatch('wipeUserDevices', userid)\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.loading.wipe = false\n\t\t\t\t\tthis.loading.all = false\n\t\t\t\t});\n\t\t},\n\n\t\tdeleteUser() {\n\t\t\tthis.loading.delete = true;\n\t\t\tthis.loading.all = true;\n\t\t\tlet userid = this.user.id;\n\t\t\treturn this.$store.dispatch('deleteUser', userid)\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.loading.delete = false\n\t\t\t\t\tthis.loading.all = false\n\t\t\t\t});\n\t\t},\n\n\t\tenableDisableUser() {\n\t\t\tthis.loading.delete = true;\n\t\t\tthis.loading.all = true;\n\t\t\tlet userid = this.user.id;\n\t\t\tlet enabled = !this.user.enabled;\n\t\t\treturn this.$store.dispatch('enableDisableUser', {userid, enabled})\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.loading.delete = false\n\t\t\t\t\tthis.loading.all = false\n\t\t\t\t});\n\t\t},\n\n\t\t/**\n\t\t * Set user displayName\n\t\t * \n\t\t * @param {string} displayName The display name\n\t\t * @returns {Promise}\n\t\t */\n\t\tupdateDisplayName() {\n\t\t\tlet displayName = this.$refs.displayName.value;\n\t\t\tthis.loading.displayName = true;\n\t\t\tthis.$store.dispatch('setUserData', {\n\t\t\t\tuserid: this.user.id, \n\t\t\t\tkey: 'displayname',\n\t\t\t\tvalue: displayName\n\t\t\t}).then(() => {\n\t\t\t\tthis.loading.displayName = false;\n\t\t\t\tthis.$refs.displayName.value = displayName;\n\t\t\t});\n\t\t},\n\n\t\t/**\n\t\t * Set user password\n\t\t * \n\t\t * @param {string} password The email adress\n\t\t * @returns {Promise}\n\t\t */\n\t\tupdatePassword() {\n\t\t\tlet password = this.$refs.password.value;\n\t\t\tthis.loading.password = true;\n\t\t\tthis.$store.dispatch('setUserData', {\n\t\t\t\tuserid: this.user.id,\n\t\t\t\tkey: 'password',\n\t\t\t\tvalue: password\n\t\t\t}).then(() => {\n\t\t\t\tthis.loading.password = false;\n\t\t\t\tthis.$refs.password.value = ''; // empty & show placeholder \n\t\t\t});\n\t\t},\n\n\t\t/**\n\t\t * Set user mailAddress\n\t\t * \n\t\t * @param {string} mailAddress The email adress\n\t\t * @returns {Promise}\n\t\t */\n\t\tupdateEmail() {\n\t\t\tlet mailAddress = this.$refs.mailAddress.value;\n\t\t\tthis.loading.mailAddress = true;\n\t\t\tthis.$store.dispatch('setUserData', {\n\t\t\t\tuserid: this.user.id,\n\t\t\t\tkey: 'email',\n\t\t\t\tvalue: mailAddress\n\t\t\t}).then(() => {\n\t\t\t\tthis.loading.mailAddress = false;\n\t\t\t\tthis.$refs.mailAddress.value = mailAddress;\n\t\t\t});\n\t\t},\n\n\t\t/**\n\t\t * Create a new group and add user to it\n\t\t * \n\t\t * @param {string} groups Group id\n\t\t * @returns {Promise}\n\t\t */\n\t\tcreateGroup(gid) {\n\t\t\tthis.loading = {groups:true, subadmins:true}\n\t\t\tthis.$store.dispatch('addGroup', gid)\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.loading = {groups:false, subadmins:false};\n\t\t\t\t\tlet userid = this.user.id;\n\t\t\t\t\tthis.$store.dispatch('addUserGroup', {userid, gid});\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\tthis.loading = {groups:false, subadmins:false};\n\t\t\t\t});\n\t\t\treturn this.$store.getters.getGroups[this.groups.length];\n\t\t},\n\n\t\t/**\n\t\t * Add user to group\n\t\t * \n\t\t * @param {object} group Group object\n\t\t * @returns {Promise}\n\t\t */\n\t\taddUserGroup(group) {\n\t\t\tif (group.canAdd === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.loading.groups = true;\n\t\t\tlet userid = this.user.id;\n\t\t\tlet gid = group.id;\n\t\t\treturn this.$store.dispatch('addUserGroup', {userid, gid})\n\t\t\t\t.then(() => this.loading.groups = false);\n\t\t},\n\n\t\t/**\n\t\t * Remove user from group\n\t\t * \n\t\t * @param {object} group Group object\n\t\t * @returns {Promise}\n\t\t */\n\t\tremoveUserGroup(group) {\n\t\t\tif (group.canRemove === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.loading.groups = true;\n\t\t\tlet userid = this.user.id;\n\t\t\tlet gid = group.id;\n\t\t\treturn this.$store.dispatch('removeUserGroup', {userid, gid})\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.loading.groups = false\n\t\t\t\t\t// remove user from current list if current list is the removed group\n\t\t\t\t\tif (this.$route.params.selectedGroup === gid) {\n\t\t\t\t\t\tthis.$store.commit('deleteUser', userid);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\tthis.loading.groups = false\n\t\t\t\t});\n\t\t},\n\n\t\t/**\n\t\t * Add user to group\n\t\t * \n\t\t * @param {object} group Group object\n\t\t * @returns {Promise}\n\t\t */\n\t\taddUserSubAdmin(group) {\n\t\t\tthis.loading.subadmins = true;\n\t\t\tlet userid = this.user.id;\n\t\t\tlet gid = group.id;\n\t\t\treturn this.$store.dispatch('addUserSubAdmin', {userid, gid})\n\t\t\t\t.then(() => this.loading.subadmins = false);\n\t\t},\n\n\t\t/**\n\t\t * Remove user from group\n\t\t * \n\t\t * @param {object} group Group object\n\t\t * @returns {Promise}\n\t\t */\n\t\tremoveUserSubAdmin(group) {\n\t\t\tthis.loading.subadmins = true;\n\t\t\tlet userid = this.user.id;\n\t\t\tlet gid = group.id;\n\t\t\treturn this.$store.dispatch('removeUserSubAdmin', {userid, gid})\n\t\t\t\t.then(() => this.loading.subadmins = false);\n\t\t},\n\n\t\t/**\n\t\t * Dispatch quota set request\n\t\t * \n\t\t * @param {string|Object} quota Quota in readable format '5 GB' or Object {id: '5 GB', label: '5GB'}\n\t\t * @returns {string}\n\t\t */\n\t\tsetUserQuota(quota = 'none') {\n\t\t\tthis.loading.quota = true;\n\t\t\t// ensure we only send the preset id\n\t\t\tquota = quota.id ? quota.id : quota;\n\t\t\tthis.$store.dispatch('setUserData', {\n\t\t\t\tuserid: this.user.id, \n\t\t\t\tkey: 'quota',\n\t\t\t\tvalue: quota\n\t\t\t}).then(() => this.loading.quota = false);\n\t\t\treturn quota;\n\t\t},\n\n\t\t/**\n\t\t * Validate quota string to make sure it's a valid human file size\n\t\t * \n\t\t * @param {string} quota Quota in readable format '5 GB'\n\t\t * @returns {Promise|boolean}\n\t\t */\n\t\tvalidateQuota(quota) {\n\t\t\t// only used for new presets sent through @Tag\n\t\t\tlet validQuota = OC.Util.computerFileSize(quota);\n\t\t\tif (validQuota !== null && validQuota >= 0) {\n\t\t\t\t// unify format output\n\t\t\t\treturn this.setUserQuota(OC.Util.humanFileSize(OC.Util.computerFileSize(quota)));\n\t\t\t}\n\t\t\t// if no valid do not change\n\t\t\treturn false;\n\t\t},\n\n\t\t/**\n\t\t * Dispatch language set request\n\t\t * \n\t\t * @param {Object} lang language object {code:'en', name:'English'}\n\t\t * @returns {Object}\n\t\t */\n\t\tsetUserLanguage(lang) {\n\t\t\tthis.loading.languages = true;\n\t\t\t// ensure we only send the preset id\n\t\t\tthis.$store.dispatch('setUserData', {\n\t\t\t\tuserid: this.user.id, \n\t\t\t\tkey: 'language',\n\t\t\t\tvalue: lang.code\n\t\t\t}).then(() => this.loading.languages = false);\n\t\t\treturn lang;\n\t\t},\n\n\t\t/**\n\t\t * Dispatch new welcome mail request\n\t\t */\n\t\tsendWelcomeMail() {\n\t\t\tthis.loading.all = true;\n\t\t\tthis.$store.dispatch('sendWelcomeMail', this.user.id)\n\t\t\t\t.then(success => {\n\t\t\t\t\tif (success) {\n\t\t\t\t\t\t// Show feedback to indicate the success\n\t\t\t\t\t\tthis.feedbackMessage = t('setting', 'Welcome mail sent!');\n\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\tthis.feedbackMessage = '';\n\t\t\t\t\t\t}, 2000);\n\t\t\t\t\t}\n\t\t\t\t\tthis.loading.all = false;\n\t\t\t\t});\n\t\t}\n\n\t}\n}\n</script>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./userRow.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./userRow.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./userRow.vue?vue&type=template&id=0cf03818&\"\nimport script from \"./userRow.vue?vue&type=script&lang=js&\"\nexport * from \"./userRow.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (Object.keys(_vm.user).length ===1)?_c('div',{staticClass:\"row\",attrs:{\"data-id\":_vm.user.id}},[_c('div',{staticClass:\"avatar\",class:{'icon-loading-small': _vm.loading.delete || _vm.loading.disable || _vm.loading.wipe}},[(!_vm.loading.delete && !_vm.loading.disable && !_vm.loading.wipe)?_c('img',{attrs:{\"alt\":\"\",\"width\":\"32\",\"height\":\"32\",\"src\":_vm.generateAvatar(_vm.user.id, 32),\"srcset\":_vm.generateAvatar(_vm.user.id, 64)+' 2x, '+_vm.generateAvatar(_vm.user.id, 128)+' 4x'}}):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"name\"},[_vm._v(_vm._s(_vm.user.id))]),_vm._v(\" \"),_c('div',{staticClass:\"obfuscated\"},[_vm._v(_vm._s(_vm.t('settings','You do not have permissions to see the details of this user')))])]):_c('div',{staticClass:\"row\",class:{'disabled': _vm.loading.delete || _vm.loading.disable},attrs:{\"data-id\":_vm.user.id}},[_c('div',{staticClass:\"avatar\",class:{'icon-loading-small': _vm.loading.delete || _vm.loading.disable || _vm.loading.wipe}},[(!_vm.loading.delete && !_vm.loading.disable && !_vm.loading.wipe)?_c('img',{attrs:{\"alt\":\"\",\"width\":\"32\",\"height\":\"32\",\"src\":_vm.generateAvatar(_vm.user.id, 32),\"srcset\":_vm.generateAvatar(_vm.user.id, 64)+' 2x, '+_vm.generateAvatar(_vm.user.id, 128)+' 4x'}}):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"name\"},[_vm._v(_vm._s(_vm.user.id))]),_vm._v(\" \"),_c('form',{staticClass:\"displayName\",class:{'icon-loading-small': _vm.loading.displayName},on:{\"submit\":function($event){$event.preventDefault();return _vm.updateDisplayName($event)}}},[(_vm.user.backendCapabilities.setDisplayName)?[(_vm.user.backendCapabilities.setDisplayName)?_c('input',{ref:\"displayName\",attrs:{\"id\":'displayName'+_vm.user.id+_vm.rand,\"type\":\"text\",\"disabled\":_vm.loading.displayName||_vm.loading.all,\"autocomplete\":\"new-password\",\"autocorrect\":\"off\",\"autocapitalize\":\"off\",\"spellcheck\":\"false\"},domProps:{\"value\":_vm.user.displayname}}):_vm._e(),_vm._v(\" \"),(_vm.user.backendCapabilities.setDisplayName)?_c('input',{staticClass:\"icon-confirm\",attrs:{\"type\":\"submit\",\"value\":\"\"}}):_vm._e()]:_c('div',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.t('settings', 'The backend does not support changing the display name')),expression:\"t('settings', 'The backend does not support changing the display name')\",modifiers:{\"auto\":true}}],staticClass:\"name\"},[_vm._v(_vm._s(_vm.user.displayname))])],2),_vm._v(\" \"),(_vm.settings.canChangePassword && _vm.user.backendCapabilities.setPassword)?_c('form',{staticClass:\"password\",class:{'icon-loading-small': _vm.loading.password},on:{\"submit\":function($event){$event.preventDefault();return _vm.updatePassword($event)}}},[_c('input',{ref:\"password\",attrs:{\"id\":'password'+_vm.user.id+_vm.rand,\"type\":\"password\",\"required\":\"\",\"disabled\":_vm.loading.password||_vm.loading.all,\"minlength\":_vm.minPasswordLength,\"value\":\"\",\"placeholder\":_vm.t('settings', 'New password'),\"autocomplete\":\"new-password\",\"autocorrect\":\"off\",\"autocapitalize\":\"off\",\"spellcheck\":\"false\"}}),_vm._v(\" \"),_c('input',{staticClass:\"icon-confirm\",attrs:{\"type\":\"submit\",\"value\":\"\"}})]):_c('div'),_vm._v(\" \"),_c('form',{staticClass:\"mailAddress\",class:{'icon-loading-small': _vm.loading.mailAddress},on:{\"submit\":function($event){$event.preventDefault();return _vm.updateEmail($event)}}},[_c('input',{ref:\"mailAddress\",attrs:{\"id\":'mailAddress'+_vm.user.id+_vm.rand,\"type\":\"email\",\"disabled\":_vm.loading.mailAddress||_vm.loading.all,\"autocomplete\":\"new-password\",\"autocorrect\":\"off\",\"autocapitalize\":\"off\",\"spellcheck\":\"false\"},domProps:{\"value\":_vm.user.email}}),_vm._v(\" \"),_c('input',{staticClass:\"icon-confirm\",attrs:{\"type\":\"submit\",\"value\":\"\"}})]),_vm._v(\" \"),_c('div',{staticClass:\"groups\",class:{'icon-loading-small': _vm.loading.groups}},[_c('multiselect',{staticClass:\"multiselect-vue\",attrs:{\"value\":_vm.userGroups,\"options\":_vm.availableGroups,\"disabled\":_vm.loading.groups||_vm.loading.all,\"tag-placeholder\":\"create\",\"placeholder\":_vm.t('settings', 'Add user in group'),\"label\":\"name\",\"track-by\":\"id\",\"limit\":2,\"multiple\":true,\"taggable\":_vm.settings.isAdmin,\"closeOnSelect\":false,\"tag-width\":60},on:{\"tag\":_vm.createGroup,\"select\":_vm.addUserGroup,\"remove\":_vm.removeUserGroup}},[_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.formatGroupsTitle(_vm.userGroups)),expression:\"formatGroupsTitle(userGroups)\",modifiers:{\"auto\":true}}],staticClass:\"multiselect__limit\",attrs:{\"slot\":\"limit\"},slot:\"limit\"},[_vm._v(\"+\"+_vm._s(_vm.userGroups.length-2))]),_vm._v(\" \"),_c('span',{attrs:{\"slot\":\"noResult\"},slot:\"noResult\"},[_vm._v(_vm._s(_vm.t('settings', 'No results')))])])],1),_vm._v(\" \"),(_vm.subAdminsGroups.length>0 && _vm.settings.isAdmin)?_c('div',{staticClass:\"subadmins\",class:{'icon-loading-small': _vm.loading.subadmins}},[_c('multiselect',{staticClass:\"multiselect-vue\",attrs:{\"value\":_vm.userSubAdminsGroups,\"options\":_vm.subAdminsGroups,\"disabled\":_vm.loading.subadmins||_vm.loading.all,\"placeholder\":_vm.t('settings', 'Set user as admin for'),\"label\":\"name\",\"track-by\":\"id\",\"limit\":2,\"multiple\":true,\"closeOnSelect\":false,\"tag-width\":60},on:{\"select\":_vm.addUserSubAdmin,\"remove\":_vm.removeUserSubAdmin}},[_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.formatGroupsTitle(_vm.userSubAdminsGroups)),expression:\"formatGroupsTitle(userSubAdminsGroups)\",modifiers:{\"auto\":true}}],staticClass:\"multiselect__limit\",attrs:{\"slot\":\"limit\"},slot:\"limit\"},[_vm._v(\"+\"+_vm._s(_vm.userSubAdminsGroups.length-2))]),_vm._v(\" \"),_c('span',{attrs:{\"slot\":\"noResult\"},slot:\"noResult\"},[_vm._v(_vm._s(_vm.t('settings', 'No results')))])])],1):_vm._e(),_vm._v(\" \"),_c('div',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.usedSpace),expression:\"usedSpace\",modifiers:{\"auto\":true}}],staticClass:\"quota\",class:{'icon-loading-small': _vm.loading.quota}},[_c('multiselect',{staticClass:\"multiselect-vue\",attrs:{\"value\":_vm.userQuota,\"options\":_vm.quotaOptions,\"disabled\":_vm.loading.quota||_vm.loading.all,\"tag-placeholder\":\"create\",\"placeholder\":_vm.t('settings', 'Select user quota'),\"label\":\"label\",\"track-by\":\"id\",\"allowEmpty\":false,\"taggable\":true},on:{\"tag\":_vm.validateQuota,\"input\":_vm.setUserQuota}}),_vm._v(\" \"),_c('progress',{staticClass:\"quota-user-progress\",class:{'warn':_vm.usedQuota>80},attrs:{\"max\":\"100\"},domProps:{\"value\":_vm.usedQuota}})],1),_vm._v(\" \"),(_vm.showConfig.showLanguages)?_c('div',{staticClass:\"languages\",class:{'icon-loading-small': _vm.loading.languages}},[_c('multiselect',{staticClass:\"multiselect-vue\",attrs:{\"value\":_vm.userLanguage,\"options\":_vm.languages,\"disabled\":_vm.loading.languages||_vm.loading.all,\"placeholder\":_vm.t('settings', 'No language set'),\"label\":\"name\",\"track-by\":\"code\",\"allowEmpty\":false,\"group-values\":\"languages\",\"group-label\":\"label\"},on:{\"input\":_vm.setUserLanguage}})],1):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showStoragePath)?_c('div',{staticClass:\"storageLocation\"},[_vm._v(_vm._s(_vm.user.storageLocation))]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showUserBackend)?_c('div',{staticClass:\"userBackend\"},[_vm._v(_vm._s(_vm.user.backend))]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showLastLogin)?_c('div',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.user.lastLogin>0 ? _vm.OC.Util.formatDate(_vm.user.lastLogin) : ''),expression:\"user.lastLogin>0 ? OC.Util.formatDate(user.lastLogin) : ''\",modifiers:{\"auto\":true}}],staticClass:\"lastLogin\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.user.lastLogin>0 ? _vm.OC.Util.relativeModifiedDate(_vm.user.lastLogin) : _vm.t('settings','Never'))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"userActions\"},[(_vm.OC.currentUser !== _vm.user.id && _vm.user.id !== 'admin' && !_vm.loading.all)?_c('div',{staticClass:\"toggleUserActions\"},[_c('div',{directives:[{name:\"click-outside\",rawName:\"v-click-outside\",value:(_vm.hideMenu),expression:\"hideMenu\"}],staticClass:\"icon-more\",on:{\"click\":_vm.toggleMenu}}),_vm._v(\" \"),_c('div',{staticClass:\"popovermenu\",class:{ 'open': _vm.openedMenu }},[_c('popover-menu',{attrs:{\"menu\":_vm.userActions}})],1)]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"feedback\",style:({opacity: _vm.feedbackMessage !== '' ? 1 : 0})},[_c('div',{staticClass:\"icon-checkmark\"}),_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.feedbackMessage)+\"\\n\\t\\t\")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n \n<template>\n\t<div id=\"app-content\" class=\"user-list-grid\" v-on:scroll.passive=\"onScroll\">\n\t\t<div class=\"row\" id=\"grid-header\" :class=\"{'sticky': scrolled && !showConfig.showNewUserForm}\">\n\t\t\t<div id=\"headerAvatar\" class=\"avatar\"></div>\n\t\t\t<div id=\"headerName\" class=\"name\">{{ t('settings', 'Username') }}</div>\n\t\t\t<div id=\"headerDisplayName\" class=\"displayName\">{{ t('settings', 'Display name') }}</div>\n\t\t\t<div id=\"headerPassword\" class=\"password\">{{ t('settings', 'Password') }}</div>\n\t\t\t<div id=\"headerAddress\" class=\"mailAddress\">{{ t('settings', 'Email') }}</div>\n\t\t\t<div id=\"headerGroups\" class=\"groups\">{{ t('settings', 'Groups') }}</div>\n\t\t\t<div id=\"headerSubAdmins\" class=\"subadmins\"\n\t\t\t\t v-if=\"subAdminsGroups.length>0 && settings.isAdmin\">{{ t('settings', 'Group admin for') }}</div>\n\t\t\t<div id=\"headerQuota\" class=\"quota\">{{ t('settings', 'Quota') }}</div>\n\t\t\t<div id=\"headerLanguages\" class=\"languages\"\n\t\t\t\t v-if=\"showConfig.showLanguages\">{{ t('settings', 'Language') }}</div>\n\t\t\t<div class=\"headerStorageLocation storageLocation\"\n\t\t\t\t v-if=\"showConfig.showStoragePath\">{{ t('settings', 'Storage location') }}</div>\n\t\t\t<div class=\"headerUserBackend userBackend\"\n\t\t\t\t v-if=\"showConfig.showUserBackend\">{{ t('settings', 'User backend') }}</div>\n\t\t\t<div class=\"headerLastLogin lastLogin\" \n\t\t\t\t v-if=\"showConfig.showLastLogin\">{{ t('settings', 'Last login') }}</div>\n\t\t\t<div class=\"userActions\"></div>\n\t\t</div>\n\n\t\t<form class=\"row\" id=\"new-user\" v-show=\"showConfig.showNewUserForm\"\n\t\t\t v-on:submit.prevent=\"createUser\" :disabled=\"loading.all\"\n\t\t\t :class=\"{'sticky': scrolled && showConfig.showNewUserForm}\">\n\t\t\t<div :class=\"loading.all?'icon-loading-small':'icon-add'\"></div>\n\t\t\t<div class=\"name\">\n\t\t\t\t<input id=\"newusername\" type=\"text\" required v-model=\"newUser.id\"\n\t\t\t\t\t :placeholder=\"this.settings.newUserGenerateUserID\n\t\t\t\t\t\t ? t('settings', 'Will be autogenerated')\n\t\t\t\t\t\t : t('settings', 'Username')\"\n\t\t\t\t\t name=\"username\" autocomplete=\"off\" autocapitalize=\"none\"\n\t\t\t\t\t autocorrect=\"off\" ref=\"newusername\" pattern=\"[a-zA-Z0-9 _\\.@\\-']+\"\n\t\t\t\t\t :disabled=\"this.settings.newUserGenerateUserID\">\n\t\t\t</div>\n\t\t\t<div class=\"displayName\">\n\t\t\t\t<input id=\"newdisplayname\" type=\"text\" v-model=\"newUser.displayName\"\n\t\t\t\t\t :placeholder=\"t('settings', 'Display name')\" name=\"displayname\"\n\t\t\t\t\t autocomplete=\"off\" autocapitalize=\"none\" autocorrect=\"off\">\n\t\t\t</div>\n\t\t\t<div class=\"password\">\n\t\t\t\t<input id=\"newuserpassword\" type=\"password\" v-model=\"newUser.password\"\n\t\t\t\t\t :required=\"newUser.mailAddress===''\" ref=\"newuserpassword\"\n\t\t\t\t\t :placeholder=\"t('settings', 'Password')\" name=\"password\"\n\t\t\t\t\t autocomplete=\"new-password\" autocapitalize=\"none\" autocorrect=\"off\"\n\t\t\t\t\t :minlength=\"minPasswordLength\">\n\t\t\t</div>\n\t\t\t<div class=\"mailAddress\">\n\t\t\t\t<input id=\"newemail\" type=\"email\" v-model=\"newUser.mailAddress\"\n\t\t\t\t\t :required=\"newUser.password==='' || this.settings.newUserRequireEmail\"\n\t\t\t\t\t :placeholder=\"t('settings', 'Email')\" name=\"email\"\n\t\t\t\t\t autocomplete=\"off\" autocapitalize=\"none\" autocorrect=\"off\">\n\t\t\t</div>\n\t\t\t<div class=\"groups\">\n\t\t\t\t<!-- hidden input trick for vanilla html5 form validation -->\n\t\t\t\t<input type=\"text\" :value=\"newUser.groups\" v-if=\"!settings.isAdmin\"\n\t\t\t\t\t tabindex=\"-1\" id=\"newgroups\" :required=\"!settings.isAdmin\"\n\t\t\t\t\t :class=\"{'icon-loading-small': loading.groups}\"/>\n\t\t\t\t<multiselect v-model=\"newUser.groups\" :options=\"canAddGroups\" :disabled=\"loading.groups||loading.all\"\n\t\t\t\t\t\t tag-placeholder=\"create\" :placeholder=\"t('settings', 'Add user in group')\"\n\t\t\t\t\t\t label=\"name\" track-by=\"id\" class=\"multiselect-vue\"\n\t\t\t\t\t\t :multiple=\"true\" :taggable=\"true\" :close-on-select=\"false\"\n\t\t\t\t\t\t :tag-width=\"60\" @tag=\"createGroup\">\n\t\t\t\t\t\t\t <!-- If user is not admin, he is a subadmin.\n\t\t\t\t\t\t\t \t Subadmins can't create users outside their groups\n\t\t\t\t\t\t\t\t Therefore, empty select is forbidden -->\n\t\t\t\t\t<span slot=\"noResult\">{{t('settings', 'No results')}}</span>\n\t\t\t\t</multiselect>\n\t\t\t</div>\n\t\t\t<div class=\"subadmins\" v-if=\"subAdminsGroups.length>0 && settings.isAdmin\">\n\t\t\t\t<multiselect :options=\"subAdminsGroups\" v-model=\"newUser.subAdminsGroups\"\n\t\t\t\t\t\t\t :placeholder=\"t('settings', 'Set user as admin for')\"\n\t\t\t\t\t\t\t label=\"name\" track-by=\"id\" class=\"multiselect-vue\"\n\t\t\t\t\t\t\t :multiple=\"true\" :close-on-select=\"false\" :tag-width=\"60\">\n\t\t\t\t\t<span slot=\"noResult\">{{t('settings', 'No results')}}</span>\n\t\t\t</multiselect>\n\t\t\t</div>\n\t\t\t<div class=\"quota\">\n\t\t\t\t<multiselect :options=\"quotaOptions\" v-model=\"newUser.quota\"\n\t\t\t\t\t\t\t :placeholder=\"t('settings', 'Select user quota')\"\n\t\t\t\t\t\t\t label=\"label\" track-by=\"id\" class=\"multiselect-vue\"\n\t\t\t\t\t\t\t :allowEmpty=\"false\" :taggable=\"true\"\n\t\t\t\t\t\t \t @tag=\"validateQuota\" >\n\t\t\t\t</multiselect>\n\t\t\t</div>\n\t\t\t<div class=\"languages\" v-if=\"showConfig.showLanguages\">\n\t\t\t\t<multiselect :options=\"languages\" v-model=\"newUser.language\"\n\t\t\t\t\t\t\t :placeholder=\"t('settings', 'Default language')\"\n\t\t\t\t\t\t\t label=\"name\" track-by=\"code\" class=\"multiselect-vue\"\n\t\t\t\t\t\t\t :allowEmpty=\"false\" group-values=\"languages\" group-label=\"label\">\n\t\t\t\t</multiselect>\n\t\t\t</div>\n\t\t\t<div class=\"storageLocation\" v-if=\"showConfig.showStoragePath\"></div>\n\t\t\t<div class=\"userBackend\" v-if=\"showConfig.showUserBackend\"></div>\n\t\t\t<div class=\"lastLogin\" v-if=\"showConfig.showLastLogin\"></div>\n\t\t\t<div class=\"userActions\">\n\t\t\t\t<input type=\"submit\" id=\"newsubmit\" class=\"button primary icon-checkmark-white has-tooltip\"\n\t\t\t\t\t value=\"\" :title=\"t('settings', 'Add a new user')\">\n\t\t\t</div>\n\t\t</form>\n\n\t\t<user-row v-for=\"(user, key) in filteredUsers\" :user=\"user\" :key=\"key\" :settings=\"settings\" :showConfig=\"showConfig\"\n\t\t\t\t :groups=\"groups\" :subAdminsGroups=\"subAdminsGroups\" :quotaOptions=\"quotaOptions\" :languages=\"languages\"\n\t\t\t\t :externalActions=\"externalActions\" />\n\t\t<infinite-loading @infinite=\"infiniteHandler\" ref=\"infiniteLoading\">\n\t\t\t<div slot=\"spinner\"><div class=\"users-icon-loading icon-loading\"></div></div>\n\t\t\t<div slot=\"no-more\"><div class=\"users-list-end\"></div></div>\n\t\t\t<div slot=\"no-results\">\n\t\t\t\t<div id=\"emptycontent\">\n\t\t\t\t\t<div class=\"icon-contacts-dark\"></div>\n\t\t\t\t\t<h2>{{t('settings', 'No users in here')}}</h2>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</infinite-loading>\n\t</div>\n</template>\n\n<script>\nimport userRow from './userList/userRow';\nimport { Multiselect } from 'nextcloud-vue'\nimport InfiniteLoading from 'vue-infinite-loading';\nimport Vue from 'vue';\n\nconst unlimitedQuota = {\n\tid: 'none',\n\tlabel: t('settings', 'Unlimited')\n}\nconst defaultQuota = {\n\tid: 'default',\n\tlabel: t('settings', 'Default quota')\n}\nconst newUser = {\n\tid: '',\n\tdisplayName: '',\n\tpassword: '',\n\tmailAddress: '',\n\tgroups: [],\n\tsubAdminsGroups: [],\n\tquota: defaultQuota,\n\tlanguage: {\n\t\tcode: 'en',\n\t\tname: t('settings', 'Default language')\n\t}\n}\n\nexport default {\n\tname: 'userList',\n\tprops: ['users', 'showConfig', 'selectedGroup', 'externalActions'],\n\tcomponents: {\n\t\tuserRow,\n\t\tMultiselect,\n\t\tInfiniteLoading\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tunlimitedQuota,\n\t\t\tdefaultQuota,\n\t\t\tloading: {\n\t\t\t\tall: false,\n\t\t\t\tgroups: false\n\t\t\t},\n\t\t\tscrolled: false,\n\t\t\tsearchQuery: '',\n\t\t\tnewUser: Object.assign({}, newUser)\n\t\t};\n\t},\n\tmounted() {\n\t\tif (!this.settings.canChangePassword) {\n\t\t\tOC.Notification.showTemporary(t('settings', 'Password change is disabled because the master key is disabled'));\n\t\t}\n\n\t\t/**\n\t\t * Reset and init new user form\n\t\t */\n\t\tthis.resetForm()\n\n\t\t/** \n\t\t * Register search\n\t\t */\n\t\tthis.userSearch = new OCA.Search(this.search, this.resetSearch);\n\t},\n\tcomputed: {\n\t\tsettings() {\n\t\t\treturn this.$store.getters.getServerData;\n\t\t},\n\t\tfilteredUsers() {\n\t\t\tif (this.selectedGroup === 'disabled') {\n\t\t\t\tlet disabledUsers = this.users.filter(user => user.enabled === false);\n\t\t\t\tif (disabledUsers.length === 0 && this.$refs.infiniteLoading && this.$refs.infiniteLoading.isComplete) {\n\t\t\t\t\t// disabled group is empty, redirection to all users\n\t\t\t\t\tthis.$router.push({ name: 'users' });\n\t\t\t\t\tthis.$refs.infiniteLoading.stateChanger.reset()\n\t\t\t\t}\n\t\t\t\treturn disabledUsers;\n\t\t\t}\n\t\t\tif (!this.settings.isAdmin) {\n\t\t\t\t// we don't want subadmins to edit themselves\n\t\t\t\treturn this.users.filter(user => user.enabled !== false && user.id !== OC.getCurrentUser().uid);\n\t\t\t}\n\t\t\treturn this.users.filter(user => user.enabled !== false);\n\t\t},\n\t\tgroups() {\n\t\t\t// data provided php side + remove the disabled group\n\t\t\treturn this.$store.getters.getGroups\n\t\t\t\t.filter(group => group.id !== 'disabled')\n\t\t\t\t.sort((a, b) => a.name.localeCompare(b.name));\n\t\t},\n\t\tcanAddGroups() {\n\t\t\t// disabled if no permission to add new users to group\n\t\t\treturn this.groups.map(group => {\n\t\t\t\t// clone object because we don't want\n\t\t\t\t// to edit the original groups\n\t\t\t\tgroup = Object.assign({}, group);\n\t\t\t\tgroup.$isDisabled = group.canAdd === false;\n\t\t\t\treturn group;\n\t\t\t});\n\t\t},\n\t\tsubAdminsGroups() {\n\t\t\t// data provided php side\n\t\t\treturn this.$store.getters.getSubadminGroups;\n\t\t},\n\t\tquotaOptions() {\n\t\t\t// convert the preset array into objects\n\t\t\tlet quotaPreset = this.settings.quotaPreset.reduce((acc, cur) => acc.concat({id: cur, label: cur}), []);\n\t\t\t// add default presets\n\t\t\tquotaPreset.unshift(this.unlimitedQuota);\n\t\t\tquotaPreset.unshift(this.defaultQuota);\n\t\t\treturn quotaPreset;\n\t\t},\n\t\tminPasswordLength() {\n\t\t\treturn this.$store.getters.getPasswordPolicyMinLength;\n\t\t},\n\t\tusersOffset() {\n\t\t\treturn this.$store.getters.getUsersOffset;\n\t\t},\n\t\tusersLimit() {\n\t\t\treturn this.$store.getters.getUsersLimit;\n\t\t},\n\t\tusersCount() {\n\t\t\treturn this.users.length\n\t\t},\n\n\t\t/* LANGUAGES */\n\t\tlanguages() {\n\t\t\treturn Array(\n\t\t\t\t{\n\t\t\t\t\tlabel: t('settings', 'Common languages'),\n\t\t\t\t\tlanguages: this.settings.languages.commonlanguages\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: t('settings', 'All languages'),\n\t\t\t\t\tlanguages: this.settings.languages.languages\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t},\n\twatch: {\n\t\t// watch url change and group select\n\t\tselectedGroup: function (val, old) {\n\t\t\tthis.$store.commit('resetUsers');\n\t\t\tthis.$refs.infiniteLoading.stateChanger.reset()\n\t\t\tthis.setNewUserDefaultGroup(val);\n\t\t},\n\n\t\t// make sure the infiniteLoading state is changed if we manually\n\t\t// add/remove data from the store\n\t\tusersCount: function(val, old) {\n\t\t\t// deleting the last user, reset the list \n\t\t\tif (val === 0 && old === 1) {\n\t\t\t\tthis.$refs.infiniteLoading.stateChanger.reset()\n\t\t\t// adding the first user, warn the infiniteLoader that \n\t\t\t// the list is not empty anymore (we don't fetch the newly\n\t\t\t// added user as we already have all the info we need)\n\t\t\t} else if (val === 1 && old === 0) {\n\t\t\t\tthis.$refs.infiniteLoading.stateChanger.loaded()\n\t\t\t}\n\t\t}\n\t},\n\tmethods: {\n\t\tonScroll(event) {\n\t\t\tthis.scrolled = event.target.scrollTo > 0;\n\t\t},\n\n\t\t/**\n\t\t * Validate quota string to make sure it's a valid human file size\n\t\t * \n\t\t * @param {string} quota Quota in readable format '5 GB'\n\t\t * @returns {Object}\n\t\t */\n\t\tvalidateQuota(quota) {\n\t\t\t// only used for new presets sent through @Tag\n\t\t\tlet validQuota = OC.Util.computerFileSize(quota);\n\t\t\tif (validQuota !== null && validQuota >= 0) {\n\t\t\t\t// unify format output\n\t\t\t\tquota = OC.Util.humanFileSize(OC.Util.computerFileSize(quota));\n\t\t\t\treturn this.newUser.quota = {id: quota, label: quota};\n\t\t\t}\n\t\t\t// Default is unlimited\n\t\t\treturn this.newUser.quota = this.quotaOptions[0];\n\t\t},\n\n\t\tinfiniteHandler($state) {\n\t\t\tthis.$store.dispatch('getUsers', {\n\t\t\t\toffset: this.usersOffset,\n\t\t\t\tlimit: this.usersLimit,\n\t\t\t\tgroup: this.selectedGroup !== 'disabled' ? this.selectedGroup : '',\n\t\t\t\tsearch: this.searchQuery\n\t\t\t})\n\t\t\t.then((response) => { response ? $state.loaded() : $state.complete() });\n\t\t},\n\n\t\t/* SEARCH */\n\t\tsearch(query) {\n\t\t\tthis.searchQuery = query;\n\t\t\tthis.$store.commit('resetUsers');\n\t\t\tthis.$refs.infiniteLoading.stateChanger.reset()\n\t\t},\n\t\tresetSearch() {\n\t\t\tthis.search('');\n\t\t},\n\n\t\tresetForm() {\n\t\t\t// revert form to original state\n\t\t\tthis.newUser = Object.assign({}, newUser);\n\n\t\t\t/** \n\t\t\t * Init default language from server data. The use of this.settings\n\t\t\t * requires a computed variable, which break the v-model binding of the form,\n\t\t\t * this is a much easier solution than getter and setter on a computed var\n\t\t\t */\n\t\t\tif (this.settings.defaultLanguage) {\n\t\t\t\tVue.set(this.newUser.language, 'code', this.settings.defaultLanguage);\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * In case the user directly loaded the user list within a group\n\t\t\t * the watch won't be triggered. We need to initialize it.\n\t\t\t */\n\t\t\tthis.setNewUserDefaultGroup(this.selectedGroup);\n\n\t\t\tthis.loading.all = false;\n\t\t},\n\t\tcreateUser() {\n\t\t\tthis.loading.all = true;\n\t\t\tthis.$store.dispatch('addUser', {\n\t\t\t\tuserid: this.newUser.id,\n\t\t\t\tpassword: this.newUser.password,\n\t\t\t\tdisplayName: this.newUser.displayName,\n\t\t\t\temail: this.newUser.mailAddress,\n\t\t\t\tgroups: this.newUser.groups.map(group => group.id),\n\t\t\t\tsubadmin: this.newUser.subAdminsGroups.map(group => group.id),\n\t\t\t\tquota: this.newUser.quota.id,\n\t\t\t\tlanguage: this.newUser.language.code,\n\t\t\t})\n\t\t\t.then(() => {\n\t\t\t\tthis.resetForm()\n\t\t\t\tthis.$refs.newusername.focus();\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tthis.loading.all = false;\n\t\t\t\tif (error.response && error.response.data && error.response.data.ocs && error.response.data.ocs.meta) {\n\t\t\t\t\tconst statuscode = error.response.data.ocs.meta.statuscode\n\t\t\t\t\tif (statuscode === 102) {\n\t\t\t\t\t\t// wrong username\n\t\t\t\t\t\tthis.$refs.newusername.focus();\t\n\t\t\t\t\t} else if (statuscode === 107) {\n\t\t\t\t\t\t// wrong password\n\t\t\t\t\t\tthis.$refs.newuserpassword.focus();\t\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tsetNewUserDefaultGroup(value) {\n\t\t\tif (value && value.length > 0) {\n\t\t\t\t// setting new user default group to the current selected one\n\t\t\t\tlet currentGroup = this.groups.find(group => group.id === value);\n\t\t\t\tif (currentGroup) {\n\t\t\t\t\tthis.newUser.groups = [currentGroup];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// fallback, empty selected group\n\t\t\tthis.newUser.groups = [];\n\t\t},\n\n\t\t/**\n\t\t * Create a new group\n\t\t * \n\t\t * @param {string} groups Group id\n\t\t * @returns {Promise}\n\t\t */\n\t\tcreateGroup(gid) {\n\t\t\tthis.loading.groups = true;\n\t\t\tthis.$store.dispatch('addGroup', gid)\n\t\t\t\t.then((group) => {\n\t\t\t\t\tthis.newUser.groups.push(this.groups.find(group => group.id === gid))\n\t\t\t\t\tthis.loading.groups = false;\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\tthis.loading.groups = false;\n\t\t\t\t});\n\t\t\treturn this.$store.getters.getGroups[this.groups.length];\n\t\t}\n\t}\n}\n</script>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./userList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./userList.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./userList.vue?vue&type=template&id=0aa5c5b6&\"\nimport script from \"./userList.vue?vue&type=script&lang=js&\"\nexport * from \"./userList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"user-list-grid\",attrs:{\"id\":\"app-content\"},on:{\"&scroll\":function($event){return _vm.onScroll($event)}}},[_c('div',{staticClass:\"row\",class:{'sticky': _vm.scrolled && !_vm.showConfig.showNewUserForm},attrs:{\"id\":\"grid-header\"}},[_c('div',{staticClass:\"avatar\",attrs:{\"id\":\"headerAvatar\"}}),_vm._v(\" \"),_c('div',{staticClass:\"name\",attrs:{\"id\":\"headerName\"}},[_vm._v(_vm._s(_vm.t('settings', 'Username')))]),_vm._v(\" \"),_c('div',{staticClass:\"displayName\",attrs:{\"id\":\"headerDisplayName\"}},[_vm._v(_vm._s(_vm.t('settings', 'Display name')))]),_vm._v(\" \"),_c('div',{staticClass:\"password\",attrs:{\"id\":\"headerPassword\"}},[_vm._v(_vm._s(_vm.t('settings', 'Password')))]),_vm._v(\" \"),_c('div',{staticClass:\"mailAddress\",attrs:{\"id\":\"headerAddress\"}},[_vm._v(_vm._s(_vm.t('settings', 'Email')))]),_vm._v(\" \"),_c('div',{staticClass:\"groups\",attrs:{\"id\":\"headerGroups\"}},[_vm._v(_vm._s(_vm.t('settings', 'Groups')))]),_vm._v(\" \"),(_vm.subAdminsGroups.length>0 && _vm.settings.isAdmin)?_c('div',{staticClass:\"subadmins\",attrs:{\"id\":\"headerSubAdmins\"}},[_vm._v(_vm._s(_vm.t('settings', 'Group admin for')))]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"quota\",attrs:{\"id\":\"headerQuota\"}},[_vm._v(_vm._s(_vm.t('settings', 'Quota')))]),_vm._v(\" \"),(_vm.showConfig.showLanguages)?_c('div',{staticClass:\"languages\",attrs:{\"id\":\"headerLanguages\"}},[_vm._v(_vm._s(_vm.t('settings', 'Language')))]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showStoragePath)?_c('div',{staticClass:\"headerStorageLocation storageLocation\"},[_vm._v(_vm._s(_vm.t('settings', 'Storage location')))]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showUserBackend)?_c('div',{staticClass:\"headerUserBackend userBackend\"},[_vm._v(_vm._s(_vm.t('settings', 'User backend')))]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showLastLogin)?_c('div',{staticClass:\"headerLastLogin lastLogin\"},[_vm._v(_vm._s(_vm.t('settings', 'Last login')))]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"userActions\"})]),_vm._v(\" \"),_c('form',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showConfig.showNewUserForm),expression:\"showConfig.showNewUserForm\"}],staticClass:\"row\",class:{'sticky': _vm.scrolled && _vm.showConfig.showNewUserForm},attrs:{\"id\":\"new-user\",\"disabled\":_vm.loading.all},on:{\"submit\":function($event){$event.preventDefault();return _vm.createUser($event)}}},[_c('div',{class:_vm.loading.all?'icon-loading-small':'icon-add'}),_vm._v(\" \"),_c('div',{staticClass:\"name\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newUser.id),expression:\"newUser.id\"}],ref:\"newusername\",attrs:{\"id\":\"newusername\",\"type\":\"text\",\"required\":\"\",\"placeholder\":this.settings.newUserGenerateUserID\n\t\t\t\t\t ? _vm.t('settings', 'Will be autogenerated')\n\t\t\t\t\t : _vm.t('settings', 'Username'),\"name\":\"username\",\"autocomplete\":\"off\",\"autocapitalize\":\"none\",\"autocorrect\":\"off\",\"pattern\":\"[a-zA-Z0-9 _\\\\.@\\\\-']+\",\"disabled\":this.settings.newUserGenerateUserID},domProps:{\"value\":(_vm.newUser.id)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.newUser, \"id\", $event.target.value)}}})]),_vm._v(\" \"),_c('div',{staticClass:\"displayName\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newUser.displayName),expression:\"newUser.displayName\"}],attrs:{\"id\":\"newdisplayname\",\"type\":\"text\",\"placeholder\":_vm.t('settings', 'Display name'),\"name\":\"displayname\",\"autocomplete\":\"off\",\"autocapitalize\":\"none\",\"autocorrect\":\"off\"},domProps:{\"value\":(_vm.newUser.displayName)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.newUser, \"displayName\", $event.target.value)}}})]),_vm._v(\" \"),_c('div',{staticClass:\"password\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newUser.password),expression:\"newUser.password\"}],ref:\"newuserpassword\",attrs:{\"id\":\"newuserpassword\",\"type\":\"password\",\"required\":_vm.newUser.mailAddress==='',\"placeholder\":_vm.t('settings', 'Password'),\"name\":\"password\",\"autocomplete\":\"new-password\",\"autocapitalize\":\"none\",\"autocorrect\":\"off\",\"minlength\":_vm.minPasswordLength},domProps:{\"value\":(_vm.newUser.password)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.newUser, \"password\", $event.target.value)}}})]),_vm._v(\" \"),_c('div',{staticClass:\"mailAddress\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newUser.mailAddress),expression:\"newUser.mailAddress\"}],attrs:{\"id\":\"newemail\",\"type\":\"email\",\"required\":_vm.newUser.password==='' || this.settings.newUserRequireEmail,\"placeholder\":_vm.t('settings', 'Email'),\"name\":\"email\",\"autocomplete\":\"off\",\"autocapitalize\":\"none\",\"autocorrect\":\"off\"},domProps:{\"value\":(_vm.newUser.mailAddress)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.newUser, \"mailAddress\", $event.target.value)}}})]),_vm._v(\" \"),_c('div',{staticClass:\"groups\"},[(!_vm.settings.isAdmin)?_c('input',{class:{'icon-loading-small': _vm.loading.groups},attrs:{\"type\":\"text\",\"tabindex\":\"-1\",\"id\":\"newgroups\",\"required\":!_vm.settings.isAdmin},domProps:{\"value\":_vm.newUser.groups}}):_vm._e(),_vm._v(\" \"),_c('multiselect',{staticClass:\"multiselect-vue\",attrs:{\"options\":_vm.canAddGroups,\"disabled\":_vm.loading.groups||_vm.loading.all,\"tag-placeholder\":\"create\",\"placeholder\":_vm.t('settings', 'Add user in group'),\"label\":\"name\",\"track-by\":\"id\",\"multiple\":true,\"taggable\":true,\"close-on-select\":false,\"tag-width\":60},on:{\"tag\":_vm.createGroup},model:{value:(_vm.newUser.groups),callback:function ($$v) {_vm.$set(_vm.newUser, \"groups\", $$v)},expression:\"newUser.groups\"}},[_c('span',{attrs:{\"slot\":\"noResult\"},slot:\"noResult\"},[_vm._v(_vm._s(_vm.t('settings', 'No results')))])])],1),_vm._v(\" \"),(_vm.subAdminsGroups.length>0 && _vm.settings.isAdmin)?_c('div',{staticClass:\"subadmins\"},[_c('multiselect',{staticClass:\"multiselect-vue\",attrs:{\"options\":_vm.subAdminsGroups,\"placeholder\":_vm.t('settings', 'Set user as admin for'),\"label\":\"name\",\"track-by\":\"id\",\"multiple\":true,\"close-on-select\":false,\"tag-width\":60},model:{value:(_vm.newUser.subAdminsGroups),callback:function ($$v) {_vm.$set(_vm.newUser, \"subAdminsGroups\", $$v)},expression:\"newUser.subAdminsGroups\"}},[_c('span',{attrs:{\"slot\":\"noResult\"},slot:\"noResult\"},[_vm._v(_vm._s(_vm.t('settings', 'No results')))])])],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"quota\"},[_c('multiselect',{staticClass:\"multiselect-vue\",attrs:{\"options\":_vm.quotaOptions,\"placeholder\":_vm.t('settings', 'Select user quota'),\"label\":\"label\",\"track-by\":\"id\",\"allowEmpty\":false,\"taggable\":true},on:{\"tag\":_vm.validateQuota},model:{value:(_vm.newUser.quota),callback:function ($$v) {_vm.$set(_vm.newUser, \"quota\", $$v)},expression:\"newUser.quota\"}})],1),_vm._v(\" \"),(_vm.showConfig.showLanguages)?_c('div',{staticClass:\"languages\"},[_c('multiselect',{staticClass:\"multiselect-vue\",attrs:{\"options\":_vm.languages,\"placeholder\":_vm.t('settings', 'Default language'),\"label\":\"name\",\"track-by\":\"code\",\"allowEmpty\":false,\"group-values\":\"languages\",\"group-label\":\"label\"},model:{value:(_vm.newUser.language),callback:function ($$v) {_vm.$set(_vm.newUser, \"language\", $$v)},expression:\"newUser.language\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showStoragePath)?_c('div',{staticClass:\"storageLocation\"}):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showUserBackend)?_c('div',{staticClass:\"userBackend\"}):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showLastLogin)?_c('div',{staticClass:\"lastLogin\"}):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"userActions\"},[_c('input',{staticClass:\"button primary icon-checkmark-white has-tooltip\",attrs:{\"type\":\"submit\",\"id\":\"newsubmit\",\"value\":\"\",\"title\":_vm.t('settings', 'Add a new user')}})])]),_vm._v(\" \"),_vm._l((_vm.filteredUsers),function(user,key){return _c('user-row',{key:key,attrs:{\"user\":user,\"settings\":_vm.settings,\"showConfig\":_vm.showConfig,\"groups\":_vm.groups,\"subAdminsGroups\":_vm.subAdminsGroups,\"quotaOptions\":_vm.quotaOptions,\"languages\":_vm.languages,\"externalActions\":_vm.externalActions}})}),_vm._v(\" \"),_c('infinite-loading',{ref:\"infiniteLoading\",on:{\"infinite\":_vm.infiniteHandler}},[_c('div',{attrs:{\"slot\":\"spinner\"},slot:\"spinner\"},[_c('div',{staticClass:\"users-icon-loading icon-loading\"})]),_vm._v(\" \"),_c('div',{attrs:{\"slot\":\"no-more\"},slot:\"no-more\"},[_c('div',{staticClass:\"users-list-end\"})]),_vm._v(\" \"),_c('div',{attrs:{\"slot\":\"no-results\"},slot:\"no-results\"},[_c('div',{attrs:{\"id\":\"emptycontent\"}},[_c('div',{staticClass:\"icon-contacts-dark\"}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('settings', 'No users in here')))])])])])],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<Content app-name=\"settings\" :navigation-class=\"{ 'icon-loading': loadingAddGroup }\">\n\t\t<AppNavigation>\n\t\t\t<AppNavigationNew button-id=\"new-user-button\" :text=\"t('settings','New user')\" button-class=\"icon-add\" @click=\"toggleNewUserMenu\" />\n\t\t\t<ul id=\"usergrouplist\">\n\t\t\t\t<AppNavigationItem v-for=\"item in menu\" :key=\"item.key\" :item=\"item\" />\n\t\t\t</ul>\n\t\t\t<AppNavigationSettings>\n\t\t\t\t<div>\n\t\t\t\t\t<p>{{t('settings', 'Default quota:')}}</p>\n\t\t\t\t\t<Multiselect :value=\"defaultQuota\" :options=\"quotaOptions\"\n\t\t\t\t\t\t\t\t tag-placeholder=\"create\" :placeholder=\"t('settings', 'Select default quota')\"\n\t\t\t\t\t\t\t\t label=\"label\" track-by=\"id\"\n\t\t\t\t\t\t\t\t :allowEmpty=\"false\" :taggable=\"true\"\n\t\t\t\t\t\t\t\t @tag=\"validateQuota\" @input=\"setDefaultQuota\">\n\t\t\t\t\t</Multiselect>\n\n\t\t\t\t</div>\n\t\t\t\t<div>\n\t\t\t\t\t<input type=\"checkbox\" id=\"showLanguages\" class=\"checkbox\" v-model=\"showLanguages\">\n\t\t\t\t\t<label for=\"showLanguages\">{{t('settings', 'Show Languages')}}</label>\n\t\t\t\t</div>\n\t\t\t\t<div>\n\t\t\t\t\t<input type=\"checkbox\" id=\"showLastLogin\" class=\"checkbox\" v-model=\"showLastLogin\">\n\t\t\t\t\t<label for=\"showLastLogin\">{{t('settings', 'Show last login')}}</label>\n\t\t\t\t</div>\n\t\t\t\t<div>\n\t\t\t\t\t<input type=\"checkbox\" id=\"showUserBackend\" class=\"checkbox\" v-model=\"showUserBackend\">\n\t\t\t\t\t<label for=\"showUserBackend\">{{t('settings', 'Show user backend')}}</label>\n\t\t\t\t</div>\n\t\t\t\t<div>\n\t\t\t\t\t<input type=\"checkbox\" id=\"showStoragePath\" class=\"checkbox\" v-model=\"showStoragePath\">\n\t\t\t\t\t<label for=\"showStoragePath\">{{t('settings', 'Show storage path')}}</label>\n\t\t\t\t</div>\n\t\t\t</AppNavigationSettings>\n\t\t</AppNavigation>\n\t\t<AppContent>\n\t\t\t<UserList #content :users=\"users\" :showConfig=\"showConfig\" :selectedGroup=\"selectedGroup\" :externalActions=\"externalActions\" />\n\t\t</AppContent>\n\t</Content>\n</template>\n\n<script>\nimport Vue from 'vue';\nimport VueLocalStorage from 'vue-localstorage'\nimport {\n\tAppContent,\n\tAppNavigation,\n\tAppNavigationItem,\n\tAppNavigationNew,\n\tAppNavigationSettings,\n\tAppSidebar,\n\tContent,\n\tMultiselect\n} from 'nextcloud-vue';\nimport UserList from '../components/userList';\nimport api from '../store/api';\n\nVue.use(VueLocalStorage)\n\nexport default {\n\tname: 'Users',\n\tprops: ['selectedGroup'],\n\tcomponents: {\n\t\tAppContent,\n\t\tAppNavigation,\n\t\tAppNavigationItem,\n\t\tAppNavigationNew,\n\t\tAppNavigationSettings,\n\t\tAppSidebar,\n\t\tContent,\n\t\tUserList,\n\t\tMultiselect,\n\t},\n\tbeforeMount() {\n\t\tthis.$store.commit('initGroups', {\n\t\t\tgroups: this.$store.getters.getServerData.groups, \n\t\t\torderBy: this.$store.getters.getServerData.sortGroups,\n\t\t\tuserCount: this.$store.getters.getServerData.userCount\n\t\t});\n\t\tthis.$store.dispatch('getPasswordPolicyMinLength');\n\t},\n\tcreated() {\n\t\t// init the OCA.Settings.UserList object\n\t\t// and add the registerAction method\n\t\tObject.assign(OCA, {\n\t\t\tSettings: {\n\t\t\t\tUserList: {\n\t\t\t\t\tregisterAction: this.registerAction\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\tdata() {\n\t\treturn {\n\t\t\t// default quota is set to unlimited\n\t\t\tunlimitedQuota: {id: 'none', label: t('settings', 'Unlimited')},\n\t\t\t// temporary value used for multiselect change\n\t\t\tselectedQuota: false,\n\t\t\texternalActions: [],\n\t\t\tshowAddGroupEntry: false,\n\t\t\tloadingAddGroup: false,\n\t\t\tshowConfig: {\n\t\t\t\tshowStoragePath: false,\n\t\t\t\tshowUserBackend: false,\n\t\t\t\tshowLastLogin: false,\n\t\t\t\tshowNewUserForm: false,\n\t\t\t\tshowLanguages: false\n\t\t\t}\n\t\t}\n\t},\n\tmethods: {\n\t\ttoggleNewUserMenu() {\n\t\t\tthis.showConfig.showNewUserForm = !this.showConfig.showNewUserForm;\n\t\t\tif (this.showConfig.showNewUserForm) {\n\t\t\t\tVue.nextTick(() => {\n\t\t\t\t\twindow.newusername.focus();\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tgetLocalstorage(key) {\n\t\t\t// force initialization\n\t\t\tlet localConfig = this.$localStorage.get(key);\n\t\t\t// if localstorage is null, fallback to original values\n\t\t\tthis.showConfig[key] = localConfig !== null ? localConfig === 'true' : this.showConfig[key];\n\t\t\treturn this.showConfig[key];\n\t\t},\n\t\tsetLocalStorage(key, status) {\n\t\t\tthis.showConfig[key] = status;\n\t\t\tthis.$localStorage.set(key, status);\n\t\t\treturn status;\n\t\t},\n\t\tremoveGroup(groupid) {\n\t\t\tlet self = this;\n\t\t\t// TODO migrate to a vue js confirm dialog component \n\t\t\tOC.dialogs.confirm(\n\t\t\t\tt('settings', 'You are about to remove the group {group}. The users will NOT be deleted.', {group: groupid}),\n\t\t\t\tt('settings','Please confirm the group removal '),\n\t\t\t\tfunction (success) {\n\t\t\t\t\tif (success) {\n\t\t\t\t\t\tself.$store.dispatch('removeGroup', groupid);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t},\n\n\t\t/**\n\t\t * Dispatch default quota set request\n\t\t * \n\t\t * @param {string|Object} quota Quota in readable format '5 GB' or Object {id: '5 GB', label: '5GB'}\n\t\t * @returns {string}\n\t\t */\n\t\tsetDefaultQuota(quota = 'none') {\n\t\t\tthis.$store.dispatch('setAppConfig', {\n\t\t\t\tapp: 'files',\n\t\t\t\tkey: 'default_quota',\n\t\t\t\t// ensure we only send the preset id\n\t\t\t\tvalue: quota.id ? quota.id : quota\n\t\t\t}).then(() => {\n\t\t\t\tif (typeof quota !== 'object') {\n\t\t\t\t\tquota = {id: quota, label: quota};\n\t\t\t\t}\n\t\t\t\tthis.defaultQuota = quota;\n\t\t\t});\n\t\t},\n\n\t\t/**\n\t\t * Validate quota string to make sure it's a valid human file size\n\t\t *\n\t\t * @param {string} quota Quota in readable format '5 GB'\n\t\t * @returns {Promise|boolean}\n\t\t */\n\t\tvalidateQuota(quota) {\n\t\t\t// only used for new presets sent through @Tag\n\t\t\tlet validQuota = OC.Util.computerFileSize(quota);\n\t\t\tif (validQuota === null) {\n\t\t\t\treturn this.setDefaultQuota('none');\n\t\t\t} else {\n\t\t\t\t// unify format output\n\t\t\t\treturn this.setDefaultQuota(OC.Util.humanFileSize(OC.Util.computerFileSize(quota)));\n\t\t\t}\n\t\t\t// if no valid do not change\n\t\t\treturn false;\n\t\t},\n\n\t\t/**\n\t\t * Register a new action for the user menu\n\t\t * \n\t\t * @param {string} icon the icon class\n\t\t * @param {string} text the text to display\n\t\t * @param {function} action the function to run\n\t\t */\n\t\tregisterAction(icon, text, action) {\n\t\t\tthis.externalActions.push({\n\t\t\t\ticon: icon,\n\t\t\t\ttext: text,\n\t\t\t\taction: action\n\t\t\t});\n\t\t\treturn this.externalActions;\n\t\t},\n\n\t\t/**\n\t\t * Create a new group\n\t\t * \n\t\t * @param {Object} event The form submit event\n\t\t */\n\t\tcreateGroup(event) {\n\t\t\tlet gid = event.target[0].value;\n\t\t\tthis.loadingAddGroup = true;\n\t\t\tthis.$store.dispatch('addGroup', gid)\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.showAddGroupEntry = false;\n\t\t\t\t\tthis.loadingAddGroup = false;\n\t\t\t\t\tthis.$router.push({\n\t\t\t\t\t\tname: 'group',\n\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\tselectedGroup: gid\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\tthis.loadingAddGroup = false;\n\t\t\t\t});\n\t\t}\n\t},\n\tcomputed: {\n\t\tusers() {\n\t\t\treturn this.$store.getters.getUsers;\n\t\t},\n\t\tusersOffset() {\n\t\t\treturn this.$store.getters.getUsersOffset;\n\t\t},\n\t\tusersLimit() {\n\t\t\treturn this.$store.getters.getUsersLimit;\n\t\t},\n\n\t\t// Local settings\n\t\tshowLanguages: {\n\t\t\tget: function() {return this.getLocalstorage('showLanguages')},\n\t\t\tset: function(status) {\n\t\t\t\tthis.setLocalStorage('showLanguages', status);\n\t\t\t}\n\t\t},\n\t\tshowLastLogin: {\n\t\t\tget: function() {return this.getLocalstorage('showLastLogin')},\n\t\t\tset: function(status) {\n\t\t\t\tthis.setLocalStorage('showLastLogin', status);\n\t\t\t}\n\t\t},\n\t\tshowUserBackend: {\n\t\t\tget: function() {return this.getLocalstorage('showUserBackend')},\n\t\t\tset: function(status) {\n\t\t\t\tthis.setLocalStorage('showUserBackend', status);\n\t\t\t}\n\t\t},\n\t\tshowStoragePath: {\n\t\t\tget: function() {return this.getLocalstorage('showStoragePath')},\n\t\t\tset: function(status) {\n\t\t\t\tthis.setLocalStorage('showStoragePath', status);\n\t\t\t}\n\t\t},\n\n\t\tuserCount() {\n\t\t\treturn this.$store.getters.getUserCount;\n\t\t},\n\t\tsettings() {\n\t\t\treturn this.$store.getters.getServerData;\n\t\t},\n\n\t\t// default quota\n\t\tquotaOptions() {\n\t\t\t// convert the preset array into objects\n\t\t\tlet quotaPreset = this.settings.quotaPreset.reduce((acc, cur) => acc.concat({id:cur, label:cur}), []);\n\t\t\t// add default presets\n\t\t\tquotaPreset.unshift(this.unlimitedQuota);\n\t\t\treturn quotaPreset;\n\t\t},\n\t\t// mapping saved values to objects\n\t\tdefaultQuota: {\n\t\t\tget: function() {\n\t\t\t\tif (this.selectedQuota !== false) {\n\t\t\t\t\treturn this.selectedQuota;\n\t\t\t\t}\n\t\t\t\tif (this.settings.defaultQuota !== this.unlimitedQuota.id && OC.Util.computerFileSize(this.settings.defaultQuota) >= 0) {\n\t\t\t\t\t// if value is valid, let's map the quotaOptions or return custom quota\n\t\t\t\t\treturn {id:this.settings.defaultQuota, label:this.settings.defaultQuota};\n\t\t\t\t}\n\t\t\t\treturn this.unlimitedQuota; // unlimited\n\t\t\t},\n\t\t\tset: function(quota) {\n\t\t\t\tthis.selectedQuota = quota;\n\t\t\t}\n\t\t\t\n\t\t},\n\n\t\t// BUILD APP NAVIGATION MENU OBJECT\n\t\tmenu() {\n\t\t\t// Data provided php side\n\t\t\tlet self = this;\n\t\t\tlet groups = this.$store.getters.getGroups;\n\t\t\tgroups = Array.isArray(groups) ? groups : [];\n\n\t\t\t// Map groups\n\t\t\tgroups = groups.map(group => {\n\t\t\t\tlet item = {};\n\t\t\t\titem.id = group.id.replace(' ', '_');\n\t\t\t\titem.key = item.id;\n\t\t\t\titem.utils = {}\n\n\t\t\t\t// router link to\n\t\t\t\titem.router = {\n\t\t\t\t\tname: 'group',\n\t\t\t\t\tparams: {selectedGroup: group.id}\n\t\t\t\t};\n\n\t\t\t\t// group name\n\t\t\t\titem.text = group.name;\n\t\t\t\titem.title = group.name;\n\n\t\t\t\t// users count for all groups\n\t\t\t\tif (group.usercount - group.disabled > 0 || group.usercount === -1) {\n\t\t\t\t\titem.utils.counter = group.usercount - group.disabled;\n\t\t\t\t}\n\n\t\t\t\tif (item.id !== 'admin' && item.id !== 'disabled' && this.settings.isAdmin) {\n\t\t\t\t\t// add delete button on real groups\n\t\t\t\t\titem.utils.actions = [{\n\t\t\t\t\t\ticon: 'icon-delete',\n\t\t\t\t\t\ttext: t('settings', 'Remove group'),\n\t\t\t\t\t\taction: function() {\n\t\t\t\t\t\t\tself.removeGroup(group.id)\n\t\t\t\t\t\t}\n\t\t\t\t\t}];\n\t\t\t\t};\n\t\t\t\treturn item;\n\t\t\t});\n\n\t\t\t// Every item is added on top of the array, so we're going backward\n\t\t\t// Groups, separator, disabled, admin, everyone\n\n\t\t\t// Add separator\n\t\t\tlet realGroups = groups.find((group) => {return group.id !== 'disabled' && group.id !== 'admin'});\n\t\t\trealGroups = typeof realGroups === 'undefined' ? [] : realGroups;\n\t\t\trealGroups = Array.isArray(realGroups) ? realGroups : [realGroups];\n\t\t\tif (realGroups.length > 0) {\n\t\t\t\tlet separator = {\n\t\t\t\t\tcaption: true,\n\t\t\t\t\ttext: t('settings', 'Groups')\n\t\t\t\t};\n\t\t\t\tgroups.unshift(separator);\n\t\t\t}\n\n\t\t\t// Adjust admin and disabled groups\n\t\t\tlet adminGroup = groups.find(group => group.id == 'admin');\n\t\t\tlet disabledGroup = groups.find(group => group.id == 'disabled');\n\n\t\t\t// filter out admin and disabled\n\t\t\tgroups = groups.filter(group => ['admin', 'disabled'].indexOf(group.id) === -1);\n\n\t\t\tif (adminGroup && adminGroup.text) {\n\t\t\t\tadminGroup.text = t('settings', 'Admins');\t// rename admin group\n\t\t\t\tadminGroup.icon = 'icon-user-admin';\t\t// set icon\n\t\t\t\tgroups.unshift(adminGroup);\t\t\t\t\t// add admin group if present\n\t\t\t}\n\t\t\tif (disabledGroup && disabledGroup.text) {\n\t\t\t\tdisabledGroup.text = t('settings', 'Disabled users');\t// rename disabled group\n\t\t\t\tdisabledGroup.icon = 'icon-disabled-users';\t\t\t\t// set icon\n\t\t\t\tif (disabledGroup.utils && (\n\t\t\t\t\t disabledGroup.utils.counter > 0\t\t\t\t\t// add disabled if not empty \n\t\t\t\t\t|| disabledGroup.utils.counter === -1)\t\t\t\t// add disabled if ldap enabled \n\t\t\t\t) {\n\t\t\t\t\tgroups.unshift(disabledGroup);\t\t\t\t\t\t\n\t\t\t\t}\n\t\t\t}\n\n\n\t\t\t// Add everyone group\n\t\t\tlet everyoneGroup = {\n\t\t\t\tid: 'everyone',\n\t\t\t\tkey: 'everyone',\n\t\t\t\ticon: 'icon-contacts-dark',\n\t\t\t\trouter: {name:'users'},\n\t\t\t\ttext: t('settings', 'Everyone'),\n\t\t\t};\n\t\t\t// users count\n\t\t\tif (this.userCount > 0) {\n\t\t\t\tVue.set(everyoneGroup, 'utils', {\n\t\t\t\t\tcounter: this.userCount\n\t\t\t\t});\n\t\t\t}\n\t\t\tgroups.unshift(everyoneGroup);\n\n\t\t\tlet addGroup = {\n\t\t\t\tid: 'addgroup',\n\t\t\t\tkey: 'addgroup',\n\t\t\t\ticon: 'icon-add',\n\t\t\t\ttext: t('settings', 'Add group'),\n\t\t\t\tclasses: this.loadingAddGroup ? 'icon-loading-small' : ''\n\t\t\t};\n\t\t\tif (this.showAddGroupEntry) {\n\t\t\t\tVue.set(addGroup, 'edit', {\n\t\t\t\t\ttext: t('settings', 'Add group'),\n\t\t\t\t\taction: this.createGroup,\n\t\t\t\t\treset: function() {\n\t\t\t\t\t\tself.showAddGroupEntry = false\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\taddGroup.classes = 'editing';\n\t\t\t} else {\n\t\t\t\tVue.set(addGroup, 'action', function() {\n\t\t\t\t\tself.showAddGroupEntry = true\n\t\t\t\t\t// focus input\n\t\t\t\t\tVue.nextTick(() => {\n\t\t\t\t\t\twindow.addgroup.querySelector('form > input[type=\"text\"]').focus()\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t}\n\t\t\tgroups.unshift(addGroup);\n\n\t\t\treturn groups;\n\t\t},\n\t}\n}\n</script>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Users.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Users.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Users.vue?vue&type=template&id=f1a02516&\"\nimport script from \"./Users.vue?vue&type=script&lang=js&\"\nexport * from \"./Users.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/apps/settings/js/vue-settings-admin-security.js b/apps/settings/js/vue-settings-admin-security.js new file mode 100644 index 00000000000..c513b820cec --- /dev/null +++ b/apps/settings/js/vue-settings-admin-security.js @@ -0,0 +1,880 @@ +!function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="/js/",n(n.s=64)}([,function(t,e,n){"use strict";var r=n(7),i=n(26),o=Object.prototype.toString;function a(t){return"[object Array]"===o.call(t)}function s(t){return null!==t&&"object"==typeof t}function c(t){return"[object Function]"===o.call(t)}function u(t,e){if(null!=t)if("object"!=typeof t&&(t=[t]),a(t))for(var n=0,r=t.length;n<r;n++)e.call(null,t[n],n,t);else for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&e.call(null,t[i],i,t)}t.exports={isArray:a,isArrayBuffer:function(t){return"[object ArrayBuffer]"===o.call(t)},isBuffer:i,isFormData:function(t){return"undefined"!=typeof FormData&&t instanceof FormData},isArrayBufferView:function(t){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(t):t&&t.buffer&&t.buffer instanceof ArrayBuffer},isString:function(t){return"string"==typeof t},isNumber:function(t){return"number"==typeof t},isObject:s,isUndefined:function(t){return void 0===t},isDate:function(t){return"[object Date]"===o.call(t)},isFile:function(t){return"[object File]"===o.call(t)},isBlob:function(t){return"[object Blob]"===o.call(t)},isFunction:c,isStream:function(t){return s(t)&&c(t.pipe)},isURLSearchParams:function(t){return"undefined"!=typeof URLSearchParams&&t instanceof URLSearchParams},isStandardBrowserEnv:function(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)},forEach:u,merge:function t(){var e={};function n(n,r){"object"==typeof e[r]&&"object"==typeof n?e[r]=t(e[r],n):e[r]=n}for(var r=0,i=arguments.length;r<i;r++)u(arguments[r],n);return e},deepMerge:function t(){var e={};function n(n,r){"object"==typeof e[r]&&"object"==typeof n?e[r]=t(e[r],n):e[r]="object"==typeof n?t({},n):n}for(var r=0,i=arguments.length;r<i;r++)u(arguments[r],n);return e},extend:function(t,e,n){return u(e,(function(e,i){t[i]=n&&"function"==typeof e?r(e,n):e})),t},trim:function(t){return t.replace(/^\s*/,"").replace(/\s*$/,"")}}},function(t,e,n){"use strict";n.r(e),function(t,n){ +/*! + * Vue.js v2.6.10 + * (c) 2014-2019 Evan You + * Released under the MIT License. + */ +var r=Object.freeze({});function i(t){return null==t}function o(t){return null!=t}function a(t){return!0===t}function s(t){return"string"==typeof t||"number"==typeof t||"symbol"==typeof t||"boolean"==typeof t}function c(t){return null!==t&&"object"==typeof t}var u=Object.prototype.toString;function l(t){return"[object Object]"===u.call(t)}function f(t){return"[object RegExp]"===u.call(t)}function d(t){var e=parseFloat(String(t));return e>=0&&Math.floor(e)===e&&isFinite(t)}function p(t){return o(t)&&"function"==typeof t.then&&"function"==typeof t.catch}function h(t){return null==t?"":Array.isArray(t)||l(t)&&t.toString===u?JSON.stringify(t,null,2):String(t)}function v(t){var e=parseFloat(t);return isNaN(e)?t:e}function m(t,e){for(var n=Object.create(null),r=t.split(","),i=0;i<r.length;i++)n[r[i]]=!0;return e?function(t){return n[t.toLowerCase()]}:function(t){return n[t]}}m("slot,component",!0);var A=m("key,ref,slot,slot-scope,is");function g(t,e){if(t.length){var n=t.indexOf(e);if(n>-1)return t.splice(n,1)}}var y=Object.prototype.hasOwnProperty;function b(t,e){return y.call(t,e)}function _(t){var e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}var x=/-(\w)/g,w=_((function(t){return t.replace(x,(function(t,e){return e?e.toUpperCase():""}))})),C=_((function(t){return t.charAt(0).toUpperCase()+t.slice(1)})),k=/\B([A-Z])/g,T=_((function(t){return t.replace(k,"-$1").toLowerCase()}));var E=Function.prototype.bind?function(t,e){return t.bind(e)}:function(t,e){function n(n){var r=arguments.length;return r?r>1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n};function S(t,e){e=e||0;for(var n=t.length-e,r=new Array(n);n--;)r[n]=t[n+e];return r}function O(t,e){for(var n in e)t[n]=e[n];return t}function M(t){for(var e={},n=0;n<t.length;n++)t[n]&&O(e,t[n]);return e}function D(t,e,n){}var I=function(t,e,n){return!1},B=function(t){return t};function N(t,e){if(t===e)return!0;var n=c(t),r=c(e);if(!n||!r)return!n&&!r&&String(t)===String(e);try{var i=Array.isArray(t),o=Array.isArray(e);if(i&&o)return t.length===e.length&&t.every((function(t,n){return N(t,e[n])}));if(t instanceof Date&&e instanceof Date)return t.getTime()===e.getTime();if(i||o)return!1;var a=Object.keys(t),s=Object.keys(e);return a.length===s.length&&a.every((function(n){return N(t[n],e[n])}))}catch(t){return!1}}function j(t,e){for(var n=0;n<t.length;n++)if(N(t[n],e))return n;return-1}function L(t){var e=!1;return function(){e||(e=!0,t.apply(this,arguments))}}var P="data-server-rendered",$=["component","directive","filter"],R=["beforeCreate","created","beforeMount","mounted","beforeUpdate","updated","beforeDestroy","destroyed","activated","deactivated","errorCaptured","serverPrefetch"],F={optionMergeStrategies:Object.create(null),silent:!1,productionTip:!1,devtools:!1,performance:!1,errorHandler:null,warnHandler:null,ignoredElements:[],keyCodes:Object.create(null),isReservedTag:I,isReservedAttr:I,isUnknownElement:I,getTagNamespace:D,parsePlatformTagName:B,mustUseProp:I,async:!0,_lifecycleHooks:R},z=/a-zA-Z\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C-\u200D\u203F-\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD/;function U(t,e,n,r){Object.defineProperty(t,e,{value:n,enumerable:!!r,writable:!0,configurable:!0})}var H=new RegExp("[^"+z.source+".$_\\d]");var Y,V="__proto__"in{},G="undefined"!=typeof window,Q="undefined"!=typeof WXEnvironment&&!!WXEnvironment.platform,W=Q&&WXEnvironment.platform.toLowerCase(),q=G&&window.navigator.userAgent.toLowerCase(),Z=q&&/msie|trident/.test(q),X=q&&q.indexOf("msie 9.0")>0,K=q&&q.indexOf("edge/")>0,J=(q&&q.indexOf("android"),q&&/iphone|ipad|ipod|ios/.test(q)||"ios"===W),tt=(q&&/chrome\/\d+/.test(q),q&&/phantomjs/.test(q),q&&q.match(/firefox\/(\d+)/)),et={}.watch,nt=!1;if(G)try{var rt={};Object.defineProperty(rt,"passive",{get:function(){nt=!0}}),window.addEventListener("test-passive",null,rt)}catch(t){}var it=function(){return void 0===Y&&(Y=!G&&!Q&&void 0!==t&&(t.process&&"server"===t.process.env.VUE_ENV)),Y},ot=G&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function at(t){return"function"==typeof t&&/native code/.test(t.toString())}var st,ct="undefined"!=typeof Symbol&&at(Symbol)&&"undefined"!=typeof Reflect&&at(Reflect.ownKeys);st="undefined"!=typeof Set&&at(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var ut=D,lt=0,ft=function(){this.id=lt++,this.subs=[]};ft.prototype.addSub=function(t){this.subs.push(t)},ft.prototype.removeSub=function(t){g(this.subs,t)},ft.prototype.depend=function(){ft.target&&ft.target.addDep(this)},ft.prototype.notify=function(){var t=this.subs.slice();for(var e=0,n=t.length;e<n;e++)t[e].update()},ft.target=null;var dt=[];function pt(t){dt.push(t),ft.target=t}function ht(){dt.pop(),ft.target=dt[dt.length-1]}var vt=function(t,e,n,r,i,o,a,s){this.tag=t,this.data=e,this.children=n,this.text=r,this.elm=i,this.ns=void 0,this.context=o,this.fnContext=void 0,this.fnOptions=void 0,this.fnScopeId=void 0,this.key=e&&e.key,this.componentOptions=a,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1,this.asyncFactory=s,this.asyncMeta=void 0,this.isAsyncPlaceholder=!1},mt={child:{configurable:!0}};mt.child.get=function(){return this.componentInstance},Object.defineProperties(vt.prototype,mt);var At=function(t){void 0===t&&(t="");var e=new vt;return e.text=t,e.isComment=!0,e};function gt(t){return new vt(void 0,void 0,void 0,String(t))}function yt(t){var e=new vt(t.tag,t.data,t.children&&t.children.slice(),t.text,t.elm,t.context,t.componentOptions,t.asyncFactory);return e.ns=t.ns,e.isStatic=t.isStatic,e.key=t.key,e.isComment=t.isComment,e.fnContext=t.fnContext,e.fnOptions=t.fnOptions,e.fnScopeId=t.fnScopeId,e.asyncMeta=t.asyncMeta,e.isCloned=!0,e}var bt=Array.prototype,_t=Object.create(bt);["push","pop","shift","unshift","splice","sort","reverse"].forEach((function(t){var e=bt[t];U(_t,t,(function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];var i,o=e.apply(this,n),a=this.__ob__;switch(t){case"push":case"unshift":i=n;break;case"splice":i=n.slice(2)}return i&&a.observeArray(i),a.dep.notify(),o}))}));var xt=Object.getOwnPropertyNames(_t),wt=!0;function Ct(t){wt=t}var kt=function(t){this.value=t,this.dep=new ft,this.vmCount=0,U(t,"__ob__",this),Array.isArray(t)?(V?function(t,e){t.__proto__=e}(t,_t):function(t,e,n){for(var r=0,i=n.length;r<i;r++){var o=n[r];U(t,o,e[o])}}(t,_t,xt),this.observeArray(t)):this.walk(t)};function Tt(t,e){var n;if(c(t)&&!(t instanceof vt))return b(t,"__ob__")&&t.__ob__ instanceof kt?n=t.__ob__:wt&&!it()&&(Array.isArray(t)||l(t))&&Object.isExtensible(t)&&!t._isVue&&(n=new kt(t)),e&&n&&n.vmCount++,n}function Et(t,e,n,r,i){var o=new ft,a=Object.getOwnPropertyDescriptor(t,e);if(!a||!1!==a.configurable){var s=a&&a.get,c=a&&a.set;s&&!c||2!==arguments.length||(n=t[e]);var u=!i&&Tt(n);Object.defineProperty(t,e,{enumerable:!0,configurable:!0,get:function(){var e=s?s.call(t):n;return ft.target&&(o.depend(),u&&(u.dep.depend(),Array.isArray(e)&&function t(e){for(var n=void 0,r=0,i=e.length;r<i;r++)(n=e[r])&&n.__ob__&&n.__ob__.dep.depend(),Array.isArray(n)&&t(n)}(e))),e},set:function(e){var r=s?s.call(t):n;e===r||e!=e&&r!=r||s&&!c||(c?c.call(t,e):n=e,u=!i&&Tt(e),o.notify())}})}}function St(t,e,n){if(Array.isArray(t)&&d(e))return t.length=Math.max(t.length,e),t.splice(e,1,n),n;if(e in t&&!(e in Object.prototype))return t[e]=n,n;var r=t.__ob__;return t._isVue||r&&r.vmCount?n:r?(Et(r.value,e,n),r.dep.notify(),n):(t[e]=n,n)}function Ot(t,e){if(Array.isArray(t)&&d(e))t.splice(e,1);else{var n=t.__ob__;t._isVue||n&&n.vmCount||b(t,e)&&(delete t[e],n&&n.dep.notify())}}kt.prototype.walk=function(t){for(var e=Object.keys(t),n=0;n<e.length;n++)Et(t,e[n])},kt.prototype.observeArray=function(t){for(var e=0,n=t.length;e<n;e++)Tt(t[e])};var Mt=F.optionMergeStrategies;function Dt(t,e){if(!e)return t;for(var n,r,i,o=ct?Reflect.ownKeys(e):Object.keys(e),a=0;a<o.length;a++)"__ob__"!==(n=o[a])&&(r=t[n],i=e[n],b(t,n)?r!==i&&l(r)&&l(i)&&Dt(r,i):St(t,n,i));return t}function It(t,e,n){return n?function(){var r="function"==typeof e?e.call(n,n):e,i="function"==typeof t?t.call(n,n):t;return r?Dt(r,i):i}:e?t?function(){return Dt("function"==typeof e?e.call(this,this):e,"function"==typeof t?t.call(this,this):t)}:e:t}function Bt(t,e){var n=e?t?t.concat(e):Array.isArray(e)?e:[e]:t;return n?function(t){for(var e=[],n=0;n<t.length;n++)-1===e.indexOf(t[n])&&e.push(t[n]);return e}(n):n}function Nt(t,e,n,r){var i=Object.create(t||null);return e?O(i,e):i}Mt.data=function(t,e,n){return n?It(t,e,n):e&&"function"!=typeof e?t:It(t,e)},R.forEach((function(t){Mt[t]=Bt})),$.forEach((function(t){Mt[t+"s"]=Nt})),Mt.watch=function(t,e,n,r){if(t===et&&(t=void 0),e===et&&(e=void 0),!e)return Object.create(t||null);if(!t)return e;var i={};for(var o in O(i,t),e){var a=i[o],s=e[o];a&&!Array.isArray(a)&&(a=[a]),i[o]=a?a.concat(s):Array.isArray(s)?s:[s]}return i},Mt.props=Mt.methods=Mt.inject=Mt.computed=function(t,e,n,r){if(!t)return e;var i=Object.create(null);return O(i,t),e&&O(i,e),i},Mt.provide=It;var jt=function(t,e){return void 0===e?t:e};function Lt(t,e,n){if("function"==typeof e&&(e=e.options),function(t,e){var n=t.props;if(n){var r,i,o={};if(Array.isArray(n))for(r=n.length;r--;)"string"==typeof(i=n[r])&&(o[w(i)]={type:null});else if(l(n))for(var a in n)i=n[a],o[w(a)]=l(i)?i:{type:i};else 0;t.props=o}}(e),function(t,e){var n=t.inject;if(n){var r=t.inject={};if(Array.isArray(n))for(var i=0;i<n.length;i++)r[n[i]]={from:n[i]};else if(l(n))for(var o in n){var a=n[o];r[o]=l(a)?O({from:o},a):{from:a}}else 0}}(e),function(t){var e=t.directives;if(e)for(var n in e){var r=e[n];"function"==typeof r&&(e[n]={bind:r,update:r})}}(e),!e._base&&(e.extends&&(t=Lt(t,e.extends,n)),e.mixins))for(var r=0,i=e.mixins.length;r<i;r++)t=Lt(t,e.mixins[r],n);var o,a={};for(o in t)s(o);for(o in e)b(t,o)||s(o);function s(r){var i=Mt[r]||jt;a[r]=i(t[r],e[r],n,r)}return a}function Pt(t,e,n,r){if("string"==typeof n){var i=t[e];if(b(i,n))return i[n];var o=w(n);if(b(i,o))return i[o];var a=C(o);return b(i,a)?i[a]:i[n]||i[o]||i[a]}}function $t(t,e,n,r){var i=e[t],o=!b(n,t),a=n[t],s=zt(Boolean,i.type);if(s>-1)if(o&&!b(i,"default"))a=!1;else if(""===a||a===T(t)){var c=zt(String,i.type);(c<0||s<c)&&(a=!0)}if(void 0===a){a=function(t,e,n){if(!b(e,"default"))return;var r=e.default;0;if(t&&t.$options.propsData&&void 0===t.$options.propsData[n]&&void 0!==t._props[n])return t._props[n];return"function"==typeof r&&"Function"!==Rt(e.type)?r.call(t):r}(r,i,t);var u=wt;Ct(!0),Tt(a),Ct(u)}return a}function Rt(t){var e=t&&t.toString().match(/^\s*function (\w+)/);return e?e[1]:""}function Ft(t,e){return Rt(t)===Rt(e)}function zt(t,e){if(!Array.isArray(e))return Ft(e,t)?0:-1;for(var n=0,r=e.length;n<r;n++)if(Ft(e[n],t))return n;return-1}function Ut(t,e,n){pt();try{if(e)for(var r=e;r=r.$parent;){var i=r.$options.errorCaptured;if(i)for(var o=0;o<i.length;o++)try{if(!1===i[o].call(r,t,e,n))return}catch(t){Yt(t,r,"errorCaptured hook")}}Yt(t,e,n)}finally{ht()}}function Ht(t,e,n,r,i){var o;try{(o=n?t.apply(e,n):t.call(e))&&!o._isVue&&p(o)&&!o._handled&&(o.catch((function(t){return Ut(t,r,i+" (Promise/async)")})),o._handled=!0)}catch(t){Ut(t,r,i)}return o}function Yt(t,e,n){if(F.errorHandler)try{return F.errorHandler.call(null,t,e,n)}catch(e){e!==t&&Vt(e,null,"config.errorHandler")}Vt(t,e,n)}function Vt(t,e,n){if(!G&&!Q||"undefined"==typeof console)throw t;console.error(t)}var Gt,Qt=!1,Wt=[],qt=!1;function Zt(){qt=!1;var t=Wt.slice(0);Wt.length=0;for(var e=0;e<t.length;e++)t[e]()}if("undefined"!=typeof Promise&&at(Promise)){var Xt=Promise.resolve();Gt=function(){Xt.then(Zt),J&&setTimeout(D)},Qt=!0}else if(Z||"undefined"==typeof MutationObserver||!at(MutationObserver)&&"[object MutationObserverConstructor]"!==MutationObserver.toString())Gt=void 0!==n&&at(n)?function(){n(Zt)}:function(){setTimeout(Zt,0)};else{var Kt=1,Jt=new MutationObserver(Zt),te=document.createTextNode(String(Kt));Jt.observe(te,{characterData:!0}),Gt=function(){Kt=(Kt+1)%2,te.data=String(Kt)},Qt=!0}function ee(t,e){var n;if(Wt.push((function(){if(t)try{t.call(e)}catch(t){Ut(t,e,"nextTick")}else n&&n(e)})),qt||(qt=!0,Gt()),!t&&"undefined"!=typeof Promise)return new Promise((function(t){n=t}))}var ne=new st;function re(t){!function t(e,n){var r,i;var o=Array.isArray(e);if(!o&&!c(e)||Object.isFrozen(e)||e instanceof vt)return;if(e.__ob__){var a=e.__ob__.dep.id;if(n.has(a))return;n.add(a)}if(o)for(r=e.length;r--;)t(e[r],n);else for(i=Object.keys(e),r=i.length;r--;)t(e[i[r]],n)}(t,ne),ne.clear()}var ie=_((function(t){var e="&"===t.charAt(0),n="~"===(t=e?t.slice(1):t).charAt(0),r="!"===(t=n?t.slice(1):t).charAt(0);return{name:t=r?t.slice(1):t,once:n,capture:r,passive:e}}));function oe(t,e){function n(){var t=arguments,r=n.fns;if(!Array.isArray(r))return Ht(r,null,arguments,e,"v-on handler");for(var i=r.slice(),o=0;o<i.length;o++)Ht(i[o],null,t,e,"v-on handler")}return n.fns=t,n}function ae(t,e,n,r,o,s){var c,u,l,f;for(c in t)u=t[c],l=e[c],f=ie(c),i(u)||(i(l)?(i(u.fns)&&(u=t[c]=oe(u,s)),a(f.once)&&(u=t[c]=o(f.name,u,f.capture)),n(f.name,u,f.capture,f.passive,f.params)):u!==l&&(l.fns=u,t[c]=l));for(c in e)i(t[c])&&r((f=ie(c)).name,e[c],f.capture)}function se(t,e,n){var r;t instanceof vt&&(t=t.data.hook||(t.data.hook={}));var s=t[e];function c(){n.apply(this,arguments),g(r.fns,c)}i(s)?r=oe([c]):o(s.fns)&&a(s.merged)?(r=s).fns.push(c):r=oe([s,c]),r.merged=!0,t[e]=r}function ce(t,e,n,r,i){if(o(e)){if(b(e,n))return t[n]=e[n],i||delete e[n],!0;if(b(e,r))return t[n]=e[r],i||delete e[r],!0}return!1}function ue(t){return s(t)?[gt(t)]:Array.isArray(t)?function t(e,n){var r=[];var c,u,l,f;for(c=0;c<e.length;c++)i(u=e[c])||"boolean"==typeof u||(l=r.length-1,f=r[l],Array.isArray(u)?u.length>0&&(le((u=t(u,(n||"")+"_"+c))[0])&&le(f)&&(r[l]=gt(f.text+u[0].text),u.shift()),r.push.apply(r,u)):s(u)?le(f)?r[l]=gt(f.text+u):""!==u&&r.push(gt(u)):le(u)&&le(f)?r[l]=gt(f.text+u.text):(a(e._isVList)&&o(u.tag)&&i(u.key)&&o(n)&&(u.key="__vlist"+n+"_"+c+"__"),r.push(u)));return r}(t):void 0}function le(t){return o(t)&&o(t.text)&&!1===t.isComment}function fe(t,e){if(t){for(var n=Object.create(null),r=ct?Reflect.ownKeys(t):Object.keys(t),i=0;i<r.length;i++){var o=r[i];if("__ob__"!==o){for(var a=t[o].from,s=e;s;){if(s._provided&&b(s._provided,a)){n[o]=s._provided[a];break}s=s.$parent}if(!s)if("default"in t[o]){var c=t[o].default;n[o]="function"==typeof c?c.call(e):c}else 0}}return n}}function de(t,e){if(!t||!t.length)return{};for(var n={},r=0,i=t.length;r<i;r++){var o=t[r],a=o.data;if(a&&a.attrs&&a.attrs.slot&&delete a.attrs.slot,o.context!==e&&o.fnContext!==e||!a||null==a.slot)(n.default||(n.default=[])).push(o);else{var s=a.slot,c=n[s]||(n[s]=[]);"template"===o.tag?c.push.apply(c,o.children||[]):c.push(o)}}for(var u in n)n[u].every(pe)&&delete n[u];return n}function pe(t){return t.isComment&&!t.asyncFactory||" "===t.text}function he(t,e,n){var i,o=Object.keys(e).length>0,a=t?!!t.$stable:!o,s=t&&t.$key;if(t){if(t._normalized)return t._normalized;if(a&&n&&n!==r&&s===n.$key&&!o&&!n.$hasNormal)return n;for(var c in i={},t)t[c]&&"$"!==c[0]&&(i[c]=ve(e,c,t[c]))}else i={};for(var u in e)u in i||(i[u]=me(e,u));return t&&Object.isExtensible(t)&&(t._normalized=i),U(i,"$stable",a),U(i,"$key",s),U(i,"$hasNormal",o),i}function ve(t,e,n){var r=function(){var t=arguments.length?n.apply(null,arguments):n({});return(t=t&&"object"==typeof t&&!Array.isArray(t)?[t]:ue(t))&&(0===t.length||1===t.length&&t[0].isComment)?void 0:t};return n.proxy&&Object.defineProperty(t,e,{get:r,enumerable:!0,configurable:!0}),r}function me(t,e){return function(){return t[e]}}function Ae(t,e){var n,r,i,a,s;if(Array.isArray(t)||"string"==typeof t)for(n=new Array(t.length),r=0,i=t.length;r<i;r++)n[r]=e(t[r],r);else if("number"==typeof t)for(n=new Array(t),r=0;r<t;r++)n[r]=e(r+1,r);else if(c(t))if(ct&&t[Symbol.iterator]){n=[];for(var u=t[Symbol.iterator](),l=u.next();!l.done;)n.push(e(l.value,n.length)),l=u.next()}else for(a=Object.keys(t),n=new Array(a.length),r=0,i=a.length;r<i;r++)s=a[r],n[r]=e(t[s],s,r);return o(n)||(n=[]),n._isVList=!0,n}function ge(t,e,n,r){var i,o=this.$scopedSlots[t];o?(n=n||{},r&&(n=O(O({},r),n)),i=o(n)||e):i=this.$slots[t]||e;var a=n&&n.slot;return a?this.$createElement("template",{slot:a},i):i}function ye(t){return Pt(this.$options,"filters",t)||B}function be(t,e){return Array.isArray(t)?-1===t.indexOf(e):t!==e}function _e(t,e,n,r,i){var o=F.keyCodes[e]||n;return i&&r&&!F.keyCodes[e]?be(i,r):o?be(o,t):r?T(r)!==e:void 0}function xe(t,e,n,r,i){if(n)if(c(n)){var o;Array.isArray(n)&&(n=M(n));var a=function(a){if("class"===a||"style"===a||A(a))o=t;else{var s=t.attrs&&t.attrs.type;o=r||F.mustUseProp(e,s,a)?t.domProps||(t.domProps={}):t.attrs||(t.attrs={})}var c=w(a),u=T(a);c in o||u in o||(o[a]=n[a],i&&((t.on||(t.on={}))["update:"+a]=function(t){n[a]=t}))};for(var s in n)a(s)}else;return t}function we(t,e){var n=this._staticTrees||(this._staticTrees=[]),r=n[t];return r&&!e?r:(ke(r=n[t]=this.$options.staticRenderFns[t].call(this._renderProxy,null,this),"__static__"+t,!1),r)}function Ce(t,e,n){return ke(t,"__once__"+e+(n?"_"+n:""),!0),t}function ke(t,e,n){if(Array.isArray(t))for(var r=0;r<t.length;r++)t[r]&&"string"!=typeof t[r]&&Te(t[r],e+"_"+r,n);else Te(t,e,n)}function Te(t,e,n){t.isStatic=!0,t.key=e,t.isOnce=n}function Ee(t,e){if(e)if(l(e)){var n=t.on=t.on?O({},t.on):{};for(var r in e){var i=n[r],o=e[r];n[r]=i?[].concat(i,o):o}}else;return t}function Se(t,e,n,r){e=e||{$stable:!n};for(var i=0;i<t.length;i++){var o=t[i];Array.isArray(o)?Se(o,e,n):o&&(o.proxy&&(o.fn.proxy=!0),e[o.key]=o.fn)}return r&&(e.$key=r),e}function Oe(t,e){for(var n=0;n<e.length;n+=2){var r=e[n];"string"==typeof r&&r&&(t[e[n]]=e[n+1])}return t}function Me(t,e){return"string"==typeof t?e+t:t}function De(t){t._o=Ce,t._n=v,t._s=h,t._l=Ae,t._t=ge,t._q=N,t._i=j,t._m=we,t._f=ye,t._k=_e,t._b=xe,t._v=gt,t._e=At,t._u=Se,t._g=Ee,t._d=Oe,t._p=Me}function Ie(t,e,n,i,o){var s,c=this,u=o.options;b(i,"_uid")?(s=Object.create(i))._original=i:(s=i,i=i._original);var l=a(u._compiled),f=!l;this.data=t,this.props=e,this.children=n,this.parent=i,this.listeners=t.on||r,this.injections=fe(u.inject,i),this.slots=function(){return c.$slots||he(t.scopedSlots,c.$slots=de(n,i)),c.$slots},Object.defineProperty(this,"scopedSlots",{enumerable:!0,get:function(){return he(t.scopedSlots,this.slots())}}),l&&(this.$options=u,this.$slots=this.slots(),this.$scopedSlots=he(t.scopedSlots,this.$slots)),u._scopeId?this._c=function(t,e,n,r){var o=ze(s,t,e,n,r,f);return o&&!Array.isArray(o)&&(o.fnScopeId=u._scopeId,o.fnContext=i),o}:this._c=function(t,e,n,r){return ze(s,t,e,n,r,f)}}function Be(t,e,n,r,i){var o=yt(t);return o.fnContext=n,o.fnOptions=r,e.slot&&((o.data||(o.data={})).slot=e.slot),o}function Ne(t,e){for(var n in e)t[w(n)]=e[n]}De(Ie.prototype);var je={init:function(t,e){if(t.componentInstance&&!t.componentInstance._isDestroyed&&t.data.keepAlive){var n=t;je.prepatch(n,n)}else{(t.componentInstance=function(t,e){var n={_isComponent:!0,_parentVnode:t,parent:e},r=t.data.inlineTemplate;o(r)&&(n.render=r.render,n.staticRenderFns=r.staticRenderFns);return new t.componentOptions.Ctor(n)}(t,Xe)).$mount(e?t.elm:void 0,e)}},prepatch:function(t,e){var n=e.componentOptions;!function(t,e,n,i,o){0;var a=i.data.scopedSlots,s=t.$scopedSlots,c=!!(a&&!a.$stable||s!==r&&!s.$stable||a&&t.$scopedSlots.$key!==a.$key),u=!!(o||t.$options._renderChildren||c);t.$options._parentVnode=i,t.$vnode=i,t._vnode&&(t._vnode.parent=i);if(t.$options._renderChildren=o,t.$attrs=i.data.attrs||r,t.$listeners=n||r,e&&t.$options.props){Ct(!1);for(var l=t._props,f=t.$options._propKeys||[],d=0;d<f.length;d++){var p=f[d],h=t.$options.props;l[p]=$t(p,h,e,t)}Ct(!0),t.$options.propsData=e}n=n||r;var v=t.$options._parentListeners;t.$options._parentListeners=n,Ze(t,n,v),u&&(t.$slots=de(o,i.context),t.$forceUpdate());0}(e.componentInstance=t.componentInstance,n.propsData,n.listeners,e,n.children)},insert:function(t){var e,n=t.context,r=t.componentInstance;r._isMounted||(r._isMounted=!0,en(r,"mounted")),t.data.keepAlive&&(n._isMounted?((e=r)._inactive=!1,rn.push(e)):tn(r,!0))},destroy:function(t){var e=t.componentInstance;e._isDestroyed||(t.data.keepAlive?function t(e,n){if(n&&(e._directInactive=!0,Je(e)))return;if(!e._inactive){e._inactive=!0;for(var r=0;r<e.$children.length;r++)t(e.$children[r]);en(e,"deactivated")}}(e,!0):e.$destroy())}},Le=Object.keys(je);function Pe(t,e,n,s,u){if(!i(t)){var l=n.$options._base;if(c(t)&&(t=l.extend(t)),"function"==typeof t){var f;if(i(t.cid)&&void 0===(t=function(t,e){if(a(t.error)&&o(t.errorComp))return t.errorComp;if(o(t.resolved))return t.resolved;var n=He;n&&o(t.owners)&&-1===t.owners.indexOf(n)&&t.owners.push(n);if(a(t.loading)&&o(t.loadingComp))return t.loadingComp;if(n&&!o(t.owners)){var r=t.owners=[n],s=!0,u=null,l=null;n.$on("hook:destroyed",(function(){return g(r,n)}));var f=function(t){for(var e=0,n=r.length;e<n;e++)r[e].$forceUpdate();t&&(r.length=0,null!==u&&(clearTimeout(u),u=null),null!==l&&(clearTimeout(l),l=null))},d=L((function(n){t.resolved=Ye(n,e),s?r.length=0:f(!0)})),h=L((function(e){o(t.errorComp)&&(t.error=!0,f(!0))})),v=t(d,h);return c(v)&&(p(v)?i(t.resolved)&&v.then(d,h):p(v.component)&&(v.component.then(d,h),o(v.error)&&(t.errorComp=Ye(v.error,e)),o(v.loading)&&(t.loadingComp=Ye(v.loading,e),0===v.delay?t.loading=!0:u=setTimeout((function(){u=null,i(t.resolved)&&i(t.error)&&(t.loading=!0,f(!1))}),v.delay||200)),o(v.timeout)&&(l=setTimeout((function(){l=null,i(t.resolved)&&h(null)}),v.timeout)))),s=!1,t.loading?t.loadingComp:t.resolved}}(f=t,l)))return function(t,e,n,r,i){var o=At();return o.asyncFactory=t,o.asyncMeta={data:e,context:n,children:r,tag:i},o}(f,e,n,s,u);e=e||{},Cn(t),o(e.model)&&function(t,e){var n=t.model&&t.model.prop||"value",r=t.model&&t.model.event||"input";(e.attrs||(e.attrs={}))[n]=e.model.value;var i=e.on||(e.on={}),a=i[r],s=e.model.callback;o(a)?(Array.isArray(a)?-1===a.indexOf(s):a!==s)&&(i[r]=[s].concat(a)):i[r]=s}(t.options,e);var d=function(t,e,n){var r=e.options.props;if(!i(r)){var a={},s=t.attrs,c=t.props;if(o(s)||o(c))for(var u in r){var l=T(u);ce(a,c,u,l,!0)||ce(a,s,u,l,!1)}return a}}(e,t);if(a(t.options.functional))return function(t,e,n,i,a){var s=t.options,c={},u=s.props;if(o(u))for(var l in u)c[l]=$t(l,u,e||r);else o(n.attrs)&&Ne(c,n.attrs),o(n.props)&&Ne(c,n.props);var f=new Ie(n,c,a,i,t),d=s.render.call(null,f._c,f);if(d instanceof vt)return Be(d,n,f.parent,s,f);if(Array.isArray(d)){for(var p=ue(d)||[],h=new Array(p.length),v=0;v<p.length;v++)h[v]=Be(p[v],n,f.parent,s,f);return h}}(t,d,e,n,s);var h=e.on;if(e.on=e.nativeOn,a(t.options.abstract)){var v=e.slot;e={},v&&(e.slot=v)}!function(t){for(var e=t.hook||(t.hook={}),n=0;n<Le.length;n++){var r=Le[n],i=e[r],o=je[r];i===o||i&&i._merged||(e[r]=i?$e(o,i):o)}}(e);var m=t.options.name||u;return new vt("vue-component-"+t.cid+(m?"-"+m:""),e,void 0,void 0,void 0,n,{Ctor:t,propsData:d,listeners:h,tag:u,children:s},f)}}}function $e(t,e){var n=function(n,r){t(n,r),e(n,r)};return n._merged=!0,n}var Re=1,Fe=2;function ze(t,e,n,r,u,l){return(Array.isArray(n)||s(n))&&(u=r,r=n,n=void 0),a(l)&&(u=Fe),function(t,e,n,r,s){if(o(n)&&o(n.__ob__))return At();o(n)&&o(n.is)&&(e=n.is);if(!e)return At();0;Array.isArray(r)&&"function"==typeof r[0]&&((n=n||{}).scopedSlots={default:r[0]},r.length=0);s===Fe?r=ue(r):s===Re&&(r=function(t){for(var e=0;e<t.length;e++)if(Array.isArray(t[e]))return Array.prototype.concat.apply([],t);return t}(r));var u,l;if("string"==typeof e){var f;l=t.$vnode&&t.$vnode.ns||F.getTagNamespace(e),u=F.isReservedTag(e)?new vt(F.parsePlatformTagName(e),n,r,void 0,void 0,t):n&&n.pre||!o(f=Pt(t.$options,"components",e))?new vt(e,n,r,void 0,void 0,t):Pe(f,n,t,r,e)}else u=Pe(e,n,t,r);return Array.isArray(u)?u:o(u)?(o(l)&&function t(e,n,r){e.ns=n;"foreignObject"===e.tag&&(n=void 0,r=!0);if(o(e.children))for(var s=0,c=e.children.length;s<c;s++){var u=e.children[s];o(u.tag)&&(i(u.ns)||a(r)&&"svg"!==u.tag)&&t(u,n,r)}}(u,l),o(n)&&function(t){c(t.style)&&re(t.style);c(t.class)&&re(t.class)}(n),u):At()}(t,e,n,r,u)}var Ue,He=null;function Ye(t,e){return(t.__esModule||ct&&"Module"===t[Symbol.toStringTag])&&(t=t.default),c(t)?e.extend(t):t}function Ve(t){return t.isComment&&t.asyncFactory}function Ge(t){if(Array.isArray(t))for(var e=0;e<t.length;e++){var n=t[e];if(o(n)&&(o(n.componentOptions)||Ve(n)))return n}}function Qe(t,e){Ue.$on(t,e)}function We(t,e){Ue.$off(t,e)}function qe(t,e){var n=Ue;return function r(){var i=e.apply(null,arguments);null!==i&&n.$off(t,r)}}function Ze(t,e,n){Ue=t,ae(e,n||{},Qe,We,qe,t),Ue=void 0}var Xe=null;function Ke(t){var e=Xe;return Xe=t,function(){Xe=e}}function Je(t){for(;t&&(t=t.$parent);)if(t._inactive)return!0;return!1}function tn(t,e){if(e){if(t._directInactive=!1,Je(t))return}else if(t._directInactive)return;if(t._inactive||null===t._inactive){t._inactive=!1;for(var n=0;n<t.$children.length;n++)tn(t.$children[n]);en(t,"activated")}}function en(t,e){pt();var n=t.$options[e],r=e+" hook";if(n)for(var i=0,o=n.length;i<o;i++)Ht(n[i],t,null,t,r);t._hasHookEvent&&t.$emit("hook:"+e),ht()}var nn=[],rn=[],on={},an=!1,sn=!1,cn=0;var un=0,ln=Date.now;if(G&&!Z){var fn=window.performance;fn&&"function"==typeof fn.now&&ln()>document.createEvent("Event").timeStamp&&(ln=function(){return fn.now()})}function dn(){var t,e;for(un=ln(),sn=!0,nn.sort((function(t,e){return t.id-e.id})),cn=0;cn<nn.length;cn++)(t=nn[cn]).before&&t.before(),e=t.id,on[e]=null,t.run();var n=rn.slice(),r=nn.slice();cn=nn.length=rn.length=0,on={},an=sn=!1,function(t){for(var e=0;e<t.length;e++)t[e]._inactive=!0,tn(t[e],!0)}(n),function(t){var e=t.length;for(;e--;){var n=t[e],r=n.vm;r._watcher===n&&r._isMounted&&!r._isDestroyed&&en(r,"updated")}}(r),ot&&F.devtools&&ot.emit("flush")}var pn=0,hn=function(t,e,n,r,i){this.vm=t,i&&(t._watcher=this),t._watchers.push(this),r?(this.deep=!!r.deep,this.user=!!r.user,this.lazy=!!r.lazy,this.sync=!!r.sync,this.before=r.before):this.deep=this.user=this.lazy=this.sync=!1,this.cb=n,this.id=++pn,this.active=!0,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new st,this.newDepIds=new st,this.expression="","function"==typeof e?this.getter=e:(this.getter=function(t){if(!H.test(t)){var e=t.split(".");return function(t){for(var n=0;n<e.length;n++){if(!t)return;t=t[e[n]]}return t}}}(e),this.getter||(this.getter=D)),this.value=this.lazy?void 0:this.get()};hn.prototype.get=function(){var t;pt(this);var e=this.vm;try{t=this.getter.call(e,e)}catch(t){if(!this.user)throw t;Ut(t,e,'getter for watcher "'+this.expression+'"')}finally{this.deep&&re(t),ht(),this.cleanupDeps()}return t},hn.prototype.addDep=function(t){var e=t.id;this.newDepIds.has(e)||(this.newDepIds.add(e),this.newDeps.push(t),this.depIds.has(e)||t.addSub(this))},hn.prototype.cleanupDeps=function(){for(var t=this.deps.length;t--;){var e=this.deps[t];this.newDepIds.has(e.id)||e.removeSub(this)}var n=this.depIds;this.depIds=this.newDepIds,this.newDepIds=n,this.newDepIds.clear(),n=this.deps,this.deps=this.newDeps,this.newDeps=n,this.newDeps.length=0},hn.prototype.update=function(){this.lazy?this.dirty=!0:this.sync?this.run():function(t){var e=t.id;if(null==on[e]){if(on[e]=!0,sn){for(var n=nn.length-1;n>cn&&nn[n].id>t.id;)n--;nn.splice(n+1,0,t)}else nn.push(t);an||(an=!0,ee(dn))}}(this)},hn.prototype.run=function(){if(this.active){var t=this.get();if(t!==this.value||c(t)||this.deep){var e=this.value;if(this.value=t,this.user)try{this.cb.call(this.vm,t,e)}catch(t){Ut(t,this.vm,'callback for watcher "'+this.expression+'"')}else this.cb.call(this.vm,t,e)}}},hn.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},hn.prototype.depend=function(){for(var t=this.deps.length;t--;)this.deps[t].depend()},hn.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||g(this.vm._watchers,this);for(var t=this.deps.length;t--;)this.deps[t].removeSub(this);this.active=!1}};var vn={enumerable:!0,configurable:!0,get:D,set:D};function mn(t,e,n){vn.get=function(){return this[e][n]},vn.set=function(t){this[e][n]=t},Object.defineProperty(t,n,vn)}function An(t){t._watchers=[];var e=t.$options;e.props&&function(t,e){var n=t.$options.propsData||{},r=t._props={},i=t.$options._propKeys=[];t.$parent&&Ct(!1);var o=function(o){i.push(o);var a=$t(o,e,n,t);Et(r,o,a),o in t||mn(t,"_props",o)};for(var a in e)o(a);Ct(!0)}(t,e.props),e.methods&&function(t,e){t.$options.props;for(var n in e)t[n]="function"!=typeof e[n]?D:E(e[n],t)}(t,e.methods),e.data?function(t){var e=t.$options.data;l(e=t._data="function"==typeof e?function(t,e){pt();try{return t.call(e,e)}catch(t){return Ut(t,e,"data()"),{}}finally{ht()}}(e,t):e||{})||(e={});var n=Object.keys(e),r=t.$options.props,i=(t.$options.methods,n.length);for(;i--;){var o=n[i];0,r&&b(r,o)||(a=void 0,36!==(a=(o+"").charCodeAt(0))&&95!==a&&mn(t,"_data",o))}var a;Tt(e,!0)}(t):Tt(t._data={},!0),e.computed&&function(t,e){var n=t._computedWatchers=Object.create(null),r=it();for(var i in e){var o=e[i],a="function"==typeof o?o:o.get;0,r||(n[i]=new hn(t,a||D,D,gn)),i in t||yn(t,i,o)}}(t,e.computed),e.watch&&e.watch!==et&&function(t,e){for(var n in e){var r=e[n];if(Array.isArray(r))for(var i=0;i<r.length;i++)xn(t,n,r[i]);else xn(t,n,r)}}(t,e.watch)}var gn={lazy:!0};function yn(t,e,n){var r=!it();"function"==typeof n?(vn.get=r?bn(e):_n(n),vn.set=D):(vn.get=n.get?r&&!1!==n.cache?bn(e):_n(n.get):D,vn.set=n.set||D),Object.defineProperty(t,e,vn)}function bn(t){return function(){var e=this._computedWatchers&&this._computedWatchers[t];if(e)return e.dirty&&e.evaluate(),ft.target&&e.depend(),e.value}}function _n(t){return function(){return t.call(this,this)}}function xn(t,e,n,r){return l(n)&&(r=n,n=n.handler),"string"==typeof n&&(n=t[n]),t.$watch(e,n,r)}var wn=0;function Cn(t){var e=t.options;if(t.super){var n=Cn(t.super);if(n!==t.superOptions){t.superOptions=n;var r=function(t){var e,n=t.options,r=t.sealedOptions;for(var i in n)n[i]!==r[i]&&(e||(e={}),e[i]=n[i]);return e}(t);r&&O(t.extendOptions,r),(e=t.options=Lt(n,t.extendOptions)).name&&(e.components[e.name]=t)}}return e}function kn(t){this._init(t)}function Tn(t){t.cid=0;var e=1;t.extend=function(t){t=t||{};var n=this,r=n.cid,i=t._Ctor||(t._Ctor={});if(i[r])return i[r];var o=t.name||n.options.name;var a=function(t){this._init(t)};return(a.prototype=Object.create(n.prototype)).constructor=a,a.cid=e++,a.options=Lt(n.options,t),a.super=n,a.options.props&&function(t){var e=t.options.props;for(var n in e)mn(t.prototype,"_props",n)}(a),a.options.computed&&function(t){var e=t.options.computed;for(var n in e)yn(t.prototype,n,e[n])}(a),a.extend=n.extend,a.mixin=n.mixin,a.use=n.use,$.forEach((function(t){a[t]=n[t]})),o&&(a.options.components[o]=a),a.superOptions=n.options,a.extendOptions=t,a.sealedOptions=O({},a.options),i[r]=a,a}}function En(t){return t&&(t.Ctor.options.name||t.tag)}function Sn(t,e){return Array.isArray(t)?t.indexOf(e)>-1:"string"==typeof t?t.split(",").indexOf(e)>-1:!!f(t)&&t.test(e)}function On(t,e){var n=t.cache,r=t.keys,i=t._vnode;for(var o in n){var a=n[o];if(a){var s=En(a.componentOptions);s&&!e(s)&&Mn(n,o,r,i)}}}function Mn(t,e,n,r){var i=t[e];!i||r&&i.tag===r.tag||i.componentInstance.$destroy(),t[e]=null,g(n,e)}!function(t){t.prototype._init=function(t){var e=this;e._uid=wn++,e._isVue=!0,t&&t._isComponent?function(t,e){var n=t.$options=Object.create(t.constructor.options),r=e._parentVnode;n.parent=e.parent,n._parentVnode=r;var i=r.componentOptions;n.propsData=i.propsData,n._parentListeners=i.listeners,n._renderChildren=i.children,n._componentTag=i.tag,e.render&&(n.render=e.render,n.staticRenderFns=e.staticRenderFns)}(e,t):e.$options=Lt(Cn(e.constructor),t||{},e),e._renderProxy=e,e._self=e,function(t){var e=t.$options,n=e.parent;if(n&&!e.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(t)}t.$parent=n,t.$root=n?n.$root:t,t.$children=[],t.$refs={},t._watcher=null,t._inactive=null,t._directInactive=!1,t._isMounted=!1,t._isDestroyed=!1,t._isBeingDestroyed=!1}(e),function(t){t._events=Object.create(null),t._hasHookEvent=!1;var e=t.$options._parentListeners;e&&Ze(t,e)}(e),function(t){t._vnode=null,t._staticTrees=null;var e=t.$options,n=t.$vnode=e._parentVnode,i=n&&n.context;t.$slots=de(e._renderChildren,i),t.$scopedSlots=r,t._c=function(e,n,r,i){return ze(t,e,n,r,i,!1)},t.$createElement=function(e,n,r,i){return ze(t,e,n,r,i,!0)};var o=n&&n.data;Et(t,"$attrs",o&&o.attrs||r,null,!0),Et(t,"$listeners",e._parentListeners||r,null,!0)}(e),en(e,"beforeCreate"),function(t){var e=fe(t.$options.inject,t);e&&(Ct(!1),Object.keys(e).forEach((function(n){Et(t,n,e[n])})),Ct(!0))}(e),An(e),function(t){var e=t.$options.provide;e&&(t._provided="function"==typeof e?e.call(t):e)}(e),en(e,"created"),e.$options.el&&e.$mount(e.$options.el)}}(kn),function(t){var e={get:function(){return this._data}},n={get:function(){return this._props}};Object.defineProperty(t.prototype,"$data",e),Object.defineProperty(t.prototype,"$props",n),t.prototype.$set=St,t.prototype.$delete=Ot,t.prototype.$watch=function(t,e,n){if(l(e))return xn(this,t,e,n);(n=n||{}).user=!0;var r=new hn(this,t,e,n);if(n.immediate)try{e.call(this,r.value)}catch(t){Ut(t,this,'callback for immediate watcher "'+r.expression+'"')}return function(){r.teardown()}}}(kn),function(t){var e=/^hook:/;t.prototype.$on=function(t,n){var r=this;if(Array.isArray(t))for(var i=0,o=t.length;i<o;i++)r.$on(t[i],n);else(r._events[t]||(r._events[t]=[])).push(n),e.test(t)&&(r._hasHookEvent=!0);return r},t.prototype.$once=function(t,e){var n=this;function r(){n.$off(t,r),e.apply(n,arguments)}return r.fn=e,n.$on(t,r),n},t.prototype.$off=function(t,e){var n=this;if(!arguments.length)return n._events=Object.create(null),n;if(Array.isArray(t)){for(var r=0,i=t.length;r<i;r++)n.$off(t[r],e);return n}var o,a=n._events[t];if(!a)return n;if(!e)return n._events[t]=null,n;for(var s=a.length;s--;)if((o=a[s])===e||o.fn===e){a.splice(s,1);break}return n},t.prototype.$emit=function(t){var e=this,n=e._events[t];if(n){n=n.length>1?S(n):n;for(var r=S(arguments,1),i='event handler for "'+t+'"',o=0,a=n.length;o<a;o++)Ht(n[o],e,r,e,i)}return e}}(kn),function(t){t.prototype._update=function(t,e){var n=this,r=n.$el,i=n._vnode,o=Ke(n);n._vnode=t,n.$el=i?n.__patch__(i,t):n.__patch__(n.$el,t,e,!1),o(),r&&(r.__vue__=null),n.$el&&(n.$el.__vue__=n),n.$vnode&&n.$parent&&n.$vnode===n.$parent._vnode&&(n.$parent.$el=n.$el)},t.prototype.$forceUpdate=function(){this._watcher&&this._watcher.update()},t.prototype.$destroy=function(){var t=this;if(!t._isBeingDestroyed){en(t,"beforeDestroy"),t._isBeingDestroyed=!0;var e=t.$parent;!e||e._isBeingDestroyed||t.$options.abstract||g(e.$children,t),t._watcher&&t._watcher.teardown();for(var n=t._watchers.length;n--;)t._watchers[n].teardown();t._data.__ob__&&t._data.__ob__.vmCount--,t._isDestroyed=!0,t.__patch__(t._vnode,null),en(t,"destroyed"),t.$off(),t.$el&&(t.$el.__vue__=null),t.$vnode&&(t.$vnode.parent=null)}}}(kn),function(t){De(t.prototype),t.prototype.$nextTick=function(t){return ee(t,this)},t.prototype._render=function(){var t,e=this,n=e.$options,r=n.render,i=n._parentVnode;i&&(e.$scopedSlots=he(i.data.scopedSlots,e.$slots,e.$scopedSlots)),e.$vnode=i;try{He=e,t=r.call(e._renderProxy,e.$createElement)}catch(n){Ut(n,e,"render"),t=e._vnode}finally{He=null}return Array.isArray(t)&&1===t.length&&(t=t[0]),t instanceof vt||(t=At()),t.parent=i,t}}(kn);var Dn=[String,RegExp,Array],In={KeepAlive:{name:"keep-alive",abstract:!0,props:{include:Dn,exclude:Dn,max:[String,Number]},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var t in this.cache)Mn(this.cache,t,this.keys)},mounted:function(){var t=this;this.$watch("include",(function(e){On(t,(function(t){return Sn(e,t)}))})),this.$watch("exclude",(function(e){On(t,(function(t){return!Sn(e,t)}))}))},render:function(){var t=this.$slots.default,e=Ge(t),n=e&&e.componentOptions;if(n){var r=En(n),i=this.include,o=this.exclude;if(i&&(!r||!Sn(i,r))||o&&r&&Sn(o,r))return e;var a=this.cache,s=this.keys,c=null==e.key?n.Ctor.cid+(n.tag?"::"+n.tag:""):e.key;a[c]?(e.componentInstance=a[c].componentInstance,g(s,c),s.push(c)):(a[c]=e,s.push(c),this.max&&s.length>parseInt(this.max)&&Mn(a,s[0],s,this._vnode)),e.data.keepAlive=!0}return e||t&&t[0]}}};!function(t){var e={get:function(){return F}};Object.defineProperty(t,"config",e),t.util={warn:ut,extend:O,mergeOptions:Lt,defineReactive:Et},t.set=St,t.delete=Ot,t.nextTick=ee,t.observable=function(t){return Tt(t),t},t.options=Object.create(null),$.forEach((function(e){t.options[e+"s"]=Object.create(null)})),t.options._base=t,O(t.options.components,In),function(t){t.use=function(t){var e=this._installedPlugins||(this._installedPlugins=[]);if(e.indexOf(t)>-1)return this;var n=S(arguments,1);return n.unshift(this),"function"==typeof t.install?t.install.apply(t,n):"function"==typeof t&&t.apply(null,n),e.push(t),this}}(t),function(t){t.mixin=function(t){return this.options=Lt(this.options,t),this}}(t),Tn(t),function(t){$.forEach((function(e){t[e]=function(t,n){return n?("component"===e&&l(n)&&(n.name=n.name||t,n=this.options._base.extend(n)),"directive"===e&&"function"==typeof n&&(n={bind:n,update:n}),this.options[e+"s"][t]=n,n):this.options[e+"s"][t]}}))}(t)}(kn),Object.defineProperty(kn.prototype,"$isServer",{get:it}),Object.defineProperty(kn.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(kn,"FunctionalRenderContext",{value:Ie}),kn.version="2.6.10";var Bn=m("style,class"),Nn=m("input,textarea,option,select,progress"),jn=m("contenteditable,draggable,spellcheck"),Ln=m("events,caret,typing,plaintext-only"),Pn=function(t,e){return Un(e)||"false"===e?"false":"contenteditable"===t&&Ln(e)?e:"true"},$n=m("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"),Rn="http://www.w3.org/1999/xlink",Fn=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},zn=function(t){return Fn(t)?t.slice(6,t.length):""},Un=function(t){return null==t||!1===t};function Hn(t){for(var e=t.data,n=t,r=t;o(r.componentInstance);)(r=r.componentInstance._vnode)&&r.data&&(e=Yn(r.data,e));for(;o(n=n.parent);)n&&n.data&&(e=Yn(e,n.data));return function(t,e){if(o(t)||o(e))return Vn(t,Gn(e));return""}(e.staticClass,e.class)}function Yn(t,e){return{staticClass:Vn(t.staticClass,e.staticClass),class:o(t.class)?[t.class,e.class]:e.class}}function Vn(t,e){return t?e?t+" "+e:t:e||""}function Gn(t){return Array.isArray(t)?function(t){for(var e,n="",r=0,i=t.length;r<i;r++)o(e=Gn(t[r]))&&""!==e&&(n&&(n+=" "),n+=e);return n}(t):c(t)?function(t){var e="";for(var n in t)t[n]&&(e&&(e+=" "),e+=n);return e}(t):"string"==typeof t?t:""}var Qn={svg:"http://www.w3.org/2000/svg",math:"http://www.w3.org/1998/Math/MathML"},Wn=m("html,body,base,head,link,meta,style,title,address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,menuitem,summary,content,element,shadow,template,blockquote,iframe,tfoot"),qn=m("svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view",!0),Zn=function(t){return Wn(t)||qn(t)};var Xn=Object.create(null);var Kn=m("text,number,password,search,email,tel,url");var Jn=Object.freeze({createElement:function(t,e){var n=document.createElement(t);return"select"!==t?n:(e.data&&e.data.attrs&&void 0!==e.data.attrs.multiple&&n.setAttribute("multiple","multiple"),n)},createElementNS:function(t,e){return document.createElementNS(Qn[t],e)},createTextNode:function(t){return document.createTextNode(t)},createComment:function(t){return document.createComment(t)},insertBefore:function(t,e,n){t.insertBefore(e,n)},removeChild:function(t,e){t.removeChild(e)},appendChild:function(t,e){t.appendChild(e)},parentNode:function(t){return t.parentNode},nextSibling:function(t){return t.nextSibling},tagName:function(t){return t.tagName},setTextContent:function(t,e){t.textContent=e},setStyleScope:function(t,e){t.setAttribute(e,"")}}),tr={create:function(t,e){er(e)},update:function(t,e){t.data.ref!==e.data.ref&&(er(t,!0),er(e))},destroy:function(t){er(t,!0)}};function er(t,e){var n=t.data.ref;if(o(n)){var r=t.context,i=t.componentInstance||t.elm,a=r.$refs;e?Array.isArray(a[n])?g(a[n],i):a[n]===i&&(a[n]=void 0):t.data.refInFor?Array.isArray(a[n])?a[n].indexOf(i)<0&&a[n].push(i):a[n]=[i]:a[n]=i}}var nr=new vt("",{},[]),rr=["create","activate","update","remove","destroy"];function ir(t,e){return t.key===e.key&&(t.tag===e.tag&&t.isComment===e.isComment&&o(t.data)===o(e.data)&&function(t,e){if("input"!==t.tag)return!0;var n,r=o(n=t.data)&&o(n=n.attrs)&&n.type,i=o(n=e.data)&&o(n=n.attrs)&&n.type;return r===i||Kn(r)&&Kn(i)}(t,e)||a(t.isAsyncPlaceholder)&&t.asyncFactory===e.asyncFactory&&i(e.asyncFactory.error))}function or(t,e,n){var r,i,a={};for(r=e;r<=n;++r)o(i=t[r].key)&&(a[i]=r);return a}var ar={create:sr,update:sr,destroy:function(t){sr(t,nr)}};function sr(t,e){(t.data.directives||e.data.directives)&&function(t,e){var n,r,i,o=t===nr,a=e===nr,s=ur(t.data.directives,t.context),c=ur(e.data.directives,e.context),u=[],l=[];for(n in c)r=s[n],i=c[n],r?(i.oldValue=r.value,i.oldArg=r.arg,fr(i,"update",e,t),i.def&&i.def.componentUpdated&&l.push(i)):(fr(i,"bind",e,t),i.def&&i.def.inserted&&u.push(i));if(u.length){var f=function(){for(var n=0;n<u.length;n++)fr(u[n],"inserted",e,t)};o?se(e,"insert",f):f()}l.length&&se(e,"postpatch",(function(){for(var n=0;n<l.length;n++)fr(l[n],"componentUpdated",e,t)}));if(!o)for(n in s)c[n]||fr(s[n],"unbind",t,t,a)}(t,e)}var cr=Object.create(null);function ur(t,e){var n,r,i=Object.create(null);if(!t)return i;for(n=0;n<t.length;n++)(r=t[n]).modifiers||(r.modifiers=cr),i[lr(r)]=r,r.def=Pt(e.$options,"directives",r.name);return i}function lr(t){return t.rawName||t.name+"."+Object.keys(t.modifiers||{}).join(".")}function fr(t,e,n,r,i){var o=t.def&&t.def[e];if(o)try{o(n.elm,t,n,r,i)}catch(r){Ut(r,n.context,"directive "+t.name+" "+e+" hook")}}var dr=[tr,ar];function pr(t,e){var n=e.componentOptions;if(!(o(n)&&!1===n.Ctor.options.inheritAttrs||i(t.data.attrs)&&i(e.data.attrs))){var r,a,s=e.elm,c=t.data.attrs||{},u=e.data.attrs||{};for(r in o(u.__ob__)&&(u=e.data.attrs=O({},u)),u)a=u[r],c[r]!==a&&hr(s,r,a);for(r in(Z||K)&&u.value!==c.value&&hr(s,"value",u.value),c)i(u[r])&&(Fn(r)?s.removeAttributeNS(Rn,zn(r)):jn(r)||s.removeAttribute(r))}}function hr(t,e,n){t.tagName.indexOf("-")>-1?vr(t,e,n):$n(e)?Un(n)?t.removeAttribute(e):(n="allowfullscreen"===e&&"EMBED"===t.tagName?"true":e,t.setAttribute(e,n)):jn(e)?t.setAttribute(e,Pn(e,n)):Fn(e)?Un(n)?t.removeAttributeNS(Rn,zn(e)):t.setAttributeNS(Rn,e,n):vr(t,e,n)}function vr(t,e,n){if(Un(n))t.removeAttribute(e);else{if(Z&&!X&&"TEXTAREA"===t.tagName&&"placeholder"===e&&""!==n&&!t.__ieph){var r=function(e){e.stopImmediatePropagation(),t.removeEventListener("input",r)};t.addEventListener("input",r),t.__ieph=!0}t.setAttribute(e,n)}}var mr={create:pr,update:pr};function Ar(t,e){var n=e.elm,r=e.data,a=t.data;if(!(i(r.staticClass)&&i(r.class)&&(i(a)||i(a.staticClass)&&i(a.class)))){var s=Hn(e),c=n._transitionClasses;o(c)&&(s=Vn(s,Gn(c))),s!==n._prevClass&&(n.setAttribute("class",s),n._prevClass=s)}}var gr,yr={create:Ar,update:Ar},br="__r",_r="__c";function xr(t,e,n){var r=gr;return function i(){var o=e.apply(null,arguments);null!==o&&kr(t,i,n,r)}}var wr=Qt&&!(tt&&Number(tt[1])<=53);function Cr(t,e,n,r){if(wr){var i=un,o=e;e=o._wrapper=function(t){if(t.target===t.currentTarget||t.timeStamp>=i||t.timeStamp<=0||t.target.ownerDocument!==document)return o.apply(this,arguments)}}gr.addEventListener(t,e,nt?{capture:n,passive:r}:n)}function kr(t,e,n,r){(r||gr).removeEventListener(t,e._wrapper||e,n)}function Tr(t,e){if(!i(t.data.on)||!i(e.data.on)){var n=e.data.on||{},r=t.data.on||{};gr=e.elm,function(t){if(o(t[br])){var e=Z?"change":"input";t[e]=[].concat(t[br],t[e]||[]),delete t[br]}o(t[_r])&&(t.change=[].concat(t[_r],t.change||[]),delete t[_r])}(n),ae(n,r,Cr,kr,xr,e.context),gr=void 0}}var Er,Sr={create:Tr,update:Tr};function Or(t,e){if(!i(t.data.domProps)||!i(e.data.domProps)){var n,r,a=e.elm,s=t.data.domProps||{},c=e.data.domProps||{};for(n in o(c.__ob__)&&(c=e.data.domProps=O({},c)),s)n in c||(a[n]="");for(n in c){if(r=c[n],"textContent"===n||"innerHTML"===n){if(e.children&&(e.children.length=0),r===s[n])continue;1===a.childNodes.length&&a.removeChild(a.childNodes[0])}if("value"===n&&"PROGRESS"!==a.tagName){a._value=r;var u=i(r)?"":String(r);Mr(a,u)&&(a.value=u)}else if("innerHTML"===n&&qn(a.tagName)&&i(a.innerHTML)){(Er=Er||document.createElement("div")).innerHTML="<svg>"+r+"</svg>";for(var l=Er.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;l.firstChild;)a.appendChild(l.firstChild)}else if(r!==s[n])try{a[n]=r}catch(t){}}}}function Mr(t,e){return!t.composing&&("OPTION"===t.tagName||function(t,e){var n=!0;try{n=document.activeElement!==t}catch(t){}return n&&t.value!==e}(t,e)||function(t,e){var n=t.value,r=t._vModifiers;if(o(r)){if(r.number)return v(n)!==v(e);if(r.trim)return n.trim()!==e.trim()}return n!==e}(t,e))}var Dr={create:Or,update:Or},Ir=_((function(t){var e={},n=/:(.+)/;return t.split(/;(?![^(]*\))/g).forEach((function(t){if(t){var r=t.split(n);r.length>1&&(e[r[0].trim()]=r[1].trim())}})),e}));function Br(t){var e=Nr(t.style);return t.staticStyle?O(t.staticStyle,e):e}function Nr(t){return Array.isArray(t)?M(t):"string"==typeof t?Ir(t):t}var jr,Lr=/^--/,Pr=/\s*!important$/,$r=function(t,e,n){if(Lr.test(e))t.style.setProperty(e,n);else if(Pr.test(n))t.style.setProperty(T(e),n.replace(Pr,""),"important");else{var r=Fr(e);if(Array.isArray(n))for(var i=0,o=n.length;i<o;i++)t.style[r]=n[i];else t.style[r]=n}},Rr=["Webkit","Moz","ms"],Fr=_((function(t){if(jr=jr||document.createElement("div").style,"filter"!==(t=w(t))&&t in jr)return t;for(var e=t.charAt(0).toUpperCase()+t.slice(1),n=0;n<Rr.length;n++){var r=Rr[n]+e;if(r in jr)return r}}));function zr(t,e){var n=e.data,r=t.data;if(!(i(n.staticStyle)&&i(n.style)&&i(r.staticStyle)&&i(r.style))){var a,s,c=e.elm,u=r.staticStyle,l=r.normalizedStyle||r.style||{},f=u||l,d=Nr(e.data.style)||{};e.data.normalizedStyle=o(d.__ob__)?O({},d):d;var p=function(t,e){var n,r={};if(e)for(var i=t;i.componentInstance;)(i=i.componentInstance._vnode)&&i.data&&(n=Br(i.data))&&O(r,n);(n=Br(t.data))&&O(r,n);for(var o=t;o=o.parent;)o.data&&(n=Br(o.data))&&O(r,n);return r}(e,!0);for(s in f)i(p[s])&&$r(c,s,"");for(s in p)(a=p[s])!==f[s]&&$r(c,s,null==a?"":a)}}var Ur={create:zr,update:zr},Hr=/\s+/;function Yr(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(Hr).forEach((function(e){return t.classList.add(e)})):t.classList.add(e);else{var n=" "+(t.getAttribute("class")||"")+" ";n.indexOf(" "+e+" ")<0&&t.setAttribute("class",(n+e).trim())}}function Vr(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(Hr).forEach((function(e){return t.classList.remove(e)})):t.classList.remove(e),t.classList.length||t.removeAttribute("class");else{for(var n=" "+(t.getAttribute("class")||"")+" ",r=" "+e+" ";n.indexOf(r)>=0;)n=n.replace(r," ");(n=n.trim())?t.setAttribute("class",n):t.removeAttribute("class")}}function Gr(t){if(t){if("object"==typeof t){var e={};return!1!==t.css&&O(e,Qr(t.name||"v")),O(e,t),e}return"string"==typeof t?Qr(t):void 0}}var Qr=_((function(t){return{enterClass:t+"-enter",enterToClass:t+"-enter-to",enterActiveClass:t+"-enter-active",leaveClass:t+"-leave",leaveToClass:t+"-leave-to",leaveActiveClass:t+"-leave-active"}})),Wr=G&&!X,qr="transition",Zr="animation",Xr="transition",Kr="transitionend",Jr="animation",ti="animationend";Wr&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(Xr="WebkitTransition",Kr="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(Jr="WebkitAnimation",ti="webkitAnimationEnd"));var ei=G?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(t){return t()};function ni(t){ei((function(){ei(t)}))}function ri(t,e){var n=t._transitionClasses||(t._transitionClasses=[]);n.indexOf(e)<0&&(n.push(e),Yr(t,e))}function ii(t,e){t._transitionClasses&&g(t._transitionClasses,e),Vr(t,e)}function oi(t,e,n){var r=si(t,e),i=r.type,o=r.timeout,a=r.propCount;if(!i)return n();var s=i===qr?Kr:ti,c=0,u=function(){t.removeEventListener(s,l),n()},l=function(e){e.target===t&&++c>=a&&u()};setTimeout((function(){c<a&&u()}),o+1),t.addEventListener(s,l)}var ai=/\b(transform|all)(,|$)/;function si(t,e){var n,r=window.getComputedStyle(t),i=(r[Xr+"Delay"]||"").split(", "),o=(r[Xr+"Duration"]||"").split(", "),a=ci(i,o),s=(r[Jr+"Delay"]||"").split(", "),c=(r[Jr+"Duration"]||"").split(", "),u=ci(s,c),l=0,f=0;return e===qr?a>0&&(n=qr,l=a,f=o.length):e===Zr?u>0&&(n=Zr,l=u,f=c.length):f=(n=(l=Math.max(a,u))>0?a>u?qr:Zr:null)?n===qr?o.length:c.length:0,{type:n,timeout:l,propCount:f,hasTransform:n===qr&&ai.test(r[Xr+"Property"])}}function ci(t,e){for(;t.length<e.length;)t=t.concat(t);return Math.max.apply(null,e.map((function(e,n){return ui(e)+ui(t[n])})))}function ui(t){return 1e3*Number(t.slice(0,-1).replace(",","."))}function li(t,e){var n=t.elm;o(n._leaveCb)&&(n._leaveCb.cancelled=!0,n._leaveCb());var r=Gr(t.data.transition);if(!i(r)&&!o(n._enterCb)&&1===n.nodeType){for(var a=r.css,s=r.type,u=r.enterClass,l=r.enterToClass,f=r.enterActiveClass,d=r.appearClass,p=r.appearToClass,h=r.appearActiveClass,m=r.beforeEnter,A=r.enter,g=r.afterEnter,y=r.enterCancelled,b=r.beforeAppear,_=r.appear,x=r.afterAppear,w=r.appearCancelled,C=r.duration,k=Xe,T=Xe.$vnode;T&&T.parent;)k=T.context,T=T.parent;var E=!k._isMounted||!t.isRootInsert;if(!E||_||""===_){var S=E&&d?d:u,O=E&&h?h:f,M=E&&p?p:l,D=E&&b||m,I=E&&"function"==typeof _?_:A,B=E&&x||g,N=E&&w||y,j=v(c(C)?C.enter:C);0;var P=!1!==a&&!X,$=pi(I),R=n._enterCb=L((function(){P&&(ii(n,M),ii(n,O)),R.cancelled?(P&&ii(n,S),N&&N(n)):B&&B(n),n._enterCb=null}));t.data.show||se(t,"insert",(function(){var e=n.parentNode,r=e&&e._pending&&e._pending[t.key];r&&r.tag===t.tag&&r.elm._leaveCb&&r.elm._leaveCb(),I&&I(n,R)})),D&&D(n),P&&(ri(n,S),ri(n,O),ni((function(){ii(n,S),R.cancelled||(ri(n,M),$||(di(j)?setTimeout(R,j):oi(n,s,R)))}))),t.data.show&&(e&&e(),I&&I(n,R)),P||$||R()}}}function fi(t,e){var n=t.elm;o(n._enterCb)&&(n._enterCb.cancelled=!0,n._enterCb());var r=Gr(t.data.transition);if(i(r)||1!==n.nodeType)return e();if(!o(n._leaveCb)){var a=r.css,s=r.type,u=r.leaveClass,l=r.leaveToClass,f=r.leaveActiveClass,d=r.beforeLeave,p=r.leave,h=r.afterLeave,m=r.leaveCancelled,A=r.delayLeave,g=r.duration,y=!1!==a&&!X,b=pi(p),_=v(c(g)?g.leave:g);0;var x=n._leaveCb=L((function(){n.parentNode&&n.parentNode._pending&&(n.parentNode._pending[t.key]=null),y&&(ii(n,l),ii(n,f)),x.cancelled?(y&&ii(n,u),m&&m(n)):(e(),h&&h(n)),n._leaveCb=null}));A?A(w):w()}function w(){x.cancelled||(!t.data.show&&n.parentNode&&((n.parentNode._pending||(n.parentNode._pending={}))[t.key]=t),d&&d(n),y&&(ri(n,u),ri(n,f),ni((function(){ii(n,u),x.cancelled||(ri(n,l),b||(di(_)?setTimeout(x,_):oi(n,s,x)))}))),p&&p(n,x),y||b||x())}}function di(t){return"number"==typeof t&&!isNaN(t)}function pi(t){if(i(t))return!1;var e=t.fns;return o(e)?pi(Array.isArray(e)?e[0]:e):(t._length||t.length)>1}function hi(t,e){!0!==e.data.show&&li(e)}var vi=function(t){var e,n,r={},c=t.modules,u=t.nodeOps;for(e=0;e<rr.length;++e)for(r[rr[e]]=[],n=0;n<c.length;++n)o(c[n][rr[e]])&&r[rr[e]].push(c[n][rr[e]]);function l(t){var e=u.parentNode(t);o(e)&&u.removeChild(e,t)}function f(t,e,n,i,s,c,l){if(o(t.elm)&&o(c)&&(t=c[l]=yt(t)),t.isRootInsert=!s,!function(t,e,n,i){var s=t.data;if(o(s)){var c=o(t.componentInstance)&&s.keepAlive;if(o(s=s.hook)&&o(s=s.init)&&s(t,!1),o(t.componentInstance))return d(t,e),p(n,t.elm,i),a(c)&&function(t,e,n,i){var a,s=t;for(;s.componentInstance;)if(s=s.componentInstance._vnode,o(a=s.data)&&o(a=a.transition)){for(a=0;a<r.activate.length;++a)r.activate[a](nr,s);e.push(s);break}p(n,t.elm,i)}(t,e,n,i),!0}}(t,e,n,i)){var f=t.data,v=t.children,m=t.tag;o(m)?(t.elm=t.ns?u.createElementNS(t.ns,m):u.createElement(m,t),g(t),h(t,v,e),o(f)&&A(t,e),p(n,t.elm,i)):a(t.isComment)?(t.elm=u.createComment(t.text),p(n,t.elm,i)):(t.elm=u.createTextNode(t.text),p(n,t.elm,i))}}function d(t,e){o(t.data.pendingInsert)&&(e.push.apply(e,t.data.pendingInsert),t.data.pendingInsert=null),t.elm=t.componentInstance.$el,v(t)?(A(t,e),g(t)):(er(t),e.push(t))}function p(t,e,n){o(t)&&(o(n)?u.parentNode(n)===t&&u.insertBefore(t,e,n):u.appendChild(t,e))}function h(t,e,n){if(Array.isArray(e)){0;for(var r=0;r<e.length;++r)f(e[r],n,t.elm,null,!0,e,r)}else s(t.text)&&u.appendChild(t.elm,u.createTextNode(String(t.text)))}function v(t){for(;t.componentInstance;)t=t.componentInstance._vnode;return o(t.tag)}function A(t,n){for(var i=0;i<r.create.length;++i)r.create[i](nr,t);o(e=t.data.hook)&&(o(e.create)&&e.create(nr,t),o(e.insert)&&n.push(t))}function g(t){var e;if(o(e=t.fnScopeId))u.setStyleScope(t.elm,e);else for(var n=t;n;)o(e=n.context)&&o(e=e.$options._scopeId)&&u.setStyleScope(t.elm,e),n=n.parent;o(e=Xe)&&e!==t.context&&e!==t.fnContext&&o(e=e.$options._scopeId)&&u.setStyleScope(t.elm,e)}function y(t,e,n,r,i,o){for(;r<=i;++r)f(n[r],o,t,e,!1,n,r)}function b(t){var e,n,i=t.data;if(o(i))for(o(e=i.hook)&&o(e=e.destroy)&&e(t),e=0;e<r.destroy.length;++e)r.destroy[e](t);if(o(e=t.children))for(n=0;n<t.children.length;++n)b(t.children[n])}function _(t,e,n,r){for(;n<=r;++n){var i=e[n];o(i)&&(o(i.tag)?(x(i),b(i)):l(i.elm))}}function x(t,e){if(o(e)||o(t.data)){var n,i=r.remove.length+1;for(o(e)?e.listeners+=i:e=function(t,e){function n(){0==--n.listeners&&l(t)}return n.listeners=e,n}(t.elm,i),o(n=t.componentInstance)&&o(n=n._vnode)&&o(n.data)&&x(n,e),n=0;n<r.remove.length;++n)r.remove[n](t,e);o(n=t.data.hook)&&o(n=n.remove)?n(t,e):e()}else l(t.elm)}function w(t,e,n,r){for(var i=n;i<r;i++){var a=e[i];if(o(a)&&ir(t,a))return i}}function C(t,e,n,s,c,l){if(t!==e){o(e.elm)&&o(s)&&(e=s[c]=yt(e));var d=e.elm=t.elm;if(a(t.isAsyncPlaceholder))o(e.asyncFactory.resolved)?E(t.elm,e,n):e.isAsyncPlaceholder=!0;else if(a(e.isStatic)&&a(t.isStatic)&&e.key===t.key&&(a(e.isCloned)||a(e.isOnce)))e.componentInstance=t.componentInstance;else{var p,h=e.data;o(h)&&o(p=h.hook)&&o(p=p.prepatch)&&p(t,e);var m=t.children,A=e.children;if(o(h)&&v(e)){for(p=0;p<r.update.length;++p)r.update[p](t,e);o(p=h.hook)&&o(p=p.update)&&p(t,e)}i(e.text)?o(m)&&o(A)?m!==A&&function(t,e,n,r,a){var s,c,l,d=0,p=0,h=e.length-1,v=e[0],m=e[h],A=n.length-1,g=n[0],b=n[A],x=!a;for(0;d<=h&&p<=A;)i(v)?v=e[++d]:i(m)?m=e[--h]:ir(v,g)?(C(v,g,r,n,p),v=e[++d],g=n[++p]):ir(m,b)?(C(m,b,r,n,A),m=e[--h],b=n[--A]):ir(v,b)?(C(v,b,r,n,A),x&&u.insertBefore(t,v.elm,u.nextSibling(m.elm)),v=e[++d],b=n[--A]):ir(m,g)?(C(m,g,r,n,p),x&&u.insertBefore(t,m.elm,v.elm),m=e[--h],g=n[++p]):(i(s)&&(s=or(e,d,h)),i(c=o(g.key)?s[g.key]:w(g,e,d,h))?f(g,r,t,v.elm,!1,n,p):ir(l=e[c],g)?(C(l,g,r,n,p),e[c]=void 0,x&&u.insertBefore(t,l.elm,v.elm)):f(g,r,t,v.elm,!1,n,p),g=n[++p]);d>h?y(t,i(n[A+1])?null:n[A+1].elm,n,p,A,r):p>A&&_(0,e,d,h)}(d,m,A,n,l):o(A)?(o(t.text)&&u.setTextContent(d,""),y(d,null,A,0,A.length-1,n)):o(m)?_(0,m,0,m.length-1):o(t.text)&&u.setTextContent(d,""):t.text!==e.text&&u.setTextContent(d,e.text),o(h)&&o(p=h.hook)&&o(p=p.postpatch)&&p(t,e)}}}function k(t,e,n){if(a(n)&&o(t.parent))t.parent.data.pendingInsert=e;else for(var r=0;r<e.length;++r)e[r].data.hook.insert(e[r])}var T=m("attrs,class,staticClass,staticStyle,key");function E(t,e,n,r){var i,s=e.tag,c=e.data,u=e.children;if(r=r||c&&c.pre,e.elm=t,a(e.isComment)&&o(e.asyncFactory))return e.isAsyncPlaceholder=!0,!0;if(o(c)&&(o(i=c.hook)&&o(i=i.init)&&i(e,!0),o(i=e.componentInstance)))return d(e,n),!0;if(o(s)){if(o(u))if(t.hasChildNodes())if(o(i=c)&&o(i=i.domProps)&&o(i=i.innerHTML)){if(i!==t.innerHTML)return!1}else{for(var l=!0,f=t.firstChild,p=0;p<u.length;p++){if(!f||!E(f,u[p],n,r)){l=!1;break}f=f.nextSibling}if(!l||f)return!1}else h(e,u,n);if(o(c)){var v=!1;for(var m in c)if(!T(m)){v=!0,A(e,n);break}!v&&c.class&&re(c.class)}}else t.data!==e.text&&(t.data=e.text);return!0}return function(t,e,n,s){if(!i(e)){var c,l=!1,d=[];if(i(t))l=!0,f(e,d);else{var p=o(t.nodeType);if(!p&&ir(t,e))C(t,e,d,null,null,s);else{if(p){if(1===t.nodeType&&t.hasAttribute(P)&&(t.removeAttribute(P),n=!0),a(n)&&E(t,e,d))return k(e,d,!0),t;c=t,t=new vt(u.tagName(c).toLowerCase(),{},[],void 0,c)}var h=t.elm,m=u.parentNode(h);if(f(e,d,h._leaveCb?null:m,u.nextSibling(h)),o(e.parent))for(var A=e.parent,g=v(e);A;){for(var y=0;y<r.destroy.length;++y)r.destroy[y](A);if(A.elm=e.elm,g){for(var x=0;x<r.create.length;++x)r.create[x](nr,A);var w=A.data.hook.insert;if(w.merged)for(var T=1;T<w.fns.length;T++)w.fns[T]()}else er(A);A=A.parent}o(m)?_(0,[t],0,0):o(t.tag)&&b(t)}}return k(e,d,l),e.elm}o(t)&&b(t)}}({nodeOps:Jn,modules:[mr,yr,Sr,Dr,Ur,G?{create:hi,activate:hi,remove:function(t,e){!0!==t.data.show?fi(t,e):e()}}:{}].concat(dr)});X&&document.addEventListener("selectionchange",(function(){var t=document.activeElement;t&&t.vmodel&&wi(t,"input")}));var mi={inserted:function(t,e,n,r){"select"===n.tag?(r.elm&&!r.elm._vOptions?se(n,"postpatch",(function(){mi.componentUpdated(t,e,n)})):Ai(t,e,n.context),t._vOptions=[].map.call(t.options,bi)):("textarea"===n.tag||Kn(t.type))&&(t._vModifiers=e.modifiers,e.modifiers.lazy||(t.addEventListener("compositionstart",_i),t.addEventListener("compositionend",xi),t.addEventListener("change",xi),X&&(t.vmodel=!0)))},componentUpdated:function(t,e,n){if("select"===n.tag){Ai(t,e,n.context);var r=t._vOptions,i=t._vOptions=[].map.call(t.options,bi);if(i.some((function(t,e){return!N(t,r[e])})))(t.multiple?e.value.some((function(t){return yi(t,i)})):e.value!==e.oldValue&&yi(e.value,i))&&wi(t,"change")}}};function Ai(t,e,n){gi(t,e,n),(Z||K)&&setTimeout((function(){gi(t,e,n)}),0)}function gi(t,e,n){var r=e.value,i=t.multiple;if(!i||Array.isArray(r)){for(var o,a,s=0,c=t.options.length;s<c;s++)if(a=t.options[s],i)o=j(r,bi(a))>-1,a.selected!==o&&(a.selected=o);else if(N(bi(a),r))return void(t.selectedIndex!==s&&(t.selectedIndex=s));i||(t.selectedIndex=-1)}}function yi(t,e){return e.every((function(e){return!N(e,t)}))}function bi(t){return"_value"in t?t._value:t.value}function _i(t){t.target.composing=!0}function xi(t){t.target.composing&&(t.target.composing=!1,wi(t.target,"input"))}function wi(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function Ci(t){return!t.componentInstance||t.data&&t.data.transition?t:Ci(t.componentInstance._vnode)}var ki={model:mi,show:{bind:function(t,e,n){var r=e.value,i=(n=Ci(n)).data&&n.data.transition,o=t.__vOriginalDisplay="none"===t.style.display?"":t.style.display;r&&i?(n.data.show=!0,li(n,(function(){t.style.display=o}))):t.style.display=r?o:"none"},update:function(t,e,n){var r=e.value;!r!=!e.oldValue&&((n=Ci(n)).data&&n.data.transition?(n.data.show=!0,r?li(n,(function(){t.style.display=t.__vOriginalDisplay})):fi(n,(function(){t.style.display="none"}))):t.style.display=r?t.__vOriginalDisplay:"none")},unbind:function(t,e,n,r,i){i||(t.style.display=t.__vOriginalDisplay)}}},Ti={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function Ei(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?Ei(Ge(e.children)):t}function Si(t){var e={},n=t.$options;for(var r in n.propsData)e[r]=t[r];var i=n._parentListeners;for(var o in i)e[w(o)]=i[o];return e}function Oi(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}var Mi=function(t){return t.tag||Ve(t)},Di=function(t){return"show"===t.name},Ii={name:"transition",props:Ti,abstract:!0,render:function(t){var e=this,n=this.$slots.default;if(n&&(n=n.filter(Mi)).length){0;var r=this.mode;0;var i=n[0];if(function(t){for(;t=t.parent;)if(t.data.transition)return!0}(this.$vnode))return i;var o=Ei(i);if(!o)return i;if(this._leaving)return Oi(t,i);var a="__transition-"+this._uid+"-";o.key=null==o.key?o.isComment?a+"comment":a+o.tag:s(o.key)?0===String(o.key).indexOf(a)?o.key:a+o.key:o.key;var c=(o.data||(o.data={})).transition=Si(this),u=this._vnode,l=Ei(u);if(o.data.directives&&o.data.directives.some(Di)&&(o.data.show=!0),l&&l.data&&!function(t,e){return e.key===t.key&&e.tag===t.tag}(o,l)&&!Ve(l)&&(!l.componentInstance||!l.componentInstance._vnode.isComment)){var f=l.data.transition=O({},c);if("out-in"===r)return this._leaving=!0,se(f,"afterLeave",(function(){e._leaving=!1,e.$forceUpdate()})),Oi(t,i);if("in-out"===r){if(Ve(o))return u;var d,p=function(){d()};se(c,"afterEnter",p),se(c,"enterCancelled",p),se(f,"delayLeave",(function(t){d=t}))}}return i}}},Bi=O({tag:String,moveClass:String},Ti);function Ni(t){t.elm._moveCb&&t.elm._moveCb(),t.elm._enterCb&&t.elm._enterCb()}function ji(t){t.data.newPos=t.elm.getBoundingClientRect()}function Li(t){var e=t.data.pos,n=t.data.newPos,r=e.left-n.left,i=e.top-n.top;if(r||i){t.data.moved=!0;var o=t.elm.style;o.transform=o.WebkitTransform="translate("+r+"px,"+i+"px)",o.transitionDuration="0s"}}delete Bi.mode;var Pi={Transition:Ii,TransitionGroup:{props:Bi,beforeMount:function(){var t=this,e=this._update;this._update=function(n,r){var i=Ke(t);t.__patch__(t._vnode,t.kept,!1,!0),t._vnode=t.kept,i(),e.call(t,n,r)}},render:function(t){for(var e=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,i=this.$slots.default||[],o=this.children=[],a=Si(this),s=0;s<i.length;s++){var c=i[s];if(c.tag)if(null!=c.key&&0!==String(c.key).indexOf("__vlist"))o.push(c),n[c.key]=c,(c.data||(c.data={})).transition=a;else;}if(r){for(var u=[],l=[],f=0;f<r.length;f++){var d=r[f];d.data.transition=a,d.data.pos=d.elm.getBoundingClientRect(),n[d.key]?u.push(d):l.push(d)}this.kept=t(e,null,u),this.removed=l}return t(e,null,o)},updated:function(){var t=this.prevChildren,e=this.moveClass||(this.name||"v")+"-move";t.length&&this.hasMove(t[0].elm,e)&&(t.forEach(Ni),t.forEach(ji),t.forEach(Li),this._reflow=document.body.offsetHeight,t.forEach((function(t){if(t.data.moved){var n=t.elm,r=n.style;ri(n,e),r.transform=r.WebkitTransform=r.transitionDuration="",n.addEventListener(Kr,n._moveCb=function t(r){r&&r.target!==n||r&&!/transform$/.test(r.propertyName)||(n.removeEventListener(Kr,t),n._moveCb=null,ii(n,e))})}})))},methods:{hasMove:function(t,e){if(!Wr)return!1;if(this._hasMove)return this._hasMove;var n=t.cloneNode();t._transitionClasses&&t._transitionClasses.forEach((function(t){Vr(n,t)})),Yr(n,e),n.style.display="none",this.$el.appendChild(n);var r=si(n);return this.$el.removeChild(n),this._hasMove=r.hasTransform}}}};kn.config.mustUseProp=function(t,e,n){return"value"===n&&Nn(t)&&"button"!==e||"selected"===n&&"option"===t||"checked"===n&&"input"===t||"muted"===n&&"video"===t},kn.config.isReservedTag=Zn,kn.config.isReservedAttr=Bn,kn.config.getTagNamespace=function(t){return qn(t)?"svg":"math"===t?"math":void 0},kn.config.isUnknownElement=function(t){if(!G)return!0;if(Zn(t))return!1;if(t=t.toLowerCase(),null!=Xn[t])return Xn[t];var e=document.createElement(t);return t.indexOf("-")>-1?Xn[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:Xn[t]=/HTMLUnknownElement/.test(e.toString())},O(kn.options.directives,ki),O(kn.options.components,Pi),kn.prototype.__patch__=G?vi:D,kn.prototype.$mount=function(t,e){return function(t,e,n){var r;return t.$el=e,t.$options.render||(t.$options.render=At),en(t,"beforeMount"),r=function(){t._update(t._render(),n)},new hn(t,r,D,{before:function(){t._isMounted&&!t._isDestroyed&&en(t,"beforeUpdate")}},!0),n=!1,null==t.$vnode&&(t._isMounted=!0,en(t,"mounted")),t}(this,t=t&&G?function(t){if("string"==typeof t){var e=document.querySelector(t);return e||document.createElement("div")}return t}(t):void 0,e)},G&&setTimeout((function(){F.devtools&&ot&&ot.emit("init",kn)}),0),e.default=kn}.call(this,n(3),n(22).setImmediate)},function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(24).default.create({headers:{requesttoken:OC.requestToken}});e.default=r},function(t,e,n){"use strict";function r(t,e,n,r,i,o,a,s){var c,u="function"==typeof t?t.options:t;if(e&&(u.render=e,u.staticRenderFns=n,u._compiled=!0),r&&(u.functional=!0),o&&(u._scopeId="data-v-"+o),a?(c=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),i&&i.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(a)},u._ssrRegister=c):i&&(c=s?function(){i.call(this,this.$root.$options.shadowRoot)}:i),c)if(u.functional){u._injectStyles=c;var l=u.render;u.render=function(t,e){return c.call(e),l(t,e)}}else{var f=u.beforeCreate;u.beforeCreate=f?[].concat(f,c):[c]}return{exports:t,options:u}}n.d(e,"a",(function(){return r}))},function(t,e){var n,r,i=t.exports={};function o(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function s(t){if(n===setTimeout)return setTimeout(t,0);if((n===o||!n)&&setTimeout)return n=setTimeout,setTimeout(t,0);try{return n(t,0)}catch(e){try{return n.call(null,t,0)}catch(e){return n.call(this,t,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:o}catch(t){n=o}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(t){r=a}}();var c,u=[],l=!1,f=-1;function d(){l&&c&&(l=!1,c.length?u=c.concat(u):f=-1,u.length&&p())}function p(){if(!l){var t=s(d);l=!0;for(var e=u.length;e;){for(c=u,u=[];++f<e;)c&&c[f].run();f=-1,e=u.length}c=null,l=!1,function(t){if(r===clearTimeout)return clearTimeout(t);if((r===a||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(t);try{r(t)}catch(e){try{return r.call(null,t)}catch(e){return r.call(this,t)}}}(t)}}function h(t,e){this.fun=t,this.array=e}function v(){}i.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];u.push(new h(t,e)),1!==u.length||l||s(p)},h.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=v,i.addListener=v,i.once=v,i.off=v,i.removeListener=v,i.removeAllListeners=v,i.emit=v,i.prependListener=v,i.prependOnceListener=v,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}},function(t,e,n){"use strict";t.exports=function(t,e){return function(){for(var n=new Array(arguments.length),r=0;r<n.length;r++)n[r]=arguments[r];return t.apply(e,n)}}},function(t,e,n){"use strict";var r=n(1);function i(t){return encodeURIComponent(t).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}t.exports=function(t,e,n){if(!e)return t;var o;if(n)o=n(e);else if(r.isURLSearchParams(e))o=e.toString();else{var a=[];r.forEach(e,(function(t,e){null!=t&&(r.isArray(t)?e+="[]":t=[t],r.forEach(t,(function(t){r.isDate(t)?t=t.toISOString():r.isObject(t)&&(t=JSON.stringify(t)),a.push(i(e)+"="+i(t))})))})),o=a.join("&")}if(o){var s=t.indexOf("#");-1!==s&&(t=t.slice(0,s)),t+=(-1===t.indexOf("?")?"?":"&")+o}return t}},function(t,e,n){"use strict";t.exports=function(t){return!(!t||!t.__CANCEL__)}},function(t,e,n){"use strict";(function(e){var r=n(1),i=n(31),o={"Content-Type":"application/x-www-form-urlencoded"};function a(t,e){!r.isUndefined(t)&&r.isUndefined(t["Content-Type"])&&(t["Content-Type"]=e)}var s,c={adapter:(void 0!==e&&"[object process]"===Object.prototype.toString.call(e)?s=n(11):"undefined"!=typeof XMLHttpRequest&&(s=n(11)),s),transformRequest:[function(t,e){return i(e,"Accept"),i(e,"Content-Type"),r.isFormData(t)||r.isArrayBuffer(t)||r.isBuffer(t)||r.isStream(t)||r.isFile(t)||r.isBlob(t)?t:r.isArrayBufferView(t)?t.buffer:r.isURLSearchParams(t)?(a(e,"application/x-www-form-urlencoded;charset=utf-8"),t.toString()):r.isObject(t)?(a(e,"application/json;charset=utf-8"),JSON.stringify(t)):t}],transformResponse:[function(t){if("string"==typeof t)try{t=JSON.parse(t)}catch(t){}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,validateStatus:function(t){return t>=200&&t<300}};c.headers={common:{Accept:"application/json, text/plain, */*"}},r.forEach(["delete","get","head"],(function(t){c.headers[t]={}})),r.forEach(["post","put","patch"],(function(t){c.headers[t]=r.merge(o)})),t.exports=c}).call(this,n(6))},function(t,e,n){"use strict";var r=n(1),i=n(32),o=n(8),a=n(34),s=n(35),c=n(12);t.exports=function(t){return new Promise((function(e,u){var l=t.data,f=t.headers;r.isFormData(l)&&delete f["Content-Type"];var d=new XMLHttpRequest;if(t.auth){var p=t.auth.username||"",h=t.auth.password||"";f.Authorization="Basic "+btoa(p+":"+h)}if(d.open(t.method.toUpperCase(),o(t.url,t.params,t.paramsSerializer),!0),d.timeout=t.timeout,d.onreadystatechange=function(){if(d&&4===d.readyState&&(0!==d.status||d.responseURL&&0===d.responseURL.indexOf("file:"))){var n="getAllResponseHeaders"in d?a(d.getAllResponseHeaders()):null,r={data:t.responseType&&"text"!==t.responseType?d.response:d.responseText,status:d.status,statusText:d.statusText,headers:n,config:t,request:d};i(e,u,r),d=null}},d.onabort=function(){d&&(u(c("Request aborted",t,"ECONNABORTED",d)),d=null)},d.onerror=function(){u(c("Network Error",t,null,d)),d=null},d.ontimeout=function(){u(c("timeout of "+t.timeout+"ms exceeded",t,"ECONNABORTED",d)),d=null},r.isStandardBrowserEnv()){var v=n(36),m=(t.withCredentials||s(t.url))&&t.xsrfCookieName?v.read(t.xsrfCookieName):void 0;m&&(f[t.xsrfHeaderName]=m)}if("setRequestHeader"in d&&r.forEach(f,(function(t,e){void 0===l&&"content-type"===e.toLowerCase()?delete f[e]:d.setRequestHeader(e,t)})),t.withCredentials&&(d.withCredentials=!0),t.responseType)try{d.responseType=t.responseType}catch(e){if("json"!==t.responseType)throw e}"function"==typeof t.onDownloadProgress&&d.addEventListener("progress",t.onDownloadProgress),"function"==typeof t.onUploadProgress&&d.upload&&d.upload.addEventListener("progress",t.onUploadProgress),t.cancelToken&&t.cancelToken.promise.then((function(t){d&&(d.abort(),u(t),d=null)})),void 0===l&&(l=null),d.send(l)}))}},function(t,e,n){"use strict";var r=n(33);t.exports=function(t,e,n,i,o){var a=new Error(t);return r(a,e,n,i,o)}},function(t,e,n){"use strict";var r=n(1);t.exports=function(t,e){e=e||{};var n={};return r.forEach(["url","method","params","data"],(function(t){void 0!==e[t]&&(n[t]=e[t])})),r.forEach(["headers","auth","proxy"],(function(i){r.isObject(e[i])?n[i]=r.deepMerge(t[i],e[i]):void 0!==e[i]?n[i]=e[i]:r.isObject(t[i])?n[i]=r.deepMerge(t[i]):void 0!==t[i]&&(n[i]=t[i])})),r.forEach(["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","maxContentLength","validateStatus","maxRedirects","httpAgent","httpsAgent","cancelToken","socketPath"],(function(r){void 0!==e[r]?n[r]=e[r]:void 0!==t[r]&&(n[r]=t[r])})),n}},function(t,e,n){"use strict";function r(t){this.message=t}r.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},r.prototype.__CANCEL__=!0,t.exports=r},function(t,e,n){"use strict";(function(t){var n=("undefined"!=typeof window?window:void 0!==t?t:{}).__VUE_DEVTOOLS_GLOBAL_HOOK__;function r(t,e){Object.keys(t).forEach((function(n){return e(t[n],n)}))}var i=function(t,e){this.runtime=e,this._children=Object.create(null),this._rawModule=t;var n=t.state;this.state=("function"==typeof n?n():n)||{}},o={namespaced:{configurable:!0}};o.namespaced.get=function(){return!!this._rawModule.namespaced},i.prototype.addChild=function(t,e){this._children[t]=e},i.prototype.removeChild=function(t){delete this._children[t]},i.prototype.getChild=function(t){return this._children[t]},i.prototype.update=function(t){this._rawModule.namespaced=t.namespaced,t.actions&&(this._rawModule.actions=t.actions),t.mutations&&(this._rawModule.mutations=t.mutations),t.getters&&(this._rawModule.getters=t.getters)},i.prototype.forEachChild=function(t){r(this._children,t)},i.prototype.forEachGetter=function(t){this._rawModule.getters&&r(this._rawModule.getters,t)},i.prototype.forEachAction=function(t){this._rawModule.actions&&r(this._rawModule.actions,t)},i.prototype.forEachMutation=function(t){this._rawModule.mutations&&r(this._rawModule.mutations,t)},Object.defineProperties(i.prototype,o);var a=function(t){this.register([],t,!1)};a.prototype.get=function(t){return t.reduce((function(t,e){return t.getChild(e)}),this.root)},a.prototype.getNamespace=function(t){var e=this.root;return t.reduce((function(t,n){return t+((e=e.getChild(n)).namespaced?n+"/":"")}),"")},a.prototype.update=function(t){!function t(e,n,r){0;n.update(r);if(r.modules)for(var i in r.modules){if(!n.getChild(i))return void 0;t(e.concat(i),n.getChild(i),r.modules[i])}}([],this.root,t)},a.prototype.register=function(t,e,n){var o=this;void 0===n&&(n=!0);var a=new i(e,n);0===t.length?this.root=a:this.get(t.slice(0,-1)).addChild(t[t.length-1],a);e.modules&&r(e.modules,(function(e,r){o.register(t.concat(r),e,n)}))},a.prototype.unregister=function(t){var e=this.get(t.slice(0,-1)),n=t[t.length-1];e.getChild(n).runtime&&e.removeChild(n)};var s;var c=function(t){var e=this;void 0===t&&(t={}),!s&&"undefined"!=typeof window&&window.Vue&&m(window.Vue);var r=t.plugins;void 0===r&&(r=[]);var i=t.strict;void 0===i&&(i=!1),this._committing=!1,this._actions=Object.create(null),this._actionSubscribers=[],this._mutations=Object.create(null),this._wrappedGetters=Object.create(null),this._modules=new a(t),this._modulesNamespaceMap=Object.create(null),this._subscribers=[],this._watcherVM=new s;var o=this,c=this.dispatch,u=this.commit;this.dispatch=function(t,e){return c.call(o,t,e)},this.commit=function(t,e,n){return u.call(o,t,e,n)},this.strict=i;var l=this._modules.root.state;p(this,l,[],this._modules.root),d(this,l),r.forEach((function(t){return t(e)})),(void 0!==t.devtools?t.devtools:s.config.devtools)&&function(t){n&&(t._devtoolHook=n,n.emit("vuex:init",t),n.on("vuex:travel-to-state",(function(e){t.replaceState(e)})),t.subscribe((function(t,e){n.emit("vuex:mutation",t,e)})))}(this)},u={state:{configurable:!0}};function l(t,e){return e.indexOf(t)<0&&e.push(t),function(){var n=e.indexOf(t);n>-1&&e.splice(n,1)}}function f(t,e){t._actions=Object.create(null),t._mutations=Object.create(null),t._wrappedGetters=Object.create(null),t._modulesNamespaceMap=Object.create(null);var n=t.state;p(t,n,[],t._modules.root,!0),d(t,n,e)}function d(t,e,n){var i=t._vm;t.getters={};var o=t._wrappedGetters,a={};r(o,(function(e,n){a[n]=function(t,e){return function(){return t(e)}}(e,t),Object.defineProperty(t.getters,n,{get:function(){return t._vm[n]},enumerable:!0})}));var c=s.config.silent;s.config.silent=!0,t._vm=new s({data:{$$state:e},computed:a}),s.config.silent=c,t.strict&&function(t){t._vm.$watch((function(){return this._data.$$state}),(function(){0}),{deep:!0,sync:!0})}(t),i&&(n&&t._withCommit((function(){i._data.$$state=null})),s.nextTick((function(){return i.$destroy()})))}function p(t,e,n,r,i){var o=!n.length,a=t._modules.getNamespace(n);if(r.namespaced&&(t._modulesNamespaceMap[a]=r),!o&&!i){var c=h(e,n.slice(0,-1)),u=n[n.length-1];t._withCommit((function(){s.set(c,u,r.state)}))}var l=r.context=function(t,e,n){var r=""===e,i={dispatch:r?t.dispatch:function(n,r,i){var o=v(n,r,i),a=o.payload,s=o.options,c=o.type;return s&&s.root||(c=e+c),t.dispatch(c,a)},commit:r?t.commit:function(n,r,i){var o=v(n,r,i),a=o.payload,s=o.options,c=o.type;s&&s.root||(c=e+c),t.commit(c,a,s)}};return Object.defineProperties(i,{getters:{get:r?function(){return t.getters}:function(){return function(t,e){var n={},r=e.length;return Object.keys(t.getters).forEach((function(i){if(i.slice(0,r)===e){var o=i.slice(r);Object.defineProperty(n,o,{get:function(){return t.getters[i]},enumerable:!0})}})),n}(t,e)}},state:{get:function(){return h(t.state,n)}}}),i}(t,a,n);r.forEachMutation((function(e,n){!function(t,e,n,r){(t._mutations[e]||(t._mutations[e]=[])).push((function(e){n.call(t,r.state,e)}))}(t,a+n,e,l)})),r.forEachAction((function(e,n){var r=e.root?n:a+n,i=e.handler||e;!function(t,e,n,r){(t._actions[e]||(t._actions[e]=[])).push((function(e,i){var o,a=n.call(t,{dispatch:r.dispatch,commit:r.commit,getters:r.getters,state:r.state,rootGetters:t.getters,rootState:t.state},e,i);return(o=a)&&"function"==typeof o.then||(a=Promise.resolve(a)),t._devtoolHook?a.catch((function(e){throw t._devtoolHook.emit("vuex:error",e),e})):a}))}(t,r,i,l)})),r.forEachGetter((function(e,n){!function(t,e,n,r){if(t._wrappedGetters[e])return void 0;t._wrappedGetters[e]=function(t){return n(r.state,r.getters,t.state,t.getters)}}(t,a+n,e,l)})),r.forEachChild((function(r,o){p(t,e,n.concat(o),r,i)}))}function h(t,e){return e.length?e.reduce((function(t,e){return t[e]}),t):t}function v(t,e,n){var r;return null!==(r=t)&&"object"==typeof r&&t.type&&(n=e,e=t,t=t.type),{type:t,payload:e,options:n}}function m(t){s&&t===s|| +/** + * vuex v3.1.1 + * (c) 2019 Evan You + * @license MIT + */ +function(t){if(Number(t.version.split(".")[0])>=2)t.mixin({beforeCreate:n});else{var e=t.prototype._init;t.prototype._init=function(t){void 0===t&&(t={}),t.init=t.init?[n].concat(t.init):n,e.call(this,t)}}function n(){var t=this.$options;t.store?this.$store="function"==typeof t.store?t.store():t.store:t.parent&&t.parent.$store&&(this.$store=t.parent.$store)}}(s=t)}u.state.get=function(){return this._vm._data.$$state},u.state.set=function(t){0},c.prototype.commit=function(t,e,n){var r=this,i=v(t,e,n),o=i.type,a=i.payload,s=(i.options,{type:o,payload:a}),c=this._mutations[o];c&&(this._withCommit((function(){c.forEach((function(t){t(a)}))})),this._subscribers.forEach((function(t){return t(s,r.state)})))},c.prototype.dispatch=function(t,e){var n=this,r=v(t,e),i=r.type,o=r.payload,a={type:i,payload:o},s=this._actions[i];if(s){try{this._actionSubscribers.filter((function(t){return t.before})).forEach((function(t){return t.before(a,n.state)}))}catch(t){0}return(s.length>1?Promise.all(s.map((function(t){return t(o)}))):s[0](o)).then((function(t){try{n._actionSubscribers.filter((function(t){return t.after})).forEach((function(t){return t.after(a,n.state)}))}catch(t){0}return t}))}},c.prototype.subscribe=function(t){return l(t,this._subscribers)},c.prototype.subscribeAction=function(t){return l("function"==typeof t?{before:t}:t,this._actionSubscribers)},c.prototype.watch=function(t,e,n){var r=this;return this._watcherVM.$watch((function(){return t(r.state,r.getters)}),e,n)},c.prototype.replaceState=function(t){var e=this;this._withCommit((function(){e._vm._data.$$state=t}))},c.prototype.registerModule=function(t,e,n){void 0===n&&(n={}),"string"==typeof t&&(t=[t]),this._modules.register(t,e),p(this,this.state,t,this._modules.get(t),n.preserveState),d(this,this.state)},c.prototype.unregisterModule=function(t){var e=this;"string"==typeof t&&(t=[t]),this._modules.unregister(t),this._withCommit((function(){var n=h(e.state,t.slice(0,-1));s.delete(n,t[t.length-1])})),f(this)},c.prototype.hotUpdate=function(t){this._modules.update(t),f(this,!0)},c.prototype._withCommit=function(t){var e=this._committing;this._committing=!0,t(),this._committing=e},Object.defineProperties(c.prototype,u);var A=x((function(t,e){var n={};return _(e).forEach((function(e){var r=e.key,i=e.val;n[r]=function(){var e=this.$store.state,n=this.$store.getters;if(t){var r=w(this.$store,"mapState",t);if(!r)return;e=r.context.state,n=r.context.getters}return"function"==typeof i?i.call(this,e,n):e[i]},n[r].vuex=!0})),n})),g=x((function(t,e){var n={};return _(e).forEach((function(e){var r=e.key,i=e.val;n[r]=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];var r=this.$store.commit;if(t){var o=w(this.$store,"mapMutations",t);if(!o)return;r=o.context.commit}return"function"==typeof i?i.apply(this,[r].concat(e)):r.apply(this.$store,[i].concat(e))}})),n})),y=x((function(t,e){var n={};return _(e).forEach((function(e){var r=e.key,i=e.val;i=t+i,n[r]=function(){if(!t||w(this.$store,"mapGetters",t))return this.$store.getters[i]},n[r].vuex=!0})),n})),b=x((function(t,e){var n={};return _(e).forEach((function(e){var r=e.key,i=e.val;n[r]=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];var r=this.$store.dispatch;if(t){var o=w(this.$store,"mapActions",t);if(!o)return;r=o.context.dispatch}return"function"==typeof i?i.apply(this,[r].concat(e)):r.apply(this.$store,[i].concat(e))}})),n}));function _(t){return Array.isArray(t)?t.map((function(t){return{key:t,val:t}})):Object.keys(t).map((function(e){return{key:e,val:t[e]}}))}function x(t){return function(e,n){return"string"!=typeof e?(n=e,e=""):"/"!==e.charAt(e.length-1)&&(e+="/"),t(e,n)}}function w(t,e,n){return t._modulesNamespaceMap[n]}var C={Store:c,install:m,version:"3.1.1",mapState:A,mapMutations:g,mapGetters:y,mapActions:b,createNamespacedHelpers:function(t){return{mapState:A.bind(null,t),mapGetters:y.bind(null,t),mapMutations:g.bind(null,t),mapActions:b.bind(null,t)}}};e.a=C}).call(this,n(3))},function(e,n,r){!function(t,n){e.exports=n(r(2))}(window,(function(e){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="/dist/",n(n.s=182)}([function(t,e,n){"use strict";function r(t,e,n,r,i,o,a,s){var c,u="function"==typeof t?t.options:t;if(e&&(u.render=e,u.staticRenderFns=n,u._compiled=!0),r&&(u.functional=!0),o&&(u._scopeId="data-v-"+o),a?(c=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),i&&i.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(a)},u._ssrRegister=c):i&&(c=s?function(){i.call(this,this.$root.$options.shadowRoot)}:i),c)if(u.functional){u._injectStyles=c;var l=u.render;u.render=function(t,e){return c.call(e),l(t,e)}}else{var f=u.beforeCreate;u.beforeCreate=f?[].concat(f,c):[c]}return{exports:t,options:u}}n.d(e,"a",(function(){return r}))},function(t,e,n){"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var n=function(t,e){var n,r,i,o=t[1]||"",a=t[3];if(!a)return o;if(e&&"function"==typeof btoa){var s=(n=a,r=btoa(unescape(encodeURIComponent(JSON.stringify(n)))),i="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(r),"/*# ".concat(i," */")),c=a.sources.map((function(t){return"/*# sourceURL=".concat(a.sourceRoot).concat(t," */")}));return[o].concat(c).concat([s]).join("\n")}return[o].join("\n")}(e,t);return e[2]?"@media ".concat(e[2],"{").concat(n,"}"):n})).join("")},e.i=function(t,n){"string"==typeof t&&(t=[[null,t,""]]);for(var r={},i=0;i<this.length;i++){var o=this[i][0];null!=o&&(r[o]=!0)}for(var a=0;a<t.length;a++){var s=t[a];null!=s[0]&&r[s[0]]||(n&&!s[2]?s[2]=n:n&&(s[2]="(".concat(s[2],") and (").concat(n,")")),e.push(s))}},e}},function(t,e,n){"use strict";function r(t,e){for(var n=[],r={},i=0;i<e.length;i++){var o=e[i],a=o[0],s={id:t+":"+i,css:o[1],media:o[2],sourceMap:o[3]};r[a]?r[a].parts.push(s):n.push(r[a]={id:a,parts:[s]})}return n}n.r(e),n.d(e,"default",(function(){return h}));var i="undefined"!=typeof document;if("undefined"!=typeof DEBUG&&DEBUG&&!i)throw new Error("vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.");var o={},a=i&&(document.head||document.getElementsByTagName("head")[0]),s=null,c=0,u=!1,l=function(){},f=null,d="data-vue-ssr-id",p="undefined"!=typeof navigator&&/msie [6-9]\b/.test(navigator.userAgent.toLowerCase());function h(t,e,n,i){u=n,f=i||{};var a=r(t,e);return v(a),function(e){for(var n=[],i=0;i<a.length;i++){var s=a[i];(c=o[s.id]).refs--,n.push(c)}for(e?v(a=r(t,e)):a=[],i=0;i<n.length;i++){var c;if(0===(c=n[i]).refs){for(var u=0;u<c.parts.length;u++)c.parts[u]();delete o[c.id]}}}}function v(t){for(var e=0;e<t.length;e++){var n=t[e],r=o[n.id];if(r){r.refs++;for(var i=0;i<r.parts.length;i++)r.parts[i](n.parts[i]);for(;i<n.parts.length;i++)r.parts.push(A(n.parts[i]));r.parts.length>n.parts.length&&(r.parts.length=n.parts.length)}else{var a=[];for(i=0;i<n.parts.length;i++)a.push(A(n.parts[i]));o[n.id]={id:n.id,refs:1,parts:a}}}}function m(){var t=document.createElement("style");return t.type="text/css",a.appendChild(t),t}function A(t){var e,n,r=document.querySelector("style["+d+'~="'+t.id+'"]');if(r){if(u)return l;r.parentNode.removeChild(r)}if(p){var i=c++;r=s||(s=m()),e=b.bind(null,r,i,!1),n=b.bind(null,r,i,!0)}else r=m(),e=function(t,e){var n=e.css,r=e.media,i=e.sourceMap;if(r&&t.setAttribute("media",r),f.ssrId&&t.setAttribute(d,e.id),i&&(n+="\n/*# sourceURL="+i.sources[0]+" */",n+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(i))))+" */"),t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}.bind(null,r),n=function(){r.parentNode.removeChild(r)};return e(t),function(r){if(r){if(r.css===t.css&&r.media===t.media&&r.sourceMap===t.sourceMap)return;e(t=r)}else n()}}var g,y=(g=[],function(t,e){return g[t]=e,g.filter(Boolean).join("\n")});function b(t,e,n,r){var i=n?"":r.css;if(t.styleSheet)t.styleSheet.cssText=y(e,i);else{var o=document.createTextNode(i),a=t.childNodes;a[e]&&t.removeChild(a[e]),a.length?t.insertBefore(o,a[e]):t.appendChild(o)}}},function(t,n){t.exports=e},function(t,e,n){"use strict";var r=n(68),i=n(101),o=Object.prototype.toString;function a(t){return"[object Array]"===o.call(t)}function s(t){return null!==t&&"object"==typeof t}function c(t){return"[object Function]"===o.call(t)}function u(t,e){if(null!=t)if("object"!=typeof t&&(t=[t]),a(t))for(var n=0,r=t.length;n<r;n++)e.call(null,t[n],n,t);else for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&e.call(null,t[i],i,t)}t.exports={isArray:a,isArrayBuffer:function(t){return"[object ArrayBuffer]"===o.call(t)},isBuffer:i,isFormData:function(t){return"undefined"!=typeof FormData&&t instanceof FormData},isArrayBufferView:function(t){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(t):t&&t.buffer&&t.buffer instanceof ArrayBuffer},isString:function(t){return"string"==typeof t},isNumber:function(t){return"number"==typeof t},isObject:s,isUndefined:function(t){return void 0===t},isDate:function(t){return"[object Date]"===o.call(t)},isFile:function(t){return"[object File]"===o.call(t)},isBlob:function(t){return"[object Blob]"===o.call(t)},isFunction:c,isStream:function(t){return s(t)&&c(t.pipe)},isURLSearchParams:function(t){return"undefined"!=typeof URLSearchParams&&t instanceof URLSearchParams},isStandardBrowserEnv:function(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&"undefined"!=typeof window&&"undefined"!=typeof document},forEach:u,merge:function t(){var e={};function n(n,r){"object"==typeof e[r]&&"object"==typeof n?e[r]=t(e[r],n):e[r]=n}for(var r=0,i=arguments.length;r<i;r++)u(arguments[r],n);return e},deepMerge:function t(){var e={};function n(n,r){"object"==typeof e[r]&&"object"==typeof n?e[r]=t(e[r],n):e[r]="object"==typeof n?t({},n):n}for(var r=0,i=arguments.length;r<i;r++)u(arguments[r],n);return e},extend:function(t,e,n){return u(e,(function(e,i){t[i]=n&&"function"==typeof e?r(e,n):e})),t},trim:function(t){return t.replace(/^\s*/,"").replace(/\s*$/,"")}}},function(t,e,n){"use strict";(function(t){n.d(e,"a",(function(){return De}));var r=n(16),i=n(21);function o(t){return(o="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})(t)}function a(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function s(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function c(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter((function(t){return Object.getOwnPropertyDescriptor(n,t).enumerable})))),r.forEach((function(e){s(t,e,n[e])}))}return t}var u=function(){};function l(t){return"string"==typeof t&&(t=t.split(" ")),t}function f(t,e){var n,r=l(e);n=t.className instanceof u?l(t.className.baseVal):l(t.className),r.forEach((function(t){-1===n.indexOf(t)&&n.push(t)})),t instanceof SVGElement?t.setAttribute("class",n.join(" ")):t.className=n.join(" ")}function d(t,e){var n,r=l(e);n=t.className instanceof u?l(t.className.baseVal):l(t.className),r.forEach((function(t){var e=n.indexOf(t);-1!==e&&n.splice(e,1)})),t instanceof SVGElement?t.setAttribute("class",n.join(" ")):t.className=n.join(" ")}"undefined"!=typeof window&&(u=window.SVGAnimatedString);var p=!1;if("undefined"!=typeof window){p=!1;try{var h=Object.defineProperty({},"passive",{get:function(){p=!0}});window.addEventListener("test",null,h)}catch(t){}}var v={container:!1,delay:0,html:!1,placement:"top",title:"",template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",offset:0},m=[],A=function(){function t(e,n){var r=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),s(this,"_events",[]),s(this,"_setTooltipNodeEvent",(function(t,e,n,i){var o=t.relatedreference||t.toElement||t.relatedTarget;return!!r._tooltipNode.contains(o)&&(r._tooltipNode.addEventListener(t.type,(function n(o){var a=o.relatedreference||o.toElement||o.relatedTarget;r._tooltipNode.removeEventListener(t.type,n),e.contains(a)||r._scheduleHide(e,i.delay,i,o)})),!0)})),n=c({},v,n),e.jquery&&(e=e[0]),this.show=this.show.bind(this),this.hide=this.hide.bind(this),this.reference=e,this.options=n,this._isOpen=!1,this._init()}var e,n;return e=t,(n=[{key:"show",value:function(){this._show(this.reference,this.options)}},{key:"hide",value:function(){this._hide()}},{key:"dispose",value:function(){this._dispose()}},{key:"toggle",value:function(){return this._isOpen?this.hide():this.show()}},{key:"setClasses",value:function(t){this._classes=t}},{key:"setContent",value:function(t){this.options.title=t,this._tooltipNode&&this._setContent(t,this.options)}},{key:"setOptions",value:function(t){var e=!1,n=t&&t.classes||T.options.defaultClass;this._classes!==n&&(this.setClasses(n),e=!0),t=_(t);var r=!1,i=!1;for(var o in this.options.offset===t.offset&&this.options.placement===t.placement||(r=!0),(this.options.template!==t.template||this.options.trigger!==t.trigger||this.options.container!==t.container||e)&&(i=!0),t)this.options[o]=t[o];if(this._tooltipNode)if(i){var a=this._isOpen;this.dispose(),this._init(),a&&this.show()}else r&&this.popperInstance.update()}},{key:"_init",value:function(){var t="string"==typeof this.options.trigger?this.options.trigger.split(" "):[];this._isDisposed=!1,this._enableDocumentTouch=-1===t.indexOf("manual"),t=t.filter((function(t){return-1!==["click","hover","focus"].indexOf(t)})),this._setEventListeners(this.reference,t,this.options),this.$_originalTitle=this.reference.getAttribute("title"),this.reference.removeAttribute("title"),this.reference.setAttribute("data-original-title",this.$_originalTitle)}},{key:"_create",value:function(t,e){var n=window.document.createElement("div");n.innerHTML=e.trim();var r=n.childNodes[0];return r.id="tooltip_".concat(Math.random().toString(36).substr(2,10)),r.setAttribute("aria-hidden","true"),this.options.autoHide&&-1!==this.options.trigger.indexOf("hover")&&(r.addEventListener("mouseenter",this.hide),r.addEventListener("click",this.hide)),r}},{key:"_setContent",value:function(t,e){var n=this;this.asyncContent=!1,this._applyContent(t,e).then((function(){n.popperInstance.update()}))}},{key:"_applyContent",value:function(t,e){var n=this;return new Promise((function(r,i){var o=e.html,a=n._tooltipNode;if(a){var s=a.querySelector(n.options.innerSelector);if(1===t.nodeType){if(o){for(;s.firstChild;)s.removeChild(s.firstChild);s.appendChild(t)}}else{if("function"==typeof t){var c=t();return void(c&&"function"==typeof c.then?(n.asyncContent=!0,e.loadingClass&&f(a,e.loadingClass),e.loadingContent&&n._applyContent(e.loadingContent,e),c.then((function(t){return e.loadingClass&&d(a,e.loadingClass),n._applyContent(t,e)})).then(r).catch(i)):n._applyContent(c,e).then(r).catch(i))}o?s.innerHTML=t:s.innerText=t}r()}}))}},{key:"_show",value:function(t,e){if(!e||"string"!=typeof e.container||document.querySelector(e.container)){clearTimeout(this._disposeTimer),delete(e=Object.assign({},e)).offset;var n=!0;this._tooltipNode&&(f(this._tooltipNode,this._classes),n=!1);var r=this._ensureShown(t,e);return n&&this._tooltipNode&&f(this._tooltipNode,this._classes),f(t,["v-tooltip-open"]),r}}},{key:"_ensureShown",value:function(t,e){var n=this;if(this._isOpen)return this;if(this._isOpen=!0,m.push(this),this._tooltipNode)return this._tooltipNode.style.display="",this._tooltipNode.setAttribute("aria-hidden","false"),this.popperInstance.enableEventListeners(),this.popperInstance.update(),this.asyncContent&&this._setContent(e.title,e),this;var i=t.getAttribute("title")||e.title;if(!i)return this;var o=this._create(t,e.template);this._tooltipNode=o,t.setAttribute("aria-describedby",o.id);var a=this._findContainer(e.container,t);this._append(o,a);var s=c({},e.popperOptions,{placement:e.placement});return s.modifiers=c({},s.modifiers,{arrow:{element:this.options.arrowSelector}}),e.boundariesElement&&(s.modifiers.preventOverflow={boundariesElement:e.boundariesElement}),this.popperInstance=new r.a(t,o,s),this._setContent(i,e),requestAnimationFrame((function(){!n._isDisposed&&n.popperInstance?(n.popperInstance.update(),requestAnimationFrame((function(){n._isDisposed?n.dispose():n._isOpen&&o.setAttribute("aria-hidden","false")}))):n.dispose()})),this}},{key:"_noLongerOpen",value:function(){var t=m.indexOf(this);-1!==t&&m.splice(t,1)}},{key:"_hide",value:function(){var t=this;if(!this._isOpen)return this;this._isOpen=!1,this._noLongerOpen(),this._tooltipNode.style.display="none",this._tooltipNode.setAttribute("aria-hidden","true"),this.popperInstance.disableEventListeners(),clearTimeout(this._disposeTimer);var e=T.options.disposeTimeout;return null!==e&&(this._disposeTimer=setTimeout((function(){t._tooltipNode&&(t._tooltipNode.removeEventListener("mouseenter",t.hide),t._tooltipNode.removeEventListener("click",t.hide),t._removeTooltipNode())}),e)),d(this.reference,["v-tooltip-open"]),this}},{key:"_removeTooltipNode",value:function(){if(this._tooltipNode){var t=this._tooltipNode.parentNode;t&&(t.removeChild(this._tooltipNode),this.reference.removeAttribute("aria-describedby")),this._tooltipNode=null}}},{key:"_dispose",value:function(){var t=this;return this._isDisposed=!0,this.reference.removeAttribute("data-original-title"),this.$_originalTitle&&this.reference.setAttribute("title",this.$_originalTitle),this._events.forEach((function(e){var n=e.func,r=e.event;t.reference.removeEventListener(r,n)})),this._events=[],this._tooltipNode?(this._hide(),this._tooltipNode.removeEventListener("mouseenter",this.hide),this._tooltipNode.removeEventListener("click",this.hide),this.popperInstance.destroy(),this.popperInstance.options.removeOnDestroy||this._removeTooltipNode()):this._noLongerOpen(),this}},{key:"_findContainer",value:function(t,e){return"string"==typeof t?t=window.document.querySelector(t):!1===t&&(t=e.parentNode),t}},{key:"_append",value:function(t,e){e.appendChild(t)}},{key:"_setEventListeners",value:function(t,e,n){var r=this,i=[],o=[];e.forEach((function(t){switch(t){case"hover":i.push("mouseenter"),o.push("mouseleave"),r.options.hideOnTargetClick&&o.push("click");break;case"focus":i.push("focus"),o.push("blur"),r.options.hideOnTargetClick&&o.push("click");break;case"click":i.push("click"),o.push("click")}})),i.forEach((function(e){var i=function(e){!0!==r._isOpen&&(e.usedByTooltip=!0,r._scheduleShow(t,n.delay,n,e))};r._events.push({event:e,func:i}),t.addEventListener(e,i)})),o.forEach((function(e){var i=function(e){!0!==e.usedByTooltip&&r._scheduleHide(t,n.delay,n,e)};r._events.push({event:e,func:i}),t.addEventListener(e,i)}))}},{key:"_onDocumentTouch",value:function(t){this._enableDocumentTouch&&this._scheduleHide(this.reference,this.options.delay,this.options,t)}},{key:"_scheduleShow",value:function(t,e,n){var r=this,i=e&&e.show||e||0;clearTimeout(this._scheduleTimer),this._scheduleTimer=window.setTimeout((function(){return r._show(t,n)}),i)}},{key:"_scheduleHide",value:function(t,e,n,r){var i=this,o=e&&e.hide||e||0;clearTimeout(this._scheduleTimer),this._scheduleTimer=window.setTimeout((function(){if(!1!==i._isOpen&&document.body.contains(i._tooltipNode)){if("mouseleave"===r.type&&i._setTooltipNodeEvent(r,t,e,n))return;i._hide(t,n)}}),o)}}])&&a(e.prototype,n),t}();"undefined"!=typeof document&&document.addEventListener("touchstart",(function(t){for(var e=0;e<m.length;e++)m[e]._onDocumentTouch(t)}),!p||{passive:!0,capture:!0});var g={enabled:!0},y=["top","top-start","top-end","right","right-start","right-end","bottom","bottom-start","bottom-end","left","left-start","left-end"],b={defaultPlacement:"top",defaultClass:"vue-tooltip-theme",defaultTargetClass:"has-tooltip",defaultHtml:!0,defaultTemplate:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',defaultArrowSelector:".tooltip-arrow, .tooltip__arrow",defaultInnerSelector:".tooltip-inner, .tooltip__inner",defaultDelay:0,defaultTrigger:"hover focus",defaultOffset:0,defaultContainer:"body",defaultBoundariesElement:void 0,defaultPopperOptions:{},defaultLoadingClass:"tooltip-loading",defaultLoadingContent:"...",autoHide:!0,defaultHideOnTargetClick:!0,disposeTimeout:5e3,popover:{defaultPlacement:"bottom",defaultClass:"vue-popover-theme",defaultBaseClass:"tooltip popover",defaultWrapperClass:"wrapper",defaultInnerClass:"tooltip-inner popover-inner",defaultArrowClass:"tooltip-arrow popover-arrow",defaultOpenClass:"open",defaultDelay:0,defaultTrigger:"click",defaultOffset:0,defaultContainer:"body",defaultBoundariesElement:void 0,defaultPopperOptions:{},defaultAutoHide:!0,defaultHandleResize:!0}};function _(t){var e={placement:void 0!==t.placement?t.placement:T.options.defaultPlacement,delay:void 0!==t.delay?t.delay:T.options.defaultDelay,html:void 0!==t.html?t.html:T.options.defaultHtml,template:void 0!==t.template?t.template:T.options.defaultTemplate,arrowSelector:void 0!==t.arrowSelector?t.arrowSelector:T.options.defaultArrowSelector,innerSelector:void 0!==t.innerSelector?t.innerSelector:T.options.defaultInnerSelector,trigger:void 0!==t.trigger?t.trigger:T.options.defaultTrigger,offset:void 0!==t.offset?t.offset:T.options.defaultOffset,container:void 0!==t.container?t.container:T.options.defaultContainer,boundariesElement:void 0!==t.boundariesElement?t.boundariesElement:T.options.defaultBoundariesElement,autoHide:void 0!==t.autoHide?t.autoHide:T.options.autoHide,hideOnTargetClick:void 0!==t.hideOnTargetClick?t.hideOnTargetClick:T.options.defaultHideOnTargetClick,loadingClass:void 0!==t.loadingClass?t.loadingClass:T.options.defaultLoadingClass,loadingContent:void 0!==t.loadingContent?t.loadingContent:T.options.defaultLoadingContent,popperOptions:c({},void 0!==t.popperOptions?t.popperOptions:T.options.defaultPopperOptions)};if(e.offset){var n=o(e.offset),r=e.offset;("number"===n||"string"===n&&-1===r.indexOf(","))&&(r="0, ".concat(r)),e.popperOptions.modifiers||(e.popperOptions.modifiers={}),e.popperOptions.modifiers.offset={offset:r}}return e.trigger&&-1!==e.trigger.indexOf("click")&&(e.hideOnTargetClick=!1),e}function x(t,e){for(var n=t.placement,r=0;r<y.length;r++){var i=y[r];e[i]&&(n=i)}return n}function w(t){var e=o(t);return"string"===e?t:!(!t||"object"!==e)&&t.content}function C(t){t._tooltip&&(t._tooltip.dispose(),delete t._tooltip,delete t._tooltipOldShow),t._tooltipTargetClasses&&(d(t,t._tooltipTargetClasses),delete t._tooltipTargetClasses)}function k(t,e){var n,r=e.value,i=(e.oldValue,e.modifiers),o=w(r);o&&g.enabled?(t._tooltip?((n=t._tooltip).setContent(o),n.setOptions(c({},r,{placement:x(r,i)}))):n=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=w(e),i=void 0!==e.classes?e.classes:T.options.defaultClass,o=c({title:r},_(c({},e,{placement:x(e,n)}))),a=t._tooltip=new A(t,o);a.setClasses(i),a._vueEl=t;var s=void 0!==e.targetClasses?e.targetClasses:T.options.defaultTargetClass;return t._tooltipTargetClasses=s,f(t,s),a}(t,r,i),void 0!==r.show&&r.show!==t._tooltipOldShow&&(t._tooltipOldShow=r.show,r.show?n.show():n.hide())):C(t)}var T={options:b,bind:k,update:k,unbind:function(t){C(t)}};function E(t){t.addEventListener("click",O),t.addEventListener("touchstart",M,!!p&&{passive:!0})}function S(t){t.removeEventListener("click",O),t.removeEventListener("touchstart",M),t.removeEventListener("touchend",D),t.removeEventListener("touchcancel",I)}function O(t){var e=t.currentTarget;t.closePopover=!e.$_vclosepopover_touch,t.closeAllPopover=e.$_closePopoverModifiers&&!!e.$_closePopoverModifiers.all}function M(t){if(1===t.changedTouches.length){var e=t.currentTarget;e.$_vclosepopover_touch=!0;var n=t.changedTouches[0];e.$_vclosepopover_touchPoint=n,e.addEventListener("touchend",D),e.addEventListener("touchcancel",I)}}function D(t){var e=t.currentTarget;if(e.$_vclosepopover_touch=!1,1===t.changedTouches.length){var n=t.changedTouches[0],r=e.$_vclosepopover_touchPoint;t.closePopover=Math.abs(n.screenY-r.screenY)<20&&Math.abs(n.screenX-r.screenX)<20,t.closeAllPopover=e.$_closePopoverModifiers&&!!e.$_closePopoverModifiers.all}}function I(t){t.currentTarget.$_vclosepopover_touch=!1}var B={bind:function(t,e){var n=e.value,r=e.modifiers;t.$_closePopoverModifiers=r,(void 0===n||n)&&E(t)},update:function(t,e){var n=e.value,r=e.oldValue,i=e.modifiers;t.$_closePopoverModifiers=i,n!==r&&(void 0===n||n?E(t):S(t))},unbind:function(t){S(t)}};function N(t){var e=T.options.popover[t];return void 0===e?T.options[t]:e}var j=!1;"undefined"!=typeof window&&"undefined"!=typeof navigator&&(j=/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream);var L=[],P=function(){};"undefined"!=typeof window&&(P=window.Element);var $={name:"VPopover",components:{ResizeObserver:i.a},props:{open:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},placement:{type:String,default:function(){return N("defaultPlacement")}},delay:{type:[String,Number,Object],default:function(){return N("defaultDelay")}},offset:{type:[String,Number],default:function(){return N("defaultOffset")}},trigger:{type:String,default:function(){return N("defaultTrigger")}},container:{type:[String,Object,P,Boolean],default:function(){return N("defaultContainer")}},boundariesElement:{type:[String,P],default:function(){return N("defaultBoundariesElement")}},popperOptions:{type:Object,default:function(){return N("defaultPopperOptions")}},popoverClass:{type:[String,Array],default:function(){return N("defaultClass")}},popoverBaseClass:{type:[String,Array],default:function(){return T.options.popover.defaultBaseClass}},popoverInnerClass:{type:[String,Array],default:function(){return T.options.popover.defaultInnerClass}},popoverWrapperClass:{type:[String,Array],default:function(){return T.options.popover.defaultWrapperClass}},popoverArrowClass:{type:[String,Array],default:function(){return T.options.popover.defaultArrowClass}},autoHide:{type:Boolean,default:function(){return T.options.popover.defaultAutoHide}},handleResize:{type:Boolean,default:function(){return T.options.popover.defaultHandleResize}},openGroup:{type:String,default:null},openClass:{type:[String,Array],default:function(){return T.options.popover.defaultOpenClass}}},data:function(){return{isOpen:!1,id:Math.random().toString(36).substr(2,10)}},computed:{cssClass:function(){return s({},this.openClass,this.isOpen)},popoverId:function(){return"popover_".concat(this.id)}},watch:{open:function(t){t?this.show():this.hide()},disabled:function(t,e){t!==e&&(t?this.hide():this.open&&this.show())},container:function(t){if(this.isOpen&&this.popperInstance){var e=this.$refs.popover,n=this.$refs.trigger,r=this.$_findContainer(this.container,n);if(!r)return void console.warn("No container for popover",this);r.appendChild(e),this.popperInstance.scheduleUpdate()}},trigger:function(t){this.$_removeEventListeners(),this.$_addEventListeners()},placement:function(t){var e=this;this.$_updatePopper((function(){e.popperInstance.options.placement=t}))},offset:"$_restartPopper",boundariesElement:"$_restartPopper",popperOptions:{handler:"$_restartPopper",deep:!0}},created:function(){this.$_isDisposed=!1,this.$_mounted=!1,this.$_events=[],this.$_preventOpen=!1},mounted:function(){var t=this.$refs.popover;t.parentNode&&t.parentNode.removeChild(t),this.$_init(),this.open&&this.show()},deactivated:function(){this.hide()},beforeDestroy:function(){this.dispose()},methods:{show:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.event,r=(e.skipDelay,e.force),i=void 0!==r&&r;!i&&this.disabled||(this.$_scheduleShow(n),this.$emit("show")),this.$emit("update:open",!0),this.$_beingShowed=!0,requestAnimationFrame((function(){t.$_beingShowed=!1}))},hide:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.event;t.skipDelay,this.$_scheduleHide(e),this.$emit("hide"),this.$emit("update:open",!1)},dispose:function(){if(this.$_isDisposed=!0,this.$_removeEventListeners(),this.hide({skipDelay:!0}),this.popperInstance&&(this.popperInstance.destroy(),!this.popperInstance.options.removeOnDestroy)){var t=this.$refs.popover;t.parentNode&&t.parentNode.removeChild(t)}this.$_mounted=!1,this.popperInstance=null,this.isOpen=!1,this.$emit("dispose")},$_init:function(){-1===this.trigger.indexOf("manual")&&this.$_addEventListeners()},$_show:function(){var t=this,e=this.$refs.trigger,n=this.$refs.popover;if(clearTimeout(this.$_disposeTimer),!this.isOpen){if(this.popperInstance&&(this.isOpen=!0,this.popperInstance.enableEventListeners(),this.popperInstance.scheduleUpdate()),!this.$_mounted){var i=this.$_findContainer(this.container,e);if(!i)return void console.warn("No container for popover",this);i.appendChild(n),this.$_mounted=!0}if(!this.popperInstance){var o=c({},this.popperOptions,{placement:this.placement});if(o.modifiers=c({},o.modifiers,{arrow:c({},o.modifiers&&o.modifiers.arrow,{element:this.$refs.arrow})}),this.offset){var a=this.$_getOffset();o.modifiers.offset=c({},o.modifiers&&o.modifiers.offset,{offset:a})}this.boundariesElement&&(o.modifiers.preventOverflow=c({},o.modifiers&&o.modifiers.preventOverflow,{boundariesElement:this.boundariesElement})),this.popperInstance=new r.a(e,n,o),requestAnimationFrame((function(){if(t.hidden)return t.hidden=!1,void t.$_hide();!t.$_isDisposed&&t.popperInstance?(t.popperInstance.scheduleUpdate(),requestAnimationFrame((function(){if(t.hidden)return t.hidden=!1,void t.$_hide();t.$_isDisposed?t.dispose():t.isOpen=!0}))):t.dispose()}))}var s=this.openGroup;if(s)for(var u,l=0;l<L.length;l++)(u=L[l]).openGroup!==s&&(u.hide(),u.$emit("close-group"));L.push(this),this.$emit("apply-show")}},$_hide:function(){var t=this;if(this.isOpen){var e=L.indexOf(this);-1!==e&&L.splice(e,1),this.isOpen=!1,this.popperInstance&&this.popperInstance.disableEventListeners(),clearTimeout(this.$_disposeTimer);var n=T.options.popover.disposeTimeout||T.options.disposeTimeout;null!==n&&(this.$_disposeTimer=setTimeout((function(){var e=t.$refs.popover;e&&(e.parentNode&&e.parentNode.removeChild(e),t.$_mounted=!1)}),n)),this.$emit("apply-hide")}},$_findContainer:function(t,e){return"string"==typeof t?t=window.document.querySelector(t):!1===t&&(t=e.parentNode),t},$_getOffset:function(){var t=o(this.offset),e=this.offset;return("number"===t||"string"===t&&-1===e.indexOf(","))&&(e="0, ".concat(e)),e},$_addEventListeners:function(){var t=this,e=this.$refs.trigger,n=[],r=[];("string"==typeof this.trigger?this.trigger.split(" ").filter((function(t){return-1!==["click","hover","focus"].indexOf(t)})):[]).forEach((function(t){switch(t){case"hover":n.push("mouseenter"),r.push("mouseleave");break;case"focus":n.push("focus"),r.push("blur");break;case"click":n.push("click"),r.push("click")}})),n.forEach((function(n){var r=function(e){t.isOpen||(e.usedByTooltip=!0,!t.$_preventOpen&&t.show({event:e}),t.hidden=!1)};t.$_events.push({event:n,func:r}),e.addEventListener(n,r)})),r.forEach((function(n){var r=function(e){e.usedByTooltip||(t.hide({event:e}),t.hidden=!0)};t.$_events.push({event:n,func:r}),e.addEventListener(n,r)}))},$_scheduleShow:function(){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(clearTimeout(this.$_scheduleTimer),t)this.$_show();else{var e=parseInt(this.delay&&this.delay.show||this.delay||0);this.$_scheduleTimer=setTimeout(this.$_show.bind(this),e)}},$_scheduleHide:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(clearTimeout(this.$_scheduleTimer),n)this.$_hide();else{var r=parseInt(this.delay&&this.delay.hide||this.delay||0);this.$_scheduleTimer=setTimeout((function(){if(t.isOpen){if(e&&"mouseleave"===e.type&&t.$_setTooltipNodeEvent(e))return;t.$_hide()}}),r)}},$_setTooltipNodeEvent:function(t){var e=this,n=this.$refs.trigger,r=this.$refs.popover,i=t.relatedreference||t.toElement||t.relatedTarget;return!!r.contains(i)&&(r.addEventListener(t.type,(function i(o){var a=o.relatedreference||o.toElement||o.relatedTarget;r.removeEventListener(t.type,i),n.contains(a)||e.hide({event:o})})),!0)},$_removeEventListeners:function(){var t=this.$refs.trigger;this.$_events.forEach((function(e){var n=e.func,r=e.event;t.removeEventListener(r,n)})),this.$_events=[]},$_updatePopper:function(t){this.popperInstance&&(t(),this.isOpen&&this.popperInstance.scheduleUpdate())},$_restartPopper:function(){if(this.popperInstance){var t=this.isOpen;this.dispose(),this.$_isDisposed=!1,this.$_init(),t&&this.show({skipDelay:!0,force:!0})}},$_handleGlobalClose:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.$_beingShowed||(this.hide({event:t}),t.closePopover?this.$emit("close-directive"):this.$emit("auto-hide"),n&&(this.$_preventOpen=!0,setTimeout((function(){e.$_preventOpen=!1}),300)))},$_handleResize:function(){this.isOpen&&this.popperInstance&&(this.popperInstance.scheduleUpdate(),this.$emit("resize"))}}};function R(t){for(var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=function(n){var r=L[n];if(r.$refs.popover){var i=r.$refs.popover.contains(t.target);requestAnimationFrame((function(){(t.closeAllPopover||t.closePopover&&i||r.autoHide&&!i)&&r.$_handleGlobalClose(t,e)}))}},r=0;r<L.length;r++)n(r)}"undefined"!=typeof document&&"undefined"!=typeof window&&(j?document.addEventListener("touchend",(function(t){R(t,!0)}),!p||{passive:!0,capture:!0}):window.addEventListener("click",(function(t){R(t)}),!0));var F=$,z=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"v-popover",class:t.cssClass},[n("div",{ref:"trigger",staticClass:"trigger",staticStyle:{display:"inline-block"},attrs:{"aria-describedby":t.popoverId,tabindex:-1!==t.trigger.indexOf("focus")?0:void 0}},[t._t("default")],2),t._v(" "),n("div",{ref:"popover",class:[t.popoverBaseClass,t.popoverClass,t.cssClass],style:{visibility:t.isOpen?"visible":"hidden"},attrs:{id:t.popoverId,"aria-hidden":t.isOpen?"false":"true",tabindex:t.autoHide?0:void 0},on:{keyup:function(e){if(!e.type.indexOf("key")&&t._k(e.keyCode,"esc",27,e.key,["Esc","Escape"]))return null;t.autoHide&&t.hide()}}},[n("div",{class:t.popoverWrapperClass},[n("div",{ref:"inner",class:t.popoverInnerClass,staticStyle:{position:"relative"}},[n("div",[t._t("popover")],2),t._v(" "),t.handleResize?n("ResizeObserver",{on:{notify:t.$_handleResize}}):t._e()],1),t._v(" "),n("div",{ref:"arrow",class:t.popoverArrowClass})])])])};z._withStripped=!0;var U=function(t,e,n,r,i,o,a,s,c,u){"boolean"!=typeof a&&(c=s,s=a,a=!1);var l,f="function"==typeof n?n.options:n;if(t&&t.render&&(f.render=t.render,f.staticRenderFns=t.staticRenderFns,f._compiled=!0,i&&(f.functional=!0)),r&&(f._scopeId=r),o?(l=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),e&&e.call(this,c(t)),t&&t._registeredComponents&&t._registeredComponents.add(o)},f._ssrRegister=l):e&&(l=a?function(){e.call(this,u(this.$root.$options.shadowRoot))}:function(t){e.call(this,s(t))}),l)if(f.functional){var d=f.render;f.render=function(t,e){return l.call(e),d(t,e)}}else{var p=f.beforeCreate;f.beforeCreate=p?[].concat(p,l):[l]}return n}({render:z,staticRenderFns:[]},void 0,F,void 0,!1,void 0,void 0,void 0),H=function(t,e){return t===e||t!=t&&e!=e},Y=function(t,e){for(var n=t.length;n--;)if(H(t[n][0],e))return n;return-1},V=Array.prototype.splice;function G(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}G.prototype.clear=function(){this.__data__=[],this.size=0},G.prototype.delete=function(t){var e=this.__data__,n=Y(e,t);return!(n<0||(n==e.length-1?e.pop():V.call(e,n,1),--this.size,0))},G.prototype.get=function(t){var e=this.__data__,n=Y(e,t);return n<0?void 0:e[n][1]},G.prototype.has=function(t){return Y(this.__data__,t)>-1},G.prototype.set=function(t,e){var n=this.__data__,r=Y(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this};var Q=G,W="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==t?t:"undefined"!=typeof self?self:{};function q(t,e){return t(e={exports:{}},e.exports),e.exports}var Z,X="object"==typeof W&&W&&W.Object===Object&&W,K="object"==typeof self&&self&&self.Object===Object&&self,J=X||K||Function("return this")(),tt=J.Symbol,et=Object.prototype,nt=et.hasOwnProperty,rt=et.toString,it=tt?tt.toStringTag:void 0,ot=Object.prototype.toString,at=tt?tt.toStringTag:void 0,st=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":at&&at in Object(t)?function(t){var e=nt.call(t,it),n=t[it];try{t[it]=void 0;var r=!0}catch(t){}var i=rt.call(t);return r&&(e?t[it]=n:delete t[it]),i}(t):function(t){return ot.call(t)}(t)},ct=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)},ut=function(t){if(!ct(t))return!1;var e=st(t);return"[object Function]"==e||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e},lt=J["__core-js_shared__"],ft=(Z=/[^.]+$/.exec(lt&<.keys&<.keys.IE_PROTO||""))?"Symbol(src)_1."+Z:"",dt=Function.prototype.toString,pt=/^\[object .+?Constructor\]$/,ht=Function.prototype,vt=Object.prototype,mt=ht.toString,At=vt.hasOwnProperty,gt=RegExp("^"+mt.call(At).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),yt=function(t){return!(!ct(t)||function(t){return!!ft&&ft in t}(t))&&(ut(t)?gt:pt).test(function(t){if(null!=t){try{return dt.call(t)}catch(t){}try{return t+""}catch(t){}}return""}(t))},bt=function(t,e){var n=function(t,e){return null==t?void 0:t[e]}(t,e);return yt(n)?n:void 0},_t=bt(J,"Map"),xt=bt(Object,"create"),wt=Object.prototype.hasOwnProperty,Ct=Object.prototype.hasOwnProperty;function kt(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}kt.prototype.clear=function(){this.__data__=xt?xt(null):{},this.size=0},kt.prototype.delete=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e},kt.prototype.get=function(t){var e=this.__data__;if(xt){var n=e[t];return"__lodash_hash_undefined__"===n?void 0:n}return wt.call(e,t)?e[t]:void 0},kt.prototype.has=function(t){var e=this.__data__;return xt?void 0!==e[t]:Ct.call(e,t)},kt.prototype.set=function(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=xt&&void 0===e?"__lodash_hash_undefined__":e,this};var Tt=kt,Et=function(t,e){var n=t.__data__;return function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t}(e)?n["string"==typeof e?"string":"hash"]:n.map};function St(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}St.prototype.clear=function(){this.size=0,this.__data__={hash:new Tt,map:new(_t||Q),string:new Tt}},St.prototype.delete=function(t){var e=Et(this,t).delete(t);return this.size-=e?1:0,e},St.prototype.get=function(t){return Et(this,t).get(t)},St.prototype.has=function(t){return Et(this,t).has(t)},St.prototype.set=function(t,e){var n=Et(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this};var Ot=St;function Mt(t){var e=this.__data__=new Q(t);this.size=e.size}Mt.prototype.clear=function(){this.__data__=new Q,this.size=0},Mt.prototype.delete=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n},Mt.prototype.get=function(t){return this.__data__.get(t)},Mt.prototype.has=function(t){return this.__data__.has(t)},Mt.prototype.set=function(t,e){var n=this.__data__;if(n instanceof Q){var r=n.__data__;if(!_t||r.length<199)return r.push([t,e]),this.size=++n.size,this;n=this.__data__=new Ot(r)}return n.set(t,e),this.size=n.size,this};var Dt=Mt,It=function(){try{var t=bt(Object,"defineProperty");return t({},"",{}),t}catch(t){}}(),Bt=function(t,e,n){"__proto__"==e&&It?It(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n},Nt=function(t,e,n){(void 0===n||H(t[e],n))&&(void 0!==n||e in t)||Bt(t,e,n)},jt=function(t,e,n){for(var r=-1,i=Object(t),o=n(t),a=o.length;a--;){var s=o[++r];if(!1===e(i[s],s,i))break}return t},Lt=q((function(t,e){var n=e&&!e.nodeType&&e,r=n&&t&&!t.nodeType&&t,i=r&&r.exports===n?J.Buffer:void 0,o=i?i.allocUnsafe:void 0;t.exports=function(t,e){if(e)return t.slice();var n=t.length,r=o?o(n):new t.constructor(n);return t.copy(r),r}})),Pt=J.Uint8Array,$t=function(t,e){var n=e?function(t){var e=new t.constructor(t.byteLength);return new Pt(e).set(new Pt(t)),e}(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)},Rt=Object.create,Ft=function(){function t(){}return function(e){if(!ct(e))return{};if(Rt)return Rt(e);t.prototype=e;var n=new t;return t.prototype=void 0,n}}(),zt=function(t,e){return function(n){return t(e(n))}}(Object.getPrototypeOf,Object),Ut=Object.prototype,Ht=function(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||Ut)},Yt=function(t){return null!=t&&"object"==typeof t},Vt=function(t){return Yt(t)&&"[object Arguments]"==st(t)},Gt=Object.prototype,Qt=Gt.hasOwnProperty,Wt=Gt.propertyIsEnumerable,qt=Vt(function(){return arguments}())?Vt:function(t){return Yt(t)&&Qt.call(t,"callee")&&!Wt.call(t,"callee")},Zt=Array.isArray,Xt=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991},Kt=function(t){return null!=t&&Xt(t.length)&&!ut(t)},Jt=function(){return!1},te=q((function(t,e){var n=e&&!e.nodeType&&e,r=n&&t&&!t.nodeType&&t,i=r&&r.exports===n?J.Buffer:void 0,o=(i?i.isBuffer:void 0)||Jt;t.exports=o})),ee=Function.prototype,ne=Object.prototype,re=ee.toString,ie=ne.hasOwnProperty,oe=re.call(Object),ae={};ae["[object Float32Array]"]=ae["[object Float64Array]"]=ae["[object Int8Array]"]=ae["[object Int16Array]"]=ae["[object Int32Array]"]=ae["[object Uint8Array]"]=ae["[object Uint8ClampedArray]"]=ae["[object Uint16Array]"]=ae["[object Uint32Array]"]=!0,ae["[object Arguments]"]=ae["[object Array]"]=ae["[object ArrayBuffer]"]=ae["[object Boolean]"]=ae["[object DataView]"]=ae["[object Date]"]=ae["[object Error]"]=ae["[object Function]"]=ae["[object Map]"]=ae["[object Number]"]=ae["[object Object]"]=ae["[object RegExp]"]=ae["[object Set]"]=ae["[object String]"]=ae["[object WeakMap]"]=!1;var se=q((function(t,e){var n=e&&!e.nodeType&&e,r=n&&t&&!t.nodeType&&t,i=r&&r.exports===n&&X.process,o=function(){try{return r&&r.require&&r.require("util").types||i&&i.binding&&i.binding("util")}catch(t){}}();t.exports=o})),ce=se&&se.isTypedArray,ue=ce?function(t){return function(e){return t(e)}}(ce):function(t){return Yt(t)&&Xt(t.length)&&!!ae[st(t)]},le=function(t,e){if("__proto__"!=e)return t[e]},fe=Object.prototype.hasOwnProperty,de=function(t,e,n){var r=t[e];fe.call(t,e)&&H(r,n)&&(void 0!==n||e in t)||Bt(t,e,n)},pe=/^(?:0|[1-9]\d*)$/,he=function(t,e){var n=typeof t;return!!(e=null==e?9007199254740991:e)&&("number"==n||"symbol"!=n&&pe.test(t))&&t>-1&&t%1==0&&t<e},ve=Object.prototype.hasOwnProperty,me=function(t,e){var n=Zt(t),r=!n&&qt(t),i=!n&&!r&&te(t),o=!n&&!r&&!i&&ue(t),a=n||r||i||o,s=a?function(t,e){for(var n=-1,r=Array(t);++n<t;)r[n]=e(n);return r}(t.length,String):[],c=s.length;for(var u in t)!e&&!ve.call(t,u)||a&&("length"==u||i&&("offset"==u||"parent"==u)||o&&("buffer"==u||"byteLength"==u||"byteOffset"==u)||he(u,c))||s.push(u);return s},Ae=Object.prototype.hasOwnProperty,ge=function(t){if(!ct(t))return function(t){var e=[];if(null!=t)for(var n in Object(t))e.push(n);return e}(t);var e=Ht(t),n=[];for(var r in t)("constructor"!=r||!e&&Ae.call(t,r))&&n.push(r);return n},ye=function(t){return Kt(t)?me(t,!0):ge(t)},be=function(t){return function(t,e,n,r){var i=!n;n||(n={});for(var o=-1,a=e.length;++o<a;){var s=e[o],c=r?r(n[s],t[s],s,n,t):void 0;void 0===c&&(c=t[s]),i?Bt(n,s,c):de(n,s,c)}return n}(t,ye(t))},_e=function(t,e,n,r,i,o,a){var s=le(t,n),c=le(e,n),u=a.get(c);if(u)Nt(t,n,u);else{var l=o?o(s,c,n+"",t,e,a):void 0,f=void 0===l;if(f){var d=Zt(c),p=!d&&te(c),h=!d&&!p&&ue(c);l=c,d||p||h?Zt(s)?l=s:function(t){return Yt(t)&&Kt(t)}(s)?l=function(t,e){var n=-1,r=t.length;for(e||(e=Array(r));++n<r;)e[n]=t[n];return e}(s):p?(f=!1,l=Lt(c,!0)):h?(f=!1,l=$t(c,!0)):l=[]:function(t){if(!Yt(t)||"[object Object]"!=st(t))return!1;var e=zt(t);if(null===e)return!0;var n=ie.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&re.call(n)==oe}(c)||qt(c)?(l=s,qt(s)?l=be(s):ct(s)&&!ut(s)||(l=function(t){return"function"!=typeof t.constructor||Ht(t)?{}:Ft(zt(t))}(c))):f=!1}f&&(a.set(c,l),i(l,c,r,o,a),a.delete(c)),Nt(t,n,l)}},xe=function(t){return t},we=function(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)},Ce=Math.max,ke=function(t){return function(){return t}},Te=It?function(t,e){return It(t,"toString",{configurable:!0,enumerable:!1,value:ke(e),writable:!0})}:xe,Ee=Date.now,Se=function(t){var e=0,n=0;return function(){var r=Ee(),i=16-(r-n);if(n=r,i>0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(Te),Oe=function(t,e){return Se(function(t,e,n){return e=Ce(void 0===e?t.length-1:e,0),function(){for(var r=arguments,i=-1,o=Ce(r.length-e,0),a=Array(o);++i<o;)a[i]=r[e+i];i=-1;for(var s=Array(e+1);++i<e;)s[i]=r[i];return s[e]=n(a),we(t,this,s)}}(t,e,xe),t+"")},Me=function(t){return Oe((function(e,n){var r=-1,i=n.length,o=i>1?n[i-1]:void 0,a=i>2?n[2]:void 0;for(o=t.length>3&&"function"==typeof o?(i--,o):void 0,a&&function(t,e,n){if(!ct(n))return!1;var r=typeof e;return!!("number"==r?Kt(n)&&he(e,n.length):"string"==r&&e in n)&&H(n[e],t)}(n[0],n[1],a)&&(o=i<3?void 0:o,i=1),e=Object(e);++r<i;){var s=n[r];s&&t(e,s,r)}return e}))}((function(t,e,n){!function t(e,n,r,i,o){e!==n&&jt(n,(function(a,s){if(ct(a))o||(o=new Dt),_e(e,n,s,r,t,i,o);else{var c=i?i(le(e,s),a,s+"",e,n,o):void 0;void 0===c&&(c=a),Nt(e,s,c)}}),ye)}(t,e,n)}));!function(t,e){void 0===e&&(e={});var n=e.insertAt;if("undefined"!=typeof document){var r=document.head||document.getElementsByTagName("head")[0],i=document.createElement("style");i.type="text/css","top"===n&&r.firstChild?r.insertBefore(i,r.firstChild):r.appendChild(i),i.styleSheet?i.styleSheet.cssText=t:i.appendChild(document.createTextNode(t))}}(".resize-observer[data-v-b329ee4c]{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:transparent;pointer-events:none;display:block;overflow:hidden;opacity:0}.resize-observer[data-v-b329ee4c] object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}");var De=T,Ie={install:function t(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!t.installed){t.installed=!0;var r={};Me(r,b,n),Ie.options=r,T.options=r,e.directive("tooltip",T),e.directive("close-popover",B),e.component("v-popover",U)}},get enabled(){return g.enabled},set enabled(t){g.enabled=t}},Be=null;"undefined"!=typeof window?Be=window.Vue:void 0!==t&&(Be=t.Vue),Be&&Be.use(Ie)}).call(this,n(15))},function(t,e,n){"use strict";n.r(e);var r=n(5);n(32), +/** + * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net> + * + * @author Julius Härtl <jus@bitgrid.net> + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +r.a.options.defaultTemplate='<div class="vue-tooltip" role="tooltip" data-v-'.concat("6673a70",'><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'),r.a.options.defaultHtml=!1,e.default=r.a},function(t,e,n){"use strict";var r=n(3),i=n.n(r); +/** + * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */e.a={before:function(){this.$slots.default&&""!==this.text.trim()||(i.a.util.warn("".concat(this.$options.name," cannot be empty and requires a meaningful text content"),this),this.$destroy(),this.$el.remove())},beforeUpdate:function(){this.text=this.getText()},data:function(){return{text:this.getText()}},computed:{isLongText:function(){return this.text&&this.text.trim().length>20}},methods:{getText:function(){return this.$slots.default?this.$slots.default[0].text.trim():""}}}},function(t,e,n){"use strict";t.exports=function(t,e){return"string"!=typeof(t=t.__esModule?t.default:t)?t:(/^['"].*['"]$/.test(t)&&(t=t.slice(1,-1)),/["'() \t\n]/.test(t)||e?'"'.concat(t.replace(/"/g,'\\"').replace(/\n/g,"\\n"),'"'):t)}},function(t,e){t.exports="data:application/vnd.ms-fontobject;base64,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"},function(t,e){t.exports="data:font/woff;base64,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"},function(t,e){t.exports="data:font/ttf;base64,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"},function(t,e){t.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCIgPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48bWV0YWRhdGE+PC9tZXRhZGF0YT48ZGVmcz48Zm9udCBpZD0iaWNvbmZvbnQtdnVlIiBob3Jpei1hZHYteD0iNTAwMCI+PGZvbnQtZmFjZSBmb250LWZhbWlseT0iaWNvbmZvbnQtdnVlIiBmb250LXdlaWdodD0iNDAwIiBmb250LXN0cmV0Y2g9Im5vcm1hbCIgdW5pdHMtcGVyLWVtPSI1MDAwIiBwYW5vc2UtMT0iMiAwIDUgMyAwIDAgMCAwIDAgMCIgYXNjZW50PSI1MDAwIiBkZXNjZW50PSIwIiB4LWhlaWdodD0iMCIgYmJveD0iLTEgMCA1MDExIDQ4NDQiIHVuZGVybGluZS10aGlja25lc3M9IjAiIHVuZGVybGluZS1wb3NpdGlvbj0iNTAiIHVuaWNvZGUtcmFuZ2U9IlUrZWEwMS1lYTBiIiAvPjxtaXNzaW5nLWdseXBoIGhvcml6LWFkdi14PSIwIiAgLz48Z2x5cGggZ2x5cGgtbmFtZT0iYXJyb3ctbGVmdC1kb3VibGUiIHVuaWNvZGU9IiYjeGVhMDE7IiBkPSJNMzc1MCAzOTA2IGwtMTQwNiAtMTQwNiBsMTQwNiAtMTQwNiBsMCAzMTIgbC0xMDk0IDEwOTQgbDEwOTQgMTA5NCBsMCAzMTIgWk0yMzQ0IDM5MDYgbC0xNDA2IC0xNDA2IGwxNDA2IC0xNDA2IGwwIDMxMiBsLTEwOTQgMTA5NCBsMTA5NCAxMDk0IGwwIDMxMiBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJhcnJvdy1sZWZ0IiB1bmljb2RlPSImI3hlYTAyOyIgZD0iTTE1NjMgMjUwMCBsMTg3NSAtMTg3NSBsMCAtMzEyIGwtMjE4OCAyMTg3IGwyMTg4IDIxODggbDAgLTMxMyBsLTE4NzUgLTE4NzUgWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0iYXJyb3ctcmlnaHQtZG91YmxlIiB1bmljb2RlPSImI3hlYTAzOyIgZD0iTTEyNTAgMTA5NCBsMTQwNiAxNDA2IGwtMTQwNiAxNDA2IGwwIC0zMTIgbDEwOTQgLTEwOTQgbC0xMDk0IC0xMDk0IGwwIC0zMTIgWk0yNjU2IDEwOTQgbDE0MDcgMTQwNiBsLTE0MDcgMTQwNiBsMCAtMzEyIGwxMDk0IC0xMDk0IGwtMTA5NCAtMTA5NCBsMCAtMzEyIFoiIC8+PGdseXBoIGdseXBoLW5hbWU9ImFycm93LXJpZ2h0IiB1bmljb2RlPSImI3hlYTA0OyIgZD0iTTM0MzggMjUwMCBsLTE4NzUgMTg3NSBsMCAzMTMgbDIxODcgLTIxODggbC0yMTg3IC0yMTg3IGwwIDMxMiBsMTg3NSAxODc1IFoiIC8+PGdseXBoIGdseXBoLW5hbWU9ImNsb3NlIiB1bmljb2RlPSImI3hlYTA1OyIgZD0iTTQzNzUgMTE1NiBsLTUzMSAtNTMxIGwtMTM0NCAxMzQ0IGwtMTM0NCAtMTM0NCBsLTUzMSA1MzEgbDEzNDQgMTM0NCBsLTEzNDQgMTM0NCBsNTMxIDUzMSBsMTM0NCAtMTM0NCBsMTM0NCAxMzQ0IGw1MzEgLTUzMSBsLTEzNDQgLTEzNDQgbDEzNDQgLTEzNDQgWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0iY29uZmlybS1mYWRlIiB1bmljb2RlPSImI3hlYTA2OyYjeGVhMDc7IiBkPSJNMjY1NiA0ODQ0IHEtMTAxIDAgLTE4MCAtNTcgcS03NCAtNTIgLTEwOSAtMTM4IHEtMzUgLTg2IC0xOSAtMTc1IHExOCAtOTYgOTAgLTE2NyBsMTQ5NSAtMTQ5NCBsLTM2MTYgMCBxLTc3IDEgLTEzOSAtMjYgcS01OCAtMjQgLTk5IC03MCBxLTM5IC00NCAtNTkgLTEwMSBxLTIwIC01NiAtMjAgLTExNiBxMCAtNjAgMjAgLTExNiBxMjAgLTU3IDU5IC0xMDEgcTQxIC00NiA5OSAtNzAgcTYyIC0yNyAxMzkgLTI1IGwzNjE2IDAgbC0xNDk1IC0xNDk1IHEtNTUgLTUzIC04MSAtMTE2IHEtMjQgLTU5IC0yMSAtMTIxIHEzIC01OCAzMCAtMTEzIHEyNSAtNTQgNjggLTk3IHE0MyAtNDMgOTYgLTY4IHE1NSAtMjYgMTE0IC0yOSBxNjIgLTMgMTIwIDIxIHE2MyAyNSAxMTYgODEgbDIwMjkgMjAyOCBxNTkgNjAgODAgMTQxIHEyMSA4MCAxIDE1OSBxLTIxIDgyIC04MSAxNDIgbC0yMDI5IDIwMjggcS00NCA0NSAtMTAyIDcwIHEtNTggMjUgLTEyMiAyNSBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJtZW51IiB1bmljb2RlPSImI3hlYTA4OyIgZD0iTTYyNSA0Mzc1IGwwIC02MjUgbDM3NTAgMCBsMCA2MjUgbC0zNzUwIDAgWk02MjUgMjgxMyBsMCAtNjI1IGwzNzUwIDAgbDAgNjI1IGwtMzc1MCAwIFpNNjI1IDEyNTAgbDAgLTYyNSBsMzc1MCAwIGwwIDYyNSBsLTM3NTAgMCBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJtb3JlIiB1bmljb2RlPSImI3hlYTA5OyIgZD0iTTkzOCAzMTI1IHEtMTI4IDAgLTI0NCAtNDkgcS0xMTIgLTQ4IC0xOTguNSAtMTM0LjUgcS04Ni41IC04Ni41IC0xMzMuNSAtMTk4LjUgcS01MCAtMTE2IC00OS41IC0yNDMgcTAuNSAtMTI3IDQ5LjUgLTI0MyBxNDcgLTExMiAxMzMuNSAtMTk4LjUgcTg2LjUgLTg2LjUgMTk4LjUgLTEzNC41IHExMTYgLTQ5IDI0My41IC00OSBxMTI3LjUgMCAyNDMuNSA0OSBxMTEyIDQ4IDE5OC41IDEzNC41IHE4Ni41IDg2LjUgMTMzLjUgMTk4LjUgcTUwIDExNiA1MCAyNDMgcTAgMTI3IC01MCAyNDMgcS00NyAxMTIgLTEzMy41IDE5OC41IHEtODYuNSA4Ni41IC0xOTguNSAxMzQuNSBxLTExNiA0OSAtMjQzIDQ5IFpNMjUwMCAzMTI1IHEtMTI3IDAgLTI0MyAtNDkgcS0xMTIgLTQ4IC0xOTguNSAtMTM0LjUgcS04Ni41IC04Ni41IC0xMzQuNSAtMTk4LjUgcS00OSAtMTE2IC00OSAtMjQzIHEwIC0xMjcgNDkgLTI0MyBxNDggLTExMiAxMzQuNSAtMTk4LjUgcTg2LjUgLTg2LjUgMTk4LjUgLTEzNC41IHExMTYgLTQ5IDI0MyAtNDkgcTEyNyAwIDI0MyA0OSBxMTEyIDQ4IDE5OC41IDEzNC41IHE4Ni41IDg2LjUgMTM0LjUgMTk4LjUgcTQ5IDExNiA0OSAyNDMgcTAgMTI3IC00OSAyNDMgcS00OCAxMTIgLTEzNC41IDE5OC41IHEtODYuNSA4Ni41IC0xOTguNSAxMzQuNSBxLTExNiA0OSAtMjQzIDQ5IFpNNDA2MyAzMTI1IHEtMTI4IDAgLTI0NCAtNDkgcS0xMTIgLTQ4IC0xOTguNSAtMTM0LjUgcS04Ni41IC04Ni41IC0xMzMuNSAtMTk4LjUgcS00OSAtMTE2IC00OSAtMjQzIHEwIC0xMjcgNDkgLTI0MyBxNDcgLTExMiAxMzMuNSAtMTk4LjUgcTg2LjUgLTg2LjUgMTk4LjUgLTEzNC41IHExMTYgLTQ5IDI0My41IC00OSBxMTI3LjUgMCAyNDMuNSA0OSBxMTEyIDQ4IDE5OC41IDEzNC41IHE4Ni41IDg2LjUgMTMzLjUgMTk4LjUgcTUwIDExNiA1MCAyNDMgcTAgMTI3IC01MCAyNDMgcS00NyAxMTIgLTEzMy41IDE5OC41IHEtODYuNSA4Ni41IC0xOTguNSAxMzQuNSBxLTExNiA0OSAtMjQzIDQ5IFoiIC8+PGdseXBoIGdseXBoLW5hbWU9InBhdXNlIiB1bmljb2RlPSImI3hlYTBhOyIgZD0iTTkzOCA0MDYzIGwwIC0zMTI1IGwxMjUwIDAgbDAgMzEyNSBsLTEyNTAgMCBaTTI4MTMgNDA2MyBsMCAtMzEyNSBsMTI1MCAwIGwwIDMxMjUgbC0xMjUwIDAgWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0icGxheSIgdW5pY29kZT0iJiN4ZWEwYjsiIGQ9Ik02MjUgNDM3NSBsMzc1MCAtMTg3NSBsLTM3NTAgLTE4NzUgbDAgMzc1MCBaIiAvPjwvZm9udD48L2RlZnM+PC9zdmc+"},function(t,e){function n(t){return"function"==typeof t.value||(console.warn("[Vue-click-outside:] provided expression",t.expression,"is not a function."),!1)}function r(t){return void 0!==t.componentInstance&&t.componentInstance.$isServer}t.exports={bind:function(t,e,i){function o(e){if(i.context){var n=e.path||e.composedPath&&e.composedPath();n&&n.length>0&&n.unshift(e.target),t.contains(e.target)||function(t,e){if(!t||!e)return!1;for(var n=0,r=e.length;n<r;n++)try{if(t.contains(e[n]))return!0;if(e[n].contains(t))return!1}catch(t){return!1}return!1}(i.context.popupItem,n)||t.__vueClickOutside__.callback(e)}}n(e)&&(t.__vueClickOutside__={handler:o,callback:e.value},!r(i)&&document.addEventListener("click",o))},update:function(t,e){n(e)&&(t.__vueClickOutside__.callback=e.value)},unbind:function(t,e,n){!r(n)&&document.removeEventListener("click",t.__vueClickOutside__.handler),delete t.__vueClickOutside__}}},function(t,e,n){"use strict";var r=n(7); +/** + * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */e.a={mixins:[r.a],props:{icon:{type:String,default:"",required:!0},title:{type:String,default:""}},computed:{isIconUrl:function(){try{return new URL(this.icon)}catch(t){return!1}}},methods:{onClick:function(t){this.$emit("click",t)}}}},function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){"use strict";(function(t){for( +/**! + * @fileOverview Kickass library to create and place poppers near their reference elements. + * @version 1.15.0 + * @license + * Copyright (c) 2016 Federico Zivolo and contributors + * + * 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. + */ +var n="undefined"!=typeof window&&"undefined"!=typeof document,r=["Edge","Trident","Firefox"],i=0,o=0;o<r.length;o+=1)if(n&&navigator.userAgent.indexOf(r[o])>=0){i=1;break}var a=n&&window.Promise?function(t){var e=!1;return function(){e||(e=!0,window.Promise.resolve().then((function(){e=!1,t()})))}}:function(t){var e=!1;return function(){e||(e=!0,setTimeout((function(){e=!1,t()}),i))}};function s(t){return t&&"[object Function]"==={}.toString.call(t)}function c(t,e){if(1!==t.nodeType)return[];var n=t.ownerDocument.defaultView.getComputedStyle(t,null);return e?n[e]:n}function u(t){return"HTML"===t.nodeName?t:t.parentNode||t.host}function l(t){if(!t)return document.body;switch(t.nodeName){case"HTML":case"BODY":return t.ownerDocument.body;case"#document":return t.body}var e=c(t),n=e.overflow,r=e.overflowX,i=e.overflowY;return/(auto|scroll|overlay)/.test(n+i+r)?t:l(u(t))}var f=n&&!(!window.MSInputMethodContext||!document.documentMode),d=n&&/MSIE 10/.test(navigator.userAgent);function p(t){return 11===t?f:10===t?d:f||d}function h(t){if(!t)return document.documentElement;for(var e=p(10)?document.body:null,n=t.offsetParent||null;n===e&&t.nextElementSibling;)n=(t=t.nextElementSibling).offsetParent;var r=n&&n.nodeName;return r&&"BODY"!==r&&"HTML"!==r?-1!==["TH","TD","TABLE"].indexOf(n.nodeName)&&"static"===c(n,"position")?h(n):n:t?t.ownerDocument.documentElement:document.documentElement}function v(t){return null!==t.parentNode?v(t.parentNode):t}function m(t,e){if(!(t&&t.nodeType&&e&&e.nodeType))return document.documentElement;var n=t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING,r=n?t:e,i=n?e:t,o=document.createRange();o.setStart(r,0),o.setEnd(i,0);var a,s,c=o.commonAncestorContainer;if(t!==c&&e!==c||r.contains(i))return"BODY"===(s=(a=c).nodeName)||"HTML"!==s&&h(a.firstElementChild)!==a?h(c):c;var u=v(t);return u.host?m(u.host,e):m(t,v(e).host)}function A(t){var e="top"===(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"top")?"scrollTop":"scrollLeft",n=t.nodeName;if("BODY"===n||"HTML"===n){var r=t.ownerDocument.documentElement;return(t.ownerDocument.scrollingElement||r)[e]}return t[e]}function g(t,e){var n="x"===e?"Left":"Top",r="Left"===n?"Right":"Bottom";return parseFloat(t["border"+n+"Width"],10)+parseFloat(t["border"+r+"Width"],10)}function y(t,e,n,r){return Math.max(e["offset"+t],e["scroll"+t],n["client"+t],n["offset"+t],n["scroll"+t],p(10)?parseInt(n["offset"+t])+parseInt(r["margin"+("Height"===t?"Top":"Left")])+parseInt(r["margin"+("Height"===t?"Bottom":"Right")]):0)}function b(t){var e=t.body,n=t.documentElement,r=p(10)&&getComputedStyle(n);return{height:y("Height",e,n,r),width:y("Width",e,n,r)}}var _=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},x=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),w=function(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t},C=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t};function k(t){return C({},t,{right:t.left+t.width,bottom:t.top+t.height})}function T(t){var e={};try{if(p(10)){e=t.getBoundingClientRect();var n=A(t,"top"),r=A(t,"left");e.top+=n,e.left+=r,e.bottom+=n,e.right+=r}else e=t.getBoundingClientRect()}catch(t){}var i={left:e.left,top:e.top,width:e.right-e.left,height:e.bottom-e.top},o="HTML"===t.nodeName?b(t.ownerDocument):{},a=o.width||t.clientWidth||i.right-i.left,s=o.height||t.clientHeight||i.bottom-i.top,u=t.offsetWidth-a,l=t.offsetHeight-s;if(u||l){var f=c(t);u-=g(f,"x"),l-=g(f,"y"),i.width-=u,i.height-=l}return k(i)}function E(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=p(10),i="HTML"===e.nodeName,o=T(t),a=T(e),s=l(t),u=c(e),f=parseFloat(u.borderTopWidth,10),d=parseFloat(u.borderLeftWidth,10);n&&i&&(a.top=Math.max(a.top,0),a.left=Math.max(a.left,0));var h=k({top:o.top-a.top-f,left:o.left-a.left-d,width:o.width,height:o.height});if(h.marginTop=0,h.marginLeft=0,!r&&i){var v=parseFloat(u.marginTop,10),m=parseFloat(u.marginLeft,10);h.top-=f-v,h.bottom-=f-v,h.left-=d-m,h.right-=d-m,h.marginTop=v,h.marginLeft=m}return(r&&!n?e.contains(s):e===s&&"BODY"!==s.nodeName)&&(h=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=A(e,"top"),i=A(e,"left"),o=n?-1:1;return t.top+=r*o,t.bottom+=r*o,t.left+=i*o,t.right+=i*o,t}(h,e)),h}function S(t){if(!t||!t.parentElement||p())return document.documentElement;for(var e=t.parentElement;e&&"none"===c(e,"transform");)e=e.parentElement;return e||document.documentElement}function O(t,e,n,r){var i=arguments.length>4&&void 0!==arguments[4]&&arguments[4],o={top:0,left:0},a=i?S(t):m(t,e);if("viewport"===r)o=function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=t.ownerDocument.documentElement,r=E(t,n),i=Math.max(n.clientWidth,window.innerWidth||0),o=Math.max(n.clientHeight,window.innerHeight||0),a=e?0:A(n),s=e?0:A(n,"left");return k({top:a-r.top+r.marginTop,left:s-r.left+r.marginLeft,width:i,height:o})}(a,i);else{var s=void 0;"scrollParent"===r?"BODY"===(s=l(u(e))).nodeName&&(s=t.ownerDocument.documentElement):s="window"===r?t.ownerDocument.documentElement:r;var f=E(s,a,i);if("HTML"!==s.nodeName||function t(e){var n=e.nodeName;if("BODY"===n||"HTML"===n)return!1;if("fixed"===c(e,"position"))return!0;var r=u(e);return!!r&&t(r)}(a))o=f;else{var d=b(t.ownerDocument),p=d.height,h=d.width;o.top+=f.top-f.marginTop,o.bottom=p+f.top,o.left+=f.left-f.marginLeft,o.right=h+f.left}}var v="number"==typeof(n=n||0);return o.left+=v?n:n.left||0,o.top+=v?n:n.top||0,o.right-=v?n:n.right||0,o.bottom-=v?n:n.bottom||0,o}function M(t,e,n,r,i){var o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===t.indexOf("auto"))return t;var a=O(n,r,o,i),s={top:{width:a.width,height:e.top-a.top},right:{width:a.right-e.right,height:a.height},bottom:{width:a.width,height:a.bottom-e.bottom},left:{width:e.left-a.left,height:a.height}},c=Object.keys(s).map((function(t){return C({key:t},s[t],{area:(e=s[t],e.width*e.height)});var e})).sort((function(t,e){return e.area-t.area})),u=c.filter((function(t){var e=t.width,r=t.height;return e>=n.clientWidth&&r>=n.clientHeight})),l=u.length>0?u[0].key:c[0].key,f=t.split("-")[1];return l+(f?"-"+f:"")}function D(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;return E(n,r?S(e):m(e,n),r)}function I(t){var e=t.ownerDocument.defaultView.getComputedStyle(t),n=parseFloat(e.marginTop||0)+parseFloat(e.marginBottom||0),r=parseFloat(e.marginLeft||0)+parseFloat(e.marginRight||0);return{width:t.offsetWidth+r,height:t.offsetHeight+n}}function B(t){var e={left:"right",right:"left",bottom:"top",top:"bottom"};return t.replace(/left|right|bottom|top/g,(function(t){return e[t]}))}function N(t,e,n){n=n.split("-")[0];var r=I(t),i={width:r.width,height:r.height},o=-1!==["right","left"].indexOf(n),a=o?"top":"left",s=o?"left":"top",c=o?"height":"width",u=o?"width":"height";return i[a]=e[a]+e[c]/2-r[c]/2,i[s]=n===s?e[s]-r[u]:e[B(s)],i}function j(t,e){return Array.prototype.find?t.find(e):t.filter(e)[0]}function L(t,e,n){return(void 0===n?t:t.slice(0,function(t,e,n){if(Array.prototype.findIndex)return t.findIndex((function(t){return t[e]===n}));var r=j(t,(function(t){return t[e]===n}));return t.indexOf(r)}(t,"name",n))).forEach((function(t){t.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var n=t.function||t.fn;t.enabled&&s(n)&&(e.offsets.popper=k(e.offsets.popper),e.offsets.reference=k(e.offsets.reference),e=n(e,t))})),e}function P(t,e){return t.some((function(t){var n=t.name;return t.enabled&&n===e}))}function $(t){for(var e=[!1,"ms","Webkit","Moz","O"],n=t.charAt(0).toUpperCase()+t.slice(1),r=0;r<e.length;r++){var i=e[r],o=i?""+i+n:t;if(void 0!==document.body.style[o])return o}return null}function R(t){var e=t.ownerDocument;return e?e.defaultView:window}function F(){var t,e;this.state.eventsEnabled&&(cancelAnimationFrame(this.scheduleUpdate),this.state=(t=this.reference,e=this.state,R(t).removeEventListener("resize",e.updateBound),e.scrollParents.forEach((function(t){t.removeEventListener("scroll",e.updateBound)})),e.updateBound=null,e.scrollParents=[],e.scrollElement=null,e.eventsEnabled=!1,e))}function z(t){return""!==t&&!isNaN(parseFloat(t))&&isFinite(t)}function U(t,e){Object.keys(e).forEach((function(n){var r="";-1!==["width","height","top","right","bottom","left"].indexOf(n)&&z(e[n])&&(r="px"),t.style[n]=e[n]+r}))}var H=n&&/Firefox/i.test(navigator.userAgent);function Y(t,e,n){var r=j(t,(function(t){return t.name===e})),i=!!r&&t.some((function(t){return t.name===n&&t.enabled&&t.order<r.order}));if(!i){var o="`"+e+"`",a="`"+n+"`";console.warn(a+" modifier is required by "+o+" modifier in order to work, be sure to include it before "+o+"!")}return i}var V=["auto-start","auto","auto-end","top-start","top","top-end","right-start","right","right-end","bottom-end","bottom","bottom-start","left-end","left","left-start"],G=V.slice(3);function Q(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=G.indexOf(t),r=G.slice(n+1).concat(G.slice(0,n));return e?r.reverse():r}var W="flip",q="clockwise",Z="counterclockwise";var X={placement:"bottom",positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(t){var e=t.placement,n=e.split("-")[0],r=e.split("-")[1];if(r){var i=t.offsets,o=i.reference,a=i.popper,s=-1!==["bottom","top"].indexOf(n),c=s?"left":"top",u=s?"width":"height",l={start:w({},c,o[c]),end:w({},c,o[c]+o[u]-a[u])};t.offsets.popper=C({},a,l[r])}return t}},offset:{order:200,enabled:!0,fn:function(t,e){var n,r=e.offset,i=t.placement,o=t.offsets,a=o.popper,s=o.reference,c=i.split("-")[0];return n=z(+r)?[+r,0]:function(t,e,n,r){var i=[0,0],o=-1!==["right","left"].indexOf(r),a=t.split(/(\+|\-)/).map((function(t){return t.trim()})),s=a.indexOf(j(a,(function(t){return-1!==t.search(/,|\s/)})));a[s]&&-1===a[s].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var c=/\s*,\s*|\s+/,u=-1!==s?[a.slice(0,s).concat([a[s].split(c)[0]]),[a[s].split(c)[1]].concat(a.slice(s+1))]:[a];return(u=u.map((function(t,r){var i=(1===r?!o:o)?"height":"width",a=!1;return t.reduce((function(t,e){return""===t[t.length-1]&&-1!==["+","-"].indexOf(e)?(t[t.length-1]=e,a=!0,t):a?(t[t.length-1]+=e,a=!1,t):t.concat(e)}),[]).map((function(t){return function(t,e,n,r){var i=t.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),o=+i[1],a=i[2];if(!o)return t;if(0===a.indexOf("%")){var s=void 0;switch(a){case"%p":s=n;break;case"%":case"%r":default:s=r}return k(s)[e]/100*o}return"vh"===a||"vw"===a?("vh"===a?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*o:o}(t,i,e,n)}))}))).forEach((function(t,e){t.forEach((function(n,r){z(n)&&(i[e]+=n*("-"===t[r-1]?-1:1))}))})),i}(r,a,s,c),"left"===c?(a.top+=n[0],a.left-=n[1]):"right"===c?(a.top+=n[0],a.left+=n[1]):"top"===c?(a.left+=n[0],a.top-=n[1]):"bottom"===c&&(a.left+=n[0],a.top+=n[1]),t.popper=a,t},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(t,e){var n=e.boundariesElement||h(t.instance.popper);t.instance.reference===n&&(n=h(n));var r=$("transform"),i=t.instance.popper.style,o=i.top,a=i.left,s=i[r];i.top="",i.left="",i[r]="";var c=O(t.instance.popper,t.instance.reference,e.padding,n,t.positionFixed);i.top=o,i.left=a,i[r]=s,e.boundaries=c;var u=e.priority,l=t.offsets.popper,f={primary:function(t){var n=l[t];return l[t]<c[t]&&!e.escapeWithReference&&(n=Math.max(l[t],c[t])),w({},t,n)},secondary:function(t){var n="right"===t?"left":"top",r=l[n];return l[t]>c[t]&&!e.escapeWithReference&&(r=Math.min(l[n],c[t]-("right"===t?l.width:l.height))),w({},n,r)}};return u.forEach((function(t){var e=-1!==["left","top"].indexOf(t)?"primary":"secondary";l=C({},l,f[e](t))})),t.offsets.popper=l,t},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(t){var e=t.offsets,n=e.popper,r=e.reference,i=t.placement.split("-")[0],o=Math.floor,a=-1!==["top","bottom"].indexOf(i),s=a?"right":"bottom",c=a?"left":"top",u=a?"width":"height";return n[s]<o(r[c])&&(t.offsets.popper[c]=o(r[c])-n[u]),n[c]>o(r[s])&&(t.offsets.popper[c]=o(r[s])),t}},arrow:{order:500,enabled:!0,fn:function(t,e){var n;if(!Y(t.instance.modifiers,"arrow","keepTogether"))return t;var r=e.element;if("string"==typeof r){if(!(r=t.instance.popper.querySelector(r)))return t}else if(!t.instance.popper.contains(r))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),t;var i=t.placement.split("-")[0],o=t.offsets,a=o.popper,s=o.reference,u=-1!==["left","right"].indexOf(i),l=u?"height":"width",f=u?"Top":"Left",d=f.toLowerCase(),p=u?"left":"top",h=u?"bottom":"right",v=I(r)[l];s[h]-v<a[d]&&(t.offsets.popper[d]-=a[d]-(s[h]-v)),s[d]+v>a[h]&&(t.offsets.popper[d]+=s[d]+v-a[h]),t.offsets.popper=k(t.offsets.popper);var m=s[d]+s[l]/2-v/2,A=c(t.instance.popper),g=parseFloat(A["margin"+f],10),y=parseFloat(A["border"+f+"Width"],10),b=m-t.offsets.popper[d]-g-y;return b=Math.max(Math.min(a[l]-v,b),0),t.arrowElement=r,t.offsets.arrow=(w(n={},d,Math.round(b)),w(n,p,""),n),t},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(t,e){if(P(t.instance.modifiers,"inner"))return t;if(t.flipped&&t.placement===t.originalPlacement)return t;var n=O(t.instance.popper,t.instance.reference,e.padding,e.boundariesElement,t.positionFixed),r=t.placement.split("-")[0],i=B(r),o=t.placement.split("-")[1]||"",a=[];switch(e.behavior){case W:a=[r,i];break;case q:a=Q(r);break;case Z:a=Q(r,!0);break;default:a=e.behavior}return a.forEach((function(s,c){if(r!==s||a.length===c+1)return t;r=t.placement.split("-")[0],i=B(r);var u=t.offsets.popper,l=t.offsets.reference,f=Math.floor,d="left"===r&&f(u.right)>f(l.left)||"right"===r&&f(u.left)<f(l.right)||"top"===r&&f(u.bottom)>f(l.top)||"bottom"===r&&f(u.top)<f(l.bottom),p=f(u.left)<f(n.left),h=f(u.right)>f(n.right),v=f(u.top)<f(n.top),m=f(u.bottom)>f(n.bottom),A="left"===r&&p||"right"===r&&h||"top"===r&&v||"bottom"===r&&m,g=-1!==["top","bottom"].indexOf(r),y=!!e.flipVariations&&(g&&"start"===o&&p||g&&"end"===o&&h||!g&&"start"===o&&v||!g&&"end"===o&&m),b=!!e.flipVariationsByContent&&(g&&"start"===o&&h||g&&"end"===o&&p||!g&&"start"===o&&m||!g&&"end"===o&&v),_=y||b;(d||A||_)&&(t.flipped=!0,(d||A)&&(r=a[c+1]),_&&(o=function(t){return"end"===t?"start":"start"===t?"end":t}(o)),t.placement=r+(o?"-"+o:""),t.offsets.popper=C({},t.offsets.popper,N(t.instance.popper,t.offsets.reference,t.placement)),t=L(t.instance.modifiers,t,"flip"))})),t},behavior:"flip",padding:5,boundariesElement:"viewport",flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:function(t){var e=t.placement,n=e.split("-")[0],r=t.offsets,i=r.popper,o=r.reference,a=-1!==["left","right"].indexOf(n),s=-1===["top","left"].indexOf(n);return i[a?"left":"top"]=o[n]-(s?i[a?"width":"height"]:0),t.placement=B(e),t.offsets.popper=k(i),t}},hide:{order:800,enabled:!0,fn:function(t){if(!Y(t.instance.modifiers,"hide","preventOverflow"))return t;var e=t.offsets.reference,n=j(t.instance.modifiers,(function(t){return"preventOverflow"===t.name})).boundaries;if(e.bottom<n.top||e.left>n.right||e.top>n.bottom||e.right<n.left){if(!0===t.hide)return t;t.hide=!0,t.attributes["x-out-of-boundaries"]=""}else{if(!1===t.hide)return t;t.hide=!1,t.attributes["x-out-of-boundaries"]=!1}return t}},computeStyle:{order:850,enabled:!0,fn:function(t,e){var n=e.x,r=e.y,i=t.offsets.popper,o=j(t.instance.modifiers,(function(t){return"applyStyle"===t.name})).gpuAcceleration;void 0!==o&&console.warn("WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!");var a,s,c=void 0!==o?o:e.gpuAcceleration,u=h(t.instance.popper),l=T(u),f={position:i.position},d=function(t,e){var n=t.offsets,r=n.popper,i=n.reference,o=Math.round,a=Math.floor,s=function(t){return t},c=o(i.width),u=o(r.width),l=-1!==["left","right"].indexOf(t.placement),f=-1!==t.placement.indexOf("-"),d=e?l||f||c%2==u%2?o:a:s,p=e?o:s;return{left:d(c%2==1&&u%2==1&&!f&&e?r.left-1:r.left),top:p(r.top),bottom:p(r.bottom),right:d(r.right)}}(t,window.devicePixelRatio<2||!H),p="bottom"===n?"top":"bottom",v="right"===r?"left":"right",m=$("transform");if(s="bottom"===p?"HTML"===u.nodeName?-u.clientHeight+d.bottom:-l.height+d.bottom:d.top,a="right"===v?"HTML"===u.nodeName?-u.clientWidth+d.right:-l.width+d.right:d.left,c&&m)f[m]="translate3d("+a+"px, "+s+"px, 0)",f[p]=0,f[v]=0,f.willChange="transform";else{var A="bottom"===p?-1:1,g="right"===v?-1:1;f[p]=s*A,f[v]=a*g,f.willChange=p+", "+v}var y={"x-placement":t.placement};return t.attributes=C({},y,t.attributes),t.styles=C({},f,t.styles),t.arrowStyles=C({},t.offsets.arrow,t.arrowStyles),t},gpuAcceleration:!0,x:"bottom",y:"right"},applyStyle:{order:900,enabled:!0,fn:function(t){var e,n;return U(t.instance.popper,t.styles),e=t.instance.popper,n=t.attributes,Object.keys(n).forEach((function(t){!1!==n[t]?e.setAttribute(t,n[t]):e.removeAttribute(t)})),t.arrowElement&&Object.keys(t.arrowStyles).length&&U(t.arrowElement,t.arrowStyles),t},onLoad:function(t,e,n,r,i){var o=D(i,e,t,n.positionFixed),a=M(n.placement,o,e,t,n.modifiers.flip.boundariesElement,n.modifiers.flip.padding);return e.setAttribute("x-placement",a),U(e,{position:n.positionFixed?"fixed":"absolute"}),n},gpuAcceleration:void 0}}},K=function(){function t(e,n){var r=this,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};_(this,t),this.scheduleUpdate=function(){return requestAnimationFrame(r.update)},this.update=a(this.update.bind(this)),this.options=C({},t.Defaults,i),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=e&&e.jquery?e[0]:e,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(C({},t.Defaults.modifiers,i.modifiers)).forEach((function(e){r.options.modifiers[e]=C({},t.Defaults.modifiers[e]||{},i.modifiers?i.modifiers[e]:{})})),this.modifiers=Object.keys(this.options.modifiers).map((function(t){return C({name:t},r.options.modifiers[t])})).sort((function(t,e){return t.order-e.order})),this.modifiers.forEach((function(t){t.enabled&&s(t.onLoad)&&t.onLoad(r.reference,r.popper,r.options,t,r.state)})),this.update();var o=this.options.eventsEnabled;o&&this.enableEventListeners(),this.state.eventsEnabled=o}return x(t,[{key:"update",value:function(){return function(){if(!this.state.isDestroyed){var t={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};t.offsets.reference=D(this.state,this.popper,this.reference,this.options.positionFixed),t.placement=M(this.options.placement,t.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),t.originalPlacement=t.placement,t.positionFixed=this.options.positionFixed,t.offsets.popper=N(this.popper,t.offsets.reference,t.placement),t.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",t=L(this.modifiers,t),this.state.isCreated?this.options.onUpdate(t):(this.state.isCreated=!0,this.options.onCreate(t))}}.call(this)}},{key:"destroy",value:function(){return function(){return this.state.isDestroyed=!0,P(this.modifiers,"applyStyle")&&(this.popper.removeAttribute("x-placement"),this.popper.style.position="",this.popper.style.top="",this.popper.style.left="",this.popper.style.right="",this.popper.style.bottom="",this.popper.style.willChange="",this.popper.style[$("transform")]=""),this.disableEventListeners(),this.options.removeOnDestroy&&this.popper.parentNode.removeChild(this.popper),this}.call(this)}},{key:"enableEventListeners",value:function(){return function(){this.state.eventsEnabled||(this.state=function(t,e,n,r){n.updateBound=r,R(t).addEventListener("resize",n.updateBound,{passive:!0});var i=l(t);return function t(e,n,r,i){var o="BODY"===e.nodeName,a=o?e.ownerDocument.defaultView:e;a.addEventListener(n,r,{passive:!0}),o||t(l(a.parentNode),n,r,i),i.push(a)}(i,"scroll",n.updateBound,n.scrollParents),n.scrollElement=i,n.eventsEnabled=!0,n}(this.reference,this.options,this.state,this.scheduleUpdate))}.call(this)}},{key:"disableEventListeners",value:function(){return F.call(this)}}]),t}();K.Utils=("undefined"!=typeof window?window:t).PopperUtils,K.placements=V,K.Defaults=X,e.a=K}).call(this,n(15))},function(t,e,n){"use strict"; +/** + * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */e.a=function(t){return Math.random().toString(36).replace(/[^a-z]+/g,"").substr(0,t||5)}},function(t,e,n){var r=n(42);"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals),(0,n(2).default)("6d914181",r,!0,{})},function(t,e,n){var r=n(44);"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals),(0,n(2).default)("2fc216d3",r,!0,{})},function(t,e,n){var r=n(46);"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals),(0,n(2).default)("95523852",r,!0,{})},function(t,e,n){"use strict";(function(t){n.d(e,"a",(function(){return i}));var r=void 0;var i={render:function(){var t=this.$createElement;return(this._self._c||t)("div",{staticClass:"resize-observer",attrs:{tabindex:"-1"}})},staticRenderFns:[],_scopeId:"data-v-b329ee4c",name:"resize-observer",methods:{compareAndNotify:function(){this._w===this.$el.offsetWidth&&this._h===this.$el.offsetHeight||(this._w=this.$el.offsetWidth,this._h=this.$el.offsetHeight,this.$emit("notify"))},addResizeHandlers:function(){this._resizeObject.contentDocument.defaultView.addEventListener("resize",this.compareAndNotify),this.compareAndNotify()},removeResizeHandlers:function(){this._resizeObject&&this._resizeObject.onload&&(!r&&this._resizeObject.contentDocument&&this._resizeObject.contentDocument.defaultView.removeEventListener("resize",this.compareAndNotify),delete this._resizeObject.onload)}},mounted:function(){var t=this;(function t(){t.init||(t.init=!0,r=-1!==function(){var t=window.navigator.userAgent,e=t.indexOf("MSIE ");if(e>0)return parseInt(t.substring(e+5,t.indexOf(".",e)),10);if(t.indexOf("Trident/")>0){var n=t.indexOf("rv:");return parseInt(t.substring(n+3,t.indexOf(".",n)),10)}var r=t.indexOf("Edge/");return r>0?parseInt(t.substring(r+5,t.indexOf(".",r)),10):-1}())})(),this.$nextTick((function(){t._w=t.$el.offsetWidth,t._h=t.$el.offsetHeight}));var e=document.createElement("object");this._resizeObject=e,e.setAttribute("aria-hidden","true"),e.setAttribute("tabindex",-1),e.onload=this.addResizeHandlers,e.type="text/html",r&&this.$el.appendChild(e),e.data="about:blank",r||this.$el.appendChild(e)},beforeDestroy:function(){this.removeResizeHandlers()}},o={version:"0.4.5",install:function(t){t.component("resize-observer",i),t.component("ResizeObserver",i)}},a=null;"undefined"!=typeof window?a=window.Vue:void 0!==t&&(a=t.Vue),a&&a.use(o)}).call(this,n(15))},function(t,e,n){var r=n(81);"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals),(0,n(2).default)("1351c3b7",r,!0,{})},function(t,e,n){"use strict"; +/** + * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */e.a=function(t){t.mounted?Array.isArray(t.mounted)||(t.mounted=[t.mounted]):t.mounted=[],t.mounted.push((function(){this.$el.setAttribute("data-v-".concat("6673a70"),"")}))}},function(t,e,n){"use strict";n.r(e);var r={name:"PopoverMenuItem",props:{item:{type:Object,required:!0,default:function(){return{key:"nextcloud-link",href:"https://nextcloud.com",icon:"icon-links",text:"Nextcloud"}},validator:function(t){return!t.input||-1!==["text","checkbox"].indexOf(t.input)}}},computed:{key:function(){return this.item.key?this.item.key:Math.round(16*Math.random()*1e6).toString(16)},iconIsUrl:function(){try{return new URL(this.item.icon),!0}catch(t){return!1}}},methods:{action:function(t){this.item.action&&this.item.action(t)}}},i=(n(41),n(43),n(0)),o={name:"PopoverMenu",components:{PopoverMenuItem:Object(i.a)(r,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("li",[t.item.href?n("a",{staticClass:"focusable",attrs:{href:t.item.href?t.item.href:"#",target:t.item.target?t.item.target:"",download:t.item.download,rel:"noreferrer noopener"},on:{click:t.action}},[t.iconIsUrl?n("img",{attrs:{src:t.item.icon}}):n("span",{class:t.item.icon}),t._v(" "),t.item.text&&t.item.longtext?n("p",[n("strong",{staticClass:"menuitem-text"},[t._v("\n\t\t\t\t"+t._s(t.item.text)+"\n\t\t\t")]),n("br"),t._v(" "),n("span",{staticClass:"menuitem-text-detail"},[t._v("\n\t\t\t\t"+t._s(t.item.longtext)+"\n\t\t\t")])]):t.item.text?n("span",[t._v("\n\t\t\t"+t._s(t.item.text)+"\n\t\t")]):t.item.longtext?n("p",[t._v("\n\t\t\t"+t._s(t.item.longtext)+"\n\t\t")]):t._e()]):t.item.input?n("span",{staticClass:"menuitem",class:{active:t.item.active}},["checkbox"!==t.item.input?n("span",{class:t.item.icon}):t._e(),t._v(" "),"text"===t.item.input?n("form",{class:t.item.input,on:{submit:function(e){return e.preventDefault(),t.item.action(e)}}},[n("input",{attrs:{type:t.item.input,placeholder:t.item.text,required:""},domProps:{value:t.item.value}}),t._v(" "),n("input",{staticClass:"icon-confirm",attrs:{type:"submit",value:""}})]):["checkbox"===t.item.input?n("input",{directives:[{name:"model",rawName:"v-model",value:t.item.model,expression:"item.model"}],class:t.item.input,attrs:{id:t.key,type:"checkbox"},domProps:{checked:Array.isArray(t.item.model)?t._i(t.item.model,null)>-1:t.item.model},on:{change:[function(e){var n=t.item.model,r=e.target,i=!!r.checked;if(Array.isArray(n)){var o=t._i(n,null);r.checked?o<0&&t.$set(t.item,"model",n.concat([null])):o>-1&&t.$set(t.item,"model",n.slice(0,o).concat(n.slice(o+1)))}else t.$set(t.item,"model",i)},t.item.action]}}):"radio"===t.item.input?n("input",{directives:[{name:"model",rawName:"v-model",value:t.item.model,expression:"item.model"}],class:t.item.input,attrs:{id:t.key,type:"radio"},domProps:{checked:t._q(t.item.model,null)},on:{change:[function(e){return t.$set(t.item,"model",null)},t.item.action]}}):n("input",{directives:[{name:"model",rawName:"v-model",value:t.item.model,expression:"item.model"}],class:t.item.input,attrs:{id:t.key,type:t.item.input},domProps:{value:t.item.model},on:{change:t.item.action,input:function(e){e.target.composing||t.$set(t.item,"model",e.target.value)}}}),t._v(" "),n("label",{attrs:{for:t.key},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.item.action(e)}}},[t._v("\n\t\t\t\t"+t._s(t.item.text)+"\n\t\t\t")])]],2):t.item.action?n("button",{staticClass:"menuitem focusable",class:{active:t.item.active},attrs:{disabled:t.item.disabled},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.item.action(e)}}},[n("span",{class:t.item.icon}),t._v(" "),t.item.text&&t.item.longtext?n("p",[n("strong",{staticClass:"menuitem-text"},[t._v("\n\t\t\t\t"+t._s(t.item.text)+"\n\t\t\t")]),n("br"),t._v(" "),n("span",{staticClass:"menuitem-text-detail"},[t._v("\n\t\t\t\t"+t._s(t.item.longtext)+"\n\t\t\t")])]):t.item.text?n("span",[t._v("\n\t\t\t"+t._s(t.item.text)+"\n\t\t")]):t.item.longtext?n("p",[t._v("\n\t\t\t"+t._s(t.item.longtext)+"\n\t\t")]):t._e()]):n("span",{staticClass:"menuitem",class:{active:t.item.active}},[n("span",{class:t.item.icon}),t._v(" "),t.item.text&&t.item.longtext?n("p",[n("strong",{staticClass:"menuitem-text"},[t._v("\n\t\t\t\t"+t._s(t.item.text)+"\n\t\t\t")]),n("br"),t._v(" "),n("span",{staticClass:"menuitem-text-detail"},[t._v("\n\t\t\t\t"+t._s(t.item.longtext)+"\n\t\t\t")])]):t.item.text?n("span",[t._v("\n\t\t\t"+t._s(t.item.text)+"\n\t\t")]):t.item.longtext?n("p",[t._v("\n\t\t\t"+t._s(t.item.longtext)+"\n\t\t")]):t._e()])])}),[],!1,null,"8dc4efb0",null).exports},props:{menu:{type:Array,default:function(){return[{href:"https://nextcloud.com",icon:"icon-links",text:"Nextcloud"}]},required:!0}}},a=(n(45),Object(i.a)(o,(function(){var t=this.$createElement,e=this._self._c||t;return e("ul",this._l(this.menu,(function(t,n){return e("PopoverMenuItem",{key:n,attrs:{item:t}})})),1)}),[],!1,null,"2f982451",null).exports);n.d(e,"PopoverMenu",(function(){return a})), +/** + * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +e.default=a},function(t,e){},function(t,e,n){var r=n(91);"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals),(0,n(2).default)("2601b667",r,!0,{})},function(t,e,n){var r=n(95);"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals),(0,n(2).default)("a39cae00",r,!0,{})},function(t,e,n){var r=n(97);"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals),(0,n(2).default)("30f6e694",r,!0,{})},function(t,e,n){var r=n(120);"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals),(0,n(2).default)("51023bd3",r,!0,{})},function(t,e,n){"use strict";n.r(e);var r=n(13),i=n.n(r),o=n(6),a=n(17),s=n(3),c=n.n(s),u=function(t,e,n){t.forEach((function(r,i){var o=!r.componentOptions&&r.tag,a=r.componentOptions&&"string"==typeof r.componentOptions.tag&&-1===e.indexOf(r.componentOptions.tag);(o||a)&&(c.a.util.warn("".concat(o?r.tag:r.componentOptions.tag," is not allowed inside the ").concat(n.$options.name," component"),n),t.splice(i,1))}))},l=["ActionButton","ActionCheckbox","ActionInput","ActionLink","ActionRouter","ActionText","ActionTextEditable"],f={name:"Actions",directives:{ClickOutside:i.a,tooltip:o.default},props:{open:{type:Boolean,default:!1},menuAlign:{type:String,default:"center",validator:function(t){return["left","center","right"].indexOf(t)>-1}}},data:function(){return{actions:[],opened:this.open,focusIndex:0,randomId:"menu-"+Object(a.a)(),offsetX:0}},computed:{isValidSingleAction:function(){return 1===this.actions.length},firstAction:function(){return this.actions[0]},firstActionElement:function(){if(this.firstAction&&this.firstAction.componentOptions){var t=this.firstAction.componentOptions.tag;if("ActionLink"===t)return{is:"a",href:this.getVNodeProp(this.firstAction,"href"),target:this.getVNodeProp(this.firstAction,"target")};if("ActionRouter"===t)return{is:"router-link",to:this.getVNodeProp(this.firstAction,"to"),exact:this.getVNodeProp(this.firstAction,"exact")}}return{is:"button"}},firstActionEvent:function(){return this.firstAction&&this.firstAction.componentOptions&&this.firstAction.componentOptions.listeners&&this.firstAction.componentOptions.listeners.click?"click":null}},watch:{open:function(t){var e=this;this.opened=t,this.opened&&this.$nextTick((function(){e.onOpen()}))}},beforeMount:function(){this.initActions(),u(this.$slots.default,l,this)},mounted:function(){this.popupItem=this.$el},beforeUpdate:function(){u(this.$slots.default,l,this)},methods:{toggleMenu:function(){var t=this;this.opened=!this.opened,this.opened&&(this.$nextTick((function(){t.onOpen(),t.focusFirstAction()})),this.$emit("open")),this.$emit("update:open",this.opened)},closeMenu:function(){this.opened&&(this.$emit("update:open",!1),this.$emit("close")),this.opened=!1,this.offsetX=0},onOpen:function(){this.offsetX=0;var t=function(t){var e=t.getBoundingClientRect(),n=document.documentElement.clientHeight,r=document.documentElement.clientWidth,i=Object.assign({});return i.top=e.top<0,i.left=e.left<0,i.bottom=e.bottom>n,i.right=e.right>r,i.any=i.top||i.left||i.bottom||i.right,i.all=i.top&&i.left&&i.bottom&&i.right,i.offsetY=i.top?e.top:i.bottom?e.bottom-n:0,i.offsetX=i.left?e.left:i.right?e.right-r:0,i}(this.$refs.menu);t.any&&(this.offsetX=t.offsetX>0?Math.round(t.offsetX)+5:Math.round(t.offsetX)-5)},onMouseFocusAction:function(t){if(document.activeElement!==t.target){var e=t.target.closest("li");if(e){var n=e.querySelector(".focusable");if(n){var r=this.$refs.menu.querySelectorAll(".focusable"),i=Array.prototype.indexOf.call(r,n);i>-1&&(this.focusIndex=i,this.focusAction())}}}},removeCurrentActive:function(){var t=this.$refs.menu.querySelector("li.active");t&&t.classList.remove("active")},focusAction:function(){var t=this.$refs.menu.querySelectorAll(".focusable")[this.focusIndex];if(t){var e=t.closest("li");t.focus(),e&&(this.removeCurrentActive(),e.classList.add("active"))}},focusPreviousAction:function(){this.focusIndex=Math.max(this.focusIndex-1,0),this.focusAction()},focusNextAction:function(){this.focusIndex=Math.min(this.focusIndex+1,this.$refs.menu.querySelectorAll(".focusable").length-1),this.focusAction()},focusFirstAction:function(){this.focusIndex=0,this.focusAction()},focusLastAction:function(){this.focusIndex=this.$el.querySelectorAll(".focusable").length-1,this.focusAction()},getVNodeProp:function(t,e){return t.componentOptions.propsData[e]},execFirstAction:function(t){this.firstAction&&this.firstAction.componentOptions&&this.firstAction.componentOptions.listeners&&this.firstAction.componentOptions.listeners.click&&(this.firstAction.componentOptions.listeners.click(t),t.preventDefault())},initActions:function(){this.actions=this.$slots.default.filter((function(t){return t&&t.componentOptions}))||[]}}},d=(n(80),n(0)),p=n(25),h=n.n(p),v=Object(d.a)(f,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.isValidSingleAction?n("element",t._b({directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.getVNodeProp(t.firstAction,"text"),expression:"getVNodeProp(firstAction, 'text')",modifiers:{auto:!0}}],staticClass:"action-item action-item--single",class:t.getVNodeProp(t.firstAction,"icon"),attrs:{rel:"noreferrer noopener"},on:t._d({},[t.firstActionEvent,t.execFirstAction])},"element",t.firstActionElement,!1),[n("span",{attrs:{"aria-hidden":!0,hidden:""}},[t._t("default")],2)]):n("div",{directives:[{name:"show",rawName:"v-show",value:t.actions.length>0,expression:"actions.length > 0"}],staticClass:"action-item",class:{"action-item--open":t.opened},on:{keydown:[function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"up",38,e.key,["Up","ArrowUp"])?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.focusPreviousAction(e))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"down",40,e.key,["Down","ArrowDown"])?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.focusNextAction(e))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"tab",9,e.key,"Tab")?null:e.shiftKey?(e.preventDefault(),t.focusPreviousAction(e)):null},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"page-up",void 0,e.key,void 0)?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.focusFirstAction(e))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"page-down",void 0,e.key,void 0)?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.focusLastAction(e))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"esc",27,e.key,["Esc","Escape"])?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.closeMenu(e))}]}},[n("a",{directives:[{name:"click-outside",rawName:"v-click-outside",value:t.closeMenu,expression:"closeMenu"}],staticClass:"icon action-item__menutoggle",attrs:{href:"#","aria-haspopup":"true","aria-controls":t.randomId,"aria-expanded":t.opened},on:{click:function(e){return e.preventDefault(),t.toggleMenu(e)},keydown:function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"space",32,e.key,[" ","Spacebar"])?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.toggleMenu(e))}}}),t._v(" "),t.opened?n("div",{ref:"menu",staticClass:"action-item__menu",class:["menu-"+t.menuAlign,{open:t.opened}],style:{marginRight:t.offsetX+"px"},attrs:{tabindex:"-1"},on:{mousemove:t.onMouseFocusAction}},[n("div",{staticClass:"action-item__menu_arrow",style:{transform:"translateX("+t.offsetX+"px)"}}),t._v(" "),n("ul",{attrs:{id:t.randomId,tabindex:"-1"}},[t._t("default")],2)]):t._e()])}),[],!1,null,"627a433f",null);"function"==typeof h.a&&h()(v);var m=v.exports;n.d(e,"Actions",(function(){return m})), +/** + * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +e.default=m},function(t,e,n){window,t.exports=function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},n.r=function(t){Object.defineProperty(t,"__esModule",{value:!0})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=3)}([function(t,e,n){var r;!function(i){"use strict";var o={},a=/d{1,4}|M{1,4}|YY(?:YY)?|S{1,3}|Do|ZZ|([HhMsDm])\1?|[aA]|"[^"]*"|'[^']*'/g,s=/\d\d?/,c=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,u=/\[([^]*?)\]/gm,l=function(){};function f(t,e){for(var n=[],r=0,i=t.length;r<i;r++)n.push(t[r].substr(0,e));return n}function d(t){return function(e,n,r){var i=r[t].indexOf(n.charAt(0).toUpperCase()+n.substr(1).toLowerCase());~i&&(e.month=i)}}function p(t,e){for(t=String(t),e=e||2;t.length<e;)t="0"+t;return t}var h=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],v=["January","February","March","April","May","June","July","August","September","October","November","December"],m=f(v,3),A=f(h,3);o.i18n={dayNamesShort:A,dayNames:h,monthNamesShort:m,monthNames:v,amPm:["am","pm"],DoFn:function(t){return t+["th","st","nd","rd"][t%10>3?0:(t-t%10!=10)*t%10]}};var g={D:function(t){return t.getDate()},DD:function(t){return p(t.getDate())},Do:function(t,e){return e.DoFn(t.getDate())},d:function(t){return t.getDay()},dd:function(t){return p(t.getDay())},ddd:function(t,e){return e.dayNamesShort[t.getDay()]},dddd:function(t,e){return e.dayNames[t.getDay()]},M:function(t){return t.getMonth()+1},MM:function(t){return p(t.getMonth()+1)},MMM:function(t,e){return e.monthNamesShort[t.getMonth()]},MMMM:function(t,e){return e.monthNames[t.getMonth()]},YY:function(t){return String(t.getFullYear()).substr(2)},YYYY:function(t){return p(t.getFullYear(),4)},h:function(t){return t.getHours()%12||12},hh:function(t){return p(t.getHours()%12||12)},H:function(t){return t.getHours()},HH:function(t){return p(t.getHours())},m:function(t){return t.getMinutes()},mm:function(t){return p(t.getMinutes())},s:function(t){return t.getSeconds()},ss:function(t){return p(t.getSeconds())},S:function(t){return Math.round(t.getMilliseconds()/100)},SS:function(t){return p(Math.round(t.getMilliseconds()/10),2)},SSS:function(t){return p(t.getMilliseconds(),3)},a:function(t,e){return t.getHours()<12?e.amPm[0]:e.amPm[1]},A:function(t,e){return t.getHours()<12?e.amPm[0].toUpperCase():e.amPm[1].toUpperCase()},ZZ:function(t){var e=t.getTimezoneOffset();return(e>0?"-":"+")+p(100*Math.floor(Math.abs(e)/60)+Math.abs(e)%60,4)}},y={D:[s,function(t,e){t.day=e}],Do:[new RegExp(s.source+c.source),function(t,e){t.day=parseInt(e,10)}],M:[s,function(t,e){t.month=e-1}],YY:[s,function(t,e){var n=+(""+(new Date).getFullYear()).substr(0,2);t.year=""+(e>68?n-1:n)+e}],h:[s,function(t,e){t.hour=e}],m:[s,function(t,e){t.minute=e}],s:[s,function(t,e){t.second=e}],YYYY:[/\d{4}/,function(t,e){t.year=e}],S:[/\d/,function(t,e){t.millisecond=100*e}],SS:[/\d{2}/,function(t,e){t.millisecond=10*e}],SSS:[/\d{3}/,function(t,e){t.millisecond=e}],d:[s,l],ddd:[c,l],MMM:[c,d("monthNamesShort")],MMMM:[c,d("monthNames")],a:[c,function(t,e,n){var r=e.toLowerCase();r===n.amPm[0]?t.isPm=!1:r===n.amPm[1]&&(t.isPm=!0)}],ZZ:[/([\+\-]\d\d:?\d\d|Z)/,function(t,e){"Z"===e&&(e="+00:00");var n,r=(e+"").match(/([\+\-]|\d\d)/gi);r&&(n=60*r[1]+parseInt(r[2],10),t.timezoneOffset="+"===r[0]?n:-n)}]};y.dd=y.d,y.dddd=y.ddd,y.DD=y.D,y.mm=y.m,y.hh=y.H=y.HH=y.h,y.MM=y.M,y.ss=y.s,y.A=y.a,o.masks={default:"ddd MMM DD YYYY HH:mm:ss",shortDate:"M/D/YY",mediumDate:"MMM D, YYYY",longDate:"MMMM D, YYYY",fullDate:"dddd, MMMM D, YYYY",shortTime:"HH:mm",mediumTime:"HH:mm:ss",longTime:"HH:mm:ss.SSS"},o.format=function(t,e,n){var r=n||o.i18n;if("number"==typeof t&&(t=new Date(t)),"[object Date]"!==Object.prototype.toString.call(t)||isNaN(t.getTime()))throw new Error("Invalid Date in fecha.format");var i=[];return(e=(e=(e=o.masks[e]||e||o.masks.default).replace(u,(function(t,e){return i.push(e),"??"}))).replace(a,(function(e){return e in g?g[e](t,r):e.slice(1,e.length-1)}))).replace(/\?\?/g,(function(){return i.shift()}))},o.parse=function(t,e,n){var r=n||o.i18n;if("string"!=typeof e)throw new Error("Invalid format in fecha.parse");if(e=o.masks[e]||e,t.length>1e3)return!1;var i=!0,s={};if(e.replace(a,(function(e){if(y[e]){var n=y[e],o=t.search(n[0]);~o?t.replace(n[0],(function(e){return n[1](s,e,r),t=t.substr(o+e.length),e})):i=!1}return y[e]?"":e.slice(1,e.length-1)})),!i)return!1;var c,u=new Date;return!0===s.isPm&&null!=s.hour&&12!=+s.hour?s.hour=+s.hour+12:!1===s.isPm&&12==+s.hour&&(s.hour=0),null!=s.timezoneOffset?(s.minute=+(s.minute||0)-+s.timezoneOffset,c=new Date(Date.UTC(s.year||u.getFullYear(),s.month||0,s.day||1,s.hour||0,s.minute||0,s.second||0,s.millisecond||0))):c=new Date(s.year||u.getFullYear(),s.month||0,s.day||1,s.hour||0,s.minute||0,s.second||0,s.millisecond||0),c},void 0!==t&&t.exports?t.exports=o:void 0===(r=function(){return o}.call(e,n,e,t))||(t.exports=r)}()},function(t,e){var n=/^(attrs|props|on|nativeOn|class|style|hook)$/;function r(t,e){return function(){t&&t.apply(this,arguments),e&&e.apply(this,arguments)}}t.exports=function(t){return t.reduce((function(t,e){var i,o,a,s,c;for(a in e)if(i=t[a],o=e[a],i&&n.test(a))if("class"===a&&("string"==typeof i&&(c=i,t[a]=i={},i[c]=!0),"string"==typeof o&&(c=o,e[a]=o={},o[c]=!0)),"on"===a||"nativeOn"===a||"hook"===a)for(s in o)i[s]=r(i[s],o[s]);else if(Array.isArray(i))t[a]=i.concat(o);else if(Array.isArray(o))t[a]=[i].concat(o);else for(s in o)i[s]=o[s];else t[a]=e[a];return t}),{})}},function(t,e,n){"use strict";function r(t,e){for(var n=[],r={},i=0;i<e.length;i++){var o=e[i],a=o[0],s={id:t+":"+i,css:o[1],media:o[2],sourceMap:o[3]};r[a]?r[a].parts.push(s):n.push(r[a]={id:a,parts:[s]})}return n}n.r(e),n.d(e,"default",(function(){return h}));var i="undefined"!=typeof document;if("undefined"!=typeof DEBUG&&DEBUG&&!i)throw new Error("vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.");var o={},a=i&&(document.head||document.getElementsByTagName("head")[0]),s=null,c=0,u=!1,l=function(){},f=null,d="data-vue-ssr-id",p="undefined"!=typeof navigator&&/msie [6-9]\b/.test(navigator.userAgent.toLowerCase());function h(t,e,n,i){u=n,f=i||{};var a=r(t,e);return v(a),function(e){for(var n=[],i=0;i<a.length;i++){var s=a[i];(c=o[s.id]).refs--,n.push(c)}for(e?v(a=r(t,e)):a=[],i=0;i<n.length;i++){var c;if(0===(c=n[i]).refs){for(var u=0;u<c.parts.length;u++)c.parts[u]();delete o[c.id]}}}}function v(t){for(var e=0;e<t.length;e++){var n=t[e],r=o[n.id];if(r){r.refs++;for(var i=0;i<r.parts.length;i++)r.parts[i](n.parts[i]);for(;i<n.parts.length;i++)r.parts.push(A(n.parts[i]));r.parts.length>n.parts.length&&(r.parts.length=n.parts.length)}else{var a=[];for(i=0;i<n.parts.length;i++)a.push(A(n.parts[i]));o[n.id]={id:n.id,refs:1,parts:a}}}}function m(){var t=document.createElement("style");return t.type="text/css",a.appendChild(t),t}function A(t){var e,n,r=document.querySelector("style["+d+'~="'+t.id+'"]');if(r){if(u)return l;r.parentNode.removeChild(r)}if(p){var i=c++;r=s||(s=m()),e=b.bind(null,r,i,!1),n=b.bind(null,r,i,!0)}else r=m(),e=function(t,e){var n=e.css,r=e.media,i=e.sourceMap;if(r&&t.setAttribute("media",r),f.ssrId&&t.setAttribute(d,e.id),i&&(n+="\n/*# sourceURL="+i.sources[0]+" */",n+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(i))))+" */"),t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}.bind(null,r),n=function(){r.parentNode.removeChild(r)};return e(t),function(r){if(r){if(r.css===t.css&&r.media===t.media&&r.sourceMap===t.sourceMap)return;e(t=r)}else n()}}var g,y=(g=[],function(t,e){return g[t]=e,g.filter(Boolean).join("\n")});function b(t,e,n,r){var i=n?"":r.css;if(t.styleSheet)t.styleSheet.cssText=y(e,i);else{var o=document.createTextNode(i),a=t.childNodes;a[e]&&t.removeChild(a[e]),a.length?t.insertBefore(o,a[e]):t.appendChild(o)}}},function(t,e,n){"use strict";n.r(e);var r=n(0),i=n.n(r),o=void 0,a=function(t){return o=t.target},s={bind:function(t,e,n){t["@clickoutside"]=function(r){var i=r.target,a=n&&n.context&&n.context.popupElm;!o||!i||t.contains(i)||t.contains(o)||a&&(a.contains(o)||a.contains(i))||!e.expression||!n.context[e.expression]||e.value()},document.addEventListener("mousedown",a),document.addEventListener("mouseup",t["@clickoutside"])},unbind:function(t){document.removeEventListener("mousedown",a),document.removeEventListener("mouseup",t["@clickoutside"])}};function c(t){return"[object Object]"===Object.prototype.toString.call(t)}function u(t){return t instanceof Date}function l(t){return null!=t&&!isNaN(new Date(t).getTime())}function f(t){var e=(t||"").split(":");return e.length>=2?{hours:parseInt(e[0],10),minutes:parseInt(e[1],10)}:null}function d(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"24",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"a",r=t.hours,i=(r=(r="24"===e?r:r%12||12)<10?"0"+r:r)+":"+(t.minutes<10?"0"+t.minutes:t.minutes);if("12"===e){var o=t.hours>=12?"pm":"am";"A"===n&&(o=o.toUpperCase()),i=i+" "+o}return i}function p(t,e){if(!t)return"";try{return i.a.format(new Date(t),e)}catch(t){return""}}var h={date:{value2date:function(t){return l(t)?new Date(t):null},date2value:function(t){return t}},timestamp:{value2date:function(t){return l(t)?new Date(t):null},date2value:function(t){return t&&new Date(t).getTime()}}},v={zh:{days:["日","一","二","三","四","五","六"],months:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],pickers:["未来7天","未来30天","最近7天","最近30天"],placeholder:{date:"请选择日期",dateRange:"请选择日期范围"}},en:{days:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],pickers:["next 7 days","next 30 days","previous 7 days","previous 30 days"],placeholder:{date:"Select Date",dateRange:"Select Date Range"}},ro:{days:["Lun","Mar","Mie","Joi","Vin","Sâm","Dum"],months:["Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Noi","Dec"],pickers:["urmatoarele 7 zile","urmatoarele 30 zile","ultimele 7 zile","ultimele 30 zile"],placeholder:{date:"Selectați Data",dateRange:"Selectați Intervalul De Date"}},fr:{days:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"],months:["Jan","Fev","Mar","Avr","Mai","Juin","Juil","Aout","Sep","Oct","Nov","Dec"],pickers:["7 jours suivants","30 jours suivants","7 jours précédents","30 jours précédents"],placeholder:{date:"Sélectionnez une date",dateRange:"Sélectionnez une période"}},es:{days:["Dom","Lun","mar","Mie","Jue","Vie","Sab"],months:["Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Sep","Oct","Nov","Dic"],pickers:["próximos 7 días","próximos 30 días","7 días anteriores","30 días anteriores"],placeholder:{date:"Seleccionar fecha",dateRange:"Seleccionar un rango de fechas"}},"pt-br":{days:["Dom","Seg","Ter","Qua","Quin","Sex","Sáb"],months:["Jan","Fev","Mar","Abr","Maio","Jun","Jul","Ago","Set","Out","Nov","Dez"],pickers:["próximos 7 dias","próximos 30 dias","7 dias anteriores"," 30 dias anteriores"],placeholder:{date:"Selecione uma data",dateRange:"Selecione um período"}},ru:{days:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],months:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],pickers:["след. 7 дней","след. 30 дней","прош. 7 дней","прош. 30 дней"],placeholder:{date:"Выберите дату",dateRange:"Выберите период"}},de:{days:["So","Mo","Di","Mi","Do","Fr","Sa"],months:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],pickers:["nächsten 7 Tage","nächsten 30 Tage","vorigen 7 Tage","vorigen 30 Tage"],placeholder:{date:"Datum auswählen",dateRange:"Zeitraum auswählen"}},it:{days:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],months:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],pickers:["successivi 7 giorni","successivi 30 giorni","precedenti 7 giorni","precedenti 30 giorni"],placeholder:{date:"Seleziona una data",dateRange:"Seleziona un intervallo date"}},cs:{days:["Ned","Pon","Úte","Stř","Čtv","Pát","Sob"],months:["Led","Úno","Bře","Dub","Kvě","Čer","Čerc","Srp","Zář","Říj","Lis","Pro"],pickers:["příštích 7 dní","příštích 30 dní","předchozích 7 dní","předchozích 30 dní"],placeholder:{date:"Vyberte datum",dateRange:"Vyberte časové rozmezí"}},sl:{days:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"],months:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],pickers:["naslednjih 7 dni","naslednjih 30 dni","prejšnjih 7 dni","prejšnjih 30 dni"],placeholder:{date:"Izberite datum",dateRange:"Izberite razpon med 2 datumoma"}}},m=v.zh,A={methods:{t:function(t){for(var e=this,n=e.$options.name;e&&(!n||"DatePicker"!==n);)(e=e.$parent)&&(n=e.$options.name);for(var r=e&&e.language||m,i=t.split("."),o=r,a=void 0,s=0,c=i.length;s<c;s++){if(a=o[i[s]],s===c-1)return a;if(!a)return"";o=a}return""}}};function g(t,e){if(e){for(var n=[],r=e.offsetParent;r&&t!==r&&t.contains(r);)n.push(r),r=r.offsetParent;var i=e.offsetTop+n.reduce((function(t,e){return t+e.offsetTop}),0),o=i+e.offsetHeight,a=t.scrollTop,s=a+t.clientHeight;i<a?t.scrollTop=i:o>s&&(t.scrollTop=o-t.clientHeight)}else t.scrollTop=0}var y=n(1),b=n.n(y),_={name:"panelDate",mixins:[A],props:{value:null,startAt:null,endAt:null,dateFormat:{type:String,default:"YYYY-MM-DD"},calendarMonth:{default:(new Date).getMonth()},calendarYear:{default:(new Date).getFullYear()},firstDayOfWeek:{default:7,type:Number,validator:function(t){return t>=1&&t<=7}},disabledDate:{type:Function,default:function(){return!1}}},methods:{selectDate:function(t){var e=t.year,n=t.month,r=t.day,i=new Date(e,n,r);this.disabledDate(i)||this.$emit("select",i)},getDays:function(t){var e=this.t("days"),n=parseInt(t,10);return e.concat(e).slice(n,n+7)},getDates:function(t,e,n){var r=[],i=new Date(t,e);i.setDate(0);for(var o=(i.getDay()+7-n)%7+1,a=i.getDate()-(o-1),s=0;s<o;s++)r.push({year:t,month:e-1,day:a+s});i.setMonth(i.getMonth()+2,0);for(var c=i.getDate(),u=0;u<c;u++)r.push({year:t,month:e,day:1+u});i.setMonth(i.getMonth()+1,1);for(var l=42-(o+c),f=0;f<l;f++)r.push({year:t,month:e+1,day:1+f});return r},getCellClasses:function(t){var e=t.year,n=t.month,r=t.day,i=[],o=new Date(e,n,r).getTime(),a=(new Date).setHours(0,0,0,0),s=this.value&&new Date(this.value).setHours(0,0,0,0),c=this.startAt&&new Date(this.startAt).setHours(0,0,0,0),u=this.endAt&&new Date(this.endAt).setHours(0,0,0,0);return n<this.calendarMonth?i.push("last-month"):n>this.calendarMonth?i.push("next-month"):i.push("cur-month"),o===a&&i.push("today"),this.disabledDate(o)&&i.push("disabled"),s&&(o===s?i.push("actived"):c&&o<=s?i.push("inrange"):u&&o>=s&&i.push("inrange")),i},getCellTitle:function(t){var e=t.year,n=t.month,r=t.day;return p(new Date(e,n,r),this.dateFormat)}},render:function(t){var e=this,n=this.getDays(this.firstDayOfWeek).map((function(e){return t("th",[e])})),r=this.getDates(this.calendarYear,this.calendarMonth,this.firstDayOfWeek),i=Array.apply(null,{length:6}).map((function(n,i){var o=r.slice(7*i,7*i+7).map((function(n){var r={class:e.getCellClasses(n)};return t("td",b()([{class:"cell"},r,{attrs:{"data-year":n.year,"data-month":n.month,title:e.getCellTitle(n)},on:{click:e.selectDate.bind(e,n)}}]),[n.day])}));return t("tr",[o])}));return t("table",{class:"mx-panel mx-panel-date"},[t("thead",[t("tr",[n])]),t("tbody",[i])])}},x={name:"panelYear",props:{value:null,firstYear:Number,disabledYear:Function},methods:{isDisabled:function(t){return!("function"!=typeof this.disabledYear||!this.disabledYear(t))},selectYear:function(t){this.isDisabled(t)||this.$emit("select",t)}},render:function(t){var e=this,n=10*Math.floor(this.firstYear/10),r=this.value&&new Date(this.value).getFullYear(),i=Array.apply(null,{length:10}).map((function(i,o){var a=n+o;return t("span",{class:{cell:!0,actived:r===a,disabled:e.isDisabled(a)},on:{click:e.selectYear.bind(e,a)}},[a])}));return t("div",{class:"mx-panel mx-panel-year"},[i])}},w={name:"panelMonth",mixins:[A],props:{value:null,calendarYear:{default:(new Date).getFullYear()},disabledMonth:Function},methods:{isDisabled:function(t){return!("function"!=typeof this.disabledMonth||!this.disabledMonth(t))},selectMonth:function(t){this.isDisabled(t)||this.$emit("select",t)}},render:function(t){var e=this,n=this.t("months"),r=this.value&&new Date(this.value).getFullYear(),i=this.value&&new Date(this.value).getMonth();return n=n.map((function(n,o){return t("span",{class:{cell:!0,actived:r===e.calendarYear&&i===o,disabled:e.isDisabled(o)},on:{click:e.selectMonth.bind(e,o)}},[n])})),t("div",{class:"mx-panel mx-panel-month"},[n])}},C=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},k="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};function T(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e<t.length;e++)n[e]=t[e];return n}return Array.from(t)}function E(t,e,n,r,i,o,a,s){var c,u="function"==typeof t?t.options:t;if(e&&(u.render=e,u.staticRenderFns=n,u._compiled=!0),r&&(u.functional=!0),o&&(u._scopeId="data-v-"+o),a?(c=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),i&&i.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(a)},u._ssrRegister=c):i&&(c=s?function(){i.call(this,this.$root.$options.shadowRoot)}:i),c)if(u.functional){u._injectStyles=c;var l=u.render;u.render=function(t,e){return c.call(e),l(t,e)}}else{var f=u.beforeCreate;u.beforeCreate=f?[].concat(f,c):[c]}return{exports:t,options:u}}var S=E({name:"CalendarPanel",components:{PanelDate:_,PanelYear:x,PanelMonth:w,PanelTime:{name:"panelTime",props:{timePickerOptions:{type:[Object,Function],default:function(){return null}},timeSelectOptions:{type:Object,default:function(){return null}},minuteStep:{type:Number,default:0,validator:function(t){return t>=0&&t<=60}},value:null,timeType:{type:Array,default:function(){return["24","a"]}},disabledTime:Function},computed:{currentHours:function(){return this.value?new Date(this.value).getHours():0},currentMinutes:function(){return this.value?new Date(this.value).getMinutes():0},currentSeconds:function(){return this.value?new Date(this.value).getSeconds():0}},methods:{stringifyText:function(t){return("00"+t).slice(String(t).length)},selectTime:function(t){"function"==typeof this.disabledTime&&this.disabledTime(t)||this.$emit("select",new Date(t))},pickTime:function(t){"function"==typeof this.disabledTime&&this.disabledTime(t)||this.$emit("pick",new Date(t))},getTimePickerOptions:function(){var t=[],e=this.timePickerOptions;if(!e)return[];if("function"==typeof e)return e()||[];var n=f(e.start),r=f(e.end),i=f(e.step);if(n&&r&&i)for(var o=n.minutes+60*n.hours,a=r.minutes+60*r.hours,s=i.minutes+60*i.hours,c=Math.floor((a-o)/s),u=0;u<=c;u++){var l=o+u*s,p={hours:Math.floor(l/60),minutes:l%60};t.push({value:p,label:d.apply(void 0,[p].concat(T(this.timeType)))})}return t}},render:function(t){var e=this,n=this.value?new Date(this.value):(new Date).setHours(0,0,0,0),r="function"==typeof this.disabledTime&&this.disabledTime,i=this.getTimePickerOptions();if(Array.isArray(i)&&i.length)return i=i.map((function(i){var o=i.value.hours,a=i.value.minutes,s=new Date(n).setHours(o,a,0);return t("li",{class:{"mx-time-picker-item":!0,cell:!0,actived:o===e.currentHours&&a===e.currentMinutes,disabled:r&&r(s)},on:{click:e.pickTime.bind(e,s)}},[i.label])})),t("div",{class:"mx-panel mx-panel-time"},[t("ul",{class:"mx-time-list"},[i])]);var o=this.minuteStep||1,a=parseInt(60/o),s={hours:Array.apply(null,{length:24}).map((function(t,e){return e})),minutes:Array.apply(null,{length:a}).map((function(t,e){return e*o})),seconds:0===this.minuteStep?Array.apply(null,{length:60}).map((function(t,e){return e})):[]};this.timeSelectOptions&&"object"===k(this.timeSelectOptions)&&(s=C({},s,this.timeSelectOptions));var c=[s.hours.map((function(i){var o=new Date(n).setHours(i);return t("li",{class:{cell:!0,actived:i===e.currentHours,disabled:r&&r(o)},on:{click:e.selectTime.bind(e,o)}},[e.stringifyText(i)])})),s.minutes.map((function(i){var o=new Date(n).setMinutes(i);return t("li",{class:{cell:!0,actived:i===e.currentMinutes,disabled:r&&r(o)},on:{click:e.selectTime.bind(e,o)}},[e.stringifyText(i)])})),s.seconds.map((function(i){var o=new Date(n).setSeconds(i);return t("li",{class:{cell:!0,actived:i===e.currentSeconds,disabled:r&&r(o)},on:{click:e.selectTime.bind(e,o)}},[e.stringifyText(i)])}))].filter((function(t){return t.length>0}));return c=c.map((function(e){return t("ul",{class:"mx-time-list",style:{width:100/c.length+"%"}},[e])})),t("div",{class:"mx-panel mx-panel-time"},[c])}}},mixins:[A,{methods:{dispatch:function(t,e,n){for(var r=this.$parent||this.$root,i=r.$options.name;r&&(!i||i!==t);)(r=r.$parent)&&(i=r.$options.name);i&&i===t&&(r=r||this).$emit.apply(r,[e].concat(n))}}}],props:{value:{default:null,validator:function(t){return null===t||l(t)}},startAt:null,endAt:null,visible:{type:Boolean,default:!1},type:{type:String,default:"date"},dateFormat:{type:String,default:"YYYY-MM-DD"},index:Number,defaultValue:{validator:function(t){return l(t)}},firstDayOfWeek:{default:7,type:Number,validator:function(t){return t>=1&&t<=7}},notBefore:{default:null,validator:function(t){return!t||l(t)}},notAfter:{default:null,validator:function(t){return!t||l(t)}},disabledDays:{type:[Array,Function],default:function(){return[]}},minuteStep:{type:Number,default:0,validator:function(t){return t>=0&&t<=60}},timeSelectOptions:{type:Object,default:function(){return null}},timePickerOptions:{type:[Object,Function],default:function(){return null}}},data:function(){var t=this.getNow(this.value),e=t.getFullYear();return{panel:"NONE",dates:[],calendarMonth:t.getMonth(),calendarYear:e,firstYear:10*Math.floor(e/10)}},computed:{now:{get:function(){return new Date(this.calendarYear,this.calendarMonth).getTime()},set:function(t){var e=new Date(t);this.calendarYear=e.getFullYear(),this.calendarMonth=e.getMonth()}},timeType:function(){return[/h+/.test(this.$parent.format)?"12":"24",/A/.test(this.$parent.format)?"A":"a"]},timeHeader:function(){return"time"===this.type?this.$parent.format:this.value&&p(this.value,this.dateFormat)},yearHeader:function(){return this.firstYear+" ~ "+(this.firstYear+9)},months:function(){return this.t("months")},notBeforeTime:function(){return this.getCriticalTime(this.notBefore)},notAfterTime:function(){return this.getCriticalTime(this.notAfter)}},watch:{value:{immediate:!0,handler:"updateNow"},visible:{immediate:!0,handler:"init"},panel:{handler:"handelPanelChange"}},methods:{handelPanelChange:function(t,e){var n=this;this.dispatch("DatePicker","panel-change",[t,e]),"YEAR"===t?this.firstYear=10*Math.floor(this.calendarYear/10):"TIME"===t&&this.$nextTick((function(){for(var t=n.$el.querySelectorAll(".mx-panel-time .mx-time-list"),e=0,r=t.length;e<r;e++){var i=t[e];g(i,i.querySelector(".actived"))}}))},init:function(t){if(t){var e=this.type;"month"===e?this.showPanelMonth():"year"===e?this.showPanelYear():"time"===e?this.showPanelTime():this.showPanelDate()}else this.showPanelNone(),this.updateNow(this.value)},getNow:function(t){return t?new Date(t):this.defaultValue&&l(this.defaultValue)?new Date(this.defaultValue):new Date},updateNow:function(t){var e=this.now;this.now=this.getNow(t),this.visible&&this.now!==e&&this.dispatch("DatePicker","calendar-change",[new Date(this.now),new Date(e)])},getCriticalTime:function(t){if(!t)return null;var e=new Date(t);return"year"===this.type?new Date(e.getFullYear(),0).getTime():"month"===this.type?new Date(e.getFullYear(),e.getMonth()).getTime():"date"===this.type?e.setHours(0,0,0,0):e.getTime()},inBefore:function(t,e){return void 0===e&&(e=this.startAt),this.notBeforeTime&&t<this.notBeforeTime||e&&t<this.getCriticalTime(e)},inAfter:function(t,e){return void 0===e&&(e=this.endAt),this.notAfterTime&&t>this.notAfterTime||e&&t>this.getCriticalTime(e)},inDisabledDays:function(t){var e=this;return Array.isArray(this.disabledDays)?this.disabledDays.some((function(n){return e.getCriticalTime(n)===t})):"function"==typeof this.disabledDays&&this.disabledDays(new Date(t))},isDisabledYear:function(t){var e=new Date(t,0).getTime(),n=new Date(t+1,0).getTime()-1;return this.inBefore(n)||this.inAfter(e)||"year"===this.type&&this.inDisabledDays(e)},isDisabledMonth:function(t){var e=new Date(this.calendarYear,t).getTime(),n=new Date(this.calendarYear,t+1).getTime()-1;return this.inBefore(n)||this.inAfter(e)||"month"===this.type&&this.inDisabledDays(e)},isDisabledDate:function(t){var e=new Date(t).getTime(),n=new Date(t).setHours(23,59,59,999);return this.inBefore(n)||this.inAfter(e)||this.inDisabledDays(e)},isDisabledTime:function(t,e,n){var r=new Date(t).getTime();return this.inBefore(r,e)||this.inAfter(r,n)||this.inDisabledDays(r)},selectDate:function(t){if("datetime"===this.type){var e=new Date(t);return u(this.value)&&e.setHours(this.value.getHours(),this.value.getMinutes(),this.value.getSeconds()),this.isDisabledTime(e)&&(e.setHours(0,0,0,0),this.notBefore&&e.getTime()<new Date(this.notBefore).getTime()&&(e=new Date(this.notBefore)),this.startAt&&e.getTime()<new Date(this.startAt).getTime()&&(e=new Date(this.startAt))),this.selectTime(e),void this.showPanelTime()}this.$emit("select-date",t)},selectYear:function(t){if(this.changeCalendarYear(t),"year"===this.type.toLowerCase())return this.selectDate(new Date(this.now));this.dispatch("DatePicker","select-year",[t,this.index]),this.showPanelMonth()},selectMonth:function(t){if(this.changeCalendarMonth(t),"month"===this.type.toLowerCase())return this.selectDate(new Date(this.now));this.dispatch("DatePicker","select-month",[t,this.index]),this.showPanelDate()},selectTime:function(t){this.$emit("select-time",t,!1)},pickTime:function(t){this.$emit("select-time",t,!0)},changeCalendarYear:function(t){this.updateNow(new Date(t,this.calendarMonth))},changeCalendarMonth:function(t){this.updateNow(new Date(this.calendarYear,t))},getSibling:function(){var t=this,e=this.$parent.$children.filter((function(e){return e.$options.name===t.$options.name}));return e[1^e.indexOf(this)]},handleIconMonth:function(t){var e=this.calendarMonth;this.changeCalendarMonth(e+t),this.$parent.$emit("change-calendar-month",{month:e,flag:t,vm:this,sibling:this.getSibling()})},handleIconYear:function(t){if("YEAR"===this.panel)this.changePanelYears(t);else{var e=this.calendarYear;this.changeCalendarYear(e+t),this.$parent.$emit("change-calendar-year",{year:e,flag:t,vm:this,sibling:this.getSibling()})}},handleBtnYear:function(){this.showPanelYear()},handleBtnMonth:function(){this.showPanelMonth()},handleTimeHeader:function(){"time"!==this.type&&this.showPanelDate()},changePanelYears:function(t){this.firstYear=this.firstYear+10*t},showPanelNone:function(){this.panel="NONE"},showPanelTime:function(){this.panel="TIME"},showPanelDate:function(){this.panel="DATE"},showPanelYear:function(){this.panel="YEAR"},showPanelMonth:function(){this.panel="MONTH"}}},(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"mx-calendar",class:"mx-calendar-panel-"+t.panel.toLowerCase()},[n("div",{staticClass:"mx-calendar-header"},[n("a",{directives:[{name:"show",rawName:"v-show",value:"TIME"!==t.panel,expression:"panel !== 'TIME'"}],staticClass:"mx-icon-last-year",on:{click:function(e){t.handleIconYear(-1)}}},[t._v("«")]),t._v(" "),n("a",{directives:[{name:"show",rawName:"v-show",value:"DATE"===t.panel,expression:"panel === 'DATE'"}],staticClass:"mx-icon-last-month",on:{click:function(e){t.handleIconMonth(-1)}}},[t._v("‹")]),t._v(" "),n("a",{directives:[{name:"show",rawName:"v-show",value:"TIME"!==t.panel,expression:"panel !== 'TIME'"}],staticClass:"mx-icon-next-year",on:{click:function(e){t.handleIconYear(1)}}},[t._v("»")]),t._v(" "),n("a",{directives:[{name:"show",rawName:"v-show",value:"DATE"===t.panel,expression:"panel === 'DATE'"}],staticClass:"mx-icon-next-month",on:{click:function(e){t.handleIconMonth(1)}}},[t._v("›")]),t._v(" "),n("a",{directives:[{name:"show",rawName:"v-show",value:"DATE"===t.panel,expression:"panel === 'DATE'"}],staticClass:"mx-current-month",on:{click:t.handleBtnMonth}},[t._v(t._s(t.months[t.calendarMonth]))]),t._v(" "),n("a",{directives:[{name:"show",rawName:"v-show",value:"DATE"===t.panel||"MONTH"===t.panel,expression:"panel === 'DATE' || panel === 'MONTH'"}],staticClass:"mx-current-year",on:{click:t.handleBtnYear}},[t._v(t._s(t.calendarYear))]),t._v(" "),n("a",{directives:[{name:"show",rawName:"v-show",value:"YEAR"===t.panel,expression:"panel === 'YEAR'"}],staticClass:"mx-current-year"},[t._v(t._s(t.yearHeader))]),t._v(" "),n("a",{directives:[{name:"show",rawName:"v-show",value:"TIME"===t.panel,expression:"panel === 'TIME'"}],staticClass:"mx-time-header",on:{click:t.handleTimeHeader}},[t._v(t._s(t.timeHeader))])]),t._v(" "),n("div",{staticClass:"mx-calendar-content"},[n("panel-date",{directives:[{name:"show",rawName:"v-show",value:"DATE"===t.panel,expression:"panel === 'DATE'"}],attrs:{value:t.value,"date-format":t.dateFormat,"calendar-month":t.calendarMonth,"calendar-year":t.calendarYear,"start-at":t.startAt,"end-at":t.endAt,"first-day-of-week":t.firstDayOfWeek,"disabled-date":t.isDisabledDate},on:{select:t.selectDate}}),t._v(" "),n("panel-year",{directives:[{name:"show",rawName:"v-show",value:"YEAR"===t.panel,expression:"panel === 'YEAR'"}],attrs:{value:t.value,"disabled-year":t.isDisabledYear,"first-year":t.firstYear},on:{select:t.selectYear}}),t._v(" "),n("panel-month",{directives:[{name:"show",rawName:"v-show",value:"MONTH"===t.panel,expression:"panel === 'MONTH'"}],attrs:{value:t.value,"disabled-month":t.isDisabledMonth,"calendar-year":t.calendarYear},on:{select:t.selectMonth}}),t._v(" "),n("panel-time",{directives:[{name:"show",rawName:"v-show",value:"TIME"===t.panel,expression:"panel === 'TIME'"}],attrs:{"minute-step":t.minuteStep,"time-picker-options":t.timePickerOptions,"time-select-options":t.timeSelectOptions,value:t.value,"disabled-time":t.isDisabledTime,"time-type":t.timeType},on:{select:t.selectTime,pick:t.pickTime}})],1)])}),[],!1,null,null,null).exports,O=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},M=E({fecha:i.a,name:"DatePicker",components:{CalendarPanel:S},mixins:[A],directives:{clickoutside:s},props:{value:null,valueType:{default:"date",validator:function(t){return-1!==["timestamp","format","date"].indexOf(t)||c(t)}},placeholder:{type:String,default:null},lang:{type:[String,Object],default:"zh"},format:{type:[String,Object],default:"YYYY-MM-DD"},dateFormat:{type:String},type:{type:String,default:"date"},range:{type:Boolean,default:!1},rangeSeparator:{type:String,default:"~"},width:{type:[String,Number],default:null},confirmText:{type:String,default:"OK"},confirm:{type:Boolean,default:!1},editable:{type:Boolean,default:!0},disabled:{type:Boolean,default:!1},clearable:{type:Boolean,default:!0},shortcuts:{type:[Boolean,Array],default:!0},inputName:{type:String,default:"date"},inputClass:{type:[String,Array],default:"mx-input"},inputAttr:Object,appendToBody:{type:Boolean,default:!1},popupStyle:{type:Object}},data:function(){return{currentValue:this.range?[null,null]:null,userInput:null,popupVisible:!1,position:{}}},watch:{value:{immediate:!0,handler:"handleValueChange"},popupVisible:function(t){t?this.initCalendar():(this.userInput=null,this.blur())}},computed:{transform:function(){var t=this.valueType;return c(t)?O({},h.date,t):"format"===t?{value2date:this.parse.bind(this),date2value:this.stringify.bind(this)}:h[t]||h.date},language:function(){return c(this.lang)?O({},v.en,this.lang):v[this.lang]||v.en},innerPlaceholder:function(){return"string"==typeof this.placeholder?this.placeholder:this.range?this.t("placeholder.dateRange"):this.t("placeholder.date")},text:function(){if(null!==this.userInput)return this.userInput;var t=this.transform.value2date;return this.range?this.isValidRangeValue(this.value)?this.stringify(t(this.value[0]))+" "+this.rangeSeparator+" "+this.stringify(t(this.value[1])):"":this.isValidValue(this.value)?this.stringify(t(this.value)):""},computedWidth:function(){return"number"==typeof this.width||"string"==typeof this.width&&/^\d+$/.test(this.width)?this.width+"px":this.width},showClearIcon:function(){return!this.disabled&&this.clearable&&(this.range?this.isValidRangeValue(this.value):this.isValidValue(this.value))},innerType:function(){return String(this.type).toLowerCase()},innerShortcuts:function(){if(Array.isArray(this.shortcuts))return this.shortcuts;if(!1===this.shortcuts)return[];var t=this.t("pickers");return[{text:t[0],onClick:function(t){t.currentValue=[new Date,new Date(Date.now()+6048e5)],t.updateDate(!0)}},{text:t[1],onClick:function(t){t.currentValue=[new Date,new Date(Date.now()+2592e6)],t.updateDate(!0)}},{text:t[2],onClick:function(t){t.currentValue=[new Date(Date.now()-6048e5),new Date],t.updateDate(!0)}},{text:t[3],onClick:function(t){t.currentValue=[new Date(Date.now()-2592e6),new Date],t.updateDate(!0)}}]},innerDateFormat:function(){return this.dateFormat?this.dateFormat:"string"!=typeof this.format?"YYYY-MM-DD":"date"===this.innerType?this.format:this.format.replace(/[Hh]+.*[msSaAZ]|\[.*?\]/g,"").trim()||"YYYY-MM-DD"},innerPopupStyle:function(){return O({},this.position,this.popupStyle)}},mounted:function(){var t,e,n,r,i=this;this.appendToBody&&(this.popupElm=this.$refs.calendar,document.body.appendChild(this.popupElm)),this._displayPopup=(t=function(){i.popupVisible&&i.displayPopup()},e=200,n=0,r=null,function(){var i=this;if(!r){var o=arguments,a=function(){n=Date.now(),r=null,t.apply(i,o)};Date.now()-n>=e?a():r=setTimeout(a,e)}}),window.addEventListener("resize",this._displayPopup),window.addEventListener("scroll",this._displayPopup)},beforeDestroy:function(){this.popupElm&&this.popupElm.parentNode===document.body&&document.body.removeChild(this.popupElm),window.removeEventListener("resize",this._displayPopup),window.removeEventListener("scroll",this._displayPopup)},methods:{initCalendar:function(){this.handleValueChange(this.value),this.displayPopup()},stringify:function(t){return c(this.format)&&"function"==typeof this.format.stringify?this.format.stringify(t):p(t,this.format)},parse:function(t){return c(this.format)&&"function"==typeof this.format.parse?this.format.parse(t):function(t,e){try{return i.a.parse(t,e)||null}catch(t){return null}}(t,this.format)},isValidValue:function(t){return l((0,this.transform.value2date)(t))},isValidRangeValue:function(t){var e=this.transform.value2date;return Array.isArray(t)&&2===t.length&&this.isValidValue(t[0])&&this.isValidValue(t[1])&&e(t[1]).getTime()>=e(t[0]).getTime()},dateEqual:function(t,e){return u(t)&&u(e)&&t.getTime()===e.getTime()},rangeEqual:function(t,e){var n=this;return Array.isArray(t)&&Array.isArray(e)&&t.length===e.length&&t.every((function(t,r){return n.dateEqual(t,e[r])}))},selectRange:function(t){"function"==typeof t.onClick?!1!==t.onClick(this)&&this.closePopup():(this.currentValue=[new Date(t.start),new Date(t.end)],this.updateDate(!0),this.closePopup())},clearDate:function(){var t=this.range?[null,null]:null;this.currentValue=t,this.updateDate(!0),this.$emit("clear")},confirmDate:function(){var t;(this.range?(t=this.currentValue,Array.isArray(t)&&2===t.length&&l(t[0])&&l(t[1])&&new Date(t[1]).getTime()>=new Date(t[0]).getTime()):l(this.currentValue))&&this.updateDate(!0),this.emitDate("confirm"),this.closePopup()},updateDate:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return!(this.confirm&&!t||this.disabled||(this.range?this.rangeEqual(this.value,this.currentValue):this.dateEqual(this.value,this.currentValue))||(this.emitDate("input"),this.emitDate("change"),0))},emitDate:function(t){var e=this.transform.date2value,n=this.range?this.currentValue.map(e):e(this.currentValue);this.$emit(t,n)},handleValueChange:function(t){var e=this.transform.value2date;this.range?this.currentValue=this.isValidRangeValue(t)?t.map(e):[null,null]:this.currentValue=this.isValidValue(t)?e(t):null},selectDate:function(t){this.currentValue=t,this.updateDate()&&this.closePopup()},selectStartDate:function(t){this.$set(this.currentValue,0,t),this.currentValue[1]&&this.updateDate()},selectEndDate:function(t){this.$set(this.currentValue,1,t),this.currentValue[0]&&this.updateDate()},selectTime:function(t,e){this.currentValue=t,this.updateDate()&&e&&this.closePopup()},selectStartTime:function(t){this.selectStartDate(t)},selectEndTime:function(t){this.selectEndDate(t)},showPopup:function(){this.disabled||(this.popupVisible=!0)},closePopup:function(){this.popupVisible=!1},getPopupSize:function(t){var e=t.style.display,n=t.style.visibility;t.style.display="block",t.style.visibility="hidden";var r=window.getComputedStyle(t),i={width:t.offsetWidth+parseInt(r.marginLeft)+parseInt(r.marginRight),height:t.offsetHeight+parseInt(r.marginTop)+parseInt(r.marginBottom)};return t.style.display=e,t.style.visibility=n,i},displayPopup:function(){var t=document.documentElement.clientWidth,e=document.documentElement.clientHeight,n=this.$el.getBoundingClientRect(),r=this._popupRect||(this._popupRect=this.getPopupSize(this.$refs.calendar)),i={},o=0,a=0;this.appendToBody&&(o=window.pageXOffset+n.left,a=window.pageYOffset+n.top),t-n.left<r.width&&n.right<r.width?i.left=o-n.left+1+"px":n.left+n.width/2<=t/2?i.left=o+"px":i.left=o+n.width-r.width+"px",n.top<=r.height&&e-n.bottom<=r.height?i.top=a+e-n.top-r.height+"px":n.top+n.height/2<=e/2?i.top=a+n.height+"px":i.top=a-r.height+"px",i.top===this.position.top&&i.left===this.position.left||(this.position=i)},blur:function(){this.$refs.input.blur()},handleBlur:function(t){this.$emit("blur",t)},handleFocus:function(t){this.popupVisible||this.showPopup(),this.$emit("focus",t)},handleKeydown:function(t){var e=t.keyCode;9!==e&&13!==e||(t.stopPropagation(),this.handleChange(),this.userInput=null,this.closePopup())},handleInput:function(t){this.userInput=t.target.value},handleChange:function(){if(this.editable&&null!==this.userInput){var t=this.text,e=this.$refs.calendarPanel.isDisabledTime;if(!t)return void this.clearDate();if(this.range){var n=t.split(" "+this.rangeSeparator+" ");if(2===n.length){var r=this.parse(n[0]),i=this.parse(n[1]);if(r&&i&&!e(r,null,i)&&!e(i,r,null))return this.currentValue=[r,i],this.updateDate(!0),void this.closePopup()}}else{var o=this.parse(t);if(o&&!e(o,null,null))return this.currentValue=o,this.updateDate(!0),void this.closePopup()}this.$emit("input-error",t)}}}},(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:t.closePopup,expression:"closePopup"}],staticClass:"mx-datepicker",class:{"mx-datepicker-range":t.range,disabled:t.disabled},style:{width:t.computedWidth}},[n("div",{staticClass:"mx-input-wrapper",on:{click:function(e){return e.stopPropagation(),t.showPopup(e)}}},[n("input",t._b({ref:"input",class:t.inputClass,attrs:{name:t.inputName,type:"text",autocomplete:"off",disabled:t.disabled,readonly:!t.editable,placeholder:t.innerPlaceholder},domProps:{value:t.text},on:{keydown:t.handleKeydown,focus:t.handleFocus,blur:t.handleBlur,input:t.handleInput,change:t.handleChange}},"input",t.inputAttr,!1)),t._v(" "),t.showClearIcon?n("span",{staticClass:"mx-input-append mx-clear-wrapper",on:{click:function(e){return e.stopPropagation(),t.clearDate(e)}}},[t._t("mx-clear-icon",[n("i",{staticClass:"mx-input-icon mx-clear-icon"})])],2):t._e(),t._v(" "),n("span",{staticClass:"mx-input-append"},[t._t("calendar-icon",[n("svg",{staticClass:"mx-calendar-icon",attrs:{xmlns:"http://www.w3.org/2000/svg",version:"1.1",viewBox:"0 0 200 200"}},[n("rect",{attrs:{x:"13",y:"29",rx:"14",ry:"14",width:"174",height:"158",fill:"transparent"}}),t._v(" "),n("line",{attrs:{x1:"46",x2:"46",y1:"8",y2:"50"}}),t._v(" "),n("line",{attrs:{x1:"154",x2:"154",y1:"8",y2:"50"}}),t._v(" "),n("line",{attrs:{x1:"13",x2:"187",y1:"70",y2:"70"}}),t._v(" "),n("text",{attrs:{x:"50%",y:"135","font-size":"90","stroke-width":"1","text-anchor":"middle","dominant-baseline":"middle"}},[t._v(t._s((new Date).getDate()))])])])],2)]),t._v(" "),n("div",{directives:[{name:"show",rawName:"v-show",value:t.popupVisible,expression:"popupVisible"}],ref:"calendar",staticClass:"mx-datepicker-popup",style:t.innerPopupStyle,on:{click:function(t){t.stopPropagation(),t.preventDefault()}}},[t._t("header",[t.range&&t.innerShortcuts.length?n("div",{staticClass:"mx-shortcuts-wrapper"},t._l(t.innerShortcuts,(function(e,r){return n("button",{key:r,staticClass:"mx-shortcuts",attrs:{type:"button"},on:{click:function(n){t.selectRange(e)}}},[t._v(t._s(e.text))])}))):t._e()]),t._v(" "),t.range?n("div",{staticClass:"mx-range-wrapper"},[n("calendar-panel",t._b({ref:"calendarPanel",staticStyle:{"box-shadow":"1px 0 rgba(0, 0, 0, .1)"},attrs:{index:0,type:t.innerType,"date-format":t.innerDateFormat,value:t.currentValue[0],"end-at":t.currentValue[1],"start-at":null,visible:t.popupVisible},on:{"select-date":t.selectStartDate,"select-time":t.selectStartTime}},"calendar-panel",t.$attrs,!1)),t._v(" "),n("calendar-panel",t._b({attrs:{index:1,type:t.innerType,"date-format":t.innerDateFormat,value:t.currentValue[1],"start-at":t.currentValue[0],"end-at":null,visible:t.popupVisible},on:{"select-date":t.selectEndDate,"select-time":t.selectEndTime}},"calendar-panel",t.$attrs,!1))],1):n("calendar-panel",t._b({ref:"calendarPanel",attrs:{index:-1,type:t.innerType,"date-format":t.innerDateFormat,value:t.currentValue,visible:t.popupVisible},on:{"select-date":t.selectDate,"select-time":t.selectTime}},"calendar-panel",t.$attrs,!1)),t._v(" "),t._t("footer",[t.confirm?n("div",{staticClass:"mx-datepicker-footer"},[n("button",{staticClass:"mx-datepicker-btn mx-datepicker-btn-confirm",attrs:{type:"button"},on:{click:t.confirmDate}},[t._v(t._s(t.confirmText))])]):t._e()],{confirm:t.confirmDate})],2)])}),[],!1,null,null,null).exports;n(7),M.install=function(t){t.component(M.name,M)},"undefined"!=typeof window&&window.Vue&&M.install(window.Vue),e.default=M},function(t,e){t.exports=function(){var t=[];return t.toString=function(){for(var t=[],e=0;e<this.length;e++){var n=this[e];n[2]?t.push("@media "+n[2]+"{"+n[1]+"}"):t.push(n[1])}return t.join("")},t.i=function(e,n){"string"==typeof e&&(e=[[null,e,""]]);for(var r={},i=0;i<this.length;i++){var o=this[i][0];"number"==typeof o&&(r[o]=!0)}for(i=0;i<e.length;i++){var a=e[i];"number"==typeof a[0]&&r[a[0]]||(n&&!a[2]?a[2]=n:n&&(a[2]="("+a[2]+") and ("+n+")"),t.push(a))}},t}},,function(t,e,n){(t.exports=n(4)()).push([t.i,"",""])},function(t,e,n){var r=n(6);"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals),(0,n(2).default)("529d5378",r,!0,{})}])},function(t,e,n){var r=n(33);"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals),(0,n(2).default)("941c791e",r,!0,{})},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,".vue-tooltip[data-v-6673a70]{position:absolute;z-index:100000;right:auto;left:auto;display:block;margin:0;margin-top:-3px;padding:10px 0;text-align:left;text-align:start;white-space:normal;text-decoration:none;letter-spacing:normal;word-spacing:normal;text-transform:none;word-wrap:normal;word-break:normal;opacity:0;text-shadow:none;font-family:'Nunito', 'Open Sans', Frutiger, Calibri, 'Myriad Pro', Myriad, sans-serif;font-size:12px;font-weight:normal;font-style:normal;line-height:1.6;line-break:auto;filter:drop-shadow(0 1px 10px var(--color-box-shadow))}.vue-tooltip[data-v-6673a70][x-placement^='top'] .tooltip-arrow{bottom:0;margin-top:0;margin-bottom:0;border-width:10px 10px 0 10px;border-right-color:transparent;border-bottom-color:transparent;border-left-color:transparent}.vue-tooltip[data-v-6673a70][x-placement^='bottom'] .tooltip-arrow{top:0;margin-top:0;margin-bottom:0;border-width:0 10px 10px 10px;border-top-color:transparent;border-right-color:transparent;border-left-color:transparent}.vue-tooltip[data-v-6673a70][x-placement^='right'] .tooltip-arrow{right:100%;margin-right:0;margin-left:0;border-width:10px 10px 10px 0;border-top-color:transparent;border-bottom-color:transparent;border-left-color:transparent}.vue-tooltip[data-v-6673a70][x-placement^='left'] .tooltip-arrow{left:100%;margin-right:0;margin-left:0;border-width:10px 0 10px 10px;border-top-color:transparent;border-right-color:transparent;border-bottom-color:transparent}.vue-tooltip[data-v-6673a70][aria-hidden='true']{visibility:hidden;transition:opacity .15s, visibility .15s;opacity:0}.vue-tooltip[data-v-6673a70][aria-hidden='false']{visibility:visible;transition:opacity .15s;opacity:1}.vue-tooltip[data-v-6673a70] .tooltip-inner{max-width:350px;padding:5px 8px;text-align:center;color:var(--color-main-text);border-radius:var(--border-radius);background-color:var(--color-main-background)}.vue-tooltip[data-v-6673a70] .tooltip-arrow{position:absolute;z-index:1;width:0;height:0;margin:0;border-style:solid;border-color:var(--color-main-background)}\n",""])},function(t,e,n){"use strict"; +/*! + * escape-html + * Copyright(c) 2012-2013 TJ Holowaychuk + * Copyright(c) 2015 Andreas Lubbe + * Copyright(c) 2015 Tiancheng "Timothy" Gu + * MIT Licensed + */var r=/["'&<>]/;t.exports=function(t){var e,n=""+t,i=r.exec(n);if(!i)return n;var o="",a=0,s=0;for(a=i.index;a<n.length;a++){switch(n.charCodeAt(a)){case 34:e=""";break;case 38:e="&";break;case 39:e="'";break;case 60:e="<";break;case 62:e=">";break;default:continue}s!==a&&(o+=n.substring(s,a)),s=a+1,o+=e}return s!==a?o+n.substring(s,a):o}},function(t,e){},function(t,e){},function(t,e){},function(t,e,n){t.exports=n(98)},function(t,e){},function(t,e,n){var r; +/*! Hammer.JS - v2.0.7 - 2016-04-22 + * http://hammerjs.github.io/ + * + * Copyright (c) 2016 Jorik Tangelder; + * Licensed under the MIT license */ +/*! Hammer.JS - v2.0.7 - 2016-04-22 + * http://hammerjs.github.io/ + * + * Copyright (c) 2016 Jorik Tangelder; + * Licensed under the MIT license */!function(i,o,a,s){"use strict";var c,u=["","webkit","Moz","MS","ms","o"],l=o.createElement("div"),f="function",d=Math.round,p=Math.abs,h=Date.now;function v(t,e,n){return setTimeout(x(t,n),e)}function m(t,e,n){return!!Array.isArray(t)&&(A(t,n[e],n),!0)}function A(t,e,n){var r;if(t)if(t.forEach)t.forEach(e,n);else if(t.length!==s)for(r=0;r<t.length;)e.call(n,t[r],r,t),r++;else for(r in t)t.hasOwnProperty(r)&&e.call(n,t[r],r,t)}function g(t,e,n){var r="DEPRECATED METHOD: "+e+"\n"+n+" AT \n";return function(){var e=new Error("get-stack-trace"),n=e&&e.stack?e.stack.replace(/^[^\(]+?[\n$]/gm,"").replace(/^\s+at\s+/gm,"").replace(/^Object.<anonymous>\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",o=i.console&&(i.console.warn||i.console.log);return o&&o.call(i.console,r,n),t.apply(this,arguments)}}c="function"!=typeof Object.assign?function(t){if(t===s||null===t)throw new TypeError("Cannot convert undefined or null to object");for(var e=Object(t),n=1;n<arguments.length;n++){var r=arguments[n];if(r!==s&&null!==r)for(var i in r)r.hasOwnProperty(i)&&(e[i]=r[i])}return e}:Object.assign;var y=g((function(t,e,n){for(var r=Object.keys(e),i=0;i<r.length;)(!n||n&&t[r[i]]===s)&&(t[r[i]]=e[r[i]]),i++;return t}),"extend","Use `assign`."),b=g((function(t,e){return y(t,e,!0)}),"merge","Use `assign`.");function _(t,e,n){var r,i=e.prototype;(r=t.prototype=Object.create(i)).constructor=t,r._super=i,n&&c(r,n)}function x(t,e){return function(){return t.apply(e,arguments)}}function w(t,e){return typeof t==f?t.apply(e&&e[0]||s,e):t}function C(t,e){return t===s?e:t}function k(t,e,n){A(O(e),(function(e){t.addEventListener(e,n,!1)}))}function T(t,e,n){A(O(e),(function(e){t.removeEventListener(e,n,!1)}))}function E(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1}function S(t,e){return t.indexOf(e)>-1}function O(t){return t.trim().split(/\s+/g)}function M(t,e,n){if(t.indexOf&&!n)return t.indexOf(e);for(var r=0;r<t.length;){if(n&&t[r][n]==e||!n&&t[r]===e)return r;r++}return-1}function D(t){return Array.prototype.slice.call(t,0)}function I(t,e,n){for(var r=[],i=[],o=0;o<t.length;){var a=e?t[o][e]:t[o];M(i,a)<0&&r.push(t[o]),i[o]=a,o++}return n&&(r=e?r.sort((function(t,n){return t[e]>n[e]})):r.sort()),r}function B(t,e){for(var n,r,i=e[0].toUpperCase()+e.slice(1),o=0;o<u.length;){if((r=(n=u[o])?n+i:e)in t)return r;o++}return s}var N=1;function j(t){var e=t.ownerDocument||t;return e.defaultView||e.parentWindow||i}var L="ontouchstart"in i,P=B(i,"PointerEvent")!==s,$=L&&/mobile|tablet|ip(ad|hone|od)|android/i.test(navigator.userAgent),R=25,F=1,z=4,U=8,H=1,Y=2,V=4,G=8,Q=16,W=Y|V,q=G|Q,Z=W|q,X=["x","y"],K=["clientX","clientY"];function J(t,e){var n=this;this.manager=t,this.callback=e,this.element=t.element,this.target=t.options.inputTarget,this.domHandler=function(e){w(t.options.enable,[t])&&n.handler(e)},this.init()}function tt(t,e,n){var r=n.pointers.length,i=n.changedPointers.length,o=e&F&&r-i==0,a=e&(z|U)&&r-i==0;n.isFirst=!!o,n.isFinal=!!a,o&&(t.session={}),n.eventType=e,function(t,e){var n=t.session,r=e.pointers,i=r.length;n.firstInput||(n.firstInput=et(e)),i>1&&!n.firstMultiple?n.firstMultiple=et(e):1===i&&(n.firstMultiple=!1);var o=n.firstInput,a=n.firstMultiple,c=a?a.center:o.center,u=e.center=nt(r);e.timeStamp=h(),e.deltaTime=e.timeStamp-o.timeStamp,e.angle=at(c,u),e.distance=ot(c,u),function(t,e){var n=e.center,r=t.offsetDelta||{},i=t.prevDelta||{},o=t.prevInput||{};e.eventType!==F&&o.eventType!==z||(i=t.prevDelta={x:o.deltaX||0,y:o.deltaY||0},r=t.offsetDelta={x:n.x,y:n.y}),e.deltaX=i.x+(n.x-r.x),e.deltaY=i.y+(n.y-r.y)}(n,e),e.offsetDirection=it(e.deltaX,e.deltaY);var l,f,d=rt(e.deltaTime,e.deltaX,e.deltaY);e.overallVelocityX=d.x,e.overallVelocityY=d.y,e.overallVelocity=p(d.x)>p(d.y)?d.x:d.y,e.scale=a?(l=a.pointers,ot((f=r)[0],f[1],K)/ot(l[0],l[1],K)):1,e.rotation=a?function(t,e){return at(e[1],e[0],K)+at(t[1],t[0],K)}(a.pointers,r):0,e.maxPointers=n.prevInput?e.pointers.length>n.prevInput.maxPointers?e.pointers.length:n.prevInput.maxPointers:e.pointers.length,function(t,e){var n,r,i,o,a=t.lastInterval||e,c=e.timeStamp-a.timeStamp;if(e.eventType!=U&&(c>R||a.velocity===s)){var u=e.deltaX-a.deltaX,l=e.deltaY-a.deltaY,f=rt(c,u,l);r=f.x,i=f.y,n=p(f.x)>p(f.y)?f.x:f.y,o=it(u,l),t.lastInterval=e}else n=a.velocity,r=a.velocityX,i=a.velocityY,o=a.direction;e.velocity=n,e.velocityX=r,e.velocityY=i,e.direction=o}(n,e);var v=t.element;E(e.srcEvent.target,v)&&(v=e.srcEvent.target),e.target=v}(t,n),t.emit("hammer.input",n),t.recognize(n),t.session.prevInput=n}function et(t){for(var e=[],n=0;n<t.pointers.length;)e[n]={clientX:d(t.pointers[n].clientX),clientY:d(t.pointers[n].clientY)},n++;return{timeStamp:h(),pointers:e,center:nt(e),deltaX:t.deltaX,deltaY:t.deltaY}}function nt(t){var e=t.length;if(1===e)return{x:d(t[0].clientX),y:d(t[0].clientY)};for(var n=0,r=0,i=0;i<e;)n+=t[i].clientX,r+=t[i].clientY,i++;return{x:d(n/e),y:d(r/e)}}function rt(t,e,n){return{x:e/t||0,y:n/t||0}}function it(t,e){return t===e?H:p(t)>=p(e)?t<0?Y:V:e<0?G:Q}function ot(t,e,n){n||(n=X);var r=e[n[0]]-t[n[0]],i=e[n[1]]-t[n[1]];return Math.sqrt(r*r+i*i)}function at(t,e,n){n||(n=X);var r=e[n[0]]-t[n[0]],i=e[n[1]]-t[n[1]];return 180*Math.atan2(i,r)/Math.PI}J.prototype={handler:function(){},init:function(){this.evEl&&k(this.element,this.evEl,this.domHandler),this.evTarget&&k(this.target,this.evTarget,this.domHandler),this.evWin&&k(j(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&T(this.element,this.evEl,this.domHandler),this.evTarget&&T(this.target,this.evTarget,this.domHandler),this.evWin&&T(j(this.element),this.evWin,this.domHandler)}};var st={mousedown:F,mousemove:2,mouseup:z},ct="mousedown",ut="mousemove mouseup";function lt(){this.evEl=ct,this.evWin=ut,this.pressed=!1,J.apply(this,arguments)}_(lt,J,{handler:function(t){var e=st[t.type];e&F&&0===t.button&&(this.pressed=!0),2&e&&1!==t.which&&(e=z),this.pressed&&(e&z&&(this.pressed=!1),this.callback(this.manager,e,{pointers:[t],changedPointers:[t],pointerType:"mouse",srcEvent:t}))}});var ft={pointerdown:F,pointermove:2,pointerup:z,pointercancel:U,pointerout:U},dt={2:"touch",3:"pen",4:"mouse",5:"kinect"},pt="pointerdown",ht="pointermove pointerup pointercancel";function vt(){this.evEl=pt,this.evWin=ht,J.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}i.MSPointerEvent&&!i.PointerEvent&&(pt="MSPointerDown",ht="MSPointerMove MSPointerUp MSPointerCancel"),_(vt,J,{handler:function(t){var e=this.store,n=!1,r=t.type.toLowerCase().replace("ms",""),i=ft[r],o=dt[t.pointerType]||t.pointerType,a="touch"==o,s=M(e,t.pointerId,"pointerId");i&F&&(0===t.button||a)?s<0&&(e.push(t),s=e.length-1):i&(z|U)&&(n=!0),s<0||(e[s]=t,this.callback(this.manager,i,{pointers:e,changedPointers:[t],pointerType:o,srcEvent:t}),n&&e.splice(s,1))}});var mt={touchstart:F,touchmove:2,touchend:z,touchcancel:U},At="touchstart",gt="touchstart touchmove touchend touchcancel";function yt(){this.evTarget=At,this.evWin=gt,this.started=!1,J.apply(this,arguments)}_(yt,J,{handler:function(t){var e=mt[t.type];if(e===F&&(this.started=!0),this.started){var n=function(t,e){var n=D(t.touches),r=D(t.changedTouches);return e&(z|U)&&(n=I(n.concat(r),"identifier",!0)),[n,r]}.call(this,t,e);e&(z|U)&&n[0].length-n[1].length==0&&(this.started=!1),this.callback(this.manager,e,{pointers:n[0],changedPointers:n[1],pointerType:"touch",srcEvent:t})}}});var bt={touchstart:F,touchmove:2,touchend:z,touchcancel:U},_t="touchstart touchmove touchend touchcancel";function xt(){this.evTarget=_t,this.targetIds={},J.apply(this,arguments)}_(xt,J,{handler:function(t){var e=bt[t.type],n=function(t,e){var n=D(t.touches),r=this.targetIds;if(e&(2|F)&&1===n.length)return r[n[0].identifier]=!0,[n,n];var i,o,a=D(t.changedTouches),s=[],c=this.target;if(o=n.filter((function(t){return E(t.target,c)})),e===F)for(i=0;i<o.length;)r[o[i].identifier]=!0,i++;for(i=0;i<a.length;)r[a[i].identifier]&&s.push(a[i]),e&(z|U)&&delete r[a[i].identifier],i++;return s.length?[I(o.concat(s),"identifier",!0),s]:void 0}.call(this,t,e);n&&this.callback(this.manager,e,{pointers:n[0],changedPointers:n[1],pointerType:"touch",srcEvent:t})}});var wt=2500;function Ct(){J.apply(this,arguments);var t=x(this.handler,this);this.touch=new xt(this.manager,t),this.mouse=new lt(this.manager,t),this.primaryTouch=null,this.lastTouches=[]}function kt(t){var e=t.changedPointers[0];if(e.identifier===this.primaryTouch){var n={x:e.clientX,y:e.clientY};this.lastTouches.push(n);var r=this.lastTouches;setTimeout((function(){var t=r.indexOf(n);t>-1&&r.splice(t,1)}),wt)}}_(Ct,J,{handler:function(t,e,n){var r="touch"==n.pointerType,i="mouse"==n.pointerType;if(!(i&&n.sourceCapabilities&&n.sourceCapabilities.firesTouchEvents)){if(r)(function(t,e){t&F?(this.primaryTouch=e.changedPointers[0].identifier,kt.call(this,e)):t&(z|U)&&kt.call(this,e)}).call(this,e,n);else if(i&&function(t){for(var e=t.srcEvent.clientX,n=t.srcEvent.clientY,r=0;r<this.lastTouches.length;r++){var i=this.lastTouches[r],o=Math.abs(e-i.x),a=Math.abs(n-i.y);if(o<=25&&a<=25)return!0}return!1}.call(this,n))return;this.callback(t,e,n)}},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var Tt=B(l.style,"touchAction"),Et=Tt!==s,St="manipulation",Ot="none",Mt="pan-x",Dt="pan-y",It=function(){if(!Et)return!1;var t={},e=i.CSS&&i.CSS.supports;return["auto","manipulation","pan-y","pan-x","pan-x pan-y","none"].forEach((function(n){t[n]=!e||i.CSS.supports("touch-action",n)})),t}();function Bt(t,e){this.manager=t,this.set(e)}Bt.prototype={set:function(t){"compute"==t&&(t=this.compute()),Et&&this.manager.element.style&&It[t]&&(this.manager.element.style[Tt]=t),this.actions=t.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var t=[];return A(this.manager.recognizers,(function(e){w(e.options.enable,[e])&&(t=t.concat(e.getTouchAction()))})),function(t){if(S(t,Ot))return Ot;var e=S(t,Mt),n=S(t,Dt);return e&&n?Ot:e||n?e?Mt:Dt:S(t,St)?St:"auto"}(t.join(" "))},preventDefaults:function(t){var e=t.srcEvent,n=t.offsetDirection;if(this.manager.session.prevented)e.preventDefault();else{var r=this.actions,i=S(r,Ot)&&!It[Ot],o=S(r,Dt)&&!It[Dt],a=S(r,Mt)&&!It[Mt];if(i){var s=1===t.pointers.length,c=t.distance<2,u=t.deltaTime<250;if(s&&c&&u)return}if(!a||!o)return i||o&&n&W||a&&n&q?this.preventSrc(e):void 0}},preventSrc:function(t){this.manager.session.prevented=!0,t.preventDefault()}};var Nt=1,jt=2,Lt=4,Pt=8,$t=Pt,Rt=16;function Ft(t){this.options=c({},this.defaults,t||{}),this.id=N++,this.manager=null,this.options.enable=C(this.options.enable,!0),this.state=Nt,this.simultaneous={},this.requireFail=[]}function zt(t){return t&Rt?"cancel":t&Pt?"end":t&Lt?"move":t&jt?"start":""}function Ut(t){return t==Q?"down":t==G?"up":t==Y?"left":t==V?"right":""}function Ht(t,e){var n=e.manager;return n?n.get(t):t}function Yt(){Ft.apply(this,arguments)}function Vt(){Yt.apply(this,arguments),this.pX=null,this.pY=null}function Gt(){Yt.apply(this,arguments)}function Qt(){Ft.apply(this,arguments),this._timer=null,this._input=null}function Wt(){Yt.apply(this,arguments)}function qt(){Yt.apply(this,arguments)}function Zt(){Ft.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}function Xt(t,e){return(e=e||{}).recognizers=C(e.recognizers,Xt.defaults.preset),new Kt(t,e)}function Kt(t,e){var n;this.options=c({},Xt.defaults,e||{}),this.options.inputTarget=this.options.inputTarget||t,this.handlers={},this.session={},this.recognizers=[],this.oldCssProps={},this.element=t,this.input=new((n=this).options.inputClass||(P?vt:$?xt:L?Ct:lt))(n,tt),this.touchAction=new Bt(this,this.options.touchAction),Jt(this,!0),A(this.options.recognizers,(function(t){var e=this.add(new t[0](t[1]));t[2]&&e.recognizeWith(t[2]),t[3]&&e.requireFailure(t[3])}),this)}function Jt(t,e){var n,r=t.element;r.style&&(A(t.options.cssProps,(function(i,o){n=B(r.style,o),e?(t.oldCssProps[n]=r.style[n],r.style[n]=i):r.style[n]=t.oldCssProps[n]||""})),e||(t.oldCssProps={}))}Ft.prototype={defaults:{},set:function(t){return c(this.options,t),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(t){if(m(t,"recognizeWith",this))return this;var e=this.simultaneous;return e[(t=Ht(t,this)).id]||(e[t.id]=t,t.recognizeWith(this)),this},dropRecognizeWith:function(t){return m(t,"dropRecognizeWith",this)?this:(t=Ht(t,this),delete this.simultaneous[t.id],this)},requireFailure:function(t){if(m(t,"requireFailure",this))return this;var e=this.requireFail;return-1===M(e,t=Ht(t,this))&&(e.push(t),t.requireFailure(this)),this},dropRequireFailure:function(t){if(m(t,"dropRequireFailure",this))return this;t=Ht(t,this);var e=M(this.requireFail,t);return e>-1&&this.requireFail.splice(e,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(t){return!!this.simultaneous[t.id]},emit:function(t){var e=this,n=this.state;function r(n){e.manager.emit(n,t)}n<Pt&&r(e.options.event+zt(n)),r(e.options.event),t.additionalEvent&&r(t.additionalEvent),n>=Pt&&r(e.options.event+zt(n))},tryEmit:function(t){if(this.canEmit())return this.emit(t);this.state=32},canEmit:function(){for(var t=0;t<this.requireFail.length;){if(!(this.requireFail[t].state&(32|Nt)))return!1;t++}return!0},recognize:function(t){var e=c({},t);if(!w(this.options.enable,[this,e]))return this.reset(),void(this.state=32);this.state&($t|Rt|32)&&(this.state=Nt),this.state=this.process(e),this.state&(jt|Lt|Pt|Rt)&&this.tryEmit(e)},process:function(t){},getTouchAction:function(){},reset:function(){}},_(Yt,Ft,{defaults:{pointers:1},attrTest:function(t){var e=this.options.pointers;return 0===e||t.pointers.length===e},process:function(t){var e=this.state,n=t.eventType,r=e&(jt|Lt),i=this.attrTest(t);return r&&(n&U||!i)?e|Rt:r||i?n&z?e|Pt:e&jt?e|Lt:jt:32}}),_(Vt,Yt,{defaults:{event:"pan",threshold:10,pointers:1,direction:Z},getTouchAction:function(){var t=this.options.direction,e=[];return t&W&&e.push(Dt),t&q&&e.push(Mt),e},directionTest:function(t){var e=this.options,n=!0,r=t.distance,i=t.direction,o=t.deltaX,a=t.deltaY;return i&e.direction||(e.direction&W?(i=0===o?H:o<0?Y:V,n=o!=this.pX,r=Math.abs(t.deltaX)):(i=0===a?H:a<0?G:Q,n=a!=this.pY,r=Math.abs(t.deltaY))),t.direction=i,n&&r>e.threshold&&i&e.direction},attrTest:function(t){return Yt.prototype.attrTest.call(this,t)&&(this.state&jt||!(this.state&jt)&&this.directionTest(t))},emit:function(t){this.pX=t.deltaX,this.pY=t.deltaY;var e=Ut(t.direction);e&&(t.additionalEvent=this.options.event+e),this._super.emit.call(this,t)}}),_(Gt,Yt,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[Ot]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.scale-1)>this.options.threshold||this.state&jt)},emit:function(t){if(1!==t.scale){var e=t.scale<1?"in":"out";t.additionalEvent=this.options.event+e}this._super.emit.call(this,t)}}),_(Qt,Ft,{defaults:{event:"press",pointers:1,time:251,threshold:9},getTouchAction:function(){return["auto"]},process:function(t){var e=this.options,n=t.pointers.length===e.pointers,r=t.distance<e.threshold,i=t.deltaTime>e.time;if(this._input=t,!r||!n||t.eventType&(z|U)&&!i)this.reset();else if(t.eventType&F)this.reset(),this._timer=v((function(){this.state=$t,this.tryEmit()}),e.time,this);else if(t.eventType&z)return $t;return 32},reset:function(){clearTimeout(this._timer)},emit:function(t){this.state===$t&&(t&&t.eventType&z?this.manager.emit(this.options.event+"up",t):(this._input.timeStamp=h(),this.manager.emit(this.options.event,this._input)))}}),_(Wt,Yt,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[Ot]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.rotation)>this.options.threshold||this.state&jt)}}),_(qt,Yt,{defaults:{event:"swipe",threshold:10,velocity:.3,direction:W|q,pointers:1},getTouchAction:function(){return Vt.prototype.getTouchAction.call(this)},attrTest:function(t){var e,n=this.options.direction;return n&(W|q)?e=t.overallVelocity:n&W?e=t.overallVelocityX:n&q&&(e=t.overallVelocityY),this._super.attrTest.call(this,t)&&n&t.offsetDirection&&t.distance>this.options.threshold&&t.maxPointers==this.options.pointers&&p(e)>this.options.velocity&&t.eventType&z},emit:function(t){var e=Ut(t.offsetDirection);e&&this.manager.emit(this.options.event+e,t),this.manager.emit(this.options.event,t)}}),_(Zt,Ft,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[St]},process:function(t){var e=this.options,n=t.pointers.length===e.pointers,r=t.distance<e.threshold,i=t.deltaTime<e.time;if(this.reset(),t.eventType&F&&0===this.count)return this.failTimeout();if(r&&i&&n){if(t.eventType!=z)return this.failTimeout();var o=!this.pTime||t.timeStamp-this.pTime<e.interval,a=!this.pCenter||ot(this.pCenter,t.center)<e.posThreshold;if(this.pTime=t.timeStamp,this.pCenter=t.center,a&&o?this.count+=1:this.count=1,this._input=t,0==this.count%e.taps)return this.hasRequireFailures()?(this._timer=v((function(){this.state=$t,this.tryEmit()}),e.interval,this),jt):$t}return 32},failTimeout:function(){return this._timer=v((function(){this.state=32}),this.options.interval,this),32},reset:function(){clearTimeout(this._timer)},emit:function(){this.state==$t&&(this._input.tapCount=this.count,this.manager.emit(this.options.event,this._input))}}),Xt.VERSION="2.0.7",Xt.defaults={domEvents:!1,touchAction:"compute",enable:!0,inputTarget:null,inputClass:null,preset:[[Wt,{enable:!1}],[Gt,{enable:!1},["rotate"]],[qt,{direction:W}],[Vt,{direction:W},["swipe"]],[Zt],[Zt,{event:"doubletap",taps:2},["tap"]],[Qt]],cssProps:{userSelect:"none",touchSelect:"none",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},Kt.prototype={set:function(t){return c(this.options,t),t.touchAction&&this.touchAction.update(),t.inputTarget&&(this.input.destroy(),this.input.target=t.inputTarget,this.input.init()),this},stop:function(t){this.session.stopped=t?2:1},recognize:function(t){var e=this.session;if(!e.stopped){var n;this.touchAction.preventDefaults(t);var r=this.recognizers,i=e.curRecognizer;(!i||i&&i.state&$t)&&(i=e.curRecognizer=null);for(var o=0;o<r.length;)n=r[o],2===e.stopped||i&&n!=i&&!n.canRecognizeWith(i)?n.reset():n.recognize(t),!i&&n.state&(jt|Lt|Pt)&&(i=e.curRecognizer=n),o++}},get:function(t){if(t instanceof Ft)return t;for(var e=this.recognizers,n=0;n<e.length;n++)if(e[n].options.event==t)return e[n];return null},add:function(t){if(m(t,"add",this))return this;var e=this.get(t.options.event);return e&&this.remove(e),this.recognizers.push(t),t.manager=this,this.touchAction.update(),t},remove:function(t){if(m(t,"remove",this))return this;if(t=this.get(t)){var e=this.recognizers,n=M(e,t);-1!==n&&(e.splice(n,1),this.touchAction.update())}return this},on:function(t,e){if(t!==s&&e!==s){var n=this.handlers;return A(O(t),(function(t){n[t]=n[t]||[],n[t].push(e)})),this}},off:function(t,e){if(t!==s){var n=this.handlers;return A(O(t),(function(t){e?n[t]&&n[t].splice(M(n[t],e),1):delete n[t]})),this}},emit:function(t,e){this.options.domEvents&&function(t,e){var n=o.createEvent("Event");n.initEvent(t,!0,!0),n.gesture=e,e.target.dispatchEvent(n)}(t,e);var n=this.handlers[t]&&this.handlers[t].slice();if(n&&n.length){e.type=t,e.preventDefault=function(){e.srcEvent.preventDefault()};for(var r=0;r<n.length;)n[r](e),r++}},destroy:function(){this.element&&Jt(this,!1),this.handlers={},this.session={},this.input.destroy(),this.element=null}},c(Xt,{INPUT_START:F,INPUT_MOVE:2,INPUT_END:z,INPUT_CANCEL:U,STATE_POSSIBLE:Nt,STATE_BEGAN:jt,STATE_CHANGED:Lt,STATE_ENDED:Pt,STATE_RECOGNIZED:$t,STATE_CANCELLED:Rt,STATE_FAILED:32,DIRECTION_NONE:H,DIRECTION_LEFT:Y,DIRECTION_RIGHT:V,DIRECTION_UP:G,DIRECTION_DOWN:Q,DIRECTION_HORIZONTAL:W,DIRECTION_VERTICAL:q,DIRECTION_ALL:Z,Manager:Kt,Input:J,TouchAction:Bt,TouchInput:xt,MouseInput:lt,PointerEventInput:vt,TouchMouseInput:Ct,SingleTouchInput:yt,Recognizer:Ft,AttrRecognizer:Yt,Tap:Zt,Pan:Vt,Swipe:qt,Pinch:Gt,Rotate:Wt,Press:Qt,on:k,off:T,each:A,merge:b,extend:y,assign:c,inherit:_,bindFn:x,prefixed:B}),(void 0!==i?i:"undefined"!=typeof self?self:{}).Hammer=Xt,(r=function(){return Xt}.call(e,n,e,t))===s||(t.exports=r)}(window,document)},function(t,e,n){"use strict";var r=n(18);n.n(r).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,"\nbutton.menuitem[data-v-8dc4efb0] {\n\ttext-align: left;\n}\nbutton.menuitem *[data-v-8dc4efb0] {\n\tcursor: pointer;\n}\nbutton.menuitem[data-v-8dc4efb0]:disabled {\n\topacity: 0.5 !important;\n\tcursor: default;\n}\nbutton.menuitem:disabled *[data-v-8dc4efb0] {\n\tcursor: default;\n}\n.menuitem.active[data-v-8dc4efb0] {\n\tbox-shadow: inset 2px 0 var(--color-primary);\n\tborder-radius: 0;\n}\n",""])},function(t,e,n){"use strict";var r=n(19);n.n(r).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,"li[data-v-8dc4efb0]{display:flex;flex:0 0 auto}li.hidden[data-v-8dc4efb0]{display:none}li>button[data-v-8dc4efb0],li>a[data-v-8dc4efb0],li>.menuitem[data-v-8dc4efb0]{cursor:pointer;line-height:44px;border:0;border-radius:0;background-color:transparent;display:flex;align-items:flex-start;height:auto;margin:0;padding:0;font-weight:normal;box-shadow:none;width:100%;color:var(--color-main-text);white-space:nowrap;opacity:.7}li>button span[class^='icon-'][data-v-8dc4efb0],li>button span[class*=' icon-'][data-v-8dc4efb0],li>button[class^='icon-'][data-v-8dc4efb0],li>button[class*=' icon-'][data-v-8dc4efb0],li>a span[class^='icon-'][data-v-8dc4efb0],li>a span[class*=' icon-'][data-v-8dc4efb0],li>a[class^='icon-'][data-v-8dc4efb0],li>a[class*=' icon-'][data-v-8dc4efb0],li>.menuitem span[class^='icon-'][data-v-8dc4efb0],li>.menuitem span[class*=' icon-'][data-v-8dc4efb0],li>.menuitem[class^='icon-'][data-v-8dc4efb0],li>.menuitem[class*=' icon-'][data-v-8dc4efb0]{min-width:0;min-height:0;background-position:14px center;background-size:16px}li>button span[class^='icon-'][data-v-8dc4efb0],li>button span[class*=' icon-'][data-v-8dc4efb0],li>a span[class^='icon-'][data-v-8dc4efb0],li>a span[class*=' icon-'][data-v-8dc4efb0],li>.menuitem span[class^='icon-'][data-v-8dc4efb0],li>.menuitem span[class*=' icon-'][data-v-8dc4efb0]{padding:22px 0 22px 44px}li>button:not([class^='icon-']):not([class*='icon-'])>span[data-v-8dc4efb0]:not([class^='icon-']):not([class*='icon-']):first-child,li>button:not([class^='icon-']):not([class*='icon-'])>input[data-v-8dc4efb0]:not([class^='icon-']):not([class*='icon-']):first-child,li>button:not([class^='icon-']):not([class*='icon-'])>form[data-v-8dc4efb0]:not([class^='icon-']):not([class*='icon-']):first-child,li>a:not([class^='icon-']):not([class*='icon-'])>span[data-v-8dc4efb0]:not([class^='icon-']):not([class*='icon-']):first-child,li>a:not([class^='icon-']):not([class*='icon-'])>input[data-v-8dc4efb0]:not([class^='icon-']):not([class*='icon-']):first-child,li>a:not([class^='icon-']):not([class*='icon-'])>form[data-v-8dc4efb0]:not([class^='icon-']):not([class*='icon-']):first-child,li>.menuitem:not([class^='icon-']):not([class*='icon-'])>span[data-v-8dc4efb0]:not([class^='icon-']):not([class*='icon-']):first-child,li>.menuitem:not([class^='icon-']):not([class*='icon-'])>input[data-v-8dc4efb0]:not([class^='icon-']):not([class*='icon-']):first-child,li>.menuitem:not([class^='icon-']):not([class*='icon-'])>form[data-v-8dc4efb0]:not([class^='icon-']):not([class*='icon-']):first-child{margin-left:44px}li>button[class^='icon-'][data-v-8dc4efb0],li>button[class*=' icon-'][data-v-8dc4efb0],li>a[class^='icon-'][data-v-8dc4efb0],li>a[class*=' icon-'][data-v-8dc4efb0],li>.menuitem[class^='icon-'][data-v-8dc4efb0],li>.menuitem[class*=' icon-'][data-v-8dc4efb0]{padding:0 14px 0 44px}li>button[data-v-8dc4efb0]:not(:disabled):hover,li>button[data-v-8dc4efb0]:not(:disabled):focus,li>button:not(:disabled).active[data-v-8dc4efb0],li>a[data-v-8dc4efb0]:not(:disabled):hover,li>a[data-v-8dc4efb0]:not(:disabled):focus,li>a:not(:disabled).active[data-v-8dc4efb0],li>.menuitem[data-v-8dc4efb0]:not(:disabled):hover,li>.menuitem[data-v-8dc4efb0]:not(:disabled):focus,li>.menuitem:not(:disabled).active[data-v-8dc4efb0]{opacity:1 !important}li>button.action[data-v-8dc4efb0],li>a.action[data-v-8dc4efb0],li>.menuitem.action[data-v-8dc4efb0]{padding:inherit !important}li>button>span[data-v-8dc4efb0],li>a>span[data-v-8dc4efb0],li>.menuitem>span[data-v-8dc4efb0]{cursor:pointer;white-space:nowrap}li>button>p[data-v-8dc4efb0],li>a>p[data-v-8dc4efb0],li>.menuitem>p[data-v-8dc4efb0]{width:150px;line-height:1.6em;padding:8px 0;white-space:normal}li>button>select[data-v-8dc4efb0],li>a>select[data-v-8dc4efb0],li>.menuitem>select[data-v-8dc4efb0]{margin:0;margin-left:6px}li>button[data-v-8dc4efb0]:not(:empty),li>a[data-v-8dc4efb0]:not(:empty),li>.menuitem[data-v-8dc4efb0]:not(:empty){padding-right:14px !important}li>button>img[data-v-8dc4efb0],li>a>img[data-v-8dc4efb0],li>.menuitem>img[data-v-8dc4efb0]{width:16px;padding:14px}li>button>input.radio+label[data-v-8dc4efb0],li>button>input.checkbox+label[data-v-8dc4efb0],li>a>input.radio+label[data-v-8dc4efb0],li>a>input.checkbox+label[data-v-8dc4efb0],li>.menuitem>input.radio+label[data-v-8dc4efb0],li>.menuitem>input.checkbox+label[data-v-8dc4efb0]{padding:0 !important;width:100%}li>button>input.checkbox+label[data-v-8dc4efb0]::before,li>a>input.checkbox+label[data-v-8dc4efb0]::before,li>.menuitem>input.checkbox+label[data-v-8dc4efb0]::before{margin:-2px 13px 0}li>button>input.radio+label[data-v-8dc4efb0]::before,li>a>input.radio+label[data-v-8dc4efb0]::before,li>.menuitem>input.radio+label[data-v-8dc4efb0]::before{margin:-2px 12px 0}li>button>input[data-v-8dc4efb0]:not([type=radio]):not([type=checkbox]):not([type=image]),li>a>input[data-v-8dc4efb0]:not([type=radio]):not([type=checkbox]):not([type=image]),li>.menuitem>input[data-v-8dc4efb0]:not([type=radio]):not([type=checkbox]):not([type=image]){width:150px}li>button form[data-v-8dc4efb0],li>a form[data-v-8dc4efb0],li>.menuitem form[data-v-8dc4efb0]{display:flex;flex:1 1 auto}li>button form[data-v-8dc4efb0]:not(:first-child),li>a form[data-v-8dc4efb0]:not(:first-child),li>.menuitem form[data-v-8dc4efb0]:not(:first-child){margin-left:5px}li>button>span.hidden+form[data-v-8dc4efb0],li>button>span[style*='display:none']+form[data-v-8dc4efb0],li>a>span.hidden+form[data-v-8dc4efb0],li>a>span[style*='display:none']+form[data-v-8dc4efb0],li>.menuitem>span.hidden+form[data-v-8dc4efb0],li>.menuitem>span[style*='display:none']+form[data-v-8dc4efb0]{margin-left:0}li>button input[data-v-8dc4efb0],li>a input[data-v-8dc4efb0],li>.menuitem input[data-v-8dc4efb0]{min-width:44px;max-height:40px;margin:2px 0;flex:1 1 auto}li>button input[data-v-8dc4efb0]:not(:first-child),li>a input[data-v-8dc4efb0]:not(:first-child),li>.menuitem input[data-v-8dc4efb0]:not(:first-child){margin-left:5px}li:not(.hidden):not([style*='display:none']):first-of-type>button>form[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):first-of-type>button>input[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):first-of-type>a>form[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):first-of-type>a>input[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):first-of-type>.menuitem>form[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):first-of-type>.menuitem>input[data-v-8dc4efb0]{margin-top:12px}li:not(.hidden):not([style*='display:none']):last-of-type>button>form[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):last-of-type>button>input[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):last-of-type>a>form[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):last-of-type>a>input[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):last-of-type>.menuitem>form[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):last-of-type>.menuitem>input[data-v-8dc4efb0]{margin-bottom:12px}li>button[data-v-8dc4efb0]{padding:0}li>button span[data-v-8dc4efb0]{opacity:1}\n",""])},function(t,e,n){"use strict";var r=n(20);n.n(r).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,"ul[data-v-2f982451]{display:flex;flex-direction:column}\n",""])},function(t,e,n){var r=n(146);"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals),(0,n(2).default)("504198fc",r,!0,{})},function(t,e,n){var r=n(148);"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals),(0,n(2).default)("efb117ce",r,!0,{})},function(t,e,n){var r=n(150);"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals),(0,n(2).default)("89c943dc",r,!0,{})},function(t,e,n){var r=n(152);"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals),(0,n(2).default)("766647a2",r,!0,{})},function(t,e,n){var r=n(154);"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals),(0,n(2).default)("55805cbd",r,!0,{})},function(t,e,n){var r=n(156);"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals),(0,n(2).default)("19f30fef",r,!0,{})},function(t,e,n){var r=n(158);"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals),(0,n(2).default)("55b308c7",r,!0,{})},function(t,e,n){var r=n(160);"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals),(0,n(2).default)("0c820946",r,!0,{})},function(t,e,n){var r=n(162);"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals),(0,n(2).default)("7d41231a",r,!0,{})},function(t,e,n){var r=n(164);"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals),(0,n(2).default)("4b6feab4",r,!0,{})},function(t,e,n){var r=n(166);"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals),(0,n(2).default)("2eb234c2",r,!0,{})},function(t,e,n){var r=n(168);"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals),(0,n(2).default)("30caeb37",r,!0,{})},function(t,e,n){var r=n(170);"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals),(0,n(2).default)("4dd3631b",r,!0,{})},function(t,e,n){var r=n(172);"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals),(0,n(2).default)("0a4af55c",r,!0,{})},function(t,e,n){var r=n(174);"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals),(0,n(2).default)("acfb770c",r,!0,{})},function(t,e,n){var r=n(176);"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals),(0,n(2).default)("05387ef8",r,!0,{})},function(t,e,n){var r=n(178);"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals),(0,n(2).default)("a375d0ac",r,!0,{})},function(t,e,n){"use strict";n.r(e);var r,i=n(38),o=n.n(i),a=n(77),s=n.n(a),c=n(6),u=n(24),l=n(13),f=n.n(l),d=n(78),p=n.n(d),h=n(79),v=n.n(h),m={name:"Avatar",directives:{tooltip:c.default,ClickOutside:f.a},components:{PopoverMenu:u.PopoverMenu},props:{url:{type:String,default:void 0},user:{type:String,default:void 0},isGuest:{type:Boolean,default:!1},displayName:{type:String,default:void 0},size:{type:Number,default:32},allowPlaceholder:{type:Boolean,default:!0},disableTooltip:{type:Boolean,default:!1},disableMenu:{type:Boolean,default:!1},tooltipMessage:{type:String,default:null},isNoUser:{type:Boolean,default:!1},status:{type:String,default:null,validator:function(t){switch(t){case"positive":case"negative":case"neutral":return!0}return!1}},statusColor:{type:[Number,String],default:null,validator:function(t){return/^([a-f0-9]{3}){1,2}$/i.test(t)}}},data:function(){return{avatarUrlLoaded:null,avatarSrcSetLoaded:null,userDoesNotExist:!1,isAvatarLoaded:!1,isMenuLoaded:!1,contactsMenuActions:[],contactsMenuOpenState:!1}},computed:{getUserIdentifier:function(){return this.isDisplayNameDefined?this.displayName:this.isUserDefined?this.user:""},isUserDefined:function(){return void 0!==this.user},isDisplayNameDefined:function(){return void 0!==this.displayName},isUrlDefined:function(){return void 0!==this.url},hasMenu:function(){return!this.disableMenu&&(this.isMenuLoaded?this.menu.length>0:!(this.user===OC.getCurrentUser().uid||this.userDoesNotExist||this.url))},shouldShowPlaceholder:function(){return this.allowPlaceholder&&this.userDoesNotExist},avatarStyle:function(){var t={width:this.size+"px",height:this.size+"px",lineHeight:this.size+"px",fontSize:Math.round(.55*this.size)+"px"},e=function(t){var e=t.toLowerCase();function n(t,e,n){this.r=t,this.g=e,this.b=n}function r(t,e,r){var i=[];i.push(e);for(var o=function(t,e){var n=new Array(3);return n[0]=(e[1].r-e[0].r)/t,n[1]=(e[1].g-e[0].g)/t,n[2]=(e[1].b-e[0].b)/t,n}(t,[e,r]),a=1;a<t;a++){var s=parseInt(e.r+o[0]*a),c=parseInt(e.g+o[1]*a),u=parseInt(e.b+o[2]*a);i.push(new n(s,c,u))}return i}null===e.match(/^([0-9a-f]{4}-?){8}$/)&&(e=v()(e)),e=e.replace(/[^0-9a-f]/g,"");var i=new n(182,70,157),o=new n(221,203,85),a=new n(0,130,201),s=r(6,i,o),c=r(6,o,a),u=r(6,a,i);return s.concat(c).concat(u)[function(t,e){for(var n=0,r=[],i=0;i<t.length;i++)r.push(parseInt(t.charAt(i),16)%16);for(var o in r)n+=r[o];return parseInt(parseInt(n)%18)}(e)]}(this.getUserIdentifier);return t.backgroundColor="rgb("+e.r+", "+e.g+", "+e.b+")",t},tooltip:function(){return!this.disableTooltip&&(this.tooltipMessage?this.tooltipMessage:this.displayName)},initials:function(){return this.shouldShowPlaceholder?this.getUserIdentifier.charAt(0).toUpperCase():"?"},menu:function(){return this.contactsMenuActions.map((function(t){return{href:t.hyperlink,icon:t.icon,text:t.title}}))}},watch:{url:function(){this.userDoesNotExist=!1,this.loadAvatarUrl()},user:function(){this.userDoesNotExist=!1,this.isMenuLoaded=!1,this.loadAvatarUrl()}},mounted:function(){this.loadAvatarUrl()},methods:{toggleMenu:function(){this.hasMenu&&(this.contactsMenuOpenState=!this.contactsMenuOpenState,this.contactsMenuOpenState&&this.fetchContactsMenu())},closeMenu:function(){this.contactsMenuOpenState=!1},fetchContactsMenu:(r=s()(o.a.mark((function t(){var e,n,r;return o.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,e=encodeURIComponent(this.user),t.next=4,p.a.post(OC.generateUrl("contactsmenu/findOne"),"shareType=0&shareWith=".concat(e));case 4:n=t.sent,r=n.data,this.contactsMenuActions=[r.topAction].concat(r.actions),t.next=12;break;case 9:t.prev=9,t.t0=t.catch(0),this.contactsMenuOpenState=!1;case 12:this.isMenuLoaded=!0;case 13:case"end":return t.stop()}}),t,this,[[0,9]])}))),function(){return r.apply(this,arguments)}),loadAvatarUrl:function(){var t=this;if(this.isAvatarLoaded=!1,!this.isUrlDefined&&(!this.isUserDefined||this.isNoUser))return this.isAvatarLoaded=!0,void(this.userDoesNotExist=!0);var e=function(e,n){var r="/avatar/{user}/{size}";t.isGuest&&(r="/avatar/guest/{user}/{size}");var i=OC.generateUrl(r,{user:e,size:n});return e===OC.getCurrentUser().uid&&"undefined"!=typeof oc_userconfig&&(i+="?v="+oc_userconfig.avatar.version),i},n=e(this.user,this.size);this.isUrlDefined&&(n=this.url);var r=[n+" 1x",e(this.user,2*this.size)+" 2x",e(this.user,4*this.size)+" 4x"].join(", "),i=new Image;i.onload=function(){t.avatarUrlLoaded=n,t.isUrlDefined||(t.avatarSrcSetLoaded=r),t.isAvatarLoaded=!0},i.onerror=function(){t.userDoesNotExist=!0,t.isAvatarLoaded=!0},this.isUrlDefined||(i.srcset=r),i.src=n}}},A=(n(119),n(0)),g=n(39),y=n.n(g),b=Object(A.a)(m,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{directives:[{name:"tooltip",rawName:"v-tooltip",value:t.tooltip,expression:"tooltip"},{name:"click-outside",rawName:"v-click-outside",value:t.closeMenu,expression:"closeMenu"}],staticClass:"avatardiv popovermenu-wrapper",class:{"icon-loading":!t.isAvatarLoaded,"avatardiv--unknown":t.userDoesNotExist,"avatardiv--with-menu":t.hasMenu},style:t.avatarStyle,on:{click:t.toggleMenu}},[t.isAvatarLoaded&&!t.userDoesNotExist?n("img",{attrs:{src:t.avatarUrlLoaded,srcset:t.avatarSrcSetLoaded}}):t._e(),t._v(" "),t.hasMenu?n("div",{staticClass:"icon-more"}):t._e(),t._v(" "),t.status?n("div",{staticClass:"avatardiv__status",class:"avatardiv__status--"+t.status,style:{backgroundColor:"#"+t.statusColor}},["neutral"===t.status?n("svg",{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"11",viewBox:"0 0 3.175 2.91"}},[n("path",{style:{fill:"#"+t.statusColor},attrs:{d:"M3.21 3.043H.494l.679-1.177.68-1.176.678 1.176z",stroke:"#fff","stroke-width":".265","stroke-linecap":"square"}})]):t._e()]):t._e(),t._v(" "),t.userDoesNotExist?n("div",{staticClass:"unknown"},[t._v("\n\t\t"+t._s(t.initials)+"\n\t")]):t._e(),t._v(" "),t.hasMenu?n("div",{directives:[{name:"show",rawName:"v-show",value:t.contactsMenuOpenState,expression:"contactsMenuOpenState"}],staticClass:"popovermenu menu-center"},[n("PopoverMenu",{attrs:{"is-open":t.contactsMenuOpenState,menu:t.menu}})],1):t._e()])}),[],!1,null,"6015a092",null);"function"==typeof y.a&&y()(b);var _=b.exports;n.d(e,"Avatar",(function(){return _})), +/** + * @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net> + * + * @author Julius Härtl <jus@bitgrid.net> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +e.default=_},function(t,e,n){"use strict";n.r(e);var r={name:"ActionButton",mixins:[n(14).a],props:{disabled:{type:Boolean,default:!1}},computed:{isFocusable:function(){return!this.disabled}}},i=(n(90),n(0)),o=n(35),a=n.n(o),s=Object(i.a)(r,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("li",{class:{"action--disabled":t.disabled}},[n("button",{staticClass:"action-button",class:{focusable:t.isFocusable},on:{click:t.onClick}},[n("span",{staticClass:"action-button__icon",class:[t.isIconUrl?"action-button__icon--url":t.icon],style:{backgroundImage:t.isIconUrl?"url("+t.icon+")":null}}),t._v(" "),t.title?n("p",[n("strong",{staticClass:"action-button__title"},[t._v("\n\t\t\t\t"+t._s(t.title)+"\n\t\t\t")]),t._v(" "),n("br"),t._v(" "),n("span",{staticClass:"action-button__longtext",domProps:{textContent:t._s(t.text)}})]):t.isLongText?n("p",{staticClass:"action-button__longtext",domProps:{textContent:t._s(t.text)}}):n("span",{staticClass:"action-button__text"},[t._v(t._s(t.text))]),t._v(" "),t._e()],2)])}),[],!1,null,"37538719",null);"function"==typeof a.a&&a()(s);var c=s.exports;n.d(e,"ActionButton",(function(){return c})), +/** + * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +e.default=c},function(t,e,n){"use strict";n.r(e);var r=n(23),i=n(31),o=n.n(i);o.a.components.CalendarPanel.components.PanelTime.methods.stringifyText=function(t){return t},o.a.methods.displayPopup=function(){var t=this.$el.querySelector(".mx-datepicker-popup");t&&!t.classList.contains("popovermenu")&&(t.className+=" popovermenu menu-center open")};var a={name:"DatetimePicker",components:{DatePicker:o.a},inheritAttrs:!1,props:{value:{default:function(){return new Date}}},methods:{handleSelectYear:function(t){var e=this.$refs.datepicker.currentValue;if(e)try{var n=new Date(new Date(e).setFullYear(t));this.$refs.datepicker.selectDate(n)}catch(n){console.error("Invalid value",e,t)}},handleSelectMonth:function(t){var e=this.$refs.datepicker.currentValue;if(e)try{var n=new Date(new Date(e).setMonth(t));this.$refs.datepicker.selectDate(n)}catch(n){console.error("Invalid value",e,t)}}}},s=n(0),c=n(36),u=n.n(c),l=Object(s.a)(a,(function(){var t=this,e=t.$createElement;return(t._self._c||e)("DatePicker",t._g(t._b({ref:"datepicker",attrs:{clearable:!1,"minute-step":10,value:t.value},on:{"select-year":t.handleSelectYear,"select-month":t.handleSelectMonth,"update:value":function(e){return t.$emit("update:value",t.value)}}},"DatePicker",t.$attrs,!1),t.$listeners))}),[],!1,null,null,null);"function"==typeof u.a&&u()(l);var f=l.exports;n(92),n.d(e,"DatetimePicker",(function(){return f})), +/** + * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +Object(r.a)(f),e.default=f},function(t,e,n){"use strict";n.r(e);var r={name:"AppNavigationCounter",props:{highlighted:{type:Boolean,default:!1}}},i=(n(96),n(0)),o=n(37),a=n.n(o),s=Object(i.a)(r,(function(){var t=this.$createElement,e=this._self._c||t;return e("li",{staticClass:"app-navigation-entry-utils-counter",class:{highlighted:this.highlighted}},[e("span",[this._t("default")],2)])}),[],!1,null,"7ed17014",null);"function"==typeof a.a&&a()(s);var c=s.exports;n.d(e,"AppNavigationCounter",(function(){return c})), +/** + * @copyright Copyright (c) 2019 Marco Ambrosini <ma12co@pm.me> + * + * @author Marco Ambrosini <marcoambrosini@pm.me> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +e.default=c},function(t,e,n){"use strict";t.exports=function(t,e){return function(){for(var n=new Array(arguments.length),r=0;r<n.length;r++)n[r]=arguments[r];return t.apply(e,n)}}},function(t,e,n){"use strict";var r=n(4);function i(t){return encodeURIComponent(t).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}t.exports=function(t,e,n){if(!e)return t;var o;if(n)o=n(e);else if(r.isURLSearchParams(e))o=e.toString();else{var a=[];r.forEach(e,(function(t,e){null!=t&&(r.isArray(t)?e+="[]":t=[t],r.forEach(t,(function(t){r.isDate(t)?t=t.toISOString():r.isObject(t)&&(t=JSON.stringify(t)),a.push(i(e)+"="+i(t))})))})),o=a.join("&")}if(o){var s=t.indexOf("#");-1!==s&&(t=t.slice(0,s)),t+=(-1===t.indexOf("?")?"?":"&")+o}return t}},function(t,e,n){"use strict";t.exports=function(t){return!(!t||!t.__CANCEL__)}},function(t,e,n){"use strict";(function(e){var r=n(4),i=n(107),o={"Content-Type":"application/x-www-form-urlencoded"};function a(t,e){!r.isUndefined(t)&&r.isUndefined(t["Content-Type"])&&(t["Content-Type"]=e)}var s,c={adapter:(void 0!==e&&"[object process]"===Object.prototype.toString.call(e)?s=n(72):"undefined"!=typeof XMLHttpRequest&&(s=n(72)),s),transformRequest:[function(t,e){return i(e,"Accept"),i(e,"Content-Type"),r.isFormData(t)||r.isArrayBuffer(t)||r.isBuffer(t)||r.isStream(t)||r.isFile(t)||r.isBlob(t)?t:r.isArrayBufferView(t)?t.buffer:r.isURLSearchParams(t)?(a(e,"application/x-www-form-urlencoded;charset=utf-8"),t.toString()):r.isObject(t)?(a(e,"application/json;charset=utf-8"),JSON.stringify(t)):t}],transformResponse:[function(t){if("string"==typeof t)try{t=JSON.parse(t)}catch(t){}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};r.forEach(["delete","get","head"],(function(t){c.headers[t]={}})),r.forEach(["post","put","patch"],(function(t){c.headers[t]=r.merge(o)})),t.exports=c}).call(this,n(106))},function(t,e,n){"use strict";var r=n(4),i=n(108),o=n(69),a=n(110),s=n(111),c=n(73);t.exports=function(t){return new Promise((function(e,u){var l=t.data,f=t.headers;r.isFormData(l)&&delete f["Content-Type"];var d=new XMLHttpRequest;if(t.auth){var p=t.auth.username||"",h=t.auth.password||"";f.Authorization="Basic "+btoa(p+":"+h)}if(d.open(t.method.toUpperCase(),o(t.url,t.params,t.paramsSerializer),!0),d.timeout=t.timeout,d.onreadystatechange=function(){if(d&&4===d.readyState&&(0!==d.status||d.responseURL&&0===d.responseURL.indexOf("file:"))){var n="getAllResponseHeaders"in d?a(d.getAllResponseHeaders()):null,r={data:t.responseType&&"text"!==t.responseType?d.response:d.responseText,status:d.status,statusText:d.statusText,headers:n,config:t,request:d};i(e,u,r),d=null}},d.onabort=function(){d&&(u(c("Request aborted",t,"ECONNABORTED",d)),d=null)},d.onerror=function(){u(c("Network Error",t,null,d)),d=null},d.ontimeout=function(){u(c("timeout of "+t.timeout+"ms exceeded",t,"ECONNABORTED",d)),d=null},r.isStandardBrowserEnv()){var v=n(112),m=(t.withCredentials||s(t.url))&&t.xsrfCookieName?v.read(t.xsrfCookieName):void 0;m&&(f[t.xsrfHeaderName]=m)}if("setRequestHeader"in d&&r.forEach(f,(function(t,e){void 0===l&&"content-type"===e.toLowerCase()?delete f[e]:d.setRequestHeader(e,t)})),t.withCredentials&&(d.withCredentials=!0),t.responseType)try{d.responseType=t.responseType}catch(e){if("json"!==t.responseType)throw e}"function"==typeof t.onDownloadProgress&&d.addEventListener("progress",t.onDownloadProgress),"function"==typeof t.onUploadProgress&&d.upload&&d.upload.addEventListener("progress",t.onUploadProgress),t.cancelToken&&t.cancelToken.promise.then((function(t){d&&(d.abort(),u(t),d=null)})),void 0===l&&(l=null),d.send(l)}))}},function(t,e,n){"use strict";var r=n(109);t.exports=function(t,e,n,i,o){var a=new Error(t);return r(a,e,n,i,o)}},function(t,e,n){"use strict";var r=n(4);t.exports=function(t,e){e=e||{};var n={};return r.forEach(["url","method","params","data"],(function(t){void 0!==e[t]&&(n[t]=e[t])})),r.forEach(["headers","auth","proxy"],(function(i){r.isObject(e[i])?n[i]=r.deepMerge(t[i],e[i]):void 0!==e[i]?n[i]=e[i]:r.isObject(t[i])?n[i]=r.deepMerge(t[i]):void 0!==t[i]&&(n[i]=t[i])})),r.forEach(["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","maxContentLength","validateStatus","maxRedirects","httpAgent","httpsAgent","cancelToken","socketPath"],(function(r){void 0!==e[r]?n[r]=e[r]:void 0!==t[r]&&(n[r]=t[r])})),n}},function(t,e,n){"use strict";function r(t){this.message=t}r.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},r.prototype.__CANCEL__=!0,t.exports=r},function(t,e){var n={utf8:{stringToBytes:function(t){return n.bin.stringToBytes(unescape(encodeURIComponent(t)))},bytesToString:function(t){return decodeURIComponent(escape(n.bin.bytesToString(t)))}},bin:{stringToBytes:function(t){for(var e=[],n=0;n<t.length;n++)e.push(255&t.charCodeAt(n));return e},bytesToString:function(t){for(var e=[],n=0;n<t.length;n++)e.push(String.fromCharCode(t[n]));return e.join("")}}};t.exports=n},function(t,e){function n(t,e,n,r,i,o,a){try{var s=t[o](a),c=s.value}catch(t){return void n(t)}s.done?e(c):Promise.resolve(c).then(r,i)}t.exports=function(t){return function(){var e=this,r=arguments;return new Promise((function(i,o){var a=t.apply(e,r);function s(t){n(a,i,o,s,c,"next",t)}function c(t){n(a,i,o,s,c,"throw",t)}s(void 0)}))}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(99).default.create({headers:{requesttoken:OC.requestToken}});e.default=r},function(t,e,n){var r,i,o,a,s;r=n(117),i=n(76).utf8,o=n(118),a=n(76).bin,(s=function(t,e){t.constructor==String?t=e&&"binary"===e.encoding?a.stringToBytes(t):i.stringToBytes(t):o(t)?t=Array.prototype.slice.call(t,0):Array.isArray(t)||(t=t.toString());for(var n=r.bytesToWords(t),c=8*t.length,u=1732584193,l=-271733879,f=-1732584194,d=271733878,p=0;p<n.length;p++)n[p]=16711935&(n[p]<<8|n[p]>>>24)|4278255360&(n[p]<<24|n[p]>>>8);n[c>>>5]|=128<<c%32,n[14+(c+64>>>9<<4)]=c;var h=s._ff,v=s._gg,m=s._hh,A=s._ii;for(p=0;p<n.length;p+=16){var g=u,y=l,b=f,_=d;u=h(u,l,f,d,n[p+0],7,-680876936),d=h(d,u,l,f,n[p+1],12,-389564586),f=h(f,d,u,l,n[p+2],17,606105819),l=h(l,f,d,u,n[p+3],22,-1044525330),u=h(u,l,f,d,n[p+4],7,-176418897),d=h(d,u,l,f,n[p+5],12,1200080426),f=h(f,d,u,l,n[p+6],17,-1473231341),l=h(l,f,d,u,n[p+7],22,-45705983),u=h(u,l,f,d,n[p+8],7,1770035416),d=h(d,u,l,f,n[p+9],12,-1958414417),f=h(f,d,u,l,n[p+10],17,-42063),l=h(l,f,d,u,n[p+11],22,-1990404162),u=h(u,l,f,d,n[p+12],7,1804603682),d=h(d,u,l,f,n[p+13],12,-40341101),f=h(f,d,u,l,n[p+14],17,-1502002290),u=v(u,l=h(l,f,d,u,n[p+15],22,1236535329),f,d,n[p+1],5,-165796510),d=v(d,u,l,f,n[p+6],9,-1069501632),f=v(f,d,u,l,n[p+11],14,643717713),l=v(l,f,d,u,n[p+0],20,-373897302),u=v(u,l,f,d,n[p+5],5,-701558691),d=v(d,u,l,f,n[p+10],9,38016083),f=v(f,d,u,l,n[p+15],14,-660478335),l=v(l,f,d,u,n[p+4],20,-405537848),u=v(u,l,f,d,n[p+9],5,568446438),d=v(d,u,l,f,n[p+14],9,-1019803690),f=v(f,d,u,l,n[p+3],14,-187363961),l=v(l,f,d,u,n[p+8],20,1163531501),u=v(u,l,f,d,n[p+13],5,-1444681467),d=v(d,u,l,f,n[p+2],9,-51403784),f=v(f,d,u,l,n[p+7],14,1735328473),u=m(u,l=v(l,f,d,u,n[p+12],20,-1926607734),f,d,n[p+5],4,-378558),d=m(d,u,l,f,n[p+8],11,-2022574463),f=m(f,d,u,l,n[p+11],16,1839030562),l=m(l,f,d,u,n[p+14],23,-35309556),u=m(u,l,f,d,n[p+1],4,-1530992060),d=m(d,u,l,f,n[p+4],11,1272893353),f=m(f,d,u,l,n[p+7],16,-155497632),l=m(l,f,d,u,n[p+10],23,-1094730640),u=m(u,l,f,d,n[p+13],4,681279174),d=m(d,u,l,f,n[p+0],11,-358537222),f=m(f,d,u,l,n[p+3],16,-722521979),l=m(l,f,d,u,n[p+6],23,76029189),u=m(u,l,f,d,n[p+9],4,-640364487),d=m(d,u,l,f,n[p+12],11,-421815835),f=m(f,d,u,l,n[p+15],16,530742520),u=A(u,l=m(l,f,d,u,n[p+2],23,-995338651),f,d,n[p+0],6,-198630844),d=A(d,u,l,f,n[p+7],10,1126891415),f=A(f,d,u,l,n[p+14],15,-1416354905),l=A(l,f,d,u,n[p+5],21,-57434055),u=A(u,l,f,d,n[p+12],6,1700485571),d=A(d,u,l,f,n[p+3],10,-1894986606),f=A(f,d,u,l,n[p+10],15,-1051523),l=A(l,f,d,u,n[p+1],21,-2054922799),u=A(u,l,f,d,n[p+8],6,1873313359),d=A(d,u,l,f,n[p+15],10,-30611744),f=A(f,d,u,l,n[p+6],15,-1560198380),l=A(l,f,d,u,n[p+13],21,1309151649),u=A(u,l,f,d,n[p+4],6,-145523070),d=A(d,u,l,f,n[p+11],10,-1120210379),f=A(f,d,u,l,n[p+2],15,718787259),l=A(l,f,d,u,n[p+9],21,-343485551),u=u+g>>>0,l=l+y>>>0,f=f+b>>>0,d=d+_>>>0}return r.endian([u,l,f,d])})._ff=function(t,e,n,r,i,o,a){var s=t+(e&n|~e&r)+(i>>>0)+a;return(s<<o|s>>>32-o)+e},s._gg=function(t,e,n,r,i,o,a){var s=t+(e&r|n&~r)+(i>>>0)+a;return(s<<o|s>>>32-o)+e},s._hh=function(t,e,n,r,i,o,a){var s=t+(e^n^r)+(i>>>0)+a;return(s<<o|s>>>32-o)+e},s._ii=function(t,e,n,r,i,o,a){var s=t+(n^(e|~r))+(i>>>0)+a;return(s<<o|s>>>32-o)+e},s._blocksize=16,s._digestsize=16,t.exports=function(t,e){if(null==t)throw new Error("Illegal argument "+t);var n=r.wordsToBytes(s(t,e));return e&&e.asBytes?n:e&&e.asString?a.bytesToString(n):r.bytesToHex(n)}},function(t,e,n){"use strict";var r=n(22);n.n(r).a},function(t,e,n){e=t.exports=n(1)(!1);var r=n(8),i=r(n(9)),o=r(n(10)),a=r(n(11)),s=r(n(12));e.push([t.i,'@font-face{font-family:"iconfont-vue";src:url('+i+");src:url("+i+') format("embedded-opentype"),url('+o+') format("woff"),url('+a+') format("truetype"),url('+s+') format("svg")}.icon[data-v-627a433f]{font-style:normal;font-weight:400}.icon.arrow-left-double[data-v-627a433f]:before{font-family:"iconfont-vue";content:""}.icon.arrow-left[data-v-627a433f]:before{font-family:"iconfont-vue";content:""}.icon.arrow-right-double[data-v-627a433f]:before{font-family:"iconfont-vue";content:""}.icon.arrow-right[data-v-627a433f]:before{font-family:"iconfont-vue";content:""}.icon.close[data-v-627a433f]:before{font-family:"iconfont-vue";content:""}.icon.confirm-fade[data-v-627a433f]:before{font-family:"iconfont-vue";content:""}.icon.confirm[data-v-627a433f]:before{font-family:"iconfont-vue";content:""}.icon.menu[data-v-627a433f]:before{font-family:"iconfont-vue";content:""}.icon.more[data-v-627a433f]:before{font-family:"iconfont-vue";content:""}.icon.pause[data-v-627a433f]:before{font-family:"iconfont-vue";content:""}.icon.play[data-v-627a433f]:before{font-family:"iconfont-vue";content:""}.action-item[data-v-627a433f]{position:relative;display:inline-block}.action-item--single[data-v-627a433f]:hover,.action-item--single[data-v-627a433f]:focus,.action-item--single[data-v-627a433f]:active,.action-item__menutoggle[data-v-627a433f]:hover,.action-item__menutoggle[data-v-627a433f]:focus,.action-item__menutoggle[data-v-627a433f]:active{border-radius:22px;background-color:rgba(127,127,127,0.25) !important;opacity:1}.action-item.action-item--open .action-item__menutoggle[data-v-627a433f]{opacity:1;border-radius:22px;background-color:rgba(127,127,127,0.25)}.action-item--single[data-v-627a433f],.action-item__menutoggle[data-v-627a433f]{box-sizing:border-box;width:44px;height:44px;margin:0;padding:14px;cursor:pointer;border:none;background-color:transparent}.action-item__menutoggle[data-v-627a433f]{display:flex;align-items:center;justify-content:center;opacity:.7;font-size:16px}.action-item__menutoggle[data-v-627a433f]:before{font-family:"iconfont-vue";font-style:normal;font-weight:400;content:""}.action-item--single[data-v-627a433f]{opacity:.7}.action-item--single[data-v-627a433f]:hover,.action-item--single[data-v-627a433f]:focus,.action-item--single[data-v-627a433f]:active{opacity:1}.action-item--single>[hidden][data-v-627a433f]{display:none}.action-item--multiple[data-v-627a433f]{position:relative}.action-item__menu[data-v-627a433f]{position:absolute;z-index:110;right:50%;display:none;margin:10px;margin-top:-5px;transform:translateX(50%);color:var(--color-main-text);border-radius:var(--border-radius);background-color:var(--color-main-background);filter:drop-shadow(0 1px 3px var(--color-box-shadow))}.action-item__menu ul[data-v-627a433f]>:not(li){display:none}.action-item__menu.open[data-v-627a433f]{display:block}.action-item__menu .action-item__menu_arrow[data-v-627a433f]{position:absolute;right:50%;bottom:100%;width:0;height:0;margin-right:-9px;content:\' \';pointer-events:none;border:solid transparent;border-width:9px;border-bottom-color:var(--color-main-background)}.action-item__menu.menu-right[data-v-627a433f]{right:0;left:auto;transform:none}.action-item__menu.menu-right .action-item__menu_arrow[data-v-627a433f]{right:13px;margin-right:0}.action-item__menu.menu-left[data-v-627a433f]{right:auto;left:0;transform:none}.action-item__menu.menu-left .action-item__menu_arrow[data-v-627a433f]{right:auto;left:13px;margin-right:0}.ie .action-item__menu[data-v-627a433f],.ie .action-item__menu .action-item__menu_arrow[data-v-627a433f],.edge .action-item__menu[data-v-627a433f],.edge .action-item__menu .action-item__menu_arrow[data-v-627a433f]{border:1px solid var(--color-border)}\n',""])},function(t,e,n){"use strict";n.r(e);var r=(n(94),n(0)),i=Object(r.a)({name:"AppNavigationToggle",methods:{emitClick:function(){this.$emit("click")}}},(function(){var t=this,e=t.$createElement;return(t._self._c||e)("a",{attrs:{id:"app-navigation-toggle",tabindex:"0",href:"#"},on:{click:function(e){return e.preventDefault(),t.emitClick(e)},keydown:function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"space",32,e.key,[" ","Spacebar"])?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.emitClick(e))}}})}),[],!1,null,"d9538ec8",null).exports;n.d(e,"AppNavigationSpacer",(function(){return i})), +/** + * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +e.default=i},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e,n){"use strict";var r=n(26);n.n(r).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,"li.active[data-v-37538719]{box-shadow:inset 4px 0 var(--color-primary)}.action--disabled[data-v-37538719]{pointer-events:none;opacity:.5}.action--disabled[data-v-37538719]:hover,.action--disabled[data-v-37538719]:focus{cursor:default;opacity:.5}.action--disabled *[data-v-37538719]{opacity:1 !important}.action-button[data-v-37538719]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;padding-right:14px;cursor:pointer;white-space:nowrap;opacity:.7;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:normal;line-height:44px}.action-button[data-v-37538719]:hover,.action-button[data-v-37538719]:focus{opacity:1}.action-button>span[data-v-37538719]{cursor:pointer;white-space:nowrap}.action-button__icon[data-v-37538719]{width:44px;height:44px;opacity:1;background-position:14px center;background-size:16px}.action-button p[data-v-37538719]{width:150px;padding:7px 0;cursor:pointer;text-align:left;line-height:1.6em}.action-button__longtext[data-v-37538719]{cursor:pointer;white-space:pre-wrap}.action-button__title[data-v-37538719]{font-weight:bold}\n",""])},function(t,e,n){var r=n(93);"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals),(0,n(2).default)("600615ea",r,!0,{})},function(t,e,n){e=t.exports=n(1)(!1);var r=n(8),i=r(n(9)),o=r(n(10)),a=r(n(11)),s=r(n(12));e.push([t.i,'@font-face{font-family:"iconfont-vue";src:url('+i+");src:url("+i+') format("embedded-opentype"),url('+o+') format("woff"),url('+a+') format("truetype"),url('+s+') format("svg")}.icon{font-style:normal;font-weight:400}.icon.arrow-left-double:before{font-family:"iconfont-vue";content:""}.icon.arrow-left:before{font-family:"iconfont-vue";content:""}.icon.arrow-right-double:before{font-family:"iconfont-vue";content:""}.icon.arrow-right:before{font-family:"iconfont-vue";content:""}.icon.close:before{font-family:"iconfont-vue";content:""}.icon.confirm-fade:before{font-family:"iconfont-vue";content:""}.icon.confirm:before{font-family:"iconfont-vue";content:""}.icon.menu:before{font-family:"iconfont-vue";content:""}.icon.more:before{font-family:"iconfont-vue";content:""}.icon.pause:before{font-family:"iconfont-vue";content:""}.icon.play:before{font-family:"iconfont-vue";content:""}.mx-datepicker[data-v-6673a70]{width:210px;color:inherit;user-select:none;position:relative;display:inline-block}.mx-datepicker[data-v-6673a70].disabled{opacity:.7;cursor:not-allowed}.mx-datepicker[data-v-6673a70] .mx-input-wrapper .mx-input{width:100%}.mx-datepicker[data-v-6673a70] .mx-input-wrapper .mx-input-append{position:absolute;top:0;right:0;width:30px;height:100%;padding:6px;background-color:var(--color-main-background);background-clip:content-box}.mx-datepicker[data-v-6673a70] .mx-input-wrapper .mx-input-append .mx-input-icon{display:inline-block;font-style:normal;text-align:center;cursor:pointer}.mx-datepicker[data-v-6673a70] .mx-input-wrapper .mx-input-append .mx-clear-wrapper{display:none}.mx-datepicker[data-v-6673a70] .mx-input-wrapper .mx-input-append .mx-calendar-icon{stroke-width:8px;stroke:currentColor;fill:currentColor;width:100%;height:100%;color:var(--color-text-lighter)}.mx-datepicker[data-v-6673a70] .mx-datepicker-popup{box-shadow:none;background-color:var(--color-main-background);position:absolute;margin-top:1px;margin-bottom:1px;z-index:1000}.mx-datepicker[data-v-6673a70] .mx-range-wrapper{display:flex;overflow:hidden}.mx-datepicker[data-v-6673a70] .mx-range-wrapper .mx-calendar:first-child{box-shadow:var(--color-border) 1px 0px !important}.mx-datepicker[data-v-6673a70] .mx-range-wrapper .mx-calendar-content .mx-panel .cell.actived{border-radius:var(--border-radius) 0 0 var(--border-radius)}.mx-datepicker[data-v-6673a70] .mx-range-wrapper .mx-calendar-content .mx-panel .cell.inrange+.cell.actived{border-radius:0 var(--border-radius) var(--border-radius) 0}.mx-datepicker[data-v-6673a70] .mx-shortcuts-wrapper{display:flex;justify-content:space-evenly;padding:5px;border-bottom:1px solid var(--color-border)}.mx-datepicker[data-v-6673a70] .mx-shortcuts-wrapper .mx-shortcuts{font-weight:normal}.mx-datepicker[data-v-6673a70] .mx-calendar{font:inherit;color:var(--color-main-text);padding:5px;width:234px}.mx-datepicker[data-v-6673a70] .mx-calendar-header{padding:0 4px;margin-bottom:4px;text-align:center;overflow:hidden;display:flex;align-items:center;justify-content:space-between}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a{text-decoration:none;cursor:pointer;color:var(--color-text-lighter);padding:7px 10px;margin:0 auto;border-radius:32px;height:32px;line-height:20px;min-width:32px}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a:hover,.mx-datepicker[data-v-6673a70] .mx-calendar-header>a:focus{opacity:1;color:var(--color-main-text);background-color:var(--color-background-darker)}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-last-year,.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-last-month,.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-next-month,.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-next-year{background-position:center;background-repeat:no-repeat;font-size:0;opacity:.5;display:flex;align-items:center;justify-content:center;padding:0}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-last-year:before,.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-last-month:before,.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-next-month:before,.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-next-year:before{display:block;font-size:16px}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-last-year:before{font-family:"iconfont-vue";font-style:normal;font-weight:400;content:""}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-last-month:before{font-family:"iconfont-vue";font-style:normal;font-weight:400;content:""}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-next-month{order:3}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-next-month:before{font-family:"iconfont-vue";font-style:normal;font-weight:400;content:""}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-next-year{order:4}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-next-year:before{font-family:"iconfont-vue";font-style:normal;font-weight:400;content:""}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel{width:100%;height:100%;text-align:center}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel .cell{opacity:.7;border-radius:50px;transition:all 100ms ease-in-out;cursor:pointer}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel .cell:hover,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel .cell:focus,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel .cell.actived,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel .cell.inrange{font-weight:bold;opacity:1;color:var(--color-primary-text);background-color:var(--color-primary-element)}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel .cell.inrange,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel .cell.disabled{border-radius:0;font-weight:normal}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel .cell.inrange{opacity:.7}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel .cell.disabled{color:var(--color-text-lighter);opacity:.5;background-color:var(--color-background-darker)}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel span.cell,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel li.cell{min-height:32px}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date{table-layout:fixed;border-collapse:collapse;border-spacing:0}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date td,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date th{font-size:12px;width:32px;height:32px;line-height:30px;border:0;padding:0;padding-top:2px;overflow:hidden;text-align:center}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date th{color:var(--color-text-lighter);opacity:.5}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date td.today{color:var(--color-primary);opacity:1;font-weight:bold}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date td.last-month,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date td.next-month{color:var(--color-text-lighter);opacity:.5}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date tr:hover,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date tr:focus,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date tr:active{background:none}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-year,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-month{display:flex;flex-wrap:wrap;justify-content:space-around}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-year span.cell,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-month span.cell{display:block;padding:5px;height:44px;line-height:36px;margin-bottom:1%}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-year .cell{width:45%}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-month .cell{width:30%}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-time{display:flex}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-time .mx-time-list{position:relative;width:100%;height:100%;padding:5px;margin:0;list-style:none;overflow-y:auto;max-height:220px}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-time .mx-time-list .mx-time-picker-item{display:block;text-align:left;padding-left:10px}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-time .mx-time-list .cell{display:flex;justify-content:center;margin-bottom:1px;width:100%;font-size:12px;height:32px;line-height:32px}.mx-datepicker[data-v-6673a70] .mx-datepicker-footer{padding:4px;clear:both;text-align:right;border-top:1px solid var(--color-border)}\n',""])},function(t,e,n){"use strict";var r=n(27);n.n(r).a},function(t,e,n){e=t.exports=n(1)(!1);var r=n(8),i=r(n(9)),o=r(n(10)),a=r(n(11)),s=r(n(12));e.push([t.i,'@font-face{font-family:"iconfont-vue";src:url('+i+");src:url("+i+') format("embedded-opentype"),url('+o+') format("woff"),url('+a+') format("truetype"),url('+s+') format("svg")}.icon[data-v-d9538ec8]{font-style:normal;font-weight:400}.icon.arrow-left-double[data-v-d9538ec8]:before{font-family:"iconfont-vue";content:""}.icon.arrow-left[data-v-d9538ec8]:before{font-family:"iconfont-vue";content:""}.icon.arrow-right-double[data-v-d9538ec8]:before{font-family:"iconfont-vue";content:""}.icon.arrow-right[data-v-d9538ec8]:before{font-family:"iconfont-vue";content:""}.icon.close[data-v-d9538ec8]:before{font-family:"iconfont-vue";content:""}.icon.confirm-fade[data-v-d9538ec8]:before{font-family:"iconfont-vue";content:""}.icon.confirm[data-v-d9538ec8]:before{font-family:"iconfont-vue";content:""}.icon.menu[data-v-d9538ec8]:before{font-family:"iconfont-vue";content:""}.icon.more[data-v-d9538ec8]:before{font-family:"iconfont-vue";content:""}.icon.pause[data-v-d9538ec8]:before{font-family:"iconfont-vue";content:""}.icon.play[data-v-d9538ec8]:before{font-family:"iconfont-vue";content:""}#app-navigation-toggle[data-v-d9538ec8]{display:none;position:fixed;z-index:1050;left:0;width:44px;height:44px;padding:14px;cursor:pointer;opacity:0.6;font-size:16px;line-height:17px}#app-navigation-toggle[data-v-d9538ec8]:before{font-family:"iconfont-vue";font-style:normal;font-weight:400;content:""}#app-navigation-toggle[data-v-d9538ec8]:hover,#app-navigation-toggle[data-v-d9538ec8]:focus{opacity:1}@media only screen and (max-width: 768px){#app-navigation-toggle[data-v-d9538ec8]{display:inline-block !important}}\n',""])},function(t,e,n){"use strict";var r=n(28);n.n(r).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,".app-navigation-entry-utils-counter[data-v-7ed17014]{overflow:hidden;text-align:right;font-size:9px;line-height:44px;padding:0 12px}.highlighted[data-v-7ed17014]{padding:0;text-align:center}.highlighted span[data-v-7ed17014]{padding:2px 5px;border-radius:10px;background-color:var(--color-primary);color:var(--color-primary-text)}\n",""])},function(t,e,n){var r=function(t){"use strict";var e,n=Object.prototype,r=n.hasOwnProperty,i="function"==typeof Symbol?Symbol:{},o=i.iterator||"@@iterator",a=i.asyncIterator||"@@asyncIterator",s=i.toStringTag||"@@toStringTag";function c(t,e,n,r){var i=e&&e.prototype instanceof v?e:v,o=Object.create(i.prototype),a=new E(r||[]);return o._invoke=function(t,e,n){var r=l;return function(i,o){if(r===d)throw new Error("Generator is already running");if(r===p){if("throw"===i)throw o;return O()}for(n.method=i,n.arg=o;;){var a=n.delegate;if(a){var s=C(a,n);if(s){if(s===h)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(r===l)throw r=p,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r=d;var c=u(t,e,n);if("normal"===c.type){if(r=n.done?p:f,c.arg===h)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(r=p,n.method="throw",n.arg=c.arg)}}}(t,n,a),o}function u(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}t.wrap=c;var l="suspendedStart",f="suspendedYield",d="executing",p="completed",h={};function v(){}function m(){}function A(){}var g={};g[o]=function(){return this};var y=Object.getPrototypeOf,b=y&&y(y(S([])));b&&b!==n&&r.call(b,o)&&(g=b);var _=A.prototype=v.prototype=Object.create(g);function x(t){["next","throw","return"].forEach((function(e){t[e]=function(t){return this._invoke(e,t)}}))}function w(t){var e;this._invoke=function(n,i){function o(){return new Promise((function(e,o){!function e(n,i,o,a){var s=u(t[n],t,i);if("throw"!==s.type){var c=s.arg,l=c.value;return l&&"object"==typeof l&&r.call(l,"__await")?Promise.resolve(l.__await).then((function(t){e("next",t,o,a)}),(function(t){e("throw",t,o,a)})):Promise.resolve(l).then((function(t){c.value=t,o(c)}),(function(t){return e("throw",t,o,a)}))}a(s.arg)}(n,i,e,o)}))}return e=e?e.then(o,o):o()}}function C(t,n){var r=t.iterator[n.method];if(r===e){if(n.delegate=null,"throw"===n.method){if(t.iterator.return&&(n.method="return",n.arg=e,C(t,n),"throw"===n.method))return h;n.method="throw",n.arg=new TypeError("The iterator does not provide a 'throw' method")}return h}var i=u(r,t.iterator,n.arg);if("throw"===i.type)return n.method="throw",n.arg=i.arg,n.delegate=null,h;var o=i.arg;return o?o.done?(n[t.resultName]=o.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,h):o:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,h)}function k(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function T(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function E(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(k,this),this.reset(!0)}function S(t){if(t){var n=t[o];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var i=-1,a=function n(){for(;++i<t.length;)if(r.call(t,i))return n.value=t[i],n.done=!1,n;return n.value=e,n.done=!0,n};return a.next=a}}return{next:O}}function O(){return{value:e,done:!0}}return m.prototype=_.constructor=A,A.constructor=m,A[s]=m.displayName="GeneratorFunction",t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===m||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,A):(t.__proto__=A,s in t||(t[s]="GeneratorFunction")),t.prototype=Object.create(_),t},t.awrap=function(t){return{__await:t}},x(w.prototype),w.prototype[a]=function(){return this},t.AsyncIterator=w,t.async=function(e,n,r,i){var o=new w(c(e,n,r,i));return t.isGeneratorFunction(n)?o:o.next().then((function(t){return t.done?t.value:o.next()}))},x(_),_[s]="Generator",_[o]=function(){return this},_.toString=function(){return"[object Generator]"},t.keys=function(t){var e=[];for(var n in t)e.push(n);return e.reverse(),function n(){for(;e.length;){var r=e.pop();if(r in t)return n.value=r,n.done=!1,n}return n.done=!0,n}},t.values=S,E.prototype={constructor:E,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(T),!t)for(var n in this)"t"===n.charAt(0)&&r.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function i(r,i){return s.type="throw",s.arg=t,n.next=r,i&&(n.method="next",n.arg=e),!!i}for(var o=this.tryEntries.length-1;o>=0;--o){var a=this.tryEntries[o],s=a.completion;if("root"===a.tryLoc)return i("end");if(a.tryLoc<=this.prev){var c=r.call(a,"catchLoc"),u=r.call(a,"finallyLoc");if(c&&u){if(this.prev<a.catchLoc)return i(a.catchLoc,!0);if(this.prev<a.finallyLoc)return i(a.finallyLoc)}else if(c){if(this.prev<a.catchLoc)return i(a.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return i(a.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&r.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var o=i;break}}o&&("break"===t||"continue"===t)&&o.tryLoc<=e&&e<=o.finallyLoc&&(o=null);var a=o?o.completion:{};return a.type=t,a.arg=e,o?(this.method="next",this.next=o.finallyLoc,h):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),h},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),T(n),h}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var i=r.arg;T(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:S(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),h}},t}(t.exports);try{regeneratorRuntime=r}catch(t){Function("r","regeneratorRuntime = r")(r)}},function(t,e,n){t.exports=n(100)},function(t,e,n){"use strict";var r=n(4),i=n(68),o=n(102),a=n(74);function s(t){var e=new o(t),n=i(o.prototype.request,e);return r.extend(n,o.prototype,e),r.extend(n,e),n}var c=s(n(71));c.Axios=o,c.create=function(t){return s(a(c.defaults,t))},c.Cancel=n(75),c.CancelToken=n(115),c.isCancel=n(70),c.all=function(t){return Promise.all(t)},c.spread=n(116),t.exports=c,t.exports.default=c},function(t,e){ +/*! + * Determine if an object is a Buffer + * + * @author Feross Aboukhadijeh <https://feross.org> + * @license MIT + */ +t.exports=function(t){return null!=t&&null!=t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}},function(t,e,n){"use strict";var r=n(4),i=n(69),o=n(103),a=n(104),s=n(74);function c(t){this.defaults=t,this.interceptors={request:new o,response:new o}}c.prototype.request=function(t){"string"==typeof t?(t=arguments[1]||{}).url=arguments[0]:t=t||{},(t=s(this.defaults,t)).method=t.method?t.method.toLowerCase():"get";var e=[a,void 0],n=Promise.resolve(t);for(this.interceptors.request.forEach((function(t){e.unshift(t.fulfilled,t.rejected)})),this.interceptors.response.forEach((function(t){e.push(t.fulfilled,t.rejected)}));e.length;)n=n.then(e.shift(),e.shift());return n},c.prototype.getUri=function(t){return t=s(this.defaults,t),i(t.url,t.params,t.paramsSerializer).replace(/^\?/,"")},r.forEach(["delete","get","head","options"],(function(t){c.prototype[t]=function(e,n){return this.request(r.merge(n||{},{method:t,url:e}))}})),r.forEach(["post","put","patch"],(function(t){c.prototype[t]=function(e,n,i){return this.request(r.merge(i||{},{method:t,url:e,data:n}))}})),t.exports=c},function(t,e,n){"use strict";var r=n(4);function i(){this.handlers=[]}i.prototype.use=function(t,e){return this.handlers.push({fulfilled:t,rejected:e}),this.handlers.length-1},i.prototype.eject=function(t){this.handlers[t]&&(this.handlers[t]=null)},i.prototype.forEach=function(t){r.forEach(this.handlers,(function(e){null!==e&&t(e)}))},t.exports=i},function(t,e,n){"use strict";var r=n(4),i=n(105),o=n(70),a=n(71),s=n(113),c=n(114);function u(t){t.cancelToken&&t.cancelToken.throwIfRequested()}t.exports=function(t){return u(t),t.baseURL&&!s(t.url)&&(t.url=c(t.baseURL,t.url)),t.headers=t.headers||{},t.data=i(t.data,t.headers,t.transformRequest),t.headers=r.merge(t.headers.common||{},t.headers[t.method]||{},t.headers||{}),r.forEach(["delete","get","head","post","put","patch","common"],(function(e){delete t.headers[e]})),(t.adapter||a.adapter)(t).then((function(e){return u(t),e.data=i(e.data,e.headers,t.transformResponse),e}),(function(e){return o(e)||(u(t),e&&e.response&&(e.response.data=i(e.response.data,e.response.headers,t.transformResponse))),Promise.reject(e)}))}},function(t,e,n){"use strict";var r=n(4);t.exports=function(t,e,n){return r.forEach(n,(function(n){t=n(t,e)})),t}},function(t,e){var n,r,i=t.exports={};function o(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function s(t){if(n===setTimeout)return setTimeout(t,0);if((n===o||!n)&&setTimeout)return n=setTimeout,setTimeout(t,0);try{return n(t,0)}catch(e){try{return n.call(null,t,0)}catch(e){return n.call(this,t,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:o}catch(t){n=o}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(t){r=a}}();var c,u=[],l=!1,f=-1;function d(){l&&c&&(l=!1,c.length?u=c.concat(u):f=-1,u.length&&p())}function p(){if(!l){var t=s(d);l=!0;for(var e=u.length;e;){for(c=u,u=[];++f<e;)c&&c[f].run();f=-1,e=u.length}c=null,l=!1,function(t){if(r===clearTimeout)return clearTimeout(t);if((r===a||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(t);try{r(t)}catch(e){try{return r.call(null,t)}catch(e){return r.call(this,t)}}}(t)}}function h(t,e){this.fun=t,this.array=e}function v(){}i.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];u.push(new h(t,e)),1!==u.length||l||s(p)},h.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=v,i.addListener=v,i.once=v,i.off=v,i.removeListener=v,i.removeAllListeners=v,i.emit=v,i.prependListener=v,i.prependOnceListener=v,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}},function(t,e,n){"use strict";var r=n(4);t.exports=function(t,e){r.forEach(t,(function(n,r){r!==e&&r.toUpperCase()===e.toUpperCase()&&(t[e]=n,delete t[r])}))}},function(t,e,n){"use strict";var r=n(73);t.exports=function(t,e,n){var i=n.config.validateStatus;!i||i(n.status)?t(n):e(r("Request failed with status code "+n.status,n.config,null,n.request,n))}},function(t,e,n){"use strict";t.exports=function(t,e,n,r,i){return t.config=e,n&&(t.code=n),t.request=r,t.response=i,t.isAxiosError=!0,t.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},t}},function(t,e,n){"use strict";var r=n(4),i=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];t.exports=function(t){var e,n,o,a={};return t?(r.forEach(t.split("\n"),(function(t){if(o=t.indexOf(":"),e=r.trim(t.substr(0,o)).toLowerCase(),n=r.trim(t.substr(o+1)),e){if(a[e]&&i.indexOf(e)>=0)return;a[e]="set-cookie"===e?(a[e]?a[e]:[]).concat([n]):a[e]?a[e]+", "+n:n}})),a):a}},function(t,e,n){"use strict";var r=n(4);t.exports=r.isStandardBrowserEnv()?function(){var t,e=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function i(t){var r=t;return e&&(n.setAttribute("href",r),r=n.href),n.setAttribute("href",r),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return t=i(window.location.href),function(e){var n=r.isString(e)?i(e):e;return n.protocol===t.protocol&&n.host===t.host}}():function(){return!0}},function(t,e,n){"use strict";var r=n(4);t.exports=r.isStandardBrowserEnv()?{write:function(t,e,n,i,o,a){var s=[];s.push(t+"="+encodeURIComponent(e)),r.isNumber(n)&&s.push("expires="+new Date(n).toGMTString()),r.isString(i)&&s.push("path="+i),r.isString(o)&&s.push("domain="+o),!0===a&&s.push("secure"),document.cookie=s.join("; ")},read:function(t){var e=document.cookie.match(new RegExp("(^|;\\s*)("+t+")=([^;]*)"));return e?decodeURIComponent(e[3]):null},remove:function(t){this.write(t,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},function(t,e,n){"use strict";t.exports=function(t){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(t)}},function(t,e,n){"use strict";t.exports=function(t,e){return e?t.replace(/\/+$/,"")+"/"+e.replace(/^\/+/,""):t}},function(t,e,n){"use strict";var r=n(75);function i(t){if("function"!=typeof t)throw new TypeError("executor must be a function.");var e;this.promise=new Promise((function(t){e=t}));var n=this;t((function(t){n.reason||(n.reason=new r(t),e(n.reason))}))}i.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},i.source=function(){var t;return{token:new i((function(e){t=e})),cancel:t}},t.exports=i},function(t,e,n){"use strict";t.exports=function(t){return function(e){return t.apply(null,e)}}},function(t,e){var n,r;n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",r={rotl:function(t,e){return t<<e|t>>>32-e},rotr:function(t,e){return t<<32-e|t>>>e},endian:function(t){if(t.constructor==Number)return 16711935&r.rotl(t,8)|4278255360&r.rotl(t,24);for(var e=0;e<t.length;e++)t[e]=r.endian(t[e]);return t},randomBytes:function(t){for(var e=[];t>0;t--)e.push(Math.floor(256*Math.random()));return e},bytesToWords:function(t){for(var e=[],n=0,r=0;n<t.length;n++,r+=8)e[r>>>5]|=t[n]<<24-r%32;return e},wordsToBytes:function(t){for(var e=[],n=0;n<32*t.length;n+=8)e.push(t[n>>>5]>>>24-n%32&255);return e},bytesToHex:function(t){for(var e=[],n=0;n<t.length;n++)e.push((t[n]>>>4).toString(16)),e.push((15&t[n]).toString(16));return e.join("")},hexToBytes:function(t){for(var e=[],n=0;n<t.length;n+=2)e.push(parseInt(t.substr(n,2),16));return e},bytesToBase64:function(t){for(var e=[],r=0;r<t.length;r+=3)for(var i=t[r]<<16|t[r+1]<<8|t[r+2],o=0;o<4;o++)8*r+6*o<=8*t.length?e.push(n.charAt(i>>>6*(3-o)&63)):e.push("=");return e.join("")},base64ToBytes:function(t){t=t.replace(/[^A-Z0-9+\/]/gi,"");for(var e=[],r=0,i=0;r<t.length;i=++r%4)0!=i&&e.push((n.indexOf(t.charAt(r-1))&Math.pow(2,-2*i+8)-1)<<2*i|n.indexOf(t.charAt(r))>>>6-2*i);return e}},t.exports=r},function(t,e){function n(t){return!!t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)} +/*! + * Determine if an object is a Buffer + * + * @author Feross Aboukhadijeh <https://feross.org> + * @license MIT + */t.exports=function(t){return null!=t&&(n(t)||function(t){return"function"==typeof t.readFloatLE&&"function"==typeof t.slice&&n(t.slice(0,0))}(t)||!!t._isBuffer)}},function(t,e,n){"use strict";var r=n(29);n.n(r).a},function(t,e,n){e=t.exports=n(1)(!1);var r=n(8),i=r(n(9)),o=r(n(10)),a=r(n(11)),s=r(n(12));e.push([t.i,'@font-face{font-family:"iconfont-vue";src:url('+i+");src:url("+i+') format("embedded-opentype"),url('+o+') format("woff"),url('+a+') format("truetype"),url('+s+') format("svg")}.icon[data-v-6015a092]{font-style:normal;font-weight:400}.icon.arrow-left-double[data-v-6015a092]:before{font-family:"iconfont-vue";content:""}.icon.arrow-left[data-v-6015a092]:before{font-family:"iconfont-vue";content:""}.icon.arrow-right-double[data-v-6015a092]:before{font-family:"iconfont-vue";content:""}.icon.arrow-right[data-v-6015a092]:before{font-family:"iconfont-vue";content:""}.icon.close[data-v-6015a092]:before{font-family:"iconfont-vue";content:""}.icon.confirm-fade[data-v-6015a092]:before{font-family:"iconfont-vue";content:""}.icon.confirm[data-v-6015a092]:before{font-family:"iconfont-vue";content:""}.icon.menu[data-v-6015a092]:before{font-family:"iconfont-vue";content:""}.icon.more[data-v-6015a092]:before{font-family:"iconfont-vue";content:""}.icon.pause[data-v-6015a092]:before{font-family:"iconfont-vue";content:""}.icon.play[data-v-6015a092]:before{font-family:"iconfont-vue";content:""}.avatardiv[data-v-6015a092]{position:relative;display:inline-block}.avatardiv--unknown[data-v-6015a092]{position:relative;background-color:var(--color-text-maxcontrast)}.avatardiv--with-menu[data-v-6015a092]{cursor:pointer}.avatardiv--with-menu .icon-more[data-v-6015a092]{position:absolute;top:0;left:0;display:flex;align-items:center;justify-content:center;width:inherit;height:inherit;cursor:pointer;opacity:0;background:none;font-size:18px}.avatardiv--with-menu .icon-more[data-v-6015a092]:before{font-family:"iconfont-vue";font-style:normal;font-weight:400;content:""}.avatardiv--with-menu .icon-more[data-v-6015a092]::before{display:block}.avatardiv--with-menu:focus .icon-more[data-v-6015a092],.avatardiv--with-menu:hover .icon-more[data-v-6015a092]{opacity:1}.avatardiv--with-menu:focus img[data-v-6015a092],.avatardiv--with-menu:hover img[data-v-6015a092]{opacity:0}.avatardiv--with-menu .icon-more[data-v-6015a092],.avatardiv--with-menu img[data-v-6015a092]{transition:opacity var(--animation-quick)}.avatardiv>.unknown[data-v-6015a092]{position:absolute;top:0;left:0;display:block;width:100%;text-align:center;color:var(--color-main-background)}.avatardiv img[data-v-6015a092]{width:100%;height:100%}.avatardiv .avatardiv__status[data-v-6015a092]{position:absolute;top:22px;left:22px;width:10px;height:10px;border:1px solid rgba(255,255,255,0.5);background-clip:content-box}.avatardiv .avatardiv__status--positive[data-v-6015a092]{border-radius:50%;background-color:var(--color-success)}.avatardiv .avatardiv__status--negative[data-v-6015a092]{background-color:var(--color-error)}.avatardiv .avatardiv__status--neutral[data-v-6015a092]{border:none;background-color:transparent !important}.avatardiv .avatardiv__status--neutral svg[data-v-6015a092]{position:absolute;top:-3px;left:-2px}.avatardiv .avatardiv__status--neutral svg path[data-v-6015a092]{fill:#aaa}.avatardiv .popovermenu-wrapper[data-v-6015a092]{position:relative;display:inline-block}.avatardiv .popovermenu[data-v-6015a092]{display:block;margin:0;font-size:initial}\n',""])},function(t,e){function n(t){return(n="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})(t)}function r(e){return"function"==typeof Symbol&&"symbol"===n(Symbol.iterator)?t.exports=r=function(t){return n(t)}:t.exports=r=function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":n(t)},r(e)}t.exports=r},function(t,e,n){t.exports=function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,e),i.l=!0,i.exports}var n={};return e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:r})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="/",e(e.s=60)}([function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(t,e,n){var r=n(49)("wks"),i=n(30),o=n(0).Symbol,a="function"==typeof o;(t.exports=function(t){return r[t]||(r[t]=a&&o[t]||(a?o:i)("Symbol."+t))}).store=r},function(t,e,n){var r=n(5);t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},function(t,e,n){var r=n(0),i=n(10),o=n(8),a=n(6),s=n(11),c=function(t,e,n){var u,l,f,d,p=t&c.F,h=t&c.G,v=t&c.S,m=t&c.P,A=t&c.B,g=h?r:v?r[e]||(r[e]={}):(r[e]||{}).prototype,y=h?i:i[e]||(i[e]={}),b=y.prototype||(y.prototype={});for(u in h&&(n=e),n)f=((l=!p&&g&&void 0!==g[u])?g:n)[u],d=A&&l?s(f,r):m&&"function"==typeof f?s(Function.call,f):f,g&&a(g,u,f,t&c.U),y[u]!=f&&o(y,u,d),m&&b[u]!=f&&(b[u]=f)};r.core=i,c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,t.exports=c},function(t,e,n){t.exports=!n(7)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,e,n){var r=n(0),i=n(8),o=n(12),a=n(30)("src"),s=Function.toString,c=(""+s).split("toString");n(10).inspectSource=function(t){return s.call(t)},(t.exports=function(t,e,n,s){var u="function"==typeof n;u&&(o(n,"name")||i(n,"name",e)),t[e]!==n&&(u&&(o(n,a)||i(n,a,t[e]?""+t[e]:c.join(String(e)))),t===r?t[e]=n:s?t[e]?t[e]=n:i(t,e,n):(delete t[e],i(t,e,n)))})(Function.prototype,"toString",(function(){return"function"==typeof this&&this[a]||s.call(this)}))},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,n){var r=n(13),i=n(25);t.exports=n(4)?function(t,e,n){return r.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,e){var n=t.exports={version:"2.5.7"};"number"==typeof __e&&(__e=n)},function(t,e,n){var r=n(14);t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,i){return t.call(e,n,r,i)}}return function(){return t.apply(e,arguments)}}},function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},function(t,e,n){var r=n(2),i=n(41),o=n(29),a=Object.defineProperty;e.f=n(4)?Object.defineProperty:function(t,e,n){if(r(t),e=o(e,!0),r(n),i)try{return a(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e){t.exports={}},function(t,e){t.exports=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t}},function(t,e,n){"use strict";var r=n(7);t.exports=function(t,e){return!!t&&r((function(){e?t.call(null,(function(){}),1):t.call(null)}))}},function(t,e,n){var r=n(23),i=n(16);t.exports=function(t){return r(i(t))}},function(t,e,n){var r=n(53),i=Math.min;t.exports=function(t){return t>0?i(r(t),9007199254740991):0}},function(t,e,n){var r=n(11),i=n(23),o=n(28),a=n(19),s=n(64);t.exports=function(t,e){var n=1==t,c=2==t,u=3==t,l=4==t,f=6==t,d=5==t||f,p=e||s;return function(e,s,h){for(var v,m,A=o(e),g=i(A),y=r(s,h,3),b=a(g.length),_=0,x=n?p(e,b):c?p(e,0):void 0;b>_;_++)if((d||_ in g)&&(m=y(v=g[_],_,A),t))if(n)x[_]=m;else if(m)switch(t){case 3:return!0;case 5:return v;case 6:return _;case 2:x.push(v)}else if(l)return!1;return f?-1:u||l?l:x}}},function(t,e,n){var r=n(5),i=n(0).document,o=r(i)&&r(i.createElement);t.exports=function(t){return o?i.createElement(t):{}}},function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,e,n){var r=n(9);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==r(t)?t.split(""):Object(t)}},function(t,e){t.exports=!1},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,n){var r=n(13).f,i=n(12),o=n(1)("toStringTag");t.exports=function(t,e,n){t&&!i(t=n?t:t.prototype,o)&&r(t,o,{configurable:!0,value:e})}},function(t,e,n){var r=n(49)("keys"),i=n(30);t.exports=function(t){return r[t]||(r[t]=i(t))}},function(t,e,n){var r=n(16);t.exports=function(t){return Object(r(t))}},function(t,e,n){var r=n(5);t.exports=function(t,e){if(!r(t))return t;var n,i;if(e&&"function"==typeof(n=t.toString)&&!r(i=n.call(t)))return i;if("function"==typeof(n=t.valueOf)&&!r(i=n.call(t)))return i;if(!e&&"function"==typeof(n=t.toString)&&!r(i=n.call(t)))return i;throw TypeError("Can't convert object to primitive value")}},function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}},function(t,e,n){"use strict";var r=n(0),i=n(12),o=n(9),a=n(67),s=n(29),c=n(7),u=n(77).f,l=n(45).f,f=n(13).f,d=n(51).trim,p=r.Number,h=p,v=p.prototype,m="Number"==o(n(44)(v)),A="trim"in String.prototype,g=function(t){var e=s(t,!1);if("string"==typeof e&&e.length>2){var n,r,i,o=(e=A?e.trim():d(e,3)).charCodeAt(0);if(43===o||45===o){if(88===(n=e.charCodeAt(2))||120===n)return NaN}else if(48===o){switch(e.charCodeAt(1)){case 66:case 98:r=2,i=49;break;case 79:case 111:r=8,i=55;break;default:return+e}for(var a,c=e.slice(2),u=0,l=c.length;u<l;u++)if((a=c.charCodeAt(u))<48||a>i)return NaN;return parseInt(c,r)}}return+e};if(!p(" 0o1")||!p("0b1")||p("+0x1")){p=function(t){var e=arguments.length<1?0:t,n=this;return n instanceof p&&(m?c((function(){v.valueOf.call(n)})):"Number"!=o(n))?a(new h(g(e)),n,p):g(e)};for(var y,b=n(4)?u(h):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),_=0;b.length>_;_++)i(h,y=b[_])&&!i(p,y)&&f(p,y,l(h,y));p.prototype=v,v.constructor=p,n(6)(r,"Number",p)}},function(t,e,n){"use strict";function r(t){return!(0===t||(!Array.isArray(t)||0!==t.length)&&t)}function i(t,e,n,r){return t.filter((function(t){return function(t,e){return void 0===t&&(t="undefined"),null===t&&(t="null"),!1===t&&(t="false"),-1!==t.toString().toLowerCase().indexOf(e.trim())}(r(t,n),e)}))}function o(t){return t.filter((function(t){return!t.$isLabel}))}function a(t,e){return function(n){return n.reduce((function(n,r){return r[t]&&r[t].length?(n.push({$groupLabel:r[e],$isLabel:!0}),n.concat(r[t])):n}),[])}}function s(t,e,r,o,a){return function(s){return s.map((function(s){var c;if(!s[r])return console.warn("Options passed to vue-multiselect do not contain groups, despite the config."),[];var u=i(s[r],t,e,a);return u.length?(c={},n.i(d.a)(c,o,s[o]),n.i(d.a)(c,r,u),c):[]}))}}var c=n(59),u=n(54),l=(n.n(u),n(95)),f=(n.n(l),n(31)),d=(n.n(f),n(58)),p=n(91),h=(n.n(p),n(98)),v=(n.n(h),n(92)),m=(n.n(v),n(88)),A=(n.n(m),n(97)),g=(n.n(A),n(89)),y=(n.n(g),n(96)),b=(n.n(y),n(93)),_=(n.n(b),n(90)),x=(n.n(_),function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return function(t){return e.reduce((function(t,e){return e(t)}),t)}});e.a={data:function(){return{search:"",isOpen:!1,preferredOpenDirection:"below",optimizedHeight:this.maxHeight}},props:{internalSearch:{type:Boolean,default:!0},options:{type:Array,required:!0},multiple:{type:Boolean,default:!1},value:{type:null,default:function(){return[]}},trackBy:{type:String},label:{type:String},searchable:{type:Boolean,default:!0},clearOnSelect:{type:Boolean,default:!0},hideSelected:{type:Boolean,default:!1},placeholder:{type:String,default:"Select option"},allowEmpty:{type:Boolean,default:!0},resetAfter:{type:Boolean,default:!1},closeOnSelect:{type:Boolean,default:!0},customLabel:{type:Function,default:function(t,e){return r(t)?"":e?t[e]:t}},taggable:{type:Boolean,default:!1},tagPlaceholder:{type:String,default:"Press enter to create a tag"},tagPosition:{type:String,default:"top"},max:{type:[Number,Boolean],default:!1},id:{default:null},optionsLimit:{type:Number,default:1e3},groupValues:{type:String},groupLabel:{type:String},groupSelect:{type:Boolean,default:!1},blockKeys:{type:Array,default:function(){return[]}},preserveSearch:{type:Boolean,default:!1},preselectFirst:{type:Boolean,default:!1}},mounted:function(){!this.multiple&&this.max&&console.warn("[Vue-Multiselect warn]: Max prop should not be used when prop Multiple equals false."),this.preselectFirst&&!this.internalValue.length&&this.options.length&&this.select(this.filteredOptions[0])},computed:{internalValue:function(){return this.value||0===this.value?Array.isArray(this.value)?this.value:[this.value]:[]},filteredOptions:function(){var t=this.search||"",e=t.toLowerCase().trim(),n=this.options.concat();return n=this.internalSearch?this.groupValues?this.filterAndFlat(n,e,this.label):i(n,e,this.label,this.customLabel):this.groupValues?a(this.groupValues,this.groupLabel)(n):n,n=this.hideSelected?n.filter(function(t){return function(){return!t.apply(void 0,arguments)}}(this.isSelected)):n,this.taggable&&e.length&&!this.isExistingOption(e)&&("bottom"===this.tagPosition?n.push({isTag:!0,label:t}):n.unshift({isTag:!0,label:t})),n.slice(0,this.optionsLimit)},valueKeys:function(){var t=this;return this.trackBy?this.internalValue.map((function(e){return e[t.trackBy]})):this.internalValue},optionKeys:function(){var t=this;return(this.groupValues?this.flatAndStrip(this.options):this.options).map((function(e){return t.customLabel(e,t.label).toString().toLowerCase()}))},currentOptionLabel:function(){return this.multiple?this.searchable?"":this.placeholder:this.internalValue.length?this.getOptionLabel(this.internalValue[0]):this.searchable?"":this.placeholder}},watch:{internalValue:function(){this.resetAfter&&this.internalValue.length&&(this.search="",this.$emit("input",this.multiple?[]:null))},search:function(){this.$emit("search-change",this.search,this.id)}},methods:{getValue:function(){return this.multiple?this.internalValue:0===this.internalValue.length?null:this.internalValue[0]},filterAndFlat:function(t,e,n){return x(s(e,n,this.groupValues,this.groupLabel,this.customLabel),a(this.groupValues,this.groupLabel))(t)},flatAndStrip:function(t){return x(a(this.groupValues,this.groupLabel),o)(t)},updateSearch:function(t){this.search=t},isExistingOption:function(t){return!!this.options&&this.optionKeys.indexOf(t)>-1},isSelected:function(t){var e=this.trackBy?t[this.trackBy]:t;return this.valueKeys.indexOf(e)>-1},isOptionDisabled:function(t){return!!t.$isDisabled},getOptionLabel:function(t){if(r(t))return"";if(t.isTag)return t.label;if(t.$isLabel)return t.$groupLabel;var e=this.customLabel(t,this.label);return r(e)?"":e},select:function(t,e){if(t.$isLabel&&this.groupSelect)this.selectGroup(t);else if(!(-1!==this.blockKeys.indexOf(e)||this.disabled||t.$isDisabled||t.$isLabel)&&(!this.max||!this.multiple||this.internalValue.length!==this.max)&&("Tab"!==e||this.pointerDirty)){if(t.isTag)this.$emit("tag",t.label,this.id),this.search="",this.closeOnSelect&&!this.multiple&&this.deactivate();else{if(this.isSelected(t))return void("Tab"!==e&&this.removeElement(t));this.$emit("select",t,this.id),this.multiple?this.$emit("input",this.internalValue.concat([t]),this.id):this.$emit("input",t,this.id),this.clearOnSelect&&(this.search="")}this.closeOnSelect&&this.deactivate()}},selectGroup:function(t){var e=this,n=this.options.find((function(n){return n[e.groupLabel]===t.$groupLabel}));if(n)if(this.wholeGroupSelected(n)){this.$emit("remove",n[this.groupValues],this.id);var r=this.internalValue.filter((function(t){return-1===n[e.groupValues].indexOf(t)}));this.$emit("input",r,this.id)}else{var i=n[this.groupValues].filter((function(t){return!(e.isOptionDisabled(t)||e.isSelected(t))}));this.$emit("select",i,this.id),this.$emit("input",this.internalValue.concat(i),this.id)}},wholeGroupSelected:function(t){var e=this;return t[this.groupValues].every((function(t){return e.isSelected(t)||e.isOptionDisabled(t)}))},wholeGroupDisabled:function(t){return t[this.groupValues].every(this.isOptionDisabled)},removeElement:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(!this.disabled&&!t.$isDisabled){if(!this.allowEmpty&&this.internalValue.length<=1)return void this.deactivate();var r="object"===n.i(c.a)(t)?this.valueKeys.indexOf(t[this.trackBy]):this.valueKeys.indexOf(t);if(this.$emit("remove",t,this.id),this.multiple){var i=this.internalValue.slice(0,r).concat(this.internalValue.slice(r+1));this.$emit("input",i,this.id)}else this.$emit("input",null,this.id);this.closeOnSelect&&e&&this.deactivate()}},removeLastElement:function(){-1===this.blockKeys.indexOf("Delete")&&0===this.search.length&&Array.isArray(this.internalValue)&&this.internalValue.length&&this.removeElement(this.internalValue[this.internalValue.length-1],!1)},activate:function(){var t=this;this.isOpen||this.disabled||(this.adjustPosition(),this.groupValues&&0===this.pointer&&this.filteredOptions.length&&(this.pointer=1),this.isOpen=!0,this.searchable?(this.preserveSearch||(this.search=""),this.$nextTick((function(){return t.$refs.search.focus()}))):this.$el.focus(),this.$emit("open",this.id))},deactivate:function(){this.isOpen&&(this.isOpen=!1,this.searchable?this.$refs.search.blur():this.$el.blur(),this.preserveSearch||(this.search=""),this.$emit("close",this.getValue(),this.id))},toggle:function(){this.isOpen?this.deactivate():this.activate()},adjustPosition:function(){if("undefined"!=typeof window){var t=this.$el.getBoundingClientRect().top,e=window.innerHeight-this.$el.getBoundingClientRect().bottom;e>this.maxHeight||e>t||"below"===this.openDirection||"bottom"===this.openDirection?(this.preferredOpenDirection="below",this.optimizedHeight=Math.min(e-40,this.maxHeight)):(this.preferredOpenDirection="above",this.optimizedHeight=Math.min(t-40,this.maxHeight))}}}}},function(t,e,n){"use strict";var r=n(54),i=(n.n(r),n(31));n.n(i),e.a={data:function(){return{pointer:0,pointerDirty:!1}},props:{showPointer:{type:Boolean,default:!0},optionHeight:{type:Number,default:40}},computed:{pointerPosition:function(){return this.pointer*this.optionHeight},visibleElements:function(){return this.optimizedHeight/this.optionHeight}},watch:{filteredOptions:function(){this.pointerAdjust()},isOpen:function(){this.pointerDirty=!1}},methods:{optionHighlight:function(t,e){return{"multiselect__option--highlight":t===this.pointer&&this.showPointer,"multiselect__option--selected":this.isSelected(e)}},groupHighlight:function(t,e){var n=this;if(!this.groupSelect)return["multiselect__option--group","multiselect__option--disabled"];var r=this.options.find((function(t){return t[n.groupLabel]===e.$groupLabel}));return r&&!this.wholeGroupDisabled(r)?["multiselect__option--group",{"multiselect__option--highlight":t===this.pointer&&this.showPointer},{"multiselect__option--group-selected":this.wholeGroupSelected(r)}]:"multiselect__option--disabled"},addPointerElement:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"Enter",e=t.key;this.filteredOptions.length>0&&this.select(this.filteredOptions[this.pointer],e),this.pointerReset()},pointerForward:function(){this.pointer<this.filteredOptions.length-1&&(this.pointer++,this.$refs.list.scrollTop<=this.pointerPosition-(this.visibleElements-1)*this.optionHeight&&(this.$refs.list.scrollTop=this.pointerPosition-(this.visibleElements-1)*this.optionHeight),this.filteredOptions[this.pointer]&&this.filteredOptions[this.pointer].$isLabel&&!this.groupSelect&&this.pointerForward()),this.pointerDirty=!0},pointerBackward:function(){this.pointer>0?(this.pointer--,this.$refs.list.scrollTop>=this.pointerPosition&&(this.$refs.list.scrollTop=this.pointerPosition),this.filteredOptions[this.pointer]&&this.filteredOptions[this.pointer].$isLabel&&!this.groupSelect&&this.pointerBackward()):this.filteredOptions[this.pointer]&&this.filteredOptions[0].$isLabel&&!this.groupSelect&&this.pointerForward(),this.pointerDirty=!0},pointerReset:function(){this.closeOnSelect&&(this.pointer=0,this.$refs.list&&(this.$refs.list.scrollTop=0))},pointerAdjust:function(){this.pointer>=this.filteredOptions.length-1&&(this.pointer=this.filteredOptions.length?this.filteredOptions.length-1:0),this.filteredOptions.length>0&&this.filteredOptions[this.pointer].$isLabel&&!this.groupSelect&&this.pointerForward()},pointerSet:function(t){this.pointer=t,this.pointerDirty=!0}}}},function(t,e,n){"use strict";var r=n(36),i=n(74),o=n(15),a=n(18);t.exports=n(72)(Array,"Array",(function(t,e){this._t=a(t),this._i=0,this._k=e}),(function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,i(1)):i(0,"keys"==e?n:"values"==e?t[n]:[n,t[n]])}),"values"),o.Arguments=o.Array,r("keys"),r("values"),r("entries")},function(t,e,n){"use strict";var r=n(31),i=(n.n(r),n(32)),o=n(33);e.a={name:"vue-multiselect",mixins:[i.a,o.a],props:{name:{type:String,default:""},selectLabel:{type:String,default:"Press enter to select"},selectGroupLabel:{type:String,default:"Press enter to select group"},selectedLabel:{type:String,default:"Selected"},deselectLabel:{type:String,default:"Press enter to remove"},deselectGroupLabel:{type:String,default:"Press enter to deselect group"},showLabels:{type:Boolean,default:!0},limit:{type:Number,default:99999},maxHeight:{type:Number,default:300},limitText:{type:Function,default:function(t){return"and ".concat(t," more")}},loading:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},openDirection:{type:String,default:""},showNoOptions:{type:Boolean,default:!0},showNoResults:{type:Boolean,default:!0},tabindex:{type:Number,default:0}},computed:{isSingleLabelVisible:function(){return(this.singleValue||0===this.singleValue)&&(!this.isOpen||!this.searchable)&&!this.visibleValues.length},isPlaceholderVisible:function(){return!(this.internalValue.length||this.searchable&&this.isOpen)},visibleValues:function(){return this.multiple?this.internalValue.slice(0,this.limit):[]},singleValue:function(){return this.internalValue[0]},deselectLabelText:function(){return this.showLabels?this.deselectLabel:""},deselectGroupLabelText:function(){return this.showLabels?this.deselectGroupLabel:""},selectLabelText:function(){return this.showLabels?this.selectLabel:""},selectGroupLabelText:function(){return this.showLabels?this.selectGroupLabel:""},selectedLabelText:function(){return this.showLabels?this.selectedLabel:""},inputStyle:function(){if(this.searchable||this.multiple&&this.value&&this.value.length)return this.isOpen?{width:"100%"}:{width:"0",position:"absolute",padding:"0"}},contentStyle:function(){return this.options.length?{display:"inline-block"}:{display:"block"}},isAbove:function(){return"above"===this.openDirection||"top"===this.openDirection||"below"!==this.openDirection&&"bottom"!==this.openDirection&&"above"===this.preferredOpenDirection},showSearchInput:function(){return this.searchable&&(!this.hasSingleSelectedSlot||!this.visibleSingleValue&&0!==this.visibleSingleValue||this.isOpen)}}}},function(t,e,n){var r=n(1)("unscopables"),i=Array.prototype;null==i[r]&&n(8)(i,r,{}),t.exports=function(t){i[r][t]=!0}},function(t,e,n){var r=n(18),i=n(19),o=n(85);t.exports=function(t){return function(e,n,a){var s,c=r(e),u=i(c.length),l=o(a,u);if(t&&n!=n){for(;u>l;)if((s=c[l++])!=s)return!0}else for(;u>l;l++)if((t||l in c)&&c[l]===n)return t||l||0;return!t&&-1}}},function(t,e,n){var r=n(9),i=n(1)("toStringTag"),o="Arguments"==r(function(){return arguments}());t.exports=function(t){var e,n,a;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=function(t,e){try{return t[e]}catch(t){}}(e=Object(t),i))?n:o?r(e):"Object"==(a=r(e))&&"function"==typeof e.callee?"Arguments":a}},function(t,e,n){"use strict";var r=n(2);t.exports=function(){var t=r(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},function(t,e,n){var r=n(0).document;t.exports=r&&r.documentElement},function(t,e,n){t.exports=!n(4)&&!n(7)((function(){return 7!=Object.defineProperty(n(21)("div"),"a",{get:function(){return 7}}).a}))},function(t,e,n){var r=n(9);t.exports=Array.isArray||function(t){return"Array"==r(t)}},function(t,e,n){"use strict";function r(t){var e,n;this.promise=new t((function(t,r){if(void 0!==e||void 0!==n)throw TypeError("Bad Promise constructor");e=t,n=r})),this.resolve=i(e),this.reject=i(n)}var i=n(14);t.exports.f=function(t){return new r(t)}},function(t,e,n){var r=n(2),i=n(76),o=n(22),a=n(27)("IE_PROTO"),s=function(){},c=function(){var t,e=n(21)("iframe"),r=o.length;for(e.style.display="none",n(40).appendChild(e),e.src="javascript:",(t=e.contentWindow.document).open(),t.write("<script>document.F=Object<\/script>"),t.close(),c=t.F;r--;)delete c.prototype[o[r]];return c()};t.exports=Object.create||function(t,e){var n;return null!==t?(s.prototype=r(t),n=new s,s.prototype=null,n[a]=t):n=c(),void 0===e?n:i(n,e)}},function(t,e,n){var r=n(79),i=n(25),o=n(18),a=n(29),s=n(12),c=n(41),u=Object.getOwnPropertyDescriptor;e.f=n(4)?u:function(t,e){if(t=o(t),e=a(e,!0),c)try{return u(t,e)}catch(t){}if(s(t,e))return i(!r.f.call(t,e),t[e])}},function(t,e,n){var r=n(12),i=n(18),o=n(37)(!1),a=n(27)("IE_PROTO");t.exports=function(t,e){var n,s=i(t),c=0,u=[];for(n in s)n!=a&&r(s,n)&&u.push(n);for(;e.length>c;)r(s,n=e[c++])&&(~o(u,n)||u.push(n));return u}},function(t,e,n){var r=n(46),i=n(22);t.exports=Object.keys||function(t){return r(t,i)}},function(t,e,n){var r=n(2),i=n(5),o=n(43);t.exports=function(t,e){if(r(t),i(e)&&e.constructor===t)return e;var n=o.f(t);return(0,n.resolve)(e),n.promise}},function(t,e,n){var r=n(10),i=n(0),o=i["__core-js_shared__"]||(i["__core-js_shared__"]={});(t.exports=function(t,e){return o[t]||(o[t]=void 0!==e?e:{})})("versions",[]).push({version:r.version,mode:n(24)?"pure":"global",copyright:"© 2018 Denis Pushkarev (zloirock.ru)"})},function(t,e,n){var r=n(2),i=n(14),o=n(1)("species");t.exports=function(t,e){var n,a=r(t).constructor;return void 0===a||null==(n=r(a)[o])?e:i(n)}},function(t,e,n){var r=n(3),i=n(16),o=n(7),a=n(84),s="["+a+"]",c=RegExp("^"+s+s+"*"),u=RegExp(s+s+"*$"),l=function(t,e,n){var i={},s=o((function(){return!!a[t]()||"​…"!="​…"[t]()})),c=i[t]=s?e(f):a[t];n&&(i[n]=c),r(r.P+r.F*s,"String",i)},f=l.trim=function(t,e){return t=String(i(t)),1&e&&(t=t.replace(c,"")),2&e&&(t=t.replace(u,"")),t};t.exports=l},function(t,e,n){var r,i,o,a=n(11),s=n(68),c=n(40),u=n(21),l=n(0),f=l.process,d=l.setImmediate,p=l.clearImmediate,h=l.MessageChannel,v=l.Dispatch,m=0,A={},g=function(){var t=+this;if(A.hasOwnProperty(t)){var e=A[t];delete A[t],e()}},y=function(t){g.call(t.data)};d&&p||(d=function(t){for(var e=[],n=1;arguments.length>n;)e.push(arguments[n++]);return A[++m]=function(){s("function"==typeof t?t:Function(t),e)},r(m),m},p=function(t){delete A[t]},"process"==n(9)(f)?r=function(t){f.nextTick(a(g,t,1))}:v&&v.now?r=function(t){v.now(a(g,t,1))}:h?(o=(i=new h).port2,i.port1.onmessage=y,r=a(o.postMessage,o,1)):l.addEventListener&&"function"==typeof postMessage&&!l.importScripts?(r=function(t){l.postMessage(t+"","*")},l.addEventListener("message",y,!1)):r="onreadystatechange"in u("script")?function(t){c.appendChild(u("script")).onreadystatechange=function(){c.removeChild(this),g.call(t)}}:function(t){setTimeout(a(g,t,1),0)}),t.exports={set:d,clear:p}},function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},function(t,e,n){"use strict";var r=n(3),i=n(20)(5),o=!0;"find"in[]&&Array(1).find((function(){o=!1})),r(r.P+r.F*o,"Array",{find:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),n(36)("find")},function(t,e,n){"use strict";var r,i,o,a,s=n(24),c=n(0),u=n(11),l=n(38),f=n(3),d=n(5),p=n(14),h=n(61),v=n(66),m=n(50),A=n(52).set,g=n(75)(),y=n(43),b=n(80),_=n(86),x=n(48),w=c.TypeError,C=c.process,k=C&&C.versions,T=k&&k.v8||"",E=c.Promise,S="process"==l(C),O=function(){},M=i=y.f,D=!!function(){try{var t=E.resolve(1),e=(t.constructor={})[n(1)("species")]=function(t){t(O,O)};return(S||"function"==typeof PromiseRejectionEvent)&&t.then(O)instanceof e&&0!==T.indexOf("6.6")&&-1===_.indexOf("Chrome/66")}catch(t){}}(),I=function(t){var e;return!(!d(t)||"function"!=typeof(e=t.then))&&e},B=function(t,e){if(!t._n){t._n=!0;var n=t._c;g((function(){for(var r=t._v,i=1==t._s,o=0;n.length>o;)!function(e){var n,o,a,s=i?e.ok:e.fail,c=e.resolve,u=e.reject,l=e.domain;try{s?(i||(2==t._h&&L(t),t._h=1),!0===s?n=r:(l&&l.enter(),n=s(r),l&&(l.exit(),a=!0)),n===e.promise?u(w("Promise-chain cycle")):(o=I(n))?o.call(n,c,u):c(n)):u(r)}catch(t){l&&!a&&l.exit(),u(t)}}(n[o++]);t._c=[],t._n=!1,e&&!t._h&&N(t)}))}},N=function(t){A.call(c,(function(){var e,n,r,i=t._v,o=j(t);if(o&&(e=b((function(){S?C.emit("unhandledRejection",i,t):(n=c.onunhandledrejection)?n({promise:t,reason:i}):(r=c.console)&&r.error&&r.error("Unhandled promise rejection",i)})),t._h=S||j(t)?2:1),t._a=void 0,o&&e.e)throw e.v}))},j=function(t){return 1!==t._h&&0===(t._a||t._c).length},L=function(t){A.call(c,(function(){var e;S?C.emit("rejectionHandled",t):(e=c.onrejectionhandled)&&e({promise:t,reason:t._v})}))},P=function(t){var e=this;e._d||(e._d=!0,(e=e._w||e)._v=t,e._s=2,e._a||(e._a=e._c.slice()),B(e,!0))},$=function(t){var e,n=this;if(!n._d){n._d=!0,n=n._w||n;try{if(n===t)throw w("Promise can't be resolved itself");(e=I(t))?g((function(){var r={_w:n,_d:!1};try{e.call(t,u($,r,1),u(P,r,1))}catch(t){P.call(r,t)}})):(n._v=t,n._s=1,B(n,!1))}catch(t){P.call({_w:n,_d:!1},t)}}};D||(E=function(t){h(this,E,"Promise","_h"),p(t),r.call(this);try{t(u($,this,1),u(P,this,1))}catch(t){P.call(this,t)}},(r=function(t){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1}).prototype=n(81)(E.prototype,{then:function(t,e){var n=M(m(this,E));return n.ok="function"!=typeof t||t,n.fail="function"==typeof e&&e,n.domain=S?C.domain:void 0,this._c.push(n),this._a&&this._a.push(n),this._s&&B(this,!1),n.promise},catch:function(t){return this.then(void 0,t)}}),o=function(){var t=new r;this.promise=t,this.resolve=u($,t,1),this.reject=u(P,t,1)},y.f=M=function(t){return t===E||t===a?new o(t):i(t)}),f(f.G+f.W+f.F*!D,{Promise:E}),n(26)(E,"Promise"),n(83)("Promise"),a=n(10).Promise,f(f.S+f.F*!D,"Promise",{reject:function(t){var e=M(this);return(0,e.reject)(t),e.promise}}),f(f.S+f.F*(s||!D),"Promise",{resolve:function(t){return x(s&&this===a?E:this,t)}}),f(f.S+f.F*!(D&&n(73)((function(t){E.all(t).catch(O)}))),"Promise",{all:function(t){var e=this,n=M(e),r=n.resolve,i=n.reject,o=b((function(){var n=[],o=0,a=1;v(t,!1,(function(t){var s=o++,c=!1;n.push(void 0),a++,e.resolve(t).then((function(t){c||(c=!0,n[s]=t,--a||r(n))}),i)})),--a||r(n)}));return o.e&&i(o.v),n.promise},race:function(t){var e=this,n=M(e),r=n.reject,i=b((function(){v(t,!1,(function(t){e.resolve(t).then(n.resolve,r)}))}));return i.e&&r(i.v),n.promise}})},function(t,e,n){"use strict";var r=n(3),i=n(10),o=n(0),a=n(50),s=n(48);r(r.P+r.R,"Promise",{finally:function(t){var e=a(this,i.Promise||o.Promise),n="function"==typeof t;return this.then(n?function(n){return s(e,t()).then((function(){return n}))}:t,n?function(n){return s(e,t()).then((function(){throw n}))}:t)}})},function(t,e,n){"use strict";var r=n(35),i=n(101),o=n(100)(r.a,i.a,!1,(function(t){n(99)}),null,null);e.a=o.exports},function(t,e,n){"use strict";e.a=function(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}},function(t,e,n){"use strict";function r(t){return(r="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})(t)}function i(t){return(i="function"==typeof Symbol&&"symbol"===r(Symbol.iterator)?function(t){return r(t)}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":r(t)})(t)}e.a=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(34),i=(n.n(r),n(55)),o=(n.n(i),n(56)),a=(n.n(o),n(57)),s=n(32),c=n(33);n.d(e,"Multiselect",(function(){return a.a})),n.d(e,"multiselectMixin",(function(){return s.a})),n.d(e,"pointerMixin",(function(){return c.a})),e.default=a.a},function(t,e){t.exports=function(t,e,n,r){if(!(t instanceof e)||void 0!==r&&r in t)throw TypeError(n+": incorrect invocation!");return t}},function(t,e,n){var r=n(14),i=n(28),o=n(23),a=n(19);t.exports=function(t,e,n,s,c){r(e);var u=i(t),l=o(u),f=a(u.length),d=c?f-1:0,p=c?-1:1;if(n<2)for(;;){if(d in l){s=l[d],d+=p;break}if(d+=p,c?d<0:f<=d)throw TypeError("Reduce of empty array with no initial value")}for(;c?d>=0:f>d;d+=p)d in l&&(s=e(s,l[d],d,u));return s}},function(t,e,n){var r=n(5),i=n(42),o=n(1)("species");t.exports=function(t){var e;return i(t)&&("function"!=typeof(e=t.constructor)||e!==Array&&!i(e.prototype)||(e=void 0),r(e)&&null===(e=e[o])&&(e=void 0)),void 0===e?Array:e}},function(t,e,n){var r=n(63);t.exports=function(t,e){return new(r(t))(e)}},function(t,e,n){"use strict";var r=n(8),i=n(6),o=n(7),a=n(16),s=n(1);t.exports=function(t,e,n){var c=s(t),u=n(a,c,""[t]),l=u[0],f=u[1];o((function(){var e={};return e[c]=function(){return 7},7!=""[t](e)}))&&(i(String.prototype,t,l),r(RegExp.prototype,c,2==e?function(t,e){return f.call(t,this,e)}:function(t){return f.call(t,this)}))}},function(t,e,n){var r=n(11),i=n(70),o=n(69),a=n(2),s=n(19),c=n(87),u={},l={};(e=t.exports=function(t,e,n,f,d){var p,h,v,m,A=d?function(){return t}:c(t),g=r(n,f,e?2:1),y=0;if("function"!=typeof A)throw TypeError(t+" is not iterable!");if(o(A)){for(p=s(t.length);p>y;y++)if((m=e?g(a(h=t[y])[0],h[1]):g(t[y]))===u||m===l)return m}else for(v=A.call(t);!(h=v.next()).done;)if((m=i(v,g,h.value,e))===u||m===l)return m}).BREAK=u,e.RETURN=l},function(t,e,n){var r=n(5),i=n(82).set;t.exports=function(t,e,n){var o,a=e.constructor;return a!==n&&"function"==typeof a&&(o=a.prototype)!==n.prototype&&r(o)&&i&&i(t,o),t}},function(t,e){t.exports=function(t,e,n){var r=void 0===n;switch(e.length){case 0:return r?t():t.call(n);case 1:return r?t(e[0]):t.call(n,e[0]);case 2:return r?t(e[0],e[1]):t.call(n,e[0],e[1]);case 3:return r?t(e[0],e[1],e[2]):t.call(n,e[0],e[1],e[2]);case 4:return r?t(e[0],e[1],e[2],e[3]):t.call(n,e[0],e[1],e[2],e[3])}return t.apply(n,e)}},function(t,e,n){var r=n(15),i=n(1)("iterator"),o=Array.prototype;t.exports=function(t){return void 0!==t&&(r.Array===t||o[i]===t)}},function(t,e,n){var r=n(2);t.exports=function(t,e,n,i){try{return i?e(r(n)[0],n[1]):e(n)}catch(e){var o=t.return;throw void 0!==o&&r(o.call(t)),e}}},function(t,e,n){"use strict";var r=n(44),i=n(25),o=n(26),a={};n(8)(a,n(1)("iterator"),(function(){return this})),t.exports=function(t,e,n){t.prototype=r(a,{next:i(1,n)}),o(t,e+" Iterator")}},function(t,e,n){"use strict";var r=n(24),i=n(3),o=n(6),a=n(8),s=n(15),c=n(71),u=n(26),l=n(78),f=n(1)("iterator"),d=!([].keys&&"next"in[].keys()),p=function(){return this};t.exports=function(t,e,n,h,v,m,A){c(n,e,h);var g,y,b,_=function(t){if(!d&&t in k)return k[t];switch(t){case"keys":case"values":return function(){return new n(this,t)}}return function(){return new n(this,t)}},x=e+" Iterator",w="values"==v,C=!1,k=t.prototype,T=k[f]||k["@@iterator"]||v&&k[v],E=T||_(v),S=v?w?_("entries"):E:void 0,O="Array"==e&&k.entries||T;if(O&&(b=l(O.call(new t)))!==Object.prototype&&b.next&&(u(b,x,!0),r||"function"==typeof b[f]||a(b,f,p)),w&&T&&"values"!==T.name&&(C=!0,E=function(){return T.call(this)}),r&&!A||!d&&!C&&k[f]||a(k,f,E),s[e]=E,s[x]=p,v)if(g={values:w?E:_("values"),keys:m?E:_("keys"),entries:S},A)for(y in g)y in k||o(k,y,g[y]);else i(i.P+i.F*(d||C),e,g);return g}},function(t,e,n){var r=n(1)("iterator"),i=!1;try{var o=[7][r]();o.return=function(){i=!0},Array.from(o,(function(){throw 2}))}catch(t){}t.exports=function(t,e){if(!e&&!i)return!1;var n=!1;try{var o=[7],a=o[r]();a.next=function(){return{done:n=!0}},o[r]=function(){return a},t(o)}catch(t){}return n}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e,n){var r=n(0),i=n(52).set,o=r.MutationObserver||r.WebKitMutationObserver,a=r.process,s=r.Promise,c="process"==n(9)(a);t.exports=function(){var t,e,n,u=function(){var r,i;for(c&&(r=a.domain)&&r.exit();t;){i=t.fn,t=t.next;try{i()}catch(r){throw t?n():e=void 0,r}}e=void 0,r&&r.enter()};if(c)n=function(){a.nextTick(u)};else if(!o||r.navigator&&r.navigator.standalone)if(s&&s.resolve){var l=s.resolve(void 0);n=function(){l.then(u)}}else n=function(){i.call(r,u)};else{var f=!0,d=document.createTextNode("");new o(u).observe(d,{characterData:!0}),n=function(){d.data=f=!f}}return function(r){var i={fn:r,next:void 0};e&&(e.next=i),t||(t=i,n()),e=i}}},function(t,e,n){var r=n(13),i=n(2),o=n(47);t.exports=n(4)?Object.defineProperties:function(t,e){i(t);for(var n,a=o(e),s=a.length,c=0;s>c;)r.f(t,n=a[c++],e[n]);return t}},function(t,e,n){var r=n(46),i=n(22).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,i)}},function(t,e,n){var r=n(12),i=n(28),o=n(27)("IE_PROTO"),a=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=i(t),r(t,o)?t[o]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?a:null}},function(t,e){e.f={}.propertyIsEnumerable},function(t,e){t.exports=function(t){try{return{e:!1,v:t()}}catch(t){return{e:!0,v:t}}}},function(t,e,n){var r=n(6);t.exports=function(t,e,n){for(var i in e)r(t,i,e[i],n);return t}},function(t,e,n){var r=n(5),i=n(2),o=function(t,e){if(i(t),!r(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,e,r){try{(r=n(11)(Function.call,n(45).f(Object.prototype,"__proto__").set,2))(t,[]),e=!(t instanceof Array)}catch(t){e=!0}return function(t,n){return o(t,n),e?t.__proto__=n:r(t,n),t}}({},!1):void 0),check:o}},function(t,e,n){"use strict";var r=n(0),i=n(13),o=n(4),a=n(1)("species");t.exports=function(t){var e=r[t];o&&e&&!e[a]&&i.f(e,a,{configurable:!0,get:function(){return this}})}},function(t,e){t.exports="\t\n\v\f\r   ᠎              \u2028\u2029\ufeff"},function(t,e,n){var r=n(53),i=Math.max,o=Math.min;t.exports=function(t,e){return(t=r(t))<0?i(t+e,0):o(t,e)}},function(t,e,n){var r=n(0).navigator;t.exports=r&&r.userAgent||""},function(t,e,n){var r=n(38),i=n(1)("iterator"),o=n(15);t.exports=n(10).getIteratorMethod=function(t){if(null!=t)return t[i]||t["@@iterator"]||o[r(t)]}},function(t,e,n){"use strict";var r=n(3),i=n(20)(2);r(r.P+r.F*!n(17)([].filter,!0),"Array",{filter:function(t){return i(this,t,arguments[1])}})},function(t,e,n){"use strict";var r=n(3),i=n(37)(!1),o=[].indexOf,a=!!o&&1/[1].indexOf(1,-0)<0;r(r.P+r.F*(a||!n(17)(o)),"Array",{indexOf:function(t){return a?o.apply(this,arguments)||0:i(this,t,arguments[1])}})},function(t,e,n){var r=n(3);r(r.S,"Array",{isArray:n(42)})},function(t,e,n){"use strict";var r=n(3),i=n(20)(1);r(r.P+r.F*!n(17)([].map,!0),"Array",{map:function(t){return i(this,t,arguments[1])}})},function(t,e,n){"use strict";var r=n(3),i=n(62);r(r.P+r.F*!n(17)([].reduce,!0),"Array",{reduce:function(t){return i(this,t,arguments.length,arguments[1],!1)}})},function(t,e,n){var r=Date.prototype,i=r.toString,o=r.getTime;new Date(NaN)+""!="Invalid Date"&&n(6)(r,"toString",(function(){var t=o.call(this);return t==t?i.call(this):"Invalid Date"}))},function(t,e,n){n(4)&&"g"!=/./g.flags&&n(13).f(RegExp.prototype,"flags",{configurable:!0,get:n(39)})},function(t,e,n){n(65)("search",1,(function(t,e,n){return[function(n){"use strict";var r=t(this),i=null==n?void 0:n[e];return void 0!==i?i.call(n,r):new RegExp(n)[e](String(r))},n]}))},function(t,e,n){"use strict";n(94);var r=n(2),i=n(39),o=n(4),a=/./.toString,s=function(t){n(6)(RegExp.prototype,"toString",t,!0)};n(7)((function(){return"/a/b"!=a.call({source:"a",flags:"b"})}))?s((function(){var t=r(this);return"/".concat(t.source,"/","flags"in t?t.flags:!o&&t instanceof RegExp?i.call(t):void 0)})):"toString"!=a.name&&s((function(){return a.call(this)}))},function(t,e,n){"use strict";n(51)("trim",(function(t){return function(){return t(this,3)}}))},function(t,e,n){for(var r=n(34),i=n(47),o=n(6),a=n(0),s=n(8),c=n(15),u=n(1),l=u("iterator"),f=u("toStringTag"),d=c.Array,p={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},h=i(p),v=0;v<h.length;v++){var m,A=h[v],g=p[A],y=a[A],b=y&&y.prototype;if(b&&(b[l]||s(b,l,d),b[f]||s(b,f,A),c[A]=d,g))for(m in r)b[m]||o(b,m,r[m],!0)}},function(t,e){},function(t,e){t.exports=function(t,e,n,r,i,o){var a,s=t=t||{},c=typeof t.default;"object"!==c&&"function"!==c||(a=t,s=t.default);var u,l="function"==typeof s?s.options:s;if(e&&(l.render=e.render,l.staticRenderFns=e.staticRenderFns,l._compiled=!0),n&&(l.functional=!0),i&&(l._scopeId=i),o?(u=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),r&&r.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(o)},l._ssrRegister=u):r&&(u=r),u){var f=l.functional,d=f?l.render:l.beforeCreate;f?(l._injectStyles=u,l.render=function(t,e){return u.call(e),d(t,e)}):l.beforeCreate=d?[].concat(d,u):[u]}return{esModule:a,exports:s,options:l}}},function(t,e,n){"use strict";e.a={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"multiselect",class:{"multiselect--active":t.isOpen,"multiselect--disabled":t.disabled,"multiselect--above":t.isAbove},attrs:{tabindex:t.searchable?-1:t.tabindex},on:{focus:function(e){t.activate()},blur:function(e){!t.searchable&&t.deactivate()},keydown:[function(e){return"button"in e||!t._k(e.keyCode,"down",40,e.key,["Down","ArrowDown"])?e.target!==e.currentTarget?null:(e.preventDefault(),void t.pointerForward()):null},function(e){return"button"in e||!t._k(e.keyCode,"up",38,e.key,["Up","ArrowUp"])?e.target!==e.currentTarget?null:(e.preventDefault(),void t.pointerBackward()):null}],keypress:function(e){return"button"in e||!t._k(e.keyCode,"enter",13,e.key,"Enter")||!t._k(e.keyCode,"tab",9,e.key,"Tab")?(e.stopPropagation(),e.target!==e.currentTarget?null:void t.addPointerElement(e)):null},keyup:function(e){if(!("button"in e)&&t._k(e.keyCode,"esc",27,e.key,"Escape"))return null;t.deactivate()}}},[t._t("caret",[n("div",{staticClass:"multiselect__select",on:{mousedown:function(e){e.preventDefault(),e.stopPropagation(),t.toggle()}}})],{toggle:t.toggle}),t._v(" "),t._t("clear",null,{search:t.search}),t._v(" "),n("div",{ref:"tags",staticClass:"multiselect__tags"},[t._t("selection",[n("div",{directives:[{name:"show",rawName:"v-show",value:t.visibleValues.length>0,expression:"visibleValues.length > 0"}],staticClass:"multiselect__tags-wrap"},[t._l(t.visibleValues,(function(e,r){return[t._t("tag",[n("span",{key:r,staticClass:"multiselect__tag"},[n("span",{domProps:{textContent:t._s(t.getOptionLabel(e))}}),t._v(" "),n("i",{staticClass:"multiselect__tag-icon",attrs:{"aria-hidden":"true",tabindex:"1"},on:{keypress:function(n){if(!("button"in n)&&t._k(n.keyCode,"enter",13,n.key,"Enter"))return null;n.preventDefault(),t.removeElement(e)},mousedown:function(n){n.preventDefault(),t.removeElement(e)}}})])],{option:e,search:t.search,remove:t.removeElement})]}))],2),t._v(" "),t.internalValue&&t.internalValue.length>t.limit?[t._t("limit",[n("strong",{staticClass:"multiselect__strong",domProps:{textContent:t._s(t.limitText(t.internalValue.length-t.limit))}})])]:t._e()],{search:t.search,remove:t.removeElement,values:t.visibleValues,isOpen:t.isOpen}),t._v(" "),n("transition",{attrs:{name:"multiselect__loading"}},[t._t("loading",[n("div",{directives:[{name:"show",rawName:"v-show",value:t.loading,expression:"loading"}],staticClass:"multiselect__spinner"})])],2),t._v(" "),t.searchable?n("input",{ref:"search",staticClass:"multiselect__input",style:t.inputStyle,attrs:{name:t.name,id:t.id,type:"text",autocomplete:"nope",placeholder:t.placeholder,disabled:t.disabled,tabindex:t.tabindex},domProps:{value:t.search},on:{input:function(e){t.updateSearch(e.target.value)},focus:function(e){e.preventDefault(),t.activate()},blur:function(e){e.preventDefault(),t.deactivate()},keyup:function(e){if(!("button"in e)&&t._k(e.keyCode,"esc",27,e.key,"Escape"))return null;t.deactivate()},keydown:[function(e){if(!("button"in e)&&t._k(e.keyCode,"down",40,e.key,["Down","ArrowDown"]))return null;e.preventDefault(),t.pointerForward()},function(e){if(!("button"in e)&&t._k(e.keyCode,"up",38,e.key,["Up","ArrowUp"]))return null;e.preventDefault(),t.pointerBackward()},function(e){if(!("button"in e)&&t._k(e.keyCode,"delete",[8,46],e.key,["Backspace","Delete"]))return null;e.stopPropagation(),t.removeLastElement()}],keypress:function(e){return"button"in e||!t._k(e.keyCode,"enter",13,e.key,"Enter")?(e.preventDefault(),e.stopPropagation(),e.target!==e.currentTarget?null:void t.addPointerElement(e)):null}}}):t._e(),t._v(" "),t.isSingleLabelVisible?n("span",{staticClass:"multiselect__single",on:{mousedown:function(e){return e.preventDefault(),t.toggle(e)}}},[t._t("singleLabel",[[t._v(t._s(t.currentOptionLabel))]],{option:t.singleValue})],2):t._e(),t._v(" "),t.isPlaceholderVisible?n("span",{staticClass:"multiselect__placeholder",on:{mousedown:function(e){return e.preventDefault(),t.toggle(e)}}},[t._t("placeholder",[t._v("\n "+t._s(t.placeholder)+"\n ")])],2):t._e()],2),t._v(" "),n("transition",{attrs:{name:"multiselect"}},[n("div",{directives:[{name:"show",rawName:"v-show",value:t.isOpen,expression:"isOpen"}],ref:"list",staticClass:"multiselect__content-wrapper",style:{maxHeight:t.optimizedHeight+"px"},attrs:{tabindex:"-1"},on:{focus:t.activate,mousedown:function(t){t.preventDefault()}}},[n("ul",{staticClass:"multiselect__content",style:t.contentStyle},[t._t("beforeList"),t._v(" "),t.multiple&&t.max===t.internalValue.length?n("li",[n("span",{staticClass:"multiselect__option"},[t._t("maxElements",[t._v("Maximum of "+t._s(t.max)+" options selected. First remove a selected option to select another.")])],2)]):t._e(),t._v(" "),!t.max||t.internalValue.length<t.max?t._l(t.filteredOptions,(function(e,r){return n("li",{key:r,staticClass:"multiselect__element"},[e&&(e.$isLabel||e.$isDisabled)?t._e():n("span",{staticClass:"multiselect__option",class:t.optionHighlight(r,e),attrs:{"data-select":e&&e.isTag?t.tagPlaceholder:t.selectLabelText,"data-selected":t.selectedLabelText,"data-deselect":t.deselectLabelText},on:{click:function(n){n.stopPropagation(),t.select(e)},mouseenter:function(e){if(e.target!==e.currentTarget)return null;t.pointerSet(r)}}},[t._t("option",[n("span",[t._v(t._s(t.getOptionLabel(e)))])],{option:e,search:t.search})],2),t._v(" "),e&&(e.$isLabel||e.$isDisabled)?n("span",{staticClass:"multiselect__option",class:t.groupHighlight(r,e),attrs:{"data-select":t.groupSelect&&t.selectGroupLabelText,"data-deselect":t.groupSelect&&t.deselectGroupLabelText},on:{mouseenter:function(e){if(e.target!==e.currentTarget)return null;t.groupSelect&&t.pointerSet(r)},mousedown:function(n){n.preventDefault(),t.selectGroup(e)}}},[t._t("option",[n("span",[t._v(t._s(t.getOptionLabel(e)))])],{option:e,search:t.search})],2):t._e()])})):t._e(),t._v(" "),n("li",{directives:[{name:"show",rawName:"v-show",value:t.showNoResults&&0===t.filteredOptions.length&&t.search&&!t.loading,expression:"showNoResults && (filteredOptions.length === 0 && search && !loading)"}]},[n("span",{staticClass:"multiselect__option"},[t._t("noResult",[t._v("No elements found. Consider changing the search query.")],{search:t.search})],2)]),t._v(" "),n("li",{directives:[{name:"show",rawName:"v-show",value:t.showNoOptions&&0===t.options.length&&!t.search&&!t.loading,expression:"showNoOptions && (options.length === 0 && !search && !loading)"}]},[n("span",{staticClass:"multiselect__option"},[t._t("noOptions",[t._v("List is empty.")])],2)]),t._v(" "),t._t("afterList")],2)])])],2)},staticRenderFns:[]}}])},function(t,e,n){"use strict";n.r(e), +/** + * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +e.default={data:function(){return{isFullscreen:this._isFullscreen()}},beforeMount:function(){window.addEventListener("resize",this._onResize)},beforeDestroy:function(){window.removeEventListener("resize",this._onResize)},methods:{_onResize:function(){this.isFullscreen=this._isFullscreen()},_isFullscreen:function(){return window.outerHeight===screen.height}}}},function(t,e,n){"use strict";n.r(e), +/** + * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +e.default={data:function(){return{isMobile:this._isMobile()}},beforeMount:function(){window.addEventListener("resize",this._onResize)},beforeDestroy:function(){window.removeEventListener("resize",this._onResize)},methods:{_onResize:function(){this.isMobile=this._isMobile()},_isMobile:function(){return document.documentElement.clientWidth<768}}}},function(t,e,n){"use strict";n.r(e);var r=n(23),i=n(121),o=n.n(i),a=n(34),s=n.n(a),c={methods:{highlightText:function(t,e){return e.length?t.replace(new RegExp(e,"gi"),"<strong>".concat(e,"</strong>")):t}}},u={name:"AvatarSelectOption",components:{Avatar:n(64).default},mixins:[c],props:{desc:{type:String,default:""},displayName:{type:String,required:!0},icon:{type:String,default:""},user:{type:String,default:""},isNoUser:{type:Boolean,default:!1},search:{type:String,default:""}},computed:{highlightedDisplayName:function(){return this.highlightText(s()(this.displayName),this.search)},highlightedDesc:function(){return this.highlightText(s()(this.desc),this.search)}}},l=(n(175),n(0)),f=n(88),d=n.n(f),p=Object(l.a)(u,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("span",{staticClass:"option"},[n("Avatar",{staticClass:"option__avatar",attrs:{"display-name":t.displayName,user:t.user,"is-no-user":t.isNoUser,"disable-menu":!0,"disable-tooltip":!0}}),t._v(" "),n("div",{staticClass:"option__desc"},[n("span",{staticClass:"option__desc--lineone",domProps:{innerHTML:t._s(t.highlightedDisplayName)}}),t._v(" "),""!==t.desc?n("span",{staticClass:"option__desc--linetwo",domProps:{innerHTML:t._s(t.highlightedDesc)}}):t._e()]),t._v(" "),""!==t.icon?n("span",{staticClass:"icon option__icon",class:t.icon}):t._e()],1)}),[],!1,null,"30d8da34",null);"function"==typeof d.a&&d()(p);var h=p.exports,v={name:"EllipsisedOption",mixins:[c],props:{option:{type:[String,Object],required:!0,default:""},label:{type:String,default:""},search:{type:String,default:""}},computed:{name:function(){return this.$parent.getOptionLabel(this.option)},needsTruncate:function(){return this.name&&this.name.length>=10},part1:function(){if(this.needsTruncate){var t=Math.min(Math.floor(this.name.length/2),10);return this.name.substr(0,this.name.length-t)}return this.name},part2:function(){if(this.needsTruncate){var t=Math.min(Math.floor(this.name.length/2),10);return this.name.substr(this.name.length-t)}return""},highlightedPart1:function(){return this.highlightText(s()(this.part1),this.search)},highlightedPart2:function(){return this.highlightText(s()(this.part2),this.search)}}},m=(n(177),Object(l.a)(v,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"name-parts",attrs:{title:t.name}},[n("span",{staticClass:"name-parts__first",domProps:{innerHTML:t._s(t.highlightedPart1)}}),t._v(" "),t.part2?n("span",{staticClass:"name-parts__last",domProps:{innerHTML:t._s(t.highlightedPart2)}}):t._e()])}),[],!1,null,"c4325954",null).exports),A=n(6),g=n(122),y={name:"Multiselect",components:{AvatarSelectOption:h,EllipsisedOption:m,VueMultiselect:n.n(g).a},directives:{tooltip:A.default},inheritAttrs:!1,props:{value:{default:function(){return[]}},multiple:{type:Boolean,default:!1},limit:{type:Number,default:99999},label:{type:String,default:""},trackBy:{type:String,default:""},userSelect:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},autoLimit:{type:Boolean,default:!0},tagWidth:{type:Number,default:150,validator:function(t){return t>0}}},data:function(){return{elWidth:0}},computed:{maxOptions:function(){if(this.autoLimit&&this.elWidth>0&&0!==this.tagWidth){var t=Math.floor(this.elWidth/this.tagWidth);return t>0?t:1}return this.limit?this.limit:9999},limitString:function(){return"+".concat(this.value.length-this.maxOptions)}},watch:{value:function(){this.updateWidth()}},mounted:function(){this.updateWidth(),window.addEventListener("resize",this.updateWidth)},beforeDestroy:function(){window.removeEventListener("resize",this.updateWidth)},methods:{formatLimitTitle:function(t){var e=this;if(Array.isArray(t)&&t.length>0){var n=t;return"object"===o()(t[0])&&(n=t.map((function(t){return t[e.label]}))),n.slice(this.maxOptions).join(", ")}return""},updateWidth:function(){this.$el&&(this.elWidth=this.$el.querySelector(".multiselect__tags-wrap").offsetWidth-10)}}},b=n(89),_=n.n(b),x=Object(l.a)(y,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("VueMultiselect",t._g(t._b({class:[{"icon-loading-small":t.loading},t.multiple?"multiselect--multiple":"multiselect--single"],attrs:{value:t.value,limit:t.maxOptions,"close-on-select":!t.multiple,multiple:t.multiple,label:t.label,"track-by":t.trackBy,"tag-placeholder":"create"},on:{"update:value":function(e){return t.$emit("update:value",t.value)}},scopedSlots:t._u([{key:"option",fn:function(e){return[t.userSelect&&!t.$scopedSlots.option?n("AvatarSelectOption",t._b({attrs:{search:e.search}},"AvatarSelectOption",e.option,!1)):t.$scopedSlots.option?t._t("option",null,null,e):n("EllipsisedOption",{attrs:{option:e.option,search:e.search,label:t.label}})]}},t.multiple?{key:"limit",fn:function(){return[n("span",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.formatLimitTitle(t.value),expression:"formatLimitTitle(value)",modifiers:{auto:!0}}],staticClass:"multiselect__limit"},[t._v("\n\t\t\t"+t._s(t.limitString)+"\n\t\t")])]},proxy:!0}:null,t._l(t.$scopedSlots,(function(e,n){return{key:n,fn:function(e){return[t._t(n,null,null,e)]}}}))],null,!0)},"VueMultiselect",t.$attrs,!1),t.$listeners))}),[],!1,null,null,null);"function"==typeof _.a&&_()(x);var w=x.exports;n(179),n.d(e,"Multiselect",(function(){return w})), +/** + * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +Object(r.a)(w),e.default=w},function(e,n,r){"use strict";r.r(n);var i=r(23),o=r(40),a=r.n(o),s=r(30),c=r(65),u=r(6); +/** + * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */function l(t,e){var n,r,i,o=e;this.start=function(){i=!0,r=new Date,n=setTimeout(t,o)},this.pause=function(){i=!1,clearTimeout(n),o-=new Date-r},this.clear=function(){i=!1,clearTimeout(n),o=0},this.getTimeLeft=function(){return i&&(this.pause(),this.start()),o},this.getStateRunning=function(){return i},this.start()}var f={name:"Modal",components:{Actions:s.default,ActionButton:c.default},directives:{tooltip:u.default},props:{title:{type:String,default:""},hasPrevious:{type:Boolean,default:!1},hasNext:{type:Boolean,default:!1},outTransition:{type:Boolean,default:!1},enableSlideshow:{type:Boolean,default:!1},clearViewDelay:{type:Number,default:5e3},slideshowDelay:{type:Number,default:3e3},slideshowPaused:{type:Boolean,default:!1},enableSwipe:{type:Boolean,default:!0},spreadNavigation:{type:Boolean,default:!1},size:{type:String,default:"normal",validator:function(t){return-1!==["normal","large","full"].indexOf(t)}},canClose:{type:Boolean,default:!0}},data:function(){return{mc:null,showModal:!1,clearView:!1,clearViewTimeout:null,playing:!1,slideshowTimeout:null}},computed:{modalTransitionName:function(){return"modal-".concat(this.outTransition?"out":"in")},playPauseTitle:function(){return this.playing?t("core","Pause slideshow"):t("core","Start slideshow")}},watch:{slideshowPaused:function(t){this.slideshowTimeout&&(t?this.slideshowTimeout.pause():this.slideshowTimeout.start())}},beforeMount:function(){window.addEventListener("keydown",this.handleKeydown)},beforeDestroy:function(){window.removeEventListener("keydown",this.handleKeydown)},mounted:function(){var t=this;this.showModal=!0,this.handleMouseMove(),this.mc=new a.a(this.$refs.mask),this.mc.on("swipeleft swiperight",(function(e){t.handleSwipe(e)})),document.body.insertBefore(this.$el,document.body.lastChild)},unmounted:function(){this.mc.off("swipeleft swiperight"),this.mc.destroy()},methods:{previous:function(t){this.hasPrevious&&(t&&this.resetSlideshow(),this.$emit("previous",t))},next:function(t){this.hasNext&&(t&&this.resetSlideshow(),this.$emit("next",t))},close:function(t){var e=this;this.canClose&&(this.showModal=!1,setTimeout((function(){e.$emit("close",t)}),300))},handleKeydown:function(t){switch(t.keyCode){case 37:this.previous(t);break;case 13:case 39:this.next(t);break;case 27:this.close(t)}},handleSwipe:function(t){this.enableSwipe&&("swipeleft"===t.type?this.next(t):"swiperight"===t.type&&this.previous(t))},handleMouseMove:function(){var t=this;this.clearViewDelay>0&&(this.clearView=!1,clearTimeout(this.clearViewTimeout),this.clearViewTimeout=setTimeout((function(){t.clearView=!0}),this.clearViewDelay))},togglePlayPause:function(){this.playing=!this.playing,this.playing?this.handleSlideshow():this.clearSlideshowTimeout()},resetSlideshow:function(){this.playing=!this.playing,this.clearSlideshowTimeout(),this.$nextTick((function(){this.togglePlayPause()}))},handleSlideshow:function(){var t=this;this.playing=!0,this.hasNext?this.slideshowTimeout=new l((function(){t.next(),t.handleSlideshow()}),this.slideshowDelay):(this.playing=!1,this.clearSlideshowTimeout())},clearSlideshowTimeout:function(){this.slideshowTimeout&&this.slideshowTimeout.clear()}}},d=(r(173),r(0)),p=r(87),h=r.n(p),v=Object(d.a)(f,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("transition",{attrs:{name:"fade"}},[n("div",{ref:"mask",staticClass:"modal-mask",on:{click:t.handleMouseMove,mousemove:t.handleMouseMove,touchmove:t.handleMouseMove}},[n("transition",{attrs:{name:"fade-visibility"}},[n("div",{directives:[{name:"show",rawName:"v-show",value:!t.clearView,expression:"!clearView"}],staticClass:"modal-header",class:{invisible:t.clearView}},[""!==t.title.trim()?n("div",{staticClass:"modal-title"},[t._v("\n\t\t\t\t\t"+t._s(t.title)+"\n\t\t\t\t")]):t._e(),t._v(" "),n("div",{staticClass:"icons-menu"},[n("Actions",{staticClass:"header-actions"},[t._t("actions")],2),t._v(" "),t.hasNext&&t.enableSlideshow?n("button",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.playPauseTitle,expression:"playPauseTitle",modifiers:{auto:!0}}],staticClass:"play-pause",class:{"play-pause--paused":t.slideshowPaused},on:{click:t.togglePlayPause}},[n("div",{class:[t.playing?"icon-pause":"icon-play"]},[n("span",{staticClass:"hidden-visually"},[t._v("\n\t\t\t\t\t\t\t\t"+t._s(t.playPauseTitle)+"\n\t\t\t\t\t\t\t")])]),t._v(" "),t.playing?n("svg",{staticClass:"progress-ring",attrs:{height:"50",width:"50"}},[n("circle",{staticClass:"progress-ring__circle",attrs:{stroke:"white","stroke-width":"2",fill:"transparent",r:"15",cx:"25",cy:"25"}})]):t._e()]):t._e(),t._v(" "),t.canClose?n("Actions",{staticClass:"header-close"},[n("ActionButton",{attrs:{icon:"icon-close"},on:{click:t.close}},[t._v("\n\t\t\t\t\t\t\t"+t._s(t.t("core","Close"))+"\n\t\t\t\t\t\t")])],1):t._e()],1)])]),t._v(" "),n("transition",{attrs:{name:t.modalTransitionName}},[n("div",{directives:[{name:"show",rawName:"v-show",value:t.showModal,expression:"showModal"}],staticClass:"modal-wrapper",class:["modal-wrapper--"+t.size,t.spreadNavigation?"modal-wrapper--spread-navigation":""],on:{click:function(e){return e.target!==e.currentTarget?null:t.close(e)}}},[n("transition",{attrs:{name:"fade-visibility"}},[n("a",{directives:[{name:"show",rawName:"v-show",value:t.hasPrevious&&!t.clearView,expression:"hasPrevious && !clearView"}],staticClass:"prev",class:{invisible:t.clearView||!t.hasPrevious},on:{click:t.previous}},[n("div",{staticClass:"icon icon-previous"},[n("span",{staticClass:"hidden-visually"},[t._v("\n\t\t\t\t\t\t\t\t"+t._s(t.t("core","Previous"))+"\n\t\t\t\t\t\t\t")])])])]),t._v(" "),n("div",{staticClass:"modal-container"},[t._t("default")],2),t._v(" "),n("transition",{attrs:{name:"fade-visibility"}},[n("a",{directives:[{name:"show",rawName:"v-show",value:t.hasNext&&!t.clearView,expression:"hasNext && !clearView"}],staticClass:"next",class:{invisible:t.clearView||!t.hasNext},on:{click:t.next}},[n("div",{staticClass:"icon icon-next"},[n("span",{staticClass:"hidden-visually"},[t._v("\n\t\t\t\t\t\t\t\t"+t._s(t.t("core","Next"))+"\n\t\t\t\t\t\t\t")])])])])],1)])],1)])}),[],!1,null,"9c792ef2",null);"function"==typeof h.a&&h()(v);var m=v.exports;r.d(n,"Modal",(function(){return m})), +/** + * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +Object(i.a)(m),n.default=m},function(t,e,n){"use strict";n.r(e);var r=n(7),i=n(17),o={name:"ActionCheckbox",mixins:[r.a],props:{id:{type:String,default:function(){return"action-"+Object(i.a)()},validator:function(t){return""!==t.trim()}},checked:{type:Boolean,default:!1},value:{type:[String,Number],default:""},disabled:{type:Boolean,default:!1}},computed:{isFocusable:function(){return!this.disabled}},methods:{checkInput:function(t){this.$refs.label.click()},onChange:function(t){this.$emit("change",t),this.$refs.checkbox.checked?this.$emit("check",!0):this.$emit("uncheck",!0),this.$emit("update:checked",this.$refs.checkbox.checked)}}},a=(n(145),n(0)),s=n(83),c=n.n(s),u=Object(a.a)(o,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("li",{class:{"action--disabled":t.disabled}},[n("span",{staticClass:"action-checkbox"},[n("input",{ref:"checkbox",staticClass:"checkbox action-checkbox__checkbox",class:{focusable:t.isFocusable},attrs:{id:t.id,disabled:t.disabled,type:"checkbox"},domProps:{checked:t.checked,value:t.value},on:{keydown:function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.checkInput(e))},change:t.onChange}}),t._v(" "),n("label",{ref:"label",staticClass:"action-checkbox__label",attrs:{for:t.id}},[t._v(t._s(t.text))]),t._v(" "),t._e()],2)])}),[],!1,null,"f874e42c",null);"function"==typeof c.a&&c()(u);var l=u.exports;n.d(e,"ActionCheckbox",(function(){return l})), +/** + * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +e.default=l},function(t,e,n){"use strict";n.r(e);var r=n(7),i=n(17),o={name:"ActionInput",components:{DatetimePicker:n(66).default},mixins:[r.a],props:{id:{type:String,default:function(){return"action-"+Object(i.a)()},validator:function(t){return""!==t.trim()}},icon:{type:String,default:"",required:!0},type:{type:String,default:"text",validator:function(t){return["date","datetime-local","month","number","password","search","tel","text","time","url","week"].indexOf(t)>-1}},value:{type:String,default:""},disabled:{type:Boolean,default:!1}},computed:{isIconUrl:function(){try{return new URL(this.icon)}catch(t){return!1}},isDatePickerType:function(){switch(this.type){case"date":case"month":case"time":return this.type;case"datetime-local":return"datetime"}return!1},isFocusable:function(){return!this.disabled}},methods:{onInput:function(t){this.$emit("input",t),this.$emit("update:value",t.target?t.target.value:t)},onSubmit:function(t){if(t.preventDefault(),t.stopPropagation(),this.disabled)return!1;this.$emit("submit",t)},onChange:function(t){this.$emit("change",t)}}},a=(n(147),n(0)),s=n(84),c=n.n(s),u=Object(a.a)(o,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("li",{class:{"action--disabled":t.disabled}},[n("span",{staticClass:"action-input",class:{"action-input--picker":t.isDatePickerType,"action-input-picker--disabled":t.disabled}},[n("span",{staticClass:"action-input__icon",class:[t.isIconUrl?"action-input__icon--url":t.icon],style:{backgroundImage:t.isIconUrl?"url("+t.icon+")":null}}),t._v(" "),n("form",{ref:"form",staticClass:"action-input__form",attrs:{disabled:t.disabled},on:{submit:function(e){return e.preventDefault(),t.onSubmit(e)}}},[t.isDatePickerType?n("DatetimePicker",t._b({staticClass:"action-input__picker",attrs:{value:t.value,placeholder:t.text,disabled:t.disabled,type:t.isDatePickerType,"input-class":["mx-input",{focusable:t.isFocusable}]},on:{input:t.onInput,change:t.onChange}},"DatetimePicker",t.$attrs,!1)):[n("input",{staticClass:"action-input__submit",attrs:{id:t.id,type:"submit"}}),t._v(" "),n("input",t._b({staticClass:"action-input__input",class:{focusable:t.isFocusable},attrs:{type:t.type,placeholder:t.text,disabled:t.disabled},domProps:{value:t.value},on:{input:t.onInput,change:t.onChange}},"input",t.$attrs,!1)),t._v(" "),n("label",{directives:[{name:"show",rawName:"v-show",value:!t.disabled,expression:"!disabled"}],staticClass:"action-input__label",attrs:{for:t.id}})]],2)])])}),[],!1,null,"44d356e8",null);"function"==typeof c.a&&c()(u);var l=u.exports;n.d(e,"ActionInput",(function(){return l})), +/** + * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +e.default=l},function(t,e,n){"use strict";n.r(e);var r={name:"ActionLink",mixins:[n(14).a],props:{href:{type:String,default:"#",required:!0,validator:function(t){try{return new URL(t)}catch(e){return t.startsWith("#")||t.startsWith("/")}}},download:{type:String,default:""},target:{type:String,default:"_self",validator:function(t){return["_blank","_self","_parent","_top"].indexOf(t)>-1}}}},i=(n(149),n(0)),o=n(85),a=n.n(o),s=Object(i.a)(r,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("li",[n("a",{staticClass:"action-link focusable",attrs:{download:t.download,href:t.href,target:t.target,rel:"noreferrer noopener"},on:{click:t.onClick}},[n("span",{staticClass:"action-link__icon",class:[t.isIconUrl?"action-link__icon--url":t.icon],style:{backgroundImage:t.isIconUrl?"url("+t.icon+")":null}}),t._v(" "),t.title?n("p",[n("strong",{staticClass:"action-link__title"},[t._v("\n\t\t\t\t"+t._s(t.title)+"\n\t\t\t")]),t._v(" "),n("br"),t._v(" "),n("span",{staticClass:"action-link__longtext",domProps:{textContent:t._s(t.text)}})]):t.isLongText?n("p",{staticClass:"action-link__longtext",domProps:{textContent:t._s(t.text)}}):n("span",{staticClass:"action-link__text"},[t._v(t._s(t.text))]),t._v(" "),t._e()],2)])}),[],!1,null,"f9c0ebfe",null);"function"==typeof a.a&&a()(s);var c=s.exports;n.d(e,"ActionLink",(function(){return c})), +/** + * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +e.default=c},function(t,e,n){"use strict";n.r(e);var r={name:"ActionRouter",mixins:[n(14).a],props:{to:{type:[String,Object],default:"",required:!0},exact:{type:Boolean,default:!1}}},i=(n(151),n(0)),o=Object(i.a)(r,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("li",[n("router-link",{staticClass:"action-router focusable",attrs:{to:t.to,exact:t.exact,rel:"noreferrer noopener"}},[n("span",{staticClass:"action-router__icon",class:[t.isIconUrl?"action-router__icon--url":t.icon],style:{backgroundImage:t.isIconUrl?"url("+t.icon+")":null}}),t._v(" "),t.title?n("p",[n("strong",{staticClass:"action-router__title"},[t._v("\n\t\t\t\t"+t._s(t.title)+"\n\t\t\t")]),t._v(" "),n("br"),t._v(" "),n("span",{staticClass:"action-router__longtext",domProps:{textContent:t._s(t.text)}})]):t.isLongText?n("p",{staticClass:"action-router__longtext",domProps:{textContent:t._s(t.text)}}):n("span",{staticClass:"action-router__text"},[t._v(t._s(t.text))]),t._v(" "),t._e()],2)],1)}),[],!1,null,"3bf6846c",null).exports;n.d(e,"ActionRouter",(function(){return o})), +/** + * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +e.default=o},function(t,e,n){"use strict";n.r(e);var r={name:"ActionText",mixins:[n(14).a]},i=(n(153),n(0)),o=Object(i.a)(r,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("li",[n("span",{staticClass:"action-text"},[n("span",{staticClass:"action-text__icon",class:[t.isIconUrl?"action-text__icon--url":t.icon],style:{backgroundImage:t.isIconUrl?"url("+t.icon+")":null}}),t._v(" "),t.title?n("p",[n("strong",{staticClass:"action-text__title"},[t._v("\n\t\t\t\t"+t._s(t.title)+"\n\t\t\t")]),t._v(" "),n("br"),t._v(" "),n("span",{staticClass:"action-text__longtext",domProps:{textContent:t._s(t.text)}})]):t.isLongText?n("p",{staticClass:"action-text__longtext",domProps:{textContent:t._s(t.text)}}):n("span",{staticClass:"action-text__text"},[t._v(t._s(t.text))]),t._v(" "),t._e()],2)])}),[],!1,null,"b4603aaa",null).exports;n.d(e,"ActionText",(function(){return o})), +/** + * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +e.default=o},function(t,e,n){"use strict";n.r(e);var r=n(14),i=n(17),o={name:"ActionTextEditable",mixins:[r.a],props:{id:{type:String,default:function(){return"action-"+Object(i.a)()},validator:function(t){return""!==t.trim()}},disabled:{type:Boolean,default:!1},value:{type:String,default:""}},computed:{isFocusable:function(){return!this.disabled}},methods:{onInput:function(t){this.$emit("input",t),this.$emit("update:value",t.target.value)},onSubmit:function(t){if(t.preventDefault(),t.stopPropagation(),this.disabled)return!1;this.$emit("submit",t)}}},a=(n(155),n(0)),s=n(86),c=n.n(s),u=Object(a.a)(o,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("li",{class:{"action--disabled":t.disabled}},[n("span",{staticClass:"action-text-editable"},[n("span",{staticClass:"action-text-editable__icon",class:[t.isIconUrl?"action-text-editable__icon--url":t.icon],style:{backgroundImage:t.isIconUrl?"url("+t.icon+")":null}}),t._v(" "),n("form",{ref:"form",staticClass:"action-text-editable__form",attrs:{disabled:t.disabled},on:{submit:function(e){return e.preventDefault(),t.onSubmit(e)}}},[n("input",{staticClass:"action-text-editable__submit",attrs:{id:t.id,type:"submit"}}),t._v(" "),t.title?n("strong",{staticClass:"action-text__title"},[t._v("\n\t\t\t\t"+t._s(t.title)+"\n\t\t\t")]):t._e(),t._v(" "),n("textarea",t._b({class:["action-text-editable__textarea",{focusable:t.isFocusable}],attrs:{disabled:t.disabled},domProps:{value:t.value},on:{input:t.onInput}},"textarea",t.$attrs,!1)),t._v(" "),n("label",{directives:[{name:"show",rawName:"v-show",value:!t.disabled,expression:"!disabled"}],staticClass:"action-text-editable__label",attrs:{for:t.id}})])])])}),[],!1,null,"43b509b7",null);"function"==typeof c.a&&c()(u);var l=u.exports;n.d(e,"ActionTextEditable",(function(){return l})), +/** + * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +e.default=l},function(t,e,n){"use strict";n.r(e);var r=n(40),i=n.n(r),o={name:"AppContent",components:{AppNavigationToggle:n(82).default},data:function(){return{opened:!1}},mounted:function(){var t=this;this.mc=new i.a(this.$el,{cssProps:{userSelect:"text"}}),this.mc.on("swipeleft swiperight",(function(e){t.handleSwipe(e)}))},unmounted:function(){this.mc.off("swipeleft swiperight"),this.mc.destroy()},methods:{toggleNavigation:function(t){this.opened=t||!this.opened,this.opened?document.body.classList.add("nav-open"):document.body.classList.remove("nav-open")},handleSwipe:function(t){var e=t.srcEvent.pageX-t.deltaX,n=Math.abs(t.deltaX)>70;n&&e<40?this.toggleNavigation(!0):this.opened&&n&&e<340&&this.toggleNavigation(!1)}}},a=(n(157),n(0)),s=Object(a.a)(o,(function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"no-snapper",style:this.opened?"transform: translateX(300px)":"",attrs:{id:"app-content"}},[e("AppNavigationToggle",{attrs:{"aria-expanded":this.opened,"aria-controls":"app-navigation"},on:{click:this.toggleNavigation}}),this._v(" "),this._t("default")],2)}),[],!1,null,"0fe2f738",null).exports;n.d(e,"AppContent",(function(){return s})), +/* + * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +e.default=s},function(t,e,n){"use strict";n.r(e);var r=n(0),i=Object(r.a)({name:"AppContentDetails"},(function(){var t=this.$createElement;return(this._self._c||t)("div",{staticClass:"app-content-details"},[this._t("default")],2)}),[],!1,null,null,null).exports;n.d(e,"AppContentDetails",(function(){return i})), +/* + * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +e.default=i},function(t,e,n){"use strict";n.r(e);var r={name:"AppContentList",props:{selection:{type:Boolean,default:!1},showDetails:{type:Boolean,default:!1}}},i=n(0),o=Object(i.a)(r,(function(){var t=this.$createElement;return(this._self._c||t)("div",{staticClass:"app-content-list",class:{selection:this.selection,showdetails:this.showDetails}},[this._t("default")],2)}),[],!1,null,null,null).exports;n.d(e,"AppContentList",(function(){return o})), +/* + * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +e.default=o},function(t,e,n){"use strict";n.r(e);var r=(n(159),n(0)),i=Object(r.a)({name:"AppNavigation"},(function(){var t=this.$createElement;return(this._self._c||t)("div",{attrs:{id:"app-navigation"}},[this._t("default")],2)}),[],!1,null,null,null).exports;n.d(e,"AppNavigation",(function(){return i})), +/** + * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +e.default=i},function(t,e,n){"use strict";n.r(e);var r={name:"AppNavigationCaption",props:{text:{type:String,required:!0}}},i=(n(161),n(0)),o=Object(i.a)(r,(function(){var t=this.$createElement;return(this._self._c||t)("li",{staticClass:"app-navigation-caption--item"},[this._v("\n\t"+this._s(this.text)+"\n")])}),[],!1,null,"9639e4a4",null).exports;n.d(e,"AppNavigationCaption",(function(){return o})),e.default=o},function(t,e,n){"use strict";n.r(e);var r=n(24),i=n(13),o=n.n(i),a=n(67),s={name:"AppNavigationItem",components:{PopoverMenu:r.PopoverMenu,AppNavigationCounter:a.AppNavigationCounter},directives:{ClickOutside:o.a},props:{item:{type:Object,required:!0},open:{type:Boolean,default:!1},menuOpen:{type:Boolean,default:!1}},data:function(){return{opened:this.open,openedMenu:this.menuOpen}},computed:{collapsible:function(){return this.item.collapsible&&this.item.children&&this.item.children.length>0},simpleAction:function(){return this.collapsible&&!this.item.action?this.toggleCollapse:this.item.action}},watch:{open:function(t){this.opened=t},menuOpen:function(t){this.openedMenu=t}},mounted:function(){this.popupItem=this.$el},methods:{hideMenu:function(){this.openedMenu=!1,this.$emit("update:menuOpen",this.openedMenu)},toggleMenu:function(){this.openedMenu=!this.openedMenu,this.$emit("update:menuOpen",this.openedMenu)},toggleCollapse:function(){this.opened=!this.opened,this.$emit("update:open",this.opened)},callPreventStop:function(t,e){t&&(e.preventDefault(),e.stopPropagation(),t())},cancelEdit:function(t){Array.isArray(this.item.classes)&&(this.item.classes=this.item.classes.filter((function(t){return"editing"!==t}))),this.item.edit.reset(t)},navElement:function(t){if(t.router){var e=t.router.exact;return void 0===t.router.exact&&(e=!0),{is:"router-link",tag:"li",to:t.router,exact:e}}return{is:"li"}}}},c=n(0),u=Object(c.a)(s,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("nav-element",t._b({class:[{"icon-loading-small":t.item.loading,open:t.opened,collapsible:t.collapsible},t.item.classes],attrs:{id:t.item.id,title:t.item.title}},"nav-element",t.navElement(t.item),!1),[t.item.bullet?n("div",{staticClass:"app-navigation-entry-bullet",style:{backgroundColor:t.item.bullet}}):t._e(),t._v(" "),t.collapsible?n("button",{staticClass:"collapse",on:{click:function(e){return e.preventDefault(),e.stopPropagation(),t.toggleCollapse(e)}}}):t._e(),t._v(" "),n("a",{class:t.item.icon,attrs:{href:t.item.href?t.item.href:"#"},on:{click:function(e){return t.callPreventStop(t.simpleAction,e)}}},[t.item.iconUrl?n("img",{attrs:{alt:t.item.text,src:t.item.iconUrl}}):t._e(),t._v("\n\t\t"+t._s(t.item.text)+"\n\t")]),t._v(" "),t.item.utils?n("div",{staticClass:"app-navigation-entry-utils"},[n("ul",[t.item.utils.counter?n("AppNavigationCounter",{attrs:{highlighted:!0===t.item.utils.counter_highlighted}},[t._v("\n\t\t\t\t"+t._s(t.item.utils.counter)+"\n\t\t\t")]):t._e(),t._v(" "),t.item.utils.actions&&1===t.item.utils.actions.length?n("li",{staticClass:"app-navigation-entry-utils-menu-button"},[n("button",{class:t.item.utils.actions[0].icon,attrs:{title:t.item.utils.actions[0].text},on:{click:t.item.utils.actions[0].action}})]):t.item.utils.actions&&t.item.utils.actions.length>1?n("li",{staticClass:"app-navigation-entry-utils-menu-button"},[n("button",{directives:[{name:"click-outside",rawName:"v-click-outside",value:t.hideMenu,expression:"hideMenu"}],on:{click:t.toggleMenu}})]):t._e()],1)]):t._e(),t._v(" "),t.item.utils&&t.item.utils.actions&&t.item.utils.actions.length>1?n("div",{staticClass:"app-navigation-entry-menu",class:{open:t.openedMenu}},[n("PopoverMenu",{attrs:{menu:t.item.utils.actions}})],1):t._e(),t._v(" "),t.item.undo?n("div",{staticClass:"app-navigation-entry-deleted"},[n("div",{staticClass:"app-navigation-entry-deleted-description"},[t._v("\n\t\t\t"+t._s(t.item.undo.text)+"\n\t\t")]),t._v(" "),n("button",{staticClass:"app-navigation-entry-deleted-button icon-history",attrs:{title:t.t("settings","Undo")}})]):t._e(),t._v(" "),t.item.edit?n("div",{staticClass:"app-navigation-entry-edit"},[n("form",{on:{submit:function(e){return e.preventDefault(),e.stopPropagation(),t.item.edit.action(e)}}},[n("input",{attrs:{placeholder:t.item.edit.text,type:"text"}}),t._v(" "),n("input",{staticClass:"icon-confirm",attrs:{type:"submit",value:""}}),t._v(" "),n("input",{staticClass:"icon-close",attrs:{type:"submit",value:""},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.cancelEdit(e)}}})])]):t._e(),t._v(" "),t.item.children?n("ul",t._l(t.item.children,(function(t,e){return n("app-navigation-item",{key:e,attrs:{item:t}})})),1):t._e()])}),[],!1,null,null,null).exports;n.d(e,"AppNavigationItem",(function(){return u})), +/** + * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +e.default=u},function(t,e,n){"use strict";n.r(e);var r={props:{buttonId:{type:String,required:!1,default:""},buttonClass:{type:[String,Array,Object],required:!1,default:""},disabled:{type:Boolean,required:!1,default:!1},text:{type:String,required:!0}}},i=n(0),o=Object(i.a)(r,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"app-navigation-new"},[n("button",{class:t.buttonClass,attrs:{id:t.buttonId,type:"button",disabled:t.disabled},on:{click:function(e){return t.$emit("click")}}},[t._v("\n\t\t"+t._s(t.text)+"\n\t")])])}),[],!1,null,null,null).exports;n.d(e,"AppNavigationNew",(function(){return o})), +/* + * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @author 2018 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +e.default=o},function(e,n,r){"use strict";r.r(n);var i=r(13),o={directives:{ClickOutside:r.n(i).a},props:{title:{type:String,required:!1,default:t("core","Settings")}},data:function(){return{open:!1}},methods:{toggleMenu:function(){this.open=!this.open},closeMenu:function(){this.open=!1}}},a=(r(163),r(0)),s=Object(a.a)(o,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{directives:[{name:"click-outside",rawName:"v-click-outside",value:t.closeMenu,expression:"closeMenu"}],class:{open:t.open},attrs:{id:"app-settings"}},[n("div",{attrs:{id:"app-settings-header"}},[n("button",{staticClass:"settings-button",on:{click:t.toggleMenu}},[t._v("\n\t\t\t"+t._s(t.title)+"\n\t\t")])]),t._v(" "),n("transition",{attrs:{name:"slide-up"}},[n("div",{directives:[{name:"show",rawName:"v-show",value:t.open,expression:"open"}],attrs:{id:"app-settings-content"}},[t._t("default")],2)])],1)}),[],!1,null,"7f13ea43",null).exports;r.d(n,"AppNavigationSettings",(function(){return s})), +/* + * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @author 2018 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +n.default=s},function(t,e,n){"use strict";n.r(e);var r=(n(165),n(0)),i=Object(r.a)({name:"AppNavigationSpacer"},(function(){var t=this.$createElement;return(this._self._c||t)("li",{staticClass:"app-navigation-spacer"})}),[],!1,null,"18241e10",null).exports;n.d(e,"AppNavigationSpacer",(function(){return i})), +/** + * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +e.default=i},function(t,e,n){"use strict";n.r(e);var r=n(3),i=n.n(r),o=n(30),a=function(t){return t&&"string"==typeof t&&""!==t.trim()&&-1===t.indexOf(" ")},s={name:"AppSidebar",components:{Actions:o.default},props:{active:{type:String,default:""},title:{type:String,default:"",required:!0},subtitle:{type:String,default:""},background:{type:String,default:""},starred:{type:Boolean,default:null},starLoading:{type:Boolean,default:!1},compact:{type:Boolean,default:!1}},data:function(){return{tabs:[],activeTab:"",isStarred:this.starred}},computed:{canStar:function(){return null!==this.isStarred},hasFigure:function(){return this.$slots.header||this.background},hasMultipleTabs:function(){return this.tabs.length>1},hasFigureClickListener:function(){return this.$listeners["figure-click"]},currentTabIndex:function(){var t=this;return this.tabs.findIndex((function(e){return e.id===t.activeTab}))}},watch:{active:function(t){t!==this.activeTab&&this.updateActive()},starred:function(){this.isStarred=this.starred}},mounted:function(){this.updateTabs()},methods:{closeSidebar:function(t){this.$emit("close",t)},onFigureClick:function(t){this.$emit("figure-click",t)},setActive:function(t){var e=t.target.closest("a").dataset.id;this.activeTab=e,this.$emit("update:active",e)},focusPreviousTab:function(){this.currentTabIndex>0&&(this.activeTab=this.tabs[this.currentTabIndex-1].id,this.$emit("update:active",this.activeTab)),this.focusActiveTab()},focusNextTab:function(){this.currentTabIndex<this.tabs.length-1&&(this.activeTab=this.tabs[this.currentTabIndex+1].id,this.$emit("update:active",this.activeTab)),this.focusActiveTab()},focusFirstTab:function(){this.activeTab=this.tabs[0].id,this.$emit("update:active",this.activeTab),this.focusActiveTab()},focusLastTab:function(){this.activeTab=this.tabs[this.tabs.length-1].id,this.$emit("update:active",this.activeTab),this.focusActiveTab()},focusActiveTab:function(){this.$el.querySelector("#"+this.activeTab).focus()},focusActiveTabContent:function(){this.$el.querySelector("#tab-"+this.activeTab).focus()},updateActive:function(){var t=this;this.activeTab=this.active&&-1!==this.tabs.findIndex((function(e){return e.id===t.active}))?this.active:this.tabs.length>0?this.tabs[0].id:""},toggleStarred:function(){this.isStarred=!this.isStarred,this.$emit("update:starred",this.isStarred)},updateTabs:function(){var t=this.$children.reduce((function(t,e){return e.name&&"string"==typeof e.name?a(e.id)?a(e.icon)?(t.push(e),t):(i.a.util.warn("This tab is missing a valid icon: ".concat(e.icon),e),t):(i.a.util.warn("This tab is missing a valid id: ".concat(e.id),e),t):(i.a.util.warn("This tab is missing a valid name: ".concat(e.name),e),t)}),[]);this.tabs=t.sort((function(t,e){var n=t.order||0,r=e.order||0;return n===r?OC.Util.naturalSortCompare(t.name,e.name):n-r})),this.tabs.length>0&&this.updateActive()}}},c=(n(167),n(169),n(0)),u=Object(c.a)(s,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("transition",{attrs:{name:"slide-right"}},[n("aside",{attrs:{id:"app-sidebar"}},[n("header",{staticClass:"app-sidebar-header",class:{"app-sidebar-header--with-figure":t.hasFigure,"app-sidebar-header--compact":t.compact}},[n("a",{staticClass:"icon-close",attrs:{href:"#",title:t.t("core","close")},on:{click:t.closeSidebar}}),t._v(" "),t.hasFigure?n("div",{staticClass:"app-sidebar-header__figure",class:{"app-sidebar-header__figure--with-action":t.hasFigureClickListener},style:{backgroundImage:"url("+t.background+")"},on:{click:t.onFigureClick}},[t._t("header")],2):t._e(),t._v(" "),n("div",{staticClass:"app-sidebar-header__desc",class:{"app-sidebar-header__desc--with-star":t.canStar,"app-sidebar-header__desc--with-subtitle":t.subtitle}},[t.canStar?n("a",{staticClass:"app-sidebar-header__star",class:{"icon-starred":t.isStarred&&!t.starLoading,"icon-star":!t.isStarred&&!t.starLoading,"icon-loading-small":t.starLoading},on:{click:function(e){return e.preventDefault(),t.toggleStarred(e)}}}):t._e(),t._v(" "),n("h3",{staticClass:"app-sidebar-header__title"},[t._v("\n\t\t\t\t\t"+t._s(t.title)+"\n\t\t\t\t")]),t._v(" "),""!==t.subtitle.trim()?n("h4",{staticClass:"app-sidebar-header__subtitle"},[t._v("\n\t\t\t\t\t"+t._s(t.subtitle)+"\n\t\t\t\t")]):t._e(),t._v(" "),t.$slots["secondary-actions"]?n("Actions",{staticClass:"app-sidebar-header__menu"},[t._t("secondary-actions")],2):t._e()],1),t._v(" "),t.$slots["primary-actions"]?n("div",{staticClass:"app-sidebar-header__action"},[t._t("primary-actions")],2):t._e()]),t._v(" "),t.hasMultipleTabs?n("nav",{staticClass:"app-sidebar-tabs__nav",on:{keydown:[function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"left",37,e.key,["Left","ArrowLeft"])?null:"button"in e&&0!==e.button?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.focusPreviousTab(e))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"right",39,e.key,["Right","ArrowRight"])?null:"button"in e&&2!==e.button?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.focusNextTab(e))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"tab",9,e.key,"Tab")?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.focusActiveTabContent(e))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"page-up",void 0,e.key,void 0)?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.focusFirstTab(e))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"page-down",void 0,e.key,void 0)?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.focusLastTab(e))}]}},[n("ul",t._l(t.tabs,(function(e){return n("li",{key:e.id,staticClass:"app-sidebar-tabs__tab"},[n("a",{class:{active:t.activeTab===e.id},attrs:{id:e.id,"aria-controls":"tab-"+e.id,"aria-selected":t.activeTab===e.id,"data-id":e.id,href:"#tab-"+e.id,tabindex:t.activeTab===e.id?null:-1,role:"tab"},on:{click:function(e){return e.preventDefault(),t.setActive(e)}}},[n("span",{staticClass:"app-sidebar-tabs__tab-icon",class:e.icon}),t._v("\n\t\t\t\t\t\t"+t._s(e.name)+"\n\t\t\t\t\t")])])})),0)]):t._e(),t._v(" "),n("div",{staticClass:"app-sidebar-tabs__content",class:{"app-sidebar-tabs__content--multiple":t.hasMultipleTabs}},[t._t("default",null,{activeTab:t.activeTab})],2)])])}),[],!1,null,"625289d6",null).exports;n.d(e,"AppSidebar",(function(){return u})), +/* + * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +e.default=u},function(t,e,n){"use strict";n.r(e);var r={name:"AppSidebarTab",props:{name:{type:String,default:"",required:!0},icon:{type:String,default:"",required:!0},order:{type:Number,default:0,required:!1}},computed:{id:function(){return this.name.toLowerCase().replace(/ /g,"-")},isActive:function(){return this.$parent.activeTab===this.id}}},i=(n(171),n(0)),o=Object(i.a)(r,(function(){var t=this.$createElement;return(this._self._c||t)("section",{directives:[{name:"show",rawName:"v-show",value:this.isActive,expression:"isActive"}],attrs:{id:"tab-"+this.id,"aria-hidden":!this.isActive,"aria-labelledby":this.name,tabindex:"0",role:"tabpanel"}},[this._t("default")],2)}),[],!1,null,"3f1c0b76",null).exports;n.d(e,"AppSidebarTab",(function(){return o})), +/** + * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +e.default=o},function(t,e,n){"use strict";n.r(e);var r={props:{appName:{type:String,required:!0}}},i=n(0),o=Object(i.a)(r,(function(){var t=this.$createElement;return(this._self._c||t)("div",{class:"app-"+this.appName,attrs:{id:"content"}},[this._t("default")],2)}),[],!1,null,null,null).exports;n.d(e,"Content",(function(){return o})), +/* + * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @author 2018 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +e.default=o},function(t,e,n){"use strict";var r=n(47);n.n(r).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,"li.active[data-v-f874e42c]{box-shadow:inset 4px 0 var(--color-primary)}.action--disabled[data-v-f874e42c]{pointer-events:none;opacity:.5}.action--disabled[data-v-f874e42c]:hover,.action--disabled[data-v-f874e42c]:focus{cursor:default;opacity:.5}.action--disabled *[data-v-f874e42c]{opacity:1 !important}.action-checkbox[data-v-f874e42c]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;cursor:pointer;white-space:nowrap;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:normal;line-height:44px}.action-checkbox__checkbox[data-v-f874e42c]{position:absolute;top:auto;left:-10000px;overflow:hidden;width:1px;height:1px}.action-checkbox__checkbox:focus+.action-checkbox__label[data-v-f874e42c]{opacity:1}.action-checkbox__label[data-v-f874e42c]{display:flex;align-items:center;width:100%;padding:0 !important;padding-right:14px !important;opacity:.7}.action-checkbox__label[data-v-f874e42c]::before{margin:0 14px 0 !important}.action-checkbox--disabled[data-v-f874e42c],.action-checkbox--disabled .action-checkbox__label[data-v-f874e42c]{cursor:pointer}.action-checkbox:not(.action-checkbox--disabled):hover .action-checkbox__label[data-v-f874e42c],.action-checkbox:not(.action-checkbox--disabled):focus .action-checkbox__label[data-v-f874e42c]{opacity:1}\n",""])},function(t,e,n){"use strict";var r=n(48);n.n(r).a},function(t,e,n){e=t.exports=n(1)(!1);var r=n(8),i=r(n(9)),o=r(n(10)),a=r(n(11)),s=r(n(12));e.push([t.i,'@font-face{font-family:"iconfont-vue";src:url('+i+");src:url("+i+') format("embedded-opentype"),url('+o+') format("woff"),url('+a+') format("truetype"),url('+s+') format("svg")}.icon[data-v-44d356e8]{font-style:normal;font-weight:400}.icon.arrow-left-double[data-v-44d356e8]:before{font-family:"iconfont-vue";content:""}.icon.arrow-left[data-v-44d356e8]:before{font-family:"iconfont-vue";content:""}.icon.arrow-right-double[data-v-44d356e8]:before{font-family:"iconfont-vue";content:""}.icon.arrow-right[data-v-44d356e8]:before{font-family:"iconfont-vue";content:""}.icon.close[data-v-44d356e8]:before{font-family:"iconfont-vue";content:""}.icon.confirm-fade[data-v-44d356e8]:before{font-family:"iconfont-vue";content:""}.icon.confirm[data-v-44d356e8]:before{font-family:"iconfont-vue";content:""}.icon.menu[data-v-44d356e8]:before{font-family:"iconfont-vue";content:""}.icon.more[data-v-44d356e8]:before{font-family:"iconfont-vue";content:""}.icon.pause[data-v-44d356e8]:before{font-family:"iconfont-vue";content:""}.icon.play[data-v-44d356e8]:before{font-family:"iconfont-vue";content:""}button[data-v-44d356e8],input[data-v-44d356e8]:not([type=\'range\']),textarea[data-v-44d356e8]{margin:0;padding:7px 6px;cursor:text;color:var(--color-text-lighter);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);outline:none;background-color:var(--color-main-background);font-size:13px}button[data-v-44d356e8]:not(:disabled):not(.primary):hover,button[data-v-44d356e8]:not(:disabled):not(.primary):focus,button:not(:disabled):not(.primary).active[data-v-44d356e8],input[data-v-44d356e8]:not([type=\'range\']):not(:disabled):not(.primary):hover,input[data-v-44d356e8]:not([type=\'range\']):not(:disabled):not(.primary):focus,input:not([type=\'range\']):not(:disabled):not(.primary).active[data-v-44d356e8],textarea[data-v-44d356e8]:not(:disabled):not(.primary):hover,textarea[data-v-44d356e8]:not(:disabled):not(.primary):focus,textarea:not(:disabled):not(.primary).active[data-v-44d356e8]{border-color:var(--color-primary-element);outline:none}button[data-v-44d356e8]:not(:disabled):not(.primary):active,input[data-v-44d356e8]:not([type=\'range\']):not(:disabled):not(.primary):active,textarea[data-v-44d356e8]:not(:disabled):not(.primary):active{color:var(--color-text-light);outline:none;background-color:var(--color-main-background)}button[data-v-44d356e8]:disabled,input[data-v-44d356e8]:not([type=\'range\']):disabled,textarea[data-v-44d356e8]:disabled{cursor:default;opacity:.5;color:var(--color-text-maxcontrast);background-color:var(--color-background-dark)}button[data-v-44d356e8]:required,input[data-v-44d356e8]:not([type=\'range\']):required,textarea[data-v-44d356e8]:required{box-shadow:none}button[data-v-44d356e8]:invalid,input[data-v-44d356e8]:not([type=\'range\']):invalid,textarea[data-v-44d356e8]:invalid{border-color:var(--color-error);box-shadow:none !important}button.primary[data-v-44d356e8],input:not([type=\'range\']).primary[data-v-44d356e8],textarea.primary[data-v-44d356e8]{cursor:pointer;color:var(--color-primary-text);border-color:var(--color-primary-element);background-color:var(--color-primary-element)}button.primary[data-v-44d356e8]:not(:disabled):hover,button.primary[data-v-44d356e8]:not(:disabled):focus,button.primary[data-v-44d356e8]:not(:disabled):active,input:not([type=\'range\']).primary[data-v-44d356e8]:not(:disabled):hover,input:not([type=\'range\']).primary[data-v-44d356e8]:not(:disabled):focus,input:not([type=\'range\']).primary[data-v-44d356e8]:not(:disabled):active,textarea.primary[data-v-44d356e8]:not(:disabled):hover,textarea.primary[data-v-44d356e8]:not(:disabled):focus,textarea.primary[data-v-44d356e8]:not(:disabled):active{border-color:var(--color-primary-element-light);background-color:var(--color-primary-element-light)}button.primary[data-v-44d356e8]:not(:disabled):active,input:not([type=\'range\']).primary[data-v-44d356e8]:not(:disabled):active,textarea.primary[data-v-44d356e8]:not(:disabled):active{color:var(--color-primary-text-dark)}button.primary[data-v-44d356e8]:disabled,input:not([type=\'range\']).primary[data-v-44d356e8]:disabled,textarea.primary[data-v-44d356e8]:disabled{cursor:default;color:var(--color-primary-text-dark);background-color:var(--color-primary-element)}li.active[data-v-44d356e8]{box-shadow:inset 4px 0 var(--color-primary)}.action--disabled[data-v-44d356e8]{pointer-events:none;opacity:.5}.action--disabled[data-v-44d356e8]:hover,.action--disabled[data-v-44d356e8]:focus{cursor:default;opacity:.5}.action--disabled *[data-v-44d356e8]{opacity:1 !important}.action-input[data-v-44d356e8]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;cursor:pointer;white-space:nowrap;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:normal}.action-input[data-v-44d356e8]:not(.action-input--picker){opacity:.7}.action-input[data-v-44d356e8]:not(.action-input--picker):hover,.action-input[data-v-44d356e8]:not(.action-input--picker):focus{opacity:1}.action-input--picker .action-input__icon[data-v-44d356e8]{opacity:.7}.action-input--picker:hover .action-input__icon[data-v-44d356e8],.action-input--picker:focus .action-input__icon[data-v-44d356e8]{opacity:1}.action-input>span[data-v-44d356e8]{cursor:pointer;white-space:nowrap}.action-input__icon[data-v-44d356e8]{min-width:0;min-height:0;padding:22px 0 22px 44px;background-position:14px center;background-size:16px}.action-input__form[data-v-44d356e8]{display:flex;align-items:center;flex:1 1 auto;margin:4px 0;padding-right:14px}.action-input__submit[data-v-44d356e8]{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}.action-input__label[data-v-44d356e8]{display:flex;align-items:center;justify-content:center;width:36px;height:36px;margin:0 0 0 -8px;padding:7px 6px;cursor:pointer;opacity:1;color:var(--color-text-lighter);border:1px solid var(--color-border-dark);border-left-color:transparent;border-radius:0 var(--border-radius) var(--border-radius) 0;background-color:var(--color-main-background);background-clip:padding-box;font-size:16px}.action-input__label[data-v-44d356e8]:before{font-family:"iconfont-vue";font-style:normal;font-weight:400;content:""}.action-input__input[data-v-44d356e8]{flex:1 1 auto;min-width:132px;min-height:36px;max-height:36px;margin:0}.action-input__input[data-v-44d356e8]:disabled{cursor:default}.action-input__input:not(:active):not(:hover):not(:focus):invalid+.action-input__label[data-v-44d356e8]{border-color:var(--color-error);border-left-color:transparent}.action-input__input:not(:active):not(:hover):not(:focus):not(:disabled)+.action-input__label[data-v-44d356e8]:active,.action-input__input:not(:active):not(:hover):not(:focus):not(:disabled)+.action-input__label[data-v-44d356e8]:hover,.action-input__input:not(:active):not(:hover):not(:focus):not(:disabled)+.action-input__label[data-v-44d356e8]:focus{border-color:var(--color-primary-element);border-radius:var(--border-radius)}.action-input__input:active:not(:disabled)+.action-input__label[data-v-44d356e8],.action-input__input:hover:not(:disabled)+.action-input__label[data-v-44d356e8],.action-input__input:focus:not(:disabled)+.action-input__label[data-v-44d356e8]{z-index:2;border-color:var(--color-primary-element);border-left-color:transparent}.action-input__picker[data-v-44d356e8] .mx-input{margin:0}li:last-child>.action-input[data-v-44d356e8]{margin-bottom:10px}li:first-child>.action-input[data-v-44d356e8]{margin-top:10px}\n',""])},function(t,e,n){"use strict";var r=n(49);n.n(r).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,"li.active[data-v-f9c0ebfe]{box-shadow:inset 4px 0 var(--color-primary)}.action-link[data-v-f9c0ebfe]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;padding-right:14px;cursor:pointer;white-space:nowrap;opacity:.7;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:normal;line-height:44px}.action-link[data-v-f9c0ebfe]:hover,.action-link[data-v-f9c0ebfe]:focus{opacity:1}.action-link>span[data-v-f9c0ebfe]{cursor:pointer;white-space:nowrap}.action-link__icon[data-v-f9c0ebfe]{width:44px;height:44px;opacity:1;background-position:14px center;background-size:16px}.action-link p[data-v-f9c0ebfe]{width:150px;padding:7px 0;cursor:pointer;text-align:left;line-height:1.6em}.action-link__longtext[data-v-f9c0ebfe]{cursor:pointer;white-space:pre-wrap}.action-link__title[data-v-f9c0ebfe]{font-weight:bold}.action--disabled[data-v-f9c0ebfe]{pointer-events:none;opacity:.5}.action--disabled[data-v-f9c0ebfe]:hover,.action--disabled[data-v-f9c0ebfe]:focus{cursor:default;opacity:.5}.action--disabled *[data-v-f9c0ebfe]{opacity:1 !important}\n",""])},function(t,e,n){"use strict";var r=n(50);n.n(r).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,"li.active[data-v-3bf6846c]{box-shadow:inset 4px 0 var(--color-primary)}.action-router[data-v-3bf6846c]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;padding-right:14px;cursor:pointer;white-space:nowrap;opacity:.7;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:normal;line-height:44px}.action-router[data-v-3bf6846c]:hover,.action-router[data-v-3bf6846c]:focus{opacity:1}.action-router>span[data-v-3bf6846c]{cursor:pointer;white-space:nowrap}.action-router__icon[data-v-3bf6846c]{width:44px;height:44px;opacity:1;background-position:14px center;background-size:16px}.action-router p[data-v-3bf6846c]{width:150px;padding:7px 0;cursor:pointer;text-align:left;line-height:1.6em}.action-router__longtext[data-v-3bf6846c]{cursor:pointer;white-space:pre-wrap}.action-router__title[data-v-3bf6846c]{font-weight:bold}.action--disabled[data-v-3bf6846c]{pointer-events:none;opacity:.5}.action--disabled[data-v-3bf6846c]:hover,.action--disabled[data-v-3bf6846c]:focus{cursor:default;opacity:.5}.action--disabled *[data-v-3bf6846c]{opacity:1 !important}\n",""])},function(t,e,n){"use strict";var r=n(51);n.n(r).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,"li.active[data-v-b4603aaa]{box-shadow:inset 4px 0 var(--color-primary)}.action-text[data-v-b4603aaa]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;padding-right:14px;cursor:pointer;white-space:nowrap;opacity:.7;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:normal;line-height:44px}.action-text[data-v-b4603aaa]:hover,.action-text[data-v-b4603aaa]:focus{opacity:1}.action-text>span[data-v-b4603aaa]{cursor:pointer;white-space:nowrap}.action-text__icon[data-v-b4603aaa]{width:44px;height:44px;opacity:1;background-position:14px center;background-size:16px}.action-text p[data-v-b4603aaa]{width:150px;padding:7px 0;cursor:pointer;text-align:left;line-height:1.6em}.action-text__longtext[data-v-b4603aaa]{cursor:pointer;white-space:pre-wrap}.action-text__title[data-v-b4603aaa]{font-weight:bold}.action--disabled[data-v-b4603aaa]{pointer-events:none;opacity:.5}.action--disabled[data-v-b4603aaa]:hover,.action--disabled[data-v-b4603aaa]:focus{cursor:default;opacity:.5}.action--disabled *[data-v-b4603aaa]{opacity:1 !important}.action-text[data-v-b4603aaa],.action-text span[data-v-b4603aaa]{cursor:default}\n",""])},function(t,e,n){"use strict";var r=n(52);n.n(r).a},function(t,e,n){e=t.exports=n(1)(!1);var r=n(8),i=r(n(9)),o=r(n(10)),a=r(n(11)),s=r(n(12));e.push([t.i,'@font-face{font-family:"iconfont-vue";src:url('+i+");src:url("+i+') format("embedded-opentype"),url('+o+') format("woff"),url('+a+') format("truetype"),url('+s+') format("svg")}.icon[data-v-43b509b7]{font-style:normal;font-weight:400}.icon.arrow-left-double[data-v-43b509b7]:before{font-family:"iconfont-vue";content:""}.icon.arrow-left[data-v-43b509b7]:before{font-family:"iconfont-vue";content:""}.icon.arrow-right-double[data-v-43b509b7]:before{font-family:"iconfont-vue";content:""}.icon.arrow-right[data-v-43b509b7]:before{font-family:"iconfont-vue";content:""}.icon.close[data-v-43b509b7]:before{font-family:"iconfont-vue";content:""}.icon.confirm-fade[data-v-43b509b7]:before{font-family:"iconfont-vue";content:""}.icon.confirm[data-v-43b509b7]:before{font-family:"iconfont-vue";content:""}.icon.menu[data-v-43b509b7]:before{font-family:"iconfont-vue";content:""}.icon.more[data-v-43b509b7]:before{font-family:"iconfont-vue";content:""}.icon.pause[data-v-43b509b7]:before{font-family:"iconfont-vue";content:""}.icon.play[data-v-43b509b7]:before{font-family:"iconfont-vue";content:""}button[data-v-43b509b7],input[data-v-43b509b7]:not([type=\'range\']),textarea[data-v-43b509b7]{margin:0;padding:7px 6px;cursor:text;color:var(--color-text-lighter);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);outline:none;background-color:var(--color-main-background);font-size:13px}button[data-v-43b509b7]:not(:disabled):not(.primary):hover,button[data-v-43b509b7]:not(:disabled):not(.primary):focus,button:not(:disabled):not(.primary).active[data-v-43b509b7],input[data-v-43b509b7]:not([type=\'range\']):not(:disabled):not(.primary):hover,input[data-v-43b509b7]:not([type=\'range\']):not(:disabled):not(.primary):focus,input:not([type=\'range\']):not(:disabled):not(.primary).active[data-v-43b509b7],textarea[data-v-43b509b7]:not(:disabled):not(.primary):hover,textarea[data-v-43b509b7]:not(:disabled):not(.primary):focus,textarea:not(:disabled):not(.primary).active[data-v-43b509b7]{border-color:var(--color-primary-element);outline:none}button[data-v-43b509b7]:not(:disabled):not(.primary):active,input[data-v-43b509b7]:not([type=\'range\']):not(:disabled):not(.primary):active,textarea[data-v-43b509b7]:not(:disabled):not(.primary):active{color:var(--color-text-light);outline:none;background-color:var(--color-main-background)}button[data-v-43b509b7]:disabled,input[data-v-43b509b7]:not([type=\'range\']):disabled,textarea[data-v-43b509b7]:disabled{cursor:default;opacity:.5;color:var(--color-text-maxcontrast);background-color:var(--color-background-dark)}button[data-v-43b509b7]:required,input[data-v-43b509b7]:not([type=\'range\']):required,textarea[data-v-43b509b7]:required{box-shadow:none}button[data-v-43b509b7]:invalid,input[data-v-43b509b7]:not([type=\'range\']):invalid,textarea[data-v-43b509b7]:invalid{border-color:var(--color-error);box-shadow:none !important}button.primary[data-v-43b509b7],input:not([type=\'range\']).primary[data-v-43b509b7],textarea.primary[data-v-43b509b7]{cursor:pointer;color:var(--color-primary-text);border-color:var(--color-primary-element);background-color:var(--color-primary-element)}button.primary[data-v-43b509b7]:not(:disabled):hover,button.primary[data-v-43b509b7]:not(:disabled):focus,button.primary[data-v-43b509b7]:not(:disabled):active,input:not([type=\'range\']).primary[data-v-43b509b7]:not(:disabled):hover,input:not([type=\'range\']).primary[data-v-43b509b7]:not(:disabled):focus,input:not([type=\'range\']).primary[data-v-43b509b7]:not(:disabled):active,textarea.primary[data-v-43b509b7]:not(:disabled):hover,textarea.primary[data-v-43b509b7]:not(:disabled):focus,textarea.primary[data-v-43b509b7]:not(:disabled):active{border-color:var(--color-primary-element-light);background-color:var(--color-primary-element-light)}button.primary[data-v-43b509b7]:not(:disabled):active,input:not([type=\'range\']).primary[data-v-43b509b7]:not(:disabled):active,textarea.primary[data-v-43b509b7]:not(:disabled):active{color:var(--color-primary-text-dark)}button.primary[data-v-43b509b7]:disabled,input:not([type=\'range\']).primary[data-v-43b509b7]:disabled,textarea.primary[data-v-43b509b7]:disabled{cursor:default;color:var(--color-primary-text-dark);background-color:var(--color-primary-element)}li.active[data-v-43b509b7]{box-shadow:inset 4px 0 var(--color-primary)}.action--disabled[data-v-43b509b7]{pointer-events:none;opacity:.5}.action--disabled[data-v-43b509b7]:hover,.action--disabled[data-v-43b509b7]:focus{cursor:default;opacity:.5}.action--disabled *[data-v-43b509b7]{opacity:1 !important}.action-text-editable[data-v-43b509b7]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;cursor:pointer;white-space:nowrap;opacity:.7;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:normal;line-height:44px}.action-text-editable[data-v-43b509b7]:hover,.action-text-editable[data-v-43b509b7]:focus{opacity:1}.action-text-editable>span[data-v-43b509b7]{cursor:pointer;white-space:nowrap}.action-text-editable__icon[data-v-43b509b7]{min-width:0;min-height:0;padding:22px 0 22px 44px;background-position:14px center;background-size:16px}.action-text-editable__form[data-v-43b509b7]{display:flex;flex:1 1 auto;flex-direction:column;position:relative;margin:4px 0;padding-right:14px}.action-text-editable__submit[data-v-43b509b7]{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}.action-text-editable__label[data-v-43b509b7]{display:flex;align-items:center;justify-content:center;position:absolute;right:15px;bottom:1px;width:36px;height:36px;margin:0;padding:7px 6px;cursor:pointer;opacity:1;color:var(--color-text-lighter);border:0;border-radius:50%;background-color:var(--color-main-background);background-clip:padding-box;font-size:16px}.action-text-editable__label[data-v-43b509b7]:before{font-family:"iconfont-vue";font-style:normal;font-weight:400;content:""}.action-text-editable__textarea[data-v-43b509b7]{flex:1 1 auto;min-height:80px;max-height:124px;min-width:176px;width:100% !important;margin:0}.action-text-editable__textarea[data-v-43b509b7]:disabled{cursor:default}.action-text-editable__textarea:not(:active):not(:hover):not(:focus):invalid+.action-text-editable__label[data-v-43b509b7]{background-color:var(--color-error)}.action-text-editable__textarea:not(:active):not(:hover):not(:focus):not(:disabled)+.action-text-editable__label[data-v-43b509b7]:active,.action-text-editable__textarea:not(:active):not(:hover):not(:focus):not(:disabled)+.action-text-editable__label[data-v-43b509b7]:hover,.action-text-editable__textarea:not(:active):not(:hover):not(:focus):not(:disabled)+.action-text-editable__label[data-v-43b509b7]:focus{background-color:var(--color-primary-element);color:var(--color-primary-text)}.action-text-editable__textarea:active:not(:disabled)+.action-text-editable__label[data-v-43b509b7],.action-text-editable__textarea:hover:not(:disabled)+.action-text-editable__label[data-v-43b509b7],.action-text-editable__textarea:focus:not(:disabled)+.action-text-editable__label[data-v-43b509b7]{z-index:2;border-color:var(--color-primary-element);border-left-color:transparent}li:last-child>.action-text-editable[data-v-43b509b7]{margin-bottom:10px}li:first-child>.action-text-editable[data-v-43b509b7]{margin-top:10px}\n',""])},function(t,e,n){"use strict";var r=n(53);n.n(r).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,"#app-content[data-v-0fe2f738]{z-index:1000;background-color:var(--color-main-background);position:relative;flex-basis:100vw;min-height:100%;transition:transform var(--animation-quick)}\n",""])},function(t,e,n){"use strict";var r=n(54);n.n(r).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,"#app-navigation{will-change:transform;transition:transform var(--animation-quick)}@media only screen and (max-width: 768px){.nav-open #app-navigation{transform:translateX(0)}}\n",""])},function(t,e,n){"use strict";var r=n(55);n.n(r).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,".app-navigation-caption--item[data-v-9639e4a4]{font-weight:bold;color:var(--color-text-maxcontrast);line-height:44px;padding-left:44px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:0.7;box-shadow:none !important;pointer-events:none}.app-navigation-caption--item[data-v-9639e4a4]:not(:first-child){margin-top:22px}\n",""])},function(t,e,n){"use strict";var r=n(56);n.n(r).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,"#app-settings-content[data-v-7f13ea43]{display:block;padding:10px;background-color:var(--color-main-background);max-height:300px;overflow-y:auto;box-sizing:border-box}.slide-up-leave-active[data-v-7f13ea43],.slide-up-enter-active[data-v-7f13ea43]{transition-duration:var(--animation-slow);transition-property:max-height, padding;overflow-y:hidden !important}.slide-up-enter[data-v-7f13ea43],.slide-up-leave-to[data-v-7f13ea43]{max-height:0 !important;padding:0 10px !important}\n",""])},function(t,e,n){"use strict";var r=n(57);n.n(r).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,"\n.app-navigation-spacer[data-v-18241e10] {\n\theight: 22px;\n}\n",""])},function(t,e,n){"use strict";var r=n(58);n.n(r).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,"#app-sidebar[data-v-625289d6]{z-index:1500;height:calc(100vh - 50px);width:27vw;min-width:300px;max-width:500px;top:50px;right:0;display:flex;flex-shrink:0;flex-direction:column;position:-webkit-sticky;position:sticky;overflow-y:auto;overflow-x:hidden;background:var(--color-main-background);border-left:1px solid var(--color-border)}#app-sidebar .app-sidebar-header>.icon-close[data-v-625289d6]{position:absolute;width:44px;height:44px;top:0;right:0;z-index:100;opacity:.7;border-radius:22px}#app-sidebar .app-sidebar-header>.icon-close[data-v-625289d6]:hover,#app-sidebar .app-sidebar-header>.icon-close[data-v-625289d6]:active,#app-sidebar .app-sidebar-header>.icon-close[data-v-625289d6]:focus{opacity:1;background-color:rgba(127,127,127,0.25)}#app-sidebar .app-sidebar-header__figure[data-v-625289d6]{max-height:250px;height:250px;width:100%;background-size:contain;background-position:center;background-repeat:no-repeat}#app-sidebar .app-sidebar-header__figure--with-action[data-v-625289d6]{cursor:pointer}#app-sidebar .app-sidebar-header__desc[data-v-625289d6]{position:relative;padding:18px 88px 18px 9px;display:flex;height:23px;flex-direction:column;justify-content:center;box-sizing:content-box}#app-sidebar .app-sidebar-header__desc--with-star[data-v-625289d6]{padding-left:44px}#app-sidebar .app-sidebar-header__desc--with-subtitle[data-v-625289d6]{justify-content:space-between;height:46px}#app-sidebar .app-sidebar-header__desc h3[data-v-625289d6],#app-sidebar .app-sidebar-header__desc h4[data-v-625289d6]{width:100%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;margin:0}#app-sidebar .app-sidebar-header__desc h3[data-v-625289d6]{font-size:16px;padding:0}#app-sidebar .app-sidebar-header__desc h4[data-v-625289d6]{font-size:14px;padding:0;opacity:.7}#app-sidebar .app-sidebar-header__desc .app-sidebar-header__star[data-v-625289d6]{display:block;width:44px;height:44px;padding:14px;position:absolute;top:6px;left:0}#app-sidebar .app-sidebar-header__desc .app-sidebar-header__menu[data-v-625289d6]{position:absolute;right:22px;top:50%;margin-top:-22px;background-color:rgba(127,127,127,0.25);border-radius:22px}#app-sidebar .app-sidebar-header__action[data-v-625289d6]{display:flex;margin:10px;max-height:50px;align-items:center}#app-sidebar .app-sidebar-header--compact[data-v-625289d6]{padding-left:40px}#app-sidebar .app-sidebar-header--compact .app-sidebar-header__figure[data-v-625289d6]{height:64px;width:64px;margin:9px;border-radius:3px;position:absolute;left:0;top:0;z-index:2}#app-sidebar .app-sidebar-header--compact .app-sidebar-header__desc[data-v-625289d6]{padding-left:44px;height:46px}#app-sidebar .app-sidebar-header--compact .app-sidebar-header__desc .app-sidebar-header__star[data-v-625289d6]{margin-top:-9px;z-index:3}#app-sidebar .app-sidebar-header--compact .app-sidebar-header__desc .app-sidebar-header__menu[data-v-625289d6]{right:44px;top:0;margin:0;background-color:transparent}#app-sidebar .app-sidebar-tabs__nav[data-v-625289d6]{margin-top:10px}#app-sidebar .app-sidebar-tabs__nav ul[data-v-625289d6]{display:flex;justify-content:stretch}#app-sidebar .app-sidebar-tabs__tab[data-v-625289d6]{display:block;text-align:center;flex:1 1}#app-sidebar .app-sidebar-tabs__tab a[data-v-625289d6]{display:block;padding-top:25px;padding-bottom:5px;position:relative;border-bottom:1px solid var(--color-border);text-align:center;opacity:.7;color:var(--color-main-text);transition:color var(--animation-quick),opacity var(--animation-quick),border-color var(--animation-quick)}#app-sidebar .app-sidebar-tabs__tab a[data-v-625289d6]:hover,#app-sidebar .app-sidebar-tabs__tab a[data-v-625289d6]:focus,#app-sidebar .app-sidebar-tabs__tab a[data-v-625289d6]:active,#app-sidebar .app-sidebar-tabs__tab a.active[data-v-625289d6]{opacity:1}#app-sidebar .app-sidebar-tabs__tab a:hover .app-sidebar-tabs__tab-icon[data-v-625289d6],#app-sidebar .app-sidebar-tabs__tab a:focus .app-sidebar-tabs__tab-icon[data-v-625289d6],#app-sidebar .app-sidebar-tabs__tab a:active .app-sidebar-tabs__tab-icon[data-v-625289d6],#app-sidebar .app-sidebar-tabs__tab a.active .app-sidebar-tabs__tab-icon[data-v-625289d6]{opacity:1}#app-sidebar .app-sidebar-tabs__tab a[data-v-625289d6]:not(.active):hover,#app-sidebar .app-sidebar-tabs__tab a[data-v-625289d6]:not(.active):focus{box-shadow:inset 0 -1px 0 var(--color-background-darker);border-bottom-color:var(--color-background-darker)}#app-sidebar .app-sidebar-tabs__tab a.active[data-v-625289d6]{font-weight:bold;color:var(--color-text-light);border-bottom-color:var(--color-text-light);box-shadow:inset 0 -1px 0 var(--color-text-light)}#app-sidebar .app-sidebar-tabs__tab a[data-v-625289d6]:focus{border-bottom-color:var(--color-primary-element);box-shadow:inset 0 -1px 0 var(--color-primary-element)}#app-sidebar .app-sidebar-tabs__tab-icon[data-v-625289d6]{height:25px;width:100%;position:absolute;top:0;left:0;opacity:.7;background-position:center 8px;background-size:16px;transition:opacity var(--animation-quick)}#app-sidebar .app-sidebar-tabs__content[data-v-625289d6]{position:relative;flex:1 1 100%}#app-sidebar .app-sidebar-tabs__content--multiple[data-v-625289d6]>:not(section){display:none}.slide-right-leave-active[data-v-625289d6],.slide-right-enter-active[data-v-625289d6]{transition-duration:var(--animation-quick);transition-property:max-width, min-width}.slide-right-enter-to[data-v-625289d6],.slide-right-leave[data-v-625289d6]{min-width:300px;max-width:500px}.slide-right-enter[data-v-625289d6],.slide-right-leave-to[data-v-625289d6]{min-width:0 !important;max-width:0 !important}.fade-leave-active[data-v-625289d6],.fade-enter-active[data-v-625289d6]{transition-duration:var(--animation-quick);transition-property:opacity;position:absolute;top:0;left:0;width:100%;opacity:1}.fade-enter[data-v-625289d6],.fade-leave-to[data-v-625289d6]{opacity:0}\n",""])},function(t,e,n){"use strict";var r=n(59);n.n(r).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,".app-sidebar-header__action button,.app-sidebar-header__action .button,.app-sidebar-header__action input[type='button'],.app-sidebar-header__action input[type='submit'],.app-sidebar-header__action input[type='reset']{padding:6px 22px}\n",""])},function(t,e,n){"use strict";var r=n(60);n.n(r).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,"section[data-v-3f1c0b76]{padding:10px;min-height:100%}section[data-v-3f1c0b76]:focus{border-color:var(--color-primary);box-shadow:0 0 0.2em var(--color-primary);outline:0}\n",""])},function(t,e,n){"use strict";var r=n(61);n.n(r).a},function(t,e,n){e=t.exports=n(1)(!1);var r=n(8),i=r(n(9)),o=r(n(10)),a=r(n(11)),s=r(n(12));e.push([t.i,'@font-face{font-family:"iconfont-vue";src:url('+i+");src:url("+i+') format("embedded-opentype"),url('+o+') format("woff"),url('+a+') format("truetype"),url('+s+') format("svg")}.icon[data-v-9c792ef2]{font-style:normal;font-weight:400}.icon.arrow-left-double[data-v-9c792ef2]:before{font-family:"iconfont-vue";content:""}.icon.arrow-left[data-v-9c792ef2]:before{font-family:"iconfont-vue";content:""}.icon.arrow-right-double[data-v-9c792ef2]:before{font-family:"iconfont-vue";content:""}.icon.arrow-right[data-v-9c792ef2]:before{font-family:"iconfont-vue";content:""}.icon.close[data-v-9c792ef2]:before{font-family:"iconfont-vue";content:""}.icon.confirm-fade[data-v-9c792ef2]:before{font-family:"iconfont-vue";content:""}.icon.confirm[data-v-9c792ef2]:before{font-family:"iconfont-vue";content:""}.icon.menu[data-v-9c792ef2]:before{font-family:"iconfont-vue";content:""}.icon.more[data-v-9c792ef2]:before{font-family:"iconfont-vue";content:""}.icon.pause[data-v-9c792ef2]:before{font-family:"iconfont-vue";content:""}.icon.play[data-v-9c792ef2]:before{font-family:"iconfont-vue";content:""}.modal-mask[data-v-9c792ef2]{position:fixed;z-index:9998;top:0;left:0;display:block;width:100%;height:100%;background-color:rgba(0,0,0,0.92)}.modal-header[data-v-9c792ef2]{position:absolute;z-index:10001;top:0;right:0;left:0;display:flex !important;align-items:center;justify-content:center;width:100%;height:50px;transition:opacity 250ms, visibility 250ms}.modal-header.invisible[style*=\'display:none\'][data-v-9c792ef2],.modal-header.invisible[style*=\'display: none\'][data-v-9c792ef2]{visibility:hidden}.modal-header .modal-title[data-v-9c792ef2]{overflow-x:hidden;box-sizing:border-box;max-width:100%;padding:0 88px;transition:padding ease 100ms;white-space:nowrap;text-overflow:ellipsis;color:#fff;font-size:14px}.modal-header .icons-menu[data-v-9c792ef2]{position:absolute;right:0;display:flex;align-items:center;justify-content:flex-end}.modal-header .icons-menu .icon-close[data-v-9c792ef2]{box-sizing:border-box;margin:3px;padding:10px 11px;color:#fff;background-image:none;font-size:23px}.modal-header .icons-menu .icon-close[data-v-9c792ef2]:before{font-family:"iconfont-vue";font-style:normal;font-weight:400;content:""}.modal-header .icons-menu .play-pause[data-v-9c792ef2]{position:relative;width:50px;height:50px;margin:0;padding:0;cursor:pointer;color:white;border:none;background-color:transparent;font-size:22px}.modal-header .icons-menu .play-pause:hover .icon-play[data-v-9c792ef2],.modal-header .icons-menu .play-pause:hover .icon-pause[data-v-9c792ef2],.modal-header .icons-menu .play-pause:focus .icon-play[data-v-9c792ef2],.modal-header .icons-menu .play-pause:focus .icon-pause[data-v-9c792ef2]{opacity:1;border-radius:22px;background-color:rgba(127,127,127,0.25)}.modal-header .icons-menu .play-pause .icon-play[data-v-9c792ef2],.modal-header .icons-menu .play-pause .icon-pause[data-v-9c792ef2]{box-sizing:border-box;width:44px;height:44px;margin:3px;opacity:.7;background-image:none;cursor:pointer}.modal-header .icons-menu .play-pause .icon-play[data-v-9c792ef2]{padding:11px 13px}.modal-header .icons-menu .play-pause .icon-play[data-v-9c792ef2]:before{font-family:"iconfont-vue";font-style:normal;font-weight:400;content:""}.modal-header .icons-menu .play-pause .icon-pause[data-v-9c792ef2]{padding:12px;font-size:19.5px}.modal-header .icons-menu .play-pause .icon-pause[data-v-9c792ef2]:before{font-family:"iconfont-vue";font-style:normal;font-weight:400;content:""}.modal-header .icons-menu .header-actions[data-v-9c792ef2]{margin:3px;color:white}.modal-header .icons-menu .action-item--single[data-v-9c792ef2]{box-sizing:border-box;width:44px;height:44px;cursor:pointer;background-position:center;background-size:22px}.modal-header .icons-menu[data-v-9c792ef2] .action-item__menutoggle{padding:13px 11px;color:#fff;font-size:22px}.modal-wrapper[data-v-9c792ef2]{display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:100%;height:100%}.modal-wrapper .prev[data-v-9c792ef2],.modal-wrapper .next[data-v-9c792ef2]{z-index:10000;display:flex !important;align-items:center;justify-content:center;width:15%;min-width:60px;height:100%;transition:opacity 250ms, visibility 250ms}.modal-wrapper .prev.invisible[style*=\'display:none\'][data-v-9c792ef2],.modal-wrapper .prev.invisible[style*=\'display: none\'][data-v-9c792ef2],.modal-wrapper .next.invisible[style*=\'display:none\'][data-v-9c792ef2],.modal-wrapper .next.invisible[style*=\'display: none\'][data-v-9c792ef2]{visibility:hidden}.modal-wrapper .icon-next[data-v-9c792ef2],.modal-wrapper .icon-previous[data-v-9c792ef2]{box-sizing:border-box;width:44px;height:44px;padding:12px 11px;color:white;border-radius:22px;background-image:none;font-size:24px}.modal-wrapper .icon-previous[data-v-9c792ef2]:before{font-family:"iconfont-vue";font-style:normal;font-weight:400;content:""}.modal-wrapper .icon-next[data-v-9c792ef2]:before{font-family:"iconfont-vue";font-style:normal;font-weight:400;content:""}.modal-wrapper .modal-container[data-v-9c792ef2]{display:block;overflow:hidden;padding:0;transition:transform 300ms ease;border-radius:var(--border-radius-large);background-color:var(--color-main-background);box-shadow:0 2px 8px rgba(0,0,0,0.33)}.modal-wrapper:not(.modal-wrapper--large):not(.modal-wrapper--full) .modal-container[data-v-9c792ef2]{max-width:900px;max-height:80%}.modal-wrapper--full .modal-container[data-v-9c792ef2]{max-width:100%;max-height:100%;border-radius:0}.modal-wrapper--full .prev[data-v-9c792ef2],.modal-wrapper--full .next[data-v-9c792ef2],.modal-wrapper--spread-navigation .prev[data-v-9c792ef2],.modal-wrapper--spread-navigation .next[data-v-9c792ef2]{position:absolute;width:10%}.modal-wrapper--full .prev[data-v-9c792ef2],.modal-wrapper--spread-navigation .prev[data-v-9c792ef2]{left:0}.modal-wrapper--full .next[data-v-9c792ef2],.modal-wrapper--spread-navigation .next[data-v-9c792ef2]{right:0}.modal-wrapper--large .modal-container[data-v-9c792ef2]{max-width:70%;max-height:90%}.modal-wrapper--large .prev[data-v-9c792ef2],.modal-wrapper--large .next[data-v-9c792ef2]{width:10%}.fade-enter-active[data-v-9c792ef2],.fade-leave-active[data-v-9c792ef2]{transition:opacity 250ms}.fade-enter[data-v-9c792ef2],.fade-leave-to[data-v-9c792ef2]{opacity:0}.fade-visibility-enter[data-v-9c792ef2],.fade-visibility-leave-to[data-v-9c792ef2]{visibility:hidden;opacity:0}.modal-in-enter-active[data-v-9c792ef2],.modal-in-leave-active[data-v-9c792ef2],.modal-out-enter-active[data-v-9c792ef2],.modal-out-leave-active[data-v-9c792ef2]{transition:opacity 250ms}.modal-in-enter[data-v-9c792ef2],.modal-in-leave-to[data-v-9c792ef2],.modal-out-enter[data-v-9c792ef2],.modal-out-leave-to[data-v-9c792ef2]{opacity:0}.modal-in-enter .modal-container[data-v-9c792ef2],.modal-in-leave-to .modal-container[data-v-9c792ef2]{transform:scale(0.9)}.modal-out-enter .modal-container[data-v-9c792ef2],.modal-out-leave-to .modal-container[data-v-9c792ef2]{transform:scale(1.1)}.modal-mask .play-pause .progress-ring[data-v-9c792ef2]{position:absolute;top:0;left:0;transform:rotate(-90deg)}.modal-mask .play-pause .progress-ring .progress-ring__circle[data-v-9c792ef2]{transition:100ms stroke-dashoffset;transform-origin:50% 50%;animation:progressring-data-v-9c792ef2 linear 3s infinite;stroke-linecap:round;stroke-dashoffset:94.24778;stroke-dasharray:94.24778}.modal-mask .play-pause--paused .icon-pause[data-v-9c792ef2]{animation:breath-data-v-9c792ef2 2s cubic-bezier(0.4, 0, 0.2, 1) infinite}.modal-mask .play-pause--paused .progress-ring__circle[data-v-9c792ef2]{animation-play-state:paused !important}@keyframes progressring-data-v-9c792ef2{from{stroke-dashoffset:94.24778}to{stroke-dashoffset:0}}@keyframes breath-data-v-9c792ef2{0%{opacity:1}50%{opacity:0}100%{opacity:1}}\n',""])},function(t,e,n){"use strict";var r=n(62);n.n(r).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,".option[data-v-30d8da34]{display:flex;align-items:center;width:100%;height:32px}.option__avatar[data-v-30d8da34]{flex:0 0 32px;width:32px;height:32px;margin-right:6px}.option__desc[data-v-30d8da34]{display:flex;flex:1 1;flex-direction:column;justify-content:center;min-width:0}.option__desc--lineone[data-v-30d8da34]{color:var(--color-text-light)}.option__desc--linetwo[data-v-30d8da34]{opacity:.7}.option__desc--lineone[data-v-30d8da34],.option__desc--linetwo[data-v-30d8da34]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.option__desc--lineone strong[data-v-30d8da34],.option__desc--linetwo strong[data-v-30d8da34]{font-weight:bold}.option__icon[data-v-30d8da34]{flex:0 0 44px;width:44px;height:44px;margin:-6px;opacity:.5;background-position:center;background-size:16px}\n",""])},function(t,e,n){"use strict";var r=n(63);n.n(r).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,".name-parts[data-v-c4325954]{display:flex;max-width:100%}.name-parts__first[data-v-c4325954]{overflow:hidden;text-overflow:ellipsis}.name-parts__first[data-v-c4325954],.name-parts__last[data-v-c4325954]{white-space:pre}.name-parts__first strong[data-v-c4325954],.name-parts__last strong[data-v-c4325954]{font-weight:bold}\n",""])},function(t,e,n){var r=n(180);"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals),(0,n(2).default)("b5985a26",r,!0,{})},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,".multiselect[data-v-6673a70]{margin:0;padding:0 !important;display:inline-block;min-width:160px;position:relative;background-color:var(--color-main-background)}.multiselect[data-v-6673a70].multiselect--active input.multiselect__input{opacity:1 !important;cursor:text !important;border-radius:var(--border-radius) var(--border-radius) 0 0}.multiselect[data-v-6673a70].multiselect--active .multiselect__limit{display:none}.multiselect[data-v-6673a70].multiselect--active.multiselect--above input.multiselect__input{border-radius:0 0 var(--border-radius) var(--border-radius)}.multiselect[data-v-6673a70].multiselect--disabled,.multiselect[data-v-6673a70].multiselect--disabled .multiselect__single{background-color:var(--color-background-dark) !important}.multiselect[data-v-6673a70].icon-loading-small::after{left:100%;margin-left:-24px}.multiselect[data-v-6673a70] .multiselect__tags{display:flex;flex-wrap:nowrap;overflow:hidden;border:1px solid var(--color-border-dark);cursor:pointer;position:relative;border-radius:3px;height:34px}.multiselect[data-v-6673a70] .multiselect__tags .multiselect__tags-wrap{align-items:center;display:inline-flex;overflow:hidden;max-width:100%;position:relative;padding:3px 5px;flex-grow:1}.multiselect[data-v-6673a70] .multiselect__tags .multiselect__tags-wrap:empty ~ input.multiselect__input{opacity:1 !important}.multiselect[data-v-6673a70] .multiselect__tags .multiselect__tags-wrap:empty ~ input.multiselect__input+span:not(.multiselect__single){display:none}.multiselect[data-v-6673a70] .multiselect__tags .multiselect__tags-wrap .multiselect__tag{flex:1 0 0;line-height:20px;padding:1px 5px;background-image:none;color:var(--color-text-lighter);border:1px solid var(--color-border-dark);display:inline-flex;align-items:center;border-radius:3px;min-width:0;max-width:50%;max-width:fit-content;max-width:-moz-fit-content}.multiselect[data-v-6673a70] .multiselect__tags .multiselect__tags-wrap .multiselect__tag:only-child{flex:0 1 auto}.multiselect[data-v-6673a70] .multiselect__tags .multiselect__tags-wrap .multiselect__tag:not(:last-child){margin-right:5px}.multiselect[data-v-6673a70] .multiselect__tags .multiselect__tags-wrap .multiselect__tag>span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.multiselect[data-v-6673a70] .multiselect__tags .multiselect__single,.multiselect[data-v-6673a70] .multiselect__tags .multiselect__placeholder{padding:7px 6px;flex:0 0 100%;z-index:1;background-color:var(--color-main-background);cursor:pointer;line-height:18px;color:var(--color-text-lighter)}.multiselect[data-v-6673a70] .multiselect__tags .multiselect__strong,.multiselect[data-v-6673a70] .multiselect__tags .multiselect__limit{flex:0 0 auto;line-height:20px;color:var(--color-text-lighter);display:inline-flex;align-items:center;opacity:.7;margin-right:5px;z-index:5}.multiselect[data-v-6673a70] .multiselect__tags input.multiselect__input{width:100% !important;position:absolute !important;top:0;left:0;margin:0;opacity:0;height:100%;border:none;display:block !important;cursor:pointer;padding:7px 6px !important}.multiselect[data-v-6673a70] .multiselect__content-wrapper{position:absolute;width:100%;margin-top:-1px;border:1px solid var(--color-border-dark);background:var(--color-main-background);z-index:50;max-height:250px;overflow-y:auto;border-radius:0 0 var(--border-radius) var(--border-radius)}.multiselect[data-v-6673a70] .multiselect__content-wrapper .multiselect__content{width:100%;padding:0}.multiselect[data-v-6673a70] .multiselect__content-wrapper li{position:relative;display:flex;align-items:center;background-color:transparent}.multiselect[data-v-6673a70] .multiselect__content-wrapper li,.multiselect[data-v-6673a70] .multiselect__content-wrapper li span{cursor:pointer}.multiselect[data-v-6673a70] .multiselect__content-wrapper li>span{padding:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:0;height:auto;min-height:1em;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:inline-flex;align-items:center;background-color:transparent;color:var(--color-text-lighter);width:100%}.multiselect[data-v-6673a70] .multiselect__content-wrapper li>span::before{content:' ';background-repeat:no-repeat;background-position:center;min-width:16px;min-height:16px;display:block;opacity:.5;margin-right:5px;visibility:hidden}.multiselect[data-v-6673a70] .multiselect__content-wrapper li>span.multiselect__option--disabled{background-color:var(--color-background-dark);opacity:.5}.multiselect[data-v-6673a70] .multiselect__content-wrapper li>span.multiselect__option--highlight{color:var(--color-main-text);background-color:var(--color-background-dark)}.multiselect[data-v-6673a70] .multiselect__content-wrapper li>span:not(.multiselect__option--disabled):hover::before{opacity:.3}.multiselect[data-v-6673a70] .multiselect__content-wrapper li>span.multiselect__option--selected::before,.multiselect[data-v-6673a70] .multiselect__content-wrapper li>span:not(.multiselect__option--disabled):hover::before{visibility:visible}.multiselect[data-v-6673a70].multiselect--above .multiselect__content-wrapper{bottom:100%;margin-bottom:-1px}.multiselect[data-v-6673a70].multiselect--multiple .multiselect__content-wrapper li>span::before{background-image:var(--icon-checkmark-000)}.multiselect[data-v-6673a70].multiselect--multiple .multiselect__content-wrapper li>span[data-select='create']::before{background-image:var(--icon-add-000);visibility:visible}.multiselect[data-v-6673a70].multiselect--single .multiselect__content-wrapper li>span::before{display:none}.multiselect[data-v-6673a70]:hover .multiselect__placeholder,.multiselect[data-v-6673a70] input.multiselect__input .multiselect__placeholder{color:var(--color-main-text)}\n",""])},function(t,e){t.exports=function(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}},function(t,e,n){"use strict";n.r(e);var r={};n.r(r),n.d(r,"ActionButton",(function(){return a.default})),n.d(r,"ActionCheckbox",(function(){return s.default})),n.d(r,"ActionInput",(function(){return c.default})),n.d(r,"ActionLink",(function(){return u.default})),n.d(r,"ActionRouter",(function(){return l.default})),n.d(r,"ActionText",(function(){return f.default})),n.d(r,"ActionTextEditable",(function(){return d.default})),n.d(r,"Actions",(function(){return p.default})),n.d(r,"AppContent",(function(){return h.default})),n.d(r,"AppContentDetails",(function(){return v.default})),n.d(r,"AppContentList",(function(){return m.default})),n.d(r,"AppNavigation",(function(){return A.default})),n.d(r,"AppNavigationCaption",(function(){return g.default})),n.d(r,"AppNavigationCounter",(function(){return y.default})),n.d(r,"AppNavigationItem",(function(){return b.default})),n.d(r,"AppNavigationNew",(function(){return _.default})),n.d(r,"AppNavigationSettings",(function(){return x.default})),n.d(r,"AppNavigationSpacer",(function(){return w.default})),n.d(r,"AppSidebar",(function(){return C.default})),n.d(r,"AppSidebarTab",(function(){return k.default})),n.d(r,"Avatar",(function(){return T.default})),n.d(r,"Content",(function(){return E.default})),n.d(r,"DatetimePicker",(function(){return S.default})),n.d(r,"Modal",(function(){return O.default})),n.d(r,"Multiselect",(function(){return M.default})),n.d(r,"PopoverMenu",(function(){return D.default}));var i=n(181),o=n.n(i),a=n(65),s=n(127),c=n(128),u=n(129),l=n(130),f=n(131),d=n(132),p=n(30),h=n(133),v=n(134),m=n(135),A=n(136),g=n(137),y=n(67),b=n(138),_=n(139),x=n(140),w=n(141),C=n(142),k=n(143),T=n(64),E=n(144),S=n(66),O=n(126),M=n(125),D=n(24),I=n(6),B=n(123),N=n(124);function j(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n} +/** + * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */function L(t){Object.values(r).forEach((function(e){t.component(e.name,e)}))} +/** + * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */n.d(e,"ActionButton",(function(){return a.default})),n.d(e,"ActionCheckbox",(function(){return s.default})),n.d(e,"ActionInput",(function(){return c.default})),n.d(e,"ActionLink",(function(){return u.default})),n.d(e,"ActionRouter",(function(){return l.default})),n.d(e,"ActionText",(function(){return f.default})),n.d(e,"ActionTextEditable",(function(){return d.default})),n.d(e,"Actions",(function(){return p.default})),n.d(e,"AppContent",(function(){return h.default})),n.d(e,"AppContentDetails",(function(){return v.default})),n.d(e,"AppContentList",(function(){return m.default})),n.d(e,"AppNavigation",(function(){return A.default})),n.d(e,"AppNavigationCaption",(function(){return g.default})),n.d(e,"AppNavigationCounter",(function(){return y.default})),n.d(e,"AppNavigationItem",(function(){return b.default})),n.d(e,"AppNavigationNew",(function(){return _.default})),n.d(e,"AppNavigationSettings",(function(){return x.default})),n.d(e,"AppNavigationSpacer",(function(){return w.default})),n.d(e,"AppSidebar",(function(){return C.default})),n.d(e,"AppSidebarTab",(function(){return k.default})),n.d(e,"Avatar",(function(){return T.default})),n.d(e,"Content",(function(){return E.default})),n.d(e,"DatetimePicker",(function(){return S.default})),n.d(e,"Modal",(function(){return O.default})),n.d(e,"Multiselect",(function(){return M.default})),n.d(e,"PopoverMenu",(function(){return D.default})),n.d(e,"Tooltip",(function(){return I.default})),n.d(e,"isFullscreen",(function(){return B.default})),n.d(e,"isMobile",(function(){return N.default})),"undefined"!=typeof window&&window.Vue&&L(window.Vue),e.default=function(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?j(n,!0).forEach((function(e){o()(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):j(n).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}({install:L},r)}])}))},,,function(t,e,n){"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var n=function(t,e){var n=t[1]||"",r=t[3];if(!r)return n;if(e&&"function"==typeof btoa){var i=(a=r,s=btoa(unescape(encodeURIComponent(JSON.stringify(a)))),c="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(s),"/*# ".concat(c," */")),o=r.sources.map((function(t){return"/*# sourceURL=".concat(r.sourceRoot).concat(t," */")}));return[n].concat(o).concat([i]).join("\n")}var a,s,c;return[n].join("\n")}(e,t);return e[2]?"@media ".concat(e[2],"{").concat(n,"}"):n})).join("")},e.i=function(t,n){"string"==typeof t&&(t=[[null,t,""]]);for(var r={},i=0;i<this.length;i++){var o=this[i][0];null!=o&&(r[o]=!0)}for(var a=0;a<t.length;a++){var s=t[a];null!=s[0]&&r[s[0]]||(n&&!s[2]?s[2]=n:n&&(s[2]="(".concat(s[2],") and (").concat(n,")")),e.push(s))}},e}},function(t,e,n){"use strict";var r,i={},o=function(){return void 0===r&&(r=Boolean(window&&document&&document.all&&!window.atob)),r},a=function(){var t={};return function(e){if(void 0===t[e]){var n=document.querySelector(e);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(t){n=null}t[e]=n}return t[e]}}();function s(t,e){for(var n=[],r={},i=0;i<t.length;i++){var o=t[i],a=e.base?o[0]+e.base:o[0],s={css:o[1],media:o[2],sourceMap:o[3]};r[a]?r[a].parts.push(s):n.push(r[a]={id:a,parts:[s]})}return n}function c(t,e){for(var n=0;n<t.length;n++){var r=t[n],o=i[r.id],a=0;if(o){for(o.refs++;a<o.parts.length;a++)o.parts[a](r.parts[a]);for(;a<r.parts.length;a++)o.parts.push(m(r.parts[a],e))}else{for(var s=[];a<r.parts.length;a++)s.push(m(r.parts[a],e));i[r.id]={id:r.id,refs:1,parts:s}}}}function u(t){var e=document.createElement("style");if(void 0===t.attributes.nonce){var r=n.nc;r&&(t.attributes.nonce=r)}if(Object.keys(t.attributes).forEach((function(n){e.setAttribute(n,t.attributes[n])})),"function"==typeof t.insert)t.insert(e);else{var i=a(t.insert||"head");if(!i)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");i.appendChild(e)}return e}var l,f=(l=[],function(t,e){return l[t]=e,l.filter(Boolean).join("\n")});function d(t,e,n,r){var i=n?"":r.css;if(t.styleSheet)t.styleSheet.cssText=f(e,i);else{var o=document.createTextNode(i),a=t.childNodes;a[e]&&t.removeChild(a[e]),a.length?t.insertBefore(o,a[e]):t.appendChild(o)}}function p(t,e,n){var r=n.css,i=n.media,o=n.sourceMap;if(i&&t.setAttribute("media",i),o&&btoa&&(r+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(o))))," */")),t.styleSheet)t.styleSheet.cssText=r;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(r))}}var h=null,v=0;function m(t,e){var n,r,i;if(e.singleton){var o=v++;n=h||(h=u(e)),r=d.bind(null,n,o,!1),i=d.bind(null,n,o,!0)}else n=u(e),r=p.bind(null,n,e),i=function(){!function(t){if(null===t.parentNode)return!1;t.parentNode.removeChild(t)}(n)};return r(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;r(t=e)}else i()}}t.exports=function(t,e){(e=e||{}).attributes="object"==typeof e.attributes?e.attributes:{},e.singleton||"boolean"==typeof e.singleton||(e.singleton=o());var n=s(t,e);return c(n,e),function(t){for(var r=[],o=0;o<n.length;o++){var a=n[o],u=i[a.id];u&&(u.refs--,r.push(u))}t&&c(s(t,e),e);for(var l=0;l<r.length;l++){var f=r[l];if(0===f.refs){for(var d=0;d<f.parts.length;d++)f.parts[d]();delete i[f.id]}}}}},function(t,e,n){(function(t,r){var i; +/** + * @license + * Lodash <https://lodash.com/> + * Copyright OpenJS Foundation and other contributors <https://openjsf.org/> + * Released under MIT license <https://lodash.com/license> + * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE> + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */(function(){var o,a=200,s="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",c="Expected a function",u="__lodash_hash_undefined__",l=500,f="__lodash_placeholder__",d=1,p=2,h=4,v=1,m=2,A=1,g=2,y=4,b=8,_=16,x=32,w=64,C=128,k=256,T=512,E=30,S="...",O=800,M=16,D=1,I=2,B=1/0,N=9007199254740991,j=17976931348623157e292,L=NaN,P=4294967295,$=P-1,R=P>>>1,F=[["ary",C],["bind",A],["bindKey",g],["curry",b],["curryRight",_],["flip",T],["partial",x],["partialRight",w],["rearg",k]],z="[object Arguments]",U="[object Array]",H="[object AsyncFunction]",Y="[object Boolean]",V="[object Date]",G="[object DOMException]",Q="[object Error]",W="[object Function]",q="[object GeneratorFunction]",Z="[object Map]",X="[object Number]",K="[object Null]",J="[object Object]",tt="[object Proxy]",et="[object RegExp]",nt="[object Set]",rt="[object String]",it="[object Symbol]",ot="[object Undefined]",at="[object WeakMap]",st="[object WeakSet]",ct="[object ArrayBuffer]",ut="[object DataView]",lt="[object Float32Array]",ft="[object Float64Array]",dt="[object Int8Array]",pt="[object Int16Array]",ht="[object Int32Array]",vt="[object Uint8Array]",mt="[object Uint8ClampedArray]",At="[object Uint16Array]",gt="[object Uint32Array]",yt=/\b__p \+= '';/g,bt=/\b(__p \+=) '' \+/g,_t=/(__e\(.*?\)|\b__t\)) \+\n'';/g,xt=/&(?:amp|lt|gt|quot|#39);/g,wt=/[&<>"']/g,Ct=RegExp(xt.source),kt=RegExp(wt.source),Tt=/<%-([\s\S]+?)%>/g,Et=/<%([\s\S]+?)%>/g,St=/<%=([\s\S]+?)%>/g,Ot=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Mt=/^\w*$/,Dt=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,It=/[\\^$.*+?()[\]{}|]/g,Bt=RegExp(It.source),Nt=/^\s+|\s+$/g,jt=/^\s+/,Lt=/\s+$/,Pt=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,$t=/\{\n\/\* \[wrapped with (.+)\] \*/,Rt=/,? & /,Ft=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,zt=/\\(\\)?/g,Ut=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Ht=/\w*$/,Yt=/^[-+]0x[0-9a-f]+$/i,Vt=/^0b[01]+$/i,Gt=/^\[object .+?Constructor\]$/,Qt=/^0o[0-7]+$/i,Wt=/^(?:0|[1-9]\d*)$/,qt=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Zt=/($^)/,Xt=/['\n\r\u2028\u2029\\]/g,Kt="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",Jt="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",te="[\\ud800-\\udfff]",ee="["+Jt+"]",ne="["+Kt+"]",re="\\d+",ie="[\\u2700-\\u27bf]",oe="[a-z\\xdf-\\xf6\\xf8-\\xff]",ae="[^\\ud800-\\udfff"+Jt+re+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",se="\\ud83c[\\udffb-\\udfff]",ce="[^\\ud800-\\udfff]",ue="(?:\\ud83c[\\udde6-\\uddff]){2}",le="[\\ud800-\\udbff][\\udc00-\\udfff]",fe="[A-Z\\xc0-\\xd6\\xd8-\\xde]",de="(?:"+oe+"|"+ae+")",pe="(?:"+fe+"|"+ae+")",he="(?:"+ne+"|"+se+")"+"?",ve="[\\ufe0e\\ufe0f]?"+he+("(?:\\u200d(?:"+[ce,ue,le].join("|")+")[\\ufe0e\\ufe0f]?"+he+")*"),me="(?:"+[ie,ue,le].join("|")+")"+ve,Ae="(?:"+[ce+ne+"?",ne,ue,le,te].join("|")+")",ge=RegExp("['’]","g"),ye=RegExp(ne,"g"),be=RegExp(se+"(?="+se+")|"+Ae+ve,"g"),_e=RegExp([fe+"?"+oe+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[ee,fe,"$"].join("|")+")",pe+"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[ee,fe+de,"$"].join("|")+")",fe+"?"+de+"+(?:['’](?:d|ll|m|re|s|t|ve))?",fe+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",re,me].join("|"),"g"),xe=RegExp("[\\u200d\\ud800-\\udfff"+Kt+"\\ufe0e\\ufe0f]"),we=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Ce=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],ke=-1,Te={};Te[lt]=Te[ft]=Te[dt]=Te[pt]=Te[ht]=Te[vt]=Te[mt]=Te[At]=Te[gt]=!0,Te[z]=Te[U]=Te[ct]=Te[Y]=Te[ut]=Te[V]=Te[Q]=Te[W]=Te[Z]=Te[X]=Te[J]=Te[et]=Te[nt]=Te[rt]=Te[at]=!1;var Ee={};Ee[z]=Ee[U]=Ee[ct]=Ee[ut]=Ee[Y]=Ee[V]=Ee[lt]=Ee[ft]=Ee[dt]=Ee[pt]=Ee[ht]=Ee[Z]=Ee[X]=Ee[J]=Ee[et]=Ee[nt]=Ee[rt]=Ee[it]=Ee[vt]=Ee[mt]=Ee[At]=Ee[gt]=!0,Ee[Q]=Ee[W]=Ee[at]=!1;var Se={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Oe=parseFloat,Me=parseInt,De="object"==typeof t&&t&&t.Object===Object&&t,Ie="object"==typeof self&&self&&self.Object===Object&&self,Be=De||Ie||Function("return this")(),Ne=e&&!e.nodeType&&e,je=Ne&&"object"==typeof r&&r&&!r.nodeType&&r,Le=je&&je.exports===Ne,Pe=Le&&De.process,$e=function(){try{var t=je&&je.require&&je.require("util").types;return t||Pe&&Pe.binding&&Pe.binding("util")}catch(t){}}(),Re=$e&&$e.isArrayBuffer,Fe=$e&&$e.isDate,ze=$e&&$e.isMap,Ue=$e&&$e.isRegExp,He=$e&&$e.isSet,Ye=$e&&$e.isTypedArray;function Ve(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}function Ge(t,e,n,r){for(var i=-1,o=null==t?0:t.length;++i<o;){var a=t[i];e(r,a,n(a),t)}return r}function Qe(t,e){for(var n=-1,r=null==t?0:t.length;++n<r&&!1!==e(t[n],n,t););return t}function We(t,e){for(var n=null==t?0:t.length;n--&&!1!==e(t[n],n,t););return t}function qe(t,e){for(var n=-1,r=null==t?0:t.length;++n<r;)if(!e(t[n],n,t))return!1;return!0}function Ze(t,e){for(var n=-1,r=null==t?0:t.length,i=0,o=[];++n<r;){var a=t[n];e(a,n,t)&&(o[i++]=a)}return o}function Xe(t,e){return!!(null==t?0:t.length)&&cn(t,e,0)>-1}function Ke(t,e,n){for(var r=-1,i=null==t?0:t.length;++r<i;)if(n(e,t[r]))return!0;return!1}function Je(t,e){for(var n=-1,r=null==t?0:t.length,i=Array(r);++n<r;)i[n]=e(t[n],n,t);return i}function tn(t,e){for(var n=-1,r=e.length,i=t.length;++n<r;)t[i+n]=e[n];return t}function en(t,e,n,r){var i=-1,o=null==t?0:t.length;for(r&&o&&(n=t[++i]);++i<o;)n=e(n,t[i],i,t);return n}function nn(t,e,n,r){var i=null==t?0:t.length;for(r&&i&&(n=t[--i]);i--;)n=e(n,t[i],i,t);return n}function rn(t,e){for(var n=-1,r=null==t?0:t.length;++n<r;)if(e(t[n],n,t))return!0;return!1}var on=dn("length");function an(t,e,n){var r;return n(t,(function(t,n,i){if(e(t,n,i))return r=n,!1})),r}function sn(t,e,n,r){for(var i=t.length,o=n+(r?1:-1);r?o--:++o<i;)if(e(t[o],o,t))return o;return-1}function cn(t,e,n){return e==e?function(t,e,n){var r=n-1,i=t.length;for(;++r<i;)if(t[r]===e)return r;return-1}(t,e,n):sn(t,ln,n)}function un(t,e,n,r){for(var i=n-1,o=t.length;++i<o;)if(r(t[i],e))return i;return-1}function ln(t){return t!=t}function fn(t,e){var n=null==t?0:t.length;return n?vn(t,e)/n:L}function dn(t){return function(e){return null==e?o:e[t]}}function pn(t){return function(e){return null==t?o:t[e]}}function hn(t,e,n,r,i){return i(t,(function(t,i,o){n=r?(r=!1,t):e(n,t,i,o)})),n}function vn(t,e){for(var n,r=-1,i=t.length;++r<i;){var a=e(t[r]);a!==o&&(n=n===o?a:n+a)}return n}function mn(t,e){for(var n=-1,r=Array(t);++n<t;)r[n]=e(n);return r}function An(t){return function(e){return t(e)}}function gn(t,e){return Je(e,(function(e){return t[e]}))}function yn(t,e){return t.has(e)}function bn(t,e){for(var n=-1,r=t.length;++n<r&&cn(e,t[n],0)>-1;);return n}function _n(t,e){for(var n=t.length;n--&&cn(e,t[n],0)>-1;);return n}var xn=pn({"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"}),wn=pn({"&":"&","<":"<",">":">",'"':""","'":"'"});function Cn(t){return"\\"+Se[t]}function kn(t){return xe.test(t)}function Tn(t){var e=-1,n=Array(t.size);return t.forEach((function(t,r){n[++e]=[r,t]})),n}function En(t,e){return function(n){return t(e(n))}}function Sn(t,e){for(var n=-1,r=t.length,i=0,o=[];++n<r;){var a=t[n];a!==e&&a!==f||(t[n]=f,o[i++]=n)}return o}function On(t){var e=-1,n=Array(t.size);return t.forEach((function(t){n[++e]=t})),n}function Mn(t){var e=-1,n=Array(t.size);return t.forEach((function(t){n[++e]=[t,t]})),n}function Dn(t){return kn(t)?function(t){var e=be.lastIndex=0;for(;be.test(t);)++e;return e}(t):on(t)}function In(t){return kn(t)?function(t){return t.match(be)||[]}(t):function(t){return t.split("")}(t)}var Bn=pn({"&":"&","<":"<",">":">",""":'"',"'":"'"});var Nn=function t(e){var n,r=(e=null==e?Be:Nn.defaults(Be.Object(),e,Nn.pick(Be,Ce))).Array,i=e.Date,Kt=e.Error,Jt=e.Function,te=e.Math,ee=e.Object,ne=e.RegExp,re=e.String,ie=e.TypeError,oe=r.prototype,ae=Jt.prototype,se=ee.prototype,ce=e["__core-js_shared__"],ue=ae.toString,le=se.hasOwnProperty,fe=0,de=(n=/[^.]+$/.exec(ce&&ce.keys&&ce.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",pe=se.toString,he=ue.call(ee),ve=Be._,me=ne("^"+ue.call(le).replace(It,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Ae=Le?e.Buffer:o,be=e.Symbol,xe=e.Uint8Array,Se=Ae?Ae.allocUnsafe:o,De=En(ee.getPrototypeOf,ee),Ie=ee.create,Ne=se.propertyIsEnumerable,je=oe.splice,Pe=be?be.isConcatSpreadable:o,$e=be?be.iterator:o,on=be?be.toStringTag:o,pn=function(){try{var t=Ro(ee,"defineProperty");return t({},"",{}),t}catch(t){}}(),jn=e.clearTimeout!==Be.clearTimeout&&e.clearTimeout,Ln=i&&i.now!==Be.Date.now&&i.now,Pn=e.setTimeout!==Be.setTimeout&&e.setTimeout,$n=te.ceil,Rn=te.floor,Fn=ee.getOwnPropertySymbols,zn=Ae?Ae.isBuffer:o,Un=e.isFinite,Hn=oe.join,Yn=En(ee.keys,ee),Vn=te.max,Gn=te.min,Qn=i.now,Wn=e.parseInt,qn=te.random,Zn=oe.reverse,Xn=Ro(e,"DataView"),Kn=Ro(e,"Map"),Jn=Ro(e,"Promise"),tr=Ro(e,"Set"),er=Ro(e,"WeakMap"),nr=Ro(ee,"create"),rr=er&&new er,ir={},or=fa(Xn),ar=fa(Kn),sr=fa(Jn),cr=fa(tr),ur=fa(er),lr=be?be.prototype:o,fr=lr?lr.valueOf:o,dr=lr?lr.toString:o;function pr(t){if(Ss(t)&&!As(t)&&!(t instanceof Ar)){if(t instanceof mr)return t;if(le.call(t,"__wrapped__"))return da(t)}return new mr(t)}var hr=function(){function t(){}return function(e){if(!Es(e))return{};if(Ie)return Ie(e);t.prototype=e;var n=new t;return t.prototype=o,n}}();function vr(){}function mr(t,e){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!e,this.__index__=0,this.__values__=o}function Ar(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=P,this.__views__=[]}function gr(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function yr(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function br(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function _r(t){var e=-1,n=null==t?0:t.length;for(this.__data__=new br;++e<n;)this.add(t[e])}function xr(t){var e=this.__data__=new yr(t);this.size=e.size}function wr(t,e){var n=As(t),r=!n&&ms(t),i=!n&&!r&&_s(t),o=!n&&!r&&!i&&Ls(t),a=n||r||i||o,s=a?mn(t.length,re):[],c=s.length;for(var u in t)!e&&!le.call(t,u)||a&&("length"==u||i&&("offset"==u||"parent"==u)||o&&("buffer"==u||"byteLength"==u||"byteOffset"==u)||Go(u,c))||s.push(u);return s}function Cr(t){var e=t.length;return e?t[_i(0,e-1)]:o}function kr(t,e){return ca(no(t),Nr(e,0,t.length))}function Tr(t){return ca(no(t))}function Er(t,e,n){(n===o||ps(t[e],n))&&(n!==o||e in t)||Ir(t,e,n)}function Sr(t,e,n){var r=t[e];le.call(t,e)&&ps(r,n)&&(n!==o||e in t)||Ir(t,e,n)}function Or(t,e){for(var n=t.length;n--;)if(ps(t[n][0],e))return n;return-1}function Mr(t,e,n,r){return Rr(t,(function(t,i,o){e(r,t,n(t),o)})),r}function Dr(t,e){return t&&ro(e,ic(e),t)}function Ir(t,e,n){"__proto__"==e&&pn?pn(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n}function Br(t,e){for(var n=-1,i=e.length,a=r(i),s=null==t;++n<i;)a[n]=s?o:Js(t,e[n]);return a}function Nr(t,e,n){return t==t&&(n!==o&&(t=t<=n?t:n),e!==o&&(t=t>=e?t:e)),t}function jr(t,e,n,r,i,a){var s,c=e&d,u=e&p,l=e&h;if(n&&(s=i?n(t,r,i,a):n(t)),s!==o)return s;if(!Es(t))return t;var f=As(t);if(f){if(s=function(t){var e=t.length,n=new t.constructor(e);e&&"string"==typeof t[0]&&le.call(t,"index")&&(n.index=t.index,n.input=t.input);return n}(t),!c)return no(t,s)}else{var v=Uo(t),m=v==W||v==q;if(_s(t))return Zi(t,c);if(v==J||v==z||m&&!i){if(s=u||m?{}:Yo(t),!c)return u?function(t,e){return ro(t,zo(t),e)}(t,function(t,e){return t&&ro(e,oc(e),t)}(s,t)):function(t,e){return ro(t,Fo(t),e)}(t,Dr(s,t))}else{if(!Ee[v])return i?t:{};s=function(t,e,n){var r=t.constructor;switch(e){case ct:return Xi(t);case Y:case V:return new r(+t);case ut:return function(t,e){var n=e?Xi(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}(t,n);case lt:case ft:case dt:case pt:case ht:case vt:case mt:case At:case gt:return Ki(t,n);case Z:return new r;case X:case rt:return new r(t);case et:return function(t){var e=new t.constructor(t.source,Ht.exec(t));return e.lastIndex=t.lastIndex,e}(t);case nt:return new r;case it:return i=t,fr?ee(fr.call(i)):{}}var i}(t,v,c)}}a||(a=new xr);var A=a.get(t);if(A)return A;a.set(t,s),Bs(t)?t.forEach((function(r){s.add(jr(r,e,n,r,t,a))})):Os(t)&&t.forEach((function(r,i){s.set(i,jr(r,e,n,i,t,a))}));var g=f?o:(l?u?Io:Do:u?oc:ic)(t);return Qe(g||t,(function(r,i){g&&(r=t[i=r]),Sr(s,i,jr(r,e,n,i,t,a))})),s}function Lr(t,e,n){var r=n.length;if(null==t)return!r;for(t=ee(t);r--;){var i=n[r],a=e[i],s=t[i];if(s===o&&!(i in t)||!a(s))return!1}return!0}function Pr(t,e,n){if("function"!=typeof t)throw new ie(c);return ia((function(){t.apply(o,n)}),e)}function $r(t,e,n,r){var i=-1,o=Xe,s=!0,c=t.length,u=[],l=e.length;if(!c)return u;n&&(e=Je(e,An(n))),r?(o=Ke,s=!1):e.length>=a&&(o=yn,s=!1,e=new _r(e));t:for(;++i<c;){var f=t[i],d=null==n?f:n(f);if(f=r||0!==f?f:0,s&&d==d){for(var p=l;p--;)if(e[p]===d)continue t;u.push(f)}else o(e,d,r)||u.push(f)}return u}pr.templateSettings={escape:Tt,evaluate:Et,interpolate:St,variable:"",imports:{_:pr}},pr.prototype=vr.prototype,pr.prototype.constructor=pr,mr.prototype=hr(vr.prototype),mr.prototype.constructor=mr,Ar.prototype=hr(vr.prototype),Ar.prototype.constructor=Ar,gr.prototype.clear=function(){this.__data__=nr?nr(null):{},this.size=0},gr.prototype.delete=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e},gr.prototype.get=function(t){var e=this.__data__;if(nr){var n=e[t];return n===u?o:n}return le.call(e,t)?e[t]:o},gr.prototype.has=function(t){var e=this.__data__;return nr?e[t]!==o:le.call(e,t)},gr.prototype.set=function(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=nr&&e===o?u:e,this},yr.prototype.clear=function(){this.__data__=[],this.size=0},yr.prototype.delete=function(t){var e=this.__data__,n=Or(e,t);return!(n<0)&&(n==e.length-1?e.pop():je.call(e,n,1),--this.size,!0)},yr.prototype.get=function(t){var e=this.__data__,n=Or(e,t);return n<0?o:e[n][1]},yr.prototype.has=function(t){return Or(this.__data__,t)>-1},yr.prototype.set=function(t,e){var n=this.__data__,r=Or(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this},br.prototype.clear=function(){this.size=0,this.__data__={hash:new gr,map:new(Kn||yr),string:new gr}},br.prototype.delete=function(t){var e=Po(this,t).delete(t);return this.size-=e?1:0,e},br.prototype.get=function(t){return Po(this,t).get(t)},br.prototype.has=function(t){return Po(this,t).has(t)},br.prototype.set=function(t,e){var n=Po(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this},_r.prototype.add=_r.prototype.push=function(t){return this.__data__.set(t,u),this},_r.prototype.has=function(t){return this.__data__.has(t)},xr.prototype.clear=function(){this.__data__=new yr,this.size=0},xr.prototype.delete=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n},xr.prototype.get=function(t){return this.__data__.get(t)},xr.prototype.has=function(t){return this.__data__.has(t)},xr.prototype.set=function(t,e){var n=this.__data__;if(n instanceof yr){var r=n.__data__;if(!Kn||r.length<a-1)return r.push([t,e]),this.size=++n.size,this;n=this.__data__=new br(r)}return n.set(t,e),this.size=n.size,this};var Rr=ao(Qr),Fr=ao(Wr,!0);function zr(t,e){var n=!0;return Rr(t,(function(t,r,i){return n=!!e(t,r,i)})),n}function Ur(t,e,n){for(var r=-1,i=t.length;++r<i;){var a=t[r],s=e(a);if(null!=s&&(c===o?s==s&&!js(s):n(s,c)))var c=s,u=a}return u}function Hr(t,e){var n=[];return Rr(t,(function(t,r,i){e(t,r,i)&&n.push(t)})),n}function Yr(t,e,n,r,i){var o=-1,a=t.length;for(n||(n=Vo),i||(i=[]);++o<a;){var s=t[o];e>0&&n(s)?e>1?Yr(s,e-1,n,r,i):tn(i,s):r||(i[i.length]=s)}return i}var Vr=so(),Gr=so(!0);function Qr(t,e){return t&&Vr(t,e,ic)}function Wr(t,e){return t&&Gr(t,e,ic)}function qr(t,e){return Ze(e,(function(e){return Cs(t[e])}))}function Zr(t,e){for(var n=0,r=(e=Gi(e,t)).length;null!=t&&n<r;)t=t[la(e[n++])];return n&&n==r?t:o}function Xr(t,e,n){var r=e(t);return As(t)?r:tn(r,n(t))}function Kr(t){return null==t?t===o?ot:K:on&&on in ee(t)?function(t){var e=le.call(t,on),n=t[on];try{t[on]=o;var r=!0}catch(t){}var i=pe.call(t);r&&(e?t[on]=n:delete t[on]);return i}(t):function(t){return pe.call(t)}(t)}function Jr(t,e){return t>e}function ti(t,e){return null!=t&&le.call(t,e)}function ei(t,e){return null!=t&&e in ee(t)}function ni(t,e,n){for(var i=n?Ke:Xe,a=t[0].length,s=t.length,c=s,u=r(s),l=1/0,f=[];c--;){var d=t[c];c&&e&&(d=Je(d,An(e))),l=Gn(d.length,l),u[c]=!n&&(e||a>=120&&d.length>=120)?new _r(c&&d):o}d=t[0];var p=-1,h=u[0];t:for(;++p<a&&f.length<l;){var v=d[p],m=e?e(v):v;if(v=n||0!==v?v:0,!(h?yn(h,m):i(f,m,n))){for(c=s;--c;){var A=u[c];if(!(A?yn(A,m):i(t[c],m,n)))continue t}h&&h.push(m),f.push(v)}}return f}function ri(t,e,n){var r=null==(t=ea(t,e=Gi(e,t)))?t:t[la(wa(e))];return null==r?o:Ve(r,t,n)}function ii(t){return Ss(t)&&Kr(t)==z}function oi(t,e,n,r,i){return t===e||(null==t||null==e||!Ss(t)&&!Ss(e)?t!=t&&e!=e:function(t,e,n,r,i,a){var s=As(t),c=As(e),u=s?U:Uo(t),l=c?U:Uo(e),f=(u=u==z?J:u)==J,d=(l=l==z?J:l)==J,p=u==l;if(p&&_s(t)){if(!_s(e))return!1;s=!0,f=!1}if(p&&!f)return a||(a=new xr),s||Ls(t)?Oo(t,e,n,r,i,a):function(t,e,n,r,i,o,a){switch(n){case ut:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case ct:return!(t.byteLength!=e.byteLength||!o(new xe(t),new xe(e)));case Y:case V:case X:return ps(+t,+e);case Q:return t.name==e.name&&t.message==e.message;case et:case rt:return t==e+"";case Z:var s=Tn;case nt:var c=r&v;if(s||(s=On),t.size!=e.size&&!c)return!1;var u=a.get(t);if(u)return u==e;r|=m,a.set(t,e);var l=Oo(s(t),s(e),r,i,o,a);return a.delete(t),l;case it:if(fr)return fr.call(t)==fr.call(e)}return!1}(t,e,u,n,r,i,a);if(!(n&v)){var h=f&&le.call(t,"__wrapped__"),A=d&&le.call(e,"__wrapped__");if(h||A){var g=h?t.value():t,y=A?e.value():e;return a||(a=new xr),i(g,y,n,r,a)}}if(!p)return!1;return a||(a=new xr),function(t,e,n,r,i,a){var s=n&v,c=Do(t),u=c.length,l=Do(e).length;if(u!=l&&!s)return!1;var f=u;for(;f--;){var d=c[f];if(!(s?d in e:le.call(e,d)))return!1}var p=a.get(t);if(p&&a.get(e))return p==e;var h=!0;a.set(t,e),a.set(e,t);var m=s;for(;++f<u;){d=c[f];var A=t[d],g=e[d];if(r)var y=s?r(g,A,d,e,t,a):r(A,g,d,t,e,a);if(!(y===o?A===g||i(A,g,n,r,a):y)){h=!1;break}m||(m="constructor"==d)}if(h&&!m){var b=t.constructor,_=e.constructor;b!=_&&"constructor"in t&&"constructor"in e&&!("function"==typeof b&&b instanceof b&&"function"==typeof _&&_ instanceof _)&&(h=!1)}return a.delete(t),a.delete(e),h}(t,e,n,r,i,a)}(t,e,n,r,oi,i))}function ai(t,e,n,r){var i=n.length,a=i,s=!r;if(null==t)return!a;for(t=ee(t);i--;){var c=n[i];if(s&&c[2]?c[1]!==t[c[0]]:!(c[0]in t))return!1}for(;++i<a;){var u=(c=n[i])[0],l=t[u],f=c[1];if(s&&c[2]){if(l===o&&!(u in t))return!1}else{var d=new xr;if(r)var p=r(l,f,u,t,e,d);if(!(p===o?oi(f,l,v|m,r,d):p))return!1}}return!0}function si(t){return!(!Es(t)||(e=t,de&&de in e))&&(Cs(t)?me:Gt).test(fa(t));var e}function ci(t){return"function"==typeof t?t:null==t?Mc:"object"==typeof t?As(t)?hi(t[0],t[1]):pi(t):Rc(t)}function ui(t){if(!Xo(t))return Yn(t);var e=[];for(var n in ee(t))le.call(t,n)&&"constructor"!=n&&e.push(n);return e}function li(t){if(!Es(t))return function(t){var e=[];if(null!=t)for(var n in ee(t))e.push(n);return e}(t);var e=Xo(t),n=[];for(var r in t)("constructor"!=r||!e&&le.call(t,r))&&n.push(r);return n}function fi(t,e){return t<e}function di(t,e){var n=-1,i=ys(t)?r(t.length):[];return Rr(t,(function(t,r,o){i[++n]=e(t,r,o)})),i}function pi(t){var e=$o(t);return 1==e.length&&e[0][2]?Jo(e[0][0],e[0][1]):function(n){return n===t||ai(n,t,e)}}function hi(t,e){return Wo(t)&&Ko(e)?Jo(la(t),e):function(n){var r=Js(n,t);return r===o&&r===e?tc(n,t):oi(e,r,v|m)}}function vi(t,e,n,r,i){t!==e&&Vr(e,(function(a,s){if(i||(i=new xr),Es(a))!function(t,e,n,r,i,a,s){var c=na(t,n),u=na(e,n),l=s.get(u);if(l)return void Er(t,n,l);var f=a?a(c,u,n+"",t,e,s):o,d=f===o;if(d){var p=As(u),h=!p&&_s(u),v=!p&&!h&&Ls(u);f=u,p||h||v?As(c)?f=c:bs(c)?f=no(c):h?(d=!1,f=Zi(u,!0)):v?(d=!1,f=Ki(u,!0)):f=[]:Ds(u)||ms(u)?(f=c,ms(c)?f=Ys(c):Es(c)&&!Cs(c)||(f=Yo(u))):d=!1}d&&(s.set(u,f),i(f,u,r,a,s),s.delete(u));Er(t,n,f)}(t,e,s,n,vi,r,i);else{var c=r?r(na(t,s),a,s+"",t,e,i):o;c===o&&(c=a),Er(t,s,c)}}),oc)}function mi(t,e){var n=t.length;if(n)return Go(e+=e<0?n:0,n)?t[e]:o}function Ai(t,e,n){var r=-1;return e=Je(e.length?e:[Mc],An(Lo())),function(t,e){var n=t.length;for(t.sort(e);n--;)t[n]=t[n].value;return t}(di(t,(function(t,n,i){return{criteria:Je(e,(function(e){return e(t)})),index:++r,value:t}})),(function(t,e){return function(t,e,n){var r=-1,i=t.criteria,o=e.criteria,a=i.length,s=n.length;for(;++r<a;){var c=Ji(i[r],o[r]);if(c){if(r>=s)return c;var u=n[r];return c*("desc"==u?-1:1)}}return t.index-e.index}(t,e,n)}))}function gi(t,e,n){for(var r=-1,i=e.length,o={};++r<i;){var a=e[r],s=Zr(t,a);n(s,a)&&Ti(o,Gi(a,t),s)}return o}function yi(t,e,n,r){var i=r?un:cn,o=-1,a=e.length,s=t;for(t===e&&(e=no(e)),n&&(s=Je(t,An(n)));++o<a;)for(var c=0,u=e[o],l=n?n(u):u;(c=i(s,l,c,r))>-1;)s!==t&&je.call(s,c,1),je.call(t,c,1);return t}function bi(t,e){for(var n=t?e.length:0,r=n-1;n--;){var i=e[n];if(n==r||i!==o){var o=i;Go(i)?je.call(t,i,1):$i(t,i)}}return t}function _i(t,e){return t+Rn(qn()*(e-t+1))}function xi(t,e){var n="";if(!t||e<1||e>N)return n;do{e%2&&(n+=t),(e=Rn(e/2))&&(t+=t)}while(e);return n}function wi(t,e){return oa(ta(t,e,Mc),t+"")}function Ci(t){return Cr(pc(t))}function ki(t,e){var n=pc(t);return ca(n,Nr(e,0,n.length))}function Ti(t,e,n,r){if(!Es(t))return t;for(var i=-1,a=(e=Gi(e,t)).length,s=a-1,c=t;null!=c&&++i<a;){var u=la(e[i]),l=n;if(i!=s){var f=c[u];(l=r?r(f,u,c):o)===o&&(l=Es(f)?f:Go(e[i+1])?[]:{})}Sr(c,u,l),c=c[u]}return t}var Ei=rr?function(t,e){return rr.set(t,e),t}:Mc,Si=pn?function(t,e){return pn(t,"toString",{configurable:!0,enumerable:!1,value:Ec(e),writable:!0})}:Mc;function Oi(t){return ca(pc(t))}function Mi(t,e,n){var i=-1,o=t.length;e<0&&(e=-e>o?0:o+e),(n=n>o?o:n)<0&&(n+=o),o=e>n?0:n-e>>>0,e>>>=0;for(var a=r(o);++i<o;)a[i]=t[i+e];return a}function Di(t,e){var n;return Rr(t,(function(t,r,i){return!(n=e(t,r,i))})),!!n}function Ii(t,e,n){var r=0,i=null==t?r:t.length;if("number"==typeof e&&e==e&&i<=R){for(;r<i;){var o=r+i>>>1,a=t[o];null!==a&&!js(a)&&(n?a<=e:a<e)?r=o+1:i=o}return i}return Bi(t,e,Mc,n)}function Bi(t,e,n,r){e=n(e);for(var i=0,a=null==t?0:t.length,s=e!=e,c=null===e,u=js(e),l=e===o;i<a;){var f=Rn((i+a)/2),d=n(t[f]),p=d!==o,h=null===d,v=d==d,m=js(d);if(s)var A=r||v;else A=l?v&&(r||p):c?v&&p&&(r||!h):u?v&&p&&!h&&(r||!m):!h&&!m&&(r?d<=e:d<e);A?i=f+1:a=f}return Gn(a,$)}function Ni(t,e){for(var n=-1,r=t.length,i=0,o=[];++n<r;){var a=t[n],s=e?e(a):a;if(!n||!ps(s,c)){var c=s;o[i++]=0===a?0:a}}return o}function ji(t){return"number"==typeof t?t:js(t)?L:+t}function Li(t){if("string"==typeof t)return t;if(As(t))return Je(t,Li)+"";if(js(t))return dr?dr.call(t):"";var e=t+"";return"0"==e&&1/t==-B?"-0":e}function Pi(t,e,n){var r=-1,i=Xe,o=t.length,s=!0,c=[],u=c;if(n)s=!1,i=Ke;else if(o>=a){var l=e?null:wo(t);if(l)return On(l);s=!1,i=yn,u=new _r}else u=e?[]:c;t:for(;++r<o;){var f=t[r],d=e?e(f):f;if(f=n||0!==f?f:0,s&&d==d){for(var p=u.length;p--;)if(u[p]===d)continue t;e&&u.push(d),c.push(f)}else i(u,d,n)||(u!==c&&u.push(d),c.push(f))}return c}function $i(t,e){return null==(t=ea(t,e=Gi(e,t)))||delete t[la(wa(e))]}function Ri(t,e,n,r){return Ti(t,e,n(Zr(t,e)),r)}function Fi(t,e,n,r){for(var i=t.length,o=r?i:-1;(r?o--:++o<i)&&e(t[o],o,t););return n?Mi(t,r?0:o,r?o+1:i):Mi(t,r?o+1:0,r?i:o)}function zi(t,e){var n=t;return n instanceof Ar&&(n=n.value()),en(e,(function(t,e){return e.func.apply(e.thisArg,tn([t],e.args))}),n)}function Ui(t,e,n){var i=t.length;if(i<2)return i?Pi(t[0]):[];for(var o=-1,a=r(i);++o<i;)for(var s=t[o],c=-1;++c<i;)c!=o&&(a[o]=$r(a[o]||s,t[c],e,n));return Pi(Yr(a,1),e,n)}function Hi(t,e,n){for(var r=-1,i=t.length,a=e.length,s={};++r<i;){var c=r<a?e[r]:o;n(s,t[r],c)}return s}function Yi(t){return bs(t)?t:[]}function Vi(t){return"function"==typeof t?t:Mc}function Gi(t,e){return As(t)?t:Wo(t,e)?[t]:ua(Vs(t))}var Qi=wi;function Wi(t,e,n){var r=t.length;return n=n===o?r:n,!e&&n>=r?t:Mi(t,e,n)}var qi=jn||function(t){return Be.clearTimeout(t)};function Zi(t,e){if(e)return t.slice();var n=t.length,r=Se?Se(n):new t.constructor(n);return t.copy(r),r}function Xi(t){var e=new t.constructor(t.byteLength);return new xe(e).set(new xe(t)),e}function Ki(t,e){var n=e?Xi(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}function Ji(t,e){if(t!==e){var n=t!==o,r=null===t,i=t==t,a=js(t),s=e!==o,c=null===e,u=e==e,l=js(e);if(!c&&!l&&!a&&t>e||a&&s&&u&&!c&&!l||r&&s&&u||!n&&u||!i)return 1;if(!r&&!a&&!l&&t<e||l&&n&&i&&!r&&!a||c&&n&&i||!s&&i||!u)return-1}return 0}function to(t,e,n,i){for(var o=-1,a=t.length,s=n.length,c=-1,u=e.length,l=Vn(a-s,0),f=r(u+l),d=!i;++c<u;)f[c]=e[c];for(;++o<s;)(d||o<a)&&(f[n[o]]=t[o]);for(;l--;)f[c++]=t[o++];return f}function eo(t,e,n,i){for(var o=-1,a=t.length,s=-1,c=n.length,u=-1,l=e.length,f=Vn(a-c,0),d=r(f+l),p=!i;++o<f;)d[o]=t[o];for(var h=o;++u<l;)d[h+u]=e[u];for(;++s<c;)(p||o<a)&&(d[h+n[s]]=t[o++]);return d}function no(t,e){var n=-1,i=t.length;for(e||(e=r(i));++n<i;)e[n]=t[n];return e}function ro(t,e,n,r){var i=!n;n||(n={});for(var a=-1,s=e.length;++a<s;){var c=e[a],u=r?r(n[c],t[c],c,n,t):o;u===o&&(u=t[c]),i?Ir(n,c,u):Sr(n,c,u)}return n}function io(t,e){return function(n,r){var i=As(n)?Ge:Mr,o=e?e():{};return i(n,t,Lo(r,2),o)}}function oo(t){return wi((function(e,n){var r=-1,i=n.length,a=i>1?n[i-1]:o,s=i>2?n[2]:o;for(a=t.length>3&&"function"==typeof a?(i--,a):o,s&&Qo(n[0],n[1],s)&&(a=i<3?o:a,i=1),e=ee(e);++r<i;){var c=n[r];c&&t(e,c,r,a)}return e}))}function ao(t,e){return function(n,r){if(null==n)return n;if(!ys(n))return t(n,r);for(var i=n.length,o=e?i:-1,a=ee(n);(e?o--:++o<i)&&!1!==r(a[o],o,a););return n}}function so(t){return function(e,n,r){for(var i=-1,o=ee(e),a=r(e),s=a.length;s--;){var c=a[t?s:++i];if(!1===n(o[c],c,o))break}return e}}function co(t){return function(e){var n=kn(e=Vs(e))?In(e):o,r=n?n[0]:e.charAt(0),i=n?Wi(n,1).join(""):e.slice(1);return r[t]()+i}}function uo(t){return function(e){return en(Cc(mc(e).replace(ge,"")),t,"")}}function lo(t){return function(){var e=arguments;switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3]);case 5:return new t(e[0],e[1],e[2],e[3],e[4]);case 6:return new t(e[0],e[1],e[2],e[3],e[4],e[5]);case 7:return new t(e[0],e[1],e[2],e[3],e[4],e[5],e[6])}var n=hr(t.prototype),r=t.apply(n,e);return Es(r)?r:n}}function fo(t){return function(e,n,r){var i=ee(e);if(!ys(e)){var a=Lo(n,3);e=ic(e),n=function(t){return a(i[t],t,i)}}var s=t(e,n,r);return s>-1?i[a?e[s]:s]:o}}function po(t){return Mo((function(e){var n=e.length,r=n,i=mr.prototype.thru;for(t&&e.reverse();r--;){var a=e[r];if("function"!=typeof a)throw new ie(c);if(i&&!s&&"wrapper"==No(a))var s=new mr([],!0)}for(r=s?r:n;++r<n;){var u=No(a=e[r]),l="wrapper"==u?Bo(a):o;s=l&&qo(l[0])&&l[1]==(C|b|x|k)&&!l[4].length&&1==l[9]?s[No(l[0])].apply(s,l[3]):1==a.length&&qo(a)?s[u]():s.thru(a)}return function(){var t=arguments,r=t[0];if(s&&1==t.length&&As(r))return s.plant(r).value();for(var i=0,o=n?e[i].apply(this,t):r;++i<n;)o=e[i].call(this,o);return o}}))}function ho(t,e,n,i,a,s,c,u,l,f){var d=e&C,p=e&A,h=e&g,v=e&(b|_),m=e&T,y=h?o:lo(t);return function A(){for(var g=arguments.length,b=r(g),_=g;_--;)b[_]=arguments[_];if(v)var x=jo(A),w=function(t,e){for(var n=t.length,r=0;n--;)t[n]===e&&++r;return r}(b,x);if(i&&(b=to(b,i,a,v)),s&&(b=eo(b,s,c,v)),g-=w,v&&g<f){var C=Sn(b,x);return _o(t,e,ho,A.placeholder,n,b,C,u,l,f-g)}var k=p?n:this,T=h?k[t]:t;return g=b.length,u?b=function(t,e){var n=t.length,r=Gn(e.length,n),i=no(t);for(;r--;){var a=e[r];t[r]=Go(a,n)?i[a]:o}return t}(b,u):m&&g>1&&b.reverse(),d&&l<g&&(b.length=l),this&&this!==Be&&this instanceof A&&(T=y||lo(T)),T.apply(k,b)}}function vo(t,e){return function(n,r){return function(t,e,n,r){return Qr(t,(function(t,i,o){e(r,n(t),i,o)})),r}(n,t,e(r),{})}}function mo(t,e){return function(n,r){var i;if(n===o&&r===o)return e;if(n!==o&&(i=n),r!==o){if(i===o)return r;"string"==typeof n||"string"==typeof r?(n=Li(n),r=Li(r)):(n=ji(n),r=ji(r)),i=t(n,r)}return i}}function Ao(t){return Mo((function(e){return e=Je(e,An(Lo())),wi((function(n){var r=this;return t(e,(function(t){return Ve(t,r,n)}))}))}))}function go(t,e){var n=(e=e===o?" ":Li(e)).length;if(n<2)return n?xi(e,t):e;var r=xi(e,$n(t/Dn(e)));return kn(e)?Wi(In(r),0,t).join(""):r.slice(0,t)}function yo(t){return function(e,n,i){return i&&"number"!=typeof i&&Qo(e,n,i)&&(n=i=o),e=Fs(e),n===o?(n=e,e=0):n=Fs(n),function(t,e,n,i){for(var o=-1,a=Vn($n((e-t)/(n||1)),0),s=r(a);a--;)s[i?a:++o]=t,t+=n;return s}(e,n,i=i===o?e<n?1:-1:Fs(i),t)}}function bo(t){return function(e,n){return"string"==typeof e&&"string"==typeof n||(e=Hs(e),n=Hs(n)),t(e,n)}}function _o(t,e,n,r,i,a,s,c,u,l){var f=e&b;e|=f?x:w,(e&=~(f?w:x))&y||(e&=~(A|g));var d=[t,e,i,f?a:o,f?s:o,f?o:a,f?o:s,c,u,l],p=n.apply(o,d);return qo(t)&&ra(p,d),p.placeholder=r,aa(p,t,e)}function xo(t){var e=te[t];return function(t,n){if(t=Hs(t),(n=null==n?0:Gn(zs(n),292))&&Un(t)){var r=(Vs(t)+"e").split("e");return+((r=(Vs(e(r[0]+"e"+(+r[1]+n)))+"e").split("e"))[0]+"e"+(+r[1]-n))}return e(t)}}var wo=tr&&1/On(new tr([,-0]))[1]==B?function(t){return new tr(t)}:jc;function Co(t){return function(e){var n=Uo(e);return n==Z?Tn(e):n==nt?Mn(e):function(t,e){return Je(e,(function(e){return[e,t[e]]}))}(e,t(e))}}function ko(t,e,n,i,a,s,u,l){var d=e&g;if(!d&&"function"!=typeof t)throw new ie(c);var p=i?i.length:0;if(p||(e&=~(x|w),i=a=o),u=u===o?u:Vn(zs(u),0),l=l===o?l:zs(l),p-=a?a.length:0,e&w){var h=i,v=a;i=a=o}var m=d?o:Bo(t),T=[t,e,n,i,a,h,v,s,u,l];if(m&&function(t,e){var n=t[1],r=e[1],i=n|r,o=i<(A|g|C),a=r==C&&n==b||r==C&&n==k&&t[7].length<=e[8]||r==(C|k)&&e[7].length<=e[8]&&n==b;if(!o&&!a)return t;r&A&&(t[2]=e[2],i|=n&A?0:y);var s=e[3];if(s){var c=t[3];t[3]=c?to(c,s,e[4]):s,t[4]=c?Sn(t[3],f):e[4]}(s=e[5])&&(c=t[5],t[5]=c?eo(c,s,e[6]):s,t[6]=c?Sn(t[5],f):e[6]);(s=e[7])&&(t[7]=s);r&C&&(t[8]=null==t[8]?e[8]:Gn(t[8],e[8]));null==t[9]&&(t[9]=e[9]);t[0]=e[0],t[1]=i}(T,m),t=T[0],e=T[1],n=T[2],i=T[3],a=T[4],!(l=T[9]=T[9]===o?d?0:t.length:Vn(T[9]-p,0))&&e&(b|_)&&(e&=~(b|_)),e&&e!=A)E=e==b||e==_?function(t,e,n){var i=lo(t);return function a(){for(var s=arguments.length,c=r(s),u=s,l=jo(a);u--;)c[u]=arguments[u];var f=s<3&&c[0]!==l&&c[s-1]!==l?[]:Sn(c,l);return(s-=f.length)<n?_o(t,e,ho,a.placeholder,o,c,f,o,o,n-s):Ve(this&&this!==Be&&this instanceof a?i:t,this,c)}}(t,e,l):e!=x&&e!=(A|x)||a.length?ho.apply(o,T):function(t,e,n,i){var o=e&A,a=lo(t);return function e(){for(var s=-1,c=arguments.length,u=-1,l=i.length,f=r(l+c),d=this&&this!==Be&&this instanceof e?a:t;++u<l;)f[u]=i[u];for(;c--;)f[u++]=arguments[++s];return Ve(d,o?n:this,f)}}(t,e,n,i);else var E=function(t,e,n){var r=e&A,i=lo(t);return function e(){return(this&&this!==Be&&this instanceof e?i:t).apply(r?n:this,arguments)}}(t,e,n);return aa((m?Ei:ra)(E,T),t,e)}function To(t,e,n,r){return t===o||ps(t,se[n])&&!le.call(r,n)?e:t}function Eo(t,e,n,r,i,a){return Es(t)&&Es(e)&&(a.set(e,t),vi(t,e,o,Eo,a),a.delete(e)),t}function So(t){return Ds(t)?o:t}function Oo(t,e,n,r,i,a){var s=n&v,c=t.length,u=e.length;if(c!=u&&!(s&&u>c))return!1;var l=a.get(t);if(l&&a.get(e))return l==e;var f=-1,d=!0,p=n&m?new _r:o;for(a.set(t,e),a.set(e,t);++f<c;){var h=t[f],A=e[f];if(r)var g=s?r(A,h,f,e,t,a):r(h,A,f,t,e,a);if(g!==o){if(g)continue;d=!1;break}if(p){if(!rn(e,(function(t,e){if(!yn(p,e)&&(h===t||i(h,t,n,r,a)))return p.push(e)}))){d=!1;break}}else if(h!==A&&!i(h,A,n,r,a)){d=!1;break}}return a.delete(t),a.delete(e),d}function Mo(t){return oa(ta(t,o,ga),t+"")}function Do(t){return Xr(t,ic,Fo)}function Io(t){return Xr(t,oc,zo)}var Bo=rr?function(t){return rr.get(t)}:jc;function No(t){for(var e=t.name+"",n=ir[e],r=le.call(ir,e)?n.length:0;r--;){var i=n[r],o=i.func;if(null==o||o==t)return i.name}return e}function jo(t){return(le.call(pr,"placeholder")?pr:t).placeholder}function Lo(){var t=pr.iteratee||Dc;return t=t===Dc?ci:t,arguments.length?t(arguments[0],arguments[1]):t}function Po(t,e){var n,r,i=t.__data__;return("string"==(r=typeof(n=e))||"number"==r||"symbol"==r||"boolean"==r?"__proto__"!==n:null===n)?i["string"==typeof e?"string":"hash"]:i.map}function $o(t){for(var e=ic(t),n=e.length;n--;){var r=e[n],i=t[r];e[n]=[r,i,Ko(i)]}return e}function Ro(t,e){var n=function(t,e){return null==t?o:t[e]}(t,e);return si(n)?n:o}var Fo=Fn?function(t){return null==t?[]:(t=ee(t),Ze(Fn(t),(function(e){return Ne.call(t,e)})))}:Uc,zo=Fn?function(t){for(var e=[];t;)tn(e,Fo(t)),t=De(t);return e}:Uc,Uo=Kr;function Ho(t,e,n){for(var r=-1,i=(e=Gi(e,t)).length,o=!1;++r<i;){var a=la(e[r]);if(!(o=null!=t&&n(t,a)))break;t=t[a]}return o||++r!=i?o:!!(i=null==t?0:t.length)&&Ts(i)&&Go(a,i)&&(As(t)||ms(t))}function Yo(t){return"function"!=typeof t.constructor||Xo(t)?{}:hr(De(t))}function Vo(t){return As(t)||ms(t)||!!(Pe&&t&&t[Pe])}function Go(t,e){var n=typeof t;return!!(e=null==e?N:e)&&("number"==n||"symbol"!=n&&Wt.test(t))&&t>-1&&t%1==0&&t<e}function Qo(t,e,n){if(!Es(n))return!1;var r=typeof e;return!!("number"==r?ys(n)&&Go(e,n.length):"string"==r&&e in n)&&ps(n[e],t)}function Wo(t,e){if(As(t))return!1;var n=typeof t;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=t&&!js(t))||(Mt.test(t)||!Ot.test(t)||null!=e&&t in ee(e))}function qo(t){var e=No(t),n=pr[e];if("function"!=typeof n||!(e in Ar.prototype))return!1;if(t===n)return!0;var r=Bo(n);return!!r&&t===r[0]}(Xn&&Uo(new Xn(new ArrayBuffer(1)))!=ut||Kn&&Uo(new Kn)!=Z||Jn&&"[object Promise]"!=Uo(Jn.resolve())||tr&&Uo(new tr)!=nt||er&&Uo(new er)!=at)&&(Uo=function(t){var e=Kr(t),n=e==J?t.constructor:o,r=n?fa(n):"";if(r)switch(r){case or:return ut;case ar:return Z;case sr:return"[object Promise]";case cr:return nt;case ur:return at}return e});var Zo=ce?Cs:Hc;function Xo(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||se)}function Ko(t){return t==t&&!Es(t)}function Jo(t,e){return function(n){return null!=n&&(n[t]===e&&(e!==o||t in ee(n)))}}function ta(t,e,n){return e=Vn(e===o?t.length-1:e,0),function(){for(var i=arguments,o=-1,a=Vn(i.length-e,0),s=r(a);++o<a;)s[o]=i[e+o];o=-1;for(var c=r(e+1);++o<e;)c[o]=i[o];return c[e]=n(s),Ve(t,this,c)}}function ea(t,e){return e.length<2?t:Zr(t,Mi(e,0,-1))}function na(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}var ra=sa(Ei),ia=Pn||function(t,e){return Be.setTimeout(t,e)},oa=sa(Si);function aa(t,e,n){var r=e+"";return oa(t,function(t,e){var n=e.length;if(!n)return t;var r=n-1;return e[r]=(n>1?"& ":"")+e[r],e=e.join(n>2?", ":" "),t.replace(Pt,"{\n/* [wrapped with "+e+"] */\n")}(r,function(t,e){return Qe(F,(function(n){var r="_."+n[0];e&n[1]&&!Xe(t,r)&&t.push(r)})),t.sort()}(function(t){var e=t.match($t);return e?e[1].split(Rt):[]}(r),n)))}function sa(t){var e=0,n=0;return function(){var r=Qn(),i=M-(r-n);if(n=r,i>0){if(++e>=O)return arguments[0]}else e=0;return t.apply(o,arguments)}}function ca(t,e){var n=-1,r=t.length,i=r-1;for(e=e===o?r:e;++n<e;){var a=_i(n,i),s=t[a];t[a]=t[n],t[n]=s}return t.length=e,t}var ua=function(t){var e=ss(t,(function(t){return n.size===l&&n.clear(),t})),n=e.cache;return e}((function(t){var e=[];return 46===t.charCodeAt(0)&&e.push(""),t.replace(Dt,(function(t,n,r,i){e.push(r?i.replace(zt,"$1"):n||t)})),e}));function la(t){if("string"==typeof t||js(t))return t;var e=t+"";return"0"==e&&1/t==-B?"-0":e}function fa(t){if(null!=t){try{return ue.call(t)}catch(t){}try{return t+""}catch(t){}}return""}function da(t){if(t instanceof Ar)return t.clone();var e=new mr(t.__wrapped__,t.__chain__);return e.__actions__=no(t.__actions__),e.__index__=t.__index__,e.__values__=t.__values__,e}var pa=wi((function(t,e){return bs(t)?$r(t,Yr(e,1,bs,!0)):[]})),ha=wi((function(t,e){var n=wa(e);return bs(n)&&(n=o),bs(t)?$r(t,Yr(e,1,bs,!0),Lo(n,2)):[]})),va=wi((function(t,e){var n=wa(e);return bs(n)&&(n=o),bs(t)?$r(t,Yr(e,1,bs,!0),o,n):[]}));function ma(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=null==n?0:zs(n);return i<0&&(i=Vn(r+i,0)),sn(t,Lo(e,3),i)}function Aa(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=r-1;return n!==o&&(i=zs(n),i=n<0?Vn(r+i,0):Gn(i,r-1)),sn(t,Lo(e,3),i,!0)}function ga(t){return(null==t?0:t.length)?Yr(t,1):[]}function ya(t){return t&&t.length?t[0]:o}var ba=wi((function(t){var e=Je(t,Yi);return e.length&&e[0]===t[0]?ni(e):[]})),_a=wi((function(t){var e=wa(t),n=Je(t,Yi);return e===wa(n)?e=o:n.pop(),n.length&&n[0]===t[0]?ni(n,Lo(e,2)):[]})),xa=wi((function(t){var e=wa(t),n=Je(t,Yi);return(e="function"==typeof e?e:o)&&n.pop(),n.length&&n[0]===t[0]?ni(n,o,e):[]}));function wa(t){var e=null==t?0:t.length;return e?t[e-1]:o}var Ca=wi(ka);function ka(t,e){return t&&t.length&&e&&e.length?yi(t,e):t}var Ta=Mo((function(t,e){var n=null==t?0:t.length,r=Br(t,e);return bi(t,Je(e,(function(t){return Go(t,n)?+t:t})).sort(Ji)),r}));function Ea(t){return null==t?t:Zn.call(t)}var Sa=wi((function(t){return Pi(Yr(t,1,bs,!0))})),Oa=wi((function(t){var e=wa(t);return bs(e)&&(e=o),Pi(Yr(t,1,bs,!0),Lo(e,2))})),Ma=wi((function(t){var e=wa(t);return e="function"==typeof e?e:o,Pi(Yr(t,1,bs,!0),o,e)}));function Da(t){if(!t||!t.length)return[];var e=0;return t=Ze(t,(function(t){if(bs(t))return e=Vn(t.length,e),!0})),mn(e,(function(e){return Je(t,dn(e))}))}function Ia(t,e){if(!t||!t.length)return[];var n=Da(t);return null==e?n:Je(n,(function(t){return Ve(e,o,t)}))}var Ba=wi((function(t,e){return bs(t)?$r(t,e):[]})),Na=wi((function(t){return Ui(Ze(t,bs))})),ja=wi((function(t){var e=wa(t);return bs(e)&&(e=o),Ui(Ze(t,bs),Lo(e,2))})),La=wi((function(t){var e=wa(t);return e="function"==typeof e?e:o,Ui(Ze(t,bs),o,e)})),Pa=wi(Da);var $a=wi((function(t){var e=t.length,n=e>1?t[e-1]:o;return n="function"==typeof n?(t.pop(),n):o,Ia(t,n)}));function Ra(t){var e=pr(t);return e.__chain__=!0,e}function Fa(t,e){return e(t)}var za=Mo((function(t){var e=t.length,n=e?t[0]:0,r=this.__wrapped__,i=function(e){return Br(e,t)};return!(e>1||this.__actions__.length)&&r instanceof Ar&&Go(n)?((r=r.slice(n,+n+(e?1:0))).__actions__.push({func:Fa,args:[i],thisArg:o}),new mr(r,this.__chain__).thru((function(t){return e&&!t.length&&t.push(o),t}))):this.thru(i)}));var Ua=io((function(t,e,n){le.call(t,n)?++t[n]:Ir(t,n,1)}));var Ha=fo(ma),Ya=fo(Aa);function Va(t,e){return(As(t)?Qe:Rr)(t,Lo(e,3))}function Ga(t,e){return(As(t)?We:Fr)(t,Lo(e,3))}var Qa=io((function(t,e,n){le.call(t,n)?t[n].push(e):Ir(t,n,[e])}));var Wa=wi((function(t,e,n){var i=-1,o="function"==typeof e,a=ys(t)?r(t.length):[];return Rr(t,(function(t){a[++i]=o?Ve(e,t,n):ri(t,e,n)})),a})),qa=io((function(t,e,n){Ir(t,n,e)}));function Za(t,e){return(As(t)?Je:di)(t,Lo(e,3))}var Xa=io((function(t,e,n){t[n?0:1].push(e)}),(function(){return[[],[]]}));var Ka=wi((function(t,e){if(null==t)return[];var n=e.length;return n>1&&Qo(t,e[0],e[1])?e=[]:n>2&&Qo(e[0],e[1],e[2])&&(e=[e[0]]),Ai(t,Yr(e,1),[])})),Ja=Ln||function(){return Be.Date.now()};function ts(t,e,n){return e=n?o:e,e=t&&null==e?t.length:e,ko(t,C,o,o,o,o,e)}function es(t,e){var n;if("function"!=typeof e)throw new ie(c);return t=zs(t),function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=o),n}}var ns=wi((function(t,e,n){var r=A;if(n.length){var i=Sn(n,jo(ns));r|=x}return ko(t,r,e,n,i)})),rs=wi((function(t,e,n){var r=A|g;if(n.length){var i=Sn(n,jo(rs));r|=x}return ko(e,r,t,n,i)}));function is(t,e,n){var r,i,a,s,u,l,f=0,d=!1,p=!1,h=!0;if("function"!=typeof t)throw new ie(c);function v(e){var n=r,a=i;return r=i=o,f=e,s=t.apply(a,n)}function m(t){var n=t-l;return l===o||n>=e||n<0||p&&t-f>=a}function A(){var t=Ja();if(m(t))return g(t);u=ia(A,function(t){var n=e-(t-l);return p?Gn(n,a-(t-f)):n}(t))}function g(t){return u=o,h&&r?v(t):(r=i=o,s)}function y(){var t=Ja(),n=m(t);if(r=arguments,i=this,l=t,n){if(u===o)return function(t){return f=t,u=ia(A,e),d?v(t):s}(l);if(p)return qi(u),u=ia(A,e),v(l)}return u===o&&(u=ia(A,e)),s}return e=Hs(e)||0,Es(n)&&(d=!!n.leading,a=(p="maxWait"in n)?Vn(Hs(n.maxWait)||0,e):a,h="trailing"in n?!!n.trailing:h),y.cancel=function(){u!==o&&qi(u),f=0,r=l=i=u=o},y.flush=function(){return u===o?s:g(Ja())},y}var os=wi((function(t,e){return Pr(t,1,e)})),as=wi((function(t,e,n){return Pr(t,Hs(e)||0,n)}));function ss(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new ie(c);var n=function(){var r=arguments,i=e?e.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var a=t.apply(this,r);return n.cache=o.set(i,a)||o,a};return n.cache=new(ss.Cache||br),n}function cs(t){if("function"!=typeof t)throw new ie(c);return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}ss.Cache=br;var us=Qi((function(t,e){var n=(e=1==e.length&&As(e[0])?Je(e[0],An(Lo())):Je(Yr(e,1),An(Lo()))).length;return wi((function(r){for(var i=-1,o=Gn(r.length,n);++i<o;)r[i]=e[i].call(this,r[i]);return Ve(t,this,r)}))})),ls=wi((function(t,e){var n=Sn(e,jo(ls));return ko(t,x,o,e,n)})),fs=wi((function(t,e){var n=Sn(e,jo(fs));return ko(t,w,o,e,n)})),ds=Mo((function(t,e){return ko(t,k,o,o,o,e)}));function ps(t,e){return t===e||t!=t&&e!=e}var hs=bo(Jr),vs=bo((function(t,e){return t>=e})),ms=ii(function(){return arguments}())?ii:function(t){return Ss(t)&&le.call(t,"callee")&&!Ne.call(t,"callee")},As=r.isArray,gs=Re?An(Re):function(t){return Ss(t)&&Kr(t)==ct};function ys(t){return null!=t&&Ts(t.length)&&!Cs(t)}function bs(t){return Ss(t)&&ys(t)}var _s=zn||Hc,xs=Fe?An(Fe):function(t){return Ss(t)&&Kr(t)==V};function ws(t){if(!Ss(t))return!1;var e=Kr(t);return e==Q||e==G||"string"==typeof t.message&&"string"==typeof t.name&&!Ds(t)}function Cs(t){if(!Es(t))return!1;var e=Kr(t);return e==W||e==q||e==H||e==tt}function ks(t){return"number"==typeof t&&t==zs(t)}function Ts(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=N}function Es(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}function Ss(t){return null!=t&&"object"==typeof t}var Os=ze?An(ze):function(t){return Ss(t)&&Uo(t)==Z};function Ms(t){return"number"==typeof t||Ss(t)&&Kr(t)==X}function Ds(t){if(!Ss(t)||Kr(t)!=J)return!1;var e=De(t);if(null===e)return!0;var n=le.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&ue.call(n)==he}var Is=Ue?An(Ue):function(t){return Ss(t)&&Kr(t)==et};var Bs=He?An(He):function(t){return Ss(t)&&Uo(t)==nt};function Ns(t){return"string"==typeof t||!As(t)&&Ss(t)&&Kr(t)==rt}function js(t){return"symbol"==typeof t||Ss(t)&&Kr(t)==it}var Ls=Ye?An(Ye):function(t){return Ss(t)&&Ts(t.length)&&!!Te[Kr(t)]};var Ps=bo(fi),$s=bo((function(t,e){return t<=e}));function Rs(t){if(!t)return[];if(ys(t))return Ns(t)?In(t):no(t);if($e&&t[$e])return function(t){for(var e,n=[];!(e=t.next()).done;)n.push(e.value);return n}(t[$e]());var e=Uo(t);return(e==Z?Tn:e==nt?On:pc)(t)}function Fs(t){return t?(t=Hs(t))===B||t===-B?(t<0?-1:1)*j:t==t?t:0:0===t?t:0}function zs(t){var e=Fs(t),n=e%1;return e==e?n?e-n:e:0}function Us(t){return t?Nr(zs(t),0,P):0}function Hs(t){if("number"==typeof t)return t;if(js(t))return L;if(Es(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=Es(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(Nt,"");var n=Vt.test(t);return n||Qt.test(t)?Me(t.slice(2),n?2:8):Yt.test(t)?L:+t}function Ys(t){return ro(t,oc(t))}function Vs(t){return null==t?"":Li(t)}var Gs=oo((function(t,e){if(Xo(e)||ys(e))ro(e,ic(e),t);else for(var n in e)le.call(e,n)&&Sr(t,n,e[n])})),Qs=oo((function(t,e){ro(e,oc(e),t)})),Ws=oo((function(t,e,n,r){ro(e,oc(e),t,r)})),qs=oo((function(t,e,n,r){ro(e,ic(e),t,r)})),Zs=Mo(Br);var Xs=wi((function(t,e){t=ee(t);var n=-1,r=e.length,i=r>2?e[2]:o;for(i&&Qo(e[0],e[1],i)&&(r=1);++n<r;)for(var a=e[n],s=oc(a),c=-1,u=s.length;++c<u;){var l=s[c],f=t[l];(f===o||ps(f,se[l])&&!le.call(t,l))&&(t[l]=a[l])}return t})),Ks=wi((function(t){return t.push(o,Eo),Ve(sc,o,t)}));function Js(t,e,n){var r=null==t?o:Zr(t,e);return r===o?n:r}function tc(t,e){return null!=t&&Ho(t,e,ei)}var ec=vo((function(t,e,n){null!=e&&"function"!=typeof e.toString&&(e=pe.call(e)),t[e]=n}),Ec(Mc)),nc=vo((function(t,e,n){null!=e&&"function"!=typeof e.toString&&(e=pe.call(e)),le.call(t,e)?t[e].push(n):t[e]=[n]}),Lo),rc=wi(ri);function ic(t){return ys(t)?wr(t):ui(t)}function oc(t){return ys(t)?wr(t,!0):li(t)}var ac=oo((function(t,e,n){vi(t,e,n)})),sc=oo((function(t,e,n,r){vi(t,e,n,r)})),cc=Mo((function(t,e){var n={};if(null==t)return n;var r=!1;e=Je(e,(function(e){return e=Gi(e,t),r||(r=e.length>1),e})),ro(t,Io(t),n),r&&(n=jr(n,d|p|h,So));for(var i=e.length;i--;)$i(n,e[i]);return n}));var uc=Mo((function(t,e){return null==t?{}:function(t,e){return gi(t,e,(function(e,n){return tc(t,n)}))}(t,e)}));function lc(t,e){if(null==t)return{};var n=Je(Io(t),(function(t){return[t]}));return e=Lo(e),gi(t,n,(function(t,n){return e(t,n[0])}))}var fc=Co(ic),dc=Co(oc);function pc(t){return null==t?[]:gn(t,ic(t))}var hc=uo((function(t,e,n){return e=e.toLowerCase(),t+(n?vc(e):e)}));function vc(t){return wc(Vs(t).toLowerCase())}function mc(t){return(t=Vs(t))&&t.replace(qt,xn).replace(ye,"")}var Ac=uo((function(t,e,n){return t+(n?"-":"")+e.toLowerCase()})),gc=uo((function(t,e,n){return t+(n?" ":"")+e.toLowerCase()})),yc=co("toLowerCase");var bc=uo((function(t,e,n){return t+(n?"_":"")+e.toLowerCase()}));var _c=uo((function(t,e,n){return t+(n?" ":"")+wc(e)}));var xc=uo((function(t,e,n){return t+(n?" ":"")+e.toUpperCase()})),wc=co("toUpperCase");function Cc(t,e,n){return t=Vs(t),(e=n?o:e)===o?function(t){return we.test(t)}(t)?function(t){return t.match(_e)||[]}(t):function(t){return t.match(Ft)||[]}(t):t.match(e)||[]}var kc=wi((function(t,e){try{return Ve(t,o,e)}catch(t){return ws(t)?t:new Kt(t)}})),Tc=Mo((function(t,e){return Qe(e,(function(e){e=la(e),Ir(t,e,ns(t[e],t))})),t}));function Ec(t){return function(){return t}}var Sc=po(),Oc=po(!0);function Mc(t){return t}function Dc(t){return ci("function"==typeof t?t:jr(t,d))}var Ic=wi((function(t,e){return function(n){return ri(n,t,e)}})),Bc=wi((function(t,e){return function(n){return ri(t,n,e)}}));function Nc(t,e,n){var r=ic(e),i=qr(e,r);null!=n||Es(e)&&(i.length||!r.length)||(n=e,e=t,t=this,i=qr(e,ic(e)));var o=!(Es(n)&&"chain"in n&&!n.chain),a=Cs(t);return Qe(i,(function(n){var r=e[n];t[n]=r,a&&(t.prototype[n]=function(){var e=this.__chain__;if(o||e){var n=t(this.__wrapped__),i=n.__actions__=no(this.__actions__);return i.push({func:r,args:arguments,thisArg:t}),n.__chain__=e,n}return r.apply(t,tn([this.value()],arguments))})})),t}function jc(){}var Lc=Ao(Je),Pc=Ao(qe),$c=Ao(rn);function Rc(t){return Wo(t)?dn(la(t)):function(t){return function(e){return Zr(e,t)}}(t)}var Fc=yo(),zc=yo(!0);function Uc(){return[]}function Hc(){return!1}var Yc=mo((function(t,e){return t+e}),0),Vc=xo("ceil"),Gc=mo((function(t,e){return t/e}),1),Qc=xo("floor");var Wc,qc=mo((function(t,e){return t*e}),1),Zc=xo("round"),Xc=mo((function(t,e){return t-e}),0);return pr.after=function(t,e){if("function"!=typeof e)throw new ie(c);return t=zs(t),function(){if(--t<1)return e.apply(this,arguments)}},pr.ary=ts,pr.assign=Gs,pr.assignIn=Qs,pr.assignInWith=Ws,pr.assignWith=qs,pr.at=Zs,pr.before=es,pr.bind=ns,pr.bindAll=Tc,pr.bindKey=rs,pr.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return As(t)?t:[t]},pr.chain=Ra,pr.chunk=function(t,e,n){e=(n?Qo(t,e,n):e===o)?1:Vn(zs(e),0);var i=null==t?0:t.length;if(!i||e<1)return[];for(var a=0,s=0,c=r($n(i/e));a<i;)c[s++]=Mi(t,a,a+=e);return c},pr.compact=function(t){for(var e=-1,n=null==t?0:t.length,r=0,i=[];++e<n;){var o=t[e];o&&(i[r++]=o)}return i},pr.concat=function(){var t=arguments.length;if(!t)return[];for(var e=r(t-1),n=arguments[0],i=t;i--;)e[i-1]=arguments[i];return tn(As(n)?no(n):[n],Yr(e,1))},pr.cond=function(t){var e=null==t?0:t.length,n=Lo();return t=e?Je(t,(function(t){if("function"!=typeof t[1])throw new ie(c);return[n(t[0]),t[1]]})):[],wi((function(n){for(var r=-1;++r<e;){var i=t[r];if(Ve(i[0],this,n))return Ve(i[1],this,n)}}))},pr.conforms=function(t){return function(t){var e=ic(t);return function(n){return Lr(n,t,e)}}(jr(t,d))},pr.constant=Ec,pr.countBy=Ua,pr.create=function(t,e){var n=hr(t);return null==e?n:Dr(n,e)},pr.curry=function t(e,n,r){var i=ko(e,b,o,o,o,o,o,n=r?o:n);return i.placeholder=t.placeholder,i},pr.curryRight=function t(e,n,r){var i=ko(e,_,o,o,o,o,o,n=r?o:n);return i.placeholder=t.placeholder,i},pr.debounce=is,pr.defaults=Xs,pr.defaultsDeep=Ks,pr.defer=os,pr.delay=as,pr.difference=pa,pr.differenceBy=ha,pr.differenceWith=va,pr.drop=function(t,e,n){var r=null==t?0:t.length;return r?Mi(t,(e=n||e===o?1:zs(e))<0?0:e,r):[]},pr.dropRight=function(t,e,n){var r=null==t?0:t.length;return r?Mi(t,0,(e=r-(e=n||e===o?1:zs(e)))<0?0:e):[]},pr.dropRightWhile=function(t,e){return t&&t.length?Fi(t,Lo(e,3),!0,!0):[]},pr.dropWhile=function(t,e){return t&&t.length?Fi(t,Lo(e,3),!0):[]},pr.fill=function(t,e,n,r){var i=null==t?0:t.length;return i?(n&&"number"!=typeof n&&Qo(t,e,n)&&(n=0,r=i),function(t,e,n,r){var i=t.length;for((n=zs(n))<0&&(n=-n>i?0:i+n),(r=r===o||r>i?i:zs(r))<0&&(r+=i),r=n>r?0:Us(r);n<r;)t[n++]=e;return t}(t,e,n,r)):[]},pr.filter=function(t,e){return(As(t)?Ze:Hr)(t,Lo(e,3))},pr.flatMap=function(t,e){return Yr(Za(t,e),1)},pr.flatMapDeep=function(t,e){return Yr(Za(t,e),B)},pr.flatMapDepth=function(t,e,n){return n=n===o?1:zs(n),Yr(Za(t,e),n)},pr.flatten=ga,pr.flattenDeep=function(t){return(null==t?0:t.length)?Yr(t,B):[]},pr.flattenDepth=function(t,e){return(null==t?0:t.length)?Yr(t,e=e===o?1:zs(e)):[]},pr.flip=function(t){return ko(t,T)},pr.flow=Sc,pr.flowRight=Oc,pr.fromPairs=function(t){for(var e=-1,n=null==t?0:t.length,r={};++e<n;){var i=t[e];r[i[0]]=i[1]}return r},pr.functions=function(t){return null==t?[]:qr(t,ic(t))},pr.functionsIn=function(t){return null==t?[]:qr(t,oc(t))},pr.groupBy=Qa,pr.initial=function(t){return(null==t?0:t.length)?Mi(t,0,-1):[]},pr.intersection=ba,pr.intersectionBy=_a,pr.intersectionWith=xa,pr.invert=ec,pr.invertBy=nc,pr.invokeMap=Wa,pr.iteratee=Dc,pr.keyBy=qa,pr.keys=ic,pr.keysIn=oc,pr.map=Za,pr.mapKeys=function(t,e){var n={};return e=Lo(e,3),Qr(t,(function(t,r,i){Ir(n,e(t,r,i),t)})),n},pr.mapValues=function(t,e){var n={};return e=Lo(e,3),Qr(t,(function(t,r,i){Ir(n,r,e(t,r,i))})),n},pr.matches=function(t){return pi(jr(t,d))},pr.matchesProperty=function(t,e){return hi(t,jr(e,d))},pr.memoize=ss,pr.merge=ac,pr.mergeWith=sc,pr.method=Ic,pr.methodOf=Bc,pr.mixin=Nc,pr.negate=cs,pr.nthArg=function(t){return t=zs(t),wi((function(e){return mi(e,t)}))},pr.omit=cc,pr.omitBy=function(t,e){return lc(t,cs(Lo(e)))},pr.once=function(t){return es(2,t)},pr.orderBy=function(t,e,n,r){return null==t?[]:(As(e)||(e=null==e?[]:[e]),As(n=r?o:n)||(n=null==n?[]:[n]),Ai(t,e,n))},pr.over=Lc,pr.overArgs=us,pr.overEvery=Pc,pr.overSome=$c,pr.partial=ls,pr.partialRight=fs,pr.partition=Xa,pr.pick=uc,pr.pickBy=lc,pr.property=Rc,pr.propertyOf=function(t){return function(e){return null==t?o:Zr(t,e)}},pr.pull=Ca,pr.pullAll=ka,pr.pullAllBy=function(t,e,n){return t&&t.length&&e&&e.length?yi(t,e,Lo(n,2)):t},pr.pullAllWith=function(t,e,n){return t&&t.length&&e&&e.length?yi(t,e,o,n):t},pr.pullAt=Ta,pr.range=Fc,pr.rangeRight=zc,pr.rearg=ds,pr.reject=function(t,e){return(As(t)?Ze:Hr)(t,cs(Lo(e,3)))},pr.remove=function(t,e){var n=[];if(!t||!t.length)return n;var r=-1,i=[],o=t.length;for(e=Lo(e,3);++r<o;){var a=t[r];e(a,r,t)&&(n.push(a),i.push(r))}return bi(t,i),n},pr.rest=function(t,e){if("function"!=typeof t)throw new ie(c);return wi(t,e=e===o?e:zs(e))},pr.reverse=Ea,pr.sampleSize=function(t,e,n){return e=(n?Qo(t,e,n):e===o)?1:zs(e),(As(t)?kr:ki)(t,e)},pr.set=function(t,e,n){return null==t?t:Ti(t,e,n)},pr.setWith=function(t,e,n,r){return r="function"==typeof r?r:o,null==t?t:Ti(t,e,n,r)},pr.shuffle=function(t){return(As(t)?Tr:Oi)(t)},pr.slice=function(t,e,n){var r=null==t?0:t.length;return r?(n&&"number"!=typeof n&&Qo(t,e,n)?(e=0,n=r):(e=null==e?0:zs(e),n=n===o?r:zs(n)),Mi(t,e,n)):[]},pr.sortBy=Ka,pr.sortedUniq=function(t){return t&&t.length?Ni(t):[]},pr.sortedUniqBy=function(t,e){return t&&t.length?Ni(t,Lo(e,2)):[]},pr.split=function(t,e,n){return n&&"number"!=typeof n&&Qo(t,e,n)&&(e=n=o),(n=n===o?P:n>>>0)?(t=Vs(t))&&("string"==typeof e||null!=e&&!Is(e))&&!(e=Li(e))&&kn(t)?Wi(In(t),0,n):t.split(e,n):[]},pr.spread=function(t,e){if("function"!=typeof t)throw new ie(c);return e=null==e?0:Vn(zs(e),0),wi((function(n){var r=n[e],i=Wi(n,0,e);return r&&tn(i,r),Ve(t,this,i)}))},pr.tail=function(t){var e=null==t?0:t.length;return e?Mi(t,1,e):[]},pr.take=function(t,e,n){return t&&t.length?Mi(t,0,(e=n||e===o?1:zs(e))<0?0:e):[]},pr.takeRight=function(t,e,n){var r=null==t?0:t.length;return r?Mi(t,(e=r-(e=n||e===o?1:zs(e)))<0?0:e,r):[]},pr.takeRightWhile=function(t,e){return t&&t.length?Fi(t,Lo(e,3),!1,!0):[]},pr.takeWhile=function(t,e){return t&&t.length?Fi(t,Lo(e,3)):[]},pr.tap=function(t,e){return e(t),t},pr.throttle=function(t,e,n){var r=!0,i=!0;if("function"!=typeof t)throw new ie(c);return Es(n)&&(r="leading"in n?!!n.leading:r,i="trailing"in n?!!n.trailing:i),is(t,e,{leading:r,maxWait:e,trailing:i})},pr.thru=Fa,pr.toArray=Rs,pr.toPairs=fc,pr.toPairsIn=dc,pr.toPath=function(t){return As(t)?Je(t,la):js(t)?[t]:no(ua(Vs(t)))},pr.toPlainObject=Ys,pr.transform=function(t,e,n){var r=As(t),i=r||_s(t)||Ls(t);if(e=Lo(e,4),null==n){var o=t&&t.constructor;n=i?r?new o:[]:Es(t)&&Cs(o)?hr(De(t)):{}}return(i?Qe:Qr)(t,(function(t,r,i){return e(n,t,r,i)})),n},pr.unary=function(t){return ts(t,1)},pr.union=Sa,pr.unionBy=Oa,pr.unionWith=Ma,pr.uniq=function(t){return t&&t.length?Pi(t):[]},pr.uniqBy=function(t,e){return t&&t.length?Pi(t,Lo(e,2)):[]},pr.uniqWith=function(t,e){return e="function"==typeof e?e:o,t&&t.length?Pi(t,o,e):[]},pr.unset=function(t,e){return null==t||$i(t,e)},pr.unzip=Da,pr.unzipWith=Ia,pr.update=function(t,e,n){return null==t?t:Ri(t,e,Vi(n))},pr.updateWith=function(t,e,n,r){return r="function"==typeof r?r:o,null==t?t:Ri(t,e,Vi(n),r)},pr.values=pc,pr.valuesIn=function(t){return null==t?[]:gn(t,oc(t))},pr.without=Ba,pr.words=Cc,pr.wrap=function(t,e){return ls(Vi(e),t)},pr.xor=Na,pr.xorBy=ja,pr.xorWith=La,pr.zip=Pa,pr.zipObject=function(t,e){return Hi(t||[],e||[],Sr)},pr.zipObjectDeep=function(t,e){return Hi(t||[],e||[],Ti)},pr.zipWith=$a,pr.entries=fc,pr.entriesIn=dc,pr.extend=Qs,pr.extendWith=Ws,Nc(pr,pr),pr.add=Yc,pr.attempt=kc,pr.camelCase=hc,pr.capitalize=vc,pr.ceil=Vc,pr.clamp=function(t,e,n){return n===o&&(n=e,e=o),n!==o&&(n=(n=Hs(n))==n?n:0),e!==o&&(e=(e=Hs(e))==e?e:0),Nr(Hs(t),e,n)},pr.clone=function(t){return jr(t,h)},pr.cloneDeep=function(t){return jr(t,d|h)},pr.cloneDeepWith=function(t,e){return jr(t,d|h,e="function"==typeof e?e:o)},pr.cloneWith=function(t,e){return jr(t,h,e="function"==typeof e?e:o)},pr.conformsTo=function(t,e){return null==e||Lr(t,e,ic(e))},pr.deburr=mc,pr.defaultTo=function(t,e){return null==t||t!=t?e:t},pr.divide=Gc,pr.endsWith=function(t,e,n){t=Vs(t),e=Li(e);var r=t.length,i=n=n===o?r:Nr(zs(n),0,r);return(n-=e.length)>=0&&t.slice(n,i)==e},pr.eq=ps,pr.escape=function(t){return(t=Vs(t))&&kt.test(t)?t.replace(wt,wn):t},pr.escapeRegExp=function(t){return(t=Vs(t))&&Bt.test(t)?t.replace(It,"\\$&"):t},pr.every=function(t,e,n){var r=As(t)?qe:zr;return n&&Qo(t,e,n)&&(e=o),r(t,Lo(e,3))},pr.find=Ha,pr.findIndex=ma,pr.findKey=function(t,e){return an(t,Lo(e,3),Qr)},pr.findLast=Ya,pr.findLastIndex=Aa,pr.findLastKey=function(t,e){return an(t,Lo(e,3),Wr)},pr.floor=Qc,pr.forEach=Va,pr.forEachRight=Ga,pr.forIn=function(t,e){return null==t?t:Vr(t,Lo(e,3),oc)},pr.forInRight=function(t,e){return null==t?t:Gr(t,Lo(e,3),oc)},pr.forOwn=function(t,e){return t&&Qr(t,Lo(e,3))},pr.forOwnRight=function(t,e){return t&&Wr(t,Lo(e,3))},pr.get=Js,pr.gt=hs,pr.gte=vs,pr.has=function(t,e){return null!=t&&Ho(t,e,ti)},pr.hasIn=tc,pr.head=ya,pr.identity=Mc,pr.includes=function(t,e,n,r){t=ys(t)?t:pc(t),n=n&&!r?zs(n):0;var i=t.length;return n<0&&(n=Vn(i+n,0)),Ns(t)?n<=i&&t.indexOf(e,n)>-1:!!i&&cn(t,e,n)>-1},pr.indexOf=function(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=null==n?0:zs(n);return i<0&&(i=Vn(r+i,0)),cn(t,e,i)},pr.inRange=function(t,e,n){return e=Fs(e),n===o?(n=e,e=0):n=Fs(n),function(t,e,n){return t>=Gn(e,n)&&t<Vn(e,n)}(t=Hs(t),e,n)},pr.invoke=rc,pr.isArguments=ms,pr.isArray=As,pr.isArrayBuffer=gs,pr.isArrayLike=ys,pr.isArrayLikeObject=bs,pr.isBoolean=function(t){return!0===t||!1===t||Ss(t)&&Kr(t)==Y},pr.isBuffer=_s,pr.isDate=xs,pr.isElement=function(t){return Ss(t)&&1===t.nodeType&&!Ds(t)},pr.isEmpty=function(t){if(null==t)return!0;if(ys(t)&&(As(t)||"string"==typeof t||"function"==typeof t.splice||_s(t)||Ls(t)||ms(t)))return!t.length;var e=Uo(t);if(e==Z||e==nt)return!t.size;if(Xo(t))return!ui(t).length;for(var n in t)if(le.call(t,n))return!1;return!0},pr.isEqual=function(t,e){return oi(t,e)},pr.isEqualWith=function(t,e,n){var r=(n="function"==typeof n?n:o)?n(t,e):o;return r===o?oi(t,e,o,n):!!r},pr.isError=ws,pr.isFinite=function(t){return"number"==typeof t&&Un(t)},pr.isFunction=Cs,pr.isInteger=ks,pr.isLength=Ts,pr.isMap=Os,pr.isMatch=function(t,e){return t===e||ai(t,e,$o(e))},pr.isMatchWith=function(t,e,n){return n="function"==typeof n?n:o,ai(t,e,$o(e),n)},pr.isNaN=function(t){return Ms(t)&&t!=+t},pr.isNative=function(t){if(Zo(t))throw new Kt(s);return si(t)},pr.isNil=function(t){return null==t},pr.isNull=function(t){return null===t},pr.isNumber=Ms,pr.isObject=Es,pr.isObjectLike=Ss,pr.isPlainObject=Ds,pr.isRegExp=Is,pr.isSafeInteger=function(t){return ks(t)&&t>=-N&&t<=N},pr.isSet=Bs,pr.isString=Ns,pr.isSymbol=js,pr.isTypedArray=Ls,pr.isUndefined=function(t){return t===o},pr.isWeakMap=function(t){return Ss(t)&&Uo(t)==at},pr.isWeakSet=function(t){return Ss(t)&&Kr(t)==st},pr.join=function(t,e){return null==t?"":Hn.call(t,e)},pr.kebabCase=Ac,pr.last=wa,pr.lastIndexOf=function(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=r;return n!==o&&(i=(i=zs(n))<0?Vn(r+i,0):Gn(i,r-1)),e==e?function(t,e,n){for(var r=n+1;r--;)if(t[r]===e)return r;return r}(t,e,i):sn(t,ln,i,!0)},pr.lowerCase=gc,pr.lowerFirst=yc,pr.lt=Ps,pr.lte=$s,pr.max=function(t){return t&&t.length?Ur(t,Mc,Jr):o},pr.maxBy=function(t,e){return t&&t.length?Ur(t,Lo(e,2),Jr):o},pr.mean=function(t){return fn(t,Mc)},pr.meanBy=function(t,e){return fn(t,Lo(e,2))},pr.min=function(t){return t&&t.length?Ur(t,Mc,fi):o},pr.minBy=function(t,e){return t&&t.length?Ur(t,Lo(e,2),fi):o},pr.stubArray=Uc,pr.stubFalse=Hc,pr.stubObject=function(){return{}},pr.stubString=function(){return""},pr.stubTrue=function(){return!0},pr.multiply=qc,pr.nth=function(t,e){return t&&t.length?mi(t,zs(e)):o},pr.noConflict=function(){return Be._===this&&(Be._=ve),this},pr.noop=jc,pr.now=Ja,pr.pad=function(t,e,n){t=Vs(t);var r=(e=zs(e))?Dn(t):0;if(!e||r>=e)return t;var i=(e-r)/2;return go(Rn(i),n)+t+go($n(i),n)},pr.padEnd=function(t,e,n){t=Vs(t);var r=(e=zs(e))?Dn(t):0;return e&&r<e?t+go(e-r,n):t},pr.padStart=function(t,e,n){t=Vs(t);var r=(e=zs(e))?Dn(t):0;return e&&r<e?go(e-r,n)+t:t},pr.parseInt=function(t,e,n){return n||null==e?e=0:e&&(e=+e),Wn(Vs(t).replace(jt,""),e||0)},pr.random=function(t,e,n){if(n&&"boolean"!=typeof n&&Qo(t,e,n)&&(e=n=o),n===o&&("boolean"==typeof e?(n=e,e=o):"boolean"==typeof t&&(n=t,t=o)),t===o&&e===o?(t=0,e=1):(t=Fs(t),e===o?(e=t,t=0):e=Fs(e)),t>e){var r=t;t=e,e=r}if(n||t%1||e%1){var i=qn();return Gn(t+i*(e-t+Oe("1e-"+((i+"").length-1))),e)}return _i(t,e)},pr.reduce=function(t,e,n){var r=As(t)?en:hn,i=arguments.length<3;return r(t,Lo(e,4),n,i,Rr)},pr.reduceRight=function(t,e,n){var r=As(t)?nn:hn,i=arguments.length<3;return r(t,Lo(e,4),n,i,Fr)},pr.repeat=function(t,e,n){return e=(n?Qo(t,e,n):e===o)?1:zs(e),xi(Vs(t),e)},pr.replace=function(){var t=arguments,e=Vs(t[0]);return t.length<3?e:e.replace(t[1],t[2])},pr.result=function(t,e,n){var r=-1,i=(e=Gi(e,t)).length;for(i||(i=1,t=o);++r<i;){var a=null==t?o:t[la(e[r])];a===o&&(r=i,a=n),t=Cs(a)?a.call(t):a}return t},pr.round=Zc,pr.runInContext=t,pr.sample=function(t){return(As(t)?Cr:Ci)(t)},pr.size=function(t){if(null==t)return 0;if(ys(t))return Ns(t)?Dn(t):t.length;var e=Uo(t);return e==Z||e==nt?t.size:ui(t).length},pr.snakeCase=bc,pr.some=function(t,e,n){var r=As(t)?rn:Di;return n&&Qo(t,e,n)&&(e=o),r(t,Lo(e,3))},pr.sortedIndex=function(t,e){return Ii(t,e)},pr.sortedIndexBy=function(t,e,n){return Bi(t,e,Lo(n,2))},pr.sortedIndexOf=function(t,e){var n=null==t?0:t.length;if(n){var r=Ii(t,e);if(r<n&&ps(t[r],e))return r}return-1},pr.sortedLastIndex=function(t,e){return Ii(t,e,!0)},pr.sortedLastIndexBy=function(t,e,n){return Bi(t,e,Lo(n,2),!0)},pr.sortedLastIndexOf=function(t,e){if(null==t?0:t.length){var n=Ii(t,e,!0)-1;if(ps(t[n],e))return n}return-1},pr.startCase=_c,pr.startsWith=function(t,e,n){return t=Vs(t),n=null==n?0:Nr(zs(n),0,t.length),e=Li(e),t.slice(n,n+e.length)==e},pr.subtract=Xc,pr.sum=function(t){return t&&t.length?vn(t,Mc):0},pr.sumBy=function(t,e){return t&&t.length?vn(t,Lo(e,2)):0},pr.template=function(t,e,n){var r=pr.templateSettings;n&&Qo(t,e,n)&&(e=o),t=Vs(t),e=Ws({},e,r,To);var i,a,s=Ws({},e.imports,r.imports,To),c=ic(s),u=gn(s,c),l=0,f=e.interpolate||Zt,d="__p += '",p=ne((e.escape||Zt).source+"|"+f.source+"|"+(f===St?Ut:Zt).source+"|"+(e.evaluate||Zt).source+"|$","g"),h="//# sourceURL="+(le.call(e,"sourceURL")?(e.sourceURL+"").replace(/[\r\n]/g," "):"lodash.templateSources["+ ++ke+"]")+"\n";t.replace(p,(function(e,n,r,o,s,c){return r||(r=o),d+=t.slice(l,c).replace(Xt,Cn),n&&(i=!0,d+="' +\n__e("+n+") +\n'"),s&&(a=!0,d+="';\n"+s+";\n__p += '"),r&&(d+="' +\n((__t = ("+r+")) == null ? '' : __t) +\n'"),l=c+e.length,e})),d+="';\n";var v=le.call(e,"variable")&&e.variable;v||(d="with (obj) {\n"+d+"\n}\n"),d=(a?d.replace(yt,""):d).replace(bt,"$1").replace(_t,"$1;"),d="function("+(v||"obj")+") {\n"+(v?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(i?", __e = _.escape":"")+(a?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+d+"return __p\n}";var m=kc((function(){return Jt(c,h+"return "+d).apply(o,u)}));if(m.source=d,ws(m))throw m;return m},pr.times=function(t,e){if((t=zs(t))<1||t>N)return[];var n=P,r=Gn(t,P);e=Lo(e),t-=P;for(var i=mn(r,e);++n<t;)e(n);return i},pr.toFinite=Fs,pr.toInteger=zs,pr.toLength=Us,pr.toLower=function(t){return Vs(t).toLowerCase()},pr.toNumber=Hs,pr.toSafeInteger=function(t){return t?Nr(zs(t),-N,N):0===t?t:0},pr.toString=Vs,pr.toUpper=function(t){return Vs(t).toUpperCase()},pr.trim=function(t,e,n){if((t=Vs(t))&&(n||e===o))return t.replace(Nt,"");if(!t||!(e=Li(e)))return t;var r=In(t),i=In(e);return Wi(r,bn(r,i),_n(r,i)+1).join("")},pr.trimEnd=function(t,e,n){if((t=Vs(t))&&(n||e===o))return t.replace(Lt,"");if(!t||!(e=Li(e)))return t;var r=In(t);return Wi(r,0,_n(r,In(e))+1).join("")},pr.trimStart=function(t,e,n){if((t=Vs(t))&&(n||e===o))return t.replace(jt,"");if(!t||!(e=Li(e)))return t;var r=In(t);return Wi(r,bn(r,In(e))).join("")},pr.truncate=function(t,e){var n=E,r=S;if(Es(e)){var i="separator"in e?e.separator:i;n="length"in e?zs(e.length):n,r="omission"in e?Li(e.omission):r}var a=(t=Vs(t)).length;if(kn(t)){var s=In(t);a=s.length}if(n>=a)return t;var c=n-Dn(r);if(c<1)return r;var u=s?Wi(s,0,c).join(""):t.slice(0,c);if(i===o)return u+r;if(s&&(c+=u.length-c),Is(i)){if(t.slice(c).search(i)){var l,f=u;for(i.global||(i=ne(i.source,Vs(Ht.exec(i))+"g")),i.lastIndex=0;l=i.exec(f);)var d=l.index;u=u.slice(0,d===o?c:d)}}else if(t.indexOf(Li(i),c)!=c){var p=u.lastIndexOf(i);p>-1&&(u=u.slice(0,p))}return u+r},pr.unescape=function(t){return(t=Vs(t))&&Ct.test(t)?t.replace(xt,Bn):t},pr.uniqueId=function(t){var e=++fe;return Vs(t)+e},pr.upperCase=xc,pr.upperFirst=wc,pr.each=Va,pr.eachRight=Ga,pr.first=ya,Nc(pr,(Wc={},Qr(pr,(function(t,e){le.call(pr.prototype,e)||(Wc[e]=t)})),Wc),{chain:!1}),pr.VERSION="4.17.15",Qe(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(t){pr[t].placeholder=pr})),Qe(["drop","take"],(function(t,e){Ar.prototype[t]=function(n){n=n===o?1:Vn(zs(n),0);var r=this.__filtered__&&!e?new Ar(this):this.clone();return r.__filtered__?r.__takeCount__=Gn(n,r.__takeCount__):r.__views__.push({size:Gn(n,P),type:t+(r.__dir__<0?"Right":"")}),r},Ar.prototype[t+"Right"]=function(e){return this.reverse()[t](e).reverse()}})),Qe(["filter","map","takeWhile"],(function(t,e){var n=e+1,r=n==D||3==n;Ar.prototype[t]=function(t){var e=this.clone();return e.__iteratees__.push({iteratee:Lo(t,3),type:n}),e.__filtered__=e.__filtered__||r,e}})),Qe(["head","last"],(function(t,e){var n="take"+(e?"Right":"");Ar.prototype[t]=function(){return this[n](1).value()[0]}})),Qe(["initial","tail"],(function(t,e){var n="drop"+(e?"":"Right");Ar.prototype[t]=function(){return this.__filtered__?new Ar(this):this[n](1)}})),Ar.prototype.compact=function(){return this.filter(Mc)},Ar.prototype.find=function(t){return this.filter(t).head()},Ar.prototype.findLast=function(t){return this.reverse().find(t)},Ar.prototype.invokeMap=wi((function(t,e){return"function"==typeof t?new Ar(this):this.map((function(n){return ri(n,t,e)}))})),Ar.prototype.reject=function(t){return this.filter(cs(Lo(t)))},Ar.prototype.slice=function(t,e){t=zs(t);var n=this;return n.__filtered__&&(t>0||e<0)?new Ar(n):(t<0?n=n.takeRight(-t):t&&(n=n.drop(t)),e!==o&&(n=(e=zs(e))<0?n.dropRight(-e):n.take(e-t)),n)},Ar.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},Ar.prototype.toArray=function(){return this.take(P)},Qr(Ar.prototype,(function(t,e){var n=/^(?:filter|find|map|reject)|While$/.test(e),r=/^(?:head|last)$/.test(e),i=pr[r?"take"+("last"==e?"Right":""):e],a=r||/^find/.test(e);i&&(pr.prototype[e]=function(){var e=this.__wrapped__,s=r?[1]:arguments,c=e instanceof Ar,u=s[0],l=c||As(e),f=function(t){var e=i.apply(pr,tn([t],s));return r&&d?e[0]:e};l&&n&&"function"==typeof u&&1!=u.length&&(c=l=!1);var d=this.__chain__,p=!!this.__actions__.length,h=a&&!d,v=c&&!p;if(!a&&l){e=v?e:new Ar(this);var m=t.apply(e,s);return m.__actions__.push({func:Fa,args:[f],thisArg:o}),new mr(m,d)}return h&&v?t.apply(this,s):(m=this.thru(f),h?r?m.value()[0]:m.value():m)})})),Qe(["pop","push","shift","sort","splice","unshift"],(function(t){var e=oe[t],n=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",r=/^(?:pop|shift)$/.test(t);pr.prototype[t]=function(){var t=arguments;if(r&&!this.__chain__){var i=this.value();return e.apply(As(i)?i:[],t)}return this[n]((function(n){return e.apply(As(n)?n:[],t)}))}})),Qr(Ar.prototype,(function(t,e){var n=pr[e];if(n){var r=n.name+"";le.call(ir,r)||(ir[r]=[]),ir[r].push({name:e,func:n})}})),ir[ho(o,g).name]=[{name:"wrapper",func:o}],Ar.prototype.clone=function(){var t=new Ar(this.__wrapped__);return t.__actions__=no(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=no(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=no(this.__views__),t},Ar.prototype.reverse=function(){if(this.__filtered__){var t=new Ar(this);t.__dir__=-1,t.__filtered__=!0}else(t=this.clone()).__dir__*=-1;return t},Ar.prototype.value=function(){var t=this.__wrapped__.value(),e=this.__dir__,n=As(t),r=e<0,i=n?t.length:0,o=function(t,e,n){var r=-1,i=n.length;for(;++r<i;){var o=n[r],a=o.size;switch(o.type){case"drop":t+=a;break;case"dropRight":e-=a;break;case"take":e=Gn(e,t+a);break;case"takeRight":t=Vn(t,e-a)}}return{start:t,end:e}}(0,i,this.__views__),a=o.start,s=o.end,c=s-a,u=r?s:a-1,l=this.__iteratees__,f=l.length,d=0,p=Gn(c,this.__takeCount__);if(!n||!r&&i==c&&p==c)return zi(t,this.__actions__);var h=[];t:for(;c--&&d<p;){for(var v=-1,m=t[u+=e];++v<f;){var A=l[v],g=A.iteratee,y=A.type,b=g(m);if(y==I)m=b;else if(!b){if(y==D)continue t;break t}}h[d++]=m}return h},pr.prototype.at=za,pr.prototype.chain=function(){return Ra(this)},pr.prototype.commit=function(){return new mr(this.value(),this.__chain__)},pr.prototype.next=function(){this.__values__===o&&(this.__values__=Rs(this.value()));var t=this.__index__>=this.__values__.length;return{done:t,value:t?o:this.__values__[this.__index__++]}},pr.prototype.plant=function(t){for(var e,n=this;n instanceof vr;){var r=da(n);r.__index__=0,r.__values__=o,e?i.__wrapped__=r:e=r;var i=r;n=n.__wrapped__}return i.__wrapped__=t,e},pr.prototype.reverse=function(){var t=this.__wrapped__;if(t instanceof Ar){var e=t;return this.__actions__.length&&(e=new Ar(this)),(e=e.reverse()).__actions__.push({func:Fa,args:[Ea],thisArg:o}),new mr(e,this.__chain__)}return this.thru(Ea)},pr.prototype.toJSON=pr.prototype.valueOf=pr.prototype.value=function(){return zi(this.__wrapped__,this.__actions__)},pr.prototype.first=pr.prototype.head,$e&&(pr.prototype[$e]=function(){return this}),pr}();Be._=Nn,(i=function(){return Nn}.call(e,n,e,r))===o||(r.exports=i)}).call(this)}).call(this,n(3),n(50)(t))},function(t,e,n){(function(t){var r=void 0!==t&&t||"undefined"!=typeof self&&self||window,i=Function.prototype.apply;function o(t,e){this._id=t,this._clearFn=e}e.setTimeout=function(){return new o(i.call(setTimeout,r,arguments),clearTimeout)},e.setInterval=function(){return new o(i.call(setInterval,r,arguments),clearInterval)},e.clearTimeout=e.clearInterval=function(t){t&&t.close()},o.prototype.unref=o.prototype.ref=function(){},o.prototype.close=function(){this._clearFn.call(r,this._id)},e.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},e.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},e._unrefActive=e.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;e>=0&&(t._idleTimeoutId=setTimeout((function(){t._onTimeout&&t._onTimeout()}),e))},n(23),e.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==t&&t.setImmediate||this&&this.setImmediate,e.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==t&&t.clearImmediate||this&&this.clearImmediate}).call(this,n(3))},function(t,e,n){(function(t,e){!function(t,n){"use strict";if(!t.setImmediate){var r,i,o,a,s,c=1,u={},l=!1,f=t.document,d=Object.getPrototypeOf&&Object.getPrototypeOf(t);d=d&&d.setTimeout?d:t,"[object process]"==={}.toString.call(t.process)?r=function(t){e.nextTick((function(){h(t)}))}:!function(){if(t.postMessage&&!t.importScripts){var e=!0,n=t.onmessage;return t.onmessage=function(){e=!1},t.postMessage("","*"),t.onmessage=n,e}}()?t.MessageChannel?((o=new MessageChannel).port1.onmessage=function(t){h(t.data)},r=function(t){o.port2.postMessage(t)}):f&&"onreadystatechange"in f.createElement("script")?(i=f.documentElement,r=function(t){var e=f.createElement("script");e.onreadystatechange=function(){h(t),e.onreadystatechange=null,i.removeChild(e),e=null},i.appendChild(e)}):r=function(t){setTimeout(h,0,t)}:(a="setImmediate$"+Math.random()+"$",s=function(e){e.source===t&&"string"==typeof e.data&&0===e.data.indexOf(a)&&h(+e.data.slice(a.length))},t.addEventListener?t.addEventListener("message",s,!1):t.attachEvent("onmessage",s),r=function(e){t.postMessage(a+e,"*")}),d.setImmediate=function(t){"function"!=typeof t&&(t=new Function(""+t));for(var e=new Array(arguments.length-1),n=0;n<e.length;n++)e[n]=arguments[n+1];var i={callback:t,args:e};return u[c]=i,r(c),c++},d.clearImmediate=p}function p(t){delete u[t]}function h(t){if(l)setTimeout(h,0,t);else{var e=u[t];if(e){l=!0;try{!function(t){var e=t.callback,r=t.args;switch(r.length){case 0:e();break;case 1:e(r[0]);break;case 2:e(r[0],r[1]);break;case 3:e(r[0],r[1],r[2]);break;default:e.apply(n,r)}}(e)}finally{p(t),l=!1}}}}}("undefined"==typeof self?void 0===t?this:t:self)}).call(this,n(3),n(6))},function(t,e,n){t.exports=n(25)},function(t,e,n){"use strict";var r=n(1),i=n(7),o=n(27),a=n(13);function s(t){var e=new o(t),n=i(o.prototype.request,e);return r.extend(n,o.prototype,e),r.extend(n,e),n}var c=s(n(10));c.Axios=o,c.create=function(t){return s(a(c.defaults,t))},c.Cancel=n(14),c.CancelToken=n(39),c.isCancel=n(9),c.all=function(t){return Promise.all(t)},c.spread=n(40),t.exports=c,t.exports.default=c},function(t,e){ +/*! + * Determine if an object is a Buffer + * + * @author Feross Aboukhadijeh <https://feross.org> + * @license MIT + */ +t.exports=function(t){return null!=t&&null!=t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}},function(t,e,n){"use strict";var r=n(1),i=n(8),o=n(28),a=n(29),s=n(13);function c(t){this.defaults=t,this.interceptors={request:new o,response:new o}}c.prototype.request=function(t){"string"==typeof t?(t=arguments[1]||{}).url=arguments[0]:t=t||{},(t=s(this.defaults,t)).method=t.method?t.method.toLowerCase():"get";var e=[a,void 0],n=Promise.resolve(t);for(this.interceptors.request.forEach((function(t){e.unshift(t.fulfilled,t.rejected)})),this.interceptors.response.forEach((function(t){e.push(t.fulfilled,t.rejected)}));e.length;)n=n.then(e.shift(),e.shift());return n},c.prototype.getUri=function(t){return t=s(this.defaults,t),i(t.url,t.params,t.paramsSerializer).replace(/^\?/,"")},r.forEach(["delete","get","head","options"],(function(t){c.prototype[t]=function(e,n){return this.request(r.merge(n||{},{method:t,url:e}))}})),r.forEach(["post","put","patch"],(function(t){c.prototype[t]=function(e,n,i){return this.request(r.merge(i||{},{method:t,url:e,data:n}))}})),t.exports=c},function(t,e,n){"use strict";var r=n(1);function i(){this.handlers=[]}i.prototype.use=function(t,e){return this.handlers.push({fulfilled:t,rejected:e}),this.handlers.length-1},i.prototype.eject=function(t){this.handlers[t]&&(this.handlers[t]=null)},i.prototype.forEach=function(t){r.forEach(this.handlers,(function(e){null!==e&&t(e)}))},t.exports=i},function(t,e,n){"use strict";var r=n(1),i=n(30),o=n(9),a=n(10),s=n(37),c=n(38);function u(t){t.cancelToken&&t.cancelToken.throwIfRequested()}t.exports=function(t){return u(t),t.baseURL&&!s(t.url)&&(t.url=c(t.baseURL,t.url)),t.headers=t.headers||{},t.data=i(t.data,t.headers,t.transformRequest),t.headers=r.merge(t.headers.common||{},t.headers[t.method]||{},t.headers||{}),r.forEach(["delete","get","head","post","put","patch","common"],(function(e){delete t.headers[e]})),(t.adapter||a.adapter)(t).then((function(e){return u(t),e.data=i(e.data,e.headers,t.transformResponse),e}),(function(e){return o(e)||(u(t),e&&e.response&&(e.response.data=i(e.response.data,e.response.headers,t.transformResponse))),Promise.reject(e)}))}},function(t,e,n){"use strict";var r=n(1);t.exports=function(t,e,n){return r.forEach(n,(function(n){t=n(t,e)})),t}},function(t,e,n){"use strict";var r=n(1);t.exports=function(t,e){r.forEach(t,(function(n,r){r!==e&&r.toUpperCase()===e.toUpperCase()&&(t[e]=n,delete t[r])}))}},function(t,e,n){"use strict";var r=n(12);t.exports=function(t,e,n){var i=n.config.validateStatus;!i||i(n.status)?t(n):e(r("Request failed with status code "+n.status,n.config,null,n.request,n))}},function(t,e,n){"use strict";t.exports=function(t,e,n,r,i){return t.config=e,n&&(t.code=n),t.request=r,t.response=i,t.isAxiosError=!0,t.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},t}},function(t,e,n){"use strict";var r=n(1),i=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];t.exports=function(t){var e,n,o,a={};return t?(r.forEach(t.split("\n"),(function(t){if(o=t.indexOf(":"),e=r.trim(t.substr(0,o)).toLowerCase(),n=r.trim(t.substr(o+1)),e){if(a[e]&&i.indexOf(e)>=0)return;a[e]="set-cookie"===e?(a[e]?a[e]:[]).concat([n]):a[e]?a[e]+", "+n:n}})),a):a}},function(t,e,n){"use strict";var r=n(1);t.exports=r.isStandardBrowserEnv()?function(){var t,e=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function i(t){var r=t;return e&&(n.setAttribute("href",r),r=n.href),n.setAttribute("href",r),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return t=i(window.location.href),function(e){var n=r.isString(e)?i(e):e;return n.protocol===t.protocol&&n.host===t.host}}():function(){return!0}},function(t,e,n){"use strict";var r=n(1);t.exports=r.isStandardBrowserEnv()?{write:function(t,e,n,i,o,a){var s=[];s.push(t+"="+encodeURIComponent(e)),r.isNumber(n)&&s.push("expires="+new Date(n).toGMTString()),r.isString(i)&&s.push("path="+i),r.isString(o)&&s.push("domain="+o),!0===a&&s.push("secure"),document.cookie=s.join("; ")},read:function(t){var e=document.cookie.match(new RegExp("(^|;\\s*)("+t+")=([^;]*)"));return e?decodeURIComponent(e[3]):null},remove:function(t){this.write(t,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},function(t,e,n){"use strict";t.exports=function(t){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(t)}},function(t,e,n){"use strict";t.exports=function(t,e){return e?t.replace(/\/+$/,"")+"/"+e.replace(/^\/+/,""):t}},function(t,e,n){"use strict";var r=n(14);function i(t){if("function"!=typeof t)throw new TypeError("executor must be a function.");var e;this.promise=new Promise((function(t){e=t}));var n=this;t((function(t){n.reason||(n.reason=new r(t),e(n.reason))}))}i.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},i.source=function(){var t;return{token:new i((function(e){t=e})),cancel:t}},t.exports=i},function(t,e,n){"use strict";t.exports=function(t){return function(e){return t.apply(null,e)}}},,,function(t,e,n){var r=n(52);"string"==typeof r&&(r=[[t.i,r,""]]);var i={insert:"head",singleton:!1};n(20)(r,i);r.locals&&(t.exports=r.locals)},,,,,,,function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,e,n){"use strict";var r=n(43);n.n(r).a},function(t,e,n){(t.exports=n(19)(!1)).push([t.i,"\n.two-factor-loading {\n\tdisplay: inline-block;\n\tvertical-align: sub;\n\tmargin-left: -2px;\n\tmargin-right: 1px;\n}\n",""])},,,,,,,,,,,,function(e,n,r){"use strict";r.r(n);var i=r(2),o=r(4),a=r.n(o),s=r(15),c=r(16),u=r(21),l=r.n(u),f={name:"AdminTwoFactor",components:{Multiselect:c.Multiselect},data:function(){return{loading:!1,dirty:!1,groups:[],loadingGroups:!1}},computed:{enforced:{get:function(){return this.$store.state.enforced},set:function(t){this.dirty=!0,this.$store.commit("setEnforced",t)}},enforcedGroups:{get:function(){return this.$store.state.enforcedGroups},set:function(t){this.dirty=!0,this.$store.commit("setEnforcedGroups",t)}},excludedGroups:{get:function(){return this.$store.state.excludedGroups},set:function(t){this.dirty=!0,this.$store.commit("setExcludedGroups",t)}}},mounted:function(){this.groups=l.a.sortedUniq(l.a.uniq(this.enforcedGroups.concat(this.excludedGroups))),this.searchGroup("")},methods:{searchGroup:l.a.debounce((function(t){var e=this;this.loadingGroups=!0,a.a.get(OC.linkToOCS("cloud/groups?offset=0&search=".concat(encodeURIComponent(t),"&limit=20"),2)).then((function(t){return t.data.ocs})).then((function(t){return t.data.groups})).then((function(t){return e.groups=l.a.sortedUniq(l.a.uniq(e.groups.concat(t)))})).catch((function(t){return console.error("could not search groups",t)})).then((function(){return e.loadingGroups=!1}))}),500),saveChanges:function(){var t=this;this.loading=!0;var e={enforced:this.enforced,enforcedGroups:this.enforcedGroups,excludedGroups:this.excludedGroups};a.a.put(OC.generateUrl("/settings/api/admin/twofactorauth"),e).then((function(t){return t.data})).then((function(e){t.state=e,t.dirty=!1})).catch((function(t){console.error("could not save changes",t)})).then((function(){return t.loading=!1}))}}},d=(r(51),r(5)),p=Object(d.a)(f,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",[n("p",{staticClass:"settings-hint"},[t._v("\n\t\t"+t._s(t.t("settings","Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system."))+"\n\t")]),t._v(" "),t.loading?n("p",[n("span",{staticClass:"icon-loading-small two-factor-loading"}),t._v(" "),n("span",[t._v(t._s(t.t("settings","Enforce two-factor authentication")))])]):n("p",[n("input",{directives:[{name:"model",rawName:"v-model",value:t.enforced,expression:"enforced"}],staticClass:"checkbox",attrs:{type:"checkbox",id:"two-factor-enforced"},domProps:{checked:Array.isArray(t.enforced)?t._i(t.enforced,null)>-1:t.enforced},on:{change:function(e){var n=t.enforced,r=e.target,i=!!r.checked;if(Array.isArray(n)){var o=t._i(n,null);r.checked?o<0&&(t.enforced=n.concat([null])):o>-1&&(t.enforced=n.slice(0,o).concat(n.slice(o+1)))}else t.enforced=i}}}),t._v(" "),n("label",{attrs:{for:"two-factor-enforced"}},[t._v(t._s(t.t("settings","Enforce two-factor authentication")))])]),t._v(" "),t.enforced?[n("h3",[t._v(t._s(t.t("settings","Limit to groups")))]),t._v("\n\t\t"+t._s(t.t("settings","Enforcement of two-factor authentication can be set for certain groups only."))+"\n\t\t"),n("p",[t._v("\n\t\t\t"+t._s(t.t("settings","Two-factor authentication is enforced for all\tmembers of the following groups."))+"\n\t\t")]),t._v(" "),n("p",[n("Multiselect",{attrs:{options:t.groups,placeholder:t.t("settings","Enforced groups"),disabled:t.loading,multiple:!0,searchable:!0,loading:t.loadingGroups,"show-no-options":!1,"close-on-select":!1},on:{"search-change":t.searchGroup},model:{value:t.enforcedGroups,callback:function(e){t.enforcedGroups=e},expression:"enforcedGroups"}})],1),t._v(" "),n("p",[t._v("\n\t\t\t"+t._s(t.t("settings","Two-factor authentication is not enforced for\tmembers of the following groups."))+"\n\t\t")]),t._v(" "),n("p",[n("Multiselect",{attrs:{options:t.groups,placeholder:t.t("settings","Excluded groups"),disabled:t.loading,multiple:!0,searchable:!0,loading:t.loadingGroups,"show-no-options":!1,"close-on-select":!1},on:{"search-change":t.searchGroup},model:{value:t.excludedGroups,callback:function(e){t.excludedGroups=e},expression:"excludedGroups"}})],1),t._v(" "),n("p",[n("em",[t._v("\n\t\t\t\t"+t._s(t.t("settings","When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced."))+"\n\t\t\t")])])]:t._e(),t._v(" "),n("p",[t.dirty?n("button",{staticClass:"button primary",attrs:{disabled:t.loading},on:{click:t.saveChanges}},[t._v("\n\t\t\t"+t._s(t.t("settings","Save changes"))+"\n\t\t")]):t._e()])],2)}),[],!1,null,null,null).exports; +/* + * @copyright 2019 Roeland Jago Douma <roeland@famdouma.nl> + * + * @author 2019 Roeland Jago Douma <roeland@famdouma.nl> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +i.default.use(s.a);var h={setEnforced:function(t,e){i.default.set(t,"enforced",e)},setEnforcedGroups:function(t,e){i.default.set(t,"enforcedGroups",e)},setExcludedGroups:function(t,e){i.default.set(t,"excludedGroups",e)}},v={save:function(t){var e=t.commit;return e("setEnabled",!1),generateCodes().then((function(t){var n=t.codes,r=t.state;return e("setEnabled",r.enabled),e("setTotal",r.total),e("setUsed",r.used),e("setCodes",n),!0}))}},m=new s.a.Store({strict:!1,state:{enforced:!1,enforcedGroups:[],excludedGroups:[]},mutations:h,actions:v});r.nc=btoa(OC.requestToken),i.default.prototype.t=t,window.OC=window.OC||{},window.OC.Settings=window.OC.Settings||{},m.replaceState(OCP.InitialState.loadState("settings","mandatory2FAState")),new(i.default.extend(p))({store:m}).$mount("#two-factor-auth-settings")}]); +//# sourceMappingURL=vue-settings-admin-security.js.map?v=4d458e9ad942d926653b \ No newline at end of file diff --git a/apps/settings/js/vue-settings-admin-security.js.map b/apps/settings/js/vue-settings-admin-security.js.map new file mode 100644 index 00000000000..16d9940402c --- /dev/null +++ b/apps/settings/js/vue-settings-admin-security.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/axios/lib/utils.js","webpack:///./node_modules/vue/dist/vue.runtime.esm.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/nextcloud-axios/dist/client.js","webpack:///./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/axios/lib/helpers/buildURL.js","webpack:///./node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/axios/lib/defaults.js","webpack:///./node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/axios/lib/core/createError.js","webpack:///./node_modules/axios/lib/core/mergeConfig.js","webpack:///./node_modules/axios/lib/cancel/Cancel.js","webpack:///./node_modules/vuex/dist/vuex.esm.js","webpack:///./node_modules/nextcloud-vue/dist/ncvuecomponents.js","webpack:///./node_modules/css-loader/dist/runtime/api.js","webpack:///./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack:///./node_modules/lodash/lodash.js","webpack:///./node_modules/timers-browserify/main.js","webpack:///./node_modules/setimmediate/setImmediate.js","webpack:///./node_modules/axios/index.js","webpack:///./node_modules/axios/lib/axios.js","webpack:///./node_modules/axios/node_modules/is-buffer/index.js","webpack:///./node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///./node_modules/axios/lib/core/settle.js","webpack:///./node_modules/axios/lib/core/enhanceError.js","webpack:///./node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/axios/lib/helpers/cookies.js","webpack:///./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/axios/lib/helpers/combineURLs.js","webpack:///./node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/axios/lib/helpers/spread.js","webpack:///./apps/settings/src/components/AdminTwoFactor.vue?8356","webpack:///(webpack)/buildin/module.js","webpack:///./apps/settings/src/components/AdminTwoFactor.vue?164a","webpack:///./apps/settings/src/components/AdminTwoFactor.vue?999f","webpack:///./apps/settings/src/components/AdminTwoFactor.vue?5ef6","webpack:///apps/settings/src/components/AdminTwoFactor.vue","webpack:///./apps/settings/src/components/AdminTwoFactor.vue","webpack:///./apps/settings/src/components/AdminTwoFactor.vue?9143","webpack:///./apps/settings/src/store/admin-security.js","webpack:///./apps/settings/src/main-admin-security.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","isBuffer","toString","isArray","val","isObject","isFunction","forEach","obj","fn","length","isArrayBuffer","isFormData","FormData","isArrayBufferView","ArrayBuffer","isView","buffer","isString","isNumber","isUndefined","isDate","isFile","isBlob","isStream","pipe","isURLSearchParams","URLSearchParams","isStandardBrowserEnv","navigator","product","window","document","merge","result","assignValue","arguments","deepMerge","extend","a","b","thisArg","trim","str","replace","emptyObject","freeze","isUndef","v","isDef","isTrue","isPrimitive","_toString","isPlainObject","isRegExp","isValidArrayIndex","parseFloat","String","Math","floor","isFinite","isPromise","then","catch","Array","JSON","stringify","toNumber","isNaN","makeMap","expectsLowerCase","map","list","split","toLowerCase","isReservedAttribute","remove","arr","item","index","indexOf","splice","hasOwn","cached","cache","camelizeRE","camelize","_","toUpperCase","capitalize","charAt","slice","hyphenateRE","hyphenate","Function","ctx","boundFn","apply","_length","toArray","start","ret","to","_from","toObject","res","noop","no","identity","looseEqual","isObjectA","isObjectB","isArrayA","isArrayB","every","e","Date","getTime","keysA","keys","keysB","looseIndexOf","once","called","this","SSR_ATTR","ASSET_TYPES","LIFECYCLE_HOOKS","config","optionMergeStrategies","silent","productionTip","devtools","performance","errorHandler","warnHandler","ignoredElements","keyCodes","isReservedTag","isReservedAttr","isUnknownElement","getTagNamespace","parsePlatformTagName","mustUseProp","async","_lifecycleHooks","unicodeRegExp","def","writable","configurable","bailRE","RegExp","_isServer","hasProto","inBrowser","inWeex","WXEnvironment","platform","weexPlatform","UA","userAgent","isIE","test","isIE9","isEdge","isIOS","isFF","match","nativeWatch","watch","supportsPassive","opts","addEventListener","isServerRendering","undefined","global","env","VUE_ENV","__VUE_DEVTOOLS_GLOBAL_HOOK__","isNative","Ctor","_Set","hasSymbol","Reflect","ownKeys","Set","set","has","add","clear","warn","uid","Dep","id","subs","addSub","sub","push","removeSub","depend","target","addDep","notify","update","targetStack","pushTarget","popTarget","pop","VNode","tag","data","children","text","elm","context","componentOptions","asyncFactory","fnContext","fnOptions","fnScopeId","componentInstance","parent","raw","isStatic","isRootInsert","isComment","isCloned","isOnce","asyncMeta","isAsyncPlaceholder","prototypeAccessors","child","defineProperties","createEmptyVNode","node","createTextVNode","cloneVNode","vnode","cloned","arrayProto","arrayMethods","method","original","args","len","inserted","ob","__ob__","observeArray","dep","arrayKeys","getOwnPropertyNames","shouldObserve","toggleObserving","Observer","vmCount","src","__proto__","protoAugment","copyAugment","walk","observe","asRootData","isExtensible","_isVue","defineReactive$$1","customSetter","shallow","getOwnPropertyDescriptor","setter","childOb","dependArray","newVal","max","del","items","strats","mergeData","from","toVal","fromVal","mergeDataOrFn","parentVal","childVal","vm","instanceData","defaultData","mergeHook","concat","hooks","dedupeHooks","mergeAssets","hook","type","key$1","props","methods","inject","computed","provide","defaultStrat","mergeOptions","options","normalizeProps","normalized","normalizeInject","dirs","directives","def$$1","normalizeDirectives","_base","extends","mixins","mergeField","strat","resolveAsset","warnMissing","assets","camelizedId","PascalCaseId","validateProp","propOptions","propsData","prop","absent","booleanIndex","getTypeIndex","Boolean","stringIndex","default","$options","_props","getType","getPropDefaultValue","prevShouldObserve","isSameType","expectedTypes","handleError","err","info","cur","$parent","errorCaptured","globalHandleError","invokeWithErrorHandling","handler","_handled","logError","console","error","timerFunc","isUsingMicroTask","callbacks","pending","flushCallbacks","copies","Promise","resolve","setTimeout","MutationObserver","setImmediate","counter","observer","textNode","createTextNode","characterData","nextTick","cb","_resolve","seenObjects","traverse","_traverse","seen","isA","isFrozen","depId","normalizeEvent","passive","once$$1","capture","createFnInvoker","fns","invoker","arguments$1","updateListeners","on","oldOn","remove$$1","createOnceHandler","old","event","params","mergeVNodeHook","hookKey","oldHook","wrappedHook","merged","checkProp","hash","altKey","preserve","normalizeChildren","normalizeArrayChildren","nestedIndex","lastIndex","last","isTextNode","shift","_isVList","resolveInject","provideKey","source","_provided","provideDefault","resolveSlots","slots","attrs","slot","name$1","isWhitespace","normalizeScopedSlots","normalSlots","prevSlots","hasNormalSlots","isStable","$stable","$key","_normalized","$hasNormal","normalizeScopedSlot","key$2","proxyNormalSlot","proxy","renderList","render","iterator","next","done","renderSlot","fallback","bindObject","nodes","scopedSlotFn","$scopedSlots","$slots","$createElement","resolveFilter","isKeyNotMatch","expect","actual","checkKeyCodes","eventKeyCode","builtInKeyCode","eventKeyName","builtInKeyName","mappedKeyCode","bindObjectProps","asProp","isSync","loop","domProps","camelizedKey","hyphenatedKey","$event","renderStatic","isInFor","_staticTrees","tree","markStatic","staticRenderFns","_renderProxy","markOnce","markStaticNode","bindObjectListeners","existing","ours","resolveScopedSlots","hasDynamicKeys","contentHashKey","bindDynamicKeys","baseObj","values","prependModifier","symbol","installRenderHelpers","_o","_n","_s","_l","_t","_q","_i","_m","_f","_k","_b","_v","_e","_u","_g","_d","_p","FunctionalRenderContext","contextVm","this$1","_original","isCompiled","_compiled","needNormalization","listeners","injections","scopedSlots","_scopeId","_c","createElement","cloneAndMarkFunctionalResult","renderContext","clone","mergeProps","componentVNodeHooks","init","hydrating","_isDestroyed","keepAlive","mountedNode","prepatch","_isComponent","_parentVnode","inlineTemplate","createComponentInstanceForVnode","activeInstance","$mount","oldVnode","parentVnode","renderChildren","newScopedSlots","oldScopedSlots","hasDynamicScopedSlot","needsForceUpdate","_renderChildren","$vnode","_vnode","$attrs","$listeners","propKeys","_propKeys","oldListeners","_parentListeners","updateComponentListeners","$forceUpdate","updateChildComponent","insert","_isMounted","callHook","_inactive","activatedChildren","activateChildComponent","destroy","deactivateChildComponent","direct","_directInactive","isInInactiveTree","$children","$destroy","hooksToMerge","createComponent","baseCtor","cid","factory","errorComp","resolved","owner","currentRenderingInstance","owners","loading","loadingComp","sync","timerLoading","timerTimeout","$on","forceRender","renderCompleted","clearTimeout","ensureCtor","reject","reason","component","delay","timeout","resolveAsyncComponent","createAsyncPlaceholder","resolveConstructorOptions","model","callback","transformModel","extractPropsFromVNodeData","functional","vnodes","createFunctionalComponent","nativeOn","abstract","toMerge","_merged","mergeHook$1","installComponentHooks","f1","f2","SIMPLE_NORMALIZE","ALWAYS_NORMALIZE","normalizationType","alwaysNormalize","is","simpleNormalizeChildren","pre","applyNS","force","style","class","registerDeepBindings","_createElement","comp","base","getFirstComponentChild","remove$1","$off","_target","onceHandler","setActiveInstance","prevActiveInstance","handlers","j","_hasHookEvent","$emit","queue","waiting","flushing","currentFlushTimestamp","getNow","now","createEvent","timeStamp","flushSchedulerQueue","watcher","sort","before","run","activatedQueue","updatedQueue","callActivatedHooks","_watcher","callUpdatedHooks","emit","uid$2","Watcher","expOrFn","isRenderWatcher","_watchers","deep","user","lazy","active","dirty","deps","newDeps","depIds","newDepIds","expression","path","segments","parsePath","cleanupDeps","tmp","queueWatcher","oldValue","evaluate","teardown","_isBeingDestroyed","sharedPropertyDefinition","sourceKey","initState","propsOptions","initProps","initMethods","_data","getData","charCodeAt","initData","watchers","_computedWatchers","isSSR","userDef","computedWatcherOptions","defineComputed","initComputed","createWatcher","initWatch","shouldCache","createComputedGetter","createGetterInvoker","$watch","uid$3","super","superOptions","modifiedOptions","modified","latest","sealed","sealedOptions","resolveModifiedOptions","extendOptions","components","Vue","_init","initExtend","Super","SuperId","cachedCtors","_Ctor","Sub","constructor","Comp","initProps$1","initComputed$1","mixin","use","getComponentName","matches","pattern","pruneCache","keepAliveInstance","filter","cachedNode","pruneCacheEntry","current","cached$$1","_uid","vnodeComponentOptions","_componentTag","initInternalComponent","_self","$root","$refs","initLifecycle","_events","initEvents","parentData","initRender","initInjections","initProvide","el","initMixin","dataDef","propsDef","$set","$delete","immediate","stateMixin","hookRE","$once","i$1","cbs","eventsMixin","_update","prevEl","$el","prevVnode","restoreActiveInstance","__patch__","__vue__","lifecycleMixin","$nextTick","_render","ref","renderMixin","patternTypes","builtInComponents","KeepAlive","include","exclude","Number","created","destroyed","mounted","parseInt","configDef","util","defineReactive","delete","observable","plugin","installedPlugins","_installedPlugins","unshift","install","initUse","initMixin$1","definition","initAssetRegisters","initGlobalAPI","ssrContext","version","acceptValue","isEnumeratedAttr","isValidContentEditableValue","convertEnumeratedValue","isFalsyAttrValue","isBooleanAttr","xlinkNS","isXlink","getXlinkProp","genClassForVnode","parentNode","childNode","mergeClassData","staticClass","dynamicClass","stringifyClass","renderClass","stringified","stringifyArray","stringifyObject","namespaceMap","svg","math","isHTMLTag","isSVG","unknownElementCache","isTextInputType","nodeOps","tagName","multiple","setAttribute","createElementNS","namespace","createComment","insertBefore","newNode","referenceNode","removeChild","appendChild","nextSibling","setTextContent","textContent","setStyleScope","scopeId","registerRef","isRemoval","refs","refInFor","emptyNode","sameVnode","typeA","typeB","sameInputType","createKeyToOldIdx","beginIdx","endIdx","updateDirectives","oldDir","dir","isCreate","isDestroy","oldDirs","normalizeDirectives$1","newDirs","dirsWithInsert","dirsWithPostpatch","oldArg","arg","callHook$1","componentUpdated","callInsert","emptyModifiers","modifiers","getRawDirName","rawName","join","baseModules","updateAttrs","inheritAttrs","oldAttrs","setAttr","removeAttributeNS","removeAttribute","baseSetAttr","setAttributeNS","__ieph","blocker","stopImmediatePropagation","removeEventListener","updateClass","oldData","cls","transitionClass","_transitionClasses","_prevClass","target$1","klass","RANGE_TOKEN","CHECKBOX_RADIO_TOKEN","createOnceHandler$1","remove$2","useMicrotaskFix","add$1","attachedTimestamp","_wrapper","currentTarget","ownerDocument","updateDOMListeners","change","normalizeEvents","svgContainer","events","updateDOMProps","oldProps","childNodes","_value","strCur","shouldUpdateValue","innerHTML","firstChild","checkVal","composing","notInFocus","activeElement","isNotInFocusAndDirty","_vModifiers","number","isDirtyWithModifiers","parseStyleText","cssText","propertyDelimiter","normalizeStyleData","normalizeStyleBinding","staticStyle","bindingStyle","emptyStyle","cssVarRE","importantRE","setProp","setProperty","normalizedName","normalize","vendorNames","capName","updateStyle","oldStaticStyle","oldStyleBinding","normalizedStyle","oldStyle","newStyle","checkChild","styleData","getStyle","whitespaceRE","addClass","classList","getAttribute","removeClass","tar","resolveTransition","css","autoCssTransition","enterClass","enterToClass","enterActiveClass","leaveClass","leaveToClass","leaveActiveClass","hasTransition","TRANSITION","ANIMATION","transitionProp","transitionEndEvent","animationProp","animationEndEvent","ontransitionend","onwebkittransitionend","onanimationend","onwebkitanimationend","raf","requestAnimationFrame","nextFrame","addTransitionClass","transitionClasses","removeTransitionClass","whenTransitionEnds","expectedType","getTransitionInfo","propCount","ended","end","onEnd","transformRE","styles","getComputedStyle","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","durations","toMs","enter","toggleDisplay","_leaveCb","cancelled","transition","_enterCb","nodeType","appearClass","appearToClass","appearActiveClass","beforeEnter","afterEnter","enterCancelled","beforeAppear","appear","afterAppear","appearCancelled","duration","transitionNode","isAppear","startClass","activeClass","toClass","beforeEnterHook","enterHook","afterEnterHook","enterCancelledHook","explicitEnterDuration","expectsCSS","userWantsControl","getHookArgumentsLength","show","pendingNode","_pending","isValidDuration","leave","rm","beforeLeave","afterLeave","leaveCancelled","delayLeave","explicitLeaveDuration","performLeave","invokerFns","_enter","patch","backend","removeNode","createElm","insertedVnodeQueue","parentElm","refElm","nested","ownerArray","isReactivated","initComponent","innerNode","activate","reactivateComponent","setScope","createChildren","invokeCreateHooks","pendingInsert","isPatchable","ref$$1","ancestor","addVnodes","startIdx","invokeDestroyHook","removeVnodes","ch","removeAndInvokeRemoveHook","childElm","createRmCb","findIdxInOld","oldCh","patchVnode","removeOnly","hydrate","newCh","oldKeyToIdx","idxInOld","vnodeToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","canMove","updateChildren","postpatch","invokeInsertHook","initial","isRenderedModule","inVPre","hasChildNodes","childrenMatch","fullInvoke","isInitialPatch","isRealElement","hasAttribute","oldElm","patchable","i$2","createPatchFunction","vmodel","trigger","directive","binding","_vOptions","setSelected","getValue","onCompositionStart","onCompositionEnd","prevOptions","curOptions","some","hasNoMatchingOption","actuallySetSelected","isMultiple","selected","option","selectedIndex","initEvent","dispatchEvent","locateNode","platformDirectives","transition$$1","originalDisplay","__vOriginalDisplay","display","unbind","transitionProps","getRealChild","compOptions","extractTransitionData","placeholder","h","rawChild","isNotTextNode","isVShowDirective","Transition","hasParentTransition","_leaving","oldRawChild","oldChild","isSameChild","delayedLeave","moveClass","callPendingCbs","_moveCb","recordPosition","newPos","getBoundingClientRect","applyTranslation","oldPos","pos","dx","left","dy","top","moved","transform","WebkitTransform","transitionDuration","platformComponents","TransitionGroup","beforeMount","kept","prevChildren","rawChildren","transitionData","removed","c$1","updated","hasMove","_reflow","body","offsetHeight","propertyName","_hasMove","cloneNode","attr","HTMLUnknownElement","HTMLElement","updateComponent","mountComponent","querySelector","query","g","client","headers","requesttoken","OC","requestToken","normalizeComponent","scriptExports","functionalTemplate","injectStyles","moduleIdentifier","shadowMode","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","shadowRoot","_injectStyles","originalRender","beforeCreate","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","Error","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","marker","runClearTimeout","Item","array","title","browser","argv","versions","addListener","off","removeListener","removeAllListeners","prependListener","prependOnceListener","cwd","chdir","umask","utils","encode","encodeURIComponent","url","paramsSerializer","serializedParams","parts","toISOString","hashmarkIndex","__CANCEL__","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","adapter","defaults","XMLHttpRequest","transformRequest","transformResponse","parse","xsrfCookieName","xsrfHeaderName","maxContentLength","validateStatus","status","common","settle","buildURL","parseHeaders","isURLSameOrigin","createError","requestData","requestHeaders","request","auth","username","password","Authorization","btoa","open","onreadystatechange","readyState","responseURL","responseHeaders","getAllResponseHeaders","response","responseType","responseText","statusText","onabort","onerror","ontimeout","cookies","xsrfValue","withCredentials","read","setRequestHeader","onDownloadProgress","onUploadProgress","upload","cancelToken","promise","cancel","abort","send","enhanceError","message","code","config1","config2","Cancel","devtoolHook","forEachValue","Module","rawModule","runtime","_children","_rawModule","rawState","state","namespaced","addChild","getChild","actions","mutations","getters","forEachChild","forEachGetter","forEachAction","forEachMutation","ModuleCollection","rawRootModule","register","reduce","root","getNamespace","targetModule","newModule","rawChildModule","unregister","Store","plugins","strict","_committing","_actions","_actionSubscribers","_mutations","_wrappedGetters","_modules","_modulesNamespaceMap","_subscribers","_watcherVM","store","dispatch","commit","payload","installModule","resetStoreVM","_devtoolHook","targetState","replaceState","subscribe","mutation","devtoolPlugin","prototypeAccessors$1","genericSubscribe","resetStore","hot","oldVm","_vm","wrappedGetters","partial","$$state","enableStrictMode","_withCommit","rootState","isRoot","parentState","getNestedState","moduleName","local","noNamespace","_type","_payload","_options","unifyObjectStyle","gettersProxy","splitPos","localType","makeLocalGetters","makeLocalContext","registerMutation","action","rootGetters","registerAction","rawGetter","registerGetter","_Vue","vuexInit","$store","applyMixin","entry","all","after","subscribeAction","registerModule","preserveState","unregisterModule","hotUpdate","newOptions","committing","mapState","normalizeNamespace","states","normalizeMap","getModuleByNamespace","vuex","mapMutations","mapGetters","mapActions","helper","index_esm","createNamespacedHelpers","u","unescape","sources","sourceRoot","media","sourceMap","DEBUG","head","getElementsByTagName","f","A","y","ssrId","styleSheet","In","getOwnPropertySymbols","className","baseVal","SVGElement","SVGAnimatedString","container","html","placement","template","offset","TypeError","relatedreference","toElement","relatedTarget","_tooltipNode","contains","_scheduleHide","jquery","hide","reference","_isOpen","_show","_hide","_dispose","_classes","_setContent","classes","C","defaultClass","setClasses","x","dispose","popperInstance","_isDisposed","_enableDocumentTouch","_setEventListeners","$_originalTitle","random","substr","autoHide","asyncContent","_applyContent","innerSelector","loadingClass","loadingContent","innerText","_disposeTimer","assign","_ensureShown","enableEventListeners","_create","_findContainer","_append","popperOptions","arrow","element","arrowSelector","boundariesElement","preventOverflow","_noLongerOpen","disableEventListeners","disposeTimeout","_removeTooltipNode","func","removeOnDestroy","hideOnTargetClick","usedByTooltip","_scheduleShow","_scheduleTimer","_setTooltipNodeEvent","_onDocumentTouch","enabled","defaultPlacement","defaultTargetClass","defaultHtml","defaultTemplate","defaultArrowSelector","defaultInnerSelector","defaultDelay","defaultTrigger","defaultOffset","defaultContainer","defaultBoundariesElement","defaultPopperOptions","defaultLoadingClass","defaultLoadingContent","defaultHideOnTargetClick","popover","defaultBaseClass","defaultWrapperClass","defaultInnerClass","defaultArrowClass","defaultOpenClass","defaultAutoHide","defaultHandleResize","w","content","T","_tooltip","_tooltipOldShow","_tooltipTargetClasses","k","setContent","setOptions","_vueEl","targetClasses","E","S","D","M","O","B","closePopover","$_vclosepopover_touch","closeAllPopover","$_closePopoverModifiers","changedTouches","$_vclosepopover_touchPoint","abs","screenY","screenX","I","N","L","MSStream","P","Element","$","ResizeObserver","disabled","popoverClass","popoverBaseClass","popoverInnerClass","popoverWrapperClass","popoverArrowClass","handleResize","openGroup","openClass","isOpen","cssClass","popoverId","$_findContainer","scheduleUpdate","$_removeEventListeners","$_addEventListeners","$_updatePopper","$_isDisposed","$_mounted","$_events","$_preventOpen","$_init","deactivated","beforeDestroy","skipDelay","$_scheduleShow","$_beingShowed","$_scheduleHide","$_show","$_disposeTimer","$_getOffset","hidden","$_hide","$_scheduleTimer","$_setTooltipNodeEvent","$_restartPopper","$_handleGlobalClose","$_handleResize","F","R","z","tabindex","visibility","keyup","keyCode","position","_withStripped","H","Y","V","G","U","K","__data__","size","J","ot","globalThis","self","at","Ct","rt","st","ct","lt","ut","dt","pt","ft","At","bt","yt","ht","vt","xt","Et","Mt","St","exec","IE_PROTO","Ot","It","Nt","Lt","Pt","jt","$t","Ft","Dt","Bt","Rt","Yt","zt","Ht","Ut","Zt","Jt","te","ie","ne","ce","string","le","pe","ue","fe","he","Ae","ve","me","ge","Buffer","allocUnsafe","copy","be","Uint8Array","xe","byteLength","ye","byteOffset","Te","ke","getPrototypeOf","Ce","Ee","Se","Oe","Be","Ie","Ne","propertyIsEnumerable","Le","Pe","$e","Fe","Re","ze","Qe","Ve","Ge","Ue","We","Xe","Je","require","types","tn","isTypedArray","en","Ke","nn","an","ln","un","dn","pn","sn","hn","An","vn","mn","rn","gn","Ye","we","Ze","Me","yn","xn","wn","Tn","kn","Mn","Sn","Dn","Bn","On","bn","insertAt","Nn","installed","Ln","beforeUpdate","getText","isLongText","$isServer","composedPath","popupItem","__vueClickOutside__","icon","required","isIconUrl","URL","onClick","defaultView","nodeName","host","overflow","overflowX","overflowY","MSInputMethodContext","documentMode","documentElement","offsetParent","nextElementSibling","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","createRange","setStart","setEnd","commonAncestorContainer","firstElementChild","scrollingElement","height","width","right","bottom","clientWidth","clientHeight","offsetWidth","borderTopWidth","borderLeftWidth","marginTop","marginLeft","parentElement","innerWidth","innerHeight","area","marginBottom","marginRight","find","findIndex","function","offsets","popper","eventsEnabled","cancelAnimationFrame","updateBound","scrollParents","scrollElement","Q","order","W","reverse","Z","q","positionFixed","onCreate","onUpdate","search","X","instance","padding","boundaries","priority","primary","escapeWithReference","secondary","min","keepTogether","arrowElement","round","flip","flipped","originalPlacement","behavior","flipVariations","flipVariationsByContent","inner","attributes","computeStyle","gpuAcceleration","devicePixelRatio","willChange","arrowStyles","applyStyle","onLoad","Defaults","isDestroyed","isCreated","Utils","PopperUtils","placements","locals","compareAndNotify","_w","_h","addResizeHandlers","_resizeObject","contentDocument","removeResizeHandlers","onload","substring","href","validator","input","iconIsUrl","PopoverMenuItem","download","rel","click","longtext","submit","preventDefault","checked","for","stopPropagation","menu","ClickOutside","tooltip","menuAlign","opened","focusIndex","randomId","offsetX","isValidSingleAction","firstAction","firstActionElement","getVNodeProp","exact","firstActionEvent","onOpen","initActions","toggleMenu","focusFirstAction","closeMenu","any","offsetY","onMouseFocusAction","closest","querySelectorAll","focusAction","removeCurrentActive","focus","focusPreviousAction","focusNextAction","focusLastAction","execFirstAction","auto","keydown","ctrlKey","shiftKey","metaKey","mousemove","month","i18n","dayNamesShort","dayNames","monthNamesShort","monthNames","amPm","DoFn","getDate","DD","Do","getDay","dd","ddd","dddd","getMonth","MM","MMM","MMMM","YY","getFullYear","YYYY","getHours","hh","HH","getMinutes","mm","getSeconds","ss","getMilliseconds","SS","SSS","ZZ","getTimezoneOffset","day","year","hour","minute","second","millisecond","isPm","timezoneOffset","masks","shortDate","mediumDate","longDate","fullDate","shortTime","mediumTime","longTime","format","UTC","popupElm","hours","minutes","date","value2date","date2value","timestamp","zh","days","months","pickers","dateRange","ro","fr","es","ru","de","it","cs","sl","language","offsetTop","scrollTop","startAt","endAt","dateFormat","calendarMonth","calendarYear","firstDayOfWeek","disabledDate","selectDate","getDays","getDates","setDate","setMonth","getCellClasses","setHours","getCellTitle","firstYear","disabledYear","isDisabled","selectYear","cell","actived","disabledMonth","selectMonth","PanelDate","PanelYear","PanelMonth","PanelTime","timePickerOptions","timeSelectOptions","minuteStep","timeType","disabledTime","currentHours","currentMinutes","currentSeconds","stringifyText","selectTime","pickTime","getTimePickerOptions","step","label","seconds","setMinutes","setSeconds","visible","defaultValue","notBefore","notAfter","disabledDays","panel","dates","timeHeader","yearHeader","notBeforeTime","getCriticalTime","notAfterTime","handelPanelChange","showPanelMonth","showPanelYear","showPanelTime","showPanelDate","showPanelNone","updateNow","inBefore","inAfter","inDisabledDays","isDisabledYear","isDisabledMonth","isDisabledDate","isDisabledTime","changeCalendarYear","changeCalendarMonth","getSibling","handleIconMonth","flag","sibling","handleIconYear","changePanelYears","handleBtnYear","handleBtnMonth","handleTimeHeader","select","pick","fecha","CalendarPanel","clickoutside","valueType","lang","range","rangeSeparator","confirmText","confirm","editable","clearable","shortcuts","inputName","inputClass","inputAttr","appendToBody","popupStyle","currentValue","userInput","popupVisible","initCalendar","blur","innerPlaceholder","isValidRangeValue","isValidValue","computedWidth","showClearIcon","innerType","innerShortcuts","updateDate","innerDateFormat","innerPopupStyle","calendar","_displayPopup","displayPopup","handleValueChange","dateEqual","rangeEqual","selectRange","closePopup","clearDate","confirmDate","emitDate","selectStartDate","selectEndDate","selectStartTime","selectEndTime","showPopup","getPopupSize","_popupRect","pageXOffset","pageYOffset","handleBlur","handleFocus","handleKeydown","handleChange","handleInput","calendarPanel","autocomplete","readonly","xmlns","viewBox","rx","ry","fill","x1","x2","y1","y2","stack","log","_super","parentWindow","tt","manager","inputTarget","domHandler","enable","et","pointers","changedPointers","isFirst","isFinal","session","eventType","firstInput","nt","firstMultiple","center","deltaTime","angle","distance","offsetDelta","prevDelta","prevInput","deltaX","deltaY","offsetDirection","overallVelocityX","overallVelocityY","overallVelocity","scale","rotation","maxPointers","lastInterval","velocity","velocityX","velocityY","direction","srcEvent","recognize","clientX","clientY","sqrt","atan2","PI","evEl","evTarget","evWin","mousedown","mouseup","pressed","button","which","pointerType","pointerdown","pointermove","pointerup","pointercancel","pointerout","2","3","4","5","pointerEvents","MSPointerEvent","PointerEvent","pointerId","mt","touchstart","touchmove","touchend","touchcancel","gt","started","touches","wt","targetIds","identifier","Tt","touch","mouse","primaryTouch","lastTouches","sourceCapabilities","firesTouchEvents","CSS","supports","compute","touchAction","recognizers","getTouchAction","preventDefaults","prevented","preventSrc","simultaneous","requireFail","Qt","Vt","Gt","Wt","pX","pY","Xt","_timer","_input","qt","Kt","pTime","pCenter","count","preset","ee","oldCssProps","recognizeWith","requireFailure","cssProps","dropRecognizeWith","dropRequireFailure","hasRequireFailures","canRecognizeWith","additionalEvent","tryEmit","canEmit","reset","attrTest","threshold","directionTest","time","taps","interval","posThreshold","failTimeout","tapCount","VERSION","domEvents","userSelect","touchSelect","touchCallout","contentZooming","userDrag","tapHighlightColor","stop","stopped","curRecognizer","gesture","INPUT_START","INPUT_MOVE","INPUT_END","INPUT_CANCEL","STATE_POSSIBLE","STATE_BEGAN","STATE_CHANGED","STATE_ENDED","STATE_RECOGNIZED","STATE_CANCELLED","STATE_FAILED","DIRECTION_NONE","DIRECTION_LEFT","DIRECTION_RIGHT","DIRECTION_UP","DIRECTION_DOWN","DIRECTION_HORIZONTAL","DIRECTION_VERTICAL","DIRECTION_ALL","Manager","Input","TouchAction","TouchInput","MouseInput","PointerEventInput","TouchMouseInput","SingleTouchInput","Recognizer","AttrRecognizer","Tap","Pan","Swipe","Pinch","Rotate","Press","each","inherit","bindFn","prefixed","Hammer","PopoverMenu","isGuest","displayName","allowPlaceholder","disableTooltip","disableMenu","tooltipMessage","isNoUser","statusColor","avatarUrlLoaded","avatarSrcSetLoaded","userDoesNotExist","isAvatarLoaded","isMenuLoaded","contactsMenuActions","contactsMenuOpenState","getUserIdentifier","isDisplayNameDefined","isUserDefined","isUrlDefined","hasMenu","getCurrentUser","shouldShowPlaceholder","avatarStyle","lineHeight","fontSize","backgroundColor","initials","hyperlink","loadAvatarUrl","fetchContactsMenu","mark","wrap","prev","post","generateUrl","sent","topAction","t0","oc_userconfig","avatar","Image","srcset","stroke","isFocusable","focusable","backgroundImage","DatePicker","handleSelectYear","datepicker","setFullYear","handleSelectMonth","highlighted","Accept","utf8","stringToBytes","bin","bytesToString","decodeURIComponent","escape","fromCharCode","encoding","bytesToWords","_ff","_gg","_hh","_ii","endian","_blocksize","_digestsize","wordsToBytes","asBytes","asString","bytesToHex","emitClick","asyncIterator","_invoke","delegate","_sent","dispatchException","abrupt","__await","return","resultName","nextLoc","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","completion","isGeneratorFunction","setPrototypeOf","awrap","AsyncIterator","rval","complete","finish","delegateYield","regeneratorRuntime","Axios","CancelToken","isCancel","spread","interceptors","fulfilled","rejected","getUri","eject","throwIfRequested","baseURL","isAxiosError","toJSON","description","fileName","lineNumber","columnNumber","protocol","hostname","port","pathname","location","write","toGMTString","cookie","token","rotl","rotr","randomBytes","hexToBytes","bytesToBase64","base64ToBytes","pow","readFloatLE","_isBuffer","__g","core","inspectSource","__e","valueOf","NaN","$isLabel","$groupLabel","preferredOpenDirection","optimizedHeight","maxHeight","internalSearch","trackBy","searchable","clearOnSelect","hideSelected","allowEmpty","resetAfter","closeOnSelect","customLabel","taggable","tagPlaceholder","tagPosition","optionsLimit","groupValues","groupLabel","groupSelect","blockKeys","preserveSearch","preselectFirst","internalValue","filteredOptions","filterAndFlat","isSelected","isExistingOption","isTag","valueKeys","optionKeys","flatAndStrip","currentOptionLabel","getOptionLabel","updateSearch","isOptionDisabled","$isDisabled","selectGroup","pointerDirty","deactivate","removeElement","wholeGroupSelected","wholeGroupDisabled","removeLastElement","adjustPosition","pointer","toggle","openDirection","showPointer","optionHeight","pointerPosition","visibleElements","pointerAdjust","optionHighlight","groupHighlight","addPointerElement","pointerReset","pointerForward","pointerBackward","pointerSet","Arguments","selectLabel","selectGroupLabel","selectedLabel","deselectLabel","deselectGroupLabel","showLabels","limit","limitText","showNoOptions","showNoResults","isSingleLabelVisible","singleValue","visibleValues","isPlaceholderVisible","deselectLabelText","deselectGroupLabelText","selectLabelText","selectGroupLabelText","selectedLabelText","inputStyle","contentStyle","isAbove","showSearchInput","hasSingleSelectedSlot","visibleSingleValue","callee","ignoreCase","multiline","unicode","sticky","contentWindow","close","copyright","clearImmediate","MessageChannel","Dispatch","port2","port1","onmessage","postMessage","importScripts","ceil","v8","PromiseRejectionEvent","ok","fail","domain","exit","onunhandledrejection","_a","onrejectionhandled","race","finally","BREAK","RETURN","entries","WebKitMutationObserver","standalone","check","getIteratorMethod","flags","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","esModule","keypress","mouseenter","isFullscreen","_isFullscreen","_onResize","outerHeight","screen","isMobile","_isMobile","highlightText","Avatar","desc","highlightedDisplayName","highlightedDesc","needsTruncate","part1","part2","highlightedPart1","highlightedPart2","AvatarSelectOption","EllipsisedOption","VueMultiselect","autoLimit","tagWidth","elWidth","maxOptions","limitString","updateWidth","formatLimitTitle","pause","getTimeLeft","getStateRunning","Actions","ActionButton","hasPrevious","hasNext","outTransition","enableSlideshow","clearViewDelay","slideshowDelay","slideshowPaused","enableSwipe","spreadNavigation","canClose","mc","showModal","clearView","clearViewTimeout","playing","slideshowTimeout","modalTransitionName","playPauseTitle","handleMouseMove","mask","handleSwipe","lastChild","unmounted","previous","resetSlideshow","togglePlayPause","handleSlideshow","clearSlideshowTimeout","invisible","cx","cy","checkInput","onChange","checkbox","DatetimePicker","isDatePickerType","onInput","onSubmit","startsWith","AppNavigationToggle","toggleNavigation","pageX","selection","showDetails","showdetails","AppNavigationCounter","menuOpen","openedMenu","collapsible","simpleAction","toggleCollapse","hideMenu","callPreventStop","cancelEdit","edit","navElement","router","bullet","iconUrl","alt","counter_highlighted","undo","buttonId","buttonClass","subtitle","background","starred","starLoading","compact","tabs","activeTab","isStarred","canStar","hasFigure","header","hasMultipleTabs","hasFigureClickListener","currentTabIndex","updateActive","updateTabs","closeSidebar","onFigureClick","setActive","dataset","focusPreviousTab","focusActiveTab","focusNextTab","focusFirstTab","focusLastTab","focusActiveTabContent","toggleStarred","Util","naturalSortCompare","role","isActive","appName","getOwnPropertyDescriptors","useSourceMap","cssMapping","sourceMapping","base64","sourceURLs","cssWithMappingToString","mediaQuery","alreadyImportedModules","memo","stylesInDom","isOldIE","atob","getTarget","styleTarget","HTMLIFrameElement","listToStyles","newStyles","part","addStylesToDom","domStyle","addStyle","insertStyleElement","nonce","textStore","replaceText","replacement","applyToSingletonTag","cssNode","applyToTag","singleton","singletonCounter","styleIndex","removeStyleElement","newObj","newList","mayRemove","_domStyle","LARGE_ARRAY_SIZE","CORE_ERROR_TEXT","FUNC_ERROR_TEXT","HASH_UNDEFINED","MAX_MEMOIZE_SIZE","PLACEHOLDER","CLONE_DEEP_FLAG","CLONE_FLAT_FLAG","CLONE_SYMBOLS_FLAG","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","WRAP_BIND_FLAG","WRAP_BIND_KEY_FLAG","WRAP_CURRY_BOUND_FLAG","WRAP_CURRY_FLAG","WRAP_CURRY_RIGHT_FLAG","WRAP_PARTIAL_FLAG","WRAP_PARTIAL_RIGHT_FLAG","WRAP_ARY_FLAG","WRAP_REARG_FLAG","WRAP_FLIP_FLAG","DEFAULT_TRUNC_LENGTH","DEFAULT_TRUNC_OMISSION","HOT_COUNT","HOT_SPAN","LAZY_FILTER_FLAG","LAZY_MAP_FLAG","INFINITY","MAX_SAFE_INTEGER","MAX_INTEGER","NAN","MAX_ARRAY_LENGTH","MAX_ARRAY_INDEX","HALF_MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","asyncTag","boolTag","dateTag","domExcTag","errorTag","funcTag","genTag","mapTag","numberTag","nullTag","objectTag","proxyTag","regexpTag","setTag","stringTag","symbolTag","undefinedTag","weakMapTag","weakSetTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reRegExpChar","reHasRegExpChar","reTrim","reTrimStart","reTrimEnd","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsComboRange","rsComboMarksRange","rsBreakRange","rsMathOpRange","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsMiscLower","rsMiscUpper","reOptMod","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","stringEscapes","freeParseFloat","freeParseInt","freeGlobal","freeSelf","freeExports","freeModule","moduleExports","freeProcess","nodeUtil","nodeIsArrayBuffer","nodeIsDate","nodeIsMap","isMap","nodeIsRegExp","nodeIsSet","isSet","nodeIsTypedArray","arrayAggregator","iteratee","accumulator","arrayEach","arrayEachRight","arrayEvery","predicate","arrayFilter","resIndex","arrayIncludes","baseIndexOf","arrayIncludesWith","comparator","arrayMap","arrayPush","arrayReduce","initAccum","arrayReduceRight","arraySome","asciiSize","baseProperty","baseFindKey","collection","eachFunc","baseFindIndex","fromIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","basePropertyOf","baseReduce","baseTimes","baseUnary","baseValues","cacheHas","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","deburrLetter","escapeHtmlChar","escapeStringChar","chr","hasUnicode","mapToArray","overArg","replaceHolders","setToArray","setToPairs","stringSize","unicodeSize","stringToArray","unicodeToArray","asciiToArray","unescapeHtmlChar","runInContext","funcProto","objectProto","coreJsData","funcToString","idCounter","maskSrcKey","nativeObjectToString","objectCtorString","oldDash","reIsNative","getPrototype","objectCreate","spreadableSymbol","isConcatSpreadable","symIterator","symToStringTag","getNative","ctxClearTimeout","ctxNow","ctxSetTimeout","nativeCeil","nativeFloor","nativeGetSymbols","nativeIsBuffer","nativeIsFinite","nativeJoin","nativeKeys","nativeMax","nativeMin","nativeNow","nativeParseInt","nativeRandom","nativeReverse","DataView","Map","WeakMap","nativeCreate","metaMap","realNames","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","symbolToString","lodash","isObjectLike","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","proto","baseLodash","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","Hash","ListCache","MapCache","SetCache","Stack","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","isIndex","arraySample","baseRandom","arraySampleSize","shuffleSelf","copyArray","baseClamp","arrayShuffle","assignMergeValue","eq","baseAssignValue","objValue","assocIndexOf","baseAggregator","baseEach","baseAssign","copyObject","baseAt","paths","skip","lower","upper","baseClone","bitmask","customizer","isDeep","isFlat","isFull","initCloneArray","getTag","isFunc","cloneBuffer","initCloneObject","getSymbolsIn","copySymbolsIn","keysIn","baseAssignIn","getSymbols","copySymbols","cloneArrayBuffer","dataView","cloneDataView","cloneTypedArray","regexp","cloneRegExp","initCloneByTag","stacked","subValue","getAllKeysIn","getAllKeys","baseConformsTo","baseDelay","wait","baseDifference","includes","isCommon","valuesLength","outer","valuesIndex","templateSettings","getMapData","pairs","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","isSymbol","baseFilter","baseFlatten","depth","isStrict","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","baseGet","castPath","toKey","baseGetAllKeys","keysFunc","symbolsFunc","baseGetTag","isOwn","unmasked","getRawTag","objectToString","baseGt","other","baseHas","baseHasIn","baseIntersection","arrays","othLength","othIndex","caches","maxLength","Infinity","baseInvoke","baseIsArguments","baseIsEqual","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","convert","isPartial","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsMatch","matchData","noCustomizer","srcValue","baseIsNative","baseIteratee","baseMatchesProperty","baseMatches","baseKeys","isPrototype","baseKeysIn","nativeKeysIn","isProto","baseLt","baseMap","isArrayLike","getMatchData","matchesStrictComparable","isKey","isStrictComparable","hasIn","baseMerge","srcIndex","mergeFunc","safeGet","newValue","isTyped","isArrayLikeObject","toPlainObject","baseMergeDeep","baseNth","baseOrderBy","iteratees","orders","getIteratee","comparer","baseSortBy","objCriteria","criteria","othCriteria","ordersLength","compareAscending","compareMultiple","basePickBy","baseSet","basePullAll","basePullAt","indexes","baseUnset","baseRepeat","baseRest","setToString","overRest","baseSample","baseSampleSize","baseSetData","baseSetToString","constant","baseShuffle","baseSlice","baseSome","baseSortedIndex","retHighest","low","high","mid","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseToString","baseUniq","createSet","seenIndex","baseUpdate","updater","baseWhile","isDrop","baseWrapperValue","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","stringToPath","castRest","castSlice","arrayBuffer","typedArray","valIsDefined","valIsReflexive","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","isNew","createAggregator","initializer","createAssigner","assigner","guard","isIterateeCall","iterable","createCaseFirst","methodName","trailing","createCompounder","words","deburr","createCtor","thisBinding","createFind","findIndexFunc","createFlow","flatRest","funcs","prereq","thru","wrapper","getFuncName","funcName","isLaziable","plant","createHybrid","partialsRight","holdersRight","argPos","ary","arity","isAry","isBind","isBindKey","isFlip","getHolder","holdersCount","countHolders","newHolders","createRecurry","arrLength","oldArray","reorder","createInverter","toIteratee","baseInverter","createMathOperation","operator","createOver","arrayFunc","createPadding","chars","charsLength","toFinite","baseRange","createRelationalOperation","wrapFunc","isCurry","newData","setData","setWrapToString","createRound","precision","toInteger","pair","createToPairs","baseToPairs","createWrap","srcBitmask","newBitmask","isCombo","createCurry","createPartial","createBind","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","arrValue","flatten","otherFunc","stubArray","hasPath","hasFunc","isLength","ctorString","isMaskable","stubFalse","otherArgs","shortOut","details","insertWrapDetails","updateWrapDetails","getWrapDetails","lastCalled","stamp","remaining","rand","memoize","memoizeCapped","quote","subString","difference","differenceBy","differenceWith","findLastIndex","intersection","mapped","intersectionBy","intersectionWith","pull","pullAll","pullAt","union","unionBy","unionWith","unzip","group","unzipWith","without","xor","xorBy","xorWith","zip","zipWith","chain","interceptor","wrapperAt","countBy","findLast","forEachRight","groupBy","invokeMap","keyBy","partition","sortBy","bindKey","debounce","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","invokeFunc","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","leadingEdge","flush","defer","resolver","memoized","Cache","negate","overArgs","transforms","funcsLength","partialRight","rearg","gte","isError","isInteger","lte","iteratorToArray","remainder","toLength","isBinary","assignIn","assignInWith","assignWith","propsIndex","propsLength","defaultsDeep","mergeWith","invert","invertBy","invoke","omit","basePick","pickBy","toPairs","toPairsIn","camelCase","word","upperFirst","kebabCase","lowerCase","lowerFirst","snakeCase","startCase","upperCase","hasUnicodeWord","unicodeWords","asciiWords","attempt","bindAll","methodNames","flow","flowRight","methodOf","over","overEvery","overSome","basePropertyDeep","rangeRight","augend","addend","divide","dividend","divisor","multiply","multiplier","multiplicand","subtract","minuend","subtrahend","castArray","chunk","cond","conforms","baseConforms","properties","curry","curryRight","drop","dropRight","dropRightWhile","dropWhile","baseFill","flatMap","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","fromPairs","functions","functionsIn","mapKeys","mapValues","matchesProperty","nthArg","omitBy","orderBy","propertyOf","pullAllBy","pullAllWith","rest","sampleSize","setWith","shuffle","sortedUniq","sortedUniqBy","separator","tail","take","takeRight","takeRightWhile","takeWhile","tap","throttle","toPath","isArrLike","unary","uniq","uniqBy","uniqWith","unset","updateWith","valuesIn","zipObject","zipObjectDeep","entriesIn","extendWith","clamp","cloneDeep","cloneDeepWith","cloneWith","conformsTo","defaultTo","endsWith","escapeRegExp","findKey","findLastKey","forIn","forInRight","forOwn","forOwnRight","inRange","baseInRange","isBoolean","isElement","isEmpty","isEqual","isEqualWith","isMatch","isMatchWith","isNil","isNull","isSafeInteger","isWeakMap","isWeakSet","lastIndexOf","strictLastIndexOf","maxBy","mean","meanBy","minBy","stubObject","stubString","stubTrue","nth","noConflict","pad","strLength","padEnd","padStart","radix","floating","temp","reduceRight","repeat","sample","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","sum","sumBy","settings","isEscaping","isEvaluating","imports","importsKeys","importsValues","interpolate","reDelimiters","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","variable","times","toLower","toSafeInteger","toUpper","trimEnd","trimStart","truncate","omission","newEnd","uniqueId","prefix","eachRight","first","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","isRight","view","getView","iterLength","takeCount","iterIndex","wrapped","Timeout","clearFn","_id","_clearFn","scope","setInterval","clearInterval","unref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","_onTimeout","registerImmediate","channel","messagePrefix","onGlobalMessage","nextHandle","tasksByHandle","currentlyRunningATask","doc","attachTo","handle","runIfPresent","postMessageIsAsynchronous","oldOnMessage","canUsePostMessage","script","attachEvent","task","mergeConfig","createInstance","defaultConfig","axios","instanceConfig","promises","InterceptorManager","dispatchRequest","transformData","isAbsoluteURL","combineURLs","throwIfCancellationRequested","ignoreDuplicateOf","parsed","line","originURL","msie","urlParsingNode","resolveURL","requestURL","expires","secure","relativeURL","executor","resolvePromise","webpackPolyfill","deprecate","enforced","$$a","$$el","$$c","$$i","groups","loadingGroups","searchGroup","$$v","enforcedGroups","excludedGroups","saveChanges","Vuex","setEnforced","setEnforcedGroups","total","setExcludedGroups","used","save","generateCodes","codes","__webpack_nonce__","Settings","OCP","InitialState","loadState","AdminTwoFactor"],"mappings":"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","file":"vue-settings-admin-security.js?v=4d458e9ad942d926653b","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/js/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 64);\n","'use strict';\n\nvar bind = require('./helpers/bind');\nvar isBuffer = require('is-buffer');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = merge(result[key], val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Function equal to merge with the difference being that no reference\n * to original objects is kept.\n *\n * @see merge\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction deepMerge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = deepMerge(result[key], val);\n } else if (typeof val === 'object') {\n result[key] = deepMerge({}, val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n deepMerge: deepMerge,\n extend: extend,\n trim: trim\n};\n","/*!\n * Vue.js v2.6.10\n * (c) 2014-2019 Evan You\n * Released under the MIT License.\n */\n/* */\n\nvar emptyObject = Object.freeze({});\n\n// These helpers produce better VM code in JS engines due to their\n// explicitness and function inlining.\nfunction isUndef (v) {\n return v === undefined || v === null\n}\n\nfunction isDef (v) {\n return v !== undefined && v !== null\n}\n\nfunction isTrue (v) {\n return v === true\n}\n\nfunction isFalse (v) {\n return v === false\n}\n\n/**\n * Check if value is primitive.\n */\nfunction isPrimitive (value) {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n // $flow-disable-line\n typeof value === 'symbol' ||\n typeof value === 'boolean'\n )\n}\n\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\n/**\n * Get the raw type string of a value, e.g., [object Object].\n */\nvar _toString = Object.prototype.toString;\n\nfunction toRawType (value) {\n return _toString.call(value).slice(8, -1)\n}\n\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject (obj) {\n return _toString.call(obj) === '[object Object]'\n}\n\nfunction isRegExp (v) {\n return _toString.call(v) === '[object RegExp]'\n}\n\n/**\n * Check if val is a valid array index.\n */\nfunction isValidArrayIndex (val) {\n var n = parseFloat(String(val));\n return n >= 0 && Math.floor(n) === n && isFinite(val)\n}\n\nfunction isPromise (val) {\n return (\n isDef(val) &&\n typeof val.then === 'function' &&\n typeof val.catch === 'function'\n )\n}\n\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString (val) {\n return val == null\n ? ''\n : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n\n/**\n * Convert an input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber (val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n\n}\n\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap (\n str,\n expectsLowerCase\n) {\n var map = Object.create(null);\n var list = str.split(',');\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase\n ? function (val) { return map[val.toLowerCase()]; }\n : function (val) { return map[val]; }\n}\n\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n\n/**\n * Check if an attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n\n/**\n * Remove an item from an array.\n */\nfunction remove (arr, item) {\n if (arr.length) {\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1)\n }\n }\n}\n\n/**\n * Check whether an object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n return hasOwnProperty.call(obj, key)\n}\n\n/**\n * Create a cached version of a pure function.\n */\nfunction cached (fn) {\n var cache = Object.create(null);\n return (function cachedFn (str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str))\n })\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })\n});\n\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n});\n\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '-$1').toLowerCase()\n});\n\n/**\n * Simple bind polyfill for environments that do not support it,\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\n * since native bind is now performant enough in most browsers.\n * But removing it would mean breaking code that was able to run in\n * PhantomJS 1.x, so this must be kept for backward compatibility.\n */\n\n/* istanbul ignore next */\nfunction polyfillBind (fn, ctx) {\n function boundFn (a) {\n var l = arguments.length;\n return l\n ? l > 1\n ? fn.apply(ctx, arguments)\n : fn.call(ctx, a)\n : fn.call(ctx)\n }\n\n boundFn._length = fn.length;\n return boundFn\n}\n\nfunction nativeBind (fn, ctx) {\n return fn.bind(ctx)\n}\n\nvar bind = Function.prototype.bind\n ? nativeBind\n : polyfillBind;\n\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray (list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret\n}\n\n/**\n * Mix properties into target object.\n */\nfunction extend (to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n return to\n}\n\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject (arr) {\n var res = {};\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n return res\n}\n\n/* eslint-disable no-unused-vars */\n\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\n */\nfunction noop (a, b, c) {}\n\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n\n/* eslint-enable no-unused-vars */\n\n/**\n * Return the same value.\n */\nvar identity = function (_) { return _; };\n\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual (a, b) {\n if (a === b) { return true }\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n if (isArrayA && isArrayB) {\n return a.length === b.length && a.every(function (e, i) {\n return looseEqual(e, b[i])\n })\n } else if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime()\n } else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return keysA.length === keysB.length && keysA.every(function (key) {\n return looseEqual(a[key], b[key])\n })\n } else {\n /* istanbul ignore next */\n return false\n }\n } catch (e) {\n /* istanbul ignore next */\n return false\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b)\n } else {\n return false\n }\n}\n\n/**\n * Return the first index at which a loosely equal value can be\n * found in the array (if value is a plain object, the array must\n * contain an object of the same shape), or -1 if it is not present.\n */\nfunction looseIndexOf (arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val)) { return i }\n }\n return -1\n}\n\n/**\n * Ensure a function is called only once.\n */\nfunction once (fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n }\n}\n\nvar SSR_ATTR = 'data-server-rendered';\n\nvar ASSET_TYPES = [\n 'component',\n 'directive',\n 'filter'\n];\n\nvar LIFECYCLE_HOOKS = [\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeDestroy',\n 'destroyed',\n 'activated',\n 'deactivated',\n 'errorCaptured',\n 'serverPrefetch'\n];\n\n/* */\n\n\n\nvar config = ({\n /**\n * Option merge strategies (used in core/util/options)\n */\n // $flow-disable-line\n optionMergeStrategies: Object.create(null),\n\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n\n /**\n * Show production mode tip message on boot?\n */\n productionTip: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to enable devtools\n */\n devtools: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to record perf\n */\n performance: false,\n\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n\n /**\n * Warn handler for watcher warns\n */\n warnHandler: null,\n\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n\n /**\n * Custom user key aliases for v-on\n */\n // $flow-disable-line\n keyCodes: Object.create(null),\n\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n\n /**\n * Perform updates asynchronously. Intended to be used by Vue Test Utils\n * This will significantly reduce performance if set to false.\n */\n async: true,\n\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n});\n\n/* */\n\n/**\n * unicode letters used for parsing html tags, component names and property paths.\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\n */\nvar unicodeRegExp = /a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;\n\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved (str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5F\n}\n\n/**\n * Define a property.\n */\nfunction def (obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n}\n\n/**\n * Parse simple path.\n */\nvar bailRE = new RegExp((\"[^\" + (unicodeRegExp.source) + \".$_\\\\d]\"));\nfunction parsePath (path) {\n if (bailRE.test(path)) {\n return\n }\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj) { return }\n obj = obj[segments[i]];\n }\n return obj\n }\n}\n\n/* */\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;\nvar weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nvar isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');\nvar isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');\nvar isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\nvar isPhantomJS = UA && /phantomjs/.test(UA);\nvar isFF = UA && UA.match(/firefox\\/(\\d+)/);\n\n// Firefox has a \"watch\" function on Object.prototype...\nvar nativeWatch = ({}).watch;\n\nvar supportsPassive = false;\nif (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', ({\n get: function get () {\n /* istanbul ignore next */\n supportsPassive = true;\n }\n })); // https://github.com/facebook/flow/issues/285\n window.addEventListener('test-passive', null, opts);\n } catch (e) {}\n}\n\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && !inWeex && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer = global['process'] && global['process'].env.VUE_ENV === 'server';\n } else {\n _isServer = false;\n }\n }\n return _isServer\n};\n\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n/* istanbul ignore next */\nfunction isNative (Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString())\n}\n\nvar hasSymbol =\n typeof Symbol !== 'undefined' && isNative(Symbol) &&\n typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\nvar _Set;\n/* istanbul ignore if */ // $flow-disable-line\nif (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n} else {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = /*@__PURE__*/(function () {\n function Set () {\n this.set = Object.create(null);\n }\n Set.prototype.has = function has (key) {\n return this.set[key] === true\n };\n Set.prototype.add = function add (key) {\n this.set[key] = true;\n };\n Set.prototype.clear = function clear () {\n this.set = Object.create(null);\n };\n\n return Set;\n }());\n}\n\n/* */\n\nvar warn = noop;\nvar tip = noop;\nvar generateComponentTrace = (noop); // work around flow check\nvar formatComponentName = (noop);\n\nif (process.env.NODE_ENV !== 'production') {\n var hasConsole = typeof console !== 'undefined';\n var classifyRE = /(?:^|[-_])(\\w)/g;\n var classify = function (str) { return str\n .replace(classifyRE, function (c) { return c.toUpperCase(); })\n .replace(/[-_]/g, ''); };\n\n warn = function (msg, vm) {\n var trace = vm ? generateComponentTrace(vm) : '';\n\n if (config.warnHandler) {\n config.warnHandler.call(null, msg, vm, trace);\n } else if (hasConsole && (!config.silent)) {\n console.error((\"[Vue warn]: \" + msg + trace));\n }\n };\n\n tip = function (msg, vm) {\n if (hasConsole && (!config.silent)) {\n console.warn(\"[Vue tip]: \" + msg + (\n vm ? generateComponentTrace(vm) : ''\n ));\n }\n };\n\n formatComponentName = function (vm, includeFile) {\n if (vm.$root === vm) {\n return '<Root>'\n }\n var options = typeof vm === 'function' && vm.cid != null\n ? vm.options\n : vm._isVue\n ? vm.$options || vm.constructor.options\n : vm;\n var name = options.name || options._componentTag;\n var file = options.__file;\n if (!name && file) {\n var match = file.match(/([^/\\\\]+)\\.vue$/);\n name = match && match[1];\n }\n\n return (\n (name ? (\"<\" + (classify(name)) + \">\") : \"<Anonymous>\") +\n (file && includeFile !== false ? (\" at \" + file) : '')\n )\n };\n\n var repeat = function (str, n) {\n var res = '';\n while (n) {\n if (n % 2 === 1) { res += str; }\n if (n > 1) { str += str; }\n n >>= 1;\n }\n return res\n };\n\n generateComponentTrace = function (vm) {\n if (vm._isVue && vm.$parent) {\n var tree = [];\n var currentRecursiveSequence = 0;\n while (vm) {\n if (tree.length > 0) {\n var last = tree[tree.length - 1];\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence++;\n vm = vm.$parent;\n continue\n } else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence];\n currentRecursiveSequence = 0;\n }\n }\n tree.push(vm);\n vm = vm.$parent;\n }\n return '\\n\\nfound in\\n\\n' + tree\n .map(function (vm, i) { return (\"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)\n ? ((formatComponentName(vm[0])) + \"... (\" + (vm[1]) + \" recursive calls)\")\n : formatComponentName(vm))); })\n .join('\\n')\n } else {\n return (\"\\n\\n(found in \" + (formatComponentName(vm)) + \")\")\n }\n };\n}\n\n/* */\n\nvar uid = 0;\n\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\nvar Dep = function Dep () {\n this.id = uid++;\n this.subs = [];\n};\n\nDep.prototype.addSub = function addSub (sub) {\n this.subs.push(sub);\n};\n\nDep.prototype.removeSub = function removeSub (sub) {\n remove(this.subs, sub);\n};\n\nDep.prototype.depend = function depend () {\n if (Dep.target) {\n Dep.target.addDep(this);\n }\n};\n\nDep.prototype.notify = function notify () {\n // stabilize the subscriber list first\n var subs = this.subs.slice();\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n // subs aren't sorted in scheduler if not running async\n // we need to sort them now to make sure they fire in correct\n // order\n subs.sort(function (a, b) { return a.id - b.id; });\n }\n for (var i = 0, l = subs.length; i < l; i++) {\n subs[i].update();\n }\n};\n\n// The current target watcher being evaluated.\n// This is globally unique because only one watcher\n// can be evaluated at a time.\nDep.target = null;\nvar targetStack = [];\n\nfunction pushTarget (target) {\n targetStack.push(target);\n Dep.target = target;\n}\n\nfunction popTarget () {\n targetStack.pop();\n Dep.target = targetStack[targetStack.length - 1];\n}\n\n/* */\n\nvar VNode = function VNode (\n tag,\n data,\n children,\n text,\n elm,\n context,\n componentOptions,\n asyncFactory\n) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = undefined;\n this.context = context;\n this.fnContext = undefined;\n this.fnOptions = undefined;\n this.fnScopeId = undefined;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.componentInstance = undefined;\n this.parent = undefined;\n this.raw = false;\n this.isStatic = false;\n this.isRootInsert = true;\n this.isComment = false;\n this.isCloned = false;\n this.isOnce = false;\n this.asyncFactory = asyncFactory;\n this.asyncMeta = undefined;\n this.isAsyncPlaceholder = false;\n};\n\nvar prototypeAccessors = { child: { configurable: true } };\n\n// DEPRECATED: alias for componentInstance for backwards compat.\n/* istanbul ignore next */\nprototypeAccessors.child.get = function () {\n return this.componentInstance\n};\n\nObject.defineProperties( VNode.prototype, prototypeAccessors );\n\nvar createEmptyVNode = function (text) {\n if ( text === void 0 ) text = '';\n\n var node = new VNode();\n node.text = text;\n node.isComment = true;\n return node\n};\n\nfunction createTextVNode (val) {\n return new VNode(undefined, undefined, undefined, String(val))\n}\n\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode (vnode) {\n var cloned = new VNode(\n vnode.tag,\n vnode.data,\n // #7975\n // clone children array to avoid mutating original in case of cloning\n // a child.\n vnode.children && vnode.children.slice(),\n vnode.text,\n vnode.elm,\n vnode.context,\n vnode.componentOptions,\n vnode.asyncFactory\n );\n cloned.ns = vnode.ns;\n cloned.isStatic = vnode.isStatic;\n cloned.key = vnode.key;\n cloned.isComment = vnode.isComment;\n cloned.fnContext = vnode.fnContext;\n cloned.fnOptions = vnode.fnOptions;\n cloned.fnScopeId = vnode.fnScopeId;\n cloned.asyncMeta = vnode.asyncMeta;\n cloned.isCloned = true;\n return cloned\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\n\nvar methodsToPatch = [\n 'push',\n 'pop',\n 'shift',\n 'unshift',\n 'splice',\n 'sort',\n 'reverse'\n];\n\n/**\n * Intercept mutating methods and emit events\n */\nmethodsToPatch.forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n switch (method) {\n case 'push':\n case 'unshift':\n inserted = args;\n break\n case 'splice':\n inserted = args.slice(2);\n break\n }\n if (inserted) { ob.observeArray(inserted); }\n // notify change\n ob.dep.notify();\n return result\n });\n});\n\n/* */\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\nvar shouldObserve = true;\n\nfunction toggleObserving (value) {\n shouldObserve = value;\n}\n\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\nvar Observer = function Observer (value) {\n this.value = value;\n this.dep = new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n if (Array.isArray(value)) {\n if (hasProto) {\n protoAugment(value, arrayMethods);\n } else {\n copyAugment(value, arrayMethods, arrayKeys);\n }\n this.observeArray(value);\n } else {\n this.walk(value);\n }\n};\n\n/**\n * Walk through all properties and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\nObserver.prototype.walk = function walk (obj) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n defineReactive$$1(obj, keys[i]);\n }\n};\n\n/**\n * Observe a list of Array items.\n */\nObserver.prototype.observeArray = function observeArray (items) {\n for (var i = 0, l = items.length; i < l; i++) {\n observe(items[i]);\n }\n};\n\n// helpers\n\n/**\n * Augment a target Object or Array by intercepting\n * the prototype chain using __proto__\n */\nfunction protoAugment (target, src) {\n /* eslint-disable no-proto */\n target.__proto__ = src;\n /* eslint-enable no-proto */\n}\n\n/**\n * Augment a target Object or Array by defining\n * hidden properties.\n */\n/* istanbul ignore next */\nfunction copyAugment (target, src, keys) {\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n def(target, key, src[key]);\n }\n}\n\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe (value, asRootData) {\n if (!isObject(value) || value instanceof VNode) {\n return\n }\n var ob;\n if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n ob = value.__ob__;\n } else if (\n shouldObserve &&\n !isServerRendering() &&\n (Array.isArray(value) || isPlainObject(value)) &&\n Object.isExtensible(value) &&\n !value._isVue\n ) {\n ob = new Observer(value);\n }\n if (asRootData && ob) {\n ob.vmCount++;\n }\n return ob\n}\n\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive$$1 (\n obj,\n key,\n val,\n customSetter,\n shallow\n) {\n var dep = new Dep();\n\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return\n }\n\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n var setter = property && property.set;\n if ((!getter || setter) && arguments.length === 2) {\n val = obj[key];\n }\n\n var childOb = !shallow && observe(val);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter () {\n var value = getter ? getter.call(obj) : val;\n if (Dep.target) {\n dep.depend();\n if (childOb) {\n childOb.dep.depend();\n if (Array.isArray(value)) {\n dependArray(value);\n }\n }\n }\n return value\n },\n set: function reactiveSetter (newVal) {\n var value = getter ? getter.call(obj) : val;\n /* eslint-disable no-self-compare */\n if (newVal === value || (newVal !== newVal && value !== value)) {\n return\n }\n /* eslint-enable no-self-compare */\n if (process.env.NODE_ENV !== 'production' && customSetter) {\n customSetter();\n }\n // #7981: for accessor properties without setter\n if (getter && !setter) { return }\n if (setter) {\n setter.call(obj, newVal);\n } else {\n val = newVal;\n }\n childOb = !shallow && observe(newVal);\n dep.notify();\n }\n });\n}\n\n/**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\nfunction set (target, key, val) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot set reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.length = Math.max(target.length, key);\n target.splice(key, 1, val);\n return val\n }\n if (key in target && !(key in Object.prototype)) {\n target[key] = val;\n return val\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid adding reactive properties to a Vue instance or its root $data ' +\n 'at runtime - declare it upfront in the data option.'\n );\n return val\n }\n if (!ob) {\n target[key] = val;\n return val\n }\n defineReactive$$1(ob.value, key, val);\n ob.dep.notify();\n return val\n}\n\n/**\n * Delete a property and trigger change if necessary.\n */\nfunction del (target, key) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot delete reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.splice(key, 1);\n return\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid deleting properties on a Vue instance or its root $data ' +\n '- just set it to null.'\n );\n return\n }\n if (!hasOwn(target, key)) {\n return\n }\n delete target[key];\n if (!ob) {\n return\n }\n ob.dep.notify();\n}\n\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray (value) {\n for (var e = (void 0), i = 0, l = value.length; i < l; i++) {\n e = value[i];\n e && e.__ob__ && e.__ob__.dep.depend();\n if (Array.isArray(e)) {\n dependArray(e);\n }\n }\n}\n\n/* */\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\nvar strats = config.optionMergeStrategies;\n\n/**\n * Options with restrictions\n */\nif (process.env.NODE_ENV !== 'production') {\n strats.el = strats.propsData = function (parent, child, vm, key) {\n if (!vm) {\n warn(\n \"option \\\"\" + key + \"\\\" can only be used during instance \" +\n 'creation with the `new` keyword.'\n );\n }\n return defaultStrat(parent, child)\n };\n}\n\n/**\n * Helper that recursively merges two data objects together.\n */\nfunction mergeData (to, from) {\n if (!from) { return to }\n var key, toVal, fromVal;\n\n var keys = hasSymbol\n ? Reflect.ownKeys(from)\n : Object.keys(from);\n\n for (var i = 0; i < keys.length; i++) {\n key = keys[i];\n // in case the object is already observed...\n if (key === '__ob__') { continue }\n toVal = to[key];\n fromVal = from[key];\n if (!hasOwn(to, key)) {\n set(to, key, fromVal);\n } else if (\n toVal !== fromVal &&\n isPlainObject(toVal) &&\n isPlainObject(fromVal)\n ) {\n mergeData(toVal, fromVal);\n }\n }\n return to\n}\n\n/**\n * Data\n */\nfunction mergeDataOrFn (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n // in a Vue.extend merge, both should be functions\n if (!childVal) {\n return parentVal\n }\n if (!parentVal) {\n return childVal\n }\n // when parentVal & childVal are both present,\n // we need to return a function that returns the\n // merged result of both functions... no need to\n // check if parentVal is a function here because\n // it has to be a function to pass previous merges.\n return function mergedDataFn () {\n return mergeData(\n typeof childVal === 'function' ? childVal.call(this, this) : childVal,\n typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal\n )\n }\n } else {\n return function mergedInstanceDataFn () {\n // instance merge\n var instanceData = typeof childVal === 'function'\n ? childVal.call(vm, vm)\n : childVal;\n var defaultData = typeof parentVal === 'function'\n ? parentVal.call(vm, vm)\n : parentVal;\n if (instanceData) {\n return mergeData(instanceData, defaultData)\n } else {\n return defaultData\n }\n }\n }\n}\n\nstrats.data = function (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n if (childVal && typeof childVal !== 'function') {\n process.env.NODE_ENV !== 'production' && warn(\n 'The \"data\" option should be a function ' +\n 'that returns a per-instance value in component ' +\n 'definitions.',\n vm\n );\n\n return parentVal\n }\n return mergeDataOrFn(parentVal, childVal)\n }\n\n return mergeDataOrFn(parentVal, childVal, vm)\n};\n\n/**\n * Hooks and props are merged as arrays.\n */\nfunction mergeHook (\n parentVal,\n childVal\n) {\n var res = childVal\n ? parentVal\n ? parentVal.concat(childVal)\n : Array.isArray(childVal)\n ? childVal\n : [childVal]\n : parentVal;\n return res\n ? dedupeHooks(res)\n : res\n}\n\nfunction dedupeHooks (hooks) {\n var res = [];\n for (var i = 0; i < hooks.length; i++) {\n if (res.indexOf(hooks[i]) === -1) {\n res.push(hooks[i]);\n }\n }\n return res\n}\n\nLIFECYCLE_HOOKS.forEach(function (hook) {\n strats[hook] = mergeHook;\n});\n\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\nfunction mergeAssets (\n parentVal,\n childVal,\n vm,\n key\n) {\n var res = Object.create(parentVal || null);\n if (childVal) {\n process.env.NODE_ENV !== 'production' && assertObjectType(key, childVal, vm);\n return extend(res, childVal)\n } else {\n return res\n }\n}\n\nASSET_TYPES.forEach(function (type) {\n strats[type + 's'] = mergeAssets;\n});\n\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\nstrats.watch = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n // work around Firefox's Object.prototype.watch...\n if (parentVal === nativeWatch) { parentVal = undefined; }\n if (childVal === nativeWatch) { childVal = undefined; }\n /* istanbul ignore if */\n if (!childVal) { return Object.create(parentVal || null) }\n if (process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = {};\n extend(ret, parentVal);\n for (var key$1 in childVal) {\n var parent = ret[key$1];\n var child = childVal[key$1];\n if (parent && !Array.isArray(parent)) {\n parent = [parent];\n }\n ret[key$1] = parent\n ? parent.concat(child)\n : Array.isArray(child) ? child : [child];\n }\n return ret\n};\n\n/**\n * Other object hashes.\n */\nstrats.props =\nstrats.methods =\nstrats.inject =\nstrats.computed = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n if (childVal && process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = Object.create(null);\n extend(ret, parentVal);\n if (childVal) { extend(ret, childVal); }\n return ret\n};\nstrats.provide = mergeDataOrFn;\n\n/**\n * Default strategy.\n */\nvar defaultStrat = function (parentVal, childVal) {\n return childVal === undefined\n ? parentVal\n : childVal\n};\n\n/**\n * Validate component names\n */\nfunction checkComponents (options) {\n for (var key in options.components) {\n validateComponentName(key);\n }\n}\n\nfunction validateComponentName (name) {\n if (!new RegExp((\"^[a-zA-Z][\\\\-\\\\.0-9_\" + (unicodeRegExp.source) + \"]*$\")).test(name)) {\n warn(\n 'Invalid component name: \"' + name + '\". Component names ' +\n 'should conform to valid custom element name in html5 specification.'\n );\n }\n if (isBuiltInTag(name) || config.isReservedTag(name)) {\n warn(\n 'Do not use built-in or reserved HTML elements as component ' +\n 'id: ' + name\n );\n }\n}\n\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\nfunction normalizeProps (options, vm) {\n var props = options.props;\n if (!props) { return }\n var res = {};\n var i, val, name;\n if (Array.isArray(props)) {\n i = props.length;\n while (i--) {\n val = props[i];\n if (typeof val === 'string') {\n name = camelize(val);\n res[name] = { type: null };\n } else if (process.env.NODE_ENV !== 'production') {\n warn('props must be strings when using array syntax.');\n }\n }\n } else if (isPlainObject(props)) {\n for (var key in props) {\n val = props[key];\n name = camelize(key);\n res[name] = isPlainObject(val)\n ? val\n : { type: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"props\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(props)) + \".\",\n vm\n );\n }\n options.props = res;\n}\n\n/**\n * Normalize all injections into Object-based format\n */\nfunction normalizeInject (options, vm) {\n var inject = options.inject;\n if (!inject) { return }\n var normalized = options.inject = {};\n if (Array.isArray(inject)) {\n for (var i = 0; i < inject.length; i++) {\n normalized[inject[i]] = { from: inject[i] };\n }\n } else if (isPlainObject(inject)) {\n for (var key in inject) {\n var val = inject[key];\n normalized[key] = isPlainObject(val)\n ? extend({ from: key }, val)\n : { from: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(inject)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Normalize raw function directives into object format.\n */\nfunction normalizeDirectives (options) {\n var dirs = options.directives;\n if (dirs) {\n for (var key in dirs) {\n var def$$1 = dirs[key];\n if (typeof def$$1 === 'function') {\n dirs[key] = { bind: def$$1, update: def$$1 };\n }\n }\n }\n}\n\nfunction assertObjectType (name, value, vm) {\n if (!isPlainObject(value)) {\n warn(\n \"Invalid value for option \\\"\" + name + \"\\\": expected an Object, \" +\n \"but got \" + (toRawType(value)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\nfunction mergeOptions (\n parent,\n child,\n vm\n) {\n if (process.env.NODE_ENV !== 'production') {\n checkComponents(child);\n }\n\n if (typeof child === 'function') {\n child = child.options;\n }\n\n normalizeProps(child, vm);\n normalizeInject(child, vm);\n normalizeDirectives(child);\n\n // Apply extends and mixins on the child options,\n // but only if it is a raw options object that isn't\n // the result of another mergeOptions call.\n // Only merged options has the _base property.\n if (!child._base) {\n if (child.extends) {\n parent = mergeOptions(parent, child.extends, vm);\n }\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n }\n\n var options = {};\n var key;\n for (key in parent) {\n mergeField(key);\n }\n for (key in child) {\n if (!hasOwn(parent, key)) {\n mergeField(key);\n }\n }\n function mergeField (key) {\n var strat = strats[key] || defaultStrat;\n options[key] = strat(parent[key], child[key], vm, key);\n }\n return options\n}\n\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\nfunction resolveAsset (\n options,\n type,\n id,\n warnMissing\n) {\n /* istanbul ignore if */\n if (typeof id !== 'string') {\n return\n }\n var assets = options[type];\n // check local registration variations first\n if (hasOwn(assets, id)) { return assets[id] }\n var camelizedId = camelize(id);\n if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }\n var PascalCaseId = capitalize(camelizedId);\n if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }\n // fallback to prototype chain\n var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {\n warn(\n 'Failed to resolve ' + type.slice(0, -1) + ': ' + id,\n options\n );\n }\n return res\n}\n\n/* */\n\n\n\nfunction validateProp (\n key,\n propOptions,\n propsData,\n vm\n) {\n var prop = propOptions[key];\n var absent = !hasOwn(propsData, key);\n var value = propsData[key];\n // boolean casting\n var booleanIndex = getTypeIndex(Boolean, prop.type);\n if (booleanIndex > -1) {\n if (absent && !hasOwn(prop, 'default')) {\n value = false;\n } else if (value === '' || value === hyphenate(key)) {\n // only cast empty string / same name to boolean if\n // boolean has higher priority\n var stringIndex = getTypeIndex(String, prop.type);\n if (stringIndex < 0 || booleanIndex < stringIndex) {\n value = true;\n }\n }\n }\n // check default value\n if (value === undefined) {\n value = getPropDefaultValue(vm, prop, key);\n // since the default value is a fresh copy,\n // make sure to observe it.\n var prevShouldObserve = shouldObserve;\n toggleObserving(true);\n observe(value);\n toggleObserving(prevShouldObserve);\n }\n if (\n process.env.NODE_ENV !== 'production' &&\n // skip validation for weex recycle-list child component props\n !(false)\n ) {\n assertProp(prop, key, value, vm, absent);\n }\n return value\n}\n\n/**\n * Get the default value of a prop.\n */\nfunction getPropDefaultValue (vm, prop, key) {\n // no default, return undefined\n if (!hasOwn(prop, 'default')) {\n return undefined\n }\n var def = prop.default;\n // warn against non-factory defaults for Object & Array\n if (process.env.NODE_ENV !== 'production' && isObject(def)) {\n warn(\n 'Invalid default value for prop \"' + key + '\": ' +\n 'Props with type Object/Array must use a factory function ' +\n 'to return the default value.',\n vm\n );\n }\n // the raw prop value was also undefined from previous render,\n // return previous default value to avoid unnecessary watcher trigger\n if (vm && vm.$options.propsData &&\n vm.$options.propsData[key] === undefined &&\n vm._props[key] !== undefined\n ) {\n return vm._props[key]\n }\n // call factory function for non-Function types\n // a value is Function if its prototype is function even across different execution context\n return typeof def === 'function' && getType(prop.type) !== 'Function'\n ? def.call(vm)\n : def\n}\n\n/**\n * Assert whether a prop is valid.\n */\nfunction assertProp (\n prop,\n name,\n value,\n vm,\n absent\n) {\n if (prop.required && absent) {\n warn(\n 'Missing required prop: \"' + name + '\"',\n vm\n );\n return\n }\n if (value == null && !prop.required) {\n return\n }\n var type = prop.type;\n var valid = !type || type === true;\n var expectedTypes = [];\n if (type) {\n if (!Array.isArray(type)) {\n type = [type];\n }\n for (var i = 0; i < type.length && !valid; i++) {\n var assertedType = assertType(value, type[i]);\n expectedTypes.push(assertedType.expectedType || '');\n valid = assertedType.valid;\n }\n }\n\n if (!valid) {\n warn(\n getInvalidTypeMessage(name, value, expectedTypes),\n vm\n );\n return\n }\n var validator = prop.validator;\n if (validator) {\n if (!validator(value)) {\n warn(\n 'Invalid prop: custom validator check failed for prop \"' + name + '\".',\n vm\n );\n }\n }\n}\n\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;\n\nfunction assertType (value, type) {\n var valid;\n var expectedType = getType(type);\n if (simpleCheckRE.test(expectedType)) {\n var t = typeof value;\n valid = t === expectedType.toLowerCase();\n // for primitive wrapper objects\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n } else if (expectedType === 'Object') {\n valid = isPlainObject(value);\n } else if (expectedType === 'Array') {\n valid = Array.isArray(value);\n } else {\n valid = value instanceof type;\n }\n return {\n valid: valid,\n expectedType: expectedType\n }\n}\n\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\nfunction getType (fn) {\n var match = fn && fn.toString().match(/^\\s*function (\\w+)/);\n return match ? match[1] : ''\n}\n\nfunction isSameType (a, b) {\n return getType(a) === getType(b)\n}\n\nfunction getTypeIndex (type, expectedTypes) {\n if (!Array.isArray(expectedTypes)) {\n return isSameType(expectedTypes, type) ? 0 : -1\n }\n for (var i = 0, len = expectedTypes.length; i < len; i++) {\n if (isSameType(expectedTypes[i], type)) {\n return i\n }\n }\n return -1\n}\n\nfunction getInvalidTypeMessage (name, value, expectedTypes) {\n var message = \"Invalid prop: type check failed for prop \\\"\" + name + \"\\\".\" +\n \" Expected \" + (expectedTypes.map(capitalize).join(', '));\n var expectedType = expectedTypes[0];\n var receivedType = toRawType(value);\n var expectedValue = styleValue(value, expectedType);\n var receivedValue = styleValue(value, receivedType);\n // check if we need to specify expected value\n if (expectedTypes.length === 1 &&\n isExplicable(expectedType) &&\n !isBoolean(expectedType, receivedType)) {\n message += \" with value \" + expectedValue;\n }\n message += \", got \" + receivedType + \" \";\n // check if we need to specify received value\n if (isExplicable(receivedType)) {\n message += \"with value \" + receivedValue + \".\";\n }\n return message\n}\n\nfunction styleValue (value, type) {\n if (type === 'String') {\n return (\"\\\"\" + value + \"\\\"\")\n } else if (type === 'Number') {\n return (\"\" + (Number(value)))\n } else {\n return (\"\" + value)\n }\n}\n\nfunction isExplicable (value) {\n var explicitTypes = ['string', 'number', 'boolean'];\n return explicitTypes.some(function (elem) { return value.toLowerCase() === elem; })\n}\n\nfunction isBoolean () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; })\n}\n\n/* */\n\nfunction handleError (err, vm, info) {\n // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.\n // See: https://github.com/vuejs/vuex/issues/1505\n pushTarget();\n try {\n if (vm) {\n var cur = vm;\n while ((cur = cur.$parent)) {\n var hooks = cur.$options.errorCaptured;\n if (hooks) {\n for (var i = 0; i < hooks.length; i++) {\n try {\n var capture = hooks[i].call(cur, err, vm, info) === false;\n if (capture) { return }\n } catch (e) {\n globalHandleError(e, cur, 'errorCaptured hook');\n }\n }\n }\n }\n }\n globalHandleError(err, vm, info);\n } finally {\n popTarget();\n }\n}\n\nfunction invokeWithErrorHandling (\n handler,\n context,\n args,\n vm,\n info\n) {\n var res;\n try {\n res = args ? handler.apply(context, args) : handler.call(context);\n if (res && !res._isVue && isPromise(res) && !res._handled) {\n res.catch(function (e) { return handleError(e, vm, info + \" (Promise/async)\"); });\n // issue #9511\n // avoid catch triggering multiple times when nested calls\n res._handled = true;\n }\n } catch (e) {\n handleError(e, vm, info);\n }\n return res\n}\n\nfunction globalHandleError (err, vm, info) {\n if (config.errorHandler) {\n try {\n return config.errorHandler.call(null, err, vm, info)\n } catch (e) {\n // if the user intentionally throws the original error in the handler,\n // do not log it twice\n if (e !== err) {\n logError(e, null, 'config.errorHandler');\n }\n }\n }\n logError(err, vm, info);\n}\n\nfunction logError (err, vm, info) {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n }\n /* istanbul ignore else */\n if ((inBrowser || inWeex) && typeof console !== 'undefined') {\n console.error(err);\n } else {\n throw err\n }\n}\n\n/* */\n\nvar isUsingMicroTask = false;\n\nvar callbacks = [];\nvar pending = false;\n\nfunction flushCallbacks () {\n pending = false;\n var copies = callbacks.slice(0);\n callbacks.length = 0;\n for (var i = 0; i < copies.length; i++) {\n copies[i]();\n }\n}\n\n// Here we have async deferring wrappers using microtasks.\n// In 2.5 we used (macro) tasks (in combination with microtasks).\n// However, it has subtle problems when state is changed right before repaint\n// (e.g. #6813, out-in transitions).\n// Also, using (macro) tasks in event handler would cause some weird behaviors\n// that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).\n// So we now use microtasks everywhere, again.\n// A major drawback of this tradeoff is that there are some scenarios\n// where microtasks have too high a priority and fire in between supposedly\n// sequential events (e.g. #4521, #6690, which have workarounds)\n// or even between bubbling of the same event (#6566).\nvar timerFunc;\n\n// The nextTick behavior leverages the microtask queue, which can be accessed\n// via either native Promise.then or MutationObserver.\n// MutationObserver has wider support, however it is seriously bugged in\n// UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It\n// completely stops working after triggering a few times... so, if native\n// Promise is available, we will use it:\n/* istanbul ignore next, $flow-disable-line */\nif (typeof Promise !== 'undefined' && isNative(Promise)) {\n var p = Promise.resolve();\n timerFunc = function () {\n p.then(flushCallbacks);\n // In problematic UIWebViews, Promise.then doesn't completely break, but\n // it can get stuck in a weird state where callbacks are pushed into the\n // microtask queue but the queue isn't being flushed, until the browser\n // needs to do some other work, e.g. handle a timer. Therefore we can\n // \"force\" the microtask queue to be flushed by adding an empty timer.\n if (isIOS) { setTimeout(noop); }\n };\n isUsingMicroTask = true;\n} else if (!isIE && typeof MutationObserver !== 'undefined' && (\n isNative(MutationObserver) ||\n // PhantomJS and iOS 7.x\n MutationObserver.toString() === '[object MutationObserverConstructor]'\n)) {\n // Use MutationObserver where native Promise is not available,\n // e.g. PhantomJS, iOS7, Android 4.4\n // (#6466 MutationObserver is unreliable in IE11)\n var counter = 1;\n var observer = new MutationObserver(flushCallbacks);\n var textNode = document.createTextNode(String(counter));\n observer.observe(textNode, {\n characterData: true\n });\n timerFunc = function () {\n counter = (counter + 1) % 2;\n textNode.data = String(counter);\n };\n isUsingMicroTask = true;\n} else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n // Fallback to setImmediate.\n // Techinically it leverages the (macro) task queue,\n // but it is still a better choice than setTimeout.\n timerFunc = function () {\n setImmediate(flushCallbacks);\n };\n} else {\n // Fallback to setTimeout.\n timerFunc = function () {\n setTimeout(flushCallbacks, 0);\n };\n}\n\nfunction nextTick (cb, ctx) {\n var _resolve;\n callbacks.push(function () {\n if (cb) {\n try {\n cb.call(ctx);\n } catch (e) {\n handleError(e, ctx, 'nextTick');\n }\n } else if (_resolve) {\n _resolve(ctx);\n }\n });\n if (!pending) {\n pending = true;\n timerFunc();\n }\n // $flow-disable-line\n if (!cb && typeof Promise !== 'undefined') {\n return new Promise(function (resolve) {\n _resolve = resolve;\n })\n }\n}\n\n/* */\n\n/* not type checking this file because flow doesn't play well with Proxy */\n\nvar initProxy;\n\nif (process.env.NODE_ENV !== 'production') {\n var allowedGlobals = makeMap(\n 'Infinity,undefined,NaN,isFinite,isNaN,' +\n 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +\n 'require' // for Webpack/Browserify\n );\n\n var warnNonPresent = function (target, key) {\n warn(\n \"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" +\n 'referenced during render. Make sure that this property is reactive, ' +\n 'either in the data option, or for class-based components, by ' +\n 'initializing the property. ' +\n 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',\n target\n );\n };\n\n var warnReservedPrefix = function (target, key) {\n warn(\n \"Property \\\"\" + key + \"\\\" must be accessed with \\\"$data.\" + key + \"\\\" because \" +\n 'properties starting with \"$\" or \"_\" are not proxied in the Vue instance to ' +\n 'prevent conflicts with Vue internals' +\n 'See: https://vuejs.org/v2/api/#data',\n target\n );\n };\n\n var hasProxy =\n typeof Proxy !== 'undefined' && isNative(Proxy);\n\n if (hasProxy) {\n var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n config.keyCodes = new Proxy(config.keyCodes, {\n set: function set (target, key, value) {\n if (isBuiltInModifier(key)) {\n warn((\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key));\n return false\n } else {\n target[key] = value;\n return true\n }\n }\n });\n }\n\n var hasHandler = {\n has: function has (target, key) {\n var has = key in target;\n var isAllowed = allowedGlobals(key) ||\n (typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data));\n if (!has && !isAllowed) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return has || !isAllowed\n }\n };\n\n var getHandler = {\n get: function get (target, key) {\n if (typeof key === 'string' && !(key in target)) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return target[key]\n }\n };\n\n initProxy = function initProxy (vm) {\n if (hasProxy) {\n // determine which proxy handler to use\n var options = vm.$options;\n var handlers = options.render && options.render._withStripped\n ? getHandler\n : hasHandler;\n vm._renderProxy = new Proxy(vm, handlers);\n } else {\n vm._renderProxy = vm;\n }\n };\n}\n\n/* */\n\nvar seenObjects = new _Set();\n\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\nfunction traverse (val) {\n _traverse(val, seenObjects);\n seenObjects.clear();\n}\n\nfunction _traverse (val, seen) {\n var i, keys;\n var isA = Array.isArray(val);\n if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) {\n return\n }\n if (val.__ob__) {\n var depId = val.__ob__.dep.id;\n if (seen.has(depId)) {\n return\n }\n seen.add(depId);\n }\n if (isA) {\n i = val.length;\n while (i--) { _traverse(val[i], seen); }\n } else {\n keys = Object.keys(val);\n i = keys.length;\n while (i--) { _traverse(val[keys[i]], seen); }\n }\n}\n\nvar mark;\nvar measure;\n\nif (process.env.NODE_ENV !== 'production') {\n var perf = inBrowser && window.performance;\n /* istanbul ignore if */\n if (\n perf &&\n perf.mark &&\n perf.measure &&\n perf.clearMarks &&\n perf.clearMeasures\n ) {\n mark = function (tag) { return perf.mark(tag); };\n measure = function (name, startTag, endTag) {\n perf.measure(name, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n // perf.clearMeasures(name)\n };\n }\n}\n\n/* */\n\nvar normalizeEvent = cached(function (name) {\n var passive = name.charAt(0) === '&';\n name = passive ? name.slice(1) : name;\n var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n name = once$$1 ? name.slice(1) : name;\n var capture = name.charAt(0) === '!';\n name = capture ? name.slice(1) : name;\n return {\n name: name,\n once: once$$1,\n capture: capture,\n passive: passive\n }\n});\n\nfunction createFnInvoker (fns, vm) {\n function invoker () {\n var arguments$1 = arguments;\n\n var fns = invoker.fns;\n if (Array.isArray(fns)) {\n var cloned = fns.slice();\n for (var i = 0; i < cloned.length; i++) {\n invokeWithErrorHandling(cloned[i], null, arguments$1, vm, \"v-on handler\");\n }\n } else {\n // return handler return value for single handlers\n return invokeWithErrorHandling(fns, null, arguments, vm, \"v-on handler\")\n }\n }\n invoker.fns = fns;\n return invoker\n}\n\nfunction updateListeners (\n on,\n oldOn,\n add,\n remove$$1,\n createOnceHandler,\n vm\n) {\n var name, def$$1, cur, old, event;\n for (name in on) {\n def$$1 = cur = on[name];\n old = oldOn[name];\n event = normalizeEvent(name);\n if (isUndef(cur)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Invalid handler for event \\\"\" + (event.name) + \"\\\": got \" + String(cur),\n vm\n );\n } else if (isUndef(old)) {\n if (isUndef(cur.fns)) {\n cur = on[name] = createFnInvoker(cur, vm);\n }\n if (isTrue(event.once)) {\n cur = on[name] = createOnceHandler(event.name, cur, event.capture);\n }\n add(event.name, cur, event.capture, event.passive, event.params);\n } else if (cur !== old) {\n old.fns = cur;\n on[name] = old;\n }\n }\n for (name in oldOn) {\n if (isUndef(on[name])) {\n event = normalizeEvent(name);\n remove$$1(event.name, oldOn[name], event.capture);\n }\n }\n}\n\n/* */\n\nfunction mergeVNodeHook (def, hookKey, hook) {\n if (def instanceof VNode) {\n def = def.data.hook || (def.data.hook = {});\n }\n var invoker;\n var oldHook = def[hookKey];\n\n function wrappedHook () {\n hook.apply(this, arguments);\n // important: remove merged hook to ensure it's called only once\n // and prevent memory leak\n remove(invoker.fns, wrappedHook);\n }\n\n if (isUndef(oldHook)) {\n // no existing hook\n invoker = createFnInvoker([wrappedHook]);\n } else {\n /* istanbul ignore if */\n if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n // already a merged invoker\n invoker = oldHook;\n invoker.fns.push(wrappedHook);\n } else {\n // existing plain hook\n invoker = createFnInvoker([oldHook, wrappedHook]);\n }\n }\n\n invoker.merged = true;\n def[hookKey] = invoker;\n}\n\n/* */\n\nfunction extractPropsFromVNodeData (\n data,\n Ctor,\n tag\n) {\n // we are only extracting raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n if (isUndef(propOptions)) {\n return\n }\n var res = {};\n var attrs = data.attrs;\n var props = data.props;\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n if (process.env.NODE_ENV !== 'production') {\n var keyInLowerCase = key.toLowerCase();\n if (\n key !== keyInLowerCase &&\n attrs && hasOwn(attrs, keyInLowerCase)\n ) {\n tip(\n \"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" +\n (formatComponentName(tag || Ctor)) + \", but the declared prop name is\" +\n \" \\\"\" + key + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and camelCased \" +\n \"props need to use their kebab-case equivalents when using in-DOM \" +\n \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\"\n );\n }\n }\n checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n }\n }\n return res\n}\n\nfunction checkProp (\n res,\n hash,\n key,\n altKey,\n preserve\n) {\n if (isDef(hash)) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n if (!preserve) {\n delete hash[key];\n }\n return true\n } else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n if (!preserve) {\n delete hash[altKey];\n }\n return true\n }\n }\n return false\n}\n\n/* */\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array<VNode>. There are\n// two cases where extra normalization is needed:\n\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren (children) {\n for (var i = 0; i < children.length; i++) {\n if (Array.isArray(children[i])) {\n return Array.prototype.concat.apply([], children)\n }\n }\n return children\n}\n\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g. <template>, <slot>, v-for, or when the children is provided by user\n// with hand-written render functions / JSX. In such cases a full normalization\n// is needed to cater to all possible types of children values.\nfunction normalizeChildren (children) {\n return isPrimitive(children)\n ? [createTextVNode(children)]\n : Array.isArray(children)\n ? normalizeArrayChildren(children)\n : undefined\n}\n\nfunction isTextNode (node) {\n return isDef(node) && isDef(node.text) && isFalse(node.isComment)\n}\n\nfunction normalizeArrayChildren (children, nestedIndex) {\n var res = [];\n var i, c, lastIndex, last;\n for (i = 0; i < children.length; i++) {\n c = children[i];\n if (isUndef(c) || typeof c === 'boolean') { continue }\n lastIndex = res.length - 1;\n last = res[lastIndex];\n // nested\n if (Array.isArray(c)) {\n if (c.length > 0) {\n c = normalizeArrayChildren(c, ((nestedIndex || '') + \"_\" + i));\n // merge adjacent text nodes\n if (isTextNode(c[0]) && isTextNode(last)) {\n res[lastIndex] = createTextVNode(last.text + (c[0]).text);\n c.shift();\n }\n res.push.apply(res, c);\n }\n } else if (isPrimitive(c)) {\n if (isTextNode(last)) {\n // merge adjacent text nodes\n // this is necessary for SSR hydration because text nodes are\n // essentially merged when rendered to HTML strings\n res[lastIndex] = createTextVNode(last.text + c);\n } else if (c !== '') {\n // convert primitive to vnode\n res.push(createTextVNode(c));\n }\n } else {\n if (isTextNode(c) && isTextNode(last)) {\n // merge adjacent text nodes\n res[lastIndex] = createTextVNode(last.text + c.text);\n } else {\n // default key for nested array children (likely generated by v-for)\n if (isTrue(children._isVList) &&\n isDef(c.tag) &&\n isUndef(c.key) &&\n isDef(nestedIndex)) {\n c.key = \"__vlist\" + nestedIndex + \"_\" + i + \"__\";\n }\n res.push(c);\n }\n }\n }\n return res\n}\n\n/* */\n\nfunction initProvide (vm) {\n var provide = vm.$options.provide;\n if (provide) {\n vm._provided = typeof provide === 'function'\n ? provide.call(vm)\n : provide;\n }\n}\n\nfunction initInjections (vm) {\n var result = resolveInject(vm.$options.inject, vm);\n if (result) {\n toggleObserving(false);\n Object.keys(result).forEach(function (key) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n defineReactive$$1(vm, key, result[key], function () {\n warn(\n \"Avoid mutating an injected value directly since the changes will be \" +\n \"overwritten whenever the provided component re-renders. \" +\n \"injection being mutated: \\\"\" + key + \"\\\"\",\n vm\n );\n });\n } else {\n defineReactive$$1(vm, key, result[key]);\n }\n });\n toggleObserving(true);\n }\n}\n\nfunction resolveInject (inject, vm) {\n if (inject) {\n // inject is :any because flow is not smart enough to figure out cached\n var result = Object.create(null);\n var keys = hasSymbol\n ? Reflect.ownKeys(inject)\n : Object.keys(inject);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n // #6574 in case the inject object is observed...\n if (key === '__ob__') { continue }\n var provideKey = inject[key].from;\n var source = vm;\n while (source) {\n if (source._provided && hasOwn(source._provided, provideKey)) {\n result[key] = source._provided[provideKey];\n break\n }\n source = source.$parent;\n }\n if (!source) {\n if ('default' in inject[key]) {\n var provideDefault = inject[key].default;\n result[key] = typeof provideDefault === 'function'\n ? provideDefault.call(vm)\n : provideDefault;\n } else if (process.env.NODE_ENV !== 'production') {\n warn((\"Injection \\\"\" + key + \"\\\" not found\"), vm);\n }\n }\n }\n return result\n }\n}\n\n/* */\n\n\n\n/**\n * Runtime helper for resolving raw children VNodes into a slot object.\n */\nfunction resolveSlots (\n children,\n context\n) {\n if (!children || !children.length) {\n return {}\n }\n var slots = {};\n for (var i = 0, l = children.length; i < l; i++) {\n var child = children[i];\n var data = child.data;\n // remove slot attribute if the node is resolved as a Vue slot node\n if (data && data.attrs && data.attrs.slot) {\n delete data.attrs.slot;\n }\n // named slots should only be respected if the vnode was rendered in the\n // same context.\n if ((child.context === context || child.fnContext === context) &&\n data && data.slot != null\n ) {\n var name = data.slot;\n var slot = (slots[name] || (slots[name] = []));\n if (child.tag === 'template') {\n slot.push.apply(slot, child.children || []);\n } else {\n slot.push(child);\n }\n } else {\n (slots.default || (slots.default = [])).push(child);\n }\n }\n // ignore slots that contains only whitespace\n for (var name$1 in slots) {\n if (slots[name$1].every(isWhitespace)) {\n delete slots[name$1];\n }\n }\n return slots\n}\n\nfunction isWhitespace (node) {\n return (node.isComment && !node.asyncFactory) || node.text === ' '\n}\n\n/* */\n\nfunction normalizeScopedSlots (\n slots,\n normalSlots,\n prevSlots\n) {\n var res;\n var hasNormalSlots = Object.keys(normalSlots).length > 0;\n var isStable = slots ? !!slots.$stable : !hasNormalSlots;\n var key = slots && slots.$key;\n if (!slots) {\n res = {};\n } else if (slots._normalized) {\n // fast path 1: child component re-render only, parent did not change\n return slots._normalized\n } else if (\n isStable &&\n prevSlots &&\n prevSlots !== emptyObject &&\n key === prevSlots.$key &&\n !hasNormalSlots &&\n !prevSlots.$hasNormal\n ) {\n // fast path 2: stable scoped slots w/ no normal slots to proxy,\n // only need to normalize once\n return prevSlots\n } else {\n res = {};\n for (var key$1 in slots) {\n if (slots[key$1] && key$1[0] !== '$') {\n res[key$1] = normalizeScopedSlot(normalSlots, key$1, slots[key$1]);\n }\n }\n }\n // expose normal slots on scopedSlots\n for (var key$2 in normalSlots) {\n if (!(key$2 in res)) {\n res[key$2] = proxyNormalSlot(normalSlots, key$2);\n }\n }\n // avoriaz seems to mock a non-extensible $scopedSlots object\n // and when that is passed down this would cause an error\n if (slots && Object.isExtensible(slots)) {\n (slots)._normalized = res;\n }\n def(res, '$stable', isStable);\n def(res, '$key', key);\n def(res, '$hasNormal', hasNormalSlots);\n return res\n}\n\nfunction normalizeScopedSlot(normalSlots, key, fn) {\n var normalized = function () {\n var res = arguments.length ? fn.apply(null, arguments) : fn({});\n res = res && typeof res === 'object' && !Array.isArray(res)\n ? [res] // single vnode\n : normalizeChildren(res);\n return res && (\n res.length === 0 ||\n (res.length === 1 && res[0].isComment) // #9658\n ) ? undefined\n : res\n };\n // this is a slot using the new v-slot syntax without scope. although it is\n // compiled as a scoped slot, render fn users would expect it to be present\n // on this.$slots because the usage is semantically a normal slot.\n if (fn.proxy) {\n Object.defineProperty(normalSlots, key, {\n get: normalized,\n enumerable: true,\n configurable: true\n });\n }\n return normalized\n}\n\nfunction proxyNormalSlot(slots, key) {\n return function () { return slots[key]; }\n}\n\n/* */\n\n/**\n * Runtime helper for rendering v-for lists.\n */\nfunction renderList (\n val,\n render\n) {\n var ret, i, l, keys, key;\n if (Array.isArray(val) || typeof val === 'string') {\n ret = new Array(val.length);\n for (i = 0, l = val.length; i < l; i++) {\n ret[i] = render(val[i], i);\n }\n } else if (typeof val === 'number') {\n ret = new Array(val);\n for (i = 0; i < val; i++) {\n ret[i] = render(i + 1, i);\n }\n } else if (isObject(val)) {\n if (hasSymbol && val[Symbol.iterator]) {\n ret = [];\n var iterator = val[Symbol.iterator]();\n var result = iterator.next();\n while (!result.done) {\n ret.push(render(result.value, ret.length));\n result = iterator.next();\n }\n } else {\n keys = Object.keys(val);\n ret = new Array(keys.length);\n for (i = 0, l = keys.length; i < l; i++) {\n key = keys[i];\n ret[i] = render(val[key], key, i);\n }\n }\n }\n if (!isDef(ret)) {\n ret = [];\n }\n (ret)._isVList = true;\n return ret\n}\n\n/* */\n\n/**\n * Runtime helper for rendering <slot>\n */\nfunction renderSlot (\n name,\n fallback,\n props,\n bindObject\n) {\n var scopedSlotFn = this.$scopedSlots[name];\n var nodes;\n if (scopedSlotFn) { // scoped slot\n props = props || {};\n if (bindObject) {\n if (process.env.NODE_ENV !== 'production' && !isObject(bindObject)) {\n warn(\n 'slot v-bind without argument expects an Object',\n this\n );\n }\n props = extend(extend({}, bindObject), props);\n }\n nodes = scopedSlotFn(props) || fallback;\n } else {\n nodes = this.$slots[name] || fallback;\n }\n\n var target = props && props.slot;\n if (target) {\n return this.$createElement('template', { slot: target }, nodes)\n } else {\n return nodes\n }\n}\n\n/* */\n\n/**\n * Runtime helper for resolving filters\n */\nfunction resolveFilter (id) {\n return resolveAsset(this.$options, 'filters', id, true) || identity\n}\n\n/* */\n\nfunction isKeyNotMatch (expect, actual) {\n if (Array.isArray(expect)) {\n return expect.indexOf(actual) === -1\n } else {\n return expect !== actual\n }\n}\n\n/**\n * Runtime helper for checking keyCodes from config.\n * exposed as Vue.prototype._k\n * passing in eventKeyName as last argument separately for backwards compat\n */\nfunction checkKeyCodes (\n eventKeyCode,\n key,\n builtInKeyCode,\n eventKeyName,\n builtInKeyName\n) {\n var mappedKeyCode = config.keyCodes[key] || builtInKeyCode;\n if (builtInKeyName && eventKeyName && !config.keyCodes[key]) {\n return isKeyNotMatch(builtInKeyName, eventKeyName)\n } else if (mappedKeyCode) {\n return isKeyNotMatch(mappedKeyCode, eventKeyCode)\n } else if (eventKeyName) {\n return hyphenate(eventKeyName) !== key\n }\n}\n\n/* */\n\n/**\n * Runtime helper for merging v-bind=\"object\" into a VNode's data.\n */\nfunction bindObjectProps (\n data,\n tag,\n value,\n asProp,\n isSync\n) {\n if (value) {\n if (!isObject(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'v-bind without argument expects an Object or Array value',\n this\n );\n } else {\n if (Array.isArray(value)) {\n value = toObject(value);\n }\n var hash;\n var loop = function ( key ) {\n if (\n key === 'class' ||\n key === 'style' ||\n isReservedAttribute(key)\n ) {\n hash = data;\n } else {\n var type = data.attrs && data.attrs.type;\n hash = asProp || config.mustUseProp(tag, type, key)\n ? data.domProps || (data.domProps = {})\n : data.attrs || (data.attrs = {});\n }\n var camelizedKey = camelize(key);\n var hyphenatedKey = hyphenate(key);\n if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) {\n hash[key] = value[key];\n\n if (isSync) {\n var on = data.on || (data.on = {});\n on[(\"update:\" + key)] = function ($event) {\n value[key] = $event;\n };\n }\n }\n };\n\n for (var key in value) loop( key );\n }\n }\n return data\n}\n\n/* */\n\n/**\n * Runtime helper for rendering static trees.\n */\nfunction renderStatic (\n index,\n isInFor\n) {\n var cached = this._staticTrees || (this._staticTrees = []);\n var tree = cached[index];\n // if has already-rendered static tree and not inside v-for,\n // we can reuse the same tree.\n if (tree && !isInFor) {\n return tree\n }\n // otherwise, render a fresh tree.\n tree = cached[index] = this.$options.staticRenderFns[index].call(\n this._renderProxy,\n null,\n this // for render fns generated for functional component templates\n );\n markStatic(tree, (\"__static__\" + index), false);\n return tree\n}\n\n/**\n * Runtime helper for v-once.\n * Effectively it means marking the node as static with a unique key.\n */\nfunction markOnce (\n tree,\n index,\n key\n) {\n markStatic(tree, (\"__once__\" + index + (key ? (\"_\" + key) : \"\")), true);\n return tree\n}\n\nfunction markStatic (\n tree,\n key,\n isOnce\n) {\n if (Array.isArray(tree)) {\n for (var i = 0; i < tree.length; i++) {\n if (tree[i] && typeof tree[i] !== 'string') {\n markStaticNode(tree[i], (key + \"_\" + i), isOnce);\n }\n }\n } else {\n markStaticNode(tree, key, isOnce);\n }\n}\n\nfunction markStaticNode (node, key, isOnce) {\n node.isStatic = true;\n node.key = key;\n node.isOnce = isOnce;\n}\n\n/* */\n\nfunction bindObjectListeners (data, value) {\n if (value) {\n if (!isPlainObject(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'v-on without argument expects an Object value',\n this\n );\n } else {\n var on = data.on = data.on ? extend({}, data.on) : {};\n for (var key in value) {\n var existing = on[key];\n var ours = value[key];\n on[key] = existing ? [].concat(existing, ours) : ours;\n }\n }\n }\n return data\n}\n\n/* */\n\nfunction resolveScopedSlots (\n fns, // see flow/vnode\n res,\n // the following are added in 2.6\n hasDynamicKeys,\n contentHashKey\n) {\n res = res || { $stable: !hasDynamicKeys };\n for (var i = 0; i < fns.length; i++) {\n var slot = fns[i];\n if (Array.isArray(slot)) {\n resolveScopedSlots(slot, res, hasDynamicKeys);\n } else if (slot) {\n // marker for reverse proxying v-slot without scope on this.$slots\n if (slot.proxy) {\n slot.fn.proxy = true;\n }\n res[slot.key] = slot.fn;\n }\n }\n if (contentHashKey) {\n (res).$key = contentHashKey;\n }\n return res\n}\n\n/* */\n\nfunction bindDynamicKeys (baseObj, values) {\n for (var i = 0; i < values.length; i += 2) {\n var key = values[i];\n if (typeof key === 'string' && key) {\n baseObj[values[i]] = values[i + 1];\n } else if (process.env.NODE_ENV !== 'production' && key !== '' && key !== null) {\n // null is a speical value for explicitly removing a binding\n warn(\n (\"Invalid value for dynamic directive argument (expected string or null): \" + key),\n this\n );\n }\n }\n return baseObj\n}\n\n// helper to dynamically append modifier runtime markers to event names.\n// ensure only append when value is already string, otherwise it will be cast\n// to string and cause the type check to miss.\nfunction prependModifier (value, symbol) {\n return typeof value === 'string' ? symbol + value : value\n}\n\n/* */\n\nfunction installRenderHelpers (target) {\n target._o = markOnce;\n target._n = toNumber;\n target._s = toString;\n target._l = renderList;\n target._t = renderSlot;\n target._q = looseEqual;\n target._i = looseIndexOf;\n target._m = renderStatic;\n target._f = resolveFilter;\n target._k = checkKeyCodes;\n target._b = bindObjectProps;\n target._v = createTextVNode;\n target._e = createEmptyVNode;\n target._u = resolveScopedSlots;\n target._g = bindObjectListeners;\n target._d = bindDynamicKeys;\n target._p = prependModifier;\n}\n\n/* */\n\nfunction FunctionalRenderContext (\n data,\n props,\n children,\n parent,\n Ctor\n) {\n var this$1 = this;\n\n var options = Ctor.options;\n // ensure the createElement function in functional components\n // gets a unique context - this is necessary for correct named slot check\n var contextVm;\n if (hasOwn(parent, '_uid')) {\n contextVm = Object.create(parent);\n // $flow-disable-line\n contextVm._original = parent;\n } else {\n // the context vm passed in is a functional context as well.\n // in this case we want to make sure we are able to get a hold to the\n // real context instance.\n contextVm = parent;\n // $flow-disable-line\n parent = parent._original;\n }\n var isCompiled = isTrue(options._compiled);\n var needNormalization = !isCompiled;\n\n this.data = data;\n this.props = props;\n this.children = children;\n this.parent = parent;\n this.listeners = data.on || emptyObject;\n this.injections = resolveInject(options.inject, parent);\n this.slots = function () {\n if (!this$1.$slots) {\n normalizeScopedSlots(\n data.scopedSlots,\n this$1.$slots = resolveSlots(children, parent)\n );\n }\n return this$1.$slots\n };\n\n Object.defineProperty(this, 'scopedSlots', ({\n enumerable: true,\n get: function get () {\n return normalizeScopedSlots(data.scopedSlots, this.slots())\n }\n }));\n\n // support for compiled functional template\n if (isCompiled) {\n // exposing $options for renderStatic()\n this.$options = options;\n // pre-resolve slots for renderSlot()\n this.$slots = this.slots();\n this.$scopedSlots = normalizeScopedSlots(data.scopedSlots, this.$slots);\n }\n\n if (options._scopeId) {\n this._c = function (a, b, c, d) {\n var vnode = createElement(contextVm, a, b, c, d, needNormalization);\n if (vnode && !Array.isArray(vnode)) {\n vnode.fnScopeId = options._scopeId;\n vnode.fnContext = parent;\n }\n return vnode\n };\n } else {\n this._c = function (a, b, c, d) { return createElement(contextVm, a, b, c, d, needNormalization); };\n }\n}\n\ninstallRenderHelpers(FunctionalRenderContext.prototype);\n\nfunction createFunctionalComponent (\n Ctor,\n propsData,\n data,\n contextVm,\n children\n) {\n var options = Ctor.options;\n var props = {};\n var propOptions = options.props;\n if (isDef(propOptions)) {\n for (var key in propOptions) {\n props[key] = validateProp(key, propOptions, propsData || emptyObject);\n }\n } else {\n if (isDef(data.attrs)) { mergeProps(props, data.attrs); }\n if (isDef(data.props)) { mergeProps(props, data.props); }\n }\n\n var renderContext = new FunctionalRenderContext(\n data,\n props,\n children,\n contextVm,\n Ctor\n );\n\n var vnode = options.render.call(null, renderContext._c, renderContext);\n\n if (vnode instanceof VNode) {\n return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options, renderContext)\n } else if (Array.isArray(vnode)) {\n var vnodes = normalizeChildren(vnode) || [];\n var res = new Array(vnodes.length);\n for (var i = 0; i < vnodes.length; i++) {\n res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options, renderContext);\n }\n return res\n }\n}\n\nfunction cloneAndMarkFunctionalResult (vnode, data, contextVm, options, renderContext) {\n // #7817 clone node before setting fnContext, otherwise if the node is reused\n // (e.g. it was from a cached normal slot) the fnContext causes named slots\n // that should not be matched to match.\n var clone = cloneVNode(vnode);\n clone.fnContext = contextVm;\n clone.fnOptions = options;\n if (process.env.NODE_ENV !== 'production') {\n (clone.devtoolsMeta = clone.devtoolsMeta || {}).renderContext = renderContext;\n }\n if (data.slot) {\n (clone.data || (clone.data = {})).slot = data.slot;\n }\n return clone\n}\n\nfunction mergeProps (to, from) {\n for (var key in from) {\n to[camelize(key)] = from[key];\n }\n}\n\n/* */\n\n/* */\n\n/* */\n\n/* */\n\n// inline hooks to be invoked on component VNodes during patch\nvar componentVNodeHooks = {\n init: function init (vnode, hydrating) {\n if (\n vnode.componentInstance &&\n !vnode.componentInstance._isDestroyed &&\n vnode.data.keepAlive\n ) {\n // kept-alive components, treat as a patch\n var mountedNode = vnode; // work around flow\n componentVNodeHooks.prepatch(mountedNode, mountedNode);\n } else {\n var child = vnode.componentInstance = createComponentInstanceForVnode(\n vnode,\n activeInstance\n );\n child.$mount(hydrating ? vnode.elm : undefined, hydrating);\n }\n },\n\n prepatch: function prepatch (oldVnode, vnode) {\n var options = vnode.componentOptions;\n var child = vnode.componentInstance = oldVnode.componentInstance;\n updateChildComponent(\n child,\n options.propsData, // updated props\n options.listeners, // updated listeners\n vnode, // new parent vnode\n options.children // new children\n );\n },\n\n insert: function insert (vnode) {\n var context = vnode.context;\n var componentInstance = vnode.componentInstance;\n if (!componentInstance._isMounted) {\n componentInstance._isMounted = true;\n callHook(componentInstance, 'mounted');\n }\n if (vnode.data.keepAlive) {\n if (context._isMounted) {\n // vue-router#1212\n // During updates, a kept-alive component's child components may\n // change, so directly walking the tree here may call activated hooks\n // on incorrect children. Instead we push them into a queue which will\n // be processed after the whole patch process ended.\n queueActivatedComponent(componentInstance);\n } else {\n activateChildComponent(componentInstance, true /* direct */);\n }\n }\n },\n\n destroy: function destroy (vnode) {\n var componentInstance = vnode.componentInstance;\n if (!componentInstance._isDestroyed) {\n if (!vnode.data.keepAlive) {\n componentInstance.$destroy();\n } else {\n deactivateChildComponent(componentInstance, true /* direct */);\n }\n }\n }\n};\n\nvar hooksToMerge = Object.keys(componentVNodeHooks);\n\nfunction createComponent (\n Ctor,\n data,\n context,\n children,\n tag\n) {\n if (isUndef(Ctor)) {\n return\n }\n\n var baseCtor = context.$options._base;\n\n // plain options object: turn it into a constructor\n if (isObject(Ctor)) {\n Ctor = baseCtor.extend(Ctor);\n }\n\n // if at this stage it's not a constructor or an async component factory,\n // reject.\n if (typeof Ctor !== 'function') {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Invalid Component definition: \" + (String(Ctor))), context);\n }\n return\n }\n\n // async component\n var asyncFactory;\n if (isUndef(Ctor.cid)) {\n asyncFactory = Ctor;\n Ctor = resolveAsyncComponent(asyncFactory, baseCtor);\n if (Ctor === undefined) {\n // return a placeholder node for async component, which is rendered\n // as a comment node but preserves all the raw information for the node.\n // the information will be used for async server-rendering and hydration.\n return createAsyncPlaceholder(\n asyncFactory,\n data,\n context,\n children,\n tag\n )\n }\n }\n\n data = data || {};\n\n // resolve constructor options in case global mixins are applied after\n // component constructor creation\n resolveConstructorOptions(Ctor);\n\n // transform component v-model data into props & events\n if (isDef(data.model)) {\n transformModel(Ctor.options, data);\n }\n\n // extract props\n var propsData = extractPropsFromVNodeData(data, Ctor, tag);\n\n // functional component\n if (isTrue(Ctor.options.functional)) {\n return createFunctionalComponent(Ctor, propsData, data, context, children)\n }\n\n // extract listeners, since these needs to be treated as\n // child component listeners instead of DOM listeners\n var listeners = data.on;\n // replace with listeners with .native modifier\n // so it gets processed during parent component patch.\n data.on = data.nativeOn;\n\n if (isTrue(Ctor.options.abstract)) {\n // abstract components do not keep anything\n // other than props & listeners & slot\n\n // work around flow\n var slot = data.slot;\n data = {};\n if (slot) {\n data.slot = slot;\n }\n }\n\n // install component management hooks onto the placeholder node\n installComponentHooks(data);\n\n // return a placeholder vnode\n var name = Ctor.options.name || tag;\n var vnode = new VNode(\n (\"vue-component-\" + (Ctor.cid) + (name ? (\"-\" + name) : '')),\n data, undefined, undefined, undefined, context,\n { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children },\n asyncFactory\n );\n\n return vnode\n}\n\nfunction createComponentInstanceForVnode (\n vnode, // we know it's MountedComponentVNode but flow doesn't\n parent // activeInstance in lifecycle state\n) {\n var options = {\n _isComponent: true,\n _parentVnode: vnode,\n parent: parent\n };\n // check inline-template render functions\n var inlineTemplate = vnode.data.inlineTemplate;\n if (isDef(inlineTemplate)) {\n options.render = inlineTemplate.render;\n options.staticRenderFns = inlineTemplate.staticRenderFns;\n }\n return new vnode.componentOptions.Ctor(options)\n}\n\nfunction installComponentHooks (data) {\n var hooks = data.hook || (data.hook = {});\n for (var i = 0; i < hooksToMerge.length; i++) {\n var key = hooksToMerge[i];\n var existing = hooks[key];\n var toMerge = componentVNodeHooks[key];\n if (existing !== toMerge && !(existing && existing._merged)) {\n hooks[key] = existing ? mergeHook$1(toMerge, existing) : toMerge;\n }\n }\n}\n\nfunction mergeHook$1 (f1, f2) {\n var merged = function (a, b) {\n // flow complains about extra args which is why we use any\n f1(a, b);\n f2(a, b);\n };\n merged._merged = true;\n return merged\n}\n\n// transform component v-model info (value and callback) into\n// prop and event handler respectively.\nfunction transformModel (options, data) {\n var prop = (options.model && options.model.prop) || 'value';\n var event = (options.model && options.model.event) || 'input'\n ;(data.attrs || (data.attrs = {}))[prop] = data.model.value;\n var on = data.on || (data.on = {});\n var existing = on[event];\n var callback = data.model.callback;\n if (isDef(existing)) {\n if (\n Array.isArray(existing)\n ? existing.indexOf(callback) === -1\n : existing !== callback\n ) {\n on[event] = [callback].concat(existing);\n }\n } else {\n on[event] = callback;\n }\n}\n\n/* */\n\nvar SIMPLE_NORMALIZE = 1;\nvar ALWAYS_NORMALIZE = 2;\n\n// wrapper function for providing a more flexible interface\n// without getting yelled at by flow\nfunction createElement (\n context,\n tag,\n data,\n children,\n normalizationType,\n alwaysNormalize\n) {\n if (Array.isArray(data) || isPrimitive(data)) {\n normalizationType = children;\n children = data;\n data = undefined;\n }\n if (isTrue(alwaysNormalize)) {\n normalizationType = ALWAYS_NORMALIZE;\n }\n return _createElement(context, tag, data, children, normalizationType)\n}\n\nfunction _createElement (\n context,\n tag,\n data,\n children,\n normalizationType\n) {\n if (isDef(data) && isDef((data).__ob__)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Avoid using observed data object as vnode data: \" + (JSON.stringify(data)) + \"\\n\" +\n 'Always create fresh vnode data objects in each render!',\n context\n );\n return createEmptyVNode()\n }\n // object syntax in v-bind\n if (isDef(data) && isDef(data.is)) {\n tag = data.is;\n }\n if (!tag) {\n // in case of component :is set to falsy value\n return createEmptyVNode()\n }\n // warn against non-primitive key\n if (process.env.NODE_ENV !== 'production' &&\n isDef(data) && isDef(data.key) && !isPrimitive(data.key)\n ) {\n {\n warn(\n 'Avoid using non-primitive value as key, ' +\n 'use string/number value instead.',\n context\n );\n }\n }\n // support single function children as default scoped slot\n if (Array.isArray(children) &&\n typeof children[0] === 'function'\n ) {\n data = data || {};\n data.scopedSlots = { default: children[0] };\n children.length = 0;\n }\n if (normalizationType === ALWAYS_NORMALIZE) {\n children = normalizeChildren(children);\n } else if (normalizationType === SIMPLE_NORMALIZE) {\n children = simpleNormalizeChildren(children);\n }\n var vnode, ns;\n if (typeof tag === 'string') {\n var Ctor;\n ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag);\n if (config.isReservedTag(tag)) {\n // platform built-in elements\n vnode = new VNode(\n config.parsePlatformTagName(tag), data, children,\n undefined, undefined, context\n );\n } else if ((!data || !data.pre) && isDef(Ctor = resolveAsset(context.$options, 'components', tag))) {\n // component\n vnode = createComponent(Ctor, data, context, children, tag);\n } else {\n // unknown or unlisted namespaced elements\n // check at runtime because it may get assigned a namespace when its\n // parent normalizes children\n vnode = new VNode(\n tag, data, children,\n undefined, undefined, context\n );\n }\n } else {\n // direct component options / constructor\n vnode = createComponent(tag, data, context, children);\n }\n if (Array.isArray(vnode)) {\n return vnode\n } else if (isDef(vnode)) {\n if (isDef(ns)) { applyNS(vnode, ns); }\n if (isDef(data)) { registerDeepBindings(data); }\n return vnode\n } else {\n return createEmptyVNode()\n }\n}\n\nfunction applyNS (vnode, ns, force) {\n vnode.ns = ns;\n if (vnode.tag === 'foreignObject') {\n // use default namespace inside foreignObject\n ns = undefined;\n force = true;\n }\n if (isDef(vnode.children)) {\n for (var i = 0, l = vnode.children.length; i < l; i++) {\n var child = vnode.children[i];\n if (isDef(child.tag) && (\n isUndef(child.ns) || (isTrue(force) && child.tag !== 'svg'))) {\n applyNS(child, ns, force);\n }\n }\n }\n}\n\n// ref #5318\n// necessary to ensure parent re-render when deep bindings like :style and\n// :class are used on slot nodes\nfunction registerDeepBindings (data) {\n if (isObject(data.style)) {\n traverse(data.style);\n }\n if (isObject(data.class)) {\n traverse(data.class);\n }\n}\n\n/* */\n\nfunction initRender (vm) {\n vm._vnode = null; // the root of the child tree\n vm._staticTrees = null; // v-once cached trees\n var options = vm.$options;\n var parentVnode = vm.$vnode = options._parentVnode; // the placeholder node in parent tree\n var renderContext = parentVnode && parentVnode.context;\n vm.$slots = resolveSlots(options._renderChildren, renderContext);\n vm.$scopedSlots = emptyObject;\n // bind the createElement fn to this instance\n // so that we get proper render context inside it.\n // args order: tag, data, children, normalizationType, alwaysNormalize\n // internal version is used by render functions compiled from templates\n vm._c = function (a, b, c, d) { return createElement(vm, a, b, c, d, false); };\n // normalization is always applied for the public version, used in\n // user-written render functions.\n vm.$createElement = function (a, b, c, d) { return createElement(vm, a, b, c, d, true); };\n\n // $attrs & $listeners are exposed for easier HOC creation.\n // they need to be reactive so that HOCs using them are always updated\n var parentData = parentVnode && parentVnode.data;\n\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, function () {\n !isUpdatingChildComponent && warn(\"$attrs is readonly.\", vm);\n }, true);\n defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, function () {\n !isUpdatingChildComponent && warn(\"$listeners is readonly.\", vm);\n }, true);\n } else {\n defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, null, true);\n defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, null, true);\n }\n}\n\nvar currentRenderingInstance = null;\n\nfunction renderMixin (Vue) {\n // install runtime convenience helpers\n installRenderHelpers(Vue.prototype);\n\n Vue.prototype.$nextTick = function (fn) {\n return nextTick(fn, this)\n };\n\n Vue.prototype._render = function () {\n var vm = this;\n var ref = vm.$options;\n var render = ref.render;\n var _parentVnode = ref._parentVnode;\n\n if (_parentVnode) {\n vm.$scopedSlots = normalizeScopedSlots(\n _parentVnode.data.scopedSlots,\n vm.$slots,\n vm.$scopedSlots\n );\n }\n\n // set parent vnode. this allows render functions to have access\n // to the data on the placeholder node.\n vm.$vnode = _parentVnode;\n // render self\n var vnode;\n try {\n // There's no need to maintain a stack becaues all render fns are called\n // separately from one another. Nested component's render fns are called\n // when parent component is patched.\n currentRenderingInstance = vm;\n vnode = render.call(vm._renderProxy, vm.$createElement);\n } catch (e) {\n handleError(e, vm, \"render\");\n // return error render result,\n // or previous vnode to prevent render error causing blank component\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production' && vm.$options.renderError) {\n try {\n vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e);\n } catch (e) {\n handleError(e, vm, \"renderError\");\n vnode = vm._vnode;\n }\n } else {\n vnode = vm._vnode;\n }\n } finally {\n currentRenderingInstance = null;\n }\n // if the returned array contains only a single node, allow it\n if (Array.isArray(vnode) && vnode.length === 1) {\n vnode = vnode[0];\n }\n // return empty vnode in case the render function errored out\n if (!(vnode instanceof VNode)) {\n if (process.env.NODE_ENV !== 'production' && Array.isArray(vnode)) {\n warn(\n 'Multiple root nodes returned from render function. Render function ' +\n 'should return a single root node.',\n vm\n );\n }\n vnode = createEmptyVNode();\n }\n // set parent\n vnode.parent = _parentVnode;\n return vnode\n };\n}\n\n/* */\n\nfunction ensureCtor (comp, base) {\n if (\n comp.__esModule ||\n (hasSymbol && comp[Symbol.toStringTag] === 'Module')\n ) {\n comp = comp.default;\n }\n return isObject(comp)\n ? base.extend(comp)\n : comp\n}\n\nfunction createAsyncPlaceholder (\n factory,\n data,\n context,\n children,\n tag\n) {\n var node = createEmptyVNode();\n node.asyncFactory = factory;\n node.asyncMeta = { data: data, context: context, children: children, tag: tag };\n return node\n}\n\nfunction resolveAsyncComponent (\n factory,\n baseCtor\n) {\n if (isTrue(factory.error) && isDef(factory.errorComp)) {\n return factory.errorComp\n }\n\n if (isDef(factory.resolved)) {\n return factory.resolved\n }\n\n var owner = currentRenderingInstance;\n if (owner && isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {\n // already pending\n factory.owners.push(owner);\n }\n\n if (isTrue(factory.loading) && isDef(factory.loadingComp)) {\n return factory.loadingComp\n }\n\n if (owner && !isDef(factory.owners)) {\n var owners = factory.owners = [owner];\n var sync = true;\n var timerLoading = null;\n var timerTimeout = null\n\n ;(owner).$on('hook:destroyed', function () { return remove(owners, owner); });\n\n var forceRender = function (renderCompleted) {\n for (var i = 0, l = owners.length; i < l; i++) {\n (owners[i]).$forceUpdate();\n }\n\n if (renderCompleted) {\n owners.length = 0;\n if (timerLoading !== null) {\n clearTimeout(timerLoading);\n timerLoading = null;\n }\n if (timerTimeout !== null) {\n clearTimeout(timerTimeout);\n timerTimeout = null;\n }\n }\n };\n\n var resolve = once(function (res) {\n // cache resolved\n factory.resolved = ensureCtor(res, baseCtor);\n // invoke callbacks only if this is not a synchronous resolve\n // (async resolves are shimmed as synchronous during SSR)\n if (!sync) {\n forceRender(true);\n } else {\n owners.length = 0;\n }\n });\n\n var reject = once(function (reason) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Failed to resolve async component: \" + (String(factory)) +\n (reason ? (\"\\nReason: \" + reason) : '')\n );\n if (isDef(factory.errorComp)) {\n factory.error = true;\n forceRender(true);\n }\n });\n\n var res = factory(resolve, reject);\n\n if (isObject(res)) {\n if (isPromise(res)) {\n // () => Promise\n if (isUndef(factory.resolved)) {\n res.then(resolve, reject);\n }\n } else if (isPromise(res.component)) {\n res.component.then(resolve, reject);\n\n if (isDef(res.error)) {\n factory.errorComp = ensureCtor(res.error, baseCtor);\n }\n\n if (isDef(res.loading)) {\n factory.loadingComp = ensureCtor(res.loading, baseCtor);\n if (res.delay === 0) {\n factory.loading = true;\n } else {\n timerLoading = setTimeout(function () {\n timerLoading = null;\n if (isUndef(factory.resolved) && isUndef(factory.error)) {\n factory.loading = true;\n forceRender(false);\n }\n }, res.delay || 200);\n }\n }\n\n if (isDef(res.timeout)) {\n timerTimeout = setTimeout(function () {\n timerTimeout = null;\n if (isUndef(factory.resolved)) {\n reject(\n process.env.NODE_ENV !== 'production'\n ? (\"timeout (\" + (res.timeout) + \"ms)\")\n : null\n );\n }\n }, res.timeout);\n }\n }\n }\n\n sync = false;\n // return in case resolved synchronously\n return factory.loading\n ? factory.loadingComp\n : factory.resolved\n }\n}\n\n/* */\n\nfunction isAsyncPlaceholder (node) {\n return node.isComment && node.asyncFactory\n}\n\n/* */\n\nfunction getFirstComponentChild (children) {\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n var c = children[i];\n if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) {\n return c\n }\n }\n }\n}\n\n/* */\n\n/* */\n\nfunction initEvents (vm) {\n vm._events = Object.create(null);\n vm._hasHookEvent = false;\n // init parent attached events\n var listeners = vm.$options._parentListeners;\n if (listeners) {\n updateComponentListeners(vm, listeners);\n }\n}\n\nvar target;\n\nfunction add (event, fn) {\n target.$on(event, fn);\n}\n\nfunction remove$1 (event, fn) {\n target.$off(event, fn);\n}\n\nfunction createOnceHandler (event, fn) {\n var _target = target;\n return function onceHandler () {\n var res = fn.apply(null, arguments);\n if (res !== null) {\n _target.$off(event, onceHandler);\n }\n }\n}\n\nfunction updateComponentListeners (\n vm,\n listeners,\n oldListeners\n) {\n target = vm;\n updateListeners(listeners, oldListeners || {}, add, remove$1, createOnceHandler, vm);\n target = undefined;\n}\n\nfunction eventsMixin (Vue) {\n var hookRE = /^hook:/;\n Vue.prototype.$on = function (event, fn) {\n var vm = this;\n if (Array.isArray(event)) {\n for (var i = 0, l = event.length; i < l; i++) {\n vm.$on(event[i], fn);\n }\n } else {\n (vm._events[event] || (vm._events[event] = [])).push(fn);\n // optimize hook:event cost by using a boolean flag marked at registration\n // instead of a hash lookup\n if (hookRE.test(event)) {\n vm._hasHookEvent = true;\n }\n }\n return vm\n };\n\n Vue.prototype.$once = function (event, fn) {\n var vm = this;\n function on () {\n vm.$off(event, on);\n fn.apply(vm, arguments);\n }\n on.fn = fn;\n vm.$on(event, on);\n return vm\n };\n\n Vue.prototype.$off = function (event, fn) {\n var vm = this;\n // all\n if (!arguments.length) {\n vm._events = Object.create(null);\n return vm\n }\n // array of events\n if (Array.isArray(event)) {\n for (var i$1 = 0, l = event.length; i$1 < l; i$1++) {\n vm.$off(event[i$1], fn);\n }\n return vm\n }\n // specific event\n var cbs = vm._events[event];\n if (!cbs) {\n return vm\n }\n if (!fn) {\n vm._events[event] = null;\n return vm\n }\n // specific handler\n var cb;\n var i = cbs.length;\n while (i--) {\n cb = cbs[i];\n if (cb === fn || cb.fn === fn) {\n cbs.splice(i, 1);\n break\n }\n }\n return vm\n };\n\n Vue.prototype.$emit = function (event) {\n var vm = this;\n if (process.env.NODE_ENV !== 'production') {\n var lowerCaseEvent = event.toLowerCase();\n if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) {\n tip(\n \"Event \\\"\" + lowerCaseEvent + \"\\\" is emitted in component \" +\n (formatComponentName(vm)) + \" but the handler is registered for \\\"\" + event + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and you cannot use \" +\n \"v-on to listen to camelCase events when using in-DOM templates. \" +\n \"You should probably use \\\"\" + (hyphenate(event)) + \"\\\" instead of \\\"\" + event + \"\\\".\"\n );\n }\n }\n var cbs = vm._events[event];\n if (cbs) {\n cbs = cbs.length > 1 ? toArray(cbs) : cbs;\n var args = toArray(arguments, 1);\n var info = \"event handler for \\\"\" + event + \"\\\"\";\n for (var i = 0, l = cbs.length; i < l; i++) {\n invokeWithErrorHandling(cbs[i], vm, args, vm, info);\n }\n }\n return vm\n };\n}\n\n/* */\n\nvar activeInstance = null;\nvar isUpdatingChildComponent = false;\n\nfunction setActiveInstance(vm) {\n var prevActiveInstance = activeInstance;\n activeInstance = vm;\n return function () {\n activeInstance = prevActiveInstance;\n }\n}\n\nfunction initLifecycle (vm) {\n var options = vm.$options;\n\n // locate first non-abstract parent\n var parent = options.parent;\n if (parent && !options.abstract) {\n while (parent.$options.abstract && parent.$parent) {\n parent = parent.$parent;\n }\n parent.$children.push(vm);\n }\n\n vm.$parent = parent;\n vm.$root = parent ? parent.$root : vm;\n\n vm.$children = [];\n vm.$refs = {};\n\n vm._watcher = null;\n vm._inactive = null;\n vm._directInactive = false;\n vm._isMounted = false;\n vm._isDestroyed = false;\n vm._isBeingDestroyed = false;\n}\n\nfunction lifecycleMixin (Vue) {\n Vue.prototype._update = function (vnode, hydrating) {\n var vm = this;\n var prevEl = vm.$el;\n var prevVnode = vm._vnode;\n var restoreActiveInstance = setActiveInstance(vm);\n vm._vnode = vnode;\n // Vue.prototype.__patch__ is injected in entry points\n // based on the rendering backend used.\n if (!prevVnode) {\n // initial render\n vm.$el = vm.__patch__(vm.$el, vnode, hydrating, false /* removeOnly */);\n } else {\n // updates\n vm.$el = vm.__patch__(prevVnode, vnode);\n }\n restoreActiveInstance();\n // update __vue__ reference\n if (prevEl) {\n prevEl.__vue__ = null;\n }\n if (vm.$el) {\n vm.$el.__vue__ = vm;\n }\n // if parent is an HOC, update its $el as well\n if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) {\n vm.$parent.$el = vm.$el;\n }\n // updated hook is called by the scheduler to ensure that children are\n // updated in a parent's updated hook.\n };\n\n Vue.prototype.$forceUpdate = function () {\n var vm = this;\n if (vm._watcher) {\n vm._watcher.update();\n }\n };\n\n Vue.prototype.$destroy = function () {\n var vm = this;\n if (vm._isBeingDestroyed) {\n return\n }\n callHook(vm, 'beforeDestroy');\n vm._isBeingDestroyed = true;\n // remove self from parent\n var parent = vm.$parent;\n if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {\n remove(parent.$children, vm);\n }\n // teardown watchers\n if (vm._watcher) {\n vm._watcher.teardown();\n }\n var i = vm._watchers.length;\n while (i--) {\n vm._watchers[i].teardown();\n }\n // remove reference from data ob\n // frozen object may not have observer.\n if (vm._data.__ob__) {\n vm._data.__ob__.vmCount--;\n }\n // call the last hook...\n vm._isDestroyed = true;\n // invoke destroy hooks on current rendered tree\n vm.__patch__(vm._vnode, null);\n // fire destroyed hook\n callHook(vm, 'destroyed');\n // turn off all instance listeners.\n vm.$off();\n // remove __vue__ reference\n if (vm.$el) {\n vm.$el.__vue__ = null;\n }\n // release circular reference (#6759)\n if (vm.$vnode) {\n vm.$vnode.parent = null;\n }\n };\n}\n\nfunction mountComponent (\n vm,\n el,\n hydrating\n) {\n vm.$el = el;\n if (!vm.$options.render) {\n vm.$options.render = createEmptyVNode;\n if (process.env.NODE_ENV !== 'production') {\n /* istanbul ignore if */\n if ((vm.$options.template && vm.$options.template.charAt(0) !== '#') ||\n vm.$options.el || el) {\n warn(\n 'You are using the runtime-only build of Vue where the template ' +\n 'compiler is not available. Either pre-compile the templates into ' +\n 'render functions, or use the compiler-included build.',\n vm\n );\n } else {\n warn(\n 'Failed to mount component: template or render function not defined.',\n vm\n );\n }\n }\n }\n callHook(vm, 'beforeMount');\n\n var updateComponent;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n updateComponent = function () {\n var name = vm._name;\n var id = vm._uid;\n var startTag = \"vue-perf-start:\" + id;\n var endTag = \"vue-perf-end:\" + id;\n\n mark(startTag);\n var vnode = vm._render();\n mark(endTag);\n measure((\"vue \" + name + \" render\"), startTag, endTag);\n\n mark(startTag);\n vm._update(vnode, hydrating);\n mark(endTag);\n measure((\"vue \" + name + \" patch\"), startTag, endTag);\n };\n } else {\n updateComponent = function () {\n vm._update(vm._render(), hydrating);\n };\n }\n\n // we set this to vm._watcher inside the watcher's constructor\n // since the watcher's initial patch may call $forceUpdate (e.g. inside child\n // component's mounted hook), which relies on vm._watcher being already defined\n new Watcher(vm, updateComponent, noop, {\n before: function before () {\n if (vm._isMounted && !vm._isDestroyed) {\n callHook(vm, 'beforeUpdate');\n }\n }\n }, true /* isRenderWatcher */);\n hydrating = false;\n\n // manually mounted instance, call mounted on self\n // mounted is called for render-created child components in its inserted hook\n if (vm.$vnode == null) {\n vm._isMounted = true;\n callHook(vm, 'mounted');\n }\n return vm\n}\n\nfunction updateChildComponent (\n vm,\n propsData,\n listeners,\n parentVnode,\n renderChildren\n) {\n if (process.env.NODE_ENV !== 'production') {\n isUpdatingChildComponent = true;\n }\n\n // determine whether component has slot children\n // we need to do this before overwriting $options._renderChildren.\n\n // check if there are dynamic scopedSlots (hand-written or compiled but with\n // dynamic slot names). Static scoped slots compiled from template has the\n // \"$stable\" marker.\n var newScopedSlots = parentVnode.data.scopedSlots;\n var oldScopedSlots = vm.$scopedSlots;\n var hasDynamicScopedSlot = !!(\n (newScopedSlots && !newScopedSlots.$stable) ||\n (oldScopedSlots !== emptyObject && !oldScopedSlots.$stable) ||\n (newScopedSlots && vm.$scopedSlots.$key !== newScopedSlots.$key)\n );\n\n // Any static slot children from the parent may have changed during parent's\n // update. Dynamic scoped slots may also have changed. In such cases, a forced\n // update is necessary to ensure correctness.\n var needsForceUpdate = !!(\n renderChildren || // has new static slots\n vm.$options._renderChildren || // has old static slots\n hasDynamicScopedSlot\n );\n\n vm.$options._parentVnode = parentVnode;\n vm.$vnode = parentVnode; // update vm's placeholder node without re-render\n\n if (vm._vnode) { // update child tree's parent\n vm._vnode.parent = parentVnode;\n }\n vm.$options._renderChildren = renderChildren;\n\n // update $attrs and $listeners hash\n // these are also reactive so they may trigger child update if the child\n // used them during render\n vm.$attrs = parentVnode.data.attrs || emptyObject;\n vm.$listeners = listeners || emptyObject;\n\n // update props\n if (propsData && vm.$options.props) {\n toggleObserving(false);\n var props = vm._props;\n var propKeys = vm.$options._propKeys || [];\n for (var i = 0; i < propKeys.length; i++) {\n var key = propKeys[i];\n var propOptions = vm.$options.props; // wtf flow?\n props[key] = validateProp(key, propOptions, propsData, vm);\n }\n toggleObserving(true);\n // keep a copy of raw propsData\n vm.$options.propsData = propsData;\n }\n\n // update listeners\n listeners = listeners || emptyObject;\n var oldListeners = vm.$options._parentListeners;\n vm.$options._parentListeners = listeners;\n updateComponentListeners(vm, listeners, oldListeners);\n\n // resolve slots + force update if has children\n if (needsForceUpdate) {\n vm.$slots = resolveSlots(renderChildren, parentVnode.context);\n vm.$forceUpdate();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n isUpdatingChildComponent = false;\n }\n}\n\nfunction isInInactiveTree (vm) {\n while (vm && (vm = vm.$parent)) {\n if (vm._inactive) { return true }\n }\n return false\n}\n\nfunction activateChildComponent (vm, direct) {\n if (direct) {\n vm._directInactive = false;\n if (isInInactiveTree(vm)) {\n return\n }\n } else if (vm._directInactive) {\n return\n }\n if (vm._inactive || vm._inactive === null) {\n vm._inactive = false;\n for (var i = 0; i < vm.$children.length; i++) {\n activateChildComponent(vm.$children[i]);\n }\n callHook(vm, 'activated');\n }\n}\n\nfunction deactivateChildComponent (vm, direct) {\n if (direct) {\n vm._directInactive = true;\n if (isInInactiveTree(vm)) {\n return\n }\n }\n if (!vm._inactive) {\n vm._inactive = true;\n for (var i = 0; i < vm.$children.length; i++) {\n deactivateChildComponent(vm.$children[i]);\n }\n callHook(vm, 'deactivated');\n }\n}\n\nfunction callHook (vm, hook) {\n // #7573 disable dep collection when invoking lifecycle hooks\n pushTarget();\n var handlers = vm.$options[hook];\n var info = hook + \" hook\";\n if (handlers) {\n for (var i = 0, j = handlers.length; i < j; i++) {\n invokeWithErrorHandling(handlers[i], vm, null, vm, info);\n }\n }\n if (vm._hasHookEvent) {\n vm.$emit('hook:' + hook);\n }\n popTarget();\n}\n\n/* */\n\nvar MAX_UPDATE_COUNT = 100;\n\nvar queue = [];\nvar activatedChildren = [];\nvar has = {};\nvar circular = {};\nvar waiting = false;\nvar flushing = false;\nvar index = 0;\n\n/**\n * Reset the scheduler's state.\n */\nfunction resetSchedulerState () {\n index = queue.length = activatedChildren.length = 0;\n has = {};\n if (process.env.NODE_ENV !== 'production') {\n circular = {};\n }\n waiting = flushing = false;\n}\n\n// Async edge case #6566 requires saving the timestamp when event listeners are\n// attached. However, calling performance.now() has a perf overhead especially\n// if the page has thousands of event listeners. Instead, we take a timestamp\n// every time the scheduler flushes and use that for all event listeners\n// attached during that flush.\nvar currentFlushTimestamp = 0;\n\n// Async edge case fix requires storing an event listener's attach timestamp.\nvar getNow = Date.now;\n\n// Determine what event timestamp the browser is using. Annoyingly, the\n// timestamp can either be hi-res (relative to page load) or low-res\n// (relative to UNIX epoch), so in order to compare time we have to use the\n// same timestamp type when saving the flush timestamp.\n// All IE versions use low-res event timestamps, and have problematic clock\n// implementations (#9632)\nif (inBrowser && !isIE) {\n var performance = window.performance;\n if (\n performance &&\n typeof performance.now === 'function' &&\n getNow() > document.createEvent('Event').timeStamp\n ) {\n // if the event timestamp, although evaluated AFTER the Date.now(), is\n // smaller than it, it means the event is using a hi-res timestamp,\n // and we need to use the hi-res version for event listener timestamps as\n // well.\n getNow = function () { return performance.now(); };\n }\n}\n\n/**\n * Flush both queues and run the watchers.\n */\nfunction flushSchedulerQueue () {\n currentFlushTimestamp = getNow();\n flushing = true;\n var watcher, id;\n\n // Sort queue before flush.\n // This ensures that:\n // 1. Components are updated from parent to child. (because parent is always\n // created before the child)\n // 2. A component's user watchers are run before its render watcher (because\n // user watchers are created before the render watcher)\n // 3. If a component is destroyed during a parent component's watcher run,\n // its watchers can be skipped.\n queue.sort(function (a, b) { return a.id - b.id; });\n\n // do not cache length because more watchers might be pushed\n // as we run existing watchers\n for (index = 0; index < queue.length; index++) {\n watcher = queue[index];\n if (watcher.before) {\n watcher.before();\n }\n id = watcher.id;\n has[id] = null;\n watcher.run();\n // in dev build, check and stop circular updates.\n if (process.env.NODE_ENV !== 'production' && has[id] != null) {\n circular[id] = (circular[id] || 0) + 1;\n if (circular[id] > MAX_UPDATE_COUNT) {\n warn(\n 'You may have an infinite update loop ' + (\n watcher.user\n ? (\"in watcher with expression \\\"\" + (watcher.expression) + \"\\\"\")\n : \"in a component render function.\"\n ),\n watcher.vm\n );\n break\n }\n }\n }\n\n // keep copies of post queues before resetting state\n var activatedQueue = activatedChildren.slice();\n var updatedQueue = queue.slice();\n\n resetSchedulerState();\n\n // call component updated and activated hooks\n callActivatedHooks(activatedQueue);\n callUpdatedHooks(updatedQueue);\n\n // devtool hook\n /* istanbul ignore if */\n if (devtools && config.devtools) {\n devtools.emit('flush');\n }\n}\n\nfunction callUpdatedHooks (queue) {\n var i = queue.length;\n while (i--) {\n var watcher = queue[i];\n var vm = watcher.vm;\n if (vm._watcher === watcher && vm._isMounted && !vm._isDestroyed) {\n callHook(vm, 'updated');\n }\n }\n}\n\n/**\n * Queue a kept-alive component that was activated during patch.\n * The queue will be processed after the entire tree has been patched.\n */\nfunction queueActivatedComponent (vm) {\n // setting _inactive to false here so that a render function can\n // rely on checking whether it's in an inactive tree (e.g. router-view)\n vm._inactive = false;\n activatedChildren.push(vm);\n}\n\nfunction callActivatedHooks (queue) {\n for (var i = 0; i < queue.length; i++) {\n queue[i]._inactive = true;\n activateChildComponent(queue[i], true /* true */);\n }\n}\n\n/**\n * Push a watcher into the watcher queue.\n * Jobs with duplicate IDs will be skipped unless it's\n * pushed when the queue is being flushed.\n */\nfunction queueWatcher (watcher) {\n var id = watcher.id;\n if (has[id] == null) {\n has[id] = true;\n if (!flushing) {\n queue.push(watcher);\n } else {\n // if already flushing, splice the watcher based on its id\n // if already past its id, it will be run next immediately.\n var i = queue.length - 1;\n while (i > index && queue[i].id > watcher.id) {\n i--;\n }\n queue.splice(i + 1, 0, watcher);\n }\n // queue the flush\n if (!waiting) {\n waiting = true;\n\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n flushSchedulerQueue();\n return\n }\n nextTick(flushSchedulerQueue);\n }\n }\n}\n\n/* */\n\n\n\nvar uid$2 = 0;\n\n/**\n * A watcher parses an expression, collects dependencies,\n * and fires callback when the expression value changes.\n * This is used for both the $watch() api and directives.\n */\nvar Watcher = function Watcher (\n vm,\n expOrFn,\n cb,\n options,\n isRenderWatcher\n) {\n this.vm = vm;\n if (isRenderWatcher) {\n vm._watcher = this;\n }\n vm._watchers.push(this);\n // options\n if (options) {\n this.deep = !!options.deep;\n this.user = !!options.user;\n this.lazy = !!options.lazy;\n this.sync = !!options.sync;\n this.before = options.before;\n } else {\n this.deep = this.user = this.lazy = this.sync = false;\n }\n this.cb = cb;\n this.id = ++uid$2; // uid for batching\n this.active = true;\n this.dirty = this.lazy; // for lazy watchers\n this.deps = [];\n this.newDeps = [];\n this.depIds = new _Set();\n this.newDepIds = new _Set();\n this.expression = process.env.NODE_ENV !== 'production'\n ? expOrFn.toString()\n : '';\n // parse expression for getter\n if (typeof expOrFn === 'function') {\n this.getter = expOrFn;\n } else {\n this.getter = parsePath(expOrFn);\n if (!this.getter) {\n this.getter = noop;\n process.env.NODE_ENV !== 'production' && warn(\n \"Failed watching path: \\\"\" + expOrFn + \"\\\" \" +\n 'Watcher only accepts simple dot-delimited paths. ' +\n 'For full control, use a function instead.',\n vm\n );\n }\n }\n this.value = this.lazy\n ? undefined\n : this.get();\n};\n\n/**\n * Evaluate the getter, and re-collect dependencies.\n */\nWatcher.prototype.get = function get () {\n pushTarget(this);\n var value;\n var vm = this.vm;\n try {\n value = this.getter.call(vm, vm);\n } catch (e) {\n if (this.user) {\n handleError(e, vm, (\"getter for watcher \\\"\" + (this.expression) + \"\\\"\"));\n } else {\n throw e\n }\n } finally {\n // \"touch\" every property so they are all tracked as\n // dependencies for deep watching\n if (this.deep) {\n traverse(value);\n }\n popTarget();\n this.cleanupDeps();\n }\n return value\n};\n\n/**\n * Add a dependency to this directive.\n */\nWatcher.prototype.addDep = function addDep (dep) {\n var id = dep.id;\n if (!this.newDepIds.has(id)) {\n this.newDepIds.add(id);\n this.newDeps.push(dep);\n if (!this.depIds.has(id)) {\n dep.addSub(this);\n }\n }\n};\n\n/**\n * Clean up for dependency collection.\n */\nWatcher.prototype.cleanupDeps = function cleanupDeps () {\n var i = this.deps.length;\n while (i--) {\n var dep = this.deps[i];\n if (!this.newDepIds.has(dep.id)) {\n dep.removeSub(this);\n }\n }\n var tmp = this.depIds;\n this.depIds = this.newDepIds;\n this.newDepIds = tmp;\n this.newDepIds.clear();\n tmp = this.deps;\n this.deps = this.newDeps;\n this.newDeps = tmp;\n this.newDeps.length = 0;\n};\n\n/**\n * Subscriber interface.\n * Will be called when a dependency changes.\n */\nWatcher.prototype.update = function update () {\n /* istanbul ignore else */\n if (this.lazy) {\n this.dirty = true;\n } else if (this.sync) {\n this.run();\n } else {\n queueWatcher(this);\n }\n};\n\n/**\n * Scheduler job interface.\n * Will be called by the scheduler.\n */\nWatcher.prototype.run = function run () {\n if (this.active) {\n var value = this.get();\n if (\n value !== this.value ||\n // Deep watchers and watchers on Object/Arrays should fire even\n // when the value is the same, because the value may\n // have mutated.\n isObject(value) ||\n this.deep\n ) {\n // set new value\n var oldValue = this.value;\n this.value = value;\n if (this.user) {\n try {\n this.cb.call(this.vm, value, oldValue);\n } catch (e) {\n handleError(e, this.vm, (\"callback for watcher \\\"\" + (this.expression) + \"\\\"\"));\n }\n } else {\n this.cb.call(this.vm, value, oldValue);\n }\n }\n }\n};\n\n/**\n * Evaluate the value of the watcher.\n * This only gets called for lazy watchers.\n */\nWatcher.prototype.evaluate = function evaluate () {\n this.value = this.get();\n this.dirty = false;\n};\n\n/**\n * Depend on all deps collected by this watcher.\n */\nWatcher.prototype.depend = function depend () {\n var i = this.deps.length;\n while (i--) {\n this.deps[i].depend();\n }\n};\n\n/**\n * Remove self from all dependencies' subscriber list.\n */\nWatcher.prototype.teardown = function teardown () {\n if (this.active) {\n // remove self from vm's watcher list\n // this is a somewhat expensive operation so we skip it\n // if the vm is being destroyed.\n if (!this.vm._isBeingDestroyed) {\n remove(this.vm._watchers, this);\n }\n var i = this.deps.length;\n while (i--) {\n this.deps[i].removeSub(this);\n }\n this.active = false;\n }\n};\n\n/* */\n\nvar sharedPropertyDefinition = {\n enumerable: true,\n configurable: true,\n get: noop,\n set: noop\n};\n\nfunction proxy (target, sourceKey, key) {\n sharedPropertyDefinition.get = function proxyGetter () {\n return this[sourceKey][key]\n };\n sharedPropertyDefinition.set = function proxySetter (val) {\n this[sourceKey][key] = val;\n };\n Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction initState (vm) {\n vm._watchers = [];\n var opts = vm.$options;\n if (opts.props) { initProps(vm, opts.props); }\n if (opts.methods) { initMethods(vm, opts.methods); }\n if (opts.data) {\n initData(vm);\n } else {\n observe(vm._data = {}, true /* asRootData */);\n }\n if (opts.computed) { initComputed(vm, opts.computed); }\n if (opts.watch && opts.watch !== nativeWatch) {\n initWatch(vm, opts.watch);\n }\n}\n\nfunction initProps (vm, propsOptions) {\n var propsData = vm.$options.propsData || {};\n var props = vm._props = {};\n // cache prop keys so that future props updates can iterate using Array\n // instead of dynamic object key enumeration.\n var keys = vm.$options._propKeys = [];\n var isRoot = !vm.$parent;\n // root instance props should be converted\n if (!isRoot) {\n toggleObserving(false);\n }\n var loop = function ( key ) {\n keys.push(key);\n var value = validateProp(key, propsOptions, propsData, vm);\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n var hyphenatedKey = hyphenate(key);\n if (isReservedAttribute(hyphenatedKey) ||\n config.isReservedAttr(hyphenatedKey)) {\n warn(\n (\"\\\"\" + hyphenatedKey + \"\\\" is a reserved attribute and cannot be used as component prop.\"),\n vm\n );\n }\n defineReactive$$1(props, key, value, function () {\n if (!isRoot && !isUpdatingChildComponent) {\n warn(\n \"Avoid mutating a prop directly since the value will be \" +\n \"overwritten whenever the parent component re-renders. \" +\n \"Instead, use a data or computed property based on the prop's \" +\n \"value. Prop being mutated: \\\"\" + key + \"\\\"\",\n vm\n );\n }\n });\n } else {\n defineReactive$$1(props, key, value);\n }\n // static props are already proxied on the component's prototype\n // during Vue.extend(). We only need to proxy props defined at\n // instantiation here.\n if (!(key in vm)) {\n proxy(vm, \"_props\", key);\n }\n };\n\n for (var key in propsOptions) loop( key );\n toggleObserving(true);\n}\n\nfunction initData (vm) {\n var data = vm.$options.data;\n data = vm._data = typeof data === 'function'\n ? getData(data, vm)\n : data || {};\n if (!isPlainObject(data)) {\n data = {};\n process.env.NODE_ENV !== 'production' && warn(\n 'data functions should return an object:\\n' +\n 'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function',\n vm\n );\n }\n // proxy data on instance\n var keys = Object.keys(data);\n var props = vm.$options.props;\n var methods = vm.$options.methods;\n var i = keys.length;\n while (i--) {\n var key = keys[i];\n if (process.env.NODE_ENV !== 'production') {\n if (methods && hasOwn(methods, key)) {\n warn(\n (\"Method \\\"\" + key + \"\\\" has already been defined as a data property.\"),\n vm\n );\n }\n }\n if (props && hasOwn(props, key)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"The data property \\\"\" + key + \"\\\" is already declared as a prop. \" +\n \"Use prop default value instead.\",\n vm\n );\n } else if (!isReserved(key)) {\n proxy(vm, \"_data\", key);\n }\n }\n // observe data\n observe(data, true /* asRootData */);\n}\n\nfunction getData (data, vm) {\n // #7573 disable dep collection when invoking data getters\n pushTarget();\n try {\n return data.call(vm, vm)\n } catch (e) {\n handleError(e, vm, \"data()\");\n return {}\n } finally {\n popTarget();\n }\n}\n\nvar computedWatcherOptions = { lazy: true };\n\nfunction initComputed (vm, computed) {\n // $flow-disable-line\n var watchers = vm._computedWatchers = Object.create(null);\n // computed properties are just getters during SSR\n var isSSR = isServerRendering();\n\n for (var key in computed) {\n var userDef = computed[key];\n var getter = typeof userDef === 'function' ? userDef : userDef.get;\n if (process.env.NODE_ENV !== 'production' && getter == null) {\n warn(\n (\"Getter is missing for computed property \\\"\" + key + \"\\\".\"),\n vm\n );\n }\n\n if (!isSSR) {\n // create internal watcher for the computed property.\n watchers[key] = new Watcher(\n vm,\n getter || noop,\n noop,\n computedWatcherOptions\n );\n }\n\n // component-defined computed properties are already defined on the\n // component prototype. We only need to define computed properties defined\n // at instantiation here.\n if (!(key in vm)) {\n defineComputed(vm, key, userDef);\n } else if (process.env.NODE_ENV !== 'production') {\n if (key in vm.$data) {\n warn((\"The computed property \\\"\" + key + \"\\\" is already defined in data.\"), vm);\n } else if (vm.$options.props && key in vm.$options.props) {\n warn((\"The computed property \\\"\" + key + \"\\\" is already defined as a prop.\"), vm);\n }\n }\n }\n}\n\nfunction defineComputed (\n target,\n key,\n userDef\n) {\n var shouldCache = !isServerRendering();\n if (typeof userDef === 'function') {\n sharedPropertyDefinition.get = shouldCache\n ? createComputedGetter(key)\n : createGetterInvoker(userDef);\n sharedPropertyDefinition.set = noop;\n } else {\n sharedPropertyDefinition.get = userDef.get\n ? shouldCache && userDef.cache !== false\n ? createComputedGetter(key)\n : createGetterInvoker(userDef.get)\n : noop;\n sharedPropertyDefinition.set = userDef.set || noop;\n }\n if (process.env.NODE_ENV !== 'production' &&\n sharedPropertyDefinition.set === noop) {\n sharedPropertyDefinition.set = function () {\n warn(\n (\"Computed property \\\"\" + key + \"\\\" was assigned to but it has no setter.\"),\n this\n );\n };\n }\n Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction createComputedGetter (key) {\n return function computedGetter () {\n var watcher = this._computedWatchers && this._computedWatchers[key];\n if (watcher) {\n if (watcher.dirty) {\n watcher.evaluate();\n }\n if (Dep.target) {\n watcher.depend();\n }\n return watcher.value\n }\n }\n}\n\nfunction createGetterInvoker(fn) {\n return function computedGetter () {\n return fn.call(this, this)\n }\n}\n\nfunction initMethods (vm, methods) {\n var props = vm.$options.props;\n for (var key in methods) {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof methods[key] !== 'function') {\n warn(\n \"Method \\\"\" + key + \"\\\" has type \\\"\" + (typeof methods[key]) + \"\\\" in the component definition. \" +\n \"Did you reference the function correctly?\",\n vm\n );\n }\n if (props && hasOwn(props, key)) {\n warn(\n (\"Method \\\"\" + key + \"\\\" has already been defined as a prop.\"),\n vm\n );\n }\n if ((key in vm) && isReserved(key)) {\n warn(\n \"Method \\\"\" + key + \"\\\" conflicts with an existing Vue instance method. \" +\n \"Avoid defining component methods that start with _ or $.\"\n );\n }\n }\n vm[key] = typeof methods[key] !== 'function' ? noop : bind(methods[key], vm);\n }\n}\n\nfunction initWatch (vm, watch) {\n for (var key in watch) {\n var handler = watch[key];\n if (Array.isArray(handler)) {\n for (var i = 0; i < handler.length; i++) {\n createWatcher(vm, key, handler[i]);\n }\n } else {\n createWatcher(vm, key, handler);\n }\n }\n}\n\nfunction createWatcher (\n vm,\n expOrFn,\n handler,\n options\n) {\n if (isPlainObject(handler)) {\n options = handler;\n handler = handler.handler;\n }\n if (typeof handler === 'string') {\n handler = vm[handler];\n }\n return vm.$watch(expOrFn, handler, options)\n}\n\nfunction stateMixin (Vue) {\n // flow somehow has problems with directly declared definition object\n // when using Object.defineProperty, so we have to procedurally build up\n // the object here.\n var dataDef = {};\n dataDef.get = function () { return this._data };\n var propsDef = {};\n propsDef.get = function () { return this._props };\n if (process.env.NODE_ENV !== 'production') {\n dataDef.set = function () {\n warn(\n 'Avoid replacing instance root $data. ' +\n 'Use nested data properties instead.',\n this\n );\n };\n propsDef.set = function () {\n warn(\"$props is readonly.\", this);\n };\n }\n Object.defineProperty(Vue.prototype, '$data', dataDef);\n Object.defineProperty(Vue.prototype, '$props', propsDef);\n\n Vue.prototype.$set = set;\n Vue.prototype.$delete = del;\n\n Vue.prototype.$watch = function (\n expOrFn,\n cb,\n options\n ) {\n var vm = this;\n if (isPlainObject(cb)) {\n return createWatcher(vm, expOrFn, cb, options)\n }\n options = options || {};\n options.user = true;\n var watcher = new Watcher(vm, expOrFn, cb, options);\n if (options.immediate) {\n try {\n cb.call(vm, watcher.value);\n } catch (error) {\n handleError(error, vm, (\"callback for immediate watcher \\\"\" + (watcher.expression) + \"\\\"\"));\n }\n }\n return function unwatchFn () {\n watcher.teardown();\n }\n };\n}\n\n/* */\n\nvar uid$3 = 0;\n\nfunction initMixin (Vue) {\n Vue.prototype._init = function (options) {\n var vm = this;\n // a uid\n vm._uid = uid$3++;\n\n var startTag, endTag;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n startTag = \"vue-perf-start:\" + (vm._uid);\n endTag = \"vue-perf-end:\" + (vm._uid);\n mark(startTag);\n }\n\n // a flag to avoid this being observed\n vm._isVue = true;\n // merge options\n if (options && options._isComponent) {\n // optimize internal component instantiation\n // since dynamic options merging is pretty slow, and none of the\n // internal component options needs special treatment.\n initInternalComponent(vm, options);\n } else {\n vm.$options = mergeOptions(\n resolveConstructorOptions(vm.constructor),\n options || {},\n vm\n );\n }\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n initProxy(vm);\n } else {\n vm._renderProxy = vm;\n }\n // expose real self\n vm._self = vm;\n initLifecycle(vm);\n initEvents(vm);\n initRender(vm);\n callHook(vm, 'beforeCreate');\n initInjections(vm); // resolve injections before data/props\n initState(vm);\n initProvide(vm); // resolve provide after data/props\n callHook(vm, 'created');\n\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n vm._name = formatComponentName(vm, false);\n mark(endTag);\n measure((\"vue \" + (vm._name) + \" init\"), startTag, endTag);\n }\n\n if (vm.$options.el) {\n vm.$mount(vm.$options.el);\n }\n };\n}\n\nfunction initInternalComponent (vm, options) {\n var opts = vm.$options = Object.create(vm.constructor.options);\n // doing this because it's faster than dynamic enumeration.\n var parentVnode = options._parentVnode;\n opts.parent = options.parent;\n opts._parentVnode = parentVnode;\n\n var vnodeComponentOptions = parentVnode.componentOptions;\n opts.propsData = vnodeComponentOptions.propsData;\n opts._parentListeners = vnodeComponentOptions.listeners;\n opts._renderChildren = vnodeComponentOptions.children;\n opts._componentTag = vnodeComponentOptions.tag;\n\n if (options.render) {\n opts.render = options.render;\n opts.staticRenderFns = options.staticRenderFns;\n }\n}\n\nfunction resolveConstructorOptions (Ctor) {\n var options = Ctor.options;\n if (Ctor.super) {\n var superOptions = resolveConstructorOptions(Ctor.super);\n var cachedSuperOptions = Ctor.superOptions;\n if (superOptions !== cachedSuperOptions) {\n // super option changed,\n // need to resolve new options.\n Ctor.superOptions = superOptions;\n // check if there are any late-modified/attached options (#4976)\n var modifiedOptions = resolveModifiedOptions(Ctor);\n // update base extend options\n if (modifiedOptions) {\n extend(Ctor.extendOptions, modifiedOptions);\n }\n options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);\n if (options.name) {\n options.components[options.name] = Ctor;\n }\n }\n }\n return options\n}\n\nfunction resolveModifiedOptions (Ctor) {\n var modified;\n var latest = Ctor.options;\n var sealed = Ctor.sealedOptions;\n for (var key in latest) {\n if (latest[key] !== sealed[key]) {\n if (!modified) { modified = {}; }\n modified[key] = latest[key];\n }\n }\n return modified\n}\n\nfunction Vue (options) {\n if (process.env.NODE_ENV !== 'production' &&\n !(this instanceof Vue)\n ) {\n warn('Vue is a constructor and should be called with the `new` keyword');\n }\n this._init(options);\n}\n\ninitMixin(Vue);\nstateMixin(Vue);\neventsMixin(Vue);\nlifecycleMixin(Vue);\nrenderMixin(Vue);\n\n/* */\n\nfunction initUse (Vue) {\n Vue.use = function (plugin) {\n var installedPlugins = (this._installedPlugins || (this._installedPlugins = []));\n if (installedPlugins.indexOf(plugin) > -1) {\n return this\n }\n\n // additional parameters\n var args = toArray(arguments, 1);\n args.unshift(this);\n if (typeof plugin.install === 'function') {\n plugin.install.apply(plugin, args);\n } else if (typeof plugin === 'function') {\n plugin.apply(null, args);\n }\n installedPlugins.push(plugin);\n return this\n };\n}\n\n/* */\n\nfunction initMixin$1 (Vue) {\n Vue.mixin = function (mixin) {\n this.options = mergeOptions(this.options, mixin);\n return this\n };\n}\n\n/* */\n\nfunction initExtend (Vue) {\n /**\n * Each instance constructor, including Vue, has a unique\n * cid. This enables us to create wrapped \"child\n * constructors\" for prototypal inheritance and cache them.\n */\n Vue.cid = 0;\n var cid = 1;\n\n /**\n * Class inheritance\n */\n Vue.extend = function (extendOptions) {\n extendOptions = extendOptions || {};\n var Super = this;\n var SuperId = Super.cid;\n var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {});\n if (cachedCtors[SuperId]) {\n return cachedCtors[SuperId]\n }\n\n var name = extendOptions.name || Super.options.name;\n if (process.env.NODE_ENV !== 'production' && name) {\n validateComponentName(name);\n }\n\n var Sub = function VueComponent (options) {\n this._init(options);\n };\n Sub.prototype = Object.create(Super.prototype);\n Sub.prototype.constructor = Sub;\n Sub.cid = cid++;\n Sub.options = mergeOptions(\n Super.options,\n extendOptions\n );\n Sub['super'] = Super;\n\n // For props and computed properties, we define the proxy getters on\n // the Vue instances at extension time, on the extended prototype. This\n // avoids Object.defineProperty calls for each instance created.\n if (Sub.options.props) {\n initProps$1(Sub);\n }\n if (Sub.options.computed) {\n initComputed$1(Sub);\n }\n\n // allow further extension/mixin/plugin usage\n Sub.extend = Super.extend;\n Sub.mixin = Super.mixin;\n Sub.use = Super.use;\n\n // create asset registers, so extended classes\n // can have their private assets too.\n ASSET_TYPES.forEach(function (type) {\n Sub[type] = Super[type];\n });\n // enable recursive self-lookup\n if (name) {\n Sub.options.components[name] = Sub;\n }\n\n // keep a reference to the super options at extension time.\n // later at instantiation we can check if Super's options have\n // been updated.\n Sub.superOptions = Super.options;\n Sub.extendOptions = extendOptions;\n Sub.sealedOptions = extend({}, Sub.options);\n\n // cache constructor\n cachedCtors[SuperId] = Sub;\n return Sub\n };\n}\n\nfunction initProps$1 (Comp) {\n var props = Comp.options.props;\n for (var key in props) {\n proxy(Comp.prototype, \"_props\", key);\n }\n}\n\nfunction initComputed$1 (Comp) {\n var computed = Comp.options.computed;\n for (var key in computed) {\n defineComputed(Comp.prototype, key, computed[key]);\n }\n}\n\n/* */\n\nfunction initAssetRegisters (Vue) {\n /**\n * Create asset registration methods.\n */\n ASSET_TYPES.forEach(function (type) {\n Vue[type] = function (\n id,\n definition\n ) {\n if (!definition) {\n return this.options[type + 's'][id]\n } else {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && type === 'component') {\n validateComponentName(id);\n }\n if (type === 'component' && isPlainObject(definition)) {\n definition.name = definition.name || id;\n definition = this.options._base.extend(definition);\n }\n if (type === 'directive' && typeof definition === 'function') {\n definition = { bind: definition, update: definition };\n }\n this.options[type + 's'][id] = definition;\n return definition\n }\n };\n });\n}\n\n/* */\n\n\n\nfunction getComponentName (opts) {\n return opts && (opts.Ctor.options.name || opts.tag)\n}\n\nfunction matches (pattern, name) {\n if (Array.isArray(pattern)) {\n return pattern.indexOf(name) > -1\n } else if (typeof pattern === 'string') {\n return pattern.split(',').indexOf(name) > -1\n } else if (isRegExp(pattern)) {\n return pattern.test(name)\n }\n /* istanbul ignore next */\n return false\n}\n\nfunction pruneCache (keepAliveInstance, filter) {\n var cache = keepAliveInstance.cache;\n var keys = keepAliveInstance.keys;\n var _vnode = keepAliveInstance._vnode;\n for (var key in cache) {\n var cachedNode = cache[key];\n if (cachedNode) {\n var name = getComponentName(cachedNode.componentOptions);\n if (name && !filter(name)) {\n pruneCacheEntry(cache, key, keys, _vnode);\n }\n }\n }\n}\n\nfunction pruneCacheEntry (\n cache,\n key,\n keys,\n current\n) {\n var cached$$1 = cache[key];\n if (cached$$1 && (!current || cached$$1.tag !== current.tag)) {\n cached$$1.componentInstance.$destroy();\n }\n cache[key] = null;\n remove(keys, key);\n}\n\nvar patternTypes = [String, RegExp, Array];\n\nvar KeepAlive = {\n name: 'keep-alive',\n abstract: true,\n\n props: {\n include: patternTypes,\n exclude: patternTypes,\n max: [String, Number]\n },\n\n created: function created () {\n this.cache = Object.create(null);\n this.keys = [];\n },\n\n destroyed: function destroyed () {\n for (var key in this.cache) {\n pruneCacheEntry(this.cache, key, this.keys);\n }\n },\n\n mounted: function mounted () {\n var this$1 = this;\n\n this.$watch('include', function (val) {\n pruneCache(this$1, function (name) { return matches(val, name); });\n });\n this.$watch('exclude', function (val) {\n pruneCache(this$1, function (name) { return !matches(val, name); });\n });\n },\n\n render: function render () {\n var slot = this.$slots.default;\n var vnode = getFirstComponentChild(slot);\n var componentOptions = vnode && vnode.componentOptions;\n if (componentOptions) {\n // check pattern\n var name = getComponentName(componentOptions);\n var ref = this;\n var include = ref.include;\n var exclude = ref.exclude;\n if (\n // not included\n (include && (!name || !matches(include, name))) ||\n // excluded\n (exclude && name && matches(exclude, name))\n ) {\n return vnode\n }\n\n var ref$1 = this;\n var cache = ref$1.cache;\n var keys = ref$1.keys;\n var key = vnode.key == null\n // same constructor may get registered as different local components\n // so cid alone is not enough (#3269)\n ? componentOptions.Ctor.cid + (componentOptions.tag ? (\"::\" + (componentOptions.tag)) : '')\n : vnode.key;\n if (cache[key]) {\n vnode.componentInstance = cache[key].componentInstance;\n // make current key freshest\n remove(keys, key);\n keys.push(key);\n } else {\n cache[key] = vnode;\n keys.push(key);\n // prune oldest entry\n if (this.max && keys.length > parseInt(this.max)) {\n pruneCacheEntry(cache, keys[0], keys, this._vnode);\n }\n }\n\n vnode.data.keepAlive = true;\n }\n return vnode || (slot && slot[0])\n }\n};\n\nvar builtInComponents = {\n KeepAlive: KeepAlive\n};\n\n/* */\n\nfunction initGlobalAPI (Vue) {\n // config\n var configDef = {};\n configDef.get = function () { return config; };\n if (process.env.NODE_ENV !== 'production') {\n configDef.set = function () {\n warn(\n 'Do not replace the Vue.config object, set individual fields instead.'\n );\n };\n }\n Object.defineProperty(Vue, 'config', configDef);\n\n // exposed util methods.\n // NOTE: these are not considered part of the public API - avoid relying on\n // them unless you are aware of the risk.\n Vue.util = {\n warn: warn,\n extend: extend,\n mergeOptions: mergeOptions,\n defineReactive: defineReactive$$1\n };\n\n Vue.set = set;\n Vue.delete = del;\n Vue.nextTick = nextTick;\n\n // 2.6 explicit observable API\n Vue.observable = function (obj) {\n observe(obj);\n return obj\n };\n\n Vue.options = Object.create(null);\n ASSET_TYPES.forEach(function (type) {\n Vue.options[type + 's'] = Object.create(null);\n });\n\n // this is used to identify the \"base\" constructor to extend all plain-object\n // components with in Weex's multi-instance scenarios.\n Vue.options._base = Vue;\n\n extend(Vue.options.components, builtInComponents);\n\n initUse(Vue);\n initMixin$1(Vue);\n initExtend(Vue);\n initAssetRegisters(Vue);\n}\n\ninitGlobalAPI(Vue);\n\nObject.defineProperty(Vue.prototype, '$isServer', {\n get: isServerRendering\n});\n\nObject.defineProperty(Vue.prototype, '$ssrContext', {\n get: function get () {\n /* istanbul ignore next */\n return this.$vnode && this.$vnode.ssrContext\n }\n});\n\n// expose FunctionalRenderContext for ssr runtime helper installation\nObject.defineProperty(Vue, 'FunctionalRenderContext', {\n value: FunctionalRenderContext\n});\n\nVue.version = '2.6.10';\n\n/* */\n\n// these are reserved for web because they are directly compiled away\n// during template compilation\nvar isReservedAttr = makeMap('style,class');\n\n// attributes that should be using props for binding\nvar acceptValue = makeMap('input,textarea,option,select,progress');\nvar mustUseProp = function (tag, type, attr) {\n return (\n (attr === 'value' && acceptValue(tag)) && type !== 'button' ||\n (attr === 'selected' && tag === 'option') ||\n (attr === 'checked' && tag === 'input') ||\n (attr === 'muted' && tag === 'video')\n )\n};\n\nvar isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck');\n\nvar isValidContentEditableValue = makeMap('events,caret,typing,plaintext-only');\n\nvar convertEnumeratedValue = function (key, value) {\n return isFalsyAttrValue(value) || value === 'false'\n ? 'false'\n // allow arbitrary string value for contenteditable\n : key === 'contenteditable' && isValidContentEditableValue(value)\n ? value\n : 'true'\n};\n\nvar isBooleanAttr = makeMap(\n 'allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' +\n 'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' +\n 'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' +\n 'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' +\n 'required,reversed,scoped,seamless,selected,sortable,translate,' +\n 'truespeed,typemustmatch,visible'\n);\n\nvar xlinkNS = 'http://www.w3.org/1999/xlink';\n\nvar isXlink = function (name) {\n return name.charAt(5) === ':' && name.slice(0, 5) === 'xlink'\n};\n\nvar getXlinkProp = function (name) {\n return isXlink(name) ? name.slice(6, name.length) : ''\n};\n\nvar isFalsyAttrValue = function (val) {\n return val == null || val === false\n};\n\n/* */\n\nfunction genClassForVnode (vnode) {\n var data = vnode.data;\n var parentNode = vnode;\n var childNode = vnode;\n while (isDef(childNode.componentInstance)) {\n childNode = childNode.componentInstance._vnode;\n if (childNode && childNode.data) {\n data = mergeClassData(childNode.data, data);\n }\n }\n while (isDef(parentNode = parentNode.parent)) {\n if (parentNode && parentNode.data) {\n data = mergeClassData(data, parentNode.data);\n }\n }\n return renderClass(data.staticClass, data.class)\n}\n\nfunction mergeClassData (child, parent) {\n return {\n staticClass: concat(child.staticClass, parent.staticClass),\n class: isDef(child.class)\n ? [child.class, parent.class]\n : parent.class\n }\n}\n\nfunction renderClass (\n staticClass,\n dynamicClass\n) {\n if (isDef(staticClass) || isDef(dynamicClass)) {\n return concat(staticClass, stringifyClass(dynamicClass))\n }\n /* istanbul ignore next */\n return ''\n}\n\nfunction concat (a, b) {\n return a ? b ? (a + ' ' + b) : a : (b || '')\n}\n\nfunction stringifyClass (value) {\n if (Array.isArray(value)) {\n return stringifyArray(value)\n }\n if (isObject(value)) {\n return stringifyObject(value)\n }\n if (typeof value === 'string') {\n return value\n }\n /* istanbul ignore next */\n return ''\n}\n\nfunction stringifyArray (value) {\n var res = '';\n var stringified;\n for (var i = 0, l = value.length; i < l; i++) {\n if (isDef(stringified = stringifyClass(value[i])) && stringified !== '') {\n if (res) { res += ' '; }\n res += stringified;\n }\n }\n return res\n}\n\nfunction stringifyObject (value) {\n var res = '';\n for (var key in value) {\n if (value[key]) {\n if (res) { res += ' '; }\n res += key;\n }\n }\n return res\n}\n\n/* */\n\nvar namespaceMap = {\n svg: 'http://www.w3.org/2000/svg',\n math: 'http://www.w3.org/1998/Math/MathML'\n};\n\nvar isHTMLTag = makeMap(\n 'html,body,base,head,link,meta,style,title,' +\n 'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' +\n 'div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,' +\n 'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' +\n 's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' +\n 'embed,object,param,source,canvas,script,noscript,del,ins,' +\n 'caption,col,colgroup,table,thead,tbody,td,th,tr,' +\n 'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' +\n 'output,progress,select,textarea,' +\n 'details,dialog,menu,menuitem,summary,' +\n 'content,element,shadow,template,blockquote,iframe,tfoot'\n);\n\n// this map is intentionally selective, only covering SVG elements that may\n// contain child elements.\nvar isSVG = makeMap(\n 'svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' +\n 'foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' +\n 'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view',\n true\n);\n\nvar isReservedTag = function (tag) {\n return isHTMLTag(tag) || isSVG(tag)\n};\n\nfunction getTagNamespace (tag) {\n if (isSVG(tag)) {\n return 'svg'\n }\n // basic support for MathML\n // note it doesn't support other MathML elements being component roots\n if (tag === 'math') {\n return 'math'\n }\n}\n\nvar unknownElementCache = Object.create(null);\nfunction isUnknownElement (tag) {\n /* istanbul ignore if */\n if (!inBrowser) {\n return true\n }\n if (isReservedTag(tag)) {\n return false\n }\n tag = tag.toLowerCase();\n /* istanbul ignore if */\n if (unknownElementCache[tag] != null) {\n return unknownElementCache[tag]\n }\n var el = document.createElement(tag);\n if (tag.indexOf('-') > -1) {\n // http://stackoverflow.com/a/28210364/1070244\n return (unknownElementCache[tag] = (\n el.constructor === window.HTMLUnknownElement ||\n el.constructor === window.HTMLElement\n ))\n } else {\n return (unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString()))\n }\n}\n\nvar isTextInputType = makeMap('text,number,password,search,email,tel,url');\n\n/* */\n\n/**\n * Query an element selector if it's not an element already.\n */\nfunction query (el) {\n if (typeof el === 'string') {\n var selected = document.querySelector(el);\n if (!selected) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Cannot find element: ' + el\n );\n return document.createElement('div')\n }\n return selected\n } else {\n return el\n }\n}\n\n/* */\n\nfunction createElement$1 (tagName, vnode) {\n var elm = document.createElement(tagName);\n if (tagName !== 'select') {\n return elm\n }\n // false or null will remove the attribute but undefined will not\n if (vnode.data && vnode.data.attrs && vnode.data.attrs.multiple !== undefined) {\n elm.setAttribute('multiple', 'multiple');\n }\n return elm\n}\n\nfunction createElementNS (namespace, tagName) {\n return document.createElementNS(namespaceMap[namespace], tagName)\n}\n\nfunction createTextNode (text) {\n return document.createTextNode(text)\n}\n\nfunction createComment (text) {\n return document.createComment(text)\n}\n\nfunction insertBefore (parentNode, newNode, referenceNode) {\n parentNode.insertBefore(newNode, referenceNode);\n}\n\nfunction removeChild (node, child) {\n node.removeChild(child);\n}\n\nfunction appendChild (node, child) {\n node.appendChild(child);\n}\n\nfunction parentNode (node) {\n return node.parentNode\n}\n\nfunction nextSibling (node) {\n return node.nextSibling\n}\n\nfunction tagName (node) {\n return node.tagName\n}\n\nfunction setTextContent (node, text) {\n node.textContent = text;\n}\n\nfunction setStyleScope (node, scopeId) {\n node.setAttribute(scopeId, '');\n}\n\nvar nodeOps = /*#__PURE__*/Object.freeze({\n createElement: createElement$1,\n createElementNS: createElementNS,\n createTextNode: createTextNode,\n createComment: createComment,\n insertBefore: insertBefore,\n removeChild: removeChild,\n appendChild: appendChild,\n parentNode: parentNode,\n nextSibling: nextSibling,\n tagName: tagName,\n setTextContent: setTextContent,\n setStyleScope: setStyleScope\n});\n\n/* */\n\nvar ref = {\n create: function create (_, vnode) {\n registerRef(vnode);\n },\n update: function update (oldVnode, vnode) {\n if (oldVnode.data.ref !== vnode.data.ref) {\n registerRef(oldVnode, true);\n registerRef(vnode);\n }\n },\n destroy: function destroy (vnode) {\n registerRef(vnode, true);\n }\n};\n\nfunction registerRef (vnode, isRemoval) {\n var key = vnode.data.ref;\n if (!isDef(key)) { return }\n\n var vm = vnode.context;\n var ref = vnode.componentInstance || vnode.elm;\n var refs = vm.$refs;\n if (isRemoval) {\n if (Array.isArray(refs[key])) {\n remove(refs[key], ref);\n } else if (refs[key] === ref) {\n refs[key] = undefined;\n }\n } else {\n if (vnode.data.refInFor) {\n if (!Array.isArray(refs[key])) {\n refs[key] = [ref];\n } else if (refs[key].indexOf(ref) < 0) {\n // $flow-disable-line\n refs[key].push(ref);\n }\n } else {\n refs[key] = ref;\n }\n }\n}\n\n/**\n * Virtual DOM patching algorithm based on Snabbdom by\n * Simon Friis Vindum (@paldepind)\n * Licensed under the MIT License\n * https://github.com/paldepind/snabbdom/blob/master/LICENSE\n *\n * modified by Evan You (@yyx990803)\n *\n * Not type-checking this because this file is perf-critical and the cost\n * of making flow understand it is not worth it.\n */\n\nvar emptyNode = new VNode('', {}, []);\n\nvar hooks = ['create', 'activate', 'update', 'remove', 'destroy'];\n\nfunction sameVnode (a, b) {\n return (\n a.key === b.key && (\n (\n a.tag === b.tag &&\n a.isComment === b.isComment &&\n isDef(a.data) === isDef(b.data) &&\n sameInputType(a, b)\n ) || (\n isTrue(a.isAsyncPlaceholder) &&\n a.asyncFactory === b.asyncFactory &&\n isUndef(b.asyncFactory.error)\n )\n )\n )\n}\n\nfunction sameInputType (a, b) {\n if (a.tag !== 'input') { return true }\n var i;\n var typeA = isDef(i = a.data) && isDef(i = i.attrs) && i.type;\n var typeB = isDef(i = b.data) && isDef(i = i.attrs) && i.type;\n return typeA === typeB || isTextInputType(typeA) && isTextInputType(typeB)\n}\n\nfunction createKeyToOldIdx (children, beginIdx, endIdx) {\n var i, key;\n var map = {};\n for (i = beginIdx; i <= endIdx; ++i) {\n key = children[i].key;\n if (isDef(key)) { map[key] = i; }\n }\n return map\n}\n\nfunction createPatchFunction (backend) {\n var i, j;\n var cbs = {};\n\n var modules = backend.modules;\n var nodeOps = backend.nodeOps;\n\n for (i = 0; i < hooks.length; ++i) {\n cbs[hooks[i]] = [];\n for (j = 0; j < modules.length; ++j) {\n if (isDef(modules[j][hooks[i]])) {\n cbs[hooks[i]].push(modules[j][hooks[i]]);\n }\n }\n }\n\n function emptyNodeAt (elm) {\n return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm)\n }\n\n function createRmCb (childElm, listeners) {\n function remove$$1 () {\n if (--remove$$1.listeners === 0) {\n removeNode(childElm);\n }\n }\n remove$$1.listeners = listeners;\n return remove$$1\n }\n\n function removeNode (el) {\n var parent = nodeOps.parentNode(el);\n // element may have already been removed due to v-html / v-text\n if (isDef(parent)) {\n nodeOps.removeChild(parent, el);\n }\n }\n\n function isUnknownElement$$1 (vnode, inVPre) {\n return (\n !inVPre &&\n !vnode.ns &&\n !(\n config.ignoredElements.length &&\n config.ignoredElements.some(function (ignore) {\n return isRegExp(ignore)\n ? ignore.test(vnode.tag)\n : ignore === vnode.tag\n })\n ) &&\n config.isUnknownElement(vnode.tag)\n )\n }\n\n var creatingElmInVPre = 0;\n\n function createElm (\n vnode,\n insertedVnodeQueue,\n parentElm,\n refElm,\n nested,\n ownerArray,\n index\n ) {\n if (isDef(vnode.elm) && isDef(ownerArray)) {\n // This vnode was used in a previous render!\n // now it's used as a new node, overwriting its elm would cause\n // potential patch errors down the road when it's used as an insertion\n // reference node. Instead, we clone the node on-demand before creating\n // associated DOM element for it.\n vnode = ownerArray[index] = cloneVNode(vnode);\n }\n\n vnode.isRootInsert = !nested; // for transition enter check\n if (createComponent(vnode, insertedVnodeQueue, parentElm, refElm)) {\n return\n }\n\n var data = vnode.data;\n var children = vnode.children;\n var tag = vnode.tag;\n if (isDef(tag)) {\n if (process.env.NODE_ENV !== 'production') {\n if (data && data.pre) {\n creatingElmInVPre++;\n }\n if (isUnknownElement$$1(vnode, creatingElmInVPre)) {\n warn(\n 'Unknown custom element: <' + tag + '> - did you ' +\n 'register the component correctly? For recursive components, ' +\n 'make sure to provide the \"name\" option.',\n vnode.context\n );\n }\n }\n\n vnode.elm = vnode.ns\n ? nodeOps.createElementNS(vnode.ns, tag)\n : nodeOps.createElement(tag, vnode);\n setScope(vnode);\n\n /* istanbul ignore if */\n {\n createChildren(vnode, children, insertedVnodeQueue);\n if (isDef(data)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n }\n insert(parentElm, vnode.elm, refElm);\n }\n\n if (process.env.NODE_ENV !== 'production' && data && data.pre) {\n creatingElmInVPre--;\n }\n } else if (isTrue(vnode.isComment)) {\n vnode.elm = nodeOps.createComment(vnode.text);\n insert(parentElm, vnode.elm, refElm);\n } else {\n vnode.elm = nodeOps.createTextNode(vnode.text);\n insert(parentElm, vnode.elm, refElm);\n }\n }\n\n function createComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n var i = vnode.data;\n if (isDef(i)) {\n var isReactivated = isDef(vnode.componentInstance) && i.keepAlive;\n if (isDef(i = i.hook) && isDef(i = i.init)) {\n i(vnode, false /* hydrating */);\n }\n // after calling the init hook, if the vnode is a child component\n // it should've created a child instance and mounted it. the child\n // component also has set the placeholder vnode's elm.\n // in that case we can just return the element and be done.\n if (isDef(vnode.componentInstance)) {\n initComponent(vnode, insertedVnodeQueue);\n insert(parentElm, vnode.elm, refElm);\n if (isTrue(isReactivated)) {\n reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm);\n }\n return true\n }\n }\n }\n\n function initComponent (vnode, insertedVnodeQueue) {\n if (isDef(vnode.data.pendingInsert)) {\n insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert);\n vnode.data.pendingInsert = null;\n }\n vnode.elm = vnode.componentInstance.$el;\n if (isPatchable(vnode)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n setScope(vnode);\n } else {\n // empty component root.\n // skip all element-related modules except for ref (#3455)\n registerRef(vnode);\n // make sure to invoke the insert hook\n insertedVnodeQueue.push(vnode);\n }\n }\n\n function reactivateComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n var i;\n // hack for #4339: a reactivated component with inner transition\n // does not trigger because the inner node's created hooks are not called\n // again. It's not ideal to involve module-specific logic in here but\n // there doesn't seem to be a better way to do it.\n var innerNode = vnode;\n while (innerNode.componentInstance) {\n innerNode = innerNode.componentInstance._vnode;\n if (isDef(i = innerNode.data) && isDef(i = i.transition)) {\n for (i = 0; i < cbs.activate.length; ++i) {\n cbs.activate[i](emptyNode, innerNode);\n }\n insertedVnodeQueue.push(innerNode);\n break\n }\n }\n // unlike a newly created component,\n // a reactivated keep-alive component doesn't insert itself\n insert(parentElm, vnode.elm, refElm);\n }\n\n function insert (parent, elm, ref$$1) {\n if (isDef(parent)) {\n if (isDef(ref$$1)) {\n if (nodeOps.parentNode(ref$$1) === parent) {\n nodeOps.insertBefore(parent, elm, ref$$1);\n }\n } else {\n nodeOps.appendChild(parent, elm);\n }\n }\n }\n\n function createChildren (vnode, children, insertedVnodeQueue) {\n if (Array.isArray(children)) {\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(children);\n }\n for (var i = 0; i < children.length; ++i) {\n createElm(children[i], insertedVnodeQueue, vnode.elm, null, true, children, i);\n }\n } else if (isPrimitive(vnode.text)) {\n nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(String(vnode.text)));\n }\n }\n\n function isPatchable (vnode) {\n while (vnode.componentInstance) {\n vnode = vnode.componentInstance._vnode;\n }\n return isDef(vnode.tag)\n }\n\n function invokeCreateHooks (vnode, insertedVnodeQueue) {\n for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n cbs.create[i$1](emptyNode, vnode);\n }\n i = vnode.data.hook; // Reuse variable\n if (isDef(i)) {\n if (isDef(i.create)) { i.create(emptyNode, vnode); }\n if (isDef(i.insert)) { insertedVnodeQueue.push(vnode); }\n }\n }\n\n // set scope id attribute for scoped CSS.\n // this is implemented as a special case to avoid the overhead\n // of going through the normal attribute patching process.\n function setScope (vnode) {\n var i;\n if (isDef(i = vnode.fnScopeId)) {\n nodeOps.setStyleScope(vnode.elm, i);\n } else {\n var ancestor = vnode;\n while (ancestor) {\n if (isDef(i = ancestor.context) && isDef(i = i.$options._scopeId)) {\n nodeOps.setStyleScope(vnode.elm, i);\n }\n ancestor = ancestor.parent;\n }\n }\n // for slot content they should also get the scopeId from the host instance.\n if (isDef(i = activeInstance) &&\n i !== vnode.context &&\n i !== vnode.fnContext &&\n isDef(i = i.$options._scopeId)\n ) {\n nodeOps.setStyleScope(vnode.elm, i);\n }\n }\n\n function addVnodes (parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) {\n for (; startIdx <= endIdx; ++startIdx) {\n createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm, false, vnodes, startIdx);\n }\n }\n\n function invokeDestroyHook (vnode) {\n var i, j;\n var data = vnode.data;\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.destroy)) { i(vnode); }\n for (i = 0; i < cbs.destroy.length; ++i) { cbs.destroy[i](vnode); }\n }\n if (isDef(i = vnode.children)) {\n for (j = 0; j < vnode.children.length; ++j) {\n invokeDestroyHook(vnode.children[j]);\n }\n }\n }\n\n function removeVnodes (parentElm, vnodes, startIdx, endIdx) {\n for (; startIdx <= endIdx; ++startIdx) {\n var ch = vnodes[startIdx];\n if (isDef(ch)) {\n if (isDef(ch.tag)) {\n removeAndInvokeRemoveHook(ch);\n invokeDestroyHook(ch);\n } else { // Text node\n removeNode(ch.elm);\n }\n }\n }\n }\n\n function removeAndInvokeRemoveHook (vnode, rm) {\n if (isDef(rm) || isDef(vnode.data)) {\n var i;\n var listeners = cbs.remove.length + 1;\n if (isDef(rm)) {\n // we have a recursively passed down rm callback\n // increase the listeners count\n rm.listeners += listeners;\n } else {\n // directly removing\n rm = createRmCb(vnode.elm, listeners);\n }\n // recursively invoke hooks on child component root node\n if (isDef(i = vnode.componentInstance) && isDef(i = i._vnode) && isDef(i.data)) {\n removeAndInvokeRemoveHook(i, rm);\n }\n for (i = 0; i < cbs.remove.length; ++i) {\n cbs.remove[i](vnode, rm);\n }\n if (isDef(i = vnode.data.hook) && isDef(i = i.remove)) {\n i(vnode, rm);\n } else {\n rm();\n }\n } else {\n removeNode(vnode.elm);\n }\n }\n\n function updateChildren (parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) {\n var oldStartIdx = 0;\n var newStartIdx = 0;\n var oldEndIdx = oldCh.length - 1;\n var oldStartVnode = oldCh[0];\n var oldEndVnode = oldCh[oldEndIdx];\n var newEndIdx = newCh.length - 1;\n var newStartVnode = newCh[0];\n var newEndVnode = newCh[newEndIdx];\n var oldKeyToIdx, idxInOld, vnodeToMove, refElm;\n\n // removeOnly is a special flag used only by <transition-group>\n // to ensure removed elements stay in correct relative positions\n // during leaving transitions\n var canMove = !removeOnly;\n\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(newCh);\n }\n\n while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n if (isUndef(oldStartVnode)) {\n oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left\n } else if (isUndef(oldEndVnode)) {\n oldEndVnode = oldCh[--oldEndIdx];\n } else if (sameVnode(oldStartVnode, newStartVnode)) {\n patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n oldStartVnode = oldCh[++oldStartIdx];\n newStartVnode = newCh[++newStartIdx];\n } else if (sameVnode(oldEndVnode, newEndVnode)) {\n patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);\n oldEndVnode = oldCh[--oldEndIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldStartVnode, newEndVnode)) { // Vnode moved right\n patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);\n canMove && nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm));\n oldStartVnode = oldCh[++oldStartIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldEndVnode, newStartVnode)) { // Vnode moved left\n patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n canMove && nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);\n oldEndVnode = oldCh[--oldEndIdx];\n newStartVnode = newCh[++newStartIdx];\n } else {\n if (isUndef(oldKeyToIdx)) { oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx); }\n idxInOld = isDef(newStartVnode.key)\n ? oldKeyToIdx[newStartVnode.key]\n : findIdxInOld(newStartVnode, oldCh, oldStartIdx, oldEndIdx);\n if (isUndef(idxInOld)) { // New element\n createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n } else {\n vnodeToMove = oldCh[idxInOld];\n if (sameVnode(vnodeToMove, newStartVnode)) {\n patchVnode(vnodeToMove, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n oldCh[idxInOld] = undefined;\n canMove && nodeOps.insertBefore(parentElm, vnodeToMove.elm, oldStartVnode.elm);\n } else {\n // same key but different element. treat as new element\n createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n }\n }\n newStartVnode = newCh[++newStartIdx];\n }\n }\n if (oldStartIdx > oldEndIdx) {\n refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm;\n addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);\n } else if (newStartIdx > newEndIdx) {\n removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx);\n }\n }\n\n function checkDuplicateKeys (children) {\n var seenKeys = {};\n for (var i = 0; i < children.length; i++) {\n var vnode = children[i];\n var key = vnode.key;\n if (isDef(key)) {\n if (seenKeys[key]) {\n warn(\n (\"Duplicate keys detected: '\" + key + \"'. This may cause an update error.\"),\n vnode.context\n );\n } else {\n seenKeys[key] = true;\n }\n }\n }\n }\n\n function findIdxInOld (node, oldCh, start, end) {\n for (var i = start; i < end; i++) {\n var c = oldCh[i];\n if (isDef(c) && sameVnode(node, c)) { return i }\n }\n }\n\n function patchVnode (\n oldVnode,\n vnode,\n insertedVnodeQueue,\n ownerArray,\n index,\n removeOnly\n ) {\n if (oldVnode === vnode) {\n return\n }\n\n if (isDef(vnode.elm) && isDef(ownerArray)) {\n // clone reused vnode\n vnode = ownerArray[index] = cloneVNode(vnode);\n }\n\n var elm = vnode.elm = oldVnode.elm;\n\n if (isTrue(oldVnode.isAsyncPlaceholder)) {\n if (isDef(vnode.asyncFactory.resolved)) {\n hydrate(oldVnode.elm, vnode, insertedVnodeQueue);\n } else {\n vnode.isAsyncPlaceholder = true;\n }\n return\n }\n\n // reuse element for static trees.\n // note we only do this if the vnode is cloned -\n // if the new node is not cloned it means the render functions have been\n // reset by the hot-reload-api and we need to do a proper re-render.\n if (isTrue(vnode.isStatic) &&\n isTrue(oldVnode.isStatic) &&\n vnode.key === oldVnode.key &&\n (isTrue(vnode.isCloned) || isTrue(vnode.isOnce))\n ) {\n vnode.componentInstance = oldVnode.componentInstance;\n return\n }\n\n var i;\n var data = vnode.data;\n if (isDef(data) && isDef(i = data.hook) && isDef(i = i.prepatch)) {\n i(oldVnode, vnode);\n }\n\n var oldCh = oldVnode.children;\n var ch = vnode.children;\n if (isDef(data) && isPatchable(vnode)) {\n for (i = 0; i < cbs.update.length; ++i) { cbs.update[i](oldVnode, vnode); }\n if (isDef(i = data.hook) && isDef(i = i.update)) { i(oldVnode, vnode); }\n }\n if (isUndef(vnode.text)) {\n if (isDef(oldCh) && isDef(ch)) {\n if (oldCh !== ch) { updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly); }\n } else if (isDef(ch)) {\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(ch);\n }\n if (isDef(oldVnode.text)) { nodeOps.setTextContent(elm, ''); }\n addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);\n } else if (isDef(oldCh)) {\n removeVnodes(elm, oldCh, 0, oldCh.length - 1);\n } else if (isDef(oldVnode.text)) {\n nodeOps.setTextContent(elm, '');\n }\n } else if (oldVnode.text !== vnode.text) {\n nodeOps.setTextContent(elm, vnode.text);\n }\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.postpatch)) { i(oldVnode, vnode); }\n }\n }\n\n function invokeInsertHook (vnode, queue, initial) {\n // delay insert hooks for component root nodes, invoke them after the\n // element is really inserted\n if (isTrue(initial) && isDef(vnode.parent)) {\n vnode.parent.data.pendingInsert = queue;\n } else {\n for (var i = 0; i < queue.length; ++i) {\n queue[i].data.hook.insert(queue[i]);\n }\n }\n }\n\n var hydrationBailed = false;\n // list of modules that can skip create hook during hydration because they\n // are already rendered on the client or has no need for initialization\n // Note: style is excluded because it relies on initial clone for future\n // deep updates (#7063).\n var isRenderedModule = makeMap('attrs,class,staticClass,staticStyle,key');\n\n // Note: this is a browser-only function so we can assume elms are DOM nodes.\n function hydrate (elm, vnode, insertedVnodeQueue, inVPre) {\n var i;\n var tag = vnode.tag;\n var data = vnode.data;\n var children = vnode.children;\n inVPre = inVPre || (data && data.pre);\n vnode.elm = elm;\n\n if (isTrue(vnode.isComment) && isDef(vnode.asyncFactory)) {\n vnode.isAsyncPlaceholder = true;\n return true\n }\n // assert node match\n if (process.env.NODE_ENV !== 'production') {\n if (!assertNodeMatch(elm, vnode, inVPre)) {\n return false\n }\n }\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.init)) { i(vnode, true /* hydrating */); }\n if (isDef(i = vnode.componentInstance)) {\n // child component. it should have hydrated its own tree.\n initComponent(vnode, insertedVnodeQueue);\n return true\n }\n }\n if (isDef(tag)) {\n if (isDef(children)) {\n // empty element, allow client to pick up and populate children\n if (!elm.hasChildNodes()) {\n createChildren(vnode, children, insertedVnodeQueue);\n } else {\n // v-html and domProps: innerHTML\n if (isDef(i = data) && isDef(i = i.domProps) && isDef(i = i.innerHTML)) {\n if (i !== elm.innerHTML) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' &&\n typeof console !== 'undefined' &&\n !hydrationBailed\n ) {\n hydrationBailed = true;\n console.warn('Parent: ', elm);\n console.warn('server innerHTML: ', i);\n console.warn('client innerHTML: ', elm.innerHTML);\n }\n return false\n }\n } else {\n // iterate and compare children lists\n var childrenMatch = true;\n var childNode = elm.firstChild;\n for (var i$1 = 0; i$1 < children.length; i$1++) {\n if (!childNode || !hydrate(childNode, children[i$1], insertedVnodeQueue, inVPre)) {\n childrenMatch = false;\n break\n }\n childNode = childNode.nextSibling;\n }\n // if childNode is not null, it means the actual childNodes list is\n // longer than the virtual children list.\n if (!childrenMatch || childNode) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' &&\n typeof console !== 'undefined' &&\n !hydrationBailed\n ) {\n hydrationBailed = true;\n console.warn('Parent: ', elm);\n console.warn('Mismatching childNodes vs. VNodes: ', elm.childNodes, children);\n }\n return false\n }\n }\n }\n }\n if (isDef(data)) {\n var fullInvoke = false;\n for (var key in data) {\n if (!isRenderedModule(key)) {\n fullInvoke = true;\n invokeCreateHooks(vnode, insertedVnodeQueue);\n break\n }\n }\n if (!fullInvoke && data['class']) {\n // ensure collecting deps for deep class bindings for future updates\n traverse(data['class']);\n }\n }\n } else if (elm.data !== vnode.text) {\n elm.data = vnode.text;\n }\n return true\n }\n\n function assertNodeMatch (node, vnode, inVPre) {\n if (isDef(vnode.tag)) {\n return vnode.tag.indexOf('vue-component') === 0 || (\n !isUnknownElement$$1(vnode, inVPre) &&\n vnode.tag.toLowerCase() === (node.tagName && node.tagName.toLowerCase())\n )\n } else {\n return node.nodeType === (vnode.isComment ? 8 : 3)\n }\n }\n\n return function patch (oldVnode, vnode, hydrating, removeOnly) {\n if (isUndef(vnode)) {\n if (isDef(oldVnode)) { invokeDestroyHook(oldVnode); }\n return\n }\n\n var isInitialPatch = false;\n var insertedVnodeQueue = [];\n\n if (isUndef(oldVnode)) {\n // empty mount (likely as component), create new root element\n isInitialPatch = true;\n createElm(vnode, insertedVnodeQueue);\n } else {\n var isRealElement = isDef(oldVnode.nodeType);\n if (!isRealElement && sameVnode(oldVnode, vnode)) {\n // patch existing root node\n patchVnode(oldVnode, vnode, insertedVnodeQueue, null, null, removeOnly);\n } else {\n if (isRealElement) {\n // mounting to a real element\n // check if this is server-rendered content and if we can perform\n // a successful hydration.\n if (oldVnode.nodeType === 1 && oldVnode.hasAttribute(SSR_ATTR)) {\n oldVnode.removeAttribute(SSR_ATTR);\n hydrating = true;\n }\n if (isTrue(hydrating)) {\n if (hydrate(oldVnode, vnode, insertedVnodeQueue)) {\n invokeInsertHook(vnode, insertedVnodeQueue, true);\n return oldVnode\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n 'The client-side rendered virtual DOM tree is not matching ' +\n 'server-rendered content. This is likely caused by incorrect ' +\n 'HTML markup, for example nesting block-level elements inside ' +\n '<p>, or missing <tbody>. Bailing hydration and performing ' +\n 'full client-side render.'\n );\n }\n }\n // either not server-rendered, or hydration failed.\n // create an empty node and replace it\n oldVnode = emptyNodeAt(oldVnode);\n }\n\n // replacing existing element\n var oldElm = oldVnode.elm;\n var parentElm = nodeOps.parentNode(oldElm);\n\n // create new node\n createElm(\n vnode,\n insertedVnodeQueue,\n // extremely rare edge case: do not insert if old element is in a\n // leaving transition. Only happens when combining transition +\n // keep-alive + HOCs. (#4590)\n oldElm._leaveCb ? null : parentElm,\n nodeOps.nextSibling(oldElm)\n );\n\n // update parent placeholder node element, recursively\n if (isDef(vnode.parent)) {\n var ancestor = vnode.parent;\n var patchable = isPatchable(vnode);\n while (ancestor) {\n for (var i = 0; i < cbs.destroy.length; ++i) {\n cbs.destroy[i](ancestor);\n }\n ancestor.elm = vnode.elm;\n if (patchable) {\n for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n cbs.create[i$1](emptyNode, ancestor);\n }\n // #6513\n // invoke insert hooks that may have been merged by create hooks.\n // e.g. for directives that uses the \"inserted\" hook.\n var insert = ancestor.data.hook.insert;\n if (insert.merged) {\n // start at index 1 to avoid re-invoking component mounted hook\n for (var i$2 = 1; i$2 < insert.fns.length; i$2++) {\n insert.fns[i$2]();\n }\n }\n } else {\n registerRef(ancestor);\n }\n ancestor = ancestor.parent;\n }\n }\n\n // destroy old node\n if (isDef(parentElm)) {\n removeVnodes(parentElm, [oldVnode], 0, 0);\n } else if (isDef(oldVnode.tag)) {\n invokeDestroyHook(oldVnode);\n }\n }\n }\n\n invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch);\n return vnode.elm\n }\n}\n\n/* */\n\nvar directives = {\n create: updateDirectives,\n update: updateDirectives,\n destroy: function unbindDirectives (vnode) {\n updateDirectives(vnode, emptyNode);\n }\n};\n\nfunction updateDirectives (oldVnode, vnode) {\n if (oldVnode.data.directives || vnode.data.directives) {\n _update(oldVnode, vnode);\n }\n}\n\nfunction _update (oldVnode, vnode) {\n var isCreate = oldVnode === emptyNode;\n var isDestroy = vnode === emptyNode;\n var oldDirs = normalizeDirectives$1(oldVnode.data.directives, oldVnode.context);\n var newDirs = normalizeDirectives$1(vnode.data.directives, vnode.context);\n\n var dirsWithInsert = [];\n var dirsWithPostpatch = [];\n\n var key, oldDir, dir;\n for (key in newDirs) {\n oldDir = oldDirs[key];\n dir = newDirs[key];\n if (!oldDir) {\n // new directive, bind\n callHook$1(dir, 'bind', vnode, oldVnode);\n if (dir.def && dir.def.inserted) {\n dirsWithInsert.push(dir);\n }\n } else {\n // existing directive, update\n dir.oldValue = oldDir.value;\n dir.oldArg = oldDir.arg;\n callHook$1(dir, 'update', vnode, oldVnode);\n if (dir.def && dir.def.componentUpdated) {\n dirsWithPostpatch.push(dir);\n }\n }\n }\n\n if (dirsWithInsert.length) {\n var callInsert = function () {\n for (var i = 0; i < dirsWithInsert.length; i++) {\n callHook$1(dirsWithInsert[i], 'inserted', vnode, oldVnode);\n }\n };\n if (isCreate) {\n mergeVNodeHook(vnode, 'insert', callInsert);\n } else {\n callInsert();\n }\n }\n\n if (dirsWithPostpatch.length) {\n mergeVNodeHook(vnode, 'postpatch', function () {\n for (var i = 0; i < dirsWithPostpatch.length; i++) {\n callHook$1(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode);\n }\n });\n }\n\n if (!isCreate) {\n for (key in oldDirs) {\n if (!newDirs[key]) {\n // no longer present, unbind\n callHook$1(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy);\n }\n }\n }\n}\n\nvar emptyModifiers = Object.create(null);\n\nfunction normalizeDirectives$1 (\n dirs,\n vm\n) {\n var res = Object.create(null);\n if (!dirs) {\n // $flow-disable-line\n return res\n }\n var i, dir;\n for (i = 0; i < dirs.length; i++) {\n dir = dirs[i];\n if (!dir.modifiers) {\n // $flow-disable-line\n dir.modifiers = emptyModifiers;\n }\n res[getRawDirName(dir)] = dir;\n dir.def = resolveAsset(vm.$options, 'directives', dir.name, true);\n }\n // $flow-disable-line\n return res\n}\n\nfunction getRawDirName (dir) {\n return dir.rawName || ((dir.name) + \".\" + (Object.keys(dir.modifiers || {}).join('.')))\n}\n\nfunction callHook$1 (dir, hook, vnode, oldVnode, isDestroy) {\n var fn = dir.def && dir.def[hook];\n if (fn) {\n try {\n fn(vnode.elm, dir, vnode, oldVnode, isDestroy);\n } catch (e) {\n handleError(e, vnode.context, (\"directive \" + (dir.name) + \" \" + hook + \" hook\"));\n }\n }\n}\n\nvar baseModules = [\n ref,\n directives\n];\n\n/* */\n\nfunction updateAttrs (oldVnode, vnode) {\n var opts = vnode.componentOptions;\n if (isDef(opts) && opts.Ctor.options.inheritAttrs === false) {\n return\n }\n if (isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs)) {\n return\n }\n var key, cur, old;\n var elm = vnode.elm;\n var oldAttrs = oldVnode.data.attrs || {};\n var attrs = vnode.data.attrs || {};\n // clone observed objects, as the user probably wants to mutate it\n if (isDef(attrs.__ob__)) {\n attrs = vnode.data.attrs = extend({}, attrs);\n }\n\n for (key in attrs) {\n cur = attrs[key];\n old = oldAttrs[key];\n if (old !== cur) {\n setAttr(elm, key, cur);\n }\n }\n // #4391: in IE9, setting type can reset value for input[type=radio]\n // #6666: IE/Edge forces progress value down to 1 before setting a max\n /* istanbul ignore if */\n if ((isIE || isEdge) && attrs.value !== oldAttrs.value) {\n setAttr(elm, 'value', attrs.value);\n }\n for (key in oldAttrs) {\n if (isUndef(attrs[key])) {\n if (isXlink(key)) {\n elm.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else if (!isEnumeratedAttr(key)) {\n elm.removeAttribute(key);\n }\n }\n }\n}\n\nfunction setAttr (el, key, value) {\n if (el.tagName.indexOf('-') > -1) {\n baseSetAttr(el, key, value);\n } else if (isBooleanAttr(key)) {\n // set attribute for blank value\n // e.g. <option disabled>Select one</option>\n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n // technically allowfullscreen is a boolean attribute for <iframe>,\n // but Flash expects a value of \"true\" when used on <embed> tag\n value = key === 'allowfullscreen' && el.tagName === 'EMBED'\n ? 'true'\n : key;\n el.setAttribute(key, value);\n }\n } else if (isEnumeratedAttr(key)) {\n el.setAttribute(key, convertEnumeratedValue(key, value));\n } else if (isXlink(key)) {\n if (isFalsyAttrValue(value)) {\n el.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else {\n el.setAttributeNS(xlinkNS, key, value);\n }\n } else {\n baseSetAttr(el, key, value);\n }\n}\n\nfunction baseSetAttr (el, key, value) {\n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n // #7138: IE10 & 11 fires input event when setting placeholder on\n // <textarea>... block the first input event and remove the blocker\n // immediately.\n /* istanbul ignore if */\n if (\n isIE && !isIE9 &&\n el.tagName === 'TEXTAREA' &&\n key === 'placeholder' && value !== '' && !el.__ieph\n ) {\n var blocker = function (e) {\n e.stopImmediatePropagation();\n el.removeEventListener('input', blocker);\n };\n el.addEventListener('input', blocker);\n // $flow-disable-line\n el.__ieph = true; /* IE placeholder patched */\n }\n el.setAttribute(key, value);\n }\n}\n\nvar attrs = {\n create: updateAttrs,\n update: updateAttrs\n};\n\n/* */\n\nfunction updateClass (oldVnode, vnode) {\n var el = vnode.elm;\n var data = vnode.data;\n var oldData = oldVnode.data;\n if (\n isUndef(data.staticClass) &&\n isUndef(data.class) && (\n isUndef(oldData) || (\n isUndef(oldData.staticClass) &&\n isUndef(oldData.class)\n )\n )\n ) {\n return\n }\n\n var cls = genClassForVnode(vnode);\n\n // handle transition classes\n var transitionClass = el._transitionClasses;\n if (isDef(transitionClass)) {\n cls = concat(cls, stringifyClass(transitionClass));\n }\n\n // set the class\n if (cls !== el._prevClass) {\n el.setAttribute('class', cls);\n el._prevClass = cls;\n }\n}\n\nvar klass = {\n create: updateClass,\n update: updateClass\n};\n\n/* */\n\n/* */\n\n/* */\n\n/* */\n\n// in some cases, the event used has to be determined at runtime\n// so we used some reserved tokens during compile.\nvar RANGE_TOKEN = '__r';\nvar CHECKBOX_RADIO_TOKEN = '__c';\n\n/* */\n\n// normalize v-model event tokens that can only be determined at runtime.\n// it's important to place the event as the first in the array because\n// the whole point is ensuring the v-model callback gets called before\n// user-attached handlers.\nfunction normalizeEvents (on) {\n /* istanbul ignore if */\n if (isDef(on[RANGE_TOKEN])) {\n // IE input[type=range] only supports `change` event\n var event = isIE ? 'change' : 'input';\n on[event] = [].concat(on[RANGE_TOKEN], on[event] || []);\n delete on[RANGE_TOKEN];\n }\n // This was originally intended to fix #4521 but no longer necessary\n // after 2.5. Keeping it for backwards compat with generated code from < 2.4\n /* istanbul ignore if */\n if (isDef(on[CHECKBOX_RADIO_TOKEN])) {\n on.change = [].concat(on[CHECKBOX_RADIO_TOKEN], on.change || []);\n delete on[CHECKBOX_RADIO_TOKEN];\n }\n}\n\nvar target$1;\n\nfunction createOnceHandler$1 (event, handler, capture) {\n var _target = target$1; // save current target element in closure\n return function onceHandler () {\n var res = handler.apply(null, arguments);\n if (res !== null) {\n remove$2(event, onceHandler, capture, _target);\n }\n }\n}\n\n// #9446: Firefox <= 53 (in particular, ESR 52) has incorrect Event.timeStamp\n// implementation and does not fire microtasks in between event propagation, so\n// safe to exclude.\nvar useMicrotaskFix = isUsingMicroTask && !(isFF && Number(isFF[1]) <= 53);\n\nfunction add$1 (\n name,\n handler,\n capture,\n passive\n) {\n // async edge case #6566: inner click event triggers patch, event handler\n // attached to outer element during patch, and triggered again. This\n // happens because browsers fire microtask ticks between event propagation.\n // the solution is simple: we save the timestamp when a handler is attached,\n // and the handler would only fire if the event passed to it was fired\n // AFTER it was attached.\n if (useMicrotaskFix) {\n var attachedTimestamp = currentFlushTimestamp;\n var original = handler;\n handler = original._wrapper = function (e) {\n if (\n // no bubbling, should always fire.\n // this is just a safety net in case event.timeStamp is unreliable in\n // certain weird environments...\n e.target === e.currentTarget ||\n // event is fired after handler attachment\n e.timeStamp >= attachedTimestamp ||\n // bail for environments that have buggy event.timeStamp implementations\n // #9462 iOS 9 bug: event.timeStamp is 0 after history.pushState\n // #9681 QtWebEngine event.timeStamp is negative value\n e.timeStamp <= 0 ||\n // #9448 bail if event is fired in another document in a multi-page\n // electron/nw.js app, since event.timeStamp will be using a different\n // starting reference\n e.target.ownerDocument !== document\n ) {\n return original.apply(this, arguments)\n }\n };\n }\n target$1.addEventListener(\n name,\n handler,\n supportsPassive\n ? { capture: capture, passive: passive }\n : capture\n );\n}\n\nfunction remove$2 (\n name,\n handler,\n capture,\n _target\n) {\n (_target || target$1).removeEventListener(\n name,\n handler._wrapper || handler,\n capture\n );\n}\n\nfunction updateDOMListeners (oldVnode, vnode) {\n if (isUndef(oldVnode.data.on) && isUndef(vnode.data.on)) {\n return\n }\n var on = vnode.data.on || {};\n var oldOn = oldVnode.data.on || {};\n target$1 = vnode.elm;\n normalizeEvents(on);\n updateListeners(on, oldOn, add$1, remove$2, createOnceHandler$1, vnode.context);\n target$1 = undefined;\n}\n\nvar events = {\n create: updateDOMListeners,\n update: updateDOMListeners\n};\n\n/* */\n\nvar svgContainer;\n\nfunction updateDOMProps (oldVnode, vnode) {\n if (isUndef(oldVnode.data.domProps) && isUndef(vnode.data.domProps)) {\n return\n }\n var key, cur;\n var elm = vnode.elm;\n var oldProps = oldVnode.data.domProps || {};\n var props = vnode.data.domProps || {};\n // clone observed objects, as the user probably wants to mutate it\n if (isDef(props.__ob__)) {\n props = vnode.data.domProps = extend({}, props);\n }\n\n for (key in oldProps) {\n if (!(key in props)) {\n elm[key] = '';\n }\n }\n\n for (key in props) {\n cur = props[key];\n // ignore children if the node has textContent or innerHTML,\n // as these will throw away existing DOM nodes and cause removal errors\n // on subsequent patches (#3360)\n if (key === 'textContent' || key === 'innerHTML') {\n if (vnode.children) { vnode.children.length = 0; }\n if (cur === oldProps[key]) { continue }\n // #6601 work around Chrome version <= 55 bug where single textNode\n // replaced by innerHTML/textContent retains its parentNode property\n if (elm.childNodes.length === 1) {\n elm.removeChild(elm.childNodes[0]);\n }\n }\n\n if (key === 'value' && elm.tagName !== 'PROGRESS') {\n // store value as _value as well since\n // non-string values will be stringified\n elm._value = cur;\n // avoid resetting cursor position when value is the same\n var strCur = isUndef(cur) ? '' : String(cur);\n if (shouldUpdateValue(elm, strCur)) {\n elm.value = strCur;\n }\n } else if (key === 'innerHTML' && isSVG(elm.tagName) && isUndef(elm.innerHTML)) {\n // IE doesn't support innerHTML for SVG elements\n svgContainer = svgContainer || document.createElement('div');\n svgContainer.innerHTML = \"<svg>\" + cur + \"</svg>\";\n var svg = svgContainer.firstChild;\n while (elm.firstChild) {\n elm.removeChild(elm.firstChild);\n }\n while (svg.firstChild) {\n elm.appendChild(svg.firstChild);\n }\n } else if (\n // skip the update if old and new VDOM state is the same.\n // `value` is handled separately because the DOM value may be temporarily\n // out of sync with VDOM state due to focus, composition and modifiers.\n // This #4521 by skipping the unnecesarry `checked` update.\n cur !== oldProps[key]\n ) {\n // some property updates can throw\n // e.g. `value` on <progress> w/ non-finite value\n try {\n elm[key] = cur;\n } catch (e) {}\n }\n }\n}\n\n// check platforms/web/util/attrs.js acceptValue\n\n\nfunction shouldUpdateValue (elm, checkVal) {\n return (!elm.composing && (\n elm.tagName === 'OPTION' ||\n isNotInFocusAndDirty(elm, checkVal) ||\n isDirtyWithModifiers(elm, checkVal)\n ))\n}\n\nfunction isNotInFocusAndDirty (elm, checkVal) {\n // return true when textbox (.number and .trim) loses focus and its value is\n // not equal to the updated value\n var notInFocus = true;\n // #6157\n // work around IE bug when accessing document.activeElement in an iframe\n try { notInFocus = document.activeElement !== elm; } catch (e) {}\n return notInFocus && elm.value !== checkVal\n}\n\nfunction isDirtyWithModifiers (elm, newVal) {\n var value = elm.value;\n var modifiers = elm._vModifiers; // injected by v-model runtime\n if (isDef(modifiers)) {\n if (modifiers.number) {\n return toNumber(value) !== toNumber(newVal)\n }\n if (modifiers.trim) {\n return value.trim() !== newVal.trim()\n }\n }\n return value !== newVal\n}\n\nvar domProps = {\n create: updateDOMProps,\n update: updateDOMProps\n};\n\n/* */\n\nvar parseStyleText = cached(function (cssText) {\n var res = {};\n var listDelimiter = /;(?![^(]*\\))/g;\n var propertyDelimiter = /:(.+)/;\n cssText.split(listDelimiter).forEach(function (item) {\n if (item) {\n var tmp = item.split(propertyDelimiter);\n tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return res\n});\n\n// merge static and dynamic style data on the same vnode\nfunction normalizeStyleData (data) {\n var style = normalizeStyleBinding(data.style);\n // static style is pre-processed into an object during compilation\n // and is always a fresh object, so it's safe to merge into it\n return data.staticStyle\n ? extend(data.staticStyle, style)\n : style\n}\n\n// normalize possible array / string values into Object\nfunction normalizeStyleBinding (bindingStyle) {\n if (Array.isArray(bindingStyle)) {\n return toObject(bindingStyle)\n }\n if (typeof bindingStyle === 'string') {\n return parseStyleText(bindingStyle)\n }\n return bindingStyle\n}\n\n/**\n * parent component style should be after child's\n * so that parent component's style could override it\n */\nfunction getStyle (vnode, checkChild) {\n var res = {};\n var styleData;\n\n if (checkChild) {\n var childNode = vnode;\n while (childNode.componentInstance) {\n childNode = childNode.componentInstance._vnode;\n if (\n childNode && childNode.data &&\n (styleData = normalizeStyleData(childNode.data))\n ) {\n extend(res, styleData);\n }\n }\n }\n\n if ((styleData = normalizeStyleData(vnode.data))) {\n extend(res, styleData);\n }\n\n var parentNode = vnode;\n while ((parentNode = parentNode.parent)) {\n if (parentNode.data && (styleData = normalizeStyleData(parentNode.data))) {\n extend(res, styleData);\n }\n }\n return res\n}\n\n/* */\n\nvar cssVarRE = /^--/;\nvar importantRE = /\\s*!important$/;\nvar setProp = function (el, name, val) {\n /* istanbul ignore if */\n if (cssVarRE.test(name)) {\n el.style.setProperty(name, val);\n } else if (importantRE.test(val)) {\n el.style.setProperty(hyphenate(name), val.replace(importantRE, ''), 'important');\n } else {\n var normalizedName = normalize(name);\n if (Array.isArray(val)) {\n // Support values array created by autoprefixer, e.g.\n // {display: [\"-webkit-box\", \"-ms-flexbox\", \"flex\"]}\n // Set them one by one, and the browser will only set those it can recognize\n for (var i = 0, len = val.length; i < len; i++) {\n el.style[normalizedName] = val[i];\n }\n } else {\n el.style[normalizedName] = val;\n }\n }\n};\n\nvar vendorNames = ['Webkit', 'Moz', 'ms'];\n\nvar emptyStyle;\nvar normalize = cached(function (prop) {\n emptyStyle = emptyStyle || document.createElement('div').style;\n prop = camelize(prop);\n if (prop !== 'filter' && (prop in emptyStyle)) {\n return prop\n }\n var capName = prop.charAt(0).toUpperCase() + prop.slice(1);\n for (var i = 0; i < vendorNames.length; i++) {\n var name = vendorNames[i] + capName;\n if (name in emptyStyle) {\n return name\n }\n }\n});\n\nfunction updateStyle (oldVnode, vnode) {\n var data = vnode.data;\n var oldData = oldVnode.data;\n\n if (isUndef(data.staticStyle) && isUndef(data.style) &&\n isUndef(oldData.staticStyle) && isUndef(oldData.style)\n ) {\n return\n }\n\n var cur, name;\n var el = vnode.elm;\n var oldStaticStyle = oldData.staticStyle;\n var oldStyleBinding = oldData.normalizedStyle || oldData.style || {};\n\n // if static style exists, stylebinding already merged into it when doing normalizeStyleData\n var oldStyle = oldStaticStyle || oldStyleBinding;\n\n var style = normalizeStyleBinding(vnode.data.style) || {};\n\n // store normalized style under a different key for next diff\n // make sure to clone it if it's reactive, since the user likely wants\n // to mutate it.\n vnode.data.normalizedStyle = isDef(style.__ob__)\n ? extend({}, style)\n : style;\n\n var newStyle = getStyle(vnode, true);\n\n for (name in oldStyle) {\n if (isUndef(newStyle[name])) {\n setProp(el, name, '');\n }\n }\n for (name in newStyle) {\n cur = newStyle[name];\n if (cur !== oldStyle[name]) {\n // ie9 setting to null has no effect, must use empty string\n setProp(el, name, cur == null ? '' : cur);\n }\n }\n}\n\nvar style = {\n create: updateStyle,\n update: updateStyle\n};\n\n/* */\n\nvar whitespaceRE = /\\s+/;\n\n/**\n * Add class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction addClass (el, cls) {\n /* istanbul ignore if */\n if (!cls || !(cls = cls.trim())) {\n return\n }\n\n /* istanbul ignore else */\n if (el.classList) {\n if (cls.indexOf(' ') > -1) {\n cls.split(whitespaceRE).forEach(function (c) { return el.classList.add(c); });\n } else {\n el.classList.add(cls);\n }\n } else {\n var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n if (cur.indexOf(' ' + cls + ' ') < 0) {\n el.setAttribute('class', (cur + cls).trim());\n }\n }\n}\n\n/**\n * Remove class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction removeClass (el, cls) {\n /* istanbul ignore if */\n if (!cls || !(cls = cls.trim())) {\n return\n }\n\n /* istanbul ignore else */\n if (el.classList) {\n if (cls.indexOf(' ') > -1) {\n cls.split(whitespaceRE).forEach(function (c) { return el.classList.remove(c); });\n } else {\n el.classList.remove(cls);\n }\n if (!el.classList.length) {\n el.removeAttribute('class');\n }\n } else {\n var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n var tar = ' ' + cls + ' ';\n while (cur.indexOf(tar) >= 0) {\n cur = cur.replace(tar, ' ');\n }\n cur = cur.trim();\n if (cur) {\n el.setAttribute('class', cur);\n } else {\n el.removeAttribute('class');\n }\n }\n}\n\n/* */\n\nfunction resolveTransition (def$$1) {\n if (!def$$1) {\n return\n }\n /* istanbul ignore else */\n if (typeof def$$1 === 'object') {\n var res = {};\n if (def$$1.css !== false) {\n extend(res, autoCssTransition(def$$1.name || 'v'));\n }\n extend(res, def$$1);\n return res\n } else if (typeof def$$1 === 'string') {\n return autoCssTransition(def$$1)\n }\n}\n\nvar autoCssTransition = cached(function (name) {\n return {\n enterClass: (name + \"-enter\"),\n enterToClass: (name + \"-enter-to\"),\n enterActiveClass: (name + \"-enter-active\"),\n leaveClass: (name + \"-leave\"),\n leaveToClass: (name + \"-leave-to\"),\n leaveActiveClass: (name + \"-leave-active\")\n }\n});\n\nvar hasTransition = inBrowser && !isIE9;\nvar TRANSITION = 'transition';\nvar ANIMATION = 'animation';\n\n// Transition property/event sniffing\nvar transitionProp = 'transition';\nvar transitionEndEvent = 'transitionend';\nvar animationProp = 'animation';\nvar animationEndEvent = 'animationend';\nif (hasTransition) {\n /* istanbul ignore if */\n if (window.ontransitionend === undefined &&\n window.onwebkittransitionend !== undefined\n ) {\n transitionProp = 'WebkitTransition';\n transitionEndEvent = 'webkitTransitionEnd';\n }\n if (window.onanimationend === undefined &&\n window.onwebkitanimationend !== undefined\n ) {\n animationProp = 'WebkitAnimation';\n animationEndEvent = 'webkitAnimationEnd';\n }\n}\n\n// binding to window is necessary to make hot reload work in IE in strict mode\nvar raf = inBrowser\n ? window.requestAnimationFrame\n ? window.requestAnimationFrame.bind(window)\n : setTimeout\n : /* istanbul ignore next */ function (fn) { return fn(); };\n\nfunction nextFrame (fn) {\n raf(function () {\n raf(fn);\n });\n}\n\nfunction addTransitionClass (el, cls) {\n var transitionClasses = el._transitionClasses || (el._transitionClasses = []);\n if (transitionClasses.indexOf(cls) < 0) {\n transitionClasses.push(cls);\n addClass(el, cls);\n }\n}\n\nfunction removeTransitionClass (el, cls) {\n if (el._transitionClasses) {\n remove(el._transitionClasses, cls);\n }\n removeClass(el, cls);\n}\n\nfunction whenTransitionEnds (\n el,\n expectedType,\n cb\n) {\n var ref = getTransitionInfo(el, expectedType);\n var type = ref.type;\n var timeout = ref.timeout;\n var propCount = ref.propCount;\n if (!type) { return cb() }\n var event = type === TRANSITION ? transitionEndEvent : animationEndEvent;\n var ended = 0;\n var end = function () {\n el.removeEventListener(event, onEnd);\n cb();\n };\n var onEnd = function (e) {\n if (e.target === el) {\n if (++ended >= propCount) {\n end();\n }\n }\n };\n setTimeout(function () {\n if (ended < propCount) {\n end();\n }\n }, timeout + 1);\n el.addEventListener(event, onEnd);\n}\n\nvar transformRE = /\\b(transform|all)(,|$)/;\n\nfunction getTransitionInfo (el, expectedType) {\n var styles = window.getComputedStyle(el);\n // JSDOM may return undefined for transition properties\n var transitionDelays = (styles[transitionProp + 'Delay'] || '').split(', ');\n var transitionDurations = (styles[transitionProp + 'Duration'] || '').split(', ');\n var transitionTimeout = getTimeout(transitionDelays, transitionDurations);\n var animationDelays = (styles[animationProp + 'Delay'] || '').split(', ');\n var animationDurations = (styles[animationProp + 'Duration'] || '').split(', ');\n var animationTimeout = getTimeout(animationDelays, animationDurations);\n\n var type;\n var timeout = 0;\n var propCount = 0;\n /* istanbul ignore if */\n if (expectedType === TRANSITION) {\n if (transitionTimeout > 0) {\n type = TRANSITION;\n timeout = transitionTimeout;\n propCount = transitionDurations.length;\n }\n } else if (expectedType === ANIMATION) {\n if (animationTimeout > 0) {\n type = ANIMATION;\n timeout = animationTimeout;\n propCount = animationDurations.length;\n }\n } else {\n timeout = Math.max(transitionTimeout, animationTimeout);\n type = timeout > 0\n ? transitionTimeout > animationTimeout\n ? TRANSITION\n : ANIMATION\n : null;\n propCount = type\n ? type === TRANSITION\n ? transitionDurations.length\n : animationDurations.length\n : 0;\n }\n var hasTransform =\n type === TRANSITION &&\n transformRE.test(styles[transitionProp + 'Property']);\n return {\n type: type,\n timeout: timeout,\n propCount: propCount,\n hasTransform: hasTransform\n }\n}\n\nfunction getTimeout (delays, durations) {\n /* istanbul ignore next */\n while (delays.length < durations.length) {\n delays = delays.concat(delays);\n }\n\n return Math.max.apply(null, durations.map(function (d, i) {\n return toMs(d) + toMs(delays[i])\n }))\n}\n\n// Old versions of Chromium (below 61.0.3163.100) formats floating pointer numbers\n// in a locale-dependent way, using a comma instead of a dot.\n// If comma is not replaced with a dot, the input will be rounded down (i.e. acting\n// as a floor function) causing unexpected behaviors\nfunction toMs (s) {\n return Number(s.slice(0, -1).replace(',', '.')) * 1000\n}\n\n/* */\n\nfunction enter (vnode, toggleDisplay) {\n var el = vnode.elm;\n\n // call leave callback now\n if (isDef(el._leaveCb)) {\n el._leaveCb.cancelled = true;\n el._leaveCb();\n }\n\n var data = resolveTransition(vnode.data.transition);\n if (isUndef(data)) {\n return\n }\n\n /* istanbul ignore if */\n if (isDef(el._enterCb) || el.nodeType !== 1) {\n return\n }\n\n var css = data.css;\n var type = data.type;\n var enterClass = data.enterClass;\n var enterToClass = data.enterToClass;\n var enterActiveClass = data.enterActiveClass;\n var appearClass = data.appearClass;\n var appearToClass = data.appearToClass;\n var appearActiveClass = data.appearActiveClass;\n var beforeEnter = data.beforeEnter;\n var enter = data.enter;\n var afterEnter = data.afterEnter;\n var enterCancelled = data.enterCancelled;\n var beforeAppear = data.beforeAppear;\n var appear = data.appear;\n var afterAppear = data.afterAppear;\n var appearCancelled = data.appearCancelled;\n var duration = data.duration;\n\n // activeInstance will always be the <transition> component managing this\n // transition. One edge case to check is when the <transition> is placed\n // as the root node of a child component. In that case we need to check\n // <transition>'s parent for appear check.\n var context = activeInstance;\n var transitionNode = activeInstance.$vnode;\n while (transitionNode && transitionNode.parent) {\n context = transitionNode.context;\n transitionNode = transitionNode.parent;\n }\n\n var isAppear = !context._isMounted || !vnode.isRootInsert;\n\n if (isAppear && !appear && appear !== '') {\n return\n }\n\n var startClass = isAppear && appearClass\n ? appearClass\n : enterClass;\n var activeClass = isAppear && appearActiveClass\n ? appearActiveClass\n : enterActiveClass;\n var toClass = isAppear && appearToClass\n ? appearToClass\n : enterToClass;\n\n var beforeEnterHook = isAppear\n ? (beforeAppear || beforeEnter)\n : beforeEnter;\n var enterHook = isAppear\n ? (typeof appear === 'function' ? appear : enter)\n : enter;\n var afterEnterHook = isAppear\n ? (afterAppear || afterEnter)\n : afterEnter;\n var enterCancelledHook = isAppear\n ? (appearCancelled || enterCancelled)\n : enterCancelled;\n\n var explicitEnterDuration = toNumber(\n isObject(duration)\n ? duration.enter\n : duration\n );\n\n if (process.env.NODE_ENV !== 'production' && explicitEnterDuration != null) {\n checkDuration(explicitEnterDuration, 'enter', vnode);\n }\n\n var expectsCSS = css !== false && !isIE9;\n var userWantsControl = getHookArgumentsLength(enterHook);\n\n var cb = el._enterCb = once(function () {\n if (expectsCSS) {\n removeTransitionClass(el, toClass);\n removeTransitionClass(el, activeClass);\n }\n if (cb.cancelled) {\n if (expectsCSS) {\n removeTransitionClass(el, startClass);\n }\n enterCancelledHook && enterCancelledHook(el);\n } else {\n afterEnterHook && afterEnterHook(el);\n }\n el._enterCb = null;\n });\n\n if (!vnode.data.show) {\n // remove pending leave element on enter by injecting an insert hook\n mergeVNodeHook(vnode, 'insert', function () {\n var parent = el.parentNode;\n var pendingNode = parent && parent._pending && parent._pending[vnode.key];\n if (pendingNode &&\n pendingNode.tag === vnode.tag &&\n pendingNode.elm._leaveCb\n ) {\n pendingNode.elm._leaveCb();\n }\n enterHook && enterHook(el, cb);\n });\n }\n\n // start enter transition\n beforeEnterHook && beforeEnterHook(el);\n if (expectsCSS) {\n addTransitionClass(el, startClass);\n addTransitionClass(el, activeClass);\n nextFrame(function () {\n removeTransitionClass(el, startClass);\n if (!cb.cancelled) {\n addTransitionClass(el, toClass);\n if (!userWantsControl) {\n if (isValidDuration(explicitEnterDuration)) {\n setTimeout(cb, explicitEnterDuration);\n } else {\n whenTransitionEnds(el, type, cb);\n }\n }\n }\n });\n }\n\n if (vnode.data.show) {\n toggleDisplay && toggleDisplay();\n enterHook && enterHook(el, cb);\n }\n\n if (!expectsCSS && !userWantsControl) {\n cb();\n }\n}\n\nfunction leave (vnode, rm) {\n var el = vnode.elm;\n\n // call enter callback now\n if (isDef(el._enterCb)) {\n el._enterCb.cancelled = true;\n el._enterCb();\n }\n\n var data = resolveTransition(vnode.data.transition);\n if (isUndef(data) || el.nodeType !== 1) {\n return rm()\n }\n\n /* istanbul ignore if */\n if (isDef(el._leaveCb)) {\n return\n }\n\n var css = data.css;\n var type = data.type;\n var leaveClass = data.leaveClass;\n var leaveToClass = data.leaveToClass;\n var leaveActiveClass = data.leaveActiveClass;\n var beforeLeave = data.beforeLeave;\n var leave = data.leave;\n var afterLeave = data.afterLeave;\n var leaveCancelled = data.leaveCancelled;\n var delayLeave = data.delayLeave;\n var duration = data.duration;\n\n var expectsCSS = css !== false && !isIE9;\n var userWantsControl = getHookArgumentsLength(leave);\n\n var explicitLeaveDuration = toNumber(\n isObject(duration)\n ? duration.leave\n : duration\n );\n\n if (process.env.NODE_ENV !== 'production' && isDef(explicitLeaveDuration)) {\n checkDuration(explicitLeaveDuration, 'leave', vnode);\n }\n\n var cb = el._leaveCb = once(function () {\n if (el.parentNode && el.parentNode._pending) {\n el.parentNode._pending[vnode.key] = null;\n }\n if (expectsCSS) {\n removeTransitionClass(el, leaveToClass);\n removeTransitionClass(el, leaveActiveClass);\n }\n if (cb.cancelled) {\n if (expectsCSS) {\n removeTransitionClass(el, leaveClass);\n }\n leaveCancelled && leaveCancelled(el);\n } else {\n rm();\n afterLeave && afterLeave(el);\n }\n el._leaveCb = null;\n });\n\n if (delayLeave) {\n delayLeave(performLeave);\n } else {\n performLeave();\n }\n\n function performLeave () {\n // the delayed leave may have already been cancelled\n if (cb.cancelled) {\n return\n }\n // record leaving element\n if (!vnode.data.show && el.parentNode) {\n (el.parentNode._pending || (el.parentNode._pending = {}))[(vnode.key)] = vnode;\n }\n beforeLeave && beforeLeave(el);\n if (expectsCSS) {\n addTransitionClass(el, leaveClass);\n addTransitionClass(el, leaveActiveClass);\n nextFrame(function () {\n removeTransitionClass(el, leaveClass);\n if (!cb.cancelled) {\n addTransitionClass(el, leaveToClass);\n if (!userWantsControl) {\n if (isValidDuration(explicitLeaveDuration)) {\n setTimeout(cb, explicitLeaveDuration);\n } else {\n whenTransitionEnds(el, type, cb);\n }\n }\n }\n });\n }\n leave && leave(el, cb);\n if (!expectsCSS && !userWantsControl) {\n cb();\n }\n }\n}\n\n// only used in dev mode\nfunction checkDuration (val, name, vnode) {\n if (typeof val !== 'number') {\n warn(\n \"<transition> explicit \" + name + \" duration is not a valid number - \" +\n \"got \" + (JSON.stringify(val)) + \".\",\n vnode.context\n );\n } else if (isNaN(val)) {\n warn(\n \"<transition> explicit \" + name + \" duration is NaN - \" +\n 'the duration expression might be incorrect.',\n vnode.context\n );\n }\n}\n\nfunction isValidDuration (val) {\n return typeof val === 'number' && !isNaN(val)\n}\n\n/**\n * Normalize a transition hook's argument length. The hook may be:\n * - a merged hook (invoker) with the original in .fns\n * - a wrapped component method (check ._length)\n * - a plain function (.length)\n */\nfunction getHookArgumentsLength (fn) {\n if (isUndef(fn)) {\n return false\n }\n var invokerFns = fn.fns;\n if (isDef(invokerFns)) {\n // invoker\n return getHookArgumentsLength(\n Array.isArray(invokerFns)\n ? invokerFns[0]\n : invokerFns\n )\n } else {\n return (fn._length || fn.length) > 1\n }\n}\n\nfunction _enter (_, vnode) {\n if (vnode.data.show !== true) {\n enter(vnode);\n }\n}\n\nvar transition = inBrowser ? {\n create: _enter,\n activate: _enter,\n remove: function remove$$1 (vnode, rm) {\n /* istanbul ignore else */\n if (vnode.data.show !== true) {\n leave(vnode, rm);\n } else {\n rm();\n }\n }\n} : {};\n\nvar platformModules = [\n attrs,\n klass,\n events,\n domProps,\n style,\n transition\n];\n\n/* */\n\n// the directive module should be applied last, after all\n// built-in modules have been applied.\nvar modules = platformModules.concat(baseModules);\n\nvar patch = createPatchFunction({ nodeOps: nodeOps, modules: modules });\n\n/**\n * Not type checking this file because flow doesn't like attaching\n * properties to Elements.\n */\n\n/* istanbul ignore if */\nif (isIE9) {\n // http://www.matts411.com/post/internet-explorer-9-oninput/\n document.addEventListener('selectionchange', function () {\n var el = document.activeElement;\n if (el && el.vmodel) {\n trigger(el, 'input');\n }\n });\n}\n\nvar directive = {\n inserted: function inserted (el, binding, vnode, oldVnode) {\n if (vnode.tag === 'select') {\n // #6903\n if (oldVnode.elm && !oldVnode.elm._vOptions) {\n mergeVNodeHook(vnode, 'postpatch', function () {\n directive.componentUpdated(el, binding, vnode);\n });\n } else {\n setSelected(el, binding, vnode.context);\n }\n el._vOptions = [].map.call(el.options, getValue);\n } else if (vnode.tag === 'textarea' || isTextInputType(el.type)) {\n el._vModifiers = binding.modifiers;\n if (!binding.modifiers.lazy) {\n el.addEventListener('compositionstart', onCompositionStart);\n el.addEventListener('compositionend', onCompositionEnd);\n // Safari < 10.2 & UIWebView doesn't fire compositionend when\n // switching focus before confirming composition choice\n // this also fixes the issue where some browsers e.g. iOS Chrome\n // fires \"change\" instead of \"input\" on autocomplete.\n el.addEventListener('change', onCompositionEnd);\n /* istanbul ignore if */\n if (isIE9) {\n el.vmodel = true;\n }\n }\n }\n },\n\n componentUpdated: function componentUpdated (el, binding, vnode) {\n if (vnode.tag === 'select') {\n setSelected(el, binding, vnode.context);\n // in case the options rendered by v-for have changed,\n // it's possible that the value is out-of-sync with the rendered options.\n // detect such cases and filter out values that no longer has a matching\n // option in the DOM.\n var prevOptions = el._vOptions;\n var curOptions = el._vOptions = [].map.call(el.options, getValue);\n if (curOptions.some(function (o, i) { return !looseEqual(o, prevOptions[i]); })) {\n // trigger change event if\n // no matching option found for at least one value\n var needReset = el.multiple\n ? binding.value.some(function (v) { return hasNoMatchingOption(v, curOptions); })\n : binding.value !== binding.oldValue && hasNoMatchingOption(binding.value, curOptions);\n if (needReset) {\n trigger(el, 'change');\n }\n }\n }\n }\n};\n\nfunction setSelected (el, binding, vm) {\n actuallySetSelected(el, binding, vm);\n /* istanbul ignore if */\n if (isIE || isEdge) {\n setTimeout(function () {\n actuallySetSelected(el, binding, vm);\n }, 0);\n }\n}\n\nfunction actuallySetSelected (el, binding, vm) {\n var value = binding.value;\n var isMultiple = el.multiple;\n if (isMultiple && !Array.isArray(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"<select multiple v-model=\\\"\" + (binding.expression) + \"\\\"> \" +\n \"expects an Array value for its binding, but got \" + (Object.prototype.toString.call(value).slice(8, -1)),\n vm\n );\n return\n }\n var selected, option;\n for (var i = 0, l = el.options.length; i < l; i++) {\n option = el.options[i];\n if (isMultiple) {\n selected = looseIndexOf(value, getValue(option)) > -1;\n if (option.selected !== selected) {\n option.selected = selected;\n }\n } else {\n if (looseEqual(getValue(option), value)) {\n if (el.selectedIndex !== i) {\n el.selectedIndex = i;\n }\n return\n }\n }\n }\n if (!isMultiple) {\n el.selectedIndex = -1;\n }\n}\n\nfunction hasNoMatchingOption (value, options) {\n return options.every(function (o) { return !looseEqual(o, value); })\n}\n\nfunction getValue (option) {\n return '_value' in option\n ? option._value\n : option.value\n}\n\nfunction onCompositionStart (e) {\n e.target.composing = true;\n}\n\nfunction onCompositionEnd (e) {\n // prevent triggering an input event for no reason\n if (!e.target.composing) { return }\n e.target.composing = false;\n trigger(e.target, 'input');\n}\n\nfunction trigger (el, type) {\n var e = document.createEvent('HTMLEvents');\n e.initEvent(type, true, true);\n el.dispatchEvent(e);\n}\n\n/* */\n\n// recursively search for possible transition defined inside the component root\nfunction locateNode (vnode) {\n return vnode.componentInstance && (!vnode.data || !vnode.data.transition)\n ? locateNode(vnode.componentInstance._vnode)\n : vnode\n}\n\nvar show = {\n bind: function bind (el, ref, vnode) {\n var value = ref.value;\n\n vnode = locateNode(vnode);\n var transition$$1 = vnode.data && vnode.data.transition;\n var originalDisplay = el.__vOriginalDisplay =\n el.style.display === 'none' ? '' : el.style.display;\n if (value && transition$$1) {\n vnode.data.show = true;\n enter(vnode, function () {\n el.style.display = originalDisplay;\n });\n } else {\n el.style.display = value ? originalDisplay : 'none';\n }\n },\n\n update: function update (el, ref, vnode) {\n var value = ref.value;\n var oldValue = ref.oldValue;\n\n /* istanbul ignore if */\n if (!value === !oldValue) { return }\n vnode = locateNode(vnode);\n var transition$$1 = vnode.data && vnode.data.transition;\n if (transition$$1) {\n vnode.data.show = true;\n if (value) {\n enter(vnode, function () {\n el.style.display = el.__vOriginalDisplay;\n });\n } else {\n leave(vnode, function () {\n el.style.display = 'none';\n });\n }\n } else {\n el.style.display = value ? el.__vOriginalDisplay : 'none';\n }\n },\n\n unbind: function unbind (\n el,\n binding,\n vnode,\n oldVnode,\n isDestroy\n ) {\n if (!isDestroy) {\n el.style.display = el.__vOriginalDisplay;\n }\n }\n};\n\nvar platformDirectives = {\n model: directive,\n show: show\n};\n\n/* */\n\nvar transitionProps = {\n name: String,\n appear: Boolean,\n css: Boolean,\n mode: String,\n type: String,\n enterClass: String,\n leaveClass: String,\n enterToClass: String,\n leaveToClass: String,\n enterActiveClass: String,\n leaveActiveClass: String,\n appearClass: String,\n appearActiveClass: String,\n appearToClass: String,\n duration: [Number, String, Object]\n};\n\n// in case the child is also an abstract component, e.g. <keep-alive>\n// we want to recursively retrieve the real component to be rendered\nfunction getRealChild (vnode) {\n var compOptions = vnode && vnode.componentOptions;\n if (compOptions && compOptions.Ctor.options.abstract) {\n return getRealChild(getFirstComponentChild(compOptions.children))\n } else {\n return vnode\n }\n}\n\nfunction extractTransitionData (comp) {\n var data = {};\n var options = comp.$options;\n // props\n for (var key in options.propsData) {\n data[key] = comp[key];\n }\n // events.\n // extract listeners and pass them directly to the transition methods\n var listeners = options._parentListeners;\n for (var key$1 in listeners) {\n data[camelize(key$1)] = listeners[key$1];\n }\n return data\n}\n\nfunction placeholder (h, rawChild) {\n if (/\\d-keep-alive$/.test(rawChild.tag)) {\n return h('keep-alive', {\n props: rawChild.componentOptions.propsData\n })\n }\n}\n\nfunction hasParentTransition (vnode) {\n while ((vnode = vnode.parent)) {\n if (vnode.data.transition) {\n return true\n }\n }\n}\n\nfunction isSameChild (child, oldChild) {\n return oldChild.key === child.key && oldChild.tag === child.tag\n}\n\nvar isNotTextNode = function (c) { return c.tag || isAsyncPlaceholder(c); };\n\nvar isVShowDirective = function (d) { return d.name === 'show'; };\n\nvar Transition = {\n name: 'transition',\n props: transitionProps,\n abstract: true,\n\n render: function render (h) {\n var this$1 = this;\n\n var children = this.$slots.default;\n if (!children) {\n return\n }\n\n // filter out text nodes (possible whitespaces)\n children = children.filter(isNotTextNode);\n /* istanbul ignore if */\n if (!children.length) {\n return\n }\n\n // warn multiple elements\n if (process.env.NODE_ENV !== 'production' && children.length > 1) {\n warn(\n '<transition> can only be used on a single element. Use ' +\n '<transition-group> for lists.',\n this.$parent\n );\n }\n\n var mode = this.mode;\n\n // warn invalid mode\n if (process.env.NODE_ENV !== 'production' &&\n mode && mode !== 'in-out' && mode !== 'out-in'\n ) {\n warn(\n 'invalid <transition> mode: ' + mode,\n this.$parent\n );\n }\n\n var rawChild = children[0];\n\n // if this is a component root node and the component's\n // parent container node also has transition, skip.\n if (hasParentTransition(this.$vnode)) {\n return rawChild\n }\n\n // apply transition data to child\n // use getRealChild() to ignore abstract components e.g. keep-alive\n var child = getRealChild(rawChild);\n /* istanbul ignore if */\n if (!child) {\n return rawChild\n }\n\n if (this._leaving) {\n return placeholder(h, rawChild)\n }\n\n // ensure a key that is unique to the vnode type and to this transition\n // component instance. This key will be used to remove pending leaving nodes\n // during entering.\n var id = \"__transition-\" + (this._uid) + \"-\";\n child.key = child.key == null\n ? child.isComment\n ? id + 'comment'\n : id + child.tag\n : isPrimitive(child.key)\n ? (String(child.key).indexOf(id) === 0 ? child.key : id + child.key)\n : child.key;\n\n var data = (child.data || (child.data = {})).transition = extractTransitionData(this);\n var oldRawChild = this._vnode;\n var oldChild = getRealChild(oldRawChild);\n\n // mark v-show\n // so that the transition module can hand over the control to the directive\n if (child.data.directives && child.data.directives.some(isVShowDirective)) {\n child.data.show = true;\n }\n\n if (\n oldChild &&\n oldChild.data &&\n !isSameChild(child, oldChild) &&\n !isAsyncPlaceholder(oldChild) &&\n // #6687 component root is a comment node\n !(oldChild.componentInstance && oldChild.componentInstance._vnode.isComment)\n ) {\n // replace old child transition data with fresh one\n // important for dynamic transitions!\n var oldData = oldChild.data.transition = extend({}, data);\n // handle transition mode\n if (mode === 'out-in') {\n // return placeholder node and queue update when leave finishes\n this._leaving = true;\n mergeVNodeHook(oldData, 'afterLeave', function () {\n this$1._leaving = false;\n this$1.$forceUpdate();\n });\n return placeholder(h, rawChild)\n } else if (mode === 'in-out') {\n if (isAsyncPlaceholder(child)) {\n return oldRawChild\n }\n var delayedLeave;\n var performLeave = function () { delayedLeave(); };\n mergeVNodeHook(data, 'afterEnter', performLeave);\n mergeVNodeHook(data, 'enterCancelled', performLeave);\n mergeVNodeHook(oldData, 'delayLeave', function (leave) { delayedLeave = leave; });\n }\n }\n\n return rawChild\n }\n};\n\n/* */\n\nvar props = extend({\n tag: String,\n moveClass: String\n}, transitionProps);\n\ndelete props.mode;\n\nvar TransitionGroup = {\n props: props,\n\n beforeMount: function beforeMount () {\n var this$1 = this;\n\n var update = this._update;\n this._update = function (vnode, hydrating) {\n var restoreActiveInstance = setActiveInstance(this$1);\n // force removing pass\n this$1.__patch__(\n this$1._vnode,\n this$1.kept,\n false, // hydrating\n true // removeOnly (!important, avoids unnecessary moves)\n );\n this$1._vnode = this$1.kept;\n restoreActiveInstance();\n update.call(this$1, vnode, hydrating);\n };\n },\n\n render: function render (h) {\n var tag = this.tag || this.$vnode.data.tag || 'span';\n var map = Object.create(null);\n var prevChildren = this.prevChildren = this.children;\n var rawChildren = this.$slots.default || [];\n var children = this.children = [];\n var transitionData = extractTransitionData(this);\n\n for (var i = 0; i < rawChildren.length; i++) {\n var c = rawChildren[i];\n if (c.tag) {\n if (c.key != null && String(c.key).indexOf('__vlist') !== 0) {\n children.push(c);\n map[c.key] = c\n ;(c.data || (c.data = {})).transition = transitionData;\n } else if (process.env.NODE_ENV !== 'production') {\n var opts = c.componentOptions;\n var name = opts ? (opts.Ctor.options.name || opts.tag || '') : c.tag;\n warn((\"<transition-group> children must be keyed: <\" + name + \">\"));\n }\n }\n }\n\n if (prevChildren) {\n var kept = [];\n var removed = [];\n for (var i$1 = 0; i$1 < prevChildren.length; i$1++) {\n var c$1 = prevChildren[i$1];\n c$1.data.transition = transitionData;\n c$1.data.pos = c$1.elm.getBoundingClientRect();\n if (map[c$1.key]) {\n kept.push(c$1);\n } else {\n removed.push(c$1);\n }\n }\n this.kept = h(tag, null, kept);\n this.removed = removed;\n }\n\n return h(tag, null, children)\n },\n\n updated: function updated () {\n var children = this.prevChildren;\n var moveClass = this.moveClass || ((this.name || 'v') + '-move');\n if (!children.length || !this.hasMove(children[0].elm, moveClass)) {\n return\n }\n\n // we divide the work into three loops to avoid mixing DOM reads and writes\n // in each iteration - which helps prevent layout thrashing.\n children.forEach(callPendingCbs);\n children.forEach(recordPosition);\n children.forEach(applyTranslation);\n\n // force reflow to put everything in position\n // assign to this to avoid being removed in tree-shaking\n // $flow-disable-line\n this._reflow = document.body.offsetHeight;\n\n children.forEach(function (c) {\n if (c.data.moved) {\n var el = c.elm;\n var s = el.style;\n addTransitionClass(el, moveClass);\n s.transform = s.WebkitTransform = s.transitionDuration = '';\n el.addEventListener(transitionEndEvent, el._moveCb = function cb (e) {\n if (e && e.target !== el) {\n return\n }\n if (!e || /transform$/.test(e.propertyName)) {\n el.removeEventListener(transitionEndEvent, cb);\n el._moveCb = null;\n removeTransitionClass(el, moveClass);\n }\n });\n }\n });\n },\n\n methods: {\n hasMove: function hasMove (el, moveClass) {\n /* istanbul ignore if */\n if (!hasTransition) {\n return false\n }\n /* istanbul ignore if */\n if (this._hasMove) {\n return this._hasMove\n }\n // Detect whether an element with the move class applied has\n // CSS transitions. Since the element may be inside an entering\n // transition at this very moment, we make a clone of it and remove\n // all other transition classes applied to ensure only the move class\n // is applied.\n var clone = el.cloneNode();\n if (el._transitionClasses) {\n el._transitionClasses.forEach(function (cls) { removeClass(clone, cls); });\n }\n addClass(clone, moveClass);\n clone.style.display = 'none';\n this.$el.appendChild(clone);\n var info = getTransitionInfo(clone);\n this.$el.removeChild(clone);\n return (this._hasMove = info.hasTransform)\n }\n }\n};\n\nfunction callPendingCbs (c) {\n /* istanbul ignore if */\n if (c.elm._moveCb) {\n c.elm._moveCb();\n }\n /* istanbul ignore if */\n if (c.elm._enterCb) {\n c.elm._enterCb();\n }\n}\n\nfunction recordPosition (c) {\n c.data.newPos = c.elm.getBoundingClientRect();\n}\n\nfunction applyTranslation (c) {\n var oldPos = c.data.pos;\n var newPos = c.data.newPos;\n var dx = oldPos.left - newPos.left;\n var dy = oldPos.top - newPos.top;\n if (dx || dy) {\n c.data.moved = true;\n var s = c.elm.style;\n s.transform = s.WebkitTransform = \"translate(\" + dx + \"px,\" + dy + \"px)\";\n s.transitionDuration = '0s';\n }\n}\n\nvar platformComponents = {\n Transition: Transition,\n TransitionGroup: TransitionGroup\n};\n\n/* */\n\n// install platform specific utils\nVue.config.mustUseProp = mustUseProp;\nVue.config.isReservedTag = isReservedTag;\nVue.config.isReservedAttr = isReservedAttr;\nVue.config.getTagNamespace = getTagNamespace;\nVue.config.isUnknownElement = isUnknownElement;\n\n// install platform runtime directives & components\nextend(Vue.options.directives, platformDirectives);\nextend(Vue.options.components, platformComponents);\n\n// install platform patch function\nVue.prototype.__patch__ = inBrowser ? patch : noop;\n\n// public mount method\nVue.prototype.$mount = function (\n el,\n hydrating\n) {\n el = el && inBrowser ? query(el) : undefined;\n return mountComponent(this, el, hydrating)\n};\n\n// devtools global hook\n/* istanbul ignore next */\nif (inBrowser) {\n setTimeout(function () {\n if (config.devtools) {\n if (devtools) {\n devtools.emit('init', Vue);\n } else if (\n process.env.NODE_ENV !== 'production' &&\n process.env.NODE_ENV !== 'test'\n ) {\n console[console.info ? 'info' : 'log'](\n 'Download the Vue Devtools extension for a better development experience:\\n' +\n 'https://github.com/vuejs/vue-devtools'\n );\n }\n }\n if (process.env.NODE_ENV !== 'production' &&\n process.env.NODE_ENV !== 'test' &&\n config.productionTip !== false &&\n typeof console !== 'undefined'\n ) {\n console[console.info ? 'info' : 'log'](\n \"You are running Vue in development mode.\\n\" +\n \"Make sure to turn on production mode when deploying for production.\\n\" +\n \"See more tips at https://vuejs.org/guide/deployment.html\"\n );\n }\n }, 0);\n}\n\n/* */\n\nexport default Vue;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar axios_1 = require(\"axios\");\nvar client = axios_1.default.create({\n headers: {\n requesttoken: OC.requestToken\n }\n});\nexports.default = client;\n","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%40/gi, '@').\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n // Only Node.JS has a process variable that is of [[Class]] process\n if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n } else if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n }\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar buildURL = require('./../helpers/buildURL');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password || '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // Listen for ready state\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n };\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n var cookies = require('./../helpers/cookies');\n\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(config.url)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (config.withCredentials) {\n request.withCredentials = true;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (requestData === undefined) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n utils.forEach(['url', 'method', 'params', 'data'], function valueFromConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n }\n });\n\n utils.forEach(['headers', 'auth', 'proxy'], function mergeDeepProperties(prop) {\n if (utils.isObject(config2[prop])) {\n config[prop] = utils.deepMerge(config1[prop], config2[prop]);\n } else if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (utils.isObject(config1[prop])) {\n config[prop] = utils.deepMerge(config1[prop]);\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n utils.forEach([\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'maxContentLength',\n 'validateStatus', 'maxRedirects', 'httpAgent', 'httpsAgent', 'cancelToken',\n 'socketPath'\n ], function defaultToConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n return config;\n};\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","/**\n * vuex v3.1.1\n * (c) 2019 Evan You\n * @license MIT\n */\nfunction applyMixin (Vue) {\n var version = Number(Vue.version.split('.')[0]);\n\n if (version >= 2) {\n Vue.mixin({ beforeCreate: vuexInit });\n } else {\n // override init and inject vuex init procedure\n // for 1.x backwards compatibility.\n var _init = Vue.prototype._init;\n Vue.prototype._init = function (options) {\n if ( options === void 0 ) options = {};\n\n options.init = options.init\n ? [vuexInit].concat(options.init)\n : vuexInit;\n _init.call(this, options);\n };\n }\n\n /**\n * Vuex init hook, injected into each instances init hooks list.\n */\n\n function vuexInit () {\n var options = this.$options;\n // store injection\n if (options.store) {\n this.$store = typeof options.store === 'function'\n ? options.store()\n : options.store;\n } else if (options.parent && options.parent.$store) {\n this.$store = options.parent.$store;\n }\n }\n}\n\nvar target = typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\nvar devtoolHook = target.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\nfunction devtoolPlugin (store) {\n if (!devtoolHook) { return }\n\n store._devtoolHook = devtoolHook;\n\n devtoolHook.emit('vuex:init', store);\n\n devtoolHook.on('vuex:travel-to-state', function (targetState) {\n store.replaceState(targetState);\n });\n\n store.subscribe(function (mutation, state) {\n devtoolHook.emit('vuex:mutation', mutation, state);\n });\n}\n\n/**\n * Get the first item that pass the test\n * by second argument function\n *\n * @param {Array} list\n * @param {Function} f\n * @return {*}\n */\n\n/**\n * forEach for object\n */\nfunction forEachValue (obj, fn) {\n Object.keys(obj).forEach(function (key) { return fn(obj[key], key); });\n}\n\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\nfunction isPromise (val) {\n return val && typeof val.then === 'function'\n}\n\nfunction assert (condition, msg) {\n if (!condition) { throw new Error((\"[vuex] \" + msg)) }\n}\n\nfunction partial (fn, arg) {\n return function () {\n return fn(arg)\n }\n}\n\n// Base data struct for store's module, package with some attribute and method\nvar Module = function Module (rawModule, runtime) {\n this.runtime = runtime;\n // Store some children item\n this._children = Object.create(null);\n // Store the origin module object which passed by programmer\n this._rawModule = rawModule;\n var rawState = rawModule.state;\n\n // Store the origin module's state\n this.state = (typeof rawState === 'function' ? rawState() : rawState) || {};\n};\n\nvar prototypeAccessors = { namespaced: { configurable: true } };\n\nprototypeAccessors.namespaced.get = function () {\n return !!this._rawModule.namespaced\n};\n\nModule.prototype.addChild = function addChild (key, module) {\n this._children[key] = module;\n};\n\nModule.prototype.removeChild = function removeChild (key) {\n delete this._children[key];\n};\n\nModule.prototype.getChild = function getChild (key) {\n return this._children[key]\n};\n\nModule.prototype.update = function update (rawModule) {\n this._rawModule.namespaced = rawModule.namespaced;\n if (rawModule.actions) {\n this._rawModule.actions = rawModule.actions;\n }\n if (rawModule.mutations) {\n this._rawModule.mutations = rawModule.mutations;\n }\n if (rawModule.getters) {\n this._rawModule.getters = rawModule.getters;\n }\n};\n\nModule.prototype.forEachChild = function forEachChild (fn) {\n forEachValue(this._children, fn);\n};\n\nModule.prototype.forEachGetter = function forEachGetter (fn) {\n if (this._rawModule.getters) {\n forEachValue(this._rawModule.getters, fn);\n }\n};\n\nModule.prototype.forEachAction = function forEachAction (fn) {\n if (this._rawModule.actions) {\n forEachValue(this._rawModule.actions, fn);\n }\n};\n\nModule.prototype.forEachMutation = function forEachMutation (fn) {\n if (this._rawModule.mutations) {\n forEachValue(this._rawModule.mutations, fn);\n }\n};\n\nObject.defineProperties( Module.prototype, prototypeAccessors );\n\nvar ModuleCollection = function ModuleCollection (rawRootModule) {\n // register root module (Vuex.Store options)\n this.register([], rawRootModule, false);\n};\n\nModuleCollection.prototype.get = function get (path) {\n return path.reduce(function (module, key) {\n return module.getChild(key)\n }, this.root)\n};\n\nModuleCollection.prototype.getNamespace = function getNamespace (path) {\n var module = this.root;\n return path.reduce(function (namespace, key) {\n module = module.getChild(key);\n return namespace + (module.namespaced ? key + '/' : '')\n }, '')\n};\n\nModuleCollection.prototype.update = function update$1 (rawRootModule) {\n update([], this.root, rawRootModule);\n};\n\nModuleCollection.prototype.register = function register (path, rawModule, runtime) {\n var this$1 = this;\n if ( runtime === void 0 ) runtime = true;\n\n if (process.env.NODE_ENV !== 'production') {\n assertRawModule(path, rawModule);\n }\n\n var newModule = new Module(rawModule, runtime);\n if (path.length === 0) {\n this.root = newModule;\n } else {\n var parent = this.get(path.slice(0, -1));\n parent.addChild(path[path.length - 1], newModule);\n }\n\n // register nested modules\n if (rawModule.modules) {\n forEachValue(rawModule.modules, function (rawChildModule, key) {\n this$1.register(path.concat(key), rawChildModule, runtime);\n });\n }\n};\n\nModuleCollection.prototype.unregister = function unregister (path) {\n var parent = this.get(path.slice(0, -1));\n var key = path[path.length - 1];\n if (!parent.getChild(key).runtime) { return }\n\n parent.removeChild(key);\n};\n\nfunction update (path, targetModule, newModule) {\n if (process.env.NODE_ENV !== 'production') {\n assertRawModule(path, newModule);\n }\n\n // update target module\n targetModule.update(newModule);\n\n // update nested modules\n if (newModule.modules) {\n for (var key in newModule.modules) {\n if (!targetModule.getChild(key)) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n \"[vuex] trying to add a new module '\" + key + \"' on hot reloading, \" +\n 'manual reload is needed'\n );\n }\n return\n }\n update(\n path.concat(key),\n targetModule.getChild(key),\n newModule.modules[key]\n );\n }\n }\n}\n\nvar functionAssert = {\n assert: function (value) { return typeof value === 'function'; },\n expected: 'function'\n};\n\nvar objectAssert = {\n assert: function (value) { return typeof value === 'function' ||\n (typeof value === 'object' && typeof value.handler === 'function'); },\n expected: 'function or object with \"handler\" function'\n};\n\nvar assertTypes = {\n getters: functionAssert,\n mutations: functionAssert,\n actions: objectAssert\n};\n\nfunction assertRawModule (path, rawModule) {\n Object.keys(assertTypes).forEach(function (key) {\n if (!rawModule[key]) { return }\n\n var assertOptions = assertTypes[key];\n\n forEachValue(rawModule[key], function (value, type) {\n assert(\n assertOptions.assert(value),\n makeAssertionMessage(path, key, type, value, assertOptions.expected)\n );\n });\n });\n}\n\nfunction makeAssertionMessage (path, key, type, value, expected) {\n var buf = key + \" should be \" + expected + \" but \\\"\" + key + \".\" + type + \"\\\"\";\n if (path.length > 0) {\n buf += \" in module \\\"\" + (path.join('.')) + \"\\\"\";\n }\n buf += \" is \" + (JSON.stringify(value)) + \".\";\n return buf\n}\n\nvar Vue; // bind on install\n\nvar Store = function Store (options) {\n var this$1 = this;\n if ( options === void 0 ) options = {};\n\n // Auto install if it is not done yet and `window` has `Vue`.\n // To allow users to avoid auto-installation in some cases,\n // this code should be placed here. See #731\n if (!Vue && typeof window !== 'undefined' && window.Vue) {\n install(window.Vue);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(Vue, \"must call Vue.use(Vuex) before creating a store instance.\");\n assert(typeof Promise !== 'undefined', \"vuex requires a Promise polyfill in this browser.\");\n assert(this instanceof Store, \"store must be called with the new operator.\");\n }\n\n var plugins = options.plugins; if ( plugins === void 0 ) plugins = [];\n var strict = options.strict; if ( strict === void 0 ) strict = false;\n\n // store internal state\n this._committing = false;\n this._actions = Object.create(null);\n this._actionSubscribers = [];\n this._mutations = Object.create(null);\n this._wrappedGetters = Object.create(null);\n this._modules = new ModuleCollection(options);\n this._modulesNamespaceMap = Object.create(null);\n this._subscribers = [];\n this._watcherVM = new Vue();\n\n // bind commit and dispatch to self\n var store = this;\n var ref = this;\n var dispatch = ref.dispatch;\n var commit = ref.commit;\n this.dispatch = function boundDispatch (type, payload) {\n return dispatch.call(store, type, payload)\n };\n this.commit = function boundCommit (type, payload, options) {\n return commit.call(store, type, payload, options)\n };\n\n // strict mode\n this.strict = strict;\n\n var state = this._modules.root.state;\n\n // init root module.\n // this also recursively registers all sub-modules\n // and collects all module getters inside this._wrappedGetters\n installModule(this, state, [], this._modules.root);\n\n // initialize the store vm, which is responsible for the reactivity\n // (also registers _wrappedGetters as computed properties)\n resetStoreVM(this, state);\n\n // apply plugins\n plugins.forEach(function (plugin) { return plugin(this$1); });\n\n var useDevtools = options.devtools !== undefined ? options.devtools : Vue.config.devtools;\n if (useDevtools) {\n devtoolPlugin(this);\n }\n};\n\nvar prototypeAccessors$1 = { state: { configurable: true } };\n\nprototypeAccessors$1.state.get = function () {\n return this._vm._data.$$state\n};\n\nprototypeAccessors$1.state.set = function (v) {\n if (process.env.NODE_ENV !== 'production') {\n assert(false, \"use store.replaceState() to explicit replace store state.\");\n }\n};\n\nStore.prototype.commit = function commit (_type, _payload, _options) {\n var this$1 = this;\n\n // check object-style commit\n var ref = unifyObjectStyle(_type, _payload, _options);\n var type = ref.type;\n var payload = ref.payload;\n var options = ref.options;\n\n var mutation = { type: type, payload: payload };\n var entry = this._mutations[type];\n if (!entry) {\n if (process.env.NODE_ENV !== 'production') {\n console.error((\"[vuex] unknown mutation type: \" + type));\n }\n return\n }\n this._withCommit(function () {\n entry.forEach(function commitIterator (handler) {\n handler(payload);\n });\n });\n this._subscribers.forEach(function (sub) { return sub(mutation, this$1.state); });\n\n if (\n process.env.NODE_ENV !== 'production' &&\n options && options.silent\n ) {\n console.warn(\n \"[vuex] mutation type: \" + type + \". Silent option has been removed. \" +\n 'Use the filter functionality in the vue-devtools'\n );\n }\n};\n\nStore.prototype.dispatch = function dispatch (_type, _payload) {\n var this$1 = this;\n\n // check object-style dispatch\n var ref = unifyObjectStyle(_type, _payload);\n var type = ref.type;\n var payload = ref.payload;\n\n var action = { type: type, payload: payload };\n var entry = this._actions[type];\n if (!entry) {\n if (process.env.NODE_ENV !== 'production') {\n console.error((\"[vuex] unknown action type: \" + type));\n }\n return\n }\n\n try {\n this._actionSubscribers\n .filter(function (sub) { return sub.before; })\n .forEach(function (sub) { return sub.before(action, this$1.state); });\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\"[vuex] error in before action subscribers: \");\n console.error(e);\n }\n }\n\n var result = entry.length > 1\n ? Promise.all(entry.map(function (handler) { return handler(payload); }))\n : entry[0](payload);\n\n return result.then(function (res) {\n try {\n this$1._actionSubscribers\n .filter(function (sub) { return sub.after; })\n .forEach(function (sub) { return sub.after(action, this$1.state); });\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\"[vuex] error in after action subscribers: \");\n console.error(e);\n }\n }\n return res\n })\n};\n\nStore.prototype.subscribe = function subscribe (fn) {\n return genericSubscribe(fn, this._subscribers)\n};\n\nStore.prototype.subscribeAction = function subscribeAction (fn) {\n var subs = typeof fn === 'function' ? { before: fn } : fn;\n return genericSubscribe(subs, this._actionSubscribers)\n};\n\nStore.prototype.watch = function watch (getter, cb, options) {\n var this$1 = this;\n\n if (process.env.NODE_ENV !== 'production') {\n assert(typeof getter === 'function', \"store.watch only accepts a function.\");\n }\n return this._watcherVM.$watch(function () { return getter(this$1.state, this$1.getters); }, cb, options)\n};\n\nStore.prototype.replaceState = function replaceState (state) {\n var this$1 = this;\n\n this._withCommit(function () {\n this$1._vm._data.$$state = state;\n });\n};\n\nStore.prototype.registerModule = function registerModule (path, rawModule, options) {\n if ( options === void 0 ) options = {};\n\n if (typeof path === 'string') { path = [path]; }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n assert(path.length > 0, 'cannot register the root module by using registerModule.');\n }\n\n this._modules.register(path, rawModule);\n installModule(this, this.state, path, this._modules.get(path), options.preserveState);\n // reset store to update getters...\n resetStoreVM(this, this.state);\n};\n\nStore.prototype.unregisterModule = function unregisterModule (path) {\n var this$1 = this;\n\n if (typeof path === 'string') { path = [path]; }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n }\n\n this._modules.unregister(path);\n this._withCommit(function () {\n var parentState = getNestedState(this$1.state, path.slice(0, -1));\n Vue.delete(parentState, path[path.length - 1]);\n });\n resetStore(this);\n};\n\nStore.prototype.hotUpdate = function hotUpdate (newOptions) {\n this._modules.update(newOptions);\n resetStore(this, true);\n};\n\nStore.prototype._withCommit = function _withCommit (fn) {\n var committing = this._committing;\n this._committing = true;\n fn();\n this._committing = committing;\n};\n\nObject.defineProperties( Store.prototype, prototypeAccessors$1 );\n\nfunction genericSubscribe (fn, subs) {\n if (subs.indexOf(fn) < 0) {\n subs.push(fn);\n }\n return function () {\n var i = subs.indexOf(fn);\n if (i > -1) {\n subs.splice(i, 1);\n }\n }\n}\n\nfunction resetStore (store, hot) {\n store._actions = Object.create(null);\n store._mutations = Object.create(null);\n store._wrappedGetters = Object.create(null);\n store._modulesNamespaceMap = Object.create(null);\n var state = store.state;\n // init all modules\n installModule(store, state, [], store._modules.root, true);\n // reset vm\n resetStoreVM(store, state, hot);\n}\n\nfunction resetStoreVM (store, state, hot) {\n var oldVm = store._vm;\n\n // bind store public getters\n store.getters = {};\n var wrappedGetters = store._wrappedGetters;\n var computed = {};\n forEachValue(wrappedGetters, function (fn, key) {\n // use computed to leverage its lazy-caching mechanism\n // direct inline function use will lead to closure preserving oldVm.\n // using partial to return function with only arguments preserved in closure enviroment.\n computed[key] = partial(fn, store);\n Object.defineProperty(store.getters, key, {\n get: function () { return store._vm[key]; },\n enumerable: true // for local getters\n });\n });\n\n // use a Vue instance to store the state tree\n // suppress warnings just in case the user has added\n // some funky global mixins\n var silent = Vue.config.silent;\n Vue.config.silent = true;\n store._vm = new Vue({\n data: {\n $$state: state\n },\n computed: computed\n });\n Vue.config.silent = silent;\n\n // enable strict mode for new vm\n if (store.strict) {\n enableStrictMode(store);\n }\n\n if (oldVm) {\n if (hot) {\n // dispatch changes in all subscribed watchers\n // to force getter re-evaluation for hot reloading.\n store._withCommit(function () {\n oldVm._data.$$state = null;\n });\n }\n Vue.nextTick(function () { return oldVm.$destroy(); });\n }\n}\n\nfunction installModule (store, rootState, path, module, hot) {\n var isRoot = !path.length;\n var namespace = store._modules.getNamespace(path);\n\n // register in namespace map\n if (module.namespaced) {\n store._modulesNamespaceMap[namespace] = module;\n }\n\n // set state\n if (!isRoot && !hot) {\n var parentState = getNestedState(rootState, path.slice(0, -1));\n var moduleName = path[path.length - 1];\n store._withCommit(function () {\n Vue.set(parentState, moduleName, module.state);\n });\n }\n\n var local = module.context = makeLocalContext(store, namespace, path);\n\n module.forEachMutation(function (mutation, key) {\n var namespacedType = namespace + key;\n registerMutation(store, namespacedType, mutation, local);\n });\n\n module.forEachAction(function (action, key) {\n var type = action.root ? key : namespace + key;\n var handler = action.handler || action;\n registerAction(store, type, handler, local);\n });\n\n module.forEachGetter(function (getter, key) {\n var namespacedType = namespace + key;\n registerGetter(store, namespacedType, getter, local);\n });\n\n module.forEachChild(function (child, key) {\n installModule(store, rootState, path.concat(key), child, hot);\n });\n}\n\n/**\n * make localized dispatch, commit, getters and state\n * if there is no namespace, just use root ones\n */\nfunction makeLocalContext (store, namespace, path) {\n var noNamespace = namespace === '';\n\n var local = {\n dispatch: noNamespace ? store.dispatch : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n if (process.env.NODE_ENV !== 'production' && !store._actions[type]) {\n console.error((\"[vuex] unknown local action type: \" + (args.type) + \", global type: \" + type));\n return\n }\n }\n\n return store.dispatch(type, payload)\n },\n\n commit: noNamespace ? store.commit : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n if (process.env.NODE_ENV !== 'production' && !store._mutations[type]) {\n console.error((\"[vuex] unknown local mutation type: \" + (args.type) + \", global type: \" + type));\n return\n }\n }\n\n store.commit(type, payload, options);\n }\n };\n\n // getters and state object must be gotten lazily\n // because they will be changed by vm update\n Object.defineProperties(local, {\n getters: {\n get: noNamespace\n ? function () { return store.getters; }\n : function () { return makeLocalGetters(store, namespace); }\n },\n state: {\n get: function () { return getNestedState(store.state, path); }\n }\n });\n\n return local\n}\n\nfunction makeLocalGetters (store, namespace) {\n var gettersProxy = {};\n\n var splitPos = namespace.length;\n Object.keys(store.getters).forEach(function (type) {\n // skip if the target getter is not match this namespace\n if (type.slice(0, splitPos) !== namespace) { return }\n\n // extract local getter type\n var localType = type.slice(splitPos);\n\n // Add a port to the getters proxy.\n // Define as getter property because\n // we do not want to evaluate the getters in this time.\n Object.defineProperty(gettersProxy, localType, {\n get: function () { return store.getters[type]; },\n enumerable: true\n });\n });\n\n return gettersProxy\n}\n\nfunction registerMutation (store, type, handler, local) {\n var entry = store._mutations[type] || (store._mutations[type] = []);\n entry.push(function wrappedMutationHandler (payload) {\n handler.call(store, local.state, payload);\n });\n}\n\nfunction registerAction (store, type, handler, local) {\n var entry = store._actions[type] || (store._actions[type] = []);\n entry.push(function wrappedActionHandler (payload, cb) {\n var res = handler.call(store, {\n dispatch: local.dispatch,\n commit: local.commit,\n getters: local.getters,\n state: local.state,\n rootGetters: store.getters,\n rootState: store.state\n }, payload, cb);\n if (!isPromise(res)) {\n res = Promise.resolve(res);\n }\n if (store._devtoolHook) {\n return res.catch(function (err) {\n store._devtoolHook.emit('vuex:error', err);\n throw err\n })\n } else {\n return res\n }\n });\n}\n\nfunction registerGetter (store, type, rawGetter, local) {\n if (store._wrappedGetters[type]) {\n if (process.env.NODE_ENV !== 'production') {\n console.error((\"[vuex] duplicate getter key: \" + type));\n }\n return\n }\n store._wrappedGetters[type] = function wrappedGetter (store) {\n return rawGetter(\n local.state, // local state\n local.getters, // local getters\n store.state, // root state\n store.getters // root getters\n )\n };\n}\n\nfunction enableStrictMode (store) {\n store._vm.$watch(function () { return this._data.$$state }, function () {\n if (process.env.NODE_ENV !== 'production') {\n assert(store._committing, \"do not mutate vuex store state outside mutation handlers.\");\n }\n }, { deep: true, sync: true });\n}\n\nfunction getNestedState (state, path) {\n return path.length\n ? path.reduce(function (state, key) { return state[key]; }, state)\n : state\n}\n\nfunction unifyObjectStyle (type, payload, options) {\n if (isObject(type) && type.type) {\n options = payload;\n payload = type;\n type = type.type;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(typeof type === 'string', (\"expects string as the type, but found \" + (typeof type) + \".\"));\n }\n\n return { type: type, payload: payload, options: options }\n}\n\nfunction install (_Vue) {\n if (Vue && _Vue === Vue) {\n if (process.env.NODE_ENV !== 'production') {\n console.error(\n '[vuex] already installed. Vue.use(Vuex) should be called only once.'\n );\n }\n return\n }\n Vue = _Vue;\n applyMixin(Vue);\n}\n\n/**\n * Reduce the code which written in Vue.js for getting the state.\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} states # Object's item can be a function which accept state and getters for param, you can do something for state and getters in it.\n * @param {Object}\n */\nvar mapState = normalizeNamespace(function (namespace, states) {\n var res = {};\n normalizeMap(states).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedState () {\n var state = this.$store.state;\n var getters = this.$store.getters;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapState', namespace);\n if (!module) {\n return\n }\n state = module.context.state;\n getters = module.context.getters;\n }\n return typeof val === 'function'\n ? val.call(this, state, getters)\n : state[val]\n };\n // mark vuex getter for devtools\n res[key].vuex = true;\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for committing the mutation\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} mutations # Object's item can be a function which accept `commit` function as the first param, it can accept anthor params. You can commit mutation and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapMutations = normalizeNamespace(function (namespace, mutations) {\n var res = {};\n normalizeMap(mutations).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedMutation () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // Get the commit method from store\n var commit = this.$store.commit;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapMutations', namespace);\n if (!module) {\n return\n }\n commit = module.context.commit;\n }\n return typeof val === 'function'\n ? val.apply(this, [commit].concat(args))\n : commit.apply(this.$store, [val].concat(args))\n };\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for getting the getters\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} getters\n * @return {Object}\n */\nvar mapGetters = normalizeNamespace(function (namespace, getters) {\n var res = {};\n normalizeMap(getters).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n // The namespace has been mutated by normalizeNamespace\n val = namespace + val;\n res[key] = function mappedGetter () {\n if (namespace && !getModuleByNamespace(this.$store, 'mapGetters', namespace)) {\n return\n }\n if (process.env.NODE_ENV !== 'production' && !(val in this.$store.getters)) {\n console.error((\"[vuex] unknown getter: \" + val));\n return\n }\n return this.$store.getters[val]\n };\n // mark vuex getter for devtools\n res[key].vuex = true;\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for dispatch the action\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} actions # Object's item can be a function which accept `dispatch` function as the first param, it can accept anthor params. You can dispatch action and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapActions = normalizeNamespace(function (namespace, actions) {\n var res = {};\n normalizeMap(actions).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedAction () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // get dispatch function from store\n var dispatch = this.$store.dispatch;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapActions', namespace);\n if (!module) {\n return\n }\n dispatch = module.context.dispatch;\n }\n return typeof val === 'function'\n ? val.apply(this, [dispatch].concat(args))\n : dispatch.apply(this.$store, [val].concat(args))\n };\n });\n return res\n});\n\n/**\n * Rebinding namespace param for mapXXX function in special scoped, and return them by simple object\n * @param {String} namespace\n * @return {Object}\n */\nvar createNamespacedHelpers = function (namespace) { return ({\n mapState: mapState.bind(null, namespace),\n mapGetters: mapGetters.bind(null, namespace),\n mapMutations: mapMutations.bind(null, namespace),\n mapActions: mapActions.bind(null, namespace)\n}); };\n\n/**\n * Normalize the map\n * normalizeMap([1, 2, 3]) => [ { key: 1, val: 1 }, { key: 2, val: 2 }, { key: 3, val: 3 } ]\n * normalizeMap({a: 1, b: 2, c: 3}) => [ { key: 'a', val: 1 }, { key: 'b', val: 2 }, { key: 'c', val: 3 } ]\n * @param {Array|Object} map\n * @return {Object}\n */\nfunction normalizeMap (map) {\n return Array.isArray(map)\n ? map.map(function (key) { return ({ key: key, val: key }); })\n : Object.keys(map).map(function (key) { return ({ key: key, val: map[key] }); })\n}\n\n/**\n * Return a function expect two param contains namespace and map. it will normalize the namespace and then the param's function will handle the new namespace and the map.\n * @param {Function} fn\n * @return {Function}\n */\nfunction normalizeNamespace (fn) {\n return function (namespace, map) {\n if (typeof namespace !== 'string') {\n map = namespace;\n namespace = '';\n } else if (namespace.charAt(namespace.length - 1) !== '/') {\n namespace += '/';\n }\n return fn(namespace, map)\n }\n}\n\n/**\n * Search a special module from store by namespace. if module not exist, print error message.\n * @param {Object} store\n * @param {String} helper\n * @param {String} namespace\n * @return {Object}\n */\nfunction getModuleByNamespace (store, helper, namespace) {\n var module = store._modulesNamespaceMap[namespace];\n if (process.env.NODE_ENV !== 'production' && !module) {\n console.error((\"[vuex] module namespace not found in \" + helper + \"(): \" + namespace));\n }\n return module\n}\n\nvar index_esm = {\n Store: Store,\n install: install,\n version: '3.1.1',\n mapState: mapState,\n mapMutations: mapMutations,\n mapGetters: mapGetters,\n mapActions: mapActions,\n createNamespacedHelpers: createNamespacedHelpers\n};\n\nexport default index_esm;\nexport { Store, install, mapState, mapMutations, mapGetters, mapActions, createNamespacedHelpers };\n","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e(require(\"vue\")):\"function\"==typeof define&&define.amd?define(\"ncvuecomponents\",[\"vue\"],e):\"object\"==typeof exports?exports.ncvuecomponents=e(require(\"vue\")):(t.NextcloudVue=t.NextcloudVue||{},t.NextcloudVue.ncvuecomponents=e(t.Vue))}(window,function(e){return function(t){var e={};function n(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return t[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)n.d(i,o,function(e){return t[e]}.bind(null,o));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"/dist/\",n(n.s=182)}([function(t,e,n){\"use strict\";function i(t,e,n,i,o,a,r,s){var c,l=\"function\"==typeof t?t.options:t;if(e&&(l.render=e,l.staticRenderFns=n,l._compiled=!0),i&&(l.functional=!0),a&&(l._scopeId=\"data-v-\"+a),r?(c=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),o&&o.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(r)},l._ssrRegister=c):o&&(c=s?function(){o.call(this,this.$root.$options.shadowRoot)}:o),c)if(l.functional){l._injectStyles=c;var u=l.render;l.render=function(t,e){return c.call(e),u(t,e)}}else{var d=l.beforeCreate;l.beforeCreate=d?[].concat(d,c):[c]}return{exports:t,options:l}}n.d(e,\"a\",function(){return i})},function(t,e,n){\"use strict\";t.exports=function(t){var e=[];return e.toString=function(){return this.map(function(e){var n=function(t,e){var n=t[1]||\"\",i=t[3];if(!i)return n;if(e&&\"function\"==typeof btoa){var o=(r=i,s=btoa(unescape(encodeURIComponent(JSON.stringify(r)))),c=\"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(s),\"/*# \".concat(c,\" */\")),a=i.sources.map(function(t){return\"/*# sourceURL=\".concat(i.sourceRoot).concat(t,\" */\")});return[n].concat(a).concat([o]).join(\"\\n\")}var r,s,c;return[n].join(\"\\n\")}(e,t);return e[2]?\"@media \".concat(e[2],\"{\").concat(n,\"}\"):n}).join(\"\")},e.i=function(t,n){\"string\"==typeof t&&(t=[[null,t,\"\"]]);for(var i={},o=0;o<this.length;o++){var a=this[o][0];null!=a&&(i[a]=!0)}for(var r=0;r<t.length;r++){var s=t[r];null!=s[0]&&i[s[0]]||(n&&!s[2]?s[2]=n:n&&(s[2]=\"(\".concat(s[2],\") and (\").concat(n,\")\")),e.push(s))}},e}},function(t,e,n){\"use strict\";function i(t,e){for(var n=[],i={},o=0;o<e.length;o++){var a=e[o],r=a[0],s={id:t+\":\"+o,css:a[1],media:a[2],sourceMap:a[3]};i[r]?i[r].parts.push(s):n.push(i[r]={id:r,parts:[s]})}return n}n.r(e),n.d(e,\"default\",function(){return h});var o=\"undefined\"!=typeof document;if(\"undefined\"!=typeof DEBUG&&DEBUG&&!o)throw new Error(\"vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\");var a={},r=o&&(document.head||document.getElementsByTagName(\"head\")[0]),s=null,c=0,l=!1,u=function(){},d=null,p=\"data-vue-ssr-id\",f=\"undefined\"!=typeof navigator&&/msie [6-9]\\b/.test(navigator.userAgent.toLowerCase());function h(t,e,n,o){l=n,d=o||{};var r=i(t,e);return A(r),function(e){for(var n=[],o=0;o<r.length;o++){var s=r[o];(c=a[s.id]).refs--,n.push(c)}e?A(r=i(t,e)):r=[];for(o=0;o<n.length;o++){var c;if(0===(c=n[o]).refs){for(var l=0;l<c.parts.length;l++)c.parts[l]();delete a[c.id]}}}}function A(t){for(var e=0;e<t.length;e++){var n=t[e],i=a[n.id];if(i){i.refs++;for(var o=0;o<i.parts.length;o++)i.parts[o](n.parts[o]);for(;o<n.parts.length;o++)i.parts.push(m(n.parts[o]));i.parts.length>n.parts.length&&(i.parts.length=n.parts.length)}else{var r=[];for(o=0;o<n.parts.length;o++)r.push(m(n.parts[o]));a[n.id]={id:n.id,refs:1,parts:r}}}}function v(){var t=document.createElement(\"style\");return t.type=\"text/css\",r.appendChild(t),t}function m(t){var e,n,i=document.querySelector(\"style[\"+p+'~=\"'+t.id+'\"]');if(i){if(l)return u;i.parentNode.removeChild(i)}if(f){var o=c++;i=s||(s=v()),e=y.bind(null,i,o,!1),n=y.bind(null,i,o,!0)}else i=v(),e=function(t,e){var n=e.css,i=e.media,o=e.sourceMap;i&&t.setAttribute(\"media\",i);d.ssrId&&t.setAttribute(p,e.id);o&&(n+=\"\\n/*# sourceURL=\"+o.sources[0]+\" */\",n+=\"\\n/*# sourceMappingURL=data:application/json;base64,\"+btoa(unescape(encodeURIComponent(JSON.stringify(o))))+\" */\");if(t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}.bind(null,i),n=function(){i.parentNode.removeChild(i)};return e(t),function(i){if(i){if(i.css===t.css&&i.media===t.media&&i.sourceMap===t.sourceMap)return;e(t=i)}else n()}}var g,b=(g=[],function(t,e){return g[t]=e,g.filter(Boolean).join(\"\\n\")});function y(t,e,n,i){var o=n?\"\":i.css;if(t.styleSheet)t.styleSheet.cssText=b(e,o);else{var a=document.createTextNode(o),r=t.childNodes;r[e]&&t.removeChild(r[e]),r.length?t.insertBefore(a,r[e]):t.appendChild(a)}}},function(t,n){t.exports=e},function(t,e,n){\"use strict\";var i=n(68),o=n(101),a=Object.prototype.toString;function r(t){return\"[object Array]\"===a.call(t)}function s(t){return null!==t&&\"object\"==typeof t}function c(t){return\"[object Function]\"===a.call(t)}function l(t,e){if(null!=t)if(\"object\"!=typeof t&&(t=[t]),r(t))for(var n=0,i=t.length;n<i;n++)e.call(null,t[n],n,t);else for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&e.call(null,t[o],o,t)}t.exports={isArray:r,isArrayBuffer:function(t){return\"[object ArrayBuffer]\"===a.call(t)},isBuffer:o,isFormData:function(t){return\"undefined\"!=typeof FormData&&t instanceof FormData},isArrayBufferView:function(t){return\"undefined\"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(t):t&&t.buffer&&t.buffer instanceof ArrayBuffer},isString:function(t){return\"string\"==typeof t},isNumber:function(t){return\"number\"==typeof t},isObject:s,isUndefined:function(t){return void 0===t},isDate:function(t){return\"[object Date]\"===a.call(t)},isFile:function(t){return\"[object File]\"===a.call(t)},isBlob:function(t){return\"[object Blob]\"===a.call(t)},isFunction:c,isStream:function(t){return s(t)&&c(t.pipe)},isURLSearchParams:function(t){return\"undefined\"!=typeof URLSearchParams&&t instanceof URLSearchParams},isStandardBrowserEnv:function(){return(\"undefined\"==typeof navigator||\"ReactNative\"!==navigator.product&&\"NativeScript\"!==navigator.product&&\"NS\"!==navigator.product)&&\"undefined\"!=typeof window&&\"undefined\"!=typeof document},forEach:l,merge:function t(){var e={};function n(n,i){\"object\"==typeof e[i]&&\"object\"==typeof n?e[i]=t(e[i],n):e[i]=n}for(var i=0,o=arguments.length;i<o;i++)l(arguments[i],n);return e},deepMerge:function t(){var e={};function n(n,i){\"object\"==typeof e[i]&&\"object\"==typeof n?e[i]=t(e[i],n):e[i]=\"object\"==typeof n?t({},n):n}for(var i=0,o=arguments.length;i<o;i++)l(arguments[i],n);return e},extend:function(t,e,n){return l(e,function(e,o){t[o]=n&&\"function\"==typeof e?i(e,n):e}),t},trim:function(t){return t.replace(/^\\s*/,\"\").replace(/\\s*$/,\"\")}}},function(t,e,n){\"use strict\";(function(t){n.d(e,\"a\",function(){return In});var i=n(16),o=n(21);function a(t){return(a=\"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})(t)}function r(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function c(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{},i=Object.keys(n);\"function\"==typeof Object.getOwnPropertySymbols&&(i=i.concat(Object.getOwnPropertySymbols(n).filter(function(t){return Object.getOwnPropertyDescriptor(n,t).enumerable}))),i.forEach(function(e){s(t,e,n[e])})}return t}var l=function(){};function u(t){return\"string\"==typeof t&&(t=t.split(\" \")),t}function d(t,e){var n,i=u(e);n=t.className instanceof l?u(t.className.baseVal):u(t.className),i.forEach(function(t){-1===n.indexOf(t)&&n.push(t)}),t instanceof SVGElement?t.setAttribute(\"class\",n.join(\" \")):t.className=n.join(\" \")}function p(t,e){var n,i=u(e);n=t.className instanceof l?u(t.className.baseVal):u(t.className),i.forEach(function(t){var e=n.indexOf(t);-1!==e&&n.splice(e,1)}),t instanceof SVGElement?t.setAttribute(\"class\",n.join(\" \")):t.className=n.join(\" \")}\"undefined\"!=typeof window&&(l=window.SVGAnimatedString);var f=!1;if(\"undefined\"!=typeof window){f=!1;try{var h=Object.defineProperty({},\"passive\",{get:function(){f=!0}});window.addEventListener(\"test\",null,h)}catch(t){}}var A={container:!1,delay:0,html:!1,placement:\"top\",title:\"\",template:'<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>',trigger:\"hover focus\",offset:0},v=[],m=function(){function t(e,n){var i=this;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),s(this,\"_events\",[]),s(this,\"_setTooltipNodeEvent\",function(t,e,n,o){var a=t.relatedreference||t.toElement||t.relatedTarget;return!!i._tooltipNode.contains(a)&&(i._tooltipNode.addEventListener(t.type,function n(a){var r=a.relatedreference||a.toElement||a.relatedTarget;i._tooltipNode.removeEventListener(t.type,n),e.contains(r)||i._scheduleHide(e,o.delay,o,a)}),!0)}),n=c({},A,n),e.jquery&&(e=e[0]),this.show=this.show.bind(this),this.hide=this.hide.bind(this),this.reference=e,this.options=n,this._isOpen=!1,this._init()}var e,n,o;return e=t,(n=[{key:\"show\",value:function(){this._show(this.reference,this.options)}},{key:\"hide\",value:function(){this._hide()}},{key:\"dispose\",value:function(){this._dispose()}},{key:\"toggle\",value:function(){return this._isOpen?this.hide():this.show()}},{key:\"setClasses\",value:function(t){this._classes=t}},{key:\"setContent\",value:function(t){this.options.title=t,this._tooltipNode&&this._setContent(t,this.options)}},{key:\"setOptions\",value:function(t){var e=!1,n=t&&t.classes||C.options.defaultClass;this._classes!==n&&(this.setClasses(n),e=!0),t=x(t);var i=!1,o=!1;for(var a in this.options.offset===t.offset&&this.options.placement===t.placement||(i=!0),(this.options.template!==t.template||this.options.trigger!==t.trigger||this.options.container!==t.container||e)&&(o=!0),t)this.options[a]=t[a];if(this._tooltipNode)if(o){var r=this._isOpen;this.dispose(),this._init(),r&&this.show()}else i&&this.popperInstance.update()}},{key:\"_init\",value:function(){var t=\"string\"==typeof this.options.trigger?this.options.trigger.split(\" \"):[];this._isDisposed=!1,this._enableDocumentTouch=-1===t.indexOf(\"manual\"),t=t.filter(function(t){return-1!==[\"click\",\"hover\",\"focus\"].indexOf(t)}),this._setEventListeners(this.reference,t,this.options),this.$_originalTitle=this.reference.getAttribute(\"title\"),this.reference.removeAttribute(\"title\"),this.reference.setAttribute(\"data-original-title\",this.$_originalTitle)}},{key:\"_create\",value:function(t,e){var n=window.document.createElement(\"div\");n.innerHTML=e.trim();var i=n.childNodes[0];return i.id=\"tooltip_\".concat(Math.random().toString(36).substr(2,10)),i.setAttribute(\"aria-hidden\",\"true\"),this.options.autoHide&&-1!==this.options.trigger.indexOf(\"hover\")&&(i.addEventListener(\"mouseenter\",this.hide),i.addEventListener(\"click\",this.hide)),i}},{key:\"_setContent\",value:function(t,e){var n=this;this.asyncContent=!1,this._applyContent(t,e).then(function(){n.popperInstance.update()})}},{key:\"_applyContent\",value:function(t,e){var n=this;return new Promise(function(i,o){var a=e.html,r=n._tooltipNode;if(r){var s=r.querySelector(n.options.innerSelector);if(1===t.nodeType){if(a){for(;s.firstChild;)s.removeChild(s.firstChild);s.appendChild(t)}}else{if(\"function\"==typeof t){var c=t();return void(c&&\"function\"==typeof c.then?(n.asyncContent=!0,e.loadingClass&&d(r,e.loadingClass),e.loadingContent&&n._applyContent(e.loadingContent,e),c.then(function(t){return e.loadingClass&&p(r,e.loadingClass),n._applyContent(t,e)}).then(i).catch(o)):n._applyContent(c,e).then(i).catch(o))}a?s.innerHTML=t:s.innerText=t}i()}})}},{key:\"_show\",value:function(t,e){if(e&&\"string\"==typeof e.container&&!document.querySelector(e.container))return;clearTimeout(this._disposeTimer),delete(e=Object.assign({},e)).offset;var n=!0;this._tooltipNode&&(d(this._tooltipNode,this._classes),n=!1);var i=this._ensureShown(t,e);return n&&this._tooltipNode&&d(this._tooltipNode,this._classes),d(t,[\"v-tooltip-open\"]),i}},{key:\"_ensureShown\",value:function(t,e){var n=this;if(this._isOpen)return this;if(this._isOpen=!0,v.push(this),this._tooltipNode)return this._tooltipNode.style.display=\"\",this._tooltipNode.setAttribute(\"aria-hidden\",\"false\"),this.popperInstance.enableEventListeners(),this.popperInstance.update(),this.asyncContent&&this._setContent(e.title,e),this;var o=t.getAttribute(\"title\")||e.title;if(!o)return this;var a=this._create(t,e.template);this._tooltipNode=a,t.setAttribute(\"aria-describedby\",a.id);var r=this._findContainer(e.container,t);this._append(a,r);var s=c({},e.popperOptions,{placement:e.placement});return s.modifiers=c({},s.modifiers,{arrow:{element:this.options.arrowSelector}}),e.boundariesElement&&(s.modifiers.preventOverflow={boundariesElement:e.boundariesElement}),this.popperInstance=new i.a(t,a,s),this._setContent(o,e),requestAnimationFrame(function(){!n._isDisposed&&n.popperInstance?(n.popperInstance.update(),requestAnimationFrame(function(){n._isDisposed?n.dispose():n._isOpen&&a.setAttribute(\"aria-hidden\",\"false\")})):n.dispose()}),this}},{key:\"_noLongerOpen\",value:function(){var t=v.indexOf(this);-1!==t&&v.splice(t,1)}},{key:\"_hide\",value:function(){var t=this;if(!this._isOpen)return this;this._isOpen=!1,this._noLongerOpen(),this._tooltipNode.style.display=\"none\",this._tooltipNode.setAttribute(\"aria-hidden\",\"true\"),this.popperInstance.disableEventListeners(),clearTimeout(this._disposeTimer);var e=C.options.disposeTimeout;return null!==e&&(this._disposeTimer=setTimeout(function(){t._tooltipNode&&(t._tooltipNode.removeEventListener(\"mouseenter\",t.hide),t._tooltipNode.removeEventListener(\"click\",t.hide),t._removeTooltipNode())},e)),p(this.reference,[\"v-tooltip-open\"]),this}},{key:\"_removeTooltipNode\",value:function(){if(this._tooltipNode){var t=this._tooltipNode.parentNode;t&&(t.removeChild(this._tooltipNode),this.reference.removeAttribute(\"aria-describedby\")),this._tooltipNode=null}}},{key:\"_dispose\",value:function(){var t=this;return this._isDisposed=!0,this.reference.removeAttribute(\"data-original-title\"),this.$_originalTitle&&this.reference.setAttribute(\"title\",this.$_originalTitle),this._events.forEach(function(e){var n=e.func,i=e.event;t.reference.removeEventListener(i,n)}),this._events=[],this._tooltipNode?(this._hide(),this._tooltipNode.removeEventListener(\"mouseenter\",this.hide),this._tooltipNode.removeEventListener(\"click\",this.hide),this.popperInstance.destroy(),this.popperInstance.options.removeOnDestroy||this._removeTooltipNode()):this._noLongerOpen(),this}},{key:\"_findContainer\",value:function(t,e){return\"string\"==typeof t?t=window.document.querySelector(t):!1===t&&(t=e.parentNode),t}},{key:\"_append\",value:function(t,e){e.appendChild(t)}},{key:\"_setEventListeners\",value:function(t,e,n){var i=this,o=[],a=[];e.forEach(function(t){switch(t){case\"hover\":o.push(\"mouseenter\"),a.push(\"mouseleave\"),i.options.hideOnTargetClick&&a.push(\"click\");break;case\"focus\":o.push(\"focus\"),a.push(\"blur\"),i.options.hideOnTargetClick&&a.push(\"click\");break;case\"click\":o.push(\"click\"),a.push(\"click\")}}),o.forEach(function(e){var o=function(e){!0!==i._isOpen&&(e.usedByTooltip=!0,i._scheduleShow(t,n.delay,n,e))};i._events.push({event:e,func:o}),t.addEventListener(e,o)}),a.forEach(function(e){var o=function(e){!0!==e.usedByTooltip&&i._scheduleHide(t,n.delay,n,e)};i._events.push({event:e,func:o}),t.addEventListener(e,o)})}},{key:\"_onDocumentTouch\",value:function(t){this._enableDocumentTouch&&this._scheduleHide(this.reference,this.options.delay,this.options,t)}},{key:\"_scheduleShow\",value:function(t,e,n){var i=this,o=e&&e.show||e||0;clearTimeout(this._scheduleTimer),this._scheduleTimer=window.setTimeout(function(){return i._show(t,n)},o)}},{key:\"_scheduleHide\",value:function(t,e,n,i){var o=this,a=e&&e.hide||e||0;clearTimeout(this._scheduleTimer),this._scheduleTimer=window.setTimeout(function(){if(!1!==o._isOpen&&document.body.contains(o._tooltipNode)){if(\"mouseleave\"===i.type)if(o._setTooltipNodeEvent(i,t,e,n))return;o._hide(t,n)}},a)}}])&&r(e.prototype,n),o&&r(e,o),t}();\"undefined\"!=typeof document&&document.addEventListener(\"touchstart\",function(t){for(var e=0;e<v.length;e++)v[e]._onDocumentTouch(t)},!f||{passive:!0,capture:!0});var g={enabled:!0},b=[\"top\",\"top-start\",\"top-end\",\"right\",\"right-start\",\"right-end\",\"bottom\",\"bottom-start\",\"bottom-end\",\"left\",\"left-start\",\"left-end\"],y={defaultPlacement:\"top\",defaultClass:\"vue-tooltip-theme\",defaultTargetClass:\"has-tooltip\",defaultHtml:!0,defaultTemplate:'<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>',defaultArrowSelector:\".tooltip-arrow, .tooltip__arrow\",defaultInnerSelector:\".tooltip-inner, .tooltip__inner\",defaultDelay:0,defaultTrigger:\"hover focus\",defaultOffset:0,defaultContainer:\"body\",defaultBoundariesElement:void 0,defaultPopperOptions:{},defaultLoadingClass:\"tooltip-loading\",defaultLoadingContent:\"...\",autoHide:!0,defaultHideOnTargetClick:!0,disposeTimeout:5e3,popover:{defaultPlacement:\"bottom\",defaultClass:\"vue-popover-theme\",defaultBaseClass:\"tooltip popover\",defaultWrapperClass:\"wrapper\",defaultInnerClass:\"tooltip-inner popover-inner\",defaultArrowClass:\"tooltip-arrow popover-arrow\",defaultOpenClass:\"open\",defaultDelay:0,defaultTrigger:\"click\",defaultOffset:0,defaultContainer:\"body\",defaultBoundariesElement:void 0,defaultPopperOptions:{},defaultAutoHide:!0,defaultHandleResize:!0}};function x(t){var e={placement:void 0!==t.placement?t.placement:C.options.defaultPlacement,delay:void 0!==t.delay?t.delay:C.options.defaultDelay,html:void 0!==t.html?t.html:C.options.defaultHtml,template:void 0!==t.template?t.template:C.options.defaultTemplate,arrowSelector:void 0!==t.arrowSelector?t.arrowSelector:C.options.defaultArrowSelector,innerSelector:void 0!==t.innerSelector?t.innerSelector:C.options.defaultInnerSelector,trigger:void 0!==t.trigger?t.trigger:C.options.defaultTrigger,offset:void 0!==t.offset?t.offset:C.options.defaultOffset,container:void 0!==t.container?t.container:C.options.defaultContainer,boundariesElement:void 0!==t.boundariesElement?t.boundariesElement:C.options.defaultBoundariesElement,autoHide:void 0!==t.autoHide?t.autoHide:C.options.autoHide,hideOnTargetClick:void 0!==t.hideOnTargetClick?t.hideOnTargetClick:C.options.defaultHideOnTargetClick,loadingClass:void 0!==t.loadingClass?t.loadingClass:C.options.defaultLoadingClass,loadingContent:void 0!==t.loadingContent?t.loadingContent:C.options.defaultLoadingContent,popperOptions:c({},void 0!==t.popperOptions?t.popperOptions:C.options.defaultPopperOptions)};if(e.offset){var n=a(e.offset),i=e.offset;(\"number\"===n||\"string\"===n&&-1===i.indexOf(\",\"))&&(i=\"0, \".concat(i)),e.popperOptions.modifiers||(e.popperOptions.modifiers={}),e.popperOptions.modifiers.offset={offset:i}}return e.trigger&&-1!==e.trigger.indexOf(\"click\")&&(e.hideOnTargetClick=!1),e}function w(t,e){for(var n=t.placement,i=0;i<b.length;i++){var o=b[i];e[o]&&(n=o)}return n}function _(t){var e=a(t);return\"string\"===e?t:!(!t||\"object\"!==e)&&t.content}function T(t){t._tooltip&&(t._tooltip.dispose(),delete t._tooltip,delete t._tooltipOldShow),t._tooltipTargetClasses&&(p(t,t._tooltipTargetClasses),delete t._tooltipTargetClasses)}function k(t,e){var n,i=e.value,o=(e.oldValue,e.modifiers),a=_(i);a&&g.enabled?(t._tooltip?((n=t._tooltip).setContent(a),n.setOptions(c({},i,{placement:w(i,o)}))):n=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=_(e),o=void 0!==e.classes?e.classes:C.options.defaultClass,a=c({title:i},x(c({},e,{placement:w(e,n)}))),r=t._tooltip=new m(t,a);r.setClasses(o),r._vueEl=t;var s=void 0!==e.targetClasses?e.targetClasses:C.options.defaultTargetClass;return t._tooltipTargetClasses=s,d(t,s),r}(t,i,o),void 0!==i.show&&i.show!==t._tooltipOldShow&&(t._tooltipOldShow=i.show,i.show?n.show():n.hide())):T(t)}var C={options:y,bind:k,update:k,unbind:function(t){T(t)}};function E(t){t.addEventListener(\"click\",S),t.addEventListener(\"touchstart\",D,!!f&&{passive:!0})}function M(t){t.removeEventListener(\"click\",S),t.removeEventListener(\"touchstart\",D),t.removeEventListener(\"touchend\",O),t.removeEventListener(\"touchcancel\",B)}function S(t){var e=t.currentTarget;t.closePopover=!e.$_vclosepopover_touch,t.closeAllPopover=e.$_closePopoverModifiers&&!!e.$_closePopoverModifiers.all}function D(t){if(1===t.changedTouches.length){var e=t.currentTarget;e.$_vclosepopover_touch=!0;var n=t.changedTouches[0];e.$_vclosepopover_touchPoint=n,e.addEventListener(\"touchend\",O),e.addEventListener(\"touchcancel\",B)}}function O(t){var e=t.currentTarget;if(e.$_vclosepopover_touch=!1,1===t.changedTouches.length){var n=t.changedTouches[0],i=e.$_vclosepopover_touchPoint;t.closePopover=Math.abs(n.screenY-i.screenY)<20&&Math.abs(n.screenX-i.screenX)<20,t.closeAllPopover=e.$_closePopoverModifiers&&!!e.$_closePopoverModifiers.all}}function B(t){t.currentTarget.$_vclosepopover_touch=!1}var I={bind:function(t,e){var n=e.value,i=e.modifiers;t.$_closePopoverModifiers=i,(void 0===n||n)&&E(t)},update:function(t,e){var n=e.value,i=e.oldValue,o=e.modifiers;t.$_closePopoverModifiers=o,n!==i&&(void 0===n||n?E(t):M(t))},unbind:function(t){M(t)}};function N(t){var e=C.options.popover[t];return void 0===e?C.options[t]:e}var L=!1;\"undefined\"!=typeof window&&\"undefined\"!=typeof navigator&&(L=/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream);var P=[],j=function(){};\"undefined\"!=typeof window&&(j=window.Element);var $={name:\"VPopover\",components:{ResizeObserver:o.a},props:{open:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},placement:{type:String,default:function(){return N(\"defaultPlacement\")}},delay:{type:[String,Number,Object],default:function(){return N(\"defaultDelay\")}},offset:{type:[String,Number],default:function(){return N(\"defaultOffset\")}},trigger:{type:String,default:function(){return N(\"defaultTrigger\")}},container:{type:[String,Object,j,Boolean],default:function(){return N(\"defaultContainer\")}},boundariesElement:{type:[String,j],default:function(){return N(\"defaultBoundariesElement\")}},popperOptions:{type:Object,default:function(){return N(\"defaultPopperOptions\")}},popoverClass:{type:[String,Array],default:function(){return N(\"defaultClass\")}},popoverBaseClass:{type:[String,Array],default:function(){return C.options.popover.defaultBaseClass}},popoverInnerClass:{type:[String,Array],default:function(){return C.options.popover.defaultInnerClass}},popoverWrapperClass:{type:[String,Array],default:function(){return C.options.popover.defaultWrapperClass}},popoverArrowClass:{type:[String,Array],default:function(){return C.options.popover.defaultArrowClass}},autoHide:{type:Boolean,default:function(){return C.options.popover.defaultAutoHide}},handleResize:{type:Boolean,default:function(){return C.options.popover.defaultHandleResize}},openGroup:{type:String,default:null},openClass:{type:[String,Array],default:function(){return C.options.popover.defaultOpenClass}}},data:function(){return{isOpen:!1,id:Math.random().toString(36).substr(2,10)}},computed:{cssClass:function(){return s({},this.openClass,this.isOpen)},popoverId:function(){return\"popover_\".concat(this.id)}},watch:{open:function(t){t?this.show():this.hide()},disabled:function(t,e){t!==e&&(t?this.hide():this.open&&this.show())},container:function(t){if(this.isOpen&&this.popperInstance){var e=this.$refs.popover,n=this.$refs.trigger,i=this.$_findContainer(this.container,n);if(!i)return void console.warn(\"No container for popover\",this);i.appendChild(e),this.popperInstance.scheduleUpdate()}},trigger:function(t){this.$_removeEventListeners(),this.$_addEventListeners()},placement:function(t){var e=this;this.$_updatePopper(function(){e.popperInstance.options.placement=t})},offset:\"$_restartPopper\",boundariesElement:\"$_restartPopper\",popperOptions:{handler:\"$_restartPopper\",deep:!0}},created:function(){this.$_isDisposed=!1,this.$_mounted=!1,this.$_events=[],this.$_preventOpen=!1},mounted:function(){var t=this.$refs.popover;t.parentNode&&t.parentNode.removeChild(t),this.$_init(),this.open&&this.show()},deactivated:function(){this.hide()},beforeDestroy:function(){this.dispose()},methods:{show:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.event,i=(e.skipDelay,e.force),o=void 0!==i&&i;!o&&this.disabled||(this.$_scheduleShow(n),this.$emit(\"show\")),this.$emit(\"update:open\",!0),this.$_beingShowed=!0,requestAnimationFrame(function(){t.$_beingShowed=!1})},hide:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.event;t.skipDelay;this.$_scheduleHide(e),this.$emit(\"hide\"),this.$emit(\"update:open\",!1)},dispose:function(){if(this.$_isDisposed=!0,this.$_removeEventListeners(),this.hide({skipDelay:!0}),this.popperInstance&&(this.popperInstance.destroy(),!this.popperInstance.options.removeOnDestroy)){var t=this.$refs.popover;t.parentNode&&t.parentNode.removeChild(t)}this.$_mounted=!1,this.popperInstance=null,this.isOpen=!1,this.$emit(\"dispose\")},$_init:function(){-1===this.trigger.indexOf(\"manual\")&&this.$_addEventListeners()},$_show:function(){var t=this,e=this.$refs.trigger,n=this.$refs.popover;if(clearTimeout(this.$_disposeTimer),!this.isOpen){if(this.popperInstance&&(this.isOpen=!0,this.popperInstance.enableEventListeners(),this.popperInstance.scheduleUpdate()),!this.$_mounted){var o=this.$_findContainer(this.container,e);if(!o)return void console.warn(\"No container for popover\",this);o.appendChild(n),this.$_mounted=!0}if(!this.popperInstance){var a=c({},this.popperOptions,{placement:this.placement});if(a.modifiers=c({},a.modifiers,{arrow:c({},a.modifiers&&a.modifiers.arrow,{element:this.$refs.arrow})}),this.offset){var r=this.$_getOffset();a.modifiers.offset=c({},a.modifiers&&a.modifiers.offset,{offset:r})}this.boundariesElement&&(a.modifiers.preventOverflow=c({},a.modifiers&&a.modifiers.preventOverflow,{boundariesElement:this.boundariesElement})),this.popperInstance=new i.a(e,n,a),requestAnimationFrame(function(){if(t.hidden)return t.hidden=!1,void t.$_hide();!t.$_isDisposed&&t.popperInstance?(t.popperInstance.scheduleUpdate(),requestAnimationFrame(function(){if(t.hidden)return t.hidden=!1,void t.$_hide();t.$_isDisposed?t.dispose():t.isOpen=!0})):t.dispose()})}var s=this.openGroup;if(s)for(var l,u=0;u<P.length;u++)(l=P[u]).openGroup!==s&&(l.hide(),l.$emit(\"close-group\"));P.push(this),this.$emit(\"apply-show\")}},$_hide:function(){var t=this;if(this.isOpen){var e=P.indexOf(this);-1!==e&&P.splice(e,1),this.isOpen=!1,this.popperInstance&&this.popperInstance.disableEventListeners(),clearTimeout(this.$_disposeTimer);var n=C.options.popover.disposeTimeout||C.options.disposeTimeout;null!==n&&(this.$_disposeTimer=setTimeout(function(){var e=t.$refs.popover;e&&(e.parentNode&&e.parentNode.removeChild(e),t.$_mounted=!1)},n)),this.$emit(\"apply-hide\")}},$_findContainer:function(t,e){return\"string\"==typeof t?t=window.document.querySelector(t):!1===t&&(t=e.parentNode),t},$_getOffset:function(){var t=a(this.offset),e=this.offset;return(\"number\"===t||\"string\"===t&&-1===e.indexOf(\",\"))&&(e=\"0, \".concat(e)),e},$_addEventListeners:function(){var t=this,e=this.$refs.trigger,n=[],i=[];(\"string\"==typeof this.trigger?this.trigger.split(\" \").filter(function(t){return-1!==[\"click\",\"hover\",\"focus\"].indexOf(t)}):[]).forEach(function(t){switch(t){case\"hover\":n.push(\"mouseenter\"),i.push(\"mouseleave\");break;case\"focus\":n.push(\"focus\"),i.push(\"blur\");break;case\"click\":n.push(\"click\"),i.push(\"click\")}}),n.forEach(function(n){var i=function(e){t.isOpen||(e.usedByTooltip=!0,!t.$_preventOpen&&t.show({event:e}),t.hidden=!1)};t.$_events.push({event:n,func:i}),e.addEventListener(n,i)}),i.forEach(function(n){var i=function(e){e.usedByTooltip||(t.hide({event:e}),t.hidden=!0)};t.$_events.push({event:n,func:i}),e.addEventListener(n,i)})},$_scheduleShow:function(){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(clearTimeout(this.$_scheduleTimer),t)this.$_show();else{var e=parseInt(this.delay&&this.delay.show||this.delay||0);this.$_scheduleTimer=setTimeout(this.$_show.bind(this),e)}},$_scheduleHide:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(clearTimeout(this.$_scheduleTimer),n)this.$_hide();else{var i=parseInt(this.delay&&this.delay.hide||this.delay||0);this.$_scheduleTimer=setTimeout(function(){if(t.isOpen){if(e&&\"mouseleave\"===e.type)if(t.$_setTooltipNodeEvent(e))return;t.$_hide()}},i)}},$_setTooltipNodeEvent:function(t){var e=this,n=this.$refs.trigger,i=this.$refs.popover,o=t.relatedreference||t.toElement||t.relatedTarget;return!!i.contains(o)&&(i.addEventListener(t.type,function o(a){var r=a.relatedreference||a.toElement||a.relatedTarget;i.removeEventListener(t.type,o),n.contains(r)||e.hide({event:a})}),!0)},$_removeEventListeners:function(){var t=this.$refs.trigger;this.$_events.forEach(function(e){var n=e.func,i=e.event;t.removeEventListener(i,n)}),this.$_events=[]},$_updatePopper:function(t){this.popperInstance&&(t(),this.isOpen&&this.popperInstance.scheduleUpdate())},$_restartPopper:function(){if(this.popperInstance){var t=this.isOpen;this.dispose(),this.$_isDisposed=!1,this.$_init(),t&&this.show({skipDelay:!0,force:!0})}},$_handleGlobalClose:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.$_beingShowed||(this.hide({event:t}),t.closePopover?this.$emit(\"close-directive\"):this.$emit(\"auto-hide\"),n&&(this.$_preventOpen=!0,setTimeout(function(){e.$_preventOpen=!1},300)))},$_handleResize:function(){this.isOpen&&this.popperInstance&&(this.popperInstance.scheduleUpdate(),this.$emit(\"resize\"))}}};function F(t){for(var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=function(n){var i=P[n];if(i.$refs.popover){var o=i.$refs.popover.contains(t.target);requestAnimationFrame(function(){(t.closeAllPopover||t.closePopover&&o||i.autoHide&&!o)&&i.$_handleGlobalClose(t,e)})}},i=0;i<P.length;i++)n(i)}\"undefined\"!=typeof document&&\"undefined\"!=typeof window&&(L?document.addEventListener(\"touchend\",function(t){F(t,!0)},!f||{passive:!0,capture:!0}):window.addEventListener(\"click\",function(t){F(t)},!0));var Y=function(t,e,n,i,o,a,r,s,c,l){\"boolean\"!=typeof r&&(c=s,s=r,r=!1);var u,d=\"function\"==typeof n?n.options:n;if(t&&t.render&&(d.render=t.render,d.staticRenderFns=t.staticRenderFns,d._compiled=!0,o&&(d.functional=!0)),i&&(d._scopeId=i),a?(u=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),e&&e.call(this,c(t)),t&&t._registeredComponents&&t._registeredComponents.add(a)},d._ssrRegister=u):e&&(u=r?function(){e.call(this,l(this.$root.$options.shadowRoot))}:function(t){e.call(this,s(t))}),u)if(d.functional){var p=d.render;d.render=function(t,e){return u.call(e),p(t,e)}}else{var f=d.beforeCreate;d.beforeCreate=f?[].concat(f,u):[u]}return n},R=$,z=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{staticClass:\"v-popover\",class:t.cssClass},[n(\"div\",{ref:\"trigger\",staticClass:\"trigger\",staticStyle:{display:\"inline-block\"},attrs:{\"aria-describedby\":t.popoverId,tabindex:-1!==t.trigger.indexOf(\"focus\")?0:void 0}},[t._t(\"default\")],2),t._v(\" \"),n(\"div\",{ref:\"popover\",class:[t.popoverBaseClass,t.popoverClass,t.cssClass],style:{visibility:t.isOpen?\"visible\":\"hidden\"},attrs:{id:t.popoverId,\"aria-hidden\":t.isOpen?\"false\":\"true\",tabindex:t.autoHide?0:void 0},on:{keyup:function(e){if(!e.type.indexOf(\"key\")&&t._k(e.keyCode,\"esc\",27,e.key,[\"Esc\",\"Escape\"]))return null;t.autoHide&&t.hide()}}},[n(\"div\",{class:t.popoverWrapperClass},[n(\"div\",{ref:\"inner\",class:t.popoverInnerClass,staticStyle:{position:\"relative\"}},[n(\"div\",[t._t(\"popover\")],2),t._v(\" \"),t.handleResize?n(\"ResizeObserver\",{on:{notify:t.$_handleResize}}):t._e()],1),t._v(\" \"),n(\"div\",{ref:\"arrow\",class:t.popoverArrowClass})])])])};z._withStripped=!0;var H=Y({render:z,staticRenderFns:[]},void 0,R,void 0,!1,void 0,void 0,void 0);var Q=function(){this.__data__=[],this.size=0};var V=function(t,e){return t===e||t!=t&&e!=e};var G=function(t,e){for(var n=t.length;n--;)if(V(t[n][0],e))return n;return-1},U=Array.prototype.splice;var W=function(t){var e=this.__data__,n=G(e,t);return!(n<0||(n==e.length-1?e.pop():U.call(e,n,1),--this.size,0))};var Z=function(t){var e=this.__data__,n=G(e,t);return n<0?void 0:e[n][1]};var X=function(t){return G(this.__data__,t)>-1};var q=function(t,e){var n=this.__data__,i=G(n,t);return i<0?(++this.size,n.push([t,e])):n[i][1]=e,this};function K(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var i=t[e];this.set(i[0],i[1])}}K.prototype.clear=Q,K.prototype.delete=W,K.prototype.get=Z,K.prototype.has=X,K.prototype.set=q;var J=K;var tt=function(){this.__data__=new J,this.size=0};var et=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n};var nt=function(t){return this.__data__.get(t)};var it=function(t){return this.__data__.has(t)},ot=\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof window?window:void 0!==t?t:\"undefined\"!=typeof self?self:{};function at(t,e){return t(e={exports:{}},e.exports),e.exports}var rt=\"object\"==typeof ot&&ot&&ot.Object===Object&&ot,st=\"object\"==typeof self&&self&&self.Object===Object&&self,ct=rt||st||Function(\"return this\")(),lt=ct.Symbol,ut=Object.prototype,dt=ut.hasOwnProperty,pt=ut.toString,ft=lt?lt.toStringTag:void 0;var ht=function(t){var e=dt.call(t,ft),n=t[ft];try{t[ft]=void 0;var i=!0}catch(t){}var o=pt.call(t);return i&&(e?t[ft]=n:delete t[ft]),o},At=Object.prototype.toString;var vt=function(t){return At.call(t)},mt=\"[object Null]\",gt=\"[object Undefined]\",bt=lt?lt.toStringTag:void 0;var yt=function(t){return null==t?void 0===t?gt:mt:bt&&bt in Object(t)?ht(t):vt(t)};var xt=function(t){var e=typeof t;return null!=t&&(\"object\"==e||\"function\"==e)},wt=\"[object AsyncFunction]\",_t=\"[object Function]\",Tt=\"[object GeneratorFunction]\",kt=\"[object Proxy]\";var Ct,Et=function(t){if(!xt(t))return!1;var e=yt(t);return e==_t||e==Tt||e==wt||e==kt},Mt=ct[\"__core-js_shared__\"],St=(Ct=/[^.]+$/.exec(Mt&&Mt.keys&&Mt.keys.IE_PROTO||\"\"))?\"Symbol(src)_1.\"+Ct:\"\";var Dt=function(t){return!!St&&St in t},Ot=Function.prototype.toString;var Bt=function(t){if(null!=t){try{return Ot.call(t)}catch(t){}try{return t+\"\"}catch(t){}}return\"\"},It=/^\\[object .+?Constructor\\]$/,Nt=Function.prototype,Lt=Object.prototype,Pt=Nt.toString,jt=Lt.hasOwnProperty,$t=RegExp(\"^\"+Pt.call(jt).replace(/[\\\\^$.*+?()[\\]{}|]/g,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\");var Ft=function(t){return!(!xt(t)||Dt(t))&&(Et(t)?$t:It).test(Bt(t))};var Yt=function(t,e){return null==t?void 0:t[e]};var Rt=function(t,e){var n=Yt(t,e);return Ft(n)?n:void 0},zt=Rt(ct,\"Map\"),Ht=Rt(Object,\"create\");var Qt=function(){this.__data__=Ht?Ht(null):{},this.size=0};var Vt=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e},Gt=\"__lodash_hash_undefined__\",Ut=Object.prototype.hasOwnProperty;var Wt=function(t){var e=this.__data__;if(Ht){var n=e[t];return n===Gt?void 0:n}return Ut.call(e,t)?e[t]:void 0},Zt=Object.prototype.hasOwnProperty;var Xt=function(t){var e=this.__data__;return Ht?void 0!==e[t]:Zt.call(e,t)},qt=\"__lodash_hash_undefined__\";var Kt=function(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=Ht&&void 0===e?qt:e,this};function Jt(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var i=t[e];this.set(i[0],i[1])}}Jt.prototype.clear=Qt,Jt.prototype.delete=Vt,Jt.prototype.get=Wt,Jt.prototype.has=Xt,Jt.prototype.set=Kt;var te=Jt;var ee=function(){this.size=0,this.__data__={hash:new te,map:new(zt||J),string:new te}};var ne=function(t){var e=typeof t;return\"string\"==e||\"number\"==e||\"symbol\"==e||\"boolean\"==e?\"__proto__\"!==t:null===t};var ie=function(t,e){var n=t.__data__;return ne(e)?n[\"string\"==typeof e?\"string\":\"hash\"]:n.map};var oe=function(t){var e=ie(this,t).delete(t);return this.size-=e?1:0,e};var ae=function(t){return ie(this,t).get(t)};var re=function(t){return ie(this,t).has(t)};var se=function(t,e){var n=ie(this,t),i=n.size;return n.set(t,e),this.size+=n.size==i?0:1,this};function ce(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var i=t[e];this.set(i[0],i[1])}}ce.prototype.clear=ee,ce.prototype.delete=oe,ce.prototype.get=ae,ce.prototype.has=re,ce.prototype.set=se;var le=ce,ue=200;var de=function(t,e){var n=this.__data__;if(n instanceof J){var i=n.__data__;if(!zt||i.length<ue-1)return i.push([t,e]),this.size=++n.size,this;n=this.__data__=new le(i)}return n.set(t,e),this.size=n.size,this};function pe(t){var e=this.__data__=new J(t);this.size=e.size}pe.prototype.clear=tt,pe.prototype.delete=et,pe.prototype.get=nt,pe.prototype.has=it,pe.prototype.set=de;var fe=pe,he=function(){try{var t=Rt(Object,\"defineProperty\");return t({},\"\",{}),t}catch(t){}}();var Ae=function(t,e,n){\"__proto__\"==e&&he?he(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n};var ve=function(t,e,n){(void 0===n||V(t[e],n))&&(void 0!==n||e in t)||Ae(t,e,n)};var me=function(t){return function(e,n,i){for(var o=-1,a=Object(e),r=i(e),s=r.length;s--;){var c=r[t?s:++o];if(!1===n(a[c],c,a))break}return e}}(),ge=at(function(t,e){var n=e&&!e.nodeType&&e,i=n&&t&&!t.nodeType&&t,o=i&&i.exports===n?ct.Buffer:void 0,a=o?o.allocUnsafe:void 0;t.exports=function(t,e){if(e)return t.slice();var n=t.length,i=a?a(n):new t.constructor(n);return t.copy(i),i}}),be=ct.Uint8Array;var ye=function(t){var e=new t.constructor(t.byteLength);return new be(e).set(new be(t)),e};var xe=function(t,e){var n=e?ye(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)};var we=function(t,e){var n=-1,i=t.length;for(e||(e=Array(i));++n<i;)e[n]=t[n];return e},_e=Object.create,Te=function(){function t(){}return function(e){if(!xt(e))return{};if(_e)return _e(e);t.prototype=e;var n=new t;return t.prototype=void 0,n}}();var ke=function(t,e){return function(n){return t(e(n))}}(Object.getPrototypeOf,Object),Ce=Object.prototype;var Ee=function(t){var e=t&&t.constructor;return t===(\"function\"==typeof e&&e.prototype||Ce)};var Me=function(t){return\"function\"!=typeof t.constructor||Ee(t)?{}:Te(ke(t))};var Se=function(t){return null!=t&&\"object\"==typeof t},De=\"[object Arguments]\";var Oe=function(t){return Se(t)&&yt(t)==De},Be=Object.prototype,Ie=Be.hasOwnProperty,Ne=Be.propertyIsEnumerable,Le=Oe(function(){return arguments}())?Oe:function(t){return Se(t)&&Ie.call(t,\"callee\")&&!Ne.call(t,\"callee\")},Pe=Array.isArray,je=9007199254740991;var $e=function(t){return\"number\"==typeof t&&t>-1&&t%1==0&&t<=je};var Fe=function(t){return null!=t&&$e(t.length)&&!Et(t)};var Ye=function(t){return Se(t)&&Fe(t)};var Re=function(){return!1},ze=at(function(t,e){var n=e&&!e.nodeType&&e,i=n&&t&&!t.nodeType&&t,o=i&&i.exports===n?ct.Buffer:void 0,a=(o?o.isBuffer:void 0)||Re;t.exports=a}),He=\"[object Object]\",Qe=Function.prototype,Ve=Object.prototype,Ge=Qe.toString,Ue=Ve.hasOwnProperty,We=Ge.call(Object);var Ze=function(t){if(!Se(t)||yt(t)!=He)return!1;var e=ke(t);if(null===e)return!0;var n=Ue.call(e,\"constructor\")&&e.constructor;return\"function\"==typeof n&&n instanceof n&&Ge.call(n)==We},Xe={};Xe[\"[object Float32Array]\"]=Xe[\"[object Float64Array]\"]=Xe[\"[object Int8Array]\"]=Xe[\"[object Int16Array]\"]=Xe[\"[object Int32Array]\"]=Xe[\"[object Uint8Array]\"]=Xe[\"[object Uint8ClampedArray]\"]=Xe[\"[object Uint16Array]\"]=Xe[\"[object Uint32Array]\"]=!0,Xe[\"[object Arguments]\"]=Xe[\"[object Array]\"]=Xe[\"[object ArrayBuffer]\"]=Xe[\"[object Boolean]\"]=Xe[\"[object DataView]\"]=Xe[\"[object Date]\"]=Xe[\"[object Error]\"]=Xe[\"[object Function]\"]=Xe[\"[object Map]\"]=Xe[\"[object Number]\"]=Xe[\"[object Object]\"]=Xe[\"[object RegExp]\"]=Xe[\"[object Set]\"]=Xe[\"[object String]\"]=Xe[\"[object WeakMap]\"]=!1;var qe=function(t){return Se(t)&&$e(t.length)&&!!Xe[yt(t)]};var Ke=function(t){return function(e){return t(e)}},Je=at(function(t,e){var n=e&&!e.nodeType&&e,i=n&&t&&!t.nodeType&&t,o=i&&i.exports===n&&rt.process,a=function(){try{var t=i&&i.require&&i.require(\"util\").types;return t||o&&o.binding&&o.binding(\"util\")}catch(t){}}();t.exports=a}),tn=Je&&Je.isTypedArray,en=tn?Ke(tn):qe;var nn=function(t,e){if(\"__proto__\"!=e)return t[e]},on=Object.prototype.hasOwnProperty;var an=function(t,e,n){var i=t[e];on.call(t,e)&&V(i,n)&&(void 0!==n||e in t)||Ae(t,e,n)};var rn=function(t,e,n,i){var o=!n;n||(n={});for(var a=-1,r=e.length;++a<r;){var s=e[a],c=i?i(n[s],t[s],s,n,t):void 0;void 0===c&&(c=t[s]),o?Ae(n,s,c):an(n,s,c)}return n};var sn=function(t,e){for(var n=-1,i=Array(t);++n<t;)i[n]=e(n);return i},cn=9007199254740991,ln=/^(?:0|[1-9]\\d*)$/;var un=function(t,e){var n=typeof t;return!!(e=null==e?cn:e)&&(\"number\"==n||\"symbol\"!=n&&ln.test(t))&&t>-1&&t%1==0&&t<e},dn=Object.prototype.hasOwnProperty;var pn=function(t,e){var n=Pe(t),i=!n&&Le(t),o=!n&&!i&&ze(t),a=!n&&!i&&!o&&en(t),r=n||i||o||a,s=r?sn(t.length,String):[],c=s.length;for(var l in t)!e&&!dn.call(t,l)||r&&(\"length\"==l||o&&(\"offset\"==l||\"parent\"==l)||a&&(\"buffer\"==l||\"byteLength\"==l||\"byteOffset\"==l)||un(l,c))||s.push(l);return s};var fn=function(t){var e=[];if(null!=t)for(var n in Object(t))e.push(n);return e},hn=Object.prototype.hasOwnProperty;var An=function(t){if(!xt(t))return fn(t);var e=Ee(t),n=[];for(var i in t)(\"constructor\"!=i||!e&&hn.call(t,i))&&n.push(i);return n};var vn=function(t){return Fe(t)?pn(t,!0):An(t)};var mn=function(t){return rn(t,vn(t))};var gn=function(t,e,n,i,o,a,r){var s=nn(t,n),c=nn(e,n),l=r.get(c);if(l)ve(t,n,l);else{var u=a?a(s,c,n+\"\",t,e,r):void 0,d=void 0===u;if(d){var p=Pe(c),f=!p&&ze(c),h=!p&&!f&&en(c);u=c,p||f||h?Pe(s)?u=s:Ye(s)?u=we(s):f?(d=!1,u=ge(c,!0)):h?(d=!1,u=xe(c,!0)):u=[]:Ze(c)||Le(c)?(u=s,Le(s)?u=mn(s):xt(s)&&!Et(s)||(u=Me(c))):d=!1}d&&(r.set(c,u),o(u,c,i,a,r),r.delete(c)),ve(t,n,u)}};var bn=function t(e,n,i,o,a){e!==n&&me(n,function(r,s){if(xt(r))a||(a=new fe),gn(e,n,s,i,t,o,a);else{var c=o?o(nn(e,s),r,s+\"\",e,n,a):void 0;void 0===c&&(c=r),ve(e,s,c)}},vn)};var yn=function(t){return t};var xn=function(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)},wn=Math.max;var _n=function(t,e,n){return e=wn(void 0===e?t.length-1:e,0),function(){for(var i=arguments,o=-1,a=wn(i.length-e,0),r=Array(a);++o<a;)r[o]=i[e+o];o=-1;for(var s=Array(e+1);++o<e;)s[o]=i[o];return s[e]=n(r),xn(t,this,s)}};var Tn=function(t){return function(){return t}},kn=he?function(t,e){return he(t,\"toString\",{configurable:!0,enumerable:!1,value:Tn(e),writable:!0})}:yn,Cn=800,En=16,Mn=Date.now;var Sn=function(t){var e=0,n=0;return function(){var i=Mn(),o=En-(i-n);if(n=i,o>0){if(++e>=Cn)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(kn);var Dn=function(t,e){return Sn(_n(t,e,yn),t+\"\")};var On=function(t,e,n){if(!xt(n))return!1;var i=typeof e;return!!(\"number\"==i?Fe(n)&&un(e,n.length):\"string\"==i&&e in n)&&V(n[e],t)};var Bn=function(t){return Dn(function(e,n){var i=-1,o=n.length,a=o>1?n[o-1]:void 0,r=o>2?n[2]:void 0;for(a=t.length>3&&\"function\"==typeof a?(o--,a):void 0,r&&On(n[0],n[1],r)&&(a=o<3?void 0:a,o=1),e=Object(e);++i<o;){var s=n[i];s&&t(e,s,i,a)}return e})}(function(t,e,n){bn(t,e,n)});!function(t,e){void 0===e&&(e={});var n=e.insertAt;if(t&&\"undefined\"!=typeof document){var i=document.head||document.getElementsByTagName(\"head\")[0],o=document.createElement(\"style\");o.type=\"text/css\",\"top\"===n&&i.firstChild?i.insertBefore(o,i.firstChild):i.appendChild(o),o.styleSheet?o.styleSheet.cssText=t:o.appendChild(document.createTextNode(t))}}(\".resize-observer[data-v-b329ee4c]{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:transparent;pointer-events:none;display:block;overflow:hidden;opacity:0}.resize-observer[data-v-b329ee4c] object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}\");var In=C,Nn={install:function t(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!t.installed){t.installed=!0;var i={};Bn(i,y,n),Nn.options=i,C.options=i,e.directive(\"tooltip\",C),e.directive(\"close-popover\",I),e.component(\"v-popover\",H)}},get enabled(){return g.enabled},set enabled(t){g.enabled=t}},Ln=null;\"undefined\"!=typeof window?Ln=window.Vue:void 0!==t&&(Ln=t.Vue),Ln&&Ln.use(Nn)}).call(this,n(15))},function(t,e,n){\"use strict\";n.r(e);var i=n(5);n(32);\n/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\ni.a.options.defaultTemplate='<div class=\"vue-tooltip\" role=\"tooltip\" data-v-'.concat(\"6673a70\",'><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>'),i.a.options.defaultHtml=!1,e.default=i.a},function(t,e,n){\"use strict\";var i=n(3),o=n.n(i);\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */e.a={before:function(){this.$slots.default&&\"\"!==this.text.trim()||(o.a.util.warn(\"\".concat(this.$options.name,\" cannot be empty and requires a meaningful text content\"),this),this.$destroy(),this.$el.remove())},beforeUpdate:function(){this.text=this.getText()},data:function(){return{text:this.getText()}},computed:{isLongText:function(){return this.text&&this.text.trim().length>20}},methods:{getText:function(){return this.$slots.default?this.$slots.default[0].text.trim():\"\"}}}},function(t,e,n){\"use strict\";t.exports=function(t,e){return\"string\"!=typeof(t=t.__esModule?t.default:t)?t:(/^['\"].*['\"]$/.test(t)&&(t=t.slice(1,-1)),/[\"'() \\t\\n]/.test(t)||e?'\"'.concat(t.replace(/\"/g,'\\\\\"').replace(/\\n/g,\"\\\\n\"),'\"'):t)}},function(t,e){t.exports=\"data:application/vnd.ms-fontobject;base64,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\"},function(t,e){t.exports=\"data:font/woff;base64,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\"},function(t,e){t.exports=\"data:font/ttf;base64,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\"},function(t,e){t.exports=\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCIgPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48bWV0YWRhdGE+PC9tZXRhZGF0YT48ZGVmcz48Zm9udCBpZD0iaWNvbmZvbnQtdnVlIiBob3Jpei1hZHYteD0iNTAwMCI+PGZvbnQtZmFjZSBmb250LWZhbWlseT0iaWNvbmZvbnQtdnVlIiBmb250LXdlaWdodD0iNDAwIiBmb250LXN0cmV0Y2g9Im5vcm1hbCIgdW5pdHMtcGVyLWVtPSI1MDAwIiBwYW5vc2UtMT0iMiAwIDUgMyAwIDAgMCAwIDAgMCIgYXNjZW50PSI1MDAwIiBkZXNjZW50PSIwIiB4LWhlaWdodD0iMCIgYmJveD0iLTEgMCA1MDExIDQ4NDQiIHVuZGVybGluZS10aGlja25lc3M9IjAiIHVuZGVybGluZS1wb3NpdGlvbj0iNTAiIHVuaWNvZGUtcmFuZ2U9IlUrZWEwMS1lYTBiIiAvPjxtaXNzaW5nLWdseXBoIGhvcml6LWFkdi14PSIwIiAgLz48Z2x5cGggZ2x5cGgtbmFtZT0iYXJyb3ctbGVmdC1kb3VibGUiIHVuaWNvZGU9IiYjeGVhMDE7IiBkPSJNMzc1MCAzOTA2IGwtMTQwNiAtMTQwNiBsMTQwNiAtMTQwNiBsMCAzMTIgbC0xMDk0IDEwOTQgbDEwOTQgMTA5NCBsMCAzMTIgWk0yMzQ0IDM5MDYgbC0xNDA2IC0xNDA2IGwxNDA2IC0xNDA2IGwwIDMxMiBsLTEwOTQgMTA5NCBsMTA5NCAxMDk0IGwwIDMxMiBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJhcnJvdy1sZWZ0IiB1bmljb2RlPSImI3hlYTAyOyIgZD0iTTE1NjMgMjUwMCBsMTg3NSAtMTg3NSBsMCAtMzEyIGwtMjE4OCAyMTg3IGwyMTg4IDIxODggbDAgLTMxMyBsLTE4NzUgLTE4NzUgWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0iYXJyb3ctcmlnaHQtZG91YmxlIiB1bmljb2RlPSImI3hlYTAzOyIgZD0iTTEyNTAgMTA5NCBsMTQwNiAxNDA2IGwtMTQwNiAxNDA2IGwwIC0zMTIgbDEwOTQgLTEwOTQgbC0xMDk0IC0xMDk0IGwwIC0zMTIgWk0yNjU2IDEwOTQgbDE0MDcgMTQwNiBsLTE0MDcgMTQwNiBsMCAtMzEyIGwxMDk0IC0xMDk0IGwtMTA5NCAtMTA5NCBsMCAtMzEyIFoiIC8+PGdseXBoIGdseXBoLW5hbWU9ImFycm93LXJpZ2h0IiB1bmljb2RlPSImI3hlYTA0OyIgZD0iTTM0MzggMjUwMCBsLTE4NzUgMTg3NSBsMCAzMTMgbDIxODcgLTIxODggbC0yMTg3IC0yMTg3IGwwIDMxMiBsMTg3NSAxODc1IFoiIC8+PGdseXBoIGdseXBoLW5hbWU9ImNsb3NlIiB1bmljb2RlPSImI3hlYTA1OyIgZD0iTTQzNzUgMTE1NiBsLTUzMSAtNTMxIGwtMTM0NCAxMzQ0IGwtMTM0NCAtMTM0NCBsLTUzMSA1MzEgbDEzNDQgMTM0NCBsLTEzNDQgMTM0NCBsNTMxIDUzMSBsMTM0NCAtMTM0NCBsMTM0NCAxMzQ0IGw1MzEgLTUzMSBsLTEzNDQgLTEzNDQgbDEzNDQgLTEzNDQgWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0iY29uZmlybS1mYWRlIiB1bmljb2RlPSImI3hlYTA2OyYjeGVhMDc7IiBkPSJNMjY1NiA0ODQ0IHEtMTAxIDAgLTE4MCAtNTcgcS03NCAtNTIgLTEwOSAtMTM4IHEtMzUgLTg2IC0xOSAtMTc1IHExOCAtOTYgOTAgLTE2NyBsMTQ5NSAtMTQ5NCBsLTM2MTYgMCBxLTc3IDEgLTEzOSAtMjYgcS01OCAtMjQgLTk5IC03MCBxLTM5IC00NCAtNTkgLTEwMSBxLTIwIC01NiAtMjAgLTExNiBxMCAtNjAgMjAgLTExNiBxMjAgLTU3IDU5IC0xMDEgcTQxIC00NiA5OSAtNzAgcTYyIC0yNyAxMzkgLTI1IGwzNjE2IDAgbC0xNDk1IC0xNDk1IHEtNTUgLTUzIC04MSAtMTE2IHEtMjQgLTU5IC0yMSAtMTIxIHEzIC01OCAzMCAtMTEzIHEyNSAtNTQgNjggLTk3IHE0MyAtNDMgOTYgLTY4IHE1NSAtMjYgMTE0IC0yOSBxNjIgLTMgMTIwIDIxIHE2MyAyNSAxMTYgODEgbDIwMjkgMjAyOCBxNTkgNjAgODAgMTQxIHEyMSA4MCAxIDE1OSBxLTIxIDgyIC04MSAxNDIgbC0yMDI5IDIwMjggcS00NCA0NSAtMTAyIDcwIHEtNTggMjUgLTEyMiAyNSBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJtZW51IiB1bmljb2RlPSImI3hlYTA4OyIgZD0iTTYyNSA0Mzc1IGwwIC02MjUgbDM3NTAgMCBsMCA2MjUgbC0zNzUwIDAgWk02MjUgMjgxMyBsMCAtNjI1IGwzNzUwIDAgbDAgNjI1IGwtMzc1MCAwIFpNNjI1IDEyNTAgbDAgLTYyNSBsMzc1MCAwIGwwIDYyNSBsLTM3NTAgMCBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJtb3JlIiB1bmljb2RlPSImI3hlYTA5OyIgZD0iTTkzOCAzMTI1IHEtMTI4IDAgLTI0NCAtNDkgcS0xMTIgLTQ4IC0xOTguNSAtMTM0LjUgcS04Ni41IC04Ni41IC0xMzMuNSAtMTk4LjUgcS01MCAtMTE2IC00OS41IC0yNDMgcTAuNSAtMTI3IDQ5LjUgLTI0MyBxNDcgLTExMiAxMzMuNSAtMTk4LjUgcTg2LjUgLTg2LjUgMTk4LjUgLTEzNC41IHExMTYgLTQ5IDI0My41IC00OSBxMTI3LjUgMCAyNDMuNSA0OSBxMTEyIDQ4IDE5OC41IDEzNC41IHE4Ni41IDg2LjUgMTMzLjUgMTk4LjUgcTUwIDExNiA1MCAyNDMgcTAgMTI3IC01MCAyNDMgcS00NyAxMTIgLTEzMy41IDE5OC41IHEtODYuNSA4Ni41IC0xOTguNSAxMzQuNSBxLTExNiA0OSAtMjQzIDQ5IFpNMjUwMCAzMTI1IHEtMTI3IDAgLTI0MyAtNDkgcS0xMTIgLTQ4IC0xOTguNSAtMTM0LjUgcS04Ni41IC04Ni41IC0xMzQuNSAtMTk4LjUgcS00OSAtMTE2IC00OSAtMjQzIHEwIC0xMjcgNDkgLTI0MyBxNDggLTExMiAxMzQuNSAtMTk4LjUgcTg2LjUgLTg2LjUgMTk4LjUgLTEzNC41IHExMTYgLTQ5IDI0MyAtNDkgcTEyNyAwIDI0MyA0OSBxMTEyIDQ4IDE5OC41IDEzNC41IHE4Ni41IDg2LjUgMTM0LjUgMTk4LjUgcTQ5IDExNiA0OSAyNDMgcTAgMTI3IC00OSAyNDMgcS00OCAxMTIgLTEzNC41IDE5OC41IHEtODYuNSA4Ni41IC0xOTguNSAxMzQuNSBxLTExNiA0OSAtMjQzIDQ5IFpNNDA2MyAzMTI1IHEtMTI4IDAgLTI0NCAtNDkgcS0xMTIgLTQ4IC0xOTguNSAtMTM0LjUgcS04Ni41IC04Ni41IC0xMzMuNSAtMTk4LjUgcS00OSAtMTE2IC00OSAtMjQzIHEwIC0xMjcgNDkgLTI0MyBxNDcgLTExMiAxMzMuNSAtMTk4LjUgcTg2LjUgLTg2LjUgMTk4LjUgLTEzNC41IHExMTYgLTQ5IDI0My41IC00OSBxMTI3LjUgMCAyNDMuNSA0OSBxMTEyIDQ4IDE5OC41IDEzNC41IHE4Ni41IDg2LjUgMTMzLjUgMTk4LjUgcTUwIDExNiA1MCAyNDMgcTAgMTI3IC01MCAyNDMgcS00NyAxMTIgLTEzMy41IDE5OC41IHEtODYuNSA4Ni41IC0xOTguNSAxMzQuNSBxLTExNiA0OSAtMjQzIDQ5IFoiIC8+PGdseXBoIGdseXBoLW5hbWU9InBhdXNlIiB1bmljb2RlPSImI3hlYTBhOyIgZD0iTTkzOCA0MDYzIGwwIC0zMTI1IGwxMjUwIDAgbDAgMzEyNSBsLTEyNTAgMCBaTTI4MTMgNDA2MyBsMCAtMzEyNSBsMTI1MCAwIGwwIDMxMjUgbC0xMjUwIDAgWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0icGxheSIgdW5pY29kZT0iJiN4ZWEwYjsiIGQ9Ik02MjUgNDM3NSBsMzc1MCAtMTg3NSBsLTM3NTAgLTE4NzUgbDAgMzc1MCBaIiAvPjwvZm9udD48L2RlZnM+PC9zdmc+\"},function(t,e){function n(t){return\"function\"==typeof t.value||(console.warn(\"[Vue-click-outside:] provided expression\",t.expression,\"is not a function.\"),!1)}function i(t){return void 0!==t.componentInstance&&t.componentInstance.$isServer}t.exports={bind:function(t,e,o){function a(e){if(o.context){var n=e.path||e.composedPath&&e.composedPath();n&&n.length>0&&n.unshift(e.target),t.contains(e.target)||function(t,e){if(!t||!e)return!1;for(var n=0,i=e.length;n<i;n++)try{if(t.contains(e[n]))return!0;if(e[n].contains(t))return!1}catch(t){return!1}return!1}(o.context.popupItem,n)||t.__vueClickOutside__.callback(e)}}n(e)&&(t.__vueClickOutside__={handler:a,callback:e.value},!i(o)&&document.addEventListener(\"click\",a))},update:function(t,e){n(e)&&(t.__vueClickOutside__.callback=e.value)},unbind:function(t,e,n){!i(n)&&document.removeEventListener(\"click\",t.__vueClickOutside__.handler),delete t.__vueClickOutside__}}},function(t,e,n){\"use strict\";var i=n(7);\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */e.a={mixins:[i.a],props:{icon:{type:String,default:\"\",required:!0},title:{type:String,default:\"\"}},computed:{isIconUrl:function(){try{return new URL(this.icon)}catch(t){return!1}}},methods:{onClick:function(t){this.$emit(\"click\",t)}}}},function(t,e){var n;n=function(){return this}();try{n=n||new Function(\"return this\")()}catch(t){\"object\"==typeof window&&(n=window)}t.exports=n},function(t,e,n){\"use strict\";(function(t){for(\n/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.15.0\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar n=\"undefined\"!=typeof window&&\"undefined\"!=typeof document,i=[\"Edge\",\"Trident\",\"Firefox\"],o=0,a=0;a<i.length;a+=1)if(n&&navigator.userAgent.indexOf(i[a])>=0){o=1;break}var r=n&&window.Promise?function(t){var e=!1;return function(){e||(e=!0,window.Promise.resolve().then(function(){e=!1,t()}))}}:function(t){var e=!1;return function(){e||(e=!0,setTimeout(function(){e=!1,t()},o))}};function s(t){return t&&\"[object Function]\"==={}.toString.call(t)}function c(t,e){if(1!==t.nodeType)return[];var n=t.ownerDocument.defaultView.getComputedStyle(t,null);return e?n[e]:n}function l(t){return\"HTML\"===t.nodeName?t:t.parentNode||t.host}function u(t){if(!t)return document.body;switch(t.nodeName){case\"HTML\":case\"BODY\":return t.ownerDocument.body;case\"#document\":return t.body}var e=c(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/(auto|scroll|overlay)/.test(n+o+i)?t:u(l(t))}var d=n&&!(!window.MSInputMethodContext||!document.documentMode),p=n&&/MSIE 10/.test(navigator.userAgent);function f(t){return 11===t?d:10===t?p:d||p}function h(t){if(!t)return document.documentElement;for(var e=f(10)?document.body:null,n=t.offsetParent||null;n===e&&t.nextElementSibling;)n=(t=t.nextElementSibling).offsetParent;var i=n&&n.nodeName;return i&&\"BODY\"!==i&&\"HTML\"!==i?-1!==[\"TH\",\"TD\",\"TABLE\"].indexOf(n.nodeName)&&\"static\"===c(n,\"position\")?h(n):n:t?t.ownerDocument.documentElement:document.documentElement}function A(t){return null!==t.parentNode?A(t.parentNode):t}function v(t,e){if(!(t&&t.nodeType&&e&&e.nodeType))return document.documentElement;var n=t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING,i=n?t:e,o=n?e:t,a=document.createRange();a.setStart(i,0),a.setEnd(o,0);var r,s,c=a.commonAncestorContainer;if(t!==c&&e!==c||i.contains(o))return\"BODY\"===(s=(r=c).nodeName)||\"HTML\"!==s&&h(r.firstElementChild)!==r?h(c):c;var l=A(t);return l.host?v(l.host,e):v(t,A(e).host)}function m(t){var e=\"top\"===(arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"top\")?\"scrollTop\":\"scrollLeft\",n=t.nodeName;if(\"BODY\"===n||\"HTML\"===n){var i=t.ownerDocument.documentElement;return(t.ownerDocument.scrollingElement||i)[e]}return t[e]}function g(t,e){var n=\"x\"===e?\"Left\":\"Top\",i=\"Left\"===n?\"Right\":\"Bottom\";return parseFloat(t[\"border\"+n+\"Width\"],10)+parseFloat(t[\"border\"+i+\"Width\"],10)}function b(t,e,n,i){return Math.max(e[\"offset\"+t],e[\"scroll\"+t],n[\"client\"+t],n[\"offset\"+t],n[\"scroll\"+t],f(10)?parseInt(n[\"offset\"+t])+parseInt(i[\"margin\"+(\"Height\"===t?\"Top\":\"Left\")])+parseInt(i[\"margin\"+(\"Height\"===t?\"Bottom\":\"Right\")]):0)}function y(t){var e=t.body,n=t.documentElement,i=f(10)&&getComputedStyle(n);return{height:b(\"Height\",e,n,i),width:b(\"Width\",e,n,i)}}var x=function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")},w=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}(),_=function(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t},T=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])}return t};function k(t){return T({},t,{right:t.left+t.width,bottom:t.top+t.height})}function C(t){var e={};try{if(f(10)){e=t.getBoundingClientRect();var n=m(t,\"top\"),i=m(t,\"left\");e.top+=n,e.left+=i,e.bottom+=n,e.right+=i}else e=t.getBoundingClientRect()}catch(t){}var o={left:e.left,top:e.top,width:e.right-e.left,height:e.bottom-e.top},a=\"HTML\"===t.nodeName?y(t.ownerDocument):{},r=a.width||t.clientWidth||o.right-o.left,s=a.height||t.clientHeight||o.bottom-o.top,l=t.offsetWidth-r,u=t.offsetHeight-s;if(l||u){var d=c(t);l-=g(d,\"x\"),u-=g(d,\"y\"),o.width-=l,o.height-=u}return k(o)}function E(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=f(10),o=\"HTML\"===e.nodeName,a=C(t),r=C(e),s=u(t),l=c(e),d=parseFloat(l.borderTopWidth,10),p=parseFloat(l.borderLeftWidth,10);n&&o&&(r.top=Math.max(r.top,0),r.left=Math.max(r.left,0));var h=k({top:a.top-r.top-d,left:a.left-r.left-p,width:a.width,height:a.height});if(h.marginTop=0,h.marginLeft=0,!i&&o){var A=parseFloat(l.marginTop,10),v=parseFloat(l.marginLeft,10);h.top-=d-A,h.bottom-=d-A,h.left-=p-v,h.right-=p-v,h.marginTop=A,h.marginLeft=v}return(i&&!n?e.contains(s):e===s&&\"BODY\"!==s.nodeName)&&(h=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=m(e,\"top\"),o=m(e,\"left\"),a=n?-1:1;return t.top+=i*a,t.bottom+=i*a,t.left+=o*a,t.right+=o*a,t}(h,e)),h}function M(t){if(!t||!t.parentElement||f())return document.documentElement;for(var e=t.parentElement;e&&\"none\"===c(e,\"transform\");)e=e.parentElement;return e||document.documentElement}function S(t,e,n,i){var o=arguments.length>4&&void 0!==arguments[4]&&arguments[4],a={top:0,left:0},r=o?M(t):v(t,e);if(\"viewport\"===i)a=function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=t.ownerDocument.documentElement,i=E(t,n),o=Math.max(n.clientWidth,window.innerWidth||0),a=Math.max(n.clientHeight,window.innerHeight||0),r=e?0:m(n),s=e?0:m(n,\"left\");return k({top:r-i.top+i.marginTop,left:s-i.left+i.marginLeft,width:o,height:a})}(r,o);else{var s=void 0;\"scrollParent\"===i?\"BODY\"===(s=u(l(e))).nodeName&&(s=t.ownerDocument.documentElement):s=\"window\"===i?t.ownerDocument.documentElement:i;var d=E(s,r,o);if(\"HTML\"!==s.nodeName||function t(e){var n=e.nodeName;if(\"BODY\"===n||\"HTML\"===n)return!1;if(\"fixed\"===c(e,\"position\"))return!0;var i=l(e);return!!i&&t(i)}(r))a=d;else{var p=y(t.ownerDocument),f=p.height,h=p.width;a.top+=d.top-d.marginTop,a.bottom=f+d.top,a.left+=d.left-d.marginLeft,a.right=h+d.left}}var A=\"number\"==typeof(n=n||0);return a.left+=A?n:n.left||0,a.top+=A?n:n.top||0,a.right-=A?n:n.right||0,a.bottom-=A?n:n.bottom||0,a}function D(t,e,n,i,o){var a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===t.indexOf(\"auto\"))return t;var r=S(n,i,a,o),s={top:{width:r.width,height:e.top-r.top},right:{width:r.right-e.right,height:r.height},bottom:{width:r.width,height:r.bottom-e.bottom},left:{width:e.left-r.left,height:r.height}},c=Object.keys(s).map(function(t){return T({key:t},s[t],{area:(e=s[t],e.width*e.height)});var e}).sort(function(t,e){return e.area-t.area}),l=c.filter(function(t){var e=t.width,i=t.height;return e>=n.clientWidth&&i>=n.clientHeight}),u=l.length>0?l[0].key:c[0].key,d=t.split(\"-\")[1];return u+(d?\"-\"+d:\"\")}function O(t,e,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;return E(n,i?M(e):v(e,n),i)}function B(t){var e=t.ownerDocument.defaultView.getComputedStyle(t),n=parseFloat(e.marginTop||0)+parseFloat(e.marginBottom||0),i=parseFloat(e.marginLeft||0)+parseFloat(e.marginRight||0);return{width:t.offsetWidth+i,height:t.offsetHeight+n}}function I(t){var e={left:\"right\",right:\"left\",bottom:\"top\",top:\"bottom\"};return t.replace(/left|right|bottom|top/g,function(t){return e[t]})}function N(t,e,n){n=n.split(\"-\")[0];var i=B(t),o={width:i.width,height:i.height},a=-1!==[\"right\",\"left\"].indexOf(n),r=a?\"top\":\"left\",s=a?\"left\":\"top\",c=a?\"height\":\"width\",l=a?\"width\":\"height\";return o[r]=e[r]+e[c]/2-i[c]/2,o[s]=n===s?e[s]-i[l]:e[I(s)],o}function L(t,e){return Array.prototype.find?t.find(e):t.filter(e)[0]}function P(t,e,n){return(void 0===n?t:t.slice(0,function(t,e,n){if(Array.prototype.findIndex)return t.findIndex(function(t){return t[e]===n});var i=L(t,function(t){return t[e]===n});return t.indexOf(i)}(t,\"name\",n))).forEach(function(t){t.function&&console.warn(\"`modifier.function` is deprecated, use `modifier.fn`!\");var n=t.function||t.fn;t.enabled&&s(n)&&(e.offsets.popper=k(e.offsets.popper),e.offsets.reference=k(e.offsets.reference),e=n(e,t))}),e}function j(t,e){return t.some(function(t){var n=t.name;return t.enabled&&n===e})}function $(t){for(var e=[!1,\"ms\",\"Webkit\",\"Moz\",\"O\"],n=t.charAt(0).toUpperCase()+t.slice(1),i=0;i<e.length;i++){var o=e[i],a=o?\"\"+o+n:t;if(void 0!==document.body.style[a])return a}return null}function F(t){var e=t.ownerDocument;return e?e.defaultView:window}function Y(t,e,n,i){n.updateBound=i,F(t).addEventListener(\"resize\",n.updateBound,{passive:!0});var o=u(t);return function t(e,n,i,o){var a=\"BODY\"===e.nodeName,r=a?e.ownerDocument.defaultView:e;r.addEventListener(n,i,{passive:!0}),a||t(u(r.parentNode),n,i,o),o.push(r)}(o,\"scroll\",n.updateBound,n.scrollParents),n.scrollElement=o,n.eventsEnabled=!0,n}function R(){var t,e;this.state.eventsEnabled&&(cancelAnimationFrame(this.scheduleUpdate),this.state=(t=this.reference,e=this.state,F(t).removeEventListener(\"resize\",e.updateBound),e.scrollParents.forEach(function(t){t.removeEventListener(\"scroll\",e.updateBound)}),e.updateBound=null,e.scrollParents=[],e.scrollElement=null,e.eventsEnabled=!1,e))}function z(t){return\"\"!==t&&!isNaN(parseFloat(t))&&isFinite(t)}function H(t,e){Object.keys(e).forEach(function(n){var i=\"\";-1!==[\"width\",\"height\",\"top\",\"right\",\"bottom\",\"left\"].indexOf(n)&&z(e[n])&&(i=\"px\"),t.style[n]=e[n]+i})}var Q=n&&/Firefox/i.test(navigator.userAgent);function V(t,e,n){var i=L(t,function(t){return t.name===e}),o=!!i&&t.some(function(t){return t.name===n&&t.enabled&&t.order<i.order});if(!o){var a=\"`\"+e+\"`\",r=\"`\"+n+\"`\";console.warn(r+\" modifier is required by \"+a+\" modifier in order to work, be sure to include it before \"+a+\"!\")}return o}var G=[\"auto-start\",\"auto\",\"auto-end\",\"top-start\",\"top\",\"top-end\",\"right-start\",\"right\",\"right-end\",\"bottom-end\",\"bottom\",\"bottom-start\",\"left-end\",\"left\",\"left-start\"],U=G.slice(3);function W(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=U.indexOf(t),i=U.slice(n+1).concat(U.slice(0,n));return e?i.reverse():i}var Z={FLIP:\"flip\",CLOCKWISE:\"clockwise\",COUNTERCLOCKWISE:\"counterclockwise\"};function X(t,e,n,i){var o=[0,0],a=-1!==[\"right\",\"left\"].indexOf(i),r=t.split(/(\\+|\\-)/).map(function(t){return t.trim()}),s=r.indexOf(L(r,function(t){return-1!==t.search(/,|\\s/)}));r[s]&&-1===r[s].indexOf(\",\")&&console.warn(\"Offsets separated by white space(s) are deprecated, use a comma (,) instead.\");var c=/\\s*,\\s*|\\s+/,l=-1!==s?[r.slice(0,s).concat([r[s].split(c)[0]]),[r[s].split(c)[1]].concat(r.slice(s+1))]:[r];return(l=l.map(function(t,i){var o=(1===i?!a:a)?\"height\":\"width\",r=!1;return t.reduce(function(t,e){return\"\"===t[t.length-1]&&-1!==[\"+\",\"-\"].indexOf(e)?(t[t.length-1]=e,r=!0,t):r?(t[t.length-1]+=e,r=!1,t):t.concat(e)},[]).map(function(t){return function(t,e,n,i){var o=t.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/),a=+o[1],r=o[2];if(!a)return t;if(0===r.indexOf(\"%\")){var s=void 0;switch(r){case\"%p\":s=n;break;case\"%\":case\"%r\":default:s=i}return k(s)[e]/100*a}if(\"vh\"===r||\"vw\"===r)return(\"vh\"===r?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*a;return a}(t,o,e,n)})})).forEach(function(t,e){t.forEach(function(n,i){z(n)&&(o[e]+=n*(\"-\"===t[i-1]?-1:1))})}),o}var q={placement:\"bottom\",positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(t){var e=t.placement,n=e.split(\"-\")[0],i=e.split(\"-\")[1];if(i){var o=t.offsets,a=o.reference,r=o.popper,s=-1!==[\"bottom\",\"top\"].indexOf(n),c=s?\"left\":\"top\",l=s?\"width\":\"height\",u={start:_({},c,a[c]),end:_({},c,a[c]+a[l]-r[l])};t.offsets.popper=T({},r,u[i])}return t}},offset:{order:200,enabled:!0,fn:function(t,e){var n=e.offset,i=t.placement,o=t.offsets,a=o.popper,r=o.reference,s=i.split(\"-\")[0],c=void 0;return c=z(+n)?[+n,0]:X(n,a,r,s),\"left\"===s?(a.top+=c[0],a.left-=c[1]):\"right\"===s?(a.top+=c[0],a.left+=c[1]):\"top\"===s?(a.left+=c[0],a.top-=c[1]):\"bottom\"===s&&(a.left+=c[0],a.top+=c[1]),t.popper=a,t},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(t,e){var n=e.boundariesElement||h(t.instance.popper);t.instance.reference===n&&(n=h(n));var i=$(\"transform\"),o=t.instance.popper.style,a=o.top,r=o.left,s=o[i];o.top=\"\",o.left=\"\",o[i]=\"\";var c=S(t.instance.popper,t.instance.reference,e.padding,n,t.positionFixed);o.top=a,o.left=r,o[i]=s,e.boundaries=c;var l=e.priority,u=t.offsets.popper,d={primary:function(t){var n=u[t];return u[t]<c[t]&&!e.escapeWithReference&&(n=Math.max(u[t],c[t])),_({},t,n)},secondary:function(t){var n=\"right\"===t?\"left\":\"top\",i=u[n];return u[t]>c[t]&&!e.escapeWithReference&&(i=Math.min(u[n],c[t]-(\"right\"===t?u.width:u.height))),_({},n,i)}};return l.forEach(function(t){var e=-1!==[\"left\",\"top\"].indexOf(t)?\"primary\":\"secondary\";u=T({},u,d[e](t))}),t.offsets.popper=u,t},priority:[\"left\",\"right\",\"top\",\"bottom\"],padding:5,boundariesElement:\"scrollParent\"},keepTogether:{order:400,enabled:!0,fn:function(t){var e=t.offsets,n=e.popper,i=e.reference,o=t.placement.split(\"-\")[0],a=Math.floor,r=-1!==[\"top\",\"bottom\"].indexOf(o),s=r?\"right\":\"bottom\",c=r?\"left\":\"top\",l=r?\"width\":\"height\";return n[s]<a(i[c])&&(t.offsets.popper[c]=a(i[c])-n[l]),n[c]>a(i[s])&&(t.offsets.popper[c]=a(i[s])),t}},arrow:{order:500,enabled:!0,fn:function(t,e){var n;if(!V(t.instance.modifiers,\"arrow\",\"keepTogether\"))return t;var i=e.element;if(\"string\"==typeof i){if(!(i=t.instance.popper.querySelector(i)))return t}else if(!t.instance.popper.contains(i))return console.warn(\"WARNING: `arrow.element` must be child of its popper element!\"),t;var o=t.placement.split(\"-\")[0],a=t.offsets,r=a.popper,s=a.reference,l=-1!==[\"left\",\"right\"].indexOf(o),u=l?\"height\":\"width\",d=l?\"Top\":\"Left\",p=d.toLowerCase(),f=l?\"left\":\"top\",h=l?\"bottom\":\"right\",A=B(i)[u];s[h]-A<r[p]&&(t.offsets.popper[p]-=r[p]-(s[h]-A)),s[p]+A>r[h]&&(t.offsets.popper[p]+=s[p]+A-r[h]),t.offsets.popper=k(t.offsets.popper);var v=s[p]+s[u]/2-A/2,m=c(t.instance.popper),g=parseFloat(m[\"margin\"+d],10),b=parseFloat(m[\"border\"+d+\"Width\"],10),y=v-t.offsets.popper[p]-g-b;return y=Math.max(Math.min(r[u]-A,y),0),t.arrowElement=i,t.offsets.arrow=(_(n={},p,Math.round(y)),_(n,f,\"\"),n),t},element:\"[x-arrow]\"},flip:{order:600,enabled:!0,fn:function(t,e){if(j(t.instance.modifiers,\"inner\"))return t;if(t.flipped&&t.placement===t.originalPlacement)return t;var n=S(t.instance.popper,t.instance.reference,e.padding,e.boundariesElement,t.positionFixed),i=t.placement.split(\"-\")[0],o=I(i),a=t.placement.split(\"-\")[1]||\"\",r=[];switch(e.behavior){case Z.FLIP:r=[i,o];break;case Z.CLOCKWISE:r=W(i);break;case Z.COUNTERCLOCKWISE:r=W(i,!0);break;default:r=e.behavior}return r.forEach(function(s,c){if(i!==s||r.length===c+1)return t;i=t.placement.split(\"-\")[0],o=I(i);var l=t.offsets.popper,u=t.offsets.reference,d=Math.floor,p=\"left\"===i&&d(l.right)>d(u.left)||\"right\"===i&&d(l.left)<d(u.right)||\"top\"===i&&d(l.bottom)>d(u.top)||\"bottom\"===i&&d(l.top)<d(u.bottom),f=d(l.left)<d(n.left),h=d(l.right)>d(n.right),A=d(l.top)<d(n.top),v=d(l.bottom)>d(n.bottom),m=\"left\"===i&&f||\"right\"===i&&h||\"top\"===i&&A||\"bottom\"===i&&v,g=-1!==[\"top\",\"bottom\"].indexOf(i),b=!!e.flipVariations&&(g&&\"start\"===a&&f||g&&\"end\"===a&&h||!g&&\"start\"===a&&A||!g&&\"end\"===a&&v),y=!!e.flipVariationsByContent&&(g&&\"start\"===a&&h||g&&\"end\"===a&&f||!g&&\"start\"===a&&v||!g&&\"end\"===a&&A),x=b||y;(p||m||x)&&(t.flipped=!0,(p||m)&&(i=r[c+1]),x&&(a=function(t){return\"end\"===t?\"start\":\"start\"===t?\"end\":t}(a)),t.placement=i+(a?\"-\"+a:\"\"),t.offsets.popper=T({},t.offsets.popper,N(t.instance.popper,t.offsets.reference,t.placement)),t=P(t.instance.modifiers,t,\"flip\"))}),t},behavior:\"flip\",padding:5,boundariesElement:\"viewport\",flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:function(t){var e=t.placement,n=e.split(\"-\")[0],i=t.offsets,o=i.popper,a=i.reference,r=-1!==[\"left\",\"right\"].indexOf(n),s=-1===[\"top\",\"left\"].indexOf(n);return o[r?\"left\":\"top\"]=a[n]-(s?o[r?\"width\":\"height\"]:0),t.placement=I(e),t.offsets.popper=k(o),t}},hide:{order:800,enabled:!0,fn:function(t){if(!V(t.instance.modifiers,\"hide\",\"preventOverflow\"))return t;var e=t.offsets.reference,n=L(t.instance.modifiers,function(t){return\"preventOverflow\"===t.name}).boundaries;if(e.bottom<n.top||e.left>n.right||e.top>n.bottom||e.right<n.left){if(!0===t.hide)return t;t.hide=!0,t.attributes[\"x-out-of-boundaries\"]=\"\"}else{if(!1===t.hide)return t;t.hide=!1,t.attributes[\"x-out-of-boundaries\"]=!1}return t}},computeStyle:{order:850,enabled:!0,fn:function(t,e){var n=e.x,i=e.y,o=t.offsets.popper,a=L(t.instance.modifiers,function(t){return\"applyStyle\"===t.name}).gpuAcceleration;void 0!==a&&console.warn(\"WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!\");var r=void 0!==a?a:e.gpuAcceleration,s=h(t.instance.popper),c=C(s),l={position:o.position},u=function(t,e){var n=t.offsets,i=n.popper,o=n.reference,a=Math.round,r=Math.floor,s=function(t){return t},c=a(o.width),l=a(i.width),u=-1!==[\"left\",\"right\"].indexOf(t.placement),d=-1!==t.placement.indexOf(\"-\"),p=e?u||d||c%2==l%2?a:r:s,f=e?a:s;return{left:p(c%2==1&&l%2==1&&!d&&e?i.left-1:i.left),top:f(i.top),bottom:f(i.bottom),right:p(i.right)}}(t,window.devicePixelRatio<2||!Q),d=\"bottom\"===n?\"top\":\"bottom\",p=\"right\"===i?\"left\":\"right\",f=$(\"transform\"),A=void 0,v=void 0;if(v=\"bottom\"===d?\"HTML\"===s.nodeName?-s.clientHeight+u.bottom:-c.height+u.bottom:u.top,A=\"right\"===p?\"HTML\"===s.nodeName?-s.clientWidth+u.right:-c.width+u.right:u.left,r&&f)l[f]=\"translate3d(\"+A+\"px, \"+v+\"px, 0)\",l[d]=0,l[p]=0,l.willChange=\"transform\";else{var m=\"bottom\"===d?-1:1,g=\"right\"===p?-1:1;l[d]=v*m,l[p]=A*g,l.willChange=d+\", \"+p}var b={\"x-placement\":t.placement};return t.attributes=T({},b,t.attributes),t.styles=T({},l,t.styles),t.arrowStyles=T({},t.offsets.arrow,t.arrowStyles),t},gpuAcceleration:!0,x:\"bottom\",y:\"right\"},applyStyle:{order:900,enabled:!0,fn:function(t){var e,n;return H(t.instance.popper,t.styles),e=t.instance.popper,n=t.attributes,Object.keys(n).forEach(function(t){!1!==n[t]?e.setAttribute(t,n[t]):e.removeAttribute(t)}),t.arrowElement&&Object.keys(t.arrowStyles).length&&H(t.arrowElement,t.arrowStyles),t},onLoad:function(t,e,n,i,o){var a=O(o,e,t,n.positionFixed),r=D(n.placement,a,e,t,n.modifiers.flip.boundariesElement,n.modifiers.flip.padding);return e.setAttribute(\"x-placement\",r),H(e,{position:n.positionFixed?\"fixed\":\"absolute\"}),n},gpuAcceleration:void 0}}},K=function(){function t(e,n){var i=this,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};x(this,t),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=r(this.update.bind(this)),this.options=T({},t.Defaults,o),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=e&&e.jquery?e[0]:e,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(T({},t.Defaults.modifiers,o.modifiers)).forEach(function(e){i.options.modifiers[e]=T({},t.Defaults.modifiers[e]||{},o.modifiers?o.modifiers[e]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(t){return T({name:t},i.options.modifiers[t])}).sort(function(t,e){return t.order-e.order}),this.modifiers.forEach(function(t){t.enabled&&s(t.onLoad)&&t.onLoad(i.reference,i.popper,i.options,t,i.state)}),this.update();var a=this.options.eventsEnabled;a&&this.enableEventListeners(),this.state.eventsEnabled=a}return w(t,[{key:\"update\",value:function(){return function(){if(!this.state.isDestroyed){var t={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};t.offsets.reference=O(this.state,this.popper,this.reference,this.options.positionFixed),t.placement=D(this.options.placement,t.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),t.originalPlacement=t.placement,t.positionFixed=this.options.positionFixed,t.offsets.popper=N(this.popper,t.offsets.reference,t.placement),t.offsets.popper.position=this.options.positionFixed?\"fixed\":\"absolute\",t=P(this.modifiers,t),this.state.isCreated?this.options.onUpdate(t):(this.state.isCreated=!0,this.options.onCreate(t))}}.call(this)}},{key:\"destroy\",value:function(){return function(){return this.state.isDestroyed=!0,j(this.modifiers,\"applyStyle\")&&(this.popper.removeAttribute(\"x-placement\"),this.popper.style.position=\"\",this.popper.style.top=\"\",this.popper.style.left=\"\",this.popper.style.right=\"\",this.popper.style.bottom=\"\",this.popper.style.willChange=\"\",this.popper.style[$(\"transform\")]=\"\"),this.disableEventListeners(),this.options.removeOnDestroy&&this.popper.parentNode.removeChild(this.popper),this}.call(this)}},{key:\"enableEventListeners\",value:function(){return function(){this.state.eventsEnabled||(this.state=Y(this.reference,this.options,this.state,this.scheduleUpdate))}.call(this)}},{key:\"disableEventListeners\",value:function(){return R.call(this)}}]),t}();K.Utils=(\"undefined\"!=typeof window?window:t).PopperUtils,K.placements=G,K.Defaults=q,e.a=K}).call(this,n(15))},function(t,e,n){\"use strict\";\n/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */e.a=function(t){return Math.random().toString(36).replace(/[^a-z]+/g,\"\").substr(0,t||5)}},function(t,e,n){var i=n(42);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"6d914181\",i,!0,{})},function(t,e,n){var i=n(44);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"2fc216d3\",i,!0,{})},function(t,e,n){var i=n(46);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"95523852\",i,!0,{})},function(t,e,n){\"use strict\";(function(t){n.d(e,\"a\",function(){return a});var i=void 0;function o(){o.init||(o.init=!0,i=-1!==function(){var t=window.navigator.userAgent,e=t.indexOf(\"MSIE \");if(e>0)return parseInt(t.substring(e+5,t.indexOf(\".\",e)),10);if(t.indexOf(\"Trident/\")>0){var n=t.indexOf(\"rv:\");return parseInt(t.substring(n+3,t.indexOf(\".\",n)),10)}var i=t.indexOf(\"Edge/\");return i>0?parseInt(t.substring(i+5,t.indexOf(\".\",i)),10):-1}())}var a={render:function(){var t=this.$createElement;return(this._self._c||t)(\"div\",{staticClass:\"resize-observer\",attrs:{tabindex:\"-1\"}})},staticRenderFns:[],_scopeId:\"data-v-b329ee4c\",name:\"resize-observer\",methods:{compareAndNotify:function(){this._w===this.$el.offsetWidth&&this._h===this.$el.offsetHeight||(this._w=this.$el.offsetWidth,this._h=this.$el.offsetHeight,this.$emit(\"notify\"))},addResizeHandlers:function(){this._resizeObject.contentDocument.defaultView.addEventListener(\"resize\",this.compareAndNotify),this.compareAndNotify()},removeResizeHandlers:function(){this._resizeObject&&this._resizeObject.onload&&(!i&&this._resizeObject.contentDocument&&this._resizeObject.contentDocument.defaultView.removeEventListener(\"resize\",this.compareAndNotify),delete this._resizeObject.onload)}},mounted:function(){var t=this;o(),this.$nextTick(function(){t._w=t.$el.offsetWidth,t._h=t.$el.offsetHeight});var e=document.createElement(\"object\");this._resizeObject=e,e.setAttribute(\"aria-hidden\",\"true\"),e.setAttribute(\"tabindex\",-1),e.onload=this.addResizeHandlers,e.type=\"text/html\",i&&this.$el.appendChild(e),e.data=\"about:blank\",i||this.$el.appendChild(e)},beforeDestroy:function(){this.removeResizeHandlers()}};var r={version:\"0.4.5\",install:function(t){t.component(\"resize-observer\",a),t.component(\"ResizeObserver\",a)}},s=null;\"undefined\"!=typeof window?s=window.Vue:void 0!==t&&(s=t.Vue),s&&s.use(r)}).call(this,n(15))},function(t,e,n){var i=n(81);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"1351c3b7\",i,!0,{})},function(t,e,n){\"use strict\";\n/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */e.a=function(t){t.mounted?Array.isArray(t.mounted)||(t.mounted=[t.mounted]):t.mounted=[],t.mounted.push(function(){this.$el.setAttribute(\"data-v-\".concat(\"6673a70\"),\"\")})}},function(t,e,n){\"use strict\";n.r(e);var i={name:\"PopoverMenuItem\",props:{item:{type:Object,required:!0,default:function(){return{key:\"nextcloud-link\",href:\"https://nextcloud.com\",icon:\"icon-links\",text:\"Nextcloud\"}},validator:function(t){return!t.input||-1!==[\"text\",\"checkbox\"].indexOf(t.input)}}},computed:{key:function(){return this.item.key?this.item.key:Math.round(16*Math.random()*1e6).toString(16)},iconIsUrl:function(){try{return new URL(this.item.icon),!0}catch(t){return!1}}},methods:{action:function(t){this.item.action&&this.item.action(t)}}},o=(n(41),n(43),n(0)),a={name:\"PopoverMenu\",components:{PopoverMenuItem:Object(o.a)(i,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"li\",[t.item.href?n(\"a\",{staticClass:\"focusable\",attrs:{href:t.item.href?t.item.href:\"#\",target:t.item.target?t.item.target:\"\",download:t.item.download,rel:\"noreferrer noopener\"},on:{click:t.action}},[t.iconIsUrl?n(\"img\",{attrs:{src:t.item.icon}}):n(\"span\",{class:t.item.icon}),t._v(\" \"),t.item.text&&t.item.longtext?n(\"p\",[n(\"strong\",{staticClass:\"menuitem-text\"},[t._v(\"\\n\\t\\t\\t\\t\"+t._s(t.item.text)+\"\\n\\t\\t\\t\")]),n(\"br\"),t._v(\" \"),n(\"span\",{staticClass:\"menuitem-text-detail\"},[t._v(\"\\n\\t\\t\\t\\t\"+t._s(t.item.longtext)+\"\\n\\t\\t\\t\")])]):t.item.text?n(\"span\",[t._v(\"\\n\\t\\t\\t\"+t._s(t.item.text)+\"\\n\\t\\t\")]):t.item.longtext?n(\"p\",[t._v(\"\\n\\t\\t\\t\"+t._s(t.item.longtext)+\"\\n\\t\\t\")]):t._e()]):t.item.input?n(\"span\",{staticClass:\"menuitem\",class:{active:t.item.active}},[\"checkbox\"!==t.item.input?n(\"span\",{class:t.item.icon}):t._e(),t._v(\" \"),\"text\"===t.item.input?n(\"form\",{class:t.item.input,on:{submit:function(e){return e.preventDefault(),t.item.action(e)}}},[n(\"input\",{attrs:{type:t.item.input,placeholder:t.item.text,required:\"\"},domProps:{value:t.item.value}}),t._v(\" \"),n(\"input\",{staticClass:\"icon-confirm\",attrs:{type:\"submit\",value:\"\"}})]):[\"checkbox\"===t.item.input?n(\"input\",{directives:[{name:\"model\",rawName:\"v-model\",value:t.item.model,expression:\"item.model\"}],class:t.item.input,attrs:{id:t.key,type:\"checkbox\"},domProps:{checked:Array.isArray(t.item.model)?t._i(t.item.model,null)>-1:t.item.model},on:{change:[function(e){var n=t.item.model,i=e.target,o=!!i.checked;if(Array.isArray(n)){var a=t._i(n,null);i.checked?a<0&&t.$set(t.item,\"model\",n.concat([null])):a>-1&&t.$set(t.item,\"model\",n.slice(0,a).concat(n.slice(a+1)))}else t.$set(t.item,\"model\",o)},t.item.action]}}):\"radio\"===t.item.input?n(\"input\",{directives:[{name:\"model\",rawName:\"v-model\",value:t.item.model,expression:\"item.model\"}],class:t.item.input,attrs:{id:t.key,type:\"radio\"},domProps:{checked:t._q(t.item.model,null)},on:{change:[function(e){return t.$set(t.item,\"model\",null)},t.item.action]}}):n(\"input\",{directives:[{name:\"model\",rawName:\"v-model\",value:t.item.model,expression:\"item.model\"}],class:t.item.input,attrs:{id:t.key,type:t.item.input},domProps:{value:t.item.model},on:{change:t.item.action,input:function(e){e.target.composing||t.$set(t.item,\"model\",e.target.value)}}}),t._v(\" \"),n(\"label\",{attrs:{for:t.key},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.item.action(e)}}},[t._v(\"\\n\\t\\t\\t\\t\"+t._s(t.item.text)+\"\\n\\t\\t\\t\")])]],2):t.item.action?n(\"button\",{staticClass:\"menuitem focusable\",class:{active:t.item.active},attrs:{disabled:t.item.disabled},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.item.action(e)}}},[n(\"span\",{class:t.item.icon}),t._v(\" \"),t.item.text&&t.item.longtext?n(\"p\",[n(\"strong\",{staticClass:\"menuitem-text\"},[t._v(\"\\n\\t\\t\\t\\t\"+t._s(t.item.text)+\"\\n\\t\\t\\t\")]),n(\"br\"),t._v(\" \"),n(\"span\",{staticClass:\"menuitem-text-detail\"},[t._v(\"\\n\\t\\t\\t\\t\"+t._s(t.item.longtext)+\"\\n\\t\\t\\t\")])]):t.item.text?n(\"span\",[t._v(\"\\n\\t\\t\\t\"+t._s(t.item.text)+\"\\n\\t\\t\")]):t.item.longtext?n(\"p\",[t._v(\"\\n\\t\\t\\t\"+t._s(t.item.longtext)+\"\\n\\t\\t\")]):t._e()]):n(\"span\",{staticClass:\"menuitem\",class:{active:t.item.active}},[n(\"span\",{class:t.item.icon}),t._v(\" \"),t.item.text&&t.item.longtext?n(\"p\",[n(\"strong\",{staticClass:\"menuitem-text\"},[t._v(\"\\n\\t\\t\\t\\t\"+t._s(t.item.text)+\"\\n\\t\\t\\t\")]),n(\"br\"),t._v(\" \"),n(\"span\",{staticClass:\"menuitem-text-detail\"},[t._v(\"\\n\\t\\t\\t\\t\"+t._s(t.item.longtext)+\"\\n\\t\\t\\t\")])]):t.item.text?n(\"span\",[t._v(\"\\n\\t\\t\\t\"+t._s(t.item.text)+\"\\n\\t\\t\")]):t.item.longtext?n(\"p\",[t._v(\"\\n\\t\\t\\t\"+t._s(t.item.longtext)+\"\\n\\t\\t\")]):t._e()])])},[],!1,null,\"8dc4efb0\",null).exports},props:{menu:{type:Array,default:function(){return[{href:\"https://nextcloud.com\",icon:\"icon-links\",text:\"Nextcloud\"}]},required:!0}}},r=(n(45),Object(o.a)(a,function(){var t=this.$createElement,e=this._self._c||t;return e(\"ul\",this._l(this.menu,function(t,n){return e(\"PopoverMenuItem\",{key:n,attrs:{item:t}})}),1)},[],!1,null,\"2f982451\",null).exports);n.d(e,\"PopoverMenu\",function(){return r});\n/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */e.default=r},function(t,e){},function(t,e,n){var i=n(91);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"2601b667\",i,!0,{})},function(t,e,n){var i=n(95);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"a39cae00\",i,!0,{})},function(t,e,n){var i=n(97);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"30f6e694\",i,!0,{})},function(t,e,n){var i=n(120);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"51023bd3\",i,!0,{})},function(t,e,n){\"use strict\";n.r(e);var i=n(13),o=n.n(i),a=n(6),r=n(17),s=function(t){var e=t.getBoundingClientRect(),n=document.documentElement.clientHeight,i=document.documentElement.clientWidth,o=Object.assign({});return o.top=e.top<0,o.left=e.left<0,o.bottom=e.bottom>n,o.right=e.right>i,o.any=o.top||o.left||o.bottom||o.right,o.all=o.top&&o.left&&o.bottom&&o.right,o.offsetY=o.top?e.top:o.bottom?e.bottom-n:0,o.offsetX=o.left?e.left:o.right?e.right-i:0,o},c=n(3),l=n.n(c),u=function(t,e,n){t.forEach(function(i,o){var a=!i.componentOptions&&i.tag,r=i.componentOptions&&\"string\"==typeof i.componentOptions.tag&&-1===e.indexOf(i.componentOptions.tag);(a||r)&&(l.a.util.warn(\"\".concat(a?i.tag:i.componentOptions.tag,\" is not allowed inside the \").concat(n.$options.name,\" component\"),n),t.splice(o,1))})},d=[\"ActionButton\",\"ActionCheckbox\",\"ActionInput\",\"ActionLink\",\"ActionRouter\",\"ActionText\",\"ActionTextEditable\"],p={name:\"Actions\",directives:{ClickOutside:o.a,tooltip:a.default},props:{open:{type:Boolean,default:!1},menuAlign:{type:String,default:\"center\",validator:function(t){return[\"left\",\"center\",\"right\"].indexOf(t)>-1}}},data:function(){return{actions:[],opened:this.open,focusIndex:0,randomId:\"menu-\"+Object(r.a)(),offsetX:0}},computed:{isValidSingleAction:function(){return 1===this.actions.length},firstAction:function(){return this.actions[0]},firstActionElement:function(){if(this.firstAction&&this.firstAction.componentOptions){var t=this.firstAction.componentOptions.tag;if(\"ActionLink\"===t)return{is:\"a\",href:this.getVNodeProp(this.firstAction,\"href\"),target:this.getVNodeProp(this.firstAction,\"target\")};if(\"ActionRouter\"===t)return{is:\"router-link\",to:this.getVNodeProp(this.firstAction,\"to\"),exact:this.getVNodeProp(this.firstAction,\"exact\")}}return{is:\"button\"}},firstActionEvent:function(){return this.firstAction&&this.firstAction.componentOptions&&this.firstAction.componentOptions.listeners&&this.firstAction.componentOptions.listeners.click?\"click\":null}},watch:{open:function(t){var e=this;this.opened=t,this.opened&&this.$nextTick(function(){e.onOpen()})}},beforeMount:function(){this.initActions(),u(this.$slots.default,d,this)},mounted:function(){this.popupItem=this.$el},beforeUpdate:function(){u(this.$slots.default,d,this)},methods:{toggleMenu:function(){var t=this;this.opened=!this.opened,this.opened&&(this.$nextTick(function(){t.onOpen(),t.focusFirstAction()}),this.$emit(\"open\")),this.$emit(\"update:open\",this.opened)},closeMenu:function(){this.opened&&(this.$emit(\"update:open\",!1),this.$emit(\"close\")),this.opened=!1,this.offsetX=0},onOpen:function(){this.offsetX=0;var t=s(this.$refs.menu);t.any&&(this.offsetX=t.offsetX>0?Math.round(t.offsetX)+5:Math.round(t.offsetX)-5)},onMouseFocusAction:function(t){if(document.activeElement!==t.target){var e=t.target.closest(\"li\");if(e){var n=e.querySelector(\".focusable\");if(n){var i=this.$refs.menu.querySelectorAll(\".focusable\"),o=Array.prototype.indexOf.call(i,n);o>-1&&(this.focusIndex=o,this.focusAction())}}}},removeCurrentActive:function(){var t=this.$refs.menu.querySelector(\"li.active\");t&&t.classList.remove(\"active\")},focusAction:function(){var t=this.$refs.menu.querySelectorAll(\".focusable\")[this.focusIndex];if(t){var e=t.closest(\"li\");t.focus(),e&&(this.removeCurrentActive(),e.classList.add(\"active\"))}},focusPreviousAction:function(){this.focusIndex=Math.max(this.focusIndex-1,0),this.focusAction()},focusNextAction:function(){this.focusIndex=Math.min(this.focusIndex+1,this.$refs.menu.querySelectorAll(\".focusable\").length-1),this.focusAction()},focusFirstAction:function(){this.focusIndex=0,this.focusAction()},focusLastAction:function(){this.focusIndex=this.$el.querySelectorAll(\".focusable\").length-1,this.focusAction()},getVNodeProp:function(t,e){return t.componentOptions.propsData[e]},execFirstAction:function(t){this.firstAction&&this.firstAction.componentOptions&&this.firstAction.componentOptions.listeners&&this.firstAction.componentOptions.listeners.click&&(this.firstAction.componentOptions.listeners.click(t),t.preventDefault())},initActions:function(){this.actions=this.$slots.default.filter(function(t){return t&&t.componentOptions})||[]}}},f=(n(80),n(0)),h=n(25),A=n.n(h),v=Object(f.a)(p,function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.isValidSingleAction?n(\"element\",t._b({directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:t.getVNodeProp(t.firstAction,\"text\"),expression:\"getVNodeProp(firstAction, 'text')\",modifiers:{auto:!0}}],staticClass:\"action-item action-item--single\",class:t.getVNodeProp(t.firstAction,\"icon\"),attrs:{rel:\"noreferrer noopener\"},on:t._d({},[t.firstActionEvent,t.execFirstAction])},\"element\",t.firstActionElement,!1),[n(\"span\",{attrs:{\"aria-hidden\":!0,hidden:\"\"}},[t._t(\"default\")],2)]):n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.actions.length>0,expression:\"actions.length > 0\"}],staticClass:\"action-item\",class:{\"action-item--open\":t.opened},on:{keydown:[function(e){return!e.type.indexOf(\"key\")&&t._k(e.keyCode,\"up\",38,e.key,[\"Up\",\"ArrowUp\"])?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.focusPreviousAction(e))},function(e){return!e.type.indexOf(\"key\")&&t._k(e.keyCode,\"down\",40,e.key,[\"Down\",\"ArrowDown\"])?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.focusNextAction(e))},function(e){return!e.type.indexOf(\"key\")&&t._k(e.keyCode,\"tab\",9,e.key,\"Tab\")?null:e.shiftKey?(e.preventDefault(),t.focusPreviousAction(e)):null},function(e){return!e.type.indexOf(\"key\")&&t._k(e.keyCode,\"page-up\",void 0,e.key,void 0)?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.focusFirstAction(e))},function(e){return!e.type.indexOf(\"key\")&&t._k(e.keyCode,\"page-down\",void 0,e.key,void 0)?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.focusLastAction(e))},function(e){return!e.type.indexOf(\"key\")&&t._k(e.keyCode,\"esc\",27,e.key,[\"Esc\",\"Escape\"])?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.closeMenu(e))}]}},[n(\"a\",{directives:[{name:\"click-outside\",rawName:\"v-click-outside\",value:t.closeMenu,expression:\"closeMenu\"}],staticClass:\"icon action-item__menutoggle\",attrs:{href:\"#\",\"aria-haspopup\":\"true\",\"aria-controls\":t.randomId,\"aria-expanded\":t.opened},on:{click:function(e){return e.preventDefault(),t.toggleMenu(e)},keydown:function(e){return!e.type.indexOf(\"key\")&&t._k(e.keyCode,\"space\",32,e.key,[\" \",\"Spacebar\"])?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.toggleMenu(e))}}}),t._v(\" \"),t.opened?n(\"div\",{ref:\"menu\",staticClass:\"action-item__menu\",class:[\"menu-\"+t.menuAlign,{open:t.opened}],style:{marginRight:t.offsetX+\"px\"},attrs:{tabindex:\"-1\"},on:{mousemove:t.onMouseFocusAction}},[n(\"div\",{staticClass:\"action-item__menu_arrow\",style:{transform:\"translateX(\"+t.offsetX+\"px)\"}}),t._v(\" \"),n(\"ul\",{attrs:{id:t.randomId,tabindex:\"-1\"}},[t._t(\"default\")],2)]):t._e()])},[],!1,null,\"627a433f\",null);\"function\"==typeof A.a&&A()(v);var m=v.exports;n.d(e,\"Actions\",function(){return m});\n/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */e.default=m},function(t,e,n){window,t.exports=function(t){var e={};function n(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return t[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:i})},n.r=function(t){Object.defineProperty(t,\"__esModule\",{value:!0})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=3)}([function(t,e,n){var i;!function(o){\"use strict\";var a={},r=/d{1,4}|M{1,4}|YY(?:YY)?|S{1,3}|Do|ZZ|([HhMsDm])\\1?|[aA]|\"[^\"]*\"|'[^']*'/g,s=/\\d\\d?/,c=/[0-9]*['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+|[\\u0600-\\u06FF\\/]+(\\s*?[\\u0600-\\u06FF]+){1,2}/i,l=/\\[([^]*?)\\]/gm,u=function(){};function d(t,e){for(var n=[],i=0,o=t.length;i<o;i++)n.push(t[i].substr(0,e));return n}function p(t){return function(e,n,i){var o=i[t].indexOf(n.charAt(0).toUpperCase()+n.substr(1).toLowerCase());~o&&(e.month=o)}}function f(t,e){for(t=String(t),e=e||2;t.length<e;)t=\"0\"+t;return t}var h=[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],A=[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],v=d(A,3),m=d(h,3);a.i18n={dayNamesShort:m,dayNames:h,monthNamesShort:v,monthNames:A,amPm:[\"am\",\"pm\"],DoFn:function(t){return t+[\"th\",\"st\",\"nd\",\"rd\"][t%10>3?0:(t-t%10!=10)*t%10]}};var g={D:function(t){return t.getDate()},DD:function(t){return f(t.getDate())},Do:function(t,e){return e.DoFn(t.getDate())},d:function(t){return t.getDay()},dd:function(t){return f(t.getDay())},ddd:function(t,e){return e.dayNamesShort[t.getDay()]},dddd:function(t,e){return e.dayNames[t.getDay()]},M:function(t){return t.getMonth()+1},MM:function(t){return f(t.getMonth()+1)},MMM:function(t,e){return e.monthNamesShort[t.getMonth()]},MMMM:function(t,e){return e.monthNames[t.getMonth()]},YY:function(t){return String(t.getFullYear()).substr(2)},YYYY:function(t){return f(t.getFullYear(),4)},h:function(t){return t.getHours()%12||12},hh:function(t){return f(t.getHours()%12||12)},H:function(t){return t.getHours()},HH:function(t){return f(t.getHours())},m:function(t){return t.getMinutes()},mm:function(t){return f(t.getMinutes())},s:function(t){return t.getSeconds()},ss:function(t){return f(t.getSeconds())},S:function(t){return Math.round(t.getMilliseconds()/100)},SS:function(t){return f(Math.round(t.getMilliseconds()/10),2)},SSS:function(t){return f(t.getMilliseconds(),3)},a:function(t,e){return t.getHours()<12?e.amPm[0]:e.amPm[1]},A:function(t,e){return t.getHours()<12?e.amPm[0].toUpperCase():e.amPm[1].toUpperCase()},ZZ:function(t){var e=t.getTimezoneOffset();return(e>0?\"-\":\"+\")+f(100*Math.floor(Math.abs(e)/60)+Math.abs(e)%60,4)}},b={D:[s,function(t,e){t.day=e}],Do:[new RegExp(s.source+c.source),function(t,e){t.day=parseInt(e,10)}],M:[s,function(t,e){t.month=e-1}],YY:[s,function(t,e){var n=+(\"\"+(new Date).getFullYear()).substr(0,2);t.year=\"\"+(e>68?n-1:n)+e}],h:[s,function(t,e){t.hour=e}],m:[s,function(t,e){t.minute=e}],s:[s,function(t,e){t.second=e}],YYYY:[/\\d{4}/,function(t,e){t.year=e}],S:[/\\d/,function(t,e){t.millisecond=100*e}],SS:[/\\d{2}/,function(t,e){t.millisecond=10*e}],SSS:[/\\d{3}/,function(t,e){t.millisecond=e}],d:[s,u],ddd:[c,u],MMM:[c,p(\"monthNamesShort\")],MMMM:[c,p(\"monthNames\")],a:[c,function(t,e,n){var i=e.toLowerCase();i===n.amPm[0]?t.isPm=!1:i===n.amPm[1]&&(t.isPm=!0)}],ZZ:[/([\\+\\-]\\d\\d:?\\d\\d|Z)/,function(t,e){\"Z\"===e&&(e=\"+00:00\");var n,i=(e+\"\").match(/([\\+\\-]|\\d\\d)/gi);i&&(n=60*i[1]+parseInt(i[2],10),t.timezoneOffset=\"+\"===i[0]?n:-n)}]};b.dd=b.d,b.dddd=b.ddd,b.DD=b.D,b.mm=b.m,b.hh=b.H=b.HH=b.h,b.MM=b.M,b.ss=b.s,b.A=b.a,a.masks={default:\"ddd MMM DD YYYY HH:mm:ss\",shortDate:\"M/D/YY\",mediumDate:\"MMM D, YYYY\",longDate:\"MMMM D, YYYY\",fullDate:\"dddd, MMMM D, YYYY\",shortTime:\"HH:mm\",mediumTime:\"HH:mm:ss\",longTime:\"HH:mm:ss.SSS\"},a.format=function(t,e,n){var i=n||a.i18n;if(\"number\"==typeof t&&(t=new Date(t)),\"[object Date]\"!==Object.prototype.toString.call(t)||isNaN(t.getTime()))throw new Error(\"Invalid Date in fecha.format\");var o=[];return(e=(e=(e=a.masks[e]||e||a.masks.default).replace(l,function(t,e){return o.push(e),\"??\"})).replace(r,function(e){return e in g?g[e](t,i):e.slice(1,e.length-1)})).replace(/\\?\\?/g,function(){return o.shift()})},a.parse=function(t,e,n){var i=n||a.i18n;if(\"string\"!=typeof e)throw new Error(\"Invalid format in fecha.parse\");if(e=a.masks[e]||e,t.length>1e3)return!1;var o=!0,s={};if(e.replace(r,function(e){if(b[e]){var n=b[e],a=t.search(n[0]);~a?t.replace(n[0],function(e){return n[1](s,e,i),t=t.substr(a+e.length),e}):o=!1}return b[e]?\"\":e.slice(1,e.length-1)}),!o)return!1;var c,l=new Date;return!0===s.isPm&&null!=s.hour&&12!=+s.hour?s.hour=+s.hour+12:!1===s.isPm&&12==+s.hour&&(s.hour=0),null!=s.timezoneOffset?(s.minute=+(s.minute||0)-+s.timezoneOffset,c=new Date(Date.UTC(s.year||l.getFullYear(),s.month||0,s.day||1,s.hour||0,s.minute||0,s.second||0,s.millisecond||0))):c=new Date(s.year||l.getFullYear(),s.month||0,s.day||1,s.hour||0,s.minute||0,s.second||0,s.millisecond||0),c},void 0!==t&&t.exports?t.exports=a:void 0===(i=function(){return a}.call(e,n,e,t))||(t.exports=i)}()},function(t,e){var n=/^(attrs|props|on|nativeOn|class|style|hook)$/;function i(t,e){return function(){t&&t.apply(this,arguments),e&&e.apply(this,arguments)}}t.exports=function(t){return t.reduce(function(t,e){var o,a,r,s,c;for(r in e)if(o=t[r],a=e[r],o&&n.test(r))if(\"class\"===r&&(\"string\"==typeof o&&(c=o,t[r]=o={},o[c]=!0),\"string\"==typeof a&&(c=a,e[r]=a={},a[c]=!0)),\"on\"===r||\"nativeOn\"===r||\"hook\"===r)for(s in a)o[s]=i(o[s],a[s]);else if(Array.isArray(o))t[r]=o.concat(a);else if(Array.isArray(a))t[r]=[o].concat(a);else for(s in a)o[s]=a[s];else t[r]=e[r];return t},{})}},function(t,e,n){\"use strict\";function i(t,e){for(var n=[],i={},o=0;o<e.length;o++){var a=e[o],r=a[0],s={id:t+\":\"+o,css:a[1],media:a[2],sourceMap:a[3]};i[r]?i[r].parts.push(s):n.push(i[r]={id:r,parts:[s]})}return n}n.r(e),n.d(e,\"default\",function(){return h});var o=\"undefined\"!=typeof document;if(\"undefined\"!=typeof DEBUG&&DEBUG&&!o)throw new Error(\"vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\");var a={},r=o&&(document.head||document.getElementsByTagName(\"head\")[0]),s=null,c=0,l=!1,u=function(){},d=null,p=\"data-vue-ssr-id\",f=\"undefined\"!=typeof navigator&&/msie [6-9]\\b/.test(navigator.userAgent.toLowerCase());function h(t,e,n,o){l=n,d=o||{};var r=i(t,e);return A(r),function(e){for(var n=[],o=0;o<r.length;o++){var s=r[o];(c=a[s.id]).refs--,n.push(c)}for(e?A(r=i(t,e)):r=[],o=0;o<n.length;o++){var c;if(0===(c=n[o]).refs){for(var l=0;l<c.parts.length;l++)c.parts[l]();delete a[c.id]}}}}function A(t){for(var e=0;e<t.length;e++){var n=t[e],i=a[n.id];if(i){i.refs++;for(var o=0;o<i.parts.length;o++)i.parts[o](n.parts[o]);for(;o<n.parts.length;o++)i.parts.push(m(n.parts[o]));i.parts.length>n.parts.length&&(i.parts.length=n.parts.length)}else{var r=[];for(o=0;o<n.parts.length;o++)r.push(m(n.parts[o]));a[n.id]={id:n.id,refs:1,parts:r}}}}function v(){var t=document.createElement(\"style\");return t.type=\"text/css\",r.appendChild(t),t}function m(t){var e,n,i=document.querySelector(\"style[\"+p+'~=\"'+t.id+'\"]');if(i){if(l)return u;i.parentNode.removeChild(i)}if(f){var o=c++;i=s||(s=v()),e=y.bind(null,i,o,!1),n=y.bind(null,i,o,!0)}else i=v(),e=function(t,e){var n=e.css,i=e.media,o=e.sourceMap;if(i&&t.setAttribute(\"media\",i),d.ssrId&&t.setAttribute(p,e.id),o&&(n+=\"\\n/*# sourceURL=\"+o.sources[0]+\" */\",n+=\"\\n/*# sourceMappingURL=data:application/json;base64,\"+btoa(unescape(encodeURIComponent(JSON.stringify(o))))+\" */\"),t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}.bind(null,i),n=function(){i.parentNode.removeChild(i)};return e(t),function(i){if(i){if(i.css===t.css&&i.media===t.media&&i.sourceMap===t.sourceMap)return;e(t=i)}else n()}}var g,b=(g=[],function(t,e){return g[t]=e,g.filter(Boolean).join(\"\\n\")});function y(t,e,n,i){var o=n?\"\":i.css;if(t.styleSheet)t.styleSheet.cssText=b(e,o);else{var a=document.createTextNode(o),r=t.childNodes;r[e]&&t.removeChild(r[e]),r.length?t.insertBefore(a,r[e]):t.appendChild(a)}}},function(t,e,n){\"use strict\";n.r(e);var i=n(0),o=n.n(i),a=void 0,r=function(t){return a=t.target},s={bind:function(t,e,n){t[\"@clickoutside\"]=function(i){var o=i.target,r=n&&n.context&&n.context.popupElm;!a||!o||t.contains(o)||t.contains(a)||r&&(r.contains(a)||r.contains(o))||!e.expression||!n.context[e.expression]||e.value()},document.addEventListener(\"mousedown\",r),document.addEventListener(\"mouseup\",t[\"@clickoutside\"])},unbind:function(t){document.removeEventListener(\"mousedown\",r),document.removeEventListener(\"mouseup\",t[\"@clickoutside\"])}};function c(t){return\"[object Object]\"===Object.prototype.toString.call(t)}function l(t){return t instanceof Date}function u(t){return null!=t&&!isNaN(new Date(t).getTime())}function d(t){var e=(t||\"\").split(\":\");return e.length>=2?{hours:parseInt(e[0],10),minutes:parseInt(e[1],10)}:null}function p(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"24\",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:\"a\",i=t.hours,o=(i=(i=\"24\"===e?i:i%12||12)<10?\"0\"+i:i)+\":\"+(t.minutes<10?\"0\"+t.minutes:t.minutes);if(\"12\"===e){var a=t.hours>=12?\"pm\":\"am\";\"A\"===n&&(a=a.toUpperCase()),o=o+\" \"+a}return o}function f(t,e){if(!t)return\"\";try{return o.a.format(new Date(t),e)}catch(t){return\"\"}}var h={date:{value2date:function(t){return u(t)?new Date(t):null},date2value:function(t){return t}},timestamp:{value2date:function(t){return u(t)?new Date(t):null},date2value:function(t){return t&&new Date(t).getTime()}}},A={zh:{days:[\"日\",\"一\",\"二\",\"三\",\"四\",\"五\",\"六\"],months:[\"1月\",\"2月\",\"3月\",\"4月\",\"5月\",\"6月\",\"7月\",\"8月\",\"9月\",\"10月\",\"11月\",\"12月\"],pickers:[\"未来7天\",\"未来30天\",\"最近7天\",\"最近30天\"],placeholder:{date:\"请选择日期\",dateRange:\"请选择日期范围\"}},en:{days:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],months:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],pickers:[\"next 7 days\",\"next 30 days\",\"previous 7 days\",\"previous 30 days\"],placeholder:{date:\"Select Date\",dateRange:\"Select Date Range\"}},ro:{days:[\"Lun\",\"Mar\",\"Mie\",\"Joi\",\"Vin\",\"Sâm\",\"Dum\"],months:[\"Ian\",\"Feb\",\"Mar\",\"Apr\",\"Mai\",\"Iun\",\"Iul\",\"Aug\",\"Sep\",\"Oct\",\"Noi\",\"Dec\"],pickers:[\"urmatoarele 7 zile\",\"urmatoarele 30 zile\",\"ultimele 7 zile\",\"ultimele 30 zile\"],placeholder:{date:\"Selectați Data\",dateRange:\"Selectați Intervalul De Date\"}},fr:{days:[\"Dim\",\"Lun\",\"Mar\",\"Mer\",\"Jeu\",\"Ven\",\"Sam\"],months:[\"Jan\",\"Fev\",\"Mar\",\"Avr\",\"Mai\",\"Juin\",\"Juil\",\"Aout\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],pickers:[\"7 jours suivants\",\"30 jours suivants\",\"7 jours précédents\",\"30 jours précédents\"],placeholder:{date:\"Sélectionnez une date\",dateRange:\"Sélectionnez une période\"}},es:{days:[\"Dom\",\"Lun\",\"mar\",\"Mie\",\"Jue\",\"Vie\",\"Sab\"],months:[\"Ene\",\"Feb\",\"Mar\",\"Abr\",\"May\",\"Jun\",\"Jul\",\"Ago\",\"Sep\",\"Oct\",\"Nov\",\"Dic\"],pickers:[\"próximos 7 días\",\"próximos 30 días\",\"7 días anteriores\",\"30 días anteriores\"],placeholder:{date:\"Seleccionar fecha\",dateRange:\"Seleccionar un rango de fechas\"}},\"pt-br\":{days:[\"Dom\",\"Seg\",\"Ter\",\"Qua\",\"Quin\",\"Sex\",\"Sáb\"],months:[\"Jan\",\"Fev\",\"Mar\",\"Abr\",\"Maio\",\"Jun\",\"Jul\",\"Ago\",\"Set\",\"Out\",\"Nov\",\"Dez\"],pickers:[\"próximos 7 dias\",\"próximos 30 dias\",\"7 dias anteriores\",\" 30 dias anteriores\"],placeholder:{date:\"Selecione uma data\",dateRange:\"Selecione um período\"}},ru:{days:[\"Вс\",\"Пн\",\"Вт\",\"Ср\",\"Чт\",\"Пт\",\"Сб\"],months:[\"Янв\",\"Фев\",\"Мар\",\"Апр\",\"Май\",\"Июн\",\"Июл\",\"Авг\",\"Сен\",\"Окт\",\"Ноя\",\"Дек\"],pickers:[\"след. 7 дней\",\"след. 30 дней\",\"прош. 7 дней\",\"прош. 30 дней\"],placeholder:{date:\"Выберите дату\",dateRange:\"Выберите период\"}},de:{days:[\"So\",\"Mo\",\"Di\",\"Mi\",\"Do\",\"Fr\",\"Sa\"],months:[\"Januar\",\"Februar\",\"März\",\"April\",\"Mai\",\"Juni\",\"Juli\",\"August\",\"September\",\"Oktober\",\"November\",\"Dezember\"],pickers:[\"nächsten 7 Tage\",\"nächsten 30 Tage\",\"vorigen 7 Tage\",\"vorigen 30 Tage\"],placeholder:{date:\"Datum auswählen\",dateRange:\"Zeitraum auswählen\"}},it:{days:[\"Dom\",\"Lun\",\"Mar\",\"Mer\",\"Gio\",\"Ven\",\"Sab\"],months:[\"Gen\",\"Feb\",\"Mar\",\"Apr\",\"Mag\",\"Giu\",\"Lug\",\"Ago\",\"Set\",\"Ott\",\"Nov\",\"Dic\"],pickers:[\"successivi 7 giorni\",\"successivi 30 giorni\",\"precedenti 7 giorni\",\"precedenti 30 giorni\"],placeholder:{date:\"Seleziona una data\",dateRange:\"Seleziona un intervallo date\"}},cs:{days:[\"Ned\",\"Pon\",\"Úte\",\"Stř\",\"Čtv\",\"Pát\",\"Sob\"],months:[\"Led\",\"Úno\",\"Bře\",\"Dub\",\"Kvě\",\"Čer\",\"Čerc\",\"Srp\",\"Zář\",\"Říj\",\"Lis\",\"Pro\"],pickers:[\"příštích 7 dní\",\"příštích 30 dní\",\"předchozích 7 dní\",\"předchozích 30 dní\"],placeholder:{date:\"Vyberte datum\",dateRange:\"Vyberte časové rozmezí\"}},sl:{days:[\"Ned\",\"Pon\",\"Tor\",\"Sre\",\"Čet\",\"Pet\",\"Sob\"],months:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"Maj\",\"Jun\",\"Jul\",\"Avg\",\"Sep\",\"Okt\",\"Nov\",\"Dec\"],pickers:[\"naslednjih 7 dni\",\"naslednjih 30 dni\",\"prejšnjih 7 dni\",\"prejšnjih 30 dni\"],placeholder:{date:\"Izberite datum\",dateRange:\"Izberite razpon med 2 datumoma\"}}},v=A.zh,m={methods:{t:function(t){for(var e=this,n=e.$options.name;e&&(!n||\"DatePicker\"!==n);)(e=e.$parent)&&(n=e.$options.name);for(var i=e&&e.language||v,o=t.split(\".\"),a=i,r=void 0,s=0,c=o.length;s<c;s++){if(r=a[o[s]],s===c-1)return r;if(!r)return\"\";a=r}return\"\"}}};function g(t,e){if(e){for(var n=[],i=e.offsetParent;i&&t!==i&&t.contains(i);)n.push(i),i=i.offsetParent;var o=e.offsetTop+n.reduce(function(t,e){return t+e.offsetTop},0),a=o+e.offsetHeight,r=t.scrollTop,s=r+t.clientHeight;o<r?t.scrollTop=o:a>s&&(t.scrollTop=a-t.clientHeight)}else t.scrollTop=0}var b=n(1),y=n.n(b),x={name:\"panelDate\",mixins:[m],props:{value:null,startAt:null,endAt:null,dateFormat:{type:String,default:\"YYYY-MM-DD\"},calendarMonth:{default:(new Date).getMonth()},calendarYear:{default:(new Date).getFullYear()},firstDayOfWeek:{default:7,type:Number,validator:function(t){return t>=1&&t<=7}},disabledDate:{type:Function,default:function(){return!1}}},methods:{selectDate:function(t){var e=t.year,n=t.month,i=t.day,o=new Date(e,n,i);this.disabledDate(o)||this.$emit(\"select\",o)},getDays:function(t){var e=this.t(\"days\"),n=parseInt(t,10);return e.concat(e).slice(n,n+7)},getDates:function(t,e,n){var i=[],o=new Date(t,e);o.setDate(0);for(var a=(o.getDay()+7-n)%7+1,r=o.getDate()-(a-1),s=0;s<a;s++)i.push({year:t,month:e-1,day:r+s});o.setMonth(o.getMonth()+2,0);for(var c=o.getDate(),l=0;l<c;l++)i.push({year:t,month:e,day:1+l});o.setMonth(o.getMonth()+1,1);for(var u=42-(a+c),d=0;d<u;d++)i.push({year:t,month:e+1,day:1+d});return i},getCellClasses:function(t){var e=t.year,n=t.month,i=t.day,o=[],a=new Date(e,n,i).getTime(),r=(new Date).setHours(0,0,0,0),s=this.value&&new Date(this.value).setHours(0,0,0,0),c=this.startAt&&new Date(this.startAt).setHours(0,0,0,0),l=this.endAt&&new Date(this.endAt).setHours(0,0,0,0);return n<this.calendarMonth?o.push(\"last-month\"):n>this.calendarMonth?o.push(\"next-month\"):o.push(\"cur-month\"),a===r&&o.push(\"today\"),this.disabledDate(a)&&o.push(\"disabled\"),s&&(a===s?o.push(\"actived\"):c&&a<=s?o.push(\"inrange\"):l&&a>=s&&o.push(\"inrange\")),o},getCellTitle:function(t){var e=t.year,n=t.month,i=t.day;return f(new Date(e,n,i),this.dateFormat)}},render:function(t){var e=this,n=this.getDays(this.firstDayOfWeek).map(function(e){return t(\"th\",[e])}),i=this.getDates(this.calendarYear,this.calendarMonth,this.firstDayOfWeek),o=Array.apply(null,{length:6}).map(function(n,o){var a=i.slice(7*o,7*o+7).map(function(n){var i={class:e.getCellClasses(n)};return t(\"td\",y()([{class:\"cell\"},i,{attrs:{\"data-year\":n.year,\"data-month\":n.month,title:e.getCellTitle(n)},on:{click:e.selectDate.bind(e,n)}}]),[n.day])});return t(\"tr\",[a])});return t(\"table\",{class:\"mx-panel mx-panel-date\"},[t(\"thead\",[t(\"tr\",[n])]),t(\"tbody\",[o])])}},w={name:\"panelYear\",props:{value:null,firstYear:Number,disabledYear:Function},methods:{isDisabled:function(t){return!(\"function\"!=typeof this.disabledYear||!this.disabledYear(t))},selectYear:function(t){this.isDisabled(t)||this.$emit(\"select\",t)}},render:function(t){var e=this,n=10*Math.floor(this.firstYear/10),i=this.value&&new Date(this.value).getFullYear(),o=Array.apply(null,{length:10}).map(function(o,a){var r=n+a;return t(\"span\",{class:{cell:!0,actived:i===r,disabled:e.isDisabled(r)},on:{click:e.selectYear.bind(e,r)}},[r])});return t(\"div\",{class:\"mx-panel mx-panel-year\"},[o])}},_={name:\"panelMonth\",mixins:[m],props:{value:null,calendarYear:{default:(new Date).getFullYear()},disabledMonth:Function},methods:{isDisabled:function(t){return!(\"function\"!=typeof this.disabledMonth||!this.disabledMonth(t))},selectMonth:function(t){this.isDisabled(t)||this.$emit(\"select\",t)}},render:function(t){var e=this,n=this.t(\"months\"),i=this.value&&new Date(this.value).getFullYear(),o=this.value&&new Date(this.value).getMonth();return n=n.map(function(n,a){return t(\"span\",{class:{cell:!0,actived:i===e.calendarYear&&o===a,disabled:e.isDisabled(a)},on:{click:e.selectMonth.bind(e,a)}},[n])}),t(\"div\",{class:\"mx-panel mx-panel-month\"},[n])}},T=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])}return t},k=\"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};function C(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e<t.length;e++)n[e]=t[e];return n}return Array.from(t)}function E(t,e,n,i,o,a,r,s){var c,l=\"function\"==typeof t?t.options:t;if(e&&(l.render=e,l.staticRenderFns=n,l._compiled=!0),i&&(l.functional=!0),a&&(l._scopeId=\"data-v-\"+a),r?(c=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),o&&o.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(r)},l._ssrRegister=c):o&&(c=s?function(){o.call(this,this.$root.$options.shadowRoot)}:o),c)if(l.functional){l._injectStyles=c;var u=l.render;l.render=function(t,e){return c.call(e),u(t,e)}}else{var d=l.beforeCreate;l.beforeCreate=d?[].concat(d,c):[c]}return{exports:t,options:l}}var M=E({name:\"CalendarPanel\",components:{PanelDate:x,PanelYear:w,PanelMonth:_,PanelTime:{name:\"panelTime\",props:{timePickerOptions:{type:[Object,Function],default:function(){return null}},timeSelectOptions:{type:Object,default:function(){return null}},minuteStep:{type:Number,default:0,validator:function(t){return t>=0&&t<=60}},value:null,timeType:{type:Array,default:function(){return[\"24\",\"a\"]}},disabledTime:Function},computed:{currentHours:function(){return this.value?new Date(this.value).getHours():0},currentMinutes:function(){return this.value?new Date(this.value).getMinutes():0},currentSeconds:function(){return this.value?new Date(this.value).getSeconds():0}},methods:{stringifyText:function(t){return(\"00\"+t).slice(String(t).length)},selectTime:function(t){\"function\"==typeof this.disabledTime&&this.disabledTime(t)||this.$emit(\"select\",new Date(t))},pickTime:function(t){\"function\"==typeof this.disabledTime&&this.disabledTime(t)||this.$emit(\"pick\",new Date(t))},getTimePickerOptions:function(){var t=[],e=this.timePickerOptions;if(!e)return[];if(\"function\"==typeof e)return e()||[];var n=d(e.start),i=d(e.end),o=d(e.step);if(n&&i&&o)for(var a=n.minutes+60*n.hours,r=i.minutes+60*i.hours,s=o.minutes+60*o.hours,c=Math.floor((r-a)/s),l=0;l<=c;l++){var u=a+l*s,f={hours:Math.floor(u/60),minutes:u%60};t.push({value:f,label:p.apply(void 0,[f].concat(C(this.timeType)))})}return t}},render:function(t){var e=this,n=this.value?new Date(this.value):(new Date).setHours(0,0,0,0),i=\"function\"==typeof this.disabledTime&&this.disabledTime,o=this.getTimePickerOptions();if(Array.isArray(o)&&o.length)return o=o.map(function(o){var a=o.value.hours,r=o.value.minutes,s=new Date(n).setHours(a,r,0);return t(\"li\",{class:{\"mx-time-picker-item\":!0,cell:!0,actived:a===e.currentHours&&r===e.currentMinutes,disabled:i&&i(s)},on:{click:e.pickTime.bind(e,s)}},[o.label])}),t(\"div\",{class:\"mx-panel mx-panel-time\"},[t(\"ul\",{class:\"mx-time-list\"},[o])]);var a=this.minuteStep||1,r=parseInt(60/a),s={hours:Array.apply(null,{length:24}).map(function(t,e){return e}),minutes:Array.apply(null,{length:r}).map(function(t,e){return e*a}),seconds:0===this.minuteStep?Array.apply(null,{length:60}).map(function(t,e){return e}):[]};this.timeSelectOptions&&\"object\"===k(this.timeSelectOptions)&&(s=T({},s,this.timeSelectOptions));var c=[s.hours.map(function(o){var a=new Date(n).setHours(o);return t(\"li\",{class:{cell:!0,actived:o===e.currentHours,disabled:i&&i(a)},on:{click:e.selectTime.bind(e,a)}},[e.stringifyText(o)])}),s.minutes.map(function(o){var a=new Date(n).setMinutes(o);return t(\"li\",{class:{cell:!0,actived:o===e.currentMinutes,disabled:i&&i(a)},on:{click:e.selectTime.bind(e,a)}},[e.stringifyText(o)])}),s.seconds.map(function(o){var a=new Date(n).setSeconds(o);return t(\"li\",{class:{cell:!0,actived:o===e.currentSeconds,disabled:i&&i(a)},on:{click:e.selectTime.bind(e,a)}},[e.stringifyText(o)])})].filter(function(t){return t.length>0});return c=c.map(function(e){return t(\"ul\",{class:\"mx-time-list\",style:{width:100/c.length+\"%\"}},[e])}),t(\"div\",{class:\"mx-panel mx-panel-time\"},[c])}}},mixins:[m,{methods:{dispatch:function(t,e,n){for(var i=this.$parent||this.$root,o=i.$options.name;i&&(!o||o!==t);)(i=i.$parent)&&(o=i.$options.name);o&&o===t&&(i=i||this).$emit.apply(i,[e].concat(n))}}}],props:{value:{default:null,validator:function(t){return null===t||u(t)}},startAt:null,endAt:null,visible:{type:Boolean,default:!1},type:{type:String,default:\"date\"},dateFormat:{type:String,default:\"YYYY-MM-DD\"},index:Number,defaultValue:{validator:function(t){return u(t)}},firstDayOfWeek:{default:7,type:Number,validator:function(t){return t>=1&&t<=7}},notBefore:{default:null,validator:function(t){return!t||u(t)}},notAfter:{default:null,validator:function(t){return!t||u(t)}},disabledDays:{type:[Array,Function],default:function(){return[]}},minuteStep:{type:Number,default:0,validator:function(t){return t>=0&&t<=60}},timeSelectOptions:{type:Object,default:function(){return null}},timePickerOptions:{type:[Object,Function],default:function(){return null}}},data:function(){var t=this.getNow(this.value),e=t.getFullYear();return{panel:\"NONE\",dates:[],calendarMonth:t.getMonth(),calendarYear:e,firstYear:10*Math.floor(e/10)}},computed:{now:{get:function(){return new Date(this.calendarYear,this.calendarMonth).getTime()},set:function(t){var e=new Date(t);this.calendarYear=e.getFullYear(),this.calendarMonth=e.getMonth()}},timeType:function(){return[/h+/.test(this.$parent.format)?\"12\":\"24\",/A/.test(this.$parent.format)?\"A\":\"a\"]},timeHeader:function(){return\"time\"===this.type?this.$parent.format:this.value&&f(this.value,this.dateFormat)},yearHeader:function(){return this.firstYear+\" ~ \"+(this.firstYear+9)},months:function(){return this.t(\"months\")},notBeforeTime:function(){return this.getCriticalTime(this.notBefore)},notAfterTime:function(){return this.getCriticalTime(this.notAfter)}},watch:{value:{immediate:!0,handler:\"updateNow\"},visible:{immediate:!0,handler:\"init\"},panel:{handler:\"handelPanelChange\"}},methods:{handelPanelChange:function(t,e){var n=this;this.dispatch(\"DatePicker\",\"panel-change\",[t,e]),\"YEAR\"===t?this.firstYear=10*Math.floor(this.calendarYear/10):\"TIME\"===t&&this.$nextTick(function(){for(var t=n.$el.querySelectorAll(\".mx-panel-time .mx-time-list\"),e=0,i=t.length;e<i;e++){var o=t[e];g(o,o.querySelector(\".actived\"))}})},init:function(t){if(t){var e=this.type;\"month\"===e?this.showPanelMonth():\"year\"===e?this.showPanelYear():\"time\"===e?this.showPanelTime():this.showPanelDate()}else this.showPanelNone(),this.updateNow(this.value)},getNow:function(t){return t?new Date(t):this.defaultValue&&u(this.defaultValue)?new Date(this.defaultValue):new Date},updateNow:function(t){var e=this.now;this.now=this.getNow(t),this.visible&&this.now!==e&&this.dispatch(\"DatePicker\",\"calendar-change\",[new Date(this.now),new Date(e)])},getCriticalTime:function(t){if(!t)return null;var e=new Date(t);return\"year\"===this.type?new Date(e.getFullYear(),0).getTime():\"month\"===this.type?new Date(e.getFullYear(),e.getMonth()).getTime():\"date\"===this.type?e.setHours(0,0,0,0):e.getTime()},inBefore:function(t,e){return void 0===e&&(e=this.startAt),this.notBeforeTime&&t<this.notBeforeTime||e&&t<this.getCriticalTime(e)},inAfter:function(t,e){return void 0===e&&(e=this.endAt),this.notAfterTime&&t>this.notAfterTime||e&&t>this.getCriticalTime(e)},inDisabledDays:function(t){var e=this;return Array.isArray(this.disabledDays)?this.disabledDays.some(function(n){return e.getCriticalTime(n)===t}):\"function\"==typeof this.disabledDays&&this.disabledDays(new Date(t))},isDisabledYear:function(t){var e=new Date(t,0).getTime(),n=new Date(t+1,0).getTime()-1;return this.inBefore(n)||this.inAfter(e)||\"year\"===this.type&&this.inDisabledDays(e)},isDisabledMonth:function(t){var e=new Date(this.calendarYear,t).getTime(),n=new Date(this.calendarYear,t+1).getTime()-1;return this.inBefore(n)||this.inAfter(e)||\"month\"===this.type&&this.inDisabledDays(e)},isDisabledDate:function(t){var e=new Date(t).getTime(),n=new Date(t).setHours(23,59,59,999);return this.inBefore(n)||this.inAfter(e)||this.inDisabledDays(e)},isDisabledTime:function(t,e,n){var i=new Date(t).getTime();return this.inBefore(i,e)||this.inAfter(i,n)||this.inDisabledDays(i)},selectDate:function(t){if(\"datetime\"===this.type){var e=new Date(t);return l(this.value)&&e.setHours(this.value.getHours(),this.value.getMinutes(),this.value.getSeconds()),this.isDisabledTime(e)&&(e.setHours(0,0,0,0),this.notBefore&&e.getTime()<new Date(this.notBefore).getTime()&&(e=new Date(this.notBefore)),this.startAt&&e.getTime()<new Date(this.startAt).getTime()&&(e=new Date(this.startAt))),this.selectTime(e),void this.showPanelTime()}this.$emit(\"select-date\",t)},selectYear:function(t){if(this.changeCalendarYear(t),\"year\"===this.type.toLowerCase())return this.selectDate(new Date(this.now));this.dispatch(\"DatePicker\",\"select-year\",[t,this.index]),this.showPanelMonth()},selectMonth:function(t){if(this.changeCalendarMonth(t),\"month\"===this.type.toLowerCase())return this.selectDate(new Date(this.now));this.dispatch(\"DatePicker\",\"select-month\",[t,this.index]),this.showPanelDate()},selectTime:function(t){this.$emit(\"select-time\",t,!1)},pickTime:function(t){this.$emit(\"select-time\",t,!0)},changeCalendarYear:function(t){this.updateNow(new Date(t,this.calendarMonth))},changeCalendarMonth:function(t){this.updateNow(new Date(this.calendarYear,t))},getSibling:function(){var t=this,e=this.$parent.$children.filter(function(e){return e.$options.name===t.$options.name});return e[1^e.indexOf(this)]},handleIconMonth:function(t){var e=this.calendarMonth;this.changeCalendarMonth(e+t),this.$parent.$emit(\"change-calendar-month\",{month:e,flag:t,vm:this,sibling:this.getSibling()})},handleIconYear:function(t){if(\"YEAR\"===this.panel)this.changePanelYears(t);else{var e=this.calendarYear;this.changeCalendarYear(e+t),this.$parent.$emit(\"change-calendar-year\",{year:e,flag:t,vm:this,sibling:this.getSibling()})}},handleBtnYear:function(){this.showPanelYear()},handleBtnMonth:function(){this.showPanelMonth()},handleTimeHeader:function(){\"time\"!==this.type&&this.showPanelDate()},changePanelYears:function(t){this.firstYear=this.firstYear+10*t},showPanelNone:function(){this.panel=\"NONE\"},showPanelTime:function(){this.panel=\"TIME\"},showPanelDate:function(){this.panel=\"DATE\"},showPanelYear:function(){this.panel=\"YEAR\"},showPanelMonth:function(){this.panel=\"MONTH\"}}},function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{staticClass:\"mx-calendar\",class:\"mx-calendar-panel-\"+t.panel.toLowerCase()},[n(\"div\",{staticClass:\"mx-calendar-header\"},[n(\"a\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"TIME\"!==t.panel,expression:\"panel !== 'TIME'\"}],staticClass:\"mx-icon-last-year\",on:{click:function(e){t.handleIconYear(-1)}}},[t._v(\"«\")]),t._v(\" \"),n(\"a\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"DATE\"===t.panel,expression:\"panel === 'DATE'\"}],staticClass:\"mx-icon-last-month\",on:{click:function(e){t.handleIconMonth(-1)}}},[t._v(\"‹\")]),t._v(\" \"),n(\"a\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"TIME\"!==t.panel,expression:\"panel !== 'TIME'\"}],staticClass:\"mx-icon-next-year\",on:{click:function(e){t.handleIconYear(1)}}},[t._v(\"»\")]),t._v(\" \"),n(\"a\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"DATE\"===t.panel,expression:\"panel === 'DATE'\"}],staticClass:\"mx-icon-next-month\",on:{click:function(e){t.handleIconMonth(1)}}},[t._v(\"›\")]),t._v(\" \"),n(\"a\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"DATE\"===t.panel,expression:\"panel === 'DATE'\"}],staticClass:\"mx-current-month\",on:{click:t.handleBtnMonth}},[t._v(t._s(t.months[t.calendarMonth]))]),t._v(\" \"),n(\"a\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"DATE\"===t.panel||\"MONTH\"===t.panel,expression:\"panel === 'DATE' || panel === 'MONTH'\"}],staticClass:\"mx-current-year\",on:{click:t.handleBtnYear}},[t._v(t._s(t.calendarYear))]),t._v(\" \"),n(\"a\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"YEAR\"===t.panel,expression:\"panel === 'YEAR'\"}],staticClass:\"mx-current-year\"},[t._v(t._s(t.yearHeader))]),t._v(\" \"),n(\"a\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"TIME\"===t.panel,expression:\"panel === 'TIME'\"}],staticClass:\"mx-time-header\",on:{click:t.handleTimeHeader}},[t._v(t._s(t.timeHeader))])]),t._v(\" \"),n(\"div\",{staticClass:\"mx-calendar-content\"},[n(\"panel-date\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"DATE\"===t.panel,expression:\"panel === 'DATE'\"}],attrs:{value:t.value,\"date-format\":t.dateFormat,\"calendar-month\":t.calendarMonth,\"calendar-year\":t.calendarYear,\"start-at\":t.startAt,\"end-at\":t.endAt,\"first-day-of-week\":t.firstDayOfWeek,\"disabled-date\":t.isDisabledDate},on:{select:t.selectDate}}),t._v(\" \"),n(\"panel-year\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"YEAR\"===t.panel,expression:\"panel === 'YEAR'\"}],attrs:{value:t.value,\"disabled-year\":t.isDisabledYear,\"first-year\":t.firstYear},on:{select:t.selectYear}}),t._v(\" \"),n(\"panel-month\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"MONTH\"===t.panel,expression:\"panel === 'MONTH'\"}],attrs:{value:t.value,\"disabled-month\":t.isDisabledMonth,\"calendar-year\":t.calendarYear},on:{select:t.selectMonth}}),t._v(\" \"),n(\"panel-time\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"TIME\"===t.panel,expression:\"panel === 'TIME'\"}],attrs:{\"minute-step\":t.minuteStep,\"time-picker-options\":t.timePickerOptions,\"time-select-options\":t.timeSelectOptions,value:t.value,\"disabled-time\":t.isDisabledTime,\"time-type\":t.timeType},on:{select:t.selectTime,pick:t.pickTime}})],1)])},[],!1,null,null,null).exports,S=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])}return t},D=E({fecha:o.a,name:\"DatePicker\",components:{CalendarPanel:M},mixins:[m],directives:{clickoutside:s},props:{value:null,valueType:{default:\"date\",validator:function(t){return-1!==[\"timestamp\",\"format\",\"date\"].indexOf(t)||c(t)}},placeholder:{type:String,default:null},lang:{type:[String,Object],default:\"zh\"},format:{type:[String,Object],default:\"YYYY-MM-DD\"},dateFormat:{type:String},type:{type:String,default:\"date\"},range:{type:Boolean,default:!1},rangeSeparator:{type:String,default:\"~\"},width:{type:[String,Number],default:null},confirmText:{type:String,default:\"OK\"},confirm:{type:Boolean,default:!1},editable:{type:Boolean,default:!0},disabled:{type:Boolean,default:!1},clearable:{type:Boolean,default:!0},shortcuts:{type:[Boolean,Array],default:!0},inputName:{type:String,default:\"date\"},inputClass:{type:[String,Array],default:\"mx-input\"},inputAttr:Object,appendToBody:{type:Boolean,default:!1},popupStyle:{type:Object}},data:function(){return{currentValue:this.range?[null,null]:null,userInput:null,popupVisible:!1,position:{}}},watch:{value:{immediate:!0,handler:\"handleValueChange\"},popupVisible:function(t){t?this.initCalendar():(this.userInput=null,this.blur())}},computed:{transform:function(){var t=this.valueType;return c(t)?S({},h.date,t):\"format\"===t?{value2date:this.parse.bind(this),date2value:this.stringify.bind(this)}:h[t]||h.date},language:function(){return c(this.lang)?S({},A.en,this.lang):A[this.lang]||A.en},innerPlaceholder:function(){return\"string\"==typeof this.placeholder?this.placeholder:this.range?this.t(\"placeholder.dateRange\"):this.t(\"placeholder.date\")},text:function(){if(null!==this.userInput)return this.userInput;var t=this.transform.value2date;return this.range?this.isValidRangeValue(this.value)?this.stringify(t(this.value[0]))+\" \"+this.rangeSeparator+\" \"+this.stringify(t(this.value[1])):\"\":this.isValidValue(this.value)?this.stringify(t(this.value)):\"\"},computedWidth:function(){return\"number\"==typeof this.width||\"string\"==typeof this.width&&/^\\d+$/.test(this.width)?this.width+\"px\":this.width},showClearIcon:function(){return!this.disabled&&this.clearable&&(this.range?this.isValidRangeValue(this.value):this.isValidValue(this.value))},innerType:function(){return String(this.type).toLowerCase()},innerShortcuts:function(){if(Array.isArray(this.shortcuts))return this.shortcuts;if(!1===this.shortcuts)return[];var t=this.t(\"pickers\");return[{text:t[0],onClick:function(t){t.currentValue=[new Date,new Date(Date.now()+6048e5)],t.updateDate(!0)}},{text:t[1],onClick:function(t){t.currentValue=[new Date,new Date(Date.now()+2592e6)],t.updateDate(!0)}},{text:t[2],onClick:function(t){t.currentValue=[new Date(Date.now()-6048e5),new Date],t.updateDate(!0)}},{text:t[3],onClick:function(t){t.currentValue=[new Date(Date.now()-2592e6),new Date],t.updateDate(!0)}}]},innerDateFormat:function(){return this.dateFormat?this.dateFormat:\"string\"!=typeof this.format?\"YYYY-MM-DD\":\"date\"===this.innerType?this.format:this.format.replace(/[Hh]+.*[msSaAZ]|\\[.*?\\]/g,\"\").trim()||\"YYYY-MM-DD\"},innerPopupStyle:function(){return S({},this.position,this.popupStyle)}},mounted:function(){var t,e,n,i,o=this;this.appendToBody&&(this.popupElm=this.$refs.calendar,document.body.appendChild(this.popupElm)),this._displayPopup=(t=function(){o.popupVisible&&o.displayPopup()},e=200,n=0,i=null,function(){var o=this;if(!i){var a=arguments,r=function(){n=Date.now(),i=null,t.apply(o,a)};Date.now()-n>=e?r():i=setTimeout(r,e)}}),window.addEventListener(\"resize\",this._displayPopup),window.addEventListener(\"scroll\",this._displayPopup)},beforeDestroy:function(){this.popupElm&&this.popupElm.parentNode===document.body&&document.body.removeChild(this.popupElm),window.removeEventListener(\"resize\",this._displayPopup),window.removeEventListener(\"scroll\",this._displayPopup)},methods:{initCalendar:function(){this.handleValueChange(this.value),this.displayPopup()},stringify:function(t){return c(this.format)&&\"function\"==typeof this.format.stringify?this.format.stringify(t):f(t,this.format)},parse:function(t){return c(this.format)&&\"function\"==typeof this.format.parse?this.format.parse(t):function(t,e){try{return o.a.parse(t,e)||null}catch(t){return null}}(t,this.format)},isValidValue:function(t){return u((0,this.transform.value2date)(t))},isValidRangeValue:function(t){var e=this.transform.value2date;return Array.isArray(t)&&2===t.length&&this.isValidValue(t[0])&&this.isValidValue(t[1])&&e(t[1]).getTime()>=e(t[0]).getTime()},dateEqual:function(t,e){return l(t)&&l(e)&&t.getTime()===e.getTime()},rangeEqual:function(t,e){var n=this;return Array.isArray(t)&&Array.isArray(e)&&t.length===e.length&&t.every(function(t,i){return n.dateEqual(t,e[i])})},selectRange:function(t){\"function\"==typeof t.onClick?!1!==t.onClick(this)&&this.closePopup():(this.currentValue=[new Date(t.start),new Date(t.end)],this.updateDate(!0),this.closePopup())},clearDate:function(){var t=this.range?[null,null]:null;this.currentValue=t,this.updateDate(!0),this.$emit(\"clear\")},confirmDate:function(){var t;(this.range?(t=this.currentValue,Array.isArray(t)&&2===t.length&&u(t[0])&&u(t[1])&&new Date(t[1]).getTime()>=new Date(t[0]).getTime()):u(this.currentValue))&&this.updateDate(!0),this.emitDate(\"confirm\"),this.closePopup()},updateDate:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return!(this.confirm&&!t||this.disabled||(this.range?this.rangeEqual(this.value,this.currentValue):this.dateEqual(this.value,this.currentValue))||(this.emitDate(\"input\"),this.emitDate(\"change\"),0))},emitDate:function(t){var e=this.transform.date2value,n=this.range?this.currentValue.map(e):e(this.currentValue);this.$emit(t,n)},handleValueChange:function(t){var e=this.transform.value2date;this.range?this.currentValue=this.isValidRangeValue(t)?t.map(e):[null,null]:this.currentValue=this.isValidValue(t)?e(t):null},selectDate:function(t){this.currentValue=t,this.updateDate()&&this.closePopup()},selectStartDate:function(t){this.$set(this.currentValue,0,t),this.currentValue[1]&&this.updateDate()},selectEndDate:function(t){this.$set(this.currentValue,1,t),this.currentValue[0]&&this.updateDate()},selectTime:function(t,e){this.currentValue=t,this.updateDate()&&e&&this.closePopup()},selectStartTime:function(t){this.selectStartDate(t)},selectEndTime:function(t){this.selectEndDate(t)},showPopup:function(){this.disabled||(this.popupVisible=!0)},closePopup:function(){this.popupVisible=!1},getPopupSize:function(t){var e=t.style.display,n=t.style.visibility;t.style.display=\"block\",t.style.visibility=\"hidden\";var i=window.getComputedStyle(t),o={width:t.offsetWidth+parseInt(i.marginLeft)+parseInt(i.marginRight),height:t.offsetHeight+parseInt(i.marginTop)+parseInt(i.marginBottom)};return t.style.display=e,t.style.visibility=n,o},displayPopup:function(){var t=document.documentElement.clientWidth,e=document.documentElement.clientHeight,n=this.$el.getBoundingClientRect(),i=this._popupRect||(this._popupRect=this.getPopupSize(this.$refs.calendar)),o={},a=0,r=0;this.appendToBody&&(a=window.pageXOffset+n.left,r=window.pageYOffset+n.top),t-n.left<i.width&&n.right<i.width?o.left=a-n.left+1+\"px\":n.left+n.width/2<=t/2?o.left=a+\"px\":o.left=a+n.width-i.width+\"px\",n.top<=i.height&&e-n.bottom<=i.height?o.top=r+e-n.top-i.height+\"px\":n.top+n.height/2<=e/2?o.top=r+n.height+\"px\":o.top=r-i.height+\"px\",o.top===this.position.top&&o.left===this.position.left||(this.position=o)},blur:function(){this.$refs.input.blur()},handleBlur:function(t){this.$emit(\"blur\",t)},handleFocus:function(t){this.popupVisible||this.showPopup(),this.$emit(\"focus\",t)},handleKeydown:function(t){var e=t.keyCode;9!==e&&13!==e||(t.stopPropagation(),this.handleChange(),this.userInput=null,this.closePopup())},handleInput:function(t){this.userInput=t.target.value},handleChange:function(){if(this.editable&&null!==this.userInput){var t=this.text,e=this.$refs.calendarPanel.isDisabledTime;if(!t)return void this.clearDate();if(this.range){var n=t.split(\" \"+this.rangeSeparator+\" \");if(2===n.length){var i=this.parse(n[0]),o=this.parse(n[1]);if(i&&o&&!e(i,null,o)&&!e(o,i,null))return this.currentValue=[i,o],this.updateDate(!0),void this.closePopup()}}else{var a=this.parse(t);if(a&&!e(a,null,null))return this.currentValue=a,this.updateDate(!0),void this.closePopup()}this.$emit(\"input-error\",t)}}}},function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{directives:[{name:\"clickoutside\",rawName:\"v-clickoutside\",value:t.closePopup,expression:\"closePopup\"}],staticClass:\"mx-datepicker\",class:{\"mx-datepicker-range\":t.range,disabled:t.disabled},style:{width:t.computedWidth}},[n(\"div\",{staticClass:\"mx-input-wrapper\",on:{click:function(e){return e.stopPropagation(),t.showPopup(e)}}},[n(\"input\",t._b({ref:\"input\",class:t.inputClass,attrs:{name:t.inputName,type:\"text\",autocomplete:\"off\",disabled:t.disabled,readonly:!t.editable,placeholder:t.innerPlaceholder},domProps:{value:t.text},on:{keydown:t.handleKeydown,focus:t.handleFocus,blur:t.handleBlur,input:t.handleInput,change:t.handleChange}},\"input\",t.inputAttr,!1)),t._v(\" \"),t.showClearIcon?n(\"span\",{staticClass:\"mx-input-append mx-clear-wrapper\",on:{click:function(e){return e.stopPropagation(),t.clearDate(e)}}},[t._t(\"mx-clear-icon\",[n(\"i\",{staticClass:\"mx-input-icon mx-clear-icon\"})])],2):t._e(),t._v(\" \"),n(\"span\",{staticClass:\"mx-input-append\"},[t._t(\"calendar-icon\",[n(\"svg\",{staticClass:\"mx-calendar-icon\",attrs:{xmlns:\"http://www.w3.org/2000/svg\",version:\"1.1\",viewBox:\"0 0 200 200\"}},[n(\"rect\",{attrs:{x:\"13\",y:\"29\",rx:\"14\",ry:\"14\",width:\"174\",height:\"158\",fill:\"transparent\"}}),t._v(\" \"),n(\"line\",{attrs:{x1:\"46\",x2:\"46\",y1:\"8\",y2:\"50\"}}),t._v(\" \"),n(\"line\",{attrs:{x1:\"154\",x2:\"154\",y1:\"8\",y2:\"50\"}}),t._v(\" \"),n(\"line\",{attrs:{x1:\"13\",x2:\"187\",y1:\"70\",y2:\"70\"}}),t._v(\" \"),n(\"text\",{attrs:{x:\"50%\",y:\"135\",\"font-size\":\"90\",\"stroke-width\":\"1\",\"text-anchor\":\"middle\",\"dominant-baseline\":\"middle\"}},[t._v(t._s((new Date).getDate()))])])])],2)]),t._v(\" \"),n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.popupVisible,expression:\"popupVisible\"}],ref:\"calendar\",staticClass:\"mx-datepicker-popup\",style:t.innerPopupStyle,on:{click:function(t){t.stopPropagation(),t.preventDefault()}}},[t._t(\"header\",[t.range&&t.innerShortcuts.length?n(\"div\",{staticClass:\"mx-shortcuts-wrapper\"},t._l(t.innerShortcuts,function(e,i){return n(\"button\",{key:i,staticClass:\"mx-shortcuts\",attrs:{type:\"button\"},on:{click:function(n){t.selectRange(e)}}},[t._v(t._s(e.text))])})):t._e()]),t._v(\" \"),t.range?n(\"div\",{staticClass:\"mx-range-wrapper\"},[n(\"calendar-panel\",t._b({ref:\"calendarPanel\",staticStyle:{\"box-shadow\":\"1px 0 rgba(0, 0, 0, .1)\"},attrs:{index:0,type:t.innerType,\"date-format\":t.innerDateFormat,value:t.currentValue[0],\"end-at\":t.currentValue[1],\"start-at\":null,visible:t.popupVisible},on:{\"select-date\":t.selectStartDate,\"select-time\":t.selectStartTime}},\"calendar-panel\",t.$attrs,!1)),t._v(\" \"),n(\"calendar-panel\",t._b({attrs:{index:1,type:t.innerType,\"date-format\":t.innerDateFormat,value:t.currentValue[1],\"start-at\":t.currentValue[0],\"end-at\":null,visible:t.popupVisible},on:{\"select-date\":t.selectEndDate,\"select-time\":t.selectEndTime}},\"calendar-panel\",t.$attrs,!1))],1):n(\"calendar-panel\",t._b({ref:\"calendarPanel\",attrs:{index:-1,type:t.innerType,\"date-format\":t.innerDateFormat,value:t.currentValue,visible:t.popupVisible},on:{\"select-date\":t.selectDate,\"select-time\":t.selectTime}},\"calendar-panel\",t.$attrs,!1)),t._v(\" \"),t._t(\"footer\",[t.confirm?n(\"div\",{staticClass:\"mx-datepicker-footer\"},[n(\"button\",{staticClass:\"mx-datepicker-btn mx-datepicker-btn-confirm\",attrs:{type:\"button\"},on:{click:t.confirmDate}},[t._v(t._s(t.confirmText))])]):t._e()],{confirm:t.confirmDate})],2)])},[],!1,null,null,null).exports;n(7),D.install=function(t){t.component(D.name,D)},\"undefined\"!=typeof window&&window.Vue&&D.install(window.Vue),e.default=D},function(t,e){t.exports=function(){var t=[];return t.toString=function(){for(var t=[],e=0;e<this.length;e++){var n=this[e];n[2]?t.push(\"@media \"+n[2]+\"{\"+n[1]+\"}\"):t.push(n[1])}return t.join(\"\")},t.i=function(e,n){\"string\"==typeof e&&(e=[[null,e,\"\"]]);for(var i={},o=0;o<this.length;o++){var a=this[o][0];\"number\"==typeof a&&(i[a]=!0)}for(o=0;o<e.length;o++){var r=e[o];\"number\"==typeof r[0]&&i[r[0]]||(n&&!r[2]?r[2]=n:n&&(r[2]=\"(\"+r[2]+\") and (\"+n+\")\"),t.push(r))}},t}},,function(t,e,n){(t.exports=n(4)()).push([t.i,\"\",\"\"])},function(t,e,n){var i=n(6);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals),(0,n(2).default)(\"529d5378\",i,!0,{})}])},function(t,e,n){var i=n(33);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"941c791e\",i,!0,{})},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,\".vue-tooltip[data-v-6673a70]{position:absolute;z-index:100000;right:auto;left:auto;display:block;margin:0;margin-top:-3px;padding:10px 0;text-align:left;text-align:start;white-space:normal;text-decoration:none;letter-spacing:normal;word-spacing:normal;text-transform:none;word-wrap:normal;word-break:normal;opacity:0;text-shadow:none;font-family:'Nunito', 'Open Sans', Frutiger, Calibri, 'Myriad Pro', Myriad, sans-serif;font-size:12px;font-weight:normal;font-style:normal;line-height:1.6;line-break:auto;filter:drop-shadow(0 1px 10px var(--color-box-shadow))}.vue-tooltip[data-v-6673a70][x-placement^='top'] .tooltip-arrow{bottom:0;margin-top:0;margin-bottom:0;border-width:10px 10px 0 10px;border-right-color:transparent;border-bottom-color:transparent;border-left-color:transparent}.vue-tooltip[data-v-6673a70][x-placement^='bottom'] .tooltip-arrow{top:0;margin-top:0;margin-bottom:0;border-width:0 10px 10px 10px;border-top-color:transparent;border-right-color:transparent;border-left-color:transparent}.vue-tooltip[data-v-6673a70][x-placement^='right'] .tooltip-arrow{right:100%;margin-right:0;margin-left:0;border-width:10px 10px 10px 0;border-top-color:transparent;border-bottom-color:transparent;border-left-color:transparent}.vue-tooltip[data-v-6673a70][x-placement^='left'] .tooltip-arrow{left:100%;margin-right:0;margin-left:0;border-width:10px 0 10px 10px;border-top-color:transparent;border-right-color:transparent;border-bottom-color:transparent}.vue-tooltip[data-v-6673a70][aria-hidden='true']{visibility:hidden;transition:opacity .15s, visibility .15s;opacity:0}.vue-tooltip[data-v-6673a70][aria-hidden='false']{visibility:visible;transition:opacity .15s;opacity:1}.vue-tooltip[data-v-6673a70] .tooltip-inner{max-width:350px;padding:5px 8px;text-align:center;color:var(--color-main-text);border-radius:var(--border-radius);background-color:var(--color-main-background)}.vue-tooltip[data-v-6673a70] .tooltip-arrow{position:absolute;z-index:1;width:0;height:0;margin:0;border-style:solid;border-color:var(--color-main-background)}\\n\",\"\"])},function(t,e,n){\"use strict\";\n/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */var i=/[\"'&<>]/;t.exports=function(t){var e,n=\"\"+t,o=i.exec(n);if(!o)return n;var a=\"\",r=0,s=0;for(r=o.index;r<n.length;r++){switch(n.charCodeAt(r)){case 34:e=\""\";break;case 38:e=\"&\";break;case 39:e=\"'\";break;case 60:e=\"<\";break;case 62:e=\">\";break;default:continue}s!==r&&(a+=n.substring(s,r)),s=r+1,a+=e}return s!==r?a+n.substring(s,r):a}},function(t,e){},function(t,e){},function(t,e){},function(t,e,n){t.exports=n(98)},function(t,e){},function(t,e,n){var i;\n/*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license */\n/*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license */\n!function(o,a,r,s){\"use strict\";var c,l=[\"\",\"webkit\",\"Moz\",\"MS\",\"ms\",\"o\"],u=a.createElement(\"div\"),d=\"function\",p=Math.round,f=Math.abs,h=Date.now;function A(t,e,n){return setTimeout(w(t,n),e)}function v(t,e,n){return!!Array.isArray(t)&&(m(t,n[e],n),!0)}function m(t,e,n){var i;if(t)if(t.forEach)t.forEach(e,n);else if(t.length!==s)for(i=0;i<t.length;)e.call(n,t[i],i,t),i++;else for(i in t)t.hasOwnProperty(i)&&e.call(n,t[i],i,t)}function g(t,e,n){var i=\"DEPRECATED METHOD: \"+e+\"\\n\"+n+\" AT \\n\";return function(){var e=new Error(\"get-stack-trace\"),n=e&&e.stack?e.stack.replace(/^[^\\(]+?[\\n$]/gm,\"\").replace(/^\\s+at\\s+/gm,\"\").replace(/^Object.<anonymous>\\s*\\(/gm,\"{anonymous}()@\"):\"Unknown Stack Trace\",a=o.console&&(o.console.warn||o.console.log);return a&&a.call(o.console,i,n),t.apply(this,arguments)}}c=\"function\"!=typeof Object.assign?function(t){if(t===s||null===t)throw new TypeError(\"Cannot convert undefined or null to object\");for(var e=Object(t),n=1;n<arguments.length;n++){var i=arguments[n];if(i!==s&&null!==i)for(var o in i)i.hasOwnProperty(o)&&(e[o]=i[o])}return e}:Object.assign;var b=g(function(t,e,n){for(var i=Object.keys(e),o=0;o<i.length;)(!n||n&&t[i[o]]===s)&&(t[i[o]]=e[i[o]]),o++;return t},\"extend\",\"Use `assign`.\"),y=g(function(t,e){return b(t,e,!0)},\"merge\",\"Use `assign`.\");function x(t,e,n){var i,o=e.prototype;(i=t.prototype=Object.create(o)).constructor=t,i._super=o,n&&c(i,n)}function w(t,e){return function(){return t.apply(e,arguments)}}function _(t,e){return typeof t==d?t.apply(e&&e[0]||s,e):t}function T(t,e){return t===s?e:t}function k(t,e,n){m(S(e),function(e){t.addEventListener(e,n,!1)})}function C(t,e,n){m(S(e),function(e){t.removeEventListener(e,n,!1)})}function E(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1}function M(t,e){return t.indexOf(e)>-1}function S(t){return t.trim().split(/\\s+/g)}function D(t,e,n){if(t.indexOf&&!n)return t.indexOf(e);for(var i=0;i<t.length;){if(n&&t[i][n]==e||!n&&t[i]===e)return i;i++}return-1}function O(t){return Array.prototype.slice.call(t,0)}function B(t,e,n){for(var i=[],o=[],a=0;a<t.length;){var r=e?t[a][e]:t[a];D(o,r)<0&&i.push(t[a]),o[a]=r,a++}return n&&(i=e?i.sort(function(t,n){return t[e]>n[e]}):i.sort()),i}function I(t,e){for(var n,i,o=e[0].toUpperCase()+e.slice(1),a=0;a<l.length;){if((i=(n=l[a])?n+o:e)in t)return i;a++}return s}var N=1;function L(t){var e=t.ownerDocument||t;return e.defaultView||e.parentWindow||o}var P=\"ontouchstart\"in o,j=I(o,\"PointerEvent\")!==s,$=P&&/mobile|tablet|ip(ad|hone|od)|android/i.test(navigator.userAgent),F=25,Y=1,R=2,z=4,H=8,Q=1,V=2,G=4,U=8,W=16,Z=V|G,X=U|W,q=Z|X,K=[\"x\",\"y\"],J=[\"clientX\",\"clientY\"];function tt(t,e){var n=this;this.manager=t,this.callback=e,this.element=t.element,this.target=t.options.inputTarget,this.domHandler=function(e){_(t.options.enable,[t])&&n.handler(e)},this.init()}function et(t,e,n){var i=n.pointers.length,o=n.changedPointers.length,a=e&Y&&i-o==0,r=e&(z|H)&&i-o==0;n.isFirst=!!a,n.isFinal=!!r,a&&(t.session={}),n.eventType=e,function(t,e){var n=t.session,i=e.pointers,o=i.length;n.firstInput||(n.firstInput=nt(e));o>1&&!n.firstMultiple?n.firstMultiple=nt(e):1===o&&(n.firstMultiple=!1);var a=n.firstInput,r=n.firstMultiple,c=r?r.center:a.center,l=e.center=it(i);e.timeStamp=h(),e.deltaTime=e.timeStamp-a.timeStamp,e.angle=st(c,l),e.distance=rt(c,l),function(t,e){var n=e.center,i=t.offsetDelta||{},o=t.prevDelta||{},a=t.prevInput||{};e.eventType!==Y&&a.eventType!==z||(o=t.prevDelta={x:a.deltaX||0,y:a.deltaY||0},i=t.offsetDelta={x:n.x,y:n.y});e.deltaX=o.x+(n.x-i.x),e.deltaY=o.y+(n.y-i.y)}(n,e),e.offsetDirection=at(e.deltaX,e.deltaY);var u=ot(e.deltaTime,e.deltaX,e.deltaY);e.overallVelocityX=u.x,e.overallVelocityY=u.y,e.overallVelocity=f(u.x)>f(u.y)?u.x:u.y,e.scale=r?(d=r.pointers,p=i,rt(p[0],p[1],J)/rt(d[0],d[1],J)):1,e.rotation=r?function(t,e){return st(e[1],e[0],J)+st(t[1],t[0],J)}(r.pointers,i):0,e.maxPointers=n.prevInput?e.pointers.length>n.prevInput.maxPointers?e.pointers.length:n.prevInput.maxPointers:e.pointers.length,function(t,e){var n,i,o,a,r=t.lastInterval||e,c=e.timeStamp-r.timeStamp;if(e.eventType!=H&&(c>F||r.velocity===s)){var l=e.deltaX-r.deltaX,u=e.deltaY-r.deltaY,d=ot(c,l,u);i=d.x,o=d.y,n=f(d.x)>f(d.y)?d.x:d.y,a=at(l,u),t.lastInterval=e}else n=r.velocity,i=r.velocityX,o=r.velocityY,a=r.direction;e.velocity=n,e.velocityX=i,e.velocityY=o,e.direction=a}(n,e);var d,p;var A=t.element;E(e.srcEvent.target,A)&&(A=e.srcEvent.target);e.target=A}(t,n),t.emit(\"hammer.input\",n),t.recognize(n),t.session.prevInput=n}function nt(t){for(var e=[],n=0;n<t.pointers.length;)e[n]={clientX:p(t.pointers[n].clientX),clientY:p(t.pointers[n].clientY)},n++;return{timeStamp:h(),pointers:e,center:it(e),deltaX:t.deltaX,deltaY:t.deltaY}}function it(t){var e=t.length;if(1===e)return{x:p(t[0].clientX),y:p(t[0].clientY)};for(var n=0,i=0,o=0;o<e;)n+=t[o].clientX,i+=t[o].clientY,o++;return{x:p(n/e),y:p(i/e)}}function ot(t,e,n){return{x:e/t||0,y:n/t||0}}function at(t,e){return t===e?Q:f(t)>=f(e)?t<0?V:G:e<0?U:W}function rt(t,e,n){n||(n=K);var i=e[n[0]]-t[n[0]],o=e[n[1]]-t[n[1]];return Math.sqrt(i*i+o*o)}function st(t,e,n){n||(n=K);var i=e[n[0]]-t[n[0]],o=e[n[1]]-t[n[1]];return 180*Math.atan2(o,i)/Math.PI}tt.prototype={handler:function(){},init:function(){this.evEl&&k(this.element,this.evEl,this.domHandler),this.evTarget&&k(this.target,this.evTarget,this.domHandler),this.evWin&&k(L(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&C(this.element,this.evEl,this.domHandler),this.evTarget&&C(this.target,this.evTarget,this.domHandler),this.evWin&&C(L(this.element),this.evWin,this.domHandler)}};var ct={mousedown:Y,mousemove:R,mouseup:z},lt=\"mousedown\",ut=\"mousemove mouseup\";function dt(){this.evEl=lt,this.evWin=ut,this.pressed=!1,tt.apply(this,arguments)}x(dt,tt,{handler:function(t){var e=ct[t.type];e&Y&&0===t.button&&(this.pressed=!0),e&R&&1!==t.which&&(e=z),this.pressed&&(e&z&&(this.pressed=!1),this.callback(this.manager,e,{pointers:[t],changedPointers:[t],pointerType:\"mouse\",srcEvent:t}))}});var pt={pointerdown:Y,pointermove:R,pointerup:z,pointercancel:H,pointerout:H},ft={2:\"touch\",3:\"pen\",4:\"mouse\",5:\"kinect\"},ht=\"pointerdown\",At=\"pointermove pointerup pointercancel\";function vt(){this.evEl=ht,this.evWin=At,tt.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}o.MSPointerEvent&&!o.PointerEvent&&(ht=\"MSPointerDown\",At=\"MSPointerMove MSPointerUp MSPointerCancel\"),x(vt,tt,{handler:function(t){var e=this.store,n=!1,i=t.type.toLowerCase().replace(\"ms\",\"\"),o=pt[i],a=ft[t.pointerType]||t.pointerType,r=\"touch\"==a,s=D(e,t.pointerId,\"pointerId\");o&Y&&(0===t.button||r)?s<0&&(e.push(t),s=e.length-1):o&(z|H)&&(n=!0),s<0||(e[s]=t,this.callback(this.manager,o,{pointers:e,changedPointers:[t],pointerType:a,srcEvent:t}),n&&e.splice(s,1))}});var mt={touchstart:Y,touchmove:R,touchend:z,touchcancel:H},gt=\"touchstart\",bt=\"touchstart touchmove touchend touchcancel\";function yt(){this.evTarget=gt,this.evWin=bt,this.started=!1,tt.apply(this,arguments)}x(yt,tt,{handler:function(t){var e=mt[t.type];if(e===Y&&(this.started=!0),this.started){var n=function(t,e){var n=O(t.touches),i=O(t.changedTouches);e&(z|H)&&(n=B(n.concat(i),\"identifier\",!0));return[n,i]}.call(this,t,e);e&(z|H)&&n[0].length-n[1].length==0&&(this.started=!1),this.callback(this.manager,e,{pointers:n[0],changedPointers:n[1],pointerType:\"touch\",srcEvent:t})}}});var xt={touchstart:Y,touchmove:R,touchend:z,touchcancel:H},wt=\"touchstart touchmove touchend touchcancel\";function _t(){this.evTarget=wt,this.targetIds={},tt.apply(this,arguments)}x(_t,tt,{handler:function(t){var e=xt[t.type],n=function(t,e){var n=O(t.touches),i=this.targetIds;if(e&(Y|R)&&1===n.length)return i[n[0].identifier]=!0,[n,n];var o,a,r=O(t.changedTouches),s=[],c=this.target;if(a=n.filter(function(t){return E(t.target,c)}),e===Y)for(o=0;o<a.length;)i[a[o].identifier]=!0,o++;o=0;for(;o<r.length;)i[r[o].identifier]&&s.push(r[o]),e&(z|H)&&delete i[r[o].identifier],o++;if(!s.length)return;return[B(a.concat(s),\"identifier\",!0),s]}.call(this,t,e);n&&this.callback(this.manager,e,{pointers:n[0],changedPointers:n[1],pointerType:\"touch\",srcEvent:t})}});var Tt=2500,kt=25;function Ct(){tt.apply(this,arguments);var t=w(this.handler,this);this.touch=new _t(this.manager,t),this.mouse=new dt(this.manager,t),this.primaryTouch=null,this.lastTouches=[]}function Et(t){var e=t.changedPointers[0];if(e.identifier===this.primaryTouch){var n={x:e.clientX,y:e.clientY};this.lastTouches.push(n);var i=this.lastTouches;setTimeout(function(){var t=i.indexOf(n);t>-1&&i.splice(t,1)},Tt)}}x(Ct,tt,{handler:function(t,e,n){var i=\"touch\"==n.pointerType,o=\"mouse\"==n.pointerType;if(!(o&&n.sourceCapabilities&&n.sourceCapabilities.firesTouchEvents)){if(i)(function(t,e){t&Y?(this.primaryTouch=e.changedPointers[0].identifier,Et.call(this,e)):t&(z|H)&&Et.call(this,e)}).call(this,e,n);else if(o&&function(t){for(var e=t.srcEvent.clientX,n=t.srcEvent.clientY,i=0;i<this.lastTouches.length;i++){var o=this.lastTouches[i],a=Math.abs(e-o.x),r=Math.abs(n-o.y);if(a<=kt&&r<=kt)return!0}return!1}.call(this,n))return;this.callback(t,e,n)}},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var Mt=I(u.style,\"touchAction\"),St=Mt!==s,Dt=\"auto\",Ot=\"manipulation\",Bt=\"none\",It=\"pan-x\",Nt=\"pan-y\",Lt=function(){if(!St)return!1;var t={},e=o.CSS&&o.CSS.supports;return[\"auto\",\"manipulation\",\"pan-y\",\"pan-x\",\"pan-x pan-y\",\"none\"].forEach(function(n){t[n]=!e||o.CSS.supports(\"touch-action\",n)}),t}();function Pt(t,e){this.manager=t,this.set(e)}Pt.prototype={set:function(t){\"compute\"==t&&(t=this.compute()),St&&this.manager.element.style&&Lt[t]&&(this.manager.element.style[Mt]=t),this.actions=t.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var t=[];return m(this.manager.recognizers,function(e){_(e.options.enable,[e])&&(t=t.concat(e.getTouchAction()))}),function(t){if(M(t,Bt))return Bt;var e=M(t,It),n=M(t,Nt);if(e&&n)return Bt;if(e||n)return e?It:Nt;if(M(t,Ot))return Ot;return Dt}(t.join(\" \"))},preventDefaults:function(t){var e=t.srcEvent,n=t.offsetDirection;if(this.manager.session.prevented)e.preventDefault();else{var i=this.actions,o=M(i,Bt)&&!Lt[Bt],a=M(i,Nt)&&!Lt[Nt],r=M(i,It)&&!Lt[It];if(o){var s=1===t.pointers.length,c=t.distance<2,l=t.deltaTime<250;if(s&&c&&l)return}if(!r||!a)return o||a&&n&Z||r&&n&X?this.preventSrc(e):void 0}},preventSrc:function(t){this.manager.session.prevented=!0,t.preventDefault()}};var jt=1,$t=2,Ft=4,Yt=8,Rt=Yt,zt=16;function Ht(t){this.options=c({},this.defaults,t||{}),this.id=N++,this.manager=null,this.options.enable=T(this.options.enable,!0),this.state=jt,this.simultaneous={},this.requireFail=[]}function Qt(t){return t&zt?\"cancel\":t&Yt?\"end\":t&Ft?\"move\":t&$t?\"start\":\"\"}function Vt(t){return t==W?\"down\":t==U?\"up\":t==V?\"left\":t==G?\"right\":\"\"}function Gt(t,e){var n=e.manager;return n?n.get(t):t}function Ut(){Ht.apply(this,arguments)}function Wt(){Ut.apply(this,arguments),this.pX=null,this.pY=null}function Zt(){Ut.apply(this,arguments)}function Xt(){Ht.apply(this,arguments),this._timer=null,this._input=null}function qt(){Ut.apply(this,arguments)}function Kt(){Ut.apply(this,arguments)}function Jt(){Ht.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}function te(t,e){return(e=e||{}).recognizers=T(e.recognizers,te.defaults.preset),new ee(t,e)}Ht.prototype={defaults:{},set:function(t){return c(this.options,t),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(t){if(v(t,\"recognizeWith\",this))return this;var e=this.simultaneous;return e[(t=Gt(t,this)).id]||(e[t.id]=t,t.recognizeWith(this)),this},dropRecognizeWith:function(t){return v(t,\"dropRecognizeWith\",this)?this:(t=Gt(t,this),delete this.simultaneous[t.id],this)},requireFailure:function(t){if(v(t,\"requireFailure\",this))return this;var e=this.requireFail;return-1===D(e,t=Gt(t,this))&&(e.push(t),t.requireFailure(this)),this},dropRequireFailure:function(t){if(v(t,\"dropRequireFailure\",this))return this;t=Gt(t,this);var e=D(this.requireFail,t);return e>-1&&this.requireFail.splice(e,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(t){return!!this.simultaneous[t.id]},emit:function(t){var e=this,n=this.state;function i(n){e.manager.emit(n,t)}n<Yt&&i(e.options.event+Qt(n)),i(e.options.event),t.additionalEvent&&i(t.additionalEvent),n>=Yt&&i(e.options.event+Qt(n))},tryEmit:function(t){if(this.canEmit())return this.emit(t);this.state=32},canEmit:function(){for(var t=0;t<this.requireFail.length;){if(!(this.requireFail[t].state&(32|jt)))return!1;t++}return!0},recognize:function(t){var e=c({},t);if(!_(this.options.enable,[this,e]))return this.reset(),void(this.state=32);this.state&(Rt|zt|32)&&(this.state=jt),this.state=this.process(e),this.state&($t|Ft|Yt|zt)&&this.tryEmit(e)},process:function(t){},getTouchAction:function(){},reset:function(){}},x(Ut,Ht,{defaults:{pointers:1},attrTest:function(t){var e=this.options.pointers;return 0===e||t.pointers.length===e},process:function(t){var e=this.state,n=t.eventType,i=e&($t|Ft),o=this.attrTest(t);return i&&(n&H||!o)?e|zt:i||o?n&z?e|Yt:e&$t?e|Ft:$t:32}}),x(Wt,Ut,{defaults:{event:\"pan\",threshold:10,pointers:1,direction:q},getTouchAction:function(){var t=this.options.direction,e=[];return t&Z&&e.push(Nt),t&X&&e.push(It),e},directionTest:function(t){var e=this.options,n=!0,i=t.distance,o=t.direction,a=t.deltaX,r=t.deltaY;return o&e.direction||(e.direction&Z?(o=0===a?Q:a<0?V:G,n=a!=this.pX,i=Math.abs(t.deltaX)):(o=0===r?Q:r<0?U:W,n=r!=this.pY,i=Math.abs(t.deltaY))),t.direction=o,n&&i>e.threshold&&o&e.direction},attrTest:function(t){return Ut.prototype.attrTest.call(this,t)&&(this.state&$t||!(this.state&$t)&&this.directionTest(t))},emit:function(t){this.pX=t.deltaX,this.pY=t.deltaY;var e=Vt(t.direction);e&&(t.additionalEvent=this.options.event+e),this._super.emit.call(this,t)}}),x(Zt,Ut,{defaults:{event:\"pinch\",threshold:0,pointers:2},getTouchAction:function(){return[Bt]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.scale-1)>this.options.threshold||this.state&$t)},emit:function(t){if(1!==t.scale){var e=t.scale<1?\"in\":\"out\";t.additionalEvent=this.options.event+e}this._super.emit.call(this,t)}}),x(Xt,Ht,{defaults:{event:\"press\",pointers:1,time:251,threshold:9},getTouchAction:function(){return[Dt]},process:function(t){var e=this.options,n=t.pointers.length===e.pointers,i=t.distance<e.threshold,o=t.deltaTime>e.time;if(this._input=t,!i||!n||t.eventType&(z|H)&&!o)this.reset();else if(t.eventType&Y)this.reset(),this._timer=A(function(){this.state=Rt,this.tryEmit()},e.time,this);else if(t.eventType&z)return Rt;return 32},reset:function(){clearTimeout(this._timer)},emit:function(t){this.state===Rt&&(t&&t.eventType&z?this.manager.emit(this.options.event+\"up\",t):(this._input.timeStamp=h(),this.manager.emit(this.options.event,this._input)))}}),x(qt,Ut,{defaults:{event:\"rotate\",threshold:0,pointers:2},getTouchAction:function(){return[Bt]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.rotation)>this.options.threshold||this.state&$t)}}),x(Kt,Ut,{defaults:{event:\"swipe\",threshold:10,velocity:.3,direction:Z|X,pointers:1},getTouchAction:function(){return Wt.prototype.getTouchAction.call(this)},attrTest:function(t){var e,n=this.options.direction;return n&(Z|X)?e=t.overallVelocity:n&Z?e=t.overallVelocityX:n&X&&(e=t.overallVelocityY),this._super.attrTest.call(this,t)&&n&t.offsetDirection&&t.distance>this.options.threshold&&t.maxPointers==this.options.pointers&&f(e)>this.options.velocity&&t.eventType&z},emit:function(t){var e=Vt(t.offsetDirection);e&&this.manager.emit(this.options.event+e,t),this.manager.emit(this.options.event,t)}}),x(Jt,Ht,{defaults:{event:\"tap\",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[Ot]},process:function(t){var e=this.options,n=t.pointers.length===e.pointers,i=t.distance<e.threshold,o=t.deltaTime<e.time;if(this.reset(),t.eventType&Y&&0===this.count)return this.failTimeout();if(i&&o&&n){if(t.eventType!=z)return this.failTimeout();var a=!this.pTime||t.timeStamp-this.pTime<e.interval,r=!this.pCenter||rt(this.pCenter,t.center)<e.posThreshold;if(this.pTime=t.timeStamp,this.pCenter=t.center,r&&a?this.count+=1:this.count=1,this._input=t,0===this.count%e.taps)return this.hasRequireFailures()?(this._timer=A(function(){this.state=Rt,this.tryEmit()},e.interval,this),$t):Rt}return 32},failTimeout:function(){return this._timer=A(function(){this.state=32},this.options.interval,this),32},reset:function(){clearTimeout(this._timer)},emit:function(){this.state==Rt&&(this._input.tapCount=this.count,this.manager.emit(this.options.event,this._input))}}),te.VERSION=\"2.0.7\",te.defaults={domEvents:!1,touchAction:\"compute\",enable:!0,inputTarget:null,inputClass:null,preset:[[qt,{enable:!1}],[Zt,{enable:!1},[\"rotate\"]],[Kt,{direction:Z}],[Wt,{direction:Z},[\"swipe\"]],[Jt],[Jt,{event:\"doubletap\",taps:2},[\"tap\"]],[Xt]],cssProps:{userSelect:\"none\",touchSelect:\"none\",touchCallout:\"none\",contentZooming:\"none\",userDrag:\"none\",tapHighlightColor:\"rgba(0,0,0,0)\"}};function ee(t,e){var n;this.options=c({},te.defaults,e||{}),this.options.inputTarget=this.options.inputTarget||t,this.handlers={},this.session={},this.recognizers=[],this.oldCssProps={},this.element=t,this.input=new((n=this).options.inputClass||(j?vt:$?_t:P?Ct:dt))(n,et),this.touchAction=new Pt(this,this.options.touchAction),ne(this,!0),m(this.options.recognizers,function(t){var e=this.add(new t[0](t[1]));t[2]&&e.recognizeWith(t[2]),t[3]&&e.requireFailure(t[3])},this)}function ne(t,e){var n,i=t.element;i.style&&(m(t.options.cssProps,function(o,a){n=I(i.style,a),e?(t.oldCssProps[n]=i.style[n],i.style[n]=o):i.style[n]=t.oldCssProps[n]||\"\"}),e||(t.oldCssProps={}))}ee.prototype={set:function(t){return c(this.options,t),t.touchAction&&this.touchAction.update(),t.inputTarget&&(this.input.destroy(),this.input.target=t.inputTarget,this.input.init()),this},stop:function(t){this.session.stopped=t?2:1},recognize:function(t){var e=this.session;if(!e.stopped){var n;this.touchAction.preventDefaults(t);var i=this.recognizers,o=e.curRecognizer;(!o||o&&o.state&Rt)&&(o=e.curRecognizer=null);for(var a=0;a<i.length;)n=i[a],2===e.stopped||o&&n!=o&&!n.canRecognizeWith(o)?n.reset():n.recognize(t),!o&&n.state&($t|Ft|Yt)&&(o=e.curRecognizer=n),a++}},get:function(t){if(t instanceof Ht)return t;for(var e=this.recognizers,n=0;n<e.length;n++)if(e[n].options.event==t)return e[n];return null},add:function(t){if(v(t,\"add\",this))return this;var e=this.get(t.options.event);return e&&this.remove(e),this.recognizers.push(t),t.manager=this,this.touchAction.update(),t},remove:function(t){if(v(t,\"remove\",this))return this;if(t=this.get(t)){var e=this.recognizers,n=D(e,t);-1!==n&&(e.splice(n,1),this.touchAction.update())}return this},on:function(t,e){if(t!==s&&e!==s){var n=this.handlers;return m(S(t),function(t){n[t]=n[t]||[],n[t].push(e)}),this}},off:function(t,e){if(t!==s){var n=this.handlers;return m(S(t),function(t){e?n[t]&&n[t].splice(D(n[t],e),1):delete n[t]}),this}},emit:function(t,e){this.options.domEvents&&function(t,e){var n=a.createEvent(\"Event\");n.initEvent(t,!0,!0),n.gesture=e,e.target.dispatchEvent(n)}(t,e);var n=this.handlers[t]&&this.handlers[t].slice();if(n&&n.length){e.type=t,e.preventDefault=function(){e.srcEvent.preventDefault()};for(var i=0;i<n.length;)n[i](e),i++}},destroy:function(){this.element&&ne(this,!1),this.handlers={},this.session={},this.input.destroy(),this.element=null}},c(te,{INPUT_START:Y,INPUT_MOVE:R,INPUT_END:z,INPUT_CANCEL:H,STATE_POSSIBLE:jt,STATE_BEGAN:$t,STATE_CHANGED:Ft,STATE_ENDED:Yt,STATE_RECOGNIZED:Rt,STATE_CANCELLED:zt,STATE_FAILED:32,DIRECTION_NONE:Q,DIRECTION_LEFT:V,DIRECTION_RIGHT:G,DIRECTION_UP:U,DIRECTION_DOWN:W,DIRECTION_HORIZONTAL:Z,DIRECTION_VERTICAL:X,DIRECTION_ALL:q,Manager:ee,Input:tt,TouchAction:Pt,TouchInput:_t,MouseInput:dt,PointerEventInput:vt,TouchMouseInput:Ct,SingleTouchInput:yt,Recognizer:Ht,AttrRecognizer:Ut,Tap:Jt,Pan:Wt,Swipe:Kt,Pinch:Zt,Rotate:qt,Press:Xt,on:k,off:C,each:m,merge:y,extend:b,assign:c,inherit:x,bindFn:w,prefixed:I}),(void 0!==o?o:\"undefined\"!=typeof self?self:{}).Hammer=te,(i=function(){return te}.call(e,n,e,t))===s||(t.exports=i)}(window,document)},function(t,e,n){\"use strict\";var i=n(18);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,\"\\nbutton.menuitem[data-v-8dc4efb0] {\\n\\ttext-align: left;\\n}\\nbutton.menuitem *[data-v-8dc4efb0] {\\n\\tcursor: pointer;\\n}\\nbutton.menuitem[data-v-8dc4efb0]:disabled {\\n\\topacity: 0.5 !important;\\n\\tcursor: default;\\n}\\nbutton.menuitem:disabled *[data-v-8dc4efb0] {\\n\\tcursor: default;\\n}\\n.menuitem.active[data-v-8dc4efb0] {\\n\\tbox-shadow: inset 2px 0 var(--color-primary);\\n\\tborder-radius: 0;\\n}\\n\",\"\"])},function(t,e,n){\"use strict\";var i=n(19);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,\"li[data-v-8dc4efb0]{display:flex;flex:0 0 auto}li.hidden[data-v-8dc4efb0]{display:none}li>button[data-v-8dc4efb0],li>a[data-v-8dc4efb0],li>.menuitem[data-v-8dc4efb0]{cursor:pointer;line-height:44px;border:0;border-radius:0;background-color:transparent;display:flex;align-items:flex-start;height:auto;margin:0;padding:0;font-weight:normal;box-shadow:none;width:100%;color:var(--color-main-text);white-space:nowrap;opacity:.7}li>button span[class^='icon-'][data-v-8dc4efb0],li>button span[class*=' icon-'][data-v-8dc4efb0],li>button[class^='icon-'][data-v-8dc4efb0],li>button[class*=' icon-'][data-v-8dc4efb0],li>a span[class^='icon-'][data-v-8dc4efb0],li>a span[class*=' icon-'][data-v-8dc4efb0],li>a[class^='icon-'][data-v-8dc4efb0],li>a[class*=' icon-'][data-v-8dc4efb0],li>.menuitem span[class^='icon-'][data-v-8dc4efb0],li>.menuitem span[class*=' icon-'][data-v-8dc4efb0],li>.menuitem[class^='icon-'][data-v-8dc4efb0],li>.menuitem[class*=' icon-'][data-v-8dc4efb0]{min-width:0;min-height:0;background-position:14px center;background-size:16px}li>button span[class^='icon-'][data-v-8dc4efb0],li>button span[class*=' icon-'][data-v-8dc4efb0],li>a span[class^='icon-'][data-v-8dc4efb0],li>a span[class*=' icon-'][data-v-8dc4efb0],li>.menuitem span[class^='icon-'][data-v-8dc4efb0],li>.menuitem span[class*=' icon-'][data-v-8dc4efb0]{padding:22px 0 22px 44px}li>button:not([class^='icon-']):not([class*='icon-'])>span[data-v-8dc4efb0]:not([class^='icon-']):not([class*='icon-']):first-child,li>button:not([class^='icon-']):not([class*='icon-'])>input[data-v-8dc4efb0]:not([class^='icon-']):not([class*='icon-']):first-child,li>button:not([class^='icon-']):not([class*='icon-'])>form[data-v-8dc4efb0]:not([class^='icon-']):not([class*='icon-']):first-child,li>a:not([class^='icon-']):not([class*='icon-'])>span[data-v-8dc4efb0]:not([class^='icon-']):not([class*='icon-']):first-child,li>a:not([class^='icon-']):not([class*='icon-'])>input[data-v-8dc4efb0]:not([class^='icon-']):not([class*='icon-']):first-child,li>a:not([class^='icon-']):not([class*='icon-'])>form[data-v-8dc4efb0]:not([class^='icon-']):not([class*='icon-']):first-child,li>.menuitem:not([class^='icon-']):not([class*='icon-'])>span[data-v-8dc4efb0]:not([class^='icon-']):not([class*='icon-']):first-child,li>.menuitem:not([class^='icon-']):not([class*='icon-'])>input[data-v-8dc4efb0]:not([class^='icon-']):not([class*='icon-']):first-child,li>.menuitem:not([class^='icon-']):not([class*='icon-'])>form[data-v-8dc4efb0]:not([class^='icon-']):not([class*='icon-']):first-child{margin-left:44px}li>button[class^='icon-'][data-v-8dc4efb0],li>button[class*=' icon-'][data-v-8dc4efb0],li>a[class^='icon-'][data-v-8dc4efb0],li>a[class*=' icon-'][data-v-8dc4efb0],li>.menuitem[class^='icon-'][data-v-8dc4efb0],li>.menuitem[class*=' icon-'][data-v-8dc4efb0]{padding:0 14px 0 44px}li>button[data-v-8dc4efb0]:not(:disabled):hover,li>button[data-v-8dc4efb0]:not(:disabled):focus,li>button:not(:disabled).active[data-v-8dc4efb0],li>a[data-v-8dc4efb0]:not(:disabled):hover,li>a[data-v-8dc4efb0]:not(:disabled):focus,li>a:not(:disabled).active[data-v-8dc4efb0],li>.menuitem[data-v-8dc4efb0]:not(:disabled):hover,li>.menuitem[data-v-8dc4efb0]:not(:disabled):focus,li>.menuitem:not(:disabled).active[data-v-8dc4efb0]{opacity:1 !important}li>button.action[data-v-8dc4efb0],li>a.action[data-v-8dc4efb0],li>.menuitem.action[data-v-8dc4efb0]{padding:inherit !important}li>button>span[data-v-8dc4efb0],li>a>span[data-v-8dc4efb0],li>.menuitem>span[data-v-8dc4efb0]{cursor:pointer;white-space:nowrap}li>button>p[data-v-8dc4efb0],li>a>p[data-v-8dc4efb0],li>.menuitem>p[data-v-8dc4efb0]{width:150px;line-height:1.6em;padding:8px 0;white-space:normal}li>button>select[data-v-8dc4efb0],li>a>select[data-v-8dc4efb0],li>.menuitem>select[data-v-8dc4efb0]{margin:0;margin-left:6px}li>button[data-v-8dc4efb0]:not(:empty),li>a[data-v-8dc4efb0]:not(:empty),li>.menuitem[data-v-8dc4efb0]:not(:empty){padding-right:14px !important}li>button>img[data-v-8dc4efb0],li>a>img[data-v-8dc4efb0],li>.menuitem>img[data-v-8dc4efb0]{width:16px;padding:14px}li>button>input.radio+label[data-v-8dc4efb0],li>button>input.checkbox+label[data-v-8dc4efb0],li>a>input.radio+label[data-v-8dc4efb0],li>a>input.checkbox+label[data-v-8dc4efb0],li>.menuitem>input.radio+label[data-v-8dc4efb0],li>.menuitem>input.checkbox+label[data-v-8dc4efb0]{padding:0 !important;width:100%}li>button>input.checkbox+label[data-v-8dc4efb0]::before,li>a>input.checkbox+label[data-v-8dc4efb0]::before,li>.menuitem>input.checkbox+label[data-v-8dc4efb0]::before{margin:-2px 13px 0}li>button>input.radio+label[data-v-8dc4efb0]::before,li>a>input.radio+label[data-v-8dc4efb0]::before,li>.menuitem>input.radio+label[data-v-8dc4efb0]::before{margin:-2px 12px 0}li>button>input[data-v-8dc4efb0]:not([type=radio]):not([type=checkbox]):not([type=image]),li>a>input[data-v-8dc4efb0]:not([type=radio]):not([type=checkbox]):not([type=image]),li>.menuitem>input[data-v-8dc4efb0]:not([type=radio]):not([type=checkbox]):not([type=image]){width:150px}li>button form[data-v-8dc4efb0],li>a form[data-v-8dc4efb0],li>.menuitem form[data-v-8dc4efb0]{display:flex;flex:1 1 auto}li>button form[data-v-8dc4efb0]:not(:first-child),li>a form[data-v-8dc4efb0]:not(:first-child),li>.menuitem form[data-v-8dc4efb0]:not(:first-child){margin-left:5px}li>button>span.hidden+form[data-v-8dc4efb0],li>button>span[style*='display:none']+form[data-v-8dc4efb0],li>a>span.hidden+form[data-v-8dc4efb0],li>a>span[style*='display:none']+form[data-v-8dc4efb0],li>.menuitem>span.hidden+form[data-v-8dc4efb0],li>.menuitem>span[style*='display:none']+form[data-v-8dc4efb0]{margin-left:0}li>button input[data-v-8dc4efb0],li>a input[data-v-8dc4efb0],li>.menuitem input[data-v-8dc4efb0]{min-width:44px;max-height:40px;margin:2px 0;flex:1 1 auto}li>button input[data-v-8dc4efb0]:not(:first-child),li>a input[data-v-8dc4efb0]:not(:first-child),li>.menuitem input[data-v-8dc4efb0]:not(:first-child){margin-left:5px}li:not(.hidden):not([style*='display:none']):first-of-type>button>form[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):first-of-type>button>input[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):first-of-type>a>form[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):first-of-type>a>input[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):first-of-type>.menuitem>form[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):first-of-type>.menuitem>input[data-v-8dc4efb0]{margin-top:12px}li:not(.hidden):not([style*='display:none']):last-of-type>button>form[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):last-of-type>button>input[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):last-of-type>a>form[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):last-of-type>a>input[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):last-of-type>.menuitem>form[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):last-of-type>.menuitem>input[data-v-8dc4efb0]{margin-bottom:12px}li>button[data-v-8dc4efb0]{padding:0}li>button span[data-v-8dc4efb0]{opacity:1}\\n\",\"\"])},function(t,e,n){\"use strict\";var i=n(20);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,\"ul[data-v-2f982451]{display:flex;flex-direction:column}\\n\",\"\"])},function(t,e,n){var i=n(146);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"504198fc\",i,!0,{})},function(t,e,n){var i=n(148);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"efb117ce\",i,!0,{})},function(t,e,n){var i=n(150);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"89c943dc\",i,!0,{})},function(t,e,n){var i=n(152);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"766647a2\",i,!0,{})},function(t,e,n){var i=n(154);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"55805cbd\",i,!0,{})},function(t,e,n){var i=n(156);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"19f30fef\",i,!0,{})},function(t,e,n){var i=n(158);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"55b308c7\",i,!0,{})},function(t,e,n){var i=n(160);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"0c820946\",i,!0,{})},function(t,e,n){var i=n(162);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"7d41231a\",i,!0,{})},function(t,e,n){var i=n(164);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"4b6feab4\",i,!0,{})},function(t,e,n){var i=n(166);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"2eb234c2\",i,!0,{})},function(t,e,n){var i=n(168);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"30caeb37\",i,!0,{})},function(t,e,n){var i=n(170);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"4dd3631b\",i,!0,{})},function(t,e,n){var i=n(172);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"0a4af55c\",i,!0,{})},function(t,e,n){var i=n(174);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"acfb770c\",i,!0,{})},function(t,e,n){var i=n(176);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"05387ef8\",i,!0,{})},function(t,e,n){var i=n(178);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"a375d0ac\",i,!0,{})},function(t,e,n){\"use strict\";n.r(e);var i,o=n(38),a=n.n(o),r=n(77),s=n.n(r),c=n(6),l=n(24),u=n(13),d=n.n(u),p=n(78),f=n.n(p),h=n(79),A=n.n(h),v=function(t){var e=t.toLowerCase();function n(t,e,n){this.r=t,this.g=e,this.b=n}function i(t,e,i){var o=[];o.push(e);for(var a=function(t,e){var n=new Array(3);return n[0]=(e[1].r-e[0].r)/t,n[1]=(e[1].g-e[0].g)/t,n[2]=(e[1].b-e[0].b)/t,n}(t,[e,i]),r=1;r<t;r++){var s=parseInt(e.r+a[0]*r),c=parseInt(e.g+a[1]*r),l=parseInt(e.b+a[2]*r);o.push(new n(s,c,l))}return o}null===e.match(/^([0-9a-f]{4}-?){8}$/)&&(e=A()(e)),e=e.replace(/[^0-9a-f]/g,\"\");var o=new n(182,70,157),a=new n(221,203,85),r=new n(0,130,201),s=i(6,o,a),c=i(6,a,r),l=i(6,r,o);return s.concat(c).concat(l)[function(t,e){for(var n=0,i=[],o=0;o<t.length;o++)i.push(parseInt(t.charAt(o),16)%16);for(var a in i)n+=i[a];return parseInt(parseInt(n)%e)}(e,18)]},m={name:\"Avatar\",directives:{tooltip:c.default,ClickOutside:d.a},components:{PopoverMenu:l.PopoverMenu},props:{url:{type:String,default:void 0},user:{type:String,default:void 0},isGuest:{type:Boolean,default:!1},displayName:{type:String,default:void 0},size:{type:Number,default:32},allowPlaceholder:{type:Boolean,default:!0},disableTooltip:{type:Boolean,default:!1},disableMenu:{type:Boolean,default:!1},tooltipMessage:{type:String,default:null},isNoUser:{type:Boolean,default:!1},status:{type:String,default:null,validator:function(t){switch(t){case\"positive\":case\"negative\":case\"neutral\":return!0}return!1}},statusColor:{type:[Number,String],default:null,validator:function(t){return/^([a-f0-9]{3}){1,2}$/i.test(t)}}},data:function(){return{avatarUrlLoaded:null,avatarSrcSetLoaded:null,userDoesNotExist:!1,isAvatarLoaded:!1,isMenuLoaded:!1,contactsMenuActions:[],contactsMenuOpenState:!1}},computed:{getUserIdentifier:function(){return this.isDisplayNameDefined?this.displayName:this.isUserDefined?this.user:\"\"},isUserDefined:function(){return void 0!==this.user},isDisplayNameDefined:function(){return void 0!==this.displayName},isUrlDefined:function(){return void 0!==this.url},hasMenu:function(){return!this.disableMenu&&(this.isMenuLoaded?this.menu.length>0:!(this.user===OC.getCurrentUser().uid||this.userDoesNotExist||this.url))},shouldShowPlaceholder:function(){return this.allowPlaceholder&&this.userDoesNotExist},avatarStyle:function(){var t={width:this.size+\"px\",height:this.size+\"px\",lineHeight:this.size+\"px\",fontSize:Math.round(.55*this.size)+\"px\"},e=v(this.getUserIdentifier);return t.backgroundColor=\"rgb(\"+e.r+\", \"+e.g+\", \"+e.b+\")\",t},tooltip:function(){return!this.disableTooltip&&(this.tooltipMessage?this.tooltipMessage:this.displayName)},initials:function(){return this.shouldShowPlaceholder?this.getUserIdentifier.charAt(0).toUpperCase():\"?\"},menu:function(){return this.contactsMenuActions.map(function(t){return{href:t.hyperlink,icon:t.icon,text:t.title}})}},watch:{url:function(){this.userDoesNotExist=!1,this.loadAvatarUrl()},user:function(){this.userDoesNotExist=!1,this.isMenuLoaded=!1,this.loadAvatarUrl()}},mounted:function(){this.loadAvatarUrl()},methods:{toggleMenu:function(){this.hasMenu&&(this.contactsMenuOpenState=!this.contactsMenuOpenState,this.contactsMenuOpenState&&this.fetchContactsMenu())},closeMenu:function(){this.contactsMenuOpenState=!1},fetchContactsMenu:(i=s()(a.a.mark(function t(){var e,n,i;return a.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,e=encodeURIComponent(this.user),t.next=4,f.a.post(OC.generateUrl(\"contactsmenu/findOne\"),\"shareType=0&shareWith=\".concat(e));case 4:n=t.sent,i=n.data,this.contactsMenuActions=[i.topAction].concat(i.actions),t.next=12;break;case 9:t.prev=9,t.t0=t.catch(0),this.contactsMenuOpenState=!1;case 12:this.isMenuLoaded=!0;case 13:case\"end\":return t.stop()}},t,this,[[0,9]])})),function(){return i.apply(this,arguments)}),loadAvatarUrl:function(){var t=this;if(this.isAvatarLoaded=!1,!this.isUrlDefined&&(!this.isUserDefined||this.isNoUser))return this.isAvatarLoaded=!0,void(this.userDoesNotExist=!0);var e=function(e,n){var i=\"/avatar/{user}/{size}\";t.isGuest&&(i=\"/avatar/guest/{user}/{size}\");var o=OC.generateUrl(i,{user:e,size:n});return e===OC.getCurrentUser().uid&&\"undefined\"!=typeof oc_userconfig&&(o+=\"?v=\"+oc_userconfig.avatar.version),o},n=e(this.user,this.size);this.isUrlDefined&&(n=this.url);var i=[n+\" 1x\",e(this.user,2*this.size)+\" 2x\",e(this.user,4*this.size)+\" 4x\"].join(\", \"),o=new Image;o.onload=function(){t.avatarUrlLoaded=n,t.isUrlDefined||(t.avatarSrcSetLoaded=i),t.isAvatarLoaded=!0},o.onerror=function(){t.userDoesNotExist=!0,t.isAvatarLoaded=!0},this.isUrlDefined||(o.srcset=i),o.src=n}}},g=(n(119),n(0)),b=n(39),y=n.n(b),x=Object(g.a)(m,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:t.tooltip,expression:\"tooltip\"},{name:\"click-outside\",rawName:\"v-click-outside\",value:t.closeMenu,expression:\"closeMenu\"}],staticClass:\"avatardiv popovermenu-wrapper\",class:{\"icon-loading\":!t.isAvatarLoaded,\"avatardiv--unknown\":t.userDoesNotExist,\"avatardiv--with-menu\":t.hasMenu},style:t.avatarStyle,on:{click:t.toggleMenu}},[t.isAvatarLoaded&&!t.userDoesNotExist?n(\"img\",{attrs:{src:t.avatarUrlLoaded,srcset:t.avatarSrcSetLoaded}}):t._e(),t._v(\" \"),t.hasMenu?n(\"div\",{staticClass:\"icon-more\"}):t._e(),t._v(\" \"),t.status?n(\"div\",{staticClass:\"avatardiv__status\",class:\"avatardiv__status--\"+t.status,style:{backgroundColor:\"#\"+t.statusColor}},[\"neutral\"===t.status?n(\"svg\",{attrs:{xmlns:\"http://www.w3.org/2000/svg\",width:\"12\",height:\"11\",viewBox:\"0 0 3.175 2.91\"}},[n(\"path\",{style:{fill:\"#\"+t.statusColor},attrs:{d:\"M3.21 3.043H.494l.679-1.177.68-1.176.678 1.176z\",stroke:\"#fff\",\"stroke-width\":\".265\",\"stroke-linecap\":\"square\"}})]):t._e()]):t._e(),t._v(\" \"),t.userDoesNotExist?n(\"div\",{staticClass:\"unknown\"},[t._v(\"\\n\\t\\t\"+t._s(t.initials)+\"\\n\\t\")]):t._e(),t._v(\" \"),t.hasMenu?n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.contactsMenuOpenState,expression:\"contactsMenuOpenState\"}],staticClass:\"popovermenu menu-center\"},[n(\"PopoverMenu\",{attrs:{\"is-open\":t.contactsMenuOpenState,menu:t.menu}})],1):t._e()])},[],!1,null,\"6015a092\",null);\"function\"==typeof y.a&&y()(x);var w=x.exports;n.d(e,\"Avatar\",function(){return w});\n/**\n * @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */e.default=w},function(t,e,n){\"use strict\";n.r(e);var i={name:\"ActionButton\",mixins:[n(14).a],props:{disabled:{type:Boolean,default:!1}},computed:{isFocusable:function(){return!this.disabled}}},o=(n(90),n(0)),a=n(35),r=n.n(a),s=Object(o.a)(i,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"li\",{class:{\"action--disabled\":t.disabled}},[n(\"button\",{staticClass:\"action-button\",class:{focusable:t.isFocusable},on:{click:t.onClick}},[n(\"span\",{staticClass:\"action-button__icon\",class:[t.isIconUrl?\"action-button__icon--url\":t.icon],style:{backgroundImage:t.isIconUrl?\"url(\"+t.icon+\")\":null}}),t._v(\" \"),t.title?n(\"p\",[n(\"strong\",{staticClass:\"action-button__title\"},[t._v(\"\\n\\t\\t\\t\\t\"+t._s(t.title)+\"\\n\\t\\t\\t\")]),t._v(\" \"),n(\"br\"),t._v(\" \"),n(\"span\",{staticClass:\"action-button__longtext\",domProps:{textContent:t._s(t.text)}})]):t.isLongText?n(\"p\",{staticClass:\"action-button__longtext\",domProps:{textContent:t._s(t.text)}}):n(\"span\",{staticClass:\"action-button__text\"},[t._v(t._s(t.text))]),t._v(\" \"),t._e()],2)])},[],!1,null,\"37538719\",null);\"function\"==typeof r.a&&r()(s);var c=s.exports;n.d(e,\"ActionButton\",function(){return c});\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */e.default=c},function(t,e,n){\"use strict\";n.r(e);var i=n(23),o=n(31),a=n.n(o);a.a.components.CalendarPanel.components.PanelTime.methods.stringifyText=function(t){return t},a.a.methods.displayPopup=function(){var t=this.$el.querySelector(\".mx-datepicker-popup\");t&&!t.classList.contains(\"popovermenu\")&&(t.className+=\" popovermenu menu-center open\")};var r={name:\"DatetimePicker\",components:{DatePicker:a.a},inheritAttrs:!1,props:{value:{default:function(){return new Date}}},methods:{handleSelectYear:function(t){var e=this.$refs.datepicker.currentValue;if(e)try{var n=new Date(new Date(e).setFullYear(t));this.$refs.datepicker.selectDate(n)}catch(n){console.error(\"Invalid value\",e,t)}},handleSelectMonth:function(t){var e=this.$refs.datepicker.currentValue;if(e)try{var n=new Date(new Date(e).setMonth(t));this.$refs.datepicker.selectDate(n)}catch(n){console.error(\"Invalid value\",e,t)}}}},s=n(0),c=n(36),l=n.n(c),u=Object(s.a)(r,function(){var t=this,e=t.$createElement;return(t._self._c||e)(\"DatePicker\",t._g(t._b({ref:\"datepicker\",attrs:{clearable:!1,\"minute-step\":10,value:t.value},on:{\"select-year\":t.handleSelectYear,\"select-month\":t.handleSelectMonth,\"update:value\":function(e){return t.$emit(\"update:value\",t.value)}}},\"DatePicker\",t.$attrs,!1),t.$listeners))},[],!1,null,null,null);\"function\"==typeof l.a&&l()(u);var d=u.exports;n(92);n.d(e,\"DatetimePicker\",function(){return d}),\n/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nObject(i.a)(d);e.default=d},function(t,e,n){\"use strict\";n.r(e);var i={name:\"AppNavigationCounter\",props:{highlighted:{type:Boolean,default:!1}}},o=(n(96),n(0)),a=n(37),r=n.n(a),s=Object(o.a)(i,function(){var t=this.$createElement,e=this._self._c||t;return e(\"li\",{staticClass:\"app-navigation-entry-utils-counter\",class:{highlighted:this.highlighted}},[e(\"span\",[this._t(\"default\")],2)])},[],!1,null,\"7ed17014\",null);\"function\"==typeof r.a&&r()(s);var c=s.exports;n.d(e,\"AppNavigationCounter\",function(){return c});\n/**\n * @copyright Copyright (c) 2019 Marco Ambrosini <ma12co@pm.me>\n *\n * @author Marco Ambrosini <marcoambrosini@pm.me>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */e.default=c},function(t,e,n){\"use strict\";t.exports=function(t,e){return function(){for(var n=new Array(arguments.length),i=0;i<n.length;i++)n[i]=arguments[i];return t.apply(e,n)}}},function(t,e,n){\"use strict\";var i=n(4);function o(t){return encodeURIComponent(t).replace(/%40/gi,\"@\").replace(/%3A/gi,\":\").replace(/%24/g,\"$\").replace(/%2C/gi,\",\").replace(/%20/g,\"+\").replace(/%5B/gi,\"[\").replace(/%5D/gi,\"]\")}t.exports=function(t,e,n){if(!e)return t;var a;if(n)a=n(e);else if(i.isURLSearchParams(e))a=e.toString();else{var r=[];i.forEach(e,function(t,e){null!=t&&(i.isArray(t)?e+=\"[]\":t=[t],i.forEach(t,function(t){i.isDate(t)?t=t.toISOString():i.isObject(t)&&(t=JSON.stringify(t)),r.push(o(e)+\"=\"+o(t))}))}),a=r.join(\"&\")}if(a){var s=t.indexOf(\"#\");-1!==s&&(t=t.slice(0,s)),t+=(-1===t.indexOf(\"?\")?\"?\":\"&\")+a}return t}},function(t,e,n){\"use strict\";t.exports=function(t){return!(!t||!t.__CANCEL__)}},function(t,e,n){\"use strict\";(function(e){var i=n(4),o=n(107),a={\"Content-Type\":\"application/x-www-form-urlencoded\"};function r(t,e){!i.isUndefined(t)&&i.isUndefined(t[\"Content-Type\"])&&(t[\"Content-Type\"]=e)}var s,c={adapter:(void 0!==e&&\"[object process]\"===Object.prototype.toString.call(e)?s=n(72):\"undefined\"!=typeof XMLHttpRequest&&(s=n(72)),s),transformRequest:[function(t,e){return o(e,\"Accept\"),o(e,\"Content-Type\"),i.isFormData(t)||i.isArrayBuffer(t)||i.isBuffer(t)||i.isStream(t)||i.isFile(t)||i.isBlob(t)?t:i.isArrayBufferView(t)?t.buffer:i.isURLSearchParams(t)?(r(e,\"application/x-www-form-urlencoded;charset=utf-8\"),t.toString()):i.isObject(t)?(r(e,\"application/json;charset=utf-8\"),JSON.stringify(t)):t}],transformResponse:[function(t){if(\"string\"==typeof t)try{t=JSON.parse(t)}catch(t){}return t}],timeout:0,xsrfCookieName:\"XSRF-TOKEN\",xsrfHeaderName:\"X-XSRF-TOKEN\",maxContentLength:-1,validateStatus:function(t){return t>=200&&t<300}};c.headers={common:{Accept:\"application/json, text/plain, */*\"}},i.forEach([\"delete\",\"get\",\"head\"],function(t){c.headers[t]={}}),i.forEach([\"post\",\"put\",\"patch\"],function(t){c.headers[t]=i.merge(a)}),t.exports=c}).call(this,n(106))},function(t,e,n){\"use strict\";var i=n(4),o=n(108),a=n(69),r=n(110),s=n(111),c=n(73);t.exports=function(t){return new Promise(function(e,l){var u=t.data,d=t.headers;i.isFormData(u)&&delete d[\"Content-Type\"];var p=new XMLHttpRequest;if(t.auth){var f=t.auth.username||\"\",h=t.auth.password||\"\";d.Authorization=\"Basic \"+btoa(f+\":\"+h)}if(p.open(t.method.toUpperCase(),a(t.url,t.params,t.paramsSerializer),!0),p.timeout=t.timeout,p.onreadystatechange=function(){if(p&&4===p.readyState&&(0!==p.status||p.responseURL&&0===p.responseURL.indexOf(\"file:\"))){var n=\"getAllResponseHeaders\"in p?r(p.getAllResponseHeaders()):null,i={data:t.responseType&&\"text\"!==t.responseType?p.response:p.responseText,status:p.status,statusText:p.statusText,headers:n,config:t,request:p};o(e,l,i),p=null}},p.onabort=function(){p&&(l(c(\"Request aborted\",t,\"ECONNABORTED\",p)),p=null)},p.onerror=function(){l(c(\"Network Error\",t,null,p)),p=null},p.ontimeout=function(){l(c(\"timeout of \"+t.timeout+\"ms exceeded\",t,\"ECONNABORTED\",p)),p=null},i.isStandardBrowserEnv()){var A=n(112),v=(t.withCredentials||s(t.url))&&t.xsrfCookieName?A.read(t.xsrfCookieName):void 0;v&&(d[t.xsrfHeaderName]=v)}if(\"setRequestHeader\"in p&&i.forEach(d,function(t,e){void 0===u&&\"content-type\"===e.toLowerCase()?delete d[e]:p.setRequestHeader(e,t)}),t.withCredentials&&(p.withCredentials=!0),t.responseType)try{p.responseType=t.responseType}catch(e){if(\"json\"!==t.responseType)throw e}\"function\"==typeof t.onDownloadProgress&&p.addEventListener(\"progress\",t.onDownloadProgress),\"function\"==typeof t.onUploadProgress&&p.upload&&p.upload.addEventListener(\"progress\",t.onUploadProgress),t.cancelToken&&t.cancelToken.promise.then(function(t){p&&(p.abort(),l(t),p=null)}),void 0===u&&(u=null),p.send(u)})}},function(t,e,n){\"use strict\";var i=n(109);t.exports=function(t,e,n,o,a){var r=new Error(t);return i(r,e,n,o,a)}},function(t,e,n){\"use strict\";var i=n(4);t.exports=function(t,e){e=e||{};var n={};return i.forEach([\"url\",\"method\",\"params\",\"data\"],function(t){void 0!==e[t]&&(n[t]=e[t])}),i.forEach([\"headers\",\"auth\",\"proxy\"],function(o){i.isObject(e[o])?n[o]=i.deepMerge(t[o],e[o]):void 0!==e[o]?n[o]=e[o]:i.isObject(t[o])?n[o]=i.deepMerge(t[o]):void 0!==t[o]&&(n[o]=t[o])}),i.forEach([\"baseURL\",\"transformRequest\",\"transformResponse\",\"paramsSerializer\",\"timeout\",\"withCredentials\",\"adapter\",\"responseType\",\"xsrfCookieName\",\"xsrfHeaderName\",\"onUploadProgress\",\"onDownloadProgress\",\"maxContentLength\",\"validateStatus\",\"maxRedirects\",\"httpAgent\",\"httpsAgent\",\"cancelToken\",\"socketPath\"],function(i){void 0!==e[i]?n[i]=e[i]:void 0!==t[i]&&(n[i]=t[i])}),n}},function(t,e,n){\"use strict\";function i(t){this.message=t}i.prototype.toString=function(){return\"Cancel\"+(this.message?\": \"+this.message:\"\")},i.prototype.__CANCEL__=!0,t.exports=i},function(t,e){var n={utf8:{stringToBytes:function(t){return n.bin.stringToBytes(unescape(encodeURIComponent(t)))},bytesToString:function(t){return decodeURIComponent(escape(n.bin.bytesToString(t)))}},bin:{stringToBytes:function(t){for(var e=[],n=0;n<t.length;n++)e.push(255&t.charCodeAt(n));return e},bytesToString:function(t){for(var e=[],n=0;n<t.length;n++)e.push(String.fromCharCode(t[n]));return e.join(\"\")}}};t.exports=n},function(t,e){function n(t,e,n,i,o,a,r){try{var s=t[a](r),c=s.value}catch(t){return void n(t)}s.done?e(c):Promise.resolve(c).then(i,o)}t.exports=function(t){return function(){var e=this,i=arguments;return new Promise(function(o,a){var r=t.apply(e,i);function s(t){n(r,o,a,s,c,\"next\",t)}function c(t){n(r,o,a,s,c,\"throw\",t)}s(void 0)})}}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var i=n(99).default.create({headers:{requesttoken:OC.requestToken}});e.default=i},function(t,e,n){var i,o,a,r,s;i=n(117),o=n(76).utf8,a=n(118),r=n(76).bin,(s=function(t,e){t.constructor==String?t=e&&\"binary\"===e.encoding?r.stringToBytes(t):o.stringToBytes(t):a(t)?t=Array.prototype.slice.call(t,0):Array.isArray(t)||(t=t.toString());for(var n=i.bytesToWords(t),c=8*t.length,l=1732584193,u=-271733879,d=-1732584194,p=271733878,f=0;f<n.length;f++)n[f]=16711935&(n[f]<<8|n[f]>>>24)|4278255360&(n[f]<<24|n[f]>>>8);n[c>>>5]|=128<<c%32,n[14+(c+64>>>9<<4)]=c;var h=s._ff,A=s._gg,v=s._hh,m=s._ii;for(f=0;f<n.length;f+=16){var g=l,b=u,y=d,x=p;l=h(l,u,d,p,n[f+0],7,-680876936),p=h(p,l,u,d,n[f+1],12,-389564586),d=h(d,p,l,u,n[f+2],17,606105819),u=h(u,d,p,l,n[f+3],22,-1044525330),l=h(l,u,d,p,n[f+4],7,-176418897),p=h(p,l,u,d,n[f+5],12,1200080426),d=h(d,p,l,u,n[f+6],17,-1473231341),u=h(u,d,p,l,n[f+7],22,-45705983),l=h(l,u,d,p,n[f+8],7,1770035416),p=h(p,l,u,d,n[f+9],12,-1958414417),d=h(d,p,l,u,n[f+10],17,-42063),u=h(u,d,p,l,n[f+11],22,-1990404162),l=h(l,u,d,p,n[f+12],7,1804603682),p=h(p,l,u,d,n[f+13],12,-40341101),d=h(d,p,l,u,n[f+14],17,-1502002290),l=A(l,u=h(u,d,p,l,n[f+15],22,1236535329),d,p,n[f+1],5,-165796510),p=A(p,l,u,d,n[f+6],9,-1069501632),d=A(d,p,l,u,n[f+11],14,643717713),u=A(u,d,p,l,n[f+0],20,-373897302),l=A(l,u,d,p,n[f+5],5,-701558691),p=A(p,l,u,d,n[f+10],9,38016083),d=A(d,p,l,u,n[f+15],14,-660478335),u=A(u,d,p,l,n[f+4],20,-405537848),l=A(l,u,d,p,n[f+9],5,568446438),p=A(p,l,u,d,n[f+14],9,-1019803690),d=A(d,p,l,u,n[f+3],14,-187363961),u=A(u,d,p,l,n[f+8],20,1163531501),l=A(l,u,d,p,n[f+13],5,-1444681467),p=A(p,l,u,d,n[f+2],9,-51403784),d=A(d,p,l,u,n[f+7],14,1735328473),l=v(l,u=A(u,d,p,l,n[f+12],20,-1926607734),d,p,n[f+5],4,-378558),p=v(p,l,u,d,n[f+8],11,-2022574463),d=v(d,p,l,u,n[f+11],16,1839030562),u=v(u,d,p,l,n[f+14],23,-35309556),l=v(l,u,d,p,n[f+1],4,-1530992060),p=v(p,l,u,d,n[f+4],11,1272893353),d=v(d,p,l,u,n[f+7],16,-155497632),u=v(u,d,p,l,n[f+10],23,-1094730640),l=v(l,u,d,p,n[f+13],4,681279174),p=v(p,l,u,d,n[f+0],11,-358537222),d=v(d,p,l,u,n[f+3],16,-722521979),u=v(u,d,p,l,n[f+6],23,76029189),l=v(l,u,d,p,n[f+9],4,-640364487),p=v(p,l,u,d,n[f+12],11,-421815835),d=v(d,p,l,u,n[f+15],16,530742520),l=m(l,u=v(u,d,p,l,n[f+2],23,-995338651),d,p,n[f+0],6,-198630844),p=m(p,l,u,d,n[f+7],10,1126891415),d=m(d,p,l,u,n[f+14],15,-1416354905),u=m(u,d,p,l,n[f+5],21,-57434055),l=m(l,u,d,p,n[f+12],6,1700485571),p=m(p,l,u,d,n[f+3],10,-1894986606),d=m(d,p,l,u,n[f+10],15,-1051523),u=m(u,d,p,l,n[f+1],21,-2054922799),l=m(l,u,d,p,n[f+8],6,1873313359),p=m(p,l,u,d,n[f+15],10,-30611744),d=m(d,p,l,u,n[f+6],15,-1560198380),u=m(u,d,p,l,n[f+13],21,1309151649),l=m(l,u,d,p,n[f+4],6,-145523070),p=m(p,l,u,d,n[f+11],10,-1120210379),d=m(d,p,l,u,n[f+2],15,718787259),u=m(u,d,p,l,n[f+9],21,-343485551),l=l+g>>>0,u=u+b>>>0,d=d+y>>>0,p=p+x>>>0}return i.endian([l,u,d,p])})._ff=function(t,e,n,i,o,a,r){var s=t+(e&n|~e&i)+(o>>>0)+r;return(s<<a|s>>>32-a)+e},s._gg=function(t,e,n,i,o,a,r){var s=t+(e&i|n&~i)+(o>>>0)+r;return(s<<a|s>>>32-a)+e},s._hh=function(t,e,n,i,o,a,r){var s=t+(e^n^i)+(o>>>0)+r;return(s<<a|s>>>32-a)+e},s._ii=function(t,e,n,i,o,a,r){var s=t+(n^(e|~i))+(o>>>0)+r;return(s<<a|s>>>32-a)+e},s._blocksize=16,s._digestsize=16,t.exports=function(t,e){if(null==t)throw new Error(\"Illegal argument \"+t);var n=i.wordsToBytes(s(t,e));return e&&e.asBytes?n:e&&e.asString?r.bytesToString(n):i.bytesToHex(n)}},function(t,e,n){\"use strict\";var i=n(22);n.n(i).a},function(t,e,n){e=t.exports=n(1)(!1);var i=n(8),o=i(n(9)),a=i(n(10)),r=i(n(11)),s=i(n(12));e.push([t.i,'@font-face{font-family:\"iconfont-vue\";src:url('+o+\");src:url(\"+o+') format(\"embedded-opentype\"),url('+a+') format(\"woff\"),url('+r+') format(\"truetype\"),url('+s+') format(\"svg\")}.icon[data-v-627a433f]{font-style:normal;font-weight:400}.icon.arrow-left-double[data-v-627a433f]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.arrow-left[data-v-627a433f]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.arrow-right-double[data-v-627a433f]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.arrow-right[data-v-627a433f]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.close[data-v-627a433f]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.confirm-fade[data-v-627a433f]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.confirm[data-v-627a433f]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.menu[data-v-627a433f]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.more[data-v-627a433f]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.pause[data-v-627a433f]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.play[data-v-627a433f]:before{font-family:\"iconfont-vue\";content:\"\"}.action-item[data-v-627a433f]{position:relative;display:inline-block}.action-item--single[data-v-627a433f]:hover,.action-item--single[data-v-627a433f]:focus,.action-item--single[data-v-627a433f]:active,.action-item__menutoggle[data-v-627a433f]:hover,.action-item__menutoggle[data-v-627a433f]:focus,.action-item__menutoggle[data-v-627a433f]:active{border-radius:22px;background-color:rgba(127,127,127,0.25) !important;opacity:1}.action-item.action-item--open .action-item__menutoggle[data-v-627a433f]{opacity:1;border-radius:22px;background-color:rgba(127,127,127,0.25)}.action-item--single[data-v-627a433f],.action-item__menutoggle[data-v-627a433f]{box-sizing:border-box;width:44px;height:44px;margin:0;padding:14px;cursor:pointer;border:none;background-color:transparent}.action-item__menutoggle[data-v-627a433f]{display:flex;align-items:center;justify-content:center;opacity:.7;font-size:16px}.action-item__menutoggle[data-v-627a433f]:before{font-family:\"iconfont-vue\";font-style:normal;font-weight:400;content:\"\"}.action-item--single[data-v-627a433f]{opacity:.7}.action-item--single[data-v-627a433f]:hover,.action-item--single[data-v-627a433f]:focus,.action-item--single[data-v-627a433f]:active{opacity:1}.action-item--single>[hidden][data-v-627a433f]{display:none}.action-item--multiple[data-v-627a433f]{position:relative}.action-item__menu[data-v-627a433f]{position:absolute;z-index:110;right:50%;display:none;margin:10px;margin-top:-5px;transform:translateX(50%);color:var(--color-main-text);border-radius:var(--border-radius);background-color:var(--color-main-background);filter:drop-shadow(0 1px 3px var(--color-box-shadow))}.action-item__menu ul[data-v-627a433f]>:not(li){display:none}.action-item__menu.open[data-v-627a433f]{display:block}.action-item__menu .action-item__menu_arrow[data-v-627a433f]{position:absolute;right:50%;bottom:100%;width:0;height:0;margin-right:-9px;content:\\' \\';pointer-events:none;border:solid transparent;border-width:9px;border-bottom-color:var(--color-main-background)}.action-item__menu.menu-right[data-v-627a433f]{right:0;left:auto;transform:none}.action-item__menu.menu-right .action-item__menu_arrow[data-v-627a433f]{right:13px;margin-right:0}.action-item__menu.menu-left[data-v-627a433f]{right:auto;left:0;transform:none}.action-item__menu.menu-left .action-item__menu_arrow[data-v-627a433f]{right:auto;left:13px;margin-right:0}.ie .action-item__menu[data-v-627a433f],.ie .action-item__menu .action-item__menu_arrow[data-v-627a433f],.edge .action-item__menu[data-v-627a433f],.edge .action-item__menu .action-item__menu_arrow[data-v-627a433f]{border:1px solid var(--color-border)}\\n',\"\"])},function(t,e,n){\"use strict\";n.r(e);var i={name:\"AppNavigationToggle\",methods:{emitClick:function(){this.$emit(\"click\")}}},o=(n(94),n(0)),a=Object(o.a)(i,function(){var t=this,e=t.$createElement;return(t._self._c||e)(\"a\",{attrs:{id:\"app-navigation-toggle\",tabindex:\"0\",href:\"#\"},on:{click:function(e){return e.preventDefault(),t.emitClick(e)},keydown:function(e){return!e.type.indexOf(\"key\")&&t._k(e.keyCode,\"space\",32,e.key,[\" \",\"Spacebar\"])?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.emitClick(e))}}})},[],!1,null,\"d9538ec8\",null).exports;n.d(e,\"AppNavigationSpacer\",function(){return a});\n/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */e.default=a},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e,n){\"use strict\";var i=n(26);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,\"li.active[data-v-37538719]{box-shadow:inset 4px 0 var(--color-primary)}.action--disabled[data-v-37538719]{pointer-events:none;opacity:.5}.action--disabled[data-v-37538719]:hover,.action--disabled[data-v-37538719]:focus{cursor:default;opacity:.5}.action--disabled *[data-v-37538719]{opacity:1 !important}.action-button[data-v-37538719]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;padding-right:14px;cursor:pointer;white-space:nowrap;opacity:.7;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:normal;line-height:44px}.action-button[data-v-37538719]:hover,.action-button[data-v-37538719]:focus{opacity:1}.action-button>span[data-v-37538719]{cursor:pointer;white-space:nowrap}.action-button__icon[data-v-37538719]{width:44px;height:44px;opacity:1;background-position:14px center;background-size:16px}.action-button p[data-v-37538719]{width:150px;padding:7px 0;cursor:pointer;text-align:left;line-height:1.6em}.action-button__longtext[data-v-37538719]{cursor:pointer;white-space:pre-wrap}.action-button__title[data-v-37538719]{font-weight:bold}\\n\",\"\"])},function(t,e,n){var i=n(93);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"600615ea\",i,!0,{})},function(t,e,n){e=t.exports=n(1)(!1);var i=n(8),o=i(n(9)),a=i(n(10)),r=i(n(11)),s=i(n(12));e.push([t.i,'@font-face{font-family:\"iconfont-vue\";src:url('+o+\");src:url(\"+o+') format(\"embedded-opentype\"),url('+a+') format(\"woff\"),url('+r+') format(\"truetype\"),url('+s+') format(\"svg\")}.icon{font-style:normal;font-weight:400}.icon.arrow-left-double:before{font-family:\"iconfont-vue\";content:\"\"}.icon.arrow-left:before{font-family:\"iconfont-vue\";content:\"\"}.icon.arrow-right-double:before{font-family:\"iconfont-vue\";content:\"\"}.icon.arrow-right:before{font-family:\"iconfont-vue\";content:\"\"}.icon.close:before{font-family:\"iconfont-vue\";content:\"\"}.icon.confirm-fade:before{font-family:\"iconfont-vue\";content:\"\"}.icon.confirm:before{font-family:\"iconfont-vue\";content:\"\"}.icon.menu:before{font-family:\"iconfont-vue\";content:\"\"}.icon.more:before{font-family:\"iconfont-vue\";content:\"\"}.icon.pause:before{font-family:\"iconfont-vue\";content:\"\"}.icon.play:before{font-family:\"iconfont-vue\";content:\"\"}.mx-datepicker[data-v-6673a70]{width:210px;color:inherit;user-select:none;position:relative;display:inline-block}.mx-datepicker[data-v-6673a70].disabled{opacity:.7;cursor:not-allowed}.mx-datepicker[data-v-6673a70] .mx-input-wrapper .mx-input{width:100%}.mx-datepicker[data-v-6673a70] .mx-input-wrapper .mx-input-append{position:absolute;top:0;right:0;width:30px;height:100%;padding:6px;background-color:var(--color-main-background);background-clip:content-box}.mx-datepicker[data-v-6673a70] .mx-input-wrapper .mx-input-append .mx-input-icon{display:inline-block;font-style:normal;text-align:center;cursor:pointer}.mx-datepicker[data-v-6673a70] .mx-input-wrapper .mx-input-append .mx-clear-wrapper{display:none}.mx-datepicker[data-v-6673a70] .mx-input-wrapper .mx-input-append .mx-calendar-icon{stroke-width:8px;stroke:currentColor;fill:currentColor;width:100%;height:100%;color:var(--color-text-lighter)}.mx-datepicker[data-v-6673a70] .mx-datepicker-popup{box-shadow:none;background-color:var(--color-main-background);position:absolute;margin-top:1px;margin-bottom:1px;z-index:1000}.mx-datepicker[data-v-6673a70] .mx-range-wrapper{display:flex;overflow:hidden}.mx-datepicker[data-v-6673a70] .mx-range-wrapper .mx-calendar:first-child{box-shadow:var(--color-border) 1px 0px !important}.mx-datepicker[data-v-6673a70] .mx-range-wrapper .mx-calendar-content .mx-panel .cell.actived{border-radius:var(--border-radius) 0 0 var(--border-radius)}.mx-datepicker[data-v-6673a70] .mx-range-wrapper .mx-calendar-content .mx-panel .cell.inrange+.cell.actived{border-radius:0 var(--border-radius) var(--border-radius) 0}.mx-datepicker[data-v-6673a70] .mx-shortcuts-wrapper{display:flex;justify-content:space-evenly;padding:5px;border-bottom:1px solid var(--color-border)}.mx-datepicker[data-v-6673a70] .mx-shortcuts-wrapper .mx-shortcuts{font-weight:normal}.mx-datepicker[data-v-6673a70] .mx-calendar{font:inherit;color:var(--color-main-text);padding:5px;width:234px}.mx-datepicker[data-v-6673a70] .mx-calendar-header{padding:0 4px;margin-bottom:4px;text-align:center;overflow:hidden;display:flex;align-items:center;justify-content:space-between}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a{text-decoration:none;cursor:pointer;color:var(--color-text-lighter);padding:7px 10px;margin:0 auto;border-radius:32px;height:32px;line-height:20px;min-width:32px}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a:hover,.mx-datepicker[data-v-6673a70] .mx-calendar-header>a:focus{opacity:1;color:var(--color-main-text);background-color:var(--color-background-darker)}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-last-year,.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-last-month,.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-next-month,.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-next-year{background-position:center;background-repeat:no-repeat;font-size:0;opacity:.5;display:flex;align-items:center;justify-content:center;padding:0}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-last-year:before,.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-last-month:before,.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-next-month:before,.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-next-year:before{display:block;font-size:16px}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-last-year:before{font-family:\"iconfont-vue\";font-style:normal;font-weight:400;content:\"\"}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-last-month:before{font-family:\"iconfont-vue\";font-style:normal;font-weight:400;content:\"\"}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-next-month{order:3}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-next-month:before{font-family:\"iconfont-vue\";font-style:normal;font-weight:400;content:\"\"}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-next-year{order:4}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-next-year:before{font-family:\"iconfont-vue\";font-style:normal;font-weight:400;content:\"\"}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel{width:100%;height:100%;text-align:center}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel .cell{opacity:.7;border-radius:50px;transition:all 100ms ease-in-out;cursor:pointer}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel .cell:hover,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel .cell:focus,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel .cell.actived,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel .cell.inrange{font-weight:bold;opacity:1;color:var(--color-primary-text);background-color:var(--color-primary-element)}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel .cell.inrange,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel .cell.disabled{border-radius:0;font-weight:normal}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel .cell.inrange{opacity:.7}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel .cell.disabled{color:var(--color-text-lighter);opacity:.5;background-color:var(--color-background-darker)}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel span.cell,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel li.cell{min-height:32px}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date{table-layout:fixed;border-collapse:collapse;border-spacing:0}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date td,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date th{font-size:12px;width:32px;height:32px;line-height:30px;border:0;padding:0;padding-top:2px;overflow:hidden;text-align:center}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date th{color:var(--color-text-lighter);opacity:.5}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date td.today{color:var(--color-primary);opacity:1;font-weight:bold}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date td.last-month,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date td.next-month{color:var(--color-text-lighter);opacity:.5}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date tr:hover,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date tr:focus,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date tr:active{background:none}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-year,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-month{display:flex;flex-wrap:wrap;justify-content:space-around}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-year span.cell,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-month span.cell{display:block;padding:5px;height:44px;line-height:36px;margin-bottom:1%}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-year .cell{width:45%}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-month .cell{width:30%}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-time{display:flex}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-time .mx-time-list{position:relative;width:100%;height:100%;padding:5px;margin:0;list-style:none;overflow-y:auto;max-height:220px}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-time .mx-time-list .mx-time-picker-item{display:block;text-align:left;padding-left:10px}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-time .mx-time-list .cell{display:flex;justify-content:center;margin-bottom:1px;width:100%;font-size:12px;height:32px;line-height:32px}.mx-datepicker[data-v-6673a70] .mx-datepicker-footer{padding:4px;clear:both;text-align:right;border-top:1px solid var(--color-border)}\\n',\"\"])},function(t,e,n){\"use strict\";var i=n(27);n.n(i).a},function(t,e,n){e=t.exports=n(1)(!1);var i=n(8),o=i(n(9)),a=i(n(10)),r=i(n(11)),s=i(n(12));e.push([t.i,'@font-face{font-family:\"iconfont-vue\";src:url('+o+\");src:url(\"+o+') format(\"embedded-opentype\"),url('+a+') format(\"woff\"),url('+r+') format(\"truetype\"),url('+s+') format(\"svg\")}.icon[data-v-d9538ec8]{font-style:normal;font-weight:400}.icon.arrow-left-double[data-v-d9538ec8]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.arrow-left[data-v-d9538ec8]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.arrow-right-double[data-v-d9538ec8]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.arrow-right[data-v-d9538ec8]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.close[data-v-d9538ec8]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.confirm-fade[data-v-d9538ec8]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.confirm[data-v-d9538ec8]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.menu[data-v-d9538ec8]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.more[data-v-d9538ec8]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.pause[data-v-d9538ec8]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.play[data-v-d9538ec8]:before{font-family:\"iconfont-vue\";content:\"\"}#app-navigation-toggle[data-v-d9538ec8]{display:none;position:fixed;z-index:1050;left:0;width:44px;height:44px;padding:14px;cursor:pointer;opacity:0.6;font-size:16px;line-height:17px}#app-navigation-toggle[data-v-d9538ec8]:before{font-family:\"iconfont-vue\";font-style:normal;font-weight:400;content:\"\"}#app-navigation-toggle[data-v-d9538ec8]:hover,#app-navigation-toggle[data-v-d9538ec8]:focus{opacity:1}@media only screen and (max-width: 768px){#app-navigation-toggle[data-v-d9538ec8]{display:inline-block !important}}\\n',\"\"])},function(t,e,n){\"use strict\";var i=n(28);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,\".app-navigation-entry-utils-counter[data-v-7ed17014]{overflow:hidden;text-align:right;font-size:9px;line-height:44px;padding:0 12px}.highlighted[data-v-7ed17014]{padding:0;text-align:center}.highlighted span[data-v-7ed17014]{padding:2px 5px;border-radius:10px;background-color:var(--color-primary);color:var(--color-primary-text)}\\n\",\"\"])},function(t,e,n){var i=function(t){\"use strict\";var e,n=Object.prototype,i=n.hasOwnProperty,o=\"function\"==typeof Symbol?Symbol:{},a=o.iterator||\"@@iterator\",r=o.asyncIterator||\"@@asyncIterator\",s=o.toStringTag||\"@@toStringTag\";function c(t,e,n,i){var o=e&&e.prototype instanceof A?e:A,a=Object.create(o.prototype),r=new E(i||[]);return a._invoke=function(t,e,n){var i=u;return function(o,a){if(i===p)throw new Error(\"Generator is already running\");if(i===f){if(\"throw\"===o)throw a;return S()}for(n.method=o,n.arg=a;;){var r=n.delegate;if(r){var s=T(r,n);if(s){if(s===h)continue;return s}}if(\"next\"===n.method)n.sent=n._sent=n.arg;else if(\"throw\"===n.method){if(i===u)throw i=f,n.arg;n.dispatchException(n.arg)}else\"return\"===n.method&&n.abrupt(\"return\",n.arg);i=p;var c=l(t,e,n);if(\"normal\"===c.type){if(i=n.done?f:d,c.arg===h)continue;return{value:c.arg,done:n.done}}\"throw\"===c.type&&(i=f,n.method=\"throw\",n.arg=c.arg)}}}(t,n,r),a}function l(t,e,n){try{return{type:\"normal\",arg:t.call(e,n)}}catch(t){return{type:\"throw\",arg:t}}}t.wrap=c;var u=\"suspendedStart\",d=\"suspendedYield\",p=\"executing\",f=\"completed\",h={};function A(){}function v(){}function m(){}var g={};g[a]=function(){return this};var b=Object.getPrototypeOf,y=b&&b(b(M([])));y&&y!==n&&i.call(y,a)&&(g=y);var x=m.prototype=A.prototype=Object.create(g);function w(t){[\"next\",\"throw\",\"return\"].forEach(function(e){t[e]=function(t){return this._invoke(e,t)}})}function _(t){var e;this._invoke=function(n,o){function a(){return new Promise(function(e,a){!function e(n,o,a,r){var s=l(t[n],t,o);if(\"throw\"!==s.type){var c=s.arg,u=c.value;return u&&\"object\"==typeof u&&i.call(u,\"__await\")?Promise.resolve(u.__await).then(function(t){e(\"next\",t,a,r)},function(t){e(\"throw\",t,a,r)}):Promise.resolve(u).then(function(t){c.value=t,a(c)},function(t){return e(\"throw\",t,a,r)})}r(s.arg)}(n,o,e,a)})}return e=e?e.then(a,a):a()}}function T(t,n){var i=t.iterator[n.method];if(i===e){if(n.delegate=null,\"throw\"===n.method){if(t.iterator.return&&(n.method=\"return\",n.arg=e,T(t,n),\"throw\"===n.method))return h;n.method=\"throw\",n.arg=new TypeError(\"The iterator does not provide a 'throw' method\")}return h}var o=l(i,t.iterator,n.arg);if(\"throw\"===o.type)return n.method=\"throw\",n.arg=o.arg,n.delegate=null,h;var a=o.arg;return a?a.done?(n[t.resultName]=a.value,n.next=t.nextLoc,\"return\"!==n.method&&(n.method=\"next\",n.arg=e),n.delegate=null,h):a:(n.method=\"throw\",n.arg=new TypeError(\"iterator result is not an object\"),n.delegate=null,h)}function k(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function C(t){var e=t.completion||{};e.type=\"normal\",delete e.arg,t.completion=e}function E(t){this.tryEntries=[{tryLoc:\"root\"}],t.forEach(k,this),this.reset(!0)}function M(t){if(t){var n=t[a];if(n)return n.call(t);if(\"function\"==typeof t.next)return t;if(!isNaN(t.length)){var o=-1,r=function n(){for(;++o<t.length;)if(i.call(t,o))return n.value=t[o],n.done=!1,n;return n.value=e,n.done=!0,n};return r.next=r}}return{next:S}}function S(){return{value:e,done:!0}}return v.prototype=x.constructor=m,m.constructor=v,m[s]=v.displayName=\"GeneratorFunction\",t.isGeneratorFunction=function(t){var e=\"function\"==typeof t&&t.constructor;return!!e&&(e===v||\"GeneratorFunction\"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,m):(t.__proto__=m,s in t||(t[s]=\"GeneratorFunction\")),t.prototype=Object.create(x),t},t.awrap=function(t){return{__await:t}},w(_.prototype),_.prototype[r]=function(){return this},t.AsyncIterator=_,t.async=function(e,n,i,o){var a=new _(c(e,n,i,o));return t.isGeneratorFunction(n)?a:a.next().then(function(t){return t.done?t.value:a.next()})},w(x),x[s]=\"Generator\",x[a]=function(){return this},x.toString=function(){return\"[object Generator]\"},t.keys=function(t){var e=[];for(var n in t)e.push(n);return e.reverse(),function n(){for(;e.length;){var i=e.pop();if(i in t)return n.value=i,n.done=!1,n}return n.done=!0,n}},t.values=M,E.prototype={constructor:E,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method=\"next\",this.arg=e,this.tryEntries.forEach(C),!t)for(var n in this)\"t\"===n.charAt(0)&&i.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if(\"throw\"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function o(i,o){return s.type=\"throw\",s.arg=t,n.next=i,o&&(n.method=\"next\",n.arg=e),!!o}for(var a=this.tryEntries.length-1;a>=0;--a){var r=this.tryEntries[a],s=r.completion;if(\"root\"===r.tryLoc)return o(\"end\");if(r.tryLoc<=this.prev){var c=i.call(r,\"catchLoc\"),l=i.call(r,\"finallyLoc\");if(c&&l){if(this.prev<r.catchLoc)return o(r.catchLoc,!0);if(this.prev<r.finallyLoc)return o(r.finallyLoc)}else if(c){if(this.prev<r.catchLoc)return o(r.catchLoc,!0)}else{if(!l)throw new Error(\"try statement without catch or finally\");if(this.prev<r.finallyLoc)return o(r.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&i.call(o,\"finallyLoc\")&&this.prev<o.finallyLoc){var a=o;break}}a&&(\"break\"===t||\"continue\"===t)&&a.tryLoc<=e&&e<=a.finallyLoc&&(a=null);var r=a?a.completion:{};return r.type=t,r.arg=e,a?(this.method=\"next\",this.next=a.finallyLoc,h):this.complete(r)},complete:function(t,e){if(\"throw\"===t.type)throw t.arg;return\"break\"===t.type||\"continue\"===t.type?this.next=t.arg:\"return\"===t.type?(this.rval=this.arg=t.arg,this.method=\"return\",this.next=\"end\"):\"normal\"===t.type&&e&&(this.next=e),h},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),C(n),h}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if(\"throw\"===i.type){var o=i.arg;C(n)}return o}}throw new Error(\"illegal catch attempt\")},delegateYield:function(t,n,i){return this.delegate={iterator:M(t),resultName:n,nextLoc:i},\"next\"===this.method&&(this.arg=e),h}},t}(t.exports);try{regeneratorRuntime=i}catch(t){Function(\"r\",\"regeneratorRuntime = r\")(i)}},function(t,e,n){t.exports=n(100)},function(t,e,n){\"use strict\";var i=n(4),o=n(68),a=n(102),r=n(74);function s(t){var e=new a(t),n=o(a.prototype.request,e);return i.extend(n,a.prototype,e),i.extend(n,e),n}var c=s(n(71));c.Axios=a,c.create=function(t){return s(r(c.defaults,t))},c.Cancel=n(75),c.CancelToken=n(115),c.isCancel=n(70),c.all=function(t){return Promise.all(t)},c.spread=n(116),t.exports=c,t.exports.default=c},function(t,e){\n/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\nt.exports=function(t){return null!=t&&null!=t.constructor&&\"function\"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}},function(t,e,n){\"use strict\";var i=n(4),o=n(69),a=n(103),r=n(104),s=n(74);function c(t){this.defaults=t,this.interceptors={request:new a,response:new a}}c.prototype.request=function(t){\"string\"==typeof t?(t=arguments[1]||{}).url=arguments[0]:t=t||{},(t=s(this.defaults,t)).method=t.method?t.method.toLowerCase():\"get\";var e=[r,void 0],n=Promise.resolve(t);for(this.interceptors.request.forEach(function(t){e.unshift(t.fulfilled,t.rejected)}),this.interceptors.response.forEach(function(t){e.push(t.fulfilled,t.rejected)});e.length;)n=n.then(e.shift(),e.shift());return n},c.prototype.getUri=function(t){return t=s(this.defaults,t),o(t.url,t.params,t.paramsSerializer).replace(/^\\?/,\"\")},i.forEach([\"delete\",\"get\",\"head\",\"options\"],function(t){c.prototype[t]=function(e,n){return this.request(i.merge(n||{},{method:t,url:e}))}}),i.forEach([\"post\",\"put\",\"patch\"],function(t){c.prototype[t]=function(e,n,o){return this.request(i.merge(o||{},{method:t,url:e,data:n}))}}),t.exports=c},function(t,e,n){\"use strict\";var i=n(4);function o(){this.handlers=[]}o.prototype.use=function(t,e){return this.handlers.push({fulfilled:t,rejected:e}),this.handlers.length-1},o.prototype.eject=function(t){this.handlers[t]&&(this.handlers[t]=null)},o.prototype.forEach=function(t){i.forEach(this.handlers,function(e){null!==e&&t(e)})},t.exports=o},function(t,e,n){\"use strict\";var i=n(4),o=n(105),a=n(70),r=n(71),s=n(113),c=n(114);function l(t){t.cancelToken&&t.cancelToken.throwIfRequested()}t.exports=function(t){return l(t),t.baseURL&&!s(t.url)&&(t.url=c(t.baseURL,t.url)),t.headers=t.headers||{},t.data=o(t.data,t.headers,t.transformRequest),t.headers=i.merge(t.headers.common||{},t.headers[t.method]||{},t.headers||{}),i.forEach([\"delete\",\"get\",\"head\",\"post\",\"put\",\"patch\",\"common\"],function(e){delete t.headers[e]}),(t.adapter||r.adapter)(t).then(function(e){return l(t),e.data=o(e.data,e.headers,t.transformResponse),e},function(e){return a(e)||(l(t),e&&e.response&&(e.response.data=o(e.response.data,e.response.headers,t.transformResponse))),Promise.reject(e)})}},function(t,e,n){\"use strict\";var i=n(4);t.exports=function(t,e,n){return i.forEach(n,function(n){t=n(t,e)}),t}},function(t,e){var n,i,o=t.exports={};function a(){throw new Error(\"setTimeout has not been defined\")}function r(){throw new Error(\"clearTimeout has not been defined\")}function s(t){if(n===setTimeout)return setTimeout(t,0);if((n===a||!n)&&setTimeout)return n=setTimeout,setTimeout(t,0);try{return n(t,0)}catch(e){try{return n.call(null,t,0)}catch(e){return n.call(this,t,0)}}}!function(){try{n=\"function\"==typeof setTimeout?setTimeout:a}catch(t){n=a}try{i=\"function\"==typeof clearTimeout?clearTimeout:r}catch(t){i=r}}();var c,l=[],u=!1,d=-1;function p(){u&&c&&(u=!1,c.length?l=c.concat(l):d=-1,l.length&&f())}function f(){if(!u){var t=s(p);u=!0;for(var e=l.length;e;){for(c=l,l=[];++d<e;)c&&c[d].run();d=-1,e=l.length}c=null,u=!1,function(t){if(i===clearTimeout)return clearTimeout(t);if((i===r||!i)&&clearTimeout)return i=clearTimeout,clearTimeout(t);try{i(t)}catch(e){try{return i.call(null,t)}catch(e){return i.call(this,t)}}}(t)}}function h(t,e){this.fun=t,this.array=e}function A(){}o.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];l.push(new h(t,e)),1!==l.length||u||s(f)},h.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=A,o.addListener=A,o.once=A,o.off=A,o.removeListener=A,o.removeAllListeners=A,o.emit=A,o.prependListener=A,o.prependOnceListener=A,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}},function(t,e,n){\"use strict\";var i=n(4);t.exports=function(t,e){i.forEach(t,function(n,i){i!==e&&i.toUpperCase()===e.toUpperCase()&&(t[e]=n,delete t[i])})}},function(t,e,n){\"use strict\";var i=n(73);t.exports=function(t,e,n){var o=n.config.validateStatus;!o||o(n.status)?t(n):e(i(\"Request failed with status code \"+n.status,n.config,null,n.request,n))}},function(t,e,n){\"use strict\";t.exports=function(t,e,n,i,o){return t.config=e,n&&(t.code=n),t.request=i,t.response=o,t.isAxiosError=!0,t.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},t}},function(t,e,n){\"use strict\";var i=n(4),o=[\"age\",\"authorization\",\"content-length\",\"content-type\",\"etag\",\"expires\",\"from\",\"host\",\"if-modified-since\",\"if-unmodified-since\",\"last-modified\",\"location\",\"max-forwards\",\"proxy-authorization\",\"referer\",\"retry-after\",\"user-agent\"];t.exports=function(t){var e,n,a,r={};return t?(i.forEach(t.split(\"\\n\"),function(t){if(a=t.indexOf(\":\"),e=i.trim(t.substr(0,a)).toLowerCase(),n=i.trim(t.substr(a+1)),e){if(r[e]&&o.indexOf(e)>=0)return;r[e]=\"set-cookie\"===e?(r[e]?r[e]:[]).concat([n]):r[e]?r[e]+\", \"+n:n}}),r):r}},function(t,e,n){\"use strict\";var i=n(4);t.exports=i.isStandardBrowserEnv()?function(){var t,e=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement(\"a\");function o(t){var i=t;return e&&(n.setAttribute(\"href\",i),i=n.href),n.setAttribute(\"href\",i),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,\"\"):\"\",host:n.host,search:n.search?n.search.replace(/^\\?/,\"\"):\"\",hash:n.hash?n.hash.replace(/^#/,\"\"):\"\",hostname:n.hostname,port:n.port,pathname:\"/\"===n.pathname.charAt(0)?n.pathname:\"/\"+n.pathname}}return t=o(window.location.href),function(e){var n=i.isString(e)?o(e):e;return n.protocol===t.protocol&&n.host===t.host}}():function(){return!0}},function(t,e,n){\"use strict\";var i=n(4);t.exports=i.isStandardBrowserEnv()?{write:function(t,e,n,o,a,r){var s=[];s.push(t+\"=\"+encodeURIComponent(e)),i.isNumber(n)&&s.push(\"expires=\"+new Date(n).toGMTString()),i.isString(o)&&s.push(\"path=\"+o),i.isString(a)&&s.push(\"domain=\"+a),!0===r&&s.push(\"secure\"),document.cookie=s.join(\"; \")},read:function(t){var e=document.cookie.match(new RegExp(\"(^|;\\\\s*)(\"+t+\")=([^;]*)\"));return e?decodeURIComponent(e[3]):null},remove:function(t){this.write(t,\"\",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},function(t,e,n){\"use strict\";t.exports=function(t){return/^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(t)}},function(t,e,n){\"use strict\";t.exports=function(t,e){return e?t.replace(/\\/+$/,\"\")+\"/\"+e.replace(/^\\/+/,\"\"):t}},function(t,e,n){\"use strict\";var i=n(75);function o(t){if(\"function\"!=typeof t)throw new TypeError(\"executor must be a function.\");var e;this.promise=new Promise(function(t){e=t});var n=this;t(function(t){n.reason||(n.reason=new i(t),e(n.reason))})}o.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},o.source=function(){var t;return{token:new o(function(e){t=e}),cancel:t}},t.exports=o},function(t,e,n){\"use strict\";t.exports=function(t){return function(e){return t.apply(null,e)}}},function(t,e){var n,i;n=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",i={rotl:function(t,e){return t<<e|t>>>32-e},rotr:function(t,e){return t<<32-e|t>>>e},endian:function(t){if(t.constructor==Number)return 16711935&i.rotl(t,8)|4278255360&i.rotl(t,24);for(var e=0;e<t.length;e++)t[e]=i.endian(t[e]);return t},randomBytes:function(t){for(var e=[];t>0;t--)e.push(Math.floor(256*Math.random()));return e},bytesToWords:function(t){for(var e=[],n=0,i=0;n<t.length;n++,i+=8)e[i>>>5]|=t[n]<<24-i%32;return e},wordsToBytes:function(t){for(var e=[],n=0;n<32*t.length;n+=8)e.push(t[n>>>5]>>>24-n%32&255);return e},bytesToHex:function(t){for(var e=[],n=0;n<t.length;n++)e.push((t[n]>>>4).toString(16)),e.push((15&t[n]).toString(16));return e.join(\"\")},hexToBytes:function(t){for(var e=[],n=0;n<t.length;n+=2)e.push(parseInt(t.substr(n,2),16));return e},bytesToBase64:function(t){for(var e=[],i=0;i<t.length;i+=3)for(var o=t[i]<<16|t[i+1]<<8|t[i+2],a=0;a<4;a++)8*i+6*a<=8*t.length?e.push(n.charAt(o>>>6*(3-a)&63)):e.push(\"=\");return e.join(\"\")},base64ToBytes:function(t){t=t.replace(/[^A-Z0-9+\\/]/gi,\"\");for(var e=[],i=0,o=0;i<t.length;o=++i%4)0!=o&&e.push((n.indexOf(t.charAt(i-1))&Math.pow(2,-2*o+8)-1)<<2*o|n.indexOf(t.charAt(i))>>>6-2*o);return e}},t.exports=i},function(t,e){function n(t){return!!t.constructor&&\"function\"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}\n/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\nt.exports=function(t){return null!=t&&(n(t)||function(t){return\"function\"==typeof t.readFloatLE&&\"function\"==typeof t.slice&&n(t.slice(0,0))}(t)||!!t._isBuffer)}},function(t,e,n){\"use strict\";var i=n(29);n.n(i).a},function(t,e,n){e=t.exports=n(1)(!1);var i=n(8),o=i(n(9)),a=i(n(10)),r=i(n(11)),s=i(n(12));e.push([t.i,'@font-face{font-family:\"iconfont-vue\";src:url('+o+\");src:url(\"+o+') format(\"embedded-opentype\"),url('+a+') format(\"woff\"),url('+r+') format(\"truetype\"),url('+s+') format(\"svg\")}.icon[data-v-6015a092]{font-style:normal;font-weight:400}.icon.arrow-left-double[data-v-6015a092]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.arrow-left[data-v-6015a092]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.arrow-right-double[data-v-6015a092]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.arrow-right[data-v-6015a092]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.close[data-v-6015a092]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.confirm-fade[data-v-6015a092]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.confirm[data-v-6015a092]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.menu[data-v-6015a092]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.more[data-v-6015a092]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.pause[data-v-6015a092]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.play[data-v-6015a092]:before{font-family:\"iconfont-vue\";content:\"\"}.avatardiv[data-v-6015a092]{position:relative;display:inline-block}.avatardiv--unknown[data-v-6015a092]{position:relative;background-color:var(--color-text-maxcontrast)}.avatardiv--with-menu[data-v-6015a092]{cursor:pointer}.avatardiv--with-menu .icon-more[data-v-6015a092]{position:absolute;top:0;left:0;display:flex;align-items:center;justify-content:center;width:inherit;height:inherit;cursor:pointer;opacity:0;background:none;font-size:18px}.avatardiv--with-menu .icon-more[data-v-6015a092]:before{font-family:\"iconfont-vue\";font-style:normal;font-weight:400;content:\"\"}.avatardiv--with-menu .icon-more[data-v-6015a092]::before{display:block}.avatardiv--with-menu:focus .icon-more[data-v-6015a092],.avatardiv--with-menu:hover .icon-more[data-v-6015a092]{opacity:1}.avatardiv--with-menu:focus img[data-v-6015a092],.avatardiv--with-menu:hover img[data-v-6015a092]{opacity:0}.avatardiv--with-menu .icon-more[data-v-6015a092],.avatardiv--with-menu img[data-v-6015a092]{transition:opacity var(--animation-quick)}.avatardiv>.unknown[data-v-6015a092]{position:absolute;top:0;left:0;display:block;width:100%;text-align:center;color:var(--color-main-background)}.avatardiv img[data-v-6015a092]{width:100%;height:100%}.avatardiv .avatardiv__status[data-v-6015a092]{position:absolute;top:22px;left:22px;width:10px;height:10px;border:1px solid rgba(255,255,255,0.5);background-clip:content-box}.avatardiv .avatardiv__status--positive[data-v-6015a092]{border-radius:50%;background-color:var(--color-success)}.avatardiv .avatardiv__status--negative[data-v-6015a092]{background-color:var(--color-error)}.avatardiv .avatardiv__status--neutral[data-v-6015a092]{border:none;background-color:transparent !important}.avatardiv .avatardiv__status--neutral svg[data-v-6015a092]{position:absolute;top:-3px;left:-2px}.avatardiv .avatardiv__status--neutral svg path[data-v-6015a092]{fill:#aaa}.avatardiv .popovermenu-wrapper[data-v-6015a092]{position:relative;display:inline-block}.avatardiv .popovermenu[data-v-6015a092]{display:block;margin:0;font-size:initial}\\n',\"\"])},function(t,e){function n(t){return(n=\"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})(t)}function i(e){return\"function\"==typeof Symbol&&\"symbol\"===n(Symbol.iterator)?t.exports=i=function(t){return n(t)}:t.exports=i=function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":n(t)},i(e)}t.exports=i},function(t,e,n){t.exports=function(t){function e(i){if(n[i])return n[i].exports;var o=n[i]={i:i,l:!1,exports:{}};return t[i].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var n={};return e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,i){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:i})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,\"a\",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p=\"/\",e(e.s=60)}([function(t,e){var n=t.exports=\"undefined\"!=typeof window&&window.Math==Math?window:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")();\"number\"==typeof __g&&(__g=n)},function(t,e,n){var i=n(49)(\"wks\"),o=n(30),a=n(0).Symbol,r=\"function\"==typeof a;(t.exports=function(t){return i[t]||(i[t]=r&&a[t]||(r?a:o)(\"Symbol.\"+t))}).store=i},function(t,e,n){var i=n(5);t.exports=function(t){if(!i(t))throw TypeError(t+\" is not an object!\");return t}},function(t,e,n){var i=n(0),o=n(10),a=n(8),r=n(6),s=n(11),c=function(t,e,n){var l,u,d,p,f=t&c.F,h=t&c.G,A=t&c.S,v=t&c.P,m=t&c.B,g=h?i:A?i[e]||(i[e]={}):(i[e]||{}).prototype,b=h?o:o[e]||(o[e]={}),y=b.prototype||(b.prototype={});for(l in h&&(n=e),n)u=!f&&g&&void 0!==g[l],d=(u?g:n)[l],p=m&&u?s(d,i):v&&\"function\"==typeof d?s(Function.call,d):d,g&&r(g,l,d,t&c.U),b[l]!=d&&a(b,l,p),v&&y[l]!=d&&(y[l]=d)};i.core=o,c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,t.exports=c},function(t,e,n){t.exports=!n(7)(function(){return 7!=Object.defineProperty({},\"a\",{get:function(){return 7}}).a})},function(t,e){t.exports=function(t){return\"object\"==typeof t?null!==t:\"function\"==typeof t}},function(t,e,n){var i=n(0),o=n(8),a=n(12),r=n(30)(\"src\"),s=Function.toString,c=(\"\"+s).split(\"toString\");n(10).inspectSource=function(t){return s.call(t)},(t.exports=function(t,e,n,s){var l=\"function\"==typeof n;l&&(a(n,\"name\")||o(n,\"name\",e)),t[e]!==n&&(l&&(a(n,r)||o(n,r,t[e]?\"\"+t[e]:c.join(String(e)))),t===i?t[e]=n:s?t[e]?t[e]=n:o(t,e,n):(delete t[e],o(t,e,n)))})(Function.prototype,\"toString\",function(){return\"function\"==typeof this&&this[r]||s.call(this)})},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,n){var i=n(13),o=n(25);t.exports=n(4)?function(t,e,n){return i.f(t,e,o(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,e){var n=t.exports={version:\"2.5.7\"};\"number\"==typeof __e&&(__e=n)},function(t,e,n){var i=n(14);t.exports=function(t,e,n){if(i(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,i){return t.call(e,n,i)};case 3:return function(n,i,o){return t.call(e,n,i,o)}}return function(){return t.apply(e,arguments)}}},function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},function(t,e,n){var i=n(2),o=n(41),a=n(29),r=Object.defineProperty;e.f=n(4)?Object.defineProperty:function(t,e,n){if(i(t),e=a(e,!0),i(n),o)try{return r(t,e,n)}catch(t){}if(\"get\"in n||\"set\"in n)throw TypeError(\"Accessors not supported!\");return\"value\"in n&&(t[e]=n.value),t}},function(t,e){t.exports=function(t){if(\"function\"!=typeof t)throw TypeError(t+\" is not a function!\");return t}},function(t,e){t.exports={}},function(t,e){t.exports=function(t){if(null==t)throw TypeError(\"Can't call method on \"+t);return t}},function(t,e,n){\"use strict\";var i=n(7);t.exports=function(t,e){return!!t&&i(function(){e?t.call(null,function(){},1):t.call(null)})}},function(t,e,n){var i=n(23),o=n(16);t.exports=function(t){return i(o(t))}},function(t,e,n){var i=n(53),o=Math.min;t.exports=function(t){return t>0?o(i(t),9007199254740991):0}},function(t,e,n){var i=n(11),o=n(23),a=n(28),r=n(19),s=n(64);t.exports=function(t,e){var n=1==t,c=2==t,l=3==t,u=4==t,d=6==t,p=5==t||d,f=e||s;return function(e,s,h){for(var A,v,m=a(e),g=o(m),b=i(s,h,3),y=r(g.length),x=0,w=n?f(e,y):c?f(e,0):void 0;y>x;x++)if((p||x in g)&&(A=g[x],v=b(A,x,m),t))if(n)w[x]=v;else if(v)switch(t){case 3:return!0;case 5:return A;case 6:return x;case 2:w.push(A)}else if(u)return!1;return d?-1:l||u?u:w}}},function(t,e,n){var i=n(5),o=n(0).document,a=i(o)&&i(o.createElement);t.exports=function(t){return a?o.createElement(t):{}}},function(t,e){t.exports=\"constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf\".split(\",\")},function(t,e,n){var i=n(9);t.exports=Object(\"z\").propertyIsEnumerable(0)?Object:function(t){return\"String\"==i(t)?t.split(\"\"):Object(t)}},function(t,e){t.exports=!1},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,n){var i=n(13).f,o=n(12),a=n(1)(\"toStringTag\");t.exports=function(t,e,n){t&&!o(t=n?t:t.prototype,a)&&i(t,a,{configurable:!0,value:e})}},function(t,e,n){var i=n(49)(\"keys\"),o=n(30);t.exports=function(t){return i[t]||(i[t]=o(t))}},function(t,e,n){var i=n(16);t.exports=function(t){return Object(i(t))}},function(t,e,n){var i=n(5);t.exports=function(t,e){if(!i(t))return t;var n,o;if(e&&\"function\"==typeof(n=t.toString)&&!i(o=n.call(t)))return o;if(\"function\"==typeof(n=t.valueOf)&&!i(o=n.call(t)))return o;if(!e&&\"function\"==typeof(n=t.toString)&&!i(o=n.call(t)))return o;throw TypeError(\"Can't convert object to primitive value\")}},function(t,e){var n=0,i=Math.random();t.exports=function(t){return\"Symbol(\".concat(void 0===t?\"\":t,\")_\",(++n+i).toString(36))}},function(t,e,n){\"use strict\";var i=n(0),o=n(12),a=n(9),r=n(67),s=n(29),c=n(7),l=n(77).f,u=n(45).f,d=n(13).f,p=n(51).trim,f=i.Number,h=f,A=f.prototype,v=\"Number\"==a(n(44)(A)),m=\"trim\"in String.prototype,g=function(t){var e=s(t,!1);if(\"string\"==typeof e&&e.length>2){var n,i,o,a=(e=m?e.trim():p(e,3)).charCodeAt(0);if(43===a||45===a){if(88===(n=e.charCodeAt(2))||120===n)return NaN}else if(48===a){switch(e.charCodeAt(1)){case 66:case 98:i=2,o=49;break;case 79:case 111:i=8,o=55;break;default:return+e}for(var r,c=e.slice(2),l=0,u=c.length;l<u;l++)if((r=c.charCodeAt(l))<48||r>o)return NaN;return parseInt(c,i)}}return+e};if(!f(\" 0o1\")||!f(\"0b1\")||f(\"+0x1\")){f=function(t){var e=arguments.length<1?0:t,n=this;return n instanceof f&&(v?c(function(){A.valueOf.call(n)}):\"Number\"!=a(n))?r(new h(g(e)),n,f):g(e)};for(var b,y=n(4)?l(h):\"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger\".split(\",\"),x=0;y.length>x;x++)o(h,b=y[x])&&!o(f,b)&&d(f,b,u(h,b));f.prototype=A,A.constructor=f,n(6)(i,\"Number\",f)}},function(t,e,n){\"use strict\";function i(t){return!(0===t||(!Array.isArray(t)||0!==t.length)&&t)}function o(t,e,n,i){return t.filter(function(t){return function(t,e){return void 0===t&&(t=\"undefined\"),null===t&&(t=\"null\"),!1===t&&(t=\"false\"),-1!==t.toString().toLowerCase().indexOf(e.trim())}(i(t,n),e)})}function a(t){return t.filter(function(t){return!t.$isLabel})}function r(t,e){return function(n){return n.reduce(function(n,i){return i[t]&&i[t].length?(n.push({$groupLabel:i[e],$isLabel:!0}),n.concat(i[t])):n},[])}}function s(t,e,i,a,r){return function(s){return s.map(function(s){var c;if(!s[i])return console.warn(\"Options passed to vue-multiselect do not contain groups, despite the config.\"),[];var l=o(s[i],t,e,r);return l.length?(c={},n.i(p.a)(c,a,s[a]),n.i(p.a)(c,i,l),c):[]})}}var c=n(59),l=n(54),u=(n.n(l),n(95)),d=(n.n(u),n(31)),p=(n.n(d),n(58)),f=n(91),h=(n.n(f),n(98)),A=(n.n(h),n(92)),v=(n.n(A),n(88)),m=(n.n(v),n(97)),g=(n.n(m),n(89)),b=(n.n(g),n(96)),y=(n.n(b),n(93)),x=(n.n(y),n(90)),w=(n.n(x),function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return function(t){return e.reduce(function(t,e){return e(t)},t)}});e.a={data:function(){return{search:\"\",isOpen:!1,preferredOpenDirection:\"below\",optimizedHeight:this.maxHeight}},props:{internalSearch:{type:Boolean,default:!0},options:{type:Array,required:!0},multiple:{type:Boolean,default:!1},value:{type:null,default:function(){return[]}},trackBy:{type:String},label:{type:String},searchable:{type:Boolean,default:!0},clearOnSelect:{type:Boolean,default:!0},hideSelected:{type:Boolean,default:!1},placeholder:{type:String,default:\"Select option\"},allowEmpty:{type:Boolean,default:!0},resetAfter:{type:Boolean,default:!1},closeOnSelect:{type:Boolean,default:!0},customLabel:{type:Function,default:function(t,e){return i(t)?\"\":e?t[e]:t}},taggable:{type:Boolean,default:!1},tagPlaceholder:{type:String,default:\"Press enter to create a tag\"},tagPosition:{type:String,default:\"top\"},max:{type:[Number,Boolean],default:!1},id:{default:null},optionsLimit:{type:Number,default:1e3},groupValues:{type:String},groupLabel:{type:String},groupSelect:{type:Boolean,default:!1},blockKeys:{type:Array,default:function(){return[]}},preserveSearch:{type:Boolean,default:!1},preselectFirst:{type:Boolean,default:!1}},mounted:function(){!this.multiple&&this.max&&console.warn(\"[Vue-Multiselect warn]: Max prop should not be used when prop Multiple equals false.\"),this.preselectFirst&&!this.internalValue.length&&this.options.length&&this.select(this.filteredOptions[0])},computed:{internalValue:function(){return this.value||0===this.value?Array.isArray(this.value)?this.value:[this.value]:[]},filteredOptions:function(){var t=this.search||\"\",e=t.toLowerCase().trim(),n=this.options.concat();return n=this.internalSearch?this.groupValues?this.filterAndFlat(n,e,this.label):o(n,e,this.label,this.customLabel):this.groupValues?r(this.groupValues,this.groupLabel)(n):n,n=this.hideSelected?n.filter(function(t){return function(){return!t.apply(void 0,arguments)}}(this.isSelected)):n,this.taggable&&e.length&&!this.isExistingOption(e)&&(\"bottom\"===this.tagPosition?n.push({isTag:!0,label:t}):n.unshift({isTag:!0,label:t})),n.slice(0,this.optionsLimit)},valueKeys:function(){var t=this;return this.trackBy?this.internalValue.map(function(e){return e[t.trackBy]}):this.internalValue},optionKeys:function(){var t=this;return(this.groupValues?this.flatAndStrip(this.options):this.options).map(function(e){return t.customLabel(e,t.label).toString().toLowerCase()})},currentOptionLabel:function(){return this.multiple?this.searchable?\"\":this.placeholder:this.internalValue.length?this.getOptionLabel(this.internalValue[0]):this.searchable?\"\":this.placeholder}},watch:{internalValue:function(){this.resetAfter&&this.internalValue.length&&(this.search=\"\",this.$emit(\"input\",this.multiple?[]:null))},search:function(){this.$emit(\"search-change\",this.search,this.id)}},methods:{getValue:function(){return this.multiple?this.internalValue:0===this.internalValue.length?null:this.internalValue[0]},filterAndFlat:function(t,e,n){return w(s(e,n,this.groupValues,this.groupLabel,this.customLabel),r(this.groupValues,this.groupLabel))(t)},flatAndStrip:function(t){return w(r(this.groupValues,this.groupLabel),a)(t)},updateSearch:function(t){this.search=t},isExistingOption:function(t){return!!this.options&&this.optionKeys.indexOf(t)>-1},isSelected:function(t){var e=this.trackBy?t[this.trackBy]:t;return this.valueKeys.indexOf(e)>-1},isOptionDisabled:function(t){return!!t.$isDisabled},getOptionLabel:function(t){if(i(t))return\"\";if(t.isTag)return t.label;if(t.$isLabel)return t.$groupLabel;var e=this.customLabel(t,this.label);return i(e)?\"\":e},select:function(t,e){if(t.$isLabel&&this.groupSelect)this.selectGroup(t);else if(!(-1!==this.blockKeys.indexOf(e)||this.disabled||t.$isDisabled||t.$isLabel)&&(!this.max||!this.multiple||this.internalValue.length!==this.max)&&(\"Tab\"!==e||this.pointerDirty)){if(t.isTag)this.$emit(\"tag\",t.label,this.id),this.search=\"\",this.closeOnSelect&&!this.multiple&&this.deactivate();else{if(this.isSelected(t))return void(\"Tab\"!==e&&this.removeElement(t));this.$emit(\"select\",t,this.id),this.multiple?this.$emit(\"input\",this.internalValue.concat([t]),this.id):this.$emit(\"input\",t,this.id),this.clearOnSelect&&(this.search=\"\")}this.closeOnSelect&&this.deactivate()}},selectGroup:function(t){var e=this,n=this.options.find(function(n){return n[e.groupLabel]===t.$groupLabel});if(n)if(this.wholeGroupSelected(n)){this.$emit(\"remove\",n[this.groupValues],this.id);var i=this.internalValue.filter(function(t){return-1===n[e.groupValues].indexOf(t)});this.$emit(\"input\",i,this.id)}else{var o=n[this.groupValues].filter(function(t){return!(e.isOptionDisabled(t)||e.isSelected(t))});this.$emit(\"select\",o,this.id),this.$emit(\"input\",this.internalValue.concat(o),this.id)}},wholeGroupSelected:function(t){var e=this;return t[this.groupValues].every(function(t){return e.isSelected(t)||e.isOptionDisabled(t)})},wholeGroupDisabled:function(t){return t[this.groupValues].every(this.isOptionDisabled)},removeElement:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(!this.disabled&&!t.$isDisabled){if(!this.allowEmpty&&this.internalValue.length<=1)return void this.deactivate();var i=\"object\"===n.i(c.a)(t)?this.valueKeys.indexOf(t[this.trackBy]):this.valueKeys.indexOf(t);if(this.$emit(\"remove\",t,this.id),this.multiple){var o=this.internalValue.slice(0,i).concat(this.internalValue.slice(i+1));this.$emit(\"input\",o,this.id)}else this.$emit(\"input\",null,this.id);this.closeOnSelect&&e&&this.deactivate()}},removeLastElement:function(){-1===this.blockKeys.indexOf(\"Delete\")&&0===this.search.length&&Array.isArray(this.internalValue)&&this.internalValue.length&&this.removeElement(this.internalValue[this.internalValue.length-1],!1)},activate:function(){var t=this;this.isOpen||this.disabled||(this.adjustPosition(),this.groupValues&&0===this.pointer&&this.filteredOptions.length&&(this.pointer=1),this.isOpen=!0,this.searchable?(this.preserveSearch||(this.search=\"\"),this.$nextTick(function(){return t.$refs.search.focus()})):this.$el.focus(),this.$emit(\"open\",this.id))},deactivate:function(){this.isOpen&&(this.isOpen=!1,this.searchable?this.$refs.search.blur():this.$el.blur(),this.preserveSearch||(this.search=\"\"),this.$emit(\"close\",this.getValue(),this.id))},toggle:function(){this.isOpen?this.deactivate():this.activate()},adjustPosition:function(){if(\"undefined\"!=typeof window){var t=this.$el.getBoundingClientRect().top,e=window.innerHeight-this.$el.getBoundingClientRect().bottom;e>this.maxHeight||e>t||\"below\"===this.openDirection||\"bottom\"===this.openDirection?(this.preferredOpenDirection=\"below\",this.optimizedHeight=Math.min(e-40,this.maxHeight)):(this.preferredOpenDirection=\"above\",this.optimizedHeight=Math.min(t-40,this.maxHeight))}}}}},function(t,e,n){\"use strict\";var i=n(54),o=(n.n(i),n(31));n.n(o),e.a={data:function(){return{pointer:0,pointerDirty:!1}},props:{showPointer:{type:Boolean,default:!0},optionHeight:{type:Number,default:40}},computed:{pointerPosition:function(){return this.pointer*this.optionHeight},visibleElements:function(){return this.optimizedHeight/this.optionHeight}},watch:{filteredOptions:function(){this.pointerAdjust()},isOpen:function(){this.pointerDirty=!1}},methods:{optionHighlight:function(t,e){return{\"multiselect__option--highlight\":t===this.pointer&&this.showPointer,\"multiselect__option--selected\":this.isSelected(e)}},groupHighlight:function(t,e){var n=this;if(!this.groupSelect)return[\"multiselect__option--group\",\"multiselect__option--disabled\"];var i=this.options.find(function(t){return t[n.groupLabel]===e.$groupLabel});return i&&!this.wholeGroupDisabled(i)?[\"multiselect__option--group\",{\"multiselect__option--highlight\":t===this.pointer&&this.showPointer},{\"multiselect__option--group-selected\":this.wholeGroupSelected(i)}]:\"multiselect__option--disabled\"},addPointerElement:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"Enter\",e=t.key;this.filteredOptions.length>0&&this.select(this.filteredOptions[this.pointer],e),this.pointerReset()},pointerForward:function(){this.pointer<this.filteredOptions.length-1&&(this.pointer++,this.$refs.list.scrollTop<=this.pointerPosition-(this.visibleElements-1)*this.optionHeight&&(this.$refs.list.scrollTop=this.pointerPosition-(this.visibleElements-1)*this.optionHeight),this.filteredOptions[this.pointer]&&this.filteredOptions[this.pointer].$isLabel&&!this.groupSelect&&this.pointerForward()),this.pointerDirty=!0},pointerBackward:function(){this.pointer>0?(this.pointer--,this.$refs.list.scrollTop>=this.pointerPosition&&(this.$refs.list.scrollTop=this.pointerPosition),this.filteredOptions[this.pointer]&&this.filteredOptions[this.pointer].$isLabel&&!this.groupSelect&&this.pointerBackward()):this.filteredOptions[this.pointer]&&this.filteredOptions[0].$isLabel&&!this.groupSelect&&this.pointerForward(),this.pointerDirty=!0},pointerReset:function(){this.closeOnSelect&&(this.pointer=0,this.$refs.list&&(this.$refs.list.scrollTop=0))},pointerAdjust:function(){this.pointer>=this.filteredOptions.length-1&&(this.pointer=this.filteredOptions.length?this.filteredOptions.length-1:0),this.filteredOptions.length>0&&this.filteredOptions[this.pointer].$isLabel&&!this.groupSelect&&this.pointerForward()},pointerSet:function(t){this.pointer=t,this.pointerDirty=!0}}}},function(t,e,n){\"use strict\";var i=n(36),o=n(74),a=n(15),r=n(18);t.exports=n(72)(Array,\"Array\",function(t,e){this._t=r(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,o(1)):o(0,\"keys\"==e?n:\"values\"==e?t[n]:[n,t[n]])},\"values\"),a.Arguments=a.Array,i(\"keys\"),i(\"values\"),i(\"entries\")},function(t,e,n){\"use strict\";var i=n(31),o=(n.n(i),n(32)),a=n(33);e.a={name:\"vue-multiselect\",mixins:[o.a,a.a],props:{name:{type:String,default:\"\"},selectLabel:{type:String,default:\"Press enter to select\"},selectGroupLabel:{type:String,default:\"Press enter to select group\"},selectedLabel:{type:String,default:\"Selected\"},deselectLabel:{type:String,default:\"Press enter to remove\"},deselectGroupLabel:{type:String,default:\"Press enter to deselect group\"},showLabels:{type:Boolean,default:!0},limit:{type:Number,default:99999},maxHeight:{type:Number,default:300},limitText:{type:Function,default:function(t){return\"and \".concat(t,\" more\")}},loading:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},openDirection:{type:String,default:\"\"},showNoOptions:{type:Boolean,default:!0},showNoResults:{type:Boolean,default:!0},tabindex:{type:Number,default:0}},computed:{isSingleLabelVisible:function(){return(this.singleValue||0===this.singleValue)&&(!this.isOpen||!this.searchable)&&!this.visibleValues.length},isPlaceholderVisible:function(){return!(this.internalValue.length||this.searchable&&this.isOpen)},visibleValues:function(){return this.multiple?this.internalValue.slice(0,this.limit):[]},singleValue:function(){return this.internalValue[0]},deselectLabelText:function(){return this.showLabels?this.deselectLabel:\"\"},deselectGroupLabelText:function(){return this.showLabels?this.deselectGroupLabel:\"\"},selectLabelText:function(){return this.showLabels?this.selectLabel:\"\"},selectGroupLabelText:function(){return this.showLabels?this.selectGroupLabel:\"\"},selectedLabelText:function(){return this.showLabels?this.selectedLabel:\"\"},inputStyle:function(){if(this.searchable||this.multiple&&this.value&&this.value.length)return this.isOpen?{width:\"100%\"}:{width:\"0\",position:\"absolute\",padding:\"0\"}},contentStyle:function(){return this.options.length?{display:\"inline-block\"}:{display:\"block\"}},isAbove:function(){return\"above\"===this.openDirection||\"top\"===this.openDirection||\"below\"!==this.openDirection&&\"bottom\"!==this.openDirection&&\"above\"===this.preferredOpenDirection},showSearchInput:function(){return this.searchable&&(!this.hasSingleSelectedSlot||!this.visibleSingleValue&&0!==this.visibleSingleValue||this.isOpen)}}}},function(t,e,n){var i=n(1)(\"unscopables\"),o=Array.prototype;null==o[i]&&n(8)(o,i,{}),t.exports=function(t){o[i][t]=!0}},function(t,e,n){var i=n(18),o=n(19),a=n(85);t.exports=function(t){return function(e,n,r){var s,c=i(e),l=o(c.length),u=a(r,l);if(t&&n!=n){for(;l>u;)if((s=c[u++])!=s)return!0}else for(;l>u;u++)if((t||u in c)&&c[u]===n)return t||u||0;return!t&&-1}}},function(t,e,n){var i=n(9),o=n(1)(\"toStringTag\"),a=\"Arguments\"==i(function(){return arguments}());t.exports=function(t){var e,n,r;return void 0===t?\"Undefined\":null===t?\"Null\":\"string\"==typeof(n=function(t,e){try{return t[e]}catch(t){}}(e=Object(t),o))?n:a?i(e):\"Object\"==(r=i(e))&&\"function\"==typeof e.callee?\"Arguments\":r}},function(t,e,n){\"use strict\";var i=n(2);t.exports=function(){var t=i(this),e=\"\";return t.global&&(e+=\"g\"),t.ignoreCase&&(e+=\"i\"),t.multiline&&(e+=\"m\"),t.unicode&&(e+=\"u\"),t.sticky&&(e+=\"y\"),e}},function(t,e,n){var i=n(0).document;t.exports=i&&i.documentElement},function(t,e,n){t.exports=!n(4)&&!n(7)(function(){return 7!=Object.defineProperty(n(21)(\"div\"),\"a\",{get:function(){return 7}}).a})},function(t,e,n){var i=n(9);t.exports=Array.isArray||function(t){return\"Array\"==i(t)}},function(t,e,n){\"use strict\";function i(t){var e,n;this.promise=new t(function(t,i){if(void 0!==e||void 0!==n)throw TypeError(\"Bad Promise constructor\");e=t,n=i}),this.resolve=o(e),this.reject=o(n)}var o=n(14);t.exports.f=function(t){return new i(t)}},function(t,e,n){var i=n(2),o=n(76),a=n(22),r=n(27)(\"IE_PROTO\"),s=function(){},c=function(){var t,e=n(21)(\"iframe\"),i=a.length;for(e.style.display=\"none\",n(40).appendChild(e),e.src=\"javascript:\",(t=e.contentWindow.document).open(),t.write(\"<script>document.F=Object<\\/script>\"),t.close(),c=t.F;i--;)delete c.prototype[a[i]];return c()};t.exports=Object.create||function(t,e){var n;return null!==t?(s.prototype=i(t),n=new s,s.prototype=null,n[r]=t):n=c(),void 0===e?n:o(n,e)}},function(t,e,n){var i=n(79),o=n(25),a=n(18),r=n(29),s=n(12),c=n(41),l=Object.getOwnPropertyDescriptor;e.f=n(4)?l:function(t,e){if(t=a(t),e=r(e,!0),c)try{return l(t,e)}catch(t){}if(s(t,e))return o(!i.f.call(t,e),t[e])}},function(t,e,n){var i=n(12),o=n(18),a=n(37)(!1),r=n(27)(\"IE_PROTO\");t.exports=function(t,e){var n,s=o(t),c=0,l=[];for(n in s)n!=r&&i(s,n)&&l.push(n);for(;e.length>c;)i(s,n=e[c++])&&(~a(l,n)||l.push(n));return l}},function(t,e,n){var i=n(46),o=n(22);t.exports=Object.keys||function(t){return i(t,o)}},function(t,e,n){var i=n(2),o=n(5),a=n(43);t.exports=function(t,e){if(i(t),o(e)&&e.constructor===t)return e;var n=a.f(t);return(0,n.resolve)(e),n.promise}},function(t,e,n){var i=n(10),o=n(0),a=o[\"__core-js_shared__\"]||(o[\"__core-js_shared__\"]={});(t.exports=function(t,e){return a[t]||(a[t]=void 0!==e?e:{})})(\"versions\",[]).push({version:i.version,mode:n(24)?\"pure\":\"global\",copyright:\"© 2018 Denis Pushkarev (zloirock.ru)\"})},function(t,e,n){var i=n(2),o=n(14),a=n(1)(\"species\");t.exports=function(t,e){var n,r=i(t).constructor;return void 0===r||null==(n=i(r)[a])?e:o(n)}},function(t,e,n){var i=n(3),o=n(16),a=n(7),r=n(84),s=\"[\"+r+\"]\",c=RegExp(\"^\"+s+s+\"*\"),l=RegExp(s+s+\"*$\"),u=function(t,e,n){var o={},s=a(function(){return!!r[t]()||\"​…\"!=\"​…\"[t]()}),c=o[t]=s?e(d):r[t];n&&(o[n]=c),i(i.P+i.F*s,\"String\",o)},d=u.trim=function(t,e){return t=String(o(t)),1&e&&(t=t.replace(c,\"\")),2&e&&(t=t.replace(l,\"\")),t};t.exports=u},function(t,e,n){var i,o,a,r=n(11),s=n(68),c=n(40),l=n(21),u=n(0),d=u.process,p=u.setImmediate,f=u.clearImmediate,h=u.MessageChannel,A=u.Dispatch,v=0,m={},g=function(){var t=+this;if(m.hasOwnProperty(t)){var e=m[t];delete m[t],e()}},b=function(t){g.call(t.data)};p&&f||(p=function(t){for(var e=[],n=1;arguments.length>n;)e.push(arguments[n++]);return m[++v]=function(){s(\"function\"==typeof t?t:Function(t),e)},i(v),v},f=function(t){delete m[t]},\"process\"==n(9)(d)?i=function(t){d.nextTick(r(g,t,1))}:A&&A.now?i=function(t){A.now(r(g,t,1))}:h?(o=new h,a=o.port2,o.port1.onmessage=b,i=r(a.postMessage,a,1)):u.addEventListener&&\"function\"==typeof postMessage&&!u.importScripts?(i=function(t){u.postMessage(t+\"\",\"*\")},u.addEventListener(\"message\",b,!1)):i=\"onreadystatechange\"in l(\"script\")?function(t){c.appendChild(l(\"script\")).onreadystatechange=function(){c.removeChild(this),g.call(t)}}:function(t){setTimeout(r(g,t,1),0)}),t.exports={set:p,clear:f}},function(t,e){var n=Math.ceil,i=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?i:n)(t)}},function(t,e,n){\"use strict\";var i=n(3),o=n(20)(5),a=!0;\"find\"in[]&&Array(1).find(function(){a=!1}),i(i.P+i.F*a,\"Array\",{find:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),n(36)(\"find\")},function(t,e,n){\"use strict\";var i,o,a,r,s=n(24),c=n(0),l=n(11),u=n(38),d=n(3),p=n(5),f=n(14),h=n(61),A=n(66),v=n(50),m=n(52).set,g=n(75)(),b=n(43),y=n(80),x=n(86),w=n(48),_=c.TypeError,T=c.process,k=T&&T.versions,C=k&&k.v8||\"\",E=c.Promise,M=\"process\"==u(T),S=function(){},D=o=b.f,O=!!function(){try{var t=E.resolve(1),e=(t.constructor={})[n(1)(\"species\")]=function(t){t(S,S)};return(M||\"function\"==typeof PromiseRejectionEvent)&&t.then(S)instanceof e&&0!==C.indexOf(\"6.6\")&&-1===x.indexOf(\"Chrome/66\")}catch(t){}}(),B=function(t){var e;return!(!p(t)||\"function\"!=typeof(e=t.then))&&e},I=function(t,e){if(!t._n){t._n=!0;var n=t._c;g(function(){for(var i=t._v,o=1==t._s,a=0;n.length>a;)!function(e){var n,a,r,s=o?e.ok:e.fail,c=e.resolve,l=e.reject,u=e.domain;try{s?(o||(2==t._h&&P(t),t._h=1),!0===s?n=i:(u&&u.enter(),n=s(i),u&&(u.exit(),r=!0)),n===e.promise?l(_(\"Promise-chain cycle\")):(a=B(n))?a.call(n,c,l):c(n)):l(i)}catch(t){u&&!r&&u.exit(),l(t)}}(n[a++]);t._c=[],t._n=!1,e&&!t._h&&N(t)})}},N=function(t){m.call(c,function(){var e,n,i,o=t._v,a=L(t);if(a&&(e=y(function(){M?T.emit(\"unhandledRejection\",o,t):(n=c.onunhandledrejection)?n({promise:t,reason:o}):(i=c.console)&&i.error&&i.error(\"Unhandled promise rejection\",o)}),t._h=M||L(t)?2:1),t._a=void 0,a&&e.e)throw e.v})},L=function(t){return 1!==t._h&&0===(t._a||t._c).length},P=function(t){m.call(c,function(){var e;M?T.emit(\"rejectionHandled\",t):(e=c.onrejectionhandled)&&e({promise:t,reason:t._v})})},j=function(t){var e=this;e._d||(e._d=!0,(e=e._w||e)._v=t,e._s=2,e._a||(e._a=e._c.slice()),I(e,!0))},$=function(t){var e,n=this;if(!n._d){n._d=!0,n=n._w||n;try{if(n===t)throw _(\"Promise can't be resolved itself\");(e=B(t))?g(function(){var i={_w:n,_d:!1};try{e.call(t,l($,i,1),l(j,i,1))}catch(t){j.call(i,t)}}):(n._v=t,n._s=1,I(n,!1))}catch(t){j.call({_w:n,_d:!1},t)}}};O||(E=function(t){h(this,E,\"Promise\",\"_h\"),f(t),i.call(this);try{t(l($,this,1),l(j,this,1))}catch(t){j.call(this,t)}},(i=function(t){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1}).prototype=n(81)(E.prototype,{then:function(t,e){var n=D(v(this,E));return n.ok=\"function\"!=typeof t||t,n.fail=\"function\"==typeof e&&e,n.domain=M?T.domain:void 0,this._c.push(n),this._a&&this._a.push(n),this._s&&I(this,!1),n.promise},catch:function(t){return this.then(void 0,t)}}),a=function(){var t=new i;this.promise=t,this.resolve=l($,t,1),this.reject=l(j,t,1)},b.f=D=function(t){return t===E||t===r?new a(t):o(t)}),d(d.G+d.W+d.F*!O,{Promise:E}),n(26)(E,\"Promise\"),n(83)(\"Promise\"),r=n(10).Promise,d(d.S+d.F*!O,\"Promise\",{reject:function(t){var e=D(this);return(0,e.reject)(t),e.promise}}),d(d.S+d.F*(s||!O),\"Promise\",{resolve:function(t){return w(s&&this===r?E:this,t)}}),d(d.S+d.F*!(O&&n(73)(function(t){E.all(t).catch(S)})),\"Promise\",{all:function(t){var e=this,n=D(e),i=n.resolve,o=n.reject,a=y(function(){var n=[],a=0,r=1;A(t,!1,function(t){var s=a++,c=!1;n.push(void 0),r++,e.resolve(t).then(function(t){c||(c=!0,n[s]=t,--r||i(n))},o)}),--r||i(n)});return a.e&&o(a.v),n.promise},race:function(t){var e=this,n=D(e),i=n.reject,o=y(function(){A(t,!1,function(t){e.resolve(t).then(n.resolve,i)})});return o.e&&i(o.v),n.promise}})},function(t,e,n){\"use strict\";var i=n(3),o=n(10),a=n(0),r=n(50),s=n(48);i(i.P+i.R,\"Promise\",{finally:function(t){var e=r(this,o.Promise||a.Promise),n=\"function\"==typeof t;return this.then(n?function(n){return s(e,t()).then(function(){return n})}:t,n?function(n){return s(e,t()).then(function(){throw n})}:t)}})},function(t,e,n){\"use strict\";var i=n(35),o=n(101),a=n(100),r=function(t){n(99)},s=a(i.a,o.a,!1,r,null,null);e.a=s.exports},function(t,e,n){\"use strict\";e.a=function(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}},function(t,e,n){\"use strict\";function i(t){return(i=\"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})(t)}function o(t){return(o=\"function\"==typeof Symbol&&\"symbol\"===i(Symbol.iterator)?function(t){return i(t)}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":i(t)})(t)}e.a=o},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var i=n(34),o=(n.n(i),n(55)),a=(n.n(o),n(56)),r=(n.n(a),n(57)),s=n(32),c=n(33);n.d(e,\"Multiselect\",function(){return r.a}),n.d(e,\"multiselectMixin\",function(){return s.a}),n.d(e,\"pointerMixin\",function(){return c.a}),e.default=r.a},function(t,e){t.exports=function(t,e,n,i){if(!(t instanceof e)||void 0!==i&&i in t)throw TypeError(n+\": incorrect invocation!\");return t}},function(t,e,n){var i=n(14),o=n(28),a=n(23),r=n(19);t.exports=function(t,e,n,s,c){i(e);var l=o(t),u=a(l),d=r(l.length),p=c?d-1:0,f=c?-1:1;if(n<2)for(;;){if(p in u){s=u[p],p+=f;break}if(p+=f,c?p<0:d<=p)throw TypeError(\"Reduce of empty array with no initial value\")}for(;c?p>=0:d>p;p+=f)p in u&&(s=e(s,u[p],p,l));return s}},function(t,e,n){var i=n(5),o=n(42),a=n(1)(\"species\");t.exports=function(t){var e;return o(t)&&(\"function\"!=typeof(e=t.constructor)||e!==Array&&!o(e.prototype)||(e=void 0),i(e)&&null===(e=e[a])&&(e=void 0)),void 0===e?Array:e}},function(t,e,n){var i=n(63);t.exports=function(t,e){return new(i(t))(e)}},function(t,e,n){\"use strict\";var i=n(8),o=n(6),a=n(7),r=n(16),s=n(1);t.exports=function(t,e,n){var c=s(t),l=n(r,c,\"\"[t]),u=l[0],d=l[1];a(function(){var e={};return e[c]=function(){return 7},7!=\"\"[t](e)})&&(o(String.prototype,t,u),i(RegExp.prototype,c,2==e?function(t,e){return d.call(t,this,e)}:function(t){return d.call(t,this)}))}},function(t,e,n){var i=n(11),o=n(70),a=n(69),r=n(2),s=n(19),c=n(87),l={},u={},e=t.exports=function(t,e,n,d,p){var f,h,A,v,m=p?function(){return t}:c(t),g=i(n,d,e?2:1),b=0;if(\"function\"!=typeof m)throw TypeError(t+\" is not iterable!\");if(a(m)){for(f=s(t.length);f>b;b++)if((v=e?g(r(h=t[b])[0],h[1]):g(t[b]))===l||v===u)return v}else for(A=m.call(t);!(h=A.next()).done;)if((v=o(A,g,h.value,e))===l||v===u)return v};e.BREAK=l,e.RETURN=u},function(t,e,n){var i=n(5),o=n(82).set;t.exports=function(t,e,n){var a,r=e.constructor;return r!==n&&\"function\"==typeof r&&(a=r.prototype)!==n.prototype&&i(a)&&o&&o(t,a),t}},function(t,e){t.exports=function(t,e,n){var i=void 0===n;switch(e.length){case 0:return i?t():t.call(n);case 1:return i?t(e[0]):t.call(n,e[0]);case 2:return i?t(e[0],e[1]):t.call(n,e[0],e[1]);case 3:return i?t(e[0],e[1],e[2]):t.call(n,e[0],e[1],e[2]);case 4:return i?t(e[0],e[1],e[2],e[3]):t.call(n,e[0],e[1],e[2],e[3])}return t.apply(n,e)}},function(t,e,n){var i=n(15),o=n(1)(\"iterator\"),a=Array.prototype;t.exports=function(t){return void 0!==t&&(i.Array===t||a[o]===t)}},function(t,e,n){var i=n(2);t.exports=function(t,e,n,o){try{return o?e(i(n)[0],n[1]):e(n)}catch(e){var a=t.return;throw void 0!==a&&i(a.call(t)),e}}},function(t,e,n){\"use strict\";var i=n(44),o=n(25),a=n(26),r={};n(8)(r,n(1)(\"iterator\"),function(){return this}),t.exports=function(t,e,n){t.prototype=i(r,{next:o(1,n)}),a(t,e+\" Iterator\")}},function(t,e,n){\"use strict\";var i=n(24),o=n(3),a=n(6),r=n(8),s=n(15),c=n(71),l=n(26),u=n(78),d=n(1)(\"iterator\"),p=!([].keys&&\"next\"in[].keys()),f=function(){return this};t.exports=function(t,e,n,h,A,v,m){c(n,e,h);var g,b,y,x=function(t){if(!p&&t in k)return k[t];switch(t){case\"keys\":case\"values\":return function(){return new n(this,t)}}return function(){return new n(this,t)}},w=e+\" Iterator\",_=\"values\"==A,T=!1,k=t.prototype,C=k[d]||k[\"@@iterator\"]||A&&k[A],E=C||x(A),M=A?_?x(\"entries\"):E:void 0,S=\"Array\"==e&&k.entries||C;if(S&&(y=u(S.call(new t)))!==Object.prototype&&y.next&&(l(y,w,!0),i||\"function\"==typeof y[d]||r(y,d,f)),_&&C&&\"values\"!==C.name&&(T=!0,E=function(){return C.call(this)}),i&&!m||!p&&!T&&k[d]||r(k,d,E),s[e]=E,s[w]=f,A)if(g={values:_?E:x(\"values\"),keys:v?E:x(\"keys\"),entries:M},m)for(b in g)b in k||a(k,b,g[b]);else o(o.P+o.F*(p||T),e,g);return g}},function(t,e,n){var i=n(1)(\"iterator\"),o=!1;try{var a=[7][i]();a.return=function(){o=!0},Array.from(a,function(){throw 2})}catch(t){}t.exports=function(t,e){if(!e&&!o)return!1;var n=!1;try{var a=[7],r=a[i]();r.next=function(){return{done:n=!0}},a[i]=function(){return r},t(a)}catch(t){}return n}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e,n){var i=n(0),o=n(52).set,a=i.MutationObserver||i.WebKitMutationObserver,r=i.process,s=i.Promise,c=\"process\"==n(9)(r);t.exports=function(){var t,e,n,l=function(){var i,o;for(c&&(i=r.domain)&&i.exit();t;){o=t.fn,t=t.next;try{o()}catch(i){throw t?n():e=void 0,i}}e=void 0,i&&i.enter()};if(c)n=function(){r.nextTick(l)};else if(!a||i.navigator&&i.navigator.standalone)if(s&&s.resolve){var u=s.resolve(void 0);n=function(){u.then(l)}}else n=function(){o.call(i,l)};else{var d=!0,p=document.createTextNode(\"\");new a(l).observe(p,{characterData:!0}),n=function(){p.data=d=!d}}return function(i){var o={fn:i,next:void 0};e&&(e.next=o),t||(t=o,n()),e=o}}},function(t,e,n){var i=n(13),o=n(2),a=n(47);t.exports=n(4)?Object.defineProperties:function(t,e){o(t);for(var n,r=a(e),s=r.length,c=0;s>c;)i.f(t,n=r[c++],e[n]);return t}},function(t,e,n){var i=n(46),o=n(22).concat(\"length\",\"prototype\");e.f=Object.getOwnPropertyNames||function(t){return i(t,o)}},function(t,e,n){var i=n(12),o=n(28),a=n(27)(\"IE_PROTO\"),r=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=o(t),i(t,a)?t[a]:\"function\"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?r:null}},function(t,e){e.f={}.propertyIsEnumerable},function(t,e){t.exports=function(t){try{return{e:!1,v:t()}}catch(t){return{e:!0,v:t}}}},function(t,e,n){var i=n(6);t.exports=function(t,e,n){for(var o in e)i(t,o,e[o],n);return t}},function(t,e,n){var i=n(5),o=n(2),a=function(t,e){if(o(t),!i(e)&&null!==e)throw TypeError(e+\": can't set as prototype!\")};t.exports={set:Object.setPrototypeOf||(\"__proto__\"in{}?function(t,e,i){try{(i=n(11)(Function.call,n(45).f(Object.prototype,\"__proto__\").set,2))(t,[]),e=!(t instanceof Array)}catch(t){e=!0}return function(t,n){return a(t,n),e?t.__proto__=n:i(t,n),t}}({},!1):void 0),check:a}},function(t,e,n){\"use strict\";var i=n(0),o=n(13),a=n(4),r=n(1)(\"species\");t.exports=function(t){var e=i[t];a&&e&&!e[r]&&o.f(e,r,{configurable:!0,get:function(){return this}})}},function(t,e){t.exports=\"\\t\\n\\v\\f\\r   ᠎              \\u2028\\u2029\\ufeff\"},function(t,e,n){var i=n(53),o=Math.max,a=Math.min;t.exports=function(t,e){return(t=i(t))<0?o(t+e,0):a(t,e)}},function(t,e,n){var i=n(0),o=i.navigator;t.exports=o&&o.userAgent||\"\"},function(t,e,n){var i=n(38),o=n(1)(\"iterator\"),a=n(15);t.exports=n(10).getIteratorMethod=function(t){if(null!=t)return t[o]||t[\"@@iterator\"]||a[i(t)]}},function(t,e,n){\"use strict\";var i=n(3),o=n(20)(2);i(i.P+i.F*!n(17)([].filter,!0),\"Array\",{filter:function(t){return o(this,t,arguments[1])}})},function(t,e,n){\"use strict\";var i=n(3),o=n(37)(!1),a=[].indexOf,r=!!a&&1/[1].indexOf(1,-0)<0;i(i.P+i.F*(r||!n(17)(a)),\"Array\",{indexOf:function(t){return r?a.apply(this,arguments)||0:o(this,t,arguments[1])}})},function(t,e,n){var i=n(3);i(i.S,\"Array\",{isArray:n(42)})},function(t,e,n){\"use strict\";var i=n(3),o=n(20)(1);i(i.P+i.F*!n(17)([].map,!0),\"Array\",{map:function(t){return o(this,t,arguments[1])}})},function(t,e,n){\"use strict\";var i=n(3),o=n(62);i(i.P+i.F*!n(17)([].reduce,!0),\"Array\",{reduce:function(t){return o(this,t,arguments.length,arguments[1],!1)}})},function(t,e,n){var i=Date.prototype,o=i.toString,a=i.getTime;new Date(NaN)+\"\"!=\"Invalid Date\"&&n(6)(i,\"toString\",function(){var t=a.call(this);return t==t?o.call(this):\"Invalid Date\"})},function(t,e,n){n(4)&&\"g\"!=/./g.flags&&n(13).f(RegExp.prototype,\"flags\",{configurable:!0,get:n(39)})},function(t,e,n){n(65)(\"search\",1,function(t,e,n){return[function(n){\"use strict\";var i=t(this),o=null==n?void 0:n[e];return void 0!==o?o.call(n,i):new RegExp(n)[e](String(i))},n]})},function(t,e,n){\"use strict\";n(94);var i=n(2),o=n(39),a=n(4),r=/./.toString,s=function(t){n(6)(RegExp.prototype,\"toString\",t,!0)};n(7)(function(){return\"/a/b\"!=r.call({source:\"a\",flags:\"b\"})})?s(function(){var t=i(this);return\"/\".concat(t.source,\"/\",\"flags\"in t?t.flags:!a&&t instanceof RegExp?o.call(t):void 0)}):\"toString\"!=r.name&&s(function(){return r.call(this)})},function(t,e,n){\"use strict\";n(51)(\"trim\",function(t){return function(){return t(this,3)}})},function(t,e,n){for(var i=n(34),o=n(47),a=n(6),r=n(0),s=n(8),c=n(15),l=n(1),u=l(\"iterator\"),d=l(\"toStringTag\"),p=c.Array,f={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},h=o(f),A=0;A<h.length;A++){var v,m=h[A],g=f[m],b=r[m],y=b&&b.prototype;if(y&&(y[u]||s(y,u,p),y[d]||s(y,d,m),c[m]=p,g))for(v in i)y[v]||a(y,v,i[v],!0)}},function(t,e){},function(t,e){t.exports=function(t,e,n,i,o,a){var r,s=t=t||{},c=typeof t.default;\"object\"!==c&&\"function\"!==c||(r=t,s=t.default);var l,u=\"function\"==typeof s?s.options:s;if(e&&(u.render=e.render,u.staticRenderFns=e.staticRenderFns,u._compiled=!0),n&&(u.functional=!0),o&&(u._scopeId=o),a?(l=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),i&&i.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(a)},u._ssrRegister=l):i&&(l=i),l){var d=u.functional,p=d?u.render:u.beforeCreate;d?(u._injectStyles=l,u.render=function(t,e){return l.call(e),p(t,e)}):u.beforeCreate=p?[].concat(p,l):[l]}return{esModule:r,exports:s,options:u}}},function(t,e,n){\"use strict\";var i={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{staticClass:\"multiselect\",class:{\"multiselect--active\":t.isOpen,\"multiselect--disabled\":t.disabled,\"multiselect--above\":t.isAbove},attrs:{tabindex:t.searchable?-1:t.tabindex},on:{focus:function(e){t.activate()},blur:function(e){!t.searchable&&t.deactivate()},keydown:[function(e){return\"button\"in e||!t._k(e.keyCode,\"down\",40,e.key,[\"Down\",\"ArrowDown\"])?e.target!==e.currentTarget?null:(e.preventDefault(),void t.pointerForward()):null},function(e){return\"button\"in e||!t._k(e.keyCode,\"up\",38,e.key,[\"Up\",\"ArrowUp\"])?e.target!==e.currentTarget?null:(e.preventDefault(),void t.pointerBackward()):null}],keypress:function(e){return\"button\"in e||!t._k(e.keyCode,\"enter\",13,e.key,\"Enter\")||!t._k(e.keyCode,\"tab\",9,e.key,\"Tab\")?(e.stopPropagation(),e.target!==e.currentTarget?null:void t.addPointerElement(e)):null},keyup:function(e){if(!(\"button\"in e)&&t._k(e.keyCode,\"esc\",27,e.key,\"Escape\"))return null;t.deactivate()}}},[t._t(\"caret\",[n(\"div\",{staticClass:\"multiselect__select\",on:{mousedown:function(e){e.preventDefault(),e.stopPropagation(),t.toggle()}}})],{toggle:t.toggle}),t._v(\" \"),t._t(\"clear\",null,{search:t.search}),t._v(\" \"),n(\"div\",{ref:\"tags\",staticClass:\"multiselect__tags\"},[t._t(\"selection\",[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.visibleValues.length>0,expression:\"visibleValues.length > 0\"}],staticClass:\"multiselect__tags-wrap\"},[t._l(t.visibleValues,function(e,i){return[t._t(\"tag\",[n(\"span\",{key:i,staticClass:\"multiselect__tag\"},[n(\"span\",{domProps:{textContent:t._s(t.getOptionLabel(e))}}),t._v(\" \"),n(\"i\",{staticClass:\"multiselect__tag-icon\",attrs:{\"aria-hidden\":\"true\",tabindex:\"1\"},on:{keypress:function(n){if(!(\"button\"in n)&&t._k(n.keyCode,\"enter\",13,n.key,\"Enter\"))return null;n.preventDefault(),t.removeElement(e)},mousedown:function(n){n.preventDefault(),t.removeElement(e)}}})])],{option:e,search:t.search,remove:t.removeElement})]})],2),t._v(\" \"),t.internalValue&&t.internalValue.length>t.limit?[t._t(\"limit\",[n(\"strong\",{staticClass:\"multiselect__strong\",domProps:{textContent:t._s(t.limitText(t.internalValue.length-t.limit))}})])]:t._e()],{search:t.search,remove:t.removeElement,values:t.visibleValues,isOpen:t.isOpen}),t._v(\" \"),n(\"transition\",{attrs:{name:\"multiselect__loading\"}},[t._t(\"loading\",[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.loading,expression:\"loading\"}],staticClass:\"multiselect__spinner\"})])],2),t._v(\" \"),t.searchable?n(\"input\",{ref:\"search\",staticClass:\"multiselect__input\",style:t.inputStyle,attrs:{name:t.name,id:t.id,type:\"text\",autocomplete:\"nope\",placeholder:t.placeholder,disabled:t.disabled,tabindex:t.tabindex},domProps:{value:t.search},on:{input:function(e){t.updateSearch(e.target.value)},focus:function(e){e.preventDefault(),t.activate()},blur:function(e){e.preventDefault(),t.deactivate()},keyup:function(e){if(!(\"button\"in e)&&t._k(e.keyCode,\"esc\",27,e.key,\"Escape\"))return null;t.deactivate()},keydown:[function(e){if(!(\"button\"in e)&&t._k(e.keyCode,\"down\",40,e.key,[\"Down\",\"ArrowDown\"]))return null;e.preventDefault(),t.pointerForward()},function(e){if(!(\"button\"in e)&&t._k(e.keyCode,\"up\",38,e.key,[\"Up\",\"ArrowUp\"]))return null;e.preventDefault(),t.pointerBackward()},function(e){if(!(\"button\"in e)&&t._k(e.keyCode,\"delete\",[8,46],e.key,[\"Backspace\",\"Delete\"]))return null;e.stopPropagation(),t.removeLastElement()}],keypress:function(e){return\"button\"in e||!t._k(e.keyCode,\"enter\",13,e.key,\"Enter\")?(e.preventDefault(),e.stopPropagation(),e.target!==e.currentTarget?null:void t.addPointerElement(e)):null}}}):t._e(),t._v(\" \"),t.isSingleLabelVisible?n(\"span\",{staticClass:\"multiselect__single\",on:{mousedown:function(e){return e.preventDefault(),t.toggle(e)}}},[t._t(\"singleLabel\",[[t._v(t._s(t.currentOptionLabel))]],{option:t.singleValue})],2):t._e(),t._v(\" \"),t.isPlaceholderVisible?n(\"span\",{staticClass:\"multiselect__placeholder\",on:{mousedown:function(e){return e.preventDefault(),t.toggle(e)}}},[t._t(\"placeholder\",[t._v(\"\\n \"+t._s(t.placeholder)+\"\\n \")])],2):t._e()],2),t._v(\" \"),n(\"transition\",{attrs:{name:\"multiselect\"}},[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.isOpen,expression:\"isOpen\"}],ref:\"list\",staticClass:\"multiselect__content-wrapper\",style:{maxHeight:t.optimizedHeight+\"px\"},attrs:{tabindex:\"-1\"},on:{focus:t.activate,mousedown:function(t){t.preventDefault()}}},[n(\"ul\",{staticClass:\"multiselect__content\",style:t.contentStyle},[t._t(\"beforeList\"),t._v(\" \"),t.multiple&&t.max===t.internalValue.length?n(\"li\",[n(\"span\",{staticClass:\"multiselect__option\"},[t._t(\"maxElements\",[t._v(\"Maximum of \"+t._s(t.max)+\" options selected. First remove a selected option to select another.\")])],2)]):t._e(),t._v(\" \"),!t.max||t.internalValue.length<t.max?t._l(t.filteredOptions,function(e,i){return n(\"li\",{key:i,staticClass:\"multiselect__element\"},[e&&(e.$isLabel||e.$isDisabled)?t._e():n(\"span\",{staticClass:\"multiselect__option\",class:t.optionHighlight(i,e),attrs:{\"data-select\":e&&e.isTag?t.tagPlaceholder:t.selectLabelText,\"data-selected\":t.selectedLabelText,\"data-deselect\":t.deselectLabelText},on:{click:function(n){n.stopPropagation(),t.select(e)},mouseenter:function(e){if(e.target!==e.currentTarget)return null;t.pointerSet(i)}}},[t._t(\"option\",[n(\"span\",[t._v(t._s(t.getOptionLabel(e)))])],{option:e,search:t.search})],2),t._v(\" \"),e&&(e.$isLabel||e.$isDisabled)?n(\"span\",{staticClass:\"multiselect__option\",class:t.groupHighlight(i,e),attrs:{\"data-select\":t.groupSelect&&t.selectGroupLabelText,\"data-deselect\":t.groupSelect&&t.deselectGroupLabelText},on:{mouseenter:function(e){if(e.target!==e.currentTarget)return null;t.groupSelect&&t.pointerSet(i)},mousedown:function(n){n.preventDefault(),t.selectGroup(e)}}},[t._t(\"option\",[n(\"span\",[t._v(t._s(t.getOptionLabel(e)))])],{option:e,search:t.search})],2):t._e()])}):t._e(),t._v(\" \"),n(\"li\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.showNoResults&&0===t.filteredOptions.length&&t.search&&!t.loading,expression:\"showNoResults && (filteredOptions.length === 0 && search && !loading)\"}]},[n(\"span\",{staticClass:\"multiselect__option\"},[t._t(\"noResult\",[t._v(\"No elements found. Consider changing the search query.\")],{search:t.search})],2)]),t._v(\" \"),n(\"li\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.showNoOptions&&0===t.options.length&&!t.search&&!t.loading,expression:\"showNoOptions && (options.length === 0 && !search && !loading)\"}]},[n(\"span\",{staticClass:\"multiselect__option\"},[t._t(\"noOptions\",[t._v(\"List is empty.\")])],2)]),t._v(\" \"),t._t(\"afterList\")],2)])])],2)},staticRenderFns:[]};e.a=i}])},function(t,e,n){\"use strict\";n.r(e),\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */e.default={data:function(){return{isFullscreen:this._isFullscreen()}},beforeMount:function(){window.addEventListener(\"resize\",this._onResize)},beforeDestroy:function(){window.removeEventListener(\"resize\",this._onResize)},methods:{_onResize:function(){this.isFullscreen=this._isFullscreen()},_isFullscreen:function(){return window.outerHeight===screen.height}}}},function(t,e,n){\"use strict\";n.r(e),\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */e.default={data:function(){return{isMobile:this._isMobile()}},beforeMount:function(){window.addEventListener(\"resize\",this._onResize)},beforeDestroy:function(){window.removeEventListener(\"resize\",this._onResize)},methods:{_onResize:function(){this.isMobile=this._isMobile()},_isMobile:function(){return document.documentElement.clientWidth<768}}}},function(t,e,n){\"use strict\";n.r(e);var i=n(23),o=n(121),a=n.n(o),r=n(34),s=n.n(r),c={methods:{highlightText:function(t,e){return e.length?t.replace(new RegExp(e,\"gi\"),\"<strong>\".concat(e,\"</strong>\")):t}}},l={name:\"AvatarSelectOption\",components:{Avatar:n(64).default},mixins:[c],props:{desc:{type:String,default:\"\"},displayName:{type:String,required:!0},icon:{type:String,default:\"\"},user:{type:String,default:\"\"},isNoUser:{type:Boolean,default:!1},search:{type:String,default:\"\"}},computed:{highlightedDisplayName:function(){return this.highlightText(s()(this.displayName),this.search)},highlightedDesc:function(){return this.highlightText(s()(this.desc),this.search)}}},u=(n(175),n(0)),d=n(88),p=n.n(d),f=Object(u.a)(l,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"span\",{staticClass:\"option\"},[n(\"Avatar\",{staticClass:\"option__avatar\",attrs:{\"display-name\":t.displayName,user:t.user,\"is-no-user\":t.isNoUser,\"disable-menu\":!0,\"disable-tooltip\":!0}}),t._v(\" \"),n(\"div\",{staticClass:\"option__desc\"},[n(\"span\",{staticClass:\"option__desc--lineone\",domProps:{innerHTML:t._s(t.highlightedDisplayName)}}),t._v(\" \"),\"\"!==t.desc?n(\"span\",{staticClass:\"option__desc--linetwo\",domProps:{innerHTML:t._s(t.highlightedDesc)}}):t._e()]),t._v(\" \"),\"\"!==t.icon?n(\"span\",{staticClass:\"icon option__icon\",class:t.icon}):t._e()],1)},[],!1,null,\"30d8da34\",null);\"function\"==typeof p.a&&p()(f);var h=f.exports,A={name:\"EllipsisedOption\",mixins:[c],props:{option:{type:[String,Object],required:!0,default:\"\"},label:{type:String,default:\"\"},search:{type:String,default:\"\"}},computed:{name:function(){return this.$parent.getOptionLabel(this.option)},needsTruncate:function(){return this.name&&this.name.length>=10},part1:function(){if(this.needsTruncate){var t=Math.min(Math.floor(this.name.length/2),10);return this.name.substr(0,this.name.length-t)}return this.name},part2:function(){if(this.needsTruncate){var t=Math.min(Math.floor(this.name.length/2),10);return this.name.substr(this.name.length-t)}return\"\"},highlightedPart1:function(){return this.highlightText(s()(this.part1),this.search)},highlightedPart2:function(){return this.highlightText(s()(this.part2),this.search)}}},v=(n(177),Object(u.a)(A,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{staticClass:\"name-parts\",attrs:{title:t.name}},[n(\"span\",{staticClass:\"name-parts__first\",domProps:{innerHTML:t._s(t.highlightedPart1)}}),t._v(\" \"),t.part2?n(\"span\",{staticClass:\"name-parts__last\",domProps:{innerHTML:t._s(t.highlightedPart2)}}):t._e()])},[],!1,null,\"c4325954\",null).exports),m=n(6),g=n(122),b={name:\"Multiselect\",components:{AvatarSelectOption:h,EllipsisedOption:v,VueMultiselect:n.n(g).a},directives:{tooltip:m.default},inheritAttrs:!1,props:{value:{default:function(){return[]}},multiple:{type:Boolean,default:!1},limit:{type:Number,default:99999},label:{type:String,default:\"\"},trackBy:{type:String,default:\"\"},userSelect:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},autoLimit:{type:Boolean,default:!0},tagWidth:{type:Number,default:150,validator:function(t){return t>0}}},data:function(){return{elWidth:0}},computed:{maxOptions:function(){if(this.autoLimit&&this.elWidth>0&&0!==this.tagWidth){var t=Math.floor(this.elWidth/this.tagWidth);return t>0?t:1}return this.limit?this.limit:9999},limitString:function(){return\"+\".concat(this.value.length-this.maxOptions)}},watch:{value:function(){this.updateWidth()}},mounted:function(){this.updateWidth(),window.addEventListener(\"resize\",this.updateWidth)},beforeDestroy:function(){window.removeEventListener(\"resize\",this.updateWidth)},methods:{formatLimitTitle:function(t){var e=this;if(Array.isArray(t)&&t.length>0){var n=t;return\"object\"===a()(t[0])&&(n=t.map(function(t){return t[e.label]})),n.slice(this.maxOptions).join(\", \")}return\"\"},updateWidth:function(){this.$el&&(this.elWidth=this.$el.querySelector(\".multiselect__tags-wrap\").offsetWidth-10)}}},y=n(89),x=n.n(y),w=Object(u.a)(b,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"VueMultiselect\",t._g(t._b({class:[{\"icon-loading-small\":t.loading},t.multiple?\"multiselect--multiple\":\"multiselect--single\"],attrs:{value:t.value,limit:t.maxOptions,\"close-on-select\":!t.multiple,multiple:t.multiple,label:t.label,\"track-by\":t.trackBy,\"tag-placeholder\":\"create\"},on:{\"update:value\":function(e){return t.$emit(\"update:value\",t.value)}},scopedSlots:t._u([{key:\"option\",fn:function(e){return[t.userSelect&&!t.$scopedSlots.option?n(\"AvatarSelectOption\",t._b({attrs:{search:e.search}},\"AvatarSelectOption\",e.option,!1)):t.$scopedSlots.option?t._t(\"option\",null,null,e):n(\"EllipsisedOption\",{attrs:{option:e.option,search:e.search,label:t.label}})]}},t.multiple?{key:\"limit\",fn:function(){return[n(\"span\",{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:t.formatLimitTitle(t.value),expression:\"formatLimitTitle(value)\",modifiers:{auto:!0}}],staticClass:\"multiselect__limit\"},[t._v(\"\\n\\t\\t\\t\"+t._s(t.limitString)+\"\\n\\t\\t\")])]},proxy:!0}:null,t._l(t.$scopedSlots,function(e,n){return{key:n,fn:function(e){return[t._t(n,null,null,e)]}}})],null,!0)},\"VueMultiselect\",t.$attrs,!1),t.$listeners))},[],!1,null,null,null);\"function\"==typeof x.a&&x()(w);var _=w.exports;n(179);n.d(e,\"Multiselect\",function(){return _}),\n/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nObject(i.a)(_);e.default=_},function(e,n,i){\"use strict\";i.r(n);var o=i(23),a=i(40),r=i.n(a),s=i(30),c=i(65),l=i(6);\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nfunction u(t,e){var n,i,o,a=e;this.start=function(){o=!0,i=new Date,n=setTimeout(t,a)},this.pause=function(){o=!1,clearTimeout(n),a-=new Date-i},this.clear=function(){o=!1,clearTimeout(n),a=0},this.getTimeLeft=function(){return o&&(this.pause(),this.start()),a},this.getStateRunning=function(){return o},this.start()}var d={name:\"Modal\",components:{Actions:s.default,ActionButton:c.default},directives:{tooltip:l.default},props:{title:{type:String,default:\"\"},hasPrevious:{type:Boolean,default:!1},hasNext:{type:Boolean,default:!1},outTransition:{type:Boolean,default:!1},enableSlideshow:{type:Boolean,default:!1},clearViewDelay:{type:Number,default:5e3},slideshowDelay:{type:Number,default:3e3},slideshowPaused:{type:Boolean,default:!1},enableSwipe:{type:Boolean,default:!0},spreadNavigation:{type:Boolean,default:!1},size:{type:String,default:\"normal\",validator:function(t){return-1!==[\"normal\",\"large\",\"full\"].indexOf(t)}},canClose:{type:Boolean,default:!0}},data:function(){return{mc:null,showModal:!1,clearView:!1,clearViewTimeout:null,playing:!1,slideshowTimeout:null}},computed:{modalTransitionName:function(){return\"modal-\".concat(this.outTransition?\"out\":\"in\")},playPauseTitle:function(){return this.playing?t(\"core\",\"Pause slideshow\"):t(\"core\",\"Start slideshow\")}},watch:{slideshowPaused:function(t){this.slideshowTimeout&&(t?this.slideshowTimeout.pause():this.slideshowTimeout.start())}},beforeMount:function(){window.addEventListener(\"keydown\",this.handleKeydown)},beforeDestroy:function(){window.removeEventListener(\"keydown\",this.handleKeydown)},mounted:function(){var t=this;this.showModal=!0,this.handleMouseMove(),this.mc=new r.a(this.$refs.mask),this.mc.on(\"swipeleft swiperight\",function(e){t.handleSwipe(e)}),document.body.insertBefore(this.$el,document.body.lastChild)},unmounted:function(){this.mc.off(\"swipeleft swiperight\"),this.mc.destroy()},methods:{previous:function(t){this.hasPrevious&&(t&&this.resetSlideshow(),this.$emit(\"previous\",t))},next:function(t){this.hasNext&&(t&&this.resetSlideshow(),this.$emit(\"next\",t))},close:function(t){var e=this;this.canClose&&(this.showModal=!1,setTimeout(function(){e.$emit(\"close\",t)},300))},handleKeydown:function(t){switch(t.keyCode){case 37:this.previous(t);break;case 13:case 39:this.next(t);break;case 27:this.close(t)}},handleSwipe:function(t){this.enableSwipe&&(\"swipeleft\"===t.type?this.next(t):\"swiperight\"===t.type&&this.previous(t))},handleMouseMove:function(){var t=this;this.clearViewDelay>0&&(this.clearView=!1,clearTimeout(this.clearViewTimeout),this.clearViewTimeout=setTimeout(function(){t.clearView=!0},this.clearViewDelay))},togglePlayPause:function(){this.playing=!this.playing,this.playing?this.handleSlideshow():this.clearSlideshowTimeout()},resetSlideshow:function(){this.playing=!this.playing,this.clearSlideshowTimeout(),this.$nextTick(function(){this.togglePlayPause()})},handleSlideshow:function(){var t=this;this.playing=!0,this.hasNext?this.slideshowTimeout=new u(function(){t.next(),t.handleSlideshow()},this.slideshowDelay):(this.playing=!1,this.clearSlideshowTimeout())},clearSlideshowTimeout:function(){this.slideshowTimeout&&this.slideshowTimeout.clear()}}},p=(i(173),i(0)),f=i(87),h=i.n(f),A=Object(p.a)(d,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"transition\",{attrs:{name:\"fade\"}},[n(\"div\",{ref:\"mask\",staticClass:\"modal-mask\",on:{click:t.handleMouseMove,mousemove:t.handleMouseMove,touchmove:t.handleMouseMove}},[n(\"transition\",{attrs:{name:\"fade-visibility\"}},[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:!t.clearView,expression:\"!clearView\"}],staticClass:\"modal-header\",class:{invisible:t.clearView}},[\"\"!==t.title.trim()?n(\"div\",{staticClass:\"modal-title\"},[t._v(\"\\n\\t\\t\\t\\t\\t\"+t._s(t.title)+\"\\n\\t\\t\\t\\t\")]):t._e(),t._v(\" \"),n(\"div\",{staticClass:\"icons-menu\"},[n(\"Actions\",{staticClass:\"header-actions\"},[t._t(\"actions\")],2),t._v(\" \"),t.hasNext&&t.enableSlideshow?n(\"button\",{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:t.playPauseTitle,expression:\"playPauseTitle\",modifiers:{auto:!0}}],staticClass:\"play-pause\",class:{\"play-pause--paused\":t.slideshowPaused},on:{click:t.togglePlayPause}},[n(\"div\",{class:[t.playing?\"icon-pause\":\"icon-play\"]},[n(\"span\",{staticClass:\"hidden-visually\"},[t._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"+t._s(t.playPauseTitle)+\"\\n\\t\\t\\t\\t\\t\\t\\t\")])]),t._v(\" \"),t.playing?n(\"svg\",{staticClass:\"progress-ring\",attrs:{height:\"50\",width:\"50\"}},[n(\"circle\",{staticClass:\"progress-ring__circle\",attrs:{stroke:\"white\",\"stroke-width\":\"2\",fill:\"transparent\",r:\"15\",cx:\"25\",cy:\"25\"}})]):t._e()]):t._e(),t._v(\" \"),t.canClose?n(\"Actions\",{staticClass:\"header-close\"},[n(\"ActionButton\",{attrs:{icon:\"icon-close\"},on:{click:t.close}},[t._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+t._s(t.t(\"core\",\"Close\"))+\"\\n\\t\\t\\t\\t\\t\\t\")])],1):t._e()],1)])]),t._v(\" \"),n(\"transition\",{attrs:{name:t.modalTransitionName}},[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.showModal,expression:\"showModal\"}],staticClass:\"modal-wrapper\",class:[\"modal-wrapper--\"+t.size,t.spreadNavigation?\"modal-wrapper--spread-navigation\":\"\"],on:{click:function(e){return e.target!==e.currentTarget?null:t.close(e)}}},[n(\"transition\",{attrs:{name:\"fade-visibility\"}},[n(\"a\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.hasPrevious&&!t.clearView,expression:\"hasPrevious && !clearView\"}],staticClass:\"prev\",class:{invisible:t.clearView||!t.hasPrevious},on:{click:t.previous}},[n(\"div\",{staticClass:\"icon icon-previous\"},[n(\"span\",{staticClass:\"hidden-visually\"},[t._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"+t._s(t.t(\"core\",\"Previous\"))+\"\\n\\t\\t\\t\\t\\t\\t\\t\")])])])]),t._v(\" \"),n(\"div\",{staticClass:\"modal-container\"},[t._t(\"default\")],2),t._v(\" \"),n(\"transition\",{attrs:{name:\"fade-visibility\"}},[n(\"a\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.hasNext&&!t.clearView,expression:\"hasNext && !clearView\"}],staticClass:\"next\",class:{invisible:t.clearView||!t.hasNext},on:{click:t.next}},[n(\"div\",{staticClass:\"icon icon-next\"},[n(\"span\",{staticClass:\"hidden-visually\"},[t._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"+t._s(t.t(\"core\",\"Next\"))+\"\\n\\t\\t\\t\\t\\t\\t\\t\")])])])])],1)])],1)])},[],!1,null,\"9c792ef2\",null);\"function\"==typeof h.a&&h()(A);var v=A.exports;i.d(n,\"Modal\",function(){return v}),\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nObject(o.a)(v);n.default=v},function(t,e,n){\"use strict\";n.r(e);var i=n(7),o=n(17),a={name:\"ActionCheckbox\",mixins:[i.a],props:{id:{type:String,default:function(){return\"action-\"+Object(o.a)()},validator:function(t){return\"\"!==t.trim()}},checked:{type:Boolean,default:!1},value:{type:[String,Number],default:\"\"},disabled:{type:Boolean,default:!1}},computed:{isFocusable:function(){return!this.disabled}},methods:{checkInput:function(t){this.$refs.label.click()},onChange:function(t){this.$emit(\"change\",t),this.$refs.checkbox.checked?this.$emit(\"check\",!0):this.$emit(\"uncheck\",!0),this.$emit(\"update:checked\",this.$refs.checkbox.checked)}}},r=(n(145),n(0)),s=n(83),c=n.n(s),l=Object(r.a)(a,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"li\",{class:{\"action--disabled\":t.disabled}},[n(\"span\",{staticClass:\"action-checkbox\"},[n(\"input\",{ref:\"checkbox\",staticClass:\"checkbox action-checkbox__checkbox\",class:{focusable:t.isFocusable},attrs:{id:t.id,disabled:t.disabled,type:\"checkbox\"},domProps:{checked:t.checked,value:t.value},on:{keydown:function(e){return!e.type.indexOf(\"key\")&&t._k(e.keyCode,\"enter\",13,e.key,\"Enter\")?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.checkInput(e))},change:t.onChange}}),t._v(\" \"),n(\"label\",{ref:\"label\",staticClass:\"action-checkbox__label\",attrs:{for:t.id}},[t._v(t._s(t.text))]),t._v(\" \"),t._e()],2)])},[],!1,null,\"f874e42c\",null);\"function\"==typeof c.a&&c()(l);var u=l.exports;n.d(e,\"ActionCheckbox\",function(){return u});\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */e.default=u},function(t,e,n){\"use strict\";n.r(e);var i=n(7),o=n(17),a={name:\"ActionInput\",components:{DatetimePicker:n(66).default},mixins:[i.a],props:{id:{type:String,default:function(){return\"action-\"+Object(o.a)()},validator:function(t){return\"\"!==t.trim()}},icon:{type:String,default:\"\",required:!0},type:{type:String,default:\"text\",validator:function(t){return[\"date\",\"datetime-local\",\"month\",\"number\",\"password\",\"search\",\"tel\",\"text\",\"time\",\"url\",\"week\"].indexOf(t)>-1}},value:{type:String,default:\"\"},disabled:{type:Boolean,default:!1}},computed:{isIconUrl:function(){try{return new URL(this.icon)}catch(t){return!1}},isDatePickerType:function(){switch(this.type){case\"date\":case\"month\":case\"time\":return this.type;case\"datetime-local\":return\"datetime\"}return!1},isFocusable:function(){return!this.disabled}},methods:{onInput:function(t){this.$emit(\"input\",t),this.$emit(\"update:value\",t.target?t.target.value:t)},onSubmit:function(t){if(t.preventDefault(),t.stopPropagation(),this.disabled)return!1;this.$emit(\"submit\",t)},onChange:function(t){this.$emit(\"change\",t)}}},r=(n(147),n(0)),s=n(84),c=n.n(s),l=Object(r.a)(a,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"li\",{class:{\"action--disabled\":t.disabled}},[n(\"span\",{staticClass:\"action-input\",class:{\"action-input--picker\":t.isDatePickerType,\"action-input-picker--disabled\":t.disabled}},[n(\"span\",{staticClass:\"action-input__icon\",class:[t.isIconUrl?\"action-input__icon--url\":t.icon],style:{backgroundImage:t.isIconUrl?\"url(\"+t.icon+\")\":null}}),t._v(\" \"),n(\"form\",{ref:\"form\",staticClass:\"action-input__form\",attrs:{disabled:t.disabled},on:{submit:function(e){return e.preventDefault(),t.onSubmit(e)}}},[t.isDatePickerType?n(\"DatetimePicker\",t._b({staticClass:\"action-input__picker\",attrs:{value:t.value,placeholder:t.text,disabled:t.disabled,type:t.isDatePickerType,\"input-class\":[\"mx-input\",{focusable:t.isFocusable}]},on:{input:t.onInput,change:t.onChange}},\"DatetimePicker\",t.$attrs,!1)):[n(\"input\",{staticClass:\"action-input__submit\",attrs:{id:t.id,type:\"submit\"}}),t._v(\" \"),n(\"input\",t._b({staticClass:\"action-input__input\",class:{focusable:t.isFocusable},attrs:{type:t.type,placeholder:t.text,disabled:t.disabled},domProps:{value:t.value},on:{input:t.onInput,change:t.onChange}},\"input\",t.$attrs,!1)),t._v(\" \"),n(\"label\",{directives:[{name:\"show\",rawName:\"v-show\",value:!t.disabled,expression:\"!disabled\"}],staticClass:\"action-input__label\",attrs:{for:t.id}})]],2)])])},[],!1,null,\"44d356e8\",null);\"function\"==typeof c.a&&c()(l);var u=l.exports;n.d(e,\"ActionInput\",function(){return u});\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */e.default=u},function(t,e,n){\"use strict\";n.r(e);var i={name:\"ActionLink\",mixins:[n(14).a],props:{href:{type:String,default:\"#\",required:!0,validator:function(t){try{return new URL(t)}catch(e){return t.startsWith(\"#\")||t.startsWith(\"/\")}}},download:{type:String,default:\"\"},target:{type:String,default:\"_self\",validator:function(t){return[\"_blank\",\"_self\",\"_parent\",\"_top\"].indexOf(t)>-1}}}},o=(n(149),n(0)),a=n(85),r=n.n(a),s=Object(o.a)(i,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"li\",[n(\"a\",{staticClass:\"action-link focusable\",attrs:{download:t.download,href:t.href,target:t.target,rel:\"noreferrer noopener\"},on:{click:t.onClick}},[n(\"span\",{staticClass:\"action-link__icon\",class:[t.isIconUrl?\"action-link__icon--url\":t.icon],style:{backgroundImage:t.isIconUrl?\"url(\"+t.icon+\")\":null}}),t._v(\" \"),t.title?n(\"p\",[n(\"strong\",{staticClass:\"action-link__title\"},[t._v(\"\\n\\t\\t\\t\\t\"+t._s(t.title)+\"\\n\\t\\t\\t\")]),t._v(\" \"),n(\"br\"),t._v(\" \"),n(\"span\",{staticClass:\"action-link__longtext\",domProps:{textContent:t._s(t.text)}})]):t.isLongText?n(\"p\",{staticClass:\"action-link__longtext\",domProps:{textContent:t._s(t.text)}}):n(\"span\",{staticClass:\"action-link__text\"},[t._v(t._s(t.text))]),t._v(\" \"),t._e()],2)])},[],!1,null,\"f9c0ebfe\",null);\"function\"==typeof r.a&&r()(s);var c=s.exports;n.d(e,\"ActionLink\",function(){return c});\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */e.default=c},function(t,e,n){\"use strict\";n.r(e);var i={name:\"ActionRouter\",mixins:[n(14).a],props:{to:{type:[String,Object],default:\"\",required:!0},exact:{type:Boolean,default:!1}}},o=(n(151),n(0)),a=Object(o.a)(i,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"li\",[n(\"router-link\",{staticClass:\"action-router focusable\",attrs:{to:t.to,exact:t.exact,rel:\"noreferrer noopener\"}},[n(\"span\",{staticClass:\"action-router__icon\",class:[t.isIconUrl?\"action-router__icon--url\":t.icon],style:{backgroundImage:t.isIconUrl?\"url(\"+t.icon+\")\":null}}),t._v(\" \"),t.title?n(\"p\",[n(\"strong\",{staticClass:\"action-router__title\"},[t._v(\"\\n\\t\\t\\t\\t\"+t._s(t.title)+\"\\n\\t\\t\\t\")]),t._v(\" \"),n(\"br\"),t._v(\" \"),n(\"span\",{staticClass:\"action-router__longtext\",domProps:{textContent:t._s(t.text)}})]):t.isLongText?n(\"p\",{staticClass:\"action-router__longtext\",domProps:{textContent:t._s(t.text)}}):n(\"span\",{staticClass:\"action-router__text\"},[t._v(t._s(t.text))]),t._v(\" \"),t._e()],2)],1)},[],!1,null,\"3bf6846c\",null).exports;n.d(e,\"ActionRouter\",function(){return a});\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */e.default=a},function(t,e,n){\"use strict\";n.r(e);var i={name:\"ActionText\",mixins:[n(14).a]},o=(n(153),n(0)),a=Object(o.a)(i,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"li\",[n(\"span\",{staticClass:\"action-text\"},[n(\"span\",{staticClass:\"action-text__icon\",class:[t.isIconUrl?\"action-text__icon--url\":t.icon],style:{backgroundImage:t.isIconUrl?\"url(\"+t.icon+\")\":null}}),t._v(\" \"),t.title?n(\"p\",[n(\"strong\",{staticClass:\"action-text__title\"},[t._v(\"\\n\\t\\t\\t\\t\"+t._s(t.title)+\"\\n\\t\\t\\t\")]),t._v(\" \"),n(\"br\"),t._v(\" \"),n(\"span\",{staticClass:\"action-text__longtext\",domProps:{textContent:t._s(t.text)}})]):t.isLongText?n(\"p\",{staticClass:\"action-text__longtext\",domProps:{textContent:t._s(t.text)}}):n(\"span\",{staticClass:\"action-text__text\"},[t._v(t._s(t.text))]),t._v(\" \"),t._e()],2)])},[],!1,null,\"b4603aaa\",null).exports;n.d(e,\"ActionText\",function(){return a});\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */e.default=a},function(t,e,n){\"use strict\";n.r(e);var i=n(14),o=n(17),a={name:\"ActionTextEditable\",mixins:[i.a],props:{id:{type:String,default:function(){return\"action-\"+Object(o.a)()},validator:function(t){return\"\"!==t.trim()}},disabled:{type:Boolean,default:!1},value:{type:String,default:\"\"}},computed:{isFocusable:function(){return!this.disabled}},methods:{onInput:function(t){this.$emit(\"input\",t),this.$emit(\"update:value\",t.target.value)},onSubmit:function(t){if(t.preventDefault(),t.stopPropagation(),this.disabled)return!1;this.$emit(\"submit\",t)}}},r=(n(155),n(0)),s=n(86),c=n.n(s),l=Object(r.a)(a,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"li\",{class:{\"action--disabled\":t.disabled}},[n(\"span\",{staticClass:\"action-text-editable\"},[n(\"span\",{staticClass:\"action-text-editable__icon\",class:[t.isIconUrl?\"action-text-editable__icon--url\":t.icon],style:{backgroundImage:t.isIconUrl?\"url(\"+t.icon+\")\":null}}),t._v(\" \"),n(\"form\",{ref:\"form\",staticClass:\"action-text-editable__form\",attrs:{disabled:t.disabled},on:{submit:function(e){return e.preventDefault(),t.onSubmit(e)}}},[n(\"input\",{staticClass:\"action-text-editable__submit\",attrs:{id:t.id,type:\"submit\"}}),t._v(\" \"),t.title?n(\"strong\",{staticClass:\"action-text__title\"},[t._v(\"\\n\\t\\t\\t\\t\"+t._s(t.title)+\"\\n\\t\\t\\t\")]):t._e(),t._v(\" \"),n(\"textarea\",t._b({class:[\"action-text-editable__textarea\",{focusable:t.isFocusable}],attrs:{disabled:t.disabled},domProps:{value:t.value},on:{input:t.onInput}},\"textarea\",t.$attrs,!1)),t._v(\" \"),n(\"label\",{directives:[{name:\"show\",rawName:\"v-show\",value:!t.disabled,expression:\"!disabled\"}],staticClass:\"action-text-editable__label\",attrs:{for:t.id}})])])])},[],!1,null,\"43b509b7\",null);\"function\"==typeof c.a&&c()(l);var u=l.exports;n.d(e,\"ActionTextEditable\",function(){return u});\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */e.default=u},function(t,e,n){\"use strict\";n.r(e);var i=n(40),o=n.n(i),a={name:\"AppContent\",components:{AppNavigationToggle:n(82).default},data:function(){return{opened:!1}},mounted:function(){var t=this;this.mc=new o.a(this.$el,{cssProps:{userSelect:\"text\"}}),this.mc.on(\"swipeleft swiperight\",function(e){t.handleSwipe(e)})},unmounted:function(){this.mc.off(\"swipeleft swiperight\"),this.mc.destroy()},methods:{toggleNavigation:function(t){this.opened=t||!this.opened,this.opened?document.body.classList.add(\"nav-open\"):document.body.classList.remove(\"nav-open\")},handleSwipe:function(t){var e=t.srcEvent.pageX-t.deltaX,n=Math.abs(t.deltaX)>70;n&&e<40?this.toggleNavigation(!0):this.opened&&n&&e<340&&this.toggleNavigation(!1)}}},r=(n(157),n(0)),s=Object(r.a)(a,function(){var t=this.$createElement,e=this._self._c||t;return e(\"div\",{staticClass:\"no-snapper\",style:this.opened?\"transform: translateX(300px)\":\"\",attrs:{id:\"app-content\"}},[e(\"AppNavigationToggle\",{attrs:{\"aria-expanded\":this.opened,\"aria-controls\":\"app-navigation\"},on:{click:this.toggleNavigation}}),this._v(\" \"),this._t(\"default\")],2)},[],!1,null,\"0fe2f738\",null).exports;n.d(e,\"AppContent\",function(){return s});\n/*\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */e.default=s},function(t,e,n){\"use strict\";n.r(e);var i={name:\"AppContentDetails\"},o=n(0),a=Object(o.a)(i,function(){var t=this.$createElement;return(this._self._c||t)(\"div\",{staticClass:\"app-content-details\"},[this._t(\"default\")],2)},[],!1,null,null,null).exports;n.d(e,\"AppContentDetails\",function(){return a});\n/*\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */e.default=a},function(t,e,n){\"use strict\";n.r(e);var i={name:\"AppContentList\",props:{selection:{type:Boolean,default:!1},showDetails:{type:Boolean,default:!1}}},o=n(0),a=Object(o.a)(i,function(){var t=this.$createElement;return(this._self._c||t)(\"div\",{staticClass:\"app-content-list\",class:{selection:this.selection,showdetails:this.showDetails}},[this._t(\"default\")],2)},[],!1,null,null,null).exports;n.d(e,\"AppContentList\",function(){return a});\n/*\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */e.default=a},function(t,e,n){\"use strict\";n.r(e);var i={name:\"AppNavigation\"},o=(n(159),n(0)),a=Object(o.a)(i,function(){var t=this.$createElement;return(this._self._c||t)(\"div\",{attrs:{id:\"app-navigation\"}},[this._t(\"default\")],2)},[],!1,null,null,null).exports;n.d(e,\"AppNavigation\",function(){return a});\n/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */e.default=a},function(t,e,n){\"use strict\";n.r(e);var i={name:\"AppNavigationCaption\",props:{text:{type:String,required:!0}}},o=(n(161),n(0)),a=Object(o.a)(i,function(){var t=this.$createElement;return(this._self._c||t)(\"li\",{staticClass:\"app-navigation-caption--item\"},[this._v(\"\\n\\t\"+this._s(this.text)+\"\\n\")])},[],!1,null,\"9639e4a4\",null).exports;n.d(e,\"AppNavigationCaption\",function(){return a});e.default=a},function(t,e,n){\"use strict\";n.r(e);var i=n(24),o=n(13),a=n.n(o),r=n(67),s={name:\"AppNavigationItem\",components:{PopoverMenu:i.PopoverMenu,AppNavigationCounter:r.AppNavigationCounter},directives:{ClickOutside:a.a},props:{item:{type:Object,required:!0},open:{type:Boolean,default:!1},menuOpen:{type:Boolean,default:!1}},data:function(){return{opened:this.open,openedMenu:this.menuOpen}},computed:{collapsible:function(){return this.item.collapsible&&this.item.children&&this.item.children.length>0},simpleAction:function(){return this.collapsible&&!this.item.action?this.toggleCollapse:this.item.action}},watch:{open:function(t){this.opened=t},menuOpen:function(t){this.openedMenu=t}},mounted:function(){this.popupItem=this.$el},methods:{hideMenu:function(){this.openedMenu=!1,this.$emit(\"update:menuOpen\",this.openedMenu)},toggleMenu:function(){this.openedMenu=!this.openedMenu,this.$emit(\"update:menuOpen\",this.openedMenu)},toggleCollapse:function(){this.opened=!this.opened,this.$emit(\"update:open\",this.opened)},callPreventStop:function(t,e){t&&(e.preventDefault(),e.stopPropagation(),t())},cancelEdit:function(t){Array.isArray(this.item.classes)&&(this.item.classes=this.item.classes.filter(function(t){return\"editing\"!==t})),this.item.edit.reset(t)},navElement:function(t){if(t.router){var e=t.router.exact;return void 0===t.router.exact&&(e=!0),{is:\"router-link\",tag:\"li\",to:t.router,exact:e}}return{is:\"li\"}}}},c=n(0),l=Object(c.a)(s,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"nav-element\",t._b({class:[{\"icon-loading-small\":t.item.loading,open:t.opened,collapsible:t.collapsible},t.item.classes],attrs:{id:t.item.id,title:t.item.title}},\"nav-element\",t.navElement(t.item),!1),[t.item.bullet?n(\"div\",{staticClass:\"app-navigation-entry-bullet\",style:{backgroundColor:t.item.bullet}}):t._e(),t._v(\" \"),t.collapsible?n(\"button\",{staticClass:\"collapse\",on:{click:function(e){return e.preventDefault(),e.stopPropagation(),t.toggleCollapse(e)}}}):t._e(),t._v(\" \"),n(\"a\",{class:t.item.icon,attrs:{href:t.item.href?t.item.href:\"#\"},on:{click:function(e){return t.callPreventStop(t.simpleAction,e)}}},[t.item.iconUrl?n(\"img\",{attrs:{alt:t.item.text,src:t.item.iconUrl}}):t._e(),t._v(\"\\n\\t\\t\"+t._s(t.item.text)+\"\\n\\t\")]),t._v(\" \"),t.item.utils?n(\"div\",{staticClass:\"app-navigation-entry-utils\"},[n(\"ul\",[t.item.utils.counter?n(\"AppNavigationCounter\",{attrs:{highlighted:!0===t.item.utils.counter_highlighted}},[t._v(\"\\n\\t\\t\\t\\t\"+t._s(t.item.utils.counter)+\"\\n\\t\\t\\t\")]):t._e(),t._v(\" \"),t.item.utils.actions&&1===t.item.utils.actions.length?n(\"li\",{staticClass:\"app-navigation-entry-utils-menu-button\"},[n(\"button\",{class:t.item.utils.actions[0].icon,attrs:{title:t.item.utils.actions[0].text},on:{click:t.item.utils.actions[0].action}})]):t.item.utils.actions&&t.item.utils.actions.length>1?n(\"li\",{staticClass:\"app-navigation-entry-utils-menu-button\"},[n(\"button\",{directives:[{name:\"click-outside\",rawName:\"v-click-outside\",value:t.hideMenu,expression:\"hideMenu\"}],on:{click:t.toggleMenu}})]):t._e()],1)]):t._e(),t._v(\" \"),t.item.utils&&t.item.utils.actions&&t.item.utils.actions.length>1?n(\"div\",{staticClass:\"app-navigation-entry-menu\",class:{open:t.openedMenu}},[n(\"PopoverMenu\",{attrs:{menu:t.item.utils.actions}})],1):t._e(),t._v(\" \"),t.item.undo?n(\"div\",{staticClass:\"app-navigation-entry-deleted\"},[n(\"div\",{staticClass:\"app-navigation-entry-deleted-description\"},[t._v(\"\\n\\t\\t\\t\"+t._s(t.item.undo.text)+\"\\n\\t\\t\")]),t._v(\" \"),n(\"button\",{staticClass:\"app-navigation-entry-deleted-button icon-history\",attrs:{title:t.t(\"settings\",\"Undo\")}})]):t._e(),t._v(\" \"),t.item.edit?n(\"div\",{staticClass:\"app-navigation-entry-edit\"},[n(\"form\",{on:{submit:function(e){return e.preventDefault(),e.stopPropagation(),t.item.edit.action(e)}}},[n(\"input\",{attrs:{placeholder:t.item.edit.text,type:\"text\"}}),t._v(\" \"),n(\"input\",{staticClass:\"icon-confirm\",attrs:{type:\"submit\",value:\"\"}}),t._v(\" \"),n(\"input\",{staticClass:\"icon-close\",attrs:{type:\"submit\",value:\"\"},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.cancelEdit(e)}}})])]):t._e(),t._v(\" \"),t.item.children?n(\"ul\",t._l(t.item.children,function(t,e){return n(\"app-navigation-item\",{key:e,attrs:{item:t}})}),1):t._e()])},[],!1,null,null,null).exports;n.d(e,\"AppNavigationItem\",function(){return l});\n/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */e.default=l},function(t,e,n){\"use strict\";n.r(e);var i={props:{buttonId:{type:String,required:!1,default:\"\"},buttonClass:{type:[String,Array,Object],required:!1,default:\"\"},disabled:{type:Boolean,required:!1,default:!1},text:{type:String,required:!0}}},o=n(0),a=Object(o.a)(i,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{staticClass:\"app-navigation-new\"},[n(\"button\",{class:t.buttonClass,attrs:{id:t.buttonId,type:\"button\",disabled:t.disabled},on:{click:function(e){return t.$emit(\"click\")}}},[t._v(\"\\n\\t\\t\"+t._s(t.text)+\"\\n\\t\")])])},[],!1,null,null,null).exports;n.d(e,\"AppNavigationNew\",function(){return a});\n/*\n * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */e.default=a},function(e,n,i){\"use strict\";i.r(n);var o=i(13),a={directives:{ClickOutside:i.n(o).a},props:{title:{type:String,required:!1,default:t(\"core\",\"Settings\")}},data:function(){return{open:!1}},methods:{toggleMenu:function(){this.open=!this.open},closeMenu:function(){this.open=!1}}},r=(i(163),i(0)),s=Object(r.a)(a,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{directives:[{name:\"click-outside\",rawName:\"v-click-outside\",value:t.closeMenu,expression:\"closeMenu\"}],class:{open:t.open},attrs:{id:\"app-settings\"}},[n(\"div\",{attrs:{id:\"app-settings-header\"}},[n(\"button\",{staticClass:\"settings-button\",on:{click:t.toggleMenu}},[t._v(\"\\n\\t\\t\\t\"+t._s(t.title)+\"\\n\\t\\t\")])]),t._v(\" \"),n(\"transition\",{attrs:{name:\"slide-up\"}},[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.open,expression:\"open\"}],attrs:{id:\"app-settings-content\"}},[t._t(\"default\")],2)])],1)},[],!1,null,\"7f13ea43\",null).exports;i.d(n,\"AppNavigationSettings\",function(){return s});\n/*\n * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */n.default=s},function(t,e,n){\"use strict\";n.r(e);var i={name:\"AppNavigationSpacer\"},o=(n(165),n(0)),a=Object(o.a)(i,function(){var t=this.$createElement;return(this._self._c||t)(\"li\",{staticClass:\"app-navigation-spacer\"})},[],!1,null,\"18241e10\",null).exports;n.d(e,\"AppNavigationSpacer\",function(){return a});\n/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */e.default=a},function(t,e,n){\"use strict\";n.r(e);var i=n(3),o=n.n(i),a=n(30),r=function(t){return t&&\"string\"==typeof t&&\"\"!==t.trim()&&-1===t.indexOf(\" \")},s={name:\"AppSidebar\",components:{Actions:a.default},props:{active:{type:String,default:\"\"},title:{type:String,default:\"\",required:!0},subtitle:{type:String,default:\"\"},background:{type:String,default:\"\"},starred:{type:Boolean,default:null},starLoading:{type:Boolean,default:!1},compact:{type:Boolean,default:!1}},data:function(){return{tabs:[],activeTab:\"\",isStarred:this.starred}},computed:{canStar:function(){return null!==this.isStarred},hasFigure:function(){return this.$slots.header||this.background},hasMultipleTabs:function(){return this.tabs.length>1},hasFigureClickListener:function(){return this.$listeners[\"figure-click\"]},currentTabIndex:function(){var t=this;return this.tabs.findIndex(function(e){return e.id===t.activeTab})}},watch:{active:function(t){t!==this.activeTab&&this.updateActive()},starred:function(){this.isStarred=this.starred}},mounted:function(){this.updateTabs()},methods:{closeSidebar:function(t){this.$emit(\"close\",t)},onFigureClick:function(t){this.$emit(\"figure-click\",t)},setActive:function(t){var e=t.target.closest(\"a\").dataset.id;this.activeTab=e,this.$emit(\"update:active\",e)},focusPreviousTab:function(){this.currentTabIndex>0&&(this.activeTab=this.tabs[this.currentTabIndex-1].id,this.$emit(\"update:active\",this.activeTab)),this.focusActiveTab()},focusNextTab:function(){this.currentTabIndex<this.tabs.length-1&&(this.activeTab=this.tabs[this.currentTabIndex+1].id,this.$emit(\"update:active\",this.activeTab)),this.focusActiveTab()},focusFirstTab:function(){this.activeTab=this.tabs[0].id,this.$emit(\"update:active\",this.activeTab),this.focusActiveTab()},focusLastTab:function(){this.activeTab=this.tabs[this.tabs.length-1].id,this.$emit(\"update:active\",this.activeTab),this.focusActiveTab()},focusActiveTab:function(){this.$el.querySelector(\"#\"+this.activeTab).focus()},focusActiveTabContent:function(){this.$el.querySelector(\"#tab-\"+this.activeTab).focus()},updateActive:function(){var t=this;this.activeTab=this.active&&-1!==this.tabs.findIndex(function(e){return e.id===t.active})?this.active:this.tabs.length>0?this.tabs[0].id:\"\"},toggleStarred:function(){this.isStarred=!this.isStarred,this.$emit(\"update:starred\",this.isStarred)},updateTabs:function(){var t=this.$children.reduce(function(t,e){return e.name&&\"string\"==typeof e.name?r(e.id)?r(e.icon)?(t.push(e),t):(o.a.util.warn(\"This tab is missing a valid icon: \".concat(e.icon),e),t):(o.a.util.warn(\"This tab is missing a valid id: \".concat(e.id),e),t):(o.a.util.warn(\"This tab is missing a valid name: \".concat(e.name),e),t)},[]);this.tabs=t.sort(function(t,e){var n=t.order||0,i=e.order||0;return n===i?OC.Util.naturalSortCompare(t.name,e.name):n-i}),this.tabs.length>0&&this.updateActive()}}},c=(n(167),n(169),n(0)),l=Object(c.a)(s,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"transition\",{attrs:{name:\"slide-right\"}},[n(\"aside\",{attrs:{id:\"app-sidebar\"}},[n(\"header\",{staticClass:\"app-sidebar-header\",class:{\"app-sidebar-header--with-figure\":t.hasFigure,\"app-sidebar-header--compact\":t.compact}},[n(\"a\",{staticClass:\"icon-close\",attrs:{href:\"#\",title:t.t(\"core\",\"close\")},on:{click:t.closeSidebar}}),t._v(\" \"),t.hasFigure?n(\"div\",{staticClass:\"app-sidebar-header__figure\",class:{\"app-sidebar-header__figure--with-action\":t.hasFigureClickListener},style:{backgroundImage:\"url(\"+t.background+\")\"},on:{click:t.onFigureClick}},[t._t(\"header\")],2):t._e(),t._v(\" \"),n(\"div\",{staticClass:\"app-sidebar-header__desc\",class:{\"app-sidebar-header__desc--with-star\":t.canStar,\"app-sidebar-header__desc--with-subtitle\":t.subtitle}},[t.canStar?n(\"a\",{staticClass:\"app-sidebar-header__star\",class:{\"icon-starred\":t.isStarred&&!t.starLoading,\"icon-star\":!t.isStarred&&!t.starLoading,\"icon-loading-small\":t.starLoading},on:{click:function(e){return e.preventDefault(),t.toggleStarred(e)}}}):t._e(),t._v(\" \"),n(\"h3\",{staticClass:\"app-sidebar-header__title\"},[t._v(\"\\n\\t\\t\\t\\t\\t\"+t._s(t.title)+\"\\n\\t\\t\\t\\t\")]),t._v(\" \"),\"\"!==t.subtitle.trim()?n(\"h4\",{staticClass:\"app-sidebar-header__subtitle\"},[t._v(\"\\n\\t\\t\\t\\t\\t\"+t._s(t.subtitle)+\"\\n\\t\\t\\t\\t\")]):t._e(),t._v(\" \"),t.$slots[\"secondary-actions\"]?n(\"Actions\",{staticClass:\"app-sidebar-header__menu\"},[t._t(\"secondary-actions\")],2):t._e()],1),t._v(\" \"),t.$slots[\"primary-actions\"]?n(\"div\",{staticClass:\"app-sidebar-header__action\"},[t._t(\"primary-actions\")],2):t._e()]),t._v(\" \"),t.hasMultipleTabs?n(\"nav\",{staticClass:\"app-sidebar-tabs__nav\",on:{keydown:[function(e){return!e.type.indexOf(\"key\")&&t._k(e.keyCode,\"left\",37,e.key,[\"Left\",\"ArrowLeft\"])?null:\"button\"in e&&0!==e.button?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.focusPreviousTab(e))},function(e){return!e.type.indexOf(\"key\")&&t._k(e.keyCode,\"right\",39,e.key,[\"Right\",\"ArrowRight\"])?null:\"button\"in e&&2!==e.button?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.focusNextTab(e))},function(e){return!e.type.indexOf(\"key\")&&t._k(e.keyCode,\"tab\",9,e.key,\"Tab\")?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.focusActiveTabContent(e))},function(e){return!e.type.indexOf(\"key\")&&t._k(e.keyCode,\"page-up\",void 0,e.key,void 0)?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.focusFirstTab(e))},function(e){return!e.type.indexOf(\"key\")&&t._k(e.keyCode,\"page-down\",void 0,e.key,void 0)?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.focusLastTab(e))}]}},[n(\"ul\",t._l(t.tabs,function(e){return n(\"li\",{key:e.id,staticClass:\"app-sidebar-tabs__tab\"},[n(\"a\",{class:{active:t.activeTab===e.id},attrs:{id:e.id,\"aria-controls\":\"tab-\"+e.id,\"aria-selected\":t.activeTab===e.id,\"data-id\":e.id,href:\"#tab-\"+e.id,tabindex:t.activeTab===e.id?null:-1,role:\"tab\"},on:{click:function(e){return e.preventDefault(),t.setActive(e)}}},[n(\"span\",{staticClass:\"app-sidebar-tabs__tab-icon\",class:e.icon}),t._v(\"\\n\\t\\t\\t\\t\\t\\t\"+t._s(e.name)+\"\\n\\t\\t\\t\\t\\t\")])])}),0)]):t._e(),t._v(\" \"),n(\"div\",{staticClass:\"app-sidebar-tabs__content\",class:{\"app-sidebar-tabs__content--multiple\":t.hasMultipleTabs}},[t._t(\"default\",null,{activeTab:t.activeTab})],2)])])},[],!1,null,\"625289d6\",null).exports;n.d(e,\"AppSidebar\",function(){return l});\n/*\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */e.default=l},function(t,e,n){\"use strict\";n.r(e);var i={name:\"AppSidebarTab\",props:{name:{type:String,default:\"\",required:!0},icon:{type:String,default:\"\",required:!0},order:{type:Number,default:0,required:!1}},computed:{id:function(){return this.name.toLowerCase().replace(/ /g,\"-\")},isActive:function(){return this.$parent.activeTab===this.id}}},o=(n(171),n(0)),a=Object(o.a)(i,function(){var t=this.$createElement;return(this._self._c||t)(\"section\",{directives:[{name:\"show\",rawName:\"v-show\",value:this.isActive,expression:\"isActive\"}],attrs:{id:\"tab-\"+this.id,\"aria-hidden\":!this.isActive,\"aria-labelledby\":this.name,tabindex:\"0\",role:\"tabpanel\"}},[this._t(\"default\")],2)},[],!1,null,\"3f1c0b76\",null).exports;n.d(e,\"AppSidebarTab\",function(){return a});\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */e.default=a},function(t,e,n){\"use strict\";n.r(e);var i={props:{appName:{type:String,required:!0}}},o=n(0),a=Object(o.a)(i,function(){var t=this.$createElement;return(this._self._c||t)(\"div\",{class:\"app-\"+this.appName,attrs:{id:\"content\"}},[this._t(\"default\")],2)},[],!1,null,null,null).exports;n.d(e,\"Content\",function(){return a});\n/*\n * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */e.default=a},function(t,e,n){\"use strict\";var i=n(47);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,\"li.active[data-v-f874e42c]{box-shadow:inset 4px 0 var(--color-primary)}.action--disabled[data-v-f874e42c]{pointer-events:none;opacity:.5}.action--disabled[data-v-f874e42c]:hover,.action--disabled[data-v-f874e42c]:focus{cursor:default;opacity:.5}.action--disabled *[data-v-f874e42c]{opacity:1 !important}.action-checkbox[data-v-f874e42c]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;cursor:pointer;white-space:nowrap;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:normal;line-height:44px}.action-checkbox__checkbox[data-v-f874e42c]{position:absolute;top:auto;left:-10000px;overflow:hidden;width:1px;height:1px}.action-checkbox__checkbox:focus+.action-checkbox__label[data-v-f874e42c]{opacity:1}.action-checkbox__label[data-v-f874e42c]{display:flex;align-items:center;width:100%;padding:0 !important;padding-right:14px !important;opacity:.7}.action-checkbox__label[data-v-f874e42c]::before{margin:0 14px 0 !important}.action-checkbox--disabled[data-v-f874e42c],.action-checkbox--disabled .action-checkbox__label[data-v-f874e42c]{cursor:pointer}.action-checkbox:not(.action-checkbox--disabled):hover .action-checkbox__label[data-v-f874e42c],.action-checkbox:not(.action-checkbox--disabled):focus .action-checkbox__label[data-v-f874e42c]{opacity:1}\\n\",\"\"])},function(t,e,n){\"use strict\";var i=n(48);n.n(i).a},function(t,e,n){e=t.exports=n(1)(!1);var i=n(8),o=i(n(9)),a=i(n(10)),r=i(n(11)),s=i(n(12));e.push([t.i,'@font-face{font-family:\"iconfont-vue\";src:url('+o+\");src:url(\"+o+') format(\"embedded-opentype\"),url('+a+') format(\"woff\"),url('+r+') format(\"truetype\"),url('+s+') format(\"svg\")}.icon[data-v-44d356e8]{font-style:normal;font-weight:400}.icon.arrow-left-double[data-v-44d356e8]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.arrow-left[data-v-44d356e8]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.arrow-right-double[data-v-44d356e8]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.arrow-right[data-v-44d356e8]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.close[data-v-44d356e8]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.confirm-fade[data-v-44d356e8]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.confirm[data-v-44d356e8]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.menu[data-v-44d356e8]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.more[data-v-44d356e8]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.pause[data-v-44d356e8]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.play[data-v-44d356e8]:before{font-family:\"iconfont-vue\";content:\"\"}button[data-v-44d356e8],input[data-v-44d356e8]:not([type=\\'range\\']),textarea[data-v-44d356e8]{margin:0;padding:7px 6px;cursor:text;color:var(--color-text-lighter);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);outline:none;background-color:var(--color-main-background);font-size:13px}button[data-v-44d356e8]:not(:disabled):not(.primary):hover,button[data-v-44d356e8]:not(:disabled):not(.primary):focus,button:not(:disabled):not(.primary).active[data-v-44d356e8],input[data-v-44d356e8]:not([type=\\'range\\']):not(:disabled):not(.primary):hover,input[data-v-44d356e8]:not([type=\\'range\\']):not(:disabled):not(.primary):focus,input:not([type=\\'range\\']):not(:disabled):not(.primary).active[data-v-44d356e8],textarea[data-v-44d356e8]:not(:disabled):not(.primary):hover,textarea[data-v-44d356e8]:not(:disabled):not(.primary):focus,textarea:not(:disabled):not(.primary).active[data-v-44d356e8]{border-color:var(--color-primary-element);outline:none}button[data-v-44d356e8]:not(:disabled):not(.primary):active,input[data-v-44d356e8]:not([type=\\'range\\']):not(:disabled):not(.primary):active,textarea[data-v-44d356e8]:not(:disabled):not(.primary):active{color:var(--color-text-light);outline:none;background-color:var(--color-main-background)}button[data-v-44d356e8]:disabled,input[data-v-44d356e8]:not([type=\\'range\\']):disabled,textarea[data-v-44d356e8]:disabled{cursor:default;opacity:.5;color:var(--color-text-maxcontrast);background-color:var(--color-background-dark)}button[data-v-44d356e8]:required,input[data-v-44d356e8]:not([type=\\'range\\']):required,textarea[data-v-44d356e8]:required{box-shadow:none}button[data-v-44d356e8]:invalid,input[data-v-44d356e8]:not([type=\\'range\\']):invalid,textarea[data-v-44d356e8]:invalid{border-color:var(--color-error);box-shadow:none !important}button.primary[data-v-44d356e8],input:not([type=\\'range\\']).primary[data-v-44d356e8],textarea.primary[data-v-44d356e8]{cursor:pointer;color:var(--color-primary-text);border-color:var(--color-primary-element);background-color:var(--color-primary-element)}button.primary[data-v-44d356e8]:not(:disabled):hover,button.primary[data-v-44d356e8]:not(:disabled):focus,button.primary[data-v-44d356e8]:not(:disabled):active,input:not([type=\\'range\\']).primary[data-v-44d356e8]:not(:disabled):hover,input:not([type=\\'range\\']).primary[data-v-44d356e8]:not(:disabled):focus,input:not([type=\\'range\\']).primary[data-v-44d356e8]:not(:disabled):active,textarea.primary[data-v-44d356e8]:not(:disabled):hover,textarea.primary[data-v-44d356e8]:not(:disabled):focus,textarea.primary[data-v-44d356e8]:not(:disabled):active{border-color:var(--color-primary-element-light);background-color:var(--color-primary-element-light)}button.primary[data-v-44d356e8]:not(:disabled):active,input:not([type=\\'range\\']).primary[data-v-44d356e8]:not(:disabled):active,textarea.primary[data-v-44d356e8]:not(:disabled):active{color:var(--color-primary-text-dark)}button.primary[data-v-44d356e8]:disabled,input:not([type=\\'range\\']).primary[data-v-44d356e8]:disabled,textarea.primary[data-v-44d356e8]:disabled{cursor:default;color:var(--color-primary-text-dark);background-color:var(--color-primary-element)}li.active[data-v-44d356e8]{box-shadow:inset 4px 0 var(--color-primary)}.action--disabled[data-v-44d356e8]{pointer-events:none;opacity:.5}.action--disabled[data-v-44d356e8]:hover,.action--disabled[data-v-44d356e8]:focus{cursor:default;opacity:.5}.action--disabled *[data-v-44d356e8]{opacity:1 !important}.action-input[data-v-44d356e8]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;cursor:pointer;white-space:nowrap;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:normal}.action-input[data-v-44d356e8]:not(.action-input--picker){opacity:.7}.action-input[data-v-44d356e8]:not(.action-input--picker):hover,.action-input[data-v-44d356e8]:not(.action-input--picker):focus{opacity:1}.action-input--picker .action-input__icon[data-v-44d356e8]{opacity:.7}.action-input--picker:hover .action-input__icon[data-v-44d356e8],.action-input--picker:focus .action-input__icon[data-v-44d356e8]{opacity:1}.action-input>span[data-v-44d356e8]{cursor:pointer;white-space:nowrap}.action-input__icon[data-v-44d356e8]{min-width:0;min-height:0;padding:22px 0 22px 44px;background-position:14px center;background-size:16px}.action-input__form[data-v-44d356e8]{display:flex;align-items:center;flex:1 1 auto;margin:4px 0;padding-right:14px}.action-input__submit[data-v-44d356e8]{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}.action-input__label[data-v-44d356e8]{display:flex;align-items:center;justify-content:center;width:36px;height:36px;margin:0 0 0 -8px;padding:7px 6px;cursor:pointer;opacity:1;color:var(--color-text-lighter);border:1px solid var(--color-border-dark);border-left-color:transparent;border-radius:0 var(--border-radius) var(--border-radius) 0;background-color:var(--color-main-background);background-clip:padding-box;font-size:16px}.action-input__label[data-v-44d356e8]:before{font-family:\"iconfont-vue\";font-style:normal;font-weight:400;content:\"\"}.action-input__input[data-v-44d356e8]{flex:1 1 auto;min-width:132px;min-height:36px;max-height:36px;margin:0}.action-input__input[data-v-44d356e8]:disabled{cursor:default}.action-input__input:not(:active):not(:hover):not(:focus):invalid+.action-input__label[data-v-44d356e8]{border-color:var(--color-error);border-left-color:transparent}.action-input__input:not(:active):not(:hover):not(:focus):not(:disabled)+.action-input__label[data-v-44d356e8]:active,.action-input__input:not(:active):not(:hover):not(:focus):not(:disabled)+.action-input__label[data-v-44d356e8]:hover,.action-input__input:not(:active):not(:hover):not(:focus):not(:disabled)+.action-input__label[data-v-44d356e8]:focus{border-color:var(--color-primary-element);border-radius:var(--border-radius)}.action-input__input:active:not(:disabled)+.action-input__label[data-v-44d356e8],.action-input__input:hover:not(:disabled)+.action-input__label[data-v-44d356e8],.action-input__input:focus:not(:disabled)+.action-input__label[data-v-44d356e8]{z-index:2;border-color:var(--color-primary-element);border-left-color:transparent}.action-input__picker[data-v-44d356e8] .mx-input{margin:0}li:last-child>.action-input[data-v-44d356e8]{margin-bottom:10px}li:first-child>.action-input[data-v-44d356e8]{margin-top:10px}\\n',\"\"])},function(t,e,n){\"use strict\";var i=n(49);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,\"li.active[data-v-f9c0ebfe]{box-shadow:inset 4px 0 var(--color-primary)}.action-link[data-v-f9c0ebfe]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;padding-right:14px;cursor:pointer;white-space:nowrap;opacity:.7;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:normal;line-height:44px}.action-link[data-v-f9c0ebfe]:hover,.action-link[data-v-f9c0ebfe]:focus{opacity:1}.action-link>span[data-v-f9c0ebfe]{cursor:pointer;white-space:nowrap}.action-link__icon[data-v-f9c0ebfe]{width:44px;height:44px;opacity:1;background-position:14px center;background-size:16px}.action-link p[data-v-f9c0ebfe]{width:150px;padding:7px 0;cursor:pointer;text-align:left;line-height:1.6em}.action-link__longtext[data-v-f9c0ebfe]{cursor:pointer;white-space:pre-wrap}.action-link__title[data-v-f9c0ebfe]{font-weight:bold}.action--disabled[data-v-f9c0ebfe]{pointer-events:none;opacity:.5}.action--disabled[data-v-f9c0ebfe]:hover,.action--disabled[data-v-f9c0ebfe]:focus{cursor:default;opacity:.5}.action--disabled *[data-v-f9c0ebfe]{opacity:1 !important}\\n\",\"\"])},function(t,e,n){\"use strict\";var i=n(50);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,\"li.active[data-v-3bf6846c]{box-shadow:inset 4px 0 var(--color-primary)}.action-router[data-v-3bf6846c]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;padding-right:14px;cursor:pointer;white-space:nowrap;opacity:.7;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:normal;line-height:44px}.action-router[data-v-3bf6846c]:hover,.action-router[data-v-3bf6846c]:focus{opacity:1}.action-router>span[data-v-3bf6846c]{cursor:pointer;white-space:nowrap}.action-router__icon[data-v-3bf6846c]{width:44px;height:44px;opacity:1;background-position:14px center;background-size:16px}.action-router p[data-v-3bf6846c]{width:150px;padding:7px 0;cursor:pointer;text-align:left;line-height:1.6em}.action-router__longtext[data-v-3bf6846c]{cursor:pointer;white-space:pre-wrap}.action-router__title[data-v-3bf6846c]{font-weight:bold}.action--disabled[data-v-3bf6846c]{pointer-events:none;opacity:.5}.action--disabled[data-v-3bf6846c]:hover,.action--disabled[data-v-3bf6846c]:focus{cursor:default;opacity:.5}.action--disabled *[data-v-3bf6846c]{opacity:1 !important}\\n\",\"\"])},function(t,e,n){\"use strict\";var i=n(51);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,\"li.active[data-v-b4603aaa]{box-shadow:inset 4px 0 var(--color-primary)}.action-text[data-v-b4603aaa]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;padding-right:14px;cursor:pointer;white-space:nowrap;opacity:.7;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:normal;line-height:44px}.action-text[data-v-b4603aaa]:hover,.action-text[data-v-b4603aaa]:focus{opacity:1}.action-text>span[data-v-b4603aaa]{cursor:pointer;white-space:nowrap}.action-text__icon[data-v-b4603aaa]{width:44px;height:44px;opacity:1;background-position:14px center;background-size:16px}.action-text p[data-v-b4603aaa]{width:150px;padding:7px 0;cursor:pointer;text-align:left;line-height:1.6em}.action-text__longtext[data-v-b4603aaa]{cursor:pointer;white-space:pre-wrap}.action-text__title[data-v-b4603aaa]{font-weight:bold}.action--disabled[data-v-b4603aaa]{pointer-events:none;opacity:.5}.action--disabled[data-v-b4603aaa]:hover,.action--disabled[data-v-b4603aaa]:focus{cursor:default;opacity:.5}.action--disabled *[data-v-b4603aaa]{opacity:1 !important}.action-text[data-v-b4603aaa],.action-text span[data-v-b4603aaa]{cursor:default}\\n\",\"\"])},function(t,e,n){\"use strict\";var i=n(52);n.n(i).a},function(t,e,n){e=t.exports=n(1)(!1);var i=n(8),o=i(n(9)),a=i(n(10)),r=i(n(11)),s=i(n(12));e.push([t.i,'@font-face{font-family:\"iconfont-vue\";src:url('+o+\");src:url(\"+o+') format(\"embedded-opentype\"),url('+a+') format(\"woff\"),url('+r+') format(\"truetype\"),url('+s+') format(\"svg\")}.icon[data-v-43b509b7]{font-style:normal;font-weight:400}.icon.arrow-left-double[data-v-43b509b7]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.arrow-left[data-v-43b509b7]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.arrow-right-double[data-v-43b509b7]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.arrow-right[data-v-43b509b7]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.close[data-v-43b509b7]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.confirm-fade[data-v-43b509b7]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.confirm[data-v-43b509b7]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.menu[data-v-43b509b7]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.more[data-v-43b509b7]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.pause[data-v-43b509b7]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.play[data-v-43b509b7]:before{font-family:\"iconfont-vue\";content:\"\"}button[data-v-43b509b7],input[data-v-43b509b7]:not([type=\\'range\\']),textarea[data-v-43b509b7]{margin:0;padding:7px 6px;cursor:text;color:var(--color-text-lighter);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);outline:none;background-color:var(--color-main-background);font-size:13px}button[data-v-43b509b7]:not(:disabled):not(.primary):hover,button[data-v-43b509b7]:not(:disabled):not(.primary):focus,button:not(:disabled):not(.primary).active[data-v-43b509b7],input[data-v-43b509b7]:not([type=\\'range\\']):not(:disabled):not(.primary):hover,input[data-v-43b509b7]:not([type=\\'range\\']):not(:disabled):not(.primary):focus,input:not([type=\\'range\\']):not(:disabled):not(.primary).active[data-v-43b509b7],textarea[data-v-43b509b7]:not(:disabled):not(.primary):hover,textarea[data-v-43b509b7]:not(:disabled):not(.primary):focus,textarea:not(:disabled):not(.primary).active[data-v-43b509b7]{border-color:var(--color-primary-element);outline:none}button[data-v-43b509b7]:not(:disabled):not(.primary):active,input[data-v-43b509b7]:not([type=\\'range\\']):not(:disabled):not(.primary):active,textarea[data-v-43b509b7]:not(:disabled):not(.primary):active{color:var(--color-text-light);outline:none;background-color:var(--color-main-background)}button[data-v-43b509b7]:disabled,input[data-v-43b509b7]:not([type=\\'range\\']):disabled,textarea[data-v-43b509b7]:disabled{cursor:default;opacity:.5;color:var(--color-text-maxcontrast);background-color:var(--color-background-dark)}button[data-v-43b509b7]:required,input[data-v-43b509b7]:not([type=\\'range\\']):required,textarea[data-v-43b509b7]:required{box-shadow:none}button[data-v-43b509b7]:invalid,input[data-v-43b509b7]:not([type=\\'range\\']):invalid,textarea[data-v-43b509b7]:invalid{border-color:var(--color-error);box-shadow:none !important}button.primary[data-v-43b509b7],input:not([type=\\'range\\']).primary[data-v-43b509b7],textarea.primary[data-v-43b509b7]{cursor:pointer;color:var(--color-primary-text);border-color:var(--color-primary-element);background-color:var(--color-primary-element)}button.primary[data-v-43b509b7]:not(:disabled):hover,button.primary[data-v-43b509b7]:not(:disabled):focus,button.primary[data-v-43b509b7]:not(:disabled):active,input:not([type=\\'range\\']).primary[data-v-43b509b7]:not(:disabled):hover,input:not([type=\\'range\\']).primary[data-v-43b509b7]:not(:disabled):focus,input:not([type=\\'range\\']).primary[data-v-43b509b7]:not(:disabled):active,textarea.primary[data-v-43b509b7]:not(:disabled):hover,textarea.primary[data-v-43b509b7]:not(:disabled):focus,textarea.primary[data-v-43b509b7]:not(:disabled):active{border-color:var(--color-primary-element-light);background-color:var(--color-primary-element-light)}button.primary[data-v-43b509b7]:not(:disabled):active,input:not([type=\\'range\\']).primary[data-v-43b509b7]:not(:disabled):active,textarea.primary[data-v-43b509b7]:not(:disabled):active{color:var(--color-primary-text-dark)}button.primary[data-v-43b509b7]:disabled,input:not([type=\\'range\\']).primary[data-v-43b509b7]:disabled,textarea.primary[data-v-43b509b7]:disabled{cursor:default;color:var(--color-primary-text-dark);background-color:var(--color-primary-element)}li.active[data-v-43b509b7]{box-shadow:inset 4px 0 var(--color-primary)}.action--disabled[data-v-43b509b7]{pointer-events:none;opacity:.5}.action--disabled[data-v-43b509b7]:hover,.action--disabled[data-v-43b509b7]:focus{cursor:default;opacity:.5}.action--disabled *[data-v-43b509b7]{opacity:1 !important}.action-text-editable[data-v-43b509b7]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;cursor:pointer;white-space:nowrap;opacity:.7;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:normal;line-height:44px}.action-text-editable[data-v-43b509b7]:hover,.action-text-editable[data-v-43b509b7]:focus{opacity:1}.action-text-editable>span[data-v-43b509b7]{cursor:pointer;white-space:nowrap}.action-text-editable__icon[data-v-43b509b7]{min-width:0;min-height:0;padding:22px 0 22px 44px;background-position:14px center;background-size:16px}.action-text-editable__form[data-v-43b509b7]{display:flex;flex:1 1 auto;flex-direction:column;position:relative;margin:4px 0;padding-right:14px}.action-text-editable__submit[data-v-43b509b7]{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}.action-text-editable__label[data-v-43b509b7]{display:flex;align-items:center;justify-content:center;position:absolute;right:15px;bottom:1px;width:36px;height:36px;margin:0;padding:7px 6px;cursor:pointer;opacity:1;color:var(--color-text-lighter);border:0;border-radius:50%;background-color:var(--color-main-background);background-clip:padding-box;font-size:16px}.action-text-editable__label[data-v-43b509b7]:before{font-family:\"iconfont-vue\";font-style:normal;font-weight:400;content:\"\"}.action-text-editable__textarea[data-v-43b509b7]{flex:1 1 auto;min-height:80px;max-height:124px;min-width:176px;width:100% !important;margin:0}.action-text-editable__textarea[data-v-43b509b7]:disabled{cursor:default}.action-text-editable__textarea:not(:active):not(:hover):not(:focus):invalid+.action-text-editable__label[data-v-43b509b7]{background-color:var(--color-error)}.action-text-editable__textarea:not(:active):not(:hover):not(:focus):not(:disabled)+.action-text-editable__label[data-v-43b509b7]:active,.action-text-editable__textarea:not(:active):not(:hover):not(:focus):not(:disabled)+.action-text-editable__label[data-v-43b509b7]:hover,.action-text-editable__textarea:not(:active):not(:hover):not(:focus):not(:disabled)+.action-text-editable__label[data-v-43b509b7]:focus{background-color:var(--color-primary-element);color:var(--color-primary-text)}.action-text-editable__textarea:active:not(:disabled)+.action-text-editable__label[data-v-43b509b7],.action-text-editable__textarea:hover:not(:disabled)+.action-text-editable__label[data-v-43b509b7],.action-text-editable__textarea:focus:not(:disabled)+.action-text-editable__label[data-v-43b509b7]{z-index:2;border-color:var(--color-primary-element);border-left-color:transparent}li:last-child>.action-text-editable[data-v-43b509b7]{margin-bottom:10px}li:first-child>.action-text-editable[data-v-43b509b7]{margin-top:10px}\\n',\"\"])},function(t,e,n){\"use strict\";var i=n(53);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,\"#app-content[data-v-0fe2f738]{z-index:1000;background-color:var(--color-main-background);position:relative;flex-basis:100vw;min-height:100%;transition:transform var(--animation-quick)}\\n\",\"\"])},function(t,e,n){\"use strict\";var i=n(54);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,\"#app-navigation{will-change:transform;transition:transform var(--animation-quick)}@media only screen and (max-width: 768px){.nav-open #app-navigation{transform:translateX(0)}}\\n\",\"\"])},function(t,e,n){\"use strict\";var i=n(55);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,\".app-navigation-caption--item[data-v-9639e4a4]{font-weight:bold;color:var(--color-text-maxcontrast);line-height:44px;padding-left:44px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:0.7;box-shadow:none !important;pointer-events:none}.app-navigation-caption--item[data-v-9639e4a4]:not(:first-child){margin-top:22px}\\n\",\"\"])},function(t,e,n){\"use strict\";var i=n(56);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,\"#app-settings-content[data-v-7f13ea43]{display:block;padding:10px;background-color:var(--color-main-background);max-height:300px;overflow-y:auto;box-sizing:border-box}.slide-up-leave-active[data-v-7f13ea43],.slide-up-enter-active[data-v-7f13ea43]{transition-duration:var(--animation-slow);transition-property:max-height, padding;overflow-y:hidden !important}.slide-up-enter[data-v-7f13ea43],.slide-up-leave-to[data-v-7f13ea43]{max-height:0 !important;padding:0 10px !important}\\n\",\"\"])},function(t,e,n){\"use strict\";var i=n(57);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,\"\\n.app-navigation-spacer[data-v-18241e10] {\\n\\theight: 22px;\\n}\\n\",\"\"])},function(t,e,n){\"use strict\";var i=n(58);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,\"#app-sidebar[data-v-625289d6]{z-index:1500;height:calc(100vh - 50px);width:27vw;min-width:300px;max-width:500px;top:50px;right:0;display:flex;flex-shrink:0;flex-direction:column;position:-webkit-sticky;position:sticky;overflow-y:auto;overflow-x:hidden;background:var(--color-main-background);border-left:1px solid var(--color-border)}#app-sidebar .app-sidebar-header>.icon-close[data-v-625289d6]{position:absolute;width:44px;height:44px;top:0;right:0;z-index:100;opacity:.7;border-radius:22px}#app-sidebar .app-sidebar-header>.icon-close[data-v-625289d6]:hover,#app-sidebar .app-sidebar-header>.icon-close[data-v-625289d6]:active,#app-sidebar .app-sidebar-header>.icon-close[data-v-625289d6]:focus{opacity:1;background-color:rgba(127,127,127,0.25)}#app-sidebar .app-sidebar-header__figure[data-v-625289d6]{max-height:250px;height:250px;width:100%;background-size:contain;background-position:center;background-repeat:no-repeat}#app-sidebar .app-sidebar-header__figure--with-action[data-v-625289d6]{cursor:pointer}#app-sidebar .app-sidebar-header__desc[data-v-625289d6]{position:relative;padding:18px 88px 18px 9px;display:flex;height:23px;flex-direction:column;justify-content:center;box-sizing:content-box}#app-sidebar .app-sidebar-header__desc--with-star[data-v-625289d6]{padding-left:44px}#app-sidebar .app-sidebar-header__desc--with-subtitle[data-v-625289d6]{justify-content:space-between;height:46px}#app-sidebar .app-sidebar-header__desc h3[data-v-625289d6],#app-sidebar .app-sidebar-header__desc h4[data-v-625289d6]{width:100%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;margin:0}#app-sidebar .app-sidebar-header__desc h3[data-v-625289d6]{font-size:16px;padding:0}#app-sidebar .app-sidebar-header__desc h4[data-v-625289d6]{font-size:14px;padding:0;opacity:.7}#app-sidebar .app-sidebar-header__desc .app-sidebar-header__star[data-v-625289d6]{display:block;width:44px;height:44px;padding:14px;position:absolute;top:6px;left:0}#app-sidebar .app-sidebar-header__desc .app-sidebar-header__menu[data-v-625289d6]{position:absolute;right:22px;top:50%;margin-top:-22px;background-color:rgba(127,127,127,0.25);border-radius:22px}#app-sidebar .app-sidebar-header__action[data-v-625289d6]{display:flex;margin:10px;max-height:50px;align-items:center}#app-sidebar .app-sidebar-header--compact[data-v-625289d6]{padding-left:40px}#app-sidebar .app-sidebar-header--compact .app-sidebar-header__figure[data-v-625289d6]{height:64px;width:64px;margin:9px;border-radius:3px;position:absolute;left:0;top:0;z-index:2}#app-sidebar .app-sidebar-header--compact .app-sidebar-header__desc[data-v-625289d6]{padding-left:44px;height:46px}#app-sidebar .app-sidebar-header--compact .app-sidebar-header__desc .app-sidebar-header__star[data-v-625289d6]{margin-top:-9px;z-index:3}#app-sidebar .app-sidebar-header--compact .app-sidebar-header__desc .app-sidebar-header__menu[data-v-625289d6]{right:44px;top:0;margin:0;background-color:transparent}#app-sidebar .app-sidebar-tabs__nav[data-v-625289d6]{margin-top:10px}#app-sidebar .app-sidebar-tabs__nav ul[data-v-625289d6]{display:flex;justify-content:stretch}#app-sidebar .app-sidebar-tabs__tab[data-v-625289d6]{display:block;text-align:center;flex:1 1}#app-sidebar .app-sidebar-tabs__tab a[data-v-625289d6]{display:block;padding-top:25px;padding-bottom:5px;position:relative;border-bottom:1px solid var(--color-border);text-align:center;opacity:.7;color:var(--color-main-text);transition:color var(--animation-quick),opacity var(--animation-quick),border-color var(--animation-quick)}#app-sidebar .app-sidebar-tabs__tab a[data-v-625289d6]:hover,#app-sidebar .app-sidebar-tabs__tab a[data-v-625289d6]:focus,#app-sidebar .app-sidebar-tabs__tab a[data-v-625289d6]:active,#app-sidebar .app-sidebar-tabs__tab a.active[data-v-625289d6]{opacity:1}#app-sidebar .app-sidebar-tabs__tab a:hover .app-sidebar-tabs__tab-icon[data-v-625289d6],#app-sidebar .app-sidebar-tabs__tab a:focus .app-sidebar-tabs__tab-icon[data-v-625289d6],#app-sidebar .app-sidebar-tabs__tab a:active .app-sidebar-tabs__tab-icon[data-v-625289d6],#app-sidebar .app-sidebar-tabs__tab a.active .app-sidebar-tabs__tab-icon[data-v-625289d6]{opacity:1}#app-sidebar .app-sidebar-tabs__tab a[data-v-625289d6]:not(.active):hover,#app-sidebar .app-sidebar-tabs__tab a[data-v-625289d6]:not(.active):focus{box-shadow:inset 0 -1px 0 var(--color-background-darker);border-bottom-color:var(--color-background-darker)}#app-sidebar .app-sidebar-tabs__tab a.active[data-v-625289d6]{font-weight:bold;color:var(--color-text-light);border-bottom-color:var(--color-text-light);box-shadow:inset 0 -1px 0 var(--color-text-light)}#app-sidebar .app-sidebar-tabs__tab a[data-v-625289d6]:focus{border-bottom-color:var(--color-primary-element);box-shadow:inset 0 -1px 0 var(--color-primary-element)}#app-sidebar .app-sidebar-tabs__tab-icon[data-v-625289d6]{height:25px;width:100%;position:absolute;top:0;left:0;opacity:.7;background-position:center 8px;background-size:16px;transition:opacity var(--animation-quick)}#app-sidebar .app-sidebar-tabs__content[data-v-625289d6]{position:relative;flex:1 1 100%}#app-sidebar .app-sidebar-tabs__content--multiple[data-v-625289d6]>:not(section){display:none}.slide-right-leave-active[data-v-625289d6],.slide-right-enter-active[data-v-625289d6]{transition-duration:var(--animation-quick);transition-property:max-width, min-width}.slide-right-enter-to[data-v-625289d6],.slide-right-leave[data-v-625289d6]{min-width:300px;max-width:500px}.slide-right-enter[data-v-625289d6],.slide-right-leave-to[data-v-625289d6]{min-width:0 !important;max-width:0 !important}.fade-leave-active[data-v-625289d6],.fade-enter-active[data-v-625289d6]{transition-duration:var(--animation-quick);transition-property:opacity;position:absolute;top:0;left:0;width:100%;opacity:1}.fade-enter[data-v-625289d6],.fade-leave-to[data-v-625289d6]{opacity:0}\\n\",\"\"])},function(t,e,n){\"use strict\";var i=n(59);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,\".app-sidebar-header__action button,.app-sidebar-header__action .button,.app-sidebar-header__action input[type='button'],.app-sidebar-header__action input[type='submit'],.app-sidebar-header__action input[type='reset']{padding:6px 22px}\\n\",\"\"])},function(t,e,n){\"use strict\";var i=n(60);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,\"section[data-v-3f1c0b76]{padding:10px;min-height:100%}section[data-v-3f1c0b76]:focus{border-color:var(--color-primary);box-shadow:0 0 0.2em var(--color-primary);outline:0}\\n\",\"\"])},function(t,e,n){\"use strict\";var i=n(61);n.n(i).a},function(t,e,n){e=t.exports=n(1)(!1);var i=n(8),o=i(n(9)),a=i(n(10)),r=i(n(11)),s=i(n(12));e.push([t.i,'@font-face{font-family:\"iconfont-vue\";src:url('+o+\");src:url(\"+o+') format(\"embedded-opentype\"),url('+a+') format(\"woff\"),url('+r+') format(\"truetype\"),url('+s+') format(\"svg\")}.icon[data-v-9c792ef2]{font-style:normal;font-weight:400}.icon.arrow-left-double[data-v-9c792ef2]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.arrow-left[data-v-9c792ef2]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.arrow-right-double[data-v-9c792ef2]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.arrow-right[data-v-9c792ef2]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.close[data-v-9c792ef2]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.confirm-fade[data-v-9c792ef2]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.confirm[data-v-9c792ef2]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.menu[data-v-9c792ef2]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.more[data-v-9c792ef2]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.pause[data-v-9c792ef2]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.play[data-v-9c792ef2]:before{font-family:\"iconfont-vue\";content:\"\"}.modal-mask[data-v-9c792ef2]{position:fixed;z-index:9998;top:0;left:0;display:block;width:100%;height:100%;background-color:rgba(0,0,0,0.92)}.modal-header[data-v-9c792ef2]{position:absolute;z-index:10001;top:0;right:0;left:0;display:flex !important;align-items:center;justify-content:center;width:100%;height:50px;transition:opacity 250ms, visibility 250ms}.modal-header.invisible[style*=\\'display:none\\'][data-v-9c792ef2],.modal-header.invisible[style*=\\'display: none\\'][data-v-9c792ef2]{visibility:hidden}.modal-header .modal-title[data-v-9c792ef2]{overflow-x:hidden;box-sizing:border-box;max-width:100%;padding:0 88px;transition:padding ease 100ms;white-space:nowrap;text-overflow:ellipsis;color:#fff;font-size:14px}.modal-header .icons-menu[data-v-9c792ef2]{position:absolute;right:0;display:flex;align-items:center;justify-content:flex-end}.modal-header .icons-menu .icon-close[data-v-9c792ef2]{box-sizing:border-box;margin:3px;padding:10px 11px;color:#fff;background-image:none;font-size:23px}.modal-header .icons-menu .icon-close[data-v-9c792ef2]:before{font-family:\"iconfont-vue\";font-style:normal;font-weight:400;content:\"\"}.modal-header .icons-menu .play-pause[data-v-9c792ef2]{position:relative;width:50px;height:50px;margin:0;padding:0;cursor:pointer;color:white;border:none;background-color:transparent;font-size:22px}.modal-header .icons-menu .play-pause:hover .icon-play[data-v-9c792ef2],.modal-header .icons-menu .play-pause:hover .icon-pause[data-v-9c792ef2],.modal-header .icons-menu .play-pause:focus .icon-play[data-v-9c792ef2],.modal-header .icons-menu .play-pause:focus .icon-pause[data-v-9c792ef2]{opacity:1;border-radius:22px;background-color:rgba(127,127,127,0.25)}.modal-header .icons-menu .play-pause .icon-play[data-v-9c792ef2],.modal-header .icons-menu .play-pause .icon-pause[data-v-9c792ef2]{box-sizing:border-box;width:44px;height:44px;margin:3px;opacity:.7;background-image:none;cursor:pointer}.modal-header .icons-menu .play-pause .icon-play[data-v-9c792ef2]{padding:11px 13px}.modal-header .icons-menu .play-pause .icon-play[data-v-9c792ef2]:before{font-family:\"iconfont-vue\";font-style:normal;font-weight:400;content:\"\"}.modal-header .icons-menu .play-pause .icon-pause[data-v-9c792ef2]{padding:12px;font-size:19.5px}.modal-header .icons-menu .play-pause .icon-pause[data-v-9c792ef2]:before{font-family:\"iconfont-vue\";font-style:normal;font-weight:400;content:\"\"}.modal-header .icons-menu .header-actions[data-v-9c792ef2]{margin:3px;color:white}.modal-header .icons-menu .action-item--single[data-v-9c792ef2]{box-sizing:border-box;width:44px;height:44px;cursor:pointer;background-position:center;background-size:22px}.modal-header .icons-menu[data-v-9c792ef2] .action-item__menutoggle{padding:13px 11px;color:#fff;font-size:22px}.modal-wrapper[data-v-9c792ef2]{display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:100%;height:100%}.modal-wrapper .prev[data-v-9c792ef2],.modal-wrapper .next[data-v-9c792ef2]{z-index:10000;display:flex !important;align-items:center;justify-content:center;width:15%;min-width:60px;height:100%;transition:opacity 250ms, visibility 250ms}.modal-wrapper .prev.invisible[style*=\\'display:none\\'][data-v-9c792ef2],.modal-wrapper .prev.invisible[style*=\\'display: none\\'][data-v-9c792ef2],.modal-wrapper .next.invisible[style*=\\'display:none\\'][data-v-9c792ef2],.modal-wrapper .next.invisible[style*=\\'display: none\\'][data-v-9c792ef2]{visibility:hidden}.modal-wrapper .icon-next[data-v-9c792ef2],.modal-wrapper .icon-previous[data-v-9c792ef2]{box-sizing:border-box;width:44px;height:44px;padding:12px 11px;color:white;border-radius:22px;background-image:none;font-size:24px}.modal-wrapper .icon-previous[data-v-9c792ef2]:before{font-family:\"iconfont-vue\";font-style:normal;font-weight:400;content:\"\"}.modal-wrapper .icon-next[data-v-9c792ef2]:before{font-family:\"iconfont-vue\";font-style:normal;font-weight:400;content:\"\"}.modal-wrapper .modal-container[data-v-9c792ef2]{display:block;overflow:hidden;padding:0;transition:transform 300ms ease;border-radius:var(--border-radius-large);background-color:var(--color-main-background);box-shadow:0 2px 8px rgba(0,0,0,0.33)}.modal-wrapper:not(.modal-wrapper--large):not(.modal-wrapper--full) .modal-container[data-v-9c792ef2]{max-width:900px;max-height:80%}.modal-wrapper--full .modal-container[data-v-9c792ef2]{max-width:100%;max-height:100%;border-radius:0}.modal-wrapper--full .prev[data-v-9c792ef2],.modal-wrapper--full .next[data-v-9c792ef2],.modal-wrapper--spread-navigation .prev[data-v-9c792ef2],.modal-wrapper--spread-navigation .next[data-v-9c792ef2]{position:absolute;width:10%}.modal-wrapper--full .prev[data-v-9c792ef2],.modal-wrapper--spread-navigation .prev[data-v-9c792ef2]{left:0}.modal-wrapper--full .next[data-v-9c792ef2],.modal-wrapper--spread-navigation .next[data-v-9c792ef2]{right:0}.modal-wrapper--large .modal-container[data-v-9c792ef2]{max-width:70%;max-height:90%}.modal-wrapper--large .prev[data-v-9c792ef2],.modal-wrapper--large .next[data-v-9c792ef2]{width:10%}.fade-enter-active[data-v-9c792ef2],.fade-leave-active[data-v-9c792ef2]{transition:opacity 250ms}.fade-enter[data-v-9c792ef2],.fade-leave-to[data-v-9c792ef2]{opacity:0}.fade-visibility-enter[data-v-9c792ef2],.fade-visibility-leave-to[data-v-9c792ef2]{visibility:hidden;opacity:0}.modal-in-enter-active[data-v-9c792ef2],.modal-in-leave-active[data-v-9c792ef2],.modal-out-enter-active[data-v-9c792ef2],.modal-out-leave-active[data-v-9c792ef2]{transition:opacity 250ms}.modal-in-enter[data-v-9c792ef2],.modal-in-leave-to[data-v-9c792ef2],.modal-out-enter[data-v-9c792ef2],.modal-out-leave-to[data-v-9c792ef2]{opacity:0}.modal-in-enter .modal-container[data-v-9c792ef2],.modal-in-leave-to .modal-container[data-v-9c792ef2]{transform:scale(0.9)}.modal-out-enter .modal-container[data-v-9c792ef2],.modal-out-leave-to .modal-container[data-v-9c792ef2]{transform:scale(1.1)}.modal-mask .play-pause .progress-ring[data-v-9c792ef2]{position:absolute;top:0;left:0;transform:rotate(-90deg)}.modal-mask .play-pause .progress-ring .progress-ring__circle[data-v-9c792ef2]{transition:100ms stroke-dashoffset;transform-origin:50% 50%;animation:progressring-data-v-9c792ef2 linear 3s infinite;stroke-linecap:round;stroke-dashoffset:94.24778;stroke-dasharray:94.24778}.modal-mask .play-pause--paused .icon-pause[data-v-9c792ef2]{animation:breath-data-v-9c792ef2 2s cubic-bezier(0.4, 0, 0.2, 1) infinite}.modal-mask .play-pause--paused .progress-ring__circle[data-v-9c792ef2]{animation-play-state:paused !important}@keyframes progressring-data-v-9c792ef2{from{stroke-dashoffset:94.24778}to{stroke-dashoffset:0}}@keyframes breath-data-v-9c792ef2{0%{opacity:1}50%{opacity:0}100%{opacity:1}}\\n',\"\"])},function(t,e,n){\"use strict\";var i=n(62);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,\".option[data-v-30d8da34]{display:flex;align-items:center;width:100%;height:32px}.option__avatar[data-v-30d8da34]{flex:0 0 32px;width:32px;height:32px;margin-right:6px}.option__desc[data-v-30d8da34]{display:flex;flex:1 1;flex-direction:column;justify-content:center;min-width:0}.option__desc--lineone[data-v-30d8da34]{color:var(--color-text-light)}.option__desc--linetwo[data-v-30d8da34]{opacity:.7}.option__desc--lineone[data-v-30d8da34],.option__desc--linetwo[data-v-30d8da34]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.option__desc--lineone strong[data-v-30d8da34],.option__desc--linetwo strong[data-v-30d8da34]{font-weight:bold}.option__icon[data-v-30d8da34]{flex:0 0 44px;width:44px;height:44px;margin:-6px;opacity:.5;background-position:center;background-size:16px}\\n\",\"\"])},function(t,e,n){\"use strict\";var i=n(63);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,\".name-parts[data-v-c4325954]{display:flex;max-width:100%}.name-parts__first[data-v-c4325954]{overflow:hidden;text-overflow:ellipsis}.name-parts__first[data-v-c4325954],.name-parts__last[data-v-c4325954]{white-space:pre}.name-parts__first strong[data-v-c4325954],.name-parts__last strong[data-v-c4325954]{font-weight:bold}\\n\",\"\"])},function(t,e,n){var i=n(180);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"b5985a26\",i,!0,{})},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,\".multiselect[data-v-6673a70]{margin:0;padding:0 !important;display:inline-block;min-width:160px;position:relative;background-color:var(--color-main-background)}.multiselect[data-v-6673a70].multiselect--active input.multiselect__input{opacity:1 !important;cursor:text !important;border-radius:var(--border-radius) var(--border-radius) 0 0}.multiselect[data-v-6673a70].multiselect--active .multiselect__limit{display:none}.multiselect[data-v-6673a70].multiselect--active.multiselect--above input.multiselect__input{border-radius:0 0 var(--border-radius) var(--border-radius)}.multiselect[data-v-6673a70].multiselect--disabled,.multiselect[data-v-6673a70].multiselect--disabled .multiselect__single{background-color:var(--color-background-dark) !important}.multiselect[data-v-6673a70].icon-loading-small::after{left:100%;margin-left:-24px}.multiselect[data-v-6673a70] .multiselect__tags{display:flex;flex-wrap:nowrap;overflow:hidden;border:1px solid var(--color-border-dark);cursor:pointer;position:relative;border-radius:3px;height:34px}.multiselect[data-v-6673a70] .multiselect__tags .multiselect__tags-wrap{align-items:center;display:inline-flex;overflow:hidden;max-width:100%;position:relative;padding:3px 5px;flex-grow:1}.multiselect[data-v-6673a70] .multiselect__tags .multiselect__tags-wrap:empty ~ input.multiselect__input{opacity:1 !important}.multiselect[data-v-6673a70] .multiselect__tags .multiselect__tags-wrap:empty ~ input.multiselect__input+span:not(.multiselect__single){display:none}.multiselect[data-v-6673a70] .multiselect__tags .multiselect__tags-wrap .multiselect__tag{flex:1 0 0;line-height:20px;padding:1px 5px;background-image:none;color:var(--color-text-lighter);border:1px solid var(--color-border-dark);display:inline-flex;align-items:center;border-radius:3px;min-width:0;max-width:50%;max-width:fit-content;max-width:-moz-fit-content}.multiselect[data-v-6673a70] .multiselect__tags .multiselect__tags-wrap .multiselect__tag:only-child{flex:0 1 auto}.multiselect[data-v-6673a70] .multiselect__tags .multiselect__tags-wrap .multiselect__tag:not(:last-child){margin-right:5px}.multiselect[data-v-6673a70] .multiselect__tags .multiselect__tags-wrap .multiselect__tag>span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.multiselect[data-v-6673a70] .multiselect__tags .multiselect__single,.multiselect[data-v-6673a70] .multiselect__tags .multiselect__placeholder{padding:7px 6px;flex:0 0 100%;z-index:1;background-color:var(--color-main-background);cursor:pointer;line-height:18px;color:var(--color-text-lighter)}.multiselect[data-v-6673a70] .multiselect__tags .multiselect__strong,.multiselect[data-v-6673a70] .multiselect__tags .multiselect__limit{flex:0 0 auto;line-height:20px;color:var(--color-text-lighter);display:inline-flex;align-items:center;opacity:.7;margin-right:5px;z-index:5}.multiselect[data-v-6673a70] .multiselect__tags input.multiselect__input{width:100% !important;position:absolute !important;top:0;left:0;margin:0;opacity:0;height:100%;border:none;display:block !important;cursor:pointer;padding:7px 6px !important}.multiselect[data-v-6673a70] .multiselect__content-wrapper{position:absolute;width:100%;margin-top:-1px;border:1px solid var(--color-border-dark);background:var(--color-main-background);z-index:50;max-height:250px;overflow-y:auto;border-radius:0 0 var(--border-radius) var(--border-radius)}.multiselect[data-v-6673a70] .multiselect__content-wrapper .multiselect__content{width:100%;padding:0}.multiselect[data-v-6673a70] .multiselect__content-wrapper li{position:relative;display:flex;align-items:center;background-color:transparent}.multiselect[data-v-6673a70] .multiselect__content-wrapper li,.multiselect[data-v-6673a70] .multiselect__content-wrapper li span{cursor:pointer}.multiselect[data-v-6673a70] .multiselect__content-wrapper li>span{padding:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:0;height:auto;min-height:1em;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:inline-flex;align-items:center;background-color:transparent;color:var(--color-text-lighter);width:100%}.multiselect[data-v-6673a70] .multiselect__content-wrapper li>span::before{content:' ';background-repeat:no-repeat;background-position:center;min-width:16px;min-height:16px;display:block;opacity:.5;margin-right:5px;visibility:hidden}.multiselect[data-v-6673a70] .multiselect__content-wrapper li>span.multiselect__option--disabled{background-color:var(--color-background-dark);opacity:.5}.multiselect[data-v-6673a70] .multiselect__content-wrapper li>span.multiselect__option--highlight{color:var(--color-main-text);background-color:var(--color-background-dark)}.multiselect[data-v-6673a70] .multiselect__content-wrapper li>span:not(.multiselect__option--disabled):hover::before{opacity:.3}.multiselect[data-v-6673a70] .multiselect__content-wrapper li>span.multiselect__option--selected::before,.multiselect[data-v-6673a70] .multiselect__content-wrapper li>span:not(.multiselect__option--disabled):hover::before{visibility:visible}.multiselect[data-v-6673a70].multiselect--above .multiselect__content-wrapper{bottom:100%;margin-bottom:-1px}.multiselect[data-v-6673a70].multiselect--multiple .multiselect__content-wrapper li>span::before{background-image:var(--icon-checkmark-000)}.multiselect[data-v-6673a70].multiselect--multiple .multiselect__content-wrapper li>span[data-select='create']::before{background-image:var(--icon-add-000);visibility:visible}.multiselect[data-v-6673a70].multiselect--single .multiselect__content-wrapper li>span::before{display:none}.multiselect[data-v-6673a70]:hover .multiselect__placeholder,.multiselect[data-v-6673a70] input.multiselect__input .multiselect__placeholder{color:var(--color-main-text)}\\n\",\"\"])},function(t,e){t.exports=function(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}},function(t,e,n){\"use strict\";n.r(e);var i={};n.r(i),n.d(i,\"ActionButton\",function(){return r.default}),n.d(i,\"ActionCheckbox\",function(){return s.default}),n.d(i,\"ActionInput\",function(){return c.default}),n.d(i,\"ActionLink\",function(){return l.default}),n.d(i,\"ActionRouter\",function(){return u.default}),n.d(i,\"ActionText\",function(){return d.default}),n.d(i,\"ActionTextEditable\",function(){return p.default}),n.d(i,\"Actions\",function(){return f.default}),n.d(i,\"AppContent\",function(){return h.default}),n.d(i,\"AppContentDetails\",function(){return A.default}),n.d(i,\"AppContentList\",function(){return v.default}),n.d(i,\"AppNavigation\",function(){return m.default}),n.d(i,\"AppNavigationCaption\",function(){return g.default}),n.d(i,\"AppNavigationCounter\",function(){return b.default}),n.d(i,\"AppNavigationItem\",function(){return y.default}),n.d(i,\"AppNavigationNew\",function(){return x.default}),n.d(i,\"AppNavigationSettings\",function(){return w.default}),n.d(i,\"AppNavigationSpacer\",function(){return _.default}),n.d(i,\"AppSidebar\",function(){return T.default}),n.d(i,\"AppSidebarTab\",function(){return k.default}),n.d(i,\"Avatar\",function(){return C.default}),n.d(i,\"Content\",function(){return E.default}),n.d(i,\"DatetimePicker\",function(){return M.default}),n.d(i,\"Modal\",function(){return S.default}),n.d(i,\"Multiselect\",function(){return D.default}),n.d(i,\"PopoverMenu\",function(){return O.default});var o=n(181),a=n.n(o),r=n(65),s=n(127),c=n(128),l=n(129),u=n(130),d=n(131),p=n(132),f=n(30),h=n(133),A=n(134),v=n(135),m=n(136),g=n(137),b=n(67),y=n(138),x=n(139),w=n(140),_=n(141),T=n(142),k=n(143),C=n(64),E=n(144),M=n(66),S=n(126),D=n(125),O=n(24),B=n(6),I=n(123),N=n(124);function L(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,i)}return n}\n/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nfunction P(t){Object.values(i).forEach(function(e){t.component(e.name,e)})}\n/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */n.d(e,\"ActionButton\",function(){return r.default}),n.d(e,\"ActionCheckbox\",function(){return s.default}),n.d(e,\"ActionInput\",function(){return c.default}),n.d(e,\"ActionLink\",function(){return l.default}),n.d(e,\"ActionRouter\",function(){return u.default}),n.d(e,\"ActionText\",function(){return d.default}),n.d(e,\"ActionTextEditable\",function(){return p.default}),n.d(e,\"Actions\",function(){return f.default}),n.d(e,\"AppContent\",function(){return h.default}),n.d(e,\"AppContentDetails\",function(){return A.default}),n.d(e,\"AppContentList\",function(){return v.default}),n.d(e,\"AppNavigation\",function(){return m.default}),n.d(e,\"AppNavigationCaption\",function(){return g.default}),n.d(e,\"AppNavigationCounter\",function(){return b.default}),n.d(e,\"AppNavigationItem\",function(){return y.default}),n.d(e,\"AppNavigationNew\",function(){return x.default}),n.d(e,\"AppNavigationSettings\",function(){return w.default}),n.d(e,\"AppNavigationSpacer\",function(){return _.default}),n.d(e,\"AppSidebar\",function(){return T.default}),n.d(e,\"AppSidebarTab\",function(){return k.default}),n.d(e,\"Avatar\",function(){return C.default}),n.d(e,\"Content\",function(){return E.default}),n.d(e,\"DatetimePicker\",function(){return M.default}),n.d(e,\"Modal\",function(){return S.default}),n.d(e,\"Multiselect\",function(){return D.default}),n.d(e,\"PopoverMenu\",function(){return O.default}),n.d(e,\"Tooltip\",function(){return B.default}),n.d(e,\"isFullscreen\",function(){return I.default}),n.d(e,\"isMobile\",function(){return N.default}),\"undefined\"!=typeof window&&window.Vue&&P(window.Vue);e.default=function(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?L(n,!0).forEach(function(e){a()(t,e,n[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):L(n).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}({install:P},i)}])});\n//# sourceMappingURL=ncvuecomponents.js.map","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (useSourceMap) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item, useSourceMap);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \"{\").concat(content, \"}\");\n }\n\n return content;\n }).join('');\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery) {\n if (typeof modules === 'string') {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, '']];\n }\n\n var alreadyImportedModules = {};\n\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = modules[_i]; // skip already imported module\n // this implementation is not 100% perfect for weird media query combinations\n // when a module is imported multiple times with different media queries.\n // I hope this will never occur (Hey this way we have smaller bundles)\n\n if (item[0] == null || !alreadyImportedModules[item[0]]) {\n if (mediaQuery && !item[2]) {\n item[2] = mediaQuery;\n } else if (mediaQuery) {\n item[2] = \"(\".concat(item[2], \") and (\").concat(mediaQuery, \")\");\n }\n\n list.push(item);\n }\n }\n };\n\n return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring\n\n var cssMapping = item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (useSourceMap && typeof btoa === 'function') {\n var sourceMapping = toComment(cssMapping);\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot).concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n }\n\n return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n return \"/*# \".concat(data, \" */\");\n}","\"use strict\";\n\nvar stylesInDom = {};\n\nvar isOldIE = function isOldIE() {\n var memo;\n return function memorize() {\n if (typeof memo === 'undefined') {\n // Test for IE <= 9 as proposed by Browserhacks\n // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n // Tests for existence of standard globals is to allow style-loader\n // to operate correctly into non-standard environments\n // @see https://github.com/webpack-contrib/style-loader/issues/177\n memo = Boolean(window && document && document.all && !window.atob);\n }\n\n return memo;\n };\n}();\n\nvar getTarget = function getTarget() {\n var memo = {};\n return function memorize(target) {\n if (typeof memo[target] === 'undefined') {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n };\n}();\n\nfunction listToStyles(list, options) {\n var styles = [];\n var newStyles = {};\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var css = item[1];\n var media = item[2];\n var sourceMap = item[3];\n var part = {\n css: css,\n media: media,\n sourceMap: sourceMap\n };\n\n if (!newStyles[id]) {\n styles.push(newStyles[id] = {\n id: id,\n parts: [part]\n });\n } else {\n newStyles[id].parts.push(part);\n }\n }\n\n return styles;\n}\n\nfunction addStylesToDom(styles, options) {\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i];\n var domStyle = stylesInDom[item.id];\n var j = 0;\n\n if (domStyle) {\n domStyle.refs++;\n\n for (; j < domStyle.parts.length; j++) {\n domStyle.parts[j](item.parts[j]);\n }\n\n for (; j < item.parts.length; j++) {\n domStyle.parts.push(addStyle(item.parts[j], options));\n }\n } else {\n var parts = [];\n\n for (; j < item.parts.length; j++) {\n parts.push(addStyle(item.parts[j], options));\n }\n\n stylesInDom[item.id] = {\n id: item.id,\n refs: 1,\n parts: parts\n };\n }\n }\n}\n\nfunction insertStyleElement(options) {\n var style = document.createElement('style');\n\n if (typeof options.attributes.nonce === 'undefined') {\n var nonce = typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n\n if (nonce) {\n options.attributes.nonce = nonce;\n }\n }\n\n Object.keys(options.attributes).forEach(function (key) {\n style.setAttribute(key, options.attributes[key]);\n });\n\n if (typeof options.insert === 'function') {\n options.insert(style);\n } else {\n var target = getTarget(options.insert || 'head');\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n }\n\n return style;\n}\n\nfunction removeStyleElement(style) {\n // istanbul ignore if\n if (style.parentNode === null) {\n return false;\n }\n\n style.parentNode.removeChild(style);\n}\n/* istanbul ignore next */\n\n\nvar replaceText = function replaceText() {\n var textStore = [];\n return function replace(index, replacement) {\n textStore[index] = replacement;\n return textStore.filter(Boolean).join('\\n');\n };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n var css = remove ? '' : obj.css; // For old IE\n\n /* istanbul ignore if */\n\n if (style.styleSheet) {\n style.styleSheet.cssText = replaceText(index, css);\n } else {\n var cssNode = document.createTextNode(css);\n var childNodes = style.childNodes;\n\n if (childNodes[index]) {\n style.removeChild(childNodes[index]);\n }\n\n if (childNodes.length) {\n style.insertBefore(cssNode, childNodes[index]);\n } else {\n style.appendChild(cssNode);\n }\n }\n}\n\nfunction applyToTag(style, options, obj) {\n var css = obj.css;\n var media = obj.media;\n var sourceMap = obj.sourceMap;\n\n if (media) {\n style.setAttribute('media', media);\n }\n\n if (sourceMap && btoa) {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n while (style.firstChild) {\n style.removeChild(style.firstChild);\n }\n\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n var style;\n var update;\n var remove;\n\n if (options.singleton) {\n var styleIndex = singletonCounter++;\n style = singleton || (singleton = insertStyleElement(options));\n update = applyToSingletonTag.bind(null, style, styleIndex, false);\n remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n } else {\n style = insertStyleElement(options);\n update = applyToTag.bind(null, style, options);\n\n remove = function remove() {\n removeStyleElement(style);\n };\n }\n\n update(obj);\n return function updateStyle(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n return;\n }\n\n update(obj = newObj);\n } else {\n remove();\n }\n };\n}\n\nmodule.exports = function (list, options) {\n options = options || {};\n options.attributes = typeof options.attributes === 'object' ? options.attributes : {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n // tags it will allow on a page\n\n if (!options.singleton && typeof options.singleton !== 'boolean') {\n options.singleton = isOldIE();\n }\n\n var styles = listToStyles(list, options);\n addStylesToDom(styles, options);\n return function update(newList) {\n var mayRemove = [];\n\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i];\n var domStyle = stylesInDom[item.id];\n\n if (domStyle) {\n domStyle.refs--;\n mayRemove.push(domStyle);\n }\n }\n\n if (newList) {\n var newStyles = listToStyles(newList, options);\n addStylesToDom(newStyles, options);\n }\n\n for (var _i = 0; _i < mayRemove.length; _i++) {\n var _domStyle = mayRemove[_i];\n\n if (_domStyle.refs === 0) {\n for (var j = 0; j < _domStyle.parts.length; j++) {\n _domStyle.parts[j]();\n }\n\n delete stylesInDom[_domStyle.id];\n }\n }\n };\n};","/**\n * @license\n * Lodash <https://lodash.com/>\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.15';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading and trailing whitespace. */\n var reTrim = /^\\s+|\\s+$/g,\n reTrimStart = /^\\s+/,\n reTrimEnd = /\\s+$/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n var index = -1;\n iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n value = iteratee(value);\n\n var low = 0,\n high = array == null ? 0 : array.length,\n valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '<p>' + func(text) + '</p>';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '<p>fred, barney, & pebbles</p>'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('<body>');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<b><%- value %></b>');\n * compiled({ 'value': '<script>' });\n * // => '<b><script></b>'\n *\n * // Use the \"evaluate\" delimiter to execute JavaScript and generate HTML.\n * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the internal `print` function in \"evaluate\" delimiters.\n * var compiled = _.template('<% print(\"hello \" + user); %>!');\n * compiled({ 'user': 'barney' });\n * // => 'hello barney!'\n *\n * // Use the ES template literal delimiter as an \"interpolate\" delimiter.\n * // Disable support by replacing the \"interpolate\" delimiter.\n * var compiled = _.template('hello ${ user }!');\n * compiled({ 'user': 'pebbles' });\n * // => 'hello pebbles!'\n *\n * // Use backslashes to treat delimiters as plain text.\n * var compiled = _.template('<%= \"\\\\<%- value %\\\\>\" %>');\n * compiled({ 'value': 'ignored' });\n * // => '<%- value %>'\n *\n * // Use the `imports` option to import `jQuery` as `jq`.\n * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';\n * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the `sourceURL` option to specify a custom sourceURL for the template.\n * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });\n * compiled(data);\n * // => Find the source of \"greeting.jst\" under the Sources tab or Resources panel of the web inspector.\n *\n * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.\n * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });\n * compiled.source;\n * // => function(data) {\n * // var __t, __p = '';\n * // __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';\n * // return __p;\n * // }\n *\n * // Use custom template delimiters.\n * _.templateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\n * var compiled = _.template('hello {{ user }}!');\n * compiled({ 'user': 'mustache' });\n * // => 'hello mustache!'\n *\n * // Use the `source` property to inline compiled templates for meaningful\n * // line numbers in error messages and stack traces.\n * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\\\n * var JST = {\\\n * \"main\": ' + _.template(mainText).source + '\\\n * };\\\n * ');\n */\n function template(string, options, guard) {\n // Based on John Resig's `tmpl` implementation\n // (http://ejohn.org/blog/javascript-micro-templating/)\n // and Laura Doktorova's doT.js (https://github.com/olado/doT).\n var settings = lodash.templateSettings;\n\n if (guard && isIterateeCall(string, options, guard)) {\n options = undefined;\n }\n string = toString(string);\n options = assignInWith({}, options, settings, customDefaultsAssignIn);\n\n var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),\n importsKeys = keys(imports),\n importsValues = baseValues(imports, importsKeys);\n\n var isEscaping,\n isEvaluating,\n index = 0,\n interpolate = options.interpolate || reNoMatch,\n source = \"__p += '\";\n\n // Compile the regexp to match each delimiter.\n var reDelimiters = RegExp(\n (options.escape || reNoMatch).source + '|' +\n interpolate.source + '|' +\n (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +\n (options.evaluate || reNoMatch).source + '|$'\n , 'g');\n\n // Use a sourceURL for easier debugging.\n // The sourceURL gets injected into the source that's eval-ed, so be careful\n // with lookup (in case of e.g. prototype pollution), and strip newlines if any.\n // A newline wouldn't be a valid sourceURL anyway, and it'd enable code injection.\n var sourceURL = '//# sourceURL=' +\n (hasOwnProperty.call(options, 'sourceURL')\n ? (options.sourceURL + '').replace(/[\\r\\n]/g, ' ')\n : ('lodash.templateSources[' + (++templateCounter) + ']')\n ) + '\\n';\n\n string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {\n interpolateValue || (interpolateValue = esTemplateValue);\n\n // Escape characters that can't be included in string literals.\n source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);\n\n // Replace delimiters with snippets.\n if (escapeValue) {\n isEscaping = true;\n source += \"' +\\n__e(\" + escapeValue + \") +\\n'\";\n }\n if (evaluateValue) {\n isEvaluating = true;\n source += \"';\\n\" + evaluateValue + \";\\n__p += '\";\n }\n if (interpolateValue) {\n source += \"' +\\n((__t = (\" + interpolateValue + \")) == null ? '' : __t) +\\n'\";\n }\n index = offset + match.length;\n\n // The JS engine embedded in Adobe products needs `match` returned in\n // order to produce the correct `offset` value.\n return match;\n });\n\n source += \"';\\n\";\n\n // If `variable` is not specified wrap a with-statement around the generated\n // code to add the data object to the top of the scope chain.\n // Like with sourceURL, we take care to not check the option's prototype,\n // as this configuration is a code injection vector.\n var variable = hasOwnProperty.call(options, 'variable') && options.variable;\n if (!variable) {\n source = 'with (obj) {\\n' + source + '\\n}\\n';\n }\n // Cleanup code by stripping empty strings.\n source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)\n .replace(reEmptyStringMiddle, '$1')\n .replace(reEmptyStringTrailing, '$1;');\n\n // Frame code as the function body.\n source = 'function(' + (variable || 'obj') + ') {\\n' +\n (variable\n ? ''\n : 'obj || (obj = {});\\n'\n ) +\n \"var __t, __p = ''\" +\n (isEscaping\n ? ', __e = _.escape'\n : ''\n ) +\n (isEvaluating\n ? ', __j = Array.prototype.join;\\n' +\n \"function print() { __p += __j.call(arguments, '') }\\n\"\n : ';\\n'\n ) +\n source +\n 'return __p\\n}';\n\n var result = attempt(function() {\n return Function(importsKeys, sourceURL + 'return ' + source)\n .apply(undefined, importsValues);\n });\n\n // Provide the compiled function's source by its `toString` method or\n // the `source` property as a convenience for inlining compiled templates.\n result.source = source;\n if (isError(result)) {\n throw result;\n }\n return result;\n }\n\n /**\n * Converts `string`, as a whole, to lower case just like\n * [String#toLowerCase](https://mdn.io/toLowerCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.toLower('--Foo-Bar--');\n * // => '--foo-bar--'\n *\n * _.toLower('fooBar');\n * // => 'foobar'\n *\n * _.toLower('__FOO_BAR__');\n * // => '__foo_bar__'\n */\n function toLower(value) {\n return toString(value).toLowerCase();\n }\n\n /**\n * Converts `string`, as a whole, to upper case just like\n * [String#toUpperCase](https://mdn.io/toUpperCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.toUpper('--foo-bar--');\n * // => '--FOO-BAR--'\n *\n * _.toUpper('fooBar');\n * // => 'FOOBAR'\n *\n * _.toUpper('__foo_bar__');\n * // => '__FOO_BAR__'\n */\n function toUpper(value) {\n return toString(value).toUpperCase();\n }\n\n /**\n * Removes leading and trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trim(' abc ');\n * // => 'abc'\n *\n * _.trim('-_-abc-_-', '_-');\n * // => 'abc'\n *\n * _.map([' foo ', ' bar '], _.trim);\n * // => ['foo', 'bar']\n */\n function trim(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrim, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n chrSymbols = stringToArray(chars),\n start = charsStartIndex(strSymbols, chrSymbols),\n end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n return castSlice(strSymbols, start, end).join('');\n }\n\n /**\n * Removes trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimEnd(' abc ');\n * // => ' abc'\n *\n * _.trimEnd('-_-abc-_-', '_-');\n * // => '-_-abc'\n */\n function trimEnd(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrimEnd, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;\n\n return castSlice(strSymbols, 0, end).join('');\n }\n\n /**\n * Removes leading whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimStart(' abc ');\n * // => 'abc '\n *\n * _.trimStart('-_-abc-_-', '_-');\n * // => 'abc-_-'\n */\n function trimStart(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrimStart, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n start = charsStartIndex(strSymbols, stringToArray(chars));\n\n return castSlice(strSymbols, start).join('');\n }\n\n /**\n * Truncates `string` if it's longer than the given maximum string length.\n * The last characters of the truncated string are replaced with the omission\n * string which defaults to \"...\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to truncate.\n * @param {Object} [options={}] The options object.\n * @param {number} [options.length=30] The maximum string length.\n * @param {string} [options.omission='...'] The string to indicate text is omitted.\n * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n * @returns {string} Returns the truncated string.\n * @example\n *\n * _.truncate('hi-diddly-ho there, neighborino');\n * // => 'hi-diddly-ho there, neighbo...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': ' '\n * });\n * // => 'hi-diddly-ho there,...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': /,? +/\n * });\n * // => 'hi-diddly-ho there...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'omission': ' [...]'\n * });\n * // => 'hi-diddly-ho there, neig [...]'\n */\n function truncate(string, options) {\n var length = DEFAULT_TRUNC_LENGTH,\n omission = DEFAULT_TRUNC_OMISSION;\n\n if (isObject(options)) {\n var separator = 'separator' in options ? options.separator : separator;\n length = 'length' in options ? toInteger(options.length) : length;\n omission = 'omission' in options ? baseToString(options.omission) : omission;\n }\n string = toString(string);\n\n var strLength = string.length;\n if (hasUnicode(string)) {\n var strSymbols = stringToArray(string);\n strLength = strSymbols.length;\n }\n if (length >= strLength) {\n return string;\n }\n var end = length - stringSize(omission);\n if (end < 1) {\n return omission;\n }\n var result = strSymbols\n ? castSlice(strSymbols, 0, end).join('')\n : string.slice(0, end);\n\n if (separator === undefined) {\n return result + omission;\n }\n if (strSymbols) {\n end += (result.length - end);\n }\n if (isRegExp(separator)) {\n if (string.slice(end).search(separator)) {\n var match,\n substring = result;\n\n if (!separator.global) {\n separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n }\n separator.lastIndex = 0;\n while ((match = separator.exec(substring))) {\n var newEnd = match.index;\n }\n result = result.slice(0, newEnd === undefined ? end : newEnd);\n }\n } else if (string.indexOf(baseToString(separator), end) != end) {\n var index = result.lastIndexOf(separator);\n if (index > -1) {\n result = result.slice(0, index);\n }\n }\n return result + omission;\n }\n\n /**\n * The inverse of `_.escape`; this method converts the HTML entities\n * `&`, `<`, `>`, `"`, and `'` in `string` to\n * their corresponding characters.\n *\n * **Note:** No other HTML entities are unescaped. To unescape additional\n * HTML entities use a third-party library like [_he_](https://mths.be/he).\n *\n * @static\n * @memberOf _\n * @since 0.6.0\n * @category String\n * @param {string} [string=''] The string to unescape.\n * @returns {string} Returns the unescaped string.\n * @example\n *\n * _.unescape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function unescape(string) {\n string = toString(string);\n return (string && reHasEscapedHtml.test(string))\n ? string.replace(reEscapedHtml, unescapeHtmlChar)\n : string;\n }\n\n /**\n * Converts `string`, as space separated words, to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.upperCase('--foo-bar');\n * // => 'FOO BAR'\n *\n * _.upperCase('fooBar');\n * // => 'FOO BAR'\n *\n * _.upperCase('__foo_bar__');\n * // => 'FOO BAR'\n */\n var upperCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toUpperCase();\n });\n\n /**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\n var upperFirst = createCaseFirst('toUpperCase');\n\n /**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\n function words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Attempts to invoke `func`, returning either the result or the caught error\n * object. Any additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Function} func The function to attempt.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {*} Returns the `func` result or error object.\n * @example\n *\n * // Avoid throwing errors for invalid selectors.\n * var elements = _.attempt(function(selector) {\n * return document.querySelectorAll(selector);\n * }, '>_>');\n *\n * if (_.isError(elements)) {\n * elements = [];\n * }\n */\n var attempt = baseRest(function(func, args) {\n try {\n return apply(func, undefined, args);\n } catch (e) {\n return isError(e) ? e : new Error(e);\n }\n });\n\n /**\n * Binds methods of an object to the object itself, overwriting the existing\n * method.\n *\n * **Note:** This method doesn't set the \"length\" property of bound functions.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Object} object The object to bind and assign the bound methods to.\n * @param {...(string|string[])} methodNames The object method names to bind.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var view = {\n * 'label': 'docs',\n * 'click': function() {\n * console.log('clicked ' + this.label);\n * }\n * };\n *\n * _.bindAll(view, ['click']);\n * jQuery(element).on('click', view.click);\n * // => Logs 'clicked docs' when clicked.\n */\n var bindAll = flatRest(function(object, methodNames) {\n arrayEach(methodNames, function(key) {\n key = toKey(key);\n baseAssignValue(object, key, bind(object[key], object));\n });\n return object;\n });\n\n /**\n * Creates a function that iterates over `pairs` and invokes the corresponding\n * function of the first predicate to return truthy. The predicate-function\n * pairs are invoked with the `this` binding and arguments of the created\n * function.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Array} pairs The predicate-function pairs.\n * @returns {Function} Returns the new composite function.\n * @example\n *\n * var func = _.cond([\n * [_.matches({ 'a': 1 }), _.constant('matches A')],\n * [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],\n * [_.stubTrue, _.constant('no match')]\n * ]);\n *\n * func({ 'a': 1, 'b': 2 });\n * // => 'matches A'\n *\n * func({ 'a': 0, 'b': 1 });\n * // => 'matches B'\n *\n * func({ 'a': '1', 'b': '2' });\n * // => 'no match'\n */\n function cond(pairs) {\n var length = pairs == null ? 0 : pairs.length,\n toIteratee = getIteratee();\n\n pairs = !length ? [] : arrayMap(pairs, function(pair) {\n if (typeof pair[1] != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return [toIteratee(pair[0]), pair[1]];\n });\n\n return baseRest(function(args) {\n var index = -1;\n while (++index < length) {\n var pair = pairs[index];\n if (apply(pair[0], this, args)) {\n return apply(pair[1], this, args);\n }\n }\n });\n }\n\n /**\n * Creates a function that invokes the predicate properties of `source` with\n * the corresponding property values of a given object, returning `true` if\n * all predicates return truthy, else `false`.\n *\n * **Note:** The created function is equivalent to `_.conformsTo` with\n * `source` partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 2, 'b': 1 },\n * { 'a': 1, 'b': 2 }\n * ];\n *\n * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));\n * // => [{ 'a': 1, 'b': 2 }]\n */\n function conforms(source) {\n return baseConforms(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\n function constant(value) {\n return function() {\n return value;\n };\n }\n\n /**\n * Checks `value` to determine whether a default value should be returned in\n * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,\n * or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Util\n * @param {*} value The value to check.\n * @param {*} defaultValue The default value.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * _.defaultTo(1, 10);\n * // => 1\n *\n * _.defaultTo(undefined, 10);\n * // => 10\n */\n function defaultTo(value, defaultValue) {\n return (value == null || value !== value) ? defaultValue : value;\n }\n\n /**\n * Creates a function that returns the result of invoking the given functions\n * with the `this` binding of the created function, where each successive\n * invocation is supplied the return value of the previous.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flowRight\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flow([_.add, square]);\n * addSquare(1, 2);\n * // => 9\n */\n var flow = createFlow();\n\n /**\n * This method is like `_.flow` except that it creates a function that\n * invokes the given functions from right to left.\n *\n * @static\n * @since 3.0.0\n * @memberOf _\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flow\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flowRight([square, _.add]);\n * addSquare(1, 2);\n * // => 9\n */\n var flowRight = createFlow(true);\n\n /**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\n function identity(value) {\n return value;\n }\n\n /**\n * Creates a function that invokes `func` with the arguments of the created\n * function. If `func` is a property name, the created function returns the\n * property value for a given element. If `func` is an array or object, the\n * created function returns `true` for elements that contain the equivalent\n * source properties, otherwise it returns `false`.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Util\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @returns {Function} Returns the callback.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, _.iteratee(['user', 'fred']));\n * // => [{ 'user': 'fred', 'age': 40 }]\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, _.iteratee('user'));\n * // => ['barney', 'fred']\n *\n * // Create custom iteratee shorthands.\n * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n * return !_.isRegExp(func) ? iteratee(func) : function(string) {\n * return func.test(string);\n * };\n * });\n *\n * _.filter(['abc', 'def'], /ef/);\n * // => ['def']\n */\n function iteratee(func) {\n return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between a given\n * object and `source`, returning `true` if the given object has equivalent\n * property values, else `false`.\n *\n * **Note:** The created function is equivalent to `_.isMatch` with `source`\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n */\n function matches(source) {\n return baseMatches(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between the\n * value at `path` of a given object to `srcValue`, returning `true` if the\n * object value is equivalent, else `false`.\n *\n * **Note:** Partial comparisons will match empty array and empty object\n * `srcValue` values against any array or object value, respectively. See\n * `_.isEqual` for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.find(objects, _.matchesProperty('a', 4));\n * // => { 'a': 4, 'b': 5, 'c': 6 }\n */\n function matchesProperty(path, srcValue) {\n return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that invokes the method at `path` of a given object.\n * Any additional arguments are provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': _.constant(2) } },\n * { 'a': { 'b': _.constant(1) } }\n * ];\n *\n * _.map(objects, _.method('a.b'));\n * // => [2, 1]\n *\n * _.map(objects, _.method(['a', 'b']));\n * // => [2, 1]\n */\n var method = baseRest(function(path, args) {\n return function(object) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * The opposite of `_.method`; this method creates a function that invokes\n * the method at a given path of `object`. Any additional arguments are\n * provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Object} object The object to query.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var array = _.times(3, _.constant),\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.methodOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.methodOf(object));\n * // => [2, 0]\n */\n var methodOf = baseRest(function(object, args) {\n return function(path) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * Adds all own enumerable string keyed function properties of a source\n * object to the destination object. If `object` is a function, then methods\n * are added to its prototype as well.\n *\n * **Note:** Use `_.runInContext` to create a pristine `lodash` function to\n * avoid conflicts caused by modifying the original.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Function|Object} [object=lodash] The destination object.\n * @param {Object} source The object of functions to add.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.chain=true] Specify whether mixins are chainable.\n * @returns {Function|Object} Returns `object`.\n * @example\n *\n * function vowels(string) {\n * return _.filter(string, function(v) {\n * return /[aeiou]/i.test(v);\n * });\n * }\n *\n * _.mixin({ 'vowels': vowels });\n * _.vowels('fred');\n * // => ['e']\n *\n * _('fred').vowels().value();\n * // => ['e']\n *\n * _.mixin({ 'vowels': vowels }, { 'chain': false });\n * _('fred').vowels();\n * // => ['e']\n */\n function mixin(object, source, options) {\n var props = keys(source),\n methodNames = baseFunctions(source, props);\n\n if (options == null &&\n !(isObject(source) && (methodNames.length || !props.length))) {\n options = source;\n source = object;\n object = this;\n methodNames = baseFunctions(source, keys(source));\n }\n var chain = !(isObject(options) && 'chain' in options) || !!options.chain,\n isFunc = isFunction(object);\n\n arrayEach(methodNames, function(methodName) {\n var func = source[methodName];\n object[methodName] = func;\n if (isFunc) {\n object.prototype[methodName] = function() {\n var chainAll = this.__chain__;\n if (chain || chainAll) {\n var result = object(this.__wrapped__),\n actions = result.__actions__ = copyArray(this.__actions__);\n\n actions.push({ 'func': func, 'args': arguments, 'thisArg': object });\n result.__chain__ = chainAll;\n return result;\n }\n return func.apply(object, arrayPush([this.value()], arguments));\n };\n }\n });\n\n return object;\n }\n\n /**\n * Reverts the `_` variable to its previous value and returns a reference to\n * the `lodash` function.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @returns {Function} Returns the `lodash` function.\n * @example\n *\n * var lodash = _.noConflict();\n */\n function noConflict() {\n if (root._ === this) {\n root._ = oldDash;\n }\n return this;\n }\n\n /**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\n function noop() {\n // No operation performed.\n }\n\n /**\n * Creates a function that gets the argument at index `n`. If `n` is negative,\n * the nth argument from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [n=0] The index of the argument to return.\n * @returns {Function} Returns the new pass-thru function.\n * @example\n *\n * var func = _.nthArg(1);\n * func('a', 'b', 'c', 'd');\n * // => 'b'\n *\n * var func = _.nthArg(-2);\n * func('a', 'b', 'c', 'd');\n * // => 'c'\n */\n function nthArg(n) {\n n = toInteger(n);\n return baseRest(function(args) {\n return baseNth(args, n);\n });\n }\n\n /**\n * Creates a function that invokes `iteratees` with the arguments it receives\n * and returns their results.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to invoke.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.over([Math.max, Math.min]);\n *\n * func(1, 2, 3, 4);\n * // => [4, 1]\n */\n var over = createOver(arrayMap);\n\n /**\n * Creates a function that checks if **all** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overEvery([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => false\n *\n * func(NaN);\n * // => false\n */\n var overEvery = createOver(arrayEvery);\n\n /**\n * Creates a function that checks if **any** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overSome([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => true\n *\n * func(NaN);\n * // => false\n */\n var overSome = createOver(arraySome);\n\n /**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\n function property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n }\n\n /**\n * The opposite of `_.property`; this method creates a function that returns\n * the value at a given path of `object`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var array = [0, 1, 2],\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.propertyOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));\n * // => [2, 0]\n */\n function propertyOf(object) {\n return function(path) {\n return object == null ? undefined : baseGet(object, path);\n };\n }\n\n /**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\n var range = createRange();\n\n /**\n * This method is like `_.range` except that it populates values in\n * descending order.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.range\n * @example\n *\n * _.rangeRight(4);\n * // => [3, 2, 1, 0]\n *\n * _.rangeRight(-4);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 5);\n * // => [4, 3, 2, 1]\n *\n * _.rangeRight(0, 20, 5);\n * // => [15, 10, 5, 0]\n *\n * _.rangeRight(0, -4, -1);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.rangeRight(0);\n * // => []\n */\n var rangeRight = createRange(true);\n\n /**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\n function stubArray() {\n return [];\n }\n\n /**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\n function stubFalse() {\n return false;\n }\n\n /**\n * This method returns a new empty object.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Object} Returns the new empty object.\n * @example\n *\n * var objects = _.times(2, _.stubObject);\n *\n * console.log(objects);\n * // => [{}, {}]\n *\n * console.log(objects[0] === objects[1]);\n * // => false\n */\n function stubObject() {\n return {};\n }\n\n /**\n * This method returns an empty string.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {string} Returns the empty string.\n * @example\n *\n * _.times(2, _.stubString);\n * // => ['', '']\n */\n function stubString() {\n return '';\n }\n\n /**\n * This method returns `true`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `true`.\n * @example\n *\n * _.times(2, _.stubTrue);\n * // => [true, true]\n */\n function stubTrue() {\n return true;\n }\n\n /**\n * Invokes the iteratee `n` times, returning an array of the results of\n * each invocation. The iteratee is invoked with one argument; (index).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.times(3, String);\n * // => ['0', '1', '2']\n *\n * _.times(4, _.constant(0));\n * // => [0, 0, 0, 0]\n */\n function times(n, iteratee) {\n n = toInteger(n);\n if (n < 1 || n > MAX_SAFE_INTEGER) {\n return [];\n }\n var index = MAX_ARRAY_LENGTH,\n length = nativeMin(n, MAX_ARRAY_LENGTH);\n\n iteratee = getIteratee(iteratee);\n n -= MAX_ARRAY_LENGTH;\n\n var result = baseTimes(length, iteratee);\n while (++index < n) {\n iteratee(index);\n }\n return result;\n }\n\n /**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\n function toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n }\n\n /**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\n function uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Adds two numbers.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {number} augend The first number in an addition.\n * @param {number} addend The second number in an addition.\n * @returns {number} Returns the total.\n * @example\n *\n * _.add(6, 4);\n * // => 10\n */\n var add = createMathOperation(function(augend, addend) {\n return augend + addend;\n }, 0);\n\n /**\n * Computes `number` rounded up to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round up.\n * @param {number} [precision=0] The precision to round up to.\n * @returns {number} Returns the rounded up number.\n * @example\n *\n * _.ceil(4.006);\n * // => 5\n *\n * _.ceil(6.004, 2);\n * // => 6.01\n *\n * _.ceil(6040, -2);\n * // => 6100\n */\n var ceil = createRound('ceil');\n\n /**\n * Divide two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} dividend The first number in a division.\n * @param {number} divisor The second number in a division.\n * @returns {number} Returns the quotient.\n * @example\n *\n * _.divide(6, 4);\n * // => 1.5\n */\n var divide = createMathOperation(function(dividend, divisor) {\n return dividend / divisor;\n }, 1);\n\n /**\n * Computes `number` rounded down to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round down.\n * @param {number} [precision=0] The precision to round down to.\n * @returns {number} Returns the rounded down number.\n * @example\n *\n * _.floor(4.006);\n * // => 4\n *\n * _.floor(0.046, 2);\n * // => 0.04\n *\n * _.floor(4060, -2);\n * // => 4000\n */\n var floor = createRound('floor');\n\n /**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\n function max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n }\n\n /**\n * This method is like `_.max` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\n function maxBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)\n : undefined;\n }\n\n /**\n * Computes the mean of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the mean.\n * @example\n *\n * _.mean([4, 2, 8, 6]);\n * // => 5\n */\n function mean(array) {\n return baseMean(array, identity);\n }\n\n /**\n * This method is like `_.mean` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be averaged.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the mean.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.meanBy(objects, function(o) { return o.n; });\n * // => 5\n *\n * // The `_.property` iteratee shorthand.\n * _.meanBy(objects, 'n');\n * // => 5\n */\n function meanBy(array, iteratee) {\n return baseMean(array, getIteratee(iteratee, 2));\n }\n\n /**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\n function min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n }\n\n /**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\n function minBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)\n : undefined;\n }\n\n /**\n * Multiply two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} multiplier The first number in a multiplication.\n * @param {number} multiplicand The second number in a multiplication.\n * @returns {number} Returns the product.\n * @example\n *\n * _.multiply(6, 4);\n * // => 24\n */\n var multiply = createMathOperation(function(multiplier, multiplicand) {\n return multiplier * multiplicand;\n }, 1);\n\n /**\n * Computes `number` rounded to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round.\n * @param {number} [precision=0] The precision to round to.\n * @returns {number} Returns the rounded number.\n * @example\n *\n * _.round(4.006);\n * // => 4\n *\n * _.round(4.006, 2);\n * // => 4.01\n *\n * _.round(4060, -2);\n * // => 4100\n */\n var round = createRound('round');\n\n /**\n * Subtract two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {number} minuend The first number in a subtraction.\n * @param {number} subtrahend The second number in a subtraction.\n * @returns {number} Returns the difference.\n * @example\n *\n * _.subtract(6, 4);\n * // => 2\n */\n var subtract = createMathOperation(function(minuend, subtrahend) {\n return minuend - subtrahend;\n }, 0);\n\n /**\n * Computes the sum of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the sum.\n * @example\n *\n * _.sum([4, 2, 8, 6]);\n * // => 20\n */\n function sum(array) {\n return (array && array.length)\n ? baseSum(array, identity)\n : 0;\n }\n\n /**\n * This method is like `_.sum` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be summed.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the sum.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.sumBy(objects, function(o) { return o.n; });\n * // => 20\n *\n * // The `_.property` iteratee shorthand.\n * _.sumBy(objects, 'n');\n * // => 20\n */\n function sumBy(array, iteratee) {\n return (array && array.length)\n ? baseSum(array, getIteratee(iteratee, 2))\n : 0;\n }\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return wrapped values in chain sequences.\n lodash.after = after;\n lodash.ary = ary;\n lodash.assign = assign;\n lodash.assignIn = assignIn;\n lodash.assignInWith = assignInWith;\n lodash.assignWith = assignWith;\n lodash.at = at;\n lodash.before = before;\n lodash.bind = bind;\n lodash.bindAll = bindAll;\n lodash.bindKey = bindKey;\n lodash.castArray = castArray;\n lodash.chain = chain;\n lodash.chunk = chunk;\n lodash.compact = compact;\n lodash.concat = concat;\n lodash.cond = cond;\n lodash.conforms = conforms;\n lodash.constant = constant;\n lodash.countBy = countBy;\n lodash.create = create;\n lodash.curry = curry;\n lodash.curryRight = curryRight;\n lodash.debounce = debounce;\n lodash.defaults = defaults;\n lodash.defaultsDeep = defaultsDeep;\n lodash.defer = defer;\n lodash.delay = delay;\n lodash.difference = difference;\n lodash.differenceBy = differenceBy;\n lodash.differenceWith = differenceWith;\n lodash.drop = drop;\n lodash.dropRight = dropRight;\n lodash.dropRightWhile = dropRightWhile;\n lodash.dropWhile = dropWhile;\n lodash.fill = fill;\n lodash.filter = filter;\n lodash.flatMap = flatMap;\n lodash.flatMapDeep = flatMapDeep;\n lodash.flatMapDepth = flatMapDepth;\n lodash.flatten = flatten;\n lodash.flattenDeep = flattenDeep;\n lodash.flattenDepth = flattenDepth;\n lodash.flip = flip;\n lodash.flow = flow;\n lodash.flowRight = flowRight;\n lodash.fromPairs = fromPairs;\n lodash.functions = functions;\n lodash.functionsIn = functionsIn;\n lodash.groupBy = groupBy;\n lodash.initial = initial;\n lodash.intersection = intersection;\n lodash.intersectionBy = intersectionBy;\n lodash.intersectionWith = intersectionWith;\n lodash.invert = invert;\n lodash.invertBy = invertBy;\n lodash.invokeMap = invokeMap;\n lodash.iteratee = iteratee;\n lodash.keyBy = keyBy;\n lodash.keys = keys;\n lodash.keysIn = keysIn;\n lodash.map = map;\n lodash.mapKeys = mapKeys;\n lodash.mapValues = mapValues;\n lodash.matches = matches;\n lodash.matchesProperty = matchesProperty;\n lodash.memoize = memoize;\n lodash.merge = merge;\n lodash.mergeWith = mergeWith;\n lodash.method = method;\n lodash.methodOf = methodOf;\n lodash.mixin = mixin;\n lodash.negate = negate;\n lodash.nthArg = nthArg;\n lodash.omit = omit;\n lodash.omitBy = omitBy;\n lodash.once = once;\n lodash.orderBy = orderBy;\n lodash.over = over;\n lodash.overArgs = overArgs;\n lodash.overEvery = overEvery;\n lodash.overSome = overSome;\n lodash.partial = partial;\n lodash.partialRight = partialRight;\n lodash.partition = partition;\n lodash.pick = pick;\n lodash.pickBy = pickBy;\n lodash.property = property;\n lodash.propertyOf = propertyOf;\n lodash.pull = pull;\n lodash.pullAll = pullAll;\n lodash.pullAllBy = pullAllBy;\n lodash.pullAllWith = pullAllWith;\n lodash.pullAt = pullAt;\n lodash.range = range;\n lodash.rangeRight = rangeRight;\n lodash.rearg = rearg;\n lodash.reject = reject;\n lodash.remove = remove;\n lodash.rest = rest;\n lodash.reverse = reverse;\n lodash.sampleSize = sampleSize;\n lodash.set = set;\n lodash.setWith = setWith;\n lodash.shuffle = shuffle;\n lodash.slice = slice;\n lodash.sortBy = sortBy;\n lodash.sortedUniq = sortedUniq;\n lodash.sortedUniqBy = sortedUniqBy;\n lodash.split = split;\n lodash.spread = spread;\n lodash.tail = tail;\n lodash.take = take;\n lodash.takeRight = takeRight;\n lodash.takeRightWhile = takeRightWhile;\n lodash.takeWhile = takeWhile;\n lodash.tap = tap;\n lodash.throttle = throttle;\n lodash.thru = thru;\n lodash.toArray = toArray;\n lodash.toPairs = toPairs;\n lodash.toPairsIn = toPairsIn;\n lodash.toPath = toPath;\n lodash.toPlainObject = toPlainObject;\n lodash.transform = transform;\n lodash.unary = unary;\n lodash.union = union;\n lodash.unionBy = unionBy;\n lodash.unionWith = unionWith;\n lodash.uniq = uniq;\n lodash.uniqBy = uniqBy;\n lodash.uniqWith = uniqWith;\n lodash.unset = unset;\n lodash.unzip = unzip;\n lodash.unzipWith = unzipWith;\n lodash.update = update;\n lodash.updateWith = updateWith;\n lodash.values = values;\n lodash.valuesIn = valuesIn;\n lodash.without = without;\n lodash.words = words;\n lodash.wrap = wrap;\n lodash.xor = xor;\n lodash.xorBy = xorBy;\n lodash.xorWith = xorWith;\n lodash.zip = zip;\n lodash.zipObject = zipObject;\n lodash.zipObjectDeep = zipObjectDeep;\n lodash.zipWith = zipWith;\n\n // Add aliases.\n lodash.entries = toPairs;\n lodash.entriesIn = toPairsIn;\n lodash.extend = assignIn;\n lodash.extendWith = assignInWith;\n\n // Add methods to `lodash.prototype`.\n mixin(lodash, lodash);\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return unwrapped values in chain sequences.\n lodash.add = add;\n lodash.attempt = attempt;\n lodash.camelCase = camelCase;\n lodash.capitalize = capitalize;\n lodash.ceil = ceil;\n lodash.clamp = clamp;\n lodash.clone = clone;\n lodash.cloneDeep = cloneDeep;\n lodash.cloneDeepWith = cloneDeepWith;\n lodash.cloneWith = cloneWith;\n lodash.conformsTo = conformsTo;\n lodash.deburr = deburr;\n lodash.defaultTo = defaultTo;\n lodash.divide = divide;\n lodash.endsWith = endsWith;\n lodash.eq = eq;\n lodash.escape = escape;\n lodash.escapeRegExp = escapeRegExp;\n lodash.every = every;\n lodash.find = find;\n lodash.findIndex = findIndex;\n lodash.findKey = findKey;\n lodash.findLast = findLast;\n lodash.findLastIndex = findLastIndex;\n lodash.findLastKey = findLastKey;\n lodash.floor = floor;\n lodash.forEach = forEach;\n lodash.forEachRight = forEachRight;\n lodash.forIn = forIn;\n lodash.forInRight = forInRight;\n lodash.forOwn = forOwn;\n lodash.forOwnRight = forOwnRight;\n lodash.get = get;\n lodash.gt = gt;\n lodash.gte = gte;\n lodash.has = has;\n lodash.hasIn = hasIn;\n lodash.head = head;\n lodash.identity = identity;\n lodash.includes = includes;\n lodash.indexOf = indexOf;\n lodash.inRange = inRange;\n lodash.invoke = invoke;\n lodash.isArguments = isArguments;\n lodash.isArray = isArray;\n lodash.isArrayBuffer = isArrayBuffer;\n lodash.isArrayLike = isArrayLike;\n lodash.isArrayLikeObject = isArrayLikeObject;\n lodash.isBoolean = isBoolean;\n lodash.isBuffer = isBuffer;\n lodash.isDate = isDate;\n lodash.isElement = isElement;\n lodash.isEmpty = isEmpty;\n lodash.isEqual = isEqual;\n lodash.isEqualWith = isEqualWith;\n lodash.isError = isError;\n lodash.isFinite = isFinite;\n lodash.isFunction = isFunction;\n lodash.isInteger = isInteger;\n lodash.isLength = isLength;\n lodash.isMap = isMap;\n lodash.isMatch = isMatch;\n lodash.isMatchWith = isMatchWith;\n lodash.isNaN = isNaN;\n lodash.isNative = isNative;\n lodash.isNil = isNil;\n lodash.isNull = isNull;\n lodash.isNumber = isNumber;\n lodash.isObject = isObject;\n lodash.isObjectLike = isObjectLike;\n lodash.isPlainObject = isPlainObject;\n lodash.isRegExp = isRegExp;\n lodash.isSafeInteger = isSafeInteger;\n lodash.isSet = isSet;\n lodash.isString = isString;\n lodash.isSymbol = isSymbol;\n lodash.isTypedArray = isTypedArray;\n lodash.isUndefined = isUndefined;\n lodash.isWeakMap = isWeakMap;\n lodash.isWeakSet = isWeakSet;\n lodash.join = join;\n lodash.kebabCase = kebabCase;\n lodash.last = last;\n lodash.lastIndexOf = lastIndexOf;\n lodash.lowerCase = lowerCase;\n lodash.lowerFirst = lowerFirst;\n lodash.lt = lt;\n lodash.lte = lte;\n lodash.max = max;\n lodash.maxBy = maxBy;\n lodash.mean = mean;\n lodash.meanBy = meanBy;\n lodash.min = min;\n lodash.minBy = minBy;\n lodash.stubArray = stubArray;\n lodash.stubFalse = stubFalse;\n lodash.stubObject = stubObject;\n lodash.stubString = stubString;\n lodash.stubTrue = stubTrue;\n lodash.multiply = multiply;\n lodash.nth = nth;\n lodash.noConflict = noConflict;\n lodash.noop = noop;\n lodash.now = now;\n lodash.pad = pad;\n lodash.padEnd = padEnd;\n lodash.padStart = padStart;\n lodash.parseInt = parseInt;\n lodash.random = random;\n lodash.reduce = reduce;\n lodash.reduceRight = reduceRight;\n lodash.repeat = repeat;\n lodash.replace = replace;\n lodash.result = result;\n lodash.round = round;\n lodash.runInContext = runInContext;\n lodash.sample = sample;\n lodash.size = size;\n lodash.snakeCase = snakeCase;\n lodash.some = some;\n lodash.sortedIndex = sortedIndex;\n lodash.sortedIndexBy = sortedIndexBy;\n lodash.sortedIndexOf = sortedIndexOf;\n lodash.sortedLastIndex = sortedLastIndex;\n lodash.sortedLastIndexBy = sortedLastIndexBy;\n lodash.sortedLastIndexOf = sortedLastIndexOf;\n lodash.startCase = startCase;\n lodash.startsWith = startsWith;\n lodash.subtract = subtract;\n lodash.sum = sum;\n lodash.sumBy = sumBy;\n lodash.template = template;\n lodash.times = times;\n lodash.toFinite = toFinite;\n lodash.toInteger = toInteger;\n lodash.toLength = toLength;\n lodash.toLower = toLower;\n lodash.toNumber = toNumber;\n lodash.toSafeInteger = toSafeInteger;\n lodash.toString = toString;\n lodash.toUpper = toUpper;\n lodash.trim = trim;\n lodash.trimEnd = trimEnd;\n lodash.trimStart = trimStart;\n lodash.truncate = truncate;\n lodash.unescape = unescape;\n lodash.uniqueId = uniqueId;\n lodash.upperCase = upperCase;\n lodash.upperFirst = upperFirst;\n\n // Add aliases.\n lodash.each = forEach;\n lodash.eachRight = forEachRight;\n lodash.first = head;\n\n mixin(lodash, (function() {\n var source = {};\n baseForOwn(lodash, function(func, methodName) {\n if (!hasOwnProperty.call(lodash.prototype, methodName)) {\n source[methodName] = func;\n }\n });\n return source;\n }()), { 'chain': false });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The semantic version number.\n *\n * @static\n * @memberOf _\n * @type {string}\n */\n lodash.VERSION = VERSION;\n\n // Assign default placeholders.\n arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {\n lodash[methodName].placeholder = lodash;\n });\n\n // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.\n arrayEach(['drop', 'take'], function(methodName, index) {\n LazyWrapper.prototype[methodName] = function(n) {\n n = n === undefined ? 1 : nativeMax(toInteger(n), 0);\n\n var result = (this.__filtered__ && !index)\n ? new LazyWrapper(this)\n : this.clone();\n\n if (result.__filtered__) {\n result.__takeCount__ = nativeMin(n, result.__takeCount__);\n } else {\n result.__views__.push({\n 'size': nativeMin(n, MAX_ARRAY_LENGTH),\n 'type': methodName + (result.__dir__ < 0 ? 'Right' : '')\n });\n }\n return result;\n };\n\n LazyWrapper.prototype[methodName + 'Right'] = function(n) {\n return this.reverse()[methodName](n).reverse();\n };\n });\n\n // Add `LazyWrapper` methods that accept an `iteratee` value.\n arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {\n var type = index + 1,\n isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;\n\n LazyWrapper.prototype[methodName] = function(iteratee) {\n var result = this.clone();\n result.__iteratees__.push({\n 'iteratee': getIteratee(iteratee, 3),\n 'type': type\n });\n result.__filtered__ = result.__filtered__ || isFilter;\n return result;\n };\n });\n\n // Add `LazyWrapper` methods for `_.head` and `_.last`.\n arrayEach(['head', 'last'], function(methodName, index) {\n var takeName = 'take' + (index ? 'Right' : '');\n\n LazyWrapper.prototype[methodName] = function() {\n return this[takeName](1).value()[0];\n };\n });\n\n // Add `LazyWrapper` methods for `_.initial` and `_.tail`.\n arrayEach(['initial', 'tail'], function(methodName, index) {\n var dropName = 'drop' + (index ? '' : 'Right');\n\n LazyWrapper.prototype[methodName] = function() {\n return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);\n };\n });\n\n LazyWrapper.prototype.compact = function() {\n return this.filter(identity);\n };\n\n LazyWrapper.prototype.find = function(predicate) {\n return this.filter(predicate).head();\n };\n\n LazyWrapper.prototype.findLast = function(predicate) {\n return this.reverse().find(predicate);\n };\n\n LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {\n if (typeof path == 'function') {\n return new LazyWrapper(this);\n }\n return this.map(function(value) {\n return baseInvoke(value, path, args);\n });\n });\n\n LazyWrapper.prototype.reject = function(predicate) {\n return this.filter(negate(getIteratee(predicate)));\n };\n\n LazyWrapper.prototype.slice = function(start, end) {\n start = toInteger(start);\n\n var result = this;\n if (result.__filtered__ && (start > 0 || end < 0)) {\n return new LazyWrapper(result);\n }\n if (start < 0) {\n result = result.takeRight(-start);\n } else if (start) {\n result = result.drop(start);\n }\n if (end !== undefined) {\n end = toInteger(end);\n result = end < 0 ? result.dropRight(-end) : result.take(end - start);\n }\n return result;\n };\n\n LazyWrapper.prototype.takeRightWhile = function(predicate) {\n return this.reverse().takeWhile(predicate).reverse();\n };\n\n LazyWrapper.prototype.toArray = function() {\n return this.take(MAX_ARRAY_LENGTH);\n };\n\n // Add `LazyWrapper` methods to `lodash.prototype`.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),\n isTaker = /^(?:head|last)$/.test(methodName),\n lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],\n retUnwrapped = isTaker || /^find/.test(methodName);\n\n if (!lodashFunc) {\n return;\n }\n lodash.prototype[methodName] = function() {\n var value = this.__wrapped__,\n args = isTaker ? [1] : arguments,\n isLazy = value instanceof LazyWrapper,\n iteratee = args[0],\n useLazy = isLazy || isArray(value);\n\n var interceptor = function(value) {\n var result = lodashFunc.apply(lodash, arrayPush([value], args));\n return (isTaker && chainAll) ? result[0] : result;\n };\n\n if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {\n // Avoid lazy use if the iteratee has a \"length\" value other than `1`.\n isLazy = useLazy = false;\n }\n var chainAll = this.__chain__,\n isHybrid = !!this.__actions__.length,\n isUnwrapped = retUnwrapped && !chainAll,\n onlyLazy = isLazy && !isHybrid;\n\n if (!retUnwrapped && useLazy) {\n value = onlyLazy ? value : new LazyWrapper(this);\n var result = func.apply(value, args);\n result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });\n return new LodashWrapper(result, chainAll);\n }\n if (isUnwrapped && onlyLazy) {\n return func.apply(this, args);\n }\n result = this.thru(interceptor);\n return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;\n };\n });\n\n // Add `Array` methods to `lodash.prototype`.\n arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {\n var func = arrayProto[methodName],\n chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',\n retUnwrapped = /^(?:pop|shift)$/.test(methodName);\n\n lodash.prototype[methodName] = function() {\n var args = arguments;\n if (retUnwrapped && !this.__chain__) {\n var value = this.value();\n return func.apply(isArray(value) ? value : [], args);\n }\n return this[chainName](function(value) {\n return func.apply(isArray(value) ? value : [], args);\n });\n };\n });\n\n // Map minified method names to their real names.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var lodashFunc = lodash[methodName];\n if (lodashFunc) {\n var key = lodashFunc.name + '';\n if (!hasOwnProperty.call(realNames, key)) {\n realNames[key] = [];\n }\n realNames[key].push({ 'name': methodName, 'func': lodashFunc });\n }\n });\n\n realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{\n 'name': 'wrapper',\n 'func': undefined\n }];\n\n // Add methods to `LazyWrapper`.\n LazyWrapper.prototype.clone = lazyClone;\n LazyWrapper.prototype.reverse = lazyReverse;\n LazyWrapper.prototype.value = lazyValue;\n\n // Add chain sequence methods to the `lodash` wrapper.\n lodash.prototype.at = wrapperAt;\n lodash.prototype.chain = wrapperChain;\n lodash.prototype.commit = wrapperCommit;\n lodash.prototype.next = wrapperNext;\n lodash.prototype.plant = wrapperPlant;\n lodash.prototype.reverse = wrapperReverse;\n lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;\n\n // Add lazy aliases.\n lodash.prototype.first = lodash.prototype.head;\n\n if (symIterator) {\n lodash.prototype[symIterator] = wrapperToIterator;\n }\n return lodash;\n });\n\n /*--------------------------------------------------------------------------*/\n\n // Export lodash.\n var _ = runInContext();\n\n // Some AMD build optimizers, like r.js, check for condition patterns like:\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n // Expose Lodash on the global object to prevent errors when Lodash is\n // loaded by a script tag in the presence of an AMD loader.\n // See http://requirejs.org/docs/errors.html#mismatch for more details.\n // Use `_.noConflict` to remove Lodash from the global object.\n root._ = _;\n\n // Define as an anonymous module so, through path mapping, it can be\n // referenced as the \"underscore\" module.\n define(function() {\n return _;\n });\n }\n // Check for `exports` after `define` in case a build optimizer adds it.\n else if (freeModule) {\n // Export for Node.js.\n (freeModule.exports = _)._ = _;\n // Export for CommonJS support.\n freeExports._ = _;\n }\n else {\n // Export to the global object.\n root._ = _;\n }\n}.call(this));\n","var scope = (typeof global !== \"undefined\" && global) ||\n (typeof self !== \"undefined\" && self) ||\n window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n (typeof global !== \"undefined\" && global.setImmediate) ||\n (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n (typeof global !== \"undefined\" && global.clearImmediate) ||\n (this && this.clearImmediate);\n","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n }\n\n // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n // Don't get fooled by e.g. browserify environments.\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n\nmodule.exports = function isBuffer (obj) {\n return obj != null && obj.constructor != null &&\n typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n config.method = config.method ? config.method.toLowerCase() : 'get';\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar isAbsoluteURL = require('./../helpers/isAbsoluteURL');\nvar combineURLs = require('./../helpers/combineURLs');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Support baseURL config\n if (config.baseURL && !isAbsoluteURL(config.url)) {\n config.url = combineURLs(config.baseURL, config.url);\n }\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers || {}\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData(\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData(\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","var content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminTwoFactor.vue?vue&type=style&index=0&lang=css&\");\n\nif (typeof content === 'string') {\n content = [[module.id, content, '']];\n}\n\nvar options = {}\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = require(\"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\")(content, options);\n\nif (content.locals) {\n module.exports = content.locals;\n}\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","import mod from \"-!../../../../node_modules/style-loader/dist/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminTwoFactor.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/style-loader/dist/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminTwoFactor.vue?vue&type=style&index=0&lang=css&\"","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \"\\n.two-factor-loading {\\n\\tdisplay: inline-block;\\n\\tvertical-align: sub;\\n\\tmargin-left: -2px;\\n\\tmargin-right: 1px;\\n}\\n\", \"\"]);\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminTwoFactor.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminTwoFactor.vue?vue&type=script&lang=js&\"","<template>\n\t<div>\n\t\t<p class=\"settings-hint\">\n\t\t\t{{ t('settings', 'Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system.') }}\n\t\t</p>\n\t\t<p v-if=\"loading\">\n\t\t\t<span class=\"icon-loading-small two-factor-loading\"></span>\n\t\t\t<span>{{ t('settings', 'Enforce two-factor authentication') }}</span>\n\t\t</p>\n\t\t<p v-else>\n\t\t\t<input type=\"checkbox\"\n\t\t\t\t id=\"two-factor-enforced\"\n\t\t\t\t class=\"checkbox\"\n\t\t\t\t v-model=\"enforced\">\n\t\t\t<label for=\"two-factor-enforced\">{{ t('settings', 'Enforce two-factor authentication') }}</label>\n\t\t</p>\n\t\t<template v-if=\"enforced\">\n\t\t\t<h3>{{ t('settings', 'Limit to groups') }}</h3>\n\t\t\t{{ t('settings', 'Enforcement of two-factor authentication can be set for certain groups only.') }}\n\t\t\t<p>\n\t\t\t\t{{ t('settings', 'Two-factor authentication is enforced for all\tmembers of the following groups.') }}\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t<Multiselect v-model=\"enforcedGroups\"\n\t\t\t\t\t\t\t :options=\"groups\"\n\t\t\t\t\t\t\t :placeholder=\"t('settings', 'Enforced groups')\"\n\t\t\t\t\t\t\t :disabled=\"loading\"\n\t\t\t\t\t\t\t :multiple=\"true\"\n\t\t\t\t\t\t\t :searchable=\"true\"\n\t\t\t\t\t\t\t @search-change=\"searchGroup\"\n\t\t\t\t\t\t\t :loading=\"loadingGroups\"\n\t\t\t\t\t\t\t :show-no-options=\"false\"\n\t\t\t\t\t\t\t :close-on-select=\"false\">\n\t\t\t\t</Multiselect>\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t{{ t('settings', 'Two-factor authentication is not enforced for\tmembers of the following groups.') }}\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t<Multiselect v-model=\"excludedGroups\"\n\t\t\t\t\t\t\t :options=\"groups\"\n\t\t\t\t\t\t\t :placeholder=\"t('settings', 'Excluded groups')\"\n\t\t\t\t\t\t\t :disabled=\"loading\"\n\t\t\t\t\t\t\t :multiple=\"true\"\n\t\t\t\t\t\t\t :searchable=\"true\"\n\t\t\t\t\t\t\t @search-change=\"searchGroup\"\n\t\t\t\t\t\t\t :loading=\"loadingGroups\"\n\t\t\t\t\t\t\t :show-no-options=\"false\"\n\t\t\t\t\t\t\t :close-on-select=\"false\">\n\t\t\t\t</Multiselect>\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t<em>\n\t\t\t\t\t<!-- this text is also found in the documentation. update it there as well if it ever changes -->\n\t\t\t\t\t{{ t('settings', 'When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced.') }}\n\t\t\t\t</em>\n\t\t\t</p>\n\t\t</template>\n\t\t<p>\n\t\t\t<button class=\"button primary\"\n\t\t\t\t\tv-if=\"dirty\"\n\t\t\t\t\tv-on:click=\"saveChanges\"\n\t\t\t\t\t:disabled=\"loading\">\n\t\t\t\t{{ t('settings', 'Save changes') }}\n\t\t\t</button>\n\t\t</p>\n\t</div>\n</template>\n\n<script>\n\timport Axios from 'nextcloud-axios'\n\timport { mapState } from 'vuex'\n\timport {Multiselect} from 'nextcloud-vue'\n\timport _ from 'lodash'\n\n\texport default {\n\t\tname: \"AdminTwoFactor\",\n\t\tcomponents: {\n\t\t\tMultiselect\n\t\t},\n\t\tdata () {\n\t\t\treturn {\n\t\t\t\tloading: false,\n\t\t\t\tdirty: false,\n\t\t\t\tgroups: [],\n\t\t\t\tloadingGroups: false,\n\t\t\t}\n\t\t},\n\t\tcomputed: {\n\t\t\tenforced: {\n\t\t\t\tget: function () {\n\t\t\t\t\treturn this.$store.state.enforced\n\t\t\t\t},\n\t\t\t\tset: function (val) {\n\t\t\t\t\tthis.dirty = true\n\t\t\t\t\tthis.$store.commit('setEnforced', val)\n\t\t\t\t}\n\t\t\t},\n\t\t\tenforcedGroups: {\n\t\t\t\tget: function () {\n\t\t\t\t\treturn this.$store.state.enforcedGroups\n\t\t\t\t},\n\t\t\t\tset: function (val) {\n\t\t\t\t\tthis.dirty = true\n\t\t\t\t\tthis.$store.commit('setEnforcedGroups', val)\n\t\t\t\t}\n\t\t\t},\n\t\t\texcludedGroups: {\n\t\t\t\tget: function () {\n\t\t\t\t\treturn this.$store.state.excludedGroups\n\t\t\t\t},\n\t\t\t\tset: function (val) {\n\t\t\t\t\tthis.dirty = true\n\t\t\t\t\tthis.$store.commit('setExcludedGroups', val)\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\tmounted () {\n\t\t\t// Groups are loaded dynamically, but the assigned ones *should*\n\t\t\t// be valid groups, so let's add them as initial state\n\t\t\tthis.groups = _.sortedUniq(_.uniq(this.enforcedGroups.concat(this.excludedGroups)))\n\n\t\t\t// Populate the groups with a first set so the dropdown is not empty\n\t\t\t// when opening the page the first time\n\t\t\tthis.searchGroup('')\n\t\t},\n\t\tmethods: {\n\t\t\tsearchGroup: _.debounce(function (query) {\n\t\t\t\tthis.loadingGroups = true\n\t\t\t\tAxios.get(OC.linkToOCS(`cloud/groups?offset=0&search=${encodeURIComponent(query)}&limit=20`, 2))\n\t\t\t\t\t.then(res => res.data.ocs)\n\t\t\t\t\t.then(ocs => ocs.data.groups)\n\t\t\t\t\t.then(groups => this.groups = _.sortedUniq(_.uniq(this.groups.concat(groups))))\n\t\t\t\t\t.catch(err => console.error('could not search groups', err))\n\t\t\t\t\t.then(() => this.loadingGroups = false)\n\t\t\t}, 500),\n\n\t\t\tsaveChanges () {\n\t\t\t\tthis.loading = true\n\n\t\t\t\tconst data = {\n\t\t\t\t\tenforced: this.enforced,\n\t\t\t\t\tenforcedGroups: this.enforcedGroups,\n\t\t\t\t\texcludedGroups: this.excludedGroups,\n\t\t\t\t}\n\t\t\t\tAxios.put(OC.generateUrl('/settings/api/admin/twofactorauth'), data)\n\t\t\t\t\t.then(resp => resp.data)\n\t\t\t\t\t.then(state => {\n\t\t\t\t\t\tthis.state = state\n\t\t\t\t\t\tthis.dirty = false\n\t\t\t\t\t})\n\t\t\t\t\t.catch(err => {\n\t\t\t\t\t\tconsole.error('could not save changes', err)\n\t\t\t\t\t})\n\t\t\t\t\t.then(() => this.loading = false)\n\t\t\t}\n\t\t}\n\t}\n</script>\n\n<style>\n\t.two-factor-loading {\n\t\tdisplay: inline-block;\n\t\tvertical-align: sub;\n\t\tmargin-left: -2px;\n\t\tmargin-right: 1px;\n\t}\n</style>\n","import { render, staticRenderFns } from \"./AdminTwoFactor.vue?vue&type=template&id=3febf05b&\"\nimport script from \"./AdminTwoFactor.vue?vue&type=script&lang=js&\"\nexport * from \"./AdminTwoFactor.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AdminTwoFactor.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('p',{staticClass:\"settings-hint\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system.'))+\"\\n\\t\")]),_vm._v(\" \"),(_vm.loading)?_c('p',[_c('span',{staticClass:\"icon-loading-small two-factor-loading\"}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Enforce two-factor authentication')))])]):_c('p',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.enforced),expression:\"enforced\"}],staticClass:\"checkbox\",attrs:{\"type\":\"checkbox\",\"id\":\"two-factor-enforced\"},domProps:{\"checked\":Array.isArray(_vm.enforced)?_vm._i(_vm.enforced,null)>-1:(_vm.enforced)},on:{\"change\":function($event){var $$a=_vm.enforced,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.enforced=$$a.concat([$$v]))}else{$$i>-1&&(_vm.enforced=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.enforced=$$c}}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"two-factor-enforced\"}},[_vm._v(_vm._s(_vm.t('settings', 'Enforce two-factor authentication')))])]),_vm._v(\" \"),(_vm.enforced)?[_c('h3',[_vm._v(_vm._s(_vm.t('settings', 'Limit to groups')))]),_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Enforcement of two-factor authentication can be set for certain groups only.'))+\"\\n\\t\\t\"),_c('p',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Two-factor authentication is enforced for all\tmembers of the following groups.'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('p',[_c('Multiselect',{attrs:{\"options\":_vm.groups,\"placeholder\":_vm.t('settings', 'Enforced groups'),\"disabled\":_vm.loading,\"multiple\":true,\"searchable\":true,\"loading\":_vm.loadingGroups,\"show-no-options\":false,\"close-on-select\":false},on:{\"search-change\":_vm.searchGroup},model:{value:(_vm.enforcedGroups),callback:function ($$v) {_vm.enforcedGroups=$$v},expression:\"enforcedGroups\"}})],1),_vm._v(\" \"),_c('p',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Two-factor authentication is not enforced for\tmembers of the following groups.'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('p',[_c('Multiselect',{attrs:{\"options\":_vm.groups,\"placeholder\":_vm.t('settings', 'Excluded groups'),\"disabled\":_vm.loading,\"multiple\":true,\"searchable\":true,\"loading\":_vm.loadingGroups,\"show-no-options\":false,\"close-on-select\":false},on:{\"search-change\":_vm.searchGroup},model:{value:(_vm.excludedGroups),callback:function ($$v) {_vm.excludedGroups=$$v},expression:\"excludedGroups\"}})],1),_vm._v(\" \"),_c('p',[_c('em',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced.'))+\"\\n\\t\\t\\t\")])])]:_vm._e(),_vm._v(\" \"),_c('p',[(_vm.dirty)?_c('button',{staticClass:\"button primary\",attrs:{\"disabled\":_vm.loading},on:{\"click\":_vm.saveChanges}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Save changes'))+\"\\n\\t\\t\")]):_vm._e()])],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*\n * @copyright 2019 Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @author 2019 Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport Vue from 'vue'\nimport Vuex from 'vuex'\n\nVue.use(Vuex)\n\nexport const mutations = {\n\tsetEnforced(state, enabled) {\n\t\tVue.set(state, 'enforced', enabled)\n\t},\n\tsetEnforcedGroups(state, total) {\n\t\tVue.set(state, 'enforcedGroups', total)\n\t},\n\tsetExcludedGroups(state, used) {\n\t\tVue.set(state, 'excludedGroups', used)\n\t}\n}\n\nexport const actions = {\n\tsave ({commit}, ) {\n\t\tcommit('setEnabled', false);\n\n\t\treturn generateCodes()\n\t\t\t.then(({codes, state}) => {\n\t\t\tcommit('setEnabled', state.enabled);\n\t\tcommit('setTotal', state.total);\n\t\tcommit('setUsed', state.used);\n\t\tcommit('setCodes', codes);\n\t\treturn true;\n\t});\n\t}\n}\n\nexport default new Vuex.Store({\n\tstrict: process.env.NODE_ENV !== 'production',\n\tstate: {\n\t\tenforced: false,\n\t\tenforcedGroups: [],\n\t\texcludedGroups: [],\n\t},\n\tmutations,\n\tactions\n})\n","import Vue from 'vue'\n\nimport AdminTwoFactor from './components/AdminTwoFactor.vue'\nimport store from './store/admin-security'\n\n__webpack_nonce__ = btoa(OC.requestToken)\n\nVue.prototype.t = t;\n\n// Not used here but required for legacy templates\nwindow.OC = window.OC || {};\nwindow.OC.Settings = window.OC.Settings || {};\n\nstore.replaceState(\n\tOCP.InitialState.loadState('settings', 'mandatory2FAState')\n)\n\nconst View = Vue.extend(AdminTwoFactor)\nnew View({\n\tstore\n}).$mount('#two-factor-auth-settings')\n"],"sourceRoot":""} \ No newline at end of file diff --git a/apps/settings/js/vue-settings-apps-users-management.js b/apps/settings/js/vue-settings-apps-users-management.js new file mode 100644 index 00000000000..37c8756a7f4 --- /dev/null +++ b/apps/settings/js/vue-settings-apps-users-management.js @@ -0,0 +1,113 @@ +!function(t){function e(e){for(var n,o,i=e[0],a=e[1],s=0,c=[];s<i.length;s++)o=i[s],Object.prototype.hasOwnProperty.call(r,o)&&r[o]&&c.push(r[o][0]),r[o]=0;for(n in a)Object.prototype.hasOwnProperty.call(a,n)&&(t[n]=a[n]);for(u&&u(e);c.length;)c.shift()()}var n={},r={2:0};function o(e){if(n[e])return n[e].exports;var r=n[e]={i:e,l:!1,exports:{}};return t[e].call(r.exports,r,r.exports,o),r.l=!0,r.exports}o.e=function(t){var e=[],n=r[t];if(0!==n)if(n)e.push(n[2]);else{var i=new Promise((function(e,o){n=r[t]=[e,o]}));e.push(n[2]=i);var a,s=document.createElement("script");s.charset="utf-8",s.timeout=120,o.nc&&s.setAttribute("nonce",o.nc),s.src=function(t){return o.p+"vue-"+({}[t]||t)+".js?v="+{0:"89d06f5525c1b061b6bb",4:"22b9f8b51449d0de5875",5:"d01635292ff764289c84",6:"2095f447189973aa4e3b"}[t]}(t);var u=new Error;a=function(e){s.onerror=s.onload=null,clearTimeout(c);var n=r[t];if(0!==n){if(n){var o=e&&("load"===e.type?"missing":e.type),i=e&&e.target&&e.target.src;u.message="Loading chunk "+t+" failed.\n("+o+": "+i+")",u.name="ChunkLoadError",u.type=o,u.request=i,n[1](u)}r[t]=void 0}};var c=setTimeout((function(){a({type:"timeout",target:s})}),12e4);s.onerror=s.onload=a,document.head.appendChild(s)}return Promise.all(e)},o.m=t,o.c=n,o.d=function(t,e,n){o.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},o.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},o.t=function(t,e){if(1&e&&(t=o(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)o.d(n,r,function(e){return t[e]}.bind(null,r));return n},o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,"a",e),e},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},o.p="/js/",o.oe=function(t){throw console.error(t),t};var i=window.webpackJsonpSettings=window.webpackJsonpSettings||[],a=i.push.bind(i);i.push=e,i=i.slice();for(var s=0;s<i.length;s++)e(i[s]);var u=a;o(o.s=63)}([function(t,e,n){"use strict";var r=n(4),o=n.n(r),i=n(17),a=n.n(i),s=function(t){return t.replace(/\/$/,"")};e.a={requireAdmin:function(){return a()()},get:function(t){return o.a.get(s(t))},post:function(t,e){return o.a.post(s(t),e)},patch:function(t,e){return o.a.patch(s(t),e)},put:function(t,e){return o.a.put(s(t),e)},delete:function(t,e){return o.a.delete(s(t),{data:e})}}},function(t,e,n){"use strict";var r=n(7),o=n(26),i=Object.prototype.toString;function a(t){return"[object Array]"===i.call(t)}function s(t){return null!==t&&"object"==typeof t}function u(t){return"[object Function]"===i.call(t)}function c(t,e){if(null!=t)if("object"!=typeof t&&(t=[t]),a(t))for(var n=0,r=t.length;n<r;n++)e.call(null,t[n],n,t);else for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&e.call(null,t[o],o,t)}t.exports={isArray:a,isArrayBuffer:function(t){return"[object ArrayBuffer]"===i.call(t)},isBuffer:o,isFormData:function(t){return"undefined"!=typeof FormData&&t instanceof FormData},isArrayBufferView:function(t){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(t):t&&t.buffer&&t.buffer instanceof ArrayBuffer},isString:function(t){return"string"==typeof t},isNumber:function(t){return"number"==typeof t},isObject:s,isUndefined:function(t){return void 0===t},isDate:function(t){return"[object Date]"===i.call(t)},isFile:function(t){return"[object File]"===i.call(t)},isBlob:function(t){return"[object Blob]"===i.call(t)},isFunction:u,isStream:function(t){return s(t)&&u(t.pipe)},isURLSearchParams:function(t){return"undefined"!=typeof URLSearchParams&&t instanceof URLSearchParams},isStandardBrowserEnv:function(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)},forEach:c,merge:function t(){var e={};function n(n,r){"object"==typeof e[r]&&"object"==typeof n?e[r]=t(e[r],n):e[r]=n}for(var r=0,o=arguments.length;r<o;r++)c(arguments[r],n);return e},deepMerge:function t(){var e={};function n(n,r){"object"==typeof e[r]&&"object"==typeof n?e[r]=t(e[r],n):e[r]="object"==typeof n?t({},n):n}for(var r=0,o=arguments.length;r<o;r++)c(arguments[r],n);return e},extend:function(t,e,n){return c(e,(function(e,o){t[o]=n&&"function"==typeof e?r(e,n):e})),t},trim:function(t){return t.replace(/^\s*/,"").replace(/\s*$/,"")}}},function(t,e,n){"use strict";n.r(e),function(t,n){ +/*! + * Vue.js v2.6.10 + * (c) 2014-2019 Evan You + * Released under the MIT License. + */ +var r=Object.freeze({});function o(t){return null==t}function i(t){return null!=t}function a(t){return!0===t}function s(t){return"string"==typeof t||"number"==typeof t||"symbol"==typeof t||"boolean"==typeof t}function u(t){return null!==t&&"object"==typeof t}var c=Object.prototype.toString;function f(t){return"[object Object]"===c.call(t)}function p(t){return"[object RegExp]"===c.call(t)}function l(t){var e=parseFloat(String(t));return e>=0&&Math.floor(e)===e&&isFinite(t)}function d(t){return i(t)&&"function"==typeof t.then&&"function"==typeof t.catch}function h(t){return null==t?"":Array.isArray(t)||f(t)&&t.toString===c?JSON.stringify(t,null,2):String(t)}function v(t){var e=parseFloat(t);return isNaN(e)?t:e}function m(t,e){for(var n=Object.create(null),r=t.split(","),o=0;o<r.length;o++)n[r[o]]=!0;return e?function(t){return n[t.toLowerCase()]}:function(t){return n[t]}}m("slot,component",!0);var y=m("key,ref,slot,slot-scope,is");function g(t,e){if(t.length){var n=t.indexOf(e);if(n>-1)return t.splice(n,1)}}var b=Object.prototype.hasOwnProperty;function _(t,e){return b.call(t,e)}function w(t){var e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}var O=/-(\w)/g,C=w((function(t){return t.replace(O,(function(t,e){return e?e.toUpperCase():""}))})),A=w((function(t){return t.charAt(0).toUpperCase()+t.slice(1)})),x=/\B([A-Z])/g,E=w((function(t){return t.replace(x,"-$1").toLowerCase()}));var $=Function.prototype.bind?function(t,e){return t.bind(e)}:function(t,e){function n(n){var r=arguments.length;return r?r>1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n};function k(t,e){e=e||0;for(var n=t.length-e,r=new Array(n);n--;)r[n]=t[n+e];return r}function T(t,e){for(var n in e)t[n]=e[n];return t}function S(t){for(var e={},n=0;n<t.length;n++)t[n]&&T(e,t[n]);return e}function j(t,e,n){}var I=function(t,e,n){return!1},L=function(t){return t};function P(t,e){if(t===e)return!0;var n=u(t),r=u(e);if(!n||!r)return!n&&!r&&String(t)===String(e);try{var o=Array.isArray(t),i=Array.isArray(e);if(o&&i)return t.length===e.length&&t.every((function(t,n){return P(t,e[n])}));if(t instanceof Date&&e instanceof Date)return t.getTime()===e.getTime();if(o||i)return!1;var a=Object.keys(t),s=Object.keys(e);return a.length===s.length&&a.every((function(n){return P(t[n],e[n])}))}catch(t){return!1}}function N(t,e){for(var n=0;n<t.length;n++)if(P(t[n],e))return n;return-1}function R(t){var e=!1;return function(){e||(e=!0,t.apply(this,arguments))}}var U="data-server-rendered",D=["component","directive","filter"],M=["beforeCreate","created","beforeMount","mounted","beforeUpdate","updated","beforeDestroy","destroyed","activated","deactivated","errorCaptured","serverPrefetch"],F={optionMergeStrategies:Object.create(null),silent:!1,productionTip:!1,devtools:!1,performance:!1,errorHandler:null,warnHandler:null,ignoredElements:[],keyCodes:Object.create(null),isReservedTag:I,isReservedAttr:I,isUnknownElement:I,getTagNamespace:j,parsePlatformTagName:L,mustUseProp:I,async:!0,_lifecycleHooks:M},B=/a-zA-Z\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C-\u200D\u203F-\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD/;function H(t,e,n,r){Object.defineProperty(t,e,{value:n,enumerable:!!r,writable:!0,configurable:!0})}var q=new RegExp("[^"+B.source+".$_\\d]");var z,V="__proto__"in{},G="undefined"!=typeof window,W="undefined"!=typeof WXEnvironment&&!!WXEnvironment.platform,K=W&&WXEnvironment.platform.toLowerCase(),X=G&&window.navigator.userAgent.toLowerCase(),Y=X&&/msie|trident/.test(X),J=X&&X.indexOf("msie 9.0")>0,Q=X&&X.indexOf("edge/")>0,Z=(X&&X.indexOf("android"),X&&/iphone|ipad|ipod|ios/.test(X)||"ios"===K),tt=(X&&/chrome\/\d+/.test(X),X&&/phantomjs/.test(X),X&&X.match(/firefox\/(\d+)/)),et={}.watch,nt=!1;if(G)try{var rt={};Object.defineProperty(rt,"passive",{get:function(){nt=!0}}),window.addEventListener("test-passive",null,rt)}catch(t){}var ot=function(){return void 0===z&&(z=!G&&!W&&void 0!==t&&(t.process&&"server"===t.process.env.VUE_ENV)),z},it=G&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function at(t){return"function"==typeof t&&/native code/.test(t.toString())}var st,ut="undefined"!=typeof Symbol&&at(Symbol)&&"undefined"!=typeof Reflect&&at(Reflect.ownKeys);st="undefined"!=typeof Set&&at(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var ct=j,ft=0,pt=function(){this.id=ft++,this.subs=[]};pt.prototype.addSub=function(t){this.subs.push(t)},pt.prototype.removeSub=function(t){g(this.subs,t)},pt.prototype.depend=function(){pt.target&&pt.target.addDep(this)},pt.prototype.notify=function(){var t=this.subs.slice();for(var e=0,n=t.length;e<n;e++)t[e].update()},pt.target=null;var lt=[];function dt(t){lt.push(t),pt.target=t}function ht(){lt.pop(),pt.target=lt[lt.length-1]}var vt=function(t,e,n,r,o,i,a,s){this.tag=t,this.data=e,this.children=n,this.text=r,this.elm=o,this.ns=void 0,this.context=i,this.fnContext=void 0,this.fnOptions=void 0,this.fnScopeId=void 0,this.key=e&&e.key,this.componentOptions=a,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1,this.asyncFactory=s,this.asyncMeta=void 0,this.isAsyncPlaceholder=!1},mt={child:{configurable:!0}};mt.child.get=function(){return this.componentInstance},Object.defineProperties(vt.prototype,mt);var yt=function(t){void 0===t&&(t="");var e=new vt;return e.text=t,e.isComment=!0,e};function gt(t){return new vt(void 0,void 0,void 0,String(t))}function bt(t){var e=new vt(t.tag,t.data,t.children&&t.children.slice(),t.text,t.elm,t.context,t.componentOptions,t.asyncFactory);return e.ns=t.ns,e.isStatic=t.isStatic,e.key=t.key,e.isComment=t.isComment,e.fnContext=t.fnContext,e.fnOptions=t.fnOptions,e.fnScopeId=t.fnScopeId,e.asyncMeta=t.asyncMeta,e.isCloned=!0,e}var _t=Array.prototype,wt=Object.create(_t);["push","pop","shift","unshift","splice","sort","reverse"].forEach((function(t){var e=_t[t];H(wt,t,(function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];var o,i=e.apply(this,n),a=this.__ob__;switch(t){case"push":case"unshift":o=n;break;case"splice":o=n.slice(2)}return o&&a.observeArray(o),a.dep.notify(),i}))}));var Ot=Object.getOwnPropertyNames(wt),Ct=!0;function At(t){Ct=t}var xt=function(t){this.value=t,this.dep=new pt,this.vmCount=0,H(t,"__ob__",this),Array.isArray(t)?(V?function(t,e){t.__proto__=e}(t,wt):function(t,e,n){for(var r=0,o=n.length;r<o;r++){var i=n[r];H(t,i,e[i])}}(t,wt,Ot),this.observeArray(t)):this.walk(t)};function Et(t,e){var n;if(u(t)&&!(t instanceof vt))return _(t,"__ob__")&&t.__ob__ instanceof xt?n=t.__ob__:Ct&&!ot()&&(Array.isArray(t)||f(t))&&Object.isExtensible(t)&&!t._isVue&&(n=new xt(t)),e&&n&&n.vmCount++,n}function $t(t,e,n,r,o){var i=new pt,a=Object.getOwnPropertyDescriptor(t,e);if(!a||!1!==a.configurable){var s=a&&a.get,u=a&&a.set;s&&!u||2!==arguments.length||(n=t[e]);var c=!o&&Et(n);Object.defineProperty(t,e,{enumerable:!0,configurable:!0,get:function(){var e=s?s.call(t):n;return pt.target&&(i.depend(),c&&(c.dep.depend(),Array.isArray(e)&&function t(e){for(var n=void 0,r=0,o=e.length;r<o;r++)(n=e[r])&&n.__ob__&&n.__ob__.dep.depend(),Array.isArray(n)&&t(n)}(e))),e},set:function(e){var r=s?s.call(t):n;e===r||e!=e&&r!=r||s&&!u||(u?u.call(t,e):n=e,c=!o&&Et(e),i.notify())}})}}function kt(t,e,n){if(Array.isArray(t)&&l(e))return t.length=Math.max(t.length,e),t.splice(e,1,n),n;if(e in t&&!(e in Object.prototype))return t[e]=n,n;var r=t.__ob__;return t._isVue||r&&r.vmCount?n:r?($t(r.value,e,n),r.dep.notify(),n):(t[e]=n,n)}function Tt(t,e){if(Array.isArray(t)&&l(e))t.splice(e,1);else{var n=t.__ob__;t._isVue||n&&n.vmCount||_(t,e)&&(delete t[e],n&&n.dep.notify())}}xt.prototype.walk=function(t){for(var e=Object.keys(t),n=0;n<e.length;n++)$t(t,e[n])},xt.prototype.observeArray=function(t){for(var e=0,n=t.length;e<n;e++)Et(t[e])};var St=F.optionMergeStrategies;function jt(t,e){if(!e)return t;for(var n,r,o,i=ut?Reflect.ownKeys(e):Object.keys(e),a=0;a<i.length;a++)"__ob__"!==(n=i[a])&&(r=t[n],o=e[n],_(t,n)?r!==o&&f(r)&&f(o)&&jt(r,o):kt(t,n,o));return t}function It(t,e,n){return n?function(){var r="function"==typeof e?e.call(n,n):e,o="function"==typeof t?t.call(n,n):t;return r?jt(r,o):o}:e?t?function(){return jt("function"==typeof e?e.call(this,this):e,"function"==typeof t?t.call(this,this):t)}:e:t}function Lt(t,e){var n=e?t?t.concat(e):Array.isArray(e)?e:[e]:t;return n?function(t){for(var e=[],n=0;n<t.length;n++)-1===e.indexOf(t[n])&&e.push(t[n]);return e}(n):n}function Pt(t,e,n,r){var o=Object.create(t||null);return e?T(o,e):o}St.data=function(t,e,n){return n?It(t,e,n):e&&"function"!=typeof e?t:It(t,e)},M.forEach((function(t){St[t]=Lt})),D.forEach((function(t){St[t+"s"]=Pt})),St.watch=function(t,e,n,r){if(t===et&&(t=void 0),e===et&&(e=void 0),!e)return Object.create(t||null);if(!t)return e;var o={};for(var i in T(o,t),e){var a=o[i],s=e[i];a&&!Array.isArray(a)&&(a=[a]),o[i]=a?a.concat(s):Array.isArray(s)?s:[s]}return o},St.props=St.methods=St.inject=St.computed=function(t,e,n,r){if(!t)return e;var o=Object.create(null);return T(o,t),e&&T(o,e),o},St.provide=It;var Nt=function(t,e){return void 0===e?t:e};function Rt(t,e,n){if("function"==typeof e&&(e=e.options),function(t,e){var n=t.props;if(n){var r,o,i={};if(Array.isArray(n))for(r=n.length;r--;)"string"==typeof(o=n[r])&&(i[C(o)]={type:null});else if(f(n))for(var a in n)o=n[a],i[C(a)]=f(o)?o:{type:o};else 0;t.props=i}}(e),function(t,e){var n=t.inject;if(n){var r=t.inject={};if(Array.isArray(n))for(var o=0;o<n.length;o++)r[n[o]]={from:n[o]};else if(f(n))for(var i in n){var a=n[i];r[i]=f(a)?T({from:i},a):{from:a}}else 0}}(e),function(t){var e=t.directives;if(e)for(var n in e){var r=e[n];"function"==typeof r&&(e[n]={bind:r,update:r})}}(e),!e._base&&(e.extends&&(t=Rt(t,e.extends,n)),e.mixins))for(var r=0,o=e.mixins.length;r<o;r++)t=Rt(t,e.mixins[r],n);var i,a={};for(i in t)s(i);for(i in e)_(t,i)||s(i);function s(r){var o=St[r]||Nt;a[r]=o(t[r],e[r],n,r)}return a}function Ut(t,e,n,r){if("string"==typeof n){var o=t[e];if(_(o,n))return o[n];var i=C(n);if(_(o,i))return o[i];var a=A(i);return _(o,a)?o[a]:o[n]||o[i]||o[a]}}function Dt(t,e,n,r){var o=e[t],i=!_(n,t),a=n[t],s=Bt(Boolean,o.type);if(s>-1)if(i&&!_(o,"default"))a=!1;else if(""===a||a===E(t)){var u=Bt(String,o.type);(u<0||s<u)&&(a=!0)}if(void 0===a){a=function(t,e,n){if(!_(e,"default"))return;var r=e.default;0;if(t&&t.$options.propsData&&void 0===t.$options.propsData[n]&&void 0!==t._props[n])return t._props[n];return"function"==typeof r&&"Function"!==Mt(e.type)?r.call(t):r}(r,o,t);var c=Ct;At(!0),Et(a),At(c)}return a}function Mt(t){var e=t&&t.toString().match(/^\s*function (\w+)/);return e?e[1]:""}function Ft(t,e){return Mt(t)===Mt(e)}function Bt(t,e){if(!Array.isArray(e))return Ft(e,t)?0:-1;for(var n=0,r=e.length;n<r;n++)if(Ft(e[n],t))return n;return-1}function Ht(t,e,n){dt();try{if(e)for(var r=e;r=r.$parent;){var o=r.$options.errorCaptured;if(o)for(var i=0;i<o.length;i++)try{if(!1===o[i].call(r,t,e,n))return}catch(t){zt(t,r,"errorCaptured hook")}}zt(t,e,n)}finally{ht()}}function qt(t,e,n,r,o){var i;try{(i=n?t.apply(e,n):t.call(e))&&!i._isVue&&d(i)&&!i._handled&&(i.catch((function(t){return Ht(t,r,o+" (Promise/async)")})),i._handled=!0)}catch(t){Ht(t,r,o)}return i}function zt(t,e,n){if(F.errorHandler)try{return F.errorHandler.call(null,t,e,n)}catch(e){e!==t&&Vt(e,null,"config.errorHandler")}Vt(t,e,n)}function Vt(t,e,n){if(!G&&!W||"undefined"==typeof console)throw t;console.error(t)}var Gt,Wt=!1,Kt=[],Xt=!1;function Yt(){Xt=!1;var t=Kt.slice(0);Kt.length=0;for(var e=0;e<t.length;e++)t[e]()}if("undefined"!=typeof Promise&&at(Promise)){var Jt=Promise.resolve();Gt=function(){Jt.then(Yt),Z&&setTimeout(j)},Wt=!0}else if(Y||"undefined"==typeof MutationObserver||!at(MutationObserver)&&"[object MutationObserverConstructor]"!==MutationObserver.toString())Gt=void 0!==n&&at(n)?function(){n(Yt)}:function(){setTimeout(Yt,0)};else{var Qt=1,Zt=new MutationObserver(Yt),te=document.createTextNode(String(Qt));Zt.observe(te,{characterData:!0}),Gt=function(){Qt=(Qt+1)%2,te.data=String(Qt)},Wt=!0}function ee(t,e){var n;if(Kt.push((function(){if(t)try{t.call(e)}catch(t){Ht(t,e,"nextTick")}else n&&n(e)})),Xt||(Xt=!0,Gt()),!t&&"undefined"!=typeof Promise)return new Promise((function(t){n=t}))}var ne=new st;function re(t){!function t(e,n){var r,o;var i=Array.isArray(e);if(!i&&!u(e)||Object.isFrozen(e)||e instanceof vt)return;if(e.__ob__){var a=e.__ob__.dep.id;if(n.has(a))return;n.add(a)}if(i)for(r=e.length;r--;)t(e[r],n);else for(o=Object.keys(e),r=o.length;r--;)t(e[o[r]],n)}(t,ne),ne.clear()}var oe=w((function(t){var e="&"===t.charAt(0),n="~"===(t=e?t.slice(1):t).charAt(0),r="!"===(t=n?t.slice(1):t).charAt(0);return{name:t=r?t.slice(1):t,once:n,capture:r,passive:e}}));function ie(t,e){function n(){var t=arguments,r=n.fns;if(!Array.isArray(r))return qt(r,null,arguments,e,"v-on handler");for(var o=r.slice(),i=0;i<o.length;i++)qt(o[i],null,t,e,"v-on handler")}return n.fns=t,n}function ae(t,e,n,r,i,s){var u,c,f,p;for(u in t)c=t[u],f=e[u],p=oe(u),o(c)||(o(f)?(o(c.fns)&&(c=t[u]=ie(c,s)),a(p.once)&&(c=t[u]=i(p.name,c,p.capture)),n(p.name,c,p.capture,p.passive,p.params)):c!==f&&(f.fns=c,t[u]=f));for(u in e)o(t[u])&&r((p=oe(u)).name,e[u],p.capture)}function se(t,e,n){var r;t instanceof vt&&(t=t.data.hook||(t.data.hook={}));var s=t[e];function u(){n.apply(this,arguments),g(r.fns,u)}o(s)?r=ie([u]):i(s.fns)&&a(s.merged)?(r=s).fns.push(u):r=ie([s,u]),r.merged=!0,t[e]=r}function ue(t,e,n,r,o){if(i(e)){if(_(e,n))return t[n]=e[n],o||delete e[n],!0;if(_(e,r))return t[n]=e[r],o||delete e[r],!0}return!1}function ce(t){return s(t)?[gt(t)]:Array.isArray(t)?function t(e,n){var r=[];var u,c,f,p;for(u=0;u<e.length;u++)o(c=e[u])||"boolean"==typeof c||(f=r.length-1,p=r[f],Array.isArray(c)?c.length>0&&(fe((c=t(c,(n||"")+"_"+u))[0])&&fe(p)&&(r[f]=gt(p.text+c[0].text),c.shift()),r.push.apply(r,c)):s(c)?fe(p)?r[f]=gt(p.text+c):""!==c&&r.push(gt(c)):fe(c)&&fe(p)?r[f]=gt(p.text+c.text):(a(e._isVList)&&i(c.tag)&&o(c.key)&&i(n)&&(c.key="__vlist"+n+"_"+u+"__"),r.push(c)));return r}(t):void 0}function fe(t){return i(t)&&i(t.text)&&!1===t.isComment}function pe(t,e){if(t){for(var n=Object.create(null),r=ut?Reflect.ownKeys(t):Object.keys(t),o=0;o<r.length;o++){var i=r[o];if("__ob__"!==i){for(var a=t[i].from,s=e;s;){if(s._provided&&_(s._provided,a)){n[i]=s._provided[a];break}s=s.$parent}if(!s)if("default"in t[i]){var u=t[i].default;n[i]="function"==typeof u?u.call(e):u}else 0}}return n}}function le(t,e){if(!t||!t.length)return{};for(var n={},r=0,o=t.length;r<o;r++){var i=t[r],a=i.data;if(a&&a.attrs&&a.attrs.slot&&delete a.attrs.slot,i.context!==e&&i.fnContext!==e||!a||null==a.slot)(n.default||(n.default=[])).push(i);else{var s=a.slot,u=n[s]||(n[s]=[]);"template"===i.tag?u.push.apply(u,i.children||[]):u.push(i)}}for(var c in n)n[c].every(de)&&delete n[c];return n}function de(t){return t.isComment&&!t.asyncFactory||" "===t.text}function he(t,e,n){var o,i=Object.keys(e).length>0,a=t?!!t.$stable:!i,s=t&&t.$key;if(t){if(t._normalized)return t._normalized;if(a&&n&&n!==r&&s===n.$key&&!i&&!n.$hasNormal)return n;for(var u in o={},t)t[u]&&"$"!==u[0]&&(o[u]=ve(e,u,t[u]))}else o={};for(var c in e)c in o||(o[c]=me(e,c));return t&&Object.isExtensible(t)&&(t._normalized=o),H(o,"$stable",a),H(o,"$key",s),H(o,"$hasNormal",i),o}function ve(t,e,n){var r=function(){var t=arguments.length?n.apply(null,arguments):n({});return(t=t&&"object"==typeof t&&!Array.isArray(t)?[t]:ce(t))&&(0===t.length||1===t.length&&t[0].isComment)?void 0:t};return n.proxy&&Object.defineProperty(t,e,{get:r,enumerable:!0,configurable:!0}),r}function me(t,e){return function(){return t[e]}}function ye(t,e){var n,r,o,a,s;if(Array.isArray(t)||"string"==typeof t)for(n=new Array(t.length),r=0,o=t.length;r<o;r++)n[r]=e(t[r],r);else if("number"==typeof t)for(n=new Array(t),r=0;r<t;r++)n[r]=e(r+1,r);else if(u(t))if(ut&&t[Symbol.iterator]){n=[];for(var c=t[Symbol.iterator](),f=c.next();!f.done;)n.push(e(f.value,n.length)),f=c.next()}else for(a=Object.keys(t),n=new Array(a.length),r=0,o=a.length;r<o;r++)s=a[r],n[r]=e(t[s],s,r);return i(n)||(n=[]),n._isVList=!0,n}function ge(t,e,n,r){var o,i=this.$scopedSlots[t];i?(n=n||{},r&&(n=T(T({},r),n)),o=i(n)||e):o=this.$slots[t]||e;var a=n&&n.slot;return a?this.$createElement("template",{slot:a},o):o}function be(t){return Ut(this.$options,"filters",t)||L}function _e(t,e){return Array.isArray(t)?-1===t.indexOf(e):t!==e}function we(t,e,n,r,o){var i=F.keyCodes[e]||n;return o&&r&&!F.keyCodes[e]?_e(o,r):i?_e(i,t):r?E(r)!==e:void 0}function Oe(t,e,n,r,o){if(n)if(u(n)){var i;Array.isArray(n)&&(n=S(n));var a=function(a){if("class"===a||"style"===a||y(a))i=t;else{var s=t.attrs&&t.attrs.type;i=r||F.mustUseProp(e,s,a)?t.domProps||(t.domProps={}):t.attrs||(t.attrs={})}var u=C(a),c=E(a);u in i||c in i||(i[a]=n[a],o&&((t.on||(t.on={}))["update:"+a]=function(t){n[a]=t}))};for(var s in n)a(s)}else;return t}function Ce(t,e){var n=this._staticTrees||(this._staticTrees=[]),r=n[t];return r&&!e?r:(xe(r=n[t]=this.$options.staticRenderFns[t].call(this._renderProxy,null,this),"__static__"+t,!1),r)}function Ae(t,e,n){return xe(t,"__once__"+e+(n?"_"+n:""),!0),t}function xe(t,e,n){if(Array.isArray(t))for(var r=0;r<t.length;r++)t[r]&&"string"!=typeof t[r]&&Ee(t[r],e+"_"+r,n);else Ee(t,e,n)}function Ee(t,e,n){t.isStatic=!0,t.key=e,t.isOnce=n}function $e(t,e){if(e)if(f(e)){var n=t.on=t.on?T({},t.on):{};for(var r in e){var o=n[r],i=e[r];n[r]=o?[].concat(o,i):i}}else;return t}function ke(t,e,n,r){e=e||{$stable:!n};for(var o=0;o<t.length;o++){var i=t[o];Array.isArray(i)?ke(i,e,n):i&&(i.proxy&&(i.fn.proxy=!0),e[i.key]=i.fn)}return r&&(e.$key=r),e}function Te(t,e){for(var n=0;n<e.length;n+=2){var r=e[n];"string"==typeof r&&r&&(t[e[n]]=e[n+1])}return t}function Se(t,e){return"string"==typeof t?e+t:t}function je(t){t._o=Ae,t._n=v,t._s=h,t._l=ye,t._t=ge,t._q=P,t._i=N,t._m=Ce,t._f=be,t._k=we,t._b=Oe,t._v=gt,t._e=yt,t._u=ke,t._g=$e,t._d=Te,t._p=Se}function Ie(t,e,n,o,i){var s,u=this,c=i.options;_(o,"_uid")?(s=Object.create(o))._original=o:(s=o,o=o._original);var f=a(c._compiled),p=!f;this.data=t,this.props=e,this.children=n,this.parent=o,this.listeners=t.on||r,this.injections=pe(c.inject,o),this.slots=function(){return u.$slots||he(t.scopedSlots,u.$slots=le(n,o)),u.$slots},Object.defineProperty(this,"scopedSlots",{enumerable:!0,get:function(){return he(t.scopedSlots,this.slots())}}),f&&(this.$options=c,this.$slots=this.slots(),this.$scopedSlots=he(t.scopedSlots,this.$slots)),c._scopeId?this._c=function(t,e,n,r){var i=Be(s,t,e,n,r,p);return i&&!Array.isArray(i)&&(i.fnScopeId=c._scopeId,i.fnContext=o),i}:this._c=function(t,e,n,r){return Be(s,t,e,n,r,p)}}function Le(t,e,n,r,o){var i=bt(t);return i.fnContext=n,i.fnOptions=r,e.slot&&((i.data||(i.data={})).slot=e.slot),i}function Pe(t,e){for(var n in e)t[C(n)]=e[n]}je(Ie.prototype);var Ne={init:function(t,e){if(t.componentInstance&&!t.componentInstance._isDestroyed&&t.data.keepAlive){var n=t;Ne.prepatch(n,n)}else{(t.componentInstance=function(t,e){var n={_isComponent:!0,_parentVnode:t,parent:e},r=t.data.inlineTemplate;i(r)&&(n.render=r.render,n.staticRenderFns=r.staticRenderFns);return new t.componentOptions.Ctor(n)}(t,Je)).$mount(e?t.elm:void 0,e)}},prepatch:function(t,e){var n=e.componentOptions;!function(t,e,n,o,i){0;var a=o.data.scopedSlots,s=t.$scopedSlots,u=!!(a&&!a.$stable||s!==r&&!s.$stable||a&&t.$scopedSlots.$key!==a.$key),c=!!(i||t.$options._renderChildren||u);t.$options._parentVnode=o,t.$vnode=o,t._vnode&&(t._vnode.parent=o);if(t.$options._renderChildren=i,t.$attrs=o.data.attrs||r,t.$listeners=n||r,e&&t.$options.props){At(!1);for(var f=t._props,p=t.$options._propKeys||[],l=0;l<p.length;l++){var d=p[l],h=t.$options.props;f[d]=Dt(d,h,e,t)}At(!0),t.$options.propsData=e}n=n||r;var v=t.$options._parentListeners;t.$options._parentListeners=n,Ye(t,n,v),c&&(t.$slots=le(i,o.context),t.$forceUpdate());0}(e.componentInstance=t.componentInstance,n.propsData,n.listeners,e,n.children)},insert:function(t){var e,n=t.context,r=t.componentInstance;r._isMounted||(r._isMounted=!0,en(r,"mounted")),t.data.keepAlive&&(n._isMounted?((e=r)._inactive=!1,rn.push(e)):tn(r,!0))},destroy:function(t){var e=t.componentInstance;e._isDestroyed||(t.data.keepAlive?function t(e,n){if(n&&(e._directInactive=!0,Ze(e)))return;if(!e._inactive){e._inactive=!0;for(var r=0;r<e.$children.length;r++)t(e.$children[r]);en(e,"deactivated")}}(e,!0):e.$destroy())}},Re=Object.keys(Ne);function Ue(t,e,n,s,c){if(!o(t)){var f=n.$options._base;if(u(t)&&(t=f.extend(t)),"function"==typeof t){var p;if(o(t.cid)&&void 0===(t=function(t,e){if(a(t.error)&&i(t.errorComp))return t.errorComp;if(i(t.resolved))return t.resolved;var n=qe;n&&i(t.owners)&&-1===t.owners.indexOf(n)&&t.owners.push(n);if(a(t.loading)&&i(t.loadingComp))return t.loadingComp;if(n&&!i(t.owners)){var r=t.owners=[n],s=!0,c=null,f=null;n.$on("hook:destroyed",(function(){return g(r,n)}));var p=function(t){for(var e=0,n=r.length;e<n;e++)r[e].$forceUpdate();t&&(r.length=0,null!==c&&(clearTimeout(c),c=null),null!==f&&(clearTimeout(f),f=null))},l=R((function(n){t.resolved=ze(n,e),s?r.length=0:p(!0)})),h=R((function(e){i(t.errorComp)&&(t.error=!0,p(!0))})),v=t(l,h);return u(v)&&(d(v)?o(t.resolved)&&v.then(l,h):d(v.component)&&(v.component.then(l,h),i(v.error)&&(t.errorComp=ze(v.error,e)),i(v.loading)&&(t.loadingComp=ze(v.loading,e),0===v.delay?t.loading=!0:c=setTimeout((function(){c=null,o(t.resolved)&&o(t.error)&&(t.loading=!0,p(!1))}),v.delay||200)),i(v.timeout)&&(f=setTimeout((function(){f=null,o(t.resolved)&&h(null)}),v.timeout)))),s=!1,t.loading?t.loadingComp:t.resolved}}(p=t,f)))return function(t,e,n,r,o){var i=yt();return i.asyncFactory=t,i.asyncMeta={data:e,context:n,children:r,tag:o},i}(p,e,n,s,c);e=e||{},An(t),i(e.model)&&function(t,e){var n=t.model&&t.model.prop||"value",r=t.model&&t.model.event||"input";(e.attrs||(e.attrs={}))[n]=e.model.value;var o=e.on||(e.on={}),a=o[r],s=e.model.callback;i(a)?(Array.isArray(a)?-1===a.indexOf(s):a!==s)&&(o[r]=[s].concat(a)):o[r]=s}(t.options,e);var l=function(t,e,n){var r=e.options.props;if(!o(r)){var a={},s=t.attrs,u=t.props;if(i(s)||i(u))for(var c in r){var f=E(c);ue(a,u,c,f,!0)||ue(a,s,c,f,!1)}return a}}(e,t);if(a(t.options.functional))return function(t,e,n,o,a){var s=t.options,u={},c=s.props;if(i(c))for(var f in c)u[f]=Dt(f,c,e||r);else i(n.attrs)&&Pe(u,n.attrs),i(n.props)&&Pe(u,n.props);var p=new Ie(n,u,a,o,t),l=s.render.call(null,p._c,p);if(l instanceof vt)return Le(l,n,p.parent,s,p);if(Array.isArray(l)){for(var d=ce(l)||[],h=new Array(d.length),v=0;v<d.length;v++)h[v]=Le(d[v],n,p.parent,s,p);return h}}(t,l,e,n,s);var h=e.on;if(e.on=e.nativeOn,a(t.options.abstract)){var v=e.slot;e={},v&&(e.slot=v)}!function(t){for(var e=t.hook||(t.hook={}),n=0;n<Re.length;n++){var r=Re[n],o=e[r],i=Ne[r];o===i||o&&o._merged||(e[r]=o?De(i,o):i)}}(e);var m=t.options.name||c;return new vt("vue-component-"+t.cid+(m?"-"+m:""),e,void 0,void 0,void 0,n,{Ctor:t,propsData:l,listeners:h,tag:c,children:s},p)}}}function De(t,e){var n=function(n,r){t(n,r),e(n,r)};return n._merged=!0,n}var Me=1,Fe=2;function Be(t,e,n,r,c,f){return(Array.isArray(n)||s(n))&&(c=r,r=n,n=void 0),a(f)&&(c=Fe),function(t,e,n,r,s){if(i(n)&&i(n.__ob__))return yt();i(n)&&i(n.is)&&(e=n.is);if(!e)return yt();0;Array.isArray(r)&&"function"==typeof r[0]&&((n=n||{}).scopedSlots={default:r[0]},r.length=0);s===Fe?r=ce(r):s===Me&&(r=function(t){for(var e=0;e<t.length;e++)if(Array.isArray(t[e]))return Array.prototype.concat.apply([],t);return t}(r));var c,f;if("string"==typeof e){var p;f=t.$vnode&&t.$vnode.ns||F.getTagNamespace(e),c=F.isReservedTag(e)?new vt(F.parsePlatformTagName(e),n,r,void 0,void 0,t):n&&n.pre||!i(p=Ut(t.$options,"components",e))?new vt(e,n,r,void 0,void 0,t):Ue(p,n,t,r,e)}else c=Ue(e,n,t,r);return Array.isArray(c)?c:i(c)?(i(f)&&function t(e,n,r){e.ns=n;"foreignObject"===e.tag&&(n=void 0,r=!0);if(i(e.children))for(var s=0,u=e.children.length;s<u;s++){var c=e.children[s];i(c.tag)&&(o(c.ns)||a(r)&&"svg"!==c.tag)&&t(c,n,r)}}(c,f),i(n)&&function(t){u(t.style)&&re(t.style);u(t.class)&&re(t.class)}(n),c):yt()}(t,e,n,r,c)}var He,qe=null;function ze(t,e){return(t.__esModule||ut&&"Module"===t[Symbol.toStringTag])&&(t=t.default),u(t)?e.extend(t):t}function Ve(t){return t.isComment&&t.asyncFactory}function Ge(t){if(Array.isArray(t))for(var e=0;e<t.length;e++){var n=t[e];if(i(n)&&(i(n.componentOptions)||Ve(n)))return n}}function We(t,e){He.$on(t,e)}function Ke(t,e){He.$off(t,e)}function Xe(t,e){var n=He;return function r(){var o=e.apply(null,arguments);null!==o&&n.$off(t,r)}}function Ye(t,e,n){He=t,ae(e,n||{},We,Ke,Xe,t),He=void 0}var Je=null;function Qe(t){var e=Je;return Je=t,function(){Je=e}}function Ze(t){for(;t&&(t=t.$parent);)if(t._inactive)return!0;return!1}function tn(t,e){if(e){if(t._directInactive=!1,Ze(t))return}else if(t._directInactive)return;if(t._inactive||null===t._inactive){t._inactive=!1;for(var n=0;n<t.$children.length;n++)tn(t.$children[n]);en(t,"activated")}}function en(t,e){dt();var n=t.$options[e],r=e+" hook";if(n)for(var o=0,i=n.length;o<i;o++)qt(n[o],t,null,t,r);t._hasHookEvent&&t.$emit("hook:"+e),ht()}var nn=[],rn=[],on={},an=!1,sn=!1,un=0;var cn=0,fn=Date.now;if(G&&!Y){var pn=window.performance;pn&&"function"==typeof pn.now&&fn()>document.createEvent("Event").timeStamp&&(fn=function(){return pn.now()})}function ln(){var t,e;for(cn=fn(),sn=!0,nn.sort((function(t,e){return t.id-e.id})),un=0;un<nn.length;un++)(t=nn[un]).before&&t.before(),e=t.id,on[e]=null,t.run();var n=rn.slice(),r=nn.slice();un=nn.length=rn.length=0,on={},an=sn=!1,function(t){for(var e=0;e<t.length;e++)t[e]._inactive=!0,tn(t[e],!0)}(n),function(t){var e=t.length;for(;e--;){var n=t[e],r=n.vm;r._watcher===n&&r._isMounted&&!r._isDestroyed&&en(r,"updated")}}(r),it&&F.devtools&&it.emit("flush")}var dn=0,hn=function(t,e,n,r,o){this.vm=t,o&&(t._watcher=this),t._watchers.push(this),r?(this.deep=!!r.deep,this.user=!!r.user,this.lazy=!!r.lazy,this.sync=!!r.sync,this.before=r.before):this.deep=this.user=this.lazy=this.sync=!1,this.cb=n,this.id=++dn,this.active=!0,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new st,this.newDepIds=new st,this.expression="","function"==typeof e?this.getter=e:(this.getter=function(t){if(!q.test(t)){var e=t.split(".");return function(t){for(var n=0;n<e.length;n++){if(!t)return;t=t[e[n]]}return t}}}(e),this.getter||(this.getter=j)),this.value=this.lazy?void 0:this.get()};hn.prototype.get=function(){var t;dt(this);var e=this.vm;try{t=this.getter.call(e,e)}catch(t){if(!this.user)throw t;Ht(t,e,'getter for watcher "'+this.expression+'"')}finally{this.deep&&re(t),ht(),this.cleanupDeps()}return t},hn.prototype.addDep=function(t){var e=t.id;this.newDepIds.has(e)||(this.newDepIds.add(e),this.newDeps.push(t),this.depIds.has(e)||t.addSub(this))},hn.prototype.cleanupDeps=function(){for(var t=this.deps.length;t--;){var e=this.deps[t];this.newDepIds.has(e.id)||e.removeSub(this)}var n=this.depIds;this.depIds=this.newDepIds,this.newDepIds=n,this.newDepIds.clear(),n=this.deps,this.deps=this.newDeps,this.newDeps=n,this.newDeps.length=0},hn.prototype.update=function(){this.lazy?this.dirty=!0:this.sync?this.run():function(t){var e=t.id;if(null==on[e]){if(on[e]=!0,sn){for(var n=nn.length-1;n>un&&nn[n].id>t.id;)n--;nn.splice(n+1,0,t)}else nn.push(t);an||(an=!0,ee(ln))}}(this)},hn.prototype.run=function(){if(this.active){var t=this.get();if(t!==this.value||u(t)||this.deep){var e=this.value;if(this.value=t,this.user)try{this.cb.call(this.vm,t,e)}catch(t){Ht(t,this.vm,'callback for watcher "'+this.expression+'"')}else this.cb.call(this.vm,t,e)}}},hn.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},hn.prototype.depend=function(){for(var t=this.deps.length;t--;)this.deps[t].depend()},hn.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||g(this.vm._watchers,this);for(var t=this.deps.length;t--;)this.deps[t].removeSub(this);this.active=!1}};var vn={enumerable:!0,configurable:!0,get:j,set:j};function mn(t,e,n){vn.get=function(){return this[e][n]},vn.set=function(t){this[e][n]=t},Object.defineProperty(t,n,vn)}function yn(t){t._watchers=[];var e=t.$options;e.props&&function(t,e){var n=t.$options.propsData||{},r=t._props={},o=t.$options._propKeys=[];t.$parent&&At(!1);var i=function(i){o.push(i);var a=Dt(i,e,n,t);$t(r,i,a),i in t||mn(t,"_props",i)};for(var a in e)i(a);At(!0)}(t,e.props),e.methods&&function(t,e){t.$options.props;for(var n in e)t[n]="function"!=typeof e[n]?j:$(e[n],t)}(t,e.methods),e.data?function(t){var e=t.$options.data;f(e=t._data="function"==typeof e?function(t,e){dt();try{return t.call(e,e)}catch(t){return Ht(t,e,"data()"),{}}finally{ht()}}(e,t):e||{})||(e={});var n=Object.keys(e),r=t.$options.props,o=(t.$options.methods,n.length);for(;o--;){var i=n[o];0,r&&_(r,i)||(a=void 0,36!==(a=(i+"").charCodeAt(0))&&95!==a&&mn(t,"_data",i))}var a;Et(e,!0)}(t):Et(t._data={},!0),e.computed&&function(t,e){var n=t._computedWatchers=Object.create(null),r=ot();for(var o in e){var i=e[o],a="function"==typeof i?i:i.get;0,r||(n[o]=new hn(t,a||j,j,gn)),o in t||bn(t,o,i)}}(t,e.computed),e.watch&&e.watch!==et&&function(t,e){for(var n in e){var r=e[n];if(Array.isArray(r))for(var o=0;o<r.length;o++)On(t,n,r[o]);else On(t,n,r)}}(t,e.watch)}var gn={lazy:!0};function bn(t,e,n){var r=!ot();"function"==typeof n?(vn.get=r?_n(e):wn(n),vn.set=j):(vn.get=n.get?r&&!1!==n.cache?_n(e):wn(n.get):j,vn.set=n.set||j),Object.defineProperty(t,e,vn)}function _n(t){return function(){var e=this._computedWatchers&&this._computedWatchers[t];if(e)return e.dirty&&e.evaluate(),pt.target&&e.depend(),e.value}}function wn(t){return function(){return t.call(this,this)}}function On(t,e,n,r){return f(n)&&(r=n,n=n.handler),"string"==typeof n&&(n=t[n]),t.$watch(e,n,r)}var Cn=0;function An(t){var e=t.options;if(t.super){var n=An(t.super);if(n!==t.superOptions){t.superOptions=n;var r=function(t){var e,n=t.options,r=t.sealedOptions;for(var o in n)n[o]!==r[o]&&(e||(e={}),e[o]=n[o]);return e}(t);r&&T(t.extendOptions,r),(e=t.options=Rt(n,t.extendOptions)).name&&(e.components[e.name]=t)}}return e}function xn(t){this._init(t)}function En(t){t.cid=0;var e=1;t.extend=function(t){t=t||{};var n=this,r=n.cid,o=t._Ctor||(t._Ctor={});if(o[r])return o[r];var i=t.name||n.options.name;var a=function(t){this._init(t)};return(a.prototype=Object.create(n.prototype)).constructor=a,a.cid=e++,a.options=Rt(n.options,t),a.super=n,a.options.props&&function(t){var e=t.options.props;for(var n in e)mn(t.prototype,"_props",n)}(a),a.options.computed&&function(t){var e=t.options.computed;for(var n in e)bn(t.prototype,n,e[n])}(a),a.extend=n.extend,a.mixin=n.mixin,a.use=n.use,D.forEach((function(t){a[t]=n[t]})),i&&(a.options.components[i]=a),a.superOptions=n.options,a.extendOptions=t,a.sealedOptions=T({},a.options),o[r]=a,a}}function $n(t){return t&&(t.Ctor.options.name||t.tag)}function kn(t,e){return Array.isArray(t)?t.indexOf(e)>-1:"string"==typeof t?t.split(",").indexOf(e)>-1:!!p(t)&&t.test(e)}function Tn(t,e){var n=t.cache,r=t.keys,o=t._vnode;for(var i in n){var a=n[i];if(a){var s=$n(a.componentOptions);s&&!e(s)&&Sn(n,i,r,o)}}}function Sn(t,e,n,r){var o=t[e];!o||r&&o.tag===r.tag||o.componentInstance.$destroy(),t[e]=null,g(n,e)}!function(t){t.prototype._init=function(t){var e=this;e._uid=Cn++,e._isVue=!0,t&&t._isComponent?function(t,e){var n=t.$options=Object.create(t.constructor.options),r=e._parentVnode;n.parent=e.parent,n._parentVnode=r;var o=r.componentOptions;n.propsData=o.propsData,n._parentListeners=o.listeners,n._renderChildren=o.children,n._componentTag=o.tag,e.render&&(n.render=e.render,n.staticRenderFns=e.staticRenderFns)}(e,t):e.$options=Rt(An(e.constructor),t||{},e),e._renderProxy=e,e._self=e,function(t){var e=t.$options,n=e.parent;if(n&&!e.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(t)}t.$parent=n,t.$root=n?n.$root:t,t.$children=[],t.$refs={},t._watcher=null,t._inactive=null,t._directInactive=!1,t._isMounted=!1,t._isDestroyed=!1,t._isBeingDestroyed=!1}(e),function(t){t._events=Object.create(null),t._hasHookEvent=!1;var e=t.$options._parentListeners;e&&Ye(t,e)}(e),function(t){t._vnode=null,t._staticTrees=null;var e=t.$options,n=t.$vnode=e._parentVnode,o=n&&n.context;t.$slots=le(e._renderChildren,o),t.$scopedSlots=r,t._c=function(e,n,r,o){return Be(t,e,n,r,o,!1)},t.$createElement=function(e,n,r,o){return Be(t,e,n,r,o,!0)};var i=n&&n.data;$t(t,"$attrs",i&&i.attrs||r,null,!0),$t(t,"$listeners",e._parentListeners||r,null,!0)}(e),en(e,"beforeCreate"),function(t){var e=pe(t.$options.inject,t);e&&(At(!1),Object.keys(e).forEach((function(n){$t(t,n,e[n])})),At(!0))}(e),yn(e),function(t){var e=t.$options.provide;e&&(t._provided="function"==typeof e?e.call(t):e)}(e),en(e,"created"),e.$options.el&&e.$mount(e.$options.el)}}(xn),function(t){var e={get:function(){return this._data}},n={get:function(){return this._props}};Object.defineProperty(t.prototype,"$data",e),Object.defineProperty(t.prototype,"$props",n),t.prototype.$set=kt,t.prototype.$delete=Tt,t.prototype.$watch=function(t,e,n){if(f(e))return On(this,t,e,n);(n=n||{}).user=!0;var r=new hn(this,t,e,n);if(n.immediate)try{e.call(this,r.value)}catch(t){Ht(t,this,'callback for immediate watcher "'+r.expression+'"')}return function(){r.teardown()}}}(xn),function(t){var e=/^hook:/;t.prototype.$on=function(t,n){var r=this;if(Array.isArray(t))for(var o=0,i=t.length;o<i;o++)r.$on(t[o],n);else(r._events[t]||(r._events[t]=[])).push(n),e.test(t)&&(r._hasHookEvent=!0);return r},t.prototype.$once=function(t,e){var n=this;function r(){n.$off(t,r),e.apply(n,arguments)}return r.fn=e,n.$on(t,r),n},t.prototype.$off=function(t,e){var n=this;if(!arguments.length)return n._events=Object.create(null),n;if(Array.isArray(t)){for(var r=0,o=t.length;r<o;r++)n.$off(t[r],e);return n}var i,a=n._events[t];if(!a)return n;if(!e)return n._events[t]=null,n;for(var s=a.length;s--;)if((i=a[s])===e||i.fn===e){a.splice(s,1);break}return n},t.prototype.$emit=function(t){var e=this,n=e._events[t];if(n){n=n.length>1?k(n):n;for(var r=k(arguments,1),o='event handler for "'+t+'"',i=0,a=n.length;i<a;i++)qt(n[i],e,r,e,o)}return e}}(xn),function(t){t.prototype._update=function(t,e){var n=this,r=n.$el,o=n._vnode,i=Qe(n);n._vnode=t,n.$el=o?n.__patch__(o,t):n.__patch__(n.$el,t,e,!1),i(),r&&(r.__vue__=null),n.$el&&(n.$el.__vue__=n),n.$vnode&&n.$parent&&n.$vnode===n.$parent._vnode&&(n.$parent.$el=n.$el)},t.prototype.$forceUpdate=function(){this._watcher&&this._watcher.update()},t.prototype.$destroy=function(){var t=this;if(!t._isBeingDestroyed){en(t,"beforeDestroy"),t._isBeingDestroyed=!0;var e=t.$parent;!e||e._isBeingDestroyed||t.$options.abstract||g(e.$children,t),t._watcher&&t._watcher.teardown();for(var n=t._watchers.length;n--;)t._watchers[n].teardown();t._data.__ob__&&t._data.__ob__.vmCount--,t._isDestroyed=!0,t.__patch__(t._vnode,null),en(t,"destroyed"),t.$off(),t.$el&&(t.$el.__vue__=null),t.$vnode&&(t.$vnode.parent=null)}}}(xn),function(t){je(t.prototype),t.prototype.$nextTick=function(t){return ee(t,this)},t.prototype._render=function(){var t,e=this,n=e.$options,r=n.render,o=n._parentVnode;o&&(e.$scopedSlots=he(o.data.scopedSlots,e.$slots,e.$scopedSlots)),e.$vnode=o;try{qe=e,t=r.call(e._renderProxy,e.$createElement)}catch(n){Ht(n,e,"render"),t=e._vnode}finally{qe=null}return Array.isArray(t)&&1===t.length&&(t=t[0]),t instanceof vt||(t=yt()),t.parent=o,t}}(xn);var jn=[String,RegExp,Array],In={KeepAlive:{name:"keep-alive",abstract:!0,props:{include:jn,exclude:jn,max:[String,Number]},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var t in this.cache)Sn(this.cache,t,this.keys)},mounted:function(){var t=this;this.$watch("include",(function(e){Tn(t,(function(t){return kn(e,t)}))})),this.$watch("exclude",(function(e){Tn(t,(function(t){return!kn(e,t)}))}))},render:function(){var t=this.$slots.default,e=Ge(t),n=e&&e.componentOptions;if(n){var r=$n(n),o=this.include,i=this.exclude;if(o&&(!r||!kn(o,r))||i&&r&&kn(i,r))return e;var a=this.cache,s=this.keys,u=null==e.key?n.Ctor.cid+(n.tag?"::"+n.tag:""):e.key;a[u]?(e.componentInstance=a[u].componentInstance,g(s,u),s.push(u)):(a[u]=e,s.push(u),this.max&&s.length>parseInt(this.max)&&Sn(a,s[0],s,this._vnode)),e.data.keepAlive=!0}return e||t&&t[0]}}};!function(t){var e={get:function(){return F}};Object.defineProperty(t,"config",e),t.util={warn:ct,extend:T,mergeOptions:Rt,defineReactive:$t},t.set=kt,t.delete=Tt,t.nextTick=ee,t.observable=function(t){return Et(t),t},t.options=Object.create(null),D.forEach((function(e){t.options[e+"s"]=Object.create(null)})),t.options._base=t,T(t.options.components,In),function(t){t.use=function(t){var e=this._installedPlugins||(this._installedPlugins=[]);if(e.indexOf(t)>-1)return this;var n=k(arguments,1);return n.unshift(this),"function"==typeof t.install?t.install.apply(t,n):"function"==typeof t&&t.apply(null,n),e.push(t),this}}(t),function(t){t.mixin=function(t){return this.options=Rt(this.options,t),this}}(t),En(t),function(t){D.forEach((function(e){t[e]=function(t,n){return n?("component"===e&&f(n)&&(n.name=n.name||t,n=this.options._base.extend(n)),"directive"===e&&"function"==typeof n&&(n={bind:n,update:n}),this.options[e+"s"][t]=n,n):this.options[e+"s"][t]}}))}(t)}(xn),Object.defineProperty(xn.prototype,"$isServer",{get:ot}),Object.defineProperty(xn.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(xn,"FunctionalRenderContext",{value:Ie}),xn.version="2.6.10";var Ln=m("style,class"),Pn=m("input,textarea,option,select,progress"),Nn=m("contenteditable,draggable,spellcheck"),Rn=m("events,caret,typing,plaintext-only"),Un=function(t,e){return Hn(e)||"false"===e?"false":"contenteditable"===t&&Rn(e)?e:"true"},Dn=m("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"),Mn="http://www.w3.org/1999/xlink",Fn=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},Bn=function(t){return Fn(t)?t.slice(6,t.length):""},Hn=function(t){return null==t||!1===t};function qn(t){for(var e=t.data,n=t,r=t;i(r.componentInstance);)(r=r.componentInstance._vnode)&&r.data&&(e=zn(r.data,e));for(;i(n=n.parent);)n&&n.data&&(e=zn(e,n.data));return function(t,e){if(i(t)||i(e))return Vn(t,Gn(e));return""}(e.staticClass,e.class)}function zn(t,e){return{staticClass:Vn(t.staticClass,e.staticClass),class:i(t.class)?[t.class,e.class]:e.class}}function Vn(t,e){return t?e?t+" "+e:t:e||""}function Gn(t){return Array.isArray(t)?function(t){for(var e,n="",r=0,o=t.length;r<o;r++)i(e=Gn(t[r]))&&""!==e&&(n&&(n+=" "),n+=e);return n}(t):u(t)?function(t){var e="";for(var n in t)t[n]&&(e&&(e+=" "),e+=n);return e}(t):"string"==typeof t?t:""}var Wn={svg:"http://www.w3.org/2000/svg",math:"http://www.w3.org/1998/Math/MathML"},Kn=m("html,body,base,head,link,meta,style,title,address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,menuitem,summary,content,element,shadow,template,blockquote,iframe,tfoot"),Xn=m("svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view",!0),Yn=function(t){return Kn(t)||Xn(t)};var Jn=Object.create(null);var Qn=m("text,number,password,search,email,tel,url");var Zn=Object.freeze({createElement:function(t,e){var n=document.createElement(t);return"select"!==t?n:(e.data&&e.data.attrs&&void 0!==e.data.attrs.multiple&&n.setAttribute("multiple","multiple"),n)},createElementNS:function(t,e){return document.createElementNS(Wn[t],e)},createTextNode:function(t){return document.createTextNode(t)},createComment:function(t){return document.createComment(t)},insertBefore:function(t,e,n){t.insertBefore(e,n)},removeChild:function(t,e){t.removeChild(e)},appendChild:function(t,e){t.appendChild(e)},parentNode:function(t){return t.parentNode},nextSibling:function(t){return t.nextSibling},tagName:function(t){return t.tagName},setTextContent:function(t,e){t.textContent=e},setStyleScope:function(t,e){t.setAttribute(e,"")}}),tr={create:function(t,e){er(e)},update:function(t,e){t.data.ref!==e.data.ref&&(er(t,!0),er(e))},destroy:function(t){er(t,!0)}};function er(t,e){var n=t.data.ref;if(i(n)){var r=t.context,o=t.componentInstance||t.elm,a=r.$refs;e?Array.isArray(a[n])?g(a[n],o):a[n]===o&&(a[n]=void 0):t.data.refInFor?Array.isArray(a[n])?a[n].indexOf(o)<0&&a[n].push(o):a[n]=[o]:a[n]=o}}var nr=new vt("",{},[]),rr=["create","activate","update","remove","destroy"];function or(t,e){return t.key===e.key&&(t.tag===e.tag&&t.isComment===e.isComment&&i(t.data)===i(e.data)&&function(t,e){if("input"!==t.tag)return!0;var n,r=i(n=t.data)&&i(n=n.attrs)&&n.type,o=i(n=e.data)&&i(n=n.attrs)&&n.type;return r===o||Qn(r)&&Qn(o)}(t,e)||a(t.isAsyncPlaceholder)&&t.asyncFactory===e.asyncFactory&&o(e.asyncFactory.error))}function ir(t,e,n){var r,o,a={};for(r=e;r<=n;++r)i(o=t[r].key)&&(a[o]=r);return a}var ar={create:sr,update:sr,destroy:function(t){sr(t,nr)}};function sr(t,e){(t.data.directives||e.data.directives)&&function(t,e){var n,r,o,i=t===nr,a=e===nr,s=cr(t.data.directives,t.context),u=cr(e.data.directives,e.context),c=[],f=[];for(n in u)r=s[n],o=u[n],r?(o.oldValue=r.value,o.oldArg=r.arg,pr(o,"update",e,t),o.def&&o.def.componentUpdated&&f.push(o)):(pr(o,"bind",e,t),o.def&&o.def.inserted&&c.push(o));if(c.length){var p=function(){for(var n=0;n<c.length;n++)pr(c[n],"inserted",e,t)};i?se(e,"insert",p):p()}f.length&&se(e,"postpatch",(function(){for(var n=0;n<f.length;n++)pr(f[n],"componentUpdated",e,t)}));if(!i)for(n in s)u[n]||pr(s[n],"unbind",t,t,a)}(t,e)}var ur=Object.create(null);function cr(t,e){var n,r,o=Object.create(null);if(!t)return o;for(n=0;n<t.length;n++)(r=t[n]).modifiers||(r.modifiers=ur),o[fr(r)]=r,r.def=Ut(e.$options,"directives",r.name);return o}function fr(t){return t.rawName||t.name+"."+Object.keys(t.modifiers||{}).join(".")}function pr(t,e,n,r,o){var i=t.def&&t.def[e];if(i)try{i(n.elm,t,n,r,o)}catch(r){Ht(r,n.context,"directive "+t.name+" "+e+" hook")}}var lr=[tr,ar];function dr(t,e){var n=e.componentOptions;if(!(i(n)&&!1===n.Ctor.options.inheritAttrs||o(t.data.attrs)&&o(e.data.attrs))){var r,a,s=e.elm,u=t.data.attrs||{},c=e.data.attrs||{};for(r in i(c.__ob__)&&(c=e.data.attrs=T({},c)),c)a=c[r],u[r]!==a&&hr(s,r,a);for(r in(Y||Q)&&c.value!==u.value&&hr(s,"value",c.value),u)o(c[r])&&(Fn(r)?s.removeAttributeNS(Mn,Bn(r)):Nn(r)||s.removeAttribute(r))}}function hr(t,e,n){t.tagName.indexOf("-")>-1?vr(t,e,n):Dn(e)?Hn(n)?t.removeAttribute(e):(n="allowfullscreen"===e&&"EMBED"===t.tagName?"true":e,t.setAttribute(e,n)):Nn(e)?t.setAttribute(e,Un(e,n)):Fn(e)?Hn(n)?t.removeAttributeNS(Mn,Bn(e)):t.setAttributeNS(Mn,e,n):vr(t,e,n)}function vr(t,e,n){if(Hn(n))t.removeAttribute(e);else{if(Y&&!J&&"TEXTAREA"===t.tagName&&"placeholder"===e&&""!==n&&!t.__ieph){var r=function(e){e.stopImmediatePropagation(),t.removeEventListener("input",r)};t.addEventListener("input",r),t.__ieph=!0}t.setAttribute(e,n)}}var mr={create:dr,update:dr};function yr(t,e){var n=e.elm,r=e.data,a=t.data;if(!(o(r.staticClass)&&o(r.class)&&(o(a)||o(a.staticClass)&&o(a.class)))){var s=qn(e),u=n._transitionClasses;i(u)&&(s=Vn(s,Gn(u))),s!==n._prevClass&&(n.setAttribute("class",s),n._prevClass=s)}}var gr,br={create:yr,update:yr},_r="__r",wr="__c";function Or(t,e,n){var r=gr;return function o(){var i=e.apply(null,arguments);null!==i&&xr(t,o,n,r)}}var Cr=Wt&&!(tt&&Number(tt[1])<=53);function Ar(t,e,n,r){if(Cr){var o=cn,i=e;e=i._wrapper=function(t){if(t.target===t.currentTarget||t.timeStamp>=o||t.timeStamp<=0||t.target.ownerDocument!==document)return i.apply(this,arguments)}}gr.addEventListener(t,e,nt?{capture:n,passive:r}:n)}function xr(t,e,n,r){(r||gr).removeEventListener(t,e._wrapper||e,n)}function Er(t,e){if(!o(t.data.on)||!o(e.data.on)){var n=e.data.on||{},r=t.data.on||{};gr=e.elm,function(t){if(i(t[_r])){var e=Y?"change":"input";t[e]=[].concat(t[_r],t[e]||[]),delete t[_r]}i(t[wr])&&(t.change=[].concat(t[wr],t.change||[]),delete t[wr])}(n),ae(n,r,Ar,xr,Or,e.context),gr=void 0}}var $r,kr={create:Er,update:Er};function Tr(t,e){if(!o(t.data.domProps)||!o(e.data.domProps)){var n,r,a=e.elm,s=t.data.domProps||{},u=e.data.domProps||{};for(n in i(u.__ob__)&&(u=e.data.domProps=T({},u)),s)n in u||(a[n]="");for(n in u){if(r=u[n],"textContent"===n||"innerHTML"===n){if(e.children&&(e.children.length=0),r===s[n])continue;1===a.childNodes.length&&a.removeChild(a.childNodes[0])}if("value"===n&&"PROGRESS"!==a.tagName){a._value=r;var c=o(r)?"":String(r);Sr(a,c)&&(a.value=c)}else if("innerHTML"===n&&Xn(a.tagName)&&o(a.innerHTML)){($r=$r||document.createElement("div")).innerHTML="<svg>"+r+"</svg>";for(var f=$r.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;f.firstChild;)a.appendChild(f.firstChild)}else if(r!==s[n])try{a[n]=r}catch(t){}}}}function Sr(t,e){return!t.composing&&("OPTION"===t.tagName||function(t,e){var n=!0;try{n=document.activeElement!==t}catch(t){}return n&&t.value!==e}(t,e)||function(t,e){var n=t.value,r=t._vModifiers;if(i(r)){if(r.number)return v(n)!==v(e);if(r.trim)return n.trim()!==e.trim()}return n!==e}(t,e))}var jr={create:Tr,update:Tr},Ir=w((function(t){var e={},n=/:(.+)/;return t.split(/;(?![^(]*\))/g).forEach((function(t){if(t){var r=t.split(n);r.length>1&&(e[r[0].trim()]=r[1].trim())}})),e}));function Lr(t){var e=Pr(t.style);return t.staticStyle?T(t.staticStyle,e):e}function Pr(t){return Array.isArray(t)?S(t):"string"==typeof t?Ir(t):t}var Nr,Rr=/^--/,Ur=/\s*!important$/,Dr=function(t,e,n){if(Rr.test(e))t.style.setProperty(e,n);else if(Ur.test(n))t.style.setProperty(E(e),n.replace(Ur,""),"important");else{var r=Fr(e);if(Array.isArray(n))for(var o=0,i=n.length;o<i;o++)t.style[r]=n[o];else t.style[r]=n}},Mr=["Webkit","Moz","ms"],Fr=w((function(t){if(Nr=Nr||document.createElement("div").style,"filter"!==(t=C(t))&&t in Nr)return t;for(var e=t.charAt(0).toUpperCase()+t.slice(1),n=0;n<Mr.length;n++){var r=Mr[n]+e;if(r in Nr)return r}}));function Br(t,e){var n=e.data,r=t.data;if(!(o(n.staticStyle)&&o(n.style)&&o(r.staticStyle)&&o(r.style))){var a,s,u=e.elm,c=r.staticStyle,f=r.normalizedStyle||r.style||{},p=c||f,l=Pr(e.data.style)||{};e.data.normalizedStyle=i(l.__ob__)?T({},l):l;var d=function(t,e){var n,r={};if(e)for(var o=t;o.componentInstance;)(o=o.componentInstance._vnode)&&o.data&&(n=Lr(o.data))&&T(r,n);(n=Lr(t.data))&&T(r,n);for(var i=t;i=i.parent;)i.data&&(n=Lr(i.data))&&T(r,n);return r}(e,!0);for(s in p)o(d[s])&&Dr(u,s,"");for(s in d)(a=d[s])!==p[s]&&Dr(u,s,null==a?"":a)}}var Hr={create:Br,update:Br},qr=/\s+/;function zr(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(qr).forEach((function(e){return t.classList.add(e)})):t.classList.add(e);else{var n=" "+(t.getAttribute("class")||"")+" ";n.indexOf(" "+e+" ")<0&&t.setAttribute("class",(n+e).trim())}}function Vr(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(qr).forEach((function(e){return t.classList.remove(e)})):t.classList.remove(e),t.classList.length||t.removeAttribute("class");else{for(var n=" "+(t.getAttribute("class")||"")+" ",r=" "+e+" ";n.indexOf(r)>=0;)n=n.replace(r," ");(n=n.trim())?t.setAttribute("class",n):t.removeAttribute("class")}}function Gr(t){if(t){if("object"==typeof t){var e={};return!1!==t.css&&T(e,Wr(t.name||"v")),T(e,t),e}return"string"==typeof t?Wr(t):void 0}}var Wr=w((function(t){return{enterClass:t+"-enter",enterToClass:t+"-enter-to",enterActiveClass:t+"-enter-active",leaveClass:t+"-leave",leaveToClass:t+"-leave-to",leaveActiveClass:t+"-leave-active"}})),Kr=G&&!J,Xr="transition",Yr="animation",Jr="transition",Qr="transitionend",Zr="animation",to="animationend";Kr&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(Jr="WebkitTransition",Qr="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(Zr="WebkitAnimation",to="webkitAnimationEnd"));var eo=G?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(t){return t()};function no(t){eo((function(){eo(t)}))}function ro(t,e){var n=t._transitionClasses||(t._transitionClasses=[]);n.indexOf(e)<0&&(n.push(e),zr(t,e))}function oo(t,e){t._transitionClasses&&g(t._transitionClasses,e),Vr(t,e)}function io(t,e,n){var r=so(t,e),o=r.type,i=r.timeout,a=r.propCount;if(!o)return n();var s=o===Xr?Qr:to,u=0,c=function(){t.removeEventListener(s,f),n()},f=function(e){e.target===t&&++u>=a&&c()};setTimeout((function(){u<a&&c()}),i+1),t.addEventListener(s,f)}var ao=/\b(transform|all)(,|$)/;function so(t,e){var n,r=window.getComputedStyle(t),o=(r[Jr+"Delay"]||"").split(", "),i=(r[Jr+"Duration"]||"").split(", "),a=uo(o,i),s=(r[Zr+"Delay"]||"").split(", "),u=(r[Zr+"Duration"]||"").split(", "),c=uo(s,u),f=0,p=0;return e===Xr?a>0&&(n=Xr,f=a,p=i.length):e===Yr?c>0&&(n=Yr,f=c,p=u.length):p=(n=(f=Math.max(a,c))>0?a>c?Xr:Yr:null)?n===Xr?i.length:u.length:0,{type:n,timeout:f,propCount:p,hasTransform:n===Xr&&ao.test(r[Jr+"Property"])}}function uo(t,e){for(;t.length<e.length;)t=t.concat(t);return Math.max.apply(null,e.map((function(e,n){return co(e)+co(t[n])})))}function co(t){return 1e3*Number(t.slice(0,-1).replace(",","."))}function fo(t,e){var n=t.elm;i(n._leaveCb)&&(n._leaveCb.cancelled=!0,n._leaveCb());var r=Gr(t.data.transition);if(!o(r)&&!i(n._enterCb)&&1===n.nodeType){for(var a=r.css,s=r.type,c=r.enterClass,f=r.enterToClass,p=r.enterActiveClass,l=r.appearClass,d=r.appearToClass,h=r.appearActiveClass,m=r.beforeEnter,y=r.enter,g=r.afterEnter,b=r.enterCancelled,_=r.beforeAppear,w=r.appear,O=r.afterAppear,C=r.appearCancelled,A=r.duration,x=Je,E=Je.$vnode;E&&E.parent;)x=E.context,E=E.parent;var $=!x._isMounted||!t.isRootInsert;if(!$||w||""===w){var k=$&&l?l:c,T=$&&h?h:p,S=$&&d?d:f,j=$&&_||m,I=$&&"function"==typeof w?w:y,L=$&&O||g,P=$&&C||b,N=v(u(A)?A.enter:A);0;var U=!1!==a&&!J,D=ho(I),M=n._enterCb=R((function(){U&&(oo(n,S),oo(n,T)),M.cancelled?(U&&oo(n,k),P&&P(n)):L&&L(n),n._enterCb=null}));t.data.show||se(t,"insert",(function(){var e=n.parentNode,r=e&&e._pending&&e._pending[t.key];r&&r.tag===t.tag&&r.elm._leaveCb&&r.elm._leaveCb(),I&&I(n,M)})),j&&j(n),U&&(ro(n,k),ro(n,T),no((function(){oo(n,k),M.cancelled||(ro(n,S),D||(lo(N)?setTimeout(M,N):io(n,s,M)))}))),t.data.show&&(e&&e(),I&&I(n,M)),U||D||M()}}}function po(t,e){var n=t.elm;i(n._enterCb)&&(n._enterCb.cancelled=!0,n._enterCb());var r=Gr(t.data.transition);if(o(r)||1!==n.nodeType)return e();if(!i(n._leaveCb)){var a=r.css,s=r.type,c=r.leaveClass,f=r.leaveToClass,p=r.leaveActiveClass,l=r.beforeLeave,d=r.leave,h=r.afterLeave,m=r.leaveCancelled,y=r.delayLeave,g=r.duration,b=!1!==a&&!J,_=ho(d),w=v(u(g)?g.leave:g);0;var O=n._leaveCb=R((function(){n.parentNode&&n.parentNode._pending&&(n.parentNode._pending[t.key]=null),b&&(oo(n,f),oo(n,p)),O.cancelled?(b&&oo(n,c),m&&m(n)):(e(),h&&h(n)),n._leaveCb=null}));y?y(C):C()}function C(){O.cancelled||(!t.data.show&&n.parentNode&&((n.parentNode._pending||(n.parentNode._pending={}))[t.key]=t),l&&l(n),b&&(ro(n,c),ro(n,p),no((function(){oo(n,c),O.cancelled||(ro(n,f),_||(lo(w)?setTimeout(O,w):io(n,s,O)))}))),d&&d(n,O),b||_||O())}}function lo(t){return"number"==typeof t&&!isNaN(t)}function ho(t){if(o(t))return!1;var e=t.fns;return i(e)?ho(Array.isArray(e)?e[0]:e):(t._length||t.length)>1}function vo(t,e){!0!==e.data.show&&fo(e)}var mo=function(t){var e,n,r={},u=t.modules,c=t.nodeOps;for(e=0;e<rr.length;++e)for(r[rr[e]]=[],n=0;n<u.length;++n)i(u[n][rr[e]])&&r[rr[e]].push(u[n][rr[e]]);function f(t){var e=c.parentNode(t);i(e)&&c.removeChild(e,t)}function p(t,e,n,o,s,u,f){if(i(t.elm)&&i(u)&&(t=u[f]=bt(t)),t.isRootInsert=!s,!function(t,e,n,o){var s=t.data;if(i(s)){var u=i(t.componentInstance)&&s.keepAlive;if(i(s=s.hook)&&i(s=s.init)&&s(t,!1),i(t.componentInstance))return l(t,e),d(n,t.elm,o),a(u)&&function(t,e,n,o){var a,s=t;for(;s.componentInstance;)if(s=s.componentInstance._vnode,i(a=s.data)&&i(a=a.transition)){for(a=0;a<r.activate.length;++a)r.activate[a](nr,s);e.push(s);break}d(n,t.elm,o)}(t,e,n,o),!0}}(t,e,n,o)){var p=t.data,v=t.children,m=t.tag;i(m)?(t.elm=t.ns?c.createElementNS(t.ns,m):c.createElement(m,t),g(t),h(t,v,e),i(p)&&y(t,e),d(n,t.elm,o)):a(t.isComment)?(t.elm=c.createComment(t.text),d(n,t.elm,o)):(t.elm=c.createTextNode(t.text),d(n,t.elm,o))}}function l(t,e){i(t.data.pendingInsert)&&(e.push.apply(e,t.data.pendingInsert),t.data.pendingInsert=null),t.elm=t.componentInstance.$el,v(t)?(y(t,e),g(t)):(er(t),e.push(t))}function d(t,e,n){i(t)&&(i(n)?c.parentNode(n)===t&&c.insertBefore(t,e,n):c.appendChild(t,e))}function h(t,e,n){if(Array.isArray(e)){0;for(var r=0;r<e.length;++r)p(e[r],n,t.elm,null,!0,e,r)}else s(t.text)&&c.appendChild(t.elm,c.createTextNode(String(t.text)))}function v(t){for(;t.componentInstance;)t=t.componentInstance._vnode;return i(t.tag)}function y(t,n){for(var o=0;o<r.create.length;++o)r.create[o](nr,t);i(e=t.data.hook)&&(i(e.create)&&e.create(nr,t),i(e.insert)&&n.push(t))}function g(t){var e;if(i(e=t.fnScopeId))c.setStyleScope(t.elm,e);else for(var n=t;n;)i(e=n.context)&&i(e=e.$options._scopeId)&&c.setStyleScope(t.elm,e),n=n.parent;i(e=Je)&&e!==t.context&&e!==t.fnContext&&i(e=e.$options._scopeId)&&c.setStyleScope(t.elm,e)}function b(t,e,n,r,o,i){for(;r<=o;++r)p(n[r],i,t,e,!1,n,r)}function _(t){var e,n,o=t.data;if(i(o))for(i(e=o.hook)&&i(e=e.destroy)&&e(t),e=0;e<r.destroy.length;++e)r.destroy[e](t);if(i(e=t.children))for(n=0;n<t.children.length;++n)_(t.children[n])}function w(t,e,n,r){for(;n<=r;++n){var o=e[n];i(o)&&(i(o.tag)?(O(o),_(o)):f(o.elm))}}function O(t,e){if(i(e)||i(t.data)){var n,o=r.remove.length+1;for(i(e)?e.listeners+=o:e=function(t,e){function n(){0==--n.listeners&&f(t)}return n.listeners=e,n}(t.elm,o),i(n=t.componentInstance)&&i(n=n._vnode)&&i(n.data)&&O(n,e),n=0;n<r.remove.length;++n)r.remove[n](t,e);i(n=t.data.hook)&&i(n=n.remove)?n(t,e):e()}else f(t.elm)}function C(t,e,n,r){for(var o=n;o<r;o++){var a=e[o];if(i(a)&&or(t,a))return o}}function A(t,e,n,s,u,f){if(t!==e){i(e.elm)&&i(s)&&(e=s[u]=bt(e));var l=e.elm=t.elm;if(a(t.isAsyncPlaceholder))i(e.asyncFactory.resolved)?$(t.elm,e,n):e.isAsyncPlaceholder=!0;else if(a(e.isStatic)&&a(t.isStatic)&&e.key===t.key&&(a(e.isCloned)||a(e.isOnce)))e.componentInstance=t.componentInstance;else{var d,h=e.data;i(h)&&i(d=h.hook)&&i(d=d.prepatch)&&d(t,e);var m=t.children,y=e.children;if(i(h)&&v(e)){for(d=0;d<r.update.length;++d)r.update[d](t,e);i(d=h.hook)&&i(d=d.update)&&d(t,e)}o(e.text)?i(m)&&i(y)?m!==y&&function(t,e,n,r,a){var s,u,f,l=0,d=0,h=e.length-1,v=e[0],m=e[h],y=n.length-1,g=n[0],_=n[y],O=!a;for(0;l<=h&&d<=y;)o(v)?v=e[++l]:o(m)?m=e[--h]:or(v,g)?(A(v,g,r,n,d),v=e[++l],g=n[++d]):or(m,_)?(A(m,_,r,n,y),m=e[--h],_=n[--y]):or(v,_)?(A(v,_,r,n,y),O&&c.insertBefore(t,v.elm,c.nextSibling(m.elm)),v=e[++l],_=n[--y]):or(m,g)?(A(m,g,r,n,d),O&&c.insertBefore(t,m.elm,v.elm),m=e[--h],g=n[++d]):(o(s)&&(s=ir(e,l,h)),o(u=i(g.key)?s[g.key]:C(g,e,l,h))?p(g,r,t,v.elm,!1,n,d):or(f=e[u],g)?(A(f,g,r,n,d),e[u]=void 0,O&&c.insertBefore(t,f.elm,v.elm)):p(g,r,t,v.elm,!1,n,d),g=n[++d]);l>h?b(t,o(n[y+1])?null:n[y+1].elm,n,d,y,r):d>y&&w(0,e,l,h)}(l,m,y,n,f):i(y)?(i(t.text)&&c.setTextContent(l,""),b(l,null,y,0,y.length-1,n)):i(m)?w(0,m,0,m.length-1):i(t.text)&&c.setTextContent(l,""):t.text!==e.text&&c.setTextContent(l,e.text),i(h)&&i(d=h.hook)&&i(d=d.postpatch)&&d(t,e)}}}function x(t,e,n){if(a(n)&&i(t.parent))t.parent.data.pendingInsert=e;else for(var r=0;r<e.length;++r)e[r].data.hook.insert(e[r])}var E=m("attrs,class,staticClass,staticStyle,key");function $(t,e,n,r){var o,s=e.tag,u=e.data,c=e.children;if(r=r||u&&u.pre,e.elm=t,a(e.isComment)&&i(e.asyncFactory))return e.isAsyncPlaceholder=!0,!0;if(i(u)&&(i(o=u.hook)&&i(o=o.init)&&o(e,!0),i(o=e.componentInstance)))return l(e,n),!0;if(i(s)){if(i(c))if(t.hasChildNodes())if(i(o=u)&&i(o=o.domProps)&&i(o=o.innerHTML)){if(o!==t.innerHTML)return!1}else{for(var f=!0,p=t.firstChild,d=0;d<c.length;d++){if(!p||!$(p,c[d],n,r)){f=!1;break}p=p.nextSibling}if(!f||p)return!1}else h(e,c,n);if(i(u)){var v=!1;for(var m in u)if(!E(m)){v=!0,y(e,n);break}!v&&u.class&&re(u.class)}}else t.data!==e.text&&(t.data=e.text);return!0}return function(t,e,n,s){if(!o(e)){var u,f=!1,l=[];if(o(t))f=!0,p(e,l);else{var d=i(t.nodeType);if(!d&&or(t,e))A(t,e,l,null,null,s);else{if(d){if(1===t.nodeType&&t.hasAttribute(U)&&(t.removeAttribute(U),n=!0),a(n)&&$(t,e,l))return x(e,l,!0),t;u=t,t=new vt(c.tagName(u).toLowerCase(),{},[],void 0,u)}var h=t.elm,m=c.parentNode(h);if(p(e,l,h._leaveCb?null:m,c.nextSibling(h)),i(e.parent))for(var y=e.parent,g=v(e);y;){for(var b=0;b<r.destroy.length;++b)r.destroy[b](y);if(y.elm=e.elm,g){for(var O=0;O<r.create.length;++O)r.create[O](nr,y);var C=y.data.hook.insert;if(C.merged)for(var E=1;E<C.fns.length;E++)C.fns[E]()}else er(y);y=y.parent}i(m)?w(0,[t],0,0):i(t.tag)&&_(t)}}return x(e,l,f),e.elm}i(t)&&_(t)}}({nodeOps:Zn,modules:[mr,br,kr,jr,Hr,G?{create:vo,activate:vo,remove:function(t,e){!0!==t.data.show?po(t,e):e()}}:{}].concat(lr)});J&&document.addEventListener("selectionchange",(function(){var t=document.activeElement;t&&t.vmodel&&Ao(t,"input")}));var yo={inserted:function(t,e,n,r){"select"===n.tag?(r.elm&&!r.elm._vOptions?se(n,"postpatch",(function(){yo.componentUpdated(t,e,n)})):go(t,e,n.context),t._vOptions=[].map.call(t.options,wo)):("textarea"===n.tag||Qn(t.type))&&(t._vModifiers=e.modifiers,e.modifiers.lazy||(t.addEventListener("compositionstart",Oo),t.addEventListener("compositionend",Co),t.addEventListener("change",Co),J&&(t.vmodel=!0)))},componentUpdated:function(t,e,n){if("select"===n.tag){go(t,e,n.context);var r=t._vOptions,o=t._vOptions=[].map.call(t.options,wo);if(o.some((function(t,e){return!P(t,r[e])})))(t.multiple?e.value.some((function(t){return _o(t,o)})):e.value!==e.oldValue&&_o(e.value,o))&&Ao(t,"change")}}};function go(t,e,n){bo(t,e,n),(Y||Q)&&setTimeout((function(){bo(t,e,n)}),0)}function bo(t,e,n){var r=e.value,o=t.multiple;if(!o||Array.isArray(r)){for(var i,a,s=0,u=t.options.length;s<u;s++)if(a=t.options[s],o)i=N(r,wo(a))>-1,a.selected!==i&&(a.selected=i);else if(P(wo(a),r))return void(t.selectedIndex!==s&&(t.selectedIndex=s));o||(t.selectedIndex=-1)}}function _o(t,e){return e.every((function(e){return!P(e,t)}))}function wo(t){return"_value"in t?t._value:t.value}function Oo(t){t.target.composing=!0}function Co(t){t.target.composing&&(t.target.composing=!1,Ao(t.target,"input"))}function Ao(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function xo(t){return!t.componentInstance||t.data&&t.data.transition?t:xo(t.componentInstance._vnode)}var Eo={model:yo,show:{bind:function(t,e,n){var r=e.value,o=(n=xo(n)).data&&n.data.transition,i=t.__vOriginalDisplay="none"===t.style.display?"":t.style.display;r&&o?(n.data.show=!0,fo(n,(function(){t.style.display=i}))):t.style.display=r?i:"none"},update:function(t,e,n){var r=e.value;!r!=!e.oldValue&&((n=xo(n)).data&&n.data.transition?(n.data.show=!0,r?fo(n,(function(){t.style.display=t.__vOriginalDisplay})):po(n,(function(){t.style.display="none"}))):t.style.display=r?t.__vOriginalDisplay:"none")},unbind:function(t,e,n,r,o){o||(t.style.display=t.__vOriginalDisplay)}}},$o={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function ko(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?ko(Ge(e.children)):t}function To(t){var e={},n=t.$options;for(var r in n.propsData)e[r]=t[r];var o=n._parentListeners;for(var i in o)e[C(i)]=o[i];return e}function So(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}var jo=function(t){return t.tag||Ve(t)},Io=function(t){return"show"===t.name},Lo={name:"transition",props:$o,abstract:!0,render:function(t){var e=this,n=this.$slots.default;if(n&&(n=n.filter(jo)).length){0;var r=this.mode;0;var o=n[0];if(function(t){for(;t=t.parent;)if(t.data.transition)return!0}(this.$vnode))return o;var i=ko(o);if(!i)return o;if(this._leaving)return So(t,o);var a="__transition-"+this._uid+"-";i.key=null==i.key?i.isComment?a+"comment":a+i.tag:s(i.key)?0===String(i.key).indexOf(a)?i.key:a+i.key:i.key;var u=(i.data||(i.data={})).transition=To(this),c=this._vnode,f=ko(c);if(i.data.directives&&i.data.directives.some(Io)&&(i.data.show=!0),f&&f.data&&!function(t,e){return e.key===t.key&&e.tag===t.tag}(i,f)&&!Ve(f)&&(!f.componentInstance||!f.componentInstance._vnode.isComment)){var p=f.data.transition=T({},u);if("out-in"===r)return this._leaving=!0,se(p,"afterLeave",(function(){e._leaving=!1,e.$forceUpdate()})),So(t,o);if("in-out"===r){if(Ve(i))return c;var l,d=function(){l()};se(u,"afterEnter",d),se(u,"enterCancelled",d),se(p,"delayLeave",(function(t){l=t}))}}return o}}},Po=T({tag:String,moveClass:String},$o);function No(t){t.elm._moveCb&&t.elm._moveCb(),t.elm._enterCb&&t.elm._enterCb()}function Ro(t){t.data.newPos=t.elm.getBoundingClientRect()}function Uo(t){var e=t.data.pos,n=t.data.newPos,r=e.left-n.left,o=e.top-n.top;if(r||o){t.data.moved=!0;var i=t.elm.style;i.transform=i.WebkitTransform="translate("+r+"px,"+o+"px)",i.transitionDuration="0s"}}delete Po.mode;var Do={Transition:Lo,TransitionGroup:{props:Po,beforeMount:function(){var t=this,e=this._update;this._update=function(n,r){var o=Qe(t);t.__patch__(t._vnode,t.kept,!1,!0),t._vnode=t.kept,o(),e.call(t,n,r)}},render:function(t){for(var e=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,o=this.$slots.default||[],i=this.children=[],a=To(this),s=0;s<o.length;s++){var u=o[s];if(u.tag)if(null!=u.key&&0!==String(u.key).indexOf("__vlist"))i.push(u),n[u.key]=u,(u.data||(u.data={})).transition=a;else;}if(r){for(var c=[],f=[],p=0;p<r.length;p++){var l=r[p];l.data.transition=a,l.data.pos=l.elm.getBoundingClientRect(),n[l.key]?c.push(l):f.push(l)}this.kept=t(e,null,c),this.removed=f}return t(e,null,i)},updated:function(){var t=this.prevChildren,e=this.moveClass||(this.name||"v")+"-move";t.length&&this.hasMove(t[0].elm,e)&&(t.forEach(No),t.forEach(Ro),t.forEach(Uo),this._reflow=document.body.offsetHeight,t.forEach((function(t){if(t.data.moved){var n=t.elm,r=n.style;ro(n,e),r.transform=r.WebkitTransform=r.transitionDuration="",n.addEventListener(Qr,n._moveCb=function t(r){r&&r.target!==n||r&&!/transform$/.test(r.propertyName)||(n.removeEventListener(Qr,t),n._moveCb=null,oo(n,e))})}})))},methods:{hasMove:function(t,e){if(!Kr)return!1;if(this._hasMove)return this._hasMove;var n=t.cloneNode();t._transitionClasses&&t._transitionClasses.forEach((function(t){Vr(n,t)})),zr(n,e),n.style.display="none",this.$el.appendChild(n);var r=so(n);return this.$el.removeChild(n),this._hasMove=r.hasTransform}}}};xn.config.mustUseProp=function(t,e,n){return"value"===n&&Pn(t)&&"button"!==e||"selected"===n&&"option"===t||"checked"===n&&"input"===t||"muted"===n&&"video"===t},xn.config.isReservedTag=Yn,xn.config.isReservedAttr=Ln,xn.config.getTagNamespace=function(t){return Xn(t)?"svg":"math"===t?"math":void 0},xn.config.isUnknownElement=function(t){if(!G)return!0;if(Yn(t))return!1;if(t=t.toLowerCase(),null!=Jn[t])return Jn[t];var e=document.createElement(t);return t.indexOf("-")>-1?Jn[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:Jn[t]=/HTMLUnknownElement/.test(e.toString())},T(xn.options.directives,Eo),T(xn.options.components,Do),xn.prototype.__patch__=G?mo:j,xn.prototype.$mount=function(t,e){return function(t,e,n){var r;return t.$el=e,t.$options.render||(t.$options.render=yt),en(t,"beforeMount"),r=function(){t._update(t._render(),n)},new hn(t,r,j,{before:function(){t._isMounted&&!t._isDestroyed&&en(t,"beforeUpdate")}},!0),n=!1,null==t.$vnode&&(t._isMounted=!0,en(t,"mounted")),t}(this,t=t&&G?function(t){if("string"==typeof t){var e=document.querySelector(t);return e||document.createElement("div")}return t}(t):void 0,e)},G&&setTimeout((function(){F.devtools&&it&&it.emit("init",xn)}),0),e.default=xn}.call(this,n(3),n(22).setImmediate)},function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(24).default.create({headers:{requesttoken:OC.requestToken}});e.default=r},function(t,e,n){"use strict";function r(t,e,n,r,o,i,a,s){var u,c="function"==typeof t?t.options:t;if(e&&(c.render=e,c.staticRenderFns=n,c._compiled=!0),r&&(c.functional=!0),i&&(c._scopeId="data-v-"+i),a?(u=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),o&&o.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(a)},c._ssrRegister=u):o&&(u=s?function(){o.call(this,this.$root.$options.shadowRoot)}:o),u)if(c.functional){c._injectStyles=u;var f=c.render;c.render=function(t,e){return u.call(e),f(t,e)}}else{var p=c.beforeCreate;c.beforeCreate=p?[].concat(p,u):[u]}return{exports:t,options:c}}n.d(e,"a",(function(){return r}))},function(t,e){var n,r,o=t.exports={};function i(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function s(t){if(n===setTimeout)return setTimeout(t,0);if((n===i||!n)&&setTimeout)return n=setTimeout,setTimeout(t,0);try{return n(t,0)}catch(e){try{return n.call(null,t,0)}catch(e){return n.call(this,t,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:i}catch(t){n=i}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(t){r=a}}();var u,c=[],f=!1,p=-1;function l(){f&&u&&(f=!1,u.length?c=u.concat(c):p=-1,c.length&&d())}function d(){if(!f){var t=s(l);f=!0;for(var e=c.length;e;){for(u=c,c=[];++p<e;)u&&u[p].run();p=-1,e=c.length}u=null,f=!1,function(t){if(r===clearTimeout)return clearTimeout(t);if((r===a||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(t);try{r(t)}catch(e){try{return r.call(null,t)}catch(e){return r.call(this,t)}}}(t)}}function h(t,e){this.fun=t,this.array=e}function v(){}o.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];c.push(new h(t,e)),1!==c.length||f||s(d)},h.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=v,o.addListener=v,o.once=v,o.off=v,o.removeListener=v,o.removeAllListeners=v,o.emit=v,o.prependListener=v,o.prependOnceListener=v,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}},function(t,e,n){"use strict";t.exports=function(t,e){return function(){for(var n=new Array(arguments.length),r=0;r<n.length;r++)n[r]=arguments[r];return t.apply(e,n)}}},function(t,e,n){"use strict";var r=n(1);function o(t){return encodeURIComponent(t).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}t.exports=function(t,e,n){if(!e)return t;var i;if(n)i=n(e);else if(r.isURLSearchParams(e))i=e.toString();else{var a=[];r.forEach(e,(function(t,e){null!=t&&(r.isArray(t)?e+="[]":t=[t],r.forEach(t,(function(t){r.isDate(t)?t=t.toISOString():r.isObject(t)&&(t=JSON.stringify(t)),a.push(o(e)+"="+o(t))})))})),i=a.join("&")}if(i){var s=t.indexOf("#");-1!==s&&(t=t.slice(0,s)),t+=(-1===t.indexOf("?")?"?":"&")+i}return t}},function(t,e,n){"use strict";t.exports=function(t){return!(!t||!t.__CANCEL__)}},function(t,e,n){"use strict";(function(e){var r=n(1),o=n(31),i={"Content-Type":"application/x-www-form-urlencoded"};function a(t,e){!r.isUndefined(t)&&r.isUndefined(t["Content-Type"])&&(t["Content-Type"]=e)}var s,u={adapter:(void 0!==e&&"[object process]"===Object.prototype.toString.call(e)?s=n(11):"undefined"!=typeof XMLHttpRequest&&(s=n(11)),s),transformRequest:[function(t,e){return o(e,"Accept"),o(e,"Content-Type"),r.isFormData(t)||r.isArrayBuffer(t)||r.isBuffer(t)||r.isStream(t)||r.isFile(t)||r.isBlob(t)?t:r.isArrayBufferView(t)?t.buffer:r.isURLSearchParams(t)?(a(e,"application/x-www-form-urlencoded;charset=utf-8"),t.toString()):r.isObject(t)?(a(e,"application/json;charset=utf-8"),JSON.stringify(t)):t}],transformResponse:[function(t){if("string"==typeof t)try{t=JSON.parse(t)}catch(t){}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,validateStatus:function(t){return t>=200&&t<300}};u.headers={common:{Accept:"application/json, text/plain, */*"}},r.forEach(["delete","get","head"],(function(t){u.headers[t]={}})),r.forEach(["post","put","patch"],(function(t){u.headers[t]=r.merge(i)})),t.exports=u}).call(this,n(6))},function(t,e,n){"use strict";var r=n(1),o=n(32),i=n(8),a=n(34),s=n(35),u=n(12);t.exports=function(t){return new Promise((function(e,c){var f=t.data,p=t.headers;r.isFormData(f)&&delete p["Content-Type"];var l=new XMLHttpRequest;if(t.auth){var d=t.auth.username||"",h=t.auth.password||"";p.Authorization="Basic "+btoa(d+":"+h)}if(l.open(t.method.toUpperCase(),i(t.url,t.params,t.paramsSerializer),!0),l.timeout=t.timeout,l.onreadystatechange=function(){if(l&&4===l.readyState&&(0!==l.status||l.responseURL&&0===l.responseURL.indexOf("file:"))){var n="getAllResponseHeaders"in l?a(l.getAllResponseHeaders()):null,r={data:t.responseType&&"text"!==t.responseType?l.response:l.responseText,status:l.status,statusText:l.statusText,headers:n,config:t,request:l};o(e,c,r),l=null}},l.onabort=function(){l&&(c(u("Request aborted",t,"ECONNABORTED",l)),l=null)},l.onerror=function(){c(u("Network Error",t,null,l)),l=null},l.ontimeout=function(){c(u("timeout of "+t.timeout+"ms exceeded",t,"ECONNABORTED",l)),l=null},r.isStandardBrowserEnv()){var v=n(36),m=(t.withCredentials||s(t.url))&&t.xsrfCookieName?v.read(t.xsrfCookieName):void 0;m&&(p[t.xsrfHeaderName]=m)}if("setRequestHeader"in l&&r.forEach(p,(function(t,e){void 0===f&&"content-type"===e.toLowerCase()?delete p[e]:l.setRequestHeader(e,t)})),t.withCredentials&&(l.withCredentials=!0),t.responseType)try{l.responseType=t.responseType}catch(e){if("json"!==t.responseType)throw e}"function"==typeof t.onDownloadProgress&&l.addEventListener("progress",t.onDownloadProgress),"function"==typeof t.onUploadProgress&&l.upload&&l.upload.addEventListener("progress",t.onUploadProgress),t.cancelToken&&t.cancelToken.promise.then((function(t){l&&(l.abort(),c(t),l=null)})),void 0===f&&(f=null),l.send(f)}))}},function(t,e,n){"use strict";var r=n(33);t.exports=function(t,e,n,o,i){var a=new Error(t);return r(a,e,n,o,i)}},function(t,e,n){"use strict";var r=n(1);t.exports=function(t,e){e=e||{};var n={};return r.forEach(["url","method","params","data"],(function(t){void 0!==e[t]&&(n[t]=e[t])})),r.forEach(["headers","auth","proxy"],(function(o){r.isObject(e[o])?n[o]=r.deepMerge(t[o],e[o]):void 0!==e[o]?n[o]=e[o]:r.isObject(t[o])?n[o]=r.deepMerge(t[o]):void 0!==t[o]&&(n[o]=t[o])})),r.forEach(["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","maxContentLength","validateStatus","maxRedirects","httpAgent","httpsAgent","cancelToken","socketPath"],(function(r){void 0!==e[r]?n[r]=e[r]:void 0!==t[r]&&(n[r]=t[r])})),n}},function(t,e,n){"use strict";function r(t){this.message=t}r.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},r.prototype.__CANCEL__=!0,t.exports=r},function(t,e,n){"use strict";(function(t){var n=("undefined"!=typeof window?window:void 0!==t?t:{}).__VUE_DEVTOOLS_GLOBAL_HOOK__;function r(t,e){Object.keys(t).forEach((function(n){return e(t[n],n)}))}var o=function(t,e){this.runtime=e,this._children=Object.create(null),this._rawModule=t;var n=t.state;this.state=("function"==typeof n?n():n)||{}},i={namespaced:{configurable:!0}};i.namespaced.get=function(){return!!this._rawModule.namespaced},o.prototype.addChild=function(t,e){this._children[t]=e},o.prototype.removeChild=function(t){delete this._children[t]},o.prototype.getChild=function(t){return this._children[t]},o.prototype.update=function(t){this._rawModule.namespaced=t.namespaced,t.actions&&(this._rawModule.actions=t.actions),t.mutations&&(this._rawModule.mutations=t.mutations),t.getters&&(this._rawModule.getters=t.getters)},o.prototype.forEachChild=function(t){r(this._children,t)},o.prototype.forEachGetter=function(t){this._rawModule.getters&&r(this._rawModule.getters,t)},o.prototype.forEachAction=function(t){this._rawModule.actions&&r(this._rawModule.actions,t)},o.prototype.forEachMutation=function(t){this._rawModule.mutations&&r(this._rawModule.mutations,t)},Object.defineProperties(o.prototype,i);var a=function(t){this.register([],t,!1)};a.prototype.get=function(t){return t.reduce((function(t,e){return t.getChild(e)}),this.root)},a.prototype.getNamespace=function(t){var e=this.root;return t.reduce((function(t,n){return t+((e=e.getChild(n)).namespaced?n+"/":"")}),"")},a.prototype.update=function(t){!function t(e,n,r){0;n.update(r);if(r.modules)for(var o in r.modules){if(!n.getChild(o))return void 0;t(e.concat(o),n.getChild(o),r.modules[o])}}([],this.root,t)},a.prototype.register=function(t,e,n){var i=this;void 0===n&&(n=!0);var a=new o(e,n);0===t.length?this.root=a:this.get(t.slice(0,-1)).addChild(t[t.length-1],a);e.modules&&r(e.modules,(function(e,r){i.register(t.concat(r),e,n)}))},a.prototype.unregister=function(t){var e=this.get(t.slice(0,-1)),n=t[t.length-1];e.getChild(n).runtime&&e.removeChild(n)};var s;var u=function(t){var e=this;void 0===t&&(t={}),!s&&"undefined"!=typeof window&&window.Vue&&m(window.Vue);var r=t.plugins;void 0===r&&(r=[]);var o=t.strict;void 0===o&&(o=!1),this._committing=!1,this._actions=Object.create(null),this._actionSubscribers=[],this._mutations=Object.create(null),this._wrappedGetters=Object.create(null),this._modules=new a(t),this._modulesNamespaceMap=Object.create(null),this._subscribers=[],this._watcherVM=new s;var i=this,u=this.dispatch,c=this.commit;this.dispatch=function(t,e){return u.call(i,t,e)},this.commit=function(t,e,n){return c.call(i,t,e,n)},this.strict=o;var f=this._modules.root.state;d(this,f,[],this._modules.root),l(this,f),r.forEach((function(t){return t(e)})),(void 0!==t.devtools?t.devtools:s.config.devtools)&&function(t){n&&(t._devtoolHook=n,n.emit("vuex:init",t),n.on("vuex:travel-to-state",(function(e){t.replaceState(e)})),t.subscribe((function(t,e){n.emit("vuex:mutation",t,e)})))}(this)},c={state:{configurable:!0}};function f(t,e){return e.indexOf(t)<0&&e.push(t),function(){var n=e.indexOf(t);n>-1&&e.splice(n,1)}}function p(t,e){t._actions=Object.create(null),t._mutations=Object.create(null),t._wrappedGetters=Object.create(null),t._modulesNamespaceMap=Object.create(null);var n=t.state;d(t,n,[],t._modules.root,!0),l(t,n,e)}function l(t,e,n){var o=t._vm;t.getters={};var i=t._wrappedGetters,a={};r(i,(function(e,n){a[n]=function(t,e){return function(){return t(e)}}(e,t),Object.defineProperty(t.getters,n,{get:function(){return t._vm[n]},enumerable:!0})}));var u=s.config.silent;s.config.silent=!0,t._vm=new s({data:{$$state:e},computed:a}),s.config.silent=u,t.strict&&function(t){t._vm.$watch((function(){return this._data.$$state}),(function(){0}),{deep:!0,sync:!0})}(t),o&&(n&&t._withCommit((function(){o._data.$$state=null})),s.nextTick((function(){return o.$destroy()})))}function d(t,e,n,r,o){var i=!n.length,a=t._modules.getNamespace(n);if(r.namespaced&&(t._modulesNamespaceMap[a]=r),!i&&!o){var u=h(e,n.slice(0,-1)),c=n[n.length-1];t._withCommit((function(){s.set(u,c,r.state)}))}var f=r.context=function(t,e,n){var r=""===e,o={dispatch:r?t.dispatch:function(n,r,o){var i=v(n,r,o),a=i.payload,s=i.options,u=i.type;return s&&s.root||(u=e+u),t.dispatch(u,a)},commit:r?t.commit:function(n,r,o){var i=v(n,r,o),a=i.payload,s=i.options,u=i.type;s&&s.root||(u=e+u),t.commit(u,a,s)}};return Object.defineProperties(o,{getters:{get:r?function(){return t.getters}:function(){return function(t,e){var n={},r=e.length;return Object.keys(t.getters).forEach((function(o){if(o.slice(0,r)===e){var i=o.slice(r);Object.defineProperty(n,i,{get:function(){return t.getters[o]},enumerable:!0})}})),n}(t,e)}},state:{get:function(){return h(t.state,n)}}}),o}(t,a,n);r.forEachMutation((function(e,n){!function(t,e,n,r){(t._mutations[e]||(t._mutations[e]=[])).push((function(e){n.call(t,r.state,e)}))}(t,a+n,e,f)})),r.forEachAction((function(e,n){var r=e.root?n:a+n,o=e.handler||e;!function(t,e,n,r){(t._actions[e]||(t._actions[e]=[])).push((function(e,o){var i,a=n.call(t,{dispatch:r.dispatch,commit:r.commit,getters:r.getters,state:r.state,rootGetters:t.getters,rootState:t.state},e,o);return(i=a)&&"function"==typeof i.then||(a=Promise.resolve(a)),t._devtoolHook?a.catch((function(e){throw t._devtoolHook.emit("vuex:error",e),e})):a}))}(t,r,o,f)})),r.forEachGetter((function(e,n){!function(t,e,n,r){if(t._wrappedGetters[e])return void 0;t._wrappedGetters[e]=function(t){return n(r.state,r.getters,t.state,t.getters)}}(t,a+n,e,f)})),r.forEachChild((function(r,i){d(t,e,n.concat(i),r,o)}))}function h(t,e){return e.length?e.reduce((function(t,e){return t[e]}),t):t}function v(t,e,n){var r;return null!==(r=t)&&"object"==typeof r&&t.type&&(n=e,e=t,t=t.type),{type:t,payload:e,options:n}}function m(t){s&&t===s|| +/** + * vuex v3.1.1 + * (c) 2019 Evan You + * @license MIT + */ +function(t){if(Number(t.version.split(".")[0])>=2)t.mixin({beforeCreate:n});else{var e=t.prototype._init;t.prototype._init=function(t){void 0===t&&(t={}),t.init=t.init?[n].concat(t.init):n,e.call(this,t)}}function n(){var t=this.$options;t.store?this.$store="function"==typeof t.store?t.store():t.store:t.parent&&t.parent.$store&&(this.$store=t.parent.$store)}}(s=t)}c.state.get=function(){return this._vm._data.$$state},c.state.set=function(t){0},u.prototype.commit=function(t,e,n){var r=this,o=v(t,e,n),i=o.type,a=o.payload,s=(o.options,{type:i,payload:a}),u=this._mutations[i];u&&(this._withCommit((function(){u.forEach((function(t){t(a)}))})),this._subscribers.forEach((function(t){return t(s,r.state)})))},u.prototype.dispatch=function(t,e){var n=this,r=v(t,e),o=r.type,i=r.payload,a={type:o,payload:i},s=this._actions[o];if(s){try{this._actionSubscribers.filter((function(t){return t.before})).forEach((function(t){return t.before(a,n.state)}))}catch(t){0}return(s.length>1?Promise.all(s.map((function(t){return t(i)}))):s[0](i)).then((function(t){try{n._actionSubscribers.filter((function(t){return t.after})).forEach((function(t){return t.after(a,n.state)}))}catch(t){0}return t}))}},u.prototype.subscribe=function(t){return f(t,this._subscribers)},u.prototype.subscribeAction=function(t){return f("function"==typeof t?{before:t}:t,this._actionSubscribers)},u.prototype.watch=function(t,e,n){var r=this;return this._watcherVM.$watch((function(){return t(r.state,r.getters)}),e,n)},u.prototype.replaceState=function(t){var e=this;this._withCommit((function(){e._vm._data.$$state=t}))},u.prototype.registerModule=function(t,e,n){void 0===n&&(n={}),"string"==typeof t&&(t=[t]),this._modules.register(t,e),d(this,this.state,t,this._modules.get(t),n.preserveState),l(this,this.state)},u.prototype.unregisterModule=function(t){var e=this;"string"==typeof t&&(t=[t]),this._modules.unregister(t),this._withCommit((function(){var n=h(e.state,t.slice(0,-1));s.delete(n,t[t.length-1])})),p(this)},u.prototype.hotUpdate=function(t){this._modules.update(t),p(this,!0)},u.prototype._withCommit=function(t){var e=this._committing;this._committing=!0,t(),this._committing=e},Object.defineProperties(u.prototype,c);var y=O((function(t,e){var n={};return w(e).forEach((function(e){var r=e.key,o=e.val;n[r]=function(){var e=this.$store.state,n=this.$store.getters;if(t){var r=C(this.$store,"mapState",t);if(!r)return;e=r.context.state,n=r.context.getters}return"function"==typeof o?o.call(this,e,n):e[o]},n[r].vuex=!0})),n})),g=O((function(t,e){var n={};return w(e).forEach((function(e){var r=e.key,o=e.val;n[r]=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];var r=this.$store.commit;if(t){var i=C(this.$store,"mapMutations",t);if(!i)return;r=i.context.commit}return"function"==typeof o?o.apply(this,[r].concat(e)):r.apply(this.$store,[o].concat(e))}})),n})),b=O((function(t,e){var n={};return w(e).forEach((function(e){var r=e.key,o=e.val;o=t+o,n[r]=function(){if(!t||C(this.$store,"mapGetters",t))return this.$store.getters[o]},n[r].vuex=!0})),n})),_=O((function(t,e){var n={};return w(e).forEach((function(e){var r=e.key,o=e.val;n[r]=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];var r=this.$store.dispatch;if(t){var i=C(this.$store,"mapActions",t);if(!i)return;r=i.context.dispatch}return"function"==typeof o?o.apply(this,[r].concat(e)):r.apply(this.$store,[o].concat(e))}})),n}));function w(t){return Array.isArray(t)?t.map((function(t){return{key:t,val:t}})):Object.keys(t).map((function(e){return{key:e,val:t[e]}}))}function O(t){return function(e,n){return"string"!=typeof e?(n=e,e=""):"/"!==e.charAt(e.length-1)&&(e+="/"),t(e,n)}}function C(t,e,n){return t._modulesNamespaceMap[n]}var A={Store:u,install:m,version:"3.1.1",mapState:y,mapMutations:g,mapGetters:b,mapActions:_,createNamespacedHelpers:function(t){return{mapState:y.bind(null,t),mapGetters:b.bind(null,t),mapMutations:g.bind(null,t),mapActions:_.bind(null,t)}}};e.a=A}).call(this,n(3))},,function(t,e,n){window,t.exports=function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=0)}([function(t,e,n){"use strict";function r(){return"undefined"==typeof OC?Promise.reject(new Error("OC not defined")):void 0===OC.PasswordConfirmation?Promise.reject(new Error("OC.PasswordConfirmation not defined")):OC.PasswordConfirmation.requiresPasswordConfirmation()?new Promise((function(t,e){OC.PasswordConfirmation.requirePasswordConfirmation(t,{},e)})):Promise.resolve()}n.r(e),n.d(e,"default",(function(){return r}))}])},function(t,e,n){"use strict";(function(t){for( +/**! + * @fileOverview Kickass library to create and place poppers near their reference elements. + * @version 1.15.0 + * @license + * Copyright (c) 2016 Federico Zivolo and contributors + * + * 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. + */ +var n="undefined"!=typeof window&&"undefined"!=typeof document,r=["Edge","Trident","Firefox"],o=0,i=0;i<r.length;i+=1)if(n&&navigator.userAgent.indexOf(r[i])>=0){o=1;break}var a=n&&window.Promise?function(t){var e=!1;return function(){e||(e=!0,window.Promise.resolve().then((function(){e=!1,t()})))}}:function(t){var e=!1;return function(){e||(e=!0,setTimeout((function(){e=!1,t()}),o))}};function s(t){return t&&"[object Function]"==={}.toString.call(t)}function u(t,e){if(1!==t.nodeType)return[];var n=t.ownerDocument.defaultView.getComputedStyle(t,null);return e?n[e]:n}function c(t){return"HTML"===t.nodeName?t:t.parentNode||t.host}function f(t){if(!t)return document.body;switch(t.nodeName){case"HTML":case"BODY":return t.ownerDocument.body;case"#document":return t.body}var e=u(t),n=e.overflow,r=e.overflowX,o=e.overflowY;return/(auto|scroll|overlay)/.test(n+o+r)?t:f(c(t))}var p=n&&!(!window.MSInputMethodContext||!document.documentMode),l=n&&/MSIE 10/.test(navigator.userAgent);function d(t){return 11===t?p:10===t?l:p||l}function h(t){if(!t)return document.documentElement;for(var e=d(10)?document.body:null,n=t.offsetParent||null;n===e&&t.nextElementSibling;)n=(t=t.nextElementSibling).offsetParent;var r=n&&n.nodeName;return r&&"BODY"!==r&&"HTML"!==r?-1!==["TH","TD","TABLE"].indexOf(n.nodeName)&&"static"===u(n,"position")?h(n):n:t?t.ownerDocument.documentElement:document.documentElement}function v(t){return null!==t.parentNode?v(t.parentNode):t}function m(t,e){if(!(t&&t.nodeType&&e&&e.nodeType))return document.documentElement;var n=t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING,r=n?t:e,o=n?e:t,i=document.createRange();i.setStart(r,0),i.setEnd(o,0);var a,s,u=i.commonAncestorContainer;if(t!==u&&e!==u||r.contains(o))return"BODY"===(s=(a=u).nodeName)||"HTML"!==s&&h(a.firstElementChild)!==a?h(u):u;var c=v(t);return c.host?m(c.host,e):m(t,v(e).host)}function y(t){var e="top"===(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"top")?"scrollTop":"scrollLeft",n=t.nodeName;if("BODY"===n||"HTML"===n){var r=t.ownerDocument.documentElement;return(t.ownerDocument.scrollingElement||r)[e]}return t[e]}function g(t,e){var n="x"===e?"Left":"Top",r="Left"===n?"Right":"Bottom";return parseFloat(t["border"+n+"Width"],10)+parseFloat(t["border"+r+"Width"],10)}function b(t,e,n,r){return Math.max(e["offset"+t],e["scroll"+t],n["client"+t],n["offset"+t],n["scroll"+t],d(10)?parseInt(n["offset"+t])+parseInt(r["margin"+("Height"===t?"Top":"Left")])+parseInt(r["margin"+("Height"===t?"Bottom":"Right")]):0)}function _(t){var e=t.body,n=t.documentElement,r=d(10)&&getComputedStyle(n);return{height:b("Height",e,n,r),width:b("Width",e,n,r)}}var w=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},O=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),C=function(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t},A=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t};function x(t){return A({},t,{right:t.left+t.width,bottom:t.top+t.height})}function E(t){var e={};try{if(d(10)){e=t.getBoundingClientRect();var n=y(t,"top"),r=y(t,"left");e.top+=n,e.left+=r,e.bottom+=n,e.right+=r}else e=t.getBoundingClientRect()}catch(t){}var o={left:e.left,top:e.top,width:e.right-e.left,height:e.bottom-e.top},i="HTML"===t.nodeName?_(t.ownerDocument):{},a=i.width||t.clientWidth||o.right-o.left,s=i.height||t.clientHeight||o.bottom-o.top,c=t.offsetWidth-a,f=t.offsetHeight-s;if(c||f){var p=u(t);c-=g(p,"x"),f-=g(p,"y"),o.width-=c,o.height-=f}return x(o)}function $(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=d(10),o="HTML"===e.nodeName,i=E(t),a=E(e),s=f(t),c=u(e),p=parseFloat(c.borderTopWidth,10),l=parseFloat(c.borderLeftWidth,10);n&&o&&(a.top=Math.max(a.top,0),a.left=Math.max(a.left,0));var h=x({top:i.top-a.top-p,left:i.left-a.left-l,width:i.width,height:i.height});if(h.marginTop=0,h.marginLeft=0,!r&&o){var v=parseFloat(c.marginTop,10),m=parseFloat(c.marginLeft,10);h.top-=p-v,h.bottom-=p-v,h.left-=l-m,h.right-=l-m,h.marginTop=v,h.marginLeft=m}return(r&&!n?e.contains(s):e===s&&"BODY"!==s.nodeName)&&(h=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=y(e,"top"),o=y(e,"left"),i=n?-1:1;return t.top+=r*i,t.bottom+=r*i,t.left+=o*i,t.right+=o*i,t}(h,e)),h}function k(t){if(!t||!t.parentElement||d())return document.documentElement;for(var e=t.parentElement;e&&"none"===u(e,"transform");)e=e.parentElement;return e||document.documentElement}function T(t,e,n,r){var o=arguments.length>4&&void 0!==arguments[4]&&arguments[4],i={top:0,left:0},a=o?k(t):m(t,e);if("viewport"===r)i=function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=t.ownerDocument.documentElement,r=$(t,n),o=Math.max(n.clientWidth,window.innerWidth||0),i=Math.max(n.clientHeight,window.innerHeight||0),a=e?0:y(n),s=e?0:y(n,"left");return x({top:a-r.top+r.marginTop,left:s-r.left+r.marginLeft,width:o,height:i})}(a,o);else{var s=void 0;"scrollParent"===r?"BODY"===(s=f(c(e))).nodeName&&(s=t.ownerDocument.documentElement):s="window"===r?t.ownerDocument.documentElement:r;var p=$(s,a,o);if("HTML"!==s.nodeName||function t(e){var n=e.nodeName;if("BODY"===n||"HTML"===n)return!1;if("fixed"===u(e,"position"))return!0;var r=c(e);return!!r&&t(r)}(a))i=p;else{var l=_(t.ownerDocument),d=l.height,h=l.width;i.top+=p.top-p.marginTop,i.bottom=d+p.top,i.left+=p.left-p.marginLeft,i.right=h+p.left}}var v="number"==typeof(n=n||0);return i.left+=v?n:n.left||0,i.top+=v?n:n.top||0,i.right-=v?n:n.right||0,i.bottom-=v?n:n.bottom||0,i}function S(t,e,n,r,o){var i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===t.indexOf("auto"))return t;var a=T(n,r,i,o),s={top:{width:a.width,height:e.top-a.top},right:{width:a.right-e.right,height:a.height},bottom:{width:a.width,height:a.bottom-e.bottom},left:{width:e.left-a.left,height:a.height}},u=Object.keys(s).map((function(t){return A({key:t},s[t],{area:(e=s[t],e.width*e.height)});var e})).sort((function(t,e){return e.area-t.area})),c=u.filter((function(t){var e=t.width,r=t.height;return e>=n.clientWidth&&r>=n.clientHeight})),f=c.length>0?c[0].key:u[0].key,p=t.split("-")[1];return f+(p?"-"+p:"")}function j(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;return $(n,r?k(e):m(e,n),r)}function I(t){var e=t.ownerDocument.defaultView.getComputedStyle(t),n=parseFloat(e.marginTop||0)+parseFloat(e.marginBottom||0),r=parseFloat(e.marginLeft||0)+parseFloat(e.marginRight||0);return{width:t.offsetWidth+r,height:t.offsetHeight+n}}function L(t){var e={left:"right",right:"left",bottom:"top",top:"bottom"};return t.replace(/left|right|bottom|top/g,(function(t){return e[t]}))}function P(t,e,n){n=n.split("-")[0];var r=I(t),o={width:r.width,height:r.height},i=-1!==["right","left"].indexOf(n),a=i?"top":"left",s=i?"left":"top",u=i?"height":"width",c=i?"width":"height";return o[a]=e[a]+e[u]/2-r[u]/2,o[s]=n===s?e[s]-r[c]:e[L(s)],o}function N(t,e){return Array.prototype.find?t.find(e):t.filter(e)[0]}function R(t,e,n){return(void 0===n?t:t.slice(0,function(t,e,n){if(Array.prototype.findIndex)return t.findIndex((function(t){return t[e]===n}));var r=N(t,(function(t){return t[e]===n}));return t.indexOf(r)}(t,"name",n))).forEach((function(t){t.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var n=t.function||t.fn;t.enabled&&s(n)&&(e.offsets.popper=x(e.offsets.popper),e.offsets.reference=x(e.offsets.reference),e=n(e,t))})),e}function U(){if(!this.state.isDestroyed){var t={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};t.offsets.reference=j(this.state,this.popper,this.reference,this.options.positionFixed),t.placement=S(this.options.placement,t.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),t.originalPlacement=t.placement,t.positionFixed=this.options.positionFixed,t.offsets.popper=P(this.popper,t.offsets.reference,t.placement),t.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",t=R(this.modifiers,t),this.state.isCreated?this.options.onUpdate(t):(this.state.isCreated=!0,this.options.onCreate(t))}}function D(t,e){return t.some((function(t){var n=t.name;return t.enabled&&n===e}))}function M(t){for(var e=[!1,"ms","Webkit","Moz","O"],n=t.charAt(0).toUpperCase()+t.slice(1),r=0;r<e.length;r++){var o=e[r],i=o?""+o+n:t;if(void 0!==document.body.style[i])return i}return null}function F(){return this.state.isDestroyed=!0,D(this.modifiers,"applyStyle")&&(this.popper.removeAttribute("x-placement"),this.popper.style.position="",this.popper.style.top="",this.popper.style.left="",this.popper.style.right="",this.popper.style.bottom="",this.popper.style.willChange="",this.popper.style[M("transform")]=""),this.disableEventListeners(),this.options.removeOnDestroy&&this.popper.parentNode.removeChild(this.popper),this}function B(t){var e=t.ownerDocument;return e?e.defaultView:window}function H(t,e,n,r){n.updateBound=r,B(t).addEventListener("resize",n.updateBound,{passive:!0});var o=f(t);return function t(e,n,r,o){var i="BODY"===e.nodeName,a=i?e.ownerDocument.defaultView:e;a.addEventListener(n,r,{passive:!0}),i||t(f(a.parentNode),n,r,o),o.push(a)}(o,"scroll",n.updateBound,n.scrollParents),n.scrollElement=o,n.eventsEnabled=!0,n}function q(){this.state.eventsEnabled||(this.state=H(this.reference,this.options,this.state,this.scheduleUpdate))}function z(){var t,e;this.state.eventsEnabled&&(cancelAnimationFrame(this.scheduleUpdate),this.state=(t=this.reference,e=this.state,B(t).removeEventListener("resize",e.updateBound),e.scrollParents.forEach((function(t){t.removeEventListener("scroll",e.updateBound)})),e.updateBound=null,e.scrollParents=[],e.scrollElement=null,e.eventsEnabled=!1,e))}function V(t){return""!==t&&!isNaN(parseFloat(t))&&isFinite(t)}function G(t,e){Object.keys(e).forEach((function(n){var r="";-1!==["width","height","top","right","bottom","left"].indexOf(n)&&V(e[n])&&(r="px"),t.style[n]=e[n]+r}))}var W=n&&/Firefox/i.test(navigator.userAgent);function K(t,e,n){var r=N(t,(function(t){return t.name===e})),o=!!r&&t.some((function(t){return t.name===n&&t.enabled&&t.order<r.order}));if(!o){var i="`"+e+"`",a="`"+n+"`";console.warn(a+" modifier is required by "+i+" modifier in order to work, be sure to include it before "+i+"!")}return o}var X=["auto-start","auto","auto-end","top-start","top","top-end","right-start","right","right-end","bottom-end","bottom","bottom-start","left-end","left","left-start"],Y=X.slice(3);function J(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=Y.indexOf(t),r=Y.slice(n+1).concat(Y.slice(0,n));return e?r.reverse():r}var Q={FLIP:"flip",CLOCKWISE:"clockwise",COUNTERCLOCKWISE:"counterclockwise"};function Z(t,e,n,r){var o=[0,0],i=-1!==["right","left"].indexOf(r),a=t.split(/(\+|\-)/).map((function(t){return t.trim()})),s=a.indexOf(N(a,(function(t){return-1!==t.search(/,|\s/)})));a[s]&&-1===a[s].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var u=/\s*,\s*|\s+/,c=-1!==s?[a.slice(0,s).concat([a[s].split(u)[0]]),[a[s].split(u)[1]].concat(a.slice(s+1))]:[a];return(c=c.map((function(t,r){var o=(1===r?!i:i)?"height":"width",a=!1;return t.reduce((function(t,e){return""===t[t.length-1]&&-1!==["+","-"].indexOf(e)?(t[t.length-1]=e,a=!0,t):a?(t[t.length-1]+=e,a=!1,t):t.concat(e)}),[]).map((function(t){return function(t,e,n,r){var o=t.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),i=+o[1],a=o[2];if(!i)return t;if(0===a.indexOf("%")){var s=void 0;switch(a){case"%p":s=n;break;case"%":case"%r":default:s=r}return x(s)[e]/100*i}if("vh"===a||"vw"===a){return("vh"===a?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*i}return i}(t,o,e,n)}))}))).forEach((function(t,e){t.forEach((function(n,r){V(n)&&(o[e]+=n*("-"===t[r-1]?-1:1))}))})),o}var tt={placement:"bottom",positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(t){var e=t.placement,n=e.split("-")[0],r=e.split("-")[1];if(r){var o=t.offsets,i=o.reference,a=o.popper,s=-1!==["bottom","top"].indexOf(n),u=s?"left":"top",c=s?"width":"height",f={start:C({},u,i[u]),end:C({},u,i[u]+i[c]-a[c])};t.offsets.popper=A({},a,f[r])}return t}},offset:{order:200,enabled:!0,fn:function(t,e){var n=e.offset,r=t.placement,o=t.offsets,i=o.popper,a=o.reference,s=r.split("-")[0],u=void 0;return u=V(+n)?[+n,0]:Z(n,i,a,s),"left"===s?(i.top+=u[0],i.left-=u[1]):"right"===s?(i.top+=u[0],i.left+=u[1]):"top"===s?(i.left+=u[0],i.top-=u[1]):"bottom"===s&&(i.left+=u[0],i.top+=u[1]),t.popper=i,t},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(t,e){var n=e.boundariesElement||h(t.instance.popper);t.instance.reference===n&&(n=h(n));var r=M("transform"),o=t.instance.popper.style,i=o.top,a=o.left,s=o[r];o.top="",o.left="",o[r]="";var u=T(t.instance.popper,t.instance.reference,e.padding,n,t.positionFixed);o.top=i,o.left=a,o[r]=s,e.boundaries=u;var c=e.priority,f=t.offsets.popper,p={primary:function(t){var n=f[t];return f[t]<u[t]&&!e.escapeWithReference&&(n=Math.max(f[t],u[t])),C({},t,n)},secondary:function(t){var n="right"===t?"left":"top",r=f[n];return f[t]>u[t]&&!e.escapeWithReference&&(r=Math.min(f[n],u[t]-("right"===t?f.width:f.height))),C({},n,r)}};return c.forEach((function(t){var e=-1!==["left","top"].indexOf(t)?"primary":"secondary";f=A({},f,p[e](t))})),t.offsets.popper=f,t},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(t){var e=t.offsets,n=e.popper,r=e.reference,o=t.placement.split("-")[0],i=Math.floor,a=-1!==["top","bottom"].indexOf(o),s=a?"right":"bottom",u=a?"left":"top",c=a?"width":"height";return n[s]<i(r[u])&&(t.offsets.popper[u]=i(r[u])-n[c]),n[u]>i(r[s])&&(t.offsets.popper[u]=i(r[s])),t}},arrow:{order:500,enabled:!0,fn:function(t,e){var n;if(!K(t.instance.modifiers,"arrow","keepTogether"))return t;var r=e.element;if("string"==typeof r){if(!(r=t.instance.popper.querySelector(r)))return t}else if(!t.instance.popper.contains(r))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),t;var o=t.placement.split("-")[0],i=t.offsets,a=i.popper,s=i.reference,c=-1!==["left","right"].indexOf(o),f=c?"height":"width",p=c?"Top":"Left",l=p.toLowerCase(),d=c?"left":"top",h=c?"bottom":"right",v=I(r)[f];s[h]-v<a[l]&&(t.offsets.popper[l]-=a[l]-(s[h]-v)),s[l]+v>a[h]&&(t.offsets.popper[l]+=s[l]+v-a[h]),t.offsets.popper=x(t.offsets.popper);var m=s[l]+s[f]/2-v/2,y=u(t.instance.popper),g=parseFloat(y["margin"+p],10),b=parseFloat(y["border"+p+"Width"],10),_=m-t.offsets.popper[l]-g-b;return _=Math.max(Math.min(a[f]-v,_),0),t.arrowElement=r,t.offsets.arrow=(C(n={},l,Math.round(_)),C(n,d,""),n),t},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(t,e){if(D(t.instance.modifiers,"inner"))return t;if(t.flipped&&t.placement===t.originalPlacement)return t;var n=T(t.instance.popper,t.instance.reference,e.padding,e.boundariesElement,t.positionFixed),r=t.placement.split("-")[0],o=L(r),i=t.placement.split("-")[1]||"",a=[];switch(e.behavior){case Q.FLIP:a=[r,o];break;case Q.CLOCKWISE:a=J(r);break;case Q.COUNTERCLOCKWISE:a=J(r,!0);break;default:a=e.behavior}return a.forEach((function(s,u){if(r!==s||a.length===u+1)return t;r=t.placement.split("-")[0],o=L(r);var c=t.offsets.popper,f=t.offsets.reference,p=Math.floor,l="left"===r&&p(c.right)>p(f.left)||"right"===r&&p(c.left)<p(f.right)||"top"===r&&p(c.bottom)>p(f.top)||"bottom"===r&&p(c.top)<p(f.bottom),d=p(c.left)<p(n.left),h=p(c.right)>p(n.right),v=p(c.top)<p(n.top),m=p(c.bottom)>p(n.bottom),y="left"===r&&d||"right"===r&&h||"top"===r&&v||"bottom"===r&&m,g=-1!==["top","bottom"].indexOf(r),b=!!e.flipVariations&&(g&&"start"===i&&d||g&&"end"===i&&h||!g&&"start"===i&&v||!g&&"end"===i&&m),_=!!e.flipVariationsByContent&&(g&&"start"===i&&h||g&&"end"===i&&d||!g&&"start"===i&&m||!g&&"end"===i&&v),w=b||_;(l||y||w)&&(t.flipped=!0,(l||y)&&(r=a[u+1]),w&&(i=function(t){return"end"===t?"start":"start"===t?"end":t}(i)),t.placement=r+(i?"-"+i:""),t.offsets.popper=A({},t.offsets.popper,P(t.instance.popper,t.offsets.reference,t.placement)),t=R(t.instance.modifiers,t,"flip"))})),t},behavior:"flip",padding:5,boundariesElement:"viewport",flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:function(t){var e=t.placement,n=e.split("-")[0],r=t.offsets,o=r.popper,i=r.reference,a=-1!==["left","right"].indexOf(n),s=-1===["top","left"].indexOf(n);return o[a?"left":"top"]=i[n]-(s?o[a?"width":"height"]:0),t.placement=L(e),t.offsets.popper=x(o),t}},hide:{order:800,enabled:!0,fn:function(t){if(!K(t.instance.modifiers,"hide","preventOverflow"))return t;var e=t.offsets.reference,n=N(t.instance.modifiers,(function(t){return"preventOverflow"===t.name})).boundaries;if(e.bottom<n.top||e.left>n.right||e.top>n.bottom||e.right<n.left){if(!0===t.hide)return t;t.hide=!0,t.attributes["x-out-of-boundaries"]=""}else{if(!1===t.hide)return t;t.hide=!1,t.attributes["x-out-of-boundaries"]=!1}return t}},computeStyle:{order:850,enabled:!0,fn:function(t,e){var n=e.x,r=e.y,o=t.offsets.popper,i=N(t.instance.modifiers,(function(t){return"applyStyle"===t.name})).gpuAcceleration;void 0!==i&&console.warn("WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!");var a=void 0!==i?i:e.gpuAcceleration,s=h(t.instance.popper),u=E(s),c={position:o.position},f=function(t,e){var n=t.offsets,r=n.popper,o=n.reference,i=Math.round,a=Math.floor,s=function(t){return t},u=i(o.width),c=i(r.width),f=-1!==["left","right"].indexOf(t.placement),p=-1!==t.placement.indexOf("-"),l=e?f||p||u%2==c%2?i:a:s,d=e?i:s;return{left:l(u%2==1&&c%2==1&&!p&&e?r.left-1:r.left),top:d(r.top),bottom:d(r.bottom),right:l(r.right)}}(t,window.devicePixelRatio<2||!W),p="bottom"===n?"top":"bottom",l="right"===r?"left":"right",d=M("transform"),v=void 0,m=void 0;if(m="bottom"===p?"HTML"===s.nodeName?-s.clientHeight+f.bottom:-u.height+f.bottom:f.top,v="right"===l?"HTML"===s.nodeName?-s.clientWidth+f.right:-u.width+f.right:f.left,a&&d)c[d]="translate3d("+v+"px, "+m+"px, 0)",c[p]=0,c[l]=0,c.willChange="transform";else{var y="bottom"===p?-1:1,g="right"===l?-1:1;c[p]=m*y,c[l]=v*g,c.willChange=p+", "+l}var b={"x-placement":t.placement};return t.attributes=A({},b,t.attributes),t.styles=A({},c,t.styles),t.arrowStyles=A({},t.offsets.arrow,t.arrowStyles),t},gpuAcceleration:!0,x:"bottom",y:"right"},applyStyle:{order:900,enabled:!0,fn:function(t){var e,n;return G(t.instance.popper,t.styles),e=t.instance.popper,n=t.attributes,Object.keys(n).forEach((function(t){!1!==n[t]?e.setAttribute(t,n[t]):e.removeAttribute(t)})),t.arrowElement&&Object.keys(t.arrowStyles).length&&G(t.arrowElement,t.arrowStyles),t},onLoad:function(t,e,n,r,o){var i=j(o,e,t,n.positionFixed),a=S(n.placement,i,e,t,n.modifiers.flip.boundariesElement,n.modifiers.flip.padding);return e.setAttribute("x-placement",a),G(e,{position:n.positionFixed?"fixed":"absolute"}),n},gpuAcceleration:void 0}}},et=function(){function t(e,n){var r=this,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};w(this,t),this.scheduleUpdate=function(){return requestAnimationFrame(r.update)},this.update=a(this.update.bind(this)),this.options=A({},t.Defaults,o),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=e&&e.jquery?e[0]:e,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(A({},t.Defaults.modifiers,o.modifiers)).forEach((function(e){r.options.modifiers[e]=A({},t.Defaults.modifiers[e]||{},o.modifiers?o.modifiers[e]:{})})),this.modifiers=Object.keys(this.options.modifiers).map((function(t){return A({name:t},r.options.modifiers[t])})).sort((function(t,e){return t.order-e.order})),this.modifiers.forEach((function(t){t.enabled&&s(t.onLoad)&&t.onLoad(r.reference,r.popper,r.options,t,r.state)})),this.update();var i=this.options.eventsEnabled;i&&this.enableEventListeners(),this.state.eventsEnabled=i}return O(t,[{key:"update",value:function(){return U.call(this)}},{key:"destroy",value:function(){return F.call(this)}},{key:"enableEventListeners",value:function(){return q.call(this)}},{key:"disableEventListeners",value:function(){return z.call(this)}}]),t}();et.Utils=("undefined"!=typeof window?window:t).PopperUtils,et.placements=X,et.Defaults=tt,e.a=et}).call(this,n(3))},,,,function(t,e,n){(function(t){var r=void 0!==t&&t||"undefined"!=typeof self&&self||window,o=Function.prototype.apply;function i(t,e){this._id=t,this._clearFn=e}e.setTimeout=function(){return new i(o.call(setTimeout,r,arguments),clearTimeout)},e.setInterval=function(){return new i(o.call(setInterval,r,arguments),clearInterval)},e.clearTimeout=e.clearInterval=function(t){t&&t.close()},i.prototype.unref=i.prototype.ref=function(){},i.prototype.close=function(){this._clearFn.call(r,this._id)},e.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},e.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},e._unrefActive=e.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;e>=0&&(t._idleTimeoutId=setTimeout((function(){t._onTimeout&&t._onTimeout()}),e))},n(23),e.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==t&&t.setImmediate||this&&this.setImmediate,e.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==t&&t.clearImmediate||this&&this.clearImmediate}).call(this,n(3))},function(t,e,n){(function(t,e){!function(t,n){"use strict";if(!t.setImmediate){var r,o,i,a,s,u=1,c={},f=!1,p=t.document,l=Object.getPrototypeOf&&Object.getPrototypeOf(t);l=l&&l.setTimeout?l:t,"[object process]"==={}.toString.call(t.process)?r=function(t){e.nextTick((function(){h(t)}))}:!function(){if(t.postMessage&&!t.importScripts){var e=!0,n=t.onmessage;return t.onmessage=function(){e=!1},t.postMessage("","*"),t.onmessage=n,e}}()?t.MessageChannel?((i=new MessageChannel).port1.onmessage=function(t){h(t.data)},r=function(t){i.port2.postMessage(t)}):p&&"onreadystatechange"in p.createElement("script")?(o=p.documentElement,r=function(t){var e=p.createElement("script");e.onreadystatechange=function(){h(t),e.onreadystatechange=null,o.removeChild(e),e=null},o.appendChild(e)}):r=function(t){setTimeout(h,0,t)}:(a="setImmediate$"+Math.random()+"$",s=function(e){e.source===t&&"string"==typeof e.data&&0===e.data.indexOf(a)&&h(+e.data.slice(a.length))},t.addEventListener?t.addEventListener("message",s,!1):t.attachEvent("onmessage",s),r=function(e){t.postMessage(a+e,"*")}),l.setImmediate=function(t){"function"!=typeof t&&(t=new Function(""+t));for(var e=new Array(arguments.length-1),n=0;n<e.length;n++)e[n]=arguments[n+1];var o={callback:t,args:e};return c[u]=o,r(u),u++},l.clearImmediate=d}function d(t){delete c[t]}function h(t){if(f)setTimeout(h,0,t);else{var e=c[t];if(e){f=!0;try{!function(t){var e=t.callback,r=t.args;switch(r.length){case 0:e();break;case 1:e(r[0]);break;case 2:e(r[0],r[1]);break;case 3:e(r[0],r[1],r[2]);break;default:e.apply(n,r)}}(e)}finally{d(t),f=!1}}}}}("undefined"==typeof self?void 0===t?this:t:self)}).call(this,n(3),n(6))},function(t,e,n){t.exports=n(25)},function(t,e,n){"use strict";var r=n(1),o=n(7),i=n(27),a=n(13);function s(t){var e=new i(t),n=o(i.prototype.request,e);return r.extend(n,i.prototype,e),r.extend(n,e),n}var u=s(n(10));u.Axios=i,u.create=function(t){return s(a(u.defaults,t))},u.Cancel=n(14),u.CancelToken=n(39),u.isCancel=n(9),u.all=function(t){return Promise.all(t)},u.spread=n(40),t.exports=u,t.exports.default=u},function(t,e){ +/*! + * Determine if an object is a Buffer + * + * @author Feross Aboukhadijeh <https://feross.org> + * @license MIT + */ +t.exports=function(t){return null!=t&&null!=t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}},function(t,e,n){"use strict";var r=n(1),o=n(8),i=n(28),a=n(29),s=n(13);function u(t){this.defaults=t,this.interceptors={request:new i,response:new i}}u.prototype.request=function(t){"string"==typeof t?(t=arguments[1]||{}).url=arguments[0]:t=t||{},(t=s(this.defaults,t)).method=t.method?t.method.toLowerCase():"get";var e=[a,void 0],n=Promise.resolve(t);for(this.interceptors.request.forEach((function(t){e.unshift(t.fulfilled,t.rejected)})),this.interceptors.response.forEach((function(t){e.push(t.fulfilled,t.rejected)}));e.length;)n=n.then(e.shift(),e.shift());return n},u.prototype.getUri=function(t){return t=s(this.defaults,t),o(t.url,t.params,t.paramsSerializer).replace(/^\?/,"")},r.forEach(["delete","get","head","options"],(function(t){u.prototype[t]=function(e,n){return this.request(r.merge(n||{},{method:t,url:e}))}})),r.forEach(["post","put","patch"],(function(t){u.prototype[t]=function(e,n,o){return this.request(r.merge(o||{},{method:t,url:e,data:n}))}})),t.exports=u},function(t,e,n){"use strict";var r=n(1);function o(){this.handlers=[]}o.prototype.use=function(t,e){return this.handlers.push({fulfilled:t,rejected:e}),this.handlers.length-1},o.prototype.eject=function(t){this.handlers[t]&&(this.handlers[t]=null)},o.prototype.forEach=function(t){r.forEach(this.handlers,(function(e){null!==e&&t(e)}))},t.exports=o},function(t,e,n){"use strict";var r=n(1),o=n(30),i=n(9),a=n(10),s=n(37),u=n(38);function c(t){t.cancelToken&&t.cancelToken.throwIfRequested()}t.exports=function(t){return c(t),t.baseURL&&!s(t.url)&&(t.url=u(t.baseURL,t.url)),t.headers=t.headers||{},t.data=o(t.data,t.headers,t.transformRequest),t.headers=r.merge(t.headers.common||{},t.headers[t.method]||{},t.headers||{}),r.forEach(["delete","get","head","post","put","patch","common"],(function(e){delete t.headers[e]})),(t.adapter||a.adapter)(t).then((function(e){return c(t),e.data=o(e.data,e.headers,t.transformResponse),e}),(function(e){return i(e)||(c(t),e&&e.response&&(e.response.data=o(e.response.data,e.response.headers,t.transformResponse))),Promise.reject(e)}))}},function(t,e,n){"use strict";var r=n(1);t.exports=function(t,e,n){return r.forEach(n,(function(n){t=n(t,e)})),t}},function(t,e,n){"use strict";var r=n(1);t.exports=function(t,e){r.forEach(t,(function(n,r){r!==e&&r.toUpperCase()===e.toUpperCase()&&(t[e]=n,delete t[r])}))}},function(t,e,n){"use strict";var r=n(12);t.exports=function(t,e,n){var o=n.config.validateStatus;!o||o(n.status)?t(n):e(r("Request failed with status code "+n.status,n.config,null,n.request,n))}},function(t,e,n){"use strict";t.exports=function(t,e,n,r,o){return t.config=e,n&&(t.code=n),t.request=r,t.response=o,t.isAxiosError=!0,t.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},t}},function(t,e,n){"use strict";var r=n(1),o=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];t.exports=function(t){var e,n,i,a={};return t?(r.forEach(t.split("\n"),(function(t){if(i=t.indexOf(":"),e=r.trim(t.substr(0,i)).toLowerCase(),n=r.trim(t.substr(i+1)),e){if(a[e]&&o.indexOf(e)>=0)return;a[e]="set-cookie"===e?(a[e]?a[e]:[]).concat([n]):a[e]?a[e]+", "+n:n}})),a):a}},function(t,e,n){"use strict";var r=n(1);t.exports=r.isStandardBrowserEnv()?function(){var t,e=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function o(t){var r=t;return e&&(n.setAttribute("href",r),r=n.href),n.setAttribute("href",r),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return t=o(window.location.href),function(e){var n=r.isString(e)?o(e):e;return n.protocol===t.protocol&&n.host===t.host}}():function(){return!0}},function(t,e,n){"use strict";var r=n(1);t.exports=r.isStandardBrowserEnv()?{write:function(t,e,n,o,i,a){var s=[];s.push(t+"="+encodeURIComponent(e)),r.isNumber(n)&&s.push("expires="+new Date(n).toGMTString()),r.isString(o)&&s.push("path="+o),r.isString(i)&&s.push("domain="+i),!0===a&&s.push("secure"),document.cookie=s.join("; ")},read:function(t){var e=document.cookie.match(new RegExp("(^|;\\s*)("+t+")=([^;]*)"));return e?decodeURIComponent(e[3]):null},remove:function(t){this.write(t,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},function(t,e,n){"use strict";t.exports=function(t){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(t)}},function(t,e,n){"use strict";t.exports=function(t,e){return e?t.replace(/\/+$/,"")+"/"+e.replace(/^\/+/,""):t}},function(t,e,n){"use strict";var r=n(14);function o(t){if("function"!=typeof t)throw new TypeError("executor must be a function.");var e;this.promise=new Promise((function(t){e=t}));var n=this;t((function(t){n.reason||(n.reason=new r(t),e(n.reason))}))}o.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},o.source=function(){var t;return{token:new o((function(e){t=e})),cancel:t}},t.exports=o},function(t,e,n){"use strict";t.exports=function(t){return function(e){return t.apply(null,e)}}},function(t,e,n){"use strict";(function(t){var r=n(18),o=n(42);function i(t){return(i="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})(t)}function a(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function s(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function u(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter((function(t){return Object.getOwnPropertyDescriptor(n,t).enumerable})))),r.forEach((function(e){s(t,e,n[e])}))}return t}var c=function(){};function f(t){return"string"==typeof t&&(t=t.split(" ")),t}function p(t,e){var n,r=f(e);n=t.className instanceof c?f(t.className.baseVal):f(t.className),r.forEach((function(t){-1===n.indexOf(t)&&n.push(t)})),t instanceof SVGElement?t.setAttribute("class",n.join(" ")):t.className=n.join(" ")}function l(t,e){var n,r=f(e);n=t.className instanceof c?f(t.className.baseVal):f(t.className),r.forEach((function(t){var e=n.indexOf(t);-1!==e&&n.splice(e,1)})),t instanceof SVGElement?t.setAttribute("class",n.join(" ")):t.className=n.join(" ")}"undefined"!=typeof window&&(c=window.SVGAnimatedString);var d=!1;if("undefined"!=typeof window){d=!1;try{var h=Object.defineProperty({},"passive",{get:function(){d=!0}});window.addEventListener("test",null,h)}catch(t){}}var v={container:!1,delay:0,html:!1,placement:"top",title:"",template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",offset:0},m=[],y=function(){function t(e,n){var r=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),s(this,"_events",[]),s(this,"_setTooltipNodeEvent",(function(t,e,n,o){var i=t.relatedreference||t.toElement||t.relatedTarget;return!!r._tooltipNode.contains(i)&&(r._tooltipNode.addEventListener(t.type,(function n(i){var a=i.relatedreference||i.toElement||i.relatedTarget;r._tooltipNode.removeEventListener(t.type,n),e.contains(a)||r._scheduleHide(e,o.delay,o,i)})),!0)})),n=u({},v,n),e.jquery&&(e=e[0]),this.show=this.show.bind(this),this.hide=this.hide.bind(this),this.reference=e,this.options=n,this._isOpen=!1,this._init()}var e,n,o;return e=t,(n=[{key:"show",value:function(){this._show(this.reference,this.options)}},{key:"hide",value:function(){this._hide()}},{key:"dispose",value:function(){this._dispose()}},{key:"toggle",value:function(){return this._isOpen?this.hide():this.show()}},{key:"setClasses",value:function(t){this._classes=t}},{key:"setContent",value:function(t){this.options.title=t,this._tooltipNode&&this._setContent(t,this.options)}},{key:"setOptions",value:function(t){var e=!1,n=t&&t.classes||E.options.defaultClass;this._classes!==n&&(this.setClasses(n),e=!0),t=w(t);var r=!1,o=!1;for(var i in this.options.offset===t.offset&&this.options.placement===t.placement||(r=!0),(this.options.template!==t.template||this.options.trigger!==t.trigger||this.options.container!==t.container||e)&&(o=!0),t)this.options[i]=t[i];if(this._tooltipNode)if(o){var a=this._isOpen;this.dispose(),this._init(),a&&this.show()}else r&&this.popperInstance.update()}},{key:"_init",value:function(){var t="string"==typeof this.options.trigger?this.options.trigger.split(" "):[];this._isDisposed=!1,this._enableDocumentTouch=-1===t.indexOf("manual"),t=t.filter((function(t){return-1!==["click","hover","focus"].indexOf(t)})),this._setEventListeners(this.reference,t,this.options),this.$_originalTitle=this.reference.getAttribute("title"),this.reference.removeAttribute("title"),this.reference.setAttribute("data-original-title",this.$_originalTitle)}},{key:"_create",value:function(t,e){var n=window.document.createElement("div");n.innerHTML=e.trim();var r=n.childNodes[0];return r.id="tooltip_".concat(Math.random().toString(36).substr(2,10)),r.setAttribute("aria-hidden","true"),this.options.autoHide&&-1!==this.options.trigger.indexOf("hover")&&(r.addEventListener("mouseenter",this.hide),r.addEventListener("click",this.hide)),r}},{key:"_setContent",value:function(t,e){var n=this;this.asyncContent=!1,this._applyContent(t,e).then((function(){n.popperInstance.update()}))}},{key:"_applyContent",value:function(t,e){var n=this;return new Promise((function(r,o){var i=e.html,a=n._tooltipNode;if(a){var s=a.querySelector(n.options.innerSelector);if(1===t.nodeType){if(i){for(;s.firstChild;)s.removeChild(s.firstChild);s.appendChild(t)}}else{if("function"==typeof t){var u=t();return void(u&&"function"==typeof u.then?(n.asyncContent=!0,e.loadingClass&&p(a,e.loadingClass),e.loadingContent&&n._applyContent(e.loadingContent,e),u.then((function(t){return e.loadingClass&&l(a,e.loadingClass),n._applyContent(t,e)})).then(r).catch(o)):n._applyContent(u,e).then(r).catch(o))}i?s.innerHTML=t:s.innerText=t}r()}}))}},{key:"_show",value:function(t,e){if(!e||"string"!=typeof e.container||document.querySelector(e.container)){clearTimeout(this._disposeTimer),delete(e=Object.assign({},e)).offset;var n=!0;this._tooltipNode&&(p(this._tooltipNode,this._classes),n=!1);var r=this._ensureShown(t,e);return n&&this._tooltipNode&&p(this._tooltipNode,this._classes),p(t,["v-tooltip-open"]),r}}},{key:"_ensureShown",value:function(t,e){var n=this;if(this._isOpen)return this;if(this._isOpen=!0,m.push(this),this._tooltipNode)return this._tooltipNode.style.display="",this._tooltipNode.setAttribute("aria-hidden","false"),this.popperInstance.enableEventListeners(),this.popperInstance.update(),this.asyncContent&&this._setContent(e.title,e),this;var o=t.getAttribute("title")||e.title;if(!o)return this;var i=this._create(t,e.template);this._tooltipNode=i,t.setAttribute("aria-describedby",i.id);var a=this._findContainer(e.container,t);this._append(i,a);var s=u({},e.popperOptions,{placement:e.placement});return s.modifiers=u({},s.modifiers,{arrow:{element:this.options.arrowSelector}}),e.boundariesElement&&(s.modifiers.preventOverflow={boundariesElement:e.boundariesElement}),this.popperInstance=new r.a(t,i,s),this._setContent(o,e),requestAnimationFrame((function(){!n._isDisposed&&n.popperInstance?(n.popperInstance.update(),requestAnimationFrame((function(){n._isDisposed?n.dispose():n._isOpen&&i.setAttribute("aria-hidden","false")}))):n.dispose()})),this}},{key:"_noLongerOpen",value:function(){var t=m.indexOf(this);-1!==t&&m.splice(t,1)}},{key:"_hide",value:function(){var t=this;if(!this._isOpen)return this;this._isOpen=!1,this._noLongerOpen(),this._tooltipNode.style.display="none",this._tooltipNode.setAttribute("aria-hidden","true"),this.popperInstance.disableEventListeners(),clearTimeout(this._disposeTimer);var e=E.options.disposeTimeout;return null!==e&&(this._disposeTimer=setTimeout((function(){t._tooltipNode&&(t._tooltipNode.removeEventListener("mouseenter",t.hide),t._tooltipNode.removeEventListener("click",t.hide),t._removeTooltipNode())}),e)),l(this.reference,["v-tooltip-open"]),this}},{key:"_removeTooltipNode",value:function(){if(this._tooltipNode){var t=this._tooltipNode.parentNode;t&&(t.removeChild(this._tooltipNode),this.reference.removeAttribute("aria-describedby")),this._tooltipNode=null}}},{key:"_dispose",value:function(){var t=this;return this._isDisposed=!0,this.reference.removeAttribute("data-original-title"),this.$_originalTitle&&this.reference.setAttribute("title",this.$_originalTitle),this._events.forEach((function(e){var n=e.func,r=e.event;t.reference.removeEventListener(r,n)})),this._events=[],this._tooltipNode?(this._hide(),this._tooltipNode.removeEventListener("mouseenter",this.hide),this._tooltipNode.removeEventListener("click",this.hide),this.popperInstance.destroy(),this.popperInstance.options.removeOnDestroy||this._removeTooltipNode()):this._noLongerOpen(),this}},{key:"_findContainer",value:function(t,e){return"string"==typeof t?t=window.document.querySelector(t):!1===t&&(t=e.parentNode),t}},{key:"_append",value:function(t,e){e.appendChild(t)}},{key:"_setEventListeners",value:function(t,e,n){var r=this,o=[],i=[];e.forEach((function(t){switch(t){case"hover":o.push("mouseenter"),i.push("mouseleave"),r.options.hideOnTargetClick&&i.push("click");break;case"focus":o.push("focus"),i.push("blur"),r.options.hideOnTargetClick&&i.push("click");break;case"click":o.push("click"),i.push("click")}})),o.forEach((function(e){var o=function(e){!0!==r._isOpen&&(e.usedByTooltip=!0,r._scheduleShow(t,n.delay,n,e))};r._events.push({event:e,func:o}),t.addEventListener(e,o)})),i.forEach((function(e){var o=function(e){!0!==e.usedByTooltip&&r._scheduleHide(t,n.delay,n,e)};r._events.push({event:e,func:o}),t.addEventListener(e,o)}))}},{key:"_onDocumentTouch",value:function(t){this._enableDocumentTouch&&this._scheduleHide(this.reference,this.options.delay,this.options,t)}},{key:"_scheduleShow",value:function(t,e,n){var r=this,o=e&&e.show||e||0;clearTimeout(this._scheduleTimer),this._scheduleTimer=window.setTimeout((function(){return r._show(t,n)}),o)}},{key:"_scheduleHide",value:function(t,e,n,r){var o=this,i=e&&e.hide||e||0;clearTimeout(this._scheduleTimer),this._scheduleTimer=window.setTimeout((function(){if(!1!==o._isOpen&&document.body.contains(o._tooltipNode)){if("mouseleave"===r.type&&o._setTooltipNodeEvent(r,t,e,n))return;o._hide(t,n)}}),i)}}])&&a(e.prototype,n),o&&a(e,o),t}();"undefined"!=typeof document&&document.addEventListener("touchstart",(function(t){for(var e=0;e<m.length;e++)m[e]._onDocumentTouch(t)}),!d||{passive:!0,capture:!0});var g={enabled:!0},b=["top","top-start","top-end","right","right-start","right-end","bottom","bottom-start","bottom-end","left","left-start","left-end"],_={defaultPlacement:"top",defaultClass:"vue-tooltip-theme",defaultTargetClass:"has-tooltip",defaultHtml:!0,defaultTemplate:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',defaultArrowSelector:".tooltip-arrow, .tooltip__arrow",defaultInnerSelector:".tooltip-inner, .tooltip__inner",defaultDelay:0,defaultTrigger:"hover focus",defaultOffset:0,defaultContainer:"body",defaultBoundariesElement:void 0,defaultPopperOptions:{},defaultLoadingClass:"tooltip-loading",defaultLoadingContent:"...",autoHide:!0,defaultHideOnTargetClick:!0,disposeTimeout:5e3,popover:{defaultPlacement:"bottom",defaultClass:"vue-popover-theme",defaultBaseClass:"tooltip popover",defaultWrapperClass:"wrapper",defaultInnerClass:"tooltip-inner popover-inner",defaultArrowClass:"tooltip-arrow popover-arrow",defaultOpenClass:"open",defaultDelay:0,defaultTrigger:"click",defaultOffset:0,defaultContainer:"body",defaultBoundariesElement:void 0,defaultPopperOptions:{},defaultAutoHide:!0,defaultHandleResize:!0}};function w(t){var e={placement:void 0!==t.placement?t.placement:E.options.defaultPlacement,delay:void 0!==t.delay?t.delay:E.options.defaultDelay,html:void 0!==t.html?t.html:E.options.defaultHtml,template:void 0!==t.template?t.template:E.options.defaultTemplate,arrowSelector:void 0!==t.arrowSelector?t.arrowSelector:E.options.defaultArrowSelector,innerSelector:void 0!==t.innerSelector?t.innerSelector:E.options.defaultInnerSelector,trigger:void 0!==t.trigger?t.trigger:E.options.defaultTrigger,offset:void 0!==t.offset?t.offset:E.options.defaultOffset,container:void 0!==t.container?t.container:E.options.defaultContainer,boundariesElement:void 0!==t.boundariesElement?t.boundariesElement:E.options.defaultBoundariesElement,autoHide:void 0!==t.autoHide?t.autoHide:E.options.autoHide,hideOnTargetClick:void 0!==t.hideOnTargetClick?t.hideOnTargetClick:E.options.defaultHideOnTargetClick,loadingClass:void 0!==t.loadingClass?t.loadingClass:E.options.defaultLoadingClass,loadingContent:void 0!==t.loadingContent?t.loadingContent:E.options.defaultLoadingContent,popperOptions:u({},void 0!==t.popperOptions?t.popperOptions:E.options.defaultPopperOptions)};if(e.offset){var n=i(e.offset),r=e.offset;("number"===n||"string"===n&&-1===r.indexOf(","))&&(r="0, ".concat(r)),e.popperOptions.modifiers||(e.popperOptions.modifiers={}),e.popperOptions.modifiers.offset={offset:r}}return e.trigger&&-1!==e.trigger.indexOf("click")&&(e.hideOnTargetClick=!1),e}function O(t,e){for(var n=t.placement,r=0;r<b.length;r++){var o=b[r];e[o]&&(n=o)}return n}function C(t){var e=i(t);return"string"===e?t:!(!t||"object"!==e)&&t.content}function A(t){t._tooltip&&(t._tooltip.dispose(),delete t._tooltip,delete t._tooltipOldShow),t._tooltipTargetClasses&&(l(t,t._tooltipTargetClasses),delete t._tooltipTargetClasses)}function x(t,e){var n,r=e.value,o=(e.oldValue,e.modifiers),i=C(r);i&&g.enabled?(t._tooltip?((n=t._tooltip).setContent(i),n.setOptions(u({},r,{placement:O(r,o)}))):n=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=C(e),o=void 0!==e.classes?e.classes:E.options.defaultClass,i=u({title:r},w(u({},e,{placement:O(e,n)}))),a=t._tooltip=new y(t,i);a.setClasses(o),a._vueEl=t;var s=void 0!==e.targetClasses?e.targetClasses:E.options.defaultTargetClass;return t._tooltipTargetClasses=s,p(t,s),a}(t,r,o),void 0!==r.show&&r.show!==t._tooltipOldShow&&(t._tooltipOldShow=r.show,r.show?n.show():n.hide())):A(t)}var E={options:_,bind:x,update:x,unbind:function(t){A(t)}};function $(t){t.addEventListener("click",T),t.addEventListener("touchstart",S,!!d&&{passive:!0})}function k(t){t.removeEventListener("click",T),t.removeEventListener("touchstart",S),t.removeEventListener("touchend",j),t.removeEventListener("touchcancel",I)}function T(t){var e=t.currentTarget;t.closePopover=!e.$_vclosepopover_touch,t.closeAllPopover=e.$_closePopoverModifiers&&!!e.$_closePopoverModifiers.all}function S(t){if(1===t.changedTouches.length){var e=t.currentTarget;e.$_vclosepopover_touch=!0;var n=t.changedTouches[0];e.$_vclosepopover_touchPoint=n,e.addEventListener("touchend",j),e.addEventListener("touchcancel",I)}}function j(t){var e=t.currentTarget;if(e.$_vclosepopover_touch=!1,1===t.changedTouches.length){var n=t.changedTouches[0],r=e.$_vclosepopover_touchPoint;t.closePopover=Math.abs(n.screenY-r.screenY)<20&&Math.abs(n.screenX-r.screenX)<20,t.closeAllPopover=e.$_closePopoverModifiers&&!!e.$_closePopoverModifiers.all}}function I(t){t.currentTarget.$_vclosepopover_touch=!1}var L={bind:function(t,e){var n=e.value,r=e.modifiers;t.$_closePopoverModifiers=r,(void 0===n||n)&&$(t)},update:function(t,e){var n=e.value,r=e.oldValue,o=e.modifiers;t.$_closePopoverModifiers=o,n!==r&&(void 0===n||n?$(t):k(t))},unbind:function(t){k(t)}};function P(t){var e=E.options.popover[t];return void 0===e?E.options[t]:e}var N=!1;"undefined"!=typeof window&&"undefined"!=typeof navigator&&(N=/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream);var R=[],U=function(){};"undefined"!=typeof window&&(U=window.Element);var D={name:"VPopover",components:{ResizeObserver:o.a},props:{open:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},placement:{type:String,default:function(){return P("defaultPlacement")}},delay:{type:[String,Number,Object],default:function(){return P("defaultDelay")}},offset:{type:[String,Number],default:function(){return P("defaultOffset")}},trigger:{type:String,default:function(){return P("defaultTrigger")}},container:{type:[String,Object,U,Boolean],default:function(){return P("defaultContainer")}},boundariesElement:{type:[String,U],default:function(){return P("defaultBoundariesElement")}},popperOptions:{type:Object,default:function(){return P("defaultPopperOptions")}},popoverClass:{type:[String,Array],default:function(){return P("defaultClass")}},popoverBaseClass:{type:[String,Array],default:function(){return E.options.popover.defaultBaseClass}},popoverInnerClass:{type:[String,Array],default:function(){return E.options.popover.defaultInnerClass}},popoverWrapperClass:{type:[String,Array],default:function(){return E.options.popover.defaultWrapperClass}},popoverArrowClass:{type:[String,Array],default:function(){return E.options.popover.defaultArrowClass}},autoHide:{type:Boolean,default:function(){return E.options.popover.defaultAutoHide}},handleResize:{type:Boolean,default:function(){return E.options.popover.defaultHandleResize}},openGroup:{type:String,default:null},openClass:{type:[String,Array],default:function(){return E.options.popover.defaultOpenClass}}},data:function(){return{isOpen:!1,id:Math.random().toString(36).substr(2,10)}},computed:{cssClass:function(){return s({},this.openClass,this.isOpen)},popoverId:function(){return"popover_".concat(this.id)}},watch:{open:function(t){t?this.show():this.hide()},disabled:function(t,e){t!==e&&(t?this.hide():this.open&&this.show())},container:function(t){if(this.isOpen&&this.popperInstance){var e=this.$refs.popover,n=this.$refs.trigger,r=this.$_findContainer(this.container,n);if(!r)return void console.warn("No container for popover",this);r.appendChild(e),this.popperInstance.scheduleUpdate()}},trigger:function(t){this.$_removeEventListeners(),this.$_addEventListeners()},placement:function(t){var e=this;this.$_updatePopper((function(){e.popperInstance.options.placement=t}))},offset:"$_restartPopper",boundariesElement:"$_restartPopper",popperOptions:{handler:"$_restartPopper",deep:!0}},created:function(){this.$_isDisposed=!1,this.$_mounted=!1,this.$_events=[],this.$_preventOpen=!1},mounted:function(){var t=this.$refs.popover;t.parentNode&&t.parentNode.removeChild(t),this.$_init(),this.open&&this.show()},deactivated:function(){this.hide()},beforeDestroy:function(){this.dispose()},methods:{show:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.event,r=(e.skipDelay,e.force),o=void 0!==r&&r;!o&&this.disabled||(this.$_scheduleShow(n),this.$emit("show")),this.$emit("update:open",!0),this.$_beingShowed=!0,requestAnimationFrame((function(){t.$_beingShowed=!1}))},hide:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.event;t.skipDelay;this.$_scheduleHide(e),this.$emit("hide"),this.$emit("update:open",!1)},dispose:function(){if(this.$_isDisposed=!0,this.$_removeEventListeners(),this.hide({skipDelay:!0}),this.popperInstance&&(this.popperInstance.destroy(),!this.popperInstance.options.removeOnDestroy)){var t=this.$refs.popover;t.parentNode&&t.parentNode.removeChild(t)}this.$_mounted=!1,this.popperInstance=null,this.isOpen=!1,this.$emit("dispose")},$_init:function(){-1===this.trigger.indexOf("manual")&&this.$_addEventListeners()},$_show:function(){var t=this,e=this.$refs.trigger,n=this.$refs.popover;if(clearTimeout(this.$_disposeTimer),!this.isOpen){if(this.popperInstance&&(this.isOpen=!0,this.popperInstance.enableEventListeners(),this.popperInstance.scheduleUpdate()),!this.$_mounted){var o=this.$_findContainer(this.container,e);if(!o)return void console.warn("No container for popover",this);o.appendChild(n),this.$_mounted=!0}if(!this.popperInstance){var i=u({},this.popperOptions,{placement:this.placement});if(i.modifiers=u({},i.modifiers,{arrow:u({},i.modifiers&&i.modifiers.arrow,{element:this.$refs.arrow})}),this.offset){var a=this.$_getOffset();i.modifiers.offset=u({},i.modifiers&&i.modifiers.offset,{offset:a})}this.boundariesElement&&(i.modifiers.preventOverflow=u({},i.modifiers&&i.modifiers.preventOverflow,{boundariesElement:this.boundariesElement})),this.popperInstance=new r.a(e,n,i),requestAnimationFrame((function(){if(t.hidden)return t.hidden=!1,void t.$_hide();!t.$_isDisposed&&t.popperInstance?(t.popperInstance.scheduleUpdate(),requestAnimationFrame((function(){if(t.hidden)return t.hidden=!1,void t.$_hide();t.$_isDisposed?t.dispose():t.isOpen=!0}))):t.dispose()}))}var s=this.openGroup;if(s)for(var c,f=0;f<R.length;f++)(c=R[f]).openGroup!==s&&(c.hide(),c.$emit("close-group"));R.push(this),this.$emit("apply-show")}},$_hide:function(){var t=this;if(this.isOpen){var e=R.indexOf(this);-1!==e&&R.splice(e,1),this.isOpen=!1,this.popperInstance&&this.popperInstance.disableEventListeners(),clearTimeout(this.$_disposeTimer);var n=E.options.popover.disposeTimeout||E.options.disposeTimeout;null!==n&&(this.$_disposeTimer=setTimeout((function(){var e=t.$refs.popover;e&&(e.parentNode&&e.parentNode.removeChild(e),t.$_mounted=!1)}),n)),this.$emit("apply-hide")}},$_findContainer:function(t,e){return"string"==typeof t?t=window.document.querySelector(t):!1===t&&(t=e.parentNode),t},$_getOffset:function(){var t=i(this.offset),e=this.offset;return("number"===t||"string"===t&&-1===e.indexOf(","))&&(e="0, ".concat(e)),e},$_addEventListeners:function(){var t=this,e=this.$refs.trigger,n=[],r=[];("string"==typeof this.trigger?this.trigger.split(" ").filter((function(t){return-1!==["click","hover","focus"].indexOf(t)})):[]).forEach((function(t){switch(t){case"hover":n.push("mouseenter"),r.push("mouseleave");break;case"focus":n.push("focus"),r.push("blur");break;case"click":n.push("click"),r.push("click")}})),n.forEach((function(n){var r=function(e){t.isOpen||(e.usedByTooltip=!0,!t.$_preventOpen&&t.show({event:e}),t.hidden=!1)};t.$_events.push({event:n,func:r}),e.addEventListener(n,r)})),r.forEach((function(n){var r=function(e){e.usedByTooltip||(t.hide({event:e}),t.hidden=!0)};t.$_events.push({event:n,func:r}),e.addEventListener(n,r)}))},$_scheduleShow:function(){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(clearTimeout(this.$_scheduleTimer),t)this.$_show();else{var e=parseInt(this.delay&&this.delay.show||this.delay||0);this.$_scheduleTimer=setTimeout(this.$_show.bind(this),e)}},$_scheduleHide:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(clearTimeout(this.$_scheduleTimer),n)this.$_hide();else{var r=parseInt(this.delay&&this.delay.hide||this.delay||0);this.$_scheduleTimer=setTimeout((function(){if(t.isOpen){if(e&&"mouseleave"===e.type)if(t.$_setTooltipNodeEvent(e))return;t.$_hide()}}),r)}},$_setTooltipNodeEvent:function(t){var e=this,n=this.$refs.trigger,r=this.$refs.popover,o=t.relatedreference||t.toElement||t.relatedTarget;return!!r.contains(o)&&(r.addEventListener(t.type,(function o(i){var a=i.relatedreference||i.toElement||i.relatedTarget;r.removeEventListener(t.type,o),n.contains(a)||e.hide({event:i})})),!0)},$_removeEventListeners:function(){var t=this.$refs.trigger;this.$_events.forEach((function(e){var n=e.func,r=e.event;t.removeEventListener(r,n)})),this.$_events=[]},$_updatePopper:function(t){this.popperInstance&&(t(),this.isOpen&&this.popperInstance.scheduleUpdate())},$_restartPopper:function(){if(this.popperInstance){var t=this.isOpen;this.dispose(),this.$_isDisposed=!1,this.$_init(),t&&this.show({skipDelay:!0,force:!0})}},$_handleGlobalClose:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.$_beingShowed||(this.hide({event:t}),t.closePopover?this.$emit("close-directive"):this.$emit("auto-hide"),n&&(this.$_preventOpen=!0,setTimeout((function(){e.$_preventOpen=!1}),300)))},$_handleResize:function(){this.isOpen&&this.popperInstance&&(this.popperInstance.scheduleUpdate(),this.$emit("resize"))}}};function M(t){for(var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=function(n){var r=R[n];if(r.$refs.popover){var o=r.$refs.popover.contains(t.target);requestAnimationFrame((function(){(t.closeAllPopover||t.closePopover&&o||r.autoHide&&!o)&&r.$_handleGlobalClose(t,e)}))}},r=0;r<R.length;r++)n(r)}"undefined"!=typeof document&&"undefined"!=typeof window&&(N?document.addEventListener("touchend",(function(t){M(t,!0)}),!d||{passive:!0,capture:!0}):window.addEventListener("click",(function(t){M(t)}),!0));var F=function(t,e,n,r,o,i,a,s,u,c){"boolean"!=typeof a&&(u=s,s=a,a=!1);var f,p="function"==typeof n?n.options:n;if(t&&t.render&&(p.render=t.render,p.staticRenderFns=t.staticRenderFns,p._compiled=!0,o&&(p.functional=!0)),r&&(p._scopeId=r),i?(f=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),e&&e.call(this,u(t)),t&&t._registeredComponents&&t._registeredComponents.add(i)},p._ssrRegister=f):e&&(f=a?function(){e.call(this,c(this.$root.$options.shadowRoot))}:function(t){e.call(this,s(t))}),f)if(p.functional){var l=p.render;p.render=function(t,e){return f.call(e),l(t,e)}}else{var d=p.beforeCreate;p.beforeCreate=d?[].concat(d,f):[f]}return n},B=D,H=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"v-popover",class:t.cssClass},[n("div",{ref:"trigger",staticClass:"trigger",staticStyle:{display:"inline-block"},attrs:{"aria-describedby":t.popoverId,tabindex:-1!==t.trigger.indexOf("focus")?0:void 0}},[t._t("default")],2),t._v(" "),n("div",{ref:"popover",class:[t.popoverBaseClass,t.popoverClass,t.cssClass],style:{visibility:t.isOpen?"visible":"hidden"},attrs:{id:t.popoverId,"aria-hidden":t.isOpen?"false":"true",tabindex:t.autoHide?0:void 0},on:{keyup:function(e){if(!e.type.indexOf("key")&&t._k(e.keyCode,"esc",27,e.key,["Esc","Escape"]))return null;t.autoHide&&t.hide()}}},[n("div",{class:t.popoverWrapperClass},[n("div",{ref:"inner",class:t.popoverInnerClass,staticStyle:{position:"relative"}},[n("div",[t._t("popover")],2),t._v(" "),t.handleResize?n("ResizeObserver",{on:{notify:t.$_handleResize}}):t._e()],1),t._v(" "),n("div",{ref:"arrow",class:t.popoverArrowClass})])])])};H._withStripped=!0;var q=F({render:H,staticRenderFns:[]},void 0,B,void 0,!1,void 0,void 0,void 0);var z=function(){this.__data__=[],this.size=0};var V=function(t,e){return t===e||t!=t&&e!=e};var G=function(t,e){for(var n=t.length;n--;)if(V(t[n][0],e))return n;return-1},W=Array.prototype.splice;var K=function(t){var e=this.__data__,n=G(e,t);return!(n<0)&&(n==e.length-1?e.pop():W.call(e,n,1),--this.size,!0)};var X=function(t){var e=this.__data__,n=G(e,t);return n<0?void 0:e[n][1]};var Y=function(t){return G(this.__data__,t)>-1};var J=function(t,e){var n=this.__data__,r=G(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this};function Q(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}Q.prototype.clear=z,Q.prototype.delete=K,Q.prototype.get=X,Q.prototype.has=Y,Q.prototype.set=J;var Z=Q;var tt=function(){this.__data__=new Z,this.size=0};var et=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n};var nt=function(t){return this.__data__.get(t)};var rt=function(t){return this.__data__.has(t)},ot="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==t?t:"undefined"!=typeof self?self:{};function it(t,e){return t(e={exports:{}},e.exports),e.exports}var at="object"==typeof ot&&ot&&ot.Object===Object&&ot,st="object"==typeof self&&self&&self.Object===Object&&self,ut=at||st||Function("return this")(),ct=ut.Symbol,ft=Object.prototype,pt=ft.hasOwnProperty,lt=ft.toString,dt=ct?ct.toStringTag:void 0;var ht=function(t){var e=pt.call(t,dt),n=t[dt];try{t[dt]=void 0;var r=!0}catch(t){}var o=lt.call(t);return r&&(e?t[dt]=n:delete t[dt]),o},vt=Object.prototype.toString;var mt=function(t){return vt.call(t)},yt="[object Null]",gt="[object Undefined]",bt=ct?ct.toStringTag:void 0;var _t=function(t){return null==t?void 0===t?gt:yt:bt&&bt in Object(t)?ht(t):mt(t)};var wt=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)},Ot="[object AsyncFunction]",Ct="[object Function]",At="[object GeneratorFunction]",xt="[object Proxy]";var Et,$t=function(t){if(!wt(t))return!1;var e=_t(t);return e==Ct||e==At||e==Ot||e==xt},kt=ut["__core-js_shared__"],Tt=(Et=/[^.]+$/.exec(kt&&kt.keys&&kt.keys.IE_PROTO||""))?"Symbol(src)_1."+Et:"";var St=function(t){return!!Tt&&Tt in t},jt=Function.prototype.toString;var It=function(t){if(null!=t){try{return jt.call(t)}catch(t){}try{return t+""}catch(t){}}return""},Lt=/^\[object .+?Constructor\]$/,Pt=Function.prototype,Nt=Object.prototype,Rt=Pt.toString,Ut=Nt.hasOwnProperty,Dt=RegExp("^"+Rt.call(Ut).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");var Mt=function(t){return!(!wt(t)||St(t))&&($t(t)?Dt:Lt).test(It(t))};var Ft=function(t,e){return null==t?void 0:t[e]};var Bt=function(t,e){var n=Ft(t,e);return Mt(n)?n:void 0},Ht=Bt(ut,"Map"),qt=Bt(Object,"create");var zt=function(){this.__data__=qt?qt(null):{},this.size=0};var Vt=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e},Gt="__lodash_hash_undefined__",Wt=Object.prototype.hasOwnProperty;var Kt=function(t){var e=this.__data__;if(qt){var n=e[t];return n===Gt?void 0:n}return Wt.call(e,t)?e[t]:void 0},Xt=Object.prototype.hasOwnProperty;var Yt=function(t){var e=this.__data__;return qt?void 0!==e[t]:Xt.call(e,t)},Jt="__lodash_hash_undefined__";var Qt=function(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=qt&&void 0===e?Jt:e,this};function Zt(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}Zt.prototype.clear=zt,Zt.prototype.delete=Vt,Zt.prototype.get=Kt,Zt.prototype.has=Yt,Zt.prototype.set=Qt;var te=Zt;var ee=function(){this.size=0,this.__data__={hash:new te,map:new(Ht||Z),string:new te}};var ne=function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t};var re=function(t,e){var n=t.__data__;return ne(e)?n["string"==typeof e?"string":"hash"]:n.map};var oe=function(t){var e=re(this,t).delete(t);return this.size-=e?1:0,e};var ie=function(t){return re(this,t).get(t)};var ae=function(t){return re(this,t).has(t)};var se=function(t,e){var n=re(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this};function ue(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}ue.prototype.clear=ee,ue.prototype.delete=oe,ue.prototype.get=ie,ue.prototype.has=ae,ue.prototype.set=se;var ce=ue,fe=200;var pe=function(t,e){var n=this.__data__;if(n instanceof Z){var r=n.__data__;if(!Ht||r.length<fe-1)return r.push([t,e]),this.size=++n.size,this;n=this.__data__=new ce(r)}return n.set(t,e),this.size=n.size,this};function le(t){var e=this.__data__=new Z(t);this.size=e.size}le.prototype.clear=tt,le.prototype.delete=et,le.prototype.get=nt,le.prototype.has=rt,le.prototype.set=pe;var de=le,he=function(){try{var t=Bt(Object,"defineProperty");return t({},"",{}),t}catch(t){}}();var ve=function(t,e,n){"__proto__"==e&&he?he(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n};var me=function(t,e,n){(void 0===n||V(t[e],n))&&(void 0!==n||e in t)||ve(t,e,n)};var ye=function(t){return function(e,n,r){for(var o=-1,i=Object(e),a=r(e),s=a.length;s--;){var u=a[t?s:++o];if(!1===n(i[u],u,i))break}return e}}(),ge=it((function(t,e){var n=e&&!e.nodeType&&e,r=n&&t&&!t.nodeType&&t,o=r&&r.exports===n?ut.Buffer:void 0,i=o?o.allocUnsafe:void 0;t.exports=function(t,e){if(e)return t.slice();var n=t.length,r=i?i(n):new t.constructor(n);return t.copy(r),r}})),be=ut.Uint8Array;var _e=function(t){var e=new t.constructor(t.byteLength);return new be(e).set(new be(t)),e};var we=function(t,e){var n=e?_e(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)};var Oe=function(t,e){var n=-1,r=t.length;for(e||(e=Array(r));++n<r;)e[n]=t[n];return e},Ce=Object.create,Ae=function(){function t(){}return function(e){if(!wt(e))return{};if(Ce)return Ce(e);t.prototype=e;var n=new t;return t.prototype=void 0,n}}();var xe=function(t,e){return function(n){return t(e(n))}}(Object.getPrototypeOf,Object),Ee=Object.prototype;var $e=function(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||Ee)};var ke=function(t){return"function"!=typeof t.constructor||$e(t)?{}:Ae(xe(t))};var Te=function(t){return null!=t&&"object"==typeof t},Se="[object Arguments]";var je=function(t){return Te(t)&&_t(t)==Se},Ie=Object.prototype,Le=Ie.hasOwnProperty,Pe=Ie.propertyIsEnumerable,Ne=je(function(){return arguments}())?je:function(t){return Te(t)&&Le.call(t,"callee")&&!Pe.call(t,"callee")},Re=Array.isArray,Ue=9007199254740991;var De=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=Ue};var Me=function(t){return null!=t&&De(t.length)&&!$t(t)};var Fe=function(t){return Te(t)&&Me(t)};var Be=function(){return!1},He=it((function(t,e){var n=e&&!e.nodeType&&e,r=n&&t&&!t.nodeType&&t,o=r&&r.exports===n?ut.Buffer:void 0,i=(o?o.isBuffer:void 0)||Be;t.exports=i})),qe="[object Object]",ze=Function.prototype,Ve=Object.prototype,Ge=ze.toString,We=Ve.hasOwnProperty,Ke=Ge.call(Object);var Xe=function(t){if(!Te(t)||_t(t)!=qe)return!1;var e=xe(t);if(null===e)return!0;var n=We.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&Ge.call(n)==Ke},Ye={};Ye["[object Float32Array]"]=Ye["[object Float64Array]"]=Ye["[object Int8Array]"]=Ye["[object Int16Array]"]=Ye["[object Int32Array]"]=Ye["[object Uint8Array]"]=Ye["[object Uint8ClampedArray]"]=Ye["[object Uint16Array]"]=Ye["[object Uint32Array]"]=!0,Ye["[object Arguments]"]=Ye["[object Array]"]=Ye["[object ArrayBuffer]"]=Ye["[object Boolean]"]=Ye["[object DataView]"]=Ye["[object Date]"]=Ye["[object Error]"]=Ye["[object Function]"]=Ye["[object Map]"]=Ye["[object Number]"]=Ye["[object Object]"]=Ye["[object RegExp]"]=Ye["[object Set]"]=Ye["[object String]"]=Ye["[object WeakMap]"]=!1;var Je=function(t){return Te(t)&&De(t.length)&&!!Ye[_t(t)]};var Qe=function(t){return function(e){return t(e)}},Ze=it((function(t,e){var n=e&&!e.nodeType&&e,r=n&&t&&!t.nodeType&&t,o=r&&r.exports===n&&at.process,i=function(){try{var t=r&&r.require&&r.require("util").types;return t||o&&o.binding&&o.binding("util")}catch(t){}}();t.exports=i})),tn=Ze&&Ze.isTypedArray,en=tn?Qe(tn):Je;var nn=function(t,e){if("__proto__"!=e)return t[e]},rn=Object.prototype.hasOwnProperty;var on=function(t,e,n){var r=t[e];rn.call(t,e)&&V(r,n)&&(void 0!==n||e in t)||ve(t,e,n)};var an=function(t,e,n,r){var o=!n;n||(n={});for(var i=-1,a=e.length;++i<a;){var s=e[i],u=r?r(n[s],t[s],s,n,t):void 0;void 0===u&&(u=t[s]),o?ve(n,s,u):on(n,s,u)}return n};var sn=function(t,e){for(var n=-1,r=Array(t);++n<t;)r[n]=e(n);return r},un=9007199254740991,cn=/^(?:0|[1-9]\d*)$/;var fn=function(t,e){var n=typeof t;return!!(e=null==e?un:e)&&("number"==n||"symbol"!=n&&cn.test(t))&&t>-1&&t%1==0&&t<e},pn=Object.prototype.hasOwnProperty;var ln=function(t,e){var n=Re(t),r=!n&&Ne(t),o=!n&&!r&&He(t),i=!n&&!r&&!o&&en(t),a=n||r||o||i,s=a?sn(t.length,String):[],u=s.length;for(var c in t)!e&&!pn.call(t,c)||a&&("length"==c||o&&("offset"==c||"parent"==c)||i&&("buffer"==c||"byteLength"==c||"byteOffset"==c)||fn(c,u))||s.push(c);return s};var dn=function(t){var e=[];if(null!=t)for(var n in Object(t))e.push(n);return e},hn=Object.prototype.hasOwnProperty;var vn=function(t){if(!wt(t))return dn(t);var e=$e(t),n=[];for(var r in t)("constructor"!=r||!e&&hn.call(t,r))&&n.push(r);return n};var mn=function(t){return Me(t)?ln(t,!0):vn(t)};var yn=function(t){return an(t,mn(t))};var gn=function(t,e,n,r,o,i,a){var s=nn(t,n),u=nn(e,n),c=a.get(u);if(c)me(t,n,c);else{var f=i?i(s,u,n+"",t,e,a):void 0,p=void 0===f;if(p){var l=Re(u),d=!l&&He(u),h=!l&&!d&&en(u);f=u,l||d||h?Re(s)?f=s:Fe(s)?f=Oe(s):d?(p=!1,f=ge(u,!0)):h?(p=!1,f=we(u,!0)):f=[]:Xe(u)||Ne(u)?(f=s,Ne(s)?f=yn(s):wt(s)&&!$t(s)||(f=ke(u))):p=!1}p&&(a.set(u,f),o(f,u,r,i,a),a.delete(u)),me(t,n,f)}};var bn=function t(e,n,r,o,i){e!==n&&ye(n,(function(a,s){if(wt(a))i||(i=new de),gn(e,n,s,r,t,o,i);else{var u=o?o(nn(e,s),a,s+"",e,n,i):void 0;void 0===u&&(u=a),me(e,s,u)}}),mn)};var _n=function(t){return t};var wn=function(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)},On=Math.max;var Cn=function(t,e,n){return e=On(void 0===e?t.length-1:e,0),function(){for(var r=arguments,o=-1,i=On(r.length-e,0),a=Array(i);++o<i;)a[o]=r[e+o];o=-1;for(var s=Array(e+1);++o<e;)s[o]=r[o];return s[e]=n(a),wn(t,this,s)}};var An=function(t){return function(){return t}},xn=he?function(t,e){return he(t,"toString",{configurable:!0,enumerable:!1,value:An(e),writable:!0})}:_n,En=800,$n=16,kn=Date.now;var Tn=function(t){var e=0,n=0;return function(){var r=kn(),o=$n-(r-n);if(n=r,o>0){if(++e>=En)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(xn);var Sn=function(t,e){return Tn(Cn(t,e,_n),t+"")};var jn=function(t,e,n){if(!wt(n))return!1;var r=typeof e;return!!("number"==r?Me(n)&&fn(e,n.length):"string"==r&&e in n)&&V(n[e],t)};var In=function(t){return Sn((function(e,n){var r=-1,o=n.length,i=o>1?n[o-1]:void 0,a=o>2?n[2]:void 0;for(i=t.length>3&&"function"==typeof i?(o--,i):void 0,a&&jn(n[0],n[1],a)&&(i=o<3?void 0:i,o=1),e=Object(e);++r<o;){var s=n[r];s&&t(e,s,r,i)}return e}))}((function(t,e,n){bn(t,e,n)}));!function(t,e){void 0===e&&(e={});var n=e.insertAt;if(t&&"undefined"!=typeof document){var r=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===n&&r.firstChild?r.insertBefore(o,r.firstChild):r.appendChild(o),o.styleSheet?o.styleSheet.cssText=t:o.appendChild(document.createTextNode(t))}}(".resize-observer[data-v-b329ee4c]{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:transparent;pointer-events:none;display:block;overflow:hidden;opacity:0}.resize-observer[data-v-b329ee4c] object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}");var Ln={install:function t(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!t.installed){t.installed=!0;var r={};In(r,_,n),Ln.options=r,E.options=r,e.directive("tooltip",E),e.directive("close-popover",L),e.component("v-popover",q)}},get enabled(){return g.enabled},set enabled(t){g.enabled=t}},Pn=null;"undefined"!=typeof window?Pn=window.Vue:void 0!==t&&(Pn=t.Vue),Pn&&Pn.use(Ln),e.a=Ln}).call(this,n(3))},function(t,e,n){"use strict";(function(t){n.d(e,"a",(function(){return i}));var r=void 0;function o(){o.init||(o.init=!0,r=-1!==function(){var t=window.navigator.userAgent,e=t.indexOf("MSIE ");if(e>0)return parseInt(t.substring(e+5,t.indexOf(".",e)),10);if(t.indexOf("Trident/")>0){var n=t.indexOf("rv:");return parseInt(t.substring(n+3,t.indexOf(".",n)),10)}var r=t.indexOf("Edge/");return r>0?parseInt(t.substring(r+5,t.indexOf(".",r)),10):-1}())}var i={render:function(){var t=this.$createElement;return(this._self._c||t)("div",{staticClass:"resize-observer",attrs:{tabindex:"-1"}})},staticRenderFns:[],_scopeId:"data-v-b329ee4c",name:"resize-observer",methods:{compareAndNotify:function(){this._w===this.$el.offsetWidth&&this._h===this.$el.offsetHeight||(this._w=this.$el.offsetWidth,this._h=this.$el.offsetHeight,this.$emit("notify"))},addResizeHandlers:function(){this._resizeObject.contentDocument.defaultView.addEventListener("resize",this.compareAndNotify),this.compareAndNotify()},removeResizeHandlers:function(){this._resizeObject&&this._resizeObject.onload&&(!r&&this._resizeObject.contentDocument&&this._resizeObject.contentDocument.defaultView.removeEventListener("resize",this.compareAndNotify),delete this._resizeObject.onload)}},mounted:function(){var t=this;o(),this.$nextTick((function(){t._w=t.$el.offsetWidth,t._h=t.$el.offsetHeight}));var e=document.createElement("object");this._resizeObject=e,e.setAttribute("aria-hidden","true"),e.setAttribute("tabindex",-1),e.onload=this.addResizeHandlers,e.type="text/html",r&&this.$el.appendChild(e),e.data="about:blank",r||this.$el.appendChild(e)},beforeDestroy:function(){this.removeResizeHandlers()}};var a={version:"0.4.5",install:function(t){t.component("resize-observer",i),t.component("ResizeObserver",i)}},s=null;"undefined"!=typeof window?s=window.Vue:void 0!==t&&(s=t.Vue),s&&s.use(a)}).call(this,n(3))},,,,,,function(t,e){function n(t,e){var r={name:t.name,path:t.path,hash:t.hash,query:t.query,params:t.params,fullPath:t.fullPath,meta:t.meta};return e&&(r.from=n(e)),Object.freeze(r)}e.sync=function(t,e,r){var o=(r||{}).moduleName||"route";t.registerModule(o,{namespaced:!0,state:n(e.currentRoute),mutations:{ROUTE_CHANGED:function(e,r){t.state[o]=n(r.to,r.from)}}});var i,a=!1,s=t.watch((function(t){return t[o]}),(function(t){var n=t.fullPath;n!==i&&(null!=i&&(a=!0,e.push(t)),i=n)}),{sync:!0}),u=e.afterEach((function(e,n){a?a=!1:(i=e.fullPath,t.commit(o+"/ROUTE_CHANGED",{to:e,from:n}))}));return function(){null!=u&&u(),null!=s&&s(),t.unregisterModule(o)}}},,,,,,,,,,,,,,,function(e,n,r){"use strict";r.r(n);var o=r(2),i=r(41),a=r(48),s={name:"App",beforeMount:function(){null!==document.getElementById("serverData")&&this.$store.commit("setServerData",JSON.parse(document.getElementById("serverData").dataset.server))}},u=r(5),c=Object(u.a)(s,(function(){var t=this.$createElement;return(this._self._c||t)("router-view")}),[],!1,null,null,null).exports;function f(t){return Object.prototype.toString.call(t).indexOf("Error")>-1}function p(t,e){return e instanceof t||e&&(e.name===t.name||e._name===t._name)}function l(t,e){for(var n in e)t[n]=e[n];return t}var d={name:"RouterView",functional:!0,props:{name:{type:String,default:"default"}},render:function(t,e){var n=e.props,r=e.children,o=e.parent,i=e.data;i.routerView=!0;for(var a=o.$createElement,s=n.name,u=o.$route,c=o._routerViewCache||(o._routerViewCache={}),f=0,p=!1;o&&o._routerRoot!==o;){var d=o.$vnode&&o.$vnode.data;d&&(d.routerView&&f++,d.keepAlive&&o._inactive&&(p=!0)),o=o.$parent}if(i.routerViewDepth=f,p)return a(c[s],i,r);var h=u.matched[f];if(!h)return c[s]=null,a();var v=c[s]=h.components[s];i.registerRouteInstance=function(t,e){var n=h.instances[s];(e&&n!==t||!e&&n===t)&&(h.instances[s]=e)},(i.hook||(i.hook={})).prepatch=function(t,e){h.instances[s]=e.componentInstance},i.hook.init=function(t){t.data.keepAlive&&t.componentInstance&&t.componentInstance!==h.instances[s]&&(h.instances[s]=t.componentInstance)};var m=i.props=function(t,e){switch(typeof e){case"undefined":return;case"object":return e;case"function":return e(t);case"boolean":return e?t.params:void 0;default:0}}(u,h.props&&h.props[s]);if(m){m=i.props=l({},m);var y=i.attrs=i.attrs||{};for(var g in m)v.props&&g in v.props||(y[g]=m[g],delete m[g])}return a(v,i,r)}};var h=/[!'()*]/g,v=function(t){return"%"+t.charCodeAt(0).toString(16)},m=/%2C/g,y=function(t){return encodeURIComponent(t).replace(h,v).replace(m,",")},g=decodeURIComponent;function b(t){var e={};return(t=t.trim().replace(/^(\?|#|&)/,""))?(t.split("&").forEach((function(t){var n=t.replace(/\+/g," ").split("="),r=g(n.shift()),o=n.length>0?g(n.join("=")):null;void 0===e[r]?e[r]=o:Array.isArray(e[r])?e[r].push(o):e[r]=[e[r],o]})),e):e}function _(t){var e=t?Object.keys(t).map((function(e){var n=t[e];if(void 0===n)return"";if(null===n)return y(e);if(Array.isArray(n)){var r=[];return n.forEach((function(t){void 0!==t&&(null===t?r.push(y(e)):r.push(y(e)+"="+y(t)))})),r.join("&")}return y(e)+"="+y(n)})).filter((function(t){return t.length>0})).join("&"):null;return e?"?"+e:""}var w=/\/?$/;function O(t,e,n,r){var o=r&&r.options.stringifyQuery,i=e.query||{};try{i=C(i)}catch(t){}var a={name:e.name||t&&t.name,meta:t&&t.meta||{},path:e.path||"/",hash:e.hash||"",query:i,params:e.params||{},fullPath:E(e,o),matched:t?x(t):[]};return n&&(a.redirectedFrom=E(n,o)),Object.freeze(a)}function C(t){if(Array.isArray(t))return t.map(C);if(t&&"object"==typeof t){var e={};for(var n in t)e[n]=C(t[n]);return e}return t}var A=O(null,{path:"/"});function x(t){for(var e=[];t;)e.unshift(t),t=t.parent;return e}function E(t,e){var n=t.path,r=t.query;void 0===r&&(r={});var o=t.hash;return void 0===o&&(o=""),(n||"/")+(e||_)(r)+o}function $(t,e){return e===A?t===e:!!e&&(t.path&&e.path?t.path.replace(w,"")===e.path.replace(w,"")&&t.hash===e.hash&&k(t.query,e.query):!(!t.name||!e.name)&&(t.name===e.name&&t.hash===e.hash&&k(t.query,e.query)&&k(t.params,e.params)))}function k(t,e){if(void 0===t&&(t={}),void 0===e&&(e={}),!t||!e)return t===e;var n=Object.keys(t),r=Object.keys(e);return n.length===r.length&&n.every((function(n){var r=t[n],o=e[n];return"object"==typeof r&&"object"==typeof o?k(r,o):String(r)===String(o)}))}function T(t,e,n){var r=t.charAt(0);if("/"===r)return t;if("?"===r||"#"===r)return e+t;var o=e.split("/");n&&o[o.length-1]||o.pop();for(var i=t.replace(/^\//,"").split("/"),a=0;a<i.length;a++){var s=i[a];".."===s?o.pop():"."!==s&&o.push(s)}return""!==o[0]&&o.unshift(""),o.join("/")}function S(t){return t.replace(/\/\//g,"/")}var j=Array.isArray||function(t){return"[object Array]"==Object.prototype.toString.call(t)},I=G,L=D,P=function(t,e){return F(D(t,e))},N=F,R=V,U=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function D(t,e){for(var n,r=[],o=0,i=0,a="",s=e&&e.delimiter||"/";null!=(n=U.exec(t));){var u=n[0],c=n[1],f=n.index;if(a+=t.slice(i,f),i=f+u.length,c)a+=c[1];else{var p=t[i],l=n[2],d=n[3],h=n[4],v=n[5],m=n[6],y=n[7];a&&(r.push(a),a="");var g=null!=l&&null!=p&&p!==l,b="+"===m||"*"===m,_="?"===m||"*"===m,w=n[2]||s,O=h||v;r.push({name:d||o++,prefix:l||"",delimiter:w,optional:_,repeat:b,partial:g,asterisk:!!y,pattern:O?H(O):y?".*":"[^"+B(w)+"]+?"})}}return i<t.length&&(a+=t.substr(i)),a&&r.push(a),r}function M(t){return encodeURI(t).replace(/[\/?#]/g,(function(t){return"%"+t.charCodeAt(0).toString(16).toUpperCase()}))}function F(t){for(var e=new Array(t.length),n=0;n<t.length;n++)"object"==typeof t[n]&&(e[n]=new RegExp("^(?:"+t[n].pattern+")$"));return function(n,r){for(var o="",i=n||{},a=(r||{}).pretty?M:encodeURIComponent,s=0;s<t.length;s++){var u=t[s];if("string"!=typeof u){var c,f=i[u.name];if(null==f){if(u.optional){u.partial&&(o+=u.prefix);continue}throw new TypeError('Expected "'+u.name+'" to be defined')}if(j(f)){if(!u.repeat)throw new TypeError('Expected "'+u.name+'" to not repeat, but received `'+JSON.stringify(f)+"`");if(0===f.length){if(u.optional)continue;throw new TypeError('Expected "'+u.name+'" to not be empty')}for(var p=0;p<f.length;p++){if(c=a(f[p]),!e[s].test(c))throw new TypeError('Expected all "'+u.name+'" to match "'+u.pattern+'", but received `'+JSON.stringify(c)+"`");o+=(0===p?u.prefix:u.delimiter)+c}}else{if(c=u.asterisk?encodeURI(f).replace(/[?#]/g,(function(t){return"%"+t.charCodeAt(0).toString(16).toUpperCase()})):a(f),!e[s].test(c))throw new TypeError('Expected "'+u.name+'" to match "'+u.pattern+'", but received "'+c+'"');o+=u.prefix+c}}else o+=u}return o}}function B(t){return t.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function H(t){return t.replace(/([=!:$\/()])/g,"\\$1")}function q(t,e){return t.keys=e,t}function z(t){return t.sensitive?"":"i"}function V(t,e,n){j(e)||(n=e||n,e=[]);for(var r=(n=n||{}).strict,o=!1!==n.end,i="",a=0;a<t.length;a++){var s=t[a];if("string"==typeof s)i+=B(s);else{var u=B(s.prefix),c="(?:"+s.pattern+")";e.push(s),s.repeat&&(c+="(?:"+u+c+")*"),i+=c=s.optional?s.partial?u+"("+c+")?":"(?:"+u+"("+c+"))?":u+"("+c+")"}}var f=B(n.delimiter||"/"),p=i.slice(-f.length)===f;return r||(i=(p?i.slice(0,-f.length):i)+"(?:"+f+"(?=$))?"),i+=o?"$":r&&p?"":"(?="+f+"|$)",q(new RegExp("^"+i,z(n)),e)}function G(t,e,n){return j(e)||(n=e||n,e=[]),n=n||{},t instanceof RegExp?function(t,e){var n=t.source.match(/\((?!\?)/g);if(n)for(var r=0;r<n.length;r++)e.push({name:r,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,asterisk:!1,pattern:null});return q(t,e)}(t,e):j(t)?function(t,e,n){for(var r=[],o=0;o<t.length;o++)r.push(G(t[o],e,n).source);return q(new RegExp("(?:"+r.join("|")+")",z(n)),e)}(t,e,n):function(t,e,n){return V(D(t,n),e,n)}(t,e,n)}I.parse=L,I.compile=P,I.tokensToFunction=N,I.tokensToRegExp=R;var W=Object.create(null);function K(t,e,n){e=e||{};try{var r=W[t]||(W[t]=I.compile(t));return e.pathMatch&&(e[0]=e.pathMatch),r(e,{pretty:!0})}catch(t){return""}finally{delete e[0]}}function X(t,e,n,r){var o="string"==typeof t?{path:t}:t;if(o._normalized)return o;if(o.name)return l({},t);if(!o.path&&o.params&&e){(o=l({},o))._normalized=!0;var i=l(l({},e.params),o.params);if(e.name)o.name=e.name,o.params=i;else if(e.matched.length){var a=e.matched[e.matched.length-1].path;o.path=K(a,i,e.path)}else 0;return o}var s=function(t){var e="",n="",r=t.indexOf("#");r>=0&&(e=t.slice(r),t=t.slice(0,r));var o=t.indexOf("?");return o>=0&&(n=t.slice(o+1),t=t.slice(0,o)),{path:t,query:n,hash:e}}(o.path||""),u=e&&e.path||"/",c=s.path?T(s.path,u,n||o.append):u,f=function(t,e,n){void 0===e&&(e={});var r,o=n||b;try{r=o(t||"")}catch(t){r={}}for(var i in e)r[i]=e[i];return r}(s.query,o.query,r&&r.options.parseQuery),p=o.hash||s.hash;return p&&"#"!==p.charAt(0)&&(p="#"+p),{_normalized:!0,path:c,query:f,hash:p}}var Y,J=[String,Object],Q=[String,Array],Z=function(){},tt={name:"RouterLink",props:{to:{type:J,required:!0},tag:{type:String,default:"a"},exact:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,event:{type:Q,default:"click"}},render:function(t){var e=this,n=this.$router,r=this.$route,o=n.resolve(this.to,r,this.append),i=o.location,a=o.route,s=o.href,u={},c=n.options.linkActiveClass,f=n.options.linkExactActiveClass,p=null==c?"router-link-active":c,d=null==f?"router-link-exact-active":f,h=null==this.activeClass?p:this.activeClass,v=null==this.exactActiveClass?d:this.exactActiveClass,m=a.redirectedFrom?O(null,X(a.redirectedFrom),null,n):a;u[v]=$(r,m),u[h]=this.exact?u[v]:function(t,e){return 0===t.path.replace(w,"/").indexOf(e.path.replace(w,"/"))&&(!e.hash||t.hash===e.hash)&&function(t,e){for(var n in e)if(!(n in t))return!1;return!0}(t.query,e.query)}(r,m);var y=function(t){et(t)&&(e.replace?n.replace(i,Z):n.push(i,Z))},g={click:et};Array.isArray(this.event)?this.event.forEach((function(t){g[t]=y})):g[this.event]=y;var b={class:u},_=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:s,route:a,navigate:y,isActive:u[h],isExactActive:u[v]});if(_){if(1===_.length)return _[0];if(_.length>1||!_.length)return 0===_.length?t():t("span",{},_)}if("a"===this.tag)b.on=g,b.attrs={href:s};else{var C=function t(e){if(e)for(var n,r=0;r<e.length;r++){if("a"===(n=e[r]).tag)return n;if(n.children&&(n=t(n.children)))return n}}(this.$slots.default);if(C){C.isStatic=!1;var A=C.data=l({},C.data);for(var x in A.on=A.on||{},A.on){var E=A.on[x];x in g&&(A.on[x]=Array.isArray(E)?E:[E])}for(var k in g)k in A.on?A.on[k].push(g[k]):A.on[k]=y;(C.data.attrs=l({},C.data.attrs)).href=s}else b.on=g}return t(this.tag,b,this.$slots.default)}};function et(t){if(!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey||t.defaultPrevented||void 0!==t.button&&0!==t.button)){if(t.currentTarget&&t.currentTarget.getAttribute){var e=t.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(e))return}return t.preventDefault&&t.preventDefault(),!0}}var nt="undefined"!=typeof window;function rt(t,e,n,r){var o=e||[],i=n||Object.create(null),a=r||Object.create(null);t.forEach((function(t){!function t(e,n,r,o,i,a){var s=o.path;var u=o.name;0;var c=o.pathToRegexpOptions||{};var f=function(t,e,n){n||(t=t.replace(/\/$/,""));if("/"===t[0])return t;if(null==e)return t;return S(e.path+"/"+t)}(s,i,c.strict);"boolean"==typeof o.caseSensitive&&(c.sensitive=o.caseSensitive);var p={path:f,regex:ot(f,c),components:o.components||{default:o.component},instances:{},name:u,parent:i,matchAs:a,redirect:o.redirect,beforeEnter:o.beforeEnter,meta:o.meta||{},props:null==o.props?{}:o.components?o.props:{default:o.props}};o.children&&o.children.forEach((function(o){var i=a?S(a+"/"+o.path):void 0;t(e,n,r,o,p,i)}));n[p.path]||(e.push(p.path),n[p.path]=p);if(void 0!==o.alias)for(var l=Array.isArray(o.alias)?o.alias:[o.alias],d=0;d<l.length;++d){0;var h={path:l[d],children:o.children};t(e,n,r,h,i,p.path||"/")}u&&(r[u]||(r[u]=p))}(o,i,a,t)}));for(var s=0,u=o.length;s<u;s++)"*"===o[s]&&(o.push(o.splice(s,1)[0]),u--,s--);return{pathList:o,pathMap:i,nameMap:a}}function ot(t,e){return I(t,[],e)}function it(t,e){var n=rt(t),r=n.pathList,o=n.pathMap,i=n.nameMap;function a(t,n,a){var s=X(t,n,!1,e),c=s.name;if(c){var f=i[c];if(!f)return u(null,s);var p=f.regex.keys.filter((function(t){return!t.optional})).map((function(t){return t.name}));if("object"!=typeof s.params&&(s.params={}),n&&"object"==typeof n.params)for(var l in n.params)!(l in s.params)&&p.indexOf(l)>-1&&(s.params[l]=n.params[l]);return s.path=K(f.path,s.params),u(f,s,a)}if(s.path){s.params={};for(var d=0;d<r.length;d++){var h=r[d],v=o[h];if(at(v.regex,s.path,s.params))return u(v,s,a)}}return u(null,s)}function s(t,n){var r=t.redirect,o="function"==typeof r?r(O(t,n,null,e)):r;if("string"==typeof o&&(o={path:o}),!o||"object"!=typeof o)return u(null,n);var s=o,c=s.name,f=s.path,p=n.query,l=n.hash,d=n.params;if(p=s.hasOwnProperty("query")?s.query:p,l=s.hasOwnProperty("hash")?s.hash:l,d=s.hasOwnProperty("params")?s.params:d,c){i[c];return a({_normalized:!0,name:c,query:p,hash:l,params:d},void 0,n)}if(f){var h=function(t,e){return T(t,e.parent?e.parent.path:"/",!0)}(f,t);return a({_normalized:!0,path:K(h,d),query:p,hash:l},void 0,n)}return u(null,n)}function u(t,n,r){return t&&t.redirect?s(t,r||n):t&&t.matchAs?function(t,e,n){var r=a({_normalized:!0,path:K(n,e.params)});if(r){var o=r.matched,i=o[o.length-1];return e.params=r.params,u(i,e)}return u(null,e)}(0,n,t.matchAs):O(t,n,r,e)}return{match:a,addRoutes:function(t){rt(t,r,o,i)}}}function at(t,e,n){var r=e.match(t);if(!r)return!1;if(!n)return!0;for(var o=1,i=r.length;o<i;++o){var a=t.keys[o-1],s="string"==typeof r[o]?decodeURIComponent(r[o]):r[o];a&&(n[a.name||"pathMatch"]=s)}return!0}var st=nt&&window.performance&&window.performance.now?window.performance:Date;function ut(){return st.now().toFixed(3)}var ct=ut();function ft(){return ct}function pt(t){return ct=t}var lt=Object.create(null);function dt(){var t=window.location.protocol+"//"+window.location.host,e=window.location.href.replace(t,"");window.history.replaceState({key:ft()},"",e),window.addEventListener("popstate",(function(t){vt(),t.state&&t.state.key&&pt(t.state.key)}))}function ht(t,e,n,r){if(t.app){var o=t.options.scrollBehavior;o&&t.app.$nextTick((function(){var i=function(){var t=ft();if(t)return lt[t]}(),a=o.call(t,e,n,r?i:null);a&&("function"==typeof a.then?a.then((function(t){_t(t,i)})).catch((function(t){0})):_t(a,i))}))}}function vt(){var t=ft();t&&(lt[t]={x:window.pageXOffset,y:window.pageYOffset})}function mt(t){return gt(t.x)||gt(t.y)}function yt(t){return{x:gt(t.x)?t.x:window.pageXOffset,y:gt(t.y)?t.y:window.pageYOffset}}function gt(t){return"number"==typeof t}var bt=/^#\d/;function _t(t,e){var n,r="object"==typeof t;if(r&&"string"==typeof t.selector){var o=bt.test(t.selector)?document.getElementById(t.selector.slice(1)):document.querySelector(t.selector);if(o){var i=t.offset&&"object"==typeof t.offset?t.offset:{};e=function(t,e){var n=document.documentElement.getBoundingClientRect(),r=t.getBoundingClientRect();return{x:r.left-n.left-e.x,y:r.top-n.top-e.y}}(o,i={x:gt((n=i).x)?n.x:0,y:gt(n.y)?n.y:0})}else mt(t)&&(e=yt(t))}else r&&mt(t)&&(e=yt(t));e&&window.scrollTo(e.x,e.y)}var wt,Ot=nt&&((-1===(wt=window.navigator.userAgent).indexOf("Android 2.")&&-1===wt.indexOf("Android 4.0")||-1===wt.indexOf("Mobile Safari")||-1!==wt.indexOf("Chrome")||-1!==wt.indexOf("Windows Phone"))&&window.history&&"pushState"in window.history);function Ct(t,e){vt();var n=window.history;try{e?n.replaceState({key:ft()},"",t):n.pushState({key:pt(ut())},"",t)}catch(n){window.location[e?"replace":"assign"](t)}}function At(t){Ct(t,!0)}function xt(t,e,n){var r=function(o){o>=t.length?n():t[o]?e(t[o],(function(){r(o+1)})):r(o+1)};r(0)}function Et(t){return function(e,n,r){var o=!1,i=0,a=null;$t(t,(function(t,e,n,s){if("function"==typeof t&&void 0===t.cid){o=!0,i++;var u,c=St((function(e){var o;((o=e).__esModule||Tt&&"Module"===o[Symbol.toStringTag])&&(e=e.default),t.resolved="function"==typeof e?e:Y.extend(e),n.components[s]=e,--i<=0&&r()})),p=St((function(t){var e="Failed to resolve async component "+s+": "+t;a||(a=f(t)?t:new Error(e),r(a))}));try{u=t(c,p)}catch(t){p(t)}if(u)if("function"==typeof u.then)u.then(c,p);else{var l=u.component;l&&"function"==typeof l.then&&l.then(c,p)}}})),o||r()}}function $t(t,e){return kt(t.map((function(t){return Object.keys(t.components).map((function(n){return e(t.components[n],t.instances[n],t,n)}))})))}function kt(t){return Array.prototype.concat.apply([],t)}var Tt="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function St(t){var e=!1;return function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];if(!e)return e=!0,t.apply(this,n)}}var jt=function(t){function e(e){t.call(this),this.name=this._name="NavigationDuplicated",this.message='Navigating to current location ("'+e.fullPath+'") is not allowed',Object.defineProperty(this,"stack",{value:(new t).stack,writable:!0,configurable:!0})}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Error);jt._name="NavigationDuplicated";var It=function(t,e){this.router=t,this.base=function(t){if(!t)if(nt){var e=document.querySelector("base");t=(t=e&&e.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else t="/";"/"!==t.charAt(0)&&(t="/"+t);return t.replace(/\/$/,"")}(e),this.current=A,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[]};function Lt(t,e,n,r){var o=$t(t,(function(t,r,o,i){var a=function(t,e){"function"!=typeof t&&(t=Y.extend(t));return t.options[e]}(t,e);if(a)return Array.isArray(a)?a.map((function(t){return n(t,r,o,i)})):n(a,r,o,i)}));return kt(r?o.reverse():o)}function Pt(t,e){if(e)return function(){return t.apply(e,arguments)}}It.prototype.listen=function(t){this.cb=t},It.prototype.onReady=function(t,e){this.ready?t():(this.readyCbs.push(t),e&&this.readyErrorCbs.push(e))},It.prototype.onError=function(t){this.errorCbs.push(t)},It.prototype.transitionTo=function(t,e,n){var r=this,o=this.router.match(t,this.current);this.confirmTransition(o,(function(){r.updateRoute(o),e&&e(o),r.ensureURL(),r.ready||(r.ready=!0,r.readyCbs.forEach((function(t){t(o)})))}),(function(t){n&&n(t),t&&!r.ready&&(r.ready=!0,r.readyErrorCbs.forEach((function(e){e(t)})))}))},It.prototype.confirmTransition=function(t,e,n){var r=this,o=this.current,i=function(t){!p(jt,t)&&f(t)&&(r.errorCbs.length?r.errorCbs.forEach((function(e){e(t)})):console.error(t)),n&&n(t)};if($(t,o)&&t.matched.length===o.matched.length)return this.ensureURL(),i(new jt(t));var a=function(t,e){var n,r=Math.max(t.length,e.length);for(n=0;n<r&&t[n]===e[n];n++);return{updated:e.slice(0,n),activated:e.slice(n),deactivated:t.slice(n)}}(this.current.matched,t.matched),s=a.updated,u=a.deactivated,c=a.activated,l=[].concat(function(t){return Lt(t,"beforeRouteLeave",Pt,!0)}(u),this.router.beforeHooks,function(t){return Lt(t,"beforeRouteUpdate",Pt)}(s),c.map((function(t){return t.beforeEnter})),Et(c));this.pending=t;var d=function(e,n){if(r.pending!==t)return i();try{e(t,o,(function(t){!1===t||f(t)?(r.ensureURL(!0),i(t)):"string"==typeof t||"object"==typeof t&&("string"==typeof t.path||"string"==typeof t.name)?(i(),"object"==typeof t&&t.replace?r.replace(t):r.push(t)):n(t)}))}catch(t){i(t)}};xt(l,d,(function(){var n=[];xt(function(t,e,n){return Lt(t,"beforeRouteEnter",(function(t,r,o,i){return function(t,e,n,r,o){return function(i,a,s){return t(i,a,(function(t){"function"==typeof t&&r.push((function(){!function t(e,n,r,o){n[r]&&!n[r]._isBeingDestroyed?e(n[r]):o()&&setTimeout((function(){t(e,n,r,o)}),16)}(t,e.instances,n,o)})),s(t)}))}}(t,o,i,e,n)}))}(c,n,(function(){return r.current===t})).concat(r.router.resolveHooks),d,(function(){if(r.pending!==t)return i();r.pending=null,e(t),r.router.app&&r.router.app.$nextTick((function(){n.forEach((function(t){t()}))}))}))}))},It.prototype.updateRoute=function(t){var e=this.current;this.current=t,this.cb&&this.cb(t),this.router.afterHooks.forEach((function(n){n&&n(t,e)}))};var Nt=function(t){function e(e,n){var r=this;t.call(this,e,n);var o=e.options.scrollBehavior,i=Ot&&o;i&&dt();var a=Rt(this.base);window.addEventListener("popstate",(function(t){var n=r.current,o=Rt(r.base);r.current===A&&o===a||r.transitionTo(o,(function(t){i&&ht(e,t,n,!0)}))}))}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.go=function(t){window.history.go(t)},e.prototype.push=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){Ct(S(r.base+t.fullPath)),ht(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){At(S(r.base+t.fullPath)),ht(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.ensureURL=function(t){if(Rt(this.base)!==this.current.fullPath){var e=S(this.base+this.current.fullPath);t?Ct(e):At(e)}},e.prototype.getCurrentLocation=function(){return Rt(this.base)},e}(It);function Rt(t){var e=decodeURI(window.location.pathname);return t&&0===e.indexOf(t)&&(e=e.slice(t.length)),(e||"/")+window.location.search+window.location.hash}var Ut=function(t){function e(e,n,r){t.call(this,e,n),r&&function(t){var e=Rt(t);if(!/^\/#/.test(e))return window.location.replace(S(t+"/#"+e)),!0}(this.base)||Dt()}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setupListeners=function(){var t=this,e=this.router.options.scrollBehavior,n=Ot&&e;n&&dt(),window.addEventListener(Ot?"popstate":"hashchange",(function(){var e=t.current;Dt()&&t.transitionTo(Mt(),(function(r){n&&ht(t.router,r,e,!0),Ot||Ht(r.fullPath)}))}))},e.prototype.push=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){Bt(t.fullPath),ht(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){Ht(t.fullPath),ht(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.go=function(t){window.history.go(t)},e.prototype.ensureURL=function(t){var e=this.current.fullPath;Mt()!==e&&(t?Bt(e):Ht(e))},e.prototype.getCurrentLocation=function(){return Mt()},e}(It);function Dt(){var t=Mt();return"/"===t.charAt(0)||(Ht("/"+t),!1)}function Mt(){var t=window.location.href,e=t.indexOf("#");if(e<0)return"";var n=(t=t.slice(e+1)).indexOf("?");if(n<0){var r=t.indexOf("#");t=r>-1?decodeURI(t.slice(0,r))+t.slice(r):decodeURI(t)}else n>-1&&(t=decodeURI(t.slice(0,n))+t.slice(n));return t}function Ft(t){var e=window.location.href,n=e.indexOf("#");return(n>=0?e.slice(0,n):e)+"#"+t}function Bt(t){Ot?Ct(Ft(t)):window.location.hash=t}function Ht(t){Ot?At(Ft(t)):window.location.replace(Ft(t))}var qt=function(t){function e(e,n){t.call(this,e,n),this.stack=[],this.index=-1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.push=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index+1).concat(t),r.index++,e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index).concat(t),e&&e(t)}),n)},e.prototype.go=function(t){var e=this,n=this.index+t;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,(function(){e.index=n,e.updateRoute(r)}),(function(t){p(jt,t)&&(e.index=n)}))}},e.prototype.getCurrentLocation=function(){var t=this.stack[this.stack.length-1];return t?t.fullPath:"/"},e.prototype.ensureURL=function(){},e}(It),zt=function(t){void 0===t&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=it(t.routes||[],this);var e=t.mode||"hash";switch(this.fallback="history"===e&&!Ot&&!1!==t.fallback,this.fallback&&(e="hash"),nt||(e="abstract"),this.mode=e,e){case"history":this.history=new Nt(this,t.base);break;case"hash":this.history=new Ut(this,t.base,this.fallback);break;case"abstract":this.history=new qt(this,t.base);break;default:0}},Vt={currentRoute:{configurable:!0}};function Gt(t,e){return t.push(e),function(){var n=t.indexOf(e);n>-1&&t.splice(n,1)}}zt.prototype.match=function(t,e,n){return this.matcher.match(t,e,n)},Vt.currentRoute.get=function(){return this.history&&this.history.current},zt.prototype.init=function(t){var e=this;if(this.apps.push(t),t.$once("hook:destroyed",(function(){var n=e.apps.indexOf(t);n>-1&&e.apps.splice(n,1),e.app===t&&(e.app=e.apps[0]||null)})),!this.app){this.app=t;var n=this.history;if(n instanceof Nt)n.transitionTo(n.getCurrentLocation());else if(n instanceof Ut){var r=function(){n.setupListeners()};n.transitionTo(n.getCurrentLocation(),r,r)}n.listen((function(t){e.apps.forEach((function(e){e._route=t}))}))}},zt.prototype.beforeEach=function(t){return Gt(this.beforeHooks,t)},zt.prototype.beforeResolve=function(t){return Gt(this.resolveHooks,t)},zt.prototype.afterEach=function(t){return Gt(this.afterHooks,t)},zt.prototype.onReady=function(t,e){this.history.onReady(t,e)},zt.prototype.onError=function(t){this.history.onError(t)},zt.prototype.push=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!=typeof Promise)return new Promise((function(e,n){r.history.push(t,e,n)}));this.history.push(t,e,n)},zt.prototype.replace=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!=typeof Promise)return new Promise((function(e,n){r.history.replace(t,e,n)}));this.history.replace(t,e,n)},zt.prototype.go=function(t){this.history.go(t)},zt.prototype.back=function(){this.go(-1)},zt.prototype.forward=function(){this.go(1)},zt.prototype.getMatchedComponents=function(t){var e=t?t.matched?t:this.resolve(t).route:this.currentRoute;return e?[].concat.apply([],e.matched.map((function(t){return Object.keys(t.components).map((function(e){return t.components[e]}))}))):[]},zt.prototype.resolve=function(t,e,n){var r=X(t,e=e||this.history.current,n,this),o=this.match(r,e),i=o.redirectedFrom||o.fullPath;return{location:r,route:o,href:function(t,e,n){var r="hash"===n?"#"+e:e;return t?S(t+"/"+r):r}(this.history.base,i,this.mode),normalizedTo:r,resolved:o}},zt.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==A&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(zt.prototype,Vt),zt.install=function t(e){if(!t.installed||Y!==e){t.installed=!0,Y=e;var n=function(t){return void 0!==t},r=function(t,e){var r=t.$options._parentVnode;n(r)&&n(r=r.data)&&n(r=r.registerRouteInstance)&&r(t,e)};e.mixin({beforeCreate:function(){n(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),e.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,r(this,this)},destroyed:function(){r(this)}}),Object.defineProperty(e.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(e.prototype,"$route",{get:function(){return this._routerRoot._route}}),e.component("RouterView",d),e.component("RouterLink",tt);var o=e.config.optionMergeStrategies;o.beforeRouteEnter=o.beforeRouteLeave=o.beforeRouteUpdate=o.created}},zt.version="3.1.3",nt&&window.Vue&&window.Vue.use(zt);var Wt=zt,Kt=function(){return Promise.all([r.e(0),r.e(6)]).then(r.bind(null,77))},Xt=function(){return Promise.all([r.e(0),r.e(5),r.e(4)]).then(r.bind(null,76))}; +/* + * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * @author Julius Härtl <jus@bitgrid.net> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */o.default.use(Wt);var Yt=new Wt({mode:"history",base:OC.generateUrl(""),linkActiveClass:"active",routes:[{path:"/:index(index.php/)?settings/users",component:Kt,props:!0,name:"users",children:[{path:":selectedGroup(.*)",name:"group",component:Kt}]},{path:"/:index(index.php/)?settings/apps",component:Xt,props:!0,name:"apps",children:[{path:":category",name:"apps-category",component:Xt,children:[{path:":id",name:"apps-details",component:Xt}]}]}]}),Jt=r(15),Qt=r(0),Zt=function(t,e){return 1===e?t.sort((function(t,e){return t.usercount-t.disabled<e.usercount-e.disabled})):t.sort((function(t,e){return t.name.localeCompare(e.name)}))},te={id:"",name:"",usercount:0,disabled:0,canAdd:!0,canRemove:!0},ee={state:{users:[],groups:[],orderBy:1,minPasswordLength:0,usersOffset:0,usersLimit:25,userCount:0},mutations:{appendUsers:function(t,e){var n=t.users.concat(Object.keys(e).map((function(t){return e[t]})));t.usersOffset+=t.usersLimit,t.users=n},setPasswordPolicyMinLength:function(t,e){t.minPasswordLength=""!==e?e:0},initGroups:function(t,e){var n=e.groups,r=e.orderBy,o=e.userCount;t.groups=n.map((function(t){return Object.assign({},te,t)})),t.orderBy=r,t.userCount=o,t.groups=Zt(t.groups,t.orderBy)},addGroup:function(t,e){var n=e.gid,r=e.displayName;try{if(void 0!==t.groups.find((function(t){return t.id===n})))return;var o=Object.assign({},te,{id:n,name:r});t.groups.push(o),t.groups=Zt(t.groups,t.orderBy)}catch(t){console.log("Can't create group",t)}},removeGroup:function(t,e){var n=t.groups.findIndex((function(t){return t.id==e}));n>=0&&t.groups.splice(n,1)},addUserGroup:function(t,e){var n=e.userid,r=e.gid,o=t.groups.find((function(t){return t.id==r})),i=t.users.find((function(t){return t.id==n}));o&&i.enabled&&o.usercount++,i.groups.push(r),t.groups=Zt(t.groups,t.orderBy)},removeUserGroup:function(t,e){var n=e.userid,r=e.gid,o=t.groups.find((function(t){return t.id==r})),i=t.users.find((function(t){return t.id==n}));o&&i.enabled&&o.usercount--;var a=i.groups;a.splice(a.indexOf(r),1),t.groups=Zt(t.groups,t.orderBy)},addUserSubAdmin:function(t,e){var n=e.userid,r=e.gid;t.users.find((function(t){return t.id==n})).subadmin.push(r)},removeUserSubAdmin:function(t,e){var n=e.userid,r=e.gid,o=t.users.find((function(t){return t.id==n})).subadmin;o.splice(o.indexOf(r),1)},deleteUser:function(t,e){var n=t.users.findIndex((function(t){return t.id==e}));t.users.splice(n,1)},addUserData:function(t,e){t.users.push(e.data.ocs.data)},enableDisableUser:function(t,e){var n=e.userid,r=e.enabled,o=t.users.find((function(t){return t.id==n}));o.enabled=r,t.groups.find((function(t){return"disabled"==t.id})).usercount+=r?-1:1,t.userCount+=r?1:-1,o.groups.forEach((function(e){t.groups.find((function(t){return t.id==e})).disabled+=r?-1:1}))},setUserData:function(t,e){var n=e.userid,r=e.key,o=e.value;if("quota"===r){var i=OC.Util.computerFileSize(o);t.users.find((function(t){return t.id==n}))[r][r]=null!==i?i:o}else t.users.find((function(t){return t.id==n}))[r]=o},resetUsers:function(t){t.users=[],t.usersOffset=0}},getters:{getUsers:function(t){return t.users},getGroups:function(t){return t.groups},getSubadminGroups:function(t){return t.groups.filter((function(t){return"admin"!==t.id&&"disabled"!==t.id}))},getPasswordPolicyMinLength:function(t){return t.minPasswordLength},getUsersOffset:function(t){return t.usersOffset},getUsersLimit:function(t){return t.usersLimit},getUserCount:function(t){return t.userCount}},actions:{getUsers:function(t,e){var n=e.offset,r=e.limit,o=e.search,i=e.group;return o="string"==typeof o?o:"",""!==(i="string"==typeof i?i:"")?Qt.a.get(OC.linkToOCS("cloud/groups/".concat(i,"/users/details?offset=").concat(n,"&limit=").concat(r,"&search=").concat(o),2)).then((function(e){return Object.keys(e.data.ocs.data.users).length>0&&(t.commit("appendUsers",e.data.ocs.data.users),!0)})).catch((function(e){return t.commit("API_FAILURE",e)})):Qt.a.get(OC.linkToOCS("cloud/users/details?offset=".concat(n,"&limit=").concat(r,"&search=").concat(o),2)).then((function(e){return Object.keys(e.data.ocs.data.users).length>0&&(t.commit("appendUsers",e.data.ocs.data.users),!0)})).catch((function(e){return t.commit("API_FAILURE",e)}))},getGroups:function(t,e){var n=e.offset,r=e.limit,o=e.search;o="string"==typeof o?o:"";var i=-1===r?"":"&limit=".concat(r);return Qt.a.get(OC.linkToOCS("cloud/groups?offset=".concat(n,"&search=").concat(o).concat(i),2)).then((function(e){return Object.keys(e.data.ocs.data.groups).length>0&&(e.data.ocs.data.groups.forEach((function(e){t.commit("addGroup",{gid:e,displayName:e})})),!0)})).catch((function(e){return t.commit("API_FAILURE",e)}))},getUsersFromList:function(t,e){var n=e.offset,r=e.limit,o=e.search;return o="string"==typeof o?o:"",Qt.a.get(OC.linkToOCS("cloud/users/details?offset=".concat(n,"&limit=").concat(r,"&search=").concat(o),2)).then((function(e){return Object.keys(e.data.ocs.data.users).length>0&&(t.commit("appendUsers",e.data.ocs.data.users),!0)})).catch((function(e){return t.commit("API_FAILURE",e)}))},getUsersFromGroup:function(t,e){var n=e.groupid,r=e.offset,o=e.limit;return Qt.a.get(OC.linkToOCS("cloud/users/".concat(n,"/details?offset=").concat(r,"&limit=").concat(o),2)).then((function(e){return t.commit("getUsersFromList",e.data.ocs.data.users)})).catch((function(e){return t.commit("API_FAILURE",e)}))},getPasswordPolicyMinLength:function(t){return!(!OC.getCapabilities().password_policy||!OC.getCapabilities().password_policy.minLength)&&(t.commit("setPasswordPolicyMinLength",OC.getCapabilities().password_policy.minLength),OC.getCapabilities().password_policy.minLength)},addGroup:function(t,e){return Qt.a.requireAdmin().then((function(n){return Qt.a.post(OC.linkToOCS("cloud/groups",2),{groupid:e}).then((function(n){return t.commit("addGroup",{gid:e,displayName:e}),{gid:e,displayName:e}})).catch((function(t){throw t}))})).catch((function(n){throw t.commit("API_FAILURE",{gid:e,error:n}),n}))},removeGroup:function(t,e){return Qt.a.requireAdmin().then((function(n){return Qt.a.delete(OC.linkToOCS("cloud/groups/".concat(e),2)).then((function(n){return t.commit("removeGroup",e)})).catch((function(t){throw t}))})).catch((function(n){return t.commit("API_FAILURE",{gid:e,error:n})}))},addUserGroup:function(t,e){var n=e.userid,r=e.gid;return Qt.a.requireAdmin().then((function(e){return Qt.a.post(OC.linkToOCS("cloud/users/".concat(n,"/groups"),2),{groupid:r}).then((function(e){return t.commit("addUserGroup",{userid:n,gid:r})})).catch((function(t){throw t}))})).catch((function(e){return t.commit("API_FAILURE",{userid:n,error:e})}))},removeUserGroup:function(t,e){var n=e.userid,r=e.gid;return Qt.a.requireAdmin().then((function(e){return Qt.a.delete(OC.linkToOCS("cloud/users/".concat(n,"/groups"),2),{groupid:r}).then((function(e){return t.commit("removeUserGroup",{userid:n,gid:r})})).catch((function(t){throw t}))})).catch((function(e){throw t.commit("API_FAILURE",{userid:n,error:e}),e}))},addUserSubAdmin:function(t,e){var n=e.userid,r=e.gid;return Qt.a.requireAdmin().then((function(e){return Qt.a.post(OC.linkToOCS("cloud/users/".concat(n,"/subadmins"),2),{groupid:r}).then((function(e){return t.commit("addUserSubAdmin",{userid:n,gid:r})})).catch((function(t){throw t}))})).catch((function(e){return t.commit("API_FAILURE",{userid:n,error:e})}))},removeUserSubAdmin:function(t,e){var n=e.userid,r=e.gid;return Qt.a.requireAdmin().then((function(e){return Qt.a.delete(OC.linkToOCS("cloud/users/".concat(n,"/subadmins"),2),{groupid:r}).then((function(e){return t.commit("removeUserSubAdmin",{userid:n,gid:r})})).catch((function(t){throw t}))})).catch((function(e){return t.commit("API_FAILURE",{userid:n,error:e})}))},wipeUserDevices:function(t,e){return Qt.a.requireAdmin().then((function(t){return Qt.a.post(OC.linkToOCS("cloud/users/".concat(e,"/wipe"),2)).catch((function(t){throw t}))})).catch((function(n){return t.commit("API_FAILURE",{userid:e,error:n})}))},deleteUser:function(t,e){return Qt.a.requireAdmin().then((function(n){return Qt.a.delete(OC.linkToOCS("cloud/users/".concat(e),2)).then((function(n){return t.commit("deleteUser",e)})).catch((function(t){throw t}))})).catch((function(n){return t.commit("API_FAILURE",{userid:e,error:n})}))},addUser:function(t,e){var n=t.commit,r=t.dispatch,o=e.userid,i=e.password,a=e.displayName,s=e.email,u=e.groups,c=e.subadmin,f=e.quota,p=e.language;return Qt.a.requireAdmin().then((function(t){return Qt.a.post(OC.linkToOCS("cloud/users",2),{userid:o,password:i,displayName:a,email:s,groups:u,subadmin:c,quota:f,language:p}).then((function(t){return r("addUserData",o||t.data.ocs.data.id)})).catch((function(t){throw t}))})).catch((function(t){throw n("API_FAILURE",{userid:o,error:t}),t}))},addUserData:function(t,e){return Qt.a.requireAdmin().then((function(n){return Qt.a.get(OC.linkToOCS("cloud/users/".concat(e),2)).then((function(e){return t.commit("addUserData",e)})).catch((function(t){throw t}))})).catch((function(n){return t.commit("API_FAILURE",{userid:e,error:n})}))},enableDisableUser:function(t,e){var n=e.userid,r=e.enabled,o=void 0===r||r,i=o?"enable":"disable";return Qt.a.requireAdmin().then((function(e){return Qt.a.put(OC.linkToOCS("cloud/users/".concat(n,"/").concat(i),2)).then((function(e){return t.commit("enableDisableUser",{userid:n,enabled:o})})).catch((function(t){throw t}))})).catch((function(e){return t.commit("API_FAILURE",{userid:n,error:e})}))},setUserData:function(t,e){var n=e.userid,r=e.key,o=e.value,i=["email","displayname"];return-1!==["email","language","quota","displayname","password"].indexOf(r)&&"string"==typeof o&&(-1===i.indexOf(r)&&o.length>0||-1!==i.indexOf(r))?Qt.a.requireAdmin().then((function(e){return Qt.a.put(OC.linkToOCS("cloud/users/".concat(n),2),{key:r,value:o}).then((function(e){return t.commit("setUserData",{userid:n,key:r,value:o})})).catch((function(t){throw t}))})).catch((function(e){return t.commit("API_FAILURE",{userid:n,error:e})})):Promise.reject(new Error("Invalid request data"))},sendWelcomeMail:function(t,e){return Qt.a.requireAdmin().then((function(t){return Qt.a.post(OC.linkToOCS("cloud/users/".concat(e,"/welcome"),2)).then((function(t){return!0})).catch((function(t){throw t}))})).catch((function(n){return t.commit("API_FAILURE",{userid:e,error:n})}))}}},ne={state:{apps:[],categories:[],updateCount:0,loading:{},loadingList:!1},mutations:{APPS_API_FAILURE:function(e,n){OC.Notification.showHtml(t("settings","An error occured during the request. Unable to proceed.")+"<br>"+n.error.response.data.data.message,{timeout:7}),console.log(e,n)},initCategories:function(t,e){var n=e.categories,r=e.updateCount;t.categories=n,t.updateCount=r},setUpdateCount:function(t,e){t.updateCount=e},addCategory:function(t,e){t.categories.push(e)},appendCategories:function(t,e){t.categories=e},setAllApps:function(t,e){t.apps=e},setError:function(t,e){var n=e.appId,r=e.error;Array.isArray(n)||(n=[n]),n.forEach((function(e){t.apps.find((function(t){return t.id===e})).error=r}))},clearError:function(t,e){var n=e.appId;e.error;t.apps.find((function(t){return t.id===n})).error=null},enableApp:function(t,e){var n=e.appId,r=e.groups,o=t.apps.find((function(t){return t.id===n}));o.active=!0,o.groups=r},disableApp:function(t,e){var n=t.apps.find((function(t){return t.id===e}));n.active=!1,n.groups=[],n.removable&&(n.canUnInstall=!0)},uninstallApp:function(t,e){t.apps.find((function(t){return t.id===e})).active=!1,t.apps.find((function(t){return t.id===e})).groups=[],t.apps.find((function(t){return t.id===e})).needsDownload=!0,t.apps.find((function(t){return t.id===e})).installed=!1,t.apps.find((function(t){return t.id===e})).canUnInstall=!1,t.apps.find((function(t){return t.id===e})).canInstall=!0},updateApp:function(t,e){var n=t.apps.find((function(t){return t.id===e})),r=n.update;n.update=null,n.version=r,t.updateCount--},resetApps:function(t){t.apps=[]},reset:function(t){t.apps=[],t.categories=[],t.updateCount=0},startLoading:function(t,e){Array.isArray(e)?e.forEach((function(e){o.default.set(t.loading,e,!0)})):o.default.set(t.loading,e,!0)},stopLoading:function(t,e){Array.isArray(e)?e.forEach((function(e){o.default.set(t.loading,e,!1)})):o.default.set(t.loading,e,!1)}},getters:{loading:function(t){return function(e){return t.loading[e]}},getCategories:function(t){return t.categories},getAllApps:function(t){return t.apps},getUpdateCount:function(t){return t.updateCount}},actions:{enableApp:function(e,n){var r,o=n.appId,i=n.groups;return r=Array.isArray(o)?o:[o],Qt.a.requireAdmin().then((function(n){return e.commit("startLoading",r),e.commit("startLoading","install"),Qt.a.post(OC.generateUrl("settings/apps/enable"),{appIds:r,groups:i}).then((function(n){return e.commit("stopLoading",r),e.commit("stopLoading","install"),r.forEach((function(t){e.commit("enableApp",{appId:t,groups:i})})),Qt.a.get(OC.generateUrl("apps/files")).then((function(){n.data.update_required&&(OC.dialogs.info(t("settings","The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds."),t("settings","App update"),(function(){window.location.reload()}),!0),setTimeout((function(){location.reload()}),5e3))})).catch((function(n){Array.isArray(o)||e.commit("setError",{appId:r,error:t("settings","Error: This app can not be enabled because it makes the server unstable")})}))})).catch((function(t){e.commit("stopLoading",r),e.commit("stopLoading","install"),e.commit("setError",{appId:r,error:t.response.data.data.message}),e.commit("APPS_API_FAILURE",{appId:o,error:t})}))})).catch((function(t){return e.commit("API_FAILURE",{appId:o,error:t})}))},forceEnableApp:function(t,e){var n,r=e.appId;e.groups;return n=Array.isArray(r)?r:[r],Qt.a.requireAdmin().then((function(){return t.commit("startLoading",n),t.commit("startLoading","install"),Qt.a.post(OC.generateUrl("settings/apps/force"),{appId:r}).then((function(t){location.reload()})).catch((function(e){t.commit("stopLoading",n),t.commit("stopLoading","install"),t.commit("setError",{appId:n,error:e.response.data.data.message}),t.commit("APPS_API_FAILURE",{appId:r,error:e})}))})).catch((function(e){return t.commit("API_FAILURE",{appId:r,error:e})}))},disableApp:function(t,e){var n,r=e.appId;return n=Array.isArray(r)?r:[r],Qt.a.requireAdmin().then((function(e){return t.commit("startLoading",n),Qt.a.post(OC.generateUrl("settings/apps/disable"),{appIds:n}).then((function(e){return t.commit("stopLoading",n),n.forEach((function(e){t.commit("disableApp",e)})),!0})).catch((function(e){t.commit("stopLoading",n),t.commit("APPS_API_FAILURE",{appId:r,error:e})}))})).catch((function(e){return t.commit("API_FAILURE",{appId:r,error:e})}))},uninstallApp:function(t,e){var n=e.appId;return Qt.a.requireAdmin().then((function(e){return t.commit("startLoading",n),Qt.a.get(OC.generateUrl("settings/apps/uninstall/".concat(n))).then((function(e){return t.commit("stopLoading",n),t.commit("uninstallApp",n),!0})).catch((function(e){t.commit("stopLoading",n),t.commit("APPS_API_FAILURE",{appId:n,error:e})}))})).catch((function(e){return t.commit("API_FAILURE",{appId:n,error:e})}))},updateApp:function(t,e){var n=e.appId;return Qt.a.requireAdmin().then((function(e){return t.commit("startLoading",n),t.commit("startLoading","install"),Qt.a.get(OC.generateUrl("settings/apps/update/".concat(n))).then((function(e){return t.commit("stopLoading","install"),t.commit("stopLoading",n),t.commit("updateApp",n),!0})).catch((function(e){t.commit("stopLoading",n),t.commit("stopLoading","install"),t.commit("APPS_API_FAILURE",{appId:n,error:e})}))})).catch((function(e){return t.commit("API_FAILURE",{appId:n,error:e})}))},getAllApps:function(t){return t.commit("startLoading","list"),Qt.a.get(OC.generateUrl("settings/apps/list")).then((function(e){return t.commit("setAllApps",e.data.apps),t.commit("stopLoading","list"),!0})).catch((function(e){return t.commit("API_FAILURE",e)}))},getCategories:function(t){return t.commit("startLoading","categories"),Qt.a.get(OC.generateUrl("settings/apps/categories")).then((function(e){return e.data.length>0&&(t.commit("appendCategories",e.data),t.commit("stopLoading","categories"),!0)})).catch((function(e){return t.commit("API_FAILURE",e)}))}}},re={state:{serverData:{}},mutations:{setServerData:function(t,e){t.serverData=e}},getters:{getServerData:function(t){return t.serverData}},actions:{}},oe={state:{},mutations:{},getters:{},actions:{setAppConfig:function(t,e){var n=e.app,r=e.key,o=e.value;return Qt.a.requireAdmin().then((function(t){return Qt.a.post(OC.linkToOCS("apps/provisioning_api/api/v1/config/apps/".concat(n,"/").concat(r),2),{value:o}).catch((function(t){throw t}))})).catch((function(e){return t.commit("API_FAILURE",{app:n,key:r,value:o,error:e})}))}}}; +/* + * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * @author Julius Härtl <jus@bitgrid.net> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +o.default.use(Jt.a);var ie={API_FAILURE:function(e,n){try{var r=n.error.response.data.ocs.meta.message;OC.Notification.showHtml(t("settings","An error occured during the request. Unable to proceed.")+"<br>"+r,{timeout:7})}catch(e){OC.Notification.showTemporary(t("settings","An error occured during the request. Unable to proceed."))}console.log(e,n)}},ae=new Jt.a.Store({modules:{users:ee,apps:ne,settings:re,oc:oe},strict:!1,mutations:ie});r.d(n,"app",(function(){return se})),r.d(n,"router",(function(){return Yt})),r.d(n,"store",(function(){return ae})), +/** + * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +o.default.use(i.a,{defaultHtml:!1}),Object(a.sync)(ae,Yt),r.nc=btoa(OC.requestToken),r.p=OC.linkTo("settings","js/"),o.default.prototype.t=t,o.default.prototype.OC=OC,o.default.prototype.OCA=OCA,o.default.prototype.oc_userconfig=oc_userconfig;var se=new o.default({router:Yt,store:ae,render:function(t){return t(c)}}).$mount("#content")}]); +//# sourceMappingURL=vue-settings-apps-users-management.js.map?v=f9d7cd8744aee50c4006 \ No newline at end of file diff --git a/apps/settings/js/vue-settings-apps-users-management.js.map b/apps/settings/js/vue-settings-apps-users-management.js.map new file mode 100644 index 00000000000..10820d40e4b --- /dev/null +++ b/apps/settings/js/vue-settings-apps-users-management.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./apps/settings/src/store/api.js","webpack:///./node_modules/axios/lib/utils.js","webpack:///./node_modules/vue/dist/vue.runtime.esm.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/nextcloud-axios/dist/client.js","webpack:///./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/axios/lib/helpers/buildURL.js","webpack:///./node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/axios/lib/defaults.js","webpack:///./node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/axios/lib/core/createError.js","webpack:///./node_modules/axios/lib/core/mergeConfig.js","webpack:///./node_modules/axios/lib/cancel/Cancel.js","webpack:///./node_modules/vuex/dist/vuex.esm.js","webpack:///./node_modules/nextcloud-password-confirmation/dist/main.js","webpack:///./node_modules/popper.js/dist/esm/popper.js","webpack:///./node_modules/timers-browserify/main.js","webpack:///./node_modules/setimmediate/setImmediate.js","webpack:///./node_modules/axios/index.js","webpack:///./node_modules/axios/lib/axios.js","webpack:///./node_modules/axios/node_modules/is-buffer/index.js","webpack:///./node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///./node_modules/axios/lib/core/settle.js","webpack:///./node_modules/axios/lib/core/enhanceError.js","webpack:///./node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/axios/lib/helpers/cookies.js","webpack:///./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/axios/lib/helpers/combineURLs.js","webpack:///./node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/axios/lib/helpers/spread.js","webpack:///./node_modules/v-tooltip/dist/v-tooltip.esm.js","webpack:///./node_modules/vue-resize/dist/vue-resize.esm.js","webpack:///./node_modules/vuex-router-sync/index.js","webpack:///./apps/settings/src/App.vue?d963","webpack:///apps/settings/src/App.vue","webpack:///./apps/settings/src/App.vue","webpack:///./apps/settings/src/App.vue?dd35","webpack:///./node_modules/vue-router/dist/vue-router.esm.js","webpack:///./apps/settings/src/router.js","webpack:///./apps/settings/src/store/users.js","webpack:///./apps/settings/src/store/apps.js","webpack:///./apps/settings/src/store/settings.js","webpack:///./apps/settings/src/store/oc.js","webpack:///./apps/settings/src/store/index.js","webpack:///./apps/settings/src/main-apps-users-management.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","installedModules","2","__webpack_require__","exports","module","l","e","promises","installedChunkData","promise","Promise","resolve","reject","onScriptComplete","script","document","createElement","charset","timeout","nc","setAttribute","src","p","jsonpScriptSrc","error","Error","event","onerror","onload","clearTimeout","chunk","errorType","type","realSrc","target","message","name","request","undefined","setTimeout","head","appendChild","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","err","console","jsonpArray","window","oldJsonpFunction","slice","s","sanitize","url","replace","requireAdmin","confirmPassword","axios","post","patch","put","delete","isBuffer","toString","isArray","val","isObject","isFunction","forEach","obj","fn","isArrayBuffer","isFormData","FormData","isArrayBufferView","ArrayBuffer","isView","buffer","isString","isNumber","isUndefined","isDate","isFile","isBlob","isStream","pipe","isURLSearchParams","URLSearchParams","isStandardBrowserEnv","navigator","product","merge","result","assignValue","arguments","deepMerge","extend","a","b","thisArg","trim","str","emptyObject","freeze","isUndef","v","isDef","isTrue","isPrimitive","_toString","isPlainObject","isRegExp","isValidArrayIndex","parseFloat","String","Math","floor","isFinite","isPromise","then","catch","Array","JSON","stringify","toNumber","isNaN","makeMap","expectsLowerCase","map","list","split","toLowerCase","isReservedAttribute","remove","arr","item","index","indexOf","splice","hasOwn","cached","cache","camelizeRE","camelize","_","toUpperCase","capitalize","charAt","hyphenateRE","hyphenate","Function","ctx","boundFn","apply","_length","toArray","start","ret","to","_from","toObject","res","noop","no","identity","looseEqual","isObjectA","isObjectB","isArrayA","isArrayB","every","Date","getTime","keysA","keys","keysB","looseIndexOf","once","called","this","SSR_ATTR","ASSET_TYPES","LIFECYCLE_HOOKS","config","optionMergeStrategies","silent","productionTip","devtools","performance","errorHandler","warnHandler","ignoredElements","keyCodes","isReservedTag","isReservedAttr","isUnknownElement","getTagNamespace","parsePlatformTagName","mustUseProp","async","_lifecycleHooks","unicodeRegExp","def","writable","configurable","bailRE","RegExp","_isServer","hasProto","inBrowser","inWeex","WXEnvironment","platform","weexPlatform","UA","userAgent","isIE","test","isIE9","isEdge","isIOS","isFF","match","nativeWatch","watch","supportsPassive","opts","addEventListener","isServerRendering","global","env","VUE_ENV","__VUE_DEVTOOLS_GLOBAL_HOOK__","isNative","Ctor","_Set","hasSymbol","Reflect","ownKeys","Set","set","has","add","clear","warn","uid","Dep","id","subs","addSub","sub","removeSub","depend","addDep","notify","update","targetStack","pushTarget","popTarget","pop","VNode","tag","children","text","elm","context","componentOptions","asyncFactory","fnContext","fnOptions","fnScopeId","componentInstance","parent","raw","isStatic","isRootInsert","isComment","isCloned","isOnce","asyncMeta","isAsyncPlaceholder","prototypeAccessors","child","defineProperties","createEmptyVNode","node","createTextVNode","cloneVNode","vnode","cloned","arrayProto","arrayMethods","method","original","args","len","inserted","ob","__ob__","observeArray","dep","arrayKeys","getOwnPropertyNames","shouldObserve","toggleObserving","Observer","vmCount","__proto__","protoAugment","copyAugment","walk","observe","asRootData","isExtensible","_isVue","defineReactive$$1","customSetter","shallow","getOwnPropertyDescriptor","setter","childOb","dependArray","newVal","max","del","items","strats","mergeData","from","toVal","fromVal","mergeDataOrFn","parentVal","childVal","vm","instanceData","defaultData","mergeHook","concat","hooks","dedupeHooks","mergeAssets","hook","key$1","props","methods","inject","computed","provide","defaultStrat","mergeOptions","options","normalizeProps","normalized","normalizeInject","dirs","directives","def$$1","normalizeDirectives","_base","extends","mixins","mergeField","strat","resolveAsset","warnMissing","assets","camelizedId","PascalCaseId","validateProp","propOptions","propsData","prop","absent","booleanIndex","getTypeIndex","Boolean","stringIndex","default","$options","_props","getType","getPropDefaultValue","prevShouldObserve","isSameType","expectedTypes","handleError","info","cur","$parent","errorCaptured","globalHandleError","invokeWithErrorHandling","handler","_handled","logError","timerFunc","isUsingMicroTask","callbacks","pending","flushCallbacks","copies","MutationObserver","setImmediate","counter","observer","textNode","createTextNode","characterData","nextTick","cb","_resolve","seenObjects","traverse","_traverse","seen","isA","isFrozen","depId","normalizeEvent","passive","once$$1","capture","createFnInvoker","fns","invoker","arguments$1","updateListeners","on","oldOn","remove$$1","createOnceHandler","old","params","mergeVNodeHook","hookKey","oldHook","wrappedHook","merged","checkProp","hash","altKey","preserve","normalizeChildren","normalizeArrayChildren","nestedIndex","lastIndex","last","isTextNode","_isVList","resolveInject","provideKey","source","_provided","provideDefault","resolveSlots","slots","attrs","slot","name$1","isWhitespace","normalizeScopedSlots","normalSlots","prevSlots","hasNormalSlots","isStable","$stable","$key","_normalized","$hasNormal","normalizeScopedSlot","key$2","proxyNormalSlot","proxy","renderList","render","iterator","next","done","renderSlot","fallback","bindObject","nodes","scopedSlotFn","$scopedSlots","$slots","$createElement","resolveFilter","isKeyNotMatch","expect","actual","checkKeyCodes","eventKeyCode","builtInKeyCode","eventKeyName","builtInKeyName","mappedKeyCode","bindObjectProps","asProp","isSync","loop","domProps","camelizedKey","hyphenatedKey","$event","renderStatic","isInFor","_staticTrees","tree","markStatic","staticRenderFns","_renderProxy","markOnce","markStaticNode","bindObjectListeners","existing","ours","resolveScopedSlots","hasDynamicKeys","contentHashKey","bindDynamicKeys","baseObj","values","prependModifier","symbol","installRenderHelpers","_o","_n","_s","_l","_t","_q","_i","_m","_f","_k","_b","_v","_e","_u","_g","_d","_p","FunctionalRenderContext","contextVm","this$1","_original","isCompiled","_compiled","needNormalization","listeners","injections","scopedSlots","_scopeId","_c","cloneAndMarkFunctionalResult","renderContext","clone","mergeProps","componentVNodeHooks","init","hydrating","_isDestroyed","keepAlive","mountedNode","prepatch","_isComponent","_parentVnode","inlineTemplate","createComponentInstanceForVnode","activeInstance","$mount","oldVnode","parentVnode","renderChildren","newScopedSlots","oldScopedSlots","hasDynamicScopedSlot","needsForceUpdate","_renderChildren","$vnode","_vnode","$attrs","$listeners","propKeys","_propKeys","oldListeners","_parentListeners","updateComponentListeners","$forceUpdate","updateChildComponent","insert","_isMounted","callHook","_inactive","activatedChildren","activateChildComponent","destroy","deactivateChildComponent","direct","_directInactive","isInInactiveTree","$children","$destroy","hooksToMerge","createComponent","baseCtor","cid","factory","errorComp","resolved","owner","currentRenderingInstance","owners","loading","loadingComp","sync","timerLoading","timerTimeout","$on","forceRender","renderCompleted","ensureCtor","reason","component","delay","resolveAsyncComponent","createAsyncPlaceholder","resolveConstructorOptions","model","callback","transformModel","extractPropsFromVNodeData","functional","vnodes","createFunctionalComponent","nativeOn","abstract","toMerge","_merged","mergeHook$1","installComponentHooks","f1","f2","SIMPLE_NORMALIZE","ALWAYS_NORMALIZE","normalizationType","alwaysNormalize","is","simpleNormalizeChildren","pre","applyNS","force","style","class","registerDeepBindings","_createElement","comp","base","getFirstComponentChild","remove$1","$off","_target","onceHandler","setActiveInstance","prevActiveInstance","handlers","j","_hasHookEvent","$emit","queue","waiting","flushing","currentFlushTimestamp","getNow","now","createEvent","timeStamp","flushSchedulerQueue","watcher","sort","before","run","activatedQueue","updatedQueue","callActivatedHooks","_watcher","callUpdatedHooks","emit","uid$2","Watcher","expOrFn","isRenderWatcher","_watchers","deep","user","lazy","active","dirty","deps","newDeps","depIds","newDepIds","expression","path","segments","parsePath","cleanupDeps","tmp","queueWatcher","oldValue","evaluate","teardown","_isBeingDestroyed","sharedPropertyDefinition","sourceKey","initState","propsOptions","initProps","initMethods","_data","getData","charCodeAt","initData","watchers","_computedWatchers","isSSR","userDef","computedWatcherOptions","defineComputed","initComputed","createWatcher","initWatch","shouldCache","createComputedGetter","createGetterInvoker","$watch","uid$3","super","superOptions","modifiedOptions","modified","latest","sealed","sealedOptions","resolveModifiedOptions","extendOptions","components","Vue","_init","initExtend","Super","SuperId","cachedCtors","_Ctor","Sub","constructor","Comp","initProps$1","initComputed$1","mixin","use","getComponentName","matches","pattern","pruneCache","keepAliveInstance","filter","cachedNode","pruneCacheEntry","current","cached$$1","_uid","vnodeComponentOptions","_componentTag","initInternalComponent","_self","$root","$refs","initLifecycle","_events","initEvents","parentData","initRender","initInjections","initProvide","el","initMixin","dataDef","propsDef","$set","$delete","immediate","stateMixin","hookRE","$once","i$1","cbs","eventsMixin","_update","prevEl","$el","prevVnode","restoreActiveInstance","__patch__","__vue__","lifecycleMixin","$nextTick","_render","ref","renderMixin","patternTypes","builtInComponents","KeepAlive","include","exclude","Number","created","destroyed","mounted","parseInt","configDef","util","defineReactive","observable","plugin","installedPlugins","_installedPlugins","unshift","install","initUse","initMixin$1","definition","initAssetRegisters","initGlobalAPI","ssrContext","version","acceptValue","isEnumeratedAttr","isValidContentEditableValue","convertEnumeratedValue","isFalsyAttrValue","isBooleanAttr","xlinkNS","isXlink","getXlinkProp","genClassForVnode","parentNode","childNode","mergeClassData","staticClass","dynamicClass","stringifyClass","renderClass","stringified","stringifyArray","stringifyObject","namespaceMap","svg","math","isHTMLTag","isSVG","unknownElementCache","isTextInputType","nodeOps","tagName","multiple","createElementNS","namespace","createComment","insertBefore","newNode","referenceNode","removeChild","nextSibling","setTextContent","textContent","setStyleScope","scopeId","registerRef","isRemoval","refs","refInFor","emptyNode","sameVnode","typeA","typeB","sameInputType","createKeyToOldIdx","beginIdx","endIdx","updateDirectives","oldDir","dir","isCreate","isDestroy","oldDirs","normalizeDirectives$1","newDirs","dirsWithInsert","dirsWithPostpatch","oldArg","arg","callHook$1","componentUpdated","callInsert","emptyModifiers","modifiers","getRawDirName","rawName","join","baseModules","updateAttrs","inheritAttrs","oldAttrs","setAttr","removeAttributeNS","removeAttribute","baseSetAttr","setAttributeNS","__ieph","blocker","stopImmediatePropagation","removeEventListener","updateClass","oldData","cls","transitionClass","_transitionClasses","_prevClass","target$1","klass","RANGE_TOKEN","CHECKBOX_RADIO_TOKEN","createOnceHandler$1","remove$2","useMicrotaskFix","add$1","attachedTimestamp","_wrapper","currentTarget","ownerDocument","updateDOMListeners","change","normalizeEvents","svgContainer","events","updateDOMProps","oldProps","childNodes","_value","strCur","shouldUpdateValue","innerHTML","firstChild","checkVal","composing","notInFocus","activeElement","isNotInFocusAndDirty","_vModifiers","number","isDirtyWithModifiers","parseStyleText","cssText","propertyDelimiter","normalizeStyleData","normalizeStyleBinding","staticStyle","bindingStyle","emptyStyle","cssVarRE","importantRE","setProp","setProperty","normalizedName","normalize","vendorNames","capName","updateStyle","oldStaticStyle","oldStyleBinding","normalizedStyle","oldStyle","newStyle","checkChild","styleData","getStyle","whitespaceRE","addClass","classList","getAttribute","removeClass","tar","resolveTransition","css","autoCssTransition","enterClass","enterToClass","enterActiveClass","leaveClass","leaveToClass","leaveActiveClass","hasTransition","TRANSITION","ANIMATION","transitionProp","transitionEndEvent","animationProp","animationEndEvent","ontransitionend","onwebkittransitionend","onanimationend","onwebkitanimationend","raf","requestAnimationFrame","nextFrame","addTransitionClass","transitionClasses","removeTransitionClass","whenTransitionEnds","expectedType","getTransitionInfo","propCount","ended","end","onEnd","transformRE","styles","getComputedStyle","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","durations","toMs","enter","toggleDisplay","_leaveCb","cancelled","transition","_enterCb","nodeType","appearClass","appearToClass","appearActiveClass","beforeEnter","afterEnter","enterCancelled","beforeAppear","appear","afterAppear","appearCancelled","duration","transitionNode","isAppear","startClass","activeClass","toClass","beforeEnterHook","enterHook","afterEnterHook","enterCancelledHook","explicitEnterDuration","expectsCSS","userWantsControl","getHookArgumentsLength","show","pendingNode","_pending","isValidDuration","leave","rm","beforeLeave","afterLeave","leaveCancelled","delayLeave","explicitLeaveDuration","performLeave","invokerFns","_enter","backend","removeNode","createElm","insertedVnodeQueue","parentElm","refElm","nested","ownerArray","isReactivated","initComponent","innerNode","activate","reactivateComponent","setScope","createChildren","invokeCreateHooks","pendingInsert","isPatchable","ref$$1","ancestor","addVnodes","startIdx","invokeDestroyHook","removeVnodes","ch","removeAndInvokeRemoveHook","childElm","createRmCb","findIdxInOld","oldCh","patchVnode","removeOnly","hydrate","newCh","oldKeyToIdx","idxInOld","vnodeToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","canMove","updateChildren","postpatch","invokeInsertHook","initial","isRenderedModule","inVPre","hasChildNodes","childrenMatch","fullInvoke","isInitialPatch","isRealElement","hasAttribute","oldElm","patchable","i$2","createPatchFunction","vmodel","trigger","directive","binding","_vOptions","setSelected","getValue","onCompositionStart","onCompositionEnd","prevOptions","curOptions","some","hasNoMatchingOption","actuallySetSelected","isMultiple","selected","option","selectedIndex","initEvent","dispatchEvent","locateNode","platformDirectives","transition$$1","originalDisplay","__vOriginalDisplay","display","unbind","transitionProps","getRealChild","compOptions","extractTransitionData","placeholder","h","rawChild","isNotTextNode","isVShowDirective","Transition","hasParentTransition","_leaving","oldRawChild","oldChild","isSameChild","delayedLeave","moveClass","callPendingCbs","_moveCb","recordPosition","newPos","getBoundingClientRect","applyTranslation","oldPos","pos","dx","left","dy","top","moved","transform","WebkitTransform","transitionDuration","platformComponents","TransitionGroup","beforeMount","kept","prevChildren","rawChildren","transitionData","removed","c$1","updated","hasMove","_reflow","body","offsetHeight","propertyName","_hasMove","cloneNode","attr","HTMLUnknownElement","HTMLElement","updateComponent","mountComponent","querySelector","query","g","client","headers","requesttoken","OC","requestToken","normalizeComponent","scriptExports","functionalTemplate","injectStyles","moduleIdentifier","shadowMode","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","shadowRoot","_injectStyles","originalRender","beforeCreate","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","marker","runClearTimeout","Item","array","title","browser","argv","versions","addListener","off","removeListener","removeAllListeners","prependListener","prependOnceListener","cwd","chdir","umask","utils","encode","encodeURIComponent","paramsSerializer","serializedParams","parts","toISOString","hashmarkIndex","__CANCEL__","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","adapter","defaults","XMLHttpRequest","transformRequest","transformResponse","parse","xsrfCookieName","xsrfHeaderName","maxContentLength","validateStatus","status","common","settle","buildURL","parseHeaders","isURLSameOrigin","createError","requestData","requestHeaders","auth","username","password","Authorization","btoa","open","onreadystatechange","readyState","responseURL","responseHeaders","getAllResponseHeaders","response","responseType","responseText","statusText","onabort","ontimeout","cookies","xsrfValue","withCredentials","read","setRequestHeader","onDownloadProgress","onUploadProgress","upload","cancelToken","cancel","abort","send","enhanceError","code","config1","config2","Cancel","devtoolHook","forEachValue","Module","rawModule","runtime","_children","_rawModule","rawState","state","namespaced","addChild","getChild","actions","mutations","getters","forEachChild","forEachGetter","forEachAction","forEachMutation","ModuleCollection","rawRootModule","register","reduce","root","getNamespace","targetModule","newModule","rawChildModule","unregister","Store","plugins","strict","_committing","_actions","_actionSubscribers","_mutations","_wrappedGetters","_modules","_modulesNamespaceMap","_subscribers","_watcherVM","store","dispatch","commit","payload","installModule","resetStoreVM","_devtoolHook","targetState","replaceState","subscribe","mutation","devtoolPlugin","prototypeAccessors$1","genericSubscribe","resetStore","hot","oldVm","_vm","wrappedGetters","partial","$$state","enableStrictMode","_withCommit","rootState","isRoot","parentState","getNestedState","moduleName","local","noNamespace","_type","_payload","_options","unifyObjectStyle","gettersProxy","splitPos","localType","makeLocalGetters","makeLocalContext","registerMutation","action","rootGetters","registerAction","rawGetter","registerGetter","_Vue","vuexInit","$store","applyMixin","entry","after","subscribeAction","registerModule","preserveState","unregisterModule","hotUpdate","newOptions","committing","mapState","normalizeNamespace","states","normalizeMap","getModuleByNamespace","vuex","mapMutations","mapGetters","mapActions","helper","index_esm","createNamespacedHelpers","PasswordConfirmation","requiresPasswordConfirmation","requirePasswordConfirmation","isBrowser","longerTimeoutBrowsers","timeoutDuration","debounce","scheduled","functionToCheck","getStyleComputedProperty","element","defaultView","getParentNode","nodeName","host","getScrollParent","_getStyleComputedProp","overflow","overflowX","overflowY","isIE11","MSInputMethodContext","documentMode","isIE10","getOffsetParent","documentElement","noOffsetParent","offsetParent","nextElementSibling","getRoot","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","range","createRange","setStart","setEnd","commonAncestorContainer","contains","firstElementChild","element1root","getScroll","upperSide","html","scrollingElement","getBordersSize","axis","sideA","sideB","getSize","computedStyle","getWindowSizes","height","width","classCallCheck","instance","Constructor","TypeError","createClass","descriptor","protoProps","staticProps","_extends","assign","getClientRect","offsets","right","bottom","rect","scrollTop","scrollLeft","sizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","getOffsetRectRelativeToArbitraryNode","fixedPosition","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","subtract","modifier","includeScroll","getFixedPositionOffsetParent","parentElement","getBoundaries","popper","reference","padding","boundariesElement","boundaries","excludeScroll","relativeOffset","innerWidth","innerHeight","getViewportOffsetRectRelativeToArtbitraryNode","boundariesNode","isFixed","_getWindowSizes","isPaddingNumber","computeAutoPlacement","placement","refRect","rects","sortedAreas","area","_ref","filteredAreas","_ref2","computedPlacement","variation","getReferenceOffsets","getOuterSizes","x","marginBottom","y","marginRight","getOppositePlacement","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","find","check","runModifiers","ends","findIndex","enabled","isDestroyed","arrowStyles","attributes","flipped","positionFixed","flip","originalPlacement","position","isCreated","onUpdate","onCreate","isModifierEnabled","modifierName","getSupportedPropertyName","prefixes","upperProp","prefix","toCheck","willChange","disableEventListeners","removeOnDestroy","getWindow","setupEventListeners","updateBound","scrollElement","attachToScrollParents","scrollParents","isBody","eventsEnabled","enableEventListeners","scheduleUpdate","cancelAnimationFrame","isNumeric","setStyles","unit","isFirefox","isModifierRequired","requestingName","requestedName","requesting","isRequired","_requesting","requested","placements","validPlacements","clockwise","reverse","BEHAVIORS","FLIP","CLOCKWISE","COUNTERCLOCKWISE","parseOffset","offset","basePlacement","useHeight","fragments","frag","divider","search","splitRegex","ops","op","mergeWithPrevious","toValue","index2","Defaults","shiftvariation","_data$offsets","isVertical","side","shiftOffsets","preventOverflow","transformProp","popperStyles","priority","primary","escapeWithReference","secondary","min","keepTogether","opSide","arrow","_data$offsets$arrow","arrowElement","sideCapitalized","altSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","round","placementOpposite","flipOrder","behavior","step","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flipVariations","flippedVariationByContent","flipVariationsByContent","flippedVariation","getOppositeVariation","inner","subtractLength","hide","bound","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","shouldRound","noRound","referenceWidth","popperWidth","isVariation","horizontalToInteger","verticalToInteger","getRoundedOffsets","devicePixelRatio","prefixedProperty","invertTop","invertLeft","applyStyle","onLoad","modifierOptions","Popper","_this","jquery","Utils","PopperUtils","self","Timeout","clearFn","_id","_clearFn","scope","setInterval","clearInterval","close","unref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","_onTimeout","clearImmediate","registerImmediate","channel","messagePrefix","onGlobalMessage","nextHandle","tasksByHandle","currentlyRunningATask","doc","attachTo","getPrototypeOf","handle","runIfPresent","postMessage","importScripts","postMessageIsAsynchronous","oldOnMessage","onmessage","canUsePostMessage","MessageChannel","port1","port2","random","attachEvent","task","Axios","mergeConfig","createInstance","defaultConfig","instanceConfig","CancelToken","isCancel","spread","InterceptorManager","dispatchRequest","interceptors","chain","interceptor","fulfilled","rejected","getUri","eject","transformData","isAbsoluteURL","combineURLs","throwIfCancellationRequested","throwIfRequested","baseURL","isAxiosError","toJSON","description","fileName","lineNumber","columnNumber","stack","ignoreDuplicateOf","parsed","line","substr","originURL","msie","urlParsingNode","resolveURL","href","protocol","hostname","port","pathname","location","requestURL","write","expires","domain","secure","cookie","toGMTString","decodeURIComponent","relativeURL","executor","resolvePromise","token","_typeof","_defineProperties","_defineProperty","_objectSpread","getOwnPropertySymbols","sym","SVGAnimatedString","convertToArray","addClasses","classes","newClasses","className","baseVal","newClass","SVGElement","removeClasses","DEFAULT_OPTIONS","container","template","openTooltips","Tooltip","_reference","_classCallCheck","evt","relatedreference","toElement","relatedTarget","_tooltipNode","evt2","relatedreference2","_scheduleHide","_isOpen","_show","_hide","_dispose","_classes","content","_setContent","classesUpdated","defaultClass","setClasses","getOptions","needPopperUpdate","needRestart","isOpen","dispose","popperInstance","_isDisposed","_enableDocumentTouch","_setEventListeners","$_originalTitle","tooltipGenerator","tooltipNode","autoHide","_this2","asyncContent","_applyContent","_this3","allowHtml","rootNode","titleNode","innerSelector","loadingClass","loadingContent","asyncResult","innerText","_disposeTimer","updateClasses","_ensureShown","_this4","_create","_findContainer","_append","popperOptions","arrowSelector","_this5","_noLongerOpen","disposeTime","disposeTimeout","_removeTooltipNode","_this6","func","_this7","directEvents","oppositeEvents","hideOnTargetClick","usedByTooltip","_scheduleShow","_this8","computedDelay","_scheduleTimer","_this9","_setTooltipNodeEvent","_onDocumentTouch","positions","defaultOptions","defaultPlacement","defaultTargetClass","defaultHtml","defaultTemplate","defaultArrowSelector","defaultInnerSelector","defaultDelay","defaultTrigger","defaultOffset","defaultContainer","defaultBoundariesElement","defaultPopperOptions","defaultLoadingClass","defaultLoadingContent","defaultHideOnTargetClick","popover","defaultBaseClass","defaultWrapperClass","defaultInnerClass","defaultArrowClass","defaultOpenClass","defaultAutoHide","defaultHandleResize","typeofOffset","getPlacement","getContent","destroyTooltip","_tooltip","_tooltipOldShow","_tooltipTargetClasses","tooltip","setContent","setOptions","_vueEl","targetClasses","createTooltip","addListeners","onClick","onTouchStart","removeListeners","onTouchEnd","onTouchCancel","closePopover","$_vclosepopover_touch","closeAllPopover","$_closePopoverModifiers","changedTouches","touch","$_vclosepopover_touchPoint","firstTouch","abs","screenY","screenX","vclosepopover","getDefault","MSStream","openPopovers","Element","ResizeObserver","disabled","popoverClass","popoverBaseClass","popoverInnerClass","popoverWrapperClass","popoverArrowClass","handleResize","openGroup","openClass","cssClass","popoverId","oldVal","popoverNode","$_findContainer","$_removeEventListeners","$_addEventListeners","$_updatePopper","$_isDisposed","$_mounted","$_events","$_preventOpen","$_init","deactivated","beforeDestroy","_ref2$force","skipDelay","$_scheduleShow","$_beingShowed","_ref3","$_scheduleHide","$_show","$_disposeTimer","$_getOffset","hidden","$_hide","$_scheduleTimer","$_setTooltipNodeEvent","event2","_ref4","$_restartPopper","$_handleGlobalClose","$_handleResize","handleGlobalClose","_loop","normalizeComponent_1","isFunctionalTemplate","createInjector","createInjectorSSR","createInjectorShadow","__vue_script__","__vue_render__","_h","tabindex","visibility","keyup","keyCode","_withStripped","Popover","_listCacheClear","__data__","size","eq_1","other","_assocIndexOf","_listCacheDelete","_listCacheGet","_listCacheHas","_listCacheSet","ListCache","entries","_ListCache","_stackClear","_stackDelete","_stackGet","_stackHas","commonjsGlobal","globalThis","createCommonjsModule","_freeGlobal","freeSelf","_root","_Symbol","objectProto","nativeObjectToString","symToStringTag","_getRawTag","isOwn","unmasked","nativeObjectToString$1","_objectToString","nullTag","undefinedTag","symToStringTag$1","_baseGetTag","isObject_1","asyncTag","funcTag","genTag","proxyTag","isFunction_1","_coreJsData","maskSrcKey","exec","IE_PROTO","_isMasked","funcToString","_toSource","reIsHostCtor","funcProto$1","objectProto$2","funcToString$1","hasOwnProperty$1","reIsNative","_baseIsNative","_getValue","_getNative","_Map","_nativeCreate","_hashClear","_hashDelete","HASH_UNDEFINED","hasOwnProperty$2","_hashGet","hasOwnProperty$3","_hashHas","HASH_UNDEFINED$1","_hashSet","Hash","_Hash","_mapCacheClear","_isKeyable","_getMapData","_mapCacheDelete","_mapCacheGet","_mapCacheHas","_mapCacheSet","MapCache","_MapCache","LARGE_ARRAY_SIZE","_stackSet","pairs","Stack","_Stack","_defineProperty$1","_baseAssignValue","_assignMergeValue","_baseFor","fromRight","iteratee","keysFunc","iterable","_createBaseFor","_cloneBuffer","freeExports","freeModule","Buffer","allocUnsafe","isDeep","copy","_Uint8Array","Uint8Array","_cloneArrayBuffer","arrayBuffer","byteLength","_cloneTypedArray","typedArray","byteOffset","_copyArray","objectCreate","_baseCreate","proto","_getPrototype","_overArg","objectProto$5","_isPrototype","_initCloneObject","isObjectLike_1","argsTag","_baseIsArguments","objectProto$6","hasOwnProperty$4","propertyIsEnumerable","isArguments_1","isArray_1","MAX_SAFE_INTEGER","isLength_1","isArrayLike_1","isArrayLikeObject_1","stubFalse_1","isBuffer_1","objectTag","funcProto$2","objectProto$7","funcToString$2","hasOwnProperty$5","objectCtorString","isPlainObject_1","typedArrayTags","_baseIsTypedArray","_baseUnary","_nodeUtil","freeProcess","nodeUtil","types","require","nodeIsTypedArray","isTypedArray","isTypedArray_1","_safeGet","hasOwnProperty$6","_assignValue","objValue","_copyObject","customizer","isNew","newValue","_baseTimes","MAX_SAFE_INTEGER$1","reIsUint","_isIndex","hasOwnProperty$7","_arrayLikeKeys","inherited","isArr","isArg","isBuff","isType","skipIndexes","_nativeKeysIn","hasOwnProperty$8","_baseKeysIn","isProto","keysIn_1","toPlainObject_1","_baseMergeDeep","srcIndex","mergeFunc","srcValue","stacked","isCommon","isTyped","_baseMerge","baseMerge","identity_1","_apply","nativeMax","_overRest","otherArgs","constant_1","_baseSetToString","string","HOT_COUNT","HOT_SPAN","nativeNow","_setToString","count","lastCalled","stamp","remaining","_shortOut","_baseRest","_isIterateeCall","merge_1","assigner","sources","guard","_createAssigner","insertAt","getElementsByTagName","styleSheet","styleInject","installed","finalOptions","GlobalVue","initCompat","ua","substring","rv","edge","getInternetExplorerVersion","compareAndNotify","_w","addResizeHandlers","_resizeObject","contentDocument","removeResizeHandlers","cloneRoute","fullPath","meta","router","currentRoute","currentPath","isTimeTraveling","storeUnwatch","route","afterEachUnHook","afterEach","isError","isExtendedError","_name","View","routerView","$route","_routerViewCache","depth","inactive","_routerRoot","vnodeData","routerViewDepth","registerRouteInstance","instances","propsToPass","resolveProps","encodeReserveRE","encodeReserveReplacer","commaRE","decode","parseQuery","param","stringifyQuery","val2","trailingSlashRE","createRoute","record","redirectedFrom","getFullPath","formatMatch","START","_stringifyQuery","isSameRoute","isObjectEqual","aKeys","bKeys","aVal","bVal","resolvePath","relative","append","firstChar","segment","cleanPath","isarray","pathToRegexp_1","pathToRegexp","parse_1","compile_1","tokensToFunction","tokensToFunction_1","tokensToRegExp_1","tokensToRegExp","PATH_REGEXP","tokens","defaultDelimiter","delimiter","escaped","group","asterisk","repeat","optional","escapeGroup","escapeString","encodeURIComponentPretty","encodeURI","pretty","attachKeys","re","flags","sensitive","endsWithDelimiter","groups","regexpToRegexp","arrayToRegexp","stringToRegexp","compile","regexpCompileCache","fillParams","routeMsg","filler","pathMatch","normalizeLocation","rawPath","parsedPath","hashIndex","queryIndex","basePath","extraQuery","_parseQuery","parsedQuery","resolveQuery","toTypes","eventTypes","Link","required","exact","exactActiveClass","$router","globalActiveClass","linkActiveClass","globalExactActiveClass","linkExactActiveClass","activeClassFallback","exactActiveClassFallback","compareTarget","queryIncludes","isIncludedRoute","guardEvent","click","scopedSlot","navigate","isActive","isExactActive","findAnchor","aData","handler$1","event$1","metaKey","ctrlKey","shiftKey","defaultPrevented","button","preventDefault","createRouteMap","routes","oldPathList","oldPathMap","oldNameMap","pathList","pathMap","nameMap","addRouteRecord","matchAs","pathToRegexpOptions","normalizedPath","normalizePath","caseSensitive","regex","compileRouteRegex","redirect","childMatchAs","alias","aliases","aliasRoute","createMatcher","_createRoute","paramNames","record$1","matchRoute","originalRedirect","resolveRecordPath","aliasedMatch","aliasedRecord","addRoutes","Time","genStateKey","toFixed","_key","getStateKey","setStateKey","positionStore","setupScroll","protocolAndPath","absolutePath","history","saveScrollPosition","handleScroll","isPop","app","scrollBehavior","getScrollPosition","shouldScroll","scrollToPosition","pageXOffset","pageYOffset","isValidPosition","normalizePosition","hashStartsWithNumberRE","selector","getElementById","docRect","elRect","getElementPosition","scrollTo","supportsPushState","pushState","runQueue","resolveAsyncComponents","hasAsync","flatMapComponents","resolvedDef","msg","flatten","NavigationDuplicated","normalizedLocation","History","baseEl","normalizeBase","ready","readyCbs","readyErrorCbs","errorCbs","extractGuards","records","guards","extractGuard","bindGuard","listen","onReady","errorCb","onError","transitionTo","onComplete","onAbort","confirmTransition","updateRoute","ensureURL","activated","resolveQueue","extractLeaveGuards","beforeHooks","extractUpdateHooks","postEnterCbs","isValid","poll","bindEnterGuard","extractEnterGuards","resolveHooks","prev","afterHooks","HTML5History","expectScroll","supportsScroll","initLocation","getLocation","go","fromRoute","getCurrentLocation","decodeURI","HashHistory","checkFallback","ensureSlash","setupListeners","getHash","replaceHash","pushHash","searchIndex","getUrl","AbstractHistory","targetIndex","VueRouter","apps","matcher","registerHook","setupHashListener","_route","beforeEach","beforeResolve","back","forward","getMatchedComponents","createHref","normalizedTo","registerInstance","callVal","_router","beforeRouteEnter","beforeRouteLeave","beforeRouteUpdate","Users","Apps","Router","generateUrl","orderGroups","orderBy","usercount","localeCompare","canAdd","canRemove","users","minPasswordLength","usersOffset","usersLimit","userCount","appendUsers","usersObj","userid","setPasswordPolicyMinLength","initGroups","addGroup","gid","displayName","log","removeGroup","groupIndex","groupSearch","addUserGroup","removeUserGroup","addUserSubAdmin","subadmin","removeUserSubAdmin","deleteUser","userIndex","addUserData","ocs","enableDisableUser","setUserData","humanValue","Util","computerFileSize","resetUsers","getUsers","getGroups","getSubadminGroups","getPasswordPolicyMinLength","getUsersOffset","getUsersLimit","getUserCount","limit","api","linkToOCS","limitParam","getUsersFromList","getUsersFromGroup","groupid","getCapabilities","password_policy","minLength","wipeUserDevices","addUser","email","quota","language","userStatus","allowedEmpty","sendWelcomeMail","categories","updateCount","loadingList","APPS_API_FAILURE","Notification","showHtml","initCategories","setUpdateCount","addCategory","category","appendCategories","categoriesArray","setAllApps","setError","appId","clearError","enableApp","disableApp","removable","canUnInstall","uninstallApp","needsDownload","canInstall","updateApp","resetApps","reset","startLoading","stopLoading","getCategories","getAllApps","getUpdateCount","appIds","_appId","update_required","dialogs","reload","forceEnableApp","serverData","setServerData","getServerData","setAppConfig","Vuex","API_FAILURE","showTemporary","settings","oc","VTooltip","__webpack_nonce__","__webpack_public_path__","linkTo","OCA","oc_userconfig","App"],"mappings":"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","file":"vue-settings-apps-users-management.js?v=f9d7cd8744aee50c4006","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t};\n\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t2: 0\n \t};\n\n\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"vue-\" + ({}[chunkId]||chunkId) + \".js?v=\" + {\"0\":\"89d06f5525c1b061b6bb\",\"4\":\"22b9f8b51449d0de5875\",\"5\":\"d01635292ff764289c84\",\"6\":\"2095f447189973aa4e3b\"}[chunkId] + \"\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/js/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonpSettings\"] = window[\"webpackJsonpSettings\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 63);\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from 'nextcloud-axios'\nimport confirmPassword from 'nextcloud-password-confirmation' \n\nconst sanitize = function(url) {\n\treturn url.replace(/\\/$/, ''); // Remove last url slash\n};\n\nexport default {\n\n\t/**\n\t * This Promise is used to chain a request that require an admin password confirmation\n\t * Since chaining Promise have a very precise behavior concerning catch and then,\n\t * you'll need to be careful when using it.\n\t * e.g\n\t * // store\n\t * \taction(context) {\n\t *\t\treturn api.requireAdmin().then((response) => {\n\t *\t\t\treturn api.get('url')\n\t *\t\t\t\t.then((response) => {API success})\n\t *\t\t\t\t.catch((error) => {API failure});\n\t *\t\t}).catch((error) => {requireAdmin failure});\n\t *\t}\n\t * // vue\n\t *\tthis.$store.dispatch('action').then(() => {always executed})\n\t *\n\t * Since Promise.then().catch().then() will always execute the last then\n\t * this.$store.dispatch('action').then will always be executed\n\t * \n\t * If you want requireAdmin failure to also catch the API request failure\n\t * you will need to throw a new error in the api.get.catch()\n\t * \n\t * e.g\n\t *\tapi.requireAdmin().then((response) => {\n\t *\t\tapi.get('url')\n\t *\t\t\t.then((response) => {API success})\n\t *\t\t\t.catch((error) => {throw error;});\n\t *\t}).catch((error) => {requireAdmin OR API failure});\n\t * \n\t * @returns {Promise}\n\t */\n\trequireAdmin() {\n\t\treturn confirmPassword();\n\t},\n\tget(url) {\n\t\treturn axios.get(sanitize(url));\n\t},\n\tpost(url, data) {\n\t\treturn axios.post(sanitize(url), data);\n\t},\n\tpatch(url, data) {\n\t\treturn axios.patch(sanitize(url), data);\n\t},\n\tput(url, data) {\n\t\treturn axios.put(sanitize(url), data);\n\t},\n\tdelete(url, data) {\n\t\treturn axios.delete(sanitize(url), { data: data });\n\t}\n};","'use strict';\n\nvar bind = require('./helpers/bind');\nvar isBuffer = require('is-buffer');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = merge(result[key], val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Function equal to merge with the difference being that no reference\n * to original objects is kept.\n *\n * @see merge\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction deepMerge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = deepMerge(result[key], val);\n } else if (typeof val === 'object') {\n result[key] = deepMerge({}, val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n deepMerge: deepMerge,\n extend: extend,\n trim: trim\n};\n","/*!\n * Vue.js v2.6.10\n * (c) 2014-2019 Evan You\n * Released under the MIT License.\n */\n/* */\n\nvar emptyObject = Object.freeze({});\n\n// These helpers produce better VM code in JS engines due to their\n// explicitness and function inlining.\nfunction isUndef (v) {\n return v === undefined || v === null\n}\n\nfunction isDef (v) {\n return v !== undefined && v !== null\n}\n\nfunction isTrue (v) {\n return v === true\n}\n\nfunction isFalse (v) {\n return v === false\n}\n\n/**\n * Check if value is primitive.\n */\nfunction isPrimitive (value) {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n // $flow-disable-line\n typeof value === 'symbol' ||\n typeof value === 'boolean'\n )\n}\n\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\n/**\n * Get the raw type string of a value, e.g., [object Object].\n */\nvar _toString = Object.prototype.toString;\n\nfunction toRawType (value) {\n return _toString.call(value).slice(8, -1)\n}\n\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject (obj) {\n return _toString.call(obj) === '[object Object]'\n}\n\nfunction isRegExp (v) {\n return _toString.call(v) === '[object RegExp]'\n}\n\n/**\n * Check if val is a valid array index.\n */\nfunction isValidArrayIndex (val) {\n var n = parseFloat(String(val));\n return n >= 0 && Math.floor(n) === n && isFinite(val)\n}\n\nfunction isPromise (val) {\n return (\n isDef(val) &&\n typeof val.then === 'function' &&\n typeof val.catch === 'function'\n )\n}\n\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString (val) {\n return val == null\n ? ''\n : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n\n/**\n * Convert an input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber (val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n\n}\n\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap (\n str,\n expectsLowerCase\n) {\n var map = Object.create(null);\n var list = str.split(',');\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase\n ? function (val) { return map[val.toLowerCase()]; }\n : function (val) { return map[val]; }\n}\n\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n\n/**\n * Check if an attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n\n/**\n * Remove an item from an array.\n */\nfunction remove (arr, item) {\n if (arr.length) {\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1)\n }\n }\n}\n\n/**\n * Check whether an object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n return hasOwnProperty.call(obj, key)\n}\n\n/**\n * Create a cached version of a pure function.\n */\nfunction cached (fn) {\n var cache = Object.create(null);\n return (function cachedFn (str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str))\n })\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })\n});\n\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n});\n\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '-$1').toLowerCase()\n});\n\n/**\n * Simple bind polyfill for environments that do not support it,\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\n * since native bind is now performant enough in most browsers.\n * But removing it would mean breaking code that was able to run in\n * PhantomJS 1.x, so this must be kept for backward compatibility.\n */\n\n/* istanbul ignore next */\nfunction polyfillBind (fn, ctx) {\n function boundFn (a) {\n var l = arguments.length;\n return l\n ? l > 1\n ? fn.apply(ctx, arguments)\n : fn.call(ctx, a)\n : fn.call(ctx)\n }\n\n boundFn._length = fn.length;\n return boundFn\n}\n\nfunction nativeBind (fn, ctx) {\n return fn.bind(ctx)\n}\n\nvar bind = Function.prototype.bind\n ? nativeBind\n : polyfillBind;\n\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray (list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret\n}\n\n/**\n * Mix properties into target object.\n */\nfunction extend (to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n return to\n}\n\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject (arr) {\n var res = {};\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n return res\n}\n\n/* eslint-disable no-unused-vars */\n\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\n */\nfunction noop (a, b, c) {}\n\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n\n/* eslint-enable no-unused-vars */\n\n/**\n * Return the same value.\n */\nvar identity = function (_) { return _; };\n\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual (a, b) {\n if (a === b) { return true }\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n if (isArrayA && isArrayB) {\n return a.length === b.length && a.every(function (e, i) {\n return looseEqual(e, b[i])\n })\n } else if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime()\n } else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return keysA.length === keysB.length && keysA.every(function (key) {\n return looseEqual(a[key], b[key])\n })\n } else {\n /* istanbul ignore next */\n return false\n }\n } catch (e) {\n /* istanbul ignore next */\n return false\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b)\n } else {\n return false\n }\n}\n\n/**\n * Return the first index at which a loosely equal value can be\n * found in the array (if value is a plain object, the array must\n * contain an object of the same shape), or -1 if it is not present.\n */\nfunction looseIndexOf (arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val)) { return i }\n }\n return -1\n}\n\n/**\n * Ensure a function is called only once.\n */\nfunction once (fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n }\n}\n\nvar SSR_ATTR = 'data-server-rendered';\n\nvar ASSET_TYPES = [\n 'component',\n 'directive',\n 'filter'\n];\n\nvar LIFECYCLE_HOOKS = [\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeDestroy',\n 'destroyed',\n 'activated',\n 'deactivated',\n 'errorCaptured',\n 'serverPrefetch'\n];\n\n/* */\n\n\n\nvar config = ({\n /**\n * Option merge strategies (used in core/util/options)\n */\n // $flow-disable-line\n optionMergeStrategies: Object.create(null),\n\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n\n /**\n * Show production mode tip message on boot?\n */\n productionTip: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to enable devtools\n */\n devtools: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to record perf\n */\n performance: false,\n\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n\n /**\n * Warn handler for watcher warns\n */\n warnHandler: null,\n\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n\n /**\n * Custom user key aliases for v-on\n */\n // $flow-disable-line\n keyCodes: Object.create(null),\n\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n\n /**\n * Perform updates asynchronously. Intended to be used by Vue Test Utils\n * This will significantly reduce performance if set to false.\n */\n async: true,\n\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n});\n\n/* */\n\n/**\n * unicode letters used for parsing html tags, component names and property paths.\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\n */\nvar unicodeRegExp = /a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;\n\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved (str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5F\n}\n\n/**\n * Define a property.\n */\nfunction def (obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n}\n\n/**\n * Parse simple path.\n */\nvar bailRE = new RegExp((\"[^\" + (unicodeRegExp.source) + \".$_\\\\d]\"));\nfunction parsePath (path) {\n if (bailRE.test(path)) {\n return\n }\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj) { return }\n obj = obj[segments[i]];\n }\n return obj\n }\n}\n\n/* */\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;\nvar weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nvar isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');\nvar isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');\nvar isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\nvar isPhantomJS = UA && /phantomjs/.test(UA);\nvar isFF = UA && UA.match(/firefox\\/(\\d+)/);\n\n// Firefox has a \"watch\" function on Object.prototype...\nvar nativeWatch = ({}).watch;\n\nvar supportsPassive = false;\nif (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', ({\n get: function get () {\n /* istanbul ignore next */\n supportsPassive = true;\n }\n })); // https://github.com/facebook/flow/issues/285\n window.addEventListener('test-passive', null, opts);\n } catch (e) {}\n}\n\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && !inWeex && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer = global['process'] && global['process'].env.VUE_ENV === 'server';\n } else {\n _isServer = false;\n }\n }\n return _isServer\n};\n\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n/* istanbul ignore next */\nfunction isNative (Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString())\n}\n\nvar hasSymbol =\n typeof Symbol !== 'undefined' && isNative(Symbol) &&\n typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\nvar _Set;\n/* istanbul ignore if */ // $flow-disable-line\nif (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n} else {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = /*@__PURE__*/(function () {\n function Set () {\n this.set = Object.create(null);\n }\n Set.prototype.has = function has (key) {\n return this.set[key] === true\n };\n Set.prototype.add = function add (key) {\n this.set[key] = true;\n };\n Set.prototype.clear = function clear () {\n this.set = Object.create(null);\n };\n\n return Set;\n }());\n}\n\n/* */\n\nvar warn = noop;\nvar tip = noop;\nvar generateComponentTrace = (noop); // work around flow check\nvar formatComponentName = (noop);\n\nif (process.env.NODE_ENV !== 'production') {\n var hasConsole = typeof console !== 'undefined';\n var classifyRE = /(?:^|[-_])(\\w)/g;\n var classify = function (str) { return str\n .replace(classifyRE, function (c) { return c.toUpperCase(); })\n .replace(/[-_]/g, ''); };\n\n warn = function (msg, vm) {\n var trace = vm ? generateComponentTrace(vm) : '';\n\n if (config.warnHandler) {\n config.warnHandler.call(null, msg, vm, trace);\n } else if (hasConsole && (!config.silent)) {\n console.error((\"[Vue warn]: \" + msg + trace));\n }\n };\n\n tip = function (msg, vm) {\n if (hasConsole && (!config.silent)) {\n console.warn(\"[Vue tip]: \" + msg + (\n vm ? generateComponentTrace(vm) : ''\n ));\n }\n };\n\n formatComponentName = function (vm, includeFile) {\n if (vm.$root === vm) {\n return '<Root>'\n }\n var options = typeof vm === 'function' && vm.cid != null\n ? vm.options\n : vm._isVue\n ? vm.$options || vm.constructor.options\n : vm;\n var name = options.name || options._componentTag;\n var file = options.__file;\n if (!name && file) {\n var match = file.match(/([^/\\\\]+)\\.vue$/);\n name = match && match[1];\n }\n\n return (\n (name ? (\"<\" + (classify(name)) + \">\") : \"<Anonymous>\") +\n (file && includeFile !== false ? (\" at \" + file) : '')\n )\n };\n\n var repeat = function (str, n) {\n var res = '';\n while (n) {\n if (n % 2 === 1) { res += str; }\n if (n > 1) { str += str; }\n n >>= 1;\n }\n return res\n };\n\n generateComponentTrace = function (vm) {\n if (vm._isVue && vm.$parent) {\n var tree = [];\n var currentRecursiveSequence = 0;\n while (vm) {\n if (tree.length > 0) {\n var last = tree[tree.length - 1];\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence++;\n vm = vm.$parent;\n continue\n } else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence];\n currentRecursiveSequence = 0;\n }\n }\n tree.push(vm);\n vm = vm.$parent;\n }\n return '\\n\\nfound in\\n\\n' + tree\n .map(function (vm, i) { return (\"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)\n ? ((formatComponentName(vm[0])) + \"... (\" + (vm[1]) + \" recursive calls)\")\n : formatComponentName(vm))); })\n .join('\\n')\n } else {\n return (\"\\n\\n(found in \" + (formatComponentName(vm)) + \")\")\n }\n };\n}\n\n/* */\n\nvar uid = 0;\n\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\nvar Dep = function Dep () {\n this.id = uid++;\n this.subs = [];\n};\n\nDep.prototype.addSub = function addSub (sub) {\n this.subs.push(sub);\n};\n\nDep.prototype.removeSub = function removeSub (sub) {\n remove(this.subs, sub);\n};\n\nDep.prototype.depend = function depend () {\n if (Dep.target) {\n Dep.target.addDep(this);\n }\n};\n\nDep.prototype.notify = function notify () {\n // stabilize the subscriber list first\n var subs = this.subs.slice();\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n // subs aren't sorted in scheduler if not running async\n // we need to sort them now to make sure they fire in correct\n // order\n subs.sort(function (a, b) { return a.id - b.id; });\n }\n for (var i = 0, l = subs.length; i < l; i++) {\n subs[i].update();\n }\n};\n\n// The current target watcher being evaluated.\n// This is globally unique because only one watcher\n// can be evaluated at a time.\nDep.target = null;\nvar targetStack = [];\n\nfunction pushTarget (target) {\n targetStack.push(target);\n Dep.target = target;\n}\n\nfunction popTarget () {\n targetStack.pop();\n Dep.target = targetStack[targetStack.length - 1];\n}\n\n/* */\n\nvar VNode = function VNode (\n tag,\n data,\n children,\n text,\n elm,\n context,\n componentOptions,\n asyncFactory\n) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = undefined;\n this.context = context;\n this.fnContext = undefined;\n this.fnOptions = undefined;\n this.fnScopeId = undefined;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.componentInstance = undefined;\n this.parent = undefined;\n this.raw = false;\n this.isStatic = false;\n this.isRootInsert = true;\n this.isComment = false;\n this.isCloned = false;\n this.isOnce = false;\n this.asyncFactory = asyncFactory;\n this.asyncMeta = undefined;\n this.isAsyncPlaceholder = false;\n};\n\nvar prototypeAccessors = { child: { configurable: true } };\n\n// DEPRECATED: alias for componentInstance for backwards compat.\n/* istanbul ignore next */\nprototypeAccessors.child.get = function () {\n return this.componentInstance\n};\n\nObject.defineProperties( VNode.prototype, prototypeAccessors );\n\nvar createEmptyVNode = function (text) {\n if ( text === void 0 ) text = '';\n\n var node = new VNode();\n node.text = text;\n node.isComment = true;\n return node\n};\n\nfunction createTextVNode (val) {\n return new VNode(undefined, undefined, undefined, String(val))\n}\n\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode (vnode) {\n var cloned = new VNode(\n vnode.tag,\n vnode.data,\n // #7975\n // clone children array to avoid mutating original in case of cloning\n // a child.\n vnode.children && vnode.children.slice(),\n vnode.text,\n vnode.elm,\n vnode.context,\n vnode.componentOptions,\n vnode.asyncFactory\n );\n cloned.ns = vnode.ns;\n cloned.isStatic = vnode.isStatic;\n cloned.key = vnode.key;\n cloned.isComment = vnode.isComment;\n cloned.fnContext = vnode.fnContext;\n cloned.fnOptions = vnode.fnOptions;\n cloned.fnScopeId = vnode.fnScopeId;\n cloned.asyncMeta = vnode.asyncMeta;\n cloned.isCloned = true;\n return cloned\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\n\nvar methodsToPatch = [\n 'push',\n 'pop',\n 'shift',\n 'unshift',\n 'splice',\n 'sort',\n 'reverse'\n];\n\n/**\n * Intercept mutating methods and emit events\n */\nmethodsToPatch.forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n switch (method) {\n case 'push':\n case 'unshift':\n inserted = args;\n break\n case 'splice':\n inserted = args.slice(2);\n break\n }\n if (inserted) { ob.observeArray(inserted); }\n // notify change\n ob.dep.notify();\n return result\n });\n});\n\n/* */\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\nvar shouldObserve = true;\n\nfunction toggleObserving (value) {\n shouldObserve = value;\n}\n\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\nvar Observer = function Observer (value) {\n this.value = value;\n this.dep = new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n if (Array.isArray(value)) {\n if (hasProto) {\n protoAugment(value, arrayMethods);\n } else {\n copyAugment(value, arrayMethods, arrayKeys);\n }\n this.observeArray(value);\n } else {\n this.walk(value);\n }\n};\n\n/**\n * Walk through all properties and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\nObserver.prototype.walk = function walk (obj) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n defineReactive$$1(obj, keys[i]);\n }\n};\n\n/**\n * Observe a list of Array items.\n */\nObserver.prototype.observeArray = function observeArray (items) {\n for (var i = 0, l = items.length; i < l; i++) {\n observe(items[i]);\n }\n};\n\n// helpers\n\n/**\n * Augment a target Object or Array by intercepting\n * the prototype chain using __proto__\n */\nfunction protoAugment (target, src) {\n /* eslint-disable no-proto */\n target.__proto__ = src;\n /* eslint-enable no-proto */\n}\n\n/**\n * Augment a target Object or Array by defining\n * hidden properties.\n */\n/* istanbul ignore next */\nfunction copyAugment (target, src, keys) {\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n def(target, key, src[key]);\n }\n}\n\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe (value, asRootData) {\n if (!isObject(value) || value instanceof VNode) {\n return\n }\n var ob;\n if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n ob = value.__ob__;\n } else if (\n shouldObserve &&\n !isServerRendering() &&\n (Array.isArray(value) || isPlainObject(value)) &&\n Object.isExtensible(value) &&\n !value._isVue\n ) {\n ob = new Observer(value);\n }\n if (asRootData && ob) {\n ob.vmCount++;\n }\n return ob\n}\n\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive$$1 (\n obj,\n key,\n val,\n customSetter,\n shallow\n) {\n var dep = new Dep();\n\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return\n }\n\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n var setter = property && property.set;\n if ((!getter || setter) && arguments.length === 2) {\n val = obj[key];\n }\n\n var childOb = !shallow && observe(val);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter () {\n var value = getter ? getter.call(obj) : val;\n if (Dep.target) {\n dep.depend();\n if (childOb) {\n childOb.dep.depend();\n if (Array.isArray(value)) {\n dependArray(value);\n }\n }\n }\n return value\n },\n set: function reactiveSetter (newVal) {\n var value = getter ? getter.call(obj) : val;\n /* eslint-disable no-self-compare */\n if (newVal === value || (newVal !== newVal && value !== value)) {\n return\n }\n /* eslint-enable no-self-compare */\n if (process.env.NODE_ENV !== 'production' && customSetter) {\n customSetter();\n }\n // #7981: for accessor properties without setter\n if (getter && !setter) { return }\n if (setter) {\n setter.call(obj, newVal);\n } else {\n val = newVal;\n }\n childOb = !shallow && observe(newVal);\n dep.notify();\n }\n });\n}\n\n/**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\nfunction set (target, key, val) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot set reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.length = Math.max(target.length, key);\n target.splice(key, 1, val);\n return val\n }\n if (key in target && !(key in Object.prototype)) {\n target[key] = val;\n return val\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid adding reactive properties to a Vue instance or its root $data ' +\n 'at runtime - declare it upfront in the data option.'\n );\n return val\n }\n if (!ob) {\n target[key] = val;\n return val\n }\n defineReactive$$1(ob.value, key, val);\n ob.dep.notify();\n return val\n}\n\n/**\n * Delete a property and trigger change if necessary.\n */\nfunction del (target, key) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot delete reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.splice(key, 1);\n return\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid deleting properties on a Vue instance or its root $data ' +\n '- just set it to null.'\n );\n return\n }\n if (!hasOwn(target, key)) {\n return\n }\n delete target[key];\n if (!ob) {\n return\n }\n ob.dep.notify();\n}\n\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray (value) {\n for (var e = (void 0), i = 0, l = value.length; i < l; i++) {\n e = value[i];\n e && e.__ob__ && e.__ob__.dep.depend();\n if (Array.isArray(e)) {\n dependArray(e);\n }\n }\n}\n\n/* */\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\nvar strats = config.optionMergeStrategies;\n\n/**\n * Options with restrictions\n */\nif (process.env.NODE_ENV !== 'production') {\n strats.el = strats.propsData = function (parent, child, vm, key) {\n if (!vm) {\n warn(\n \"option \\\"\" + key + \"\\\" can only be used during instance \" +\n 'creation with the `new` keyword.'\n );\n }\n return defaultStrat(parent, child)\n };\n}\n\n/**\n * Helper that recursively merges two data objects together.\n */\nfunction mergeData (to, from) {\n if (!from) { return to }\n var key, toVal, fromVal;\n\n var keys = hasSymbol\n ? Reflect.ownKeys(from)\n : Object.keys(from);\n\n for (var i = 0; i < keys.length; i++) {\n key = keys[i];\n // in case the object is already observed...\n if (key === '__ob__') { continue }\n toVal = to[key];\n fromVal = from[key];\n if (!hasOwn(to, key)) {\n set(to, key, fromVal);\n } else if (\n toVal !== fromVal &&\n isPlainObject(toVal) &&\n isPlainObject(fromVal)\n ) {\n mergeData(toVal, fromVal);\n }\n }\n return to\n}\n\n/**\n * Data\n */\nfunction mergeDataOrFn (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n // in a Vue.extend merge, both should be functions\n if (!childVal) {\n return parentVal\n }\n if (!parentVal) {\n return childVal\n }\n // when parentVal & childVal are both present,\n // we need to return a function that returns the\n // merged result of both functions... no need to\n // check if parentVal is a function here because\n // it has to be a function to pass previous merges.\n return function mergedDataFn () {\n return mergeData(\n typeof childVal === 'function' ? childVal.call(this, this) : childVal,\n typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal\n )\n }\n } else {\n return function mergedInstanceDataFn () {\n // instance merge\n var instanceData = typeof childVal === 'function'\n ? childVal.call(vm, vm)\n : childVal;\n var defaultData = typeof parentVal === 'function'\n ? parentVal.call(vm, vm)\n : parentVal;\n if (instanceData) {\n return mergeData(instanceData, defaultData)\n } else {\n return defaultData\n }\n }\n }\n}\n\nstrats.data = function (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n if (childVal && typeof childVal !== 'function') {\n process.env.NODE_ENV !== 'production' && warn(\n 'The \"data\" option should be a function ' +\n 'that returns a per-instance value in component ' +\n 'definitions.',\n vm\n );\n\n return parentVal\n }\n return mergeDataOrFn(parentVal, childVal)\n }\n\n return mergeDataOrFn(parentVal, childVal, vm)\n};\n\n/**\n * Hooks and props are merged as arrays.\n */\nfunction mergeHook (\n parentVal,\n childVal\n) {\n var res = childVal\n ? parentVal\n ? parentVal.concat(childVal)\n : Array.isArray(childVal)\n ? childVal\n : [childVal]\n : parentVal;\n return res\n ? dedupeHooks(res)\n : res\n}\n\nfunction dedupeHooks (hooks) {\n var res = [];\n for (var i = 0; i < hooks.length; i++) {\n if (res.indexOf(hooks[i]) === -1) {\n res.push(hooks[i]);\n }\n }\n return res\n}\n\nLIFECYCLE_HOOKS.forEach(function (hook) {\n strats[hook] = mergeHook;\n});\n\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\nfunction mergeAssets (\n parentVal,\n childVal,\n vm,\n key\n) {\n var res = Object.create(parentVal || null);\n if (childVal) {\n process.env.NODE_ENV !== 'production' && assertObjectType(key, childVal, vm);\n return extend(res, childVal)\n } else {\n return res\n }\n}\n\nASSET_TYPES.forEach(function (type) {\n strats[type + 's'] = mergeAssets;\n});\n\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\nstrats.watch = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n // work around Firefox's Object.prototype.watch...\n if (parentVal === nativeWatch) { parentVal = undefined; }\n if (childVal === nativeWatch) { childVal = undefined; }\n /* istanbul ignore if */\n if (!childVal) { return Object.create(parentVal || null) }\n if (process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = {};\n extend(ret, parentVal);\n for (var key$1 in childVal) {\n var parent = ret[key$1];\n var child = childVal[key$1];\n if (parent && !Array.isArray(parent)) {\n parent = [parent];\n }\n ret[key$1] = parent\n ? parent.concat(child)\n : Array.isArray(child) ? child : [child];\n }\n return ret\n};\n\n/**\n * Other object hashes.\n */\nstrats.props =\nstrats.methods =\nstrats.inject =\nstrats.computed = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n if (childVal && process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = Object.create(null);\n extend(ret, parentVal);\n if (childVal) { extend(ret, childVal); }\n return ret\n};\nstrats.provide = mergeDataOrFn;\n\n/**\n * Default strategy.\n */\nvar defaultStrat = function (parentVal, childVal) {\n return childVal === undefined\n ? parentVal\n : childVal\n};\n\n/**\n * Validate component names\n */\nfunction checkComponents (options) {\n for (var key in options.components) {\n validateComponentName(key);\n }\n}\n\nfunction validateComponentName (name) {\n if (!new RegExp((\"^[a-zA-Z][\\\\-\\\\.0-9_\" + (unicodeRegExp.source) + \"]*$\")).test(name)) {\n warn(\n 'Invalid component name: \"' + name + '\". Component names ' +\n 'should conform to valid custom element name in html5 specification.'\n );\n }\n if (isBuiltInTag(name) || config.isReservedTag(name)) {\n warn(\n 'Do not use built-in or reserved HTML elements as component ' +\n 'id: ' + name\n );\n }\n}\n\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\nfunction normalizeProps (options, vm) {\n var props = options.props;\n if (!props) { return }\n var res = {};\n var i, val, name;\n if (Array.isArray(props)) {\n i = props.length;\n while (i--) {\n val = props[i];\n if (typeof val === 'string') {\n name = camelize(val);\n res[name] = { type: null };\n } else if (process.env.NODE_ENV !== 'production') {\n warn('props must be strings when using array syntax.');\n }\n }\n } else if (isPlainObject(props)) {\n for (var key in props) {\n val = props[key];\n name = camelize(key);\n res[name] = isPlainObject(val)\n ? val\n : { type: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"props\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(props)) + \".\",\n vm\n );\n }\n options.props = res;\n}\n\n/**\n * Normalize all injections into Object-based format\n */\nfunction normalizeInject (options, vm) {\n var inject = options.inject;\n if (!inject) { return }\n var normalized = options.inject = {};\n if (Array.isArray(inject)) {\n for (var i = 0; i < inject.length; i++) {\n normalized[inject[i]] = { from: inject[i] };\n }\n } else if (isPlainObject(inject)) {\n for (var key in inject) {\n var val = inject[key];\n normalized[key] = isPlainObject(val)\n ? extend({ from: key }, val)\n : { from: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(inject)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Normalize raw function directives into object format.\n */\nfunction normalizeDirectives (options) {\n var dirs = options.directives;\n if (dirs) {\n for (var key in dirs) {\n var def$$1 = dirs[key];\n if (typeof def$$1 === 'function') {\n dirs[key] = { bind: def$$1, update: def$$1 };\n }\n }\n }\n}\n\nfunction assertObjectType (name, value, vm) {\n if (!isPlainObject(value)) {\n warn(\n \"Invalid value for option \\\"\" + name + \"\\\": expected an Object, \" +\n \"but got \" + (toRawType(value)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\nfunction mergeOptions (\n parent,\n child,\n vm\n) {\n if (process.env.NODE_ENV !== 'production') {\n checkComponents(child);\n }\n\n if (typeof child === 'function') {\n child = child.options;\n }\n\n normalizeProps(child, vm);\n normalizeInject(child, vm);\n normalizeDirectives(child);\n\n // Apply extends and mixins on the child options,\n // but only if it is a raw options object that isn't\n // the result of another mergeOptions call.\n // Only merged options has the _base property.\n if (!child._base) {\n if (child.extends) {\n parent = mergeOptions(parent, child.extends, vm);\n }\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n }\n\n var options = {};\n var key;\n for (key in parent) {\n mergeField(key);\n }\n for (key in child) {\n if (!hasOwn(parent, key)) {\n mergeField(key);\n }\n }\n function mergeField (key) {\n var strat = strats[key] || defaultStrat;\n options[key] = strat(parent[key], child[key], vm, key);\n }\n return options\n}\n\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\nfunction resolveAsset (\n options,\n type,\n id,\n warnMissing\n) {\n /* istanbul ignore if */\n if (typeof id !== 'string') {\n return\n }\n var assets = options[type];\n // check local registration variations first\n if (hasOwn(assets, id)) { return assets[id] }\n var camelizedId = camelize(id);\n if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }\n var PascalCaseId = capitalize(camelizedId);\n if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }\n // fallback to prototype chain\n var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {\n warn(\n 'Failed to resolve ' + type.slice(0, -1) + ': ' + id,\n options\n );\n }\n return res\n}\n\n/* */\n\n\n\nfunction validateProp (\n key,\n propOptions,\n propsData,\n vm\n) {\n var prop = propOptions[key];\n var absent = !hasOwn(propsData, key);\n var value = propsData[key];\n // boolean casting\n var booleanIndex = getTypeIndex(Boolean, prop.type);\n if (booleanIndex > -1) {\n if (absent && !hasOwn(prop, 'default')) {\n value = false;\n } else if (value === '' || value === hyphenate(key)) {\n // only cast empty string / same name to boolean if\n // boolean has higher priority\n var stringIndex = getTypeIndex(String, prop.type);\n if (stringIndex < 0 || booleanIndex < stringIndex) {\n value = true;\n }\n }\n }\n // check default value\n if (value === undefined) {\n value = getPropDefaultValue(vm, prop, key);\n // since the default value is a fresh copy,\n // make sure to observe it.\n var prevShouldObserve = shouldObserve;\n toggleObserving(true);\n observe(value);\n toggleObserving(prevShouldObserve);\n }\n if (\n process.env.NODE_ENV !== 'production' &&\n // skip validation for weex recycle-list child component props\n !(false)\n ) {\n assertProp(prop, key, value, vm, absent);\n }\n return value\n}\n\n/**\n * Get the default value of a prop.\n */\nfunction getPropDefaultValue (vm, prop, key) {\n // no default, return undefined\n if (!hasOwn(prop, 'default')) {\n return undefined\n }\n var def = prop.default;\n // warn against non-factory defaults for Object & Array\n if (process.env.NODE_ENV !== 'production' && isObject(def)) {\n warn(\n 'Invalid default value for prop \"' + key + '\": ' +\n 'Props with type Object/Array must use a factory function ' +\n 'to return the default value.',\n vm\n );\n }\n // the raw prop value was also undefined from previous render,\n // return previous default value to avoid unnecessary watcher trigger\n if (vm && vm.$options.propsData &&\n vm.$options.propsData[key] === undefined &&\n vm._props[key] !== undefined\n ) {\n return vm._props[key]\n }\n // call factory function for non-Function types\n // a value is Function if its prototype is function even across different execution context\n return typeof def === 'function' && getType(prop.type) !== 'Function'\n ? def.call(vm)\n : def\n}\n\n/**\n * Assert whether a prop is valid.\n */\nfunction assertProp (\n prop,\n name,\n value,\n vm,\n absent\n) {\n if (prop.required && absent) {\n warn(\n 'Missing required prop: \"' + name + '\"',\n vm\n );\n return\n }\n if (value == null && !prop.required) {\n return\n }\n var type = prop.type;\n var valid = !type || type === true;\n var expectedTypes = [];\n if (type) {\n if (!Array.isArray(type)) {\n type = [type];\n }\n for (var i = 0; i < type.length && !valid; i++) {\n var assertedType = assertType(value, type[i]);\n expectedTypes.push(assertedType.expectedType || '');\n valid = assertedType.valid;\n }\n }\n\n if (!valid) {\n warn(\n getInvalidTypeMessage(name, value, expectedTypes),\n vm\n );\n return\n }\n var validator = prop.validator;\n if (validator) {\n if (!validator(value)) {\n warn(\n 'Invalid prop: custom validator check failed for prop \"' + name + '\".',\n vm\n );\n }\n }\n}\n\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;\n\nfunction assertType (value, type) {\n var valid;\n var expectedType = getType(type);\n if (simpleCheckRE.test(expectedType)) {\n var t = typeof value;\n valid = t === expectedType.toLowerCase();\n // for primitive wrapper objects\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n } else if (expectedType === 'Object') {\n valid = isPlainObject(value);\n } else if (expectedType === 'Array') {\n valid = Array.isArray(value);\n } else {\n valid = value instanceof type;\n }\n return {\n valid: valid,\n expectedType: expectedType\n }\n}\n\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\nfunction getType (fn) {\n var match = fn && fn.toString().match(/^\\s*function (\\w+)/);\n return match ? match[1] : ''\n}\n\nfunction isSameType (a, b) {\n return getType(a) === getType(b)\n}\n\nfunction getTypeIndex (type, expectedTypes) {\n if (!Array.isArray(expectedTypes)) {\n return isSameType(expectedTypes, type) ? 0 : -1\n }\n for (var i = 0, len = expectedTypes.length; i < len; i++) {\n if (isSameType(expectedTypes[i], type)) {\n return i\n }\n }\n return -1\n}\n\nfunction getInvalidTypeMessage (name, value, expectedTypes) {\n var message = \"Invalid prop: type check failed for prop \\\"\" + name + \"\\\".\" +\n \" Expected \" + (expectedTypes.map(capitalize).join(', '));\n var expectedType = expectedTypes[0];\n var receivedType = toRawType(value);\n var expectedValue = styleValue(value, expectedType);\n var receivedValue = styleValue(value, receivedType);\n // check if we need to specify expected value\n if (expectedTypes.length === 1 &&\n isExplicable(expectedType) &&\n !isBoolean(expectedType, receivedType)) {\n message += \" with value \" + expectedValue;\n }\n message += \", got \" + receivedType + \" \";\n // check if we need to specify received value\n if (isExplicable(receivedType)) {\n message += \"with value \" + receivedValue + \".\";\n }\n return message\n}\n\nfunction styleValue (value, type) {\n if (type === 'String') {\n return (\"\\\"\" + value + \"\\\"\")\n } else if (type === 'Number') {\n return (\"\" + (Number(value)))\n } else {\n return (\"\" + value)\n }\n}\n\nfunction isExplicable (value) {\n var explicitTypes = ['string', 'number', 'boolean'];\n return explicitTypes.some(function (elem) { return value.toLowerCase() === elem; })\n}\n\nfunction isBoolean () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; })\n}\n\n/* */\n\nfunction handleError (err, vm, info) {\n // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.\n // See: https://github.com/vuejs/vuex/issues/1505\n pushTarget();\n try {\n if (vm) {\n var cur = vm;\n while ((cur = cur.$parent)) {\n var hooks = cur.$options.errorCaptured;\n if (hooks) {\n for (var i = 0; i < hooks.length; i++) {\n try {\n var capture = hooks[i].call(cur, err, vm, info) === false;\n if (capture) { return }\n } catch (e) {\n globalHandleError(e, cur, 'errorCaptured hook');\n }\n }\n }\n }\n }\n globalHandleError(err, vm, info);\n } finally {\n popTarget();\n }\n}\n\nfunction invokeWithErrorHandling (\n handler,\n context,\n args,\n vm,\n info\n) {\n var res;\n try {\n res = args ? handler.apply(context, args) : handler.call(context);\n if (res && !res._isVue && isPromise(res) && !res._handled) {\n res.catch(function (e) { return handleError(e, vm, info + \" (Promise/async)\"); });\n // issue #9511\n // avoid catch triggering multiple times when nested calls\n res._handled = true;\n }\n } catch (e) {\n handleError(e, vm, info);\n }\n return res\n}\n\nfunction globalHandleError (err, vm, info) {\n if (config.errorHandler) {\n try {\n return config.errorHandler.call(null, err, vm, info)\n } catch (e) {\n // if the user intentionally throws the original error in the handler,\n // do not log it twice\n if (e !== err) {\n logError(e, null, 'config.errorHandler');\n }\n }\n }\n logError(err, vm, info);\n}\n\nfunction logError (err, vm, info) {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n }\n /* istanbul ignore else */\n if ((inBrowser || inWeex) && typeof console !== 'undefined') {\n console.error(err);\n } else {\n throw err\n }\n}\n\n/* */\n\nvar isUsingMicroTask = false;\n\nvar callbacks = [];\nvar pending = false;\n\nfunction flushCallbacks () {\n pending = false;\n var copies = callbacks.slice(0);\n callbacks.length = 0;\n for (var i = 0; i < copies.length; i++) {\n copies[i]();\n }\n}\n\n// Here we have async deferring wrappers using microtasks.\n// In 2.5 we used (macro) tasks (in combination with microtasks).\n// However, it has subtle problems when state is changed right before repaint\n// (e.g. #6813, out-in transitions).\n// Also, using (macro) tasks in event handler would cause some weird behaviors\n// that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).\n// So we now use microtasks everywhere, again.\n// A major drawback of this tradeoff is that there are some scenarios\n// where microtasks have too high a priority and fire in between supposedly\n// sequential events (e.g. #4521, #6690, which have workarounds)\n// or even between bubbling of the same event (#6566).\nvar timerFunc;\n\n// The nextTick behavior leverages the microtask queue, which can be accessed\n// via either native Promise.then or MutationObserver.\n// MutationObserver has wider support, however it is seriously bugged in\n// UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It\n// completely stops working after triggering a few times... so, if native\n// Promise is available, we will use it:\n/* istanbul ignore next, $flow-disable-line */\nif (typeof Promise !== 'undefined' && isNative(Promise)) {\n var p = Promise.resolve();\n timerFunc = function () {\n p.then(flushCallbacks);\n // In problematic UIWebViews, Promise.then doesn't completely break, but\n // it can get stuck in a weird state where callbacks are pushed into the\n // microtask queue but the queue isn't being flushed, until the browser\n // needs to do some other work, e.g. handle a timer. Therefore we can\n // \"force\" the microtask queue to be flushed by adding an empty timer.\n if (isIOS) { setTimeout(noop); }\n };\n isUsingMicroTask = true;\n} else if (!isIE && typeof MutationObserver !== 'undefined' && (\n isNative(MutationObserver) ||\n // PhantomJS and iOS 7.x\n MutationObserver.toString() === '[object MutationObserverConstructor]'\n)) {\n // Use MutationObserver where native Promise is not available,\n // e.g. PhantomJS, iOS7, Android 4.4\n // (#6466 MutationObserver is unreliable in IE11)\n var counter = 1;\n var observer = new MutationObserver(flushCallbacks);\n var textNode = document.createTextNode(String(counter));\n observer.observe(textNode, {\n characterData: true\n });\n timerFunc = function () {\n counter = (counter + 1) % 2;\n textNode.data = String(counter);\n };\n isUsingMicroTask = true;\n} else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n // Fallback to setImmediate.\n // Techinically it leverages the (macro) task queue,\n // but it is still a better choice than setTimeout.\n timerFunc = function () {\n setImmediate(flushCallbacks);\n };\n} else {\n // Fallback to setTimeout.\n timerFunc = function () {\n setTimeout(flushCallbacks, 0);\n };\n}\n\nfunction nextTick (cb, ctx) {\n var _resolve;\n callbacks.push(function () {\n if (cb) {\n try {\n cb.call(ctx);\n } catch (e) {\n handleError(e, ctx, 'nextTick');\n }\n } else if (_resolve) {\n _resolve(ctx);\n }\n });\n if (!pending) {\n pending = true;\n timerFunc();\n }\n // $flow-disable-line\n if (!cb && typeof Promise !== 'undefined') {\n return new Promise(function (resolve) {\n _resolve = resolve;\n })\n }\n}\n\n/* */\n\n/* not type checking this file because flow doesn't play well with Proxy */\n\nvar initProxy;\n\nif (process.env.NODE_ENV !== 'production') {\n var allowedGlobals = makeMap(\n 'Infinity,undefined,NaN,isFinite,isNaN,' +\n 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +\n 'require' // for Webpack/Browserify\n );\n\n var warnNonPresent = function (target, key) {\n warn(\n \"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" +\n 'referenced during render. Make sure that this property is reactive, ' +\n 'either in the data option, or for class-based components, by ' +\n 'initializing the property. ' +\n 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',\n target\n );\n };\n\n var warnReservedPrefix = function (target, key) {\n warn(\n \"Property \\\"\" + key + \"\\\" must be accessed with \\\"$data.\" + key + \"\\\" because \" +\n 'properties starting with \"$\" or \"_\" are not proxied in the Vue instance to ' +\n 'prevent conflicts with Vue internals' +\n 'See: https://vuejs.org/v2/api/#data',\n target\n );\n };\n\n var hasProxy =\n typeof Proxy !== 'undefined' && isNative(Proxy);\n\n if (hasProxy) {\n var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n config.keyCodes = new Proxy(config.keyCodes, {\n set: function set (target, key, value) {\n if (isBuiltInModifier(key)) {\n warn((\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key));\n return false\n } else {\n target[key] = value;\n return true\n }\n }\n });\n }\n\n var hasHandler = {\n has: function has (target, key) {\n var has = key in target;\n var isAllowed = allowedGlobals(key) ||\n (typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data));\n if (!has && !isAllowed) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return has || !isAllowed\n }\n };\n\n var getHandler = {\n get: function get (target, key) {\n if (typeof key === 'string' && !(key in target)) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return target[key]\n }\n };\n\n initProxy = function initProxy (vm) {\n if (hasProxy) {\n // determine which proxy handler to use\n var options = vm.$options;\n var handlers = options.render && options.render._withStripped\n ? getHandler\n : hasHandler;\n vm._renderProxy = new Proxy(vm, handlers);\n } else {\n vm._renderProxy = vm;\n }\n };\n}\n\n/* */\n\nvar seenObjects = new _Set();\n\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\nfunction traverse (val) {\n _traverse(val, seenObjects);\n seenObjects.clear();\n}\n\nfunction _traverse (val, seen) {\n var i, keys;\n var isA = Array.isArray(val);\n if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) {\n return\n }\n if (val.__ob__) {\n var depId = val.__ob__.dep.id;\n if (seen.has(depId)) {\n return\n }\n seen.add(depId);\n }\n if (isA) {\n i = val.length;\n while (i--) { _traverse(val[i], seen); }\n } else {\n keys = Object.keys(val);\n i = keys.length;\n while (i--) { _traverse(val[keys[i]], seen); }\n }\n}\n\nvar mark;\nvar measure;\n\nif (process.env.NODE_ENV !== 'production') {\n var perf = inBrowser && window.performance;\n /* istanbul ignore if */\n if (\n perf &&\n perf.mark &&\n perf.measure &&\n perf.clearMarks &&\n perf.clearMeasures\n ) {\n mark = function (tag) { return perf.mark(tag); };\n measure = function (name, startTag, endTag) {\n perf.measure(name, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n // perf.clearMeasures(name)\n };\n }\n}\n\n/* */\n\nvar normalizeEvent = cached(function (name) {\n var passive = name.charAt(0) === '&';\n name = passive ? name.slice(1) : name;\n var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n name = once$$1 ? name.slice(1) : name;\n var capture = name.charAt(0) === '!';\n name = capture ? name.slice(1) : name;\n return {\n name: name,\n once: once$$1,\n capture: capture,\n passive: passive\n }\n});\n\nfunction createFnInvoker (fns, vm) {\n function invoker () {\n var arguments$1 = arguments;\n\n var fns = invoker.fns;\n if (Array.isArray(fns)) {\n var cloned = fns.slice();\n for (var i = 0; i < cloned.length; i++) {\n invokeWithErrorHandling(cloned[i], null, arguments$1, vm, \"v-on handler\");\n }\n } else {\n // return handler return value for single handlers\n return invokeWithErrorHandling(fns, null, arguments, vm, \"v-on handler\")\n }\n }\n invoker.fns = fns;\n return invoker\n}\n\nfunction updateListeners (\n on,\n oldOn,\n add,\n remove$$1,\n createOnceHandler,\n vm\n) {\n var name, def$$1, cur, old, event;\n for (name in on) {\n def$$1 = cur = on[name];\n old = oldOn[name];\n event = normalizeEvent(name);\n if (isUndef(cur)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Invalid handler for event \\\"\" + (event.name) + \"\\\": got \" + String(cur),\n vm\n );\n } else if (isUndef(old)) {\n if (isUndef(cur.fns)) {\n cur = on[name] = createFnInvoker(cur, vm);\n }\n if (isTrue(event.once)) {\n cur = on[name] = createOnceHandler(event.name, cur, event.capture);\n }\n add(event.name, cur, event.capture, event.passive, event.params);\n } else if (cur !== old) {\n old.fns = cur;\n on[name] = old;\n }\n }\n for (name in oldOn) {\n if (isUndef(on[name])) {\n event = normalizeEvent(name);\n remove$$1(event.name, oldOn[name], event.capture);\n }\n }\n}\n\n/* */\n\nfunction mergeVNodeHook (def, hookKey, hook) {\n if (def instanceof VNode) {\n def = def.data.hook || (def.data.hook = {});\n }\n var invoker;\n var oldHook = def[hookKey];\n\n function wrappedHook () {\n hook.apply(this, arguments);\n // important: remove merged hook to ensure it's called only once\n // and prevent memory leak\n remove(invoker.fns, wrappedHook);\n }\n\n if (isUndef(oldHook)) {\n // no existing hook\n invoker = createFnInvoker([wrappedHook]);\n } else {\n /* istanbul ignore if */\n if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n // already a merged invoker\n invoker = oldHook;\n invoker.fns.push(wrappedHook);\n } else {\n // existing plain hook\n invoker = createFnInvoker([oldHook, wrappedHook]);\n }\n }\n\n invoker.merged = true;\n def[hookKey] = invoker;\n}\n\n/* */\n\nfunction extractPropsFromVNodeData (\n data,\n Ctor,\n tag\n) {\n // we are only extracting raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n if (isUndef(propOptions)) {\n return\n }\n var res = {};\n var attrs = data.attrs;\n var props = data.props;\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n if (process.env.NODE_ENV !== 'production') {\n var keyInLowerCase = key.toLowerCase();\n if (\n key !== keyInLowerCase &&\n attrs && hasOwn(attrs, keyInLowerCase)\n ) {\n tip(\n \"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" +\n (formatComponentName(tag || Ctor)) + \", but the declared prop name is\" +\n \" \\\"\" + key + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and camelCased \" +\n \"props need to use their kebab-case equivalents when using in-DOM \" +\n \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\"\n );\n }\n }\n checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n }\n }\n return res\n}\n\nfunction checkProp (\n res,\n hash,\n key,\n altKey,\n preserve\n) {\n if (isDef(hash)) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n if (!preserve) {\n delete hash[key];\n }\n return true\n } else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n if (!preserve) {\n delete hash[altKey];\n }\n return true\n }\n }\n return false\n}\n\n/* */\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array<VNode>. There are\n// two cases where extra normalization is needed:\n\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren (children) {\n for (var i = 0; i < children.length; i++) {\n if (Array.isArray(children[i])) {\n return Array.prototype.concat.apply([], children)\n }\n }\n return children\n}\n\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g. <template>, <slot>, v-for, or when the children is provided by user\n// with hand-written render functions / JSX. In such cases a full normalization\n// is needed to cater to all possible types of children values.\nfunction normalizeChildren (children) {\n return isPrimitive(children)\n ? [createTextVNode(children)]\n : Array.isArray(children)\n ? normalizeArrayChildren(children)\n : undefined\n}\n\nfunction isTextNode (node) {\n return isDef(node) && isDef(node.text) && isFalse(node.isComment)\n}\n\nfunction normalizeArrayChildren (children, nestedIndex) {\n var res = [];\n var i, c, lastIndex, last;\n for (i = 0; i < children.length; i++) {\n c = children[i];\n if (isUndef(c) || typeof c === 'boolean') { continue }\n lastIndex = res.length - 1;\n last = res[lastIndex];\n // nested\n if (Array.isArray(c)) {\n if (c.length > 0) {\n c = normalizeArrayChildren(c, ((nestedIndex || '') + \"_\" + i));\n // merge adjacent text nodes\n if (isTextNode(c[0]) && isTextNode(last)) {\n res[lastIndex] = createTextVNode(last.text + (c[0]).text);\n c.shift();\n }\n res.push.apply(res, c);\n }\n } else if (isPrimitive(c)) {\n if (isTextNode(last)) {\n // merge adjacent text nodes\n // this is necessary for SSR hydration because text nodes are\n // essentially merged when rendered to HTML strings\n res[lastIndex] = createTextVNode(last.text + c);\n } else if (c !== '') {\n // convert primitive to vnode\n res.push(createTextVNode(c));\n }\n } else {\n if (isTextNode(c) && isTextNode(last)) {\n // merge adjacent text nodes\n res[lastIndex] = createTextVNode(last.text + c.text);\n } else {\n // default key for nested array children (likely generated by v-for)\n if (isTrue(children._isVList) &&\n isDef(c.tag) &&\n isUndef(c.key) &&\n isDef(nestedIndex)) {\n c.key = \"__vlist\" + nestedIndex + \"_\" + i + \"__\";\n }\n res.push(c);\n }\n }\n }\n return res\n}\n\n/* */\n\nfunction initProvide (vm) {\n var provide = vm.$options.provide;\n if (provide) {\n vm._provided = typeof provide === 'function'\n ? provide.call(vm)\n : provide;\n }\n}\n\nfunction initInjections (vm) {\n var result = resolveInject(vm.$options.inject, vm);\n if (result) {\n toggleObserving(false);\n Object.keys(result).forEach(function (key) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n defineReactive$$1(vm, key, result[key], function () {\n warn(\n \"Avoid mutating an injected value directly since the changes will be \" +\n \"overwritten whenever the provided component re-renders. \" +\n \"injection being mutated: \\\"\" + key + \"\\\"\",\n vm\n );\n });\n } else {\n defineReactive$$1(vm, key, result[key]);\n }\n });\n toggleObserving(true);\n }\n}\n\nfunction resolveInject (inject, vm) {\n if (inject) {\n // inject is :any because flow is not smart enough to figure out cached\n var result = Object.create(null);\n var keys = hasSymbol\n ? Reflect.ownKeys(inject)\n : Object.keys(inject);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n // #6574 in case the inject object is observed...\n if (key === '__ob__') { continue }\n var provideKey = inject[key].from;\n var source = vm;\n while (source) {\n if (source._provided && hasOwn(source._provided, provideKey)) {\n result[key] = source._provided[provideKey];\n break\n }\n source = source.$parent;\n }\n if (!source) {\n if ('default' in inject[key]) {\n var provideDefault = inject[key].default;\n result[key] = typeof provideDefault === 'function'\n ? provideDefault.call(vm)\n : provideDefault;\n } else if (process.env.NODE_ENV !== 'production') {\n warn((\"Injection \\\"\" + key + \"\\\" not found\"), vm);\n }\n }\n }\n return result\n }\n}\n\n/* */\n\n\n\n/**\n * Runtime helper for resolving raw children VNodes into a slot object.\n */\nfunction resolveSlots (\n children,\n context\n) {\n if (!children || !children.length) {\n return {}\n }\n var slots = {};\n for (var i = 0, l = children.length; i < l; i++) {\n var child = children[i];\n var data = child.data;\n // remove slot attribute if the node is resolved as a Vue slot node\n if (data && data.attrs && data.attrs.slot) {\n delete data.attrs.slot;\n }\n // named slots should only be respected if the vnode was rendered in the\n // same context.\n if ((child.context === context || child.fnContext === context) &&\n data && data.slot != null\n ) {\n var name = data.slot;\n var slot = (slots[name] || (slots[name] = []));\n if (child.tag === 'template') {\n slot.push.apply(slot, child.children || []);\n } else {\n slot.push(child);\n }\n } else {\n (slots.default || (slots.default = [])).push(child);\n }\n }\n // ignore slots that contains only whitespace\n for (var name$1 in slots) {\n if (slots[name$1].every(isWhitespace)) {\n delete slots[name$1];\n }\n }\n return slots\n}\n\nfunction isWhitespace (node) {\n return (node.isComment && !node.asyncFactory) || node.text === ' '\n}\n\n/* */\n\nfunction normalizeScopedSlots (\n slots,\n normalSlots,\n prevSlots\n) {\n var res;\n var hasNormalSlots = Object.keys(normalSlots).length > 0;\n var isStable = slots ? !!slots.$stable : !hasNormalSlots;\n var key = slots && slots.$key;\n if (!slots) {\n res = {};\n } else if (slots._normalized) {\n // fast path 1: child component re-render only, parent did not change\n return slots._normalized\n } else if (\n isStable &&\n prevSlots &&\n prevSlots !== emptyObject &&\n key === prevSlots.$key &&\n !hasNormalSlots &&\n !prevSlots.$hasNormal\n ) {\n // fast path 2: stable scoped slots w/ no normal slots to proxy,\n // only need to normalize once\n return prevSlots\n } else {\n res = {};\n for (var key$1 in slots) {\n if (slots[key$1] && key$1[0] !== '$') {\n res[key$1] = normalizeScopedSlot(normalSlots, key$1, slots[key$1]);\n }\n }\n }\n // expose normal slots on scopedSlots\n for (var key$2 in normalSlots) {\n if (!(key$2 in res)) {\n res[key$2] = proxyNormalSlot(normalSlots, key$2);\n }\n }\n // avoriaz seems to mock a non-extensible $scopedSlots object\n // and when that is passed down this would cause an error\n if (slots && Object.isExtensible(slots)) {\n (slots)._normalized = res;\n }\n def(res, '$stable', isStable);\n def(res, '$key', key);\n def(res, '$hasNormal', hasNormalSlots);\n return res\n}\n\nfunction normalizeScopedSlot(normalSlots, key, fn) {\n var normalized = function () {\n var res = arguments.length ? fn.apply(null, arguments) : fn({});\n res = res && typeof res === 'object' && !Array.isArray(res)\n ? [res] // single vnode\n : normalizeChildren(res);\n return res && (\n res.length === 0 ||\n (res.length === 1 && res[0].isComment) // #9658\n ) ? undefined\n : res\n };\n // this is a slot using the new v-slot syntax without scope. although it is\n // compiled as a scoped slot, render fn users would expect it to be present\n // on this.$slots because the usage is semantically a normal slot.\n if (fn.proxy) {\n Object.defineProperty(normalSlots, key, {\n get: normalized,\n enumerable: true,\n configurable: true\n });\n }\n return normalized\n}\n\nfunction proxyNormalSlot(slots, key) {\n return function () { return slots[key]; }\n}\n\n/* */\n\n/**\n * Runtime helper for rendering v-for lists.\n */\nfunction renderList (\n val,\n render\n) {\n var ret, i, l, keys, key;\n if (Array.isArray(val) || typeof val === 'string') {\n ret = new Array(val.length);\n for (i = 0, l = val.length; i < l; i++) {\n ret[i] = render(val[i], i);\n }\n } else if (typeof val === 'number') {\n ret = new Array(val);\n for (i = 0; i < val; i++) {\n ret[i] = render(i + 1, i);\n }\n } else if (isObject(val)) {\n if (hasSymbol && val[Symbol.iterator]) {\n ret = [];\n var iterator = val[Symbol.iterator]();\n var result = iterator.next();\n while (!result.done) {\n ret.push(render(result.value, ret.length));\n result = iterator.next();\n }\n } else {\n keys = Object.keys(val);\n ret = new Array(keys.length);\n for (i = 0, l = keys.length; i < l; i++) {\n key = keys[i];\n ret[i] = render(val[key], key, i);\n }\n }\n }\n if (!isDef(ret)) {\n ret = [];\n }\n (ret)._isVList = true;\n return ret\n}\n\n/* */\n\n/**\n * Runtime helper for rendering <slot>\n */\nfunction renderSlot (\n name,\n fallback,\n props,\n bindObject\n) {\n var scopedSlotFn = this.$scopedSlots[name];\n var nodes;\n if (scopedSlotFn) { // scoped slot\n props = props || {};\n if (bindObject) {\n if (process.env.NODE_ENV !== 'production' && !isObject(bindObject)) {\n warn(\n 'slot v-bind without argument expects an Object',\n this\n );\n }\n props = extend(extend({}, bindObject), props);\n }\n nodes = scopedSlotFn(props) || fallback;\n } else {\n nodes = this.$slots[name] || fallback;\n }\n\n var target = props && props.slot;\n if (target) {\n return this.$createElement('template', { slot: target }, nodes)\n } else {\n return nodes\n }\n}\n\n/* */\n\n/**\n * Runtime helper for resolving filters\n */\nfunction resolveFilter (id) {\n return resolveAsset(this.$options, 'filters', id, true) || identity\n}\n\n/* */\n\nfunction isKeyNotMatch (expect, actual) {\n if (Array.isArray(expect)) {\n return expect.indexOf(actual) === -1\n } else {\n return expect !== actual\n }\n}\n\n/**\n * Runtime helper for checking keyCodes from config.\n * exposed as Vue.prototype._k\n * passing in eventKeyName as last argument separately for backwards compat\n */\nfunction checkKeyCodes (\n eventKeyCode,\n key,\n builtInKeyCode,\n eventKeyName,\n builtInKeyName\n) {\n var mappedKeyCode = config.keyCodes[key] || builtInKeyCode;\n if (builtInKeyName && eventKeyName && !config.keyCodes[key]) {\n return isKeyNotMatch(builtInKeyName, eventKeyName)\n } else if (mappedKeyCode) {\n return isKeyNotMatch(mappedKeyCode, eventKeyCode)\n } else if (eventKeyName) {\n return hyphenate(eventKeyName) !== key\n }\n}\n\n/* */\n\n/**\n * Runtime helper for merging v-bind=\"object\" into a VNode's data.\n */\nfunction bindObjectProps (\n data,\n tag,\n value,\n asProp,\n isSync\n) {\n if (value) {\n if (!isObject(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'v-bind without argument expects an Object or Array value',\n this\n );\n } else {\n if (Array.isArray(value)) {\n value = toObject(value);\n }\n var hash;\n var loop = function ( key ) {\n if (\n key === 'class' ||\n key === 'style' ||\n isReservedAttribute(key)\n ) {\n hash = data;\n } else {\n var type = data.attrs && data.attrs.type;\n hash = asProp || config.mustUseProp(tag, type, key)\n ? data.domProps || (data.domProps = {})\n : data.attrs || (data.attrs = {});\n }\n var camelizedKey = camelize(key);\n var hyphenatedKey = hyphenate(key);\n if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) {\n hash[key] = value[key];\n\n if (isSync) {\n var on = data.on || (data.on = {});\n on[(\"update:\" + key)] = function ($event) {\n value[key] = $event;\n };\n }\n }\n };\n\n for (var key in value) loop( key );\n }\n }\n return data\n}\n\n/* */\n\n/**\n * Runtime helper for rendering static trees.\n */\nfunction renderStatic (\n index,\n isInFor\n) {\n var cached = this._staticTrees || (this._staticTrees = []);\n var tree = cached[index];\n // if has already-rendered static tree and not inside v-for,\n // we can reuse the same tree.\n if (tree && !isInFor) {\n return tree\n }\n // otherwise, render a fresh tree.\n tree = cached[index] = this.$options.staticRenderFns[index].call(\n this._renderProxy,\n null,\n this // for render fns generated for functional component templates\n );\n markStatic(tree, (\"__static__\" + index), false);\n return tree\n}\n\n/**\n * Runtime helper for v-once.\n * Effectively it means marking the node as static with a unique key.\n */\nfunction markOnce (\n tree,\n index,\n key\n) {\n markStatic(tree, (\"__once__\" + index + (key ? (\"_\" + key) : \"\")), true);\n return tree\n}\n\nfunction markStatic (\n tree,\n key,\n isOnce\n) {\n if (Array.isArray(tree)) {\n for (var i = 0; i < tree.length; i++) {\n if (tree[i] && typeof tree[i] !== 'string') {\n markStaticNode(tree[i], (key + \"_\" + i), isOnce);\n }\n }\n } else {\n markStaticNode(tree, key, isOnce);\n }\n}\n\nfunction markStaticNode (node, key, isOnce) {\n node.isStatic = true;\n node.key = key;\n node.isOnce = isOnce;\n}\n\n/* */\n\nfunction bindObjectListeners (data, value) {\n if (value) {\n if (!isPlainObject(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'v-on without argument expects an Object value',\n this\n );\n } else {\n var on = data.on = data.on ? extend({}, data.on) : {};\n for (var key in value) {\n var existing = on[key];\n var ours = value[key];\n on[key] = existing ? [].concat(existing, ours) : ours;\n }\n }\n }\n return data\n}\n\n/* */\n\nfunction resolveScopedSlots (\n fns, // see flow/vnode\n res,\n // the following are added in 2.6\n hasDynamicKeys,\n contentHashKey\n) {\n res = res || { $stable: !hasDynamicKeys };\n for (var i = 0; i < fns.length; i++) {\n var slot = fns[i];\n if (Array.isArray(slot)) {\n resolveScopedSlots(slot, res, hasDynamicKeys);\n } else if (slot) {\n // marker for reverse proxying v-slot without scope on this.$slots\n if (slot.proxy) {\n slot.fn.proxy = true;\n }\n res[slot.key] = slot.fn;\n }\n }\n if (contentHashKey) {\n (res).$key = contentHashKey;\n }\n return res\n}\n\n/* */\n\nfunction bindDynamicKeys (baseObj, values) {\n for (var i = 0; i < values.length; i += 2) {\n var key = values[i];\n if (typeof key === 'string' && key) {\n baseObj[values[i]] = values[i + 1];\n } else if (process.env.NODE_ENV !== 'production' && key !== '' && key !== null) {\n // null is a speical value for explicitly removing a binding\n warn(\n (\"Invalid value for dynamic directive argument (expected string or null): \" + key),\n this\n );\n }\n }\n return baseObj\n}\n\n// helper to dynamically append modifier runtime markers to event names.\n// ensure only append when value is already string, otherwise it will be cast\n// to string and cause the type check to miss.\nfunction prependModifier (value, symbol) {\n return typeof value === 'string' ? symbol + value : value\n}\n\n/* */\n\nfunction installRenderHelpers (target) {\n target._o = markOnce;\n target._n = toNumber;\n target._s = toString;\n target._l = renderList;\n target._t = renderSlot;\n target._q = looseEqual;\n target._i = looseIndexOf;\n target._m = renderStatic;\n target._f = resolveFilter;\n target._k = checkKeyCodes;\n target._b = bindObjectProps;\n target._v = createTextVNode;\n target._e = createEmptyVNode;\n target._u = resolveScopedSlots;\n target._g = bindObjectListeners;\n target._d = bindDynamicKeys;\n target._p = prependModifier;\n}\n\n/* */\n\nfunction FunctionalRenderContext (\n data,\n props,\n children,\n parent,\n Ctor\n) {\n var this$1 = this;\n\n var options = Ctor.options;\n // ensure the createElement function in functional components\n // gets a unique context - this is necessary for correct named slot check\n var contextVm;\n if (hasOwn(parent, '_uid')) {\n contextVm = Object.create(parent);\n // $flow-disable-line\n contextVm._original = parent;\n } else {\n // the context vm passed in is a functional context as well.\n // in this case we want to make sure we are able to get a hold to the\n // real context instance.\n contextVm = parent;\n // $flow-disable-line\n parent = parent._original;\n }\n var isCompiled = isTrue(options._compiled);\n var needNormalization = !isCompiled;\n\n this.data = data;\n this.props = props;\n this.children = children;\n this.parent = parent;\n this.listeners = data.on || emptyObject;\n this.injections = resolveInject(options.inject, parent);\n this.slots = function () {\n if (!this$1.$slots) {\n normalizeScopedSlots(\n data.scopedSlots,\n this$1.$slots = resolveSlots(children, parent)\n );\n }\n return this$1.$slots\n };\n\n Object.defineProperty(this, 'scopedSlots', ({\n enumerable: true,\n get: function get () {\n return normalizeScopedSlots(data.scopedSlots, this.slots())\n }\n }));\n\n // support for compiled functional template\n if (isCompiled) {\n // exposing $options for renderStatic()\n this.$options = options;\n // pre-resolve slots for renderSlot()\n this.$slots = this.slots();\n this.$scopedSlots = normalizeScopedSlots(data.scopedSlots, this.$slots);\n }\n\n if (options._scopeId) {\n this._c = function (a, b, c, d) {\n var vnode = createElement(contextVm, a, b, c, d, needNormalization);\n if (vnode && !Array.isArray(vnode)) {\n vnode.fnScopeId = options._scopeId;\n vnode.fnContext = parent;\n }\n return vnode\n };\n } else {\n this._c = function (a, b, c, d) { return createElement(contextVm, a, b, c, d, needNormalization); };\n }\n}\n\ninstallRenderHelpers(FunctionalRenderContext.prototype);\n\nfunction createFunctionalComponent (\n Ctor,\n propsData,\n data,\n contextVm,\n children\n) {\n var options = Ctor.options;\n var props = {};\n var propOptions = options.props;\n if (isDef(propOptions)) {\n for (var key in propOptions) {\n props[key] = validateProp(key, propOptions, propsData || emptyObject);\n }\n } else {\n if (isDef(data.attrs)) { mergeProps(props, data.attrs); }\n if (isDef(data.props)) { mergeProps(props, data.props); }\n }\n\n var renderContext = new FunctionalRenderContext(\n data,\n props,\n children,\n contextVm,\n Ctor\n );\n\n var vnode = options.render.call(null, renderContext._c, renderContext);\n\n if (vnode instanceof VNode) {\n return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options, renderContext)\n } else if (Array.isArray(vnode)) {\n var vnodes = normalizeChildren(vnode) || [];\n var res = new Array(vnodes.length);\n for (var i = 0; i < vnodes.length; i++) {\n res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options, renderContext);\n }\n return res\n }\n}\n\nfunction cloneAndMarkFunctionalResult (vnode, data, contextVm, options, renderContext) {\n // #7817 clone node before setting fnContext, otherwise if the node is reused\n // (e.g. it was from a cached normal slot) the fnContext causes named slots\n // that should not be matched to match.\n var clone = cloneVNode(vnode);\n clone.fnContext = contextVm;\n clone.fnOptions = options;\n if (process.env.NODE_ENV !== 'production') {\n (clone.devtoolsMeta = clone.devtoolsMeta || {}).renderContext = renderContext;\n }\n if (data.slot) {\n (clone.data || (clone.data = {})).slot = data.slot;\n }\n return clone\n}\n\nfunction mergeProps (to, from) {\n for (var key in from) {\n to[camelize(key)] = from[key];\n }\n}\n\n/* */\n\n/* */\n\n/* */\n\n/* */\n\n// inline hooks to be invoked on component VNodes during patch\nvar componentVNodeHooks = {\n init: function init (vnode, hydrating) {\n if (\n vnode.componentInstance &&\n !vnode.componentInstance._isDestroyed &&\n vnode.data.keepAlive\n ) {\n // kept-alive components, treat as a patch\n var mountedNode = vnode; // work around flow\n componentVNodeHooks.prepatch(mountedNode, mountedNode);\n } else {\n var child = vnode.componentInstance = createComponentInstanceForVnode(\n vnode,\n activeInstance\n );\n child.$mount(hydrating ? vnode.elm : undefined, hydrating);\n }\n },\n\n prepatch: function prepatch (oldVnode, vnode) {\n var options = vnode.componentOptions;\n var child = vnode.componentInstance = oldVnode.componentInstance;\n updateChildComponent(\n child,\n options.propsData, // updated props\n options.listeners, // updated listeners\n vnode, // new parent vnode\n options.children // new children\n );\n },\n\n insert: function insert (vnode) {\n var context = vnode.context;\n var componentInstance = vnode.componentInstance;\n if (!componentInstance._isMounted) {\n componentInstance._isMounted = true;\n callHook(componentInstance, 'mounted');\n }\n if (vnode.data.keepAlive) {\n if (context._isMounted) {\n // vue-router#1212\n // During updates, a kept-alive component's child components may\n // change, so directly walking the tree here may call activated hooks\n // on incorrect children. Instead we push them into a queue which will\n // be processed after the whole patch process ended.\n queueActivatedComponent(componentInstance);\n } else {\n activateChildComponent(componentInstance, true /* direct */);\n }\n }\n },\n\n destroy: function destroy (vnode) {\n var componentInstance = vnode.componentInstance;\n if (!componentInstance._isDestroyed) {\n if (!vnode.data.keepAlive) {\n componentInstance.$destroy();\n } else {\n deactivateChildComponent(componentInstance, true /* direct */);\n }\n }\n }\n};\n\nvar hooksToMerge = Object.keys(componentVNodeHooks);\n\nfunction createComponent (\n Ctor,\n data,\n context,\n children,\n tag\n) {\n if (isUndef(Ctor)) {\n return\n }\n\n var baseCtor = context.$options._base;\n\n // plain options object: turn it into a constructor\n if (isObject(Ctor)) {\n Ctor = baseCtor.extend(Ctor);\n }\n\n // if at this stage it's not a constructor or an async component factory,\n // reject.\n if (typeof Ctor !== 'function') {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Invalid Component definition: \" + (String(Ctor))), context);\n }\n return\n }\n\n // async component\n var asyncFactory;\n if (isUndef(Ctor.cid)) {\n asyncFactory = Ctor;\n Ctor = resolveAsyncComponent(asyncFactory, baseCtor);\n if (Ctor === undefined) {\n // return a placeholder node for async component, which is rendered\n // as a comment node but preserves all the raw information for the node.\n // the information will be used for async server-rendering and hydration.\n return createAsyncPlaceholder(\n asyncFactory,\n data,\n context,\n children,\n tag\n )\n }\n }\n\n data = data || {};\n\n // resolve constructor options in case global mixins are applied after\n // component constructor creation\n resolveConstructorOptions(Ctor);\n\n // transform component v-model data into props & events\n if (isDef(data.model)) {\n transformModel(Ctor.options, data);\n }\n\n // extract props\n var propsData = extractPropsFromVNodeData(data, Ctor, tag);\n\n // functional component\n if (isTrue(Ctor.options.functional)) {\n return createFunctionalComponent(Ctor, propsData, data, context, children)\n }\n\n // extract listeners, since these needs to be treated as\n // child component listeners instead of DOM listeners\n var listeners = data.on;\n // replace with listeners with .native modifier\n // so it gets processed during parent component patch.\n data.on = data.nativeOn;\n\n if (isTrue(Ctor.options.abstract)) {\n // abstract components do not keep anything\n // other than props & listeners & slot\n\n // work around flow\n var slot = data.slot;\n data = {};\n if (slot) {\n data.slot = slot;\n }\n }\n\n // install component management hooks onto the placeholder node\n installComponentHooks(data);\n\n // return a placeholder vnode\n var name = Ctor.options.name || tag;\n var vnode = new VNode(\n (\"vue-component-\" + (Ctor.cid) + (name ? (\"-\" + name) : '')),\n data, undefined, undefined, undefined, context,\n { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children },\n asyncFactory\n );\n\n return vnode\n}\n\nfunction createComponentInstanceForVnode (\n vnode, // we know it's MountedComponentVNode but flow doesn't\n parent // activeInstance in lifecycle state\n) {\n var options = {\n _isComponent: true,\n _parentVnode: vnode,\n parent: parent\n };\n // check inline-template render functions\n var inlineTemplate = vnode.data.inlineTemplate;\n if (isDef(inlineTemplate)) {\n options.render = inlineTemplate.render;\n options.staticRenderFns = inlineTemplate.staticRenderFns;\n }\n return new vnode.componentOptions.Ctor(options)\n}\n\nfunction installComponentHooks (data) {\n var hooks = data.hook || (data.hook = {});\n for (var i = 0; i < hooksToMerge.length; i++) {\n var key = hooksToMerge[i];\n var existing = hooks[key];\n var toMerge = componentVNodeHooks[key];\n if (existing !== toMerge && !(existing && existing._merged)) {\n hooks[key] = existing ? mergeHook$1(toMerge, existing) : toMerge;\n }\n }\n}\n\nfunction mergeHook$1 (f1, f2) {\n var merged = function (a, b) {\n // flow complains about extra args which is why we use any\n f1(a, b);\n f2(a, b);\n };\n merged._merged = true;\n return merged\n}\n\n// transform component v-model info (value and callback) into\n// prop and event handler respectively.\nfunction transformModel (options, data) {\n var prop = (options.model && options.model.prop) || 'value';\n var event = (options.model && options.model.event) || 'input'\n ;(data.attrs || (data.attrs = {}))[prop] = data.model.value;\n var on = data.on || (data.on = {});\n var existing = on[event];\n var callback = data.model.callback;\n if (isDef(existing)) {\n if (\n Array.isArray(existing)\n ? existing.indexOf(callback) === -1\n : existing !== callback\n ) {\n on[event] = [callback].concat(existing);\n }\n } else {\n on[event] = callback;\n }\n}\n\n/* */\n\nvar SIMPLE_NORMALIZE = 1;\nvar ALWAYS_NORMALIZE = 2;\n\n// wrapper function for providing a more flexible interface\n// without getting yelled at by flow\nfunction createElement (\n context,\n tag,\n data,\n children,\n normalizationType,\n alwaysNormalize\n) {\n if (Array.isArray(data) || isPrimitive(data)) {\n normalizationType = children;\n children = data;\n data = undefined;\n }\n if (isTrue(alwaysNormalize)) {\n normalizationType = ALWAYS_NORMALIZE;\n }\n return _createElement(context, tag, data, children, normalizationType)\n}\n\nfunction _createElement (\n context,\n tag,\n data,\n children,\n normalizationType\n) {\n if (isDef(data) && isDef((data).__ob__)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Avoid using observed data object as vnode data: \" + (JSON.stringify(data)) + \"\\n\" +\n 'Always create fresh vnode data objects in each render!',\n context\n );\n return createEmptyVNode()\n }\n // object syntax in v-bind\n if (isDef(data) && isDef(data.is)) {\n tag = data.is;\n }\n if (!tag) {\n // in case of component :is set to falsy value\n return createEmptyVNode()\n }\n // warn against non-primitive key\n if (process.env.NODE_ENV !== 'production' &&\n isDef(data) && isDef(data.key) && !isPrimitive(data.key)\n ) {\n {\n warn(\n 'Avoid using non-primitive value as key, ' +\n 'use string/number value instead.',\n context\n );\n }\n }\n // support single function children as default scoped slot\n if (Array.isArray(children) &&\n typeof children[0] === 'function'\n ) {\n data = data || {};\n data.scopedSlots = { default: children[0] };\n children.length = 0;\n }\n if (normalizationType === ALWAYS_NORMALIZE) {\n children = normalizeChildren(children);\n } else if (normalizationType === SIMPLE_NORMALIZE) {\n children = simpleNormalizeChildren(children);\n }\n var vnode, ns;\n if (typeof tag === 'string') {\n var Ctor;\n ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag);\n if (config.isReservedTag(tag)) {\n // platform built-in elements\n vnode = new VNode(\n config.parsePlatformTagName(tag), data, children,\n undefined, undefined, context\n );\n } else if ((!data || !data.pre) && isDef(Ctor = resolveAsset(context.$options, 'components', tag))) {\n // component\n vnode = createComponent(Ctor, data, context, children, tag);\n } else {\n // unknown or unlisted namespaced elements\n // check at runtime because it may get assigned a namespace when its\n // parent normalizes children\n vnode = new VNode(\n tag, data, children,\n undefined, undefined, context\n );\n }\n } else {\n // direct component options / constructor\n vnode = createComponent(tag, data, context, children);\n }\n if (Array.isArray(vnode)) {\n return vnode\n } else if (isDef(vnode)) {\n if (isDef(ns)) { applyNS(vnode, ns); }\n if (isDef(data)) { registerDeepBindings(data); }\n return vnode\n } else {\n return createEmptyVNode()\n }\n}\n\nfunction applyNS (vnode, ns, force) {\n vnode.ns = ns;\n if (vnode.tag === 'foreignObject') {\n // use default namespace inside foreignObject\n ns = undefined;\n force = true;\n }\n if (isDef(vnode.children)) {\n for (var i = 0, l = vnode.children.length; i < l; i++) {\n var child = vnode.children[i];\n if (isDef(child.tag) && (\n isUndef(child.ns) || (isTrue(force) && child.tag !== 'svg'))) {\n applyNS(child, ns, force);\n }\n }\n }\n}\n\n// ref #5318\n// necessary to ensure parent re-render when deep bindings like :style and\n// :class are used on slot nodes\nfunction registerDeepBindings (data) {\n if (isObject(data.style)) {\n traverse(data.style);\n }\n if (isObject(data.class)) {\n traverse(data.class);\n }\n}\n\n/* */\n\nfunction initRender (vm) {\n vm._vnode = null; // the root of the child tree\n vm._staticTrees = null; // v-once cached trees\n var options = vm.$options;\n var parentVnode = vm.$vnode = options._parentVnode; // the placeholder node in parent tree\n var renderContext = parentVnode && parentVnode.context;\n vm.$slots = resolveSlots(options._renderChildren, renderContext);\n vm.$scopedSlots = emptyObject;\n // bind the createElement fn to this instance\n // so that we get proper render context inside it.\n // args order: tag, data, children, normalizationType, alwaysNormalize\n // internal version is used by render functions compiled from templates\n vm._c = function (a, b, c, d) { return createElement(vm, a, b, c, d, false); };\n // normalization is always applied for the public version, used in\n // user-written render functions.\n vm.$createElement = function (a, b, c, d) { return createElement(vm, a, b, c, d, true); };\n\n // $attrs & $listeners are exposed for easier HOC creation.\n // they need to be reactive so that HOCs using them are always updated\n var parentData = parentVnode && parentVnode.data;\n\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, function () {\n !isUpdatingChildComponent && warn(\"$attrs is readonly.\", vm);\n }, true);\n defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, function () {\n !isUpdatingChildComponent && warn(\"$listeners is readonly.\", vm);\n }, true);\n } else {\n defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, null, true);\n defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, null, true);\n }\n}\n\nvar currentRenderingInstance = null;\n\nfunction renderMixin (Vue) {\n // install runtime convenience helpers\n installRenderHelpers(Vue.prototype);\n\n Vue.prototype.$nextTick = function (fn) {\n return nextTick(fn, this)\n };\n\n Vue.prototype._render = function () {\n var vm = this;\n var ref = vm.$options;\n var render = ref.render;\n var _parentVnode = ref._parentVnode;\n\n if (_parentVnode) {\n vm.$scopedSlots = normalizeScopedSlots(\n _parentVnode.data.scopedSlots,\n vm.$slots,\n vm.$scopedSlots\n );\n }\n\n // set parent vnode. this allows render functions to have access\n // to the data on the placeholder node.\n vm.$vnode = _parentVnode;\n // render self\n var vnode;\n try {\n // There's no need to maintain a stack becaues all render fns are called\n // separately from one another. Nested component's render fns are called\n // when parent component is patched.\n currentRenderingInstance = vm;\n vnode = render.call(vm._renderProxy, vm.$createElement);\n } catch (e) {\n handleError(e, vm, \"render\");\n // return error render result,\n // or previous vnode to prevent render error causing blank component\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production' && vm.$options.renderError) {\n try {\n vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e);\n } catch (e) {\n handleError(e, vm, \"renderError\");\n vnode = vm._vnode;\n }\n } else {\n vnode = vm._vnode;\n }\n } finally {\n currentRenderingInstance = null;\n }\n // if the returned array contains only a single node, allow it\n if (Array.isArray(vnode) && vnode.length === 1) {\n vnode = vnode[0];\n }\n // return empty vnode in case the render function errored out\n if (!(vnode instanceof VNode)) {\n if (process.env.NODE_ENV !== 'production' && Array.isArray(vnode)) {\n warn(\n 'Multiple root nodes returned from render function. Render function ' +\n 'should return a single root node.',\n vm\n );\n }\n vnode = createEmptyVNode();\n }\n // set parent\n vnode.parent = _parentVnode;\n return vnode\n };\n}\n\n/* */\n\nfunction ensureCtor (comp, base) {\n if (\n comp.__esModule ||\n (hasSymbol && comp[Symbol.toStringTag] === 'Module')\n ) {\n comp = comp.default;\n }\n return isObject(comp)\n ? base.extend(comp)\n : comp\n}\n\nfunction createAsyncPlaceholder (\n factory,\n data,\n context,\n children,\n tag\n) {\n var node = createEmptyVNode();\n node.asyncFactory = factory;\n node.asyncMeta = { data: data, context: context, children: children, tag: tag };\n return node\n}\n\nfunction resolveAsyncComponent (\n factory,\n baseCtor\n) {\n if (isTrue(factory.error) && isDef(factory.errorComp)) {\n return factory.errorComp\n }\n\n if (isDef(factory.resolved)) {\n return factory.resolved\n }\n\n var owner = currentRenderingInstance;\n if (owner && isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {\n // already pending\n factory.owners.push(owner);\n }\n\n if (isTrue(factory.loading) && isDef(factory.loadingComp)) {\n return factory.loadingComp\n }\n\n if (owner && !isDef(factory.owners)) {\n var owners = factory.owners = [owner];\n var sync = true;\n var timerLoading = null;\n var timerTimeout = null\n\n ;(owner).$on('hook:destroyed', function () { return remove(owners, owner); });\n\n var forceRender = function (renderCompleted) {\n for (var i = 0, l = owners.length; i < l; i++) {\n (owners[i]).$forceUpdate();\n }\n\n if (renderCompleted) {\n owners.length = 0;\n if (timerLoading !== null) {\n clearTimeout(timerLoading);\n timerLoading = null;\n }\n if (timerTimeout !== null) {\n clearTimeout(timerTimeout);\n timerTimeout = null;\n }\n }\n };\n\n var resolve = once(function (res) {\n // cache resolved\n factory.resolved = ensureCtor(res, baseCtor);\n // invoke callbacks only if this is not a synchronous resolve\n // (async resolves are shimmed as synchronous during SSR)\n if (!sync) {\n forceRender(true);\n } else {\n owners.length = 0;\n }\n });\n\n var reject = once(function (reason) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Failed to resolve async component: \" + (String(factory)) +\n (reason ? (\"\\nReason: \" + reason) : '')\n );\n if (isDef(factory.errorComp)) {\n factory.error = true;\n forceRender(true);\n }\n });\n\n var res = factory(resolve, reject);\n\n if (isObject(res)) {\n if (isPromise(res)) {\n // () => Promise\n if (isUndef(factory.resolved)) {\n res.then(resolve, reject);\n }\n } else if (isPromise(res.component)) {\n res.component.then(resolve, reject);\n\n if (isDef(res.error)) {\n factory.errorComp = ensureCtor(res.error, baseCtor);\n }\n\n if (isDef(res.loading)) {\n factory.loadingComp = ensureCtor(res.loading, baseCtor);\n if (res.delay === 0) {\n factory.loading = true;\n } else {\n timerLoading = setTimeout(function () {\n timerLoading = null;\n if (isUndef(factory.resolved) && isUndef(factory.error)) {\n factory.loading = true;\n forceRender(false);\n }\n }, res.delay || 200);\n }\n }\n\n if (isDef(res.timeout)) {\n timerTimeout = setTimeout(function () {\n timerTimeout = null;\n if (isUndef(factory.resolved)) {\n reject(\n process.env.NODE_ENV !== 'production'\n ? (\"timeout (\" + (res.timeout) + \"ms)\")\n : null\n );\n }\n }, res.timeout);\n }\n }\n }\n\n sync = false;\n // return in case resolved synchronously\n return factory.loading\n ? factory.loadingComp\n : factory.resolved\n }\n}\n\n/* */\n\nfunction isAsyncPlaceholder (node) {\n return node.isComment && node.asyncFactory\n}\n\n/* */\n\nfunction getFirstComponentChild (children) {\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n var c = children[i];\n if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) {\n return c\n }\n }\n }\n}\n\n/* */\n\n/* */\n\nfunction initEvents (vm) {\n vm._events = Object.create(null);\n vm._hasHookEvent = false;\n // init parent attached events\n var listeners = vm.$options._parentListeners;\n if (listeners) {\n updateComponentListeners(vm, listeners);\n }\n}\n\nvar target;\n\nfunction add (event, fn) {\n target.$on(event, fn);\n}\n\nfunction remove$1 (event, fn) {\n target.$off(event, fn);\n}\n\nfunction createOnceHandler (event, fn) {\n var _target = target;\n return function onceHandler () {\n var res = fn.apply(null, arguments);\n if (res !== null) {\n _target.$off(event, onceHandler);\n }\n }\n}\n\nfunction updateComponentListeners (\n vm,\n listeners,\n oldListeners\n) {\n target = vm;\n updateListeners(listeners, oldListeners || {}, add, remove$1, createOnceHandler, vm);\n target = undefined;\n}\n\nfunction eventsMixin (Vue) {\n var hookRE = /^hook:/;\n Vue.prototype.$on = function (event, fn) {\n var vm = this;\n if (Array.isArray(event)) {\n for (var i = 0, l = event.length; i < l; i++) {\n vm.$on(event[i], fn);\n }\n } else {\n (vm._events[event] || (vm._events[event] = [])).push(fn);\n // optimize hook:event cost by using a boolean flag marked at registration\n // instead of a hash lookup\n if (hookRE.test(event)) {\n vm._hasHookEvent = true;\n }\n }\n return vm\n };\n\n Vue.prototype.$once = function (event, fn) {\n var vm = this;\n function on () {\n vm.$off(event, on);\n fn.apply(vm, arguments);\n }\n on.fn = fn;\n vm.$on(event, on);\n return vm\n };\n\n Vue.prototype.$off = function (event, fn) {\n var vm = this;\n // all\n if (!arguments.length) {\n vm._events = Object.create(null);\n return vm\n }\n // array of events\n if (Array.isArray(event)) {\n for (var i$1 = 0, l = event.length; i$1 < l; i$1++) {\n vm.$off(event[i$1], fn);\n }\n return vm\n }\n // specific event\n var cbs = vm._events[event];\n if (!cbs) {\n return vm\n }\n if (!fn) {\n vm._events[event] = null;\n return vm\n }\n // specific handler\n var cb;\n var i = cbs.length;\n while (i--) {\n cb = cbs[i];\n if (cb === fn || cb.fn === fn) {\n cbs.splice(i, 1);\n break\n }\n }\n return vm\n };\n\n Vue.prototype.$emit = function (event) {\n var vm = this;\n if (process.env.NODE_ENV !== 'production') {\n var lowerCaseEvent = event.toLowerCase();\n if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) {\n tip(\n \"Event \\\"\" + lowerCaseEvent + \"\\\" is emitted in component \" +\n (formatComponentName(vm)) + \" but the handler is registered for \\\"\" + event + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and you cannot use \" +\n \"v-on to listen to camelCase events when using in-DOM templates. \" +\n \"You should probably use \\\"\" + (hyphenate(event)) + \"\\\" instead of \\\"\" + event + \"\\\".\"\n );\n }\n }\n var cbs = vm._events[event];\n if (cbs) {\n cbs = cbs.length > 1 ? toArray(cbs) : cbs;\n var args = toArray(arguments, 1);\n var info = \"event handler for \\\"\" + event + \"\\\"\";\n for (var i = 0, l = cbs.length; i < l; i++) {\n invokeWithErrorHandling(cbs[i], vm, args, vm, info);\n }\n }\n return vm\n };\n}\n\n/* */\n\nvar activeInstance = null;\nvar isUpdatingChildComponent = false;\n\nfunction setActiveInstance(vm) {\n var prevActiveInstance = activeInstance;\n activeInstance = vm;\n return function () {\n activeInstance = prevActiveInstance;\n }\n}\n\nfunction initLifecycle (vm) {\n var options = vm.$options;\n\n // locate first non-abstract parent\n var parent = options.parent;\n if (parent && !options.abstract) {\n while (parent.$options.abstract && parent.$parent) {\n parent = parent.$parent;\n }\n parent.$children.push(vm);\n }\n\n vm.$parent = parent;\n vm.$root = parent ? parent.$root : vm;\n\n vm.$children = [];\n vm.$refs = {};\n\n vm._watcher = null;\n vm._inactive = null;\n vm._directInactive = false;\n vm._isMounted = false;\n vm._isDestroyed = false;\n vm._isBeingDestroyed = false;\n}\n\nfunction lifecycleMixin (Vue) {\n Vue.prototype._update = function (vnode, hydrating) {\n var vm = this;\n var prevEl = vm.$el;\n var prevVnode = vm._vnode;\n var restoreActiveInstance = setActiveInstance(vm);\n vm._vnode = vnode;\n // Vue.prototype.__patch__ is injected in entry points\n // based on the rendering backend used.\n if (!prevVnode) {\n // initial render\n vm.$el = vm.__patch__(vm.$el, vnode, hydrating, false /* removeOnly */);\n } else {\n // updates\n vm.$el = vm.__patch__(prevVnode, vnode);\n }\n restoreActiveInstance();\n // update __vue__ reference\n if (prevEl) {\n prevEl.__vue__ = null;\n }\n if (vm.$el) {\n vm.$el.__vue__ = vm;\n }\n // if parent is an HOC, update its $el as well\n if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) {\n vm.$parent.$el = vm.$el;\n }\n // updated hook is called by the scheduler to ensure that children are\n // updated in a parent's updated hook.\n };\n\n Vue.prototype.$forceUpdate = function () {\n var vm = this;\n if (vm._watcher) {\n vm._watcher.update();\n }\n };\n\n Vue.prototype.$destroy = function () {\n var vm = this;\n if (vm._isBeingDestroyed) {\n return\n }\n callHook(vm, 'beforeDestroy');\n vm._isBeingDestroyed = true;\n // remove self from parent\n var parent = vm.$parent;\n if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {\n remove(parent.$children, vm);\n }\n // teardown watchers\n if (vm._watcher) {\n vm._watcher.teardown();\n }\n var i = vm._watchers.length;\n while (i--) {\n vm._watchers[i].teardown();\n }\n // remove reference from data ob\n // frozen object may not have observer.\n if (vm._data.__ob__) {\n vm._data.__ob__.vmCount--;\n }\n // call the last hook...\n vm._isDestroyed = true;\n // invoke destroy hooks on current rendered tree\n vm.__patch__(vm._vnode, null);\n // fire destroyed hook\n callHook(vm, 'destroyed');\n // turn off all instance listeners.\n vm.$off();\n // remove __vue__ reference\n if (vm.$el) {\n vm.$el.__vue__ = null;\n }\n // release circular reference (#6759)\n if (vm.$vnode) {\n vm.$vnode.parent = null;\n }\n };\n}\n\nfunction mountComponent (\n vm,\n el,\n hydrating\n) {\n vm.$el = el;\n if (!vm.$options.render) {\n vm.$options.render = createEmptyVNode;\n if (process.env.NODE_ENV !== 'production') {\n /* istanbul ignore if */\n if ((vm.$options.template && vm.$options.template.charAt(0) !== '#') ||\n vm.$options.el || el) {\n warn(\n 'You are using the runtime-only build of Vue where the template ' +\n 'compiler is not available. Either pre-compile the templates into ' +\n 'render functions, or use the compiler-included build.',\n vm\n );\n } else {\n warn(\n 'Failed to mount component: template or render function not defined.',\n vm\n );\n }\n }\n }\n callHook(vm, 'beforeMount');\n\n var updateComponent;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n updateComponent = function () {\n var name = vm._name;\n var id = vm._uid;\n var startTag = \"vue-perf-start:\" + id;\n var endTag = \"vue-perf-end:\" + id;\n\n mark(startTag);\n var vnode = vm._render();\n mark(endTag);\n measure((\"vue \" + name + \" render\"), startTag, endTag);\n\n mark(startTag);\n vm._update(vnode, hydrating);\n mark(endTag);\n measure((\"vue \" + name + \" patch\"), startTag, endTag);\n };\n } else {\n updateComponent = function () {\n vm._update(vm._render(), hydrating);\n };\n }\n\n // we set this to vm._watcher inside the watcher's constructor\n // since the watcher's initial patch may call $forceUpdate (e.g. inside child\n // component's mounted hook), which relies on vm._watcher being already defined\n new Watcher(vm, updateComponent, noop, {\n before: function before () {\n if (vm._isMounted && !vm._isDestroyed) {\n callHook(vm, 'beforeUpdate');\n }\n }\n }, true /* isRenderWatcher */);\n hydrating = false;\n\n // manually mounted instance, call mounted on self\n // mounted is called for render-created child components in its inserted hook\n if (vm.$vnode == null) {\n vm._isMounted = true;\n callHook(vm, 'mounted');\n }\n return vm\n}\n\nfunction updateChildComponent (\n vm,\n propsData,\n listeners,\n parentVnode,\n renderChildren\n) {\n if (process.env.NODE_ENV !== 'production') {\n isUpdatingChildComponent = true;\n }\n\n // determine whether component has slot children\n // we need to do this before overwriting $options._renderChildren.\n\n // check if there are dynamic scopedSlots (hand-written or compiled but with\n // dynamic slot names). Static scoped slots compiled from template has the\n // \"$stable\" marker.\n var newScopedSlots = parentVnode.data.scopedSlots;\n var oldScopedSlots = vm.$scopedSlots;\n var hasDynamicScopedSlot = !!(\n (newScopedSlots && !newScopedSlots.$stable) ||\n (oldScopedSlots !== emptyObject && !oldScopedSlots.$stable) ||\n (newScopedSlots && vm.$scopedSlots.$key !== newScopedSlots.$key)\n );\n\n // Any static slot children from the parent may have changed during parent's\n // update. Dynamic scoped slots may also have changed. In such cases, a forced\n // update is necessary to ensure correctness.\n var needsForceUpdate = !!(\n renderChildren || // has new static slots\n vm.$options._renderChildren || // has old static slots\n hasDynamicScopedSlot\n );\n\n vm.$options._parentVnode = parentVnode;\n vm.$vnode = parentVnode; // update vm's placeholder node without re-render\n\n if (vm._vnode) { // update child tree's parent\n vm._vnode.parent = parentVnode;\n }\n vm.$options._renderChildren = renderChildren;\n\n // update $attrs and $listeners hash\n // these are also reactive so they may trigger child update if the child\n // used them during render\n vm.$attrs = parentVnode.data.attrs || emptyObject;\n vm.$listeners = listeners || emptyObject;\n\n // update props\n if (propsData && vm.$options.props) {\n toggleObserving(false);\n var props = vm._props;\n var propKeys = vm.$options._propKeys || [];\n for (var i = 0; i < propKeys.length; i++) {\n var key = propKeys[i];\n var propOptions = vm.$options.props; // wtf flow?\n props[key] = validateProp(key, propOptions, propsData, vm);\n }\n toggleObserving(true);\n // keep a copy of raw propsData\n vm.$options.propsData = propsData;\n }\n\n // update listeners\n listeners = listeners || emptyObject;\n var oldListeners = vm.$options._parentListeners;\n vm.$options._parentListeners = listeners;\n updateComponentListeners(vm, listeners, oldListeners);\n\n // resolve slots + force update if has children\n if (needsForceUpdate) {\n vm.$slots = resolveSlots(renderChildren, parentVnode.context);\n vm.$forceUpdate();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n isUpdatingChildComponent = false;\n }\n}\n\nfunction isInInactiveTree (vm) {\n while (vm && (vm = vm.$parent)) {\n if (vm._inactive) { return true }\n }\n return false\n}\n\nfunction activateChildComponent (vm, direct) {\n if (direct) {\n vm._directInactive = false;\n if (isInInactiveTree(vm)) {\n return\n }\n } else if (vm._directInactive) {\n return\n }\n if (vm._inactive || vm._inactive === null) {\n vm._inactive = false;\n for (var i = 0; i < vm.$children.length; i++) {\n activateChildComponent(vm.$children[i]);\n }\n callHook(vm, 'activated');\n }\n}\n\nfunction deactivateChildComponent (vm, direct) {\n if (direct) {\n vm._directInactive = true;\n if (isInInactiveTree(vm)) {\n return\n }\n }\n if (!vm._inactive) {\n vm._inactive = true;\n for (var i = 0; i < vm.$children.length; i++) {\n deactivateChildComponent(vm.$children[i]);\n }\n callHook(vm, 'deactivated');\n }\n}\n\nfunction callHook (vm, hook) {\n // #7573 disable dep collection when invoking lifecycle hooks\n pushTarget();\n var handlers = vm.$options[hook];\n var info = hook + \" hook\";\n if (handlers) {\n for (var i = 0, j = handlers.length; i < j; i++) {\n invokeWithErrorHandling(handlers[i], vm, null, vm, info);\n }\n }\n if (vm._hasHookEvent) {\n vm.$emit('hook:' + hook);\n }\n popTarget();\n}\n\n/* */\n\nvar MAX_UPDATE_COUNT = 100;\n\nvar queue = [];\nvar activatedChildren = [];\nvar has = {};\nvar circular = {};\nvar waiting = false;\nvar flushing = false;\nvar index = 0;\n\n/**\n * Reset the scheduler's state.\n */\nfunction resetSchedulerState () {\n index = queue.length = activatedChildren.length = 0;\n has = {};\n if (process.env.NODE_ENV !== 'production') {\n circular = {};\n }\n waiting = flushing = false;\n}\n\n// Async edge case #6566 requires saving the timestamp when event listeners are\n// attached. However, calling performance.now() has a perf overhead especially\n// if the page has thousands of event listeners. Instead, we take a timestamp\n// every time the scheduler flushes and use that for all event listeners\n// attached during that flush.\nvar currentFlushTimestamp = 0;\n\n// Async edge case fix requires storing an event listener's attach timestamp.\nvar getNow = Date.now;\n\n// Determine what event timestamp the browser is using. Annoyingly, the\n// timestamp can either be hi-res (relative to page load) or low-res\n// (relative to UNIX epoch), so in order to compare time we have to use the\n// same timestamp type when saving the flush timestamp.\n// All IE versions use low-res event timestamps, and have problematic clock\n// implementations (#9632)\nif (inBrowser && !isIE) {\n var performance = window.performance;\n if (\n performance &&\n typeof performance.now === 'function' &&\n getNow() > document.createEvent('Event').timeStamp\n ) {\n // if the event timestamp, although evaluated AFTER the Date.now(), is\n // smaller than it, it means the event is using a hi-res timestamp,\n // and we need to use the hi-res version for event listener timestamps as\n // well.\n getNow = function () { return performance.now(); };\n }\n}\n\n/**\n * Flush both queues and run the watchers.\n */\nfunction flushSchedulerQueue () {\n currentFlushTimestamp = getNow();\n flushing = true;\n var watcher, id;\n\n // Sort queue before flush.\n // This ensures that:\n // 1. Components are updated from parent to child. (because parent is always\n // created before the child)\n // 2. A component's user watchers are run before its render watcher (because\n // user watchers are created before the render watcher)\n // 3. If a component is destroyed during a parent component's watcher run,\n // its watchers can be skipped.\n queue.sort(function (a, b) { return a.id - b.id; });\n\n // do not cache length because more watchers might be pushed\n // as we run existing watchers\n for (index = 0; index < queue.length; index++) {\n watcher = queue[index];\n if (watcher.before) {\n watcher.before();\n }\n id = watcher.id;\n has[id] = null;\n watcher.run();\n // in dev build, check and stop circular updates.\n if (process.env.NODE_ENV !== 'production' && has[id] != null) {\n circular[id] = (circular[id] || 0) + 1;\n if (circular[id] > MAX_UPDATE_COUNT) {\n warn(\n 'You may have an infinite update loop ' + (\n watcher.user\n ? (\"in watcher with expression \\\"\" + (watcher.expression) + \"\\\"\")\n : \"in a component render function.\"\n ),\n watcher.vm\n );\n break\n }\n }\n }\n\n // keep copies of post queues before resetting state\n var activatedQueue = activatedChildren.slice();\n var updatedQueue = queue.slice();\n\n resetSchedulerState();\n\n // call component updated and activated hooks\n callActivatedHooks(activatedQueue);\n callUpdatedHooks(updatedQueue);\n\n // devtool hook\n /* istanbul ignore if */\n if (devtools && config.devtools) {\n devtools.emit('flush');\n }\n}\n\nfunction callUpdatedHooks (queue) {\n var i = queue.length;\n while (i--) {\n var watcher = queue[i];\n var vm = watcher.vm;\n if (vm._watcher === watcher && vm._isMounted && !vm._isDestroyed) {\n callHook(vm, 'updated');\n }\n }\n}\n\n/**\n * Queue a kept-alive component that was activated during patch.\n * The queue will be processed after the entire tree has been patched.\n */\nfunction queueActivatedComponent (vm) {\n // setting _inactive to false here so that a render function can\n // rely on checking whether it's in an inactive tree (e.g. router-view)\n vm._inactive = false;\n activatedChildren.push(vm);\n}\n\nfunction callActivatedHooks (queue) {\n for (var i = 0; i < queue.length; i++) {\n queue[i]._inactive = true;\n activateChildComponent(queue[i], true /* true */);\n }\n}\n\n/**\n * Push a watcher into the watcher queue.\n * Jobs with duplicate IDs will be skipped unless it's\n * pushed when the queue is being flushed.\n */\nfunction queueWatcher (watcher) {\n var id = watcher.id;\n if (has[id] == null) {\n has[id] = true;\n if (!flushing) {\n queue.push(watcher);\n } else {\n // if already flushing, splice the watcher based on its id\n // if already past its id, it will be run next immediately.\n var i = queue.length - 1;\n while (i > index && queue[i].id > watcher.id) {\n i--;\n }\n queue.splice(i + 1, 0, watcher);\n }\n // queue the flush\n if (!waiting) {\n waiting = true;\n\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n flushSchedulerQueue();\n return\n }\n nextTick(flushSchedulerQueue);\n }\n }\n}\n\n/* */\n\n\n\nvar uid$2 = 0;\n\n/**\n * A watcher parses an expression, collects dependencies,\n * and fires callback when the expression value changes.\n * This is used for both the $watch() api and directives.\n */\nvar Watcher = function Watcher (\n vm,\n expOrFn,\n cb,\n options,\n isRenderWatcher\n) {\n this.vm = vm;\n if (isRenderWatcher) {\n vm._watcher = this;\n }\n vm._watchers.push(this);\n // options\n if (options) {\n this.deep = !!options.deep;\n this.user = !!options.user;\n this.lazy = !!options.lazy;\n this.sync = !!options.sync;\n this.before = options.before;\n } else {\n this.deep = this.user = this.lazy = this.sync = false;\n }\n this.cb = cb;\n this.id = ++uid$2; // uid for batching\n this.active = true;\n this.dirty = this.lazy; // for lazy watchers\n this.deps = [];\n this.newDeps = [];\n this.depIds = new _Set();\n this.newDepIds = new _Set();\n this.expression = process.env.NODE_ENV !== 'production'\n ? expOrFn.toString()\n : '';\n // parse expression for getter\n if (typeof expOrFn === 'function') {\n this.getter = expOrFn;\n } else {\n this.getter = parsePath(expOrFn);\n if (!this.getter) {\n this.getter = noop;\n process.env.NODE_ENV !== 'production' && warn(\n \"Failed watching path: \\\"\" + expOrFn + \"\\\" \" +\n 'Watcher only accepts simple dot-delimited paths. ' +\n 'For full control, use a function instead.',\n vm\n );\n }\n }\n this.value = this.lazy\n ? undefined\n : this.get();\n};\n\n/**\n * Evaluate the getter, and re-collect dependencies.\n */\nWatcher.prototype.get = function get () {\n pushTarget(this);\n var value;\n var vm = this.vm;\n try {\n value = this.getter.call(vm, vm);\n } catch (e) {\n if (this.user) {\n handleError(e, vm, (\"getter for watcher \\\"\" + (this.expression) + \"\\\"\"));\n } else {\n throw e\n }\n } finally {\n // \"touch\" every property so they are all tracked as\n // dependencies for deep watching\n if (this.deep) {\n traverse(value);\n }\n popTarget();\n this.cleanupDeps();\n }\n return value\n};\n\n/**\n * Add a dependency to this directive.\n */\nWatcher.prototype.addDep = function addDep (dep) {\n var id = dep.id;\n if (!this.newDepIds.has(id)) {\n this.newDepIds.add(id);\n this.newDeps.push(dep);\n if (!this.depIds.has(id)) {\n dep.addSub(this);\n }\n }\n};\n\n/**\n * Clean up for dependency collection.\n */\nWatcher.prototype.cleanupDeps = function cleanupDeps () {\n var i = this.deps.length;\n while (i--) {\n var dep = this.deps[i];\n if (!this.newDepIds.has(dep.id)) {\n dep.removeSub(this);\n }\n }\n var tmp = this.depIds;\n this.depIds = this.newDepIds;\n this.newDepIds = tmp;\n this.newDepIds.clear();\n tmp = this.deps;\n this.deps = this.newDeps;\n this.newDeps = tmp;\n this.newDeps.length = 0;\n};\n\n/**\n * Subscriber interface.\n * Will be called when a dependency changes.\n */\nWatcher.prototype.update = function update () {\n /* istanbul ignore else */\n if (this.lazy) {\n this.dirty = true;\n } else if (this.sync) {\n this.run();\n } else {\n queueWatcher(this);\n }\n};\n\n/**\n * Scheduler job interface.\n * Will be called by the scheduler.\n */\nWatcher.prototype.run = function run () {\n if (this.active) {\n var value = this.get();\n if (\n value !== this.value ||\n // Deep watchers and watchers on Object/Arrays should fire even\n // when the value is the same, because the value may\n // have mutated.\n isObject(value) ||\n this.deep\n ) {\n // set new value\n var oldValue = this.value;\n this.value = value;\n if (this.user) {\n try {\n this.cb.call(this.vm, value, oldValue);\n } catch (e) {\n handleError(e, this.vm, (\"callback for watcher \\\"\" + (this.expression) + \"\\\"\"));\n }\n } else {\n this.cb.call(this.vm, value, oldValue);\n }\n }\n }\n};\n\n/**\n * Evaluate the value of the watcher.\n * This only gets called for lazy watchers.\n */\nWatcher.prototype.evaluate = function evaluate () {\n this.value = this.get();\n this.dirty = false;\n};\n\n/**\n * Depend on all deps collected by this watcher.\n */\nWatcher.prototype.depend = function depend () {\n var i = this.deps.length;\n while (i--) {\n this.deps[i].depend();\n }\n};\n\n/**\n * Remove self from all dependencies' subscriber list.\n */\nWatcher.prototype.teardown = function teardown () {\n if (this.active) {\n // remove self from vm's watcher list\n // this is a somewhat expensive operation so we skip it\n // if the vm is being destroyed.\n if (!this.vm._isBeingDestroyed) {\n remove(this.vm._watchers, this);\n }\n var i = this.deps.length;\n while (i--) {\n this.deps[i].removeSub(this);\n }\n this.active = false;\n }\n};\n\n/* */\n\nvar sharedPropertyDefinition = {\n enumerable: true,\n configurable: true,\n get: noop,\n set: noop\n};\n\nfunction proxy (target, sourceKey, key) {\n sharedPropertyDefinition.get = function proxyGetter () {\n return this[sourceKey][key]\n };\n sharedPropertyDefinition.set = function proxySetter (val) {\n this[sourceKey][key] = val;\n };\n Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction initState (vm) {\n vm._watchers = [];\n var opts = vm.$options;\n if (opts.props) { initProps(vm, opts.props); }\n if (opts.methods) { initMethods(vm, opts.methods); }\n if (opts.data) {\n initData(vm);\n } else {\n observe(vm._data = {}, true /* asRootData */);\n }\n if (opts.computed) { initComputed(vm, opts.computed); }\n if (opts.watch && opts.watch !== nativeWatch) {\n initWatch(vm, opts.watch);\n }\n}\n\nfunction initProps (vm, propsOptions) {\n var propsData = vm.$options.propsData || {};\n var props = vm._props = {};\n // cache prop keys so that future props updates can iterate using Array\n // instead of dynamic object key enumeration.\n var keys = vm.$options._propKeys = [];\n var isRoot = !vm.$parent;\n // root instance props should be converted\n if (!isRoot) {\n toggleObserving(false);\n }\n var loop = function ( key ) {\n keys.push(key);\n var value = validateProp(key, propsOptions, propsData, vm);\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n var hyphenatedKey = hyphenate(key);\n if (isReservedAttribute(hyphenatedKey) ||\n config.isReservedAttr(hyphenatedKey)) {\n warn(\n (\"\\\"\" + hyphenatedKey + \"\\\" is a reserved attribute and cannot be used as component prop.\"),\n vm\n );\n }\n defineReactive$$1(props, key, value, function () {\n if (!isRoot && !isUpdatingChildComponent) {\n warn(\n \"Avoid mutating a prop directly since the value will be \" +\n \"overwritten whenever the parent component re-renders. \" +\n \"Instead, use a data or computed property based on the prop's \" +\n \"value. Prop being mutated: \\\"\" + key + \"\\\"\",\n vm\n );\n }\n });\n } else {\n defineReactive$$1(props, key, value);\n }\n // static props are already proxied on the component's prototype\n // during Vue.extend(). We only need to proxy props defined at\n // instantiation here.\n if (!(key in vm)) {\n proxy(vm, \"_props\", key);\n }\n };\n\n for (var key in propsOptions) loop( key );\n toggleObserving(true);\n}\n\nfunction initData (vm) {\n var data = vm.$options.data;\n data = vm._data = typeof data === 'function'\n ? getData(data, vm)\n : data || {};\n if (!isPlainObject(data)) {\n data = {};\n process.env.NODE_ENV !== 'production' && warn(\n 'data functions should return an object:\\n' +\n 'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function',\n vm\n );\n }\n // proxy data on instance\n var keys = Object.keys(data);\n var props = vm.$options.props;\n var methods = vm.$options.methods;\n var i = keys.length;\n while (i--) {\n var key = keys[i];\n if (process.env.NODE_ENV !== 'production') {\n if (methods && hasOwn(methods, key)) {\n warn(\n (\"Method \\\"\" + key + \"\\\" has already been defined as a data property.\"),\n vm\n );\n }\n }\n if (props && hasOwn(props, key)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"The data property \\\"\" + key + \"\\\" is already declared as a prop. \" +\n \"Use prop default value instead.\",\n vm\n );\n } else if (!isReserved(key)) {\n proxy(vm, \"_data\", key);\n }\n }\n // observe data\n observe(data, true /* asRootData */);\n}\n\nfunction getData (data, vm) {\n // #7573 disable dep collection when invoking data getters\n pushTarget();\n try {\n return data.call(vm, vm)\n } catch (e) {\n handleError(e, vm, \"data()\");\n return {}\n } finally {\n popTarget();\n }\n}\n\nvar computedWatcherOptions = { lazy: true };\n\nfunction initComputed (vm, computed) {\n // $flow-disable-line\n var watchers = vm._computedWatchers = Object.create(null);\n // computed properties are just getters during SSR\n var isSSR = isServerRendering();\n\n for (var key in computed) {\n var userDef = computed[key];\n var getter = typeof userDef === 'function' ? userDef : userDef.get;\n if (process.env.NODE_ENV !== 'production' && getter == null) {\n warn(\n (\"Getter is missing for computed property \\\"\" + key + \"\\\".\"),\n vm\n );\n }\n\n if (!isSSR) {\n // create internal watcher for the computed property.\n watchers[key] = new Watcher(\n vm,\n getter || noop,\n noop,\n computedWatcherOptions\n );\n }\n\n // component-defined computed properties are already defined on the\n // component prototype. We only need to define computed properties defined\n // at instantiation here.\n if (!(key in vm)) {\n defineComputed(vm, key, userDef);\n } else if (process.env.NODE_ENV !== 'production') {\n if (key in vm.$data) {\n warn((\"The computed property \\\"\" + key + \"\\\" is already defined in data.\"), vm);\n } else if (vm.$options.props && key in vm.$options.props) {\n warn((\"The computed property \\\"\" + key + \"\\\" is already defined as a prop.\"), vm);\n }\n }\n }\n}\n\nfunction defineComputed (\n target,\n key,\n userDef\n) {\n var shouldCache = !isServerRendering();\n if (typeof userDef === 'function') {\n sharedPropertyDefinition.get = shouldCache\n ? createComputedGetter(key)\n : createGetterInvoker(userDef);\n sharedPropertyDefinition.set = noop;\n } else {\n sharedPropertyDefinition.get = userDef.get\n ? shouldCache && userDef.cache !== false\n ? createComputedGetter(key)\n : createGetterInvoker(userDef.get)\n : noop;\n sharedPropertyDefinition.set = userDef.set || noop;\n }\n if (process.env.NODE_ENV !== 'production' &&\n sharedPropertyDefinition.set === noop) {\n sharedPropertyDefinition.set = function () {\n warn(\n (\"Computed property \\\"\" + key + \"\\\" was assigned to but it has no setter.\"),\n this\n );\n };\n }\n Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction createComputedGetter (key) {\n return function computedGetter () {\n var watcher = this._computedWatchers && this._computedWatchers[key];\n if (watcher) {\n if (watcher.dirty) {\n watcher.evaluate();\n }\n if (Dep.target) {\n watcher.depend();\n }\n return watcher.value\n }\n }\n}\n\nfunction createGetterInvoker(fn) {\n return function computedGetter () {\n return fn.call(this, this)\n }\n}\n\nfunction initMethods (vm, methods) {\n var props = vm.$options.props;\n for (var key in methods) {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof methods[key] !== 'function') {\n warn(\n \"Method \\\"\" + key + \"\\\" has type \\\"\" + (typeof methods[key]) + \"\\\" in the component definition. \" +\n \"Did you reference the function correctly?\",\n vm\n );\n }\n if (props && hasOwn(props, key)) {\n warn(\n (\"Method \\\"\" + key + \"\\\" has already been defined as a prop.\"),\n vm\n );\n }\n if ((key in vm) && isReserved(key)) {\n warn(\n \"Method \\\"\" + key + \"\\\" conflicts with an existing Vue instance method. \" +\n \"Avoid defining component methods that start with _ or $.\"\n );\n }\n }\n vm[key] = typeof methods[key] !== 'function' ? noop : bind(methods[key], vm);\n }\n}\n\nfunction initWatch (vm, watch) {\n for (var key in watch) {\n var handler = watch[key];\n if (Array.isArray(handler)) {\n for (var i = 0; i < handler.length; i++) {\n createWatcher(vm, key, handler[i]);\n }\n } else {\n createWatcher(vm, key, handler);\n }\n }\n}\n\nfunction createWatcher (\n vm,\n expOrFn,\n handler,\n options\n) {\n if (isPlainObject(handler)) {\n options = handler;\n handler = handler.handler;\n }\n if (typeof handler === 'string') {\n handler = vm[handler];\n }\n return vm.$watch(expOrFn, handler, options)\n}\n\nfunction stateMixin (Vue) {\n // flow somehow has problems with directly declared definition object\n // when using Object.defineProperty, so we have to procedurally build up\n // the object here.\n var dataDef = {};\n dataDef.get = function () { return this._data };\n var propsDef = {};\n propsDef.get = function () { return this._props };\n if (process.env.NODE_ENV !== 'production') {\n dataDef.set = function () {\n warn(\n 'Avoid replacing instance root $data. ' +\n 'Use nested data properties instead.',\n this\n );\n };\n propsDef.set = function () {\n warn(\"$props is readonly.\", this);\n };\n }\n Object.defineProperty(Vue.prototype, '$data', dataDef);\n Object.defineProperty(Vue.prototype, '$props', propsDef);\n\n Vue.prototype.$set = set;\n Vue.prototype.$delete = del;\n\n Vue.prototype.$watch = function (\n expOrFn,\n cb,\n options\n ) {\n var vm = this;\n if (isPlainObject(cb)) {\n return createWatcher(vm, expOrFn, cb, options)\n }\n options = options || {};\n options.user = true;\n var watcher = new Watcher(vm, expOrFn, cb, options);\n if (options.immediate) {\n try {\n cb.call(vm, watcher.value);\n } catch (error) {\n handleError(error, vm, (\"callback for immediate watcher \\\"\" + (watcher.expression) + \"\\\"\"));\n }\n }\n return function unwatchFn () {\n watcher.teardown();\n }\n };\n}\n\n/* */\n\nvar uid$3 = 0;\n\nfunction initMixin (Vue) {\n Vue.prototype._init = function (options) {\n var vm = this;\n // a uid\n vm._uid = uid$3++;\n\n var startTag, endTag;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n startTag = \"vue-perf-start:\" + (vm._uid);\n endTag = \"vue-perf-end:\" + (vm._uid);\n mark(startTag);\n }\n\n // a flag to avoid this being observed\n vm._isVue = true;\n // merge options\n if (options && options._isComponent) {\n // optimize internal component instantiation\n // since dynamic options merging is pretty slow, and none of the\n // internal component options needs special treatment.\n initInternalComponent(vm, options);\n } else {\n vm.$options = mergeOptions(\n resolveConstructorOptions(vm.constructor),\n options || {},\n vm\n );\n }\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n initProxy(vm);\n } else {\n vm._renderProxy = vm;\n }\n // expose real self\n vm._self = vm;\n initLifecycle(vm);\n initEvents(vm);\n initRender(vm);\n callHook(vm, 'beforeCreate');\n initInjections(vm); // resolve injections before data/props\n initState(vm);\n initProvide(vm); // resolve provide after data/props\n callHook(vm, 'created');\n\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n vm._name = formatComponentName(vm, false);\n mark(endTag);\n measure((\"vue \" + (vm._name) + \" init\"), startTag, endTag);\n }\n\n if (vm.$options.el) {\n vm.$mount(vm.$options.el);\n }\n };\n}\n\nfunction initInternalComponent (vm, options) {\n var opts = vm.$options = Object.create(vm.constructor.options);\n // doing this because it's faster than dynamic enumeration.\n var parentVnode = options._parentVnode;\n opts.parent = options.parent;\n opts._parentVnode = parentVnode;\n\n var vnodeComponentOptions = parentVnode.componentOptions;\n opts.propsData = vnodeComponentOptions.propsData;\n opts._parentListeners = vnodeComponentOptions.listeners;\n opts._renderChildren = vnodeComponentOptions.children;\n opts._componentTag = vnodeComponentOptions.tag;\n\n if (options.render) {\n opts.render = options.render;\n opts.staticRenderFns = options.staticRenderFns;\n }\n}\n\nfunction resolveConstructorOptions (Ctor) {\n var options = Ctor.options;\n if (Ctor.super) {\n var superOptions = resolveConstructorOptions(Ctor.super);\n var cachedSuperOptions = Ctor.superOptions;\n if (superOptions !== cachedSuperOptions) {\n // super option changed,\n // need to resolve new options.\n Ctor.superOptions = superOptions;\n // check if there are any late-modified/attached options (#4976)\n var modifiedOptions = resolveModifiedOptions(Ctor);\n // update base extend options\n if (modifiedOptions) {\n extend(Ctor.extendOptions, modifiedOptions);\n }\n options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);\n if (options.name) {\n options.components[options.name] = Ctor;\n }\n }\n }\n return options\n}\n\nfunction resolveModifiedOptions (Ctor) {\n var modified;\n var latest = Ctor.options;\n var sealed = Ctor.sealedOptions;\n for (var key in latest) {\n if (latest[key] !== sealed[key]) {\n if (!modified) { modified = {}; }\n modified[key] = latest[key];\n }\n }\n return modified\n}\n\nfunction Vue (options) {\n if (process.env.NODE_ENV !== 'production' &&\n !(this instanceof Vue)\n ) {\n warn('Vue is a constructor and should be called with the `new` keyword');\n }\n this._init(options);\n}\n\ninitMixin(Vue);\nstateMixin(Vue);\neventsMixin(Vue);\nlifecycleMixin(Vue);\nrenderMixin(Vue);\n\n/* */\n\nfunction initUse (Vue) {\n Vue.use = function (plugin) {\n var installedPlugins = (this._installedPlugins || (this._installedPlugins = []));\n if (installedPlugins.indexOf(plugin) > -1) {\n return this\n }\n\n // additional parameters\n var args = toArray(arguments, 1);\n args.unshift(this);\n if (typeof plugin.install === 'function') {\n plugin.install.apply(plugin, args);\n } else if (typeof plugin === 'function') {\n plugin.apply(null, args);\n }\n installedPlugins.push(plugin);\n return this\n };\n}\n\n/* */\n\nfunction initMixin$1 (Vue) {\n Vue.mixin = function (mixin) {\n this.options = mergeOptions(this.options, mixin);\n return this\n };\n}\n\n/* */\n\nfunction initExtend (Vue) {\n /**\n * Each instance constructor, including Vue, has a unique\n * cid. This enables us to create wrapped \"child\n * constructors\" for prototypal inheritance and cache them.\n */\n Vue.cid = 0;\n var cid = 1;\n\n /**\n * Class inheritance\n */\n Vue.extend = function (extendOptions) {\n extendOptions = extendOptions || {};\n var Super = this;\n var SuperId = Super.cid;\n var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {});\n if (cachedCtors[SuperId]) {\n return cachedCtors[SuperId]\n }\n\n var name = extendOptions.name || Super.options.name;\n if (process.env.NODE_ENV !== 'production' && name) {\n validateComponentName(name);\n }\n\n var Sub = function VueComponent (options) {\n this._init(options);\n };\n Sub.prototype = Object.create(Super.prototype);\n Sub.prototype.constructor = Sub;\n Sub.cid = cid++;\n Sub.options = mergeOptions(\n Super.options,\n extendOptions\n );\n Sub['super'] = Super;\n\n // For props and computed properties, we define the proxy getters on\n // the Vue instances at extension time, on the extended prototype. This\n // avoids Object.defineProperty calls for each instance created.\n if (Sub.options.props) {\n initProps$1(Sub);\n }\n if (Sub.options.computed) {\n initComputed$1(Sub);\n }\n\n // allow further extension/mixin/plugin usage\n Sub.extend = Super.extend;\n Sub.mixin = Super.mixin;\n Sub.use = Super.use;\n\n // create asset registers, so extended classes\n // can have their private assets too.\n ASSET_TYPES.forEach(function (type) {\n Sub[type] = Super[type];\n });\n // enable recursive self-lookup\n if (name) {\n Sub.options.components[name] = Sub;\n }\n\n // keep a reference to the super options at extension time.\n // later at instantiation we can check if Super's options have\n // been updated.\n Sub.superOptions = Super.options;\n Sub.extendOptions = extendOptions;\n Sub.sealedOptions = extend({}, Sub.options);\n\n // cache constructor\n cachedCtors[SuperId] = Sub;\n return Sub\n };\n}\n\nfunction initProps$1 (Comp) {\n var props = Comp.options.props;\n for (var key in props) {\n proxy(Comp.prototype, \"_props\", key);\n }\n}\n\nfunction initComputed$1 (Comp) {\n var computed = Comp.options.computed;\n for (var key in computed) {\n defineComputed(Comp.prototype, key, computed[key]);\n }\n}\n\n/* */\n\nfunction initAssetRegisters (Vue) {\n /**\n * Create asset registration methods.\n */\n ASSET_TYPES.forEach(function (type) {\n Vue[type] = function (\n id,\n definition\n ) {\n if (!definition) {\n return this.options[type + 's'][id]\n } else {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && type === 'component') {\n validateComponentName(id);\n }\n if (type === 'component' && isPlainObject(definition)) {\n definition.name = definition.name || id;\n definition = this.options._base.extend(definition);\n }\n if (type === 'directive' && typeof definition === 'function') {\n definition = { bind: definition, update: definition };\n }\n this.options[type + 's'][id] = definition;\n return definition\n }\n };\n });\n}\n\n/* */\n\n\n\nfunction getComponentName (opts) {\n return opts && (opts.Ctor.options.name || opts.tag)\n}\n\nfunction matches (pattern, name) {\n if (Array.isArray(pattern)) {\n return pattern.indexOf(name) > -1\n } else if (typeof pattern === 'string') {\n return pattern.split(',').indexOf(name) > -1\n } else if (isRegExp(pattern)) {\n return pattern.test(name)\n }\n /* istanbul ignore next */\n return false\n}\n\nfunction pruneCache (keepAliveInstance, filter) {\n var cache = keepAliveInstance.cache;\n var keys = keepAliveInstance.keys;\n var _vnode = keepAliveInstance._vnode;\n for (var key in cache) {\n var cachedNode = cache[key];\n if (cachedNode) {\n var name = getComponentName(cachedNode.componentOptions);\n if (name && !filter(name)) {\n pruneCacheEntry(cache, key, keys, _vnode);\n }\n }\n }\n}\n\nfunction pruneCacheEntry (\n cache,\n key,\n keys,\n current\n) {\n var cached$$1 = cache[key];\n if (cached$$1 && (!current || cached$$1.tag !== current.tag)) {\n cached$$1.componentInstance.$destroy();\n }\n cache[key] = null;\n remove(keys, key);\n}\n\nvar patternTypes = [String, RegExp, Array];\n\nvar KeepAlive = {\n name: 'keep-alive',\n abstract: true,\n\n props: {\n include: patternTypes,\n exclude: patternTypes,\n max: [String, Number]\n },\n\n created: function created () {\n this.cache = Object.create(null);\n this.keys = [];\n },\n\n destroyed: function destroyed () {\n for (var key in this.cache) {\n pruneCacheEntry(this.cache, key, this.keys);\n }\n },\n\n mounted: function mounted () {\n var this$1 = this;\n\n this.$watch('include', function (val) {\n pruneCache(this$1, function (name) { return matches(val, name); });\n });\n this.$watch('exclude', function (val) {\n pruneCache(this$1, function (name) { return !matches(val, name); });\n });\n },\n\n render: function render () {\n var slot = this.$slots.default;\n var vnode = getFirstComponentChild(slot);\n var componentOptions = vnode && vnode.componentOptions;\n if (componentOptions) {\n // check pattern\n var name = getComponentName(componentOptions);\n var ref = this;\n var include = ref.include;\n var exclude = ref.exclude;\n if (\n // not included\n (include && (!name || !matches(include, name))) ||\n // excluded\n (exclude && name && matches(exclude, name))\n ) {\n return vnode\n }\n\n var ref$1 = this;\n var cache = ref$1.cache;\n var keys = ref$1.keys;\n var key = vnode.key == null\n // same constructor may get registered as different local components\n // so cid alone is not enough (#3269)\n ? componentOptions.Ctor.cid + (componentOptions.tag ? (\"::\" + (componentOptions.tag)) : '')\n : vnode.key;\n if (cache[key]) {\n vnode.componentInstance = cache[key].componentInstance;\n // make current key freshest\n remove(keys, key);\n keys.push(key);\n } else {\n cache[key] = vnode;\n keys.push(key);\n // prune oldest entry\n if (this.max && keys.length > parseInt(this.max)) {\n pruneCacheEntry(cache, keys[0], keys, this._vnode);\n }\n }\n\n vnode.data.keepAlive = true;\n }\n return vnode || (slot && slot[0])\n }\n};\n\nvar builtInComponents = {\n KeepAlive: KeepAlive\n};\n\n/* */\n\nfunction initGlobalAPI (Vue) {\n // config\n var configDef = {};\n configDef.get = function () { return config; };\n if (process.env.NODE_ENV !== 'production') {\n configDef.set = function () {\n warn(\n 'Do not replace the Vue.config object, set individual fields instead.'\n );\n };\n }\n Object.defineProperty(Vue, 'config', configDef);\n\n // exposed util methods.\n // NOTE: these are not considered part of the public API - avoid relying on\n // them unless you are aware of the risk.\n Vue.util = {\n warn: warn,\n extend: extend,\n mergeOptions: mergeOptions,\n defineReactive: defineReactive$$1\n };\n\n Vue.set = set;\n Vue.delete = del;\n Vue.nextTick = nextTick;\n\n // 2.6 explicit observable API\n Vue.observable = function (obj) {\n observe(obj);\n return obj\n };\n\n Vue.options = Object.create(null);\n ASSET_TYPES.forEach(function (type) {\n Vue.options[type + 's'] = Object.create(null);\n });\n\n // this is used to identify the \"base\" constructor to extend all plain-object\n // components with in Weex's multi-instance scenarios.\n Vue.options._base = Vue;\n\n extend(Vue.options.components, builtInComponents);\n\n initUse(Vue);\n initMixin$1(Vue);\n initExtend(Vue);\n initAssetRegisters(Vue);\n}\n\ninitGlobalAPI(Vue);\n\nObject.defineProperty(Vue.prototype, '$isServer', {\n get: isServerRendering\n});\n\nObject.defineProperty(Vue.prototype, '$ssrContext', {\n get: function get () {\n /* istanbul ignore next */\n return this.$vnode && this.$vnode.ssrContext\n }\n});\n\n// expose FunctionalRenderContext for ssr runtime helper installation\nObject.defineProperty(Vue, 'FunctionalRenderContext', {\n value: FunctionalRenderContext\n});\n\nVue.version = '2.6.10';\n\n/* */\n\n// these are reserved for web because they are directly compiled away\n// during template compilation\nvar isReservedAttr = makeMap('style,class');\n\n// attributes that should be using props for binding\nvar acceptValue = makeMap('input,textarea,option,select,progress');\nvar mustUseProp = function (tag, type, attr) {\n return (\n (attr === 'value' && acceptValue(tag)) && type !== 'button' ||\n (attr === 'selected' && tag === 'option') ||\n (attr === 'checked' && tag === 'input') ||\n (attr === 'muted' && tag === 'video')\n )\n};\n\nvar isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck');\n\nvar isValidContentEditableValue = makeMap('events,caret,typing,plaintext-only');\n\nvar convertEnumeratedValue = function (key, value) {\n return isFalsyAttrValue(value) || value === 'false'\n ? 'false'\n // allow arbitrary string value for contenteditable\n : key === 'contenteditable' && isValidContentEditableValue(value)\n ? value\n : 'true'\n};\n\nvar isBooleanAttr = makeMap(\n 'allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' +\n 'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' +\n 'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' +\n 'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' +\n 'required,reversed,scoped,seamless,selected,sortable,translate,' +\n 'truespeed,typemustmatch,visible'\n);\n\nvar xlinkNS = 'http://www.w3.org/1999/xlink';\n\nvar isXlink = function (name) {\n return name.charAt(5) === ':' && name.slice(0, 5) === 'xlink'\n};\n\nvar getXlinkProp = function (name) {\n return isXlink(name) ? name.slice(6, name.length) : ''\n};\n\nvar isFalsyAttrValue = function (val) {\n return val == null || val === false\n};\n\n/* */\n\nfunction genClassForVnode (vnode) {\n var data = vnode.data;\n var parentNode = vnode;\n var childNode = vnode;\n while (isDef(childNode.componentInstance)) {\n childNode = childNode.componentInstance._vnode;\n if (childNode && childNode.data) {\n data = mergeClassData(childNode.data, data);\n }\n }\n while (isDef(parentNode = parentNode.parent)) {\n if (parentNode && parentNode.data) {\n data = mergeClassData(data, parentNode.data);\n }\n }\n return renderClass(data.staticClass, data.class)\n}\n\nfunction mergeClassData (child, parent) {\n return {\n staticClass: concat(child.staticClass, parent.staticClass),\n class: isDef(child.class)\n ? [child.class, parent.class]\n : parent.class\n }\n}\n\nfunction renderClass (\n staticClass,\n dynamicClass\n) {\n if (isDef(staticClass) || isDef(dynamicClass)) {\n return concat(staticClass, stringifyClass(dynamicClass))\n }\n /* istanbul ignore next */\n return ''\n}\n\nfunction concat (a, b) {\n return a ? b ? (a + ' ' + b) : a : (b || '')\n}\n\nfunction stringifyClass (value) {\n if (Array.isArray(value)) {\n return stringifyArray(value)\n }\n if (isObject(value)) {\n return stringifyObject(value)\n }\n if (typeof value === 'string') {\n return value\n }\n /* istanbul ignore next */\n return ''\n}\n\nfunction stringifyArray (value) {\n var res = '';\n var stringified;\n for (var i = 0, l = value.length; i < l; i++) {\n if (isDef(stringified = stringifyClass(value[i])) && stringified !== '') {\n if (res) { res += ' '; }\n res += stringified;\n }\n }\n return res\n}\n\nfunction stringifyObject (value) {\n var res = '';\n for (var key in value) {\n if (value[key]) {\n if (res) { res += ' '; }\n res += key;\n }\n }\n return res\n}\n\n/* */\n\nvar namespaceMap = {\n svg: 'http://www.w3.org/2000/svg',\n math: 'http://www.w3.org/1998/Math/MathML'\n};\n\nvar isHTMLTag = makeMap(\n 'html,body,base,head,link,meta,style,title,' +\n 'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' +\n 'div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,' +\n 'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' +\n 's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' +\n 'embed,object,param,source,canvas,script,noscript,del,ins,' +\n 'caption,col,colgroup,table,thead,tbody,td,th,tr,' +\n 'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' +\n 'output,progress,select,textarea,' +\n 'details,dialog,menu,menuitem,summary,' +\n 'content,element,shadow,template,blockquote,iframe,tfoot'\n);\n\n// this map is intentionally selective, only covering SVG elements that may\n// contain child elements.\nvar isSVG = makeMap(\n 'svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' +\n 'foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' +\n 'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view',\n true\n);\n\nvar isReservedTag = function (tag) {\n return isHTMLTag(tag) || isSVG(tag)\n};\n\nfunction getTagNamespace (tag) {\n if (isSVG(tag)) {\n return 'svg'\n }\n // basic support for MathML\n // note it doesn't support other MathML elements being component roots\n if (tag === 'math') {\n return 'math'\n }\n}\n\nvar unknownElementCache = Object.create(null);\nfunction isUnknownElement (tag) {\n /* istanbul ignore if */\n if (!inBrowser) {\n return true\n }\n if (isReservedTag(tag)) {\n return false\n }\n tag = tag.toLowerCase();\n /* istanbul ignore if */\n if (unknownElementCache[tag] != null) {\n return unknownElementCache[tag]\n }\n var el = document.createElement(tag);\n if (tag.indexOf('-') > -1) {\n // http://stackoverflow.com/a/28210364/1070244\n return (unknownElementCache[tag] = (\n el.constructor === window.HTMLUnknownElement ||\n el.constructor === window.HTMLElement\n ))\n } else {\n return (unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString()))\n }\n}\n\nvar isTextInputType = makeMap('text,number,password,search,email,tel,url');\n\n/* */\n\n/**\n * Query an element selector if it's not an element already.\n */\nfunction query (el) {\n if (typeof el === 'string') {\n var selected = document.querySelector(el);\n if (!selected) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Cannot find element: ' + el\n );\n return document.createElement('div')\n }\n return selected\n } else {\n return el\n }\n}\n\n/* */\n\nfunction createElement$1 (tagName, vnode) {\n var elm = document.createElement(tagName);\n if (tagName !== 'select') {\n return elm\n }\n // false or null will remove the attribute but undefined will not\n if (vnode.data && vnode.data.attrs && vnode.data.attrs.multiple !== undefined) {\n elm.setAttribute('multiple', 'multiple');\n }\n return elm\n}\n\nfunction createElementNS (namespace, tagName) {\n return document.createElementNS(namespaceMap[namespace], tagName)\n}\n\nfunction createTextNode (text) {\n return document.createTextNode(text)\n}\n\nfunction createComment (text) {\n return document.createComment(text)\n}\n\nfunction insertBefore (parentNode, newNode, referenceNode) {\n parentNode.insertBefore(newNode, referenceNode);\n}\n\nfunction removeChild (node, child) {\n node.removeChild(child);\n}\n\nfunction appendChild (node, child) {\n node.appendChild(child);\n}\n\nfunction parentNode (node) {\n return node.parentNode\n}\n\nfunction nextSibling (node) {\n return node.nextSibling\n}\n\nfunction tagName (node) {\n return node.tagName\n}\n\nfunction setTextContent (node, text) {\n node.textContent = text;\n}\n\nfunction setStyleScope (node, scopeId) {\n node.setAttribute(scopeId, '');\n}\n\nvar nodeOps = /*#__PURE__*/Object.freeze({\n createElement: createElement$1,\n createElementNS: createElementNS,\n createTextNode: createTextNode,\n createComment: createComment,\n insertBefore: insertBefore,\n removeChild: removeChild,\n appendChild: appendChild,\n parentNode: parentNode,\n nextSibling: nextSibling,\n tagName: tagName,\n setTextContent: setTextContent,\n setStyleScope: setStyleScope\n});\n\n/* */\n\nvar ref = {\n create: function create (_, vnode) {\n registerRef(vnode);\n },\n update: function update (oldVnode, vnode) {\n if (oldVnode.data.ref !== vnode.data.ref) {\n registerRef(oldVnode, true);\n registerRef(vnode);\n }\n },\n destroy: function destroy (vnode) {\n registerRef(vnode, true);\n }\n};\n\nfunction registerRef (vnode, isRemoval) {\n var key = vnode.data.ref;\n if (!isDef(key)) { return }\n\n var vm = vnode.context;\n var ref = vnode.componentInstance || vnode.elm;\n var refs = vm.$refs;\n if (isRemoval) {\n if (Array.isArray(refs[key])) {\n remove(refs[key], ref);\n } else if (refs[key] === ref) {\n refs[key] = undefined;\n }\n } else {\n if (vnode.data.refInFor) {\n if (!Array.isArray(refs[key])) {\n refs[key] = [ref];\n } else if (refs[key].indexOf(ref) < 0) {\n // $flow-disable-line\n refs[key].push(ref);\n }\n } else {\n refs[key] = ref;\n }\n }\n}\n\n/**\n * Virtual DOM patching algorithm based on Snabbdom by\n * Simon Friis Vindum (@paldepind)\n * Licensed under the MIT License\n * https://github.com/paldepind/snabbdom/blob/master/LICENSE\n *\n * modified by Evan You (@yyx990803)\n *\n * Not type-checking this because this file is perf-critical and the cost\n * of making flow understand it is not worth it.\n */\n\nvar emptyNode = new VNode('', {}, []);\n\nvar hooks = ['create', 'activate', 'update', 'remove', 'destroy'];\n\nfunction sameVnode (a, b) {\n return (\n a.key === b.key && (\n (\n a.tag === b.tag &&\n a.isComment === b.isComment &&\n isDef(a.data) === isDef(b.data) &&\n sameInputType(a, b)\n ) || (\n isTrue(a.isAsyncPlaceholder) &&\n a.asyncFactory === b.asyncFactory &&\n isUndef(b.asyncFactory.error)\n )\n )\n )\n}\n\nfunction sameInputType (a, b) {\n if (a.tag !== 'input') { return true }\n var i;\n var typeA = isDef(i = a.data) && isDef(i = i.attrs) && i.type;\n var typeB = isDef(i = b.data) && isDef(i = i.attrs) && i.type;\n return typeA === typeB || isTextInputType(typeA) && isTextInputType(typeB)\n}\n\nfunction createKeyToOldIdx (children, beginIdx, endIdx) {\n var i, key;\n var map = {};\n for (i = beginIdx; i <= endIdx; ++i) {\n key = children[i].key;\n if (isDef(key)) { map[key] = i; }\n }\n return map\n}\n\nfunction createPatchFunction (backend) {\n var i, j;\n var cbs = {};\n\n var modules = backend.modules;\n var nodeOps = backend.nodeOps;\n\n for (i = 0; i < hooks.length; ++i) {\n cbs[hooks[i]] = [];\n for (j = 0; j < modules.length; ++j) {\n if (isDef(modules[j][hooks[i]])) {\n cbs[hooks[i]].push(modules[j][hooks[i]]);\n }\n }\n }\n\n function emptyNodeAt (elm) {\n return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm)\n }\n\n function createRmCb (childElm, listeners) {\n function remove$$1 () {\n if (--remove$$1.listeners === 0) {\n removeNode(childElm);\n }\n }\n remove$$1.listeners = listeners;\n return remove$$1\n }\n\n function removeNode (el) {\n var parent = nodeOps.parentNode(el);\n // element may have already been removed due to v-html / v-text\n if (isDef(parent)) {\n nodeOps.removeChild(parent, el);\n }\n }\n\n function isUnknownElement$$1 (vnode, inVPre) {\n return (\n !inVPre &&\n !vnode.ns &&\n !(\n config.ignoredElements.length &&\n config.ignoredElements.some(function (ignore) {\n return isRegExp(ignore)\n ? ignore.test(vnode.tag)\n : ignore === vnode.tag\n })\n ) &&\n config.isUnknownElement(vnode.tag)\n )\n }\n\n var creatingElmInVPre = 0;\n\n function createElm (\n vnode,\n insertedVnodeQueue,\n parentElm,\n refElm,\n nested,\n ownerArray,\n index\n ) {\n if (isDef(vnode.elm) && isDef(ownerArray)) {\n // This vnode was used in a previous render!\n // now it's used as a new node, overwriting its elm would cause\n // potential patch errors down the road when it's used as an insertion\n // reference node. Instead, we clone the node on-demand before creating\n // associated DOM element for it.\n vnode = ownerArray[index] = cloneVNode(vnode);\n }\n\n vnode.isRootInsert = !nested; // for transition enter check\n if (createComponent(vnode, insertedVnodeQueue, parentElm, refElm)) {\n return\n }\n\n var data = vnode.data;\n var children = vnode.children;\n var tag = vnode.tag;\n if (isDef(tag)) {\n if (process.env.NODE_ENV !== 'production') {\n if (data && data.pre) {\n creatingElmInVPre++;\n }\n if (isUnknownElement$$1(vnode, creatingElmInVPre)) {\n warn(\n 'Unknown custom element: <' + tag + '> - did you ' +\n 'register the component correctly? For recursive components, ' +\n 'make sure to provide the \"name\" option.',\n vnode.context\n );\n }\n }\n\n vnode.elm = vnode.ns\n ? nodeOps.createElementNS(vnode.ns, tag)\n : nodeOps.createElement(tag, vnode);\n setScope(vnode);\n\n /* istanbul ignore if */\n {\n createChildren(vnode, children, insertedVnodeQueue);\n if (isDef(data)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n }\n insert(parentElm, vnode.elm, refElm);\n }\n\n if (process.env.NODE_ENV !== 'production' && data && data.pre) {\n creatingElmInVPre--;\n }\n } else if (isTrue(vnode.isComment)) {\n vnode.elm = nodeOps.createComment(vnode.text);\n insert(parentElm, vnode.elm, refElm);\n } else {\n vnode.elm = nodeOps.createTextNode(vnode.text);\n insert(parentElm, vnode.elm, refElm);\n }\n }\n\n function createComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n var i = vnode.data;\n if (isDef(i)) {\n var isReactivated = isDef(vnode.componentInstance) && i.keepAlive;\n if (isDef(i = i.hook) && isDef(i = i.init)) {\n i(vnode, false /* hydrating */);\n }\n // after calling the init hook, if the vnode is a child component\n // it should've created a child instance and mounted it. the child\n // component also has set the placeholder vnode's elm.\n // in that case we can just return the element and be done.\n if (isDef(vnode.componentInstance)) {\n initComponent(vnode, insertedVnodeQueue);\n insert(parentElm, vnode.elm, refElm);\n if (isTrue(isReactivated)) {\n reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm);\n }\n return true\n }\n }\n }\n\n function initComponent (vnode, insertedVnodeQueue) {\n if (isDef(vnode.data.pendingInsert)) {\n insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert);\n vnode.data.pendingInsert = null;\n }\n vnode.elm = vnode.componentInstance.$el;\n if (isPatchable(vnode)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n setScope(vnode);\n } else {\n // empty component root.\n // skip all element-related modules except for ref (#3455)\n registerRef(vnode);\n // make sure to invoke the insert hook\n insertedVnodeQueue.push(vnode);\n }\n }\n\n function reactivateComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n var i;\n // hack for #4339: a reactivated component with inner transition\n // does not trigger because the inner node's created hooks are not called\n // again. It's not ideal to involve module-specific logic in here but\n // there doesn't seem to be a better way to do it.\n var innerNode = vnode;\n while (innerNode.componentInstance) {\n innerNode = innerNode.componentInstance._vnode;\n if (isDef(i = innerNode.data) && isDef(i = i.transition)) {\n for (i = 0; i < cbs.activate.length; ++i) {\n cbs.activate[i](emptyNode, innerNode);\n }\n insertedVnodeQueue.push(innerNode);\n break\n }\n }\n // unlike a newly created component,\n // a reactivated keep-alive component doesn't insert itself\n insert(parentElm, vnode.elm, refElm);\n }\n\n function insert (parent, elm, ref$$1) {\n if (isDef(parent)) {\n if (isDef(ref$$1)) {\n if (nodeOps.parentNode(ref$$1) === parent) {\n nodeOps.insertBefore(parent, elm, ref$$1);\n }\n } else {\n nodeOps.appendChild(parent, elm);\n }\n }\n }\n\n function createChildren (vnode, children, insertedVnodeQueue) {\n if (Array.isArray(children)) {\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(children);\n }\n for (var i = 0; i < children.length; ++i) {\n createElm(children[i], insertedVnodeQueue, vnode.elm, null, true, children, i);\n }\n } else if (isPrimitive(vnode.text)) {\n nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(String(vnode.text)));\n }\n }\n\n function isPatchable (vnode) {\n while (vnode.componentInstance) {\n vnode = vnode.componentInstance._vnode;\n }\n return isDef(vnode.tag)\n }\n\n function invokeCreateHooks (vnode, insertedVnodeQueue) {\n for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n cbs.create[i$1](emptyNode, vnode);\n }\n i = vnode.data.hook; // Reuse variable\n if (isDef(i)) {\n if (isDef(i.create)) { i.create(emptyNode, vnode); }\n if (isDef(i.insert)) { insertedVnodeQueue.push(vnode); }\n }\n }\n\n // set scope id attribute for scoped CSS.\n // this is implemented as a special case to avoid the overhead\n // of going through the normal attribute patching process.\n function setScope (vnode) {\n var i;\n if (isDef(i = vnode.fnScopeId)) {\n nodeOps.setStyleScope(vnode.elm, i);\n } else {\n var ancestor = vnode;\n while (ancestor) {\n if (isDef(i = ancestor.context) && isDef(i = i.$options._scopeId)) {\n nodeOps.setStyleScope(vnode.elm, i);\n }\n ancestor = ancestor.parent;\n }\n }\n // for slot content they should also get the scopeId from the host instance.\n if (isDef(i = activeInstance) &&\n i !== vnode.context &&\n i !== vnode.fnContext &&\n isDef(i = i.$options._scopeId)\n ) {\n nodeOps.setStyleScope(vnode.elm, i);\n }\n }\n\n function addVnodes (parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) {\n for (; startIdx <= endIdx; ++startIdx) {\n createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm, false, vnodes, startIdx);\n }\n }\n\n function invokeDestroyHook (vnode) {\n var i, j;\n var data = vnode.data;\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.destroy)) { i(vnode); }\n for (i = 0; i < cbs.destroy.length; ++i) { cbs.destroy[i](vnode); }\n }\n if (isDef(i = vnode.children)) {\n for (j = 0; j < vnode.children.length; ++j) {\n invokeDestroyHook(vnode.children[j]);\n }\n }\n }\n\n function removeVnodes (parentElm, vnodes, startIdx, endIdx) {\n for (; startIdx <= endIdx; ++startIdx) {\n var ch = vnodes[startIdx];\n if (isDef(ch)) {\n if (isDef(ch.tag)) {\n removeAndInvokeRemoveHook(ch);\n invokeDestroyHook(ch);\n } else { // Text node\n removeNode(ch.elm);\n }\n }\n }\n }\n\n function removeAndInvokeRemoveHook (vnode, rm) {\n if (isDef(rm) || isDef(vnode.data)) {\n var i;\n var listeners = cbs.remove.length + 1;\n if (isDef(rm)) {\n // we have a recursively passed down rm callback\n // increase the listeners count\n rm.listeners += listeners;\n } else {\n // directly removing\n rm = createRmCb(vnode.elm, listeners);\n }\n // recursively invoke hooks on child component root node\n if (isDef(i = vnode.componentInstance) && isDef(i = i._vnode) && isDef(i.data)) {\n removeAndInvokeRemoveHook(i, rm);\n }\n for (i = 0; i < cbs.remove.length; ++i) {\n cbs.remove[i](vnode, rm);\n }\n if (isDef(i = vnode.data.hook) && isDef(i = i.remove)) {\n i(vnode, rm);\n } else {\n rm();\n }\n } else {\n removeNode(vnode.elm);\n }\n }\n\n function updateChildren (parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) {\n var oldStartIdx = 0;\n var newStartIdx = 0;\n var oldEndIdx = oldCh.length - 1;\n var oldStartVnode = oldCh[0];\n var oldEndVnode = oldCh[oldEndIdx];\n var newEndIdx = newCh.length - 1;\n var newStartVnode = newCh[0];\n var newEndVnode = newCh[newEndIdx];\n var oldKeyToIdx, idxInOld, vnodeToMove, refElm;\n\n // removeOnly is a special flag used only by <transition-group>\n // to ensure removed elements stay in correct relative positions\n // during leaving transitions\n var canMove = !removeOnly;\n\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(newCh);\n }\n\n while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n if (isUndef(oldStartVnode)) {\n oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left\n } else if (isUndef(oldEndVnode)) {\n oldEndVnode = oldCh[--oldEndIdx];\n } else if (sameVnode(oldStartVnode, newStartVnode)) {\n patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n oldStartVnode = oldCh[++oldStartIdx];\n newStartVnode = newCh[++newStartIdx];\n } else if (sameVnode(oldEndVnode, newEndVnode)) {\n patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);\n oldEndVnode = oldCh[--oldEndIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldStartVnode, newEndVnode)) { // Vnode moved right\n patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);\n canMove && nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm));\n oldStartVnode = oldCh[++oldStartIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldEndVnode, newStartVnode)) { // Vnode moved left\n patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n canMove && nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);\n oldEndVnode = oldCh[--oldEndIdx];\n newStartVnode = newCh[++newStartIdx];\n } else {\n if (isUndef(oldKeyToIdx)) { oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx); }\n idxInOld = isDef(newStartVnode.key)\n ? oldKeyToIdx[newStartVnode.key]\n : findIdxInOld(newStartVnode, oldCh, oldStartIdx, oldEndIdx);\n if (isUndef(idxInOld)) { // New element\n createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n } else {\n vnodeToMove = oldCh[idxInOld];\n if (sameVnode(vnodeToMove, newStartVnode)) {\n patchVnode(vnodeToMove, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n oldCh[idxInOld] = undefined;\n canMove && nodeOps.insertBefore(parentElm, vnodeToMove.elm, oldStartVnode.elm);\n } else {\n // same key but different element. treat as new element\n createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n }\n }\n newStartVnode = newCh[++newStartIdx];\n }\n }\n if (oldStartIdx > oldEndIdx) {\n refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm;\n addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);\n } else if (newStartIdx > newEndIdx) {\n removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx);\n }\n }\n\n function checkDuplicateKeys (children) {\n var seenKeys = {};\n for (var i = 0; i < children.length; i++) {\n var vnode = children[i];\n var key = vnode.key;\n if (isDef(key)) {\n if (seenKeys[key]) {\n warn(\n (\"Duplicate keys detected: '\" + key + \"'. This may cause an update error.\"),\n vnode.context\n );\n } else {\n seenKeys[key] = true;\n }\n }\n }\n }\n\n function findIdxInOld (node, oldCh, start, end) {\n for (var i = start; i < end; i++) {\n var c = oldCh[i];\n if (isDef(c) && sameVnode(node, c)) { return i }\n }\n }\n\n function patchVnode (\n oldVnode,\n vnode,\n insertedVnodeQueue,\n ownerArray,\n index,\n removeOnly\n ) {\n if (oldVnode === vnode) {\n return\n }\n\n if (isDef(vnode.elm) && isDef(ownerArray)) {\n // clone reused vnode\n vnode = ownerArray[index] = cloneVNode(vnode);\n }\n\n var elm = vnode.elm = oldVnode.elm;\n\n if (isTrue(oldVnode.isAsyncPlaceholder)) {\n if (isDef(vnode.asyncFactory.resolved)) {\n hydrate(oldVnode.elm, vnode, insertedVnodeQueue);\n } else {\n vnode.isAsyncPlaceholder = true;\n }\n return\n }\n\n // reuse element for static trees.\n // note we only do this if the vnode is cloned -\n // if the new node is not cloned it means the render functions have been\n // reset by the hot-reload-api and we need to do a proper re-render.\n if (isTrue(vnode.isStatic) &&\n isTrue(oldVnode.isStatic) &&\n vnode.key === oldVnode.key &&\n (isTrue(vnode.isCloned) || isTrue(vnode.isOnce))\n ) {\n vnode.componentInstance = oldVnode.componentInstance;\n return\n }\n\n var i;\n var data = vnode.data;\n if (isDef(data) && isDef(i = data.hook) && isDef(i = i.prepatch)) {\n i(oldVnode, vnode);\n }\n\n var oldCh = oldVnode.children;\n var ch = vnode.children;\n if (isDef(data) && isPatchable(vnode)) {\n for (i = 0; i < cbs.update.length; ++i) { cbs.update[i](oldVnode, vnode); }\n if (isDef(i = data.hook) && isDef(i = i.update)) { i(oldVnode, vnode); }\n }\n if (isUndef(vnode.text)) {\n if (isDef(oldCh) && isDef(ch)) {\n if (oldCh !== ch) { updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly); }\n } else if (isDef(ch)) {\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(ch);\n }\n if (isDef(oldVnode.text)) { nodeOps.setTextContent(elm, ''); }\n addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);\n } else if (isDef(oldCh)) {\n removeVnodes(elm, oldCh, 0, oldCh.length - 1);\n } else if (isDef(oldVnode.text)) {\n nodeOps.setTextContent(elm, '');\n }\n } else if (oldVnode.text !== vnode.text) {\n nodeOps.setTextContent(elm, vnode.text);\n }\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.postpatch)) { i(oldVnode, vnode); }\n }\n }\n\n function invokeInsertHook (vnode, queue, initial) {\n // delay insert hooks for component root nodes, invoke them after the\n // element is really inserted\n if (isTrue(initial) && isDef(vnode.parent)) {\n vnode.parent.data.pendingInsert = queue;\n } else {\n for (var i = 0; i < queue.length; ++i) {\n queue[i].data.hook.insert(queue[i]);\n }\n }\n }\n\n var hydrationBailed = false;\n // list of modules that can skip create hook during hydration because they\n // are already rendered on the client or has no need for initialization\n // Note: style is excluded because it relies on initial clone for future\n // deep updates (#7063).\n var isRenderedModule = makeMap('attrs,class,staticClass,staticStyle,key');\n\n // Note: this is a browser-only function so we can assume elms are DOM nodes.\n function hydrate (elm, vnode, insertedVnodeQueue, inVPre) {\n var i;\n var tag = vnode.tag;\n var data = vnode.data;\n var children = vnode.children;\n inVPre = inVPre || (data && data.pre);\n vnode.elm = elm;\n\n if (isTrue(vnode.isComment) && isDef(vnode.asyncFactory)) {\n vnode.isAsyncPlaceholder = true;\n return true\n }\n // assert node match\n if (process.env.NODE_ENV !== 'production') {\n if (!assertNodeMatch(elm, vnode, inVPre)) {\n return false\n }\n }\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.init)) { i(vnode, true /* hydrating */); }\n if (isDef(i = vnode.componentInstance)) {\n // child component. it should have hydrated its own tree.\n initComponent(vnode, insertedVnodeQueue);\n return true\n }\n }\n if (isDef(tag)) {\n if (isDef(children)) {\n // empty element, allow client to pick up and populate children\n if (!elm.hasChildNodes()) {\n createChildren(vnode, children, insertedVnodeQueue);\n } else {\n // v-html and domProps: innerHTML\n if (isDef(i = data) && isDef(i = i.domProps) && isDef(i = i.innerHTML)) {\n if (i !== elm.innerHTML) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' &&\n typeof console !== 'undefined' &&\n !hydrationBailed\n ) {\n hydrationBailed = true;\n console.warn('Parent: ', elm);\n console.warn('server innerHTML: ', i);\n console.warn('client innerHTML: ', elm.innerHTML);\n }\n return false\n }\n } else {\n // iterate and compare children lists\n var childrenMatch = true;\n var childNode = elm.firstChild;\n for (var i$1 = 0; i$1 < children.length; i$1++) {\n if (!childNode || !hydrate(childNode, children[i$1], insertedVnodeQueue, inVPre)) {\n childrenMatch = false;\n break\n }\n childNode = childNode.nextSibling;\n }\n // if childNode is not null, it means the actual childNodes list is\n // longer than the virtual children list.\n if (!childrenMatch || childNode) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' &&\n typeof console !== 'undefined' &&\n !hydrationBailed\n ) {\n hydrationBailed = true;\n console.warn('Parent: ', elm);\n console.warn('Mismatching childNodes vs. VNodes: ', elm.childNodes, children);\n }\n return false\n }\n }\n }\n }\n if (isDef(data)) {\n var fullInvoke = false;\n for (var key in data) {\n if (!isRenderedModule(key)) {\n fullInvoke = true;\n invokeCreateHooks(vnode, insertedVnodeQueue);\n break\n }\n }\n if (!fullInvoke && data['class']) {\n // ensure collecting deps for deep class bindings for future updates\n traverse(data['class']);\n }\n }\n } else if (elm.data !== vnode.text) {\n elm.data = vnode.text;\n }\n return true\n }\n\n function assertNodeMatch (node, vnode, inVPre) {\n if (isDef(vnode.tag)) {\n return vnode.tag.indexOf('vue-component') === 0 || (\n !isUnknownElement$$1(vnode, inVPre) &&\n vnode.tag.toLowerCase() === (node.tagName && node.tagName.toLowerCase())\n )\n } else {\n return node.nodeType === (vnode.isComment ? 8 : 3)\n }\n }\n\n return function patch (oldVnode, vnode, hydrating, removeOnly) {\n if (isUndef(vnode)) {\n if (isDef(oldVnode)) { invokeDestroyHook(oldVnode); }\n return\n }\n\n var isInitialPatch = false;\n var insertedVnodeQueue = [];\n\n if (isUndef(oldVnode)) {\n // empty mount (likely as component), create new root element\n isInitialPatch = true;\n createElm(vnode, insertedVnodeQueue);\n } else {\n var isRealElement = isDef(oldVnode.nodeType);\n if (!isRealElement && sameVnode(oldVnode, vnode)) {\n // patch existing root node\n patchVnode(oldVnode, vnode, insertedVnodeQueue, null, null, removeOnly);\n } else {\n if (isRealElement) {\n // mounting to a real element\n // check if this is server-rendered content and if we can perform\n // a successful hydration.\n if (oldVnode.nodeType === 1 && oldVnode.hasAttribute(SSR_ATTR)) {\n oldVnode.removeAttribute(SSR_ATTR);\n hydrating = true;\n }\n if (isTrue(hydrating)) {\n if (hydrate(oldVnode, vnode, insertedVnodeQueue)) {\n invokeInsertHook(vnode, insertedVnodeQueue, true);\n return oldVnode\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n 'The client-side rendered virtual DOM tree is not matching ' +\n 'server-rendered content. This is likely caused by incorrect ' +\n 'HTML markup, for example nesting block-level elements inside ' +\n '<p>, or missing <tbody>. Bailing hydration and performing ' +\n 'full client-side render.'\n );\n }\n }\n // either not server-rendered, or hydration failed.\n // create an empty node and replace it\n oldVnode = emptyNodeAt(oldVnode);\n }\n\n // replacing existing element\n var oldElm = oldVnode.elm;\n var parentElm = nodeOps.parentNode(oldElm);\n\n // create new node\n createElm(\n vnode,\n insertedVnodeQueue,\n // extremely rare edge case: do not insert if old element is in a\n // leaving transition. Only happens when combining transition +\n // keep-alive + HOCs. (#4590)\n oldElm._leaveCb ? null : parentElm,\n nodeOps.nextSibling(oldElm)\n );\n\n // update parent placeholder node element, recursively\n if (isDef(vnode.parent)) {\n var ancestor = vnode.parent;\n var patchable = isPatchable(vnode);\n while (ancestor) {\n for (var i = 0; i < cbs.destroy.length; ++i) {\n cbs.destroy[i](ancestor);\n }\n ancestor.elm = vnode.elm;\n if (patchable) {\n for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n cbs.create[i$1](emptyNode, ancestor);\n }\n // #6513\n // invoke insert hooks that may have been merged by create hooks.\n // e.g. for directives that uses the \"inserted\" hook.\n var insert = ancestor.data.hook.insert;\n if (insert.merged) {\n // start at index 1 to avoid re-invoking component mounted hook\n for (var i$2 = 1; i$2 < insert.fns.length; i$2++) {\n insert.fns[i$2]();\n }\n }\n } else {\n registerRef(ancestor);\n }\n ancestor = ancestor.parent;\n }\n }\n\n // destroy old node\n if (isDef(parentElm)) {\n removeVnodes(parentElm, [oldVnode], 0, 0);\n } else if (isDef(oldVnode.tag)) {\n invokeDestroyHook(oldVnode);\n }\n }\n }\n\n invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch);\n return vnode.elm\n }\n}\n\n/* */\n\nvar directives = {\n create: updateDirectives,\n update: updateDirectives,\n destroy: function unbindDirectives (vnode) {\n updateDirectives(vnode, emptyNode);\n }\n};\n\nfunction updateDirectives (oldVnode, vnode) {\n if (oldVnode.data.directives || vnode.data.directives) {\n _update(oldVnode, vnode);\n }\n}\n\nfunction _update (oldVnode, vnode) {\n var isCreate = oldVnode === emptyNode;\n var isDestroy = vnode === emptyNode;\n var oldDirs = normalizeDirectives$1(oldVnode.data.directives, oldVnode.context);\n var newDirs = normalizeDirectives$1(vnode.data.directives, vnode.context);\n\n var dirsWithInsert = [];\n var dirsWithPostpatch = [];\n\n var key, oldDir, dir;\n for (key in newDirs) {\n oldDir = oldDirs[key];\n dir = newDirs[key];\n if (!oldDir) {\n // new directive, bind\n callHook$1(dir, 'bind', vnode, oldVnode);\n if (dir.def && dir.def.inserted) {\n dirsWithInsert.push(dir);\n }\n } else {\n // existing directive, update\n dir.oldValue = oldDir.value;\n dir.oldArg = oldDir.arg;\n callHook$1(dir, 'update', vnode, oldVnode);\n if (dir.def && dir.def.componentUpdated) {\n dirsWithPostpatch.push(dir);\n }\n }\n }\n\n if (dirsWithInsert.length) {\n var callInsert = function () {\n for (var i = 0; i < dirsWithInsert.length; i++) {\n callHook$1(dirsWithInsert[i], 'inserted', vnode, oldVnode);\n }\n };\n if (isCreate) {\n mergeVNodeHook(vnode, 'insert', callInsert);\n } else {\n callInsert();\n }\n }\n\n if (dirsWithPostpatch.length) {\n mergeVNodeHook(vnode, 'postpatch', function () {\n for (var i = 0; i < dirsWithPostpatch.length; i++) {\n callHook$1(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode);\n }\n });\n }\n\n if (!isCreate) {\n for (key in oldDirs) {\n if (!newDirs[key]) {\n // no longer present, unbind\n callHook$1(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy);\n }\n }\n }\n}\n\nvar emptyModifiers = Object.create(null);\n\nfunction normalizeDirectives$1 (\n dirs,\n vm\n) {\n var res = Object.create(null);\n if (!dirs) {\n // $flow-disable-line\n return res\n }\n var i, dir;\n for (i = 0; i < dirs.length; i++) {\n dir = dirs[i];\n if (!dir.modifiers) {\n // $flow-disable-line\n dir.modifiers = emptyModifiers;\n }\n res[getRawDirName(dir)] = dir;\n dir.def = resolveAsset(vm.$options, 'directives', dir.name, true);\n }\n // $flow-disable-line\n return res\n}\n\nfunction getRawDirName (dir) {\n return dir.rawName || ((dir.name) + \".\" + (Object.keys(dir.modifiers || {}).join('.')))\n}\n\nfunction callHook$1 (dir, hook, vnode, oldVnode, isDestroy) {\n var fn = dir.def && dir.def[hook];\n if (fn) {\n try {\n fn(vnode.elm, dir, vnode, oldVnode, isDestroy);\n } catch (e) {\n handleError(e, vnode.context, (\"directive \" + (dir.name) + \" \" + hook + \" hook\"));\n }\n }\n}\n\nvar baseModules = [\n ref,\n directives\n];\n\n/* */\n\nfunction updateAttrs (oldVnode, vnode) {\n var opts = vnode.componentOptions;\n if (isDef(opts) && opts.Ctor.options.inheritAttrs === false) {\n return\n }\n if (isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs)) {\n return\n }\n var key, cur, old;\n var elm = vnode.elm;\n var oldAttrs = oldVnode.data.attrs || {};\n var attrs = vnode.data.attrs || {};\n // clone observed objects, as the user probably wants to mutate it\n if (isDef(attrs.__ob__)) {\n attrs = vnode.data.attrs = extend({}, attrs);\n }\n\n for (key in attrs) {\n cur = attrs[key];\n old = oldAttrs[key];\n if (old !== cur) {\n setAttr(elm, key, cur);\n }\n }\n // #4391: in IE9, setting type can reset value for input[type=radio]\n // #6666: IE/Edge forces progress value down to 1 before setting a max\n /* istanbul ignore if */\n if ((isIE || isEdge) && attrs.value !== oldAttrs.value) {\n setAttr(elm, 'value', attrs.value);\n }\n for (key in oldAttrs) {\n if (isUndef(attrs[key])) {\n if (isXlink(key)) {\n elm.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else if (!isEnumeratedAttr(key)) {\n elm.removeAttribute(key);\n }\n }\n }\n}\n\nfunction setAttr (el, key, value) {\n if (el.tagName.indexOf('-') > -1) {\n baseSetAttr(el, key, value);\n } else if (isBooleanAttr(key)) {\n // set attribute for blank value\n // e.g. <option disabled>Select one</option>\n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n // technically allowfullscreen is a boolean attribute for <iframe>,\n // but Flash expects a value of \"true\" when used on <embed> tag\n value = key === 'allowfullscreen' && el.tagName === 'EMBED'\n ? 'true'\n : key;\n el.setAttribute(key, value);\n }\n } else if (isEnumeratedAttr(key)) {\n el.setAttribute(key, convertEnumeratedValue(key, value));\n } else if (isXlink(key)) {\n if (isFalsyAttrValue(value)) {\n el.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else {\n el.setAttributeNS(xlinkNS, key, value);\n }\n } else {\n baseSetAttr(el, key, value);\n }\n}\n\nfunction baseSetAttr (el, key, value) {\n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n // #7138: IE10 & 11 fires input event when setting placeholder on\n // <textarea>... block the first input event and remove the blocker\n // immediately.\n /* istanbul ignore if */\n if (\n isIE && !isIE9 &&\n el.tagName === 'TEXTAREA' &&\n key === 'placeholder' && value !== '' && !el.__ieph\n ) {\n var blocker = function (e) {\n e.stopImmediatePropagation();\n el.removeEventListener('input', blocker);\n };\n el.addEventListener('input', blocker);\n // $flow-disable-line\n el.__ieph = true; /* IE placeholder patched */\n }\n el.setAttribute(key, value);\n }\n}\n\nvar attrs = {\n create: updateAttrs,\n update: updateAttrs\n};\n\n/* */\n\nfunction updateClass (oldVnode, vnode) {\n var el = vnode.elm;\n var data = vnode.data;\n var oldData = oldVnode.data;\n if (\n isUndef(data.staticClass) &&\n isUndef(data.class) && (\n isUndef(oldData) || (\n isUndef(oldData.staticClass) &&\n isUndef(oldData.class)\n )\n )\n ) {\n return\n }\n\n var cls = genClassForVnode(vnode);\n\n // handle transition classes\n var transitionClass = el._transitionClasses;\n if (isDef(transitionClass)) {\n cls = concat(cls, stringifyClass(transitionClass));\n }\n\n // set the class\n if (cls !== el._prevClass) {\n el.setAttribute('class', cls);\n el._prevClass = cls;\n }\n}\n\nvar klass = {\n create: updateClass,\n update: updateClass\n};\n\n/* */\n\n/* */\n\n/* */\n\n/* */\n\n// in some cases, the event used has to be determined at runtime\n// so we used some reserved tokens during compile.\nvar RANGE_TOKEN = '__r';\nvar CHECKBOX_RADIO_TOKEN = '__c';\n\n/* */\n\n// normalize v-model event tokens that can only be determined at runtime.\n// it's important to place the event as the first in the array because\n// the whole point is ensuring the v-model callback gets called before\n// user-attached handlers.\nfunction normalizeEvents (on) {\n /* istanbul ignore if */\n if (isDef(on[RANGE_TOKEN])) {\n // IE input[type=range] only supports `change` event\n var event = isIE ? 'change' : 'input';\n on[event] = [].concat(on[RANGE_TOKEN], on[event] || []);\n delete on[RANGE_TOKEN];\n }\n // This was originally intended to fix #4521 but no longer necessary\n // after 2.5. Keeping it for backwards compat with generated code from < 2.4\n /* istanbul ignore if */\n if (isDef(on[CHECKBOX_RADIO_TOKEN])) {\n on.change = [].concat(on[CHECKBOX_RADIO_TOKEN], on.change || []);\n delete on[CHECKBOX_RADIO_TOKEN];\n }\n}\n\nvar target$1;\n\nfunction createOnceHandler$1 (event, handler, capture) {\n var _target = target$1; // save current target element in closure\n return function onceHandler () {\n var res = handler.apply(null, arguments);\n if (res !== null) {\n remove$2(event, onceHandler, capture, _target);\n }\n }\n}\n\n// #9446: Firefox <= 53 (in particular, ESR 52) has incorrect Event.timeStamp\n// implementation and does not fire microtasks in between event propagation, so\n// safe to exclude.\nvar useMicrotaskFix = isUsingMicroTask && !(isFF && Number(isFF[1]) <= 53);\n\nfunction add$1 (\n name,\n handler,\n capture,\n passive\n) {\n // async edge case #6566: inner click event triggers patch, event handler\n // attached to outer element during patch, and triggered again. This\n // happens because browsers fire microtask ticks between event propagation.\n // the solution is simple: we save the timestamp when a handler is attached,\n // and the handler would only fire if the event passed to it was fired\n // AFTER it was attached.\n if (useMicrotaskFix) {\n var attachedTimestamp = currentFlushTimestamp;\n var original = handler;\n handler = original._wrapper = function (e) {\n if (\n // no bubbling, should always fire.\n // this is just a safety net in case event.timeStamp is unreliable in\n // certain weird environments...\n e.target === e.currentTarget ||\n // event is fired after handler attachment\n e.timeStamp >= attachedTimestamp ||\n // bail for environments that have buggy event.timeStamp implementations\n // #9462 iOS 9 bug: event.timeStamp is 0 after history.pushState\n // #9681 QtWebEngine event.timeStamp is negative value\n e.timeStamp <= 0 ||\n // #9448 bail if event is fired in another document in a multi-page\n // electron/nw.js app, since event.timeStamp will be using a different\n // starting reference\n e.target.ownerDocument !== document\n ) {\n return original.apply(this, arguments)\n }\n };\n }\n target$1.addEventListener(\n name,\n handler,\n supportsPassive\n ? { capture: capture, passive: passive }\n : capture\n );\n}\n\nfunction remove$2 (\n name,\n handler,\n capture,\n _target\n) {\n (_target || target$1).removeEventListener(\n name,\n handler._wrapper || handler,\n capture\n );\n}\n\nfunction updateDOMListeners (oldVnode, vnode) {\n if (isUndef(oldVnode.data.on) && isUndef(vnode.data.on)) {\n return\n }\n var on = vnode.data.on || {};\n var oldOn = oldVnode.data.on || {};\n target$1 = vnode.elm;\n normalizeEvents(on);\n updateListeners(on, oldOn, add$1, remove$2, createOnceHandler$1, vnode.context);\n target$1 = undefined;\n}\n\nvar events = {\n create: updateDOMListeners,\n update: updateDOMListeners\n};\n\n/* */\n\nvar svgContainer;\n\nfunction updateDOMProps (oldVnode, vnode) {\n if (isUndef(oldVnode.data.domProps) && isUndef(vnode.data.domProps)) {\n return\n }\n var key, cur;\n var elm = vnode.elm;\n var oldProps = oldVnode.data.domProps || {};\n var props = vnode.data.domProps || {};\n // clone observed objects, as the user probably wants to mutate it\n if (isDef(props.__ob__)) {\n props = vnode.data.domProps = extend({}, props);\n }\n\n for (key in oldProps) {\n if (!(key in props)) {\n elm[key] = '';\n }\n }\n\n for (key in props) {\n cur = props[key];\n // ignore children if the node has textContent or innerHTML,\n // as these will throw away existing DOM nodes and cause removal errors\n // on subsequent patches (#3360)\n if (key === 'textContent' || key === 'innerHTML') {\n if (vnode.children) { vnode.children.length = 0; }\n if (cur === oldProps[key]) { continue }\n // #6601 work around Chrome version <= 55 bug where single textNode\n // replaced by innerHTML/textContent retains its parentNode property\n if (elm.childNodes.length === 1) {\n elm.removeChild(elm.childNodes[0]);\n }\n }\n\n if (key === 'value' && elm.tagName !== 'PROGRESS') {\n // store value as _value as well since\n // non-string values will be stringified\n elm._value = cur;\n // avoid resetting cursor position when value is the same\n var strCur = isUndef(cur) ? '' : String(cur);\n if (shouldUpdateValue(elm, strCur)) {\n elm.value = strCur;\n }\n } else if (key === 'innerHTML' && isSVG(elm.tagName) && isUndef(elm.innerHTML)) {\n // IE doesn't support innerHTML for SVG elements\n svgContainer = svgContainer || document.createElement('div');\n svgContainer.innerHTML = \"<svg>\" + cur + \"</svg>\";\n var svg = svgContainer.firstChild;\n while (elm.firstChild) {\n elm.removeChild(elm.firstChild);\n }\n while (svg.firstChild) {\n elm.appendChild(svg.firstChild);\n }\n } else if (\n // skip the update if old and new VDOM state is the same.\n // `value` is handled separately because the DOM value may be temporarily\n // out of sync with VDOM state due to focus, composition and modifiers.\n // This #4521 by skipping the unnecesarry `checked` update.\n cur !== oldProps[key]\n ) {\n // some property updates can throw\n // e.g. `value` on <progress> w/ non-finite value\n try {\n elm[key] = cur;\n } catch (e) {}\n }\n }\n}\n\n// check platforms/web/util/attrs.js acceptValue\n\n\nfunction shouldUpdateValue (elm, checkVal) {\n return (!elm.composing && (\n elm.tagName === 'OPTION' ||\n isNotInFocusAndDirty(elm, checkVal) ||\n isDirtyWithModifiers(elm, checkVal)\n ))\n}\n\nfunction isNotInFocusAndDirty (elm, checkVal) {\n // return true when textbox (.number and .trim) loses focus and its value is\n // not equal to the updated value\n var notInFocus = true;\n // #6157\n // work around IE bug when accessing document.activeElement in an iframe\n try { notInFocus = document.activeElement !== elm; } catch (e) {}\n return notInFocus && elm.value !== checkVal\n}\n\nfunction isDirtyWithModifiers (elm, newVal) {\n var value = elm.value;\n var modifiers = elm._vModifiers; // injected by v-model runtime\n if (isDef(modifiers)) {\n if (modifiers.number) {\n return toNumber(value) !== toNumber(newVal)\n }\n if (modifiers.trim) {\n return value.trim() !== newVal.trim()\n }\n }\n return value !== newVal\n}\n\nvar domProps = {\n create: updateDOMProps,\n update: updateDOMProps\n};\n\n/* */\n\nvar parseStyleText = cached(function (cssText) {\n var res = {};\n var listDelimiter = /;(?![^(]*\\))/g;\n var propertyDelimiter = /:(.+)/;\n cssText.split(listDelimiter).forEach(function (item) {\n if (item) {\n var tmp = item.split(propertyDelimiter);\n tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return res\n});\n\n// merge static and dynamic style data on the same vnode\nfunction normalizeStyleData (data) {\n var style = normalizeStyleBinding(data.style);\n // static style is pre-processed into an object during compilation\n // and is always a fresh object, so it's safe to merge into it\n return data.staticStyle\n ? extend(data.staticStyle, style)\n : style\n}\n\n// normalize possible array / string values into Object\nfunction normalizeStyleBinding (bindingStyle) {\n if (Array.isArray(bindingStyle)) {\n return toObject(bindingStyle)\n }\n if (typeof bindingStyle === 'string') {\n return parseStyleText(bindingStyle)\n }\n return bindingStyle\n}\n\n/**\n * parent component style should be after child's\n * so that parent component's style could override it\n */\nfunction getStyle (vnode, checkChild) {\n var res = {};\n var styleData;\n\n if (checkChild) {\n var childNode = vnode;\n while (childNode.componentInstance) {\n childNode = childNode.componentInstance._vnode;\n if (\n childNode && childNode.data &&\n (styleData = normalizeStyleData(childNode.data))\n ) {\n extend(res, styleData);\n }\n }\n }\n\n if ((styleData = normalizeStyleData(vnode.data))) {\n extend(res, styleData);\n }\n\n var parentNode = vnode;\n while ((parentNode = parentNode.parent)) {\n if (parentNode.data && (styleData = normalizeStyleData(parentNode.data))) {\n extend(res, styleData);\n }\n }\n return res\n}\n\n/* */\n\nvar cssVarRE = /^--/;\nvar importantRE = /\\s*!important$/;\nvar setProp = function (el, name, val) {\n /* istanbul ignore if */\n if (cssVarRE.test(name)) {\n el.style.setProperty(name, val);\n } else if (importantRE.test(val)) {\n el.style.setProperty(hyphenate(name), val.replace(importantRE, ''), 'important');\n } else {\n var normalizedName = normalize(name);\n if (Array.isArray(val)) {\n // Support values array created by autoprefixer, e.g.\n // {display: [\"-webkit-box\", \"-ms-flexbox\", \"flex\"]}\n // Set them one by one, and the browser will only set those it can recognize\n for (var i = 0, len = val.length; i < len; i++) {\n el.style[normalizedName] = val[i];\n }\n } else {\n el.style[normalizedName] = val;\n }\n }\n};\n\nvar vendorNames = ['Webkit', 'Moz', 'ms'];\n\nvar emptyStyle;\nvar normalize = cached(function (prop) {\n emptyStyle = emptyStyle || document.createElement('div').style;\n prop = camelize(prop);\n if (prop !== 'filter' && (prop in emptyStyle)) {\n return prop\n }\n var capName = prop.charAt(0).toUpperCase() + prop.slice(1);\n for (var i = 0; i < vendorNames.length; i++) {\n var name = vendorNames[i] + capName;\n if (name in emptyStyle) {\n return name\n }\n }\n});\n\nfunction updateStyle (oldVnode, vnode) {\n var data = vnode.data;\n var oldData = oldVnode.data;\n\n if (isUndef(data.staticStyle) && isUndef(data.style) &&\n isUndef(oldData.staticStyle) && isUndef(oldData.style)\n ) {\n return\n }\n\n var cur, name;\n var el = vnode.elm;\n var oldStaticStyle = oldData.staticStyle;\n var oldStyleBinding = oldData.normalizedStyle || oldData.style || {};\n\n // if static style exists, stylebinding already merged into it when doing normalizeStyleData\n var oldStyle = oldStaticStyle || oldStyleBinding;\n\n var style = normalizeStyleBinding(vnode.data.style) || {};\n\n // store normalized style under a different key for next diff\n // make sure to clone it if it's reactive, since the user likely wants\n // to mutate it.\n vnode.data.normalizedStyle = isDef(style.__ob__)\n ? extend({}, style)\n : style;\n\n var newStyle = getStyle(vnode, true);\n\n for (name in oldStyle) {\n if (isUndef(newStyle[name])) {\n setProp(el, name, '');\n }\n }\n for (name in newStyle) {\n cur = newStyle[name];\n if (cur !== oldStyle[name]) {\n // ie9 setting to null has no effect, must use empty string\n setProp(el, name, cur == null ? '' : cur);\n }\n }\n}\n\nvar style = {\n create: updateStyle,\n update: updateStyle\n};\n\n/* */\n\nvar whitespaceRE = /\\s+/;\n\n/**\n * Add class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction addClass (el, cls) {\n /* istanbul ignore if */\n if (!cls || !(cls = cls.trim())) {\n return\n }\n\n /* istanbul ignore else */\n if (el.classList) {\n if (cls.indexOf(' ') > -1) {\n cls.split(whitespaceRE).forEach(function (c) { return el.classList.add(c); });\n } else {\n el.classList.add(cls);\n }\n } else {\n var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n if (cur.indexOf(' ' + cls + ' ') < 0) {\n el.setAttribute('class', (cur + cls).trim());\n }\n }\n}\n\n/**\n * Remove class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction removeClass (el, cls) {\n /* istanbul ignore if */\n if (!cls || !(cls = cls.trim())) {\n return\n }\n\n /* istanbul ignore else */\n if (el.classList) {\n if (cls.indexOf(' ') > -1) {\n cls.split(whitespaceRE).forEach(function (c) { return el.classList.remove(c); });\n } else {\n el.classList.remove(cls);\n }\n if (!el.classList.length) {\n el.removeAttribute('class');\n }\n } else {\n var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n var tar = ' ' + cls + ' ';\n while (cur.indexOf(tar) >= 0) {\n cur = cur.replace(tar, ' ');\n }\n cur = cur.trim();\n if (cur) {\n el.setAttribute('class', cur);\n } else {\n el.removeAttribute('class');\n }\n }\n}\n\n/* */\n\nfunction resolveTransition (def$$1) {\n if (!def$$1) {\n return\n }\n /* istanbul ignore else */\n if (typeof def$$1 === 'object') {\n var res = {};\n if (def$$1.css !== false) {\n extend(res, autoCssTransition(def$$1.name || 'v'));\n }\n extend(res, def$$1);\n return res\n } else if (typeof def$$1 === 'string') {\n return autoCssTransition(def$$1)\n }\n}\n\nvar autoCssTransition = cached(function (name) {\n return {\n enterClass: (name + \"-enter\"),\n enterToClass: (name + \"-enter-to\"),\n enterActiveClass: (name + \"-enter-active\"),\n leaveClass: (name + \"-leave\"),\n leaveToClass: (name + \"-leave-to\"),\n leaveActiveClass: (name + \"-leave-active\")\n }\n});\n\nvar hasTransition = inBrowser && !isIE9;\nvar TRANSITION = 'transition';\nvar ANIMATION = 'animation';\n\n// Transition property/event sniffing\nvar transitionProp = 'transition';\nvar transitionEndEvent = 'transitionend';\nvar animationProp = 'animation';\nvar animationEndEvent = 'animationend';\nif (hasTransition) {\n /* istanbul ignore if */\n if (window.ontransitionend === undefined &&\n window.onwebkittransitionend !== undefined\n ) {\n transitionProp = 'WebkitTransition';\n transitionEndEvent = 'webkitTransitionEnd';\n }\n if (window.onanimationend === undefined &&\n window.onwebkitanimationend !== undefined\n ) {\n animationProp = 'WebkitAnimation';\n animationEndEvent = 'webkitAnimationEnd';\n }\n}\n\n// binding to window is necessary to make hot reload work in IE in strict mode\nvar raf = inBrowser\n ? window.requestAnimationFrame\n ? window.requestAnimationFrame.bind(window)\n : setTimeout\n : /* istanbul ignore next */ function (fn) { return fn(); };\n\nfunction nextFrame (fn) {\n raf(function () {\n raf(fn);\n });\n}\n\nfunction addTransitionClass (el, cls) {\n var transitionClasses = el._transitionClasses || (el._transitionClasses = []);\n if (transitionClasses.indexOf(cls) < 0) {\n transitionClasses.push(cls);\n addClass(el, cls);\n }\n}\n\nfunction removeTransitionClass (el, cls) {\n if (el._transitionClasses) {\n remove(el._transitionClasses, cls);\n }\n removeClass(el, cls);\n}\n\nfunction whenTransitionEnds (\n el,\n expectedType,\n cb\n) {\n var ref = getTransitionInfo(el, expectedType);\n var type = ref.type;\n var timeout = ref.timeout;\n var propCount = ref.propCount;\n if (!type) { return cb() }\n var event = type === TRANSITION ? transitionEndEvent : animationEndEvent;\n var ended = 0;\n var end = function () {\n el.removeEventListener(event, onEnd);\n cb();\n };\n var onEnd = function (e) {\n if (e.target === el) {\n if (++ended >= propCount) {\n end();\n }\n }\n };\n setTimeout(function () {\n if (ended < propCount) {\n end();\n }\n }, timeout + 1);\n el.addEventListener(event, onEnd);\n}\n\nvar transformRE = /\\b(transform|all)(,|$)/;\n\nfunction getTransitionInfo (el, expectedType) {\n var styles = window.getComputedStyle(el);\n // JSDOM may return undefined for transition properties\n var transitionDelays = (styles[transitionProp + 'Delay'] || '').split(', ');\n var transitionDurations = (styles[transitionProp + 'Duration'] || '').split(', ');\n var transitionTimeout = getTimeout(transitionDelays, transitionDurations);\n var animationDelays = (styles[animationProp + 'Delay'] || '').split(', ');\n var animationDurations = (styles[animationProp + 'Duration'] || '').split(', ');\n var animationTimeout = getTimeout(animationDelays, animationDurations);\n\n var type;\n var timeout = 0;\n var propCount = 0;\n /* istanbul ignore if */\n if (expectedType === TRANSITION) {\n if (transitionTimeout > 0) {\n type = TRANSITION;\n timeout = transitionTimeout;\n propCount = transitionDurations.length;\n }\n } else if (expectedType === ANIMATION) {\n if (animationTimeout > 0) {\n type = ANIMATION;\n timeout = animationTimeout;\n propCount = animationDurations.length;\n }\n } else {\n timeout = Math.max(transitionTimeout, animationTimeout);\n type = timeout > 0\n ? transitionTimeout > animationTimeout\n ? TRANSITION\n : ANIMATION\n : null;\n propCount = type\n ? type === TRANSITION\n ? transitionDurations.length\n : animationDurations.length\n : 0;\n }\n var hasTransform =\n type === TRANSITION &&\n transformRE.test(styles[transitionProp + 'Property']);\n return {\n type: type,\n timeout: timeout,\n propCount: propCount,\n hasTransform: hasTransform\n }\n}\n\nfunction getTimeout (delays, durations) {\n /* istanbul ignore next */\n while (delays.length < durations.length) {\n delays = delays.concat(delays);\n }\n\n return Math.max.apply(null, durations.map(function (d, i) {\n return toMs(d) + toMs(delays[i])\n }))\n}\n\n// Old versions of Chromium (below 61.0.3163.100) formats floating pointer numbers\n// in a locale-dependent way, using a comma instead of a dot.\n// If comma is not replaced with a dot, the input will be rounded down (i.e. acting\n// as a floor function) causing unexpected behaviors\nfunction toMs (s) {\n return Number(s.slice(0, -1).replace(',', '.')) * 1000\n}\n\n/* */\n\nfunction enter (vnode, toggleDisplay) {\n var el = vnode.elm;\n\n // call leave callback now\n if (isDef(el._leaveCb)) {\n el._leaveCb.cancelled = true;\n el._leaveCb();\n }\n\n var data = resolveTransition(vnode.data.transition);\n if (isUndef(data)) {\n return\n }\n\n /* istanbul ignore if */\n if (isDef(el._enterCb) || el.nodeType !== 1) {\n return\n }\n\n var css = data.css;\n var type = data.type;\n var enterClass = data.enterClass;\n var enterToClass = data.enterToClass;\n var enterActiveClass = data.enterActiveClass;\n var appearClass = data.appearClass;\n var appearToClass = data.appearToClass;\n var appearActiveClass = data.appearActiveClass;\n var beforeEnter = data.beforeEnter;\n var enter = data.enter;\n var afterEnter = data.afterEnter;\n var enterCancelled = data.enterCancelled;\n var beforeAppear = data.beforeAppear;\n var appear = data.appear;\n var afterAppear = data.afterAppear;\n var appearCancelled = data.appearCancelled;\n var duration = data.duration;\n\n // activeInstance will always be the <transition> component managing this\n // transition. One edge case to check is when the <transition> is placed\n // as the root node of a child component. In that case we need to check\n // <transition>'s parent for appear check.\n var context = activeInstance;\n var transitionNode = activeInstance.$vnode;\n while (transitionNode && transitionNode.parent) {\n context = transitionNode.context;\n transitionNode = transitionNode.parent;\n }\n\n var isAppear = !context._isMounted || !vnode.isRootInsert;\n\n if (isAppear && !appear && appear !== '') {\n return\n }\n\n var startClass = isAppear && appearClass\n ? appearClass\n : enterClass;\n var activeClass = isAppear && appearActiveClass\n ? appearActiveClass\n : enterActiveClass;\n var toClass = isAppear && appearToClass\n ? appearToClass\n : enterToClass;\n\n var beforeEnterHook = isAppear\n ? (beforeAppear || beforeEnter)\n : beforeEnter;\n var enterHook = isAppear\n ? (typeof appear === 'function' ? appear : enter)\n : enter;\n var afterEnterHook = isAppear\n ? (afterAppear || afterEnter)\n : afterEnter;\n var enterCancelledHook = isAppear\n ? (appearCancelled || enterCancelled)\n : enterCancelled;\n\n var explicitEnterDuration = toNumber(\n isObject(duration)\n ? duration.enter\n : duration\n );\n\n if (process.env.NODE_ENV !== 'production' && explicitEnterDuration != null) {\n checkDuration(explicitEnterDuration, 'enter', vnode);\n }\n\n var expectsCSS = css !== false && !isIE9;\n var userWantsControl = getHookArgumentsLength(enterHook);\n\n var cb = el._enterCb = once(function () {\n if (expectsCSS) {\n removeTransitionClass(el, toClass);\n removeTransitionClass(el, activeClass);\n }\n if (cb.cancelled) {\n if (expectsCSS) {\n removeTransitionClass(el, startClass);\n }\n enterCancelledHook && enterCancelledHook(el);\n } else {\n afterEnterHook && afterEnterHook(el);\n }\n el._enterCb = null;\n });\n\n if (!vnode.data.show) {\n // remove pending leave element on enter by injecting an insert hook\n mergeVNodeHook(vnode, 'insert', function () {\n var parent = el.parentNode;\n var pendingNode = parent && parent._pending && parent._pending[vnode.key];\n if (pendingNode &&\n pendingNode.tag === vnode.tag &&\n pendingNode.elm._leaveCb\n ) {\n pendingNode.elm._leaveCb();\n }\n enterHook && enterHook(el, cb);\n });\n }\n\n // start enter transition\n beforeEnterHook && beforeEnterHook(el);\n if (expectsCSS) {\n addTransitionClass(el, startClass);\n addTransitionClass(el, activeClass);\n nextFrame(function () {\n removeTransitionClass(el, startClass);\n if (!cb.cancelled) {\n addTransitionClass(el, toClass);\n if (!userWantsControl) {\n if (isValidDuration(explicitEnterDuration)) {\n setTimeout(cb, explicitEnterDuration);\n } else {\n whenTransitionEnds(el, type, cb);\n }\n }\n }\n });\n }\n\n if (vnode.data.show) {\n toggleDisplay && toggleDisplay();\n enterHook && enterHook(el, cb);\n }\n\n if (!expectsCSS && !userWantsControl) {\n cb();\n }\n}\n\nfunction leave (vnode, rm) {\n var el = vnode.elm;\n\n // call enter callback now\n if (isDef(el._enterCb)) {\n el._enterCb.cancelled = true;\n el._enterCb();\n }\n\n var data = resolveTransition(vnode.data.transition);\n if (isUndef(data) || el.nodeType !== 1) {\n return rm()\n }\n\n /* istanbul ignore if */\n if (isDef(el._leaveCb)) {\n return\n }\n\n var css = data.css;\n var type = data.type;\n var leaveClass = data.leaveClass;\n var leaveToClass = data.leaveToClass;\n var leaveActiveClass = data.leaveActiveClass;\n var beforeLeave = data.beforeLeave;\n var leave = data.leave;\n var afterLeave = data.afterLeave;\n var leaveCancelled = data.leaveCancelled;\n var delayLeave = data.delayLeave;\n var duration = data.duration;\n\n var expectsCSS = css !== false && !isIE9;\n var userWantsControl = getHookArgumentsLength(leave);\n\n var explicitLeaveDuration = toNumber(\n isObject(duration)\n ? duration.leave\n : duration\n );\n\n if (process.env.NODE_ENV !== 'production' && isDef(explicitLeaveDuration)) {\n checkDuration(explicitLeaveDuration, 'leave', vnode);\n }\n\n var cb = el._leaveCb = once(function () {\n if (el.parentNode && el.parentNode._pending) {\n el.parentNode._pending[vnode.key] = null;\n }\n if (expectsCSS) {\n removeTransitionClass(el, leaveToClass);\n removeTransitionClass(el, leaveActiveClass);\n }\n if (cb.cancelled) {\n if (expectsCSS) {\n removeTransitionClass(el, leaveClass);\n }\n leaveCancelled && leaveCancelled(el);\n } else {\n rm();\n afterLeave && afterLeave(el);\n }\n el._leaveCb = null;\n });\n\n if (delayLeave) {\n delayLeave(performLeave);\n } else {\n performLeave();\n }\n\n function performLeave () {\n // the delayed leave may have already been cancelled\n if (cb.cancelled) {\n return\n }\n // record leaving element\n if (!vnode.data.show && el.parentNode) {\n (el.parentNode._pending || (el.parentNode._pending = {}))[(vnode.key)] = vnode;\n }\n beforeLeave && beforeLeave(el);\n if (expectsCSS) {\n addTransitionClass(el, leaveClass);\n addTransitionClass(el, leaveActiveClass);\n nextFrame(function () {\n removeTransitionClass(el, leaveClass);\n if (!cb.cancelled) {\n addTransitionClass(el, leaveToClass);\n if (!userWantsControl) {\n if (isValidDuration(explicitLeaveDuration)) {\n setTimeout(cb, explicitLeaveDuration);\n } else {\n whenTransitionEnds(el, type, cb);\n }\n }\n }\n });\n }\n leave && leave(el, cb);\n if (!expectsCSS && !userWantsControl) {\n cb();\n }\n }\n}\n\n// only used in dev mode\nfunction checkDuration (val, name, vnode) {\n if (typeof val !== 'number') {\n warn(\n \"<transition> explicit \" + name + \" duration is not a valid number - \" +\n \"got \" + (JSON.stringify(val)) + \".\",\n vnode.context\n );\n } else if (isNaN(val)) {\n warn(\n \"<transition> explicit \" + name + \" duration is NaN - \" +\n 'the duration expression might be incorrect.',\n vnode.context\n );\n }\n}\n\nfunction isValidDuration (val) {\n return typeof val === 'number' && !isNaN(val)\n}\n\n/**\n * Normalize a transition hook's argument length. The hook may be:\n * - a merged hook (invoker) with the original in .fns\n * - a wrapped component method (check ._length)\n * - a plain function (.length)\n */\nfunction getHookArgumentsLength (fn) {\n if (isUndef(fn)) {\n return false\n }\n var invokerFns = fn.fns;\n if (isDef(invokerFns)) {\n // invoker\n return getHookArgumentsLength(\n Array.isArray(invokerFns)\n ? invokerFns[0]\n : invokerFns\n )\n } else {\n return (fn._length || fn.length) > 1\n }\n}\n\nfunction _enter (_, vnode) {\n if (vnode.data.show !== true) {\n enter(vnode);\n }\n}\n\nvar transition = inBrowser ? {\n create: _enter,\n activate: _enter,\n remove: function remove$$1 (vnode, rm) {\n /* istanbul ignore else */\n if (vnode.data.show !== true) {\n leave(vnode, rm);\n } else {\n rm();\n }\n }\n} : {};\n\nvar platformModules = [\n attrs,\n klass,\n events,\n domProps,\n style,\n transition\n];\n\n/* */\n\n// the directive module should be applied last, after all\n// built-in modules have been applied.\nvar modules = platformModules.concat(baseModules);\n\nvar patch = createPatchFunction({ nodeOps: nodeOps, modules: modules });\n\n/**\n * Not type checking this file because flow doesn't like attaching\n * properties to Elements.\n */\n\n/* istanbul ignore if */\nif (isIE9) {\n // http://www.matts411.com/post/internet-explorer-9-oninput/\n document.addEventListener('selectionchange', function () {\n var el = document.activeElement;\n if (el && el.vmodel) {\n trigger(el, 'input');\n }\n });\n}\n\nvar directive = {\n inserted: function inserted (el, binding, vnode, oldVnode) {\n if (vnode.tag === 'select') {\n // #6903\n if (oldVnode.elm && !oldVnode.elm._vOptions) {\n mergeVNodeHook(vnode, 'postpatch', function () {\n directive.componentUpdated(el, binding, vnode);\n });\n } else {\n setSelected(el, binding, vnode.context);\n }\n el._vOptions = [].map.call(el.options, getValue);\n } else if (vnode.tag === 'textarea' || isTextInputType(el.type)) {\n el._vModifiers = binding.modifiers;\n if (!binding.modifiers.lazy) {\n el.addEventListener('compositionstart', onCompositionStart);\n el.addEventListener('compositionend', onCompositionEnd);\n // Safari < 10.2 & UIWebView doesn't fire compositionend when\n // switching focus before confirming composition choice\n // this also fixes the issue where some browsers e.g. iOS Chrome\n // fires \"change\" instead of \"input\" on autocomplete.\n el.addEventListener('change', onCompositionEnd);\n /* istanbul ignore if */\n if (isIE9) {\n el.vmodel = true;\n }\n }\n }\n },\n\n componentUpdated: function componentUpdated (el, binding, vnode) {\n if (vnode.tag === 'select') {\n setSelected(el, binding, vnode.context);\n // in case the options rendered by v-for have changed,\n // it's possible that the value is out-of-sync with the rendered options.\n // detect such cases and filter out values that no longer has a matching\n // option in the DOM.\n var prevOptions = el._vOptions;\n var curOptions = el._vOptions = [].map.call(el.options, getValue);\n if (curOptions.some(function (o, i) { return !looseEqual(o, prevOptions[i]); })) {\n // trigger change event if\n // no matching option found for at least one value\n var needReset = el.multiple\n ? binding.value.some(function (v) { return hasNoMatchingOption(v, curOptions); })\n : binding.value !== binding.oldValue && hasNoMatchingOption(binding.value, curOptions);\n if (needReset) {\n trigger(el, 'change');\n }\n }\n }\n }\n};\n\nfunction setSelected (el, binding, vm) {\n actuallySetSelected(el, binding, vm);\n /* istanbul ignore if */\n if (isIE || isEdge) {\n setTimeout(function () {\n actuallySetSelected(el, binding, vm);\n }, 0);\n }\n}\n\nfunction actuallySetSelected (el, binding, vm) {\n var value = binding.value;\n var isMultiple = el.multiple;\n if (isMultiple && !Array.isArray(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"<select multiple v-model=\\\"\" + (binding.expression) + \"\\\"> \" +\n \"expects an Array value for its binding, but got \" + (Object.prototype.toString.call(value).slice(8, -1)),\n vm\n );\n return\n }\n var selected, option;\n for (var i = 0, l = el.options.length; i < l; i++) {\n option = el.options[i];\n if (isMultiple) {\n selected = looseIndexOf(value, getValue(option)) > -1;\n if (option.selected !== selected) {\n option.selected = selected;\n }\n } else {\n if (looseEqual(getValue(option), value)) {\n if (el.selectedIndex !== i) {\n el.selectedIndex = i;\n }\n return\n }\n }\n }\n if (!isMultiple) {\n el.selectedIndex = -1;\n }\n}\n\nfunction hasNoMatchingOption (value, options) {\n return options.every(function (o) { return !looseEqual(o, value); })\n}\n\nfunction getValue (option) {\n return '_value' in option\n ? option._value\n : option.value\n}\n\nfunction onCompositionStart (e) {\n e.target.composing = true;\n}\n\nfunction onCompositionEnd (e) {\n // prevent triggering an input event for no reason\n if (!e.target.composing) { return }\n e.target.composing = false;\n trigger(e.target, 'input');\n}\n\nfunction trigger (el, type) {\n var e = document.createEvent('HTMLEvents');\n e.initEvent(type, true, true);\n el.dispatchEvent(e);\n}\n\n/* */\n\n// recursively search for possible transition defined inside the component root\nfunction locateNode (vnode) {\n return vnode.componentInstance && (!vnode.data || !vnode.data.transition)\n ? locateNode(vnode.componentInstance._vnode)\n : vnode\n}\n\nvar show = {\n bind: function bind (el, ref, vnode) {\n var value = ref.value;\n\n vnode = locateNode(vnode);\n var transition$$1 = vnode.data && vnode.data.transition;\n var originalDisplay = el.__vOriginalDisplay =\n el.style.display === 'none' ? '' : el.style.display;\n if (value && transition$$1) {\n vnode.data.show = true;\n enter(vnode, function () {\n el.style.display = originalDisplay;\n });\n } else {\n el.style.display = value ? originalDisplay : 'none';\n }\n },\n\n update: function update (el, ref, vnode) {\n var value = ref.value;\n var oldValue = ref.oldValue;\n\n /* istanbul ignore if */\n if (!value === !oldValue) { return }\n vnode = locateNode(vnode);\n var transition$$1 = vnode.data && vnode.data.transition;\n if (transition$$1) {\n vnode.data.show = true;\n if (value) {\n enter(vnode, function () {\n el.style.display = el.__vOriginalDisplay;\n });\n } else {\n leave(vnode, function () {\n el.style.display = 'none';\n });\n }\n } else {\n el.style.display = value ? el.__vOriginalDisplay : 'none';\n }\n },\n\n unbind: function unbind (\n el,\n binding,\n vnode,\n oldVnode,\n isDestroy\n ) {\n if (!isDestroy) {\n el.style.display = el.__vOriginalDisplay;\n }\n }\n};\n\nvar platformDirectives = {\n model: directive,\n show: show\n};\n\n/* */\n\nvar transitionProps = {\n name: String,\n appear: Boolean,\n css: Boolean,\n mode: String,\n type: String,\n enterClass: String,\n leaveClass: String,\n enterToClass: String,\n leaveToClass: String,\n enterActiveClass: String,\n leaveActiveClass: String,\n appearClass: String,\n appearActiveClass: String,\n appearToClass: String,\n duration: [Number, String, Object]\n};\n\n// in case the child is also an abstract component, e.g. <keep-alive>\n// we want to recursively retrieve the real component to be rendered\nfunction getRealChild (vnode) {\n var compOptions = vnode && vnode.componentOptions;\n if (compOptions && compOptions.Ctor.options.abstract) {\n return getRealChild(getFirstComponentChild(compOptions.children))\n } else {\n return vnode\n }\n}\n\nfunction extractTransitionData (comp) {\n var data = {};\n var options = comp.$options;\n // props\n for (var key in options.propsData) {\n data[key] = comp[key];\n }\n // events.\n // extract listeners and pass them directly to the transition methods\n var listeners = options._parentListeners;\n for (var key$1 in listeners) {\n data[camelize(key$1)] = listeners[key$1];\n }\n return data\n}\n\nfunction placeholder (h, rawChild) {\n if (/\\d-keep-alive$/.test(rawChild.tag)) {\n return h('keep-alive', {\n props: rawChild.componentOptions.propsData\n })\n }\n}\n\nfunction hasParentTransition (vnode) {\n while ((vnode = vnode.parent)) {\n if (vnode.data.transition) {\n return true\n }\n }\n}\n\nfunction isSameChild (child, oldChild) {\n return oldChild.key === child.key && oldChild.tag === child.tag\n}\n\nvar isNotTextNode = function (c) { return c.tag || isAsyncPlaceholder(c); };\n\nvar isVShowDirective = function (d) { return d.name === 'show'; };\n\nvar Transition = {\n name: 'transition',\n props: transitionProps,\n abstract: true,\n\n render: function render (h) {\n var this$1 = this;\n\n var children = this.$slots.default;\n if (!children) {\n return\n }\n\n // filter out text nodes (possible whitespaces)\n children = children.filter(isNotTextNode);\n /* istanbul ignore if */\n if (!children.length) {\n return\n }\n\n // warn multiple elements\n if (process.env.NODE_ENV !== 'production' && children.length > 1) {\n warn(\n '<transition> can only be used on a single element. Use ' +\n '<transition-group> for lists.',\n this.$parent\n );\n }\n\n var mode = this.mode;\n\n // warn invalid mode\n if (process.env.NODE_ENV !== 'production' &&\n mode && mode !== 'in-out' && mode !== 'out-in'\n ) {\n warn(\n 'invalid <transition> mode: ' + mode,\n this.$parent\n );\n }\n\n var rawChild = children[0];\n\n // if this is a component root node and the component's\n // parent container node also has transition, skip.\n if (hasParentTransition(this.$vnode)) {\n return rawChild\n }\n\n // apply transition data to child\n // use getRealChild() to ignore abstract components e.g. keep-alive\n var child = getRealChild(rawChild);\n /* istanbul ignore if */\n if (!child) {\n return rawChild\n }\n\n if (this._leaving) {\n return placeholder(h, rawChild)\n }\n\n // ensure a key that is unique to the vnode type and to this transition\n // component instance. This key will be used to remove pending leaving nodes\n // during entering.\n var id = \"__transition-\" + (this._uid) + \"-\";\n child.key = child.key == null\n ? child.isComment\n ? id + 'comment'\n : id + child.tag\n : isPrimitive(child.key)\n ? (String(child.key).indexOf(id) === 0 ? child.key : id + child.key)\n : child.key;\n\n var data = (child.data || (child.data = {})).transition = extractTransitionData(this);\n var oldRawChild = this._vnode;\n var oldChild = getRealChild(oldRawChild);\n\n // mark v-show\n // so that the transition module can hand over the control to the directive\n if (child.data.directives && child.data.directives.some(isVShowDirective)) {\n child.data.show = true;\n }\n\n if (\n oldChild &&\n oldChild.data &&\n !isSameChild(child, oldChild) &&\n !isAsyncPlaceholder(oldChild) &&\n // #6687 component root is a comment node\n !(oldChild.componentInstance && oldChild.componentInstance._vnode.isComment)\n ) {\n // replace old child transition data with fresh one\n // important for dynamic transitions!\n var oldData = oldChild.data.transition = extend({}, data);\n // handle transition mode\n if (mode === 'out-in') {\n // return placeholder node and queue update when leave finishes\n this._leaving = true;\n mergeVNodeHook(oldData, 'afterLeave', function () {\n this$1._leaving = false;\n this$1.$forceUpdate();\n });\n return placeholder(h, rawChild)\n } else if (mode === 'in-out') {\n if (isAsyncPlaceholder(child)) {\n return oldRawChild\n }\n var delayedLeave;\n var performLeave = function () { delayedLeave(); };\n mergeVNodeHook(data, 'afterEnter', performLeave);\n mergeVNodeHook(data, 'enterCancelled', performLeave);\n mergeVNodeHook(oldData, 'delayLeave', function (leave) { delayedLeave = leave; });\n }\n }\n\n return rawChild\n }\n};\n\n/* */\n\nvar props = extend({\n tag: String,\n moveClass: String\n}, transitionProps);\n\ndelete props.mode;\n\nvar TransitionGroup = {\n props: props,\n\n beforeMount: function beforeMount () {\n var this$1 = this;\n\n var update = this._update;\n this._update = function (vnode, hydrating) {\n var restoreActiveInstance = setActiveInstance(this$1);\n // force removing pass\n this$1.__patch__(\n this$1._vnode,\n this$1.kept,\n false, // hydrating\n true // removeOnly (!important, avoids unnecessary moves)\n );\n this$1._vnode = this$1.kept;\n restoreActiveInstance();\n update.call(this$1, vnode, hydrating);\n };\n },\n\n render: function render (h) {\n var tag = this.tag || this.$vnode.data.tag || 'span';\n var map = Object.create(null);\n var prevChildren = this.prevChildren = this.children;\n var rawChildren = this.$slots.default || [];\n var children = this.children = [];\n var transitionData = extractTransitionData(this);\n\n for (var i = 0; i < rawChildren.length; i++) {\n var c = rawChildren[i];\n if (c.tag) {\n if (c.key != null && String(c.key).indexOf('__vlist') !== 0) {\n children.push(c);\n map[c.key] = c\n ;(c.data || (c.data = {})).transition = transitionData;\n } else if (process.env.NODE_ENV !== 'production') {\n var opts = c.componentOptions;\n var name = opts ? (opts.Ctor.options.name || opts.tag || '') : c.tag;\n warn((\"<transition-group> children must be keyed: <\" + name + \">\"));\n }\n }\n }\n\n if (prevChildren) {\n var kept = [];\n var removed = [];\n for (var i$1 = 0; i$1 < prevChildren.length; i$1++) {\n var c$1 = prevChildren[i$1];\n c$1.data.transition = transitionData;\n c$1.data.pos = c$1.elm.getBoundingClientRect();\n if (map[c$1.key]) {\n kept.push(c$1);\n } else {\n removed.push(c$1);\n }\n }\n this.kept = h(tag, null, kept);\n this.removed = removed;\n }\n\n return h(tag, null, children)\n },\n\n updated: function updated () {\n var children = this.prevChildren;\n var moveClass = this.moveClass || ((this.name || 'v') + '-move');\n if (!children.length || !this.hasMove(children[0].elm, moveClass)) {\n return\n }\n\n // we divide the work into three loops to avoid mixing DOM reads and writes\n // in each iteration - which helps prevent layout thrashing.\n children.forEach(callPendingCbs);\n children.forEach(recordPosition);\n children.forEach(applyTranslation);\n\n // force reflow to put everything in position\n // assign to this to avoid being removed in tree-shaking\n // $flow-disable-line\n this._reflow = document.body.offsetHeight;\n\n children.forEach(function (c) {\n if (c.data.moved) {\n var el = c.elm;\n var s = el.style;\n addTransitionClass(el, moveClass);\n s.transform = s.WebkitTransform = s.transitionDuration = '';\n el.addEventListener(transitionEndEvent, el._moveCb = function cb (e) {\n if (e && e.target !== el) {\n return\n }\n if (!e || /transform$/.test(e.propertyName)) {\n el.removeEventListener(transitionEndEvent, cb);\n el._moveCb = null;\n removeTransitionClass(el, moveClass);\n }\n });\n }\n });\n },\n\n methods: {\n hasMove: function hasMove (el, moveClass) {\n /* istanbul ignore if */\n if (!hasTransition) {\n return false\n }\n /* istanbul ignore if */\n if (this._hasMove) {\n return this._hasMove\n }\n // Detect whether an element with the move class applied has\n // CSS transitions. Since the element may be inside an entering\n // transition at this very moment, we make a clone of it and remove\n // all other transition classes applied to ensure only the move class\n // is applied.\n var clone = el.cloneNode();\n if (el._transitionClasses) {\n el._transitionClasses.forEach(function (cls) { removeClass(clone, cls); });\n }\n addClass(clone, moveClass);\n clone.style.display = 'none';\n this.$el.appendChild(clone);\n var info = getTransitionInfo(clone);\n this.$el.removeChild(clone);\n return (this._hasMove = info.hasTransform)\n }\n }\n};\n\nfunction callPendingCbs (c) {\n /* istanbul ignore if */\n if (c.elm._moveCb) {\n c.elm._moveCb();\n }\n /* istanbul ignore if */\n if (c.elm._enterCb) {\n c.elm._enterCb();\n }\n}\n\nfunction recordPosition (c) {\n c.data.newPos = c.elm.getBoundingClientRect();\n}\n\nfunction applyTranslation (c) {\n var oldPos = c.data.pos;\n var newPos = c.data.newPos;\n var dx = oldPos.left - newPos.left;\n var dy = oldPos.top - newPos.top;\n if (dx || dy) {\n c.data.moved = true;\n var s = c.elm.style;\n s.transform = s.WebkitTransform = \"translate(\" + dx + \"px,\" + dy + \"px)\";\n s.transitionDuration = '0s';\n }\n}\n\nvar platformComponents = {\n Transition: Transition,\n TransitionGroup: TransitionGroup\n};\n\n/* */\n\n// install platform specific utils\nVue.config.mustUseProp = mustUseProp;\nVue.config.isReservedTag = isReservedTag;\nVue.config.isReservedAttr = isReservedAttr;\nVue.config.getTagNamespace = getTagNamespace;\nVue.config.isUnknownElement = isUnknownElement;\n\n// install platform runtime directives & components\nextend(Vue.options.directives, platformDirectives);\nextend(Vue.options.components, platformComponents);\n\n// install platform patch function\nVue.prototype.__patch__ = inBrowser ? patch : noop;\n\n// public mount method\nVue.prototype.$mount = function (\n el,\n hydrating\n) {\n el = el && inBrowser ? query(el) : undefined;\n return mountComponent(this, el, hydrating)\n};\n\n// devtools global hook\n/* istanbul ignore next */\nif (inBrowser) {\n setTimeout(function () {\n if (config.devtools) {\n if (devtools) {\n devtools.emit('init', Vue);\n } else if (\n process.env.NODE_ENV !== 'production' &&\n process.env.NODE_ENV !== 'test'\n ) {\n console[console.info ? 'info' : 'log'](\n 'Download the Vue Devtools extension for a better development experience:\\n' +\n 'https://github.com/vuejs/vue-devtools'\n );\n }\n }\n if (process.env.NODE_ENV !== 'production' &&\n process.env.NODE_ENV !== 'test' &&\n config.productionTip !== false &&\n typeof console !== 'undefined'\n ) {\n console[console.info ? 'info' : 'log'](\n \"You are running Vue in development mode.\\n\" +\n \"Make sure to turn on production mode when deploying for production.\\n\" +\n \"See more tips at https://vuejs.org/guide/deployment.html\"\n );\n }\n }, 0);\n}\n\n/* */\n\nexport default Vue;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar axios_1 = require(\"axios\");\nvar client = axios_1.default.create({\n headers: {\n requesttoken: OC.requestToken\n }\n});\nexports.default = client;\n","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%40/gi, '@').\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n // Only Node.JS has a process variable that is of [[Class]] process\n if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n } else if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n }\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar buildURL = require('./../helpers/buildURL');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password || '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // Listen for ready state\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n };\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n var cookies = require('./../helpers/cookies');\n\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(config.url)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (config.withCredentials) {\n request.withCredentials = true;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (requestData === undefined) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n utils.forEach(['url', 'method', 'params', 'data'], function valueFromConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n }\n });\n\n utils.forEach(['headers', 'auth', 'proxy'], function mergeDeepProperties(prop) {\n if (utils.isObject(config2[prop])) {\n config[prop] = utils.deepMerge(config1[prop], config2[prop]);\n } else if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (utils.isObject(config1[prop])) {\n config[prop] = utils.deepMerge(config1[prop]);\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n utils.forEach([\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'maxContentLength',\n 'validateStatus', 'maxRedirects', 'httpAgent', 'httpsAgent', 'cancelToken',\n 'socketPath'\n ], function defaultToConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n return config;\n};\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","/**\n * vuex v3.1.1\n * (c) 2019 Evan You\n * @license MIT\n */\nfunction applyMixin (Vue) {\n var version = Number(Vue.version.split('.')[0]);\n\n if (version >= 2) {\n Vue.mixin({ beforeCreate: vuexInit });\n } else {\n // override init and inject vuex init procedure\n // for 1.x backwards compatibility.\n var _init = Vue.prototype._init;\n Vue.prototype._init = function (options) {\n if ( options === void 0 ) options = {};\n\n options.init = options.init\n ? [vuexInit].concat(options.init)\n : vuexInit;\n _init.call(this, options);\n };\n }\n\n /**\n * Vuex init hook, injected into each instances init hooks list.\n */\n\n function vuexInit () {\n var options = this.$options;\n // store injection\n if (options.store) {\n this.$store = typeof options.store === 'function'\n ? options.store()\n : options.store;\n } else if (options.parent && options.parent.$store) {\n this.$store = options.parent.$store;\n }\n }\n}\n\nvar target = typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\nvar devtoolHook = target.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\nfunction devtoolPlugin (store) {\n if (!devtoolHook) { return }\n\n store._devtoolHook = devtoolHook;\n\n devtoolHook.emit('vuex:init', store);\n\n devtoolHook.on('vuex:travel-to-state', function (targetState) {\n store.replaceState(targetState);\n });\n\n store.subscribe(function (mutation, state) {\n devtoolHook.emit('vuex:mutation', mutation, state);\n });\n}\n\n/**\n * Get the first item that pass the test\n * by second argument function\n *\n * @param {Array} list\n * @param {Function} f\n * @return {*}\n */\n\n/**\n * forEach for object\n */\nfunction forEachValue (obj, fn) {\n Object.keys(obj).forEach(function (key) { return fn(obj[key], key); });\n}\n\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\nfunction isPromise (val) {\n return val && typeof val.then === 'function'\n}\n\nfunction assert (condition, msg) {\n if (!condition) { throw new Error((\"[vuex] \" + msg)) }\n}\n\nfunction partial (fn, arg) {\n return function () {\n return fn(arg)\n }\n}\n\n// Base data struct for store's module, package with some attribute and method\nvar Module = function Module (rawModule, runtime) {\n this.runtime = runtime;\n // Store some children item\n this._children = Object.create(null);\n // Store the origin module object which passed by programmer\n this._rawModule = rawModule;\n var rawState = rawModule.state;\n\n // Store the origin module's state\n this.state = (typeof rawState === 'function' ? rawState() : rawState) || {};\n};\n\nvar prototypeAccessors = { namespaced: { configurable: true } };\n\nprototypeAccessors.namespaced.get = function () {\n return !!this._rawModule.namespaced\n};\n\nModule.prototype.addChild = function addChild (key, module) {\n this._children[key] = module;\n};\n\nModule.prototype.removeChild = function removeChild (key) {\n delete this._children[key];\n};\n\nModule.prototype.getChild = function getChild (key) {\n return this._children[key]\n};\n\nModule.prototype.update = function update (rawModule) {\n this._rawModule.namespaced = rawModule.namespaced;\n if (rawModule.actions) {\n this._rawModule.actions = rawModule.actions;\n }\n if (rawModule.mutations) {\n this._rawModule.mutations = rawModule.mutations;\n }\n if (rawModule.getters) {\n this._rawModule.getters = rawModule.getters;\n }\n};\n\nModule.prototype.forEachChild = function forEachChild (fn) {\n forEachValue(this._children, fn);\n};\n\nModule.prototype.forEachGetter = function forEachGetter (fn) {\n if (this._rawModule.getters) {\n forEachValue(this._rawModule.getters, fn);\n }\n};\n\nModule.prototype.forEachAction = function forEachAction (fn) {\n if (this._rawModule.actions) {\n forEachValue(this._rawModule.actions, fn);\n }\n};\n\nModule.prototype.forEachMutation = function forEachMutation (fn) {\n if (this._rawModule.mutations) {\n forEachValue(this._rawModule.mutations, fn);\n }\n};\n\nObject.defineProperties( Module.prototype, prototypeAccessors );\n\nvar ModuleCollection = function ModuleCollection (rawRootModule) {\n // register root module (Vuex.Store options)\n this.register([], rawRootModule, false);\n};\n\nModuleCollection.prototype.get = function get (path) {\n return path.reduce(function (module, key) {\n return module.getChild(key)\n }, this.root)\n};\n\nModuleCollection.prototype.getNamespace = function getNamespace (path) {\n var module = this.root;\n return path.reduce(function (namespace, key) {\n module = module.getChild(key);\n return namespace + (module.namespaced ? key + '/' : '')\n }, '')\n};\n\nModuleCollection.prototype.update = function update$1 (rawRootModule) {\n update([], this.root, rawRootModule);\n};\n\nModuleCollection.prototype.register = function register (path, rawModule, runtime) {\n var this$1 = this;\n if ( runtime === void 0 ) runtime = true;\n\n if (process.env.NODE_ENV !== 'production') {\n assertRawModule(path, rawModule);\n }\n\n var newModule = new Module(rawModule, runtime);\n if (path.length === 0) {\n this.root = newModule;\n } else {\n var parent = this.get(path.slice(0, -1));\n parent.addChild(path[path.length - 1], newModule);\n }\n\n // register nested modules\n if (rawModule.modules) {\n forEachValue(rawModule.modules, function (rawChildModule, key) {\n this$1.register(path.concat(key), rawChildModule, runtime);\n });\n }\n};\n\nModuleCollection.prototype.unregister = function unregister (path) {\n var parent = this.get(path.slice(0, -1));\n var key = path[path.length - 1];\n if (!parent.getChild(key).runtime) { return }\n\n parent.removeChild(key);\n};\n\nfunction update (path, targetModule, newModule) {\n if (process.env.NODE_ENV !== 'production') {\n assertRawModule(path, newModule);\n }\n\n // update target module\n targetModule.update(newModule);\n\n // update nested modules\n if (newModule.modules) {\n for (var key in newModule.modules) {\n if (!targetModule.getChild(key)) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n \"[vuex] trying to add a new module '\" + key + \"' on hot reloading, \" +\n 'manual reload is needed'\n );\n }\n return\n }\n update(\n path.concat(key),\n targetModule.getChild(key),\n newModule.modules[key]\n );\n }\n }\n}\n\nvar functionAssert = {\n assert: function (value) { return typeof value === 'function'; },\n expected: 'function'\n};\n\nvar objectAssert = {\n assert: function (value) { return typeof value === 'function' ||\n (typeof value === 'object' && typeof value.handler === 'function'); },\n expected: 'function or object with \"handler\" function'\n};\n\nvar assertTypes = {\n getters: functionAssert,\n mutations: functionAssert,\n actions: objectAssert\n};\n\nfunction assertRawModule (path, rawModule) {\n Object.keys(assertTypes).forEach(function (key) {\n if (!rawModule[key]) { return }\n\n var assertOptions = assertTypes[key];\n\n forEachValue(rawModule[key], function (value, type) {\n assert(\n assertOptions.assert(value),\n makeAssertionMessage(path, key, type, value, assertOptions.expected)\n );\n });\n });\n}\n\nfunction makeAssertionMessage (path, key, type, value, expected) {\n var buf = key + \" should be \" + expected + \" but \\\"\" + key + \".\" + type + \"\\\"\";\n if (path.length > 0) {\n buf += \" in module \\\"\" + (path.join('.')) + \"\\\"\";\n }\n buf += \" is \" + (JSON.stringify(value)) + \".\";\n return buf\n}\n\nvar Vue; // bind on install\n\nvar Store = function Store (options) {\n var this$1 = this;\n if ( options === void 0 ) options = {};\n\n // Auto install if it is not done yet and `window` has `Vue`.\n // To allow users to avoid auto-installation in some cases,\n // this code should be placed here. See #731\n if (!Vue && typeof window !== 'undefined' && window.Vue) {\n install(window.Vue);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(Vue, \"must call Vue.use(Vuex) before creating a store instance.\");\n assert(typeof Promise !== 'undefined', \"vuex requires a Promise polyfill in this browser.\");\n assert(this instanceof Store, \"store must be called with the new operator.\");\n }\n\n var plugins = options.plugins; if ( plugins === void 0 ) plugins = [];\n var strict = options.strict; if ( strict === void 0 ) strict = false;\n\n // store internal state\n this._committing = false;\n this._actions = Object.create(null);\n this._actionSubscribers = [];\n this._mutations = Object.create(null);\n this._wrappedGetters = Object.create(null);\n this._modules = new ModuleCollection(options);\n this._modulesNamespaceMap = Object.create(null);\n this._subscribers = [];\n this._watcherVM = new Vue();\n\n // bind commit and dispatch to self\n var store = this;\n var ref = this;\n var dispatch = ref.dispatch;\n var commit = ref.commit;\n this.dispatch = function boundDispatch (type, payload) {\n return dispatch.call(store, type, payload)\n };\n this.commit = function boundCommit (type, payload, options) {\n return commit.call(store, type, payload, options)\n };\n\n // strict mode\n this.strict = strict;\n\n var state = this._modules.root.state;\n\n // init root module.\n // this also recursively registers all sub-modules\n // and collects all module getters inside this._wrappedGetters\n installModule(this, state, [], this._modules.root);\n\n // initialize the store vm, which is responsible for the reactivity\n // (also registers _wrappedGetters as computed properties)\n resetStoreVM(this, state);\n\n // apply plugins\n plugins.forEach(function (plugin) { return plugin(this$1); });\n\n var useDevtools = options.devtools !== undefined ? options.devtools : Vue.config.devtools;\n if (useDevtools) {\n devtoolPlugin(this);\n }\n};\n\nvar prototypeAccessors$1 = { state: { configurable: true } };\n\nprototypeAccessors$1.state.get = function () {\n return this._vm._data.$$state\n};\n\nprototypeAccessors$1.state.set = function (v) {\n if (process.env.NODE_ENV !== 'production') {\n assert(false, \"use store.replaceState() to explicit replace store state.\");\n }\n};\n\nStore.prototype.commit = function commit (_type, _payload, _options) {\n var this$1 = this;\n\n // check object-style commit\n var ref = unifyObjectStyle(_type, _payload, _options);\n var type = ref.type;\n var payload = ref.payload;\n var options = ref.options;\n\n var mutation = { type: type, payload: payload };\n var entry = this._mutations[type];\n if (!entry) {\n if (process.env.NODE_ENV !== 'production') {\n console.error((\"[vuex] unknown mutation type: \" + type));\n }\n return\n }\n this._withCommit(function () {\n entry.forEach(function commitIterator (handler) {\n handler(payload);\n });\n });\n this._subscribers.forEach(function (sub) { return sub(mutation, this$1.state); });\n\n if (\n process.env.NODE_ENV !== 'production' &&\n options && options.silent\n ) {\n console.warn(\n \"[vuex] mutation type: \" + type + \". Silent option has been removed. \" +\n 'Use the filter functionality in the vue-devtools'\n );\n }\n};\n\nStore.prototype.dispatch = function dispatch (_type, _payload) {\n var this$1 = this;\n\n // check object-style dispatch\n var ref = unifyObjectStyle(_type, _payload);\n var type = ref.type;\n var payload = ref.payload;\n\n var action = { type: type, payload: payload };\n var entry = this._actions[type];\n if (!entry) {\n if (process.env.NODE_ENV !== 'production') {\n console.error((\"[vuex] unknown action type: \" + type));\n }\n return\n }\n\n try {\n this._actionSubscribers\n .filter(function (sub) { return sub.before; })\n .forEach(function (sub) { return sub.before(action, this$1.state); });\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\"[vuex] error in before action subscribers: \");\n console.error(e);\n }\n }\n\n var result = entry.length > 1\n ? Promise.all(entry.map(function (handler) { return handler(payload); }))\n : entry[0](payload);\n\n return result.then(function (res) {\n try {\n this$1._actionSubscribers\n .filter(function (sub) { return sub.after; })\n .forEach(function (sub) { return sub.after(action, this$1.state); });\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\"[vuex] error in after action subscribers: \");\n console.error(e);\n }\n }\n return res\n })\n};\n\nStore.prototype.subscribe = function subscribe (fn) {\n return genericSubscribe(fn, this._subscribers)\n};\n\nStore.prototype.subscribeAction = function subscribeAction (fn) {\n var subs = typeof fn === 'function' ? { before: fn } : fn;\n return genericSubscribe(subs, this._actionSubscribers)\n};\n\nStore.prototype.watch = function watch (getter, cb, options) {\n var this$1 = this;\n\n if (process.env.NODE_ENV !== 'production') {\n assert(typeof getter === 'function', \"store.watch only accepts a function.\");\n }\n return this._watcherVM.$watch(function () { return getter(this$1.state, this$1.getters); }, cb, options)\n};\n\nStore.prototype.replaceState = function replaceState (state) {\n var this$1 = this;\n\n this._withCommit(function () {\n this$1._vm._data.$$state = state;\n });\n};\n\nStore.prototype.registerModule = function registerModule (path, rawModule, options) {\n if ( options === void 0 ) options = {};\n\n if (typeof path === 'string') { path = [path]; }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n assert(path.length > 0, 'cannot register the root module by using registerModule.');\n }\n\n this._modules.register(path, rawModule);\n installModule(this, this.state, path, this._modules.get(path), options.preserveState);\n // reset store to update getters...\n resetStoreVM(this, this.state);\n};\n\nStore.prototype.unregisterModule = function unregisterModule (path) {\n var this$1 = this;\n\n if (typeof path === 'string') { path = [path]; }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n }\n\n this._modules.unregister(path);\n this._withCommit(function () {\n var parentState = getNestedState(this$1.state, path.slice(0, -1));\n Vue.delete(parentState, path[path.length - 1]);\n });\n resetStore(this);\n};\n\nStore.prototype.hotUpdate = function hotUpdate (newOptions) {\n this._modules.update(newOptions);\n resetStore(this, true);\n};\n\nStore.prototype._withCommit = function _withCommit (fn) {\n var committing = this._committing;\n this._committing = true;\n fn();\n this._committing = committing;\n};\n\nObject.defineProperties( Store.prototype, prototypeAccessors$1 );\n\nfunction genericSubscribe (fn, subs) {\n if (subs.indexOf(fn) < 0) {\n subs.push(fn);\n }\n return function () {\n var i = subs.indexOf(fn);\n if (i > -1) {\n subs.splice(i, 1);\n }\n }\n}\n\nfunction resetStore (store, hot) {\n store._actions = Object.create(null);\n store._mutations = Object.create(null);\n store._wrappedGetters = Object.create(null);\n store._modulesNamespaceMap = Object.create(null);\n var state = store.state;\n // init all modules\n installModule(store, state, [], store._modules.root, true);\n // reset vm\n resetStoreVM(store, state, hot);\n}\n\nfunction resetStoreVM (store, state, hot) {\n var oldVm = store._vm;\n\n // bind store public getters\n store.getters = {};\n var wrappedGetters = store._wrappedGetters;\n var computed = {};\n forEachValue(wrappedGetters, function (fn, key) {\n // use computed to leverage its lazy-caching mechanism\n // direct inline function use will lead to closure preserving oldVm.\n // using partial to return function with only arguments preserved in closure enviroment.\n computed[key] = partial(fn, store);\n Object.defineProperty(store.getters, key, {\n get: function () { return store._vm[key]; },\n enumerable: true // for local getters\n });\n });\n\n // use a Vue instance to store the state tree\n // suppress warnings just in case the user has added\n // some funky global mixins\n var silent = Vue.config.silent;\n Vue.config.silent = true;\n store._vm = new Vue({\n data: {\n $$state: state\n },\n computed: computed\n });\n Vue.config.silent = silent;\n\n // enable strict mode for new vm\n if (store.strict) {\n enableStrictMode(store);\n }\n\n if (oldVm) {\n if (hot) {\n // dispatch changes in all subscribed watchers\n // to force getter re-evaluation for hot reloading.\n store._withCommit(function () {\n oldVm._data.$$state = null;\n });\n }\n Vue.nextTick(function () { return oldVm.$destroy(); });\n }\n}\n\nfunction installModule (store, rootState, path, module, hot) {\n var isRoot = !path.length;\n var namespace = store._modules.getNamespace(path);\n\n // register in namespace map\n if (module.namespaced) {\n store._modulesNamespaceMap[namespace] = module;\n }\n\n // set state\n if (!isRoot && !hot) {\n var parentState = getNestedState(rootState, path.slice(0, -1));\n var moduleName = path[path.length - 1];\n store._withCommit(function () {\n Vue.set(parentState, moduleName, module.state);\n });\n }\n\n var local = module.context = makeLocalContext(store, namespace, path);\n\n module.forEachMutation(function (mutation, key) {\n var namespacedType = namespace + key;\n registerMutation(store, namespacedType, mutation, local);\n });\n\n module.forEachAction(function (action, key) {\n var type = action.root ? key : namespace + key;\n var handler = action.handler || action;\n registerAction(store, type, handler, local);\n });\n\n module.forEachGetter(function (getter, key) {\n var namespacedType = namespace + key;\n registerGetter(store, namespacedType, getter, local);\n });\n\n module.forEachChild(function (child, key) {\n installModule(store, rootState, path.concat(key), child, hot);\n });\n}\n\n/**\n * make localized dispatch, commit, getters and state\n * if there is no namespace, just use root ones\n */\nfunction makeLocalContext (store, namespace, path) {\n var noNamespace = namespace === '';\n\n var local = {\n dispatch: noNamespace ? store.dispatch : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n if (process.env.NODE_ENV !== 'production' && !store._actions[type]) {\n console.error((\"[vuex] unknown local action type: \" + (args.type) + \", global type: \" + type));\n return\n }\n }\n\n return store.dispatch(type, payload)\n },\n\n commit: noNamespace ? store.commit : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n if (process.env.NODE_ENV !== 'production' && !store._mutations[type]) {\n console.error((\"[vuex] unknown local mutation type: \" + (args.type) + \", global type: \" + type));\n return\n }\n }\n\n store.commit(type, payload, options);\n }\n };\n\n // getters and state object must be gotten lazily\n // because they will be changed by vm update\n Object.defineProperties(local, {\n getters: {\n get: noNamespace\n ? function () { return store.getters; }\n : function () { return makeLocalGetters(store, namespace); }\n },\n state: {\n get: function () { return getNestedState(store.state, path); }\n }\n });\n\n return local\n}\n\nfunction makeLocalGetters (store, namespace) {\n var gettersProxy = {};\n\n var splitPos = namespace.length;\n Object.keys(store.getters).forEach(function (type) {\n // skip if the target getter is not match this namespace\n if (type.slice(0, splitPos) !== namespace) { return }\n\n // extract local getter type\n var localType = type.slice(splitPos);\n\n // Add a port to the getters proxy.\n // Define as getter property because\n // we do not want to evaluate the getters in this time.\n Object.defineProperty(gettersProxy, localType, {\n get: function () { return store.getters[type]; },\n enumerable: true\n });\n });\n\n return gettersProxy\n}\n\nfunction registerMutation (store, type, handler, local) {\n var entry = store._mutations[type] || (store._mutations[type] = []);\n entry.push(function wrappedMutationHandler (payload) {\n handler.call(store, local.state, payload);\n });\n}\n\nfunction registerAction (store, type, handler, local) {\n var entry = store._actions[type] || (store._actions[type] = []);\n entry.push(function wrappedActionHandler (payload, cb) {\n var res = handler.call(store, {\n dispatch: local.dispatch,\n commit: local.commit,\n getters: local.getters,\n state: local.state,\n rootGetters: store.getters,\n rootState: store.state\n }, payload, cb);\n if (!isPromise(res)) {\n res = Promise.resolve(res);\n }\n if (store._devtoolHook) {\n return res.catch(function (err) {\n store._devtoolHook.emit('vuex:error', err);\n throw err\n })\n } else {\n return res\n }\n });\n}\n\nfunction registerGetter (store, type, rawGetter, local) {\n if (store._wrappedGetters[type]) {\n if (process.env.NODE_ENV !== 'production') {\n console.error((\"[vuex] duplicate getter key: \" + type));\n }\n return\n }\n store._wrappedGetters[type] = function wrappedGetter (store) {\n return rawGetter(\n local.state, // local state\n local.getters, // local getters\n store.state, // root state\n store.getters // root getters\n )\n };\n}\n\nfunction enableStrictMode (store) {\n store._vm.$watch(function () { return this._data.$$state }, function () {\n if (process.env.NODE_ENV !== 'production') {\n assert(store._committing, \"do not mutate vuex store state outside mutation handlers.\");\n }\n }, { deep: true, sync: true });\n}\n\nfunction getNestedState (state, path) {\n return path.length\n ? path.reduce(function (state, key) { return state[key]; }, state)\n : state\n}\n\nfunction unifyObjectStyle (type, payload, options) {\n if (isObject(type) && type.type) {\n options = payload;\n payload = type;\n type = type.type;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(typeof type === 'string', (\"expects string as the type, but found \" + (typeof type) + \".\"));\n }\n\n return { type: type, payload: payload, options: options }\n}\n\nfunction install (_Vue) {\n if (Vue && _Vue === Vue) {\n if (process.env.NODE_ENV !== 'production') {\n console.error(\n '[vuex] already installed. Vue.use(Vuex) should be called only once.'\n );\n }\n return\n }\n Vue = _Vue;\n applyMixin(Vue);\n}\n\n/**\n * Reduce the code which written in Vue.js for getting the state.\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} states # Object's item can be a function which accept state and getters for param, you can do something for state and getters in it.\n * @param {Object}\n */\nvar mapState = normalizeNamespace(function (namespace, states) {\n var res = {};\n normalizeMap(states).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedState () {\n var state = this.$store.state;\n var getters = this.$store.getters;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapState', namespace);\n if (!module) {\n return\n }\n state = module.context.state;\n getters = module.context.getters;\n }\n return typeof val === 'function'\n ? val.call(this, state, getters)\n : state[val]\n };\n // mark vuex getter for devtools\n res[key].vuex = true;\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for committing the mutation\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} mutations # Object's item can be a function which accept `commit` function as the first param, it can accept anthor params. You can commit mutation and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapMutations = normalizeNamespace(function (namespace, mutations) {\n var res = {};\n normalizeMap(mutations).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedMutation () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // Get the commit method from store\n var commit = this.$store.commit;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapMutations', namespace);\n if (!module) {\n return\n }\n commit = module.context.commit;\n }\n return typeof val === 'function'\n ? val.apply(this, [commit].concat(args))\n : commit.apply(this.$store, [val].concat(args))\n };\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for getting the getters\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} getters\n * @return {Object}\n */\nvar mapGetters = normalizeNamespace(function (namespace, getters) {\n var res = {};\n normalizeMap(getters).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n // The namespace has been mutated by normalizeNamespace\n val = namespace + val;\n res[key] = function mappedGetter () {\n if (namespace && !getModuleByNamespace(this.$store, 'mapGetters', namespace)) {\n return\n }\n if (process.env.NODE_ENV !== 'production' && !(val in this.$store.getters)) {\n console.error((\"[vuex] unknown getter: \" + val));\n return\n }\n return this.$store.getters[val]\n };\n // mark vuex getter for devtools\n res[key].vuex = true;\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for dispatch the action\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} actions # Object's item can be a function which accept `dispatch` function as the first param, it can accept anthor params. You can dispatch action and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapActions = normalizeNamespace(function (namespace, actions) {\n var res = {};\n normalizeMap(actions).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedAction () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // get dispatch function from store\n var dispatch = this.$store.dispatch;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapActions', namespace);\n if (!module) {\n return\n }\n dispatch = module.context.dispatch;\n }\n return typeof val === 'function'\n ? val.apply(this, [dispatch].concat(args))\n : dispatch.apply(this.$store, [val].concat(args))\n };\n });\n return res\n});\n\n/**\n * Rebinding namespace param for mapXXX function in special scoped, and return them by simple object\n * @param {String} namespace\n * @return {Object}\n */\nvar createNamespacedHelpers = function (namespace) { return ({\n mapState: mapState.bind(null, namespace),\n mapGetters: mapGetters.bind(null, namespace),\n mapMutations: mapMutations.bind(null, namespace),\n mapActions: mapActions.bind(null, namespace)\n}); };\n\n/**\n * Normalize the map\n * normalizeMap([1, 2, 3]) => [ { key: 1, val: 1 }, { key: 2, val: 2 }, { key: 3, val: 3 } ]\n * normalizeMap({a: 1, b: 2, c: 3}) => [ { key: 'a', val: 1 }, { key: 'b', val: 2 }, { key: 'c', val: 3 } ]\n * @param {Array|Object} map\n * @return {Object}\n */\nfunction normalizeMap (map) {\n return Array.isArray(map)\n ? map.map(function (key) { return ({ key: key, val: key }); })\n : Object.keys(map).map(function (key) { return ({ key: key, val: map[key] }); })\n}\n\n/**\n * Return a function expect two param contains namespace and map. it will normalize the namespace and then the param's function will handle the new namespace and the map.\n * @param {Function} fn\n * @return {Function}\n */\nfunction normalizeNamespace (fn) {\n return function (namespace, map) {\n if (typeof namespace !== 'string') {\n map = namespace;\n namespace = '';\n } else if (namespace.charAt(namespace.length - 1) !== '/') {\n namespace += '/';\n }\n return fn(namespace, map)\n }\n}\n\n/**\n * Search a special module from store by namespace. if module not exist, print error message.\n * @param {Object} store\n * @param {String} helper\n * @param {String} namespace\n * @return {Object}\n */\nfunction getModuleByNamespace (store, helper, namespace) {\n var module = store._modulesNamespaceMap[namespace];\n if (process.env.NODE_ENV !== 'production' && !module) {\n console.error((\"[vuex] module namespace not found in \" + helper + \"(): \" + namespace));\n }\n return module\n}\n\nvar index_esm = {\n Store: Store,\n install: install,\n version: '3.1.1',\n mapState: mapState,\n mapMutations: mapMutations,\n mapGetters: mapGetters,\n mapActions: mapActions,\n createNamespacedHelpers: createNamespacedHelpers\n};\n\nexport default index_esm;\nexport { Store, install, mapState, mapMutations, mapGetters, mapActions, createNamespacedHelpers };\n","!function(e,r){if(\"object\"==typeof exports&&\"object\"==typeof module)module.exports=r();else if(\"function\"==typeof define&&define.amd)define([],r);else{var n=r();for(var o in n)(\"object\"==typeof exports?exports:e)[o]=n[o]}}(window,function(){return function(e){var r={};function n(o){if(r[o])return r[o].exports;var t=r[o]={i:o,l:!1,exports:{}};return e[o].call(t.exports,t,t.exports,n),t.l=!0,t.exports}return n.m=e,n.c=r,n.d=function(e,r,o){n.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:o})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,r){if(1&r&&(e=n(e)),8&r)return e;if(4&r&&\"object\"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,\"default\",{enumerable:!0,value:e}),2&r&&\"string\"!=typeof e)for(var t in e)n.d(o,t,function(r){return e[r]}.bind(null,t));return o},n.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(r,\"a\",r),r},n.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},n.p=\"\",n(n.s=0)}([function(e,r,n){\"use strict\";function o(){return\"undefined\"==typeof OC?Promise.reject(new Error(\"OC not defined\")):void 0===OC.PasswordConfirmation?Promise.reject(new Error(\"OC.PasswordConfirmation not defined\")):OC.PasswordConfirmation.requiresPasswordConfirmation()?new Promise(function(e,r){OC.PasswordConfirmation.requirePasswordConfirmation(e,{},r)}):Promise.resolve()}n.r(r),n.d(r,\"default\",function(){return o})}])});\n//# sourceMappingURL=main.js.map","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.15.0\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nvar longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nvar timeoutDuration = 0;\nfor (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n timeoutDuration = 1;\n break;\n }\n}\n\nfunction microtaskDebounce(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\n }\n called = true;\n window.Promise.resolve().then(function () {\n called = false;\n fn();\n });\n };\n}\n\nfunction taskDebounce(fn) {\n var scheduled = false;\n return function () {\n if (!scheduled) {\n scheduled = true;\n setTimeout(function () {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nfunction isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n var window = element.ownerDocument.defaultView;\n var css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nfunction getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body;\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body;\n case '#document':\n return element.body;\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n\n var _getStyleComputedProp = getStyleComputedProperty(element),\n overflow = _getStyleComputedProp.overflow,\n overflowX = _getStyleComputedProp.overflowX,\n overflowY = _getStyleComputedProp.overflowY;\n\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nfunction isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nfunction getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n var noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n var offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n var nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY') {\n return false;\n }\n return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nfunction findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n var start = order ? element1 : element2;\n var end = order ? element2 : element1;\n\n // Get common ancestor container\n var range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n var commonAncestorContainer = range.commonAncestorContainer;\n\n // Both nodes are inside #document\n\n if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n var element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nfunction getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\n var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n var html = element.ownerDocument.documentElement;\n var scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nfunction includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n var modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nfunction getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return parseFloat(styles['border' + sideA + 'Width'], 10) + parseFloat(styles['border' + sideB + 'Width'], 10);\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n}\n\nfunction getWindowSizes(document) {\n var body = document.body;\n var html = document.documentElement;\n var computedStyle = isIE(10) && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nfunction getClientRect(offsets) {\n return _extends({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n });\n}\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nfunction getBoundingClientRect(element) {\n var rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } else {\n rect = element.getBoundingClientRect();\n }\n } catch (e) {}\n\n var result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n\n // subtract scrollbar size from sizes\n var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n var width = sizes.width || element.clientWidth || result.right - result.left;\n var height = sizes.height || element.clientHeight || result.bottom - result.top;\n\n var horizScrollbar = element.offsetWidth - width;\n var vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n var styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var isIE10 = isIE(10);\n var isHTML = parent.nodeName === 'HTML';\n var childrenRect = getBoundingClientRect(children);\n var parentRect = getBoundingClientRect(parent);\n var scrollParent = getScrollParent(children);\n\n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = parseFloat(styles.borderTopWidth, 10);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n var offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n var marginTop = parseFloat(styles.marginTop, 10);\n var marginLeft = parseFloat(styles.marginLeft, 10);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var html = element.ownerDocument.documentElement;\n var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n var width = Math.max(html.clientWidth, window.innerWidth || 0);\n var height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n var scrollTop = !excludeScroll ? getScroll(html) : 0;\n var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n var offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width: width,\n height: height\n };\n\n return getClientRect(offset);\n}\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nfunction isFixed(element) {\n var nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n var parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\n\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nfunction getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n var el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n}\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n // NOTE: 1 DOM access here\n\n var boundaries = { top: 0, left: 0 };\n var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n } else {\n // Handle other cases based on DOM element used as boundaries\n var boundariesNode = void 0;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n height = _getWindowSizes.height,\n width = _getWindowSizes.width;\n\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n padding = padding || 0;\n var isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n\n return boundaries;\n}\n\nfunction getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n\n var rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height\n }\n };\n\n var sortedAreas = Object.keys(rects).map(function (key) {\n return _extends({\n key: key\n }, rects[key], {\n area: getArea(rects[key])\n });\n }).sort(function (a, b) {\n return b.area - a.area;\n });\n\n var filteredAreas = sortedAreas.filter(function (_ref2) {\n var width = _ref2.width,\n height = _ref2.height;\n return width >= popper.clientWidth && height >= popper.clientHeight;\n });\n\n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n var variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? '-' + variation : '');\n}\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nfunction getReferenceOffsets(state, popper, reference) {\n var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nfunction getOuterSizes(element) {\n var window = element.ownerDocument.defaultView;\n var styles = window.getComputedStyle(element);\n var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n var result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x\n };\n return result;\n}\n\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nfunction getOppositePlacement(placement) {\n var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n var popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n var popperOffsets = {\n width: popperRect.width,\n height: popperRect.height\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n var mainSide = isHoriz ? 'top' : 'left';\n var secondarySide = isHoriz ? 'left' : 'top';\n var measurement = isHoriz ? 'height' : 'width';\n var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(function (cur) {\n return cur[prop] === value;\n });\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n var match = find(arr, function (obj) {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n}\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nfunction runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(function (modifier) {\n if (modifier['function']) {\n // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nfunction update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n var data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {}\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n\n data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nfunction isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(function (_ref) {\n var name = _ref.name,\n enabled = _ref.enabled;\n return enabled && name === modifierName;\n });\n}\n\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nfunction getSupportedPropertyName(property) {\n var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (var i = 0; i < prefixes.length; i++) {\n var prefix = prefixes[i];\n var toCheck = prefix ? '' + prefix + upperProp : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nfunction destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicity asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nfunction getWindow(element) {\n var ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n var isBody = scrollParent.nodeName === 'BODY';\n var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n var scrollElement = getScrollParent(reference);\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nfunction enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(function (target) {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nfunction disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setStyles(element, styles) {\n Object.keys(styles).forEach(function (prop) {\n var unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function (prop) {\n var value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nfunction applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n // compute reference element offsets\n var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\n\n/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nfunction getRoundedOffsets(data, shouldRound) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var round = Math.round,\n floor = Math.floor;\n\n var noRound = function noRound(v) {\n return v;\n };\n\n var referenceWidth = round(reference.width);\n var popperWidth = round(popper.width);\n\n var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n var isVariation = data.placement.indexOf('-') !== -1;\n var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n var verticalToInteger = !shouldRound ? noRound : round;\n\n return {\n left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right)\n };\n}\n\nvar isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeStyle(data, options) {\n var x = options.x,\n y = options.y;\n var popper = data.offsets.popper;\n\n // Remove this legacy support in Popper.js v2\n\n var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'applyStyle';\n }).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n }\n var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n var styles = {\n position: popper.position\n };\n\n var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n\n var sideA = x === 'bottom' ? 'top' : 'bottom';\n var sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n var prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n var left = void 0,\n top = void 0;\n if (sideA === 'bottom') {\n // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n var invertTop = sideA === 'bottom' ? -1 : 1;\n var invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = sideA + ', ' + sideB;\n }\n\n // Attributes\n var attributes = {\n 'x-placement': data.placement\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n return data;\n}\n\n/**\n * Helper used to know if the given modifier depends from another one.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\n\n var isRequired = !!requesting && modifiers.some(function (modifier) {\n return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n });\n\n if (!isRequired) {\n var _requesting = '`' + requestingName + '`';\n var requested = '`' + requestedName + '`';\n console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n }\n return isRequired;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction arrow(data, options) {\n var _data$offsets$arrow;\n\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n var arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn('WARNING: `arrow.element` must be child of its popper element!');\n return data;\n }\n }\n\n var placement = data.placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n var len = isVertical ? 'height' : 'width';\n var sideCapitalized = isVertical ? 'Top' : 'Left';\n var side = sideCapitalized.toLowerCase();\n var altSide = isVertical ? 'left' : 'top';\n var opSide = isVertical ? 'bottom' : 'right';\n var arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n var css = getStyleComputedProperty(data.instance.popper);\n var popperMarginSide = parseFloat(css['margin' + sideCapitalized], 10);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width'], 10);\n var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n\n return data;\n}\n\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nfunction getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n\n/**\n * List of accepted placements to use as values of the `placement` option.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nfunction clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var index = validPlacements.indexOf(placement);\n var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise'\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n\n var flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach(function (step, index) {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n var popperOffsets = data.offsets.popper;\n var refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n var floor = Math.floor;\n var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n\n var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n // flip the variation if required\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n // flips variation if reference element overflows boundaries\n var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n // flips variation if popper content overflows boundaries\n var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop);\n\n var flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var placement = data.placement.split('-')[0];\n var floor = Math.floor;\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var side = isVertical ? 'right' : 'bottom';\n var opSide = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n var value = +split[1];\n var unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n var element = void 0;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n var rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n var size = void 0;\n if (unit === 'vh') {\n size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n } else {\n size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n var offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n return frag.trim();\n });\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n var divider = fragments.indexOf(find(fragments, function (frag) {\n return frag.search(/,|\\s/) !== -1;\n }));\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n var splitRegex = /\\s*,\\s*|\\s+/;\n var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map(function (op, index) {\n // Most of the units rely on the orientation of the popper\n var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n var mergeWithPrevious = false;\n return op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce(function (a, b) {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(function (str) {\n return toValue(str, measurement, popperOffsets, referenceOffsets);\n });\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach(function (op, index) {\n op.forEach(function (frag, index2) {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nfunction offset(data, _ref) {\n var offset = _ref.offset;\n var placement = data.placement,\n _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var basePlacement = placement.split('-')[0];\n\n var offsets = void 0;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction preventOverflow(data, options) {\n var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n var transformProp = getSupportedPropertyName('transform');\n var popperStyles = data.instance.popper.style; // assignment to help minification\n var top = popperStyles.top,\n left = popperStyles.left,\n transform = popperStyles[transformProp];\n\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n var order = options.priority;\n var popper = data.offsets.popper;\n\n var check = {\n primary: function primary(placement) {\n var value = popper[placement];\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return defineProperty({}, placement, value);\n },\n secondary: function secondary(placement) {\n var mainSide = placement === 'right' ? 'left' : 'top';\n var value = popper[mainSide];\n if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n return defineProperty({}, mainSide, value);\n }\n };\n\n order.forEach(function (placement) {\n var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = _extends({}, popper, check[side](placement));\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction shift(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n var _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n\n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n var shiftOffsets = {\n start: defineProperty({}, side, reference[side]),\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n var refRect = data.offsets.reference;\n var bound = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'preventOverflow';\n }).boundaries;\n\n if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction inner(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nvar modifiers = {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.<br />\n * It will read the variation of the `placement` property.<br />\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.<br />\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.<br />\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.<br />\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.<br />\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent'\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]'\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport',\n /**\n * @prop {Boolean} flipVariations=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the reference element overlaps its boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariations: false,\n /**\n * @prop {Boolean} flipVariationsByContent=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the popper element overlaps its reference boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariationsByContent: false\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right'\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined\n }\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overridden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nvar Defaults = {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: function onCreate() {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: function onUpdate() {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers: modifiers\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\nvar Popper = function () {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {Element|referenceObject} reference - The reference element used to position the popper\n * @param {Element} popper - The HTML / XML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n function Popper(reference, popper) {\n var _this = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, Popper);\n\n this.scheduleUpdate = function () {\n return requestAnimationFrame(_this.update);\n };\n\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = _extends({}, Popper.Defaults, options);\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: []\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n return _extends({\n name: name\n }, _this.options.modifiers[name]);\n })\n // sort the modifiers by order\n .sort(function (a, b) {\n return a.order - b.order;\n });\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(function (modifierOptions) {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n var eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n\n\n createClass(Popper, [{\n key: 'update',\n value: function update$$1() {\n return update.call(this);\n }\n }, {\n key: 'destroy',\n value: function destroy$$1() {\n return destroy.call(this);\n }\n }, {\n key: 'enableEventListeners',\n value: function enableEventListeners$$1() {\n return enableEventListeners.call(this);\n }\n }, {\n key: 'disableEventListeners',\n value: function disableEventListeners$$1() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n\n }]);\n return Popper;\n}();\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.<br />\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\n\nexport default Popper;\n//# sourceMappingURL=popper.js.map\n","var scope = (typeof global !== \"undefined\" && global) ||\n (typeof self !== \"undefined\" && self) ||\n window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n (typeof global !== \"undefined\" && global.setImmediate) ||\n (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n (typeof global !== \"undefined\" && global.clearImmediate) ||\n (this && this.clearImmediate);\n","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n }\n\n // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n // Don't get fooled by e.g. browserify environments.\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n\nmodule.exports = function isBuffer (obj) {\n return obj != null && obj.constructor != null &&\n typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n config.method = config.method ? config.method.toLowerCase() : 'get';\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar isAbsoluteURL = require('./../helpers/isAbsoluteURL');\nvar combineURLs = require('./../helpers/combineURLs');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Support baseURL config\n if (config.baseURL && !isAbsoluteURL(config.url)) {\n config.url = combineURLs(config.baseURL, config.url);\n }\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers || {}\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData(\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData(\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","import Popper from 'popper.js';\nimport { ResizeObserver } from 'vue-resize';\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nvar SVGAnimatedString = function SVGAnimatedString() {};\n\nif (typeof window !== 'undefined') {\n SVGAnimatedString = window.SVGAnimatedString;\n}\n\nfunction convertToArray(value) {\n if (typeof value === 'string') {\n value = value.split(' ');\n }\n\n return value;\n}\n/**\n * Add classes to an element.\n * This method checks to ensure that the classes don't already exist before adding them.\n * It uses el.className rather than classList in order to be IE friendly.\n * @param {object} el - The element to add the classes to.\n * @param {classes} string - List of space separated classes to be added to the element.\n */\n\nfunction addClasses(el, classes) {\n var newClasses = convertToArray(classes);\n var classList;\n\n if (el.className instanceof SVGAnimatedString) {\n classList = convertToArray(el.className.baseVal);\n } else {\n classList = convertToArray(el.className);\n }\n\n newClasses.forEach(function (newClass) {\n if (classList.indexOf(newClass) === -1) {\n classList.push(newClass);\n }\n });\n\n if (el instanceof SVGElement) {\n el.setAttribute('class', classList.join(' '));\n } else {\n el.className = classList.join(' ');\n }\n}\n/**\n * Remove classes from an element.\n * It uses el.className rather than classList in order to be IE friendly.\n * @export\n * @param {any} el The element to remove the classes from.\n * @param {any} classes List of space separated classes to be removed from the element.\n */\n\nfunction removeClasses(el, classes) {\n var newClasses = convertToArray(classes);\n var classList;\n\n if (el.className instanceof SVGAnimatedString) {\n classList = convertToArray(el.className.baseVal);\n } else {\n classList = convertToArray(el.className);\n }\n\n newClasses.forEach(function (newClass) {\n var index = classList.indexOf(newClass);\n\n if (index !== -1) {\n classList.splice(index, 1);\n }\n });\n\n if (el instanceof SVGElement) {\n el.setAttribute('class', classList.join(' '));\n } else {\n el.className = classList.join(' ');\n }\n}\nvar supportsPassive = false;\n\nif (typeof window !== 'undefined') {\n supportsPassive = false;\n\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassive = true;\n }\n });\n window.addEventListener('test', null, opts);\n } catch (e) {}\n}\n\nvar DEFAULT_OPTIONS = {\n container: false,\n delay: 0,\n html: false,\n placement: 'top',\n title: '',\n template: '<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>',\n trigger: 'hover focus',\n offset: 0\n};\nvar openTooltips = [];\n\nvar Tooltip =\n/*#__PURE__*/\nfunction () {\n /**\n * Create a new Tooltip.js instance\n * @class Tooltip\n * @param {HTMLElement} reference - The DOM node used as reference of the tooltip (it can be a jQuery element).\n * @param {Object} options\n * @param {String} options.placement=bottom\n * Placement of the popper accepted values: `top(-start, -end), right(-start, -end), bottom(-start, -end),\n * left(-start, -end)`\n * @param {HTMLElement|String|false} options.container=false - Append the tooltip to a specific element.\n * @param {Number|Object} options.delay=0\n * Delay showing and hiding the tooltip (ms) - does not apply to manual trigger type.\n * If a number is supplied, delay is applied to both hide/show.\n * Object structure is: `{ show: 500, hide: 100 }`\n * @param {Boolean} options.html=false - Insert HTML into the tooltip. If false, the content will inserted with `innerText`.\n * @param {String|PlacementFunction} options.placement='top' - One of the allowed placements, or a function returning one of them.\n * @param {String} [options.template='<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>']\n * Base HTML to used when creating the tooltip.\n * The tooltip's `title` will be injected into the `.tooltip-inner` or `.tooltip__inner`.\n * `.tooltip-arrow` or `.tooltip__arrow` will become the tooltip's arrow.\n * The outermost wrapper element should have the `.tooltip` class.\n * @param {String|HTMLElement|TitleFunction} options.title='' - Default title value if `title` attribute isn't present.\n * @param {String} [options.trigger='hover focus']\n * How tooltip is triggered - click, hover, focus, manual.\n * You may pass multiple triggers; separate them with a space. `manual` cannot be combined with any other trigger.\n * @param {HTMLElement} options.boundariesElement\n * The element used as boundaries for the tooltip. For more information refer to Popper.js'\n * [boundariesElement docs](https://popper.js.org/popper-documentation.html)\n * @param {Number|String} options.offset=0 - Offset of the tooltip relative to its reference. For more information refer to Popper.js'\n * [offset docs](https://popper.js.org/popper-documentation.html)\n * @param {Object} options.popperOptions={} - Popper options, will be passed directly to popper instance. For more information refer to Popper.js'\n * [options docs](https://popper.js.org/popper-documentation.html)\n * @return {Object} instance - The generated tooltip instance\n */\n function Tooltip(_reference, _options) {\n var _this = this;\n\n _classCallCheck(this, Tooltip);\n\n _defineProperty(this, \"_events\", []);\n\n _defineProperty(this, \"_setTooltipNodeEvent\", function (evt, reference, delay, options) {\n var relatedreference = evt.relatedreference || evt.toElement || evt.relatedTarget;\n\n var callback = function callback(evt2) {\n var relatedreference2 = evt2.relatedreference || evt2.toElement || evt2.relatedTarget; // Remove event listener after call\n\n _this._tooltipNode.removeEventListener(evt.type, callback); // If the new reference is not the reference element\n\n\n if (!reference.contains(relatedreference2)) {\n // Schedule to hide tooltip\n _this._scheduleHide(reference, options.delay, options, evt2);\n }\n };\n\n if (_this._tooltipNode.contains(relatedreference)) {\n // listen to mouseleave on the tooltip element to be able to hide the tooltip\n _this._tooltipNode.addEventListener(evt.type, callback);\n\n return true;\n }\n\n return false;\n });\n\n // apply user options over default ones\n _options = _objectSpread({}, DEFAULT_OPTIONS, _options);\n _reference.jquery && (_reference = _reference[0]);\n this.show = this.show.bind(this);\n this.hide = this.hide.bind(this); // cache reference and options\n\n this.reference = _reference;\n this.options = _options; // set initial state\n\n this._isOpen = false;\n\n this._init();\n } //\n // Public methods\n //\n\n /**\n * Reveals an element's tooltip. This is considered a \"manual\" triggering of the tooltip.\n * Tooltips with zero-length titles are never displayed.\n * @method Tooltip#show\n * @memberof Tooltip\n */\n\n\n _createClass(Tooltip, [{\n key: \"show\",\n value: function show() {\n this._show(this.reference, this.options);\n }\n /**\n * Hides an element’s tooltip. This is considered a “manual” triggering of the tooltip.\n * @method Tooltip#hide\n * @memberof Tooltip\n */\n\n }, {\n key: \"hide\",\n value: function hide() {\n this._hide();\n }\n /**\n * Hides and destroys an element’s tooltip.\n * @method Tooltip#dispose\n * @memberof Tooltip\n */\n\n }, {\n key: \"dispose\",\n value: function dispose() {\n this._dispose();\n }\n /**\n * Toggles an element’s tooltip. This is considered a “manual” triggering of the tooltip.\n * @method Tooltip#toggle\n * @memberof Tooltip\n */\n\n }, {\n key: \"toggle\",\n value: function toggle() {\n if (this._isOpen) {\n return this.hide();\n } else {\n return this.show();\n }\n }\n }, {\n key: \"setClasses\",\n value: function setClasses(classes) {\n this._classes = classes;\n }\n }, {\n key: \"setContent\",\n value: function setContent(content) {\n this.options.title = content;\n\n if (this._tooltipNode) {\n this._setContent(content, this.options);\n }\n }\n }, {\n key: \"setOptions\",\n value: function setOptions(options) {\n var classesUpdated = false;\n var classes = options && options.classes || directive.options.defaultClass;\n\n if (this._classes !== classes) {\n this.setClasses(classes);\n classesUpdated = true;\n }\n\n options = getOptions(options);\n var needPopperUpdate = false;\n var needRestart = false;\n\n if (this.options.offset !== options.offset || this.options.placement !== options.placement) {\n needPopperUpdate = true;\n }\n\n if (this.options.template !== options.template || this.options.trigger !== options.trigger || this.options.container !== options.container || classesUpdated) {\n needRestart = true;\n }\n\n for (var key in options) {\n this.options[key] = options[key];\n }\n\n if (this._tooltipNode) {\n if (needRestart) {\n var isOpen = this._isOpen;\n this.dispose();\n\n this._init();\n\n if (isOpen) {\n this.show();\n }\n } else if (needPopperUpdate) {\n this.popperInstance.update();\n }\n }\n } //\n // Private methods\n //\n\n }, {\n key: \"_init\",\n value: function _init() {\n // get events list\n var events = typeof this.options.trigger === 'string' ? this.options.trigger.split(' ') : [];\n this._isDisposed = false;\n this._enableDocumentTouch = events.indexOf('manual') === -1;\n events = events.filter(function (trigger) {\n return ['click', 'hover', 'focus'].indexOf(trigger) !== -1;\n }); // set event listeners\n\n this._setEventListeners(this.reference, events, this.options); // title attribute\n\n\n this.$_originalTitle = this.reference.getAttribute('title');\n this.reference.removeAttribute('title');\n this.reference.setAttribute('data-original-title', this.$_originalTitle);\n }\n /**\n * Creates a new tooltip node\n * @memberof Tooltip\n * @private\n * @param {HTMLElement} reference\n * @param {String} template\n * @param {String|HTMLElement|TitleFunction} title\n * @param {Boolean} allowHtml\n * @return {HTMLelement} tooltipNode\n */\n\n }, {\n key: \"_create\",\n value: function _create(reference, template) {\n // create tooltip element\n var tooltipGenerator = window.document.createElement('div');\n tooltipGenerator.innerHTML = template.trim();\n var tooltipNode = tooltipGenerator.childNodes[0]; // add unique ID to our tooltip (needed for accessibility reasons)\n\n tooltipNode.id = \"tooltip_\".concat(Math.random().toString(36).substr(2, 10)); // Initially hide the tooltip\n // The attribute will be switched in a next frame so\n // CSS transitions can play\n\n tooltipNode.setAttribute('aria-hidden', 'true');\n\n if (this.options.autoHide && this.options.trigger.indexOf('hover') !== -1) {\n tooltipNode.addEventListener('mouseenter', this.hide);\n tooltipNode.addEventListener('click', this.hide);\n } // return the generated tooltip node\n\n\n return tooltipNode;\n }\n }, {\n key: \"_setContent\",\n value: function _setContent(content, options) {\n var _this2 = this;\n\n this.asyncContent = false;\n\n this._applyContent(content, options).then(function () {\n _this2.popperInstance.update();\n });\n }\n }, {\n key: \"_applyContent\",\n value: function _applyContent(title, options) {\n var _this3 = this;\n\n return new Promise(function (resolve, reject) {\n var allowHtml = options.html;\n var rootNode = _this3._tooltipNode;\n if (!rootNode) return;\n var titleNode = rootNode.querySelector(_this3.options.innerSelector);\n\n if (title.nodeType === 1) {\n // if title is a node, append it only if allowHtml is true\n if (allowHtml) {\n while (titleNode.firstChild) {\n titleNode.removeChild(titleNode.firstChild);\n }\n\n titleNode.appendChild(title);\n }\n } else if (typeof title === 'function') {\n // if title is a function, call it and set innerText or innerHtml depending by `allowHtml` value\n var result = title();\n\n if (result && typeof result.then === 'function') {\n _this3.asyncContent = true;\n options.loadingClass && addClasses(rootNode, options.loadingClass);\n\n if (options.loadingContent) {\n _this3._applyContent(options.loadingContent, options);\n }\n\n result.then(function (asyncResult) {\n options.loadingClass && removeClasses(rootNode, options.loadingClass);\n return _this3._applyContent(asyncResult, options);\n }).then(resolve).catch(reject);\n } else {\n _this3._applyContent(result, options).then(resolve).catch(reject);\n }\n\n return;\n } else {\n // if it's just a simple text, set innerText or innerHtml depending by `allowHtml` value\n allowHtml ? titleNode.innerHTML = title : titleNode.innerText = title;\n }\n\n resolve();\n });\n }\n }, {\n key: \"_show\",\n value: function _show(reference, options) {\n if (options && typeof options.container === 'string') {\n var container = document.querySelector(options.container);\n if (!container) return;\n }\n\n clearTimeout(this._disposeTimer);\n options = Object.assign({}, options);\n delete options.offset;\n var updateClasses = true;\n\n if (this._tooltipNode) {\n addClasses(this._tooltipNode, this._classes);\n updateClasses = false;\n }\n\n var result = this._ensureShown(reference, options);\n\n if (updateClasses && this._tooltipNode) {\n addClasses(this._tooltipNode, this._classes);\n }\n\n addClasses(reference, ['v-tooltip-open']);\n return result;\n }\n }, {\n key: \"_ensureShown\",\n value: function _ensureShown(reference, options) {\n var _this4 = this;\n\n // don't show if it's already visible\n if (this._isOpen) {\n return this;\n }\n\n this._isOpen = true;\n openTooltips.push(this); // if the tooltipNode already exists, just show it\n\n if (this._tooltipNode) {\n this._tooltipNode.style.display = '';\n\n this._tooltipNode.setAttribute('aria-hidden', 'false');\n\n this.popperInstance.enableEventListeners();\n this.popperInstance.update();\n\n if (this.asyncContent) {\n this._setContent(options.title, options);\n }\n\n return this;\n } // get title\n\n\n var title = reference.getAttribute('title') || options.title; // don't show tooltip if no title is defined\n\n if (!title) {\n return this;\n } // create tooltip node\n\n\n var tooltipNode = this._create(reference, options.template);\n\n this._tooltipNode = tooltipNode; // Add `aria-describedby` to our reference element for accessibility reasons\n\n reference.setAttribute('aria-describedby', tooltipNode.id); // append tooltip to container\n\n var container = this._findContainer(options.container, reference);\n\n this._append(tooltipNode, container);\n\n var popperOptions = _objectSpread({}, options.popperOptions, {\n placement: options.placement\n });\n\n popperOptions.modifiers = _objectSpread({}, popperOptions.modifiers, {\n arrow: {\n element: this.options.arrowSelector\n }\n });\n\n if (options.boundariesElement) {\n popperOptions.modifiers.preventOverflow = {\n boundariesElement: options.boundariesElement\n };\n }\n\n this.popperInstance = new Popper(reference, tooltipNode, popperOptions);\n\n this._setContent(title, options); // Fix position\n\n\n requestAnimationFrame(function () {\n if (!_this4._isDisposed && _this4.popperInstance) {\n _this4.popperInstance.update(); // Show the tooltip\n\n\n requestAnimationFrame(function () {\n if (!_this4._isDisposed) {\n _this4._isOpen && tooltipNode.setAttribute('aria-hidden', 'false');\n } else {\n _this4.dispose();\n }\n });\n } else {\n _this4.dispose();\n }\n });\n return this;\n }\n }, {\n key: \"_noLongerOpen\",\n value: function _noLongerOpen() {\n var index = openTooltips.indexOf(this);\n\n if (index !== -1) {\n openTooltips.splice(index, 1);\n }\n }\n }, {\n key: \"_hide\",\n value: function _hide()\n /* reference, options */\n {\n var _this5 = this;\n\n // don't hide if it's already hidden\n if (!this._isOpen) {\n return this;\n }\n\n this._isOpen = false;\n\n this._noLongerOpen(); // hide tooltipNode\n\n\n this._tooltipNode.style.display = 'none';\n\n this._tooltipNode.setAttribute('aria-hidden', 'true');\n\n this.popperInstance.disableEventListeners();\n clearTimeout(this._disposeTimer);\n var disposeTime = directive.options.disposeTimeout;\n\n if (disposeTime !== null) {\n this._disposeTimer = setTimeout(function () {\n if (_this5._tooltipNode) {\n _this5._tooltipNode.removeEventListener('mouseenter', _this5.hide);\n\n _this5._tooltipNode.removeEventListener('click', _this5.hide); // Don't remove popper instance, just the HTML element\n\n\n _this5._removeTooltipNode();\n }\n }, disposeTime);\n }\n\n removeClasses(this.reference, ['v-tooltip-open']);\n return this;\n }\n }, {\n key: \"_removeTooltipNode\",\n value: function _removeTooltipNode() {\n if (!this._tooltipNode) return;\n var parentNode = this._tooltipNode.parentNode;\n\n if (parentNode) {\n parentNode.removeChild(this._tooltipNode);\n this.reference.removeAttribute('aria-describedby');\n }\n\n this._tooltipNode = null;\n }\n }, {\n key: \"_dispose\",\n value: function _dispose() {\n var _this6 = this;\n\n this._isDisposed = true;\n this.reference.removeAttribute('data-original-title');\n\n if (this.$_originalTitle) {\n this.reference.setAttribute('title', this.$_originalTitle);\n } // remove event listeners first to prevent any unexpected behaviour\n\n\n this._events.forEach(function (_ref) {\n var func = _ref.func,\n event = _ref.event;\n\n _this6.reference.removeEventListener(event, func);\n });\n\n this._events = [];\n\n if (this._tooltipNode) {\n this._hide();\n\n this._tooltipNode.removeEventListener('mouseenter', this.hide);\n\n this._tooltipNode.removeEventListener('click', this.hide); // destroy instance\n\n\n this.popperInstance.destroy(); // destroy tooltipNode if removeOnDestroy is not set, as popperInstance.destroy() already removes the element\n\n if (!this.popperInstance.options.removeOnDestroy) {\n this._removeTooltipNode();\n }\n } else {\n this._noLongerOpen();\n }\n\n return this;\n }\n }, {\n key: \"_findContainer\",\n value: function _findContainer(container, reference) {\n // if container is a query, get the relative element\n if (typeof container === 'string') {\n container = window.document.querySelector(container);\n } else if (container === false) {\n // if container is `false`, set it to reference parent\n container = reference.parentNode;\n }\n\n return container;\n }\n /**\n * Append tooltip to container\n * @memberof Tooltip\n * @private\n * @param {HTMLElement} tooltip\n * @param {HTMLElement|String|false} container\n */\n\n }, {\n key: \"_append\",\n value: function _append(tooltipNode, container) {\n container.appendChild(tooltipNode);\n }\n }, {\n key: \"_setEventListeners\",\n value: function _setEventListeners(reference, events, options) {\n var _this7 = this;\n\n var directEvents = [];\n var oppositeEvents = [];\n events.forEach(function (event) {\n switch (event) {\n case 'hover':\n directEvents.push('mouseenter');\n oppositeEvents.push('mouseleave');\n if (_this7.options.hideOnTargetClick) oppositeEvents.push('click');\n break;\n\n case 'focus':\n directEvents.push('focus');\n oppositeEvents.push('blur');\n if (_this7.options.hideOnTargetClick) oppositeEvents.push('click');\n break;\n\n case 'click':\n directEvents.push('click');\n oppositeEvents.push('click');\n break;\n }\n }); // schedule show tooltip\n\n directEvents.forEach(function (event) {\n var func = function func(evt) {\n if (_this7._isOpen === true) {\n return;\n }\n\n evt.usedByTooltip = true;\n\n _this7._scheduleShow(reference, options.delay, options, evt);\n };\n\n _this7._events.push({\n event: event,\n func: func\n });\n\n reference.addEventListener(event, func);\n }); // schedule hide tooltip\n\n oppositeEvents.forEach(function (event) {\n var func = function func(evt) {\n if (evt.usedByTooltip === true) {\n return;\n }\n\n _this7._scheduleHide(reference, options.delay, options, evt);\n };\n\n _this7._events.push({\n event: event,\n func: func\n });\n\n reference.addEventListener(event, func);\n });\n }\n }, {\n key: \"_onDocumentTouch\",\n value: function _onDocumentTouch(event) {\n if (this._enableDocumentTouch) {\n this._scheduleHide(this.reference, this.options.delay, this.options, event);\n }\n }\n }, {\n key: \"_scheduleShow\",\n value: function _scheduleShow(reference, delay, options\n /*, evt */\n ) {\n var _this8 = this;\n\n // defaults to 0\n var computedDelay = delay && delay.show || delay || 0;\n clearTimeout(this._scheduleTimer);\n this._scheduleTimer = window.setTimeout(function () {\n return _this8._show(reference, options);\n }, computedDelay);\n }\n }, {\n key: \"_scheduleHide\",\n value: function _scheduleHide(reference, delay, options, evt) {\n var _this9 = this;\n\n // defaults to 0\n var computedDelay = delay && delay.hide || delay || 0;\n clearTimeout(this._scheduleTimer);\n this._scheduleTimer = window.setTimeout(function () {\n if (_this9._isOpen === false) {\n return;\n }\n\n if (!document.body.contains(_this9._tooltipNode)) {\n return;\n } // if we are hiding because of a mouseleave, we must check that the new\n // reference isn't the tooltip, because in this case we don't want to hide it\n\n\n if (evt.type === 'mouseleave') {\n var isSet = _this9._setTooltipNodeEvent(evt, reference, delay, options); // if we set the new event, don't hide the tooltip yet\n // the new event will take care to hide it if necessary\n\n\n if (isSet) {\n return;\n }\n }\n\n _this9._hide(reference, options);\n }, computedDelay);\n }\n }]);\n\n return Tooltip;\n}(); // Hide tooltips on touch devices\n\nif (typeof document !== 'undefined') {\n document.addEventListener('touchstart', function (event) {\n for (var i = 0; i < openTooltips.length; i++) {\n openTooltips[i]._onDocumentTouch(event);\n }\n }, supportsPassive ? {\n passive: true,\n capture: true\n } : true);\n}\n/**\n * Placement function, its context is the Tooltip instance.\n * @memberof Tooltip\n * @callback PlacementFunction\n * @param {HTMLElement} tooltip - tooltip DOM node.\n * @param {HTMLElement} reference - reference DOM node.\n * @return {String} placement - One of the allowed placement options.\n */\n\n/**\n * Title function, its context is the Tooltip instance.\n * @memberof Tooltip\n * @callback TitleFunction\n * @return {String} placement - The desired title.\n */\n\nvar state = {\n enabled: true\n};\nvar positions = ['top', 'top-start', 'top-end', 'right', 'right-start', 'right-end', 'bottom', 'bottom-start', 'bottom-end', 'left', 'left-start', 'left-end'];\nvar defaultOptions = {\n // Default tooltip placement relative to target element\n defaultPlacement: 'top',\n // Default CSS classes applied to the tooltip element\n defaultClass: 'vue-tooltip-theme',\n // Default CSS classes applied to the target element of the tooltip\n defaultTargetClass: 'has-tooltip',\n // Is the content HTML by default?\n defaultHtml: true,\n // Default HTML template of the tooltip element\n // It must include `tooltip-arrow` & `tooltip-inner` CSS classes (can be configured, see below)\n // Change if the classes conflict with other libraries (for example bootstrap)\n defaultTemplate: '<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>',\n // Selector used to get the arrow element in the tooltip template\n defaultArrowSelector: '.tooltip-arrow, .tooltip__arrow',\n // Selector used to get the inner content element in the tooltip template\n defaultInnerSelector: '.tooltip-inner, .tooltip__inner',\n // Delay (ms)\n defaultDelay: 0,\n // Default events that trigger the tooltip\n defaultTrigger: 'hover focus',\n // Default position offset (px)\n defaultOffset: 0,\n // Default container where the tooltip will be appended\n defaultContainer: 'body',\n defaultBoundariesElement: undefined,\n defaultPopperOptions: {},\n // Class added when content is loading\n defaultLoadingClass: 'tooltip-loading',\n // Displayed when tooltip content is loading\n defaultLoadingContent: '...',\n // Hide on mouseover tooltip\n autoHide: true,\n // Close tooltip on click on tooltip target?\n defaultHideOnTargetClick: true,\n // Auto destroy tooltip DOM nodes (ms)\n disposeTimeout: 5000,\n // Options for popover\n popover: {\n defaultPlacement: 'bottom',\n // Use the `popoverClass` prop for theming\n defaultClass: 'vue-popover-theme',\n // Base class (change if conflicts with other libraries)\n defaultBaseClass: 'tooltip popover',\n // Wrapper class (contains arrow and inner)\n defaultWrapperClass: 'wrapper',\n // Inner content class\n defaultInnerClass: 'tooltip-inner popover-inner',\n // Arrow class\n defaultArrowClass: 'tooltip-arrow popover-arrow',\n // Class added when popover is open\n defaultOpenClass: 'open',\n defaultDelay: 0,\n defaultTrigger: 'click',\n defaultOffset: 0,\n defaultContainer: 'body',\n defaultBoundariesElement: undefined,\n defaultPopperOptions: {},\n // Hides if clicked outside of popover\n defaultAutoHide: true,\n // Update popper on content resize\n defaultHandleResize: true\n }\n};\nfunction getOptions(options) {\n var result = {\n placement: typeof options.placement !== 'undefined' ? options.placement : directive.options.defaultPlacement,\n delay: typeof options.delay !== 'undefined' ? options.delay : directive.options.defaultDelay,\n html: typeof options.html !== 'undefined' ? options.html : directive.options.defaultHtml,\n template: typeof options.template !== 'undefined' ? options.template : directive.options.defaultTemplate,\n arrowSelector: typeof options.arrowSelector !== 'undefined' ? options.arrowSelector : directive.options.defaultArrowSelector,\n innerSelector: typeof options.innerSelector !== 'undefined' ? options.innerSelector : directive.options.defaultInnerSelector,\n trigger: typeof options.trigger !== 'undefined' ? options.trigger : directive.options.defaultTrigger,\n offset: typeof options.offset !== 'undefined' ? options.offset : directive.options.defaultOffset,\n container: typeof options.container !== 'undefined' ? options.container : directive.options.defaultContainer,\n boundariesElement: typeof options.boundariesElement !== 'undefined' ? options.boundariesElement : directive.options.defaultBoundariesElement,\n autoHide: typeof options.autoHide !== 'undefined' ? options.autoHide : directive.options.autoHide,\n hideOnTargetClick: typeof options.hideOnTargetClick !== 'undefined' ? options.hideOnTargetClick : directive.options.defaultHideOnTargetClick,\n loadingClass: typeof options.loadingClass !== 'undefined' ? options.loadingClass : directive.options.defaultLoadingClass,\n loadingContent: typeof options.loadingContent !== 'undefined' ? options.loadingContent : directive.options.defaultLoadingContent,\n popperOptions: _objectSpread({}, typeof options.popperOptions !== 'undefined' ? options.popperOptions : directive.options.defaultPopperOptions)\n };\n\n if (result.offset) {\n var typeofOffset = _typeof(result.offset);\n\n var offset = result.offset; // One value -> switch\n\n if (typeofOffset === 'number' || typeofOffset === 'string' && offset.indexOf(',') === -1) {\n offset = \"0, \".concat(offset);\n }\n\n if (!result.popperOptions.modifiers) {\n result.popperOptions.modifiers = {};\n }\n\n result.popperOptions.modifiers.offset = {\n offset: offset\n };\n }\n\n if (result.trigger && result.trigger.indexOf('click') !== -1) {\n result.hideOnTargetClick = false;\n }\n\n return result;\n}\nfunction getPlacement(value, modifiers) {\n var placement = value.placement;\n\n for (var i = 0; i < positions.length; i++) {\n var pos = positions[i];\n\n if (modifiers[pos]) {\n placement = pos;\n }\n }\n\n return placement;\n}\nfunction getContent(value) {\n var type = _typeof(value);\n\n if (type === 'string') {\n return value;\n } else if (value && type === 'object') {\n return value.content;\n } else {\n return false;\n }\n}\nfunction createTooltip(el, value) {\n var modifiers = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var content = getContent(value);\n var classes = typeof value.classes !== 'undefined' ? value.classes : directive.options.defaultClass;\n\n var opts = _objectSpread({\n title: content\n }, getOptions(_objectSpread({}, value, {\n placement: getPlacement(value, modifiers)\n })));\n\n var tooltip = el._tooltip = new Tooltip(el, opts);\n tooltip.setClasses(classes);\n tooltip._vueEl = el; // Class on target\n\n var targetClasses = typeof value.targetClasses !== 'undefined' ? value.targetClasses : directive.options.defaultTargetClass;\n el._tooltipTargetClasses = targetClasses;\n addClasses(el, targetClasses);\n return tooltip;\n}\nfunction destroyTooltip(el) {\n if (el._tooltip) {\n el._tooltip.dispose();\n\n delete el._tooltip;\n delete el._tooltipOldShow;\n }\n\n if (el._tooltipTargetClasses) {\n removeClasses(el, el._tooltipTargetClasses);\n delete el._tooltipTargetClasses;\n }\n}\nfunction bind(el, _ref) {\n var value = _ref.value,\n oldValue = _ref.oldValue,\n modifiers = _ref.modifiers;\n var content = getContent(value);\n\n if (!content || !state.enabled) {\n destroyTooltip(el);\n } else {\n var tooltip;\n\n if (el._tooltip) {\n tooltip = el._tooltip; // Content\n\n tooltip.setContent(content); // Options\n\n tooltip.setOptions(_objectSpread({}, value, {\n placement: getPlacement(value, modifiers)\n }));\n } else {\n tooltip = createTooltip(el, value, modifiers);\n } // Manual show\n\n\n if (typeof value.show !== 'undefined' && value.show !== el._tooltipOldShow) {\n el._tooltipOldShow = value.show;\n value.show ? tooltip.show() : tooltip.hide();\n }\n }\n}\nvar directive = {\n options: defaultOptions,\n bind: bind,\n update: bind,\n unbind: function unbind(el) {\n destroyTooltip(el);\n }\n};\n\nfunction addListeners(el) {\n el.addEventListener('click', onClick);\n el.addEventListener('touchstart', onTouchStart, supportsPassive ? {\n passive: true\n } : false);\n}\n\nfunction removeListeners(el) {\n el.removeEventListener('click', onClick);\n el.removeEventListener('touchstart', onTouchStart);\n el.removeEventListener('touchend', onTouchEnd);\n el.removeEventListener('touchcancel', onTouchCancel);\n}\n\nfunction onClick(event) {\n var el = event.currentTarget;\n event.closePopover = !el.$_vclosepopover_touch;\n event.closeAllPopover = el.$_closePopoverModifiers && !!el.$_closePopoverModifiers.all;\n}\n\nfunction onTouchStart(event) {\n if (event.changedTouches.length === 1) {\n var el = event.currentTarget;\n el.$_vclosepopover_touch = true;\n var touch = event.changedTouches[0];\n el.$_vclosepopover_touchPoint = touch;\n el.addEventListener('touchend', onTouchEnd);\n el.addEventListener('touchcancel', onTouchCancel);\n }\n}\n\nfunction onTouchEnd(event) {\n var el = event.currentTarget;\n el.$_vclosepopover_touch = false;\n\n if (event.changedTouches.length === 1) {\n var touch = event.changedTouches[0];\n var firstTouch = el.$_vclosepopover_touchPoint;\n event.closePopover = Math.abs(touch.screenY - firstTouch.screenY) < 20 && Math.abs(touch.screenX - firstTouch.screenX) < 20;\n event.closeAllPopover = el.$_closePopoverModifiers && !!el.$_closePopoverModifiers.all;\n }\n}\n\nfunction onTouchCancel(event) {\n var el = event.currentTarget;\n el.$_vclosepopover_touch = false;\n}\n\nvar vclosepopover = {\n bind: function bind(el, _ref) {\n var value = _ref.value,\n modifiers = _ref.modifiers;\n el.$_closePopoverModifiers = modifiers;\n\n if (typeof value === 'undefined' || value) {\n addListeners(el);\n }\n },\n update: function update(el, _ref2) {\n var value = _ref2.value,\n oldValue = _ref2.oldValue,\n modifiers = _ref2.modifiers;\n el.$_closePopoverModifiers = modifiers;\n\n if (value !== oldValue) {\n if (typeof value === 'undefined' || value) {\n addListeners(el);\n } else {\n removeListeners(el);\n }\n }\n },\n unbind: function unbind(el) {\n removeListeners(el);\n }\n};\n\nfunction getDefault(key) {\n var value = directive.options.popover[key];\n\n if (typeof value === 'undefined') {\n return directive.options[key];\n }\n\n return value;\n}\n\nvar isIOS = false;\n\nif (typeof window !== 'undefined' && typeof navigator !== 'undefined') {\n isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\n}\n\nvar openPopovers = [];\n\nvar Element = function Element() {};\n\nif (typeof window !== 'undefined') {\n Element = window.Element;\n}\n\nvar script = {\n name: 'VPopover',\n components: {\n ResizeObserver: ResizeObserver\n },\n props: {\n open: {\n type: Boolean,\n default: false\n },\n disabled: {\n type: Boolean,\n default: false\n },\n placement: {\n type: String,\n default: function _default() {\n return getDefault('defaultPlacement');\n }\n },\n delay: {\n type: [String, Number, Object],\n default: function _default() {\n return getDefault('defaultDelay');\n }\n },\n offset: {\n type: [String, Number],\n default: function _default() {\n return getDefault('defaultOffset');\n }\n },\n trigger: {\n type: String,\n default: function _default() {\n return getDefault('defaultTrigger');\n }\n },\n container: {\n type: [String, Object, Element, Boolean],\n default: function _default() {\n return getDefault('defaultContainer');\n }\n },\n boundariesElement: {\n type: [String, Element],\n default: function _default() {\n return getDefault('defaultBoundariesElement');\n }\n },\n popperOptions: {\n type: Object,\n default: function _default() {\n return getDefault('defaultPopperOptions');\n }\n },\n popoverClass: {\n type: [String, Array],\n default: function _default() {\n return getDefault('defaultClass');\n }\n },\n popoverBaseClass: {\n type: [String, Array],\n default: function _default() {\n return directive.options.popover.defaultBaseClass;\n }\n },\n popoverInnerClass: {\n type: [String, Array],\n default: function _default() {\n return directive.options.popover.defaultInnerClass;\n }\n },\n popoverWrapperClass: {\n type: [String, Array],\n default: function _default() {\n return directive.options.popover.defaultWrapperClass;\n }\n },\n popoverArrowClass: {\n type: [String, Array],\n default: function _default() {\n return directive.options.popover.defaultArrowClass;\n }\n },\n autoHide: {\n type: Boolean,\n default: function _default() {\n return directive.options.popover.defaultAutoHide;\n }\n },\n handleResize: {\n type: Boolean,\n default: function _default() {\n return directive.options.popover.defaultHandleResize;\n }\n },\n openGroup: {\n type: String,\n default: null\n },\n openClass: {\n type: [String, Array],\n default: function _default() {\n return directive.options.popover.defaultOpenClass;\n }\n }\n },\n data: function data() {\n return {\n isOpen: false,\n id: Math.random().toString(36).substr(2, 10)\n };\n },\n computed: {\n cssClass: function cssClass() {\n return _defineProperty({}, this.openClass, this.isOpen);\n },\n popoverId: function popoverId() {\n return \"popover_\".concat(this.id);\n }\n },\n watch: {\n open: function open(val) {\n if (val) {\n this.show();\n } else {\n this.hide();\n }\n },\n disabled: function disabled(val, oldVal) {\n if (val !== oldVal) {\n if (val) {\n this.hide();\n } else if (this.open) {\n this.show();\n }\n }\n },\n container: function container(val) {\n if (this.isOpen && this.popperInstance) {\n var popoverNode = this.$refs.popover;\n var reference = this.$refs.trigger;\n var container = this.$_findContainer(this.container, reference);\n\n if (!container) {\n console.warn('No container for popover', this);\n return;\n }\n\n container.appendChild(popoverNode);\n this.popperInstance.scheduleUpdate();\n }\n },\n trigger: function trigger(val) {\n this.$_removeEventListeners();\n this.$_addEventListeners();\n },\n placement: function placement(val) {\n var _this = this;\n\n this.$_updatePopper(function () {\n _this.popperInstance.options.placement = val;\n });\n },\n offset: '$_restartPopper',\n boundariesElement: '$_restartPopper',\n popperOptions: {\n handler: '$_restartPopper',\n deep: true\n }\n },\n created: function created() {\n this.$_isDisposed = false;\n this.$_mounted = false;\n this.$_events = [];\n this.$_preventOpen = false;\n },\n mounted: function mounted() {\n var popoverNode = this.$refs.popover;\n popoverNode.parentNode && popoverNode.parentNode.removeChild(popoverNode);\n this.$_init();\n\n if (this.open) {\n this.show();\n }\n },\n deactivated: function deactivated() {\n this.hide();\n },\n beforeDestroy: function beforeDestroy() {\n this.dispose();\n },\n methods: {\n show: function show() {\n var _this2 = this;\n\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n event = _ref2.event,\n _ref2$skipDelay = _ref2.skipDelay,\n _ref2$force = _ref2.force,\n force = _ref2$force === void 0 ? false : _ref2$force;\n\n if (force || !this.disabled) {\n this.$_scheduleShow(event);\n this.$emit('show');\n }\n\n this.$emit('update:open', true);\n this.$_beingShowed = true;\n requestAnimationFrame(function () {\n _this2.$_beingShowed = false;\n });\n },\n hide: function hide() {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n event = _ref3.event,\n _ref3$skipDelay = _ref3.skipDelay;\n\n this.$_scheduleHide(event);\n this.$emit('hide');\n this.$emit('update:open', false);\n },\n dispose: function dispose() {\n this.$_isDisposed = true;\n this.$_removeEventListeners();\n this.hide({\n skipDelay: true\n });\n\n if (this.popperInstance) {\n this.popperInstance.destroy(); // destroy tooltipNode if removeOnDestroy is not set, as popperInstance.destroy() already removes the element\n\n if (!this.popperInstance.options.removeOnDestroy) {\n var popoverNode = this.$refs.popover;\n popoverNode.parentNode && popoverNode.parentNode.removeChild(popoverNode);\n }\n }\n\n this.$_mounted = false;\n this.popperInstance = null;\n this.isOpen = false;\n this.$emit('dispose');\n },\n $_init: function $_init() {\n if (this.trigger.indexOf('manual') === -1) {\n this.$_addEventListeners();\n }\n },\n $_show: function $_show() {\n var _this3 = this;\n\n var reference = this.$refs.trigger;\n var popoverNode = this.$refs.popover;\n clearTimeout(this.$_disposeTimer); // Already open\n\n if (this.isOpen) {\n return;\n } // Popper is already initialized\n\n\n if (this.popperInstance) {\n this.isOpen = true;\n this.popperInstance.enableEventListeners();\n this.popperInstance.scheduleUpdate();\n }\n\n if (!this.$_mounted) {\n var container = this.$_findContainer(this.container, reference);\n\n if (!container) {\n console.warn('No container for popover', this);\n return;\n }\n\n container.appendChild(popoverNode);\n this.$_mounted = true;\n }\n\n if (!this.popperInstance) {\n var popperOptions = _objectSpread({}, this.popperOptions, {\n placement: this.placement\n });\n\n popperOptions.modifiers = _objectSpread({}, popperOptions.modifiers, {\n arrow: _objectSpread({}, popperOptions.modifiers && popperOptions.modifiers.arrow, {\n element: this.$refs.arrow\n })\n });\n\n if (this.offset) {\n var offset = this.$_getOffset();\n popperOptions.modifiers.offset = _objectSpread({}, popperOptions.modifiers && popperOptions.modifiers.offset, {\n offset: offset\n });\n }\n\n if (this.boundariesElement) {\n popperOptions.modifiers.preventOverflow = _objectSpread({}, popperOptions.modifiers && popperOptions.modifiers.preventOverflow, {\n boundariesElement: this.boundariesElement\n });\n }\n\n this.popperInstance = new Popper(reference, popoverNode, popperOptions); // Fix position\n\n requestAnimationFrame(function () {\n if (_this3.hidden) {\n _this3.hidden = false;\n\n _this3.$_hide();\n\n return;\n }\n\n if (!_this3.$_isDisposed && _this3.popperInstance) {\n _this3.popperInstance.scheduleUpdate(); // Show the tooltip\n\n\n requestAnimationFrame(function () {\n if (_this3.hidden) {\n _this3.hidden = false;\n\n _this3.$_hide();\n\n return;\n }\n\n if (!_this3.$_isDisposed) {\n _this3.isOpen = true;\n } else {\n _this3.dispose();\n }\n });\n } else {\n _this3.dispose();\n }\n });\n }\n\n var openGroup = this.openGroup;\n\n if (openGroup) {\n var popover;\n\n for (var i = 0; i < openPopovers.length; i++) {\n popover = openPopovers[i];\n\n if (popover.openGroup !== openGroup) {\n popover.hide();\n popover.$emit('close-group');\n }\n }\n }\n\n openPopovers.push(this);\n this.$emit('apply-show');\n },\n $_hide: function $_hide() {\n var _this4 = this;\n\n // Already hidden\n if (!this.isOpen) {\n return;\n }\n\n var index = openPopovers.indexOf(this);\n\n if (index !== -1) {\n openPopovers.splice(index, 1);\n }\n\n this.isOpen = false;\n\n if (this.popperInstance) {\n this.popperInstance.disableEventListeners();\n }\n\n clearTimeout(this.$_disposeTimer);\n var disposeTime = directive.options.popover.disposeTimeout || directive.options.disposeTimeout;\n\n if (disposeTime !== null) {\n this.$_disposeTimer = setTimeout(function () {\n var popoverNode = _this4.$refs.popover;\n\n if (popoverNode) {\n // Don't remove popper instance, just the HTML element\n popoverNode.parentNode && popoverNode.parentNode.removeChild(popoverNode);\n _this4.$_mounted = false;\n }\n }, disposeTime);\n }\n\n this.$emit('apply-hide');\n },\n $_findContainer: function $_findContainer(container, reference) {\n // if container is a query, get the relative element\n if (typeof container === 'string') {\n container = window.document.querySelector(container);\n } else if (container === false) {\n // if container is `false`, set it to reference parent\n container = reference.parentNode;\n }\n\n return container;\n },\n $_getOffset: function $_getOffset() {\n var typeofOffset = _typeof(this.offset);\n\n var offset = this.offset; // One value -> switch\n\n if (typeofOffset === 'number' || typeofOffset === 'string' && offset.indexOf(',') === -1) {\n offset = \"0, \".concat(offset);\n }\n\n return offset;\n },\n $_addEventListeners: function $_addEventListeners() {\n var _this5 = this;\n\n var reference = this.$refs.trigger;\n var directEvents = [];\n var oppositeEvents = [];\n var events = typeof this.trigger === 'string' ? this.trigger.split(' ').filter(function (trigger) {\n return ['click', 'hover', 'focus'].indexOf(trigger) !== -1;\n }) : [];\n events.forEach(function (event) {\n switch (event) {\n case 'hover':\n directEvents.push('mouseenter');\n oppositeEvents.push('mouseleave');\n break;\n\n case 'focus':\n directEvents.push('focus');\n oppositeEvents.push('blur');\n break;\n\n case 'click':\n directEvents.push('click');\n oppositeEvents.push('click');\n break;\n }\n }); // schedule show tooltip\n\n directEvents.forEach(function (event) {\n var func = function func(event) {\n if (_this5.isOpen) {\n return;\n }\n\n event.usedByTooltip = true;\n !_this5.$_preventOpen && _this5.show({\n event: event\n });\n _this5.hidden = false;\n };\n\n _this5.$_events.push({\n event: event,\n func: func\n });\n\n reference.addEventListener(event, func);\n }); // schedule hide tooltip\n\n oppositeEvents.forEach(function (event) {\n var func = function func(event) {\n if (event.usedByTooltip) {\n return;\n }\n\n _this5.hide({\n event: event\n });\n\n _this5.hidden = true;\n };\n\n _this5.$_events.push({\n event: event,\n func: func\n });\n\n reference.addEventListener(event, func);\n });\n },\n $_scheduleShow: function $_scheduleShow() {\n var skipDelay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n clearTimeout(this.$_scheduleTimer);\n\n if (skipDelay) {\n this.$_show();\n } else {\n // defaults to 0\n var computedDelay = parseInt(this.delay && this.delay.show || this.delay || 0);\n this.$_scheduleTimer = setTimeout(this.$_show.bind(this), computedDelay);\n }\n },\n $_scheduleHide: function $_scheduleHide() {\n var _this6 = this;\n\n var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n var skipDelay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n clearTimeout(this.$_scheduleTimer);\n\n if (skipDelay) {\n this.$_hide();\n } else {\n // defaults to 0\n var computedDelay = parseInt(this.delay && this.delay.hide || this.delay || 0);\n this.$_scheduleTimer = setTimeout(function () {\n if (!_this6.isOpen) {\n return;\n } // if we are hiding because of a mouseleave, we must check that the new\n // reference isn't the tooltip, because in this case we don't want to hide it\n\n\n if (event && event.type === 'mouseleave') {\n var isSet = _this6.$_setTooltipNodeEvent(event); // if we set the new event, don't hide the tooltip yet\n // the new event will take care to hide it if necessary\n\n\n if (isSet) {\n return;\n }\n }\n\n _this6.$_hide();\n }, computedDelay);\n }\n },\n $_setTooltipNodeEvent: function $_setTooltipNodeEvent(event) {\n var _this7 = this;\n\n var reference = this.$refs.trigger;\n var popoverNode = this.$refs.popover;\n var relatedreference = event.relatedreference || event.toElement || event.relatedTarget;\n\n var callback = function callback(event2) {\n var relatedreference2 = event2.relatedreference || event2.toElement || event2.relatedTarget; // Remove event listener after call\n\n popoverNode.removeEventListener(event.type, callback); // If the new reference is not the reference element\n\n if (!reference.contains(relatedreference2)) {\n // Schedule to hide tooltip\n _this7.hide({\n event: event2\n });\n }\n };\n\n if (popoverNode.contains(relatedreference)) {\n // listen to mouseleave on the tooltip element to be able to hide the tooltip\n popoverNode.addEventListener(event.type, callback);\n return true;\n }\n\n return false;\n },\n $_removeEventListeners: function $_removeEventListeners() {\n var reference = this.$refs.trigger;\n this.$_events.forEach(function (_ref4) {\n var func = _ref4.func,\n event = _ref4.event;\n reference.removeEventListener(event, func);\n });\n this.$_events = [];\n },\n $_updatePopper: function $_updatePopper(cb) {\n if (this.popperInstance) {\n cb();\n if (this.isOpen) this.popperInstance.scheduleUpdate();\n }\n },\n $_restartPopper: function $_restartPopper() {\n if (this.popperInstance) {\n var isOpen = this.isOpen;\n this.dispose();\n this.$_isDisposed = false;\n this.$_init();\n\n if (isOpen) {\n this.show({\n skipDelay: true,\n force: true\n });\n }\n }\n },\n $_handleGlobalClose: function $_handleGlobalClose(event) {\n var _this8 = this;\n\n var touch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n if (this.$_beingShowed) return;\n this.hide({\n event: event\n });\n\n if (event.closePopover) {\n this.$emit('close-directive');\n } else {\n this.$emit('auto-hide');\n }\n\n if (touch) {\n this.$_preventOpen = true;\n setTimeout(function () {\n _this8.$_preventOpen = false;\n }, 300);\n }\n },\n $_handleResize: function $_handleResize() {\n if (this.isOpen && this.popperInstance) {\n this.popperInstance.scheduleUpdate();\n this.$emit('resize');\n }\n }\n }\n};\n\nif (typeof document !== 'undefined' && typeof window !== 'undefined') {\n if (isIOS) {\n document.addEventListener('touchend', handleGlobalTouchend, supportsPassive ? {\n passive: true,\n capture: true\n } : true);\n } else {\n window.addEventListener('click', handleGlobalClick, true);\n }\n}\n\nfunction handleGlobalClick(event) {\n handleGlobalClose(event);\n}\n\nfunction handleGlobalTouchend(event) {\n handleGlobalClose(event, true);\n}\n\nfunction handleGlobalClose(event) {\n var touch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var _loop = function _loop(i) {\n var popover = openPopovers[i];\n\n if (popover.$refs.popover) {\n var contains = popover.$refs.popover.contains(event.target);\n requestAnimationFrame(function () {\n if (event.closeAllPopover || event.closePopover && contains || popover.autoHide && !contains) {\n popover.$_handleGlobalClose(event, touch);\n }\n });\n }\n };\n\n // Delay so that close directive has time to set values\n for (var i = 0; i < openPopovers.length; i++) {\n _loop(i);\n }\n}\n\nfunction normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier\n/* server only */\n, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {\n if (typeof shadowMode !== 'boolean') {\n createInjectorSSR = createInjector;\n createInjector = shadowMode;\n shadowMode = false;\n } // Vue.extend constructor export interop.\n\n\n var options = typeof script === 'function' ? script.options : script; // render functions\n\n if (template && template.render) {\n options.render = template.render;\n options.staticRenderFns = template.staticRenderFns;\n options._compiled = true; // functional template\n\n if (isFunctionalTemplate) {\n options.functional = true;\n }\n } // scopedId\n\n\n if (scopeId) {\n options._scopeId = scopeId;\n }\n\n var hook;\n\n if (moduleIdentifier) {\n // server build\n hook = function hook(context) {\n // 2.3 injection\n context = context || // cached call\n this.$vnode && this.$vnode.ssrContext || // stateful\n this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext; // functional\n // 2.2 with runInNewContext: true\n\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__;\n } // inject component styles\n\n\n if (style) {\n style.call(this, createInjectorSSR(context));\n } // register component module identifier for async chunk inference\n\n\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier);\n }\n }; // used by ssr in case component is cached and beforeCreate\n // never gets called\n\n\n options._ssrRegister = hook;\n } else if (style) {\n hook = shadowMode ? function () {\n style.call(this, createInjectorShadow(this.$root.$options.shadowRoot));\n } : function (context) {\n style.call(this, createInjector(context));\n };\n }\n\n if (hook) {\n if (options.functional) {\n // register for functional component in vue file\n var originalRender = options.render;\n\n options.render = function renderWithStyleInjection(h, context) {\n hook.call(context);\n return originalRender(h, context);\n };\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate;\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\n }\n }\n\n return script;\n}\n\nvar normalizeComponent_1 = normalizeComponent;\n\n/* script */\nvar __vue_script__ = script;\n/* template */\n\nvar __vue_render__ = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c(\"div\", {\n staticClass: \"v-popover\",\n class: _vm.cssClass\n }, [_c(\"div\", {\n ref: \"trigger\",\n staticClass: \"trigger\",\n staticStyle: {\n display: \"inline-block\"\n },\n attrs: {\n \"aria-describedby\": _vm.popoverId,\n tabindex: _vm.trigger.indexOf(\"focus\") !== -1 ? 0 : undefined\n }\n }, [_vm._t(\"default\")], 2), _vm._v(\" \"), _c(\"div\", {\n ref: \"popover\",\n class: [_vm.popoverBaseClass, _vm.popoverClass, _vm.cssClass],\n style: {\n visibility: _vm.isOpen ? \"visible\" : \"hidden\"\n },\n attrs: {\n id: _vm.popoverId,\n \"aria-hidden\": _vm.isOpen ? \"false\" : \"true\",\n tabindex: _vm.autoHide ? 0 : undefined\n },\n on: {\n keyup: function keyup($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"esc\", 27, $event.key, [\"Esc\", \"Escape\"])) {\n return null;\n }\n\n _vm.autoHide && _vm.hide();\n }\n }\n }, [_c(\"div\", {\n class: _vm.popoverWrapperClass\n }, [_c(\"div\", {\n ref: \"inner\",\n class: _vm.popoverInnerClass,\n staticStyle: {\n position: \"relative\"\n }\n }, [_c(\"div\", [_vm._t(\"popover\")], 2), _vm._v(\" \"), _vm.handleResize ? _c(\"ResizeObserver\", {\n on: {\n notify: _vm.$_handleResize\n }\n }) : _vm._e()], 1), _vm._v(\" \"), _c(\"div\", {\n ref: \"arrow\",\n class: _vm.popoverArrowClass\n })])])]);\n};\n\nvar __vue_staticRenderFns__ = [];\n__vue_render__._withStripped = true;\n/* style */\n\nvar __vue_inject_styles__ = undefined;\n/* scoped */\n\nvar __vue_scope_id__ = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__ = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__ = false;\n/* style inject */\n\n/* style inject SSR */\n\nvar Popover = normalizeComponent_1({\n render: __vue_render__,\n staticRenderFns: __vue_staticRenderFns__\n}, __vue_inject_styles__, __vue_script__, __vue_scope_id__, __vue_is_functional_template__, __vue_module_identifier__, undefined, undefined);\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nvar _listCacheClear = listCacheClear;\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nvar eq_1 = eq;\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq_1(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nvar _assocIndexOf = assocIndexOf;\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = _assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nvar _listCacheDelete = listCacheDelete;\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = _assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nvar _listCacheGet = listCacheGet;\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return _assocIndexOf(this.__data__, key) > -1;\n}\n\nvar _listCacheHas = listCacheHas;\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = _assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nvar _listCacheSet = listCacheSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = _listCacheClear;\nListCache.prototype['delete'] = _listCacheDelete;\nListCache.prototype.get = _listCacheGet;\nListCache.prototype.has = _listCacheHas;\nListCache.prototype.set = _listCacheSet;\n\nvar _ListCache = ListCache;\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new _ListCache;\n this.size = 0;\n}\n\nvar _stackClear = stackClear;\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nvar _stackDelete = stackDelete;\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nvar _stackGet = stackGet;\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nvar _stackHas = stackHas;\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\nvar _freeGlobal = freeGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = _freeGlobal || freeSelf || Function('return this')();\n\nvar _root = root;\n\n/** Built-in value references. */\nvar Symbol$1 = _root.Symbol;\n\nvar _Symbol = Symbol$1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = _Symbol ? _Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nvar _getRawTag = getRawTag;\n\n/** Used for built-in method references. */\nvar objectProto$1 = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString$1 = objectProto$1.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString$1.call(value);\n}\n\nvar _objectToString = objectToString;\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag$1 = _Symbol ? _Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag$1 && symToStringTag$1 in Object(value))\n ? _getRawTag(value)\n : _objectToString(value);\n}\n\nvar _baseGetTag = baseGetTag;\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nvar isObject_1 = isObject;\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject_1(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = _baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nvar isFunction_1 = isFunction;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = _root['__core-js_shared__'];\n\nvar _coreJsData = coreJsData;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(_coreJsData && _coreJsData.keys && _coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nvar _isMasked = isMasked;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nvar _toSource = toSource;\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto$1 = Function.prototype,\n objectProto$2 = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString$1 = funcProto$1.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$1 = objectProto$2.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString$1.call(hasOwnProperty$1).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject_1(value) || _isMasked(value)) {\n return false;\n }\n var pattern = isFunction_1(value) ? reIsNative : reIsHostCtor;\n return pattern.test(_toSource(value));\n}\n\nvar _baseIsNative = baseIsNative;\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nvar _getValue = getValue;\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = _getValue(object, key);\n return _baseIsNative(value) ? value : undefined;\n}\n\nvar _getNative = getNative;\n\n/* Built-in method references that are verified to be native. */\nvar Map = _getNative(_root, 'Map');\n\nvar _Map = Map;\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = _getNative(Object, 'create');\n\nvar _nativeCreate = nativeCreate;\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = _nativeCreate ? _nativeCreate(null) : {};\n this.size = 0;\n}\n\nvar _hashClear = hashClear;\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nvar _hashDelete = hashDelete;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto$3 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$2 = objectProto$3.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (_nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty$2.call(data, key) ? data[key] : undefined;\n}\n\nvar _hashGet = hashGet;\n\n/** Used for built-in method references. */\nvar objectProto$4 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$3 = objectProto$4.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return _nativeCreate ? (data[key] !== undefined) : hasOwnProperty$3.call(data, key);\n}\n\nvar _hashHas = hashHas;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED$1 = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (_nativeCreate && value === undefined) ? HASH_UNDEFINED$1 : value;\n return this;\n}\n\nvar _hashSet = hashSet;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = _hashClear;\nHash.prototype['delete'] = _hashDelete;\nHash.prototype.get = _hashGet;\nHash.prototype.has = _hashHas;\nHash.prototype.set = _hashSet;\n\nvar _Hash = Hash;\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new _Hash,\n 'map': new (_Map || _ListCache),\n 'string': new _Hash\n };\n}\n\nvar _mapCacheClear = mapCacheClear;\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nvar _isKeyable = isKeyable;\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return _isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nvar _getMapData = getMapData;\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = _getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nvar _mapCacheDelete = mapCacheDelete;\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return _getMapData(this, key).get(key);\n}\n\nvar _mapCacheGet = mapCacheGet;\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return _getMapData(this, key).has(key);\n}\n\nvar _mapCacheHas = mapCacheHas;\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = _getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nvar _mapCacheSet = mapCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = _mapCacheClear;\nMapCache.prototype['delete'] = _mapCacheDelete;\nMapCache.prototype.get = _mapCacheGet;\nMapCache.prototype.has = _mapCacheHas;\nMapCache.prototype.set = _mapCacheSet;\n\nvar _MapCache = MapCache;\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof _ListCache) {\n var pairs = data.__data__;\n if (!_Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new _MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nvar _stackSet = stackSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new _ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = _stackClear;\nStack.prototype['delete'] = _stackDelete;\nStack.prototype.get = _stackGet;\nStack.prototype.has = _stackHas;\nStack.prototype.set = _stackSet;\n\nvar _Stack = Stack;\n\nvar defineProperty = (function() {\n try {\n var func = _getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nvar _defineProperty$1 = defineProperty;\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && _defineProperty$1) {\n _defineProperty$1(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nvar _baseAssignValue = baseAssignValue;\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq_1(object[key], value)) ||\n (value === undefined && !(key in object))) {\n _baseAssignValue(object, key, value);\n }\n}\n\nvar _assignMergeValue = assignMergeValue;\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nvar _createBaseFor = createBaseFor;\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = _createBaseFor();\n\nvar _baseFor = baseFor;\n\nvar _cloneBuffer = createCommonjsModule(function (module, exports) {\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? _root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n});\n\n/** Built-in value references. */\nvar Uint8Array = _root.Uint8Array;\n\nvar _Uint8Array = Uint8Array;\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new _Uint8Array(result).set(new _Uint8Array(arrayBuffer));\n return result;\n}\n\nvar _cloneArrayBuffer = cloneArrayBuffer;\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? _cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nvar _cloneTypedArray = cloneTypedArray;\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nvar _copyArray = copyArray;\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject_1(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nvar _baseCreate = baseCreate;\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nvar _overArg = overArg;\n\n/** Built-in value references. */\nvar getPrototype = _overArg(Object.getPrototypeOf, Object);\n\nvar _getPrototype = getPrototype;\n\n/** Used for built-in method references. */\nvar objectProto$5 = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto$5;\n\n return value === proto;\n}\n\nvar _isPrototype = isPrototype;\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !_isPrototype(object))\n ? _baseCreate(_getPrototype(object))\n : {};\n}\n\nvar _initCloneObject = initCloneObject;\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nvar isObjectLike_1 = isObjectLike;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike_1(value) && _baseGetTag(value) == argsTag;\n}\n\nvar _baseIsArguments = baseIsArguments;\n\n/** Used for built-in method references. */\nvar objectProto$6 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$4 = objectProto$6.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto$6.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = _baseIsArguments(function() { return arguments; }()) ? _baseIsArguments : function(value) {\n return isObjectLike_1(value) && hasOwnProperty$4.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nvar isArguments_1 = isArguments;\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nvar isArray_1 = isArray;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nvar isLength_1 = isLength;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength_1(value.length) && !isFunction_1(value);\n}\n\nvar isArrayLike_1 = isArrayLike;\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike_1(value) && isArrayLike_1(value);\n}\n\nvar isArrayLikeObject_1 = isArrayLikeObject;\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nvar stubFalse_1 = stubFalse;\n\nvar isBuffer_1 = createCommonjsModule(function (module, exports) {\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? _root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse_1;\n\nmodule.exports = isBuffer;\n});\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto$2 = Function.prototype,\n objectProto$7 = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString$2 = funcProto$2.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$5 = objectProto$7.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString$2.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike_1(value) || _baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = _getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty$5.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString$2.call(Ctor) == objectCtorString;\n}\n\nvar isPlainObject_1 = isPlainObject;\n\n/** `Object#toString` result references. */\nvar argsTag$1 = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag$1 = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag$1 = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag$1] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag$1] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag$1] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike_1(value) &&\n isLength_1(value.length) && !!typedArrayTags[_baseGetTag(value)];\n}\n\nvar _baseIsTypedArray = baseIsTypedArray;\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nvar _baseUnary = baseUnary;\n\nvar _nodeUtil = createCommonjsModule(function (module, exports) {\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && _freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n});\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = _nodeUtil && _nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? _baseUnary(nodeIsTypedArray) : _baseIsTypedArray;\n\nvar isTypedArray_1 = isTypedArray;\n\n/**\n * Gets the value at `key`, unless `key` is \"__proto__\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nvar _safeGet = safeGet;\n\n/** Used for built-in method references. */\nvar objectProto$8 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$6 = objectProto$8.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty$6.call(object, key) && eq_1(objValue, value)) ||\n (value === undefined && !(key in object))) {\n _baseAssignValue(object, key, value);\n }\n}\n\nvar _assignValue = assignValue;\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n _baseAssignValue(object, key, newValue);\n } else {\n _assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nvar _copyObject = copyObject;\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nvar _baseTimes = baseTimes;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER$1 = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER$1 : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nvar _isIndex = isIndex;\n\n/** Used for built-in method references. */\nvar objectProto$9 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$7 = objectProto$9.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray_1(value),\n isArg = !isArr && isArguments_1(value),\n isBuff = !isArr && !isArg && isBuffer_1(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray_1(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? _baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty$7.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n _isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nvar _arrayLikeKeys = arrayLikeKeys;\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nvar _nativeKeysIn = nativeKeysIn;\n\n/** Used for built-in method references. */\nvar objectProto$a = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$8 = objectProto$a.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject_1(object)) {\n return _nativeKeysIn(object);\n }\n var isProto = _isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty$8.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nvar _baseKeysIn = baseKeysIn;\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike_1(object) ? _arrayLikeKeys(object, true) : _baseKeysIn(object);\n}\n\nvar keysIn_1 = keysIn;\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return _copyObject(value, keysIn_1(value));\n}\n\nvar toPlainObject_1 = toPlainObject;\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = _safeGet(object, key),\n srcValue = _safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n _assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray_1(srcValue),\n isBuff = !isArr && isBuffer_1(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray_1(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray_1(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject_1(objValue)) {\n newValue = _copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = _cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = _cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject_1(srcValue) || isArguments_1(srcValue)) {\n newValue = objValue;\n if (isArguments_1(objValue)) {\n newValue = toPlainObject_1(objValue);\n }\n else if (!isObject_1(objValue) || isFunction_1(objValue)) {\n newValue = _initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n _assignMergeValue(object, key, newValue);\n}\n\nvar _baseMergeDeep = baseMergeDeep;\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n _baseFor(source, function(srcValue, key) {\n if (isObject_1(srcValue)) {\n stack || (stack = new _Stack);\n _baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(_safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n _assignMergeValue(object, key, newValue);\n }\n }, keysIn_1);\n}\n\nvar _baseMerge = baseMerge;\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nvar identity_1 = identity;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nvar _apply = apply;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return _apply(func, this, otherArgs);\n };\n}\n\nvar _overRest = overRest;\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nvar constant_1 = constant;\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !_defineProperty$1 ? identity_1 : function(func, string) {\n return _defineProperty$1(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant_1(string),\n 'writable': true\n });\n};\n\nvar _baseSetToString = baseSetToString;\n\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nvar _shortOut = shortOut;\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = _shortOut(_baseSetToString);\n\nvar _setToString = setToString;\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return _setToString(_overRest(func, start, identity_1), func + '');\n}\n\nvar _baseRest = baseRest;\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject_1(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike_1(object) && _isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq_1(object[index], value);\n }\n return false;\n}\n\nvar _isIterateeCall = isIterateeCall;\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return _baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && _isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nvar _createAssigner = createAssigner;\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = _createAssigner(function(object, source, srcIndex) {\n _baseMerge(object, source, srcIndex);\n});\n\nvar merge_1 = merge;\n\nfunction styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar css = \".resize-observer[data-v-b329ee4c]{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:transparent;pointer-events:none;display:block;overflow:hidden;opacity:0}.resize-observer[data-v-b329ee4c] object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}\";\nstyleInject(css);\n\nfunction install(Vue) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (install.installed) return;\n install.installed = true;\n var finalOptions = {};\n merge_1(finalOptions, defaultOptions, options);\n plugin.options = finalOptions;\n directive.options = finalOptions;\n Vue.directive('tooltip', directive);\n Vue.directive('close-popover', vclosepopover);\n Vue.component('v-popover', Popover);\n}\nvar VTooltip = directive;\nvar VClosePopover = vclosepopover;\nvar VPopover = Popover;\nvar plugin = {\n install: install,\n\n get enabled() {\n return state.enabled;\n },\n\n set enabled(value) {\n state.enabled = value;\n }\n\n}; // Auto-install\n\nvar GlobalVue = null;\n\nif (typeof window !== 'undefined') {\n GlobalVue = window.Vue;\n} else if (typeof global !== 'undefined') {\n GlobalVue = global.Vue;\n}\n\nif (GlobalVue) {\n GlobalVue.use(plugin);\n}\n\nexport default plugin;\nexport { VClosePopover, VPopover, VTooltip, createTooltip, destroyTooltip, install };\n","function getInternetExplorerVersion() {\n\tvar ua = window.navigator.userAgent;\n\n\tvar msie = ua.indexOf('MSIE ');\n\tif (msie > 0) {\n\t\t// IE 10 or older => return version number\n\t\treturn parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);\n\t}\n\n\tvar trident = ua.indexOf('Trident/');\n\tif (trident > 0) {\n\t\t// IE 11 => return version number\n\t\tvar rv = ua.indexOf('rv:');\n\t\treturn parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);\n\t}\n\n\tvar edge = ua.indexOf('Edge/');\n\tif (edge > 0) {\n\t\t// Edge (IE 12+) => return version number\n\t\treturn parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);\n\t}\n\n\t// other browser\n\treturn -1;\n}\n\nvar isIE = void 0;\n\nfunction initCompat() {\n\tif (!initCompat.init) {\n\t\tinitCompat.init = true;\n\t\tisIE = getInternetExplorerVersion() !== -1;\n\t}\n}\n\nvar ResizeObserver = { render: function render() {\n\t\tvar _vm = this;var _h = _vm.$createElement;var _c = _vm._self._c || _h;return _c('div', { staticClass: \"resize-observer\", attrs: { \"tabindex\": \"-1\" } });\n\t}, staticRenderFns: [], _scopeId: 'data-v-b329ee4c',\n\tname: 'resize-observer',\n\n\tmethods: {\n\t\tcompareAndNotify: function compareAndNotify() {\n\t\t\tif (this._w !== this.$el.offsetWidth || this._h !== this.$el.offsetHeight) {\n\t\t\t\tthis._w = this.$el.offsetWidth;\n\t\t\t\tthis._h = this.$el.offsetHeight;\n\t\t\t\tthis.$emit('notify');\n\t\t\t}\n\t\t},\n\t\taddResizeHandlers: function addResizeHandlers() {\n\t\t\tthis._resizeObject.contentDocument.defaultView.addEventListener('resize', this.compareAndNotify);\n\t\t\tthis.compareAndNotify();\n\t\t},\n\t\tremoveResizeHandlers: function removeResizeHandlers() {\n\t\t\tif (this._resizeObject && this._resizeObject.onload) {\n\t\t\t\tif (!isIE && this._resizeObject.contentDocument) {\n\t\t\t\t\tthis._resizeObject.contentDocument.defaultView.removeEventListener('resize', this.compareAndNotify);\n\t\t\t\t}\n\t\t\t\tdelete this._resizeObject.onload;\n\t\t\t}\n\t\t}\n\t},\n\n\tmounted: function mounted() {\n\t\tvar _this = this;\n\n\t\tinitCompat();\n\t\tthis.$nextTick(function () {\n\t\t\t_this._w = _this.$el.offsetWidth;\n\t\t\t_this._h = _this.$el.offsetHeight;\n\t\t});\n\t\tvar object = document.createElement('object');\n\t\tthis._resizeObject = object;\n\t\tobject.setAttribute('aria-hidden', 'true');\n\t\tobject.setAttribute('tabindex', -1);\n\t\tobject.onload = this.addResizeHandlers;\n\t\tobject.type = 'text/html';\n\t\tif (isIE) {\n\t\t\tthis.$el.appendChild(object);\n\t\t}\n\t\tobject.data = 'about:blank';\n\t\tif (!isIE) {\n\t\t\tthis.$el.appendChild(object);\n\t\t}\n\t},\n\tbeforeDestroy: function beforeDestroy() {\n\t\tthis.removeResizeHandlers();\n\t}\n};\n\n// Install the components\nfunction install(Vue) {\n\tVue.component('resize-observer', ResizeObserver);\n\tVue.component('ResizeObserver', ResizeObserver);\n}\n\n// Plugin\nvar plugin = {\n\t// eslint-disable-next-line no-undef\n\tversion: \"0.4.5\",\n\tinstall: install\n};\n\n// Auto-install\nvar GlobalVue = null;\nif (typeof window !== 'undefined') {\n\tGlobalVue = window.Vue;\n} else if (typeof global !== 'undefined') {\n\tGlobalVue = global.Vue;\n}\nif (GlobalVue) {\n\tGlobalVue.use(plugin);\n}\n\nexport { install, ResizeObserver };\nexport default plugin;\n","exports.sync = function (store, router, options) {\n var moduleName = (options || {}).moduleName || 'route'\n\n store.registerModule(moduleName, {\n namespaced: true,\n state: cloneRoute(router.currentRoute),\n mutations: {\n 'ROUTE_CHANGED': function ROUTE_CHANGED (state, transition) {\n store.state[moduleName] = cloneRoute(transition.to, transition.from)\n }\n }\n })\n\n var isTimeTraveling = false\n var currentPath\n\n // sync router on store change\n var storeUnwatch = store.watch(\n function (state) { return state[moduleName]; },\n function (route) {\n var fullPath = route.fullPath;\n if (fullPath === currentPath) {\n return\n }\n if (currentPath != null) {\n isTimeTraveling = true\n router.push(route)\n }\n currentPath = fullPath\n },\n { sync: true }\n )\n\n // sync store on router navigation\n var afterEachUnHook = router.afterEach(function (to, from) {\n if (isTimeTraveling) {\n isTimeTraveling = false\n return\n }\n currentPath = to.fullPath\n store.commit(moduleName + '/ROUTE_CHANGED', { to: to, from: from })\n })\n\n return function unsync () {\n // On unsync, remove router hook\n if (afterEachUnHook != null) {\n afterEachUnHook()\n }\n\n // On unsync, remove store watch\n if (storeUnwatch != null) {\n storeUnwatch()\n }\n\n // On unsync, unregister Module with store\n store.unregisterModule(moduleName)\n }\n}\n\nfunction cloneRoute (to, from) {\n var clone = {\n name: to.name,\n path: to.path,\n hash: to.hash,\n query: to.query,\n params: to.params,\n fullPath: to.fullPath,\n meta: to.meta\n }\n if (from) {\n clone.from = cloneRoute(from)\n }\n return Object.freeze(clone)\n}\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<router-view></router-view>\n</template>\n\n<script>\nexport default {\n\tname: 'App',\n\tbeforeMount: function() {\n\t\t// importing server data into the store\n\t\tconst serverDataElmt = document.getElementById('serverData');\n\t\tif (serverDataElmt !== null) {\n\t\t\tthis.$store.commit('setServerData', JSON.parse(document.getElementById('serverData').dataset.server));\n\t\t}\n\t}\n}\n</script>\n","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=2babf905&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('router-view')}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*!\n * vue-router v3.1.3\n * (c) 2019 Evan You\n * @license MIT\n */\n/* */\n\nfunction assert (condition, message) {\n if (!condition) {\n throw new Error((\"[vue-router] \" + message))\n }\n}\n\nfunction warn (condition, message) {\n if (process.env.NODE_ENV !== 'production' && !condition) {\n typeof console !== 'undefined' && console.warn((\"[vue-router] \" + message));\n }\n}\n\nfunction isError (err) {\n return Object.prototype.toString.call(err).indexOf('Error') > -1\n}\n\nfunction isExtendedError (constructor, err) {\n return (\n err instanceof constructor ||\n // _name is to support IE9 too\n (err && (err.name === constructor.name || err._name === constructor._name))\n )\n}\n\nfunction extend (a, b) {\n for (var key in b) {\n a[key] = b[key];\n }\n return a\n}\n\nvar View = {\n name: 'RouterView',\n functional: true,\n props: {\n name: {\n type: String,\n default: 'default'\n }\n },\n render: function render (_, ref) {\n var props = ref.props;\n var children = ref.children;\n var parent = ref.parent;\n var data = ref.data;\n\n // used by devtools to display a router-view badge\n data.routerView = true;\n\n // directly use parent context's createElement() function\n // so that components rendered by router-view can resolve named slots\n var h = parent.$createElement;\n var name = props.name;\n var route = parent.$route;\n var cache = parent._routerViewCache || (parent._routerViewCache = {});\n\n // determine current view depth, also check to see if the tree\n // has been toggled inactive but kept-alive.\n var depth = 0;\n var inactive = false;\n while (parent && parent._routerRoot !== parent) {\n var vnodeData = parent.$vnode && parent.$vnode.data;\n if (vnodeData) {\n if (vnodeData.routerView) {\n depth++;\n }\n if (vnodeData.keepAlive && parent._inactive) {\n inactive = true;\n }\n }\n parent = parent.$parent;\n }\n data.routerViewDepth = depth;\n\n // render previous view if the tree is inactive and kept-alive\n if (inactive) {\n return h(cache[name], data, children)\n }\n\n var matched = route.matched[depth];\n // render empty node if no matched route\n if (!matched) {\n cache[name] = null;\n return h()\n }\n\n var component = cache[name] = matched.components[name];\n\n // attach instance registration hook\n // this will be called in the instance's injected lifecycle hooks\n data.registerRouteInstance = function (vm, val) {\n // val could be undefined for unregistration\n var current = matched.instances[name];\n if (\n (val && current !== vm) ||\n (!val && current === vm)\n ) {\n matched.instances[name] = val;\n }\n }\n\n // also register instance in prepatch hook\n // in case the same component instance is reused across different routes\n ;(data.hook || (data.hook = {})).prepatch = function (_, vnode) {\n matched.instances[name] = vnode.componentInstance;\n };\n\n // register instance in init hook\n // in case kept-alive component be actived when routes changed\n data.hook.init = function (vnode) {\n if (vnode.data.keepAlive &&\n vnode.componentInstance &&\n vnode.componentInstance !== matched.instances[name]\n ) {\n matched.instances[name] = vnode.componentInstance;\n }\n };\n\n // resolve props\n var propsToPass = data.props = resolveProps(route, matched.props && matched.props[name]);\n if (propsToPass) {\n // clone to prevent mutation\n propsToPass = data.props = extend({}, propsToPass);\n // pass non-declared props as attrs\n var attrs = data.attrs = data.attrs || {};\n for (var key in propsToPass) {\n if (!component.props || !(key in component.props)) {\n attrs[key] = propsToPass[key];\n delete propsToPass[key];\n }\n }\n }\n\n return h(component, data, children)\n }\n};\n\nfunction resolveProps (route, config) {\n switch (typeof config) {\n case 'undefined':\n return\n case 'object':\n return config\n case 'function':\n return config(route)\n case 'boolean':\n return config ? route.params : undefined\n default:\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n \"props in \\\"\" + (route.path) + \"\\\" is a \" + (typeof config) + \", \" +\n \"expecting an object, function or boolean.\"\n );\n }\n }\n}\n\n/* */\n\nvar encodeReserveRE = /[!'()*]/g;\nvar encodeReserveReplacer = function (c) { return '%' + c.charCodeAt(0).toString(16); };\nvar commaRE = /%2C/g;\n\n// fixed encodeURIComponent which is more conformant to RFC3986:\n// - escapes [!'()*]\n// - preserve commas\nvar encode = function (str) { return encodeURIComponent(str)\n .replace(encodeReserveRE, encodeReserveReplacer)\n .replace(commaRE, ','); };\n\nvar decode = decodeURIComponent;\n\nfunction resolveQuery (\n query,\n extraQuery,\n _parseQuery\n) {\n if ( extraQuery === void 0 ) extraQuery = {};\n\n var parse = _parseQuery || parseQuery;\n var parsedQuery;\n try {\n parsedQuery = parse(query || '');\n } catch (e) {\n process.env.NODE_ENV !== 'production' && warn(false, e.message);\n parsedQuery = {};\n }\n for (var key in extraQuery) {\n parsedQuery[key] = extraQuery[key];\n }\n return parsedQuery\n}\n\nfunction parseQuery (query) {\n var res = {};\n\n query = query.trim().replace(/^(\\?|#|&)/, '');\n\n if (!query) {\n return res\n }\n\n query.split('&').forEach(function (param) {\n var parts = param.replace(/\\+/g, ' ').split('=');\n var key = decode(parts.shift());\n var val = parts.length > 0\n ? decode(parts.join('='))\n : null;\n\n if (res[key] === undefined) {\n res[key] = val;\n } else if (Array.isArray(res[key])) {\n res[key].push(val);\n } else {\n res[key] = [res[key], val];\n }\n });\n\n return res\n}\n\nfunction stringifyQuery (obj) {\n var res = obj ? Object.keys(obj).map(function (key) {\n var val = obj[key];\n\n if (val === undefined) {\n return ''\n }\n\n if (val === null) {\n return encode(key)\n }\n\n if (Array.isArray(val)) {\n var result = [];\n val.forEach(function (val2) {\n if (val2 === undefined) {\n return\n }\n if (val2 === null) {\n result.push(encode(key));\n } else {\n result.push(encode(key) + '=' + encode(val2));\n }\n });\n return result.join('&')\n }\n\n return encode(key) + '=' + encode(val)\n }).filter(function (x) { return x.length > 0; }).join('&') : null;\n return res ? (\"?\" + res) : ''\n}\n\n/* */\n\nvar trailingSlashRE = /\\/?$/;\n\nfunction createRoute (\n record,\n location,\n redirectedFrom,\n router\n) {\n var stringifyQuery = router && router.options.stringifyQuery;\n\n var query = location.query || {};\n try {\n query = clone(query);\n } catch (e) {}\n\n var route = {\n name: location.name || (record && record.name),\n meta: (record && record.meta) || {},\n path: location.path || '/',\n hash: location.hash || '',\n query: query,\n params: location.params || {},\n fullPath: getFullPath(location, stringifyQuery),\n matched: record ? formatMatch(record) : []\n };\n if (redirectedFrom) {\n route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery);\n }\n return Object.freeze(route)\n}\n\nfunction clone (value) {\n if (Array.isArray(value)) {\n return value.map(clone)\n } else if (value && typeof value === 'object') {\n var res = {};\n for (var key in value) {\n res[key] = clone(value[key]);\n }\n return res\n } else {\n return value\n }\n}\n\n// the starting route that represents the initial state\nvar START = createRoute(null, {\n path: '/'\n});\n\nfunction formatMatch (record) {\n var res = [];\n while (record) {\n res.unshift(record);\n record = record.parent;\n }\n return res\n}\n\nfunction getFullPath (\n ref,\n _stringifyQuery\n) {\n var path = ref.path;\n var query = ref.query; if ( query === void 0 ) query = {};\n var hash = ref.hash; if ( hash === void 0 ) hash = '';\n\n var stringify = _stringifyQuery || stringifyQuery;\n return (path || '/') + stringify(query) + hash\n}\n\nfunction isSameRoute (a, b) {\n if (b === START) {\n return a === b\n } else if (!b) {\n return false\n } else if (a.path && b.path) {\n return (\n a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') &&\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query)\n )\n } else if (a.name && b.name) {\n return (\n a.name === b.name &&\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query) &&\n isObjectEqual(a.params, b.params)\n )\n } else {\n return false\n }\n}\n\nfunction isObjectEqual (a, b) {\n if ( a === void 0 ) a = {};\n if ( b === void 0 ) b = {};\n\n // handle null value #1566\n if (!a || !b) { return a === b }\n var aKeys = Object.keys(a);\n var bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) {\n return false\n }\n return aKeys.every(function (key) {\n var aVal = a[key];\n var bVal = b[key];\n // check nested equality\n if (typeof aVal === 'object' && typeof bVal === 'object') {\n return isObjectEqual(aVal, bVal)\n }\n return String(aVal) === String(bVal)\n })\n}\n\nfunction isIncludedRoute (current, target) {\n return (\n current.path.replace(trailingSlashRE, '/').indexOf(\n target.path.replace(trailingSlashRE, '/')\n ) === 0 &&\n (!target.hash || current.hash === target.hash) &&\n queryIncludes(current.query, target.query)\n )\n}\n\nfunction queryIncludes (current, target) {\n for (var key in target) {\n if (!(key in current)) {\n return false\n }\n }\n return true\n}\n\n/* */\n\nfunction resolvePath (\n relative,\n base,\n append\n) {\n var firstChar = relative.charAt(0);\n if (firstChar === '/') {\n return relative\n }\n\n if (firstChar === '?' || firstChar === '#') {\n return base + relative\n }\n\n var stack = base.split('/');\n\n // remove trailing segment if:\n // - not appending\n // - appending to trailing slash (last segment is empty)\n if (!append || !stack[stack.length - 1]) {\n stack.pop();\n }\n\n // resolve relative path\n var segments = relative.replace(/^\\//, '').split('/');\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n if (segment === '..') {\n stack.pop();\n } else if (segment !== '.') {\n stack.push(segment);\n }\n }\n\n // ensure leading slash\n if (stack[0] !== '') {\n stack.unshift('');\n }\n\n return stack.join('/')\n}\n\nfunction parsePath (path) {\n var hash = '';\n var query = '';\n\n var hashIndex = path.indexOf('#');\n if (hashIndex >= 0) {\n hash = path.slice(hashIndex);\n path = path.slice(0, hashIndex);\n }\n\n var queryIndex = path.indexOf('?');\n if (queryIndex >= 0) {\n query = path.slice(queryIndex + 1);\n path = path.slice(0, queryIndex);\n }\n\n return {\n path: path,\n query: query,\n hash: hash\n }\n}\n\nfunction cleanPath (path) {\n return path.replace(/\\/\\//g, '/')\n}\n\nvar isarray = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n\n/**\n * Expose `pathToRegexp`.\n */\nvar pathToRegexp_1 = pathToRegexp;\nvar parse_1 = parse;\nvar compile_1 = compile;\nvar tokensToFunction_1 = tokensToFunction;\nvar tokensToRegExp_1 = tokensToRegExp;\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g');\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = [];\n var key = 0;\n var index = 0;\n var path = '';\n var defaultDelimiter = options && options.delimiter || '/';\n var res;\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0];\n var escaped = res[1];\n var offset = res.index;\n path += str.slice(index, offset);\n index = offset + m.length;\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1];\n continue\n }\n\n var next = str[index];\n var prefix = res[2];\n var name = res[3];\n var capture = res[4];\n var group = res[5];\n var modifier = res[6];\n var asterisk = res[7];\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path);\n path = '';\n }\n\n var partial = prefix != null && next != null && next !== prefix;\n var repeat = modifier === '+' || modifier === '*';\n var optional = modifier === '?' || modifier === '*';\n var delimiter = res[2] || defaultDelimiter;\n var pattern = capture || group;\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n });\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index);\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path);\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options))\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length);\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$');\n }\n }\n\n return function (obj, opts) {\n var path = '';\n var data = obj || {};\n var options = opts || {};\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent;\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n path += token;\n\n continue\n }\n\n var value = data[token.name];\n var segment;\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix;\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j]);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment;\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment;\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys;\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g);\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n });\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = [];\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source);\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options));\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n var strict = options.strict;\n var end = options.end !== false;\n var route = '';\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n route += escapeString(token);\n } else {\n var prefix = escapeString(token.prefix);\n var capture = '(?:' + token.pattern + ')';\n\n keys.push(token);\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*';\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?';\n } else {\n capture = prefix + '(' + capture + ')?';\n }\n } else {\n capture = prefix + '(' + capture + ')';\n }\n\n route += capture;\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/');\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter;\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?';\n }\n\n if (end) {\n route += '$';\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)';\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\npathToRegexp_1.parse = parse_1;\npathToRegexp_1.compile = compile_1;\npathToRegexp_1.tokensToFunction = tokensToFunction_1;\npathToRegexp_1.tokensToRegExp = tokensToRegExp_1;\n\n/* */\n\n// $flow-disable-line\nvar regexpCompileCache = Object.create(null);\n\nfunction fillParams (\n path,\n params,\n routeMsg\n) {\n params = params || {};\n try {\n var filler =\n regexpCompileCache[path] ||\n (regexpCompileCache[path] = pathToRegexp_1.compile(path));\n\n // Fix #2505 resolving asterisk routes { name: 'not-found', params: { pathMatch: '/not-found' }}\n if (params.pathMatch) { params[0] = params.pathMatch; }\n\n return filler(params, { pretty: true })\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"missing param for \" + routeMsg + \": \" + (e.message)));\n }\n return ''\n } finally {\n // delete the 0 if it was added\n delete params[0];\n }\n}\n\n/* */\n\nfunction normalizeLocation (\n raw,\n current,\n append,\n router\n) {\n var next = typeof raw === 'string' ? { path: raw } : raw;\n // named target\n if (next._normalized) {\n return next\n } else if (next.name) {\n return extend({}, raw)\n }\n\n // relative params\n if (!next.path && next.params && current) {\n next = extend({}, next);\n next._normalized = true;\n var params = extend(extend({}, current.params), next.params);\n if (current.name) {\n next.name = current.name;\n next.params = params;\n } else if (current.matched.length) {\n var rawPath = current.matched[current.matched.length - 1].path;\n next.path = fillParams(rawPath, params, (\"path \" + (current.path)));\n } else if (process.env.NODE_ENV !== 'production') {\n warn(false, \"relative params navigation requires a current route.\");\n }\n return next\n }\n\n var parsedPath = parsePath(next.path || '');\n var basePath = (current && current.path) || '/';\n var path = parsedPath.path\n ? resolvePath(parsedPath.path, basePath, append || next.append)\n : basePath;\n\n var query = resolveQuery(\n parsedPath.query,\n next.query,\n router && router.options.parseQuery\n );\n\n var hash = next.hash || parsedPath.hash;\n if (hash && hash.charAt(0) !== '#') {\n hash = \"#\" + hash;\n }\n\n return {\n _normalized: true,\n path: path,\n query: query,\n hash: hash\n }\n}\n\n/* */\n\n// work around weird flow bug\nvar toTypes = [String, Object];\nvar eventTypes = [String, Array];\n\nvar noop = function () {};\n\nvar Link = {\n name: 'RouterLink',\n props: {\n to: {\n type: toTypes,\n required: true\n },\n tag: {\n type: String,\n default: 'a'\n },\n exact: Boolean,\n append: Boolean,\n replace: Boolean,\n activeClass: String,\n exactActiveClass: String,\n event: {\n type: eventTypes,\n default: 'click'\n }\n },\n render: function render (h) {\n var this$1 = this;\n\n var router = this.$router;\n var current = this.$route;\n var ref = router.resolve(\n this.to,\n current,\n this.append\n );\n var location = ref.location;\n var route = ref.route;\n var href = ref.href;\n\n var classes = {};\n var globalActiveClass = router.options.linkActiveClass;\n var globalExactActiveClass = router.options.linkExactActiveClass;\n // Support global empty active class\n var activeClassFallback =\n globalActiveClass == null ? 'router-link-active' : globalActiveClass;\n var exactActiveClassFallback =\n globalExactActiveClass == null\n ? 'router-link-exact-active'\n : globalExactActiveClass;\n var activeClass =\n this.activeClass == null ? activeClassFallback : this.activeClass;\n var exactActiveClass =\n this.exactActiveClass == null\n ? exactActiveClassFallback\n : this.exactActiveClass;\n\n var compareTarget = route.redirectedFrom\n ? createRoute(null, normalizeLocation(route.redirectedFrom), null, router)\n : route;\n\n classes[exactActiveClass] = isSameRoute(current, compareTarget);\n classes[activeClass] = this.exact\n ? classes[exactActiveClass]\n : isIncludedRoute(current, compareTarget);\n\n var handler = function (e) {\n if (guardEvent(e)) {\n if (this$1.replace) {\n router.replace(location, noop);\n } else {\n router.push(location, noop);\n }\n }\n };\n\n var on = { click: guardEvent };\n if (Array.isArray(this.event)) {\n this.event.forEach(function (e) {\n on[e] = handler;\n });\n } else {\n on[this.event] = handler;\n }\n\n var data = { class: classes };\n\n var scopedSlot =\n !this.$scopedSlots.$hasNormal &&\n this.$scopedSlots.default &&\n this.$scopedSlots.default({\n href: href,\n route: route,\n navigate: handler,\n isActive: classes[activeClass],\n isExactActive: classes[exactActiveClass]\n });\n\n if (scopedSlot) {\n if (scopedSlot.length === 1) {\n return scopedSlot[0]\n } else if (scopedSlot.length > 1 || !scopedSlot.length) {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n (\"RouterLink with to=\\\"\" + (this.props.to) + \"\\\" is trying to use a scoped slot but it didn't provide exactly one child.\")\n );\n }\n return scopedSlot.length === 0 ? h() : h('span', {}, scopedSlot)\n }\n }\n\n if (this.tag === 'a') {\n data.on = on;\n data.attrs = { href: href };\n } else {\n // find the first <a> child and apply listener and href\n var a = findAnchor(this.$slots.default);\n if (a) {\n // in case the <a> is a static node\n a.isStatic = false;\n var aData = (a.data = extend({}, a.data));\n aData.on = aData.on || {};\n // transform existing events in both objects into arrays so we can push later\n for (var event in aData.on) {\n var handler$1 = aData.on[event];\n if (event in on) {\n aData.on[event] = Array.isArray(handler$1) ? handler$1 : [handler$1];\n }\n }\n // append new listeners for router-link\n for (var event$1 in on) {\n if (event$1 in aData.on) {\n // on[event] is always a function\n aData.on[event$1].push(on[event$1]);\n } else {\n aData.on[event$1] = handler;\n }\n }\n\n var aAttrs = (a.data.attrs = extend({}, a.data.attrs));\n aAttrs.href = href;\n } else {\n // doesn't have <a> child, apply listener to self\n data.on = on;\n }\n }\n\n return h(this.tag, data, this.$slots.default)\n }\n};\n\nfunction guardEvent (e) {\n // don't redirect with control keys\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) { return }\n // don't redirect when preventDefault called\n if (e.defaultPrevented) { return }\n // don't redirect on right click\n if (e.button !== undefined && e.button !== 0) { return }\n // don't redirect if `target=\"_blank\"`\n if (e.currentTarget && e.currentTarget.getAttribute) {\n var target = e.currentTarget.getAttribute('target');\n if (/\\b_blank\\b/i.test(target)) { return }\n }\n // this may be a Weex event which doesn't have this method\n if (e.preventDefault) {\n e.preventDefault();\n }\n return true\n}\n\nfunction findAnchor (children) {\n if (children) {\n var child;\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n if (child.tag === 'a') {\n return child\n }\n if (child.children && (child = findAnchor(child.children))) {\n return child\n }\n }\n }\n}\n\nvar _Vue;\n\nfunction install (Vue) {\n if (install.installed && _Vue === Vue) { return }\n install.installed = true;\n\n _Vue = Vue;\n\n var isDef = function (v) { return v !== undefined; };\n\n var registerInstance = function (vm, callVal) {\n var i = vm.$options._parentVnode;\n if (isDef(i) && isDef(i = i.data) && isDef(i = i.registerRouteInstance)) {\n i(vm, callVal);\n }\n };\n\n Vue.mixin({\n beforeCreate: function beforeCreate () {\n if (isDef(this.$options.router)) {\n this._routerRoot = this;\n this._router = this.$options.router;\n this._router.init(this);\n Vue.util.defineReactive(this, '_route', this._router.history.current);\n } else {\n this._routerRoot = (this.$parent && this.$parent._routerRoot) || this;\n }\n registerInstance(this, this);\n },\n destroyed: function destroyed () {\n registerInstance(this);\n }\n });\n\n Object.defineProperty(Vue.prototype, '$router', {\n get: function get () { return this._routerRoot._router }\n });\n\n Object.defineProperty(Vue.prototype, '$route', {\n get: function get () { return this._routerRoot._route }\n });\n\n Vue.component('RouterView', View);\n Vue.component('RouterLink', Link);\n\n var strats = Vue.config.optionMergeStrategies;\n // use the same hook merging strategy for route hooks\n strats.beforeRouteEnter = strats.beforeRouteLeave = strats.beforeRouteUpdate = strats.created;\n}\n\n/* */\n\nvar inBrowser = typeof window !== 'undefined';\n\n/* */\n\nfunction createRouteMap (\n routes,\n oldPathList,\n oldPathMap,\n oldNameMap\n) {\n // the path list is used to control path matching priority\n var pathList = oldPathList || [];\n // $flow-disable-line\n var pathMap = oldPathMap || Object.create(null);\n // $flow-disable-line\n var nameMap = oldNameMap || Object.create(null);\n\n routes.forEach(function (route) {\n addRouteRecord(pathList, pathMap, nameMap, route);\n });\n\n // ensure wildcard routes are always at the end\n for (var i = 0, l = pathList.length; i < l; i++) {\n if (pathList[i] === '*') {\n pathList.push(pathList.splice(i, 1)[0]);\n l--;\n i--;\n }\n }\n\n if (process.env.NODE_ENV === 'development') {\n // warn if routes do not include leading slashes\n var found = pathList\n // check for missing leading slash\n .filter(function (path) { return path && path.charAt(0) !== '*' && path.charAt(0) !== '/'; });\n\n if (found.length > 0) {\n var pathNames = found.map(function (path) { return (\"- \" + path); }).join('\\n');\n warn(false, (\"Non-nested routes must include a leading slash character. Fix the following routes: \\n\" + pathNames));\n }\n }\n\n return {\n pathList: pathList,\n pathMap: pathMap,\n nameMap: nameMap\n }\n}\n\nfunction addRouteRecord (\n pathList,\n pathMap,\n nameMap,\n route,\n parent,\n matchAs\n) {\n var path = route.path;\n var name = route.name;\n if (process.env.NODE_ENV !== 'production') {\n assert(path != null, \"\\\"path\\\" is required in a route configuration.\");\n assert(\n typeof route.component !== 'string',\n \"route config \\\"component\\\" for path: \" + (String(\n path || name\n )) + \" cannot be a \" + \"string id. Use an actual component instead.\"\n );\n }\n\n var pathToRegexpOptions =\n route.pathToRegexpOptions || {};\n var normalizedPath = normalizePath(path, parent, pathToRegexpOptions.strict);\n\n if (typeof route.caseSensitive === 'boolean') {\n pathToRegexpOptions.sensitive = route.caseSensitive;\n }\n\n var record = {\n path: normalizedPath,\n regex: compileRouteRegex(normalizedPath, pathToRegexpOptions),\n components: route.components || { default: route.component },\n instances: {},\n name: name,\n parent: parent,\n matchAs: matchAs,\n redirect: route.redirect,\n beforeEnter: route.beforeEnter,\n meta: route.meta || {},\n props:\n route.props == null\n ? {}\n : route.components\n ? route.props\n : { default: route.props }\n };\n\n if (route.children) {\n // Warn if route is named, does not redirect and has a default child route.\n // If users navigate to this route by name, the default child will\n // not be rendered (GH Issue #629)\n if (process.env.NODE_ENV !== 'production') {\n if (\n route.name &&\n !route.redirect &&\n route.children.some(function (child) { return /^\\/?$/.test(child.path); })\n ) {\n warn(\n false,\n \"Named Route '\" + (route.name) + \"' has a default child route. \" +\n \"When navigating to this named route (:to=\\\"{name: '\" + (route.name) + \"'\\\"), \" +\n \"the default child route will not be rendered. Remove the name from \" +\n \"this route and use the name of the default child route for named \" +\n \"links instead.\"\n );\n }\n }\n route.children.forEach(function (child) {\n var childMatchAs = matchAs\n ? cleanPath((matchAs + \"/\" + (child.path)))\n : undefined;\n addRouteRecord(pathList, pathMap, nameMap, child, record, childMatchAs);\n });\n }\n\n if (!pathMap[record.path]) {\n pathList.push(record.path);\n pathMap[record.path] = record;\n }\n\n if (route.alias !== undefined) {\n var aliases = Array.isArray(route.alias) ? route.alias : [route.alias];\n for (var i = 0; i < aliases.length; ++i) {\n var alias = aliases[i];\n if (process.env.NODE_ENV !== 'production' && alias === path) {\n warn(\n false,\n (\"Found an alias with the same value as the path: \\\"\" + path + \"\\\". You have to remove that alias. It will be ignored in development.\")\n );\n // skip in dev to make it work\n continue\n }\n\n var aliasRoute = {\n path: alias,\n children: route.children\n };\n addRouteRecord(\n pathList,\n pathMap,\n nameMap,\n aliasRoute,\n parent,\n record.path || '/' // matchAs\n );\n }\n }\n\n if (name) {\n if (!nameMap[name]) {\n nameMap[name] = record;\n } else if (process.env.NODE_ENV !== 'production' && !matchAs) {\n warn(\n false,\n \"Duplicate named routes definition: \" +\n \"{ name: \\\"\" + name + \"\\\", path: \\\"\" + (record.path) + \"\\\" }\"\n );\n }\n }\n}\n\nfunction compileRouteRegex (\n path,\n pathToRegexpOptions\n) {\n var regex = pathToRegexp_1(path, [], pathToRegexpOptions);\n if (process.env.NODE_ENV !== 'production') {\n var keys = Object.create(null);\n regex.keys.forEach(function (key) {\n warn(\n !keys[key.name],\n (\"Duplicate param keys in route with path: \\\"\" + path + \"\\\"\")\n );\n keys[key.name] = true;\n });\n }\n return regex\n}\n\nfunction normalizePath (\n path,\n parent,\n strict\n) {\n if (!strict) { path = path.replace(/\\/$/, ''); }\n if (path[0] === '/') { return path }\n if (parent == null) { return path }\n return cleanPath(((parent.path) + \"/\" + path))\n}\n\n/* */\n\n\n\nfunction createMatcher (\n routes,\n router\n) {\n var ref = createRouteMap(routes);\n var pathList = ref.pathList;\n var pathMap = ref.pathMap;\n var nameMap = ref.nameMap;\n\n function addRoutes (routes) {\n createRouteMap(routes, pathList, pathMap, nameMap);\n }\n\n function match (\n raw,\n currentRoute,\n redirectedFrom\n ) {\n var location = normalizeLocation(raw, currentRoute, false, router);\n var name = location.name;\n\n if (name) {\n var record = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n warn(record, (\"Route with name '\" + name + \"' does not exist\"));\n }\n if (!record) { return _createRoute(null, location) }\n var paramNames = record.regex.keys\n .filter(function (key) { return !key.optional; })\n .map(function (key) { return key.name; });\n\n if (typeof location.params !== 'object') {\n location.params = {};\n }\n\n if (currentRoute && typeof currentRoute.params === 'object') {\n for (var key in currentRoute.params) {\n if (!(key in location.params) && paramNames.indexOf(key) > -1) {\n location.params[key] = currentRoute.params[key];\n }\n }\n }\n\n location.path = fillParams(record.path, location.params, (\"named route \\\"\" + name + \"\\\"\"));\n return _createRoute(record, location, redirectedFrom)\n } else if (location.path) {\n location.params = {};\n for (var i = 0; i < pathList.length; i++) {\n var path = pathList[i];\n var record$1 = pathMap[path];\n if (matchRoute(record$1.regex, location.path, location.params)) {\n return _createRoute(record$1, location, redirectedFrom)\n }\n }\n }\n // no match\n return _createRoute(null, location)\n }\n\n function redirect (\n record,\n location\n ) {\n var originalRedirect = record.redirect;\n var redirect = typeof originalRedirect === 'function'\n ? originalRedirect(createRoute(record, location, null, router))\n : originalRedirect;\n\n if (typeof redirect === 'string') {\n redirect = { path: redirect };\n }\n\n if (!redirect || typeof redirect !== 'object') {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false, (\"invalid redirect option: \" + (JSON.stringify(redirect)))\n );\n }\n return _createRoute(null, location)\n }\n\n var re = redirect;\n var name = re.name;\n var path = re.path;\n var query = location.query;\n var hash = location.hash;\n var params = location.params;\n query = re.hasOwnProperty('query') ? re.query : query;\n hash = re.hasOwnProperty('hash') ? re.hash : hash;\n params = re.hasOwnProperty('params') ? re.params : params;\n\n if (name) {\n // resolved named direct\n var targetRecord = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n assert(targetRecord, (\"redirect failed: named route \\\"\" + name + \"\\\" not found.\"));\n }\n return match({\n _normalized: true,\n name: name,\n query: query,\n hash: hash,\n params: params\n }, undefined, location)\n } else if (path) {\n // 1. resolve relative redirect\n var rawPath = resolveRecordPath(path, record);\n // 2. resolve params\n var resolvedPath = fillParams(rawPath, params, (\"redirect route with path \\\"\" + rawPath + \"\\\"\"));\n // 3. rematch with existing query and hash\n return match({\n _normalized: true,\n path: resolvedPath,\n query: query,\n hash: hash\n }, undefined, location)\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"invalid redirect option: \" + (JSON.stringify(redirect))));\n }\n return _createRoute(null, location)\n }\n }\n\n function alias (\n record,\n location,\n matchAs\n ) {\n var aliasedPath = fillParams(matchAs, location.params, (\"aliased route with path \\\"\" + matchAs + \"\\\"\"));\n var aliasedMatch = match({\n _normalized: true,\n path: aliasedPath\n });\n if (aliasedMatch) {\n var matched = aliasedMatch.matched;\n var aliasedRecord = matched[matched.length - 1];\n location.params = aliasedMatch.params;\n return _createRoute(aliasedRecord, location)\n }\n return _createRoute(null, location)\n }\n\n function _createRoute (\n record,\n location,\n redirectedFrom\n ) {\n if (record && record.redirect) {\n return redirect(record, redirectedFrom || location)\n }\n if (record && record.matchAs) {\n return alias(record, location, record.matchAs)\n }\n return createRoute(record, location, redirectedFrom, router)\n }\n\n return {\n match: match,\n addRoutes: addRoutes\n }\n}\n\nfunction matchRoute (\n regex,\n path,\n params\n) {\n var m = path.match(regex);\n\n if (!m) {\n return false\n } else if (!params) {\n return true\n }\n\n for (var i = 1, len = m.length; i < len; ++i) {\n var key = regex.keys[i - 1];\n var val = typeof m[i] === 'string' ? decodeURIComponent(m[i]) : m[i];\n if (key) {\n // Fix #1994: using * with props: true generates a param named 0\n params[key.name || 'pathMatch'] = val;\n }\n }\n\n return true\n}\n\nfunction resolveRecordPath (path, record) {\n return resolvePath(path, record.parent ? record.parent.path : '/', true)\n}\n\n/* */\n\n// use User Timing api (if present) for more accurate key precision\nvar Time =\n inBrowser && window.performance && window.performance.now\n ? window.performance\n : Date;\n\nfunction genStateKey () {\n return Time.now().toFixed(3)\n}\n\nvar _key = genStateKey();\n\nfunction getStateKey () {\n return _key\n}\n\nfunction setStateKey (key) {\n return (_key = key)\n}\n\n/* */\n\nvar positionStore = Object.create(null);\n\nfunction setupScroll () {\n // Fix for #1585 for Firefox\n // Fix for #2195 Add optional third attribute to workaround a bug in safari https://bugs.webkit.org/show_bug.cgi?id=182678\n // Fix for #2774 Support for apps loaded from Windows file shares not mapped to network drives: replaced location.origin with\n // window.location.protocol + '//' + window.location.host\n // location.host contains the port and location.hostname doesn't\n var protocolAndPath = window.location.protocol + '//' + window.location.host;\n var absolutePath = window.location.href.replace(protocolAndPath, '');\n window.history.replaceState({ key: getStateKey() }, '', absolutePath);\n window.addEventListener('popstate', function (e) {\n saveScrollPosition();\n if (e.state && e.state.key) {\n setStateKey(e.state.key);\n }\n });\n}\n\nfunction handleScroll (\n router,\n to,\n from,\n isPop\n) {\n if (!router.app) {\n return\n }\n\n var behavior = router.options.scrollBehavior;\n if (!behavior) {\n return\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(typeof behavior === 'function', \"scrollBehavior must be a function\");\n }\n\n // wait until re-render finishes before scrolling\n router.app.$nextTick(function () {\n var position = getScrollPosition();\n var shouldScroll = behavior.call(\n router,\n to,\n from,\n isPop ? position : null\n );\n\n if (!shouldScroll) {\n return\n }\n\n if (typeof shouldScroll.then === 'function') {\n shouldScroll\n .then(function (shouldScroll) {\n scrollToPosition((shouldScroll), position);\n })\n .catch(function (err) {\n if (process.env.NODE_ENV !== 'production') {\n assert(false, err.toString());\n }\n });\n } else {\n scrollToPosition(shouldScroll, position);\n }\n });\n}\n\nfunction saveScrollPosition () {\n var key = getStateKey();\n if (key) {\n positionStore[key] = {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n }\n}\n\nfunction getScrollPosition () {\n var key = getStateKey();\n if (key) {\n return positionStore[key]\n }\n}\n\nfunction getElementPosition (el, offset) {\n var docEl = document.documentElement;\n var docRect = docEl.getBoundingClientRect();\n var elRect = el.getBoundingClientRect();\n return {\n x: elRect.left - docRect.left - offset.x,\n y: elRect.top - docRect.top - offset.y\n }\n}\n\nfunction isValidPosition (obj) {\n return isNumber(obj.x) || isNumber(obj.y)\n}\n\nfunction normalizePosition (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : window.pageXOffset,\n y: isNumber(obj.y) ? obj.y : window.pageYOffset\n }\n}\n\nfunction normalizeOffset (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : 0,\n y: isNumber(obj.y) ? obj.y : 0\n }\n}\n\nfunction isNumber (v) {\n return typeof v === 'number'\n}\n\nvar hashStartsWithNumberRE = /^#\\d/;\n\nfunction scrollToPosition (shouldScroll, position) {\n var isObject = typeof shouldScroll === 'object';\n if (isObject && typeof shouldScroll.selector === 'string') {\n // getElementById would still fail if the selector contains a more complicated query like #main[data-attr]\n // but at the same time, it doesn't make much sense to select an element with an id and an extra selector\n var el = hashStartsWithNumberRE.test(shouldScroll.selector) // $flow-disable-line\n ? document.getElementById(shouldScroll.selector.slice(1)) // $flow-disable-line\n : document.querySelector(shouldScroll.selector);\n\n if (el) {\n var offset =\n shouldScroll.offset && typeof shouldScroll.offset === 'object'\n ? shouldScroll.offset\n : {};\n offset = normalizeOffset(offset);\n position = getElementPosition(el, offset);\n } else if (isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n } else if (isObject && isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n\n if (position) {\n window.scrollTo(position.x, position.y);\n }\n}\n\n/* */\n\nvar supportsPushState =\n inBrowser &&\n (function () {\n var ua = window.navigator.userAgent;\n\n if (\n (ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) &&\n ua.indexOf('Mobile Safari') !== -1 &&\n ua.indexOf('Chrome') === -1 &&\n ua.indexOf('Windows Phone') === -1\n ) {\n return false\n }\n\n return window.history && 'pushState' in window.history\n })();\n\nfunction pushState (url, replace) {\n saveScrollPosition();\n // try...catch the pushState call to get around Safari\n // DOM Exception 18 where it limits to 100 pushState calls\n var history = window.history;\n try {\n if (replace) {\n history.replaceState({ key: getStateKey() }, '', url);\n } else {\n history.pushState({ key: setStateKey(genStateKey()) }, '', url);\n }\n } catch (e) {\n window.location[replace ? 'replace' : 'assign'](url);\n }\n}\n\nfunction replaceState (url) {\n pushState(url, true);\n}\n\n/* */\n\nfunction runQueue (queue, fn, cb) {\n var step = function (index) {\n if (index >= queue.length) {\n cb();\n } else {\n if (queue[index]) {\n fn(queue[index], function () {\n step(index + 1);\n });\n } else {\n step(index + 1);\n }\n }\n };\n step(0);\n}\n\n/* */\n\nfunction resolveAsyncComponents (matched) {\n return function (to, from, next) {\n var hasAsync = false;\n var pending = 0;\n var error = null;\n\n flatMapComponents(matched, function (def, _, match, key) {\n // if it's a function and doesn't have cid attached,\n // assume it's an async component resolve function.\n // we are not using Vue's default async resolving mechanism because\n // we want to halt the navigation until the incoming component has been\n // resolved.\n if (typeof def === 'function' && def.cid === undefined) {\n hasAsync = true;\n pending++;\n\n var resolve = once(function (resolvedDef) {\n if (isESModule(resolvedDef)) {\n resolvedDef = resolvedDef.default;\n }\n // save resolved on async factory in case it's used elsewhere\n def.resolved = typeof resolvedDef === 'function'\n ? resolvedDef\n : _Vue.extend(resolvedDef);\n match.components[key] = resolvedDef;\n pending--;\n if (pending <= 0) {\n next();\n }\n });\n\n var reject = once(function (reason) {\n var msg = \"Failed to resolve async component \" + key + \": \" + reason;\n process.env.NODE_ENV !== 'production' && warn(false, msg);\n if (!error) {\n error = isError(reason)\n ? reason\n : new Error(msg);\n next(error);\n }\n });\n\n var res;\n try {\n res = def(resolve, reject);\n } catch (e) {\n reject(e);\n }\n if (res) {\n if (typeof res.then === 'function') {\n res.then(resolve, reject);\n } else {\n // new syntax in Vue 2.3\n var comp = res.component;\n if (comp && typeof comp.then === 'function') {\n comp.then(resolve, reject);\n }\n }\n }\n }\n });\n\n if (!hasAsync) { next(); }\n }\n}\n\nfunction flatMapComponents (\n matched,\n fn\n) {\n return flatten(matched.map(function (m) {\n return Object.keys(m.components).map(function (key) { return fn(\n m.components[key],\n m.instances[key],\n m, key\n ); })\n }))\n}\n\nfunction flatten (arr) {\n return Array.prototype.concat.apply([], arr)\n}\n\nvar hasSymbol =\n typeof Symbol === 'function' &&\n typeof Symbol.toStringTag === 'symbol';\n\nfunction isESModule (obj) {\n return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module')\n}\n\n// in Webpack 2, require.ensure now also returns a Promise\n// so the resolve/reject functions may get called an extra time\n// if the user uses an arrow function shorthand that happens to\n// return that Promise.\nfunction once (fn) {\n var called = false;\n return function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (called) { return }\n called = true;\n return fn.apply(this, args)\n }\n}\n\nvar NavigationDuplicated = /*@__PURE__*/(function (Error) {\n function NavigationDuplicated (normalizedLocation) {\n Error.call(this);\n this.name = this._name = 'NavigationDuplicated';\n // passing the message to super() doesn't seem to work in the transpiled version\n this.message = \"Navigating to current location (\\\"\" + (normalizedLocation.fullPath) + \"\\\") is not allowed\";\n // add a stack property so services like Sentry can correctly display it\n Object.defineProperty(this, 'stack', {\n value: new Error().stack,\n writable: true,\n configurable: true\n });\n // we could also have used\n // Error.captureStackTrace(this, this.constructor)\n // but it only exists on node and chrome\n }\n\n if ( Error ) NavigationDuplicated.__proto__ = Error;\n NavigationDuplicated.prototype = Object.create( Error && Error.prototype );\n NavigationDuplicated.prototype.constructor = NavigationDuplicated;\n\n return NavigationDuplicated;\n}(Error));\n\n// support IE9\nNavigationDuplicated._name = 'NavigationDuplicated';\n\n/* */\n\nvar History = function History (router, base) {\n this.router = router;\n this.base = normalizeBase(base);\n // start with a route object that stands for \"nowhere\"\n this.current = START;\n this.pending = null;\n this.ready = false;\n this.readyCbs = [];\n this.readyErrorCbs = [];\n this.errorCbs = [];\n};\n\nHistory.prototype.listen = function listen (cb) {\n this.cb = cb;\n};\n\nHistory.prototype.onReady = function onReady (cb, errorCb) {\n if (this.ready) {\n cb();\n } else {\n this.readyCbs.push(cb);\n if (errorCb) {\n this.readyErrorCbs.push(errorCb);\n }\n }\n};\n\nHistory.prototype.onError = function onError (errorCb) {\n this.errorCbs.push(errorCb);\n};\n\nHistory.prototype.transitionTo = function transitionTo (\n location,\n onComplete,\n onAbort\n) {\n var this$1 = this;\n\n var route = this.router.match(location, this.current);\n this.confirmTransition(\n route,\n function () {\n this$1.updateRoute(route);\n onComplete && onComplete(route);\n this$1.ensureURL();\n\n // fire ready cbs once\n if (!this$1.ready) {\n this$1.ready = true;\n this$1.readyCbs.forEach(function (cb) {\n cb(route);\n });\n }\n },\n function (err) {\n if (onAbort) {\n onAbort(err);\n }\n if (err && !this$1.ready) {\n this$1.ready = true;\n this$1.readyErrorCbs.forEach(function (cb) {\n cb(err);\n });\n }\n }\n );\n};\n\nHistory.prototype.confirmTransition = function confirmTransition (route, onComplete, onAbort) {\n var this$1 = this;\n\n var current = this.current;\n var abort = function (err) {\n // after merging https://github.com/vuejs/vue-router/pull/2771 we\n // When the user navigates through history through back/forward buttons\n // we do not want to throw the error. We only throw it if directly calling\n // push/replace. That's why it's not included in isError\n if (!isExtendedError(NavigationDuplicated, err) && isError(err)) {\n if (this$1.errorCbs.length) {\n this$1.errorCbs.forEach(function (cb) {\n cb(err);\n });\n } else {\n warn(false, 'uncaught error during route navigation:');\n console.error(err);\n }\n }\n onAbort && onAbort(err);\n };\n if (\n isSameRoute(route, current) &&\n // in the case the route map has been dynamically appended to\n route.matched.length === current.matched.length\n ) {\n this.ensureURL();\n return abort(new NavigationDuplicated(route))\n }\n\n var ref = resolveQueue(\n this.current.matched,\n route.matched\n );\n var updated = ref.updated;\n var deactivated = ref.deactivated;\n var activated = ref.activated;\n\n var queue = [].concat(\n // in-component leave guards\n extractLeaveGuards(deactivated),\n // global before hooks\n this.router.beforeHooks,\n // in-component update hooks\n extractUpdateHooks(updated),\n // in-config enter guards\n activated.map(function (m) { return m.beforeEnter; }),\n // async components\n resolveAsyncComponents(activated)\n );\n\n this.pending = route;\n var iterator = function (hook, next) {\n if (this$1.pending !== route) {\n return abort()\n }\n try {\n hook(route, current, function (to) {\n if (to === false || isError(to)) {\n // next(false) -> abort navigation, ensure current URL\n this$1.ensureURL(true);\n abort(to);\n } else if (\n typeof to === 'string' ||\n (typeof to === 'object' &&\n (typeof to.path === 'string' || typeof to.name === 'string'))\n ) {\n // next('/') or next({ path: '/' }) -> redirect\n abort();\n if (typeof to === 'object' && to.replace) {\n this$1.replace(to);\n } else {\n this$1.push(to);\n }\n } else {\n // confirm transition and pass on the value\n next(to);\n }\n });\n } catch (e) {\n abort(e);\n }\n };\n\n runQueue(queue, iterator, function () {\n var postEnterCbs = [];\n var isValid = function () { return this$1.current === route; };\n // wait until async components are resolved before\n // extracting in-component enter guards\n var enterGuards = extractEnterGuards(activated, postEnterCbs, isValid);\n var queue = enterGuards.concat(this$1.router.resolveHooks);\n runQueue(queue, iterator, function () {\n if (this$1.pending !== route) {\n return abort()\n }\n this$1.pending = null;\n onComplete(route);\n if (this$1.router.app) {\n this$1.router.app.$nextTick(function () {\n postEnterCbs.forEach(function (cb) {\n cb();\n });\n });\n }\n });\n });\n};\n\nHistory.prototype.updateRoute = function updateRoute (route) {\n var prev = this.current;\n this.current = route;\n this.cb && this.cb(route);\n this.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n};\n\nfunction normalizeBase (base) {\n if (!base) {\n if (inBrowser) {\n // respect <base> tag\n var baseEl = document.querySelector('base');\n base = (baseEl && baseEl.getAttribute('href')) || '/';\n // strip full URL origin\n base = base.replace(/^https?:\\/\\/[^\\/]+/, '');\n } else {\n base = '/';\n }\n }\n // make sure there's the starting slash\n if (base.charAt(0) !== '/') {\n base = '/' + base;\n }\n // remove trailing slash\n return base.replace(/\\/$/, '')\n}\n\nfunction resolveQueue (\n current,\n next\n) {\n var i;\n var max = Math.max(current.length, next.length);\n for (i = 0; i < max; i++) {\n if (current[i] !== next[i]) {\n break\n }\n }\n return {\n updated: next.slice(0, i),\n activated: next.slice(i),\n deactivated: current.slice(i)\n }\n}\n\nfunction extractGuards (\n records,\n name,\n bind,\n reverse\n) {\n var guards = flatMapComponents(records, function (def, instance, match, key) {\n var guard = extractGuard(def, name);\n if (guard) {\n return Array.isArray(guard)\n ? guard.map(function (guard) { return bind(guard, instance, match, key); })\n : bind(guard, instance, match, key)\n }\n });\n return flatten(reverse ? guards.reverse() : guards)\n}\n\nfunction extractGuard (\n def,\n key\n) {\n if (typeof def !== 'function') {\n // extend now so that global mixins are applied.\n def = _Vue.extend(def);\n }\n return def.options[key]\n}\n\nfunction extractLeaveGuards (deactivated) {\n return extractGuards(deactivated, 'beforeRouteLeave', bindGuard, true)\n}\n\nfunction extractUpdateHooks (updated) {\n return extractGuards(updated, 'beforeRouteUpdate', bindGuard)\n}\n\nfunction bindGuard (guard, instance) {\n if (instance) {\n return function boundRouteGuard () {\n return guard.apply(instance, arguments)\n }\n }\n}\n\nfunction extractEnterGuards (\n activated,\n cbs,\n isValid\n) {\n return extractGuards(\n activated,\n 'beforeRouteEnter',\n function (guard, _, match, key) {\n return bindEnterGuard(guard, match, key, cbs, isValid)\n }\n )\n}\n\nfunction bindEnterGuard (\n guard,\n match,\n key,\n cbs,\n isValid\n) {\n return function routeEnterGuard (to, from, next) {\n return guard(to, from, function (cb) {\n if (typeof cb === 'function') {\n cbs.push(function () {\n // #750\n // if a router-view is wrapped with an out-in transition,\n // the instance may not have been registered at this time.\n // we will need to poll for registration until current route\n // is no longer valid.\n poll(cb, match.instances, key, isValid);\n });\n }\n next(cb);\n })\n }\n}\n\nfunction poll (\n cb, // somehow flow cannot infer this is a function\n instances,\n key,\n isValid\n) {\n if (\n instances[key] &&\n !instances[key]._isBeingDestroyed // do not reuse being destroyed instance\n ) {\n cb(instances[key]);\n } else if (isValid()) {\n setTimeout(function () {\n poll(cb, instances, key, isValid);\n }, 16);\n }\n}\n\n/* */\n\nvar HTML5History = /*@__PURE__*/(function (History) {\n function HTML5History (router, base) {\n var this$1 = this;\n\n History.call(this, router, base);\n\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n setupScroll();\n }\n\n var initLocation = getLocation(this.base);\n window.addEventListener('popstate', function (e) {\n var current = this$1.current;\n\n // Avoiding first `popstate` event dispatched in some browsers but first\n // history route not updated since async guard at the same time.\n var location = getLocation(this$1.base);\n if (this$1.current === START && location === initLocation) {\n return\n }\n\n this$1.transitionTo(location, function (route) {\n if (supportsScroll) {\n handleScroll(router, route, current, true);\n }\n });\n });\n }\n\n if ( History ) HTML5History.__proto__ = History;\n HTML5History.prototype = Object.create( History && History.prototype );\n HTML5History.prototype.constructor = HTML5History;\n\n HTML5History.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HTML5History.prototype.push = function push (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n pushState(cleanPath(this$1.base + route.fullPath));\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n replaceState(cleanPath(this$1.base + route.fullPath));\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.ensureURL = function ensureURL (push) {\n if (getLocation(this.base) !== this.current.fullPath) {\n var current = cleanPath(this.base + this.current.fullPath);\n push ? pushState(current) : replaceState(current);\n }\n };\n\n HTML5History.prototype.getCurrentLocation = function getCurrentLocation () {\n return getLocation(this.base)\n };\n\n return HTML5History;\n}(History));\n\nfunction getLocation (base) {\n var path = decodeURI(window.location.pathname);\n if (base && path.indexOf(base) === 0) {\n path = path.slice(base.length);\n }\n return (path || '/') + window.location.search + window.location.hash\n}\n\n/* */\n\nvar HashHistory = /*@__PURE__*/(function (History) {\n function HashHistory (router, base, fallback) {\n History.call(this, router, base);\n // check history fallback deeplinking\n if (fallback && checkFallback(this.base)) {\n return\n }\n ensureSlash();\n }\n\n if ( History ) HashHistory.__proto__ = History;\n HashHistory.prototype = Object.create( History && History.prototype );\n HashHistory.prototype.constructor = HashHistory;\n\n // this is delayed until the app mounts\n // to avoid the hashchange listener being fired too early\n HashHistory.prototype.setupListeners = function setupListeners () {\n var this$1 = this;\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n setupScroll();\n }\n\n window.addEventListener(\n supportsPushState ? 'popstate' : 'hashchange',\n function () {\n var current = this$1.current;\n if (!ensureSlash()) {\n return\n }\n this$1.transitionTo(getHash(), function (route) {\n if (supportsScroll) {\n handleScroll(this$1.router, route, current, true);\n }\n if (!supportsPushState) {\n replaceHash(route.fullPath);\n }\n });\n }\n );\n };\n\n HashHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n pushHash(route.fullPath);\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n replaceHash(route.fullPath);\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HashHistory.prototype.ensureURL = function ensureURL (push) {\n var current = this.current.fullPath;\n if (getHash() !== current) {\n push ? pushHash(current) : replaceHash(current);\n }\n };\n\n HashHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n return getHash()\n };\n\n return HashHistory;\n}(History));\n\nfunction checkFallback (base) {\n var location = getLocation(base);\n if (!/^\\/#/.test(location)) {\n window.location.replace(cleanPath(base + '/#' + location));\n return true\n }\n}\n\nfunction ensureSlash () {\n var path = getHash();\n if (path.charAt(0) === '/') {\n return true\n }\n replaceHash('/' + path);\n return false\n}\n\nfunction getHash () {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var index = href.indexOf('#');\n // empty path\n if (index < 0) { return '' }\n\n href = href.slice(index + 1);\n // decode the hash but not the search or hash\n // as search(query) is already decoded\n // https://github.com/vuejs/vue-router/issues/2708\n var searchIndex = href.indexOf('?');\n if (searchIndex < 0) {\n var hashIndex = href.indexOf('#');\n if (hashIndex > -1) {\n href = decodeURI(href.slice(0, hashIndex)) + href.slice(hashIndex);\n } else { href = decodeURI(href); }\n } else {\n if (searchIndex > -1) {\n href = decodeURI(href.slice(0, searchIndex)) + href.slice(searchIndex);\n }\n }\n\n return href\n}\n\nfunction getUrl (path) {\n var href = window.location.href;\n var i = href.indexOf('#');\n var base = i >= 0 ? href.slice(0, i) : href;\n return (base + \"#\" + path)\n}\n\nfunction pushHash (path) {\n if (supportsPushState) {\n pushState(getUrl(path));\n } else {\n window.location.hash = path;\n }\n}\n\nfunction replaceHash (path) {\n if (supportsPushState) {\n replaceState(getUrl(path));\n } else {\n window.location.replace(getUrl(path));\n }\n}\n\n/* */\n\nvar AbstractHistory = /*@__PURE__*/(function (History) {\n function AbstractHistory (router, base) {\n History.call(this, router, base);\n this.stack = [];\n this.index = -1;\n }\n\n if ( History ) AbstractHistory.__proto__ = History;\n AbstractHistory.prototype = Object.create( History && History.prototype );\n AbstractHistory.prototype.constructor = AbstractHistory;\n\n AbstractHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1.stack = this$1.stack.slice(0, this$1.index + 1).concat(route);\n this$1.index++;\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1.stack = this$1.stack.slice(0, this$1.index).concat(route);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.go = function go (n) {\n var this$1 = this;\n\n var targetIndex = this.index + n;\n if (targetIndex < 0 || targetIndex >= this.stack.length) {\n return\n }\n var route = this.stack[targetIndex];\n this.confirmTransition(\n route,\n function () {\n this$1.index = targetIndex;\n this$1.updateRoute(route);\n },\n function (err) {\n if (isExtendedError(NavigationDuplicated, err)) {\n this$1.index = targetIndex;\n }\n }\n );\n };\n\n AbstractHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n var current = this.stack[this.stack.length - 1];\n return current ? current.fullPath : '/'\n };\n\n AbstractHistory.prototype.ensureURL = function ensureURL () {\n // noop\n };\n\n return AbstractHistory;\n}(History));\n\n/* */\n\n\n\nvar VueRouter = function VueRouter (options) {\n if ( options === void 0 ) options = {};\n\n this.app = null;\n this.apps = [];\n this.options = options;\n this.beforeHooks = [];\n this.resolveHooks = [];\n this.afterHooks = [];\n this.matcher = createMatcher(options.routes || [], this);\n\n var mode = options.mode || 'hash';\n this.fallback = mode === 'history' && !supportsPushState && options.fallback !== false;\n if (this.fallback) {\n mode = 'hash';\n }\n if (!inBrowser) {\n mode = 'abstract';\n }\n this.mode = mode;\n\n switch (mode) {\n case 'history':\n this.history = new HTML5History(this, options.base);\n break\n case 'hash':\n this.history = new HashHistory(this, options.base, this.fallback);\n break\n case 'abstract':\n this.history = new AbstractHistory(this, options.base);\n break\n default:\n if (process.env.NODE_ENV !== 'production') {\n assert(false, (\"invalid mode: \" + mode));\n }\n }\n};\n\nvar prototypeAccessors = { currentRoute: { configurable: true } };\n\nVueRouter.prototype.match = function match (\n raw,\n current,\n redirectedFrom\n) {\n return this.matcher.match(raw, current, redirectedFrom)\n};\n\nprototypeAccessors.currentRoute.get = function () {\n return this.history && this.history.current\n};\n\nVueRouter.prototype.init = function init (app /* Vue component instance */) {\n var this$1 = this;\n\n process.env.NODE_ENV !== 'production' && assert(\n install.installed,\n \"not installed. Make sure to call `Vue.use(VueRouter)` \" +\n \"before creating root instance.\"\n );\n\n this.apps.push(app);\n\n // set up app destroyed handler\n // https://github.com/vuejs/vue-router/issues/2639\n app.$once('hook:destroyed', function () {\n // clean out app from this.apps array once destroyed\n var index = this$1.apps.indexOf(app);\n if (index > -1) { this$1.apps.splice(index, 1); }\n // ensure we still have a main app or null if no apps\n // we do not release the router so it can be reused\n if (this$1.app === app) { this$1.app = this$1.apps[0] || null; }\n });\n\n // main app previously initialized\n // return as we don't need to set up new history listener\n if (this.app) {\n return\n }\n\n this.app = app;\n\n var history = this.history;\n\n if (history instanceof HTML5History) {\n history.transitionTo(history.getCurrentLocation());\n } else if (history instanceof HashHistory) {\n var setupHashListener = function () {\n history.setupListeners();\n };\n history.transitionTo(\n history.getCurrentLocation(),\n setupHashListener,\n setupHashListener\n );\n }\n\n history.listen(function (route) {\n this$1.apps.forEach(function (app) {\n app._route = route;\n });\n });\n};\n\nVueRouter.prototype.beforeEach = function beforeEach (fn) {\n return registerHook(this.beforeHooks, fn)\n};\n\nVueRouter.prototype.beforeResolve = function beforeResolve (fn) {\n return registerHook(this.resolveHooks, fn)\n};\n\nVueRouter.prototype.afterEach = function afterEach (fn) {\n return registerHook(this.afterHooks, fn)\n};\n\nVueRouter.prototype.onReady = function onReady (cb, errorCb) {\n this.history.onReady(cb, errorCb);\n};\n\nVueRouter.prototype.onError = function onError (errorCb) {\n this.history.onError(errorCb);\n};\n\nVueRouter.prototype.push = function push (location, onComplete, onAbort) {\n var this$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1.history.push(location, resolve, reject);\n })\n } else {\n this.history.push(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1.history.replace(location, resolve, reject);\n })\n } else {\n this.history.replace(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.go = function go (n) {\n this.history.go(n);\n};\n\nVueRouter.prototype.back = function back () {\n this.go(-1);\n};\n\nVueRouter.prototype.forward = function forward () {\n this.go(1);\n};\n\nVueRouter.prototype.getMatchedComponents = function getMatchedComponents (to) {\n var route = to\n ? to.matched\n ? to\n : this.resolve(to).route\n : this.currentRoute;\n if (!route) {\n return []\n }\n return [].concat.apply([], route.matched.map(function (m) {\n return Object.keys(m.components).map(function (key) {\n return m.components[key]\n })\n }))\n};\n\nVueRouter.prototype.resolve = function resolve (\n to,\n current,\n append\n) {\n current = current || this.history.current;\n var location = normalizeLocation(\n to,\n current,\n append,\n this\n );\n var route = this.match(location, current);\n var fullPath = route.redirectedFrom || route.fullPath;\n var base = this.history.base;\n var href = createHref(base, fullPath, this.mode);\n return {\n location: location,\n route: route,\n href: href,\n // for backwards compat\n normalizedTo: location,\n resolved: route\n }\n};\n\nVueRouter.prototype.addRoutes = function addRoutes (routes) {\n this.matcher.addRoutes(routes);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nObject.defineProperties( VueRouter.prototype, prototypeAccessors );\n\nfunction registerHook (list, fn) {\n list.push(fn);\n return function () {\n var i = list.indexOf(fn);\n if (i > -1) { list.splice(i, 1); }\n }\n}\n\nfunction createHref (base, fullPath, mode) {\n var path = mode === 'hash' ? '#' + fullPath : fullPath;\n return base ? cleanPath(base + '/' + path) : path\n}\n\nVueRouter.install = install;\nVueRouter.version = '3.1.3';\n\nif (inBrowser && window.Vue) {\n window.Vue.use(VueRouter);\n}\n\nexport default VueRouter;\n","/*\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue';\nimport Router from 'vue-router';\n\n// Dynamic loading\nconst Users = () => import('./views/Users');\nconst Apps = () => import('./views/Apps');\n\nVue.use(Router);\n\n/*\n * This is the list of routes where the vuejs app will\n * take over php to provide data\n * You need to forward the php routing (routes.php) to\n * the settings-vue template, where the vue-router will\n * ensure the proper route.\n * ⚠️ Routes needs to match the php routes.\n */\n\nexport default new Router({\n\tmode: 'history',\n\t// if index.php is in the url AND we got this far, then it's working:\n\t// let's keep using index.php in the url\n\tbase: OC.generateUrl(''),\n\tlinkActiveClass: 'active',\n\troutes: [\n\t\t{\n\t\t\tpath: '/:index(index.php/)?settings/users',\n\t\t\tcomponent: Users,\n\t\t\tprops: true,\n\t\t\tname: 'users',\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\tpath: ':selectedGroup(.*)',\n\t\t\t\t\tname: 'group',\n\t\t\t\t\tcomponent: Users\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\tpath: '/:index(index.php/)?settings/apps',\n\t\t\tcomponent: Apps,\n\t\t\tprops: true,\n\t\t\tname: 'apps',\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\tpath: ':category',\n\t\t\t\t\tname: 'apps-category',\n\t\t\t\t\tcomponent: Apps,\n\t\t\t\t\tchildren: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpath: ':id',\n\t\t\t\t\t\t\tname: 'apps-details',\n\t\t\t\t\t\t\tcomponent: Apps\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t]\n});\n","/*\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport api from './api';\n\nconst orderGroups = function(groups, orderBy) {\n\t/* const SORT_USERCOUNT = 1;\n\t * const SORT_GROUPNAME = 2;\n\t * https://github.com/nextcloud/server/blob/208e38e84e1a07a49699aa90dc5b7272d24489f0/lib/private/Group/MetaData.php#L34\n\t */\n\tif (orderBy === 1) {\n\t\treturn groups.sort((a, b) => a.usercount-a.disabled < b.usercount - b.disabled);\n\t} else {\n\t\treturn groups.sort((a, b) => a.name.localeCompare(b.name));\n\t}\n};\n\nconst defaults = {\n\tgroup: {\n\t\tid: '',\n\t\tname: '',\n\t\tusercount: 0,\n\t\tdisabled: 0,\n\t\tcanAdd: true,\n\t\tcanRemove: true\n\t}\n};\n\nconst state = {\n\tusers: [],\n\tgroups: [],\n\torderBy: 1,\n\tminPasswordLength: 0,\n\tusersOffset: 0,\n\tusersLimit: 25,\n\tuserCount: 0\n};\n\nconst mutations = {\n\tappendUsers(state, usersObj) {\n\t\t// convert obj to array\n\t\tlet users = state.users.concat(Object.keys(usersObj).map(userid => usersObj[userid]));\n\t\tstate.usersOffset += state.usersLimit;\n\t\tstate.users = users;\n\t},\n\tsetPasswordPolicyMinLength(state, length) {\n\t\tstate.minPasswordLength = length!=='' ? length : 0;\n\t},\n\tinitGroups(state, {groups, orderBy, userCount}) {\n\t\tstate.groups = groups.map(group => Object.assign({}, defaults.group, group));\n\t\tstate.orderBy = orderBy;\n\t\tstate.userCount = userCount;\n\t\tstate.groups = orderGroups(state.groups, state.orderBy);\n\t\t\n\t},\n\taddGroup(state, {gid, displayName}) {\n\t\ttry {\n\t\t\tif (typeof state.groups.find((group) => group.id === gid) !== 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// extend group to default values\n\t\t\tlet group = Object.assign({}, defaults.group, {\n\t\t\t\tid: gid,\n\t\t\t\tname: displayName,\n\t\t\t});\n\t\t\tstate.groups.push(group);\n\t\t\tstate.groups = orderGroups(state.groups, state.orderBy);\n\t\t} catch (e) {\n\t\t\tconsole.log('Can\\'t create group', e);\n\t\t}\n\t},\n\tremoveGroup(state, gid) {\n\t\tlet groupIndex = state.groups.findIndex(groupSearch => groupSearch.id == gid);\n\t\tif (groupIndex >= 0) {\n\t\t\tstate.groups.splice(groupIndex, 1);\n\t\t}\n\t},\n\taddUserGroup(state, { userid, gid }) {\n\t\tlet group = state.groups.find(groupSearch => groupSearch.id == gid);\n\t\tlet user = state.users.find(user => user.id == userid);\n\t\t// increase count if user is enabled\n\t\tif (group && user.enabled) {\n\t\t\tgroup.usercount++; \n\t\t}\n\t\tlet groups = user.groups;\n\t\tgroups.push(gid);\n\t\tstate.groups = orderGroups(state.groups, state.orderBy);\n\t},\n\tremoveUserGroup(state, { userid, gid }) {\n\t\tlet group = state.groups.find(groupSearch => groupSearch.id == gid);\n\t\tlet user = state.users.find(user => user.id == userid);\n\t\t// lower count if user is enabled\n\t\tif (group && user.enabled) {\n\t\t\tgroup.usercount--;\n\t\t}\n\t\tlet groups = user.groups;\n\t\tgroups.splice(groups.indexOf(gid),1);\n\t\tstate.groups = orderGroups(state.groups, state.orderBy);\n\t},\n\taddUserSubAdmin(state, { userid, gid }) {\n\t\tlet groups = state.users.find(user => user.id == userid).subadmin;\n\t\tgroups.push(gid);\n\t},\n\tremoveUserSubAdmin(state, { userid, gid }) {\n\t\tlet groups = state.users.find(user => user.id == userid).subadmin;\n\t\tgroups.splice(groups.indexOf(gid),1);\n\t},\n\tdeleteUser(state, userid) {\n\t\tlet userIndex = state.users.findIndex(user => user.id == userid);\n\t\tstate.users.splice(userIndex, 1);\n\t},\n\taddUserData(state, response) {\n\t\tstate.users.push(response.data.ocs.data);\n\t},\n\tenableDisableUser(state, { userid, enabled }) {\n\t\tlet user = state.users.find(user => user.id == userid);\n\t\tuser.enabled = enabled;\n\t\t// increment or not\n\t\tstate.groups.find(group => group.id == 'disabled').usercount += enabled ? -1 : 1;\n\t\tstate.userCount += enabled ? 1 : -1;\n\t\tuser.groups.forEach(group => {\n\t\t\t// Increment disabled count\n\t\t\tstate.groups.find(groupSearch => groupSearch.id == group).disabled += enabled ? -1 : 1;\n\t\t});\n\t},\n\tsetUserData(state, { userid, key, value }) {\n\t\tif (key === 'quota') {\n\t\t\tlet humanValue = OC.Util.computerFileSize(value);\n\t\t\tstate.users.find(user => user.id == userid)[key][key] = humanValue!==null ? humanValue : value;\n\t\t} else {\n\t\t\tstate.users.find(user => user.id == userid)[key] = value;\n\t\t}\n\t},\n\n\t/**\n\t * Reset users list\n\t */\n\tresetUsers(state) {\n\t\tstate.users = [];\n\t\tstate.usersOffset = 0;\n\t}\n};\n\nconst getters = {\n\tgetUsers(state) {\n\t\treturn state.users;\n\t},\n\tgetGroups(state) {\n\t\treturn state.groups;\n\t},\n\tgetSubadminGroups(state) {\n\t\t// Can't be subadmin of admin or disabled\n\t\treturn state.groups.filter(group => group.id !== 'admin' && group.id !== 'disabled');\n\t},\n\tgetPasswordPolicyMinLength(state) {\n\t\treturn state.minPasswordLength;\n\t},\n\tgetUsersOffset(state) {\n\t\treturn state.usersOffset;\n\t},\n\tgetUsersLimit(state) {\n\t\treturn state.usersLimit;\n\t},\n\tgetUserCount(state) {\n\t\treturn state.userCount;\n\t}\n};\n\nconst actions = {\n\n\t/**\n\t * Get all users with full details\n\t * \n\t * @param {Object} context\n\t * @param {Object} options\n\t * @param {int} options.offset List offset to request\n\t * @param {int} options.limit List number to return from offset\n\t * @param {string} options.search Search amongst users\n\t * @param {string} options.group Get users from group\n\t * @returns {Promise}\n\t */\n\tgetUsers(context, { offset, limit, search, group }) {\n\t\tsearch = typeof search === 'string' ? search : '';\n\t\tgroup = typeof group === 'string' ? group : '';\n\t\tif (group !== '') {\n\t\t\treturn api.get(OC.linkToOCS(`cloud/groups/${group}/users/details?offset=${offset}&limit=${limit}&search=${search}`, 2))\n\t\t\t.then((response) => {\n\t\t\t\tif (Object.keys(response.data.ocs.data.users).length > 0) {\n\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error));\n\t\t}\n\n\t\treturn api.get(OC.linkToOCS(`cloud/users/details?offset=${offset}&limit=${limit}&search=${search}`, 2))\n\t\t\t.then((response) => {\n\t\t\t\tif (Object.keys(response.data.ocs.data.users).length > 0) {\n\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error));\n\t},\n\n\tgetGroups(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : '';\n\t\tlet limitParam = limit === -1 ? '' : `&limit=${limit}`;\n\t\treturn api.get(OC.linkToOCS(`cloud/groups?offset=${offset}&search=${search}${limitParam}`, 2))\n\t\t\t.then((response) => {\n\t\t\t\tif (Object.keys(response.data.ocs.data.groups).length > 0) {\n\t\t\t\t\tresponse.data.ocs.data.groups.forEach(function(group) {\n\t\t\t\t\t\tcontext.commit('addGroup', {gid: group, displayName: group});\n\t\t\t\t\t});\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error));\n\t},\n\n\t/**\n\t * Get all users with full details\n\t * \n\t * @param {Object} context\n\t * @param {Object} options\n\t * @param {int} options.offset List offset to request\n\t * @param {int} options.limit List number to return from offset\n\t * @returns {Promise}\n\t */\n\tgetUsersFromList(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : '';\n\t\treturn api.get(OC.linkToOCS(`cloud/users/details?offset=${offset}&limit=${limit}&search=${search}`, 2))\n\t\t\t.then((response) => {\n\t\t\t\tif (Object.keys(response.data.ocs.data.users).length > 0) {\n\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error));\n\t},\n\n\t/**\n\t * Get all users with full details from a groupid\n\t * \n\t * @param {Object} context\n\t * @param {Object} options\n\t * @param {int} options.offset List offset to request\n\t * @param {int} options.limit List number to return from offset\n\t * @returns {Promise}\n\t */\n\tgetUsersFromGroup(context, { groupid, offset, limit }) {\n\t\treturn api.get(OC.linkToOCS(`cloud/users/${groupid}/details?offset=${offset}&limit=${limit}`, 2))\n\t\t\t.then((response) => context.commit('getUsersFromList', response.data.ocs.data.users))\n\t\t\t.catch((error) => context.commit('API_FAILURE', error));\n\t},\n\t\n\n\tgetPasswordPolicyMinLength(context) {\n\t\tif(OC.getCapabilities().password_policy && OC.getCapabilities().password_policy.minLength) {\n\t\t\tcontext.commit('setPasswordPolicyMinLength', OC.getCapabilities().password_policy.minLength);\n\t\t\treturn OC.getCapabilities().password_policy.minLength;\n\t\t}\n\t\treturn false;\n\t},\n\n\t/**\n\t * Add group\n\t * \n\t * @param {Object} context\n\t * @param {string} gid Group id\n\t * @returns {Promise}\n\t */\n\taddGroup(context, gid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(OC.linkToOCS(`cloud/groups`, 2), {groupid: gid})\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('addGroup', {gid: gid, displayName: gid})\n\t\t\t\t\treturn {gid: gid, displayName: gid}\n\t\t\t\t})\n\t\t\t\t.catch((error) => {throw error;});\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { gid, error });\n\t\t\t// let's throw one more time to prevent the view\n\t\t\t// from adding the user to a group that doesn't exists\n\t\t\tthrow error;\n\t\t});\n\t},\n\n\t/**\n\t * Remove group\n\t * \n\t * @param {Object} context\n\t * @param {string} gid Group id\n\t * @returns {Promise}\n\t */\n\tremoveGroup(context, gid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(OC.linkToOCS(`cloud/groups/${gid}`, 2))\n\t\t\t\t.then((response) => context.commit('removeGroup', gid))\n\t\t\t\t.catch((error) => {throw error;});\n\t\t}).catch((error) => context.commit('API_FAILURE', { gid, error }));\n\t},\n\n\t/**\n\t * Add user to group\n\t * \n\t * @param {Object} context\n\t * @param {Object} options\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @returns {Promise}\n\t */\n\taddUserGroup(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(OC.linkToOCS(`cloud/users/${userid}/groups`, 2), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('addUserGroup', { userid, gid }))\n\t\t\t\t.catch((error) => {throw error;});\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }));\n\t},\n\n\t/**\n\t * Remove user from group\n\t * \n\t * @param {Object} context\n\t * @param {Object} options\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @returns {Promise}\n\t */\n\tremoveUserGroup(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(OC.linkToOCS(`cloud/users/${userid}/groups`, 2), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('removeUserGroup', { userid, gid }))\n\t\t\t\t.catch((error) => {throw error;});\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { userid, error });\n\t\t\t// let's throw one more time to prevent\n\t\t\t// the view from removing the user row on failure\n\t\t\tthrow error; \n\t\t});\n\t},\n\n\t/**\n\t * Add user to group admin\n\t * \n\t * @param {Object} context\n\t * @param {Object} options\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @returns {Promise}\n\t */\n\taddUserSubAdmin(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(OC.linkToOCS(`cloud/users/${userid}/subadmins`, 2), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('addUserSubAdmin', { userid, gid }))\n\t\t\t\t.catch((error) => {throw error;});\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }));\n\t},\n\n\t/**\n\t * Remove user from group admin\n\t * \n\t * @param {Object} context\n\t * @param {Object} options\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @returns {Promise}\n\t */\n\tremoveUserSubAdmin(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(OC.linkToOCS(`cloud/users/${userid}/subadmins`, 2), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('removeUserSubAdmin', { userid, gid }))\n\t\t\t\t.catch((error) => {throw error;});\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }));\n\t},\n\n\t/**\n\t * Mark all user devices for remote wipe\n\t *\n\t * @param {Object} context\n\t * @param {string} userid User id\n\t * @returns {Promise}\n\t */\n\twipeUserDevices(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(OC.linkToOCS(`cloud/users/${userid}/wipe`, 2))\n\t\t\t\t.catch((error) => {throw error;});\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }));\n\t},\n\n\t/**\n\t * Delete a user\n\t * \n\t * @param {Object} context\n\t * @param {string} userid User id \n\t * @returns {Promise}\n\t */\n\tdeleteUser(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(OC.linkToOCS(`cloud/users/${userid}`, 2))\n\t\t\t\t.then((response) => context.commit('deleteUser', userid))\n\t\t\t\t.catch((error) => {throw error;});\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }));\n\t},\n\n\t/**\n\t * Add a user\n\t * \n\t * @param {Object} context\n\t * @param {Object} options\n\t * @param {string} options.userid User id\n\t * @param {string} options.password User password\n\t * @param {string} options.displayName User display name\n\t * @param {string} options.email User email\n\t * @param {string} options.groups User groups\n\t * @param {string} options.subadmin User subadmin groups\n\t * @param {string} options.quota User email\n\t * @returns {Promise}\n\t */\n\taddUser({commit, dispatch}, { userid, password, displayName, email, groups, subadmin, quota, language }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(OC.linkToOCS(`cloud/users`, 2), { userid, password, displayName, email, groups, subadmin, quota, language })\n\t\t\t\t.then((response) => dispatch('addUserData', userid || response.data.ocs.data.id))\n\t\t\t\t.catch((error) => {throw error;});\n\t\t}).catch((error) => {\n\t\t\tcommit('API_FAILURE', { userid, error });\n\t\t\tthrow error;\n\t\t});\n\t},\n\n\t/**\n\t * Get user data and commit addition\n\t * \n\t * @param {Object} context\n\t * @param {string} userid User id \n\t * @returns {Promise}\n\t */\n\taddUserData(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.get(OC.linkToOCS(`cloud/users/${userid}`, 2))\n\t\t\t\t.then((response) => context.commit('addUserData', response))\n\t\t\t\t.catch((error) => {throw error;});\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }));\n\t},\n\n\t/** Enable or disable user \n\t * \n\t * @param {Object} context\n\t * @param {Object} options\n\t * @param {string} options.userid User id\n\t * @param {boolean} options.enabled User enablement status\n\t * @returns {Promise}\n\t */\n\tenableDisableUser(context, { userid, enabled = true }) {\n\t\tlet userStatus = enabled ? 'enable' : 'disable';\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.put(OC.linkToOCS(`cloud/users/${userid}/${userStatus}`, 2))\n\t\t\t\t.then((response) => context.commit('enableDisableUser', { userid, enabled }))\n\t\t\t\t.catch((error) => {throw error;});\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }));\n\t},\n\n\t/**\n\t * Edit user data\n\t * \n\t * @param {Object} context \n\t * @param {Object} options\n\t * @param {string} options.userid User id\n\t * @param {string} options.key User field to edit\n\t * @param {string} options.value Value of the change\n\t * @returns {Promise}\n\t */\n\tsetUserData(context, { userid, key, value }) {\n\t\tlet allowedEmpty = ['email', 'displayname'];\n\t\tif (['email', 'language', 'quota', 'displayname', 'password'].indexOf(key) !== -1) {\n\t\t\t// We allow empty email or displayname\n\t\t\tif (typeof value === 'string' &&\n\t\t\t\t(\n\t\t\t\t\t(allowedEmpty.indexOf(key) === -1 && value.length > 0) ||\n\t\t\t\t\tallowedEmpty.indexOf(key) !== -1\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn api.requireAdmin().then((response) => {\n\t\t\t\t\treturn api.put(OC.linkToOCS(`cloud/users/${userid}`, 2), { key: key, value: value })\n\t\t\t\t\t\t.then((response) => context.commit('setUserData', { userid, key, value }))\n\t\t\t\t\t\t.catch((error) => {throw error;});\n\t\t\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }));\n\t\t\t}\n\t\t}\n\t\treturn Promise.reject(new Error('Invalid request data'));\n\t},\n\n\t/**\n\t * Send welcome mail\n\t * \n\t * @param {Object} context\n\t * @param {string} userid User id \n\t * @returns {Promise}\n\t */\n\tsendWelcomeMail(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(OC.linkToOCS(`cloud/users/${userid}/welcome`, 2))\n\t\t\t\t.then(response => true)\n\t\t\t\t.catch((error) => {throw error;});\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }));\n\t}\n};\n\nexport default { state, mutations, getters, actions };\n","/*\n * @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport api from './api';\nimport Vue from 'vue';\n\nconst state = {\n\tapps: [],\n\tcategories: [],\n\tupdateCount: 0,\n\tloading: {},\n\tloadingList: false,\n};\n\nconst mutations = {\n\n\tAPPS_API_FAILURE(state, error) {\n\t\tOC.Notification.showHtml(t('settings','An error occured during the request. Unable to proceed.')+'<br>'+error.error.response.data.data.message, {timeout: 7});\n\t\tconsole.log(state, error);\n\t},\n\n\tinitCategories(state, {categories, updateCount}) {\n\t\tstate.categories = categories;\n\t\tstate.updateCount = updateCount;\n\t},\n\n\tsetUpdateCount(state, updateCount) {\n\t\tstate.updateCount = updateCount;\n\t},\n\n\taddCategory(state, category) {\n\t\tstate.categories.push(category);\n\t},\n\n\tappendCategories(state, categoriesArray) {\n\t\t// convert obj to array\n\t\tstate.categories = categoriesArray;\n\t},\n\n\tsetAllApps(state, apps) {\n\t\tstate.apps = apps;\n\t},\n\n\tsetError(state, {appId, error}) {\n\t\tif (!Array.isArray(appId)) {\n\t\t\tappId = [appId];\n\t\t}\n\t\tappId.forEach((_id) => {\n\t\t\tlet app = state.apps.find(app => app.id === _id);\n\t\t\tapp.error = error;\n\t\t});\n\t},\n\n\tclearError(state, {appId, error}) {\n\t\tlet app = state.apps.find(app => app.id === appId);\n\t\tapp.error = null;\n\t},\n\n\tenableApp(state, {appId, groups}) {\n\t\tlet app = state.apps.find(app => app.id === appId);\n\t\tapp.active = true;\n\t\tapp.groups = groups;\n\t},\n\n\tdisableApp(state, appId) {\n\t\tlet app = state.apps.find(app => app.id === appId);\n\t\tapp.active = false;\n\t\tapp.groups = [];\n\t\tif (app.removable) {\n\t\t\tapp.canUnInstall = true;\n\t\t}\n\t},\n\n\tuninstallApp(state, appId) {\n\t\tstate.apps.find(app => app.id === appId).active = false;\n\t\tstate.apps.find(app => app.id === appId).groups = [];\n\t\tstate.apps.find(app => app.id === appId).needsDownload = true;\n\t\tstate.apps.find(app => app.id === appId).installed = false;\n\t\tstate.apps.find(app => app.id === appId).canUnInstall = false;\n\t\tstate.apps.find(app => app.id === appId).canInstall = true;\n\t},\n\n\tupdateApp(state, appId) {\n\t\tlet app = state.apps.find(app => app.id === appId);\n\t\tlet version = app.update;\n\t\tapp.update = null;\n\t\tapp.version = version;\n\t\tstate.updateCount--;\n\n\t},\n\n\tresetApps(state) {\n\t\tstate.apps = [];\n\t},\n\treset(state) {\n\t\tstate.apps = [];\n\t\tstate.categories = [];\n\t\tstate.updateCount = 0;\n\t},\n\tstartLoading(state, id) {\n\t\tif (Array.isArray(id)) {\n\t\t\tid.forEach((_id) => {\n\t\t\t\tVue.set(state.loading, _id, true);\n\t\t\t})\n\t\t} else {\n\t\t\tVue.set(state.loading, id, true);\n\t\t}\n\t},\n\tstopLoading(state, id) {\n\t\tif (Array.isArray(id)) {\n\t\t\tid.forEach((_id) => {\n\t\t\t\tVue.set(state.loading, _id, false);\n\t\t\t})\n\t\t} else {\n\t\t\tVue.set(state.loading, id, false);\n\t\t}\n\t},\n};\n\nconst getters = {\n\tloading(state) {\n\t\treturn function(id) {\n\t\t\treturn state.loading[id];\n\t\t}\n\t},\n\tgetCategories(state) {\n\t\treturn state.categories;\n\t},\n\tgetAllApps(state) {\n\t\treturn state.apps;\n\t},\n\tgetUpdateCount(state) {\n\t\treturn state.updateCount;\n\t}\n};\n\nconst actions = {\n\n\tenableApp(context, { appId, groups }) {\n\t\tlet apps;\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId;\n\t\t} else {\n\t\t\tapps = [appId];\n\t\t}\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', apps);\n\t\t\tcontext.commit('startLoading', 'install');\n\t\t\treturn api.post(OC.generateUrl(`settings/apps/enable`), {appIds: apps, groups: groups})\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps);\n\t\t\t\t\tcontext.commit('stopLoading', 'install');\n\t\t\t\t\tapps.forEach(_appId => {\n\t\t\t\t\t\tcontext.commit('enableApp', {appId: _appId, groups: groups});\n\t\t\t\t\t});\n\n\t\t\t\t\t// check for server health\n\t\t\t\t\treturn api.get(OC.generateUrl('apps/files'))\n\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\tif (response.data.update_required) {\n\t\t\t\t\t\t\t\tOC.dialogs.info(\n\t\t\t\t\t\t\t\t\tt(\n\t\t\t\t\t\t\t\t\t\t'settings',\n\t\t\t\t\t\t\t\t\t\t'The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds.'\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\tt('settings','App update'),\n\t\t\t\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\t\t\t\twindow.location.reload();\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\t\t\tlocation.reload();\n\t\t\t\t\t\t\t\t}, 5000);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch((error) => {\n\t\t\t\t\t\t\tif (!Array.isArray(appId)) {\n\t\t\t\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\t\t\t\terror: t('settings', 'Error: This app can not be enabled because it makes the server unstable')\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps);\n\t\t\t\t\tcontext.commit('stopLoading', 'install');\n\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\terror: error.response.data.data.message\n\t\t\t\t\t});\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error});\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }));\n\t},\n\tforceEnableApp(context, { appId, groups }) {\n\t\tlet apps;\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId;\n\t\t} else {\n\t\t\tapps = [appId];\n\t\t}\n\t\treturn api.requireAdmin().then(() => {\n\t\t\tcontext.commit('startLoading', apps);\n\t\t\tcontext.commit('startLoading', 'install');\n\t\t\treturn api.post(OC.generateUrl(`settings/apps/force`), {appId})\n\t\t\t\t.then((response) => {\n\t\t\t\t\t// TODO: find a cleaner solution\n\t\t\t\t\tlocation.reload();\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps);\n\t\t\t\t\tcontext.commit('stopLoading', 'install');\n\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\terror: error.response.data.data.message\n\t\t\t\t\t});\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error});\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }));\n\t},\n\tdisableApp(context, { appId }) {\n\t\tlet apps;\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId;\n\t\t} else {\n\t\t\tapps = [appId];\n\t\t}\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', apps);\n\t\t\treturn api.post(OC.generateUrl(`settings/apps/disable`), {appIds: apps})\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps);\n\t\t\t\t\tapps.forEach(_appId => {\n\t\t\t\t\t\tcontext.commit('disableApp', _appId);\n\t\t\t\t\t});\n\t\t\t\t\treturn true;\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps);\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }));\n\t},\n\tuninstallApp(context, { appId }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', appId);\n\t\t\treturn api.get(OC.generateUrl(`settings/apps/uninstall/${appId}`))\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId);\n\t\t\t\t\tcontext.commit('uninstallApp', appId);\n\t\t\t\t\treturn true;\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId);\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }));\n\t},\n\n\tupdateApp(context, { appId }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', appId);\n\t\t\tcontext.commit('startLoading', 'install');\n\t\t\treturn api.get(OC.generateUrl(`settings/apps/update/${appId}`))\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', 'install');\n\t\t\t\t\tcontext.commit('stopLoading', appId);\n\t\t\t\t\tcontext.commit('updateApp', appId);\n\t\t\t\t\treturn true;\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId);\n\t\t\t\t\tcontext.commit('stopLoading', 'install');\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }));\n\t},\n\n\tgetAllApps(context) {\n\t\tcontext.commit('startLoading', 'list');\n\t\treturn api.get(OC.generateUrl(`settings/apps/list`))\n\t\t\t.then((response) => {\n\t\t\t\tcontext.commit('setAllApps', response.data.apps);\n\t\t\t\tcontext.commit('stopLoading', 'list');\n\t\t\t\treturn true;\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\tgetCategories(context) {\n\t\tcontext.commit('startLoading', 'categories');\n\t\treturn api.get(OC.generateUrl('settings/apps/categories'))\n\t\t\t.then((response) => {\n\t\t\t\tif (response.data.length > 0) {\n\t\t\t\t\tcontext.commit('appendCategories', response.data);\n\t\t\t\t\tcontext.commit('stopLoading', 'categories');\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error));\n\t},\n\n};\n\nexport default { state, mutations, getters, actions };","/*\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport api from './api';\n\nconst state = {\n\tserverData: {}\n};\nconst mutations = {\n\tsetServerData(state, data) {\n\t\tstate.serverData = data;\n\t}\n};\nconst getters = {\n\tgetServerData(state) {\n\t\treturn state.serverData;\n\t}\n};\nconst actions = {};\n\nexport default {state, mutations, getters, actions};\n","/*\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport api from './api';\n\nconst state = {};\nconst mutations = {};\nconst getters = {};\nconst actions = {\n\t/**\n * Set application config in database\n * \n\t * @param {Object} context\n * @param {Object} options\n\t * @param {string} options.app Application name\n\t * @param {boolean} options.key Config key\n\t * @param {boolean} options.value Value to set\n\t * @returns{Promise}\n\t */\n\tsetAppConfig(context, {app, key, value}) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(OC.linkToOCS(`apps/provisioning_api/api/v1/config/apps/${app}/${key}`, 2), {value: value})\n\t\t\t\t.catch((error) => {throw error;});\n\t\t}).catch((error) => context.commit('API_FAILURE', { app, key, value, error }));;\n }\n};\n\nexport default {state, mutations, getters, actions};\n","/*\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue';\nimport Vuex from 'vuex';\nimport users from './users';\nimport apps from './apps';\nimport settings from './settings';\nimport oc from './oc';\n\nVue.use(Vuex)\n\nconst debug = process.env.NODE_ENV !== 'production';\n\nconst mutations = {\n\tAPI_FAILURE(state, error) {\n\t\ttry {\n\t\t\tlet message = error.error.response.data.ocs.meta.message;\n\t\t\tOC.Notification.showHtml(t('settings','An error occured during the request. Unable to proceed.')+'<br>'+message, {timeout: 7});\n\t\t} catch(e) {\n\t\t\tOC.Notification.showTemporary(t('settings','An error occured during the request. Unable to proceed.'));\n\t\t}\n\t\tconsole.log(state, error);\n\t}\n};\n\nexport default new Vuex.Store({\n\tmodules: {\n\t\tusers,\n\t\tapps,\n\t\tsettings,\n\t\toc\n\t},\n\tstrict: debug,\n\n\tmutations\n});\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue';\nimport VTooltip from 'v-tooltip';\nimport { sync } from 'vuex-router-sync';\n\nimport App from './App.vue';\nimport router from './router';\nimport store from './store';\n\nVue.use(VTooltip, { defaultHtml: false });\n\nsync(store, router);\n\n// CSP config for webpack dynamic chunk loading\n// eslint-disable-next-line\n__webpack_nonce__ = btoa(OC.requestToken)\n\n// Correct the root of the app for chunk loading\n// OC.linkTo matches the apps folders\n// OC.generateUrl ensure the index.php (or not)\n// eslint-disable-next-line\n__webpack_public_path__ = OC.linkTo('settings', 'js/')\n\n// bind to window\nVue.prototype.t = t;\nVue.prototype.OC = OC;\nVue.prototype.OCA = OCA;\nVue.prototype.oc_userconfig = oc_userconfig;\n\nconst app = new Vue({\n\trouter,\n\tstore,\n\trender: h => h(App)\n}).$mount('#content');\n\nexport { app, router, store };\n"],"sourceRoot":""} \ No newline at end of file diff --git a/apps/settings/js/vue-settings-personal-security.js b/apps/settings/js/vue-settings-personal-security.js new file mode 100644 index 00000000000..e401f345c89 --- /dev/null +++ b/apps/settings/js/vue-settings-personal-security.js @@ -0,0 +1,908 @@ +!function(t){var e={};function n(i){if(e[i])return e[i].exports;var r=e[i]={i:i,l:!1,exports:{}};return t[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)n.d(i,r,function(e){return t[e]}.bind(null,r));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="/js/",n(n.s=62)}([,function(t,e,n){"use strict";var i=n(7),r=n(26),o=Object.prototype.toString;function a(t){return"[object Array]"===o.call(t)}function s(t){return null!==t&&"object"==typeof t}function c(t){return"[object Function]"===o.call(t)}function l(t,e){if(null!=t)if("object"!=typeof t&&(t=[t]),a(t))for(var n=0,i=t.length;n<i;n++)e.call(null,t[n],n,t);else for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.call(null,t[r],r,t)}t.exports={isArray:a,isArrayBuffer:function(t){return"[object ArrayBuffer]"===o.call(t)},isBuffer:r,isFormData:function(t){return"undefined"!=typeof FormData&&t instanceof FormData},isArrayBufferView:function(t){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(t):t&&t.buffer&&t.buffer instanceof ArrayBuffer},isString:function(t){return"string"==typeof t},isNumber:function(t){return"number"==typeof t},isObject:s,isUndefined:function(t){return void 0===t},isDate:function(t){return"[object Date]"===o.call(t)},isFile:function(t){return"[object File]"===o.call(t)},isBlob:function(t){return"[object Blob]"===o.call(t)},isFunction:c,isStream:function(t){return s(t)&&c(t.pipe)},isURLSearchParams:function(t){return"undefined"!=typeof URLSearchParams&&t instanceof URLSearchParams},isStandardBrowserEnv:function(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)},forEach:l,merge:function t(){var e={};function n(n,i){"object"==typeof e[i]&&"object"==typeof n?e[i]=t(e[i],n):e[i]=n}for(var i=0,r=arguments.length;i<r;i++)l(arguments[i],n);return e},deepMerge:function t(){var e={};function n(n,i){"object"==typeof e[i]&&"object"==typeof n?e[i]=t(e[i],n):e[i]="object"==typeof n?t({},n):n}for(var i=0,r=arguments.length;i<r;i++)l(arguments[i],n);return e},extend:function(t,e,n){return l(e,(function(e,r){t[r]=n&&"function"==typeof e?i(e,n):e})),t},trim:function(t){return t.replace(/^\s*/,"").replace(/\s*$/,"")}}},function(t,e,n){"use strict";n.r(e),function(t,n){ +/*! + * Vue.js v2.6.10 + * (c) 2014-2019 Evan You + * Released under the MIT License. + */ +var i=Object.freeze({});function r(t){return null==t}function o(t){return null!=t}function a(t){return!0===t}function s(t){return"string"==typeof t||"number"==typeof t||"symbol"==typeof t||"boolean"==typeof t}function c(t){return null!==t&&"object"==typeof t}var l=Object.prototype.toString;function u(t){return"[object Object]"===l.call(t)}function d(t){return"[object RegExp]"===l.call(t)}function p(t){var e=parseFloat(String(t));return e>=0&&Math.floor(e)===e&&isFinite(t)}function f(t){return o(t)&&"function"==typeof t.then&&"function"==typeof t.catch}function h(t){return null==t?"":Array.isArray(t)||u(t)&&t.toString===l?JSON.stringify(t,null,2):String(t)}function v(t){var e=parseFloat(t);return isNaN(e)?t:e}function m(t,e){for(var n=Object.create(null),i=t.split(","),r=0;r<i.length;r++)n[i[r]]=!0;return e?function(t){return n[t.toLowerCase()]}:function(t){return n[t]}}m("slot,component",!0);var A=m("key,ref,slot,slot-scope,is");function g(t,e){if(t.length){var n=t.indexOf(e);if(n>-1)return t.splice(n,1)}}var b=Object.prototype.hasOwnProperty;function y(t,e){return b.call(t,e)}function _(t){var e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}var w=/-(\w)/g,x=_((function(t){return t.replace(w,(function(t,e){return e?e.toUpperCase():""}))})),C=_((function(t){return t.charAt(0).toUpperCase()+t.slice(1)})),k=/\B([A-Z])/g,T=_((function(t){return t.replace(k,"-$1").toLowerCase()}));var E=Function.prototype.bind?function(t,e){return t.bind(e)}:function(t,e){function n(n){var i=arguments.length;return i?i>1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n};function O(t,e){e=e||0;for(var n=t.length-e,i=new Array(n);n--;)i[n]=t[n+e];return i}function S(t,e){for(var n in e)t[n]=e[n];return t}function M(t){for(var e={},n=0;n<t.length;n++)t[n]&&S(e,t[n]);return e}function D(t,e,n){}var N=function(t,e,n){return!1},I=function(t){return t};function B(t,e){if(t===e)return!0;var n=c(t),i=c(e);if(!n||!i)return!n&&!i&&String(t)===String(e);try{var r=Array.isArray(t),o=Array.isArray(e);if(r&&o)return t.length===e.length&&t.every((function(t,n){return B(t,e[n])}));if(t instanceof Date&&e instanceof Date)return t.getTime()===e.getTime();if(r||o)return!1;var a=Object.keys(t),s=Object.keys(e);return a.length===s.length&&a.every((function(n){return B(t[n],e[n])}))}catch(t){return!1}}function P(t,e){for(var n=0;n<t.length;n++)if(B(t[n],e))return n;return-1}function L(t){var e=!1;return function(){e||(e=!0,t.apply(this,arguments))}}var j="data-server-rendered",$=["component","directive","filter"],R=["beforeCreate","created","beforeMount","mounted","beforeUpdate","updated","beforeDestroy","destroyed","activated","deactivated","errorCaptured","serverPrefetch"],F={optionMergeStrategies:Object.create(null),silent:!1,productionTip:!1,devtools:!1,performance:!1,errorHandler:null,warnHandler:null,ignoredElements:[],keyCodes:Object.create(null),isReservedTag:N,isReservedAttr:N,isUnknownElement:N,getTagNamespace:D,parsePlatformTagName:I,mustUseProp:N,async:!0,_lifecycleHooks:R},H=/a-zA-Z\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C-\u200D\u203F-\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD/;function z(t,e,n,i){Object.defineProperty(t,e,{value:n,enumerable:!!i,writable:!0,configurable:!0})}var U=new RegExp("[^"+H.source+".$_\\d]");var Y,V="__proto__"in{},Q="undefined"!=typeof window,G="undefined"!=typeof WXEnvironment&&!!WXEnvironment.platform,W=G&&WXEnvironment.platform.toLowerCase(),q=Q&&window.navigator.userAgent.toLowerCase(),X=q&&/msie|trident/.test(q),Z=q&&q.indexOf("msie 9.0")>0,K=q&&q.indexOf("edge/")>0,J=(q&&q.indexOf("android"),q&&/iphone|ipad|ipod|ios/.test(q)||"ios"===W),tt=(q&&/chrome\/\d+/.test(q),q&&/phantomjs/.test(q),q&&q.match(/firefox\/(\d+)/)),et={}.watch,nt=!1;if(Q)try{var it={};Object.defineProperty(it,"passive",{get:function(){nt=!0}}),window.addEventListener("test-passive",null,it)}catch(t){}var rt=function(){return void 0===Y&&(Y=!Q&&!G&&void 0!==t&&(t.process&&"server"===t.process.env.VUE_ENV)),Y},ot=Q&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function at(t){return"function"==typeof t&&/native code/.test(t.toString())}var st,ct="undefined"!=typeof Symbol&&at(Symbol)&&"undefined"!=typeof Reflect&&at(Reflect.ownKeys);st="undefined"!=typeof Set&&at(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var lt=D,ut=0,dt=function(){this.id=ut++,this.subs=[]};dt.prototype.addSub=function(t){this.subs.push(t)},dt.prototype.removeSub=function(t){g(this.subs,t)},dt.prototype.depend=function(){dt.target&&dt.target.addDep(this)},dt.prototype.notify=function(){var t=this.subs.slice();for(var e=0,n=t.length;e<n;e++)t[e].update()},dt.target=null;var pt=[];function ft(t){pt.push(t),dt.target=t}function ht(){pt.pop(),dt.target=pt[pt.length-1]}var vt=function(t,e,n,i,r,o,a,s){this.tag=t,this.data=e,this.children=n,this.text=i,this.elm=r,this.ns=void 0,this.context=o,this.fnContext=void 0,this.fnOptions=void 0,this.fnScopeId=void 0,this.key=e&&e.key,this.componentOptions=a,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1,this.asyncFactory=s,this.asyncMeta=void 0,this.isAsyncPlaceholder=!1},mt={child:{configurable:!0}};mt.child.get=function(){return this.componentInstance},Object.defineProperties(vt.prototype,mt);var At=function(t){void 0===t&&(t="");var e=new vt;return e.text=t,e.isComment=!0,e};function gt(t){return new vt(void 0,void 0,void 0,String(t))}function bt(t){var e=new vt(t.tag,t.data,t.children&&t.children.slice(),t.text,t.elm,t.context,t.componentOptions,t.asyncFactory);return e.ns=t.ns,e.isStatic=t.isStatic,e.key=t.key,e.isComment=t.isComment,e.fnContext=t.fnContext,e.fnOptions=t.fnOptions,e.fnScopeId=t.fnScopeId,e.asyncMeta=t.asyncMeta,e.isCloned=!0,e}var yt=Array.prototype,_t=Object.create(yt);["push","pop","shift","unshift","splice","sort","reverse"].forEach((function(t){var e=yt[t];z(_t,t,(function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];var r,o=e.apply(this,n),a=this.__ob__;switch(t){case"push":case"unshift":r=n;break;case"splice":r=n.slice(2)}return r&&a.observeArray(r),a.dep.notify(),o}))}));var wt=Object.getOwnPropertyNames(_t),xt=!0;function Ct(t){xt=t}var kt=function(t){this.value=t,this.dep=new dt,this.vmCount=0,z(t,"__ob__",this),Array.isArray(t)?(V?function(t,e){t.__proto__=e}(t,_t):function(t,e,n){for(var i=0,r=n.length;i<r;i++){var o=n[i];z(t,o,e[o])}}(t,_t,wt),this.observeArray(t)):this.walk(t)};function Tt(t,e){var n;if(c(t)&&!(t instanceof vt))return y(t,"__ob__")&&t.__ob__ instanceof kt?n=t.__ob__:xt&&!rt()&&(Array.isArray(t)||u(t))&&Object.isExtensible(t)&&!t._isVue&&(n=new kt(t)),e&&n&&n.vmCount++,n}function Et(t,e,n,i,r){var o=new dt,a=Object.getOwnPropertyDescriptor(t,e);if(!a||!1!==a.configurable){var s=a&&a.get,c=a&&a.set;s&&!c||2!==arguments.length||(n=t[e]);var l=!r&&Tt(n);Object.defineProperty(t,e,{enumerable:!0,configurable:!0,get:function(){var e=s?s.call(t):n;return dt.target&&(o.depend(),l&&(l.dep.depend(),Array.isArray(e)&&function t(e){for(var n=void 0,i=0,r=e.length;i<r;i++)(n=e[i])&&n.__ob__&&n.__ob__.dep.depend(),Array.isArray(n)&&t(n)}(e))),e},set:function(e){var i=s?s.call(t):n;e===i||e!=e&&i!=i||s&&!c||(c?c.call(t,e):n=e,l=!r&&Tt(e),o.notify())}})}}function Ot(t,e,n){if(Array.isArray(t)&&p(e))return t.length=Math.max(t.length,e),t.splice(e,1,n),n;if(e in t&&!(e in Object.prototype))return t[e]=n,n;var i=t.__ob__;return t._isVue||i&&i.vmCount?n:i?(Et(i.value,e,n),i.dep.notify(),n):(t[e]=n,n)}function St(t,e){if(Array.isArray(t)&&p(e))t.splice(e,1);else{var n=t.__ob__;t._isVue||n&&n.vmCount||y(t,e)&&(delete t[e],n&&n.dep.notify())}}kt.prototype.walk=function(t){for(var e=Object.keys(t),n=0;n<e.length;n++)Et(t,e[n])},kt.prototype.observeArray=function(t){for(var e=0,n=t.length;e<n;e++)Tt(t[e])};var Mt=F.optionMergeStrategies;function Dt(t,e){if(!e)return t;for(var n,i,r,o=ct?Reflect.ownKeys(e):Object.keys(e),a=0;a<o.length;a++)"__ob__"!==(n=o[a])&&(i=t[n],r=e[n],y(t,n)?i!==r&&u(i)&&u(r)&&Dt(i,r):Ot(t,n,r));return t}function Nt(t,e,n){return n?function(){var i="function"==typeof e?e.call(n,n):e,r="function"==typeof t?t.call(n,n):t;return i?Dt(i,r):r}:e?t?function(){return Dt("function"==typeof e?e.call(this,this):e,"function"==typeof t?t.call(this,this):t)}:e:t}function It(t,e){var n=e?t?t.concat(e):Array.isArray(e)?e:[e]:t;return n?function(t){for(var e=[],n=0;n<t.length;n++)-1===e.indexOf(t[n])&&e.push(t[n]);return e}(n):n}function Bt(t,e,n,i){var r=Object.create(t||null);return e?S(r,e):r}Mt.data=function(t,e,n){return n?Nt(t,e,n):e&&"function"!=typeof e?t:Nt(t,e)},R.forEach((function(t){Mt[t]=It})),$.forEach((function(t){Mt[t+"s"]=Bt})),Mt.watch=function(t,e,n,i){if(t===et&&(t=void 0),e===et&&(e=void 0),!e)return Object.create(t||null);if(!t)return e;var r={};for(var o in S(r,t),e){var a=r[o],s=e[o];a&&!Array.isArray(a)&&(a=[a]),r[o]=a?a.concat(s):Array.isArray(s)?s:[s]}return r},Mt.props=Mt.methods=Mt.inject=Mt.computed=function(t,e,n,i){if(!t)return e;var r=Object.create(null);return S(r,t),e&&S(r,e),r},Mt.provide=Nt;var Pt=function(t,e){return void 0===e?t:e};function Lt(t,e,n){if("function"==typeof e&&(e=e.options),function(t,e){var n=t.props;if(n){var i,r,o={};if(Array.isArray(n))for(i=n.length;i--;)"string"==typeof(r=n[i])&&(o[x(r)]={type:null});else if(u(n))for(var a in n)r=n[a],o[x(a)]=u(r)?r:{type:r};else 0;t.props=o}}(e),function(t,e){var n=t.inject;if(n){var i=t.inject={};if(Array.isArray(n))for(var r=0;r<n.length;r++)i[n[r]]={from:n[r]};else if(u(n))for(var o in n){var a=n[o];i[o]=u(a)?S({from:o},a):{from:a}}else 0}}(e),function(t){var e=t.directives;if(e)for(var n in e){var i=e[n];"function"==typeof i&&(e[n]={bind:i,update:i})}}(e),!e._base&&(e.extends&&(t=Lt(t,e.extends,n)),e.mixins))for(var i=0,r=e.mixins.length;i<r;i++)t=Lt(t,e.mixins[i],n);var o,a={};for(o in t)s(o);for(o in e)y(t,o)||s(o);function s(i){var r=Mt[i]||Pt;a[i]=r(t[i],e[i],n,i)}return a}function jt(t,e,n,i){if("string"==typeof n){var r=t[e];if(y(r,n))return r[n];var o=x(n);if(y(r,o))return r[o];var a=C(o);return y(r,a)?r[a]:r[n]||r[o]||r[a]}}function $t(t,e,n,i){var r=e[t],o=!y(n,t),a=n[t],s=Ht(Boolean,r.type);if(s>-1)if(o&&!y(r,"default"))a=!1;else if(""===a||a===T(t)){var c=Ht(String,r.type);(c<0||s<c)&&(a=!0)}if(void 0===a){a=function(t,e,n){if(!y(e,"default"))return;var i=e.default;0;if(t&&t.$options.propsData&&void 0===t.$options.propsData[n]&&void 0!==t._props[n])return t._props[n];return"function"==typeof i&&"Function"!==Rt(e.type)?i.call(t):i}(i,r,t);var l=xt;Ct(!0),Tt(a),Ct(l)}return a}function Rt(t){var e=t&&t.toString().match(/^\s*function (\w+)/);return e?e[1]:""}function Ft(t,e){return Rt(t)===Rt(e)}function Ht(t,e){if(!Array.isArray(e))return Ft(e,t)?0:-1;for(var n=0,i=e.length;n<i;n++)if(Ft(e[n],t))return n;return-1}function zt(t,e,n){ft();try{if(e)for(var i=e;i=i.$parent;){var r=i.$options.errorCaptured;if(r)for(var o=0;o<r.length;o++)try{if(!1===r[o].call(i,t,e,n))return}catch(t){Yt(t,i,"errorCaptured hook")}}Yt(t,e,n)}finally{ht()}}function Ut(t,e,n,i,r){var o;try{(o=n?t.apply(e,n):t.call(e))&&!o._isVue&&f(o)&&!o._handled&&(o.catch((function(t){return zt(t,i,r+" (Promise/async)")})),o._handled=!0)}catch(t){zt(t,i,r)}return o}function Yt(t,e,n){if(F.errorHandler)try{return F.errorHandler.call(null,t,e,n)}catch(e){e!==t&&Vt(e,null,"config.errorHandler")}Vt(t,e,n)}function Vt(t,e,n){if(!Q&&!G||"undefined"==typeof console)throw t;console.error(t)}var Qt,Gt=!1,Wt=[],qt=!1;function Xt(){qt=!1;var t=Wt.slice(0);Wt.length=0;for(var e=0;e<t.length;e++)t[e]()}if("undefined"!=typeof Promise&&at(Promise)){var Zt=Promise.resolve();Qt=function(){Zt.then(Xt),J&&setTimeout(D)},Gt=!0}else if(X||"undefined"==typeof MutationObserver||!at(MutationObserver)&&"[object MutationObserverConstructor]"!==MutationObserver.toString())Qt=void 0!==n&&at(n)?function(){n(Xt)}:function(){setTimeout(Xt,0)};else{var Kt=1,Jt=new MutationObserver(Xt),te=document.createTextNode(String(Kt));Jt.observe(te,{characterData:!0}),Qt=function(){Kt=(Kt+1)%2,te.data=String(Kt)},Gt=!0}function ee(t,e){var n;if(Wt.push((function(){if(t)try{t.call(e)}catch(t){zt(t,e,"nextTick")}else n&&n(e)})),qt||(qt=!0,Qt()),!t&&"undefined"!=typeof Promise)return new Promise((function(t){n=t}))}var ne=new st;function ie(t){!function t(e,n){var i,r;var o=Array.isArray(e);if(!o&&!c(e)||Object.isFrozen(e)||e instanceof vt)return;if(e.__ob__){var a=e.__ob__.dep.id;if(n.has(a))return;n.add(a)}if(o)for(i=e.length;i--;)t(e[i],n);else for(r=Object.keys(e),i=r.length;i--;)t(e[r[i]],n)}(t,ne),ne.clear()}var re=_((function(t){var e="&"===t.charAt(0),n="~"===(t=e?t.slice(1):t).charAt(0),i="!"===(t=n?t.slice(1):t).charAt(0);return{name:t=i?t.slice(1):t,once:n,capture:i,passive:e}}));function oe(t,e){function n(){var t=arguments,i=n.fns;if(!Array.isArray(i))return Ut(i,null,arguments,e,"v-on handler");for(var r=i.slice(),o=0;o<r.length;o++)Ut(r[o],null,t,e,"v-on handler")}return n.fns=t,n}function ae(t,e,n,i,o,s){var c,l,u,d;for(c in t)l=t[c],u=e[c],d=re(c),r(l)||(r(u)?(r(l.fns)&&(l=t[c]=oe(l,s)),a(d.once)&&(l=t[c]=o(d.name,l,d.capture)),n(d.name,l,d.capture,d.passive,d.params)):l!==u&&(u.fns=l,t[c]=u));for(c in e)r(t[c])&&i((d=re(c)).name,e[c],d.capture)}function se(t,e,n){var i;t instanceof vt&&(t=t.data.hook||(t.data.hook={}));var s=t[e];function c(){n.apply(this,arguments),g(i.fns,c)}r(s)?i=oe([c]):o(s.fns)&&a(s.merged)?(i=s).fns.push(c):i=oe([s,c]),i.merged=!0,t[e]=i}function ce(t,e,n,i,r){if(o(e)){if(y(e,n))return t[n]=e[n],r||delete e[n],!0;if(y(e,i))return t[n]=e[i],r||delete e[i],!0}return!1}function le(t){return s(t)?[gt(t)]:Array.isArray(t)?function t(e,n){var i=[];var c,l,u,d;for(c=0;c<e.length;c++)r(l=e[c])||"boolean"==typeof l||(u=i.length-1,d=i[u],Array.isArray(l)?l.length>0&&(ue((l=t(l,(n||"")+"_"+c))[0])&&ue(d)&&(i[u]=gt(d.text+l[0].text),l.shift()),i.push.apply(i,l)):s(l)?ue(d)?i[u]=gt(d.text+l):""!==l&&i.push(gt(l)):ue(l)&&ue(d)?i[u]=gt(d.text+l.text):(a(e._isVList)&&o(l.tag)&&r(l.key)&&o(n)&&(l.key="__vlist"+n+"_"+c+"__"),i.push(l)));return i}(t):void 0}function ue(t){return o(t)&&o(t.text)&&!1===t.isComment}function de(t,e){if(t){for(var n=Object.create(null),i=ct?Reflect.ownKeys(t):Object.keys(t),r=0;r<i.length;r++){var o=i[r];if("__ob__"!==o){for(var a=t[o].from,s=e;s;){if(s._provided&&y(s._provided,a)){n[o]=s._provided[a];break}s=s.$parent}if(!s)if("default"in t[o]){var c=t[o].default;n[o]="function"==typeof c?c.call(e):c}else 0}}return n}}function pe(t,e){if(!t||!t.length)return{};for(var n={},i=0,r=t.length;i<r;i++){var o=t[i],a=o.data;if(a&&a.attrs&&a.attrs.slot&&delete a.attrs.slot,o.context!==e&&o.fnContext!==e||!a||null==a.slot)(n.default||(n.default=[])).push(o);else{var s=a.slot,c=n[s]||(n[s]=[]);"template"===o.tag?c.push.apply(c,o.children||[]):c.push(o)}}for(var l in n)n[l].every(fe)&&delete n[l];return n}function fe(t){return t.isComment&&!t.asyncFactory||" "===t.text}function he(t,e,n){var r,o=Object.keys(e).length>0,a=t?!!t.$stable:!o,s=t&&t.$key;if(t){if(t._normalized)return t._normalized;if(a&&n&&n!==i&&s===n.$key&&!o&&!n.$hasNormal)return n;for(var c in r={},t)t[c]&&"$"!==c[0]&&(r[c]=ve(e,c,t[c]))}else r={};for(var l in e)l in r||(r[l]=me(e,l));return t&&Object.isExtensible(t)&&(t._normalized=r),z(r,"$stable",a),z(r,"$key",s),z(r,"$hasNormal",o),r}function ve(t,e,n){var i=function(){var t=arguments.length?n.apply(null,arguments):n({});return(t=t&&"object"==typeof t&&!Array.isArray(t)?[t]:le(t))&&(0===t.length||1===t.length&&t[0].isComment)?void 0:t};return n.proxy&&Object.defineProperty(t,e,{get:i,enumerable:!0,configurable:!0}),i}function me(t,e){return function(){return t[e]}}function Ae(t,e){var n,i,r,a,s;if(Array.isArray(t)||"string"==typeof t)for(n=new Array(t.length),i=0,r=t.length;i<r;i++)n[i]=e(t[i],i);else if("number"==typeof t)for(n=new Array(t),i=0;i<t;i++)n[i]=e(i+1,i);else if(c(t))if(ct&&t[Symbol.iterator]){n=[];for(var l=t[Symbol.iterator](),u=l.next();!u.done;)n.push(e(u.value,n.length)),u=l.next()}else for(a=Object.keys(t),n=new Array(a.length),i=0,r=a.length;i<r;i++)s=a[i],n[i]=e(t[s],s,i);return o(n)||(n=[]),n._isVList=!0,n}function ge(t,e,n,i){var r,o=this.$scopedSlots[t];o?(n=n||{},i&&(n=S(S({},i),n)),r=o(n)||e):r=this.$slots[t]||e;var a=n&&n.slot;return a?this.$createElement("template",{slot:a},r):r}function be(t){return jt(this.$options,"filters",t)||I}function ye(t,e){return Array.isArray(t)?-1===t.indexOf(e):t!==e}function _e(t,e,n,i,r){var o=F.keyCodes[e]||n;return r&&i&&!F.keyCodes[e]?ye(r,i):o?ye(o,t):i?T(i)!==e:void 0}function we(t,e,n,i,r){if(n)if(c(n)){var o;Array.isArray(n)&&(n=M(n));var a=function(a){if("class"===a||"style"===a||A(a))o=t;else{var s=t.attrs&&t.attrs.type;o=i||F.mustUseProp(e,s,a)?t.domProps||(t.domProps={}):t.attrs||(t.attrs={})}var c=x(a),l=T(a);c in o||l in o||(o[a]=n[a],r&&((t.on||(t.on={}))["update:"+a]=function(t){n[a]=t}))};for(var s in n)a(s)}else;return t}function xe(t,e){var n=this._staticTrees||(this._staticTrees=[]),i=n[t];return i&&!e?i:(ke(i=n[t]=this.$options.staticRenderFns[t].call(this._renderProxy,null,this),"__static__"+t,!1),i)}function Ce(t,e,n){return ke(t,"__once__"+e+(n?"_"+n:""),!0),t}function ke(t,e,n){if(Array.isArray(t))for(var i=0;i<t.length;i++)t[i]&&"string"!=typeof t[i]&&Te(t[i],e+"_"+i,n);else Te(t,e,n)}function Te(t,e,n){t.isStatic=!0,t.key=e,t.isOnce=n}function Ee(t,e){if(e)if(u(e)){var n=t.on=t.on?S({},t.on):{};for(var i in e){var r=n[i],o=e[i];n[i]=r?[].concat(r,o):o}}else;return t}function Oe(t,e,n,i){e=e||{$stable:!n};for(var r=0;r<t.length;r++){var o=t[r];Array.isArray(o)?Oe(o,e,n):o&&(o.proxy&&(o.fn.proxy=!0),e[o.key]=o.fn)}return i&&(e.$key=i),e}function Se(t,e){for(var n=0;n<e.length;n+=2){var i=e[n];"string"==typeof i&&i&&(t[e[n]]=e[n+1])}return t}function Me(t,e){return"string"==typeof t?e+t:t}function De(t){t._o=Ce,t._n=v,t._s=h,t._l=Ae,t._t=ge,t._q=B,t._i=P,t._m=xe,t._f=be,t._k=_e,t._b=we,t._v=gt,t._e=At,t._u=Oe,t._g=Ee,t._d=Se,t._p=Me}function Ne(t,e,n,r,o){var s,c=this,l=o.options;y(r,"_uid")?(s=Object.create(r))._original=r:(s=r,r=r._original);var u=a(l._compiled),d=!u;this.data=t,this.props=e,this.children=n,this.parent=r,this.listeners=t.on||i,this.injections=de(l.inject,r),this.slots=function(){return c.$slots||he(t.scopedSlots,c.$slots=pe(n,r)),c.$slots},Object.defineProperty(this,"scopedSlots",{enumerable:!0,get:function(){return he(t.scopedSlots,this.slots())}}),u&&(this.$options=l,this.$slots=this.slots(),this.$scopedSlots=he(t.scopedSlots,this.$slots)),l._scopeId?this._c=function(t,e,n,i){var o=He(s,t,e,n,i,d);return o&&!Array.isArray(o)&&(o.fnScopeId=l._scopeId,o.fnContext=r),o}:this._c=function(t,e,n,i){return He(s,t,e,n,i,d)}}function Ie(t,e,n,i,r){var o=bt(t);return o.fnContext=n,o.fnOptions=i,e.slot&&((o.data||(o.data={})).slot=e.slot),o}function Be(t,e){for(var n in e)t[x(n)]=e[n]}De(Ne.prototype);var Pe={init:function(t,e){if(t.componentInstance&&!t.componentInstance._isDestroyed&&t.data.keepAlive){var n=t;Pe.prepatch(n,n)}else{(t.componentInstance=function(t,e){var n={_isComponent:!0,_parentVnode:t,parent:e},i=t.data.inlineTemplate;o(i)&&(n.render=i.render,n.staticRenderFns=i.staticRenderFns);return new t.componentOptions.Ctor(n)}(t,Ze)).$mount(e?t.elm:void 0,e)}},prepatch:function(t,e){var n=e.componentOptions;!function(t,e,n,r,o){0;var a=r.data.scopedSlots,s=t.$scopedSlots,c=!!(a&&!a.$stable||s!==i&&!s.$stable||a&&t.$scopedSlots.$key!==a.$key),l=!!(o||t.$options._renderChildren||c);t.$options._parentVnode=r,t.$vnode=r,t._vnode&&(t._vnode.parent=r);if(t.$options._renderChildren=o,t.$attrs=r.data.attrs||i,t.$listeners=n||i,e&&t.$options.props){Ct(!1);for(var u=t._props,d=t.$options._propKeys||[],p=0;p<d.length;p++){var f=d[p],h=t.$options.props;u[f]=$t(f,h,e,t)}Ct(!0),t.$options.propsData=e}n=n||i;var v=t.$options._parentListeners;t.$options._parentListeners=n,Xe(t,n,v),l&&(t.$slots=pe(o,r.context),t.$forceUpdate());0}(e.componentInstance=t.componentInstance,n.propsData,n.listeners,e,n.children)},insert:function(t){var e,n=t.context,i=t.componentInstance;i._isMounted||(i._isMounted=!0,en(i,"mounted")),t.data.keepAlive&&(n._isMounted?((e=i)._inactive=!1,rn.push(e)):tn(i,!0))},destroy:function(t){var e=t.componentInstance;e._isDestroyed||(t.data.keepAlive?function t(e,n){if(n&&(e._directInactive=!0,Je(e)))return;if(!e._inactive){e._inactive=!0;for(var i=0;i<e.$children.length;i++)t(e.$children[i]);en(e,"deactivated")}}(e,!0):e.$destroy())}},Le=Object.keys(Pe);function je(t,e,n,s,l){if(!r(t)){var u=n.$options._base;if(c(t)&&(t=u.extend(t)),"function"==typeof t){var d;if(r(t.cid)&&void 0===(t=function(t,e){if(a(t.error)&&o(t.errorComp))return t.errorComp;if(o(t.resolved))return t.resolved;var n=Ue;n&&o(t.owners)&&-1===t.owners.indexOf(n)&&t.owners.push(n);if(a(t.loading)&&o(t.loadingComp))return t.loadingComp;if(n&&!o(t.owners)){var i=t.owners=[n],s=!0,l=null,u=null;n.$on("hook:destroyed",(function(){return g(i,n)}));var d=function(t){for(var e=0,n=i.length;e<n;e++)i[e].$forceUpdate();t&&(i.length=0,null!==l&&(clearTimeout(l),l=null),null!==u&&(clearTimeout(u),u=null))},p=L((function(n){t.resolved=Ye(n,e),s?i.length=0:d(!0)})),h=L((function(e){o(t.errorComp)&&(t.error=!0,d(!0))})),v=t(p,h);return c(v)&&(f(v)?r(t.resolved)&&v.then(p,h):f(v.component)&&(v.component.then(p,h),o(v.error)&&(t.errorComp=Ye(v.error,e)),o(v.loading)&&(t.loadingComp=Ye(v.loading,e),0===v.delay?t.loading=!0:l=setTimeout((function(){l=null,r(t.resolved)&&r(t.error)&&(t.loading=!0,d(!1))}),v.delay||200)),o(v.timeout)&&(u=setTimeout((function(){u=null,r(t.resolved)&&h(null)}),v.timeout)))),s=!1,t.loading?t.loadingComp:t.resolved}}(d=t,u)))return function(t,e,n,i,r){var o=At();return o.asyncFactory=t,o.asyncMeta={data:e,context:n,children:i,tag:r},o}(d,e,n,s,l);e=e||{},Cn(t),o(e.model)&&function(t,e){var n=t.model&&t.model.prop||"value",i=t.model&&t.model.event||"input";(e.attrs||(e.attrs={}))[n]=e.model.value;var r=e.on||(e.on={}),a=r[i],s=e.model.callback;o(a)?(Array.isArray(a)?-1===a.indexOf(s):a!==s)&&(r[i]=[s].concat(a)):r[i]=s}(t.options,e);var p=function(t,e,n){var i=e.options.props;if(!r(i)){var a={},s=t.attrs,c=t.props;if(o(s)||o(c))for(var l in i){var u=T(l);ce(a,c,l,u,!0)||ce(a,s,l,u,!1)}return a}}(e,t);if(a(t.options.functional))return function(t,e,n,r,a){var s=t.options,c={},l=s.props;if(o(l))for(var u in l)c[u]=$t(u,l,e||i);else o(n.attrs)&&Be(c,n.attrs),o(n.props)&&Be(c,n.props);var d=new Ne(n,c,a,r,t),p=s.render.call(null,d._c,d);if(p instanceof vt)return Ie(p,n,d.parent,s,d);if(Array.isArray(p)){for(var f=le(p)||[],h=new Array(f.length),v=0;v<f.length;v++)h[v]=Ie(f[v],n,d.parent,s,d);return h}}(t,p,e,n,s);var h=e.on;if(e.on=e.nativeOn,a(t.options.abstract)){var v=e.slot;e={},v&&(e.slot=v)}!function(t){for(var e=t.hook||(t.hook={}),n=0;n<Le.length;n++){var i=Le[n],r=e[i],o=Pe[i];r===o||r&&r._merged||(e[i]=r?$e(o,r):o)}}(e);var m=t.options.name||l;return new vt("vue-component-"+t.cid+(m?"-"+m:""),e,void 0,void 0,void 0,n,{Ctor:t,propsData:p,listeners:h,tag:l,children:s},d)}}}function $e(t,e){var n=function(n,i){t(n,i),e(n,i)};return n._merged=!0,n}var Re=1,Fe=2;function He(t,e,n,i,l,u){return(Array.isArray(n)||s(n))&&(l=i,i=n,n=void 0),a(u)&&(l=Fe),function(t,e,n,i,s){if(o(n)&&o(n.__ob__))return At();o(n)&&o(n.is)&&(e=n.is);if(!e)return At();0;Array.isArray(i)&&"function"==typeof i[0]&&((n=n||{}).scopedSlots={default:i[0]},i.length=0);s===Fe?i=le(i):s===Re&&(i=function(t){for(var e=0;e<t.length;e++)if(Array.isArray(t[e]))return Array.prototype.concat.apply([],t);return t}(i));var l,u;if("string"==typeof e){var d;u=t.$vnode&&t.$vnode.ns||F.getTagNamespace(e),l=F.isReservedTag(e)?new vt(F.parsePlatformTagName(e),n,i,void 0,void 0,t):n&&n.pre||!o(d=jt(t.$options,"components",e))?new vt(e,n,i,void 0,void 0,t):je(d,n,t,i,e)}else l=je(e,n,t,i);return Array.isArray(l)?l:o(l)?(o(u)&&function t(e,n,i){e.ns=n;"foreignObject"===e.tag&&(n=void 0,i=!0);if(o(e.children))for(var s=0,c=e.children.length;s<c;s++){var l=e.children[s];o(l.tag)&&(r(l.ns)||a(i)&&"svg"!==l.tag)&&t(l,n,i)}}(l,u),o(n)&&function(t){c(t.style)&&ie(t.style);c(t.class)&&ie(t.class)}(n),l):At()}(t,e,n,i,l)}var ze,Ue=null;function Ye(t,e){return(t.__esModule||ct&&"Module"===t[Symbol.toStringTag])&&(t=t.default),c(t)?e.extend(t):t}function Ve(t){return t.isComment&&t.asyncFactory}function Qe(t){if(Array.isArray(t))for(var e=0;e<t.length;e++){var n=t[e];if(o(n)&&(o(n.componentOptions)||Ve(n)))return n}}function Ge(t,e){ze.$on(t,e)}function We(t,e){ze.$off(t,e)}function qe(t,e){var n=ze;return function i(){var r=e.apply(null,arguments);null!==r&&n.$off(t,i)}}function Xe(t,e,n){ze=t,ae(e,n||{},Ge,We,qe,t),ze=void 0}var Ze=null;function Ke(t){var e=Ze;return Ze=t,function(){Ze=e}}function Je(t){for(;t&&(t=t.$parent);)if(t._inactive)return!0;return!1}function tn(t,e){if(e){if(t._directInactive=!1,Je(t))return}else if(t._directInactive)return;if(t._inactive||null===t._inactive){t._inactive=!1;for(var n=0;n<t.$children.length;n++)tn(t.$children[n]);en(t,"activated")}}function en(t,e){ft();var n=t.$options[e],i=e+" hook";if(n)for(var r=0,o=n.length;r<o;r++)Ut(n[r],t,null,t,i);t._hasHookEvent&&t.$emit("hook:"+e),ht()}var nn=[],rn=[],on={},an=!1,sn=!1,cn=0;var ln=0,un=Date.now;if(Q&&!X){var dn=window.performance;dn&&"function"==typeof dn.now&&un()>document.createEvent("Event").timeStamp&&(un=function(){return dn.now()})}function pn(){var t,e;for(ln=un(),sn=!0,nn.sort((function(t,e){return t.id-e.id})),cn=0;cn<nn.length;cn++)(t=nn[cn]).before&&t.before(),e=t.id,on[e]=null,t.run();var n=rn.slice(),i=nn.slice();cn=nn.length=rn.length=0,on={},an=sn=!1,function(t){for(var e=0;e<t.length;e++)t[e]._inactive=!0,tn(t[e],!0)}(n),function(t){var e=t.length;for(;e--;){var n=t[e],i=n.vm;i._watcher===n&&i._isMounted&&!i._isDestroyed&&en(i,"updated")}}(i),ot&&F.devtools&&ot.emit("flush")}var fn=0,hn=function(t,e,n,i,r){this.vm=t,r&&(t._watcher=this),t._watchers.push(this),i?(this.deep=!!i.deep,this.user=!!i.user,this.lazy=!!i.lazy,this.sync=!!i.sync,this.before=i.before):this.deep=this.user=this.lazy=this.sync=!1,this.cb=n,this.id=++fn,this.active=!0,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new st,this.newDepIds=new st,this.expression="","function"==typeof e?this.getter=e:(this.getter=function(t){if(!U.test(t)){var e=t.split(".");return function(t){for(var n=0;n<e.length;n++){if(!t)return;t=t[e[n]]}return t}}}(e),this.getter||(this.getter=D)),this.value=this.lazy?void 0:this.get()};hn.prototype.get=function(){var t;ft(this);var e=this.vm;try{t=this.getter.call(e,e)}catch(t){if(!this.user)throw t;zt(t,e,'getter for watcher "'+this.expression+'"')}finally{this.deep&&ie(t),ht(),this.cleanupDeps()}return t},hn.prototype.addDep=function(t){var e=t.id;this.newDepIds.has(e)||(this.newDepIds.add(e),this.newDeps.push(t),this.depIds.has(e)||t.addSub(this))},hn.prototype.cleanupDeps=function(){for(var t=this.deps.length;t--;){var e=this.deps[t];this.newDepIds.has(e.id)||e.removeSub(this)}var n=this.depIds;this.depIds=this.newDepIds,this.newDepIds=n,this.newDepIds.clear(),n=this.deps,this.deps=this.newDeps,this.newDeps=n,this.newDeps.length=0},hn.prototype.update=function(){this.lazy?this.dirty=!0:this.sync?this.run():function(t){var e=t.id;if(null==on[e]){if(on[e]=!0,sn){for(var n=nn.length-1;n>cn&&nn[n].id>t.id;)n--;nn.splice(n+1,0,t)}else nn.push(t);an||(an=!0,ee(pn))}}(this)},hn.prototype.run=function(){if(this.active){var t=this.get();if(t!==this.value||c(t)||this.deep){var e=this.value;if(this.value=t,this.user)try{this.cb.call(this.vm,t,e)}catch(t){zt(t,this.vm,'callback for watcher "'+this.expression+'"')}else this.cb.call(this.vm,t,e)}}},hn.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},hn.prototype.depend=function(){for(var t=this.deps.length;t--;)this.deps[t].depend()},hn.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||g(this.vm._watchers,this);for(var t=this.deps.length;t--;)this.deps[t].removeSub(this);this.active=!1}};var vn={enumerable:!0,configurable:!0,get:D,set:D};function mn(t,e,n){vn.get=function(){return this[e][n]},vn.set=function(t){this[e][n]=t},Object.defineProperty(t,n,vn)}function An(t){t._watchers=[];var e=t.$options;e.props&&function(t,e){var n=t.$options.propsData||{},i=t._props={},r=t.$options._propKeys=[];t.$parent&&Ct(!1);var o=function(o){r.push(o);var a=$t(o,e,n,t);Et(i,o,a),o in t||mn(t,"_props",o)};for(var a in e)o(a);Ct(!0)}(t,e.props),e.methods&&function(t,e){t.$options.props;for(var n in e)t[n]="function"!=typeof e[n]?D:E(e[n],t)}(t,e.methods),e.data?function(t){var e=t.$options.data;u(e=t._data="function"==typeof e?function(t,e){ft();try{return t.call(e,e)}catch(t){return zt(t,e,"data()"),{}}finally{ht()}}(e,t):e||{})||(e={});var n=Object.keys(e),i=t.$options.props,r=(t.$options.methods,n.length);for(;r--;){var o=n[r];0,i&&y(i,o)||(a=void 0,36!==(a=(o+"").charCodeAt(0))&&95!==a&&mn(t,"_data",o))}var a;Tt(e,!0)}(t):Tt(t._data={},!0),e.computed&&function(t,e){var n=t._computedWatchers=Object.create(null),i=rt();for(var r in e){var o=e[r],a="function"==typeof o?o:o.get;0,i||(n[r]=new hn(t,a||D,D,gn)),r in t||bn(t,r,o)}}(t,e.computed),e.watch&&e.watch!==et&&function(t,e){for(var n in e){var i=e[n];if(Array.isArray(i))for(var r=0;r<i.length;r++)wn(t,n,i[r]);else wn(t,n,i)}}(t,e.watch)}var gn={lazy:!0};function bn(t,e,n){var i=!rt();"function"==typeof n?(vn.get=i?yn(e):_n(n),vn.set=D):(vn.get=n.get?i&&!1!==n.cache?yn(e):_n(n.get):D,vn.set=n.set||D),Object.defineProperty(t,e,vn)}function yn(t){return function(){var e=this._computedWatchers&&this._computedWatchers[t];if(e)return e.dirty&&e.evaluate(),dt.target&&e.depend(),e.value}}function _n(t){return function(){return t.call(this,this)}}function wn(t,e,n,i){return u(n)&&(i=n,n=n.handler),"string"==typeof n&&(n=t[n]),t.$watch(e,n,i)}var xn=0;function Cn(t){var e=t.options;if(t.super){var n=Cn(t.super);if(n!==t.superOptions){t.superOptions=n;var i=function(t){var e,n=t.options,i=t.sealedOptions;for(var r in n)n[r]!==i[r]&&(e||(e={}),e[r]=n[r]);return e}(t);i&&S(t.extendOptions,i),(e=t.options=Lt(n,t.extendOptions)).name&&(e.components[e.name]=t)}}return e}function kn(t){this._init(t)}function Tn(t){t.cid=0;var e=1;t.extend=function(t){t=t||{};var n=this,i=n.cid,r=t._Ctor||(t._Ctor={});if(r[i])return r[i];var o=t.name||n.options.name;var a=function(t){this._init(t)};return(a.prototype=Object.create(n.prototype)).constructor=a,a.cid=e++,a.options=Lt(n.options,t),a.super=n,a.options.props&&function(t){var e=t.options.props;for(var n in e)mn(t.prototype,"_props",n)}(a),a.options.computed&&function(t){var e=t.options.computed;for(var n in e)bn(t.prototype,n,e[n])}(a),a.extend=n.extend,a.mixin=n.mixin,a.use=n.use,$.forEach((function(t){a[t]=n[t]})),o&&(a.options.components[o]=a),a.superOptions=n.options,a.extendOptions=t,a.sealedOptions=S({},a.options),r[i]=a,a}}function En(t){return t&&(t.Ctor.options.name||t.tag)}function On(t,e){return Array.isArray(t)?t.indexOf(e)>-1:"string"==typeof t?t.split(",").indexOf(e)>-1:!!d(t)&&t.test(e)}function Sn(t,e){var n=t.cache,i=t.keys,r=t._vnode;for(var o in n){var a=n[o];if(a){var s=En(a.componentOptions);s&&!e(s)&&Mn(n,o,i,r)}}}function Mn(t,e,n,i){var r=t[e];!r||i&&r.tag===i.tag||r.componentInstance.$destroy(),t[e]=null,g(n,e)}!function(t){t.prototype._init=function(t){var e=this;e._uid=xn++,e._isVue=!0,t&&t._isComponent?function(t,e){var n=t.$options=Object.create(t.constructor.options),i=e._parentVnode;n.parent=e.parent,n._parentVnode=i;var r=i.componentOptions;n.propsData=r.propsData,n._parentListeners=r.listeners,n._renderChildren=r.children,n._componentTag=r.tag,e.render&&(n.render=e.render,n.staticRenderFns=e.staticRenderFns)}(e,t):e.$options=Lt(Cn(e.constructor),t||{},e),e._renderProxy=e,e._self=e,function(t){var e=t.$options,n=e.parent;if(n&&!e.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(t)}t.$parent=n,t.$root=n?n.$root:t,t.$children=[],t.$refs={},t._watcher=null,t._inactive=null,t._directInactive=!1,t._isMounted=!1,t._isDestroyed=!1,t._isBeingDestroyed=!1}(e),function(t){t._events=Object.create(null),t._hasHookEvent=!1;var e=t.$options._parentListeners;e&&Xe(t,e)}(e),function(t){t._vnode=null,t._staticTrees=null;var e=t.$options,n=t.$vnode=e._parentVnode,r=n&&n.context;t.$slots=pe(e._renderChildren,r),t.$scopedSlots=i,t._c=function(e,n,i,r){return He(t,e,n,i,r,!1)},t.$createElement=function(e,n,i,r){return He(t,e,n,i,r,!0)};var o=n&&n.data;Et(t,"$attrs",o&&o.attrs||i,null,!0),Et(t,"$listeners",e._parentListeners||i,null,!0)}(e),en(e,"beforeCreate"),function(t){var e=de(t.$options.inject,t);e&&(Ct(!1),Object.keys(e).forEach((function(n){Et(t,n,e[n])})),Ct(!0))}(e),An(e),function(t){var e=t.$options.provide;e&&(t._provided="function"==typeof e?e.call(t):e)}(e),en(e,"created"),e.$options.el&&e.$mount(e.$options.el)}}(kn),function(t){var e={get:function(){return this._data}},n={get:function(){return this._props}};Object.defineProperty(t.prototype,"$data",e),Object.defineProperty(t.prototype,"$props",n),t.prototype.$set=Ot,t.prototype.$delete=St,t.prototype.$watch=function(t,e,n){if(u(e))return wn(this,t,e,n);(n=n||{}).user=!0;var i=new hn(this,t,e,n);if(n.immediate)try{e.call(this,i.value)}catch(t){zt(t,this,'callback for immediate watcher "'+i.expression+'"')}return function(){i.teardown()}}}(kn),function(t){var e=/^hook:/;t.prototype.$on=function(t,n){var i=this;if(Array.isArray(t))for(var r=0,o=t.length;r<o;r++)i.$on(t[r],n);else(i._events[t]||(i._events[t]=[])).push(n),e.test(t)&&(i._hasHookEvent=!0);return i},t.prototype.$once=function(t,e){var n=this;function i(){n.$off(t,i),e.apply(n,arguments)}return i.fn=e,n.$on(t,i),n},t.prototype.$off=function(t,e){var n=this;if(!arguments.length)return n._events=Object.create(null),n;if(Array.isArray(t)){for(var i=0,r=t.length;i<r;i++)n.$off(t[i],e);return n}var o,a=n._events[t];if(!a)return n;if(!e)return n._events[t]=null,n;for(var s=a.length;s--;)if((o=a[s])===e||o.fn===e){a.splice(s,1);break}return n},t.prototype.$emit=function(t){var e=this,n=e._events[t];if(n){n=n.length>1?O(n):n;for(var i=O(arguments,1),r='event handler for "'+t+'"',o=0,a=n.length;o<a;o++)Ut(n[o],e,i,e,r)}return e}}(kn),function(t){t.prototype._update=function(t,e){var n=this,i=n.$el,r=n._vnode,o=Ke(n);n._vnode=t,n.$el=r?n.__patch__(r,t):n.__patch__(n.$el,t,e,!1),o(),i&&(i.__vue__=null),n.$el&&(n.$el.__vue__=n),n.$vnode&&n.$parent&&n.$vnode===n.$parent._vnode&&(n.$parent.$el=n.$el)},t.prototype.$forceUpdate=function(){this._watcher&&this._watcher.update()},t.prototype.$destroy=function(){var t=this;if(!t._isBeingDestroyed){en(t,"beforeDestroy"),t._isBeingDestroyed=!0;var e=t.$parent;!e||e._isBeingDestroyed||t.$options.abstract||g(e.$children,t),t._watcher&&t._watcher.teardown();for(var n=t._watchers.length;n--;)t._watchers[n].teardown();t._data.__ob__&&t._data.__ob__.vmCount--,t._isDestroyed=!0,t.__patch__(t._vnode,null),en(t,"destroyed"),t.$off(),t.$el&&(t.$el.__vue__=null),t.$vnode&&(t.$vnode.parent=null)}}}(kn),function(t){De(t.prototype),t.prototype.$nextTick=function(t){return ee(t,this)},t.prototype._render=function(){var t,e=this,n=e.$options,i=n.render,r=n._parentVnode;r&&(e.$scopedSlots=he(r.data.scopedSlots,e.$slots,e.$scopedSlots)),e.$vnode=r;try{Ue=e,t=i.call(e._renderProxy,e.$createElement)}catch(n){zt(n,e,"render"),t=e._vnode}finally{Ue=null}return Array.isArray(t)&&1===t.length&&(t=t[0]),t instanceof vt||(t=At()),t.parent=r,t}}(kn);var Dn=[String,RegExp,Array],Nn={KeepAlive:{name:"keep-alive",abstract:!0,props:{include:Dn,exclude:Dn,max:[String,Number]},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var t in this.cache)Mn(this.cache,t,this.keys)},mounted:function(){var t=this;this.$watch("include",(function(e){Sn(t,(function(t){return On(e,t)}))})),this.$watch("exclude",(function(e){Sn(t,(function(t){return!On(e,t)}))}))},render:function(){var t=this.$slots.default,e=Qe(t),n=e&&e.componentOptions;if(n){var i=En(n),r=this.include,o=this.exclude;if(r&&(!i||!On(r,i))||o&&i&&On(o,i))return e;var a=this.cache,s=this.keys,c=null==e.key?n.Ctor.cid+(n.tag?"::"+n.tag:""):e.key;a[c]?(e.componentInstance=a[c].componentInstance,g(s,c),s.push(c)):(a[c]=e,s.push(c),this.max&&s.length>parseInt(this.max)&&Mn(a,s[0],s,this._vnode)),e.data.keepAlive=!0}return e||t&&t[0]}}};!function(t){var e={get:function(){return F}};Object.defineProperty(t,"config",e),t.util={warn:lt,extend:S,mergeOptions:Lt,defineReactive:Et},t.set=Ot,t.delete=St,t.nextTick=ee,t.observable=function(t){return Tt(t),t},t.options=Object.create(null),$.forEach((function(e){t.options[e+"s"]=Object.create(null)})),t.options._base=t,S(t.options.components,Nn),function(t){t.use=function(t){var e=this._installedPlugins||(this._installedPlugins=[]);if(e.indexOf(t)>-1)return this;var n=O(arguments,1);return n.unshift(this),"function"==typeof t.install?t.install.apply(t,n):"function"==typeof t&&t.apply(null,n),e.push(t),this}}(t),function(t){t.mixin=function(t){return this.options=Lt(this.options,t),this}}(t),Tn(t),function(t){$.forEach((function(e){t[e]=function(t,n){return n?("component"===e&&u(n)&&(n.name=n.name||t,n=this.options._base.extend(n)),"directive"===e&&"function"==typeof n&&(n={bind:n,update:n}),this.options[e+"s"][t]=n,n):this.options[e+"s"][t]}}))}(t)}(kn),Object.defineProperty(kn.prototype,"$isServer",{get:rt}),Object.defineProperty(kn.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(kn,"FunctionalRenderContext",{value:Ne}),kn.version="2.6.10";var In=m("style,class"),Bn=m("input,textarea,option,select,progress"),Pn=m("contenteditable,draggable,spellcheck"),Ln=m("events,caret,typing,plaintext-only"),jn=function(t,e){return zn(e)||"false"===e?"false":"contenteditable"===t&&Ln(e)?e:"true"},$n=m("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"),Rn="http://www.w3.org/1999/xlink",Fn=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},Hn=function(t){return Fn(t)?t.slice(6,t.length):""},zn=function(t){return null==t||!1===t};function Un(t){for(var e=t.data,n=t,i=t;o(i.componentInstance);)(i=i.componentInstance._vnode)&&i.data&&(e=Yn(i.data,e));for(;o(n=n.parent);)n&&n.data&&(e=Yn(e,n.data));return function(t,e){if(o(t)||o(e))return Vn(t,Qn(e));return""}(e.staticClass,e.class)}function Yn(t,e){return{staticClass:Vn(t.staticClass,e.staticClass),class:o(t.class)?[t.class,e.class]:e.class}}function Vn(t,e){return t?e?t+" "+e:t:e||""}function Qn(t){return Array.isArray(t)?function(t){for(var e,n="",i=0,r=t.length;i<r;i++)o(e=Qn(t[i]))&&""!==e&&(n&&(n+=" "),n+=e);return n}(t):c(t)?function(t){var e="";for(var n in t)t[n]&&(e&&(e+=" "),e+=n);return e}(t):"string"==typeof t?t:""}var Gn={svg:"http://www.w3.org/2000/svg",math:"http://www.w3.org/1998/Math/MathML"},Wn=m("html,body,base,head,link,meta,style,title,address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,menuitem,summary,content,element,shadow,template,blockquote,iframe,tfoot"),qn=m("svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view",!0),Xn=function(t){return Wn(t)||qn(t)};var Zn=Object.create(null);var Kn=m("text,number,password,search,email,tel,url");var Jn=Object.freeze({createElement:function(t,e){var n=document.createElement(t);return"select"!==t?n:(e.data&&e.data.attrs&&void 0!==e.data.attrs.multiple&&n.setAttribute("multiple","multiple"),n)},createElementNS:function(t,e){return document.createElementNS(Gn[t],e)},createTextNode:function(t){return document.createTextNode(t)},createComment:function(t){return document.createComment(t)},insertBefore:function(t,e,n){t.insertBefore(e,n)},removeChild:function(t,e){t.removeChild(e)},appendChild:function(t,e){t.appendChild(e)},parentNode:function(t){return t.parentNode},nextSibling:function(t){return t.nextSibling},tagName:function(t){return t.tagName},setTextContent:function(t,e){t.textContent=e},setStyleScope:function(t,e){t.setAttribute(e,"")}}),ti={create:function(t,e){ei(e)},update:function(t,e){t.data.ref!==e.data.ref&&(ei(t,!0),ei(e))},destroy:function(t){ei(t,!0)}};function ei(t,e){var n=t.data.ref;if(o(n)){var i=t.context,r=t.componentInstance||t.elm,a=i.$refs;e?Array.isArray(a[n])?g(a[n],r):a[n]===r&&(a[n]=void 0):t.data.refInFor?Array.isArray(a[n])?a[n].indexOf(r)<0&&a[n].push(r):a[n]=[r]:a[n]=r}}var ni=new vt("",{},[]),ii=["create","activate","update","remove","destroy"];function ri(t,e){return t.key===e.key&&(t.tag===e.tag&&t.isComment===e.isComment&&o(t.data)===o(e.data)&&function(t,e){if("input"!==t.tag)return!0;var n,i=o(n=t.data)&&o(n=n.attrs)&&n.type,r=o(n=e.data)&&o(n=n.attrs)&&n.type;return i===r||Kn(i)&&Kn(r)}(t,e)||a(t.isAsyncPlaceholder)&&t.asyncFactory===e.asyncFactory&&r(e.asyncFactory.error))}function oi(t,e,n){var i,r,a={};for(i=e;i<=n;++i)o(r=t[i].key)&&(a[r]=i);return a}var ai={create:si,update:si,destroy:function(t){si(t,ni)}};function si(t,e){(t.data.directives||e.data.directives)&&function(t,e){var n,i,r,o=t===ni,a=e===ni,s=li(t.data.directives,t.context),c=li(e.data.directives,e.context),l=[],u=[];for(n in c)i=s[n],r=c[n],i?(r.oldValue=i.value,r.oldArg=i.arg,di(r,"update",e,t),r.def&&r.def.componentUpdated&&u.push(r)):(di(r,"bind",e,t),r.def&&r.def.inserted&&l.push(r));if(l.length){var d=function(){for(var n=0;n<l.length;n++)di(l[n],"inserted",e,t)};o?se(e,"insert",d):d()}u.length&&se(e,"postpatch",(function(){for(var n=0;n<u.length;n++)di(u[n],"componentUpdated",e,t)}));if(!o)for(n in s)c[n]||di(s[n],"unbind",t,t,a)}(t,e)}var ci=Object.create(null);function li(t,e){var n,i,r=Object.create(null);if(!t)return r;for(n=0;n<t.length;n++)(i=t[n]).modifiers||(i.modifiers=ci),r[ui(i)]=i,i.def=jt(e.$options,"directives",i.name);return r}function ui(t){return t.rawName||t.name+"."+Object.keys(t.modifiers||{}).join(".")}function di(t,e,n,i,r){var o=t.def&&t.def[e];if(o)try{o(n.elm,t,n,i,r)}catch(i){zt(i,n.context,"directive "+t.name+" "+e+" hook")}}var pi=[ti,ai];function fi(t,e){var n=e.componentOptions;if(!(o(n)&&!1===n.Ctor.options.inheritAttrs||r(t.data.attrs)&&r(e.data.attrs))){var i,a,s=e.elm,c=t.data.attrs||{},l=e.data.attrs||{};for(i in o(l.__ob__)&&(l=e.data.attrs=S({},l)),l)a=l[i],c[i]!==a&&hi(s,i,a);for(i in(X||K)&&l.value!==c.value&&hi(s,"value",l.value),c)r(l[i])&&(Fn(i)?s.removeAttributeNS(Rn,Hn(i)):Pn(i)||s.removeAttribute(i))}}function hi(t,e,n){t.tagName.indexOf("-")>-1?vi(t,e,n):$n(e)?zn(n)?t.removeAttribute(e):(n="allowfullscreen"===e&&"EMBED"===t.tagName?"true":e,t.setAttribute(e,n)):Pn(e)?t.setAttribute(e,jn(e,n)):Fn(e)?zn(n)?t.removeAttributeNS(Rn,Hn(e)):t.setAttributeNS(Rn,e,n):vi(t,e,n)}function vi(t,e,n){if(zn(n))t.removeAttribute(e);else{if(X&&!Z&&"TEXTAREA"===t.tagName&&"placeholder"===e&&""!==n&&!t.__ieph){var i=function(e){e.stopImmediatePropagation(),t.removeEventListener("input",i)};t.addEventListener("input",i),t.__ieph=!0}t.setAttribute(e,n)}}var mi={create:fi,update:fi};function Ai(t,e){var n=e.elm,i=e.data,a=t.data;if(!(r(i.staticClass)&&r(i.class)&&(r(a)||r(a.staticClass)&&r(a.class)))){var s=Un(e),c=n._transitionClasses;o(c)&&(s=Vn(s,Qn(c))),s!==n._prevClass&&(n.setAttribute("class",s),n._prevClass=s)}}var gi,bi={create:Ai,update:Ai},yi="__r",_i="__c";function wi(t,e,n){var i=gi;return function r(){var o=e.apply(null,arguments);null!==o&&ki(t,r,n,i)}}var xi=Gt&&!(tt&&Number(tt[1])<=53);function Ci(t,e,n,i){if(xi){var r=ln,o=e;e=o._wrapper=function(t){if(t.target===t.currentTarget||t.timeStamp>=r||t.timeStamp<=0||t.target.ownerDocument!==document)return o.apply(this,arguments)}}gi.addEventListener(t,e,nt?{capture:n,passive:i}:n)}function ki(t,e,n,i){(i||gi).removeEventListener(t,e._wrapper||e,n)}function Ti(t,e){if(!r(t.data.on)||!r(e.data.on)){var n=e.data.on||{},i=t.data.on||{};gi=e.elm,function(t){if(o(t[yi])){var e=X?"change":"input";t[e]=[].concat(t[yi],t[e]||[]),delete t[yi]}o(t[_i])&&(t.change=[].concat(t[_i],t.change||[]),delete t[_i])}(n),ae(n,i,Ci,ki,wi,e.context),gi=void 0}}var Ei,Oi={create:Ti,update:Ti};function Si(t,e){if(!r(t.data.domProps)||!r(e.data.domProps)){var n,i,a=e.elm,s=t.data.domProps||{},c=e.data.domProps||{};for(n in o(c.__ob__)&&(c=e.data.domProps=S({},c)),s)n in c||(a[n]="");for(n in c){if(i=c[n],"textContent"===n||"innerHTML"===n){if(e.children&&(e.children.length=0),i===s[n])continue;1===a.childNodes.length&&a.removeChild(a.childNodes[0])}if("value"===n&&"PROGRESS"!==a.tagName){a._value=i;var l=r(i)?"":String(i);Mi(a,l)&&(a.value=l)}else if("innerHTML"===n&&qn(a.tagName)&&r(a.innerHTML)){(Ei=Ei||document.createElement("div")).innerHTML="<svg>"+i+"</svg>";for(var u=Ei.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;u.firstChild;)a.appendChild(u.firstChild)}else if(i!==s[n])try{a[n]=i}catch(t){}}}}function Mi(t,e){return!t.composing&&("OPTION"===t.tagName||function(t,e){var n=!0;try{n=document.activeElement!==t}catch(t){}return n&&t.value!==e}(t,e)||function(t,e){var n=t.value,i=t._vModifiers;if(o(i)){if(i.number)return v(n)!==v(e);if(i.trim)return n.trim()!==e.trim()}return n!==e}(t,e))}var Di={create:Si,update:Si},Ni=_((function(t){var e={},n=/:(.+)/;return t.split(/;(?![^(]*\))/g).forEach((function(t){if(t){var i=t.split(n);i.length>1&&(e[i[0].trim()]=i[1].trim())}})),e}));function Ii(t){var e=Bi(t.style);return t.staticStyle?S(t.staticStyle,e):e}function Bi(t){return Array.isArray(t)?M(t):"string"==typeof t?Ni(t):t}var Pi,Li=/^--/,ji=/\s*!important$/,$i=function(t,e,n){if(Li.test(e))t.style.setProperty(e,n);else if(ji.test(n))t.style.setProperty(T(e),n.replace(ji,""),"important");else{var i=Fi(e);if(Array.isArray(n))for(var r=0,o=n.length;r<o;r++)t.style[i]=n[r];else t.style[i]=n}},Ri=["Webkit","Moz","ms"],Fi=_((function(t){if(Pi=Pi||document.createElement("div").style,"filter"!==(t=x(t))&&t in Pi)return t;for(var e=t.charAt(0).toUpperCase()+t.slice(1),n=0;n<Ri.length;n++){var i=Ri[n]+e;if(i in Pi)return i}}));function Hi(t,e){var n=e.data,i=t.data;if(!(r(n.staticStyle)&&r(n.style)&&r(i.staticStyle)&&r(i.style))){var a,s,c=e.elm,l=i.staticStyle,u=i.normalizedStyle||i.style||{},d=l||u,p=Bi(e.data.style)||{};e.data.normalizedStyle=o(p.__ob__)?S({},p):p;var f=function(t,e){var n,i={};if(e)for(var r=t;r.componentInstance;)(r=r.componentInstance._vnode)&&r.data&&(n=Ii(r.data))&&S(i,n);(n=Ii(t.data))&&S(i,n);for(var o=t;o=o.parent;)o.data&&(n=Ii(o.data))&&S(i,n);return i}(e,!0);for(s in d)r(f[s])&&$i(c,s,"");for(s in f)(a=f[s])!==d[s]&&$i(c,s,null==a?"":a)}}var zi={create:Hi,update:Hi},Ui=/\s+/;function Yi(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(Ui).forEach((function(e){return t.classList.add(e)})):t.classList.add(e);else{var n=" "+(t.getAttribute("class")||"")+" ";n.indexOf(" "+e+" ")<0&&t.setAttribute("class",(n+e).trim())}}function Vi(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(Ui).forEach((function(e){return t.classList.remove(e)})):t.classList.remove(e),t.classList.length||t.removeAttribute("class");else{for(var n=" "+(t.getAttribute("class")||"")+" ",i=" "+e+" ";n.indexOf(i)>=0;)n=n.replace(i," ");(n=n.trim())?t.setAttribute("class",n):t.removeAttribute("class")}}function Qi(t){if(t){if("object"==typeof t){var e={};return!1!==t.css&&S(e,Gi(t.name||"v")),S(e,t),e}return"string"==typeof t?Gi(t):void 0}}var Gi=_((function(t){return{enterClass:t+"-enter",enterToClass:t+"-enter-to",enterActiveClass:t+"-enter-active",leaveClass:t+"-leave",leaveToClass:t+"-leave-to",leaveActiveClass:t+"-leave-active"}})),Wi=Q&&!Z,qi="transition",Xi="animation",Zi="transition",Ki="transitionend",Ji="animation",tr="animationend";Wi&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(Zi="WebkitTransition",Ki="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(Ji="WebkitAnimation",tr="webkitAnimationEnd"));var er=Q?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(t){return t()};function nr(t){er((function(){er(t)}))}function ir(t,e){var n=t._transitionClasses||(t._transitionClasses=[]);n.indexOf(e)<0&&(n.push(e),Yi(t,e))}function rr(t,e){t._transitionClasses&&g(t._transitionClasses,e),Vi(t,e)}function or(t,e,n){var i=sr(t,e),r=i.type,o=i.timeout,a=i.propCount;if(!r)return n();var s=r===qi?Ki:tr,c=0,l=function(){t.removeEventListener(s,u),n()},u=function(e){e.target===t&&++c>=a&&l()};setTimeout((function(){c<a&&l()}),o+1),t.addEventListener(s,u)}var ar=/\b(transform|all)(,|$)/;function sr(t,e){var n,i=window.getComputedStyle(t),r=(i[Zi+"Delay"]||"").split(", "),o=(i[Zi+"Duration"]||"").split(", "),a=cr(r,o),s=(i[Ji+"Delay"]||"").split(", "),c=(i[Ji+"Duration"]||"").split(", "),l=cr(s,c),u=0,d=0;return e===qi?a>0&&(n=qi,u=a,d=o.length):e===Xi?l>0&&(n=Xi,u=l,d=c.length):d=(n=(u=Math.max(a,l))>0?a>l?qi:Xi:null)?n===qi?o.length:c.length:0,{type:n,timeout:u,propCount:d,hasTransform:n===qi&&ar.test(i[Zi+"Property"])}}function cr(t,e){for(;t.length<e.length;)t=t.concat(t);return Math.max.apply(null,e.map((function(e,n){return lr(e)+lr(t[n])})))}function lr(t){return 1e3*Number(t.slice(0,-1).replace(",","."))}function ur(t,e){var n=t.elm;o(n._leaveCb)&&(n._leaveCb.cancelled=!0,n._leaveCb());var i=Qi(t.data.transition);if(!r(i)&&!o(n._enterCb)&&1===n.nodeType){for(var a=i.css,s=i.type,l=i.enterClass,u=i.enterToClass,d=i.enterActiveClass,p=i.appearClass,f=i.appearToClass,h=i.appearActiveClass,m=i.beforeEnter,A=i.enter,g=i.afterEnter,b=i.enterCancelled,y=i.beforeAppear,_=i.appear,w=i.afterAppear,x=i.appearCancelled,C=i.duration,k=Ze,T=Ze.$vnode;T&&T.parent;)k=T.context,T=T.parent;var E=!k._isMounted||!t.isRootInsert;if(!E||_||""===_){var O=E&&p?p:l,S=E&&h?h:d,M=E&&f?f:u,D=E&&y||m,N=E&&"function"==typeof _?_:A,I=E&&w||g,B=E&&x||b,P=v(c(C)?C.enter:C);0;var j=!1!==a&&!Z,$=fr(N),R=n._enterCb=L((function(){j&&(rr(n,M),rr(n,S)),R.cancelled?(j&&rr(n,O),B&&B(n)):I&&I(n),n._enterCb=null}));t.data.show||se(t,"insert",(function(){var e=n.parentNode,i=e&&e._pending&&e._pending[t.key];i&&i.tag===t.tag&&i.elm._leaveCb&&i.elm._leaveCb(),N&&N(n,R)})),D&&D(n),j&&(ir(n,O),ir(n,S),nr((function(){rr(n,O),R.cancelled||(ir(n,M),$||(pr(P)?setTimeout(R,P):or(n,s,R)))}))),t.data.show&&(e&&e(),N&&N(n,R)),j||$||R()}}}function dr(t,e){var n=t.elm;o(n._enterCb)&&(n._enterCb.cancelled=!0,n._enterCb());var i=Qi(t.data.transition);if(r(i)||1!==n.nodeType)return e();if(!o(n._leaveCb)){var a=i.css,s=i.type,l=i.leaveClass,u=i.leaveToClass,d=i.leaveActiveClass,p=i.beforeLeave,f=i.leave,h=i.afterLeave,m=i.leaveCancelled,A=i.delayLeave,g=i.duration,b=!1!==a&&!Z,y=fr(f),_=v(c(g)?g.leave:g);0;var w=n._leaveCb=L((function(){n.parentNode&&n.parentNode._pending&&(n.parentNode._pending[t.key]=null),b&&(rr(n,u),rr(n,d)),w.cancelled?(b&&rr(n,l),m&&m(n)):(e(),h&&h(n)),n._leaveCb=null}));A?A(x):x()}function x(){w.cancelled||(!t.data.show&&n.parentNode&&((n.parentNode._pending||(n.parentNode._pending={}))[t.key]=t),p&&p(n),b&&(ir(n,l),ir(n,d),nr((function(){rr(n,l),w.cancelled||(ir(n,u),y||(pr(_)?setTimeout(w,_):or(n,s,w)))}))),f&&f(n,w),b||y||w())}}function pr(t){return"number"==typeof t&&!isNaN(t)}function fr(t){if(r(t))return!1;var e=t.fns;return o(e)?fr(Array.isArray(e)?e[0]:e):(t._length||t.length)>1}function hr(t,e){!0!==e.data.show&&ur(e)}var vr=function(t){var e,n,i={},c=t.modules,l=t.nodeOps;for(e=0;e<ii.length;++e)for(i[ii[e]]=[],n=0;n<c.length;++n)o(c[n][ii[e]])&&i[ii[e]].push(c[n][ii[e]]);function u(t){var e=l.parentNode(t);o(e)&&l.removeChild(e,t)}function d(t,e,n,r,s,c,u){if(o(t.elm)&&o(c)&&(t=c[u]=bt(t)),t.isRootInsert=!s,!function(t,e,n,r){var s=t.data;if(o(s)){var c=o(t.componentInstance)&&s.keepAlive;if(o(s=s.hook)&&o(s=s.init)&&s(t,!1),o(t.componentInstance))return p(t,e),f(n,t.elm,r),a(c)&&function(t,e,n,r){var a,s=t;for(;s.componentInstance;)if(s=s.componentInstance._vnode,o(a=s.data)&&o(a=a.transition)){for(a=0;a<i.activate.length;++a)i.activate[a](ni,s);e.push(s);break}f(n,t.elm,r)}(t,e,n,r),!0}}(t,e,n,r)){var d=t.data,v=t.children,m=t.tag;o(m)?(t.elm=t.ns?l.createElementNS(t.ns,m):l.createElement(m,t),g(t),h(t,v,e),o(d)&&A(t,e),f(n,t.elm,r)):a(t.isComment)?(t.elm=l.createComment(t.text),f(n,t.elm,r)):(t.elm=l.createTextNode(t.text),f(n,t.elm,r))}}function p(t,e){o(t.data.pendingInsert)&&(e.push.apply(e,t.data.pendingInsert),t.data.pendingInsert=null),t.elm=t.componentInstance.$el,v(t)?(A(t,e),g(t)):(ei(t),e.push(t))}function f(t,e,n){o(t)&&(o(n)?l.parentNode(n)===t&&l.insertBefore(t,e,n):l.appendChild(t,e))}function h(t,e,n){if(Array.isArray(e)){0;for(var i=0;i<e.length;++i)d(e[i],n,t.elm,null,!0,e,i)}else s(t.text)&&l.appendChild(t.elm,l.createTextNode(String(t.text)))}function v(t){for(;t.componentInstance;)t=t.componentInstance._vnode;return o(t.tag)}function A(t,n){for(var r=0;r<i.create.length;++r)i.create[r](ni,t);o(e=t.data.hook)&&(o(e.create)&&e.create(ni,t),o(e.insert)&&n.push(t))}function g(t){var e;if(o(e=t.fnScopeId))l.setStyleScope(t.elm,e);else for(var n=t;n;)o(e=n.context)&&o(e=e.$options._scopeId)&&l.setStyleScope(t.elm,e),n=n.parent;o(e=Ze)&&e!==t.context&&e!==t.fnContext&&o(e=e.$options._scopeId)&&l.setStyleScope(t.elm,e)}function b(t,e,n,i,r,o){for(;i<=r;++i)d(n[i],o,t,e,!1,n,i)}function y(t){var e,n,r=t.data;if(o(r))for(o(e=r.hook)&&o(e=e.destroy)&&e(t),e=0;e<i.destroy.length;++e)i.destroy[e](t);if(o(e=t.children))for(n=0;n<t.children.length;++n)y(t.children[n])}function _(t,e,n,i){for(;n<=i;++n){var r=e[n];o(r)&&(o(r.tag)?(w(r),y(r)):u(r.elm))}}function w(t,e){if(o(e)||o(t.data)){var n,r=i.remove.length+1;for(o(e)?e.listeners+=r:e=function(t,e){function n(){0==--n.listeners&&u(t)}return n.listeners=e,n}(t.elm,r),o(n=t.componentInstance)&&o(n=n._vnode)&&o(n.data)&&w(n,e),n=0;n<i.remove.length;++n)i.remove[n](t,e);o(n=t.data.hook)&&o(n=n.remove)?n(t,e):e()}else u(t.elm)}function x(t,e,n,i){for(var r=n;r<i;r++){var a=e[r];if(o(a)&&ri(t,a))return r}}function C(t,e,n,s,c,u){if(t!==e){o(e.elm)&&o(s)&&(e=s[c]=bt(e));var p=e.elm=t.elm;if(a(t.isAsyncPlaceholder))o(e.asyncFactory.resolved)?E(t.elm,e,n):e.isAsyncPlaceholder=!0;else if(a(e.isStatic)&&a(t.isStatic)&&e.key===t.key&&(a(e.isCloned)||a(e.isOnce)))e.componentInstance=t.componentInstance;else{var f,h=e.data;o(h)&&o(f=h.hook)&&o(f=f.prepatch)&&f(t,e);var m=t.children,A=e.children;if(o(h)&&v(e)){for(f=0;f<i.update.length;++f)i.update[f](t,e);o(f=h.hook)&&o(f=f.update)&&f(t,e)}r(e.text)?o(m)&&o(A)?m!==A&&function(t,e,n,i,a){var s,c,u,p=0,f=0,h=e.length-1,v=e[0],m=e[h],A=n.length-1,g=n[0],y=n[A],w=!a;for(0;p<=h&&f<=A;)r(v)?v=e[++p]:r(m)?m=e[--h]:ri(v,g)?(C(v,g,i,n,f),v=e[++p],g=n[++f]):ri(m,y)?(C(m,y,i,n,A),m=e[--h],y=n[--A]):ri(v,y)?(C(v,y,i,n,A),w&&l.insertBefore(t,v.elm,l.nextSibling(m.elm)),v=e[++p],y=n[--A]):ri(m,g)?(C(m,g,i,n,f),w&&l.insertBefore(t,m.elm,v.elm),m=e[--h],g=n[++f]):(r(s)&&(s=oi(e,p,h)),r(c=o(g.key)?s[g.key]:x(g,e,p,h))?d(g,i,t,v.elm,!1,n,f):ri(u=e[c],g)?(C(u,g,i,n,f),e[c]=void 0,w&&l.insertBefore(t,u.elm,v.elm)):d(g,i,t,v.elm,!1,n,f),g=n[++f]);p>h?b(t,r(n[A+1])?null:n[A+1].elm,n,f,A,i):f>A&&_(0,e,p,h)}(p,m,A,n,u):o(A)?(o(t.text)&&l.setTextContent(p,""),b(p,null,A,0,A.length-1,n)):o(m)?_(0,m,0,m.length-1):o(t.text)&&l.setTextContent(p,""):t.text!==e.text&&l.setTextContent(p,e.text),o(h)&&o(f=h.hook)&&o(f=f.postpatch)&&f(t,e)}}}function k(t,e,n){if(a(n)&&o(t.parent))t.parent.data.pendingInsert=e;else for(var i=0;i<e.length;++i)e[i].data.hook.insert(e[i])}var T=m("attrs,class,staticClass,staticStyle,key");function E(t,e,n,i){var r,s=e.tag,c=e.data,l=e.children;if(i=i||c&&c.pre,e.elm=t,a(e.isComment)&&o(e.asyncFactory))return e.isAsyncPlaceholder=!0,!0;if(o(c)&&(o(r=c.hook)&&o(r=r.init)&&r(e,!0),o(r=e.componentInstance)))return p(e,n),!0;if(o(s)){if(o(l))if(t.hasChildNodes())if(o(r=c)&&o(r=r.domProps)&&o(r=r.innerHTML)){if(r!==t.innerHTML)return!1}else{for(var u=!0,d=t.firstChild,f=0;f<l.length;f++){if(!d||!E(d,l[f],n,i)){u=!1;break}d=d.nextSibling}if(!u||d)return!1}else h(e,l,n);if(o(c)){var v=!1;for(var m in c)if(!T(m)){v=!0,A(e,n);break}!v&&c.class&&ie(c.class)}}else t.data!==e.text&&(t.data=e.text);return!0}return function(t,e,n,s){if(!r(e)){var c,u=!1,p=[];if(r(t))u=!0,d(e,p);else{var f=o(t.nodeType);if(!f&&ri(t,e))C(t,e,p,null,null,s);else{if(f){if(1===t.nodeType&&t.hasAttribute(j)&&(t.removeAttribute(j),n=!0),a(n)&&E(t,e,p))return k(e,p,!0),t;c=t,t=new vt(l.tagName(c).toLowerCase(),{},[],void 0,c)}var h=t.elm,m=l.parentNode(h);if(d(e,p,h._leaveCb?null:m,l.nextSibling(h)),o(e.parent))for(var A=e.parent,g=v(e);A;){for(var b=0;b<i.destroy.length;++b)i.destroy[b](A);if(A.elm=e.elm,g){for(var w=0;w<i.create.length;++w)i.create[w](ni,A);var x=A.data.hook.insert;if(x.merged)for(var T=1;T<x.fns.length;T++)x.fns[T]()}else ei(A);A=A.parent}o(m)?_(0,[t],0,0):o(t.tag)&&y(t)}}return k(e,p,u),e.elm}o(t)&&y(t)}}({nodeOps:Jn,modules:[mi,bi,Oi,Di,zi,Q?{create:hr,activate:hr,remove:function(t,e){!0!==t.data.show?dr(t,e):e()}}:{}].concat(pi)});Z&&document.addEventListener("selectionchange",(function(){var t=document.activeElement;t&&t.vmodel&&xr(t,"input")}));var mr={inserted:function(t,e,n,i){"select"===n.tag?(i.elm&&!i.elm._vOptions?se(n,"postpatch",(function(){mr.componentUpdated(t,e,n)})):Ar(t,e,n.context),t._vOptions=[].map.call(t.options,yr)):("textarea"===n.tag||Kn(t.type))&&(t._vModifiers=e.modifiers,e.modifiers.lazy||(t.addEventListener("compositionstart",_r),t.addEventListener("compositionend",wr),t.addEventListener("change",wr),Z&&(t.vmodel=!0)))},componentUpdated:function(t,e,n){if("select"===n.tag){Ar(t,e,n.context);var i=t._vOptions,r=t._vOptions=[].map.call(t.options,yr);if(r.some((function(t,e){return!B(t,i[e])})))(t.multiple?e.value.some((function(t){return br(t,r)})):e.value!==e.oldValue&&br(e.value,r))&&xr(t,"change")}}};function Ar(t,e,n){gr(t,e,n),(X||K)&&setTimeout((function(){gr(t,e,n)}),0)}function gr(t,e,n){var i=e.value,r=t.multiple;if(!r||Array.isArray(i)){for(var o,a,s=0,c=t.options.length;s<c;s++)if(a=t.options[s],r)o=P(i,yr(a))>-1,a.selected!==o&&(a.selected=o);else if(B(yr(a),i))return void(t.selectedIndex!==s&&(t.selectedIndex=s));r||(t.selectedIndex=-1)}}function br(t,e){return e.every((function(e){return!B(e,t)}))}function yr(t){return"_value"in t?t._value:t.value}function _r(t){t.target.composing=!0}function wr(t){t.target.composing&&(t.target.composing=!1,xr(t.target,"input"))}function xr(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function Cr(t){return!t.componentInstance||t.data&&t.data.transition?t:Cr(t.componentInstance._vnode)}var kr={model:mr,show:{bind:function(t,e,n){var i=e.value,r=(n=Cr(n)).data&&n.data.transition,o=t.__vOriginalDisplay="none"===t.style.display?"":t.style.display;i&&r?(n.data.show=!0,ur(n,(function(){t.style.display=o}))):t.style.display=i?o:"none"},update:function(t,e,n){var i=e.value;!i!=!e.oldValue&&((n=Cr(n)).data&&n.data.transition?(n.data.show=!0,i?ur(n,(function(){t.style.display=t.__vOriginalDisplay})):dr(n,(function(){t.style.display="none"}))):t.style.display=i?t.__vOriginalDisplay:"none")},unbind:function(t,e,n,i,r){r||(t.style.display=t.__vOriginalDisplay)}}},Tr={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function Er(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?Er(Qe(e.children)):t}function Or(t){var e={},n=t.$options;for(var i in n.propsData)e[i]=t[i];var r=n._parentListeners;for(var o in r)e[x(o)]=r[o];return e}function Sr(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}var Mr=function(t){return t.tag||Ve(t)},Dr=function(t){return"show"===t.name},Nr={name:"transition",props:Tr,abstract:!0,render:function(t){var e=this,n=this.$slots.default;if(n&&(n=n.filter(Mr)).length){0;var i=this.mode;0;var r=n[0];if(function(t){for(;t=t.parent;)if(t.data.transition)return!0}(this.$vnode))return r;var o=Er(r);if(!o)return r;if(this._leaving)return Sr(t,r);var a="__transition-"+this._uid+"-";o.key=null==o.key?o.isComment?a+"comment":a+o.tag:s(o.key)?0===String(o.key).indexOf(a)?o.key:a+o.key:o.key;var c=(o.data||(o.data={})).transition=Or(this),l=this._vnode,u=Er(l);if(o.data.directives&&o.data.directives.some(Dr)&&(o.data.show=!0),u&&u.data&&!function(t,e){return e.key===t.key&&e.tag===t.tag}(o,u)&&!Ve(u)&&(!u.componentInstance||!u.componentInstance._vnode.isComment)){var d=u.data.transition=S({},c);if("out-in"===i)return this._leaving=!0,se(d,"afterLeave",(function(){e._leaving=!1,e.$forceUpdate()})),Sr(t,r);if("in-out"===i){if(Ve(o))return l;var p,f=function(){p()};se(c,"afterEnter",f),se(c,"enterCancelled",f),se(d,"delayLeave",(function(t){p=t}))}}return r}}},Ir=S({tag:String,moveClass:String},Tr);function Br(t){t.elm._moveCb&&t.elm._moveCb(),t.elm._enterCb&&t.elm._enterCb()}function Pr(t){t.data.newPos=t.elm.getBoundingClientRect()}function Lr(t){var e=t.data.pos,n=t.data.newPos,i=e.left-n.left,r=e.top-n.top;if(i||r){t.data.moved=!0;var o=t.elm.style;o.transform=o.WebkitTransform="translate("+i+"px,"+r+"px)",o.transitionDuration="0s"}}delete Ir.mode;var jr={Transition:Nr,TransitionGroup:{props:Ir,beforeMount:function(){var t=this,e=this._update;this._update=function(n,i){var r=Ke(t);t.__patch__(t._vnode,t.kept,!1,!0),t._vnode=t.kept,r(),e.call(t,n,i)}},render:function(t){for(var e=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),i=this.prevChildren=this.children,r=this.$slots.default||[],o=this.children=[],a=Or(this),s=0;s<r.length;s++){var c=r[s];if(c.tag)if(null!=c.key&&0!==String(c.key).indexOf("__vlist"))o.push(c),n[c.key]=c,(c.data||(c.data={})).transition=a;else;}if(i){for(var l=[],u=[],d=0;d<i.length;d++){var p=i[d];p.data.transition=a,p.data.pos=p.elm.getBoundingClientRect(),n[p.key]?l.push(p):u.push(p)}this.kept=t(e,null,l),this.removed=u}return t(e,null,o)},updated:function(){var t=this.prevChildren,e=this.moveClass||(this.name||"v")+"-move";t.length&&this.hasMove(t[0].elm,e)&&(t.forEach(Br),t.forEach(Pr),t.forEach(Lr),this._reflow=document.body.offsetHeight,t.forEach((function(t){if(t.data.moved){var n=t.elm,i=n.style;ir(n,e),i.transform=i.WebkitTransform=i.transitionDuration="",n.addEventListener(Ki,n._moveCb=function t(i){i&&i.target!==n||i&&!/transform$/.test(i.propertyName)||(n.removeEventListener(Ki,t),n._moveCb=null,rr(n,e))})}})))},methods:{hasMove:function(t,e){if(!Wi)return!1;if(this._hasMove)return this._hasMove;var n=t.cloneNode();t._transitionClasses&&t._transitionClasses.forEach((function(t){Vi(n,t)})),Yi(n,e),n.style.display="none",this.$el.appendChild(n);var i=sr(n);return this.$el.removeChild(n),this._hasMove=i.hasTransform}}}};kn.config.mustUseProp=function(t,e,n){return"value"===n&&Bn(t)&&"button"!==e||"selected"===n&&"option"===t||"checked"===n&&"input"===t||"muted"===n&&"video"===t},kn.config.isReservedTag=Xn,kn.config.isReservedAttr=In,kn.config.getTagNamespace=function(t){return qn(t)?"svg":"math"===t?"math":void 0},kn.config.isUnknownElement=function(t){if(!Q)return!0;if(Xn(t))return!1;if(t=t.toLowerCase(),null!=Zn[t])return Zn[t];var e=document.createElement(t);return t.indexOf("-")>-1?Zn[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:Zn[t]=/HTMLUnknownElement/.test(e.toString())},S(kn.options.directives,kr),S(kn.options.components,jr),kn.prototype.__patch__=Q?vr:D,kn.prototype.$mount=function(t,e){return function(t,e,n){var i;return t.$el=e,t.$options.render||(t.$options.render=At),en(t,"beforeMount"),i=function(){t._update(t._render(),n)},new hn(t,i,D,{before:function(){t._isMounted&&!t._isDestroyed&&en(t,"beforeUpdate")}},!0),n=!1,null==t.$vnode&&(t._isMounted=!0,en(t,"mounted")),t}(this,t=t&&Q?function(t){if("string"==typeof t){var e=document.querySelector(t);return e||document.createElement("div")}return t}(t):void 0,e)},Q&&setTimeout((function(){F.devtools&&ot&&ot.emit("init",kn)}),0),e.default=kn}.call(this,n(3),n(22).setImmediate)},function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(24).default.create({headers:{requesttoken:OC.requestToken}});e.default=i},function(t,e,n){"use strict";function i(t,e,n,i,r,o,a,s){var c,l="function"==typeof t?t.options:t;if(e&&(l.render=e,l.staticRenderFns=n,l._compiled=!0),i&&(l.functional=!0),o&&(l._scopeId="data-v-"+o),a?(c=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),r&&r.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(a)},l._ssrRegister=c):r&&(c=s?function(){r.call(this,this.$root.$options.shadowRoot)}:r),c)if(l.functional){l._injectStyles=c;var u=l.render;l.render=function(t,e){return c.call(e),u(t,e)}}else{var d=l.beforeCreate;l.beforeCreate=d?[].concat(d,c):[c]}return{exports:t,options:l}}n.d(e,"a",(function(){return i}))},function(t,e){var n,i,r=t.exports={};function o(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function s(t){if(n===setTimeout)return setTimeout(t,0);if((n===o||!n)&&setTimeout)return n=setTimeout,setTimeout(t,0);try{return n(t,0)}catch(e){try{return n.call(null,t,0)}catch(e){return n.call(this,t,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:o}catch(t){n=o}try{i="function"==typeof clearTimeout?clearTimeout:a}catch(t){i=a}}();var c,l=[],u=!1,d=-1;function p(){u&&c&&(u=!1,c.length?l=c.concat(l):d=-1,l.length&&f())}function f(){if(!u){var t=s(p);u=!0;for(var e=l.length;e;){for(c=l,l=[];++d<e;)c&&c[d].run();d=-1,e=l.length}c=null,u=!1,function(t){if(i===clearTimeout)return clearTimeout(t);if((i===a||!i)&&clearTimeout)return i=clearTimeout,clearTimeout(t);try{i(t)}catch(e){try{return i.call(null,t)}catch(e){return i.call(this,t)}}}(t)}}function h(t,e){this.fun=t,this.array=e}function v(){}r.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];l.push(new h(t,e)),1!==l.length||u||s(f)},h.prototype.run=function(){this.fun.apply(null,this.array)},r.title="browser",r.browser=!0,r.env={},r.argv=[],r.version="",r.versions={},r.on=v,r.addListener=v,r.once=v,r.off=v,r.removeListener=v,r.removeAllListeners=v,r.emit=v,r.prependListener=v,r.prependOnceListener=v,r.listeners=function(t){return[]},r.binding=function(t){throw new Error("process.binding is not supported")},r.cwd=function(){return"/"},r.chdir=function(t){throw new Error("process.chdir is not supported")},r.umask=function(){return 0}},function(t,e,n){"use strict";t.exports=function(t,e){return function(){for(var n=new Array(arguments.length),i=0;i<n.length;i++)n[i]=arguments[i];return t.apply(e,n)}}},function(t,e,n){"use strict";var i=n(1);function r(t){return encodeURIComponent(t).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}t.exports=function(t,e,n){if(!e)return t;var o;if(n)o=n(e);else if(i.isURLSearchParams(e))o=e.toString();else{var a=[];i.forEach(e,(function(t,e){null!=t&&(i.isArray(t)?e+="[]":t=[t],i.forEach(t,(function(t){i.isDate(t)?t=t.toISOString():i.isObject(t)&&(t=JSON.stringify(t)),a.push(r(e)+"="+r(t))})))})),o=a.join("&")}if(o){var s=t.indexOf("#");-1!==s&&(t=t.slice(0,s)),t+=(-1===t.indexOf("?")?"?":"&")+o}return t}},function(t,e,n){"use strict";t.exports=function(t){return!(!t||!t.__CANCEL__)}},function(t,e,n){"use strict";(function(e){var i=n(1),r=n(31),o={"Content-Type":"application/x-www-form-urlencoded"};function a(t,e){!i.isUndefined(t)&&i.isUndefined(t["Content-Type"])&&(t["Content-Type"]=e)}var s,c={adapter:(void 0!==e&&"[object process]"===Object.prototype.toString.call(e)?s=n(11):"undefined"!=typeof XMLHttpRequest&&(s=n(11)),s),transformRequest:[function(t,e){return r(e,"Accept"),r(e,"Content-Type"),i.isFormData(t)||i.isArrayBuffer(t)||i.isBuffer(t)||i.isStream(t)||i.isFile(t)||i.isBlob(t)?t:i.isArrayBufferView(t)?t.buffer:i.isURLSearchParams(t)?(a(e,"application/x-www-form-urlencoded;charset=utf-8"),t.toString()):i.isObject(t)?(a(e,"application/json;charset=utf-8"),JSON.stringify(t)):t}],transformResponse:[function(t){if("string"==typeof t)try{t=JSON.parse(t)}catch(t){}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,validateStatus:function(t){return t>=200&&t<300}};c.headers={common:{Accept:"application/json, text/plain, */*"}},i.forEach(["delete","get","head"],(function(t){c.headers[t]={}})),i.forEach(["post","put","patch"],(function(t){c.headers[t]=i.merge(o)})),t.exports=c}).call(this,n(6))},function(t,e,n){"use strict";var i=n(1),r=n(32),o=n(8),a=n(34),s=n(35),c=n(12);t.exports=function(t){return new Promise((function(e,l){var u=t.data,d=t.headers;i.isFormData(u)&&delete d["Content-Type"];var p=new XMLHttpRequest;if(t.auth){var f=t.auth.username||"",h=t.auth.password||"";d.Authorization="Basic "+btoa(f+":"+h)}if(p.open(t.method.toUpperCase(),o(t.url,t.params,t.paramsSerializer),!0),p.timeout=t.timeout,p.onreadystatechange=function(){if(p&&4===p.readyState&&(0!==p.status||p.responseURL&&0===p.responseURL.indexOf("file:"))){var n="getAllResponseHeaders"in p?a(p.getAllResponseHeaders()):null,i={data:t.responseType&&"text"!==t.responseType?p.response:p.responseText,status:p.status,statusText:p.statusText,headers:n,config:t,request:p};r(e,l,i),p=null}},p.onabort=function(){p&&(l(c("Request aborted",t,"ECONNABORTED",p)),p=null)},p.onerror=function(){l(c("Network Error",t,null,p)),p=null},p.ontimeout=function(){l(c("timeout of "+t.timeout+"ms exceeded",t,"ECONNABORTED",p)),p=null},i.isStandardBrowserEnv()){var v=n(36),m=(t.withCredentials||s(t.url))&&t.xsrfCookieName?v.read(t.xsrfCookieName):void 0;m&&(d[t.xsrfHeaderName]=m)}if("setRequestHeader"in p&&i.forEach(d,(function(t,e){void 0===u&&"content-type"===e.toLowerCase()?delete d[e]:p.setRequestHeader(e,t)})),t.withCredentials&&(p.withCredentials=!0),t.responseType)try{p.responseType=t.responseType}catch(e){if("json"!==t.responseType)throw e}"function"==typeof t.onDownloadProgress&&p.addEventListener("progress",t.onDownloadProgress),"function"==typeof t.onUploadProgress&&p.upload&&p.upload.addEventListener("progress",t.onUploadProgress),t.cancelToken&&t.cancelToken.promise.then((function(t){p&&(p.abort(),l(t),p=null)})),void 0===u&&(u=null),p.send(u)}))}},function(t,e,n){"use strict";var i=n(33);t.exports=function(t,e,n,r,o){var a=new Error(t);return i(a,e,n,r,o)}},function(t,e,n){"use strict";var i=n(1);t.exports=function(t,e){e=e||{};var n={};return i.forEach(["url","method","params","data"],(function(t){void 0!==e[t]&&(n[t]=e[t])})),i.forEach(["headers","auth","proxy"],(function(r){i.isObject(e[r])?n[r]=i.deepMerge(t[r],e[r]):void 0!==e[r]?n[r]=e[r]:i.isObject(t[r])?n[r]=i.deepMerge(t[r]):void 0!==t[r]&&(n[r]=t[r])})),i.forEach(["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","maxContentLength","validateStatus","maxRedirects","httpAgent","httpsAgent","cancelToken","socketPath"],(function(i){void 0!==e[i]?n[i]=e[i]:void 0!==t[i]&&(n[i]=t[i])})),n}},function(t,e,n){"use strict";function i(t){this.message=t}i.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},i.prototype.__CANCEL__=!0,t.exports=i},,function(e,n,i){!function(t,n){e.exports=n(i(2))}(window,(function(e){return function(t){var e={};function n(i){if(e[i])return e[i].exports;var r=e[i]={i:i,l:!1,exports:{}};return t[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)n.d(i,r,function(e){return t[e]}.bind(null,r));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="/dist/",n(n.s=182)}([function(t,e,n){"use strict";function i(t,e,n,i,r,o,a,s){var c,l="function"==typeof t?t.options:t;if(e&&(l.render=e,l.staticRenderFns=n,l._compiled=!0),i&&(l.functional=!0),o&&(l._scopeId="data-v-"+o),a?(c=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),r&&r.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(a)},l._ssrRegister=c):r&&(c=s?function(){r.call(this,this.$root.$options.shadowRoot)}:r),c)if(l.functional){l._injectStyles=c;var u=l.render;l.render=function(t,e){return c.call(e),u(t,e)}}else{var d=l.beforeCreate;l.beforeCreate=d?[].concat(d,c):[c]}return{exports:t,options:l}}n.d(e,"a",(function(){return i}))},function(t,e,n){"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var n=function(t,e){var n,i,r,o=t[1]||"",a=t[3];if(!a)return o;if(e&&"function"==typeof btoa){var s=(n=a,i=btoa(unescape(encodeURIComponent(JSON.stringify(n)))),r="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(i),"/*# ".concat(r," */")),c=a.sources.map((function(t){return"/*# sourceURL=".concat(a.sourceRoot).concat(t," */")}));return[o].concat(c).concat([s]).join("\n")}return[o].join("\n")}(e,t);return e[2]?"@media ".concat(e[2],"{").concat(n,"}"):n})).join("")},e.i=function(t,n){"string"==typeof t&&(t=[[null,t,""]]);for(var i={},r=0;r<this.length;r++){var o=this[r][0];null!=o&&(i[o]=!0)}for(var a=0;a<t.length;a++){var s=t[a];null!=s[0]&&i[s[0]]||(n&&!s[2]?s[2]=n:n&&(s[2]="(".concat(s[2],") and (").concat(n,")")),e.push(s))}},e}},function(t,e,n){"use strict";function i(t,e){for(var n=[],i={},r=0;r<e.length;r++){var o=e[r],a=o[0],s={id:t+":"+r,css:o[1],media:o[2],sourceMap:o[3]};i[a]?i[a].parts.push(s):n.push(i[a]={id:a,parts:[s]})}return n}n.r(e),n.d(e,"default",(function(){return h}));var r="undefined"!=typeof document;if("undefined"!=typeof DEBUG&&DEBUG&&!r)throw new Error("vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.");var o={},a=r&&(document.head||document.getElementsByTagName("head")[0]),s=null,c=0,l=!1,u=function(){},d=null,p="data-vue-ssr-id",f="undefined"!=typeof navigator&&/msie [6-9]\b/.test(navigator.userAgent.toLowerCase());function h(t,e,n,r){l=n,d=r||{};var a=i(t,e);return v(a),function(e){for(var n=[],r=0;r<a.length;r++){var s=a[r];(c=o[s.id]).refs--,n.push(c)}for(e?v(a=i(t,e)):a=[],r=0;r<n.length;r++){var c;if(0===(c=n[r]).refs){for(var l=0;l<c.parts.length;l++)c.parts[l]();delete o[c.id]}}}}function v(t){for(var e=0;e<t.length;e++){var n=t[e],i=o[n.id];if(i){i.refs++;for(var r=0;r<i.parts.length;r++)i.parts[r](n.parts[r]);for(;r<n.parts.length;r++)i.parts.push(A(n.parts[r]));i.parts.length>n.parts.length&&(i.parts.length=n.parts.length)}else{var a=[];for(r=0;r<n.parts.length;r++)a.push(A(n.parts[r]));o[n.id]={id:n.id,refs:1,parts:a}}}}function m(){var t=document.createElement("style");return t.type="text/css",a.appendChild(t),t}function A(t){var e,n,i=document.querySelector("style["+p+'~="'+t.id+'"]');if(i){if(l)return u;i.parentNode.removeChild(i)}if(f){var r=c++;i=s||(s=m()),e=y.bind(null,i,r,!1),n=y.bind(null,i,r,!0)}else i=m(),e=function(t,e){var n=e.css,i=e.media,r=e.sourceMap;if(i&&t.setAttribute("media",i),d.ssrId&&t.setAttribute(p,e.id),r&&(n+="\n/*# sourceURL="+r.sources[0]+" */",n+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+" */"),t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}.bind(null,i),n=function(){i.parentNode.removeChild(i)};return e(t),function(i){if(i){if(i.css===t.css&&i.media===t.media&&i.sourceMap===t.sourceMap)return;e(t=i)}else n()}}var g,b=(g=[],function(t,e){return g[t]=e,g.filter(Boolean).join("\n")});function y(t,e,n,i){var r=n?"":i.css;if(t.styleSheet)t.styleSheet.cssText=b(e,r);else{var o=document.createTextNode(r),a=t.childNodes;a[e]&&t.removeChild(a[e]),a.length?t.insertBefore(o,a[e]):t.appendChild(o)}}},function(t,n){t.exports=e},function(t,e,n){"use strict";var i=n(68),r=n(101),o=Object.prototype.toString;function a(t){return"[object Array]"===o.call(t)}function s(t){return null!==t&&"object"==typeof t}function c(t){return"[object Function]"===o.call(t)}function l(t,e){if(null!=t)if("object"!=typeof t&&(t=[t]),a(t))for(var n=0,i=t.length;n<i;n++)e.call(null,t[n],n,t);else for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.call(null,t[r],r,t)}t.exports={isArray:a,isArrayBuffer:function(t){return"[object ArrayBuffer]"===o.call(t)},isBuffer:r,isFormData:function(t){return"undefined"!=typeof FormData&&t instanceof FormData},isArrayBufferView:function(t){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(t):t&&t.buffer&&t.buffer instanceof ArrayBuffer},isString:function(t){return"string"==typeof t},isNumber:function(t){return"number"==typeof t},isObject:s,isUndefined:function(t){return void 0===t},isDate:function(t){return"[object Date]"===o.call(t)},isFile:function(t){return"[object File]"===o.call(t)},isBlob:function(t){return"[object Blob]"===o.call(t)},isFunction:c,isStream:function(t){return s(t)&&c(t.pipe)},isURLSearchParams:function(t){return"undefined"!=typeof URLSearchParams&&t instanceof URLSearchParams},isStandardBrowserEnv:function(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&"undefined"!=typeof window&&"undefined"!=typeof document},forEach:l,merge:function t(){var e={};function n(n,i){"object"==typeof e[i]&&"object"==typeof n?e[i]=t(e[i],n):e[i]=n}for(var i=0,r=arguments.length;i<r;i++)l(arguments[i],n);return e},deepMerge:function t(){var e={};function n(n,i){"object"==typeof e[i]&&"object"==typeof n?e[i]=t(e[i],n):e[i]="object"==typeof n?t({},n):n}for(var i=0,r=arguments.length;i<r;i++)l(arguments[i],n);return e},extend:function(t,e,n){return l(e,(function(e,r){t[r]=n&&"function"==typeof e?i(e,n):e})),t},trim:function(t){return t.replace(/^\s*/,"").replace(/\s*$/,"")}}},function(t,e,n){"use strict";(function(t){n.d(e,"a",(function(){return De}));var i=n(16),r=n(21);function o(t){return(o="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})(t)}function a(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function c(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{},i=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(i=i.concat(Object.getOwnPropertySymbols(n).filter((function(t){return Object.getOwnPropertyDescriptor(n,t).enumerable})))),i.forEach((function(e){s(t,e,n[e])}))}return t}var l=function(){};function u(t){return"string"==typeof t&&(t=t.split(" ")),t}function d(t,e){var n,i=u(e);n=t.className instanceof l?u(t.className.baseVal):u(t.className),i.forEach((function(t){-1===n.indexOf(t)&&n.push(t)})),t instanceof SVGElement?t.setAttribute("class",n.join(" ")):t.className=n.join(" ")}function p(t,e){var n,i=u(e);n=t.className instanceof l?u(t.className.baseVal):u(t.className),i.forEach((function(t){var e=n.indexOf(t);-1!==e&&n.splice(e,1)})),t instanceof SVGElement?t.setAttribute("class",n.join(" ")):t.className=n.join(" ")}"undefined"!=typeof window&&(l=window.SVGAnimatedString);var f=!1;if("undefined"!=typeof window){f=!1;try{var h=Object.defineProperty({},"passive",{get:function(){f=!0}});window.addEventListener("test",null,h)}catch(t){}}var v={container:!1,delay:0,html:!1,placement:"top",title:"",template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",offset:0},m=[],A=function(){function t(e,n){var i=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),s(this,"_events",[]),s(this,"_setTooltipNodeEvent",(function(t,e,n,r){var o=t.relatedreference||t.toElement||t.relatedTarget;return!!i._tooltipNode.contains(o)&&(i._tooltipNode.addEventListener(t.type,(function n(o){var a=o.relatedreference||o.toElement||o.relatedTarget;i._tooltipNode.removeEventListener(t.type,n),e.contains(a)||i._scheduleHide(e,r.delay,r,o)})),!0)})),n=c({},v,n),e.jquery&&(e=e[0]),this.show=this.show.bind(this),this.hide=this.hide.bind(this),this.reference=e,this.options=n,this._isOpen=!1,this._init()}var e,n;return e=t,(n=[{key:"show",value:function(){this._show(this.reference,this.options)}},{key:"hide",value:function(){this._hide()}},{key:"dispose",value:function(){this._dispose()}},{key:"toggle",value:function(){return this._isOpen?this.hide():this.show()}},{key:"setClasses",value:function(t){this._classes=t}},{key:"setContent",value:function(t){this.options.title=t,this._tooltipNode&&this._setContent(t,this.options)}},{key:"setOptions",value:function(t){var e=!1,n=t&&t.classes||T.options.defaultClass;this._classes!==n&&(this.setClasses(n),e=!0),t=_(t);var i=!1,r=!1;for(var o in this.options.offset===t.offset&&this.options.placement===t.placement||(i=!0),(this.options.template!==t.template||this.options.trigger!==t.trigger||this.options.container!==t.container||e)&&(r=!0),t)this.options[o]=t[o];if(this._tooltipNode)if(r){var a=this._isOpen;this.dispose(),this._init(),a&&this.show()}else i&&this.popperInstance.update()}},{key:"_init",value:function(){var t="string"==typeof this.options.trigger?this.options.trigger.split(" "):[];this._isDisposed=!1,this._enableDocumentTouch=-1===t.indexOf("manual"),t=t.filter((function(t){return-1!==["click","hover","focus"].indexOf(t)})),this._setEventListeners(this.reference,t,this.options),this.$_originalTitle=this.reference.getAttribute("title"),this.reference.removeAttribute("title"),this.reference.setAttribute("data-original-title",this.$_originalTitle)}},{key:"_create",value:function(t,e){var n=window.document.createElement("div");n.innerHTML=e.trim();var i=n.childNodes[0];return i.id="tooltip_".concat(Math.random().toString(36).substr(2,10)),i.setAttribute("aria-hidden","true"),this.options.autoHide&&-1!==this.options.trigger.indexOf("hover")&&(i.addEventListener("mouseenter",this.hide),i.addEventListener("click",this.hide)),i}},{key:"_setContent",value:function(t,e){var n=this;this.asyncContent=!1,this._applyContent(t,e).then((function(){n.popperInstance.update()}))}},{key:"_applyContent",value:function(t,e){var n=this;return new Promise((function(i,r){var o=e.html,a=n._tooltipNode;if(a){var s=a.querySelector(n.options.innerSelector);if(1===t.nodeType){if(o){for(;s.firstChild;)s.removeChild(s.firstChild);s.appendChild(t)}}else{if("function"==typeof t){var c=t();return void(c&&"function"==typeof c.then?(n.asyncContent=!0,e.loadingClass&&d(a,e.loadingClass),e.loadingContent&&n._applyContent(e.loadingContent,e),c.then((function(t){return e.loadingClass&&p(a,e.loadingClass),n._applyContent(t,e)})).then(i).catch(r)):n._applyContent(c,e).then(i).catch(r))}o?s.innerHTML=t:s.innerText=t}i()}}))}},{key:"_show",value:function(t,e){if(!e||"string"!=typeof e.container||document.querySelector(e.container)){clearTimeout(this._disposeTimer),delete(e=Object.assign({},e)).offset;var n=!0;this._tooltipNode&&(d(this._tooltipNode,this._classes),n=!1);var i=this._ensureShown(t,e);return n&&this._tooltipNode&&d(this._tooltipNode,this._classes),d(t,["v-tooltip-open"]),i}}},{key:"_ensureShown",value:function(t,e){var n=this;if(this._isOpen)return this;if(this._isOpen=!0,m.push(this),this._tooltipNode)return this._tooltipNode.style.display="",this._tooltipNode.setAttribute("aria-hidden","false"),this.popperInstance.enableEventListeners(),this.popperInstance.update(),this.asyncContent&&this._setContent(e.title,e),this;var r=t.getAttribute("title")||e.title;if(!r)return this;var o=this._create(t,e.template);this._tooltipNode=o,t.setAttribute("aria-describedby",o.id);var a=this._findContainer(e.container,t);this._append(o,a);var s=c({},e.popperOptions,{placement:e.placement});return s.modifiers=c({},s.modifiers,{arrow:{element:this.options.arrowSelector}}),e.boundariesElement&&(s.modifiers.preventOverflow={boundariesElement:e.boundariesElement}),this.popperInstance=new i.a(t,o,s),this._setContent(r,e),requestAnimationFrame((function(){!n._isDisposed&&n.popperInstance?(n.popperInstance.update(),requestAnimationFrame((function(){n._isDisposed?n.dispose():n._isOpen&&o.setAttribute("aria-hidden","false")}))):n.dispose()})),this}},{key:"_noLongerOpen",value:function(){var t=m.indexOf(this);-1!==t&&m.splice(t,1)}},{key:"_hide",value:function(){var t=this;if(!this._isOpen)return this;this._isOpen=!1,this._noLongerOpen(),this._tooltipNode.style.display="none",this._tooltipNode.setAttribute("aria-hidden","true"),this.popperInstance.disableEventListeners(),clearTimeout(this._disposeTimer);var e=T.options.disposeTimeout;return null!==e&&(this._disposeTimer=setTimeout((function(){t._tooltipNode&&(t._tooltipNode.removeEventListener("mouseenter",t.hide),t._tooltipNode.removeEventListener("click",t.hide),t._removeTooltipNode())}),e)),p(this.reference,["v-tooltip-open"]),this}},{key:"_removeTooltipNode",value:function(){if(this._tooltipNode){var t=this._tooltipNode.parentNode;t&&(t.removeChild(this._tooltipNode),this.reference.removeAttribute("aria-describedby")),this._tooltipNode=null}}},{key:"_dispose",value:function(){var t=this;return this._isDisposed=!0,this.reference.removeAttribute("data-original-title"),this.$_originalTitle&&this.reference.setAttribute("title",this.$_originalTitle),this._events.forEach((function(e){var n=e.func,i=e.event;t.reference.removeEventListener(i,n)})),this._events=[],this._tooltipNode?(this._hide(),this._tooltipNode.removeEventListener("mouseenter",this.hide),this._tooltipNode.removeEventListener("click",this.hide),this.popperInstance.destroy(),this.popperInstance.options.removeOnDestroy||this._removeTooltipNode()):this._noLongerOpen(),this}},{key:"_findContainer",value:function(t,e){return"string"==typeof t?t=window.document.querySelector(t):!1===t&&(t=e.parentNode),t}},{key:"_append",value:function(t,e){e.appendChild(t)}},{key:"_setEventListeners",value:function(t,e,n){var i=this,r=[],o=[];e.forEach((function(t){switch(t){case"hover":r.push("mouseenter"),o.push("mouseleave"),i.options.hideOnTargetClick&&o.push("click");break;case"focus":r.push("focus"),o.push("blur"),i.options.hideOnTargetClick&&o.push("click");break;case"click":r.push("click"),o.push("click")}})),r.forEach((function(e){var r=function(e){!0!==i._isOpen&&(e.usedByTooltip=!0,i._scheduleShow(t,n.delay,n,e))};i._events.push({event:e,func:r}),t.addEventListener(e,r)})),o.forEach((function(e){var r=function(e){!0!==e.usedByTooltip&&i._scheduleHide(t,n.delay,n,e)};i._events.push({event:e,func:r}),t.addEventListener(e,r)}))}},{key:"_onDocumentTouch",value:function(t){this._enableDocumentTouch&&this._scheduleHide(this.reference,this.options.delay,this.options,t)}},{key:"_scheduleShow",value:function(t,e,n){var i=this,r=e&&e.show||e||0;clearTimeout(this._scheduleTimer),this._scheduleTimer=window.setTimeout((function(){return i._show(t,n)}),r)}},{key:"_scheduleHide",value:function(t,e,n,i){var r=this,o=e&&e.hide||e||0;clearTimeout(this._scheduleTimer),this._scheduleTimer=window.setTimeout((function(){if(!1!==r._isOpen&&document.body.contains(r._tooltipNode)){if("mouseleave"===i.type&&r._setTooltipNodeEvent(i,t,e,n))return;r._hide(t,n)}}),o)}}])&&a(e.prototype,n),t}();"undefined"!=typeof document&&document.addEventListener("touchstart",(function(t){for(var e=0;e<m.length;e++)m[e]._onDocumentTouch(t)}),!f||{passive:!0,capture:!0});var g={enabled:!0},b=["top","top-start","top-end","right","right-start","right-end","bottom","bottom-start","bottom-end","left","left-start","left-end"],y={defaultPlacement:"top",defaultClass:"vue-tooltip-theme",defaultTargetClass:"has-tooltip",defaultHtml:!0,defaultTemplate:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',defaultArrowSelector:".tooltip-arrow, .tooltip__arrow",defaultInnerSelector:".tooltip-inner, .tooltip__inner",defaultDelay:0,defaultTrigger:"hover focus",defaultOffset:0,defaultContainer:"body",defaultBoundariesElement:void 0,defaultPopperOptions:{},defaultLoadingClass:"tooltip-loading",defaultLoadingContent:"...",autoHide:!0,defaultHideOnTargetClick:!0,disposeTimeout:5e3,popover:{defaultPlacement:"bottom",defaultClass:"vue-popover-theme",defaultBaseClass:"tooltip popover",defaultWrapperClass:"wrapper",defaultInnerClass:"tooltip-inner popover-inner",defaultArrowClass:"tooltip-arrow popover-arrow",defaultOpenClass:"open",defaultDelay:0,defaultTrigger:"click",defaultOffset:0,defaultContainer:"body",defaultBoundariesElement:void 0,defaultPopperOptions:{},defaultAutoHide:!0,defaultHandleResize:!0}};function _(t){var e={placement:void 0!==t.placement?t.placement:T.options.defaultPlacement,delay:void 0!==t.delay?t.delay:T.options.defaultDelay,html:void 0!==t.html?t.html:T.options.defaultHtml,template:void 0!==t.template?t.template:T.options.defaultTemplate,arrowSelector:void 0!==t.arrowSelector?t.arrowSelector:T.options.defaultArrowSelector,innerSelector:void 0!==t.innerSelector?t.innerSelector:T.options.defaultInnerSelector,trigger:void 0!==t.trigger?t.trigger:T.options.defaultTrigger,offset:void 0!==t.offset?t.offset:T.options.defaultOffset,container:void 0!==t.container?t.container:T.options.defaultContainer,boundariesElement:void 0!==t.boundariesElement?t.boundariesElement:T.options.defaultBoundariesElement,autoHide:void 0!==t.autoHide?t.autoHide:T.options.autoHide,hideOnTargetClick:void 0!==t.hideOnTargetClick?t.hideOnTargetClick:T.options.defaultHideOnTargetClick,loadingClass:void 0!==t.loadingClass?t.loadingClass:T.options.defaultLoadingClass,loadingContent:void 0!==t.loadingContent?t.loadingContent:T.options.defaultLoadingContent,popperOptions:c({},void 0!==t.popperOptions?t.popperOptions:T.options.defaultPopperOptions)};if(e.offset){var n=o(e.offset),i=e.offset;("number"===n||"string"===n&&-1===i.indexOf(","))&&(i="0, ".concat(i)),e.popperOptions.modifiers||(e.popperOptions.modifiers={}),e.popperOptions.modifiers.offset={offset:i}}return e.trigger&&-1!==e.trigger.indexOf("click")&&(e.hideOnTargetClick=!1),e}function w(t,e){for(var n=t.placement,i=0;i<b.length;i++){var r=b[i];e[r]&&(n=r)}return n}function x(t){var e=o(t);return"string"===e?t:!(!t||"object"!==e)&&t.content}function C(t){t._tooltip&&(t._tooltip.dispose(),delete t._tooltip,delete t._tooltipOldShow),t._tooltipTargetClasses&&(p(t,t._tooltipTargetClasses),delete t._tooltipTargetClasses)}function k(t,e){var n,i=e.value,r=(e.oldValue,e.modifiers),o=x(i);o&&g.enabled?(t._tooltip?((n=t._tooltip).setContent(o),n.setOptions(c({},i,{placement:w(i,r)}))):n=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=x(e),r=void 0!==e.classes?e.classes:T.options.defaultClass,o=c({title:i},_(c({},e,{placement:w(e,n)}))),a=t._tooltip=new A(t,o);a.setClasses(r),a._vueEl=t;var s=void 0!==e.targetClasses?e.targetClasses:T.options.defaultTargetClass;return t._tooltipTargetClasses=s,d(t,s),a}(t,i,r),void 0!==i.show&&i.show!==t._tooltipOldShow&&(t._tooltipOldShow=i.show,i.show?n.show():n.hide())):C(t)}var T={options:y,bind:k,update:k,unbind:function(t){C(t)}};function E(t){t.addEventListener("click",S),t.addEventListener("touchstart",M,!!f&&{passive:!0})}function O(t){t.removeEventListener("click",S),t.removeEventListener("touchstart",M),t.removeEventListener("touchend",D),t.removeEventListener("touchcancel",N)}function S(t){var e=t.currentTarget;t.closePopover=!e.$_vclosepopover_touch,t.closeAllPopover=e.$_closePopoverModifiers&&!!e.$_closePopoverModifiers.all}function M(t){if(1===t.changedTouches.length){var e=t.currentTarget;e.$_vclosepopover_touch=!0;var n=t.changedTouches[0];e.$_vclosepopover_touchPoint=n,e.addEventListener("touchend",D),e.addEventListener("touchcancel",N)}}function D(t){var e=t.currentTarget;if(e.$_vclosepopover_touch=!1,1===t.changedTouches.length){var n=t.changedTouches[0],i=e.$_vclosepopover_touchPoint;t.closePopover=Math.abs(n.screenY-i.screenY)<20&&Math.abs(n.screenX-i.screenX)<20,t.closeAllPopover=e.$_closePopoverModifiers&&!!e.$_closePopoverModifiers.all}}function N(t){t.currentTarget.$_vclosepopover_touch=!1}var I={bind:function(t,e){var n=e.value,i=e.modifiers;t.$_closePopoverModifiers=i,(void 0===n||n)&&E(t)},update:function(t,e){var n=e.value,i=e.oldValue,r=e.modifiers;t.$_closePopoverModifiers=r,n!==i&&(void 0===n||n?E(t):O(t))},unbind:function(t){O(t)}};function B(t){var e=T.options.popover[t];return void 0===e?T.options[t]:e}var P=!1;"undefined"!=typeof window&&"undefined"!=typeof navigator&&(P=/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream);var L=[],j=function(){};"undefined"!=typeof window&&(j=window.Element);var $={name:"VPopover",components:{ResizeObserver:r.a},props:{open:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},placement:{type:String,default:function(){return B("defaultPlacement")}},delay:{type:[String,Number,Object],default:function(){return B("defaultDelay")}},offset:{type:[String,Number],default:function(){return B("defaultOffset")}},trigger:{type:String,default:function(){return B("defaultTrigger")}},container:{type:[String,Object,j,Boolean],default:function(){return B("defaultContainer")}},boundariesElement:{type:[String,j],default:function(){return B("defaultBoundariesElement")}},popperOptions:{type:Object,default:function(){return B("defaultPopperOptions")}},popoverClass:{type:[String,Array],default:function(){return B("defaultClass")}},popoverBaseClass:{type:[String,Array],default:function(){return T.options.popover.defaultBaseClass}},popoverInnerClass:{type:[String,Array],default:function(){return T.options.popover.defaultInnerClass}},popoverWrapperClass:{type:[String,Array],default:function(){return T.options.popover.defaultWrapperClass}},popoverArrowClass:{type:[String,Array],default:function(){return T.options.popover.defaultArrowClass}},autoHide:{type:Boolean,default:function(){return T.options.popover.defaultAutoHide}},handleResize:{type:Boolean,default:function(){return T.options.popover.defaultHandleResize}},openGroup:{type:String,default:null},openClass:{type:[String,Array],default:function(){return T.options.popover.defaultOpenClass}}},data:function(){return{isOpen:!1,id:Math.random().toString(36).substr(2,10)}},computed:{cssClass:function(){return s({},this.openClass,this.isOpen)},popoverId:function(){return"popover_".concat(this.id)}},watch:{open:function(t){t?this.show():this.hide()},disabled:function(t,e){t!==e&&(t?this.hide():this.open&&this.show())},container:function(t){if(this.isOpen&&this.popperInstance){var e=this.$refs.popover,n=this.$refs.trigger,i=this.$_findContainer(this.container,n);if(!i)return void console.warn("No container for popover",this);i.appendChild(e),this.popperInstance.scheduleUpdate()}},trigger:function(t){this.$_removeEventListeners(),this.$_addEventListeners()},placement:function(t){var e=this;this.$_updatePopper((function(){e.popperInstance.options.placement=t}))},offset:"$_restartPopper",boundariesElement:"$_restartPopper",popperOptions:{handler:"$_restartPopper",deep:!0}},created:function(){this.$_isDisposed=!1,this.$_mounted=!1,this.$_events=[],this.$_preventOpen=!1},mounted:function(){var t=this.$refs.popover;t.parentNode&&t.parentNode.removeChild(t),this.$_init(),this.open&&this.show()},deactivated:function(){this.hide()},beforeDestroy:function(){this.dispose()},methods:{show:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.event,i=(e.skipDelay,e.force),r=void 0!==i&&i;!r&&this.disabled||(this.$_scheduleShow(n),this.$emit("show")),this.$emit("update:open",!0),this.$_beingShowed=!0,requestAnimationFrame((function(){t.$_beingShowed=!1}))},hide:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.event;t.skipDelay,this.$_scheduleHide(e),this.$emit("hide"),this.$emit("update:open",!1)},dispose:function(){if(this.$_isDisposed=!0,this.$_removeEventListeners(),this.hide({skipDelay:!0}),this.popperInstance&&(this.popperInstance.destroy(),!this.popperInstance.options.removeOnDestroy)){var t=this.$refs.popover;t.parentNode&&t.parentNode.removeChild(t)}this.$_mounted=!1,this.popperInstance=null,this.isOpen=!1,this.$emit("dispose")},$_init:function(){-1===this.trigger.indexOf("manual")&&this.$_addEventListeners()},$_show:function(){var t=this,e=this.$refs.trigger,n=this.$refs.popover;if(clearTimeout(this.$_disposeTimer),!this.isOpen){if(this.popperInstance&&(this.isOpen=!0,this.popperInstance.enableEventListeners(),this.popperInstance.scheduleUpdate()),!this.$_mounted){var r=this.$_findContainer(this.container,e);if(!r)return void console.warn("No container for popover",this);r.appendChild(n),this.$_mounted=!0}if(!this.popperInstance){var o=c({},this.popperOptions,{placement:this.placement});if(o.modifiers=c({},o.modifiers,{arrow:c({},o.modifiers&&o.modifiers.arrow,{element:this.$refs.arrow})}),this.offset){var a=this.$_getOffset();o.modifiers.offset=c({},o.modifiers&&o.modifiers.offset,{offset:a})}this.boundariesElement&&(o.modifiers.preventOverflow=c({},o.modifiers&&o.modifiers.preventOverflow,{boundariesElement:this.boundariesElement})),this.popperInstance=new i.a(e,n,o),requestAnimationFrame((function(){if(t.hidden)return t.hidden=!1,void t.$_hide();!t.$_isDisposed&&t.popperInstance?(t.popperInstance.scheduleUpdate(),requestAnimationFrame((function(){if(t.hidden)return t.hidden=!1,void t.$_hide();t.$_isDisposed?t.dispose():t.isOpen=!0}))):t.dispose()}))}var s=this.openGroup;if(s)for(var l,u=0;u<L.length;u++)(l=L[u]).openGroup!==s&&(l.hide(),l.$emit("close-group"));L.push(this),this.$emit("apply-show")}},$_hide:function(){var t=this;if(this.isOpen){var e=L.indexOf(this);-1!==e&&L.splice(e,1),this.isOpen=!1,this.popperInstance&&this.popperInstance.disableEventListeners(),clearTimeout(this.$_disposeTimer);var n=T.options.popover.disposeTimeout||T.options.disposeTimeout;null!==n&&(this.$_disposeTimer=setTimeout((function(){var e=t.$refs.popover;e&&(e.parentNode&&e.parentNode.removeChild(e),t.$_mounted=!1)}),n)),this.$emit("apply-hide")}},$_findContainer:function(t,e){return"string"==typeof t?t=window.document.querySelector(t):!1===t&&(t=e.parentNode),t},$_getOffset:function(){var t=o(this.offset),e=this.offset;return("number"===t||"string"===t&&-1===e.indexOf(","))&&(e="0, ".concat(e)),e},$_addEventListeners:function(){var t=this,e=this.$refs.trigger,n=[],i=[];("string"==typeof this.trigger?this.trigger.split(" ").filter((function(t){return-1!==["click","hover","focus"].indexOf(t)})):[]).forEach((function(t){switch(t){case"hover":n.push("mouseenter"),i.push("mouseleave");break;case"focus":n.push("focus"),i.push("blur");break;case"click":n.push("click"),i.push("click")}})),n.forEach((function(n){var i=function(e){t.isOpen||(e.usedByTooltip=!0,!t.$_preventOpen&&t.show({event:e}),t.hidden=!1)};t.$_events.push({event:n,func:i}),e.addEventListener(n,i)})),i.forEach((function(n){var i=function(e){e.usedByTooltip||(t.hide({event:e}),t.hidden=!0)};t.$_events.push({event:n,func:i}),e.addEventListener(n,i)}))},$_scheduleShow:function(){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(clearTimeout(this.$_scheduleTimer),t)this.$_show();else{var e=parseInt(this.delay&&this.delay.show||this.delay||0);this.$_scheduleTimer=setTimeout(this.$_show.bind(this),e)}},$_scheduleHide:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(clearTimeout(this.$_scheduleTimer),n)this.$_hide();else{var i=parseInt(this.delay&&this.delay.hide||this.delay||0);this.$_scheduleTimer=setTimeout((function(){if(t.isOpen){if(e&&"mouseleave"===e.type&&t.$_setTooltipNodeEvent(e))return;t.$_hide()}}),i)}},$_setTooltipNodeEvent:function(t){var e=this,n=this.$refs.trigger,i=this.$refs.popover,r=t.relatedreference||t.toElement||t.relatedTarget;return!!i.contains(r)&&(i.addEventListener(t.type,(function r(o){var a=o.relatedreference||o.toElement||o.relatedTarget;i.removeEventListener(t.type,r),n.contains(a)||e.hide({event:o})})),!0)},$_removeEventListeners:function(){var t=this.$refs.trigger;this.$_events.forEach((function(e){var n=e.func,i=e.event;t.removeEventListener(i,n)})),this.$_events=[]},$_updatePopper:function(t){this.popperInstance&&(t(),this.isOpen&&this.popperInstance.scheduleUpdate())},$_restartPopper:function(){if(this.popperInstance){var t=this.isOpen;this.dispose(),this.$_isDisposed=!1,this.$_init(),t&&this.show({skipDelay:!0,force:!0})}},$_handleGlobalClose:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.$_beingShowed||(this.hide({event:t}),t.closePopover?this.$emit("close-directive"):this.$emit("auto-hide"),n&&(this.$_preventOpen=!0,setTimeout((function(){e.$_preventOpen=!1}),300)))},$_handleResize:function(){this.isOpen&&this.popperInstance&&(this.popperInstance.scheduleUpdate(),this.$emit("resize"))}}};function R(t){for(var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=function(n){var i=L[n];if(i.$refs.popover){var r=i.$refs.popover.contains(t.target);requestAnimationFrame((function(){(t.closeAllPopover||t.closePopover&&r||i.autoHide&&!r)&&i.$_handleGlobalClose(t,e)}))}},i=0;i<L.length;i++)n(i)}"undefined"!=typeof document&&"undefined"!=typeof window&&(P?document.addEventListener("touchend",(function(t){R(t,!0)}),!f||{passive:!0,capture:!0}):window.addEventListener("click",(function(t){R(t)}),!0));var F=$,H=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"v-popover",class:t.cssClass},[n("div",{ref:"trigger",staticClass:"trigger",staticStyle:{display:"inline-block"},attrs:{"aria-describedby":t.popoverId,tabindex:-1!==t.trigger.indexOf("focus")?0:void 0}},[t._t("default")],2),t._v(" "),n("div",{ref:"popover",class:[t.popoverBaseClass,t.popoverClass,t.cssClass],style:{visibility:t.isOpen?"visible":"hidden"},attrs:{id:t.popoverId,"aria-hidden":t.isOpen?"false":"true",tabindex:t.autoHide?0:void 0},on:{keyup:function(e){if(!e.type.indexOf("key")&&t._k(e.keyCode,"esc",27,e.key,["Esc","Escape"]))return null;t.autoHide&&t.hide()}}},[n("div",{class:t.popoverWrapperClass},[n("div",{ref:"inner",class:t.popoverInnerClass,staticStyle:{position:"relative"}},[n("div",[t._t("popover")],2),t._v(" "),t.handleResize?n("ResizeObserver",{on:{notify:t.$_handleResize}}):t._e()],1),t._v(" "),n("div",{ref:"arrow",class:t.popoverArrowClass})])])])};H._withStripped=!0;var z=function(t,e,n,i,r,o,a,s,c,l){"boolean"!=typeof a&&(c=s,s=a,a=!1);var u,d="function"==typeof n?n.options:n;if(t&&t.render&&(d.render=t.render,d.staticRenderFns=t.staticRenderFns,d._compiled=!0,r&&(d.functional=!0)),i&&(d._scopeId=i),o?(u=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),e&&e.call(this,c(t)),t&&t._registeredComponents&&t._registeredComponents.add(o)},d._ssrRegister=u):e&&(u=a?function(){e.call(this,l(this.$root.$options.shadowRoot))}:function(t){e.call(this,s(t))}),u)if(d.functional){var p=d.render;d.render=function(t,e){return u.call(e),p(t,e)}}else{var f=d.beforeCreate;d.beforeCreate=f?[].concat(f,u):[u]}return n}({render:H,staticRenderFns:[]},void 0,F,void 0,!1,void 0,void 0,void 0),U=function(t,e){return t===e||t!=t&&e!=e},Y=function(t,e){for(var n=t.length;n--;)if(U(t[n][0],e))return n;return-1},V=Array.prototype.splice;function Q(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var i=t[e];this.set(i[0],i[1])}}Q.prototype.clear=function(){this.__data__=[],this.size=0},Q.prototype.delete=function(t){var e=this.__data__,n=Y(e,t);return!(n<0||(n==e.length-1?e.pop():V.call(e,n,1),--this.size,0))},Q.prototype.get=function(t){var e=this.__data__,n=Y(e,t);return n<0?void 0:e[n][1]},Q.prototype.has=function(t){return Y(this.__data__,t)>-1},Q.prototype.set=function(t,e){var n=this.__data__,i=Y(n,t);return i<0?(++this.size,n.push([t,e])):n[i][1]=e,this};var G=Q,W="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==t?t:"undefined"!=typeof self?self:{};function q(t,e){return t(e={exports:{}},e.exports),e.exports}var X,Z="object"==typeof W&&W&&W.Object===Object&&W,K="object"==typeof self&&self&&self.Object===Object&&self,J=Z||K||Function("return this")(),tt=J.Symbol,et=Object.prototype,nt=et.hasOwnProperty,it=et.toString,rt=tt?tt.toStringTag:void 0,ot=Object.prototype.toString,at=tt?tt.toStringTag:void 0,st=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":at&&at in Object(t)?function(t){var e=nt.call(t,rt),n=t[rt];try{t[rt]=void 0;var i=!0}catch(t){}var r=it.call(t);return i&&(e?t[rt]=n:delete t[rt]),r}(t):function(t){return ot.call(t)}(t)},ct=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)},lt=function(t){if(!ct(t))return!1;var e=st(t);return"[object Function]"==e||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e},ut=J["__core-js_shared__"],dt=(X=/[^.]+$/.exec(ut&&ut.keys&&ut.keys.IE_PROTO||""))?"Symbol(src)_1."+X:"",pt=Function.prototype.toString,ft=/^\[object .+?Constructor\]$/,ht=Function.prototype,vt=Object.prototype,mt=ht.toString,At=vt.hasOwnProperty,gt=RegExp("^"+mt.call(At).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),bt=function(t){return!(!ct(t)||function(t){return!!dt&&dt in t}(t))&&(lt(t)?gt:ft).test(function(t){if(null!=t){try{return pt.call(t)}catch(t){}try{return t+""}catch(t){}}return""}(t))},yt=function(t,e){var n=function(t,e){return null==t?void 0:t[e]}(t,e);return bt(n)?n:void 0},_t=yt(J,"Map"),wt=yt(Object,"create"),xt=Object.prototype.hasOwnProperty,Ct=Object.prototype.hasOwnProperty;function kt(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var i=t[e];this.set(i[0],i[1])}}kt.prototype.clear=function(){this.__data__=wt?wt(null):{},this.size=0},kt.prototype.delete=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e},kt.prototype.get=function(t){var e=this.__data__;if(wt){var n=e[t];return"__lodash_hash_undefined__"===n?void 0:n}return xt.call(e,t)?e[t]:void 0},kt.prototype.has=function(t){var e=this.__data__;return wt?void 0!==e[t]:Ct.call(e,t)},kt.prototype.set=function(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=wt&&void 0===e?"__lodash_hash_undefined__":e,this};var Tt=kt,Et=function(t,e){var n=t.__data__;return function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t}(e)?n["string"==typeof e?"string":"hash"]:n.map};function Ot(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var i=t[e];this.set(i[0],i[1])}}Ot.prototype.clear=function(){this.size=0,this.__data__={hash:new Tt,map:new(_t||G),string:new Tt}},Ot.prototype.delete=function(t){var e=Et(this,t).delete(t);return this.size-=e?1:0,e},Ot.prototype.get=function(t){return Et(this,t).get(t)},Ot.prototype.has=function(t){return Et(this,t).has(t)},Ot.prototype.set=function(t,e){var n=Et(this,t),i=n.size;return n.set(t,e),this.size+=n.size==i?0:1,this};var St=Ot;function Mt(t){var e=this.__data__=new G(t);this.size=e.size}Mt.prototype.clear=function(){this.__data__=new G,this.size=0},Mt.prototype.delete=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n},Mt.prototype.get=function(t){return this.__data__.get(t)},Mt.prototype.has=function(t){return this.__data__.has(t)},Mt.prototype.set=function(t,e){var n=this.__data__;if(n instanceof G){var i=n.__data__;if(!_t||i.length<199)return i.push([t,e]),this.size=++n.size,this;n=this.__data__=new St(i)}return n.set(t,e),this.size=n.size,this};var Dt=Mt,Nt=function(){try{var t=yt(Object,"defineProperty");return t({},"",{}),t}catch(t){}}(),It=function(t,e,n){"__proto__"==e&&Nt?Nt(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n},Bt=function(t,e,n){(void 0===n||U(t[e],n))&&(void 0!==n||e in t)||It(t,e,n)},Pt=function(t,e,n){for(var i=-1,r=Object(t),o=n(t),a=o.length;a--;){var s=o[++i];if(!1===e(r[s],s,r))break}return t},Lt=q((function(t,e){var n=e&&!e.nodeType&&e,i=n&&t&&!t.nodeType&&t,r=i&&i.exports===n?J.Buffer:void 0,o=r?r.allocUnsafe:void 0;t.exports=function(t,e){if(e)return t.slice();var n=t.length,i=o?o(n):new t.constructor(n);return t.copy(i),i}})),jt=J.Uint8Array,$t=function(t,e){var n=e?function(t){var e=new t.constructor(t.byteLength);return new jt(e).set(new jt(t)),e}(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)},Rt=Object.create,Ft=function(){function t(){}return function(e){if(!ct(e))return{};if(Rt)return Rt(e);t.prototype=e;var n=new t;return t.prototype=void 0,n}}(),Ht=function(t,e){return function(n){return t(e(n))}}(Object.getPrototypeOf,Object),zt=Object.prototype,Ut=function(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||zt)},Yt=function(t){return null!=t&&"object"==typeof t},Vt=function(t){return Yt(t)&&"[object Arguments]"==st(t)},Qt=Object.prototype,Gt=Qt.hasOwnProperty,Wt=Qt.propertyIsEnumerable,qt=Vt(function(){return arguments}())?Vt:function(t){return Yt(t)&&Gt.call(t,"callee")&&!Wt.call(t,"callee")},Xt=Array.isArray,Zt=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991},Kt=function(t){return null!=t&&Zt(t.length)&&!lt(t)},Jt=function(){return!1},te=q((function(t,e){var n=e&&!e.nodeType&&e,i=n&&t&&!t.nodeType&&t,r=i&&i.exports===n?J.Buffer:void 0,o=(r?r.isBuffer:void 0)||Jt;t.exports=o})),ee=Function.prototype,ne=Object.prototype,ie=ee.toString,re=ne.hasOwnProperty,oe=ie.call(Object),ae={};ae["[object Float32Array]"]=ae["[object Float64Array]"]=ae["[object Int8Array]"]=ae["[object Int16Array]"]=ae["[object Int32Array]"]=ae["[object Uint8Array]"]=ae["[object Uint8ClampedArray]"]=ae["[object Uint16Array]"]=ae["[object Uint32Array]"]=!0,ae["[object Arguments]"]=ae["[object Array]"]=ae["[object ArrayBuffer]"]=ae["[object Boolean]"]=ae["[object DataView]"]=ae["[object Date]"]=ae["[object Error]"]=ae["[object Function]"]=ae["[object Map]"]=ae["[object Number]"]=ae["[object Object]"]=ae["[object RegExp]"]=ae["[object Set]"]=ae["[object String]"]=ae["[object WeakMap]"]=!1;var se=q((function(t,e){var n=e&&!e.nodeType&&e,i=n&&t&&!t.nodeType&&t,r=i&&i.exports===n&&Z.process,o=function(){try{return i&&i.require&&i.require("util").types||r&&r.binding&&r.binding("util")}catch(t){}}();t.exports=o})),ce=se&&se.isTypedArray,le=ce?function(t){return function(e){return t(e)}}(ce):function(t){return Yt(t)&&Zt(t.length)&&!!ae[st(t)]},ue=function(t,e){if("__proto__"!=e)return t[e]},de=Object.prototype.hasOwnProperty,pe=function(t,e,n){var i=t[e];de.call(t,e)&&U(i,n)&&(void 0!==n||e in t)||It(t,e,n)},fe=/^(?:0|[1-9]\d*)$/,he=function(t,e){var n=typeof t;return!!(e=null==e?9007199254740991:e)&&("number"==n||"symbol"!=n&&fe.test(t))&&t>-1&&t%1==0&&t<e},ve=Object.prototype.hasOwnProperty,me=function(t,e){var n=Xt(t),i=!n&&qt(t),r=!n&&!i&&te(t),o=!n&&!i&&!r&&le(t),a=n||i||r||o,s=a?function(t,e){for(var n=-1,i=Array(t);++n<t;)i[n]=e(n);return i}(t.length,String):[],c=s.length;for(var l in t)!e&&!ve.call(t,l)||a&&("length"==l||r&&("offset"==l||"parent"==l)||o&&("buffer"==l||"byteLength"==l||"byteOffset"==l)||he(l,c))||s.push(l);return s},Ae=Object.prototype.hasOwnProperty,ge=function(t){if(!ct(t))return function(t){var e=[];if(null!=t)for(var n in Object(t))e.push(n);return e}(t);var e=Ut(t),n=[];for(var i in t)("constructor"!=i||!e&&Ae.call(t,i))&&n.push(i);return n},be=function(t){return Kt(t)?me(t,!0):ge(t)},ye=function(t){return function(t,e,n,i){var r=!n;n||(n={});for(var o=-1,a=e.length;++o<a;){var s=e[o],c=i?i(n[s],t[s],s,n,t):void 0;void 0===c&&(c=t[s]),r?It(n,s,c):pe(n,s,c)}return n}(t,be(t))},_e=function(t,e,n,i,r,o,a){var s=ue(t,n),c=ue(e,n),l=a.get(c);if(l)Bt(t,n,l);else{var u=o?o(s,c,n+"",t,e,a):void 0,d=void 0===u;if(d){var p=Xt(c),f=!p&&te(c),h=!p&&!f&&le(c);u=c,p||f||h?Xt(s)?u=s:function(t){return Yt(t)&&Kt(t)}(s)?u=function(t,e){var n=-1,i=t.length;for(e||(e=Array(i));++n<i;)e[n]=t[n];return e}(s):f?(d=!1,u=Lt(c,!0)):h?(d=!1,u=$t(c,!0)):u=[]:function(t){if(!Yt(t)||"[object Object]"!=st(t))return!1;var e=Ht(t);if(null===e)return!0;var n=re.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&ie.call(n)==oe}(c)||qt(c)?(u=s,qt(s)?u=ye(s):ct(s)&&!lt(s)||(u=function(t){return"function"!=typeof t.constructor||Ut(t)?{}:Ft(Ht(t))}(c))):d=!1}d&&(a.set(c,u),r(u,c,i,o,a),a.delete(c)),Bt(t,n,u)}},we=function(t){return t},xe=function(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)},Ce=Math.max,ke=function(t){return function(){return t}},Te=Nt?function(t,e){return Nt(t,"toString",{configurable:!0,enumerable:!1,value:ke(e),writable:!0})}:we,Ee=Date.now,Oe=function(t){var e=0,n=0;return function(){var i=Ee(),r=16-(i-n);if(n=i,r>0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(Te),Se=function(t,e){return Oe(function(t,e,n){return e=Ce(void 0===e?t.length-1:e,0),function(){for(var i=arguments,r=-1,o=Ce(i.length-e,0),a=Array(o);++r<o;)a[r]=i[e+r];r=-1;for(var s=Array(e+1);++r<e;)s[r]=i[r];return s[e]=n(a),xe(t,this,s)}}(t,e,we),t+"")},Me=function(t){return Se((function(e,n){var i=-1,r=n.length,o=r>1?n[r-1]:void 0,a=r>2?n[2]:void 0;for(o=t.length>3&&"function"==typeof o?(r--,o):void 0,a&&function(t,e,n){if(!ct(n))return!1;var i=typeof e;return!!("number"==i?Kt(n)&&he(e,n.length):"string"==i&&e in n)&&U(n[e],t)}(n[0],n[1],a)&&(o=r<3?void 0:o,r=1),e=Object(e);++i<r;){var s=n[i];s&&t(e,s,i)}return e}))}((function(t,e,n){!function t(e,n,i,r,o){e!==n&&Pt(n,(function(a,s){if(ct(a))o||(o=new Dt),_e(e,n,s,i,t,r,o);else{var c=r?r(ue(e,s),a,s+"",e,n,o):void 0;void 0===c&&(c=a),Bt(e,s,c)}}),be)}(t,e,n)}));!function(t,e){void 0===e&&(e={});var n=e.insertAt;if("undefined"!=typeof document){var i=document.head||document.getElementsByTagName("head")[0],r=document.createElement("style");r.type="text/css","top"===n&&i.firstChild?i.insertBefore(r,i.firstChild):i.appendChild(r),r.styleSheet?r.styleSheet.cssText=t:r.appendChild(document.createTextNode(t))}}(".resize-observer[data-v-b329ee4c]{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:transparent;pointer-events:none;display:block;overflow:hidden;opacity:0}.resize-observer[data-v-b329ee4c] object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}");var De=T,Ne={install:function t(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!t.installed){t.installed=!0;var i={};Me(i,y,n),Ne.options=i,T.options=i,e.directive("tooltip",T),e.directive("close-popover",I),e.component("v-popover",z)}},get enabled(){return g.enabled},set enabled(t){g.enabled=t}},Ie=null;"undefined"!=typeof window?Ie=window.Vue:void 0!==t&&(Ie=t.Vue),Ie&&Ie.use(Ne)}).call(this,n(15))},function(t,e,n){"use strict";n.r(e);var i=n(5);n(32), +/** + * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net> + * + * @author Julius Härtl <jus@bitgrid.net> + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +i.a.options.defaultTemplate='<div class="vue-tooltip" role="tooltip" data-v-'.concat("6673a70",'><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'),i.a.options.defaultHtml=!1,e.default=i.a},function(t,e,n){"use strict";var i=n(3),r=n.n(i); +/** + * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */e.a={before:function(){this.$slots.default&&""!==this.text.trim()||(r.a.util.warn("".concat(this.$options.name," cannot be empty and requires a meaningful text content"),this),this.$destroy(),this.$el.remove())},beforeUpdate:function(){this.text=this.getText()},data:function(){return{text:this.getText()}},computed:{isLongText:function(){return this.text&&this.text.trim().length>20}},methods:{getText:function(){return this.$slots.default?this.$slots.default[0].text.trim():""}}}},function(t,e,n){"use strict";t.exports=function(t,e){return"string"!=typeof(t=t.__esModule?t.default:t)?t:(/^['"].*['"]$/.test(t)&&(t=t.slice(1,-1)),/["'() \t\n]/.test(t)||e?'"'.concat(t.replace(/"/g,'\\"').replace(/\n/g,"\\n"),'"'):t)}},function(t,e){t.exports="data:application/vnd.ms-fontobject;base64,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"},function(t,e){t.exports="data:font/woff;base64,d09GRgABAAAAAAlwAAoAAAAACSgAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAAA9AAAAGAAAABgdOOQiGNtYXAAAAFUAAABSgAAAUrqJOu8Z2x5ZgAAAqAAAAM8AAADPHQFn1loZWFkAAAF3AAAADYAAAA2JYpqu2hoZWEAAAYUAAAAJAAAACQnHBOAaG10eAAABjgAAAAaAAAAGhOHAABsb2NhAAAGVAAAABgAAAAYA5oEoG1heHAAAAZsAAAAIAAAACABGABXbmFtZQAABowAAAJGAAACRg0gUPlwb3N0AAAI1AAAAJwAAACc+8sNdgAEE4gBkAAFAAAMZQ2sAAACvAxlDawAAAlgAPUFCgAAAgAFAwAAAAAAAAAAAAAQAAAAAAAAAAAAAABQZkVkAEDqAeoLE4gAAAHCE4gAAAAAAAEAAAAAAAAAAAAAACAAAAAAAAMAAAADAAAAHAABAAAAAABEAAMAAQAAABwABAAoAAAABgAEAAEAAuoG6gv//wAA6gHqB///FgAV/wABAAAAAAAAAAABBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAADqYPQwAFAAsAAAkCEQkEEQkBDqb6ggV++7oERvqC+oIFfvu6BEYPQvqC+oIBOARGBEYBOPqC+oIBOARGBEYAAQAAAAANbhJQAAUAAAkBEQkBEQYbB1P3dAiMCcT4rf7ICIsIjP7HAAIAAAAAD98PQwAFAAsAAAkCEQkEEQkBBOIFfvqCBEb7ugV+BX/6gQRG+7oERgV+BX7+yPu6+7r+yAV+BX7+yPu6+7oAAQAAAAAOphJQAAUAAAkBEQkBEQ1u+K0Ii/d1CcQHUwE593T3dQE4AAEAAAAAERcRFwALAAAJCxEX/e36wPrA/e0FQPrAAhMFQAVAAhP6wASE/e0FQPrAAhMFQAVAAhP6wAVA/e36wAAB//8AABOTEuwAMwAAASIHDgEXFhcBISYHBgcGBwYUFxYXFhcWNyEBBgcGFxYXHgEXFhcWNzY3ATY3NicmJwEuAQpgZU9KRhASSAXX8eBNPjopJxQUFBQnKTo+TQ4g+ik3GhgDAxsZVjU3Oz46PzUH7TsVFRQVPPgTLHQS7Dk0rFlgR/oqARsYLiw5OHg4OSwuGBsC+ik1Pzs+Ojc2VhkaAwMYGTgH7DxRUE9SPAfsLTIAAAADAAAAABEXERcAAwAHAAsAAAERIREBESERAREhEQJxDqbxWg6m8VoOphEX/Y8Ccfnm/Y8Ccfnl/Y8CcQADAAAAABJQDDUAGAAxAEoAAAEiBw4BBwYWFx4BFxYyNz4BNzY0Jy4BJyYhIgcOAQcGFBceARcWMjc+ATc2NCcuAScmISIHDgEHBhQXHgEXFjI3PgE3NjQnLgEnJgOqgHRwrS8yATEvrXB0/3RwrS8yMi+tcHQFm390cK0wMTEwrXB0/nRwrTAxMTCtcHQFnIB0cK0vMTEvrXB0/3RwrS8yMi+tcHQMNTEwrXB0/nRwrTAxMTCtcHT+dHCtMDExMK1wdP50cK0wMTEwrXB0/nRwrTAxMTCtcHT+dHCtMDExMK1wdP50cK0wMQAAAAIAAAAAD98P3wADAAcAAAERIREhESERA6oE4gJxBOIP3/PLDDXzyww1AAAAAQAAAAARFxEXAAIAAAkCAnEOpvFaERf4rfitAAEAAAABAAAj5nnbXw889QALE4gAAAAA2ZVxpQAAAADZRJWl//8AABOTEuwAAAAIAAIAAAAAAAAAAQAAE4gAAAAAE4j////1E5MAAQAAAAAAAAAAAAAAAAAAAAIAAAAAE4gAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAAAiADYAWABsAIwA5gEEAXoBkAGeAAEAAAALAEsAAwAAAAAAAgAAAAoACgAAAP8AAAAAAAAAAAAQAMYAAQAAAAAAAQAMAAAAAQAAAAAAAgAHAAwAAQAAAAAAAwAMABMAAQAAAAAABAAMAB8AAQAAAAAABQALACsAAQAAAAAABgAMADYAAQAAAAAACgArAEIAAQAAAAAACwATAG0AAwABBAkAAQAYAIAAAwABBAkAAgAOAJgAAwABBAkAAwAYAKYAAwABBAkABAAYAL4AAwABBAkABQAWANYAAwABBAkABgAYAOwAAwABBAkACgBWAQQAAwABBAkACwAmAVppY29uZm9udC12dWVSZWd1bGFyaWNvbmZvbnQtdnVlaWNvbmZvbnQtdnVlVmVyc2lvbiAxLjBpY29uZm9udC12dWVHZW5lcmF0ZWQgYnkgc3ZnMnR0ZiBmcm9tIEZvbnRlbGxvIHByb2plY3QuaHR0cDovL2ZvbnRlbGxvLmNvbQBpAGMAbwBuAGYAbwBuAHQALQB2AHUAZQBSAGUAZwB1AGwAYQByAGkAYwBvAG4AZgBvAG4AdAAtAHYAdQBlAGkAYwBvAG4AZgBvAG4AdAAtAHYAdQBlAFYAZQByAHMAaQBvAG4AIAAxAC4AMABpAGMAbwBuAGYAbwBuAHQALQB2AHUAZQBHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAHMAdgBnADIAdAB0AGYAIABmAHIAbwBtACAARgBvAG4AdABlAGwAbABvACAAcAByAG8AagBlAGMAdAAuAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAAACAAAAAAAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAsAAAECAQMBBAEFAQYBBwEIAQkBCgELEWFycm93LWxlZnQtZG91YmxlCmFycm93LWxlZnQSYXJyb3ctcmlnaHQtZG91YmxlC2Fycm93LXJpZ2h0BWNsb3NlDGNvbmZpcm0tZmFkZQRtZW51BG1vcmUFcGF1c2UEcGxheQ=="},function(t,e){t.exports="data:font/ttf;base64,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"},function(t,e){t.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCIgPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48bWV0YWRhdGE+PC9tZXRhZGF0YT48ZGVmcz48Zm9udCBpZD0iaWNvbmZvbnQtdnVlIiBob3Jpei1hZHYteD0iNTAwMCI+PGZvbnQtZmFjZSBmb250LWZhbWlseT0iaWNvbmZvbnQtdnVlIiBmb250LXdlaWdodD0iNDAwIiBmb250LXN0cmV0Y2g9Im5vcm1hbCIgdW5pdHMtcGVyLWVtPSI1MDAwIiBwYW5vc2UtMT0iMiAwIDUgMyAwIDAgMCAwIDAgMCIgYXNjZW50PSI1MDAwIiBkZXNjZW50PSIwIiB4LWhlaWdodD0iMCIgYmJveD0iLTEgMCA1MDExIDQ4NDQiIHVuZGVybGluZS10aGlja25lc3M9IjAiIHVuZGVybGluZS1wb3NpdGlvbj0iNTAiIHVuaWNvZGUtcmFuZ2U9IlUrZWEwMS1lYTBiIiAvPjxtaXNzaW5nLWdseXBoIGhvcml6LWFkdi14PSIwIiAgLz48Z2x5cGggZ2x5cGgtbmFtZT0iYXJyb3ctbGVmdC1kb3VibGUiIHVuaWNvZGU9IiYjeGVhMDE7IiBkPSJNMzc1MCAzOTA2IGwtMTQwNiAtMTQwNiBsMTQwNiAtMTQwNiBsMCAzMTIgbC0xMDk0IDEwOTQgbDEwOTQgMTA5NCBsMCAzMTIgWk0yMzQ0IDM5MDYgbC0xNDA2IC0xNDA2IGwxNDA2IC0xNDA2IGwwIDMxMiBsLTEwOTQgMTA5NCBsMTA5NCAxMDk0IGwwIDMxMiBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJhcnJvdy1sZWZ0IiB1bmljb2RlPSImI3hlYTAyOyIgZD0iTTE1NjMgMjUwMCBsMTg3NSAtMTg3NSBsMCAtMzEyIGwtMjE4OCAyMTg3IGwyMTg4IDIxODggbDAgLTMxMyBsLTE4NzUgLTE4NzUgWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0iYXJyb3ctcmlnaHQtZG91YmxlIiB1bmljb2RlPSImI3hlYTAzOyIgZD0iTTEyNTAgMTA5NCBsMTQwNiAxNDA2IGwtMTQwNiAxNDA2IGwwIC0zMTIgbDEwOTQgLTEwOTQgbC0xMDk0IC0xMDk0IGwwIC0zMTIgWk0yNjU2IDEwOTQgbDE0MDcgMTQwNiBsLTE0MDcgMTQwNiBsMCAtMzEyIGwxMDk0IC0xMDk0IGwtMTA5NCAtMTA5NCBsMCAtMzEyIFoiIC8+PGdseXBoIGdseXBoLW5hbWU9ImFycm93LXJpZ2h0IiB1bmljb2RlPSImI3hlYTA0OyIgZD0iTTM0MzggMjUwMCBsLTE4NzUgMTg3NSBsMCAzMTMgbDIxODcgLTIxODggbC0yMTg3IC0yMTg3IGwwIDMxMiBsMTg3NSAxODc1IFoiIC8+PGdseXBoIGdseXBoLW5hbWU9ImNsb3NlIiB1bmljb2RlPSImI3hlYTA1OyIgZD0iTTQzNzUgMTE1NiBsLTUzMSAtNTMxIGwtMTM0NCAxMzQ0IGwtMTM0NCAtMTM0NCBsLTUzMSA1MzEgbDEzNDQgMTM0NCBsLTEzNDQgMTM0NCBsNTMxIDUzMSBsMTM0NCAtMTM0NCBsMTM0NCAxMzQ0IGw1MzEgLTUzMSBsLTEzNDQgLTEzNDQgbDEzNDQgLTEzNDQgWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0iY29uZmlybS1mYWRlIiB1bmljb2RlPSImI3hlYTA2OyYjeGVhMDc7IiBkPSJNMjY1NiA0ODQ0IHEtMTAxIDAgLTE4MCAtNTcgcS03NCAtNTIgLTEwOSAtMTM4IHEtMzUgLTg2IC0xOSAtMTc1IHExOCAtOTYgOTAgLTE2NyBsMTQ5NSAtMTQ5NCBsLTM2MTYgMCBxLTc3IDEgLTEzOSAtMjYgcS01OCAtMjQgLTk5IC03MCBxLTM5IC00NCAtNTkgLTEwMSBxLTIwIC01NiAtMjAgLTExNiBxMCAtNjAgMjAgLTExNiBxMjAgLTU3IDU5IC0xMDEgcTQxIC00NiA5OSAtNzAgcTYyIC0yNyAxMzkgLTI1IGwzNjE2IDAgbC0xNDk1IC0xNDk1IHEtNTUgLTUzIC04MSAtMTE2IHEtMjQgLTU5IC0yMSAtMTIxIHEzIC01OCAzMCAtMTEzIHEyNSAtNTQgNjggLTk3IHE0MyAtNDMgOTYgLTY4IHE1NSAtMjYgMTE0IC0yOSBxNjIgLTMgMTIwIDIxIHE2MyAyNSAxMTYgODEgbDIwMjkgMjAyOCBxNTkgNjAgODAgMTQxIHEyMSA4MCAxIDE1OSBxLTIxIDgyIC04MSAxNDIgbC0yMDI5IDIwMjggcS00NCA0NSAtMTAyIDcwIHEtNTggMjUgLTEyMiAyNSBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJtZW51IiB1bmljb2RlPSImI3hlYTA4OyIgZD0iTTYyNSA0Mzc1IGwwIC02MjUgbDM3NTAgMCBsMCA2MjUgbC0zNzUwIDAgWk02MjUgMjgxMyBsMCAtNjI1IGwzNzUwIDAgbDAgNjI1IGwtMzc1MCAwIFpNNjI1IDEyNTAgbDAgLTYyNSBsMzc1MCAwIGwwIDYyNSBsLTM3NTAgMCBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJtb3JlIiB1bmljb2RlPSImI3hlYTA5OyIgZD0iTTkzOCAzMTI1IHEtMTI4IDAgLTI0NCAtNDkgcS0xMTIgLTQ4IC0xOTguNSAtMTM0LjUgcS04Ni41IC04Ni41IC0xMzMuNSAtMTk4LjUgcS01MCAtMTE2IC00OS41IC0yNDMgcTAuNSAtMTI3IDQ5LjUgLTI0MyBxNDcgLTExMiAxMzMuNSAtMTk4LjUgcTg2LjUgLTg2LjUgMTk4LjUgLTEzNC41IHExMTYgLTQ5IDI0My41IC00OSBxMTI3LjUgMCAyNDMuNSA0OSBxMTEyIDQ4IDE5OC41IDEzNC41IHE4Ni41IDg2LjUgMTMzLjUgMTk4LjUgcTUwIDExNiA1MCAyNDMgcTAgMTI3IC01MCAyNDMgcS00NyAxMTIgLTEzMy41IDE5OC41IHEtODYuNSA4Ni41IC0xOTguNSAxMzQuNSBxLTExNiA0OSAtMjQzIDQ5IFpNMjUwMCAzMTI1IHEtMTI3IDAgLTI0MyAtNDkgcS0xMTIgLTQ4IC0xOTguNSAtMTM0LjUgcS04Ni41IC04Ni41IC0xMzQuNSAtMTk4LjUgcS00OSAtMTE2IC00OSAtMjQzIHEwIC0xMjcgNDkgLTI0MyBxNDggLTExMiAxMzQuNSAtMTk4LjUgcTg2LjUgLTg2LjUgMTk4LjUgLTEzNC41IHExMTYgLTQ5IDI0MyAtNDkgcTEyNyAwIDI0MyA0OSBxMTEyIDQ4IDE5OC41IDEzNC41IHE4Ni41IDg2LjUgMTM0LjUgMTk4LjUgcTQ5IDExNiA0OSAyNDMgcTAgMTI3IC00OSAyNDMgcS00OCAxMTIgLTEzNC41IDE5OC41IHEtODYuNSA4Ni41IC0xOTguNSAxMzQuNSBxLTExNiA0OSAtMjQzIDQ5IFpNNDA2MyAzMTI1IHEtMTI4IDAgLTI0NCAtNDkgcS0xMTIgLTQ4IC0xOTguNSAtMTM0LjUgcS04Ni41IC04Ni41IC0xMzMuNSAtMTk4LjUgcS00OSAtMTE2IC00OSAtMjQzIHEwIC0xMjcgNDkgLTI0MyBxNDcgLTExMiAxMzMuNSAtMTk4LjUgcTg2LjUgLTg2LjUgMTk4LjUgLTEzNC41IHExMTYgLTQ5IDI0My41IC00OSBxMTI3LjUgMCAyNDMuNSA0OSBxMTEyIDQ4IDE5OC41IDEzNC41IHE4Ni41IDg2LjUgMTMzLjUgMTk4LjUgcTUwIDExNiA1MCAyNDMgcTAgMTI3IC01MCAyNDMgcS00NyAxMTIgLTEzMy41IDE5OC41IHEtODYuNSA4Ni41IC0xOTguNSAxMzQuNSBxLTExNiA0OSAtMjQzIDQ5IFoiIC8+PGdseXBoIGdseXBoLW5hbWU9InBhdXNlIiB1bmljb2RlPSImI3hlYTBhOyIgZD0iTTkzOCA0MDYzIGwwIC0zMTI1IGwxMjUwIDAgbDAgMzEyNSBsLTEyNTAgMCBaTTI4MTMgNDA2MyBsMCAtMzEyNSBsMTI1MCAwIGwwIDMxMjUgbC0xMjUwIDAgWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0icGxheSIgdW5pY29kZT0iJiN4ZWEwYjsiIGQ9Ik02MjUgNDM3NSBsMzc1MCAtMTg3NSBsLTM3NTAgLTE4NzUgbDAgMzc1MCBaIiAvPjwvZm9udD48L2RlZnM+PC9zdmc+"},function(t,e){function n(t){return"function"==typeof t.value||(console.warn("[Vue-click-outside:] provided expression",t.expression,"is not a function."),!1)}function i(t){return void 0!==t.componentInstance&&t.componentInstance.$isServer}t.exports={bind:function(t,e,r){function o(e){if(r.context){var n=e.path||e.composedPath&&e.composedPath();n&&n.length>0&&n.unshift(e.target),t.contains(e.target)||function(t,e){if(!t||!e)return!1;for(var n=0,i=e.length;n<i;n++)try{if(t.contains(e[n]))return!0;if(e[n].contains(t))return!1}catch(t){return!1}return!1}(r.context.popupItem,n)||t.__vueClickOutside__.callback(e)}}n(e)&&(t.__vueClickOutside__={handler:o,callback:e.value},!i(r)&&document.addEventListener("click",o))},update:function(t,e){n(e)&&(t.__vueClickOutside__.callback=e.value)},unbind:function(t,e,n){!i(n)&&document.removeEventListener("click",t.__vueClickOutside__.handler),delete t.__vueClickOutside__}}},function(t,e,n){"use strict";var i=n(7); +/** + * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */e.a={mixins:[i.a],props:{icon:{type:String,default:"",required:!0},title:{type:String,default:""}},computed:{isIconUrl:function(){try{return new URL(this.icon)}catch(t){return!1}}},methods:{onClick:function(t){this.$emit("click",t)}}}},function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){"use strict";(function(t){for( +/**! + * @fileOverview Kickass library to create and place poppers near their reference elements. + * @version 1.15.0 + * @license + * Copyright (c) 2016 Federico Zivolo and contributors + * + * 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. + */ +var n="undefined"!=typeof window&&"undefined"!=typeof document,i=["Edge","Trident","Firefox"],r=0,o=0;o<i.length;o+=1)if(n&&navigator.userAgent.indexOf(i[o])>=0){r=1;break}var a=n&&window.Promise?function(t){var e=!1;return function(){e||(e=!0,window.Promise.resolve().then((function(){e=!1,t()})))}}:function(t){var e=!1;return function(){e||(e=!0,setTimeout((function(){e=!1,t()}),r))}};function s(t){return t&&"[object Function]"==={}.toString.call(t)}function c(t,e){if(1!==t.nodeType)return[];var n=t.ownerDocument.defaultView.getComputedStyle(t,null);return e?n[e]:n}function l(t){return"HTML"===t.nodeName?t:t.parentNode||t.host}function u(t){if(!t)return document.body;switch(t.nodeName){case"HTML":case"BODY":return t.ownerDocument.body;case"#document":return t.body}var e=c(t),n=e.overflow,i=e.overflowX,r=e.overflowY;return/(auto|scroll|overlay)/.test(n+r+i)?t:u(l(t))}var d=n&&!(!window.MSInputMethodContext||!document.documentMode),p=n&&/MSIE 10/.test(navigator.userAgent);function f(t){return 11===t?d:10===t?p:d||p}function h(t){if(!t)return document.documentElement;for(var e=f(10)?document.body:null,n=t.offsetParent||null;n===e&&t.nextElementSibling;)n=(t=t.nextElementSibling).offsetParent;var i=n&&n.nodeName;return i&&"BODY"!==i&&"HTML"!==i?-1!==["TH","TD","TABLE"].indexOf(n.nodeName)&&"static"===c(n,"position")?h(n):n:t?t.ownerDocument.documentElement:document.documentElement}function v(t){return null!==t.parentNode?v(t.parentNode):t}function m(t,e){if(!(t&&t.nodeType&&e&&e.nodeType))return document.documentElement;var n=t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING,i=n?t:e,r=n?e:t,o=document.createRange();o.setStart(i,0),o.setEnd(r,0);var a,s,c=o.commonAncestorContainer;if(t!==c&&e!==c||i.contains(r))return"BODY"===(s=(a=c).nodeName)||"HTML"!==s&&h(a.firstElementChild)!==a?h(c):c;var l=v(t);return l.host?m(l.host,e):m(t,v(e).host)}function A(t){var e="top"===(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"top")?"scrollTop":"scrollLeft",n=t.nodeName;if("BODY"===n||"HTML"===n){var i=t.ownerDocument.documentElement;return(t.ownerDocument.scrollingElement||i)[e]}return t[e]}function g(t,e){var n="x"===e?"Left":"Top",i="Left"===n?"Right":"Bottom";return parseFloat(t["border"+n+"Width"],10)+parseFloat(t["border"+i+"Width"],10)}function b(t,e,n,i){return Math.max(e["offset"+t],e["scroll"+t],n["client"+t],n["offset"+t],n["scroll"+t],f(10)?parseInt(n["offset"+t])+parseInt(i["margin"+("Height"===t?"Top":"Left")])+parseInt(i["margin"+("Height"===t?"Bottom":"Right")]):0)}function y(t){var e=t.body,n=t.documentElement,i=f(10)&&getComputedStyle(n);return{height:b("Height",e,n,i),width:b("Width",e,n,i)}}var _=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},w=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}(),x=function(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t},C=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])}return t};function k(t){return C({},t,{right:t.left+t.width,bottom:t.top+t.height})}function T(t){var e={};try{if(f(10)){e=t.getBoundingClientRect();var n=A(t,"top"),i=A(t,"left");e.top+=n,e.left+=i,e.bottom+=n,e.right+=i}else e=t.getBoundingClientRect()}catch(t){}var r={left:e.left,top:e.top,width:e.right-e.left,height:e.bottom-e.top},o="HTML"===t.nodeName?y(t.ownerDocument):{},a=o.width||t.clientWidth||r.right-r.left,s=o.height||t.clientHeight||r.bottom-r.top,l=t.offsetWidth-a,u=t.offsetHeight-s;if(l||u){var d=c(t);l-=g(d,"x"),u-=g(d,"y"),r.width-=l,r.height-=u}return k(r)}function E(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=f(10),r="HTML"===e.nodeName,o=T(t),a=T(e),s=u(t),l=c(e),d=parseFloat(l.borderTopWidth,10),p=parseFloat(l.borderLeftWidth,10);n&&r&&(a.top=Math.max(a.top,0),a.left=Math.max(a.left,0));var h=k({top:o.top-a.top-d,left:o.left-a.left-p,width:o.width,height:o.height});if(h.marginTop=0,h.marginLeft=0,!i&&r){var v=parseFloat(l.marginTop,10),m=parseFloat(l.marginLeft,10);h.top-=d-v,h.bottom-=d-v,h.left-=p-m,h.right-=p-m,h.marginTop=v,h.marginLeft=m}return(i&&!n?e.contains(s):e===s&&"BODY"!==s.nodeName)&&(h=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=A(e,"top"),r=A(e,"left"),o=n?-1:1;return t.top+=i*o,t.bottom+=i*o,t.left+=r*o,t.right+=r*o,t}(h,e)),h}function O(t){if(!t||!t.parentElement||f())return document.documentElement;for(var e=t.parentElement;e&&"none"===c(e,"transform");)e=e.parentElement;return e||document.documentElement}function S(t,e,n,i){var r=arguments.length>4&&void 0!==arguments[4]&&arguments[4],o={top:0,left:0},a=r?O(t):m(t,e);if("viewport"===i)o=function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=t.ownerDocument.documentElement,i=E(t,n),r=Math.max(n.clientWidth,window.innerWidth||0),o=Math.max(n.clientHeight,window.innerHeight||0),a=e?0:A(n),s=e?0:A(n,"left");return k({top:a-i.top+i.marginTop,left:s-i.left+i.marginLeft,width:r,height:o})}(a,r);else{var s=void 0;"scrollParent"===i?"BODY"===(s=u(l(e))).nodeName&&(s=t.ownerDocument.documentElement):s="window"===i?t.ownerDocument.documentElement:i;var d=E(s,a,r);if("HTML"!==s.nodeName||function t(e){var n=e.nodeName;if("BODY"===n||"HTML"===n)return!1;if("fixed"===c(e,"position"))return!0;var i=l(e);return!!i&&t(i)}(a))o=d;else{var p=y(t.ownerDocument),f=p.height,h=p.width;o.top+=d.top-d.marginTop,o.bottom=f+d.top,o.left+=d.left-d.marginLeft,o.right=h+d.left}}var v="number"==typeof(n=n||0);return o.left+=v?n:n.left||0,o.top+=v?n:n.top||0,o.right-=v?n:n.right||0,o.bottom-=v?n:n.bottom||0,o}function M(t,e,n,i,r){var o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===t.indexOf("auto"))return t;var a=S(n,i,o,r),s={top:{width:a.width,height:e.top-a.top},right:{width:a.right-e.right,height:a.height},bottom:{width:a.width,height:a.bottom-e.bottom},left:{width:e.left-a.left,height:a.height}},c=Object.keys(s).map((function(t){return C({key:t},s[t],{area:(e=s[t],e.width*e.height)});var e})).sort((function(t,e){return e.area-t.area})),l=c.filter((function(t){var e=t.width,i=t.height;return e>=n.clientWidth&&i>=n.clientHeight})),u=l.length>0?l[0].key:c[0].key,d=t.split("-")[1];return u+(d?"-"+d:"")}function D(t,e,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;return E(n,i?O(e):m(e,n),i)}function N(t){var e=t.ownerDocument.defaultView.getComputedStyle(t),n=parseFloat(e.marginTop||0)+parseFloat(e.marginBottom||0),i=parseFloat(e.marginLeft||0)+parseFloat(e.marginRight||0);return{width:t.offsetWidth+i,height:t.offsetHeight+n}}function I(t){var e={left:"right",right:"left",bottom:"top",top:"bottom"};return t.replace(/left|right|bottom|top/g,(function(t){return e[t]}))}function B(t,e,n){n=n.split("-")[0];var i=N(t),r={width:i.width,height:i.height},o=-1!==["right","left"].indexOf(n),a=o?"top":"left",s=o?"left":"top",c=o?"height":"width",l=o?"width":"height";return r[a]=e[a]+e[c]/2-i[c]/2,r[s]=n===s?e[s]-i[l]:e[I(s)],r}function P(t,e){return Array.prototype.find?t.find(e):t.filter(e)[0]}function L(t,e,n){return(void 0===n?t:t.slice(0,function(t,e,n){if(Array.prototype.findIndex)return t.findIndex((function(t){return t[e]===n}));var i=P(t,(function(t){return t[e]===n}));return t.indexOf(i)}(t,"name",n))).forEach((function(t){t.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var n=t.function||t.fn;t.enabled&&s(n)&&(e.offsets.popper=k(e.offsets.popper),e.offsets.reference=k(e.offsets.reference),e=n(e,t))})),e}function j(t,e){return t.some((function(t){var n=t.name;return t.enabled&&n===e}))}function $(t){for(var e=[!1,"ms","Webkit","Moz","O"],n=t.charAt(0).toUpperCase()+t.slice(1),i=0;i<e.length;i++){var r=e[i],o=r?""+r+n:t;if(void 0!==document.body.style[o])return o}return null}function R(t){var e=t.ownerDocument;return e?e.defaultView:window}function F(){var t,e;this.state.eventsEnabled&&(cancelAnimationFrame(this.scheduleUpdate),this.state=(t=this.reference,e=this.state,R(t).removeEventListener("resize",e.updateBound),e.scrollParents.forEach((function(t){t.removeEventListener("scroll",e.updateBound)})),e.updateBound=null,e.scrollParents=[],e.scrollElement=null,e.eventsEnabled=!1,e))}function H(t){return""!==t&&!isNaN(parseFloat(t))&&isFinite(t)}function z(t,e){Object.keys(e).forEach((function(n){var i="";-1!==["width","height","top","right","bottom","left"].indexOf(n)&&H(e[n])&&(i="px"),t.style[n]=e[n]+i}))}var U=n&&/Firefox/i.test(navigator.userAgent);function Y(t,e,n){var i=P(t,(function(t){return t.name===e})),r=!!i&&t.some((function(t){return t.name===n&&t.enabled&&t.order<i.order}));if(!r){var o="`"+e+"`",a="`"+n+"`";console.warn(a+" modifier is required by "+o+" modifier in order to work, be sure to include it before "+o+"!")}return r}var V=["auto-start","auto","auto-end","top-start","top","top-end","right-start","right","right-end","bottom-end","bottom","bottom-start","left-end","left","left-start"],Q=V.slice(3);function G(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=Q.indexOf(t),i=Q.slice(n+1).concat(Q.slice(0,n));return e?i.reverse():i}var W="flip",q="clockwise",X="counterclockwise";var Z={placement:"bottom",positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(t){var e=t.placement,n=e.split("-")[0],i=e.split("-")[1];if(i){var r=t.offsets,o=r.reference,a=r.popper,s=-1!==["bottom","top"].indexOf(n),c=s?"left":"top",l=s?"width":"height",u={start:x({},c,o[c]),end:x({},c,o[c]+o[l]-a[l])};t.offsets.popper=C({},a,u[i])}return t}},offset:{order:200,enabled:!0,fn:function(t,e){var n,i=e.offset,r=t.placement,o=t.offsets,a=o.popper,s=o.reference,c=r.split("-")[0];return n=H(+i)?[+i,0]:function(t,e,n,i){var r=[0,0],o=-1!==["right","left"].indexOf(i),a=t.split(/(\+|\-)/).map((function(t){return t.trim()})),s=a.indexOf(P(a,(function(t){return-1!==t.search(/,|\s/)})));a[s]&&-1===a[s].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var c=/\s*,\s*|\s+/,l=-1!==s?[a.slice(0,s).concat([a[s].split(c)[0]]),[a[s].split(c)[1]].concat(a.slice(s+1))]:[a];return(l=l.map((function(t,i){var r=(1===i?!o:o)?"height":"width",a=!1;return t.reduce((function(t,e){return""===t[t.length-1]&&-1!==["+","-"].indexOf(e)?(t[t.length-1]=e,a=!0,t):a?(t[t.length-1]+=e,a=!1,t):t.concat(e)}),[]).map((function(t){return function(t,e,n,i){var r=t.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),o=+r[1],a=r[2];if(!o)return t;if(0===a.indexOf("%")){var s=void 0;switch(a){case"%p":s=n;break;case"%":case"%r":default:s=i}return k(s)[e]/100*o}return"vh"===a||"vw"===a?("vh"===a?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*o:o}(t,r,e,n)}))}))).forEach((function(t,e){t.forEach((function(n,i){H(n)&&(r[e]+=n*("-"===t[i-1]?-1:1))}))})),r}(i,a,s,c),"left"===c?(a.top+=n[0],a.left-=n[1]):"right"===c?(a.top+=n[0],a.left+=n[1]):"top"===c?(a.left+=n[0],a.top-=n[1]):"bottom"===c&&(a.left+=n[0],a.top+=n[1]),t.popper=a,t},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(t,e){var n=e.boundariesElement||h(t.instance.popper);t.instance.reference===n&&(n=h(n));var i=$("transform"),r=t.instance.popper.style,o=r.top,a=r.left,s=r[i];r.top="",r.left="",r[i]="";var c=S(t.instance.popper,t.instance.reference,e.padding,n,t.positionFixed);r.top=o,r.left=a,r[i]=s,e.boundaries=c;var l=e.priority,u=t.offsets.popper,d={primary:function(t){var n=u[t];return u[t]<c[t]&&!e.escapeWithReference&&(n=Math.max(u[t],c[t])),x({},t,n)},secondary:function(t){var n="right"===t?"left":"top",i=u[n];return u[t]>c[t]&&!e.escapeWithReference&&(i=Math.min(u[n],c[t]-("right"===t?u.width:u.height))),x({},n,i)}};return l.forEach((function(t){var e=-1!==["left","top"].indexOf(t)?"primary":"secondary";u=C({},u,d[e](t))})),t.offsets.popper=u,t},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(t){var e=t.offsets,n=e.popper,i=e.reference,r=t.placement.split("-")[0],o=Math.floor,a=-1!==["top","bottom"].indexOf(r),s=a?"right":"bottom",c=a?"left":"top",l=a?"width":"height";return n[s]<o(i[c])&&(t.offsets.popper[c]=o(i[c])-n[l]),n[c]>o(i[s])&&(t.offsets.popper[c]=o(i[s])),t}},arrow:{order:500,enabled:!0,fn:function(t,e){var n;if(!Y(t.instance.modifiers,"arrow","keepTogether"))return t;var i=e.element;if("string"==typeof i){if(!(i=t.instance.popper.querySelector(i)))return t}else if(!t.instance.popper.contains(i))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),t;var r=t.placement.split("-")[0],o=t.offsets,a=o.popper,s=o.reference,l=-1!==["left","right"].indexOf(r),u=l?"height":"width",d=l?"Top":"Left",p=d.toLowerCase(),f=l?"left":"top",h=l?"bottom":"right",v=N(i)[u];s[h]-v<a[p]&&(t.offsets.popper[p]-=a[p]-(s[h]-v)),s[p]+v>a[h]&&(t.offsets.popper[p]+=s[p]+v-a[h]),t.offsets.popper=k(t.offsets.popper);var m=s[p]+s[u]/2-v/2,A=c(t.instance.popper),g=parseFloat(A["margin"+d],10),b=parseFloat(A["border"+d+"Width"],10),y=m-t.offsets.popper[p]-g-b;return y=Math.max(Math.min(a[u]-v,y),0),t.arrowElement=i,t.offsets.arrow=(x(n={},p,Math.round(y)),x(n,f,""),n),t},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(t,e){if(j(t.instance.modifiers,"inner"))return t;if(t.flipped&&t.placement===t.originalPlacement)return t;var n=S(t.instance.popper,t.instance.reference,e.padding,e.boundariesElement,t.positionFixed),i=t.placement.split("-")[0],r=I(i),o=t.placement.split("-")[1]||"",a=[];switch(e.behavior){case W:a=[i,r];break;case q:a=G(i);break;case X:a=G(i,!0);break;default:a=e.behavior}return a.forEach((function(s,c){if(i!==s||a.length===c+1)return t;i=t.placement.split("-")[0],r=I(i);var l=t.offsets.popper,u=t.offsets.reference,d=Math.floor,p="left"===i&&d(l.right)>d(u.left)||"right"===i&&d(l.left)<d(u.right)||"top"===i&&d(l.bottom)>d(u.top)||"bottom"===i&&d(l.top)<d(u.bottom),f=d(l.left)<d(n.left),h=d(l.right)>d(n.right),v=d(l.top)<d(n.top),m=d(l.bottom)>d(n.bottom),A="left"===i&&f||"right"===i&&h||"top"===i&&v||"bottom"===i&&m,g=-1!==["top","bottom"].indexOf(i),b=!!e.flipVariations&&(g&&"start"===o&&f||g&&"end"===o&&h||!g&&"start"===o&&v||!g&&"end"===o&&m),y=!!e.flipVariationsByContent&&(g&&"start"===o&&h||g&&"end"===o&&f||!g&&"start"===o&&m||!g&&"end"===o&&v),_=b||y;(p||A||_)&&(t.flipped=!0,(p||A)&&(i=a[c+1]),_&&(o=function(t){return"end"===t?"start":"start"===t?"end":t}(o)),t.placement=i+(o?"-"+o:""),t.offsets.popper=C({},t.offsets.popper,B(t.instance.popper,t.offsets.reference,t.placement)),t=L(t.instance.modifiers,t,"flip"))})),t},behavior:"flip",padding:5,boundariesElement:"viewport",flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:function(t){var e=t.placement,n=e.split("-")[0],i=t.offsets,r=i.popper,o=i.reference,a=-1!==["left","right"].indexOf(n),s=-1===["top","left"].indexOf(n);return r[a?"left":"top"]=o[n]-(s?r[a?"width":"height"]:0),t.placement=I(e),t.offsets.popper=k(r),t}},hide:{order:800,enabled:!0,fn:function(t){if(!Y(t.instance.modifiers,"hide","preventOverflow"))return t;var e=t.offsets.reference,n=P(t.instance.modifiers,(function(t){return"preventOverflow"===t.name})).boundaries;if(e.bottom<n.top||e.left>n.right||e.top>n.bottom||e.right<n.left){if(!0===t.hide)return t;t.hide=!0,t.attributes["x-out-of-boundaries"]=""}else{if(!1===t.hide)return t;t.hide=!1,t.attributes["x-out-of-boundaries"]=!1}return t}},computeStyle:{order:850,enabled:!0,fn:function(t,e){var n=e.x,i=e.y,r=t.offsets.popper,o=P(t.instance.modifiers,(function(t){return"applyStyle"===t.name})).gpuAcceleration;void 0!==o&&console.warn("WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!");var a,s,c=void 0!==o?o:e.gpuAcceleration,l=h(t.instance.popper),u=T(l),d={position:r.position},p=function(t,e){var n=t.offsets,i=n.popper,r=n.reference,o=Math.round,a=Math.floor,s=function(t){return t},c=o(r.width),l=o(i.width),u=-1!==["left","right"].indexOf(t.placement),d=-1!==t.placement.indexOf("-"),p=e?u||d||c%2==l%2?o:a:s,f=e?o:s;return{left:p(c%2==1&&l%2==1&&!d&&e?i.left-1:i.left),top:f(i.top),bottom:f(i.bottom),right:p(i.right)}}(t,window.devicePixelRatio<2||!U),f="bottom"===n?"top":"bottom",v="right"===i?"left":"right",m=$("transform");if(s="bottom"===f?"HTML"===l.nodeName?-l.clientHeight+p.bottom:-u.height+p.bottom:p.top,a="right"===v?"HTML"===l.nodeName?-l.clientWidth+p.right:-u.width+p.right:p.left,c&&m)d[m]="translate3d("+a+"px, "+s+"px, 0)",d[f]=0,d[v]=0,d.willChange="transform";else{var A="bottom"===f?-1:1,g="right"===v?-1:1;d[f]=s*A,d[v]=a*g,d.willChange=f+", "+v}var b={"x-placement":t.placement};return t.attributes=C({},b,t.attributes),t.styles=C({},d,t.styles),t.arrowStyles=C({},t.offsets.arrow,t.arrowStyles),t},gpuAcceleration:!0,x:"bottom",y:"right"},applyStyle:{order:900,enabled:!0,fn:function(t){var e,n;return z(t.instance.popper,t.styles),e=t.instance.popper,n=t.attributes,Object.keys(n).forEach((function(t){!1!==n[t]?e.setAttribute(t,n[t]):e.removeAttribute(t)})),t.arrowElement&&Object.keys(t.arrowStyles).length&&z(t.arrowElement,t.arrowStyles),t},onLoad:function(t,e,n,i,r){var o=D(r,e,t,n.positionFixed),a=M(n.placement,o,e,t,n.modifiers.flip.boundariesElement,n.modifiers.flip.padding);return e.setAttribute("x-placement",a),z(e,{position:n.positionFixed?"fixed":"absolute"}),n},gpuAcceleration:void 0}}},K=function(){function t(e,n){var i=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};_(this,t),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=a(this.update.bind(this)),this.options=C({},t.Defaults,r),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=e&&e.jquery?e[0]:e,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(C({},t.Defaults.modifiers,r.modifiers)).forEach((function(e){i.options.modifiers[e]=C({},t.Defaults.modifiers[e]||{},r.modifiers?r.modifiers[e]:{})})),this.modifiers=Object.keys(this.options.modifiers).map((function(t){return C({name:t},i.options.modifiers[t])})).sort((function(t,e){return t.order-e.order})),this.modifiers.forEach((function(t){t.enabled&&s(t.onLoad)&&t.onLoad(i.reference,i.popper,i.options,t,i.state)})),this.update();var o=this.options.eventsEnabled;o&&this.enableEventListeners(),this.state.eventsEnabled=o}return w(t,[{key:"update",value:function(){return function(){if(!this.state.isDestroyed){var t={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};t.offsets.reference=D(this.state,this.popper,this.reference,this.options.positionFixed),t.placement=M(this.options.placement,t.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),t.originalPlacement=t.placement,t.positionFixed=this.options.positionFixed,t.offsets.popper=B(this.popper,t.offsets.reference,t.placement),t.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",t=L(this.modifiers,t),this.state.isCreated?this.options.onUpdate(t):(this.state.isCreated=!0,this.options.onCreate(t))}}.call(this)}},{key:"destroy",value:function(){return function(){return this.state.isDestroyed=!0,j(this.modifiers,"applyStyle")&&(this.popper.removeAttribute("x-placement"),this.popper.style.position="",this.popper.style.top="",this.popper.style.left="",this.popper.style.right="",this.popper.style.bottom="",this.popper.style.willChange="",this.popper.style[$("transform")]=""),this.disableEventListeners(),this.options.removeOnDestroy&&this.popper.parentNode.removeChild(this.popper),this}.call(this)}},{key:"enableEventListeners",value:function(){return function(){this.state.eventsEnabled||(this.state=function(t,e,n,i){n.updateBound=i,R(t).addEventListener("resize",n.updateBound,{passive:!0});var r=u(t);return function t(e,n,i,r){var o="BODY"===e.nodeName,a=o?e.ownerDocument.defaultView:e;a.addEventListener(n,i,{passive:!0}),o||t(u(a.parentNode),n,i,r),r.push(a)}(r,"scroll",n.updateBound,n.scrollParents),n.scrollElement=r,n.eventsEnabled=!0,n}(this.reference,this.options,this.state,this.scheduleUpdate))}.call(this)}},{key:"disableEventListeners",value:function(){return F.call(this)}}]),t}();K.Utils=("undefined"!=typeof window?window:t).PopperUtils,K.placements=V,K.Defaults=Z,e.a=K}).call(this,n(15))},function(t,e,n){"use strict"; +/** + * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */e.a=function(t){return Math.random().toString(36).replace(/[^a-z]+/g,"").substr(0,t||5)}},function(t,e,n){var i=n(42);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("6d914181",i,!0,{})},function(t,e,n){var i=n(44);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("2fc216d3",i,!0,{})},function(t,e,n){var i=n(46);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("95523852",i,!0,{})},function(t,e,n){"use strict";(function(t){n.d(e,"a",(function(){return r}));var i=void 0;var r={render:function(){var t=this.$createElement;return(this._self._c||t)("div",{staticClass:"resize-observer",attrs:{tabindex:"-1"}})},staticRenderFns:[],_scopeId:"data-v-b329ee4c",name:"resize-observer",methods:{compareAndNotify:function(){this._w===this.$el.offsetWidth&&this._h===this.$el.offsetHeight||(this._w=this.$el.offsetWidth,this._h=this.$el.offsetHeight,this.$emit("notify"))},addResizeHandlers:function(){this._resizeObject.contentDocument.defaultView.addEventListener("resize",this.compareAndNotify),this.compareAndNotify()},removeResizeHandlers:function(){this._resizeObject&&this._resizeObject.onload&&(!i&&this._resizeObject.contentDocument&&this._resizeObject.contentDocument.defaultView.removeEventListener("resize",this.compareAndNotify),delete this._resizeObject.onload)}},mounted:function(){var t=this;(function t(){t.init||(t.init=!0,i=-1!==function(){var t=window.navigator.userAgent,e=t.indexOf("MSIE ");if(e>0)return parseInt(t.substring(e+5,t.indexOf(".",e)),10);if(t.indexOf("Trident/")>0){var n=t.indexOf("rv:");return parseInt(t.substring(n+3,t.indexOf(".",n)),10)}var i=t.indexOf("Edge/");return i>0?parseInt(t.substring(i+5,t.indexOf(".",i)),10):-1}())})(),this.$nextTick((function(){t._w=t.$el.offsetWidth,t._h=t.$el.offsetHeight}));var e=document.createElement("object");this._resizeObject=e,e.setAttribute("aria-hidden","true"),e.setAttribute("tabindex",-1),e.onload=this.addResizeHandlers,e.type="text/html",i&&this.$el.appendChild(e),e.data="about:blank",i||this.$el.appendChild(e)},beforeDestroy:function(){this.removeResizeHandlers()}},o={version:"0.4.5",install:function(t){t.component("resize-observer",r),t.component("ResizeObserver",r)}},a=null;"undefined"!=typeof window?a=window.Vue:void 0!==t&&(a=t.Vue),a&&a.use(o)}).call(this,n(15))},function(t,e,n){var i=n(81);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("1351c3b7",i,!0,{})},function(t,e,n){"use strict"; +/** + * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */e.a=function(t){t.mounted?Array.isArray(t.mounted)||(t.mounted=[t.mounted]):t.mounted=[],t.mounted.push((function(){this.$el.setAttribute("data-v-".concat("6673a70"),"")}))}},function(t,e,n){"use strict";n.r(e);var i={name:"PopoverMenuItem",props:{item:{type:Object,required:!0,default:function(){return{key:"nextcloud-link",href:"https://nextcloud.com",icon:"icon-links",text:"Nextcloud"}},validator:function(t){return!t.input||-1!==["text","checkbox"].indexOf(t.input)}}},computed:{key:function(){return this.item.key?this.item.key:Math.round(16*Math.random()*1e6).toString(16)},iconIsUrl:function(){try{return new URL(this.item.icon),!0}catch(t){return!1}}},methods:{action:function(t){this.item.action&&this.item.action(t)}}},r=(n(41),n(43),n(0)),o={name:"PopoverMenu",components:{PopoverMenuItem:Object(r.a)(i,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("li",[t.item.href?n("a",{staticClass:"focusable",attrs:{href:t.item.href?t.item.href:"#",target:t.item.target?t.item.target:"",download:t.item.download,rel:"noreferrer noopener"},on:{click:t.action}},[t.iconIsUrl?n("img",{attrs:{src:t.item.icon}}):n("span",{class:t.item.icon}),t._v(" "),t.item.text&&t.item.longtext?n("p",[n("strong",{staticClass:"menuitem-text"},[t._v("\n\t\t\t\t"+t._s(t.item.text)+"\n\t\t\t")]),n("br"),t._v(" "),n("span",{staticClass:"menuitem-text-detail"},[t._v("\n\t\t\t\t"+t._s(t.item.longtext)+"\n\t\t\t")])]):t.item.text?n("span",[t._v("\n\t\t\t"+t._s(t.item.text)+"\n\t\t")]):t.item.longtext?n("p",[t._v("\n\t\t\t"+t._s(t.item.longtext)+"\n\t\t")]):t._e()]):t.item.input?n("span",{staticClass:"menuitem",class:{active:t.item.active}},["checkbox"!==t.item.input?n("span",{class:t.item.icon}):t._e(),t._v(" "),"text"===t.item.input?n("form",{class:t.item.input,on:{submit:function(e){return e.preventDefault(),t.item.action(e)}}},[n("input",{attrs:{type:t.item.input,placeholder:t.item.text,required:""},domProps:{value:t.item.value}}),t._v(" "),n("input",{staticClass:"icon-confirm",attrs:{type:"submit",value:""}})]):["checkbox"===t.item.input?n("input",{directives:[{name:"model",rawName:"v-model",value:t.item.model,expression:"item.model"}],class:t.item.input,attrs:{id:t.key,type:"checkbox"},domProps:{checked:Array.isArray(t.item.model)?t._i(t.item.model,null)>-1:t.item.model},on:{change:[function(e){var n=t.item.model,i=e.target,r=!!i.checked;if(Array.isArray(n)){var o=t._i(n,null);i.checked?o<0&&t.$set(t.item,"model",n.concat([null])):o>-1&&t.$set(t.item,"model",n.slice(0,o).concat(n.slice(o+1)))}else t.$set(t.item,"model",r)},t.item.action]}}):"radio"===t.item.input?n("input",{directives:[{name:"model",rawName:"v-model",value:t.item.model,expression:"item.model"}],class:t.item.input,attrs:{id:t.key,type:"radio"},domProps:{checked:t._q(t.item.model,null)},on:{change:[function(e){return t.$set(t.item,"model",null)},t.item.action]}}):n("input",{directives:[{name:"model",rawName:"v-model",value:t.item.model,expression:"item.model"}],class:t.item.input,attrs:{id:t.key,type:t.item.input},domProps:{value:t.item.model},on:{change:t.item.action,input:function(e){e.target.composing||t.$set(t.item,"model",e.target.value)}}}),t._v(" "),n("label",{attrs:{for:t.key},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.item.action(e)}}},[t._v("\n\t\t\t\t"+t._s(t.item.text)+"\n\t\t\t")])]],2):t.item.action?n("button",{staticClass:"menuitem focusable",class:{active:t.item.active},attrs:{disabled:t.item.disabled},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.item.action(e)}}},[n("span",{class:t.item.icon}),t._v(" "),t.item.text&&t.item.longtext?n("p",[n("strong",{staticClass:"menuitem-text"},[t._v("\n\t\t\t\t"+t._s(t.item.text)+"\n\t\t\t")]),n("br"),t._v(" "),n("span",{staticClass:"menuitem-text-detail"},[t._v("\n\t\t\t\t"+t._s(t.item.longtext)+"\n\t\t\t")])]):t.item.text?n("span",[t._v("\n\t\t\t"+t._s(t.item.text)+"\n\t\t")]):t.item.longtext?n("p",[t._v("\n\t\t\t"+t._s(t.item.longtext)+"\n\t\t")]):t._e()]):n("span",{staticClass:"menuitem",class:{active:t.item.active}},[n("span",{class:t.item.icon}),t._v(" "),t.item.text&&t.item.longtext?n("p",[n("strong",{staticClass:"menuitem-text"},[t._v("\n\t\t\t\t"+t._s(t.item.text)+"\n\t\t\t")]),n("br"),t._v(" "),n("span",{staticClass:"menuitem-text-detail"},[t._v("\n\t\t\t\t"+t._s(t.item.longtext)+"\n\t\t\t")])]):t.item.text?n("span",[t._v("\n\t\t\t"+t._s(t.item.text)+"\n\t\t")]):t.item.longtext?n("p",[t._v("\n\t\t\t"+t._s(t.item.longtext)+"\n\t\t")]):t._e()])])}),[],!1,null,"8dc4efb0",null).exports},props:{menu:{type:Array,default:function(){return[{href:"https://nextcloud.com",icon:"icon-links",text:"Nextcloud"}]},required:!0}}},a=(n(45),Object(r.a)(o,(function(){var t=this.$createElement,e=this._self._c||t;return e("ul",this._l(this.menu,(function(t,n){return e("PopoverMenuItem",{key:n,attrs:{item:t}})})),1)}),[],!1,null,"2f982451",null).exports);n.d(e,"PopoverMenu",(function(){return a})), +/** + * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +e.default=a},function(t,e){},function(t,e,n){var i=n(91);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("2601b667",i,!0,{})},function(t,e,n){var i=n(95);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("a39cae00",i,!0,{})},function(t,e,n){var i=n(97);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("30f6e694",i,!0,{})},function(t,e,n){var i=n(120);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("51023bd3",i,!0,{})},function(t,e,n){"use strict";n.r(e);var i=n(13),r=n.n(i),o=n(6),a=n(17),s=n(3),c=n.n(s),l=function(t,e,n){t.forEach((function(i,r){var o=!i.componentOptions&&i.tag,a=i.componentOptions&&"string"==typeof i.componentOptions.tag&&-1===e.indexOf(i.componentOptions.tag);(o||a)&&(c.a.util.warn("".concat(o?i.tag:i.componentOptions.tag," is not allowed inside the ").concat(n.$options.name," component"),n),t.splice(r,1))}))},u=["ActionButton","ActionCheckbox","ActionInput","ActionLink","ActionRouter","ActionText","ActionTextEditable"],d={name:"Actions",directives:{ClickOutside:r.a,tooltip:o.default},props:{open:{type:Boolean,default:!1},menuAlign:{type:String,default:"center",validator:function(t){return["left","center","right"].indexOf(t)>-1}}},data:function(){return{actions:[],opened:this.open,focusIndex:0,randomId:"menu-"+Object(a.a)(),offsetX:0}},computed:{isValidSingleAction:function(){return 1===this.actions.length},firstAction:function(){return this.actions[0]},firstActionElement:function(){if(this.firstAction&&this.firstAction.componentOptions){var t=this.firstAction.componentOptions.tag;if("ActionLink"===t)return{is:"a",href:this.getVNodeProp(this.firstAction,"href"),target:this.getVNodeProp(this.firstAction,"target")};if("ActionRouter"===t)return{is:"router-link",to:this.getVNodeProp(this.firstAction,"to"),exact:this.getVNodeProp(this.firstAction,"exact")}}return{is:"button"}},firstActionEvent:function(){return this.firstAction&&this.firstAction.componentOptions&&this.firstAction.componentOptions.listeners&&this.firstAction.componentOptions.listeners.click?"click":null}},watch:{open:function(t){var e=this;this.opened=t,this.opened&&this.$nextTick((function(){e.onOpen()}))}},beforeMount:function(){this.initActions(),l(this.$slots.default,u,this)},mounted:function(){this.popupItem=this.$el},beforeUpdate:function(){l(this.$slots.default,u,this)},methods:{toggleMenu:function(){var t=this;this.opened=!this.opened,this.opened&&(this.$nextTick((function(){t.onOpen(),t.focusFirstAction()})),this.$emit("open")),this.$emit("update:open",this.opened)},closeMenu:function(){this.opened&&(this.$emit("update:open",!1),this.$emit("close")),this.opened=!1,this.offsetX=0},onOpen:function(){this.offsetX=0;var t=function(t){var e=t.getBoundingClientRect(),n=document.documentElement.clientHeight,i=document.documentElement.clientWidth,r=Object.assign({});return r.top=e.top<0,r.left=e.left<0,r.bottom=e.bottom>n,r.right=e.right>i,r.any=r.top||r.left||r.bottom||r.right,r.all=r.top&&r.left&&r.bottom&&r.right,r.offsetY=r.top?e.top:r.bottom?e.bottom-n:0,r.offsetX=r.left?e.left:r.right?e.right-i:0,r}(this.$refs.menu);t.any&&(this.offsetX=t.offsetX>0?Math.round(t.offsetX)+5:Math.round(t.offsetX)-5)},onMouseFocusAction:function(t){if(document.activeElement!==t.target){var e=t.target.closest("li");if(e){var n=e.querySelector(".focusable");if(n){var i=this.$refs.menu.querySelectorAll(".focusable"),r=Array.prototype.indexOf.call(i,n);r>-1&&(this.focusIndex=r,this.focusAction())}}}},removeCurrentActive:function(){var t=this.$refs.menu.querySelector("li.active");t&&t.classList.remove("active")},focusAction:function(){var t=this.$refs.menu.querySelectorAll(".focusable")[this.focusIndex];if(t){var e=t.closest("li");t.focus(),e&&(this.removeCurrentActive(),e.classList.add("active"))}},focusPreviousAction:function(){this.focusIndex=Math.max(this.focusIndex-1,0),this.focusAction()},focusNextAction:function(){this.focusIndex=Math.min(this.focusIndex+1,this.$refs.menu.querySelectorAll(".focusable").length-1),this.focusAction()},focusFirstAction:function(){this.focusIndex=0,this.focusAction()},focusLastAction:function(){this.focusIndex=this.$el.querySelectorAll(".focusable").length-1,this.focusAction()},getVNodeProp:function(t,e){return t.componentOptions.propsData[e]},execFirstAction:function(t){this.firstAction&&this.firstAction.componentOptions&&this.firstAction.componentOptions.listeners&&this.firstAction.componentOptions.listeners.click&&(this.firstAction.componentOptions.listeners.click(t),t.preventDefault())},initActions:function(){this.actions=this.$slots.default.filter((function(t){return t&&t.componentOptions}))||[]}}},p=(n(80),n(0)),f=n(25),h=n.n(f),v=Object(p.a)(d,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.isValidSingleAction?n("element",t._b({directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.getVNodeProp(t.firstAction,"text"),expression:"getVNodeProp(firstAction, 'text')",modifiers:{auto:!0}}],staticClass:"action-item action-item--single",class:t.getVNodeProp(t.firstAction,"icon"),attrs:{rel:"noreferrer noopener"},on:t._d({},[t.firstActionEvent,t.execFirstAction])},"element",t.firstActionElement,!1),[n("span",{attrs:{"aria-hidden":!0,hidden:""}},[t._t("default")],2)]):n("div",{directives:[{name:"show",rawName:"v-show",value:t.actions.length>0,expression:"actions.length > 0"}],staticClass:"action-item",class:{"action-item--open":t.opened},on:{keydown:[function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"up",38,e.key,["Up","ArrowUp"])?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.focusPreviousAction(e))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"down",40,e.key,["Down","ArrowDown"])?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.focusNextAction(e))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"tab",9,e.key,"Tab")?null:e.shiftKey?(e.preventDefault(),t.focusPreviousAction(e)):null},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"page-up",void 0,e.key,void 0)?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.focusFirstAction(e))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"page-down",void 0,e.key,void 0)?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.focusLastAction(e))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"esc",27,e.key,["Esc","Escape"])?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.closeMenu(e))}]}},[n("a",{directives:[{name:"click-outside",rawName:"v-click-outside",value:t.closeMenu,expression:"closeMenu"}],staticClass:"icon action-item__menutoggle",attrs:{href:"#","aria-haspopup":"true","aria-controls":t.randomId,"aria-expanded":t.opened},on:{click:function(e){return e.preventDefault(),t.toggleMenu(e)},keydown:function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"space",32,e.key,[" ","Spacebar"])?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.toggleMenu(e))}}}),t._v(" "),t.opened?n("div",{ref:"menu",staticClass:"action-item__menu",class:["menu-"+t.menuAlign,{open:t.opened}],style:{marginRight:t.offsetX+"px"},attrs:{tabindex:"-1"},on:{mousemove:t.onMouseFocusAction}},[n("div",{staticClass:"action-item__menu_arrow",style:{transform:"translateX("+t.offsetX+"px)"}}),t._v(" "),n("ul",{attrs:{id:t.randomId,tabindex:"-1"}},[t._t("default")],2)]):t._e()])}),[],!1,null,"627a433f",null);"function"==typeof h.a&&h()(v);var m=v.exports;n.d(e,"Actions",(function(){return m})), +/** + * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +e.default=m},function(t,e,n){window,t.exports=function(t){var e={};function n(i){if(e[i])return e[i].exports;var r=e[i]={i:i,l:!1,exports:{}};return t[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:i})},n.r=function(t){Object.defineProperty(t,"__esModule",{value:!0})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=3)}([function(t,e,n){var i;!function(r){"use strict";var o={},a=/d{1,4}|M{1,4}|YY(?:YY)?|S{1,3}|Do|ZZ|([HhMsDm])\1?|[aA]|"[^"]*"|'[^']*'/g,s=/\d\d?/,c=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,l=/\[([^]*?)\]/gm,u=function(){};function d(t,e){for(var n=[],i=0,r=t.length;i<r;i++)n.push(t[i].substr(0,e));return n}function p(t){return function(e,n,i){var r=i[t].indexOf(n.charAt(0).toUpperCase()+n.substr(1).toLowerCase());~r&&(e.month=r)}}function f(t,e){for(t=String(t),e=e||2;t.length<e;)t="0"+t;return t}var h=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],v=["January","February","March","April","May","June","July","August","September","October","November","December"],m=d(v,3),A=d(h,3);o.i18n={dayNamesShort:A,dayNames:h,monthNamesShort:m,monthNames:v,amPm:["am","pm"],DoFn:function(t){return t+["th","st","nd","rd"][t%10>3?0:(t-t%10!=10)*t%10]}};var g={D:function(t){return t.getDate()},DD:function(t){return f(t.getDate())},Do:function(t,e){return e.DoFn(t.getDate())},d:function(t){return t.getDay()},dd:function(t){return f(t.getDay())},ddd:function(t,e){return e.dayNamesShort[t.getDay()]},dddd:function(t,e){return e.dayNames[t.getDay()]},M:function(t){return t.getMonth()+1},MM:function(t){return f(t.getMonth()+1)},MMM:function(t,e){return e.monthNamesShort[t.getMonth()]},MMMM:function(t,e){return e.monthNames[t.getMonth()]},YY:function(t){return String(t.getFullYear()).substr(2)},YYYY:function(t){return f(t.getFullYear(),4)},h:function(t){return t.getHours()%12||12},hh:function(t){return f(t.getHours()%12||12)},H:function(t){return t.getHours()},HH:function(t){return f(t.getHours())},m:function(t){return t.getMinutes()},mm:function(t){return f(t.getMinutes())},s:function(t){return t.getSeconds()},ss:function(t){return f(t.getSeconds())},S:function(t){return Math.round(t.getMilliseconds()/100)},SS:function(t){return f(Math.round(t.getMilliseconds()/10),2)},SSS:function(t){return f(t.getMilliseconds(),3)},a:function(t,e){return t.getHours()<12?e.amPm[0]:e.amPm[1]},A:function(t,e){return t.getHours()<12?e.amPm[0].toUpperCase():e.amPm[1].toUpperCase()},ZZ:function(t){var e=t.getTimezoneOffset();return(e>0?"-":"+")+f(100*Math.floor(Math.abs(e)/60)+Math.abs(e)%60,4)}},b={D:[s,function(t,e){t.day=e}],Do:[new RegExp(s.source+c.source),function(t,e){t.day=parseInt(e,10)}],M:[s,function(t,e){t.month=e-1}],YY:[s,function(t,e){var n=+(""+(new Date).getFullYear()).substr(0,2);t.year=""+(e>68?n-1:n)+e}],h:[s,function(t,e){t.hour=e}],m:[s,function(t,e){t.minute=e}],s:[s,function(t,e){t.second=e}],YYYY:[/\d{4}/,function(t,e){t.year=e}],S:[/\d/,function(t,e){t.millisecond=100*e}],SS:[/\d{2}/,function(t,e){t.millisecond=10*e}],SSS:[/\d{3}/,function(t,e){t.millisecond=e}],d:[s,u],ddd:[c,u],MMM:[c,p("monthNamesShort")],MMMM:[c,p("monthNames")],a:[c,function(t,e,n){var i=e.toLowerCase();i===n.amPm[0]?t.isPm=!1:i===n.amPm[1]&&(t.isPm=!0)}],ZZ:[/([\+\-]\d\d:?\d\d|Z)/,function(t,e){"Z"===e&&(e="+00:00");var n,i=(e+"").match(/([\+\-]|\d\d)/gi);i&&(n=60*i[1]+parseInt(i[2],10),t.timezoneOffset="+"===i[0]?n:-n)}]};b.dd=b.d,b.dddd=b.ddd,b.DD=b.D,b.mm=b.m,b.hh=b.H=b.HH=b.h,b.MM=b.M,b.ss=b.s,b.A=b.a,o.masks={default:"ddd MMM DD YYYY HH:mm:ss",shortDate:"M/D/YY",mediumDate:"MMM D, YYYY",longDate:"MMMM D, YYYY",fullDate:"dddd, MMMM D, YYYY",shortTime:"HH:mm",mediumTime:"HH:mm:ss",longTime:"HH:mm:ss.SSS"},o.format=function(t,e,n){var i=n||o.i18n;if("number"==typeof t&&(t=new Date(t)),"[object Date]"!==Object.prototype.toString.call(t)||isNaN(t.getTime()))throw new Error("Invalid Date in fecha.format");var r=[];return(e=(e=(e=o.masks[e]||e||o.masks.default).replace(l,(function(t,e){return r.push(e),"??"}))).replace(a,(function(e){return e in g?g[e](t,i):e.slice(1,e.length-1)}))).replace(/\?\?/g,(function(){return r.shift()}))},o.parse=function(t,e,n){var i=n||o.i18n;if("string"!=typeof e)throw new Error("Invalid format in fecha.parse");if(e=o.masks[e]||e,t.length>1e3)return!1;var r=!0,s={};if(e.replace(a,(function(e){if(b[e]){var n=b[e],o=t.search(n[0]);~o?t.replace(n[0],(function(e){return n[1](s,e,i),t=t.substr(o+e.length),e})):r=!1}return b[e]?"":e.slice(1,e.length-1)})),!r)return!1;var c,l=new Date;return!0===s.isPm&&null!=s.hour&&12!=+s.hour?s.hour=+s.hour+12:!1===s.isPm&&12==+s.hour&&(s.hour=0),null!=s.timezoneOffset?(s.minute=+(s.minute||0)-+s.timezoneOffset,c=new Date(Date.UTC(s.year||l.getFullYear(),s.month||0,s.day||1,s.hour||0,s.minute||0,s.second||0,s.millisecond||0))):c=new Date(s.year||l.getFullYear(),s.month||0,s.day||1,s.hour||0,s.minute||0,s.second||0,s.millisecond||0),c},void 0!==t&&t.exports?t.exports=o:void 0===(i=function(){return o}.call(e,n,e,t))||(t.exports=i)}()},function(t,e){var n=/^(attrs|props|on|nativeOn|class|style|hook)$/;function i(t,e){return function(){t&&t.apply(this,arguments),e&&e.apply(this,arguments)}}t.exports=function(t){return t.reduce((function(t,e){var r,o,a,s,c;for(a in e)if(r=t[a],o=e[a],r&&n.test(a))if("class"===a&&("string"==typeof r&&(c=r,t[a]=r={},r[c]=!0),"string"==typeof o&&(c=o,e[a]=o={},o[c]=!0)),"on"===a||"nativeOn"===a||"hook"===a)for(s in o)r[s]=i(r[s],o[s]);else if(Array.isArray(r))t[a]=r.concat(o);else if(Array.isArray(o))t[a]=[r].concat(o);else for(s in o)r[s]=o[s];else t[a]=e[a];return t}),{})}},function(t,e,n){"use strict";function i(t,e){for(var n=[],i={},r=0;r<e.length;r++){var o=e[r],a=o[0],s={id:t+":"+r,css:o[1],media:o[2],sourceMap:o[3]};i[a]?i[a].parts.push(s):n.push(i[a]={id:a,parts:[s]})}return n}n.r(e),n.d(e,"default",(function(){return h}));var r="undefined"!=typeof document;if("undefined"!=typeof DEBUG&&DEBUG&&!r)throw new Error("vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.");var o={},a=r&&(document.head||document.getElementsByTagName("head")[0]),s=null,c=0,l=!1,u=function(){},d=null,p="data-vue-ssr-id",f="undefined"!=typeof navigator&&/msie [6-9]\b/.test(navigator.userAgent.toLowerCase());function h(t,e,n,r){l=n,d=r||{};var a=i(t,e);return v(a),function(e){for(var n=[],r=0;r<a.length;r++){var s=a[r];(c=o[s.id]).refs--,n.push(c)}for(e?v(a=i(t,e)):a=[],r=0;r<n.length;r++){var c;if(0===(c=n[r]).refs){for(var l=0;l<c.parts.length;l++)c.parts[l]();delete o[c.id]}}}}function v(t){for(var e=0;e<t.length;e++){var n=t[e],i=o[n.id];if(i){i.refs++;for(var r=0;r<i.parts.length;r++)i.parts[r](n.parts[r]);for(;r<n.parts.length;r++)i.parts.push(A(n.parts[r]));i.parts.length>n.parts.length&&(i.parts.length=n.parts.length)}else{var a=[];for(r=0;r<n.parts.length;r++)a.push(A(n.parts[r]));o[n.id]={id:n.id,refs:1,parts:a}}}}function m(){var t=document.createElement("style");return t.type="text/css",a.appendChild(t),t}function A(t){var e,n,i=document.querySelector("style["+p+'~="'+t.id+'"]');if(i){if(l)return u;i.parentNode.removeChild(i)}if(f){var r=c++;i=s||(s=m()),e=y.bind(null,i,r,!1),n=y.bind(null,i,r,!0)}else i=m(),e=function(t,e){var n=e.css,i=e.media,r=e.sourceMap;if(i&&t.setAttribute("media",i),d.ssrId&&t.setAttribute(p,e.id),r&&(n+="\n/*# sourceURL="+r.sources[0]+" */",n+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+" */"),t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}.bind(null,i),n=function(){i.parentNode.removeChild(i)};return e(t),function(i){if(i){if(i.css===t.css&&i.media===t.media&&i.sourceMap===t.sourceMap)return;e(t=i)}else n()}}var g,b=(g=[],function(t,e){return g[t]=e,g.filter(Boolean).join("\n")});function y(t,e,n,i){var r=n?"":i.css;if(t.styleSheet)t.styleSheet.cssText=b(e,r);else{var o=document.createTextNode(r),a=t.childNodes;a[e]&&t.removeChild(a[e]),a.length?t.insertBefore(o,a[e]):t.appendChild(o)}}},function(t,e,n){"use strict";n.r(e);var i=n(0),r=n.n(i),o=void 0,a=function(t){return o=t.target},s={bind:function(t,e,n){t["@clickoutside"]=function(i){var r=i.target,a=n&&n.context&&n.context.popupElm;!o||!r||t.contains(r)||t.contains(o)||a&&(a.contains(o)||a.contains(r))||!e.expression||!n.context[e.expression]||e.value()},document.addEventListener("mousedown",a),document.addEventListener("mouseup",t["@clickoutside"])},unbind:function(t){document.removeEventListener("mousedown",a),document.removeEventListener("mouseup",t["@clickoutside"])}};function c(t){return"[object Object]"===Object.prototype.toString.call(t)}function l(t){return t instanceof Date}function u(t){return null!=t&&!isNaN(new Date(t).getTime())}function d(t){var e=(t||"").split(":");return e.length>=2?{hours:parseInt(e[0],10),minutes:parseInt(e[1],10)}:null}function p(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"24",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"a",i=t.hours,r=(i=(i="24"===e?i:i%12||12)<10?"0"+i:i)+":"+(t.minutes<10?"0"+t.minutes:t.minutes);if("12"===e){var o=t.hours>=12?"pm":"am";"A"===n&&(o=o.toUpperCase()),r=r+" "+o}return r}function f(t,e){if(!t)return"";try{return r.a.format(new Date(t),e)}catch(t){return""}}var h={date:{value2date:function(t){return u(t)?new Date(t):null},date2value:function(t){return t}},timestamp:{value2date:function(t){return u(t)?new Date(t):null},date2value:function(t){return t&&new Date(t).getTime()}}},v={zh:{days:["日","一","二","三","四","五","六"],months:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],pickers:["未来7天","未来30天","最近7天","最近30天"],placeholder:{date:"请选择日期",dateRange:"请选择日期范围"}},en:{days:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],pickers:["next 7 days","next 30 days","previous 7 days","previous 30 days"],placeholder:{date:"Select Date",dateRange:"Select Date Range"}},ro:{days:["Lun","Mar","Mie","Joi","Vin","Sâm","Dum"],months:["Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Noi","Dec"],pickers:["urmatoarele 7 zile","urmatoarele 30 zile","ultimele 7 zile","ultimele 30 zile"],placeholder:{date:"Selectați Data",dateRange:"Selectați Intervalul De Date"}},fr:{days:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"],months:["Jan","Fev","Mar","Avr","Mai","Juin","Juil","Aout","Sep","Oct","Nov","Dec"],pickers:["7 jours suivants","30 jours suivants","7 jours précédents","30 jours précédents"],placeholder:{date:"Sélectionnez une date",dateRange:"Sélectionnez une période"}},es:{days:["Dom","Lun","mar","Mie","Jue","Vie","Sab"],months:["Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Sep","Oct","Nov","Dic"],pickers:["próximos 7 días","próximos 30 días","7 días anteriores","30 días anteriores"],placeholder:{date:"Seleccionar fecha",dateRange:"Seleccionar un rango de fechas"}},"pt-br":{days:["Dom","Seg","Ter","Qua","Quin","Sex","Sáb"],months:["Jan","Fev","Mar","Abr","Maio","Jun","Jul","Ago","Set","Out","Nov","Dez"],pickers:["próximos 7 dias","próximos 30 dias","7 dias anteriores"," 30 dias anteriores"],placeholder:{date:"Selecione uma data",dateRange:"Selecione um período"}},ru:{days:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],months:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],pickers:["след. 7 дней","след. 30 дней","прош. 7 дней","прош. 30 дней"],placeholder:{date:"Выберите дату",dateRange:"Выберите период"}},de:{days:["So","Mo","Di","Mi","Do","Fr","Sa"],months:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],pickers:["nächsten 7 Tage","nächsten 30 Tage","vorigen 7 Tage","vorigen 30 Tage"],placeholder:{date:"Datum auswählen",dateRange:"Zeitraum auswählen"}},it:{days:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],months:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],pickers:["successivi 7 giorni","successivi 30 giorni","precedenti 7 giorni","precedenti 30 giorni"],placeholder:{date:"Seleziona una data",dateRange:"Seleziona un intervallo date"}},cs:{days:["Ned","Pon","Úte","Stř","Čtv","Pát","Sob"],months:["Led","Úno","Bře","Dub","Kvě","Čer","Čerc","Srp","Zář","Říj","Lis","Pro"],pickers:["příštích 7 dní","příštích 30 dní","předchozích 7 dní","předchozích 30 dní"],placeholder:{date:"Vyberte datum",dateRange:"Vyberte časové rozmezí"}},sl:{days:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"],months:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],pickers:["naslednjih 7 dni","naslednjih 30 dni","prejšnjih 7 dni","prejšnjih 30 dni"],placeholder:{date:"Izberite datum",dateRange:"Izberite razpon med 2 datumoma"}}},m=v.zh,A={methods:{t:function(t){for(var e=this,n=e.$options.name;e&&(!n||"DatePicker"!==n);)(e=e.$parent)&&(n=e.$options.name);for(var i=e&&e.language||m,r=t.split("."),o=i,a=void 0,s=0,c=r.length;s<c;s++){if(a=o[r[s]],s===c-1)return a;if(!a)return"";o=a}return""}}};function g(t,e){if(e){for(var n=[],i=e.offsetParent;i&&t!==i&&t.contains(i);)n.push(i),i=i.offsetParent;var r=e.offsetTop+n.reduce((function(t,e){return t+e.offsetTop}),0),o=r+e.offsetHeight,a=t.scrollTop,s=a+t.clientHeight;r<a?t.scrollTop=r:o>s&&(t.scrollTop=o-t.clientHeight)}else t.scrollTop=0}var b=n(1),y=n.n(b),_={name:"panelDate",mixins:[A],props:{value:null,startAt:null,endAt:null,dateFormat:{type:String,default:"YYYY-MM-DD"},calendarMonth:{default:(new Date).getMonth()},calendarYear:{default:(new Date).getFullYear()},firstDayOfWeek:{default:7,type:Number,validator:function(t){return t>=1&&t<=7}},disabledDate:{type:Function,default:function(){return!1}}},methods:{selectDate:function(t){var e=t.year,n=t.month,i=t.day,r=new Date(e,n,i);this.disabledDate(r)||this.$emit("select",r)},getDays:function(t){var e=this.t("days"),n=parseInt(t,10);return e.concat(e).slice(n,n+7)},getDates:function(t,e,n){var i=[],r=new Date(t,e);r.setDate(0);for(var o=(r.getDay()+7-n)%7+1,a=r.getDate()-(o-1),s=0;s<o;s++)i.push({year:t,month:e-1,day:a+s});r.setMonth(r.getMonth()+2,0);for(var c=r.getDate(),l=0;l<c;l++)i.push({year:t,month:e,day:1+l});r.setMonth(r.getMonth()+1,1);for(var u=42-(o+c),d=0;d<u;d++)i.push({year:t,month:e+1,day:1+d});return i},getCellClasses:function(t){var e=t.year,n=t.month,i=t.day,r=[],o=new Date(e,n,i).getTime(),a=(new Date).setHours(0,0,0,0),s=this.value&&new Date(this.value).setHours(0,0,0,0),c=this.startAt&&new Date(this.startAt).setHours(0,0,0,0),l=this.endAt&&new Date(this.endAt).setHours(0,0,0,0);return n<this.calendarMonth?r.push("last-month"):n>this.calendarMonth?r.push("next-month"):r.push("cur-month"),o===a&&r.push("today"),this.disabledDate(o)&&r.push("disabled"),s&&(o===s?r.push("actived"):c&&o<=s?r.push("inrange"):l&&o>=s&&r.push("inrange")),r},getCellTitle:function(t){var e=t.year,n=t.month,i=t.day;return f(new Date(e,n,i),this.dateFormat)}},render:function(t){var e=this,n=this.getDays(this.firstDayOfWeek).map((function(e){return t("th",[e])})),i=this.getDates(this.calendarYear,this.calendarMonth,this.firstDayOfWeek),r=Array.apply(null,{length:6}).map((function(n,r){var o=i.slice(7*r,7*r+7).map((function(n){var i={class:e.getCellClasses(n)};return t("td",y()([{class:"cell"},i,{attrs:{"data-year":n.year,"data-month":n.month,title:e.getCellTitle(n)},on:{click:e.selectDate.bind(e,n)}}]),[n.day])}));return t("tr",[o])}));return t("table",{class:"mx-panel mx-panel-date"},[t("thead",[t("tr",[n])]),t("tbody",[r])])}},w={name:"panelYear",props:{value:null,firstYear:Number,disabledYear:Function},methods:{isDisabled:function(t){return!("function"!=typeof this.disabledYear||!this.disabledYear(t))},selectYear:function(t){this.isDisabled(t)||this.$emit("select",t)}},render:function(t){var e=this,n=10*Math.floor(this.firstYear/10),i=this.value&&new Date(this.value).getFullYear(),r=Array.apply(null,{length:10}).map((function(r,o){var a=n+o;return t("span",{class:{cell:!0,actived:i===a,disabled:e.isDisabled(a)},on:{click:e.selectYear.bind(e,a)}},[a])}));return t("div",{class:"mx-panel mx-panel-year"},[r])}},x={name:"panelMonth",mixins:[A],props:{value:null,calendarYear:{default:(new Date).getFullYear()},disabledMonth:Function},methods:{isDisabled:function(t){return!("function"!=typeof this.disabledMonth||!this.disabledMonth(t))},selectMonth:function(t){this.isDisabled(t)||this.$emit("select",t)}},render:function(t){var e=this,n=this.t("months"),i=this.value&&new Date(this.value).getFullYear(),r=this.value&&new Date(this.value).getMonth();return n=n.map((function(n,o){return t("span",{class:{cell:!0,actived:i===e.calendarYear&&r===o,disabled:e.isDisabled(o)},on:{click:e.selectMonth.bind(e,o)}},[n])})),t("div",{class:"mx-panel mx-panel-month"},[n])}},C=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])}return t},k="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};function T(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e<t.length;e++)n[e]=t[e];return n}return Array.from(t)}function E(t,e,n,i,r,o,a,s){var c,l="function"==typeof t?t.options:t;if(e&&(l.render=e,l.staticRenderFns=n,l._compiled=!0),i&&(l.functional=!0),o&&(l._scopeId="data-v-"+o),a?(c=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),r&&r.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(a)},l._ssrRegister=c):r&&(c=s?function(){r.call(this,this.$root.$options.shadowRoot)}:r),c)if(l.functional){l._injectStyles=c;var u=l.render;l.render=function(t,e){return c.call(e),u(t,e)}}else{var d=l.beforeCreate;l.beforeCreate=d?[].concat(d,c):[c]}return{exports:t,options:l}}var O=E({name:"CalendarPanel",components:{PanelDate:_,PanelYear:w,PanelMonth:x,PanelTime:{name:"panelTime",props:{timePickerOptions:{type:[Object,Function],default:function(){return null}},timeSelectOptions:{type:Object,default:function(){return null}},minuteStep:{type:Number,default:0,validator:function(t){return t>=0&&t<=60}},value:null,timeType:{type:Array,default:function(){return["24","a"]}},disabledTime:Function},computed:{currentHours:function(){return this.value?new Date(this.value).getHours():0},currentMinutes:function(){return this.value?new Date(this.value).getMinutes():0},currentSeconds:function(){return this.value?new Date(this.value).getSeconds():0}},methods:{stringifyText:function(t){return("00"+t).slice(String(t).length)},selectTime:function(t){"function"==typeof this.disabledTime&&this.disabledTime(t)||this.$emit("select",new Date(t))},pickTime:function(t){"function"==typeof this.disabledTime&&this.disabledTime(t)||this.$emit("pick",new Date(t))},getTimePickerOptions:function(){var t=[],e=this.timePickerOptions;if(!e)return[];if("function"==typeof e)return e()||[];var n=d(e.start),i=d(e.end),r=d(e.step);if(n&&i&&r)for(var o=n.minutes+60*n.hours,a=i.minutes+60*i.hours,s=r.minutes+60*r.hours,c=Math.floor((a-o)/s),l=0;l<=c;l++){var u=o+l*s,f={hours:Math.floor(u/60),minutes:u%60};t.push({value:f,label:p.apply(void 0,[f].concat(T(this.timeType)))})}return t}},render:function(t){var e=this,n=this.value?new Date(this.value):(new Date).setHours(0,0,0,0),i="function"==typeof this.disabledTime&&this.disabledTime,r=this.getTimePickerOptions();if(Array.isArray(r)&&r.length)return r=r.map((function(r){var o=r.value.hours,a=r.value.minutes,s=new Date(n).setHours(o,a,0);return t("li",{class:{"mx-time-picker-item":!0,cell:!0,actived:o===e.currentHours&&a===e.currentMinutes,disabled:i&&i(s)},on:{click:e.pickTime.bind(e,s)}},[r.label])})),t("div",{class:"mx-panel mx-panel-time"},[t("ul",{class:"mx-time-list"},[r])]);var o=this.minuteStep||1,a=parseInt(60/o),s={hours:Array.apply(null,{length:24}).map((function(t,e){return e})),minutes:Array.apply(null,{length:a}).map((function(t,e){return e*o})),seconds:0===this.minuteStep?Array.apply(null,{length:60}).map((function(t,e){return e})):[]};this.timeSelectOptions&&"object"===k(this.timeSelectOptions)&&(s=C({},s,this.timeSelectOptions));var c=[s.hours.map((function(r){var o=new Date(n).setHours(r);return t("li",{class:{cell:!0,actived:r===e.currentHours,disabled:i&&i(o)},on:{click:e.selectTime.bind(e,o)}},[e.stringifyText(r)])})),s.minutes.map((function(r){var o=new Date(n).setMinutes(r);return t("li",{class:{cell:!0,actived:r===e.currentMinutes,disabled:i&&i(o)},on:{click:e.selectTime.bind(e,o)}},[e.stringifyText(r)])})),s.seconds.map((function(r){var o=new Date(n).setSeconds(r);return t("li",{class:{cell:!0,actived:r===e.currentSeconds,disabled:i&&i(o)},on:{click:e.selectTime.bind(e,o)}},[e.stringifyText(r)])}))].filter((function(t){return t.length>0}));return c=c.map((function(e){return t("ul",{class:"mx-time-list",style:{width:100/c.length+"%"}},[e])})),t("div",{class:"mx-panel mx-panel-time"},[c])}}},mixins:[A,{methods:{dispatch:function(t,e,n){for(var i=this.$parent||this.$root,r=i.$options.name;i&&(!r||r!==t);)(i=i.$parent)&&(r=i.$options.name);r&&r===t&&(i=i||this).$emit.apply(i,[e].concat(n))}}}],props:{value:{default:null,validator:function(t){return null===t||u(t)}},startAt:null,endAt:null,visible:{type:Boolean,default:!1},type:{type:String,default:"date"},dateFormat:{type:String,default:"YYYY-MM-DD"},index:Number,defaultValue:{validator:function(t){return u(t)}},firstDayOfWeek:{default:7,type:Number,validator:function(t){return t>=1&&t<=7}},notBefore:{default:null,validator:function(t){return!t||u(t)}},notAfter:{default:null,validator:function(t){return!t||u(t)}},disabledDays:{type:[Array,Function],default:function(){return[]}},minuteStep:{type:Number,default:0,validator:function(t){return t>=0&&t<=60}},timeSelectOptions:{type:Object,default:function(){return null}},timePickerOptions:{type:[Object,Function],default:function(){return null}}},data:function(){var t=this.getNow(this.value),e=t.getFullYear();return{panel:"NONE",dates:[],calendarMonth:t.getMonth(),calendarYear:e,firstYear:10*Math.floor(e/10)}},computed:{now:{get:function(){return new Date(this.calendarYear,this.calendarMonth).getTime()},set:function(t){var e=new Date(t);this.calendarYear=e.getFullYear(),this.calendarMonth=e.getMonth()}},timeType:function(){return[/h+/.test(this.$parent.format)?"12":"24",/A/.test(this.$parent.format)?"A":"a"]},timeHeader:function(){return"time"===this.type?this.$parent.format:this.value&&f(this.value,this.dateFormat)},yearHeader:function(){return this.firstYear+" ~ "+(this.firstYear+9)},months:function(){return this.t("months")},notBeforeTime:function(){return this.getCriticalTime(this.notBefore)},notAfterTime:function(){return this.getCriticalTime(this.notAfter)}},watch:{value:{immediate:!0,handler:"updateNow"},visible:{immediate:!0,handler:"init"},panel:{handler:"handelPanelChange"}},methods:{handelPanelChange:function(t,e){var n=this;this.dispatch("DatePicker","panel-change",[t,e]),"YEAR"===t?this.firstYear=10*Math.floor(this.calendarYear/10):"TIME"===t&&this.$nextTick((function(){for(var t=n.$el.querySelectorAll(".mx-panel-time .mx-time-list"),e=0,i=t.length;e<i;e++){var r=t[e];g(r,r.querySelector(".actived"))}}))},init:function(t){if(t){var e=this.type;"month"===e?this.showPanelMonth():"year"===e?this.showPanelYear():"time"===e?this.showPanelTime():this.showPanelDate()}else this.showPanelNone(),this.updateNow(this.value)},getNow:function(t){return t?new Date(t):this.defaultValue&&u(this.defaultValue)?new Date(this.defaultValue):new Date},updateNow:function(t){var e=this.now;this.now=this.getNow(t),this.visible&&this.now!==e&&this.dispatch("DatePicker","calendar-change",[new Date(this.now),new Date(e)])},getCriticalTime:function(t){if(!t)return null;var e=new Date(t);return"year"===this.type?new Date(e.getFullYear(),0).getTime():"month"===this.type?new Date(e.getFullYear(),e.getMonth()).getTime():"date"===this.type?e.setHours(0,0,0,0):e.getTime()},inBefore:function(t,e){return void 0===e&&(e=this.startAt),this.notBeforeTime&&t<this.notBeforeTime||e&&t<this.getCriticalTime(e)},inAfter:function(t,e){return void 0===e&&(e=this.endAt),this.notAfterTime&&t>this.notAfterTime||e&&t>this.getCriticalTime(e)},inDisabledDays:function(t){var e=this;return Array.isArray(this.disabledDays)?this.disabledDays.some((function(n){return e.getCriticalTime(n)===t})):"function"==typeof this.disabledDays&&this.disabledDays(new Date(t))},isDisabledYear:function(t){var e=new Date(t,0).getTime(),n=new Date(t+1,0).getTime()-1;return this.inBefore(n)||this.inAfter(e)||"year"===this.type&&this.inDisabledDays(e)},isDisabledMonth:function(t){var e=new Date(this.calendarYear,t).getTime(),n=new Date(this.calendarYear,t+1).getTime()-1;return this.inBefore(n)||this.inAfter(e)||"month"===this.type&&this.inDisabledDays(e)},isDisabledDate:function(t){var e=new Date(t).getTime(),n=new Date(t).setHours(23,59,59,999);return this.inBefore(n)||this.inAfter(e)||this.inDisabledDays(e)},isDisabledTime:function(t,e,n){var i=new Date(t).getTime();return this.inBefore(i,e)||this.inAfter(i,n)||this.inDisabledDays(i)},selectDate:function(t){if("datetime"===this.type){var e=new Date(t);return l(this.value)&&e.setHours(this.value.getHours(),this.value.getMinutes(),this.value.getSeconds()),this.isDisabledTime(e)&&(e.setHours(0,0,0,0),this.notBefore&&e.getTime()<new Date(this.notBefore).getTime()&&(e=new Date(this.notBefore)),this.startAt&&e.getTime()<new Date(this.startAt).getTime()&&(e=new Date(this.startAt))),this.selectTime(e),void this.showPanelTime()}this.$emit("select-date",t)},selectYear:function(t){if(this.changeCalendarYear(t),"year"===this.type.toLowerCase())return this.selectDate(new Date(this.now));this.dispatch("DatePicker","select-year",[t,this.index]),this.showPanelMonth()},selectMonth:function(t){if(this.changeCalendarMonth(t),"month"===this.type.toLowerCase())return this.selectDate(new Date(this.now));this.dispatch("DatePicker","select-month",[t,this.index]),this.showPanelDate()},selectTime:function(t){this.$emit("select-time",t,!1)},pickTime:function(t){this.$emit("select-time",t,!0)},changeCalendarYear:function(t){this.updateNow(new Date(t,this.calendarMonth))},changeCalendarMonth:function(t){this.updateNow(new Date(this.calendarYear,t))},getSibling:function(){var t=this,e=this.$parent.$children.filter((function(e){return e.$options.name===t.$options.name}));return e[1^e.indexOf(this)]},handleIconMonth:function(t){var e=this.calendarMonth;this.changeCalendarMonth(e+t),this.$parent.$emit("change-calendar-month",{month:e,flag:t,vm:this,sibling:this.getSibling()})},handleIconYear:function(t){if("YEAR"===this.panel)this.changePanelYears(t);else{var e=this.calendarYear;this.changeCalendarYear(e+t),this.$parent.$emit("change-calendar-year",{year:e,flag:t,vm:this,sibling:this.getSibling()})}},handleBtnYear:function(){this.showPanelYear()},handleBtnMonth:function(){this.showPanelMonth()},handleTimeHeader:function(){"time"!==this.type&&this.showPanelDate()},changePanelYears:function(t){this.firstYear=this.firstYear+10*t},showPanelNone:function(){this.panel="NONE"},showPanelTime:function(){this.panel="TIME"},showPanelDate:function(){this.panel="DATE"},showPanelYear:function(){this.panel="YEAR"},showPanelMonth:function(){this.panel="MONTH"}}},(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"mx-calendar",class:"mx-calendar-panel-"+t.panel.toLowerCase()},[n("div",{staticClass:"mx-calendar-header"},[n("a",{directives:[{name:"show",rawName:"v-show",value:"TIME"!==t.panel,expression:"panel !== 'TIME'"}],staticClass:"mx-icon-last-year",on:{click:function(e){t.handleIconYear(-1)}}},[t._v("«")]),t._v(" "),n("a",{directives:[{name:"show",rawName:"v-show",value:"DATE"===t.panel,expression:"panel === 'DATE'"}],staticClass:"mx-icon-last-month",on:{click:function(e){t.handleIconMonth(-1)}}},[t._v("‹")]),t._v(" "),n("a",{directives:[{name:"show",rawName:"v-show",value:"TIME"!==t.panel,expression:"panel !== 'TIME'"}],staticClass:"mx-icon-next-year",on:{click:function(e){t.handleIconYear(1)}}},[t._v("»")]),t._v(" "),n("a",{directives:[{name:"show",rawName:"v-show",value:"DATE"===t.panel,expression:"panel === 'DATE'"}],staticClass:"mx-icon-next-month",on:{click:function(e){t.handleIconMonth(1)}}},[t._v("›")]),t._v(" "),n("a",{directives:[{name:"show",rawName:"v-show",value:"DATE"===t.panel,expression:"panel === 'DATE'"}],staticClass:"mx-current-month",on:{click:t.handleBtnMonth}},[t._v(t._s(t.months[t.calendarMonth]))]),t._v(" "),n("a",{directives:[{name:"show",rawName:"v-show",value:"DATE"===t.panel||"MONTH"===t.panel,expression:"panel === 'DATE' || panel === 'MONTH'"}],staticClass:"mx-current-year",on:{click:t.handleBtnYear}},[t._v(t._s(t.calendarYear))]),t._v(" "),n("a",{directives:[{name:"show",rawName:"v-show",value:"YEAR"===t.panel,expression:"panel === 'YEAR'"}],staticClass:"mx-current-year"},[t._v(t._s(t.yearHeader))]),t._v(" "),n("a",{directives:[{name:"show",rawName:"v-show",value:"TIME"===t.panel,expression:"panel === 'TIME'"}],staticClass:"mx-time-header",on:{click:t.handleTimeHeader}},[t._v(t._s(t.timeHeader))])]),t._v(" "),n("div",{staticClass:"mx-calendar-content"},[n("panel-date",{directives:[{name:"show",rawName:"v-show",value:"DATE"===t.panel,expression:"panel === 'DATE'"}],attrs:{value:t.value,"date-format":t.dateFormat,"calendar-month":t.calendarMonth,"calendar-year":t.calendarYear,"start-at":t.startAt,"end-at":t.endAt,"first-day-of-week":t.firstDayOfWeek,"disabled-date":t.isDisabledDate},on:{select:t.selectDate}}),t._v(" "),n("panel-year",{directives:[{name:"show",rawName:"v-show",value:"YEAR"===t.panel,expression:"panel === 'YEAR'"}],attrs:{value:t.value,"disabled-year":t.isDisabledYear,"first-year":t.firstYear},on:{select:t.selectYear}}),t._v(" "),n("panel-month",{directives:[{name:"show",rawName:"v-show",value:"MONTH"===t.panel,expression:"panel === 'MONTH'"}],attrs:{value:t.value,"disabled-month":t.isDisabledMonth,"calendar-year":t.calendarYear},on:{select:t.selectMonth}}),t._v(" "),n("panel-time",{directives:[{name:"show",rawName:"v-show",value:"TIME"===t.panel,expression:"panel === 'TIME'"}],attrs:{"minute-step":t.minuteStep,"time-picker-options":t.timePickerOptions,"time-select-options":t.timeSelectOptions,value:t.value,"disabled-time":t.isDisabledTime,"time-type":t.timeType},on:{select:t.selectTime,pick:t.pickTime}})],1)])}),[],!1,null,null,null).exports,S=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])}return t},M=E({fecha:r.a,name:"DatePicker",components:{CalendarPanel:O},mixins:[A],directives:{clickoutside:s},props:{value:null,valueType:{default:"date",validator:function(t){return-1!==["timestamp","format","date"].indexOf(t)||c(t)}},placeholder:{type:String,default:null},lang:{type:[String,Object],default:"zh"},format:{type:[String,Object],default:"YYYY-MM-DD"},dateFormat:{type:String},type:{type:String,default:"date"},range:{type:Boolean,default:!1},rangeSeparator:{type:String,default:"~"},width:{type:[String,Number],default:null},confirmText:{type:String,default:"OK"},confirm:{type:Boolean,default:!1},editable:{type:Boolean,default:!0},disabled:{type:Boolean,default:!1},clearable:{type:Boolean,default:!0},shortcuts:{type:[Boolean,Array],default:!0},inputName:{type:String,default:"date"},inputClass:{type:[String,Array],default:"mx-input"},inputAttr:Object,appendToBody:{type:Boolean,default:!1},popupStyle:{type:Object}},data:function(){return{currentValue:this.range?[null,null]:null,userInput:null,popupVisible:!1,position:{}}},watch:{value:{immediate:!0,handler:"handleValueChange"},popupVisible:function(t){t?this.initCalendar():(this.userInput=null,this.blur())}},computed:{transform:function(){var t=this.valueType;return c(t)?S({},h.date,t):"format"===t?{value2date:this.parse.bind(this),date2value:this.stringify.bind(this)}:h[t]||h.date},language:function(){return c(this.lang)?S({},v.en,this.lang):v[this.lang]||v.en},innerPlaceholder:function(){return"string"==typeof this.placeholder?this.placeholder:this.range?this.t("placeholder.dateRange"):this.t("placeholder.date")},text:function(){if(null!==this.userInput)return this.userInput;var t=this.transform.value2date;return this.range?this.isValidRangeValue(this.value)?this.stringify(t(this.value[0]))+" "+this.rangeSeparator+" "+this.stringify(t(this.value[1])):"":this.isValidValue(this.value)?this.stringify(t(this.value)):""},computedWidth:function(){return"number"==typeof this.width||"string"==typeof this.width&&/^\d+$/.test(this.width)?this.width+"px":this.width},showClearIcon:function(){return!this.disabled&&this.clearable&&(this.range?this.isValidRangeValue(this.value):this.isValidValue(this.value))},innerType:function(){return String(this.type).toLowerCase()},innerShortcuts:function(){if(Array.isArray(this.shortcuts))return this.shortcuts;if(!1===this.shortcuts)return[];var t=this.t("pickers");return[{text:t[0],onClick:function(t){t.currentValue=[new Date,new Date(Date.now()+6048e5)],t.updateDate(!0)}},{text:t[1],onClick:function(t){t.currentValue=[new Date,new Date(Date.now()+2592e6)],t.updateDate(!0)}},{text:t[2],onClick:function(t){t.currentValue=[new Date(Date.now()-6048e5),new Date],t.updateDate(!0)}},{text:t[3],onClick:function(t){t.currentValue=[new Date(Date.now()-2592e6),new Date],t.updateDate(!0)}}]},innerDateFormat:function(){return this.dateFormat?this.dateFormat:"string"!=typeof this.format?"YYYY-MM-DD":"date"===this.innerType?this.format:this.format.replace(/[Hh]+.*[msSaAZ]|\[.*?\]/g,"").trim()||"YYYY-MM-DD"},innerPopupStyle:function(){return S({},this.position,this.popupStyle)}},mounted:function(){var t,e,n,i,r=this;this.appendToBody&&(this.popupElm=this.$refs.calendar,document.body.appendChild(this.popupElm)),this._displayPopup=(t=function(){r.popupVisible&&r.displayPopup()},e=200,n=0,i=null,function(){var r=this;if(!i){var o=arguments,a=function(){n=Date.now(),i=null,t.apply(r,o)};Date.now()-n>=e?a():i=setTimeout(a,e)}}),window.addEventListener("resize",this._displayPopup),window.addEventListener("scroll",this._displayPopup)},beforeDestroy:function(){this.popupElm&&this.popupElm.parentNode===document.body&&document.body.removeChild(this.popupElm),window.removeEventListener("resize",this._displayPopup),window.removeEventListener("scroll",this._displayPopup)},methods:{initCalendar:function(){this.handleValueChange(this.value),this.displayPopup()},stringify:function(t){return c(this.format)&&"function"==typeof this.format.stringify?this.format.stringify(t):f(t,this.format)},parse:function(t){return c(this.format)&&"function"==typeof this.format.parse?this.format.parse(t):function(t,e){try{return r.a.parse(t,e)||null}catch(t){return null}}(t,this.format)},isValidValue:function(t){return u((0,this.transform.value2date)(t))},isValidRangeValue:function(t){var e=this.transform.value2date;return Array.isArray(t)&&2===t.length&&this.isValidValue(t[0])&&this.isValidValue(t[1])&&e(t[1]).getTime()>=e(t[0]).getTime()},dateEqual:function(t,e){return l(t)&&l(e)&&t.getTime()===e.getTime()},rangeEqual:function(t,e){var n=this;return Array.isArray(t)&&Array.isArray(e)&&t.length===e.length&&t.every((function(t,i){return n.dateEqual(t,e[i])}))},selectRange:function(t){"function"==typeof t.onClick?!1!==t.onClick(this)&&this.closePopup():(this.currentValue=[new Date(t.start),new Date(t.end)],this.updateDate(!0),this.closePopup())},clearDate:function(){var t=this.range?[null,null]:null;this.currentValue=t,this.updateDate(!0),this.$emit("clear")},confirmDate:function(){var t;(this.range?(t=this.currentValue,Array.isArray(t)&&2===t.length&&u(t[0])&&u(t[1])&&new Date(t[1]).getTime()>=new Date(t[0]).getTime()):u(this.currentValue))&&this.updateDate(!0),this.emitDate("confirm"),this.closePopup()},updateDate:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return!(this.confirm&&!t||this.disabled||(this.range?this.rangeEqual(this.value,this.currentValue):this.dateEqual(this.value,this.currentValue))||(this.emitDate("input"),this.emitDate("change"),0))},emitDate:function(t){var e=this.transform.date2value,n=this.range?this.currentValue.map(e):e(this.currentValue);this.$emit(t,n)},handleValueChange:function(t){var e=this.transform.value2date;this.range?this.currentValue=this.isValidRangeValue(t)?t.map(e):[null,null]:this.currentValue=this.isValidValue(t)?e(t):null},selectDate:function(t){this.currentValue=t,this.updateDate()&&this.closePopup()},selectStartDate:function(t){this.$set(this.currentValue,0,t),this.currentValue[1]&&this.updateDate()},selectEndDate:function(t){this.$set(this.currentValue,1,t),this.currentValue[0]&&this.updateDate()},selectTime:function(t,e){this.currentValue=t,this.updateDate()&&e&&this.closePopup()},selectStartTime:function(t){this.selectStartDate(t)},selectEndTime:function(t){this.selectEndDate(t)},showPopup:function(){this.disabled||(this.popupVisible=!0)},closePopup:function(){this.popupVisible=!1},getPopupSize:function(t){var e=t.style.display,n=t.style.visibility;t.style.display="block",t.style.visibility="hidden";var i=window.getComputedStyle(t),r={width:t.offsetWidth+parseInt(i.marginLeft)+parseInt(i.marginRight),height:t.offsetHeight+parseInt(i.marginTop)+parseInt(i.marginBottom)};return t.style.display=e,t.style.visibility=n,r},displayPopup:function(){var t=document.documentElement.clientWidth,e=document.documentElement.clientHeight,n=this.$el.getBoundingClientRect(),i=this._popupRect||(this._popupRect=this.getPopupSize(this.$refs.calendar)),r={},o=0,a=0;this.appendToBody&&(o=window.pageXOffset+n.left,a=window.pageYOffset+n.top),t-n.left<i.width&&n.right<i.width?r.left=o-n.left+1+"px":n.left+n.width/2<=t/2?r.left=o+"px":r.left=o+n.width-i.width+"px",n.top<=i.height&&e-n.bottom<=i.height?r.top=a+e-n.top-i.height+"px":n.top+n.height/2<=e/2?r.top=a+n.height+"px":r.top=a-i.height+"px",r.top===this.position.top&&r.left===this.position.left||(this.position=r)},blur:function(){this.$refs.input.blur()},handleBlur:function(t){this.$emit("blur",t)},handleFocus:function(t){this.popupVisible||this.showPopup(),this.$emit("focus",t)},handleKeydown:function(t){var e=t.keyCode;9!==e&&13!==e||(t.stopPropagation(),this.handleChange(),this.userInput=null,this.closePopup())},handleInput:function(t){this.userInput=t.target.value},handleChange:function(){if(this.editable&&null!==this.userInput){var t=this.text,e=this.$refs.calendarPanel.isDisabledTime;if(!t)return void this.clearDate();if(this.range){var n=t.split(" "+this.rangeSeparator+" ");if(2===n.length){var i=this.parse(n[0]),r=this.parse(n[1]);if(i&&r&&!e(i,null,r)&&!e(r,i,null))return this.currentValue=[i,r],this.updateDate(!0),void this.closePopup()}}else{var o=this.parse(t);if(o&&!e(o,null,null))return this.currentValue=o,this.updateDate(!0),void this.closePopup()}this.$emit("input-error",t)}}}},(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:t.closePopup,expression:"closePopup"}],staticClass:"mx-datepicker",class:{"mx-datepicker-range":t.range,disabled:t.disabled},style:{width:t.computedWidth}},[n("div",{staticClass:"mx-input-wrapper",on:{click:function(e){return e.stopPropagation(),t.showPopup(e)}}},[n("input",t._b({ref:"input",class:t.inputClass,attrs:{name:t.inputName,type:"text",autocomplete:"off",disabled:t.disabled,readonly:!t.editable,placeholder:t.innerPlaceholder},domProps:{value:t.text},on:{keydown:t.handleKeydown,focus:t.handleFocus,blur:t.handleBlur,input:t.handleInput,change:t.handleChange}},"input",t.inputAttr,!1)),t._v(" "),t.showClearIcon?n("span",{staticClass:"mx-input-append mx-clear-wrapper",on:{click:function(e){return e.stopPropagation(),t.clearDate(e)}}},[t._t("mx-clear-icon",[n("i",{staticClass:"mx-input-icon mx-clear-icon"})])],2):t._e(),t._v(" "),n("span",{staticClass:"mx-input-append"},[t._t("calendar-icon",[n("svg",{staticClass:"mx-calendar-icon",attrs:{xmlns:"http://www.w3.org/2000/svg",version:"1.1",viewBox:"0 0 200 200"}},[n("rect",{attrs:{x:"13",y:"29",rx:"14",ry:"14",width:"174",height:"158",fill:"transparent"}}),t._v(" "),n("line",{attrs:{x1:"46",x2:"46",y1:"8",y2:"50"}}),t._v(" "),n("line",{attrs:{x1:"154",x2:"154",y1:"8",y2:"50"}}),t._v(" "),n("line",{attrs:{x1:"13",x2:"187",y1:"70",y2:"70"}}),t._v(" "),n("text",{attrs:{x:"50%",y:"135","font-size":"90","stroke-width":"1","text-anchor":"middle","dominant-baseline":"middle"}},[t._v(t._s((new Date).getDate()))])])])],2)]),t._v(" "),n("div",{directives:[{name:"show",rawName:"v-show",value:t.popupVisible,expression:"popupVisible"}],ref:"calendar",staticClass:"mx-datepicker-popup",style:t.innerPopupStyle,on:{click:function(t){t.stopPropagation(),t.preventDefault()}}},[t._t("header",[t.range&&t.innerShortcuts.length?n("div",{staticClass:"mx-shortcuts-wrapper"},t._l(t.innerShortcuts,(function(e,i){return n("button",{key:i,staticClass:"mx-shortcuts",attrs:{type:"button"},on:{click:function(n){t.selectRange(e)}}},[t._v(t._s(e.text))])}))):t._e()]),t._v(" "),t.range?n("div",{staticClass:"mx-range-wrapper"},[n("calendar-panel",t._b({ref:"calendarPanel",staticStyle:{"box-shadow":"1px 0 rgba(0, 0, 0, .1)"},attrs:{index:0,type:t.innerType,"date-format":t.innerDateFormat,value:t.currentValue[0],"end-at":t.currentValue[1],"start-at":null,visible:t.popupVisible},on:{"select-date":t.selectStartDate,"select-time":t.selectStartTime}},"calendar-panel",t.$attrs,!1)),t._v(" "),n("calendar-panel",t._b({attrs:{index:1,type:t.innerType,"date-format":t.innerDateFormat,value:t.currentValue[1],"start-at":t.currentValue[0],"end-at":null,visible:t.popupVisible},on:{"select-date":t.selectEndDate,"select-time":t.selectEndTime}},"calendar-panel",t.$attrs,!1))],1):n("calendar-panel",t._b({ref:"calendarPanel",attrs:{index:-1,type:t.innerType,"date-format":t.innerDateFormat,value:t.currentValue,visible:t.popupVisible},on:{"select-date":t.selectDate,"select-time":t.selectTime}},"calendar-panel",t.$attrs,!1)),t._v(" "),t._t("footer",[t.confirm?n("div",{staticClass:"mx-datepicker-footer"},[n("button",{staticClass:"mx-datepicker-btn mx-datepicker-btn-confirm",attrs:{type:"button"},on:{click:t.confirmDate}},[t._v(t._s(t.confirmText))])]):t._e()],{confirm:t.confirmDate})],2)])}),[],!1,null,null,null).exports;n(7),M.install=function(t){t.component(M.name,M)},"undefined"!=typeof window&&window.Vue&&M.install(window.Vue),e.default=M},function(t,e){t.exports=function(){var t=[];return t.toString=function(){for(var t=[],e=0;e<this.length;e++){var n=this[e];n[2]?t.push("@media "+n[2]+"{"+n[1]+"}"):t.push(n[1])}return t.join("")},t.i=function(e,n){"string"==typeof e&&(e=[[null,e,""]]);for(var i={},r=0;r<this.length;r++){var o=this[r][0];"number"==typeof o&&(i[o]=!0)}for(r=0;r<e.length;r++){var a=e[r];"number"==typeof a[0]&&i[a[0]]||(n&&!a[2]?a[2]=n:n&&(a[2]="("+a[2]+") and ("+n+")"),t.push(a))}},t}},,function(t,e,n){(t.exports=n(4)()).push([t.i,"",""])},function(t,e,n){var i=n(6);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("529d5378",i,!0,{})}])},function(t,e,n){var i=n(33);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("941c791e",i,!0,{})},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,".vue-tooltip[data-v-6673a70]{position:absolute;z-index:100000;right:auto;left:auto;display:block;margin:0;margin-top:-3px;padding:10px 0;text-align:left;text-align:start;white-space:normal;text-decoration:none;letter-spacing:normal;word-spacing:normal;text-transform:none;word-wrap:normal;word-break:normal;opacity:0;text-shadow:none;font-family:'Nunito', 'Open Sans', Frutiger, Calibri, 'Myriad Pro', Myriad, sans-serif;font-size:12px;font-weight:normal;font-style:normal;line-height:1.6;line-break:auto;filter:drop-shadow(0 1px 10px var(--color-box-shadow))}.vue-tooltip[data-v-6673a70][x-placement^='top'] .tooltip-arrow{bottom:0;margin-top:0;margin-bottom:0;border-width:10px 10px 0 10px;border-right-color:transparent;border-bottom-color:transparent;border-left-color:transparent}.vue-tooltip[data-v-6673a70][x-placement^='bottom'] .tooltip-arrow{top:0;margin-top:0;margin-bottom:0;border-width:0 10px 10px 10px;border-top-color:transparent;border-right-color:transparent;border-left-color:transparent}.vue-tooltip[data-v-6673a70][x-placement^='right'] .tooltip-arrow{right:100%;margin-right:0;margin-left:0;border-width:10px 10px 10px 0;border-top-color:transparent;border-bottom-color:transparent;border-left-color:transparent}.vue-tooltip[data-v-6673a70][x-placement^='left'] .tooltip-arrow{left:100%;margin-right:0;margin-left:0;border-width:10px 0 10px 10px;border-top-color:transparent;border-right-color:transparent;border-bottom-color:transparent}.vue-tooltip[data-v-6673a70][aria-hidden='true']{visibility:hidden;transition:opacity .15s, visibility .15s;opacity:0}.vue-tooltip[data-v-6673a70][aria-hidden='false']{visibility:visible;transition:opacity .15s;opacity:1}.vue-tooltip[data-v-6673a70] .tooltip-inner{max-width:350px;padding:5px 8px;text-align:center;color:var(--color-main-text);border-radius:var(--border-radius);background-color:var(--color-main-background)}.vue-tooltip[data-v-6673a70] .tooltip-arrow{position:absolute;z-index:1;width:0;height:0;margin:0;border-style:solid;border-color:var(--color-main-background)}\n",""])},function(t,e,n){"use strict"; +/*! + * escape-html + * Copyright(c) 2012-2013 TJ Holowaychuk + * Copyright(c) 2015 Andreas Lubbe + * Copyright(c) 2015 Tiancheng "Timothy" Gu + * MIT Licensed + */var i=/["'&<>]/;t.exports=function(t){var e,n=""+t,r=i.exec(n);if(!r)return n;var o="",a=0,s=0;for(a=r.index;a<n.length;a++){switch(n.charCodeAt(a)){case 34:e=""";break;case 38:e="&";break;case 39:e="'";break;case 60:e="<";break;case 62:e=">";break;default:continue}s!==a&&(o+=n.substring(s,a)),s=a+1,o+=e}return s!==a?o+n.substring(s,a):o}},function(t,e){},function(t,e){},function(t,e){},function(t,e,n){t.exports=n(98)},function(t,e){},function(t,e,n){var i; +/*! Hammer.JS - v2.0.7 - 2016-04-22 + * http://hammerjs.github.io/ + * + * Copyright (c) 2016 Jorik Tangelder; + * Licensed under the MIT license */ +/*! Hammer.JS - v2.0.7 - 2016-04-22 + * http://hammerjs.github.io/ + * + * Copyright (c) 2016 Jorik Tangelder; + * Licensed under the MIT license */!function(r,o,a,s){"use strict";var c,l=["","webkit","Moz","MS","ms","o"],u=o.createElement("div"),d="function",p=Math.round,f=Math.abs,h=Date.now;function v(t,e,n){return setTimeout(w(t,n),e)}function m(t,e,n){return!!Array.isArray(t)&&(A(t,n[e],n),!0)}function A(t,e,n){var i;if(t)if(t.forEach)t.forEach(e,n);else if(t.length!==s)for(i=0;i<t.length;)e.call(n,t[i],i,t),i++;else for(i in t)t.hasOwnProperty(i)&&e.call(n,t[i],i,t)}function g(t,e,n){var i="DEPRECATED METHOD: "+e+"\n"+n+" AT \n";return function(){var e=new Error("get-stack-trace"),n=e&&e.stack?e.stack.replace(/^[^\(]+?[\n$]/gm,"").replace(/^\s+at\s+/gm,"").replace(/^Object.<anonymous>\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",o=r.console&&(r.console.warn||r.console.log);return o&&o.call(r.console,i,n),t.apply(this,arguments)}}c="function"!=typeof Object.assign?function(t){if(t===s||null===t)throw new TypeError("Cannot convert undefined or null to object");for(var e=Object(t),n=1;n<arguments.length;n++){var i=arguments[n];if(i!==s&&null!==i)for(var r in i)i.hasOwnProperty(r)&&(e[r]=i[r])}return e}:Object.assign;var b=g((function(t,e,n){for(var i=Object.keys(e),r=0;r<i.length;)(!n||n&&t[i[r]]===s)&&(t[i[r]]=e[i[r]]),r++;return t}),"extend","Use `assign`."),y=g((function(t,e){return b(t,e,!0)}),"merge","Use `assign`.");function _(t,e,n){var i,r=e.prototype;(i=t.prototype=Object.create(r)).constructor=t,i._super=r,n&&c(i,n)}function w(t,e){return function(){return t.apply(e,arguments)}}function x(t,e){return typeof t==d?t.apply(e&&e[0]||s,e):t}function C(t,e){return t===s?e:t}function k(t,e,n){A(S(e),(function(e){t.addEventListener(e,n,!1)}))}function T(t,e,n){A(S(e),(function(e){t.removeEventListener(e,n,!1)}))}function E(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1}function O(t,e){return t.indexOf(e)>-1}function S(t){return t.trim().split(/\s+/g)}function M(t,e,n){if(t.indexOf&&!n)return t.indexOf(e);for(var i=0;i<t.length;){if(n&&t[i][n]==e||!n&&t[i]===e)return i;i++}return-1}function D(t){return Array.prototype.slice.call(t,0)}function N(t,e,n){for(var i=[],r=[],o=0;o<t.length;){var a=e?t[o][e]:t[o];M(r,a)<0&&i.push(t[o]),r[o]=a,o++}return n&&(i=e?i.sort((function(t,n){return t[e]>n[e]})):i.sort()),i}function I(t,e){for(var n,i,r=e[0].toUpperCase()+e.slice(1),o=0;o<l.length;){if((i=(n=l[o])?n+r:e)in t)return i;o++}return s}var B=1;function P(t){var e=t.ownerDocument||t;return e.defaultView||e.parentWindow||r}var L="ontouchstart"in r,j=I(r,"PointerEvent")!==s,$=L&&/mobile|tablet|ip(ad|hone|od)|android/i.test(navigator.userAgent),R=25,F=1,H=4,z=8,U=1,Y=2,V=4,Q=8,G=16,W=Y|V,q=Q|G,X=W|q,Z=["x","y"],K=["clientX","clientY"];function J(t,e){var n=this;this.manager=t,this.callback=e,this.element=t.element,this.target=t.options.inputTarget,this.domHandler=function(e){x(t.options.enable,[t])&&n.handler(e)},this.init()}function tt(t,e,n){var i=n.pointers.length,r=n.changedPointers.length,o=e&F&&i-r==0,a=e&(H|z)&&i-r==0;n.isFirst=!!o,n.isFinal=!!a,o&&(t.session={}),n.eventType=e,function(t,e){var n=t.session,i=e.pointers,r=i.length;n.firstInput||(n.firstInput=et(e)),r>1&&!n.firstMultiple?n.firstMultiple=et(e):1===r&&(n.firstMultiple=!1);var o=n.firstInput,a=n.firstMultiple,c=a?a.center:o.center,l=e.center=nt(i);e.timeStamp=h(),e.deltaTime=e.timeStamp-o.timeStamp,e.angle=at(c,l),e.distance=ot(c,l),function(t,e){var n=e.center,i=t.offsetDelta||{},r=t.prevDelta||{},o=t.prevInput||{};e.eventType!==F&&o.eventType!==H||(r=t.prevDelta={x:o.deltaX||0,y:o.deltaY||0},i=t.offsetDelta={x:n.x,y:n.y}),e.deltaX=r.x+(n.x-i.x),e.deltaY=r.y+(n.y-i.y)}(n,e),e.offsetDirection=rt(e.deltaX,e.deltaY);var u,d,p=it(e.deltaTime,e.deltaX,e.deltaY);e.overallVelocityX=p.x,e.overallVelocityY=p.y,e.overallVelocity=f(p.x)>f(p.y)?p.x:p.y,e.scale=a?(u=a.pointers,ot((d=i)[0],d[1],K)/ot(u[0],u[1],K)):1,e.rotation=a?function(t,e){return at(e[1],e[0],K)+at(t[1],t[0],K)}(a.pointers,i):0,e.maxPointers=n.prevInput?e.pointers.length>n.prevInput.maxPointers?e.pointers.length:n.prevInput.maxPointers:e.pointers.length,function(t,e){var n,i,r,o,a=t.lastInterval||e,c=e.timeStamp-a.timeStamp;if(e.eventType!=z&&(c>R||a.velocity===s)){var l=e.deltaX-a.deltaX,u=e.deltaY-a.deltaY,d=it(c,l,u);i=d.x,r=d.y,n=f(d.x)>f(d.y)?d.x:d.y,o=rt(l,u),t.lastInterval=e}else n=a.velocity,i=a.velocityX,r=a.velocityY,o=a.direction;e.velocity=n,e.velocityX=i,e.velocityY=r,e.direction=o}(n,e);var v=t.element;E(e.srcEvent.target,v)&&(v=e.srcEvent.target),e.target=v}(t,n),t.emit("hammer.input",n),t.recognize(n),t.session.prevInput=n}function et(t){for(var e=[],n=0;n<t.pointers.length;)e[n]={clientX:p(t.pointers[n].clientX),clientY:p(t.pointers[n].clientY)},n++;return{timeStamp:h(),pointers:e,center:nt(e),deltaX:t.deltaX,deltaY:t.deltaY}}function nt(t){var e=t.length;if(1===e)return{x:p(t[0].clientX),y:p(t[0].clientY)};for(var n=0,i=0,r=0;r<e;)n+=t[r].clientX,i+=t[r].clientY,r++;return{x:p(n/e),y:p(i/e)}}function it(t,e,n){return{x:e/t||0,y:n/t||0}}function rt(t,e){return t===e?U:f(t)>=f(e)?t<0?Y:V:e<0?Q:G}function ot(t,e,n){n||(n=Z);var i=e[n[0]]-t[n[0]],r=e[n[1]]-t[n[1]];return Math.sqrt(i*i+r*r)}function at(t,e,n){n||(n=Z);var i=e[n[0]]-t[n[0]],r=e[n[1]]-t[n[1]];return 180*Math.atan2(r,i)/Math.PI}J.prototype={handler:function(){},init:function(){this.evEl&&k(this.element,this.evEl,this.domHandler),this.evTarget&&k(this.target,this.evTarget,this.domHandler),this.evWin&&k(P(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&T(this.element,this.evEl,this.domHandler),this.evTarget&&T(this.target,this.evTarget,this.domHandler),this.evWin&&T(P(this.element),this.evWin,this.domHandler)}};var st={mousedown:F,mousemove:2,mouseup:H},ct="mousedown",lt="mousemove mouseup";function ut(){this.evEl=ct,this.evWin=lt,this.pressed=!1,J.apply(this,arguments)}_(ut,J,{handler:function(t){var e=st[t.type];e&F&&0===t.button&&(this.pressed=!0),2&e&&1!==t.which&&(e=H),this.pressed&&(e&H&&(this.pressed=!1),this.callback(this.manager,e,{pointers:[t],changedPointers:[t],pointerType:"mouse",srcEvent:t}))}});var dt={pointerdown:F,pointermove:2,pointerup:H,pointercancel:z,pointerout:z},pt={2:"touch",3:"pen",4:"mouse",5:"kinect"},ft="pointerdown",ht="pointermove pointerup pointercancel";function vt(){this.evEl=ft,this.evWin=ht,J.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}r.MSPointerEvent&&!r.PointerEvent&&(ft="MSPointerDown",ht="MSPointerMove MSPointerUp MSPointerCancel"),_(vt,J,{handler:function(t){var e=this.store,n=!1,i=t.type.toLowerCase().replace("ms",""),r=dt[i],o=pt[t.pointerType]||t.pointerType,a="touch"==o,s=M(e,t.pointerId,"pointerId");r&F&&(0===t.button||a)?s<0&&(e.push(t),s=e.length-1):r&(H|z)&&(n=!0),s<0||(e[s]=t,this.callback(this.manager,r,{pointers:e,changedPointers:[t],pointerType:o,srcEvent:t}),n&&e.splice(s,1))}});var mt={touchstart:F,touchmove:2,touchend:H,touchcancel:z},At="touchstart",gt="touchstart touchmove touchend touchcancel";function bt(){this.evTarget=At,this.evWin=gt,this.started=!1,J.apply(this,arguments)}_(bt,J,{handler:function(t){var e=mt[t.type];if(e===F&&(this.started=!0),this.started){var n=function(t,e){var n=D(t.touches),i=D(t.changedTouches);return e&(H|z)&&(n=N(n.concat(i),"identifier",!0)),[n,i]}.call(this,t,e);e&(H|z)&&n[0].length-n[1].length==0&&(this.started=!1),this.callback(this.manager,e,{pointers:n[0],changedPointers:n[1],pointerType:"touch",srcEvent:t})}}});var yt={touchstart:F,touchmove:2,touchend:H,touchcancel:z},_t="touchstart touchmove touchend touchcancel";function wt(){this.evTarget=_t,this.targetIds={},J.apply(this,arguments)}_(wt,J,{handler:function(t){var e=yt[t.type],n=function(t,e){var n=D(t.touches),i=this.targetIds;if(e&(2|F)&&1===n.length)return i[n[0].identifier]=!0,[n,n];var r,o,a=D(t.changedTouches),s=[],c=this.target;if(o=n.filter((function(t){return E(t.target,c)})),e===F)for(r=0;r<o.length;)i[o[r].identifier]=!0,r++;for(r=0;r<a.length;)i[a[r].identifier]&&s.push(a[r]),e&(H|z)&&delete i[a[r].identifier],r++;return s.length?[N(o.concat(s),"identifier",!0),s]:void 0}.call(this,t,e);n&&this.callback(this.manager,e,{pointers:n[0],changedPointers:n[1],pointerType:"touch",srcEvent:t})}});var xt=2500;function Ct(){J.apply(this,arguments);var t=w(this.handler,this);this.touch=new wt(this.manager,t),this.mouse=new ut(this.manager,t),this.primaryTouch=null,this.lastTouches=[]}function kt(t){var e=t.changedPointers[0];if(e.identifier===this.primaryTouch){var n={x:e.clientX,y:e.clientY};this.lastTouches.push(n);var i=this.lastTouches;setTimeout((function(){var t=i.indexOf(n);t>-1&&i.splice(t,1)}),xt)}}_(Ct,J,{handler:function(t,e,n){var i="touch"==n.pointerType,r="mouse"==n.pointerType;if(!(r&&n.sourceCapabilities&&n.sourceCapabilities.firesTouchEvents)){if(i)(function(t,e){t&F?(this.primaryTouch=e.changedPointers[0].identifier,kt.call(this,e)):t&(H|z)&&kt.call(this,e)}).call(this,e,n);else if(r&&function(t){for(var e=t.srcEvent.clientX,n=t.srcEvent.clientY,i=0;i<this.lastTouches.length;i++){var r=this.lastTouches[i],o=Math.abs(e-r.x),a=Math.abs(n-r.y);if(o<=25&&a<=25)return!0}return!1}.call(this,n))return;this.callback(t,e,n)}},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var Tt=I(u.style,"touchAction"),Et=Tt!==s,Ot="manipulation",St="none",Mt="pan-x",Dt="pan-y",Nt=function(){if(!Et)return!1;var t={},e=r.CSS&&r.CSS.supports;return["auto","manipulation","pan-y","pan-x","pan-x pan-y","none"].forEach((function(n){t[n]=!e||r.CSS.supports("touch-action",n)})),t}();function It(t,e){this.manager=t,this.set(e)}It.prototype={set:function(t){"compute"==t&&(t=this.compute()),Et&&this.manager.element.style&&Nt[t]&&(this.manager.element.style[Tt]=t),this.actions=t.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var t=[];return A(this.manager.recognizers,(function(e){x(e.options.enable,[e])&&(t=t.concat(e.getTouchAction()))})),function(t){if(O(t,St))return St;var e=O(t,Mt),n=O(t,Dt);return e&&n?St:e||n?e?Mt:Dt:O(t,Ot)?Ot:"auto"}(t.join(" "))},preventDefaults:function(t){var e=t.srcEvent,n=t.offsetDirection;if(this.manager.session.prevented)e.preventDefault();else{var i=this.actions,r=O(i,St)&&!Nt[St],o=O(i,Dt)&&!Nt[Dt],a=O(i,Mt)&&!Nt[Mt];if(r){var s=1===t.pointers.length,c=t.distance<2,l=t.deltaTime<250;if(s&&c&&l)return}if(!a||!o)return r||o&&n&W||a&&n&q?this.preventSrc(e):void 0}},preventSrc:function(t){this.manager.session.prevented=!0,t.preventDefault()}};var Bt=1,Pt=2,Lt=4,jt=8,$t=jt,Rt=16;function Ft(t){this.options=c({},this.defaults,t||{}),this.id=B++,this.manager=null,this.options.enable=C(this.options.enable,!0),this.state=Bt,this.simultaneous={},this.requireFail=[]}function Ht(t){return t&Rt?"cancel":t&jt?"end":t&Lt?"move":t&Pt?"start":""}function zt(t){return t==G?"down":t==Q?"up":t==Y?"left":t==V?"right":""}function Ut(t,e){var n=e.manager;return n?n.get(t):t}function Yt(){Ft.apply(this,arguments)}function Vt(){Yt.apply(this,arguments),this.pX=null,this.pY=null}function Qt(){Yt.apply(this,arguments)}function Gt(){Ft.apply(this,arguments),this._timer=null,this._input=null}function Wt(){Yt.apply(this,arguments)}function qt(){Yt.apply(this,arguments)}function Xt(){Ft.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}function Zt(t,e){return(e=e||{}).recognizers=C(e.recognizers,Zt.defaults.preset),new Kt(t,e)}function Kt(t,e){var n;this.options=c({},Zt.defaults,e||{}),this.options.inputTarget=this.options.inputTarget||t,this.handlers={},this.session={},this.recognizers=[],this.oldCssProps={},this.element=t,this.input=new((n=this).options.inputClass||(j?vt:$?wt:L?Ct:ut))(n,tt),this.touchAction=new It(this,this.options.touchAction),Jt(this,!0),A(this.options.recognizers,(function(t){var e=this.add(new t[0](t[1]));t[2]&&e.recognizeWith(t[2]),t[3]&&e.requireFailure(t[3])}),this)}function Jt(t,e){var n,i=t.element;i.style&&(A(t.options.cssProps,(function(r,o){n=I(i.style,o),e?(t.oldCssProps[n]=i.style[n],i.style[n]=r):i.style[n]=t.oldCssProps[n]||""})),e||(t.oldCssProps={}))}Ft.prototype={defaults:{},set:function(t){return c(this.options,t),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(t){if(m(t,"recognizeWith",this))return this;var e=this.simultaneous;return e[(t=Ut(t,this)).id]||(e[t.id]=t,t.recognizeWith(this)),this},dropRecognizeWith:function(t){return m(t,"dropRecognizeWith",this)?this:(t=Ut(t,this),delete this.simultaneous[t.id],this)},requireFailure:function(t){if(m(t,"requireFailure",this))return this;var e=this.requireFail;return-1===M(e,t=Ut(t,this))&&(e.push(t),t.requireFailure(this)),this},dropRequireFailure:function(t){if(m(t,"dropRequireFailure",this))return this;t=Ut(t,this);var e=M(this.requireFail,t);return e>-1&&this.requireFail.splice(e,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(t){return!!this.simultaneous[t.id]},emit:function(t){var e=this,n=this.state;function i(n){e.manager.emit(n,t)}n<jt&&i(e.options.event+Ht(n)),i(e.options.event),t.additionalEvent&&i(t.additionalEvent),n>=jt&&i(e.options.event+Ht(n))},tryEmit:function(t){if(this.canEmit())return this.emit(t);this.state=32},canEmit:function(){for(var t=0;t<this.requireFail.length;){if(!(this.requireFail[t].state&(32|Bt)))return!1;t++}return!0},recognize:function(t){var e=c({},t);if(!x(this.options.enable,[this,e]))return this.reset(),void(this.state=32);this.state&($t|Rt|32)&&(this.state=Bt),this.state=this.process(e),this.state&(Pt|Lt|jt|Rt)&&this.tryEmit(e)},process:function(t){},getTouchAction:function(){},reset:function(){}},_(Yt,Ft,{defaults:{pointers:1},attrTest:function(t){var e=this.options.pointers;return 0===e||t.pointers.length===e},process:function(t){var e=this.state,n=t.eventType,i=e&(Pt|Lt),r=this.attrTest(t);return i&&(n&z||!r)?e|Rt:i||r?n&H?e|jt:e&Pt?e|Lt:Pt:32}}),_(Vt,Yt,{defaults:{event:"pan",threshold:10,pointers:1,direction:X},getTouchAction:function(){var t=this.options.direction,e=[];return t&W&&e.push(Dt),t&q&&e.push(Mt),e},directionTest:function(t){var e=this.options,n=!0,i=t.distance,r=t.direction,o=t.deltaX,a=t.deltaY;return r&e.direction||(e.direction&W?(r=0===o?U:o<0?Y:V,n=o!=this.pX,i=Math.abs(t.deltaX)):(r=0===a?U:a<0?Q:G,n=a!=this.pY,i=Math.abs(t.deltaY))),t.direction=r,n&&i>e.threshold&&r&e.direction},attrTest:function(t){return Yt.prototype.attrTest.call(this,t)&&(this.state&Pt||!(this.state&Pt)&&this.directionTest(t))},emit:function(t){this.pX=t.deltaX,this.pY=t.deltaY;var e=zt(t.direction);e&&(t.additionalEvent=this.options.event+e),this._super.emit.call(this,t)}}),_(Qt,Yt,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[St]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.scale-1)>this.options.threshold||this.state&Pt)},emit:function(t){if(1!==t.scale){var e=t.scale<1?"in":"out";t.additionalEvent=this.options.event+e}this._super.emit.call(this,t)}}),_(Gt,Ft,{defaults:{event:"press",pointers:1,time:251,threshold:9},getTouchAction:function(){return["auto"]},process:function(t){var e=this.options,n=t.pointers.length===e.pointers,i=t.distance<e.threshold,r=t.deltaTime>e.time;if(this._input=t,!i||!n||t.eventType&(H|z)&&!r)this.reset();else if(t.eventType&F)this.reset(),this._timer=v((function(){this.state=$t,this.tryEmit()}),e.time,this);else if(t.eventType&H)return $t;return 32},reset:function(){clearTimeout(this._timer)},emit:function(t){this.state===$t&&(t&&t.eventType&H?this.manager.emit(this.options.event+"up",t):(this._input.timeStamp=h(),this.manager.emit(this.options.event,this._input)))}}),_(Wt,Yt,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[St]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.rotation)>this.options.threshold||this.state&Pt)}}),_(qt,Yt,{defaults:{event:"swipe",threshold:10,velocity:.3,direction:W|q,pointers:1},getTouchAction:function(){return Vt.prototype.getTouchAction.call(this)},attrTest:function(t){var e,n=this.options.direction;return n&(W|q)?e=t.overallVelocity:n&W?e=t.overallVelocityX:n&q&&(e=t.overallVelocityY),this._super.attrTest.call(this,t)&&n&t.offsetDirection&&t.distance>this.options.threshold&&t.maxPointers==this.options.pointers&&f(e)>this.options.velocity&&t.eventType&H},emit:function(t){var e=zt(t.offsetDirection);e&&this.manager.emit(this.options.event+e,t),this.manager.emit(this.options.event,t)}}),_(Xt,Ft,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[Ot]},process:function(t){var e=this.options,n=t.pointers.length===e.pointers,i=t.distance<e.threshold,r=t.deltaTime<e.time;if(this.reset(),t.eventType&F&&0===this.count)return this.failTimeout();if(i&&r&&n){if(t.eventType!=H)return this.failTimeout();var o=!this.pTime||t.timeStamp-this.pTime<e.interval,a=!this.pCenter||ot(this.pCenter,t.center)<e.posThreshold;if(this.pTime=t.timeStamp,this.pCenter=t.center,a&&o?this.count+=1:this.count=1,this._input=t,0==this.count%e.taps)return this.hasRequireFailures()?(this._timer=v((function(){this.state=$t,this.tryEmit()}),e.interval,this),Pt):$t}return 32},failTimeout:function(){return this._timer=v((function(){this.state=32}),this.options.interval,this),32},reset:function(){clearTimeout(this._timer)},emit:function(){this.state==$t&&(this._input.tapCount=this.count,this.manager.emit(this.options.event,this._input))}}),Zt.VERSION="2.0.7",Zt.defaults={domEvents:!1,touchAction:"compute",enable:!0,inputTarget:null,inputClass:null,preset:[[Wt,{enable:!1}],[Qt,{enable:!1},["rotate"]],[qt,{direction:W}],[Vt,{direction:W},["swipe"]],[Xt],[Xt,{event:"doubletap",taps:2},["tap"]],[Gt]],cssProps:{userSelect:"none",touchSelect:"none",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},Kt.prototype={set:function(t){return c(this.options,t),t.touchAction&&this.touchAction.update(),t.inputTarget&&(this.input.destroy(),this.input.target=t.inputTarget,this.input.init()),this},stop:function(t){this.session.stopped=t?2:1},recognize:function(t){var e=this.session;if(!e.stopped){var n;this.touchAction.preventDefaults(t);var i=this.recognizers,r=e.curRecognizer;(!r||r&&r.state&$t)&&(r=e.curRecognizer=null);for(var o=0;o<i.length;)n=i[o],2===e.stopped||r&&n!=r&&!n.canRecognizeWith(r)?n.reset():n.recognize(t),!r&&n.state&(Pt|Lt|jt)&&(r=e.curRecognizer=n),o++}},get:function(t){if(t instanceof Ft)return t;for(var e=this.recognizers,n=0;n<e.length;n++)if(e[n].options.event==t)return e[n];return null},add:function(t){if(m(t,"add",this))return this;var e=this.get(t.options.event);return e&&this.remove(e),this.recognizers.push(t),t.manager=this,this.touchAction.update(),t},remove:function(t){if(m(t,"remove",this))return this;if(t=this.get(t)){var e=this.recognizers,n=M(e,t);-1!==n&&(e.splice(n,1),this.touchAction.update())}return this},on:function(t,e){if(t!==s&&e!==s){var n=this.handlers;return A(S(t),(function(t){n[t]=n[t]||[],n[t].push(e)})),this}},off:function(t,e){if(t!==s){var n=this.handlers;return A(S(t),(function(t){e?n[t]&&n[t].splice(M(n[t],e),1):delete n[t]})),this}},emit:function(t,e){this.options.domEvents&&function(t,e){var n=o.createEvent("Event");n.initEvent(t,!0,!0),n.gesture=e,e.target.dispatchEvent(n)}(t,e);var n=this.handlers[t]&&this.handlers[t].slice();if(n&&n.length){e.type=t,e.preventDefault=function(){e.srcEvent.preventDefault()};for(var i=0;i<n.length;)n[i](e),i++}},destroy:function(){this.element&&Jt(this,!1),this.handlers={},this.session={},this.input.destroy(),this.element=null}},c(Zt,{INPUT_START:F,INPUT_MOVE:2,INPUT_END:H,INPUT_CANCEL:z,STATE_POSSIBLE:Bt,STATE_BEGAN:Pt,STATE_CHANGED:Lt,STATE_ENDED:jt,STATE_RECOGNIZED:$t,STATE_CANCELLED:Rt,STATE_FAILED:32,DIRECTION_NONE:U,DIRECTION_LEFT:Y,DIRECTION_RIGHT:V,DIRECTION_UP:Q,DIRECTION_DOWN:G,DIRECTION_HORIZONTAL:W,DIRECTION_VERTICAL:q,DIRECTION_ALL:X,Manager:Kt,Input:J,TouchAction:It,TouchInput:wt,MouseInput:ut,PointerEventInput:vt,TouchMouseInput:Ct,SingleTouchInput:bt,Recognizer:Ft,AttrRecognizer:Yt,Tap:Xt,Pan:Vt,Swipe:qt,Pinch:Qt,Rotate:Wt,Press:Gt,on:k,off:T,each:A,merge:y,extend:b,assign:c,inherit:_,bindFn:w,prefixed:I}),(void 0!==r?r:"undefined"!=typeof self?self:{}).Hammer=Zt,(i=function(){return Zt}.call(e,n,e,t))===s||(t.exports=i)}(window,document)},function(t,e,n){"use strict";var i=n(18);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,"\nbutton.menuitem[data-v-8dc4efb0] {\n\ttext-align: left;\n}\nbutton.menuitem *[data-v-8dc4efb0] {\n\tcursor: pointer;\n}\nbutton.menuitem[data-v-8dc4efb0]:disabled {\n\topacity: 0.5 !important;\n\tcursor: default;\n}\nbutton.menuitem:disabled *[data-v-8dc4efb0] {\n\tcursor: default;\n}\n.menuitem.active[data-v-8dc4efb0] {\n\tbox-shadow: inset 2px 0 var(--color-primary);\n\tborder-radius: 0;\n}\n",""])},function(t,e,n){"use strict";var i=n(19);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,"li[data-v-8dc4efb0]{display:flex;flex:0 0 auto}li.hidden[data-v-8dc4efb0]{display:none}li>button[data-v-8dc4efb0],li>a[data-v-8dc4efb0],li>.menuitem[data-v-8dc4efb0]{cursor:pointer;line-height:44px;border:0;border-radius:0;background-color:transparent;display:flex;align-items:flex-start;height:auto;margin:0;padding:0;font-weight:normal;box-shadow:none;width:100%;color:var(--color-main-text);white-space:nowrap;opacity:.7}li>button span[class^='icon-'][data-v-8dc4efb0],li>button span[class*=' icon-'][data-v-8dc4efb0],li>button[class^='icon-'][data-v-8dc4efb0],li>button[class*=' icon-'][data-v-8dc4efb0],li>a span[class^='icon-'][data-v-8dc4efb0],li>a span[class*=' icon-'][data-v-8dc4efb0],li>a[class^='icon-'][data-v-8dc4efb0],li>a[class*=' icon-'][data-v-8dc4efb0],li>.menuitem span[class^='icon-'][data-v-8dc4efb0],li>.menuitem span[class*=' icon-'][data-v-8dc4efb0],li>.menuitem[class^='icon-'][data-v-8dc4efb0],li>.menuitem[class*=' icon-'][data-v-8dc4efb0]{min-width:0;min-height:0;background-position:14px center;background-size:16px}li>button span[class^='icon-'][data-v-8dc4efb0],li>button span[class*=' icon-'][data-v-8dc4efb0],li>a span[class^='icon-'][data-v-8dc4efb0],li>a span[class*=' icon-'][data-v-8dc4efb0],li>.menuitem span[class^='icon-'][data-v-8dc4efb0],li>.menuitem span[class*=' icon-'][data-v-8dc4efb0]{padding:22px 0 22px 44px}li>button:not([class^='icon-']):not([class*='icon-'])>span[data-v-8dc4efb0]:not([class^='icon-']):not([class*='icon-']):first-child,li>button:not([class^='icon-']):not([class*='icon-'])>input[data-v-8dc4efb0]:not([class^='icon-']):not([class*='icon-']):first-child,li>button:not([class^='icon-']):not([class*='icon-'])>form[data-v-8dc4efb0]:not([class^='icon-']):not([class*='icon-']):first-child,li>a:not([class^='icon-']):not([class*='icon-'])>span[data-v-8dc4efb0]:not([class^='icon-']):not([class*='icon-']):first-child,li>a:not([class^='icon-']):not([class*='icon-'])>input[data-v-8dc4efb0]:not([class^='icon-']):not([class*='icon-']):first-child,li>a:not([class^='icon-']):not([class*='icon-'])>form[data-v-8dc4efb0]:not([class^='icon-']):not([class*='icon-']):first-child,li>.menuitem:not([class^='icon-']):not([class*='icon-'])>span[data-v-8dc4efb0]:not([class^='icon-']):not([class*='icon-']):first-child,li>.menuitem:not([class^='icon-']):not([class*='icon-'])>input[data-v-8dc4efb0]:not([class^='icon-']):not([class*='icon-']):first-child,li>.menuitem:not([class^='icon-']):not([class*='icon-'])>form[data-v-8dc4efb0]:not([class^='icon-']):not([class*='icon-']):first-child{margin-left:44px}li>button[class^='icon-'][data-v-8dc4efb0],li>button[class*=' icon-'][data-v-8dc4efb0],li>a[class^='icon-'][data-v-8dc4efb0],li>a[class*=' icon-'][data-v-8dc4efb0],li>.menuitem[class^='icon-'][data-v-8dc4efb0],li>.menuitem[class*=' icon-'][data-v-8dc4efb0]{padding:0 14px 0 44px}li>button[data-v-8dc4efb0]:not(:disabled):hover,li>button[data-v-8dc4efb0]:not(:disabled):focus,li>button:not(:disabled).active[data-v-8dc4efb0],li>a[data-v-8dc4efb0]:not(:disabled):hover,li>a[data-v-8dc4efb0]:not(:disabled):focus,li>a:not(:disabled).active[data-v-8dc4efb0],li>.menuitem[data-v-8dc4efb0]:not(:disabled):hover,li>.menuitem[data-v-8dc4efb0]:not(:disabled):focus,li>.menuitem:not(:disabled).active[data-v-8dc4efb0]{opacity:1 !important}li>button.action[data-v-8dc4efb0],li>a.action[data-v-8dc4efb0],li>.menuitem.action[data-v-8dc4efb0]{padding:inherit !important}li>button>span[data-v-8dc4efb0],li>a>span[data-v-8dc4efb0],li>.menuitem>span[data-v-8dc4efb0]{cursor:pointer;white-space:nowrap}li>button>p[data-v-8dc4efb0],li>a>p[data-v-8dc4efb0],li>.menuitem>p[data-v-8dc4efb0]{width:150px;line-height:1.6em;padding:8px 0;white-space:normal}li>button>select[data-v-8dc4efb0],li>a>select[data-v-8dc4efb0],li>.menuitem>select[data-v-8dc4efb0]{margin:0;margin-left:6px}li>button[data-v-8dc4efb0]:not(:empty),li>a[data-v-8dc4efb0]:not(:empty),li>.menuitem[data-v-8dc4efb0]:not(:empty){padding-right:14px !important}li>button>img[data-v-8dc4efb0],li>a>img[data-v-8dc4efb0],li>.menuitem>img[data-v-8dc4efb0]{width:16px;padding:14px}li>button>input.radio+label[data-v-8dc4efb0],li>button>input.checkbox+label[data-v-8dc4efb0],li>a>input.radio+label[data-v-8dc4efb0],li>a>input.checkbox+label[data-v-8dc4efb0],li>.menuitem>input.radio+label[data-v-8dc4efb0],li>.menuitem>input.checkbox+label[data-v-8dc4efb0]{padding:0 !important;width:100%}li>button>input.checkbox+label[data-v-8dc4efb0]::before,li>a>input.checkbox+label[data-v-8dc4efb0]::before,li>.menuitem>input.checkbox+label[data-v-8dc4efb0]::before{margin:-2px 13px 0}li>button>input.radio+label[data-v-8dc4efb0]::before,li>a>input.radio+label[data-v-8dc4efb0]::before,li>.menuitem>input.radio+label[data-v-8dc4efb0]::before{margin:-2px 12px 0}li>button>input[data-v-8dc4efb0]:not([type=radio]):not([type=checkbox]):not([type=image]),li>a>input[data-v-8dc4efb0]:not([type=radio]):not([type=checkbox]):not([type=image]),li>.menuitem>input[data-v-8dc4efb0]:not([type=radio]):not([type=checkbox]):not([type=image]){width:150px}li>button form[data-v-8dc4efb0],li>a form[data-v-8dc4efb0],li>.menuitem form[data-v-8dc4efb0]{display:flex;flex:1 1 auto}li>button form[data-v-8dc4efb0]:not(:first-child),li>a form[data-v-8dc4efb0]:not(:first-child),li>.menuitem form[data-v-8dc4efb0]:not(:first-child){margin-left:5px}li>button>span.hidden+form[data-v-8dc4efb0],li>button>span[style*='display:none']+form[data-v-8dc4efb0],li>a>span.hidden+form[data-v-8dc4efb0],li>a>span[style*='display:none']+form[data-v-8dc4efb0],li>.menuitem>span.hidden+form[data-v-8dc4efb0],li>.menuitem>span[style*='display:none']+form[data-v-8dc4efb0]{margin-left:0}li>button input[data-v-8dc4efb0],li>a input[data-v-8dc4efb0],li>.menuitem input[data-v-8dc4efb0]{min-width:44px;max-height:40px;margin:2px 0;flex:1 1 auto}li>button input[data-v-8dc4efb0]:not(:first-child),li>a input[data-v-8dc4efb0]:not(:first-child),li>.menuitem input[data-v-8dc4efb0]:not(:first-child){margin-left:5px}li:not(.hidden):not([style*='display:none']):first-of-type>button>form[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):first-of-type>button>input[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):first-of-type>a>form[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):first-of-type>a>input[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):first-of-type>.menuitem>form[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):first-of-type>.menuitem>input[data-v-8dc4efb0]{margin-top:12px}li:not(.hidden):not([style*='display:none']):last-of-type>button>form[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):last-of-type>button>input[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):last-of-type>a>form[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):last-of-type>a>input[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):last-of-type>.menuitem>form[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):last-of-type>.menuitem>input[data-v-8dc4efb0]{margin-bottom:12px}li>button[data-v-8dc4efb0]{padding:0}li>button span[data-v-8dc4efb0]{opacity:1}\n",""])},function(t,e,n){"use strict";var i=n(20);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,"ul[data-v-2f982451]{display:flex;flex-direction:column}\n",""])},function(t,e,n){var i=n(146);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("504198fc",i,!0,{})},function(t,e,n){var i=n(148);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("efb117ce",i,!0,{})},function(t,e,n){var i=n(150);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("89c943dc",i,!0,{})},function(t,e,n){var i=n(152);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("766647a2",i,!0,{})},function(t,e,n){var i=n(154);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("55805cbd",i,!0,{})},function(t,e,n){var i=n(156);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("19f30fef",i,!0,{})},function(t,e,n){var i=n(158);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("55b308c7",i,!0,{})},function(t,e,n){var i=n(160);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("0c820946",i,!0,{})},function(t,e,n){var i=n(162);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("7d41231a",i,!0,{})},function(t,e,n){var i=n(164);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("4b6feab4",i,!0,{})},function(t,e,n){var i=n(166);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("2eb234c2",i,!0,{})},function(t,e,n){var i=n(168);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("30caeb37",i,!0,{})},function(t,e,n){var i=n(170);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("4dd3631b",i,!0,{})},function(t,e,n){var i=n(172);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("0a4af55c",i,!0,{})},function(t,e,n){var i=n(174);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("acfb770c",i,!0,{})},function(t,e,n){var i=n(176);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("05387ef8",i,!0,{})},function(t,e,n){var i=n(178);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("a375d0ac",i,!0,{})},function(t,e,n){"use strict";n.r(e);var i,r=n(38),o=n.n(r),a=n(77),s=n.n(a),c=n(6),l=n(24),u=n(13),d=n.n(u),p=n(78),f=n.n(p),h=n(79),v=n.n(h),m={name:"Avatar",directives:{tooltip:c.default,ClickOutside:d.a},components:{PopoverMenu:l.PopoverMenu},props:{url:{type:String,default:void 0},user:{type:String,default:void 0},isGuest:{type:Boolean,default:!1},displayName:{type:String,default:void 0},size:{type:Number,default:32},allowPlaceholder:{type:Boolean,default:!0},disableTooltip:{type:Boolean,default:!1},disableMenu:{type:Boolean,default:!1},tooltipMessage:{type:String,default:null},isNoUser:{type:Boolean,default:!1},status:{type:String,default:null,validator:function(t){switch(t){case"positive":case"negative":case"neutral":return!0}return!1}},statusColor:{type:[Number,String],default:null,validator:function(t){return/^([a-f0-9]{3}){1,2}$/i.test(t)}}},data:function(){return{avatarUrlLoaded:null,avatarSrcSetLoaded:null,userDoesNotExist:!1,isAvatarLoaded:!1,isMenuLoaded:!1,contactsMenuActions:[],contactsMenuOpenState:!1}},computed:{getUserIdentifier:function(){return this.isDisplayNameDefined?this.displayName:this.isUserDefined?this.user:""},isUserDefined:function(){return void 0!==this.user},isDisplayNameDefined:function(){return void 0!==this.displayName},isUrlDefined:function(){return void 0!==this.url},hasMenu:function(){return!this.disableMenu&&(this.isMenuLoaded?this.menu.length>0:!(this.user===OC.getCurrentUser().uid||this.userDoesNotExist||this.url))},shouldShowPlaceholder:function(){return this.allowPlaceholder&&this.userDoesNotExist},avatarStyle:function(){var t={width:this.size+"px",height:this.size+"px",lineHeight:this.size+"px",fontSize:Math.round(.55*this.size)+"px"},e=function(t){var e=t.toLowerCase();function n(t,e,n){this.r=t,this.g=e,this.b=n}function i(t,e,i){var r=[];r.push(e);for(var o=function(t,e){var n=new Array(3);return n[0]=(e[1].r-e[0].r)/t,n[1]=(e[1].g-e[0].g)/t,n[2]=(e[1].b-e[0].b)/t,n}(t,[e,i]),a=1;a<t;a++){var s=parseInt(e.r+o[0]*a),c=parseInt(e.g+o[1]*a),l=parseInt(e.b+o[2]*a);r.push(new n(s,c,l))}return r}null===e.match(/^([0-9a-f]{4}-?){8}$/)&&(e=v()(e)),e=e.replace(/[^0-9a-f]/g,"");var r=new n(182,70,157),o=new n(221,203,85),a=new n(0,130,201),s=i(6,r,o),c=i(6,o,a),l=i(6,a,r);return s.concat(c).concat(l)[function(t,e){for(var n=0,i=[],r=0;r<t.length;r++)i.push(parseInt(t.charAt(r),16)%16);for(var o in i)n+=i[o];return parseInt(parseInt(n)%18)}(e)]}(this.getUserIdentifier);return t.backgroundColor="rgb("+e.r+", "+e.g+", "+e.b+")",t},tooltip:function(){return!this.disableTooltip&&(this.tooltipMessage?this.tooltipMessage:this.displayName)},initials:function(){return this.shouldShowPlaceholder?this.getUserIdentifier.charAt(0).toUpperCase():"?"},menu:function(){return this.contactsMenuActions.map((function(t){return{href:t.hyperlink,icon:t.icon,text:t.title}}))}},watch:{url:function(){this.userDoesNotExist=!1,this.loadAvatarUrl()},user:function(){this.userDoesNotExist=!1,this.isMenuLoaded=!1,this.loadAvatarUrl()}},mounted:function(){this.loadAvatarUrl()},methods:{toggleMenu:function(){this.hasMenu&&(this.contactsMenuOpenState=!this.contactsMenuOpenState,this.contactsMenuOpenState&&this.fetchContactsMenu())},closeMenu:function(){this.contactsMenuOpenState=!1},fetchContactsMenu:(i=s()(o.a.mark((function t(){var e,n,i;return o.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,e=encodeURIComponent(this.user),t.next=4,f.a.post(OC.generateUrl("contactsmenu/findOne"),"shareType=0&shareWith=".concat(e));case 4:n=t.sent,i=n.data,this.contactsMenuActions=[i.topAction].concat(i.actions),t.next=12;break;case 9:t.prev=9,t.t0=t.catch(0),this.contactsMenuOpenState=!1;case 12:this.isMenuLoaded=!0;case 13:case"end":return t.stop()}}),t,this,[[0,9]])}))),function(){return i.apply(this,arguments)}),loadAvatarUrl:function(){var t=this;if(this.isAvatarLoaded=!1,!this.isUrlDefined&&(!this.isUserDefined||this.isNoUser))return this.isAvatarLoaded=!0,void(this.userDoesNotExist=!0);var e=function(e,n){var i="/avatar/{user}/{size}";t.isGuest&&(i="/avatar/guest/{user}/{size}");var r=OC.generateUrl(i,{user:e,size:n});return e===OC.getCurrentUser().uid&&"undefined"!=typeof oc_userconfig&&(r+="?v="+oc_userconfig.avatar.version),r},n=e(this.user,this.size);this.isUrlDefined&&(n=this.url);var i=[n+" 1x",e(this.user,2*this.size)+" 2x",e(this.user,4*this.size)+" 4x"].join(", "),r=new Image;r.onload=function(){t.avatarUrlLoaded=n,t.isUrlDefined||(t.avatarSrcSetLoaded=i),t.isAvatarLoaded=!0},r.onerror=function(){t.userDoesNotExist=!0,t.isAvatarLoaded=!0},this.isUrlDefined||(r.srcset=i),r.src=n}}},A=(n(119),n(0)),g=n(39),b=n.n(g),y=Object(A.a)(m,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{directives:[{name:"tooltip",rawName:"v-tooltip",value:t.tooltip,expression:"tooltip"},{name:"click-outside",rawName:"v-click-outside",value:t.closeMenu,expression:"closeMenu"}],staticClass:"avatardiv popovermenu-wrapper",class:{"icon-loading":!t.isAvatarLoaded,"avatardiv--unknown":t.userDoesNotExist,"avatardiv--with-menu":t.hasMenu},style:t.avatarStyle,on:{click:t.toggleMenu}},[t.isAvatarLoaded&&!t.userDoesNotExist?n("img",{attrs:{src:t.avatarUrlLoaded,srcset:t.avatarSrcSetLoaded}}):t._e(),t._v(" "),t.hasMenu?n("div",{staticClass:"icon-more"}):t._e(),t._v(" "),t.status?n("div",{staticClass:"avatardiv__status",class:"avatardiv__status--"+t.status,style:{backgroundColor:"#"+t.statusColor}},["neutral"===t.status?n("svg",{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"11",viewBox:"0 0 3.175 2.91"}},[n("path",{style:{fill:"#"+t.statusColor},attrs:{d:"M3.21 3.043H.494l.679-1.177.68-1.176.678 1.176z",stroke:"#fff","stroke-width":".265","stroke-linecap":"square"}})]):t._e()]):t._e(),t._v(" "),t.userDoesNotExist?n("div",{staticClass:"unknown"},[t._v("\n\t\t"+t._s(t.initials)+"\n\t")]):t._e(),t._v(" "),t.hasMenu?n("div",{directives:[{name:"show",rawName:"v-show",value:t.contactsMenuOpenState,expression:"contactsMenuOpenState"}],staticClass:"popovermenu menu-center"},[n("PopoverMenu",{attrs:{"is-open":t.contactsMenuOpenState,menu:t.menu}})],1):t._e()])}),[],!1,null,"6015a092",null);"function"==typeof b.a&&b()(y);var _=y.exports;n.d(e,"Avatar",(function(){return _})), +/** + * @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net> + * + * @author Julius Härtl <jus@bitgrid.net> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +e.default=_},function(t,e,n){"use strict";n.r(e);var i={name:"ActionButton",mixins:[n(14).a],props:{disabled:{type:Boolean,default:!1}},computed:{isFocusable:function(){return!this.disabled}}},r=(n(90),n(0)),o=n(35),a=n.n(o),s=Object(r.a)(i,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("li",{class:{"action--disabled":t.disabled}},[n("button",{staticClass:"action-button",class:{focusable:t.isFocusable},on:{click:t.onClick}},[n("span",{staticClass:"action-button__icon",class:[t.isIconUrl?"action-button__icon--url":t.icon],style:{backgroundImage:t.isIconUrl?"url("+t.icon+")":null}}),t._v(" "),t.title?n("p",[n("strong",{staticClass:"action-button__title"},[t._v("\n\t\t\t\t"+t._s(t.title)+"\n\t\t\t")]),t._v(" "),n("br"),t._v(" "),n("span",{staticClass:"action-button__longtext",domProps:{textContent:t._s(t.text)}})]):t.isLongText?n("p",{staticClass:"action-button__longtext",domProps:{textContent:t._s(t.text)}}):n("span",{staticClass:"action-button__text"},[t._v(t._s(t.text))]),t._v(" "),t._e()],2)])}),[],!1,null,"37538719",null);"function"==typeof a.a&&a()(s);var c=s.exports;n.d(e,"ActionButton",(function(){return c})), +/** + * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +e.default=c},function(t,e,n){"use strict";n.r(e);var i=n(23),r=n(31),o=n.n(r);o.a.components.CalendarPanel.components.PanelTime.methods.stringifyText=function(t){return t},o.a.methods.displayPopup=function(){var t=this.$el.querySelector(".mx-datepicker-popup");t&&!t.classList.contains("popovermenu")&&(t.className+=" popovermenu menu-center open")};var a={name:"DatetimePicker",components:{DatePicker:o.a},inheritAttrs:!1,props:{value:{default:function(){return new Date}}},methods:{handleSelectYear:function(t){var e=this.$refs.datepicker.currentValue;if(e)try{var n=new Date(new Date(e).setFullYear(t));this.$refs.datepicker.selectDate(n)}catch(n){console.error("Invalid value",e,t)}},handleSelectMonth:function(t){var e=this.$refs.datepicker.currentValue;if(e)try{var n=new Date(new Date(e).setMonth(t));this.$refs.datepicker.selectDate(n)}catch(n){console.error("Invalid value",e,t)}}}},s=n(0),c=n(36),l=n.n(c),u=Object(s.a)(a,(function(){var t=this,e=t.$createElement;return(t._self._c||e)("DatePicker",t._g(t._b({ref:"datepicker",attrs:{clearable:!1,"minute-step":10,value:t.value},on:{"select-year":t.handleSelectYear,"select-month":t.handleSelectMonth,"update:value":function(e){return t.$emit("update:value",t.value)}}},"DatePicker",t.$attrs,!1),t.$listeners))}),[],!1,null,null,null);"function"==typeof l.a&&l()(u);var d=u.exports;n(92),n.d(e,"DatetimePicker",(function(){return d})), +/** + * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +Object(i.a)(d),e.default=d},function(t,e,n){"use strict";n.r(e);var i={name:"AppNavigationCounter",props:{highlighted:{type:Boolean,default:!1}}},r=(n(96),n(0)),o=n(37),a=n.n(o),s=Object(r.a)(i,(function(){var t=this.$createElement,e=this._self._c||t;return e("li",{staticClass:"app-navigation-entry-utils-counter",class:{highlighted:this.highlighted}},[e("span",[this._t("default")],2)])}),[],!1,null,"7ed17014",null);"function"==typeof a.a&&a()(s);var c=s.exports;n.d(e,"AppNavigationCounter",(function(){return c})), +/** + * @copyright Copyright (c) 2019 Marco Ambrosini <ma12co@pm.me> + * + * @author Marco Ambrosini <marcoambrosini@pm.me> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +e.default=c},function(t,e,n){"use strict";t.exports=function(t,e){return function(){for(var n=new Array(arguments.length),i=0;i<n.length;i++)n[i]=arguments[i];return t.apply(e,n)}}},function(t,e,n){"use strict";var i=n(4);function r(t){return encodeURIComponent(t).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}t.exports=function(t,e,n){if(!e)return t;var o;if(n)o=n(e);else if(i.isURLSearchParams(e))o=e.toString();else{var a=[];i.forEach(e,(function(t,e){null!=t&&(i.isArray(t)?e+="[]":t=[t],i.forEach(t,(function(t){i.isDate(t)?t=t.toISOString():i.isObject(t)&&(t=JSON.stringify(t)),a.push(r(e)+"="+r(t))})))})),o=a.join("&")}if(o){var s=t.indexOf("#");-1!==s&&(t=t.slice(0,s)),t+=(-1===t.indexOf("?")?"?":"&")+o}return t}},function(t,e,n){"use strict";t.exports=function(t){return!(!t||!t.__CANCEL__)}},function(t,e,n){"use strict";(function(e){var i=n(4),r=n(107),o={"Content-Type":"application/x-www-form-urlencoded"};function a(t,e){!i.isUndefined(t)&&i.isUndefined(t["Content-Type"])&&(t["Content-Type"]=e)}var s,c={adapter:(void 0!==e&&"[object process]"===Object.prototype.toString.call(e)?s=n(72):"undefined"!=typeof XMLHttpRequest&&(s=n(72)),s),transformRequest:[function(t,e){return r(e,"Accept"),r(e,"Content-Type"),i.isFormData(t)||i.isArrayBuffer(t)||i.isBuffer(t)||i.isStream(t)||i.isFile(t)||i.isBlob(t)?t:i.isArrayBufferView(t)?t.buffer:i.isURLSearchParams(t)?(a(e,"application/x-www-form-urlencoded;charset=utf-8"),t.toString()):i.isObject(t)?(a(e,"application/json;charset=utf-8"),JSON.stringify(t)):t}],transformResponse:[function(t){if("string"==typeof t)try{t=JSON.parse(t)}catch(t){}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};i.forEach(["delete","get","head"],(function(t){c.headers[t]={}})),i.forEach(["post","put","patch"],(function(t){c.headers[t]=i.merge(o)})),t.exports=c}).call(this,n(106))},function(t,e,n){"use strict";var i=n(4),r=n(108),o=n(69),a=n(110),s=n(111),c=n(73);t.exports=function(t){return new Promise((function(e,l){var u=t.data,d=t.headers;i.isFormData(u)&&delete d["Content-Type"];var p=new XMLHttpRequest;if(t.auth){var f=t.auth.username||"",h=t.auth.password||"";d.Authorization="Basic "+btoa(f+":"+h)}if(p.open(t.method.toUpperCase(),o(t.url,t.params,t.paramsSerializer),!0),p.timeout=t.timeout,p.onreadystatechange=function(){if(p&&4===p.readyState&&(0!==p.status||p.responseURL&&0===p.responseURL.indexOf("file:"))){var n="getAllResponseHeaders"in p?a(p.getAllResponseHeaders()):null,i={data:t.responseType&&"text"!==t.responseType?p.response:p.responseText,status:p.status,statusText:p.statusText,headers:n,config:t,request:p};r(e,l,i),p=null}},p.onabort=function(){p&&(l(c("Request aborted",t,"ECONNABORTED",p)),p=null)},p.onerror=function(){l(c("Network Error",t,null,p)),p=null},p.ontimeout=function(){l(c("timeout of "+t.timeout+"ms exceeded",t,"ECONNABORTED",p)),p=null},i.isStandardBrowserEnv()){var v=n(112),m=(t.withCredentials||s(t.url))&&t.xsrfCookieName?v.read(t.xsrfCookieName):void 0;m&&(d[t.xsrfHeaderName]=m)}if("setRequestHeader"in p&&i.forEach(d,(function(t,e){void 0===u&&"content-type"===e.toLowerCase()?delete d[e]:p.setRequestHeader(e,t)})),t.withCredentials&&(p.withCredentials=!0),t.responseType)try{p.responseType=t.responseType}catch(e){if("json"!==t.responseType)throw e}"function"==typeof t.onDownloadProgress&&p.addEventListener("progress",t.onDownloadProgress),"function"==typeof t.onUploadProgress&&p.upload&&p.upload.addEventListener("progress",t.onUploadProgress),t.cancelToken&&t.cancelToken.promise.then((function(t){p&&(p.abort(),l(t),p=null)})),void 0===u&&(u=null),p.send(u)}))}},function(t,e,n){"use strict";var i=n(109);t.exports=function(t,e,n,r,o){var a=new Error(t);return i(a,e,n,r,o)}},function(t,e,n){"use strict";var i=n(4);t.exports=function(t,e){e=e||{};var n={};return i.forEach(["url","method","params","data"],(function(t){void 0!==e[t]&&(n[t]=e[t])})),i.forEach(["headers","auth","proxy"],(function(r){i.isObject(e[r])?n[r]=i.deepMerge(t[r],e[r]):void 0!==e[r]?n[r]=e[r]:i.isObject(t[r])?n[r]=i.deepMerge(t[r]):void 0!==t[r]&&(n[r]=t[r])})),i.forEach(["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","maxContentLength","validateStatus","maxRedirects","httpAgent","httpsAgent","cancelToken","socketPath"],(function(i){void 0!==e[i]?n[i]=e[i]:void 0!==t[i]&&(n[i]=t[i])})),n}},function(t,e,n){"use strict";function i(t){this.message=t}i.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},i.prototype.__CANCEL__=!0,t.exports=i},function(t,e){var n={utf8:{stringToBytes:function(t){return n.bin.stringToBytes(unescape(encodeURIComponent(t)))},bytesToString:function(t){return decodeURIComponent(escape(n.bin.bytesToString(t)))}},bin:{stringToBytes:function(t){for(var e=[],n=0;n<t.length;n++)e.push(255&t.charCodeAt(n));return e},bytesToString:function(t){for(var e=[],n=0;n<t.length;n++)e.push(String.fromCharCode(t[n]));return e.join("")}}};t.exports=n},function(t,e){function n(t,e,n,i,r,o,a){try{var s=t[o](a),c=s.value}catch(t){return void n(t)}s.done?e(c):Promise.resolve(c).then(i,r)}t.exports=function(t){return function(){var e=this,i=arguments;return new Promise((function(r,o){var a=t.apply(e,i);function s(t){n(a,r,o,s,c,"next",t)}function c(t){n(a,r,o,s,c,"throw",t)}s(void 0)}))}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(99).default.create({headers:{requesttoken:OC.requestToken}});e.default=i},function(t,e,n){var i,r,o,a,s;i=n(117),r=n(76).utf8,o=n(118),a=n(76).bin,(s=function(t,e){t.constructor==String?t=e&&"binary"===e.encoding?a.stringToBytes(t):r.stringToBytes(t):o(t)?t=Array.prototype.slice.call(t,0):Array.isArray(t)||(t=t.toString());for(var n=i.bytesToWords(t),c=8*t.length,l=1732584193,u=-271733879,d=-1732584194,p=271733878,f=0;f<n.length;f++)n[f]=16711935&(n[f]<<8|n[f]>>>24)|4278255360&(n[f]<<24|n[f]>>>8);n[c>>>5]|=128<<c%32,n[14+(c+64>>>9<<4)]=c;var h=s._ff,v=s._gg,m=s._hh,A=s._ii;for(f=0;f<n.length;f+=16){var g=l,b=u,y=d,_=p;l=h(l,u,d,p,n[f+0],7,-680876936),p=h(p,l,u,d,n[f+1],12,-389564586),d=h(d,p,l,u,n[f+2],17,606105819),u=h(u,d,p,l,n[f+3],22,-1044525330),l=h(l,u,d,p,n[f+4],7,-176418897),p=h(p,l,u,d,n[f+5],12,1200080426),d=h(d,p,l,u,n[f+6],17,-1473231341),u=h(u,d,p,l,n[f+7],22,-45705983),l=h(l,u,d,p,n[f+8],7,1770035416),p=h(p,l,u,d,n[f+9],12,-1958414417),d=h(d,p,l,u,n[f+10],17,-42063),u=h(u,d,p,l,n[f+11],22,-1990404162),l=h(l,u,d,p,n[f+12],7,1804603682),p=h(p,l,u,d,n[f+13],12,-40341101),d=h(d,p,l,u,n[f+14],17,-1502002290),l=v(l,u=h(u,d,p,l,n[f+15],22,1236535329),d,p,n[f+1],5,-165796510),p=v(p,l,u,d,n[f+6],9,-1069501632),d=v(d,p,l,u,n[f+11],14,643717713),u=v(u,d,p,l,n[f+0],20,-373897302),l=v(l,u,d,p,n[f+5],5,-701558691),p=v(p,l,u,d,n[f+10],9,38016083),d=v(d,p,l,u,n[f+15],14,-660478335),u=v(u,d,p,l,n[f+4],20,-405537848),l=v(l,u,d,p,n[f+9],5,568446438),p=v(p,l,u,d,n[f+14],9,-1019803690),d=v(d,p,l,u,n[f+3],14,-187363961),u=v(u,d,p,l,n[f+8],20,1163531501),l=v(l,u,d,p,n[f+13],5,-1444681467),p=v(p,l,u,d,n[f+2],9,-51403784),d=v(d,p,l,u,n[f+7],14,1735328473),l=m(l,u=v(u,d,p,l,n[f+12],20,-1926607734),d,p,n[f+5],4,-378558),p=m(p,l,u,d,n[f+8],11,-2022574463),d=m(d,p,l,u,n[f+11],16,1839030562),u=m(u,d,p,l,n[f+14],23,-35309556),l=m(l,u,d,p,n[f+1],4,-1530992060),p=m(p,l,u,d,n[f+4],11,1272893353),d=m(d,p,l,u,n[f+7],16,-155497632),u=m(u,d,p,l,n[f+10],23,-1094730640),l=m(l,u,d,p,n[f+13],4,681279174),p=m(p,l,u,d,n[f+0],11,-358537222),d=m(d,p,l,u,n[f+3],16,-722521979),u=m(u,d,p,l,n[f+6],23,76029189),l=m(l,u,d,p,n[f+9],4,-640364487),p=m(p,l,u,d,n[f+12],11,-421815835),d=m(d,p,l,u,n[f+15],16,530742520),l=A(l,u=m(u,d,p,l,n[f+2],23,-995338651),d,p,n[f+0],6,-198630844),p=A(p,l,u,d,n[f+7],10,1126891415),d=A(d,p,l,u,n[f+14],15,-1416354905),u=A(u,d,p,l,n[f+5],21,-57434055),l=A(l,u,d,p,n[f+12],6,1700485571),p=A(p,l,u,d,n[f+3],10,-1894986606),d=A(d,p,l,u,n[f+10],15,-1051523),u=A(u,d,p,l,n[f+1],21,-2054922799),l=A(l,u,d,p,n[f+8],6,1873313359),p=A(p,l,u,d,n[f+15],10,-30611744),d=A(d,p,l,u,n[f+6],15,-1560198380),u=A(u,d,p,l,n[f+13],21,1309151649),l=A(l,u,d,p,n[f+4],6,-145523070),p=A(p,l,u,d,n[f+11],10,-1120210379),d=A(d,p,l,u,n[f+2],15,718787259),u=A(u,d,p,l,n[f+9],21,-343485551),l=l+g>>>0,u=u+b>>>0,d=d+y>>>0,p=p+_>>>0}return i.endian([l,u,d,p])})._ff=function(t,e,n,i,r,o,a){var s=t+(e&n|~e&i)+(r>>>0)+a;return(s<<o|s>>>32-o)+e},s._gg=function(t,e,n,i,r,o,a){var s=t+(e&i|n&~i)+(r>>>0)+a;return(s<<o|s>>>32-o)+e},s._hh=function(t,e,n,i,r,o,a){var s=t+(e^n^i)+(r>>>0)+a;return(s<<o|s>>>32-o)+e},s._ii=function(t,e,n,i,r,o,a){var s=t+(n^(e|~i))+(r>>>0)+a;return(s<<o|s>>>32-o)+e},s._blocksize=16,s._digestsize=16,t.exports=function(t,e){if(null==t)throw new Error("Illegal argument "+t);var n=i.wordsToBytes(s(t,e));return e&&e.asBytes?n:e&&e.asString?a.bytesToString(n):i.bytesToHex(n)}},function(t,e,n){"use strict";var i=n(22);n.n(i).a},function(t,e,n){e=t.exports=n(1)(!1);var i=n(8),r=i(n(9)),o=i(n(10)),a=i(n(11)),s=i(n(12));e.push([t.i,'@font-face{font-family:"iconfont-vue";src:url('+r+");src:url("+r+') format("embedded-opentype"),url('+o+') format("woff"),url('+a+') format("truetype"),url('+s+') format("svg")}.icon[data-v-627a433f]{font-style:normal;font-weight:400}.icon.arrow-left-double[data-v-627a433f]:before{font-family:"iconfont-vue";content:""}.icon.arrow-left[data-v-627a433f]:before{font-family:"iconfont-vue";content:""}.icon.arrow-right-double[data-v-627a433f]:before{font-family:"iconfont-vue";content:""}.icon.arrow-right[data-v-627a433f]:before{font-family:"iconfont-vue";content:""}.icon.close[data-v-627a433f]:before{font-family:"iconfont-vue";content:""}.icon.confirm-fade[data-v-627a433f]:before{font-family:"iconfont-vue";content:""}.icon.confirm[data-v-627a433f]:before{font-family:"iconfont-vue";content:""}.icon.menu[data-v-627a433f]:before{font-family:"iconfont-vue";content:""}.icon.more[data-v-627a433f]:before{font-family:"iconfont-vue";content:""}.icon.pause[data-v-627a433f]:before{font-family:"iconfont-vue";content:""}.icon.play[data-v-627a433f]:before{font-family:"iconfont-vue";content:""}.action-item[data-v-627a433f]{position:relative;display:inline-block}.action-item--single[data-v-627a433f]:hover,.action-item--single[data-v-627a433f]:focus,.action-item--single[data-v-627a433f]:active,.action-item__menutoggle[data-v-627a433f]:hover,.action-item__menutoggle[data-v-627a433f]:focus,.action-item__menutoggle[data-v-627a433f]:active{border-radius:22px;background-color:rgba(127,127,127,0.25) !important;opacity:1}.action-item.action-item--open .action-item__menutoggle[data-v-627a433f]{opacity:1;border-radius:22px;background-color:rgba(127,127,127,0.25)}.action-item--single[data-v-627a433f],.action-item__menutoggle[data-v-627a433f]{box-sizing:border-box;width:44px;height:44px;margin:0;padding:14px;cursor:pointer;border:none;background-color:transparent}.action-item__menutoggle[data-v-627a433f]{display:flex;align-items:center;justify-content:center;opacity:.7;font-size:16px}.action-item__menutoggle[data-v-627a433f]:before{font-family:"iconfont-vue";font-style:normal;font-weight:400;content:""}.action-item--single[data-v-627a433f]{opacity:.7}.action-item--single[data-v-627a433f]:hover,.action-item--single[data-v-627a433f]:focus,.action-item--single[data-v-627a433f]:active{opacity:1}.action-item--single>[hidden][data-v-627a433f]{display:none}.action-item--multiple[data-v-627a433f]{position:relative}.action-item__menu[data-v-627a433f]{position:absolute;z-index:110;right:50%;display:none;margin:10px;margin-top:-5px;transform:translateX(50%);color:var(--color-main-text);border-radius:var(--border-radius);background-color:var(--color-main-background);filter:drop-shadow(0 1px 3px var(--color-box-shadow))}.action-item__menu ul[data-v-627a433f]>:not(li){display:none}.action-item__menu.open[data-v-627a433f]{display:block}.action-item__menu .action-item__menu_arrow[data-v-627a433f]{position:absolute;right:50%;bottom:100%;width:0;height:0;margin-right:-9px;content:\' \';pointer-events:none;border:solid transparent;border-width:9px;border-bottom-color:var(--color-main-background)}.action-item__menu.menu-right[data-v-627a433f]{right:0;left:auto;transform:none}.action-item__menu.menu-right .action-item__menu_arrow[data-v-627a433f]{right:13px;margin-right:0}.action-item__menu.menu-left[data-v-627a433f]{right:auto;left:0;transform:none}.action-item__menu.menu-left .action-item__menu_arrow[data-v-627a433f]{right:auto;left:13px;margin-right:0}.ie .action-item__menu[data-v-627a433f],.ie .action-item__menu .action-item__menu_arrow[data-v-627a433f],.edge .action-item__menu[data-v-627a433f],.edge .action-item__menu .action-item__menu_arrow[data-v-627a433f]{border:1px solid var(--color-border)}\n',""])},function(t,e,n){"use strict";n.r(e);var i=(n(94),n(0)),r=Object(i.a)({name:"AppNavigationToggle",methods:{emitClick:function(){this.$emit("click")}}},(function(){var t=this,e=t.$createElement;return(t._self._c||e)("a",{attrs:{id:"app-navigation-toggle",tabindex:"0",href:"#"},on:{click:function(e){return e.preventDefault(),t.emitClick(e)},keydown:function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"space",32,e.key,[" ","Spacebar"])?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.emitClick(e))}}})}),[],!1,null,"d9538ec8",null).exports;n.d(e,"AppNavigationSpacer",(function(){return r})), +/** + * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +e.default=r},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e,n){"use strict";var i=n(26);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,"li.active[data-v-37538719]{box-shadow:inset 4px 0 var(--color-primary)}.action--disabled[data-v-37538719]{pointer-events:none;opacity:.5}.action--disabled[data-v-37538719]:hover,.action--disabled[data-v-37538719]:focus{cursor:default;opacity:.5}.action--disabled *[data-v-37538719]{opacity:1 !important}.action-button[data-v-37538719]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;padding-right:14px;cursor:pointer;white-space:nowrap;opacity:.7;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:normal;line-height:44px}.action-button[data-v-37538719]:hover,.action-button[data-v-37538719]:focus{opacity:1}.action-button>span[data-v-37538719]{cursor:pointer;white-space:nowrap}.action-button__icon[data-v-37538719]{width:44px;height:44px;opacity:1;background-position:14px center;background-size:16px}.action-button p[data-v-37538719]{width:150px;padding:7px 0;cursor:pointer;text-align:left;line-height:1.6em}.action-button__longtext[data-v-37538719]{cursor:pointer;white-space:pre-wrap}.action-button__title[data-v-37538719]{font-weight:bold}\n",""])},function(t,e,n){var i=n(93);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("600615ea",i,!0,{})},function(t,e,n){e=t.exports=n(1)(!1);var i=n(8),r=i(n(9)),o=i(n(10)),a=i(n(11)),s=i(n(12));e.push([t.i,'@font-face{font-family:"iconfont-vue";src:url('+r+");src:url("+r+') format("embedded-opentype"),url('+o+') format("woff"),url('+a+') format("truetype"),url('+s+') format("svg")}.icon{font-style:normal;font-weight:400}.icon.arrow-left-double:before{font-family:"iconfont-vue";content:""}.icon.arrow-left:before{font-family:"iconfont-vue";content:""}.icon.arrow-right-double:before{font-family:"iconfont-vue";content:""}.icon.arrow-right:before{font-family:"iconfont-vue";content:""}.icon.close:before{font-family:"iconfont-vue";content:""}.icon.confirm-fade:before{font-family:"iconfont-vue";content:""}.icon.confirm:before{font-family:"iconfont-vue";content:""}.icon.menu:before{font-family:"iconfont-vue";content:""}.icon.more:before{font-family:"iconfont-vue";content:""}.icon.pause:before{font-family:"iconfont-vue";content:""}.icon.play:before{font-family:"iconfont-vue";content:""}.mx-datepicker[data-v-6673a70]{width:210px;color:inherit;user-select:none;position:relative;display:inline-block}.mx-datepicker[data-v-6673a70].disabled{opacity:.7;cursor:not-allowed}.mx-datepicker[data-v-6673a70] .mx-input-wrapper .mx-input{width:100%}.mx-datepicker[data-v-6673a70] .mx-input-wrapper .mx-input-append{position:absolute;top:0;right:0;width:30px;height:100%;padding:6px;background-color:var(--color-main-background);background-clip:content-box}.mx-datepicker[data-v-6673a70] .mx-input-wrapper .mx-input-append .mx-input-icon{display:inline-block;font-style:normal;text-align:center;cursor:pointer}.mx-datepicker[data-v-6673a70] .mx-input-wrapper .mx-input-append .mx-clear-wrapper{display:none}.mx-datepicker[data-v-6673a70] .mx-input-wrapper .mx-input-append .mx-calendar-icon{stroke-width:8px;stroke:currentColor;fill:currentColor;width:100%;height:100%;color:var(--color-text-lighter)}.mx-datepicker[data-v-6673a70] .mx-datepicker-popup{box-shadow:none;background-color:var(--color-main-background);position:absolute;margin-top:1px;margin-bottom:1px;z-index:1000}.mx-datepicker[data-v-6673a70] .mx-range-wrapper{display:flex;overflow:hidden}.mx-datepicker[data-v-6673a70] .mx-range-wrapper .mx-calendar:first-child{box-shadow:var(--color-border) 1px 0px !important}.mx-datepicker[data-v-6673a70] .mx-range-wrapper .mx-calendar-content .mx-panel .cell.actived{border-radius:var(--border-radius) 0 0 var(--border-radius)}.mx-datepicker[data-v-6673a70] .mx-range-wrapper .mx-calendar-content .mx-panel .cell.inrange+.cell.actived{border-radius:0 var(--border-radius) var(--border-radius) 0}.mx-datepicker[data-v-6673a70] .mx-shortcuts-wrapper{display:flex;justify-content:space-evenly;padding:5px;border-bottom:1px solid var(--color-border)}.mx-datepicker[data-v-6673a70] .mx-shortcuts-wrapper .mx-shortcuts{font-weight:normal}.mx-datepicker[data-v-6673a70] .mx-calendar{font:inherit;color:var(--color-main-text);padding:5px;width:234px}.mx-datepicker[data-v-6673a70] .mx-calendar-header{padding:0 4px;margin-bottom:4px;text-align:center;overflow:hidden;display:flex;align-items:center;justify-content:space-between}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a{text-decoration:none;cursor:pointer;color:var(--color-text-lighter);padding:7px 10px;margin:0 auto;border-radius:32px;height:32px;line-height:20px;min-width:32px}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a:hover,.mx-datepicker[data-v-6673a70] .mx-calendar-header>a:focus{opacity:1;color:var(--color-main-text);background-color:var(--color-background-darker)}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-last-year,.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-last-month,.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-next-month,.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-next-year{background-position:center;background-repeat:no-repeat;font-size:0;opacity:.5;display:flex;align-items:center;justify-content:center;padding:0}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-last-year:before,.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-last-month:before,.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-next-month:before,.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-next-year:before{display:block;font-size:16px}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-last-year:before{font-family:"iconfont-vue";font-style:normal;font-weight:400;content:""}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-last-month:before{font-family:"iconfont-vue";font-style:normal;font-weight:400;content:""}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-next-month{order:3}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-next-month:before{font-family:"iconfont-vue";font-style:normal;font-weight:400;content:""}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-next-year{order:4}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-next-year:before{font-family:"iconfont-vue";font-style:normal;font-weight:400;content:""}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel{width:100%;height:100%;text-align:center}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel .cell{opacity:.7;border-radius:50px;transition:all 100ms ease-in-out;cursor:pointer}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel .cell:hover,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel .cell:focus,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel .cell.actived,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel .cell.inrange{font-weight:bold;opacity:1;color:var(--color-primary-text);background-color:var(--color-primary-element)}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel .cell.inrange,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel .cell.disabled{border-radius:0;font-weight:normal}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel .cell.inrange{opacity:.7}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel .cell.disabled{color:var(--color-text-lighter);opacity:.5;background-color:var(--color-background-darker)}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel span.cell,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel li.cell{min-height:32px}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date{table-layout:fixed;border-collapse:collapse;border-spacing:0}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date td,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date th{font-size:12px;width:32px;height:32px;line-height:30px;border:0;padding:0;padding-top:2px;overflow:hidden;text-align:center}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date th{color:var(--color-text-lighter);opacity:.5}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date td.today{color:var(--color-primary);opacity:1;font-weight:bold}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date td.last-month,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date td.next-month{color:var(--color-text-lighter);opacity:.5}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date tr:hover,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date tr:focus,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date tr:active{background:none}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-year,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-month{display:flex;flex-wrap:wrap;justify-content:space-around}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-year span.cell,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-month span.cell{display:block;padding:5px;height:44px;line-height:36px;margin-bottom:1%}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-year .cell{width:45%}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-month .cell{width:30%}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-time{display:flex}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-time .mx-time-list{position:relative;width:100%;height:100%;padding:5px;margin:0;list-style:none;overflow-y:auto;max-height:220px}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-time .mx-time-list .mx-time-picker-item{display:block;text-align:left;padding-left:10px}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-time .mx-time-list .cell{display:flex;justify-content:center;margin-bottom:1px;width:100%;font-size:12px;height:32px;line-height:32px}.mx-datepicker[data-v-6673a70] .mx-datepicker-footer{padding:4px;clear:both;text-align:right;border-top:1px solid var(--color-border)}\n',""])},function(t,e,n){"use strict";var i=n(27);n.n(i).a},function(t,e,n){e=t.exports=n(1)(!1);var i=n(8),r=i(n(9)),o=i(n(10)),a=i(n(11)),s=i(n(12));e.push([t.i,'@font-face{font-family:"iconfont-vue";src:url('+r+");src:url("+r+') format("embedded-opentype"),url('+o+') format("woff"),url('+a+') format("truetype"),url('+s+') format("svg")}.icon[data-v-d9538ec8]{font-style:normal;font-weight:400}.icon.arrow-left-double[data-v-d9538ec8]:before{font-family:"iconfont-vue";content:""}.icon.arrow-left[data-v-d9538ec8]:before{font-family:"iconfont-vue";content:""}.icon.arrow-right-double[data-v-d9538ec8]:before{font-family:"iconfont-vue";content:""}.icon.arrow-right[data-v-d9538ec8]:before{font-family:"iconfont-vue";content:""}.icon.close[data-v-d9538ec8]:before{font-family:"iconfont-vue";content:""}.icon.confirm-fade[data-v-d9538ec8]:before{font-family:"iconfont-vue";content:""}.icon.confirm[data-v-d9538ec8]:before{font-family:"iconfont-vue";content:""}.icon.menu[data-v-d9538ec8]:before{font-family:"iconfont-vue";content:""}.icon.more[data-v-d9538ec8]:before{font-family:"iconfont-vue";content:""}.icon.pause[data-v-d9538ec8]:before{font-family:"iconfont-vue";content:""}.icon.play[data-v-d9538ec8]:before{font-family:"iconfont-vue";content:""}#app-navigation-toggle[data-v-d9538ec8]{display:none;position:fixed;z-index:1050;left:0;width:44px;height:44px;padding:14px;cursor:pointer;opacity:0.6;font-size:16px;line-height:17px}#app-navigation-toggle[data-v-d9538ec8]:before{font-family:"iconfont-vue";font-style:normal;font-weight:400;content:""}#app-navigation-toggle[data-v-d9538ec8]:hover,#app-navigation-toggle[data-v-d9538ec8]:focus{opacity:1}@media only screen and (max-width: 768px){#app-navigation-toggle[data-v-d9538ec8]{display:inline-block !important}}\n',""])},function(t,e,n){"use strict";var i=n(28);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,".app-navigation-entry-utils-counter[data-v-7ed17014]{overflow:hidden;text-align:right;font-size:9px;line-height:44px;padding:0 12px}.highlighted[data-v-7ed17014]{padding:0;text-align:center}.highlighted span[data-v-7ed17014]{padding:2px 5px;border-radius:10px;background-color:var(--color-primary);color:var(--color-primary-text)}\n",""])},function(t,e,n){var i=function(t){"use strict";var e,n=Object.prototype,i=n.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},o=r.iterator||"@@iterator",a=r.asyncIterator||"@@asyncIterator",s=r.toStringTag||"@@toStringTag";function c(t,e,n,i){var r=e&&e.prototype instanceof v?e:v,o=Object.create(r.prototype),a=new E(i||[]);return o._invoke=function(t,e,n){var i=u;return function(r,o){if(i===p)throw new Error("Generator is already running");if(i===f){if("throw"===r)throw o;return S()}for(n.method=r,n.arg=o;;){var a=n.delegate;if(a){var s=C(a,n);if(s){if(s===h)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(i===u)throw i=f,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);i=p;var c=l(t,e,n);if("normal"===c.type){if(i=n.done?f:d,c.arg===h)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(i=f,n.method="throw",n.arg=c.arg)}}}(t,n,a),o}function l(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}t.wrap=c;var u="suspendedStart",d="suspendedYield",p="executing",f="completed",h={};function v(){}function m(){}function A(){}var g={};g[o]=function(){return this};var b=Object.getPrototypeOf,y=b&&b(b(O([])));y&&y!==n&&i.call(y,o)&&(g=y);var _=A.prototype=v.prototype=Object.create(g);function w(t){["next","throw","return"].forEach((function(e){t[e]=function(t){return this._invoke(e,t)}}))}function x(t){var e;this._invoke=function(n,r){function o(){return new Promise((function(e,o){!function e(n,r,o,a){var s=l(t[n],t,r);if("throw"!==s.type){var c=s.arg,u=c.value;return u&&"object"==typeof u&&i.call(u,"__await")?Promise.resolve(u.__await).then((function(t){e("next",t,o,a)}),(function(t){e("throw",t,o,a)})):Promise.resolve(u).then((function(t){c.value=t,o(c)}),(function(t){return e("throw",t,o,a)}))}a(s.arg)}(n,r,e,o)}))}return e=e?e.then(o,o):o()}}function C(t,n){var i=t.iterator[n.method];if(i===e){if(n.delegate=null,"throw"===n.method){if(t.iterator.return&&(n.method="return",n.arg=e,C(t,n),"throw"===n.method))return h;n.method="throw",n.arg=new TypeError("The iterator does not provide a 'throw' method")}return h}var r=l(i,t.iterator,n.arg);if("throw"===r.type)return n.method="throw",n.arg=r.arg,n.delegate=null,h;var o=r.arg;return o?o.done?(n[t.resultName]=o.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,h):o:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,h)}function k(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function T(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function E(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(k,this),this.reset(!0)}function O(t){if(t){var n=t[o];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,a=function n(){for(;++r<t.length;)if(i.call(t,r))return n.value=t[r],n.done=!1,n;return n.value=e,n.done=!0,n};return a.next=a}}return{next:S}}function S(){return{value:e,done:!0}}return m.prototype=_.constructor=A,A.constructor=m,A[s]=m.displayName="GeneratorFunction",t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===m||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,A):(t.__proto__=A,s in t||(t[s]="GeneratorFunction")),t.prototype=Object.create(_),t},t.awrap=function(t){return{__await:t}},w(x.prototype),x.prototype[a]=function(){return this},t.AsyncIterator=x,t.async=function(e,n,i,r){var o=new x(c(e,n,i,r));return t.isGeneratorFunction(n)?o:o.next().then((function(t){return t.done?t.value:o.next()}))},w(_),_[s]="Generator",_[o]=function(){return this},_.toString=function(){return"[object Generator]"},t.keys=function(t){var e=[];for(var n in t)e.push(n);return e.reverse(),function n(){for(;e.length;){var i=e.pop();if(i in t)return n.value=i,n.done=!1,n}return n.done=!0,n}},t.values=O,E.prototype={constructor:E,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(T),!t)for(var n in this)"t"===n.charAt(0)&&i.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function r(i,r){return s.type="throw",s.arg=t,n.next=i,r&&(n.method="next",n.arg=e),!!r}for(var o=this.tryEntries.length-1;o>=0;--o){var a=this.tryEntries[o],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var c=i.call(a,"catchLoc"),l=i.call(a,"finallyLoc");if(c&&l){if(this.prev<a.catchLoc)return r(a.catchLoc,!0);if(this.prev<a.finallyLoc)return r(a.finallyLoc)}else if(c){if(this.prev<a.catchLoc)return r(a.catchLoc,!0)}else{if(!l)throw new Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return r(a.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&i.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var o=r;break}}o&&("break"===t||"continue"===t)&&o.tryLoc<=e&&e<=o.finallyLoc&&(o=null);var a=o?o.completion:{};return a.type=t,a.arg=e,o?(this.method="next",this.next=o.finallyLoc,h):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),h},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),T(n),h}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var r=i.arg;T(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,i){return this.delegate={iterator:O(t),resultName:n,nextLoc:i},"next"===this.method&&(this.arg=e),h}},t}(t.exports);try{regeneratorRuntime=i}catch(t){Function("r","regeneratorRuntime = r")(i)}},function(t,e,n){t.exports=n(100)},function(t,e,n){"use strict";var i=n(4),r=n(68),o=n(102),a=n(74);function s(t){var e=new o(t),n=r(o.prototype.request,e);return i.extend(n,o.prototype,e),i.extend(n,e),n}var c=s(n(71));c.Axios=o,c.create=function(t){return s(a(c.defaults,t))},c.Cancel=n(75),c.CancelToken=n(115),c.isCancel=n(70),c.all=function(t){return Promise.all(t)},c.spread=n(116),t.exports=c,t.exports.default=c},function(t,e){ +/*! + * Determine if an object is a Buffer + * + * @author Feross Aboukhadijeh <https://feross.org> + * @license MIT + */ +t.exports=function(t){return null!=t&&null!=t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}},function(t,e,n){"use strict";var i=n(4),r=n(69),o=n(103),a=n(104),s=n(74);function c(t){this.defaults=t,this.interceptors={request:new o,response:new o}}c.prototype.request=function(t){"string"==typeof t?(t=arguments[1]||{}).url=arguments[0]:t=t||{},(t=s(this.defaults,t)).method=t.method?t.method.toLowerCase():"get";var e=[a,void 0],n=Promise.resolve(t);for(this.interceptors.request.forEach((function(t){e.unshift(t.fulfilled,t.rejected)})),this.interceptors.response.forEach((function(t){e.push(t.fulfilled,t.rejected)}));e.length;)n=n.then(e.shift(),e.shift());return n},c.prototype.getUri=function(t){return t=s(this.defaults,t),r(t.url,t.params,t.paramsSerializer).replace(/^\?/,"")},i.forEach(["delete","get","head","options"],(function(t){c.prototype[t]=function(e,n){return this.request(i.merge(n||{},{method:t,url:e}))}})),i.forEach(["post","put","patch"],(function(t){c.prototype[t]=function(e,n,r){return this.request(i.merge(r||{},{method:t,url:e,data:n}))}})),t.exports=c},function(t,e,n){"use strict";var i=n(4);function r(){this.handlers=[]}r.prototype.use=function(t,e){return this.handlers.push({fulfilled:t,rejected:e}),this.handlers.length-1},r.prototype.eject=function(t){this.handlers[t]&&(this.handlers[t]=null)},r.prototype.forEach=function(t){i.forEach(this.handlers,(function(e){null!==e&&t(e)}))},t.exports=r},function(t,e,n){"use strict";var i=n(4),r=n(105),o=n(70),a=n(71),s=n(113),c=n(114);function l(t){t.cancelToken&&t.cancelToken.throwIfRequested()}t.exports=function(t){return l(t),t.baseURL&&!s(t.url)&&(t.url=c(t.baseURL,t.url)),t.headers=t.headers||{},t.data=r(t.data,t.headers,t.transformRequest),t.headers=i.merge(t.headers.common||{},t.headers[t.method]||{},t.headers||{}),i.forEach(["delete","get","head","post","put","patch","common"],(function(e){delete t.headers[e]})),(t.adapter||a.adapter)(t).then((function(e){return l(t),e.data=r(e.data,e.headers,t.transformResponse),e}),(function(e){return o(e)||(l(t),e&&e.response&&(e.response.data=r(e.response.data,e.response.headers,t.transformResponse))),Promise.reject(e)}))}},function(t,e,n){"use strict";var i=n(4);t.exports=function(t,e,n){return i.forEach(n,(function(n){t=n(t,e)})),t}},function(t,e){var n,i,r=t.exports={};function o(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function s(t){if(n===setTimeout)return setTimeout(t,0);if((n===o||!n)&&setTimeout)return n=setTimeout,setTimeout(t,0);try{return n(t,0)}catch(e){try{return n.call(null,t,0)}catch(e){return n.call(this,t,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:o}catch(t){n=o}try{i="function"==typeof clearTimeout?clearTimeout:a}catch(t){i=a}}();var c,l=[],u=!1,d=-1;function p(){u&&c&&(u=!1,c.length?l=c.concat(l):d=-1,l.length&&f())}function f(){if(!u){var t=s(p);u=!0;for(var e=l.length;e;){for(c=l,l=[];++d<e;)c&&c[d].run();d=-1,e=l.length}c=null,u=!1,function(t){if(i===clearTimeout)return clearTimeout(t);if((i===a||!i)&&clearTimeout)return i=clearTimeout,clearTimeout(t);try{i(t)}catch(e){try{return i.call(null,t)}catch(e){return i.call(this,t)}}}(t)}}function h(t,e){this.fun=t,this.array=e}function v(){}r.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];l.push(new h(t,e)),1!==l.length||u||s(f)},h.prototype.run=function(){this.fun.apply(null,this.array)},r.title="browser",r.browser=!0,r.env={},r.argv=[],r.version="",r.versions={},r.on=v,r.addListener=v,r.once=v,r.off=v,r.removeListener=v,r.removeAllListeners=v,r.emit=v,r.prependListener=v,r.prependOnceListener=v,r.listeners=function(t){return[]},r.binding=function(t){throw new Error("process.binding is not supported")},r.cwd=function(){return"/"},r.chdir=function(t){throw new Error("process.chdir is not supported")},r.umask=function(){return 0}},function(t,e,n){"use strict";var i=n(4);t.exports=function(t,e){i.forEach(t,(function(n,i){i!==e&&i.toUpperCase()===e.toUpperCase()&&(t[e]=n,delete t[i])}))}},function(t,e,n){"use strict";var i=n(73);t.exports=function(t,e,n){var r=n.config.validateStatus;!r||r(n.status)?t(n):e(i("Request failed with status code "+n.status,n.config,null,n.request,n))}},function(t,e,n){"use strict";t.exports=function(t,e,n,i,r){return t.config=e,n&&(t.code=n),t.request=i,t.response=r,t.isAxiosError=!0,t.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},t}},function(t,e,n){"use strict";var i=n(4),r=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];t.exports=function(t){var e,n,o,a={};return t?(i.forEach(t.split("\n"),(function(t){if(o=t.indexOf(":"),e=i.trim(t.substr(0,o)).toLowerCase(),n=i.trim(t.substr(o+1)),e){if(a[e]&&r.indexOf(e)>=0)return;a[e]="set-cookie"===e?(a[e]?a[e]:[]).concat([n]):a[e]?a[e]+", "+n:n}})),a):a}},function(t,e,n){"use strict";var i=n(4);t.exports=i.isStandardBrowserEnv()?function(){var t,e=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function r(t){var i=t;return e&&(n.setAttribute("href",i),i=n.href),n.setAttribute("href",i),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return t=r(window.location.href),function(e){var n=i.isString(e)?r(e):e;return n.protocol===t.protocol&&n.host===t.host}}():function(){return!0}},function(t,e,n){"use strict";var i=n(4);t.exports=i.isStandardBrowserEnv()?{write:function(t,e,n,r,o,a){var s=[];s.push(t+"="+encodeURIComponent(e)),i.isNumber(n)&&s.push("expires="+new Date(n).toGMTString()),i.isString(r)&&s.push("path="+r),i.isString(o)&&s.push("domain="+o),!0===a&&s.push("secure"),document.cookie=s.join("; ")},read:function(t){var e=document.cookie.match(new RegExp("(^|;\\s*)("+t+")=([^;]*)"));return e?decodeURIComponent(e[3]):null},remove:function(t){this.write(t,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},function(t,e,n){"use strict";t.exports=function(t){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(t)}},function(t,e,n){"use strict";t.exports=function(t,e){return e?t.replace(/\/+$/,"")+"/"+e.replace(/^\/+/,""):t}},function(t,e,n){"use strict";var i=n(75);function r(t){if("function"!=typeof t)throw new TypeError("executor must be a function.");var e;this.promise=new Promise((function(t){e=t}));var n=this;t((function(t){n.reason||(n.reason=new i(t),e(n.reason))}))}r.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},r.source=function(){var t;return{token:new r((function(e){t=e})),cancel:t}},t.exports=r},function(t,e,n){"use strict";t.exports=function(t){return function(e){return t.apply(null,e)}}},function(t,e){var n,i;n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i={rotl:function(t,e){return t<<e|t>>>32-e},rotr:function(t,e){return t<<32-e|t>>>e},endian:function(t){if(t.constructor==Number)return 16711935&i.rotl(t,8)|4278255360&i.rotl(t,24);for(var e=0;e<t.length;e++)t[e]=i.endian(t[e]);return t},randomBytes:function(t){for(var e=[];t>0;t--)e.push(Math.floor(256*Math.random()));return e},bytesToWords:function(t){for(var e=[],n=0,i=0;n<t.length;n++,i+=8)e[i>>>5]|=t[n]<<24-i%32;return e},wordsToBytes:function(t){for(var e=[],n=0;n<32*t.length;n+=8)e.push(t[n>>>5]>>>24-n%32&255);return e},bytesToHex:function(t){for(var e=[],n=0;n<t.length;n++)e.push((t[n]>>>4).toString(16)),e.push((15&t[n]).toString(16));return e.join("")},hexToBytes:function(t){for(var e=[],n=0;n<t.length;n+=2)e.push(parseInt(t.substr(n,2),16));return e},bytesToBase64:function(t){for(var e=[],i=0;i<t.length;i+=3)for(var r=t[i]<<16|t[i+1]<<8|t[i+2],o=0;o<4;o++)8*i+6*o<=8*t.length?e.push(n.charAt(r>>>6*(3-o)&63)):e.push("=");return e.join("")},base64ToBytes:function(t){t=t.replace(/[^A-Z0-9+\/]/gi,"");for(var e=[],i=0,r=0;i<t.length;r=++i%4)0!=r&&e.push((n.indexOf(t.charAt(i-1))&Math.pow(2,-2*r+8)-1)<<2*r|n.indexOf(t.charAt(i))>>>6-2*r);return e}},t.exports=i},function(t,e){function n(t){return!!t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)} +/*! + * Determine if an object is a Buffer + * + * @author Feross Aboukhadijeh <https://feross.org> + * @license MIT + */t.exports=function(t){return null!=t&&(n(t)||function(t){return"function"==typeof t.readFloatLE&&"function"==typeof t.slice&&n(t.slice(0,0))}(t)||!!t._isBuffer)}},function(t,e,n){"use strict";var i=n(29);n.n(i).a},function(t,e,n){e=t.exports=n(1)(!1);var i=n(8),r=i(n(9)),o=i(n(10)),a=i(n(11)),s=i(n(12));e.push([t.i,'@font-face{font-family:"iconfont-vue";src:url('+r+");src:url("+r+') format("embedded-opentype"),url('+o+') format("woff"),url('+a+') format("truetype"),url('+s+') format("svg")}.icon[data-v-6015a092]{font-style:normal;font-weight:400}.icon.arrow-left-double[data-v-6015a092]:before{font-family:"iconfont-vue";content:""}.icon.arrow-left[data-v-6015a092]:before{font-family:"iconfont-vue";content:""}.icon.arrow-right-double[data-v-6015a092]:before{font-family:"iconfont-vue";content:""}.icon.arrow-right[data-v-6015a092]:before{font-family:"iconfont-vue";content:""}.icon.close[data-v-6015a092]:before{font-family:"iconfont-vue";content:""}.icon.confirm-fade[data-v-6015a092]:before{font-family:"iconfont-vue";content:""}.icon.confirm[data-v-6015a092]:before{font-family:"iconfont-vue";content:""}.icon.menu[data-v-6015a092]:before{font-family:"iconfont-vue";content:""}.icon.more[data-v-6015a092]:before{font-family:"iconfont-vue";content:""}.icon.pause[data-v-6015a092]:before{font-family:"iconfont-vue";content:""}.icon.play[data-v-6015a092]:before{font-family:"iconfont-vue";content:""}.avatardiv[data-v-6015a092]{position:relative;display:inline-block}.avatardiv--unknown[data-v-6015a092]{position:relative;background-color:var(--color-text-maxcontrast)}.avatardiv--with-menu[data-v-6015a092]{cursor:pointer}.avatardiv--with-menu .icon-more[data-v-6015a092]{position:absolute;top:0;left:0;display:flex;align-items:center;justify-content:center;width:inherit;height:inherit;cursor:pointer;opacity:0;background:none;font-size:18px}.avatardiv--with-menu .icon-more[data-v-6015a092]:before{font-family:"iconfont-vue";font-style:normal;font-weight:400;content:""}.avatardiv--with-menu .icon-more[data-v-6015a092]::before{display:block}.avatardiv--with-menu:focus .icon-more[data-v-6015a092],.avatardiv--with-menu:hover .icon-more[data-v-6015a092]{opacity:1}.avatardiv--with-menu:focus img[data-v-6015a092],.avatardiv--with-menu:hover img[data-v-6015a092]{opacity:0}.avatardiv--with-menu .icon-more[data-v-6015a092],.avatardiv--with-menu img[data-v-6015a092]{transition:opacity var(--animation-quick)}.avatardiv>.unknown[data-v-6015a092]{position:absolute;top:0;left:0;display:block;width:100%;text-align:center;color:var(--color-main-background)}.avatardiv img[data-v-6015a092]{width:100%;height:100%}.avatardiv .avatardiv__status[data-v-6015a092]{position:absolute;top:22px;left:22px;width:10px;height:10px;border:1px solid rgba(255,255,255,0.5);background-clip:content-box}.avatardiv .avatardiv__status--positive[data-v-6015a092]{border-radius:50%;background-color:var(--color-success)}.avatardiv .avatardiv__status--negative[data-v-6015a092]{background-color:var(--color-error)}.avatardiv .avatardiv__status--neutral[data-v-6015a092]{border:none;background-color:transparent !important}.avatardiv .avatardiv__status--neutral svg[data-v-6015a092]{position:absolute;top:-3px;left:-2px}.avatardiv .avatardiv__status--neutral svg path[data-v-6015a092]{fill:#aaa}.avatardiv .popovermenu-wrapper[data-v-6015a092]{position:relative;display:inline-block}.avatardiv .popovermenu[data-v-6015a092]{display:block;margin:0;font-size:initial}\n',""])},function(t,e){function n(t){return(n="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})(t)}function i(e){return"function"==typeof Symbol&&"symbol"===n(Symbol.iterator)?t.exports=i=function(t){return n(t)}:t.exports=i=function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":n(t)},i(e)}t.exports=i},function(t,e,n){t.exports=function(t){function e(i){if(n[i])return n[i].exports;var r=n[i]={i:i,l:!1,exports:{}};return t[i].call(r.exports,r,r.exports,e),r.l=!0,r.exports}var n={};return e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,i){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:i})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="/",e(e.s=60)}([function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(t,e,n){var i=n(49)("wks"),r=n(30),o=n(0).Symbol,a="function"==typeof o;(t.exports=function(t){return i[t]||(i[t]=a&&o[t]||(a?o:r)("Symbol."+t))}).store=i},function(t,e,n){var i=n(5);t.exports=function(t){if(!i(t))throw TypeError(t+" is not an object!");return t}},function(t,e,n){var i=n(0),r=n(10),o=n(8),a=n(6),s=n(11),c=function(t,e,n){var l,u,d,p,f=t&c.F,h=t&c.G,v=t&c.S,m=t&c.P,A=t&c.B,g=h?i:v?i[e]||(i[e]={}):(i[e]||{}).prototype,b=h?r:r[e]||(r[e]={}),y=b.prototype||(b.prototype={});for(l in h&&(n=e),n)d=((u=!f&&g&&void 0!==g[l])?g:n)[l],p=A&&u?s(d,i):m&&"function"==typeof d?s(Function.call,d):d,g&&a(g,l,d,t&c.U),b[l]!=d&&o(b,l,p),m&&y[l]!=d&&(y[l]=d)};i.core=r,c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,t.exports=c},function(t,e,n){t.exports=!n(7)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,e,n){var i=n(0),r=n(8),o=n(12),a=n(30)("src"),s=Function.toString,c=(""+s).split("toString");n(10).inspectSource=function(t){return s.call(t)},(t.exports=function(t,e,n,s){var l="function"==typeof n;l&&(o(n,"name")||r(n,"name",e)),t[e]!==n&&(l&&(o(n,a)||r(n,a,t[e]?""+t[e]:c.join(String(e)))),t===i?t[e]=n:s?t[e]?t[e]=n:r(t,e,n):(delete t[e],r(t,e,n)))})(Function.prototype,"toString",(function(){return"function"==typeof this&&this[a]||s.call(this)}))},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,n){var i=n(13),r=n(25);t.exports=n(4)?function(t,e,n){return i.f(t,e,r(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,e){var n=t.exports={version:"2.5.7"};"number"==typeof __e&&(__e=n)},function(t,e,n){var i=n(14);t.exports=function(t,e,n){if(i(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,i){return t.call(e,n,i)};case 3:return function(n,i,r){return t.call(e,n,i,r)}}return function(){return t.apply(e,arguments)}}},function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},function(t,e,n){var i=n(2),r=n(41),o=n(29),a=Object.defineProperty;e.f=n(4)?Object.defineProperty:function(t,e,n){if(i(t),e=o(e,!0),i(n),r)try{return a(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e){t.exports={}},function(t,e){t.exports=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t}},function(t,e,n){"use strict";var i=n(7);t.exports=function(t,e){return!!t&&i((function(){e?t.call(null,(function(){}),1):t.call(null)}))}},function(t,e,n){var i=n(23),r=n(16);t.exports=function(t){return i(r(t))}},function(t,e,n){var i=n(53),r=Math.min;t.exports=function(t){return t>0?r(i(t),9007199254740991):0}},function(t,e,n){var i=n(11),r=n(23),o=n(28),a=n(19),s=n(64);t.exports=function(t,e){var n=1==t,c=2==t,l=3==t,u=4==t,d=6==t,p=5==t||d,f=e||s;return function(e,s,h){for(var v,m,A=o(e),g=r(A),b=i(s,h,3),y=a(g.length),_=0,w=n?f(e,y):c?f(e,0):void 0;y>_;_++)if((p||_ in g)&&(m=b(v=g[_],_,A),t))if(n)w[_]=m;else if(m)switch(t){case 3:return!0;case 5:return v;case 6:return _;case 2:w.push(v)}else if(u)return!1;return d?-1:l||u?u:w}}},function(t,e,n){var i=n(5),r=n(0).document,o=i(r)&&i(r.createElement);t.exports=function(t){return o?r.createElement(t):{}}},function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,e,n){var i=n(9);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==i(t)?t.split(""):Object(t)}},function(t,e){t.exports=!1},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,n){var i=n(13).f,r=n(12),o=n(1)("toStringTag");t.exports=function(t,e,n){t&&!r(t=n?t:t.prototype,o)&&i(t,o,{configurable:!0,value:e})}},function(t,e,n){var i=n(49)("keys"),r=n(30);t.exports=function(t){return i[t]||(i[t]=r(t))}},function(t,e,n){var i=n(16);t.exports=function(t){return Object(i(t))}},function(t,e,n){var i=n(5);t.exports=function(t,e){if(!i(t))return t;var n,r;if(e&&"function"==typeof(n=t.toString)&&!i(r=n.call(t)))return r;if("function"==typeof(n=t.valueOf)&&!i(r=n.call(t)))return r;if(!e&&"function"==typeof(n=t.toString)&&!i(r=n.call(t)))return r;throw TypeError("Can't convert object to primitive value")}},function(t,e){var n=0,i=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+i).toString(36))}},function(t,e,n){"use strict";var i=n(0),r=n(12),o=n(9),a=n(67),s=n(29),c=n(7),l=n(77).f,u=n(45).f,d=n(13).f,p=n(51).trim,f=i.Number,h=f,v=f.prototype,m="Number"==o(n(44)(v)),A="trim"in String.prototype,g=function(t){var e=s(t,!1);if("string"==typeof e&&e.length>2){var n,i,r,o=(e=A?e.trim():p(e,3)).charCodeAt(0);if(43===o||45===o){if(88===(n=e.charCodeAt(2))||120===n)return NaN}else if(48===o){switch(e.charCodeAt(1)){case 66:case 98:i=2,r=49;break;case 79:case 111:i=8,r=55;break;default:return+e}for(var a,c=e.slice(2),l=0,u=c.length;l<u;l++)if((a=c.charCodeAt(l))<48||a>r)return NaN;return parseInt(c,i)}}return+e};if(!f(" 0o1")||!f("0b1")||f("+0x1")){f=function(t){var e=arguments.length<1?0:t,n=this;return n instanceof f&&(m?c((function(){v.valueOf.call(n)})):"Number"!=o(n))?a(new h(g(e)),n,f):g(e)};for(var b,y=n(4)?l(h):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),_=0;y.length>_;_++)r(h,b=y[_])&&!r(f,b)&&d(f,b,u(h,b));f.prototype=v,v.constructor=f,n(6)(i,"Number",f)}},function(t,e,n){"use strict";function i(t){return!(0===t||(!Array.isArray(t)||0!==t.length)&&t)}function r(t,e,n,i){return t.filter((function(t){return function(t,e){return void 0===t&&(t="undefined"),null===t&&(t="null"),!1===t&&(t="false"),-1!==t.toString().toLowerCase().indexOf(e.trim())}(i(t,n),e)}))}function o(t){return t.filter((function(t){return!t.$isLabel}))}function a(t,e){return function(n){return n.reduce((function(n,i){return i[t]&&i[t].length?(n.push({$groupLabel:i[e],$isLabel:!0}),n.concat(i[t])):n}),[])}}function s(t,e,i,o,a){return function(s){return s.map((function(s){var c;if(!s[i])return console.warn("Options passed to vue-multiselect do not contain groups, despite the config."),[];var l=r(s[i],t,e,a);return l.length?(c={},n.i(p.a)(c,o,s[o]),n.i(p.a)(c,i,l),c):[]}))}}var c=n(59),l=n(54),u=(n.n(l),n(95)),d=(n.n(u),n(31)),p=(n.n(d),n(58)),f=n(91),h=(n.n(f),n(98)),v=(n.n(h),n(92)),m=(n.n(v),n(88)),A=(n.n(m),n(97)),g=(n.n(A),n(89)),b=(n.n(g),n(96)),y=(n.n(b),n(93)),_=(n.n(y),n(90)),w=(n.n(_),function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return function(t){return e.reduce((function(t,e){return e(t)}),t)}});e.a={data:function(){return{search:"",isOpen:!1,preferredOpenDirection:"below",optimizedHeight:this.maxHeight}},props:{internalSearch:{type:Boolean,default:!0},options:{type:Array,required:!0},multiple:{type:Boolean,default:!1},value:{type:null,default:function(){return[]}},trackBy:{type:String},label:{type:String},searchable:{type:Boolean,default:!0},clearOnSelect:{type:Boolean,default:!0},hideSelected:{type:Boolean,default:!1},placeholder:{type:String,default:"Select option"},allowEmpty:{type:Boolean,default:!0},resetAfter:{type:Boolean,default:!1},closeOnSelect:{type:Boolean,default:!0},customLabel:{type:Function,default:function(t,e){return i(t)?"":e?t[e]:t}},taggable:{type:Boolean,default:!1},tagPlaceholder:{type:String,default:"Press enter to create a tag"},tagPosition:{type:String,default:"top"},max:{type:[Number,Boolean],default:!1},id:{default:null},optionsLimit:{type:Number,default:1e3},groupValues:{type:String},groupLabel:{type:String},groupSelect:{type:Boolean,default:!1},blockKeys:{type:Array,default:function(){return[]}},preserveSearch:{type:Boolean,default:!1},preselectFirst:{type:Boolean,default:!1}},mounted:function(){!this.multiple&&this.max&&console.warn("[Vue-Multiselect warn]: Max prop should not be used when prop Multiple equals false."),this.preselectFirst&&!this.internalValue.length&&this.options.length&&this.select(this.filteredOptions[0])},computed:{internalValue:function(){return this.value||0===this.value?Array.isArray(this.value)?this.value:[this.value]:[]},filteredOptions:function(){var t=this.search||"",e=t.toLowerCase().trim(),n=this.options.concat();return n=this.internalSearch?this.groupValues?this.filterAndFlat(n,e,this.label):r(n,e,this.label,this.customLabel):this.groupValues?a(this.groupValues,this.groupLabel)(n):n,n=this.hideSelected?n.filter(function(t){return function(){return!t.apply(void 0,arguments)}}(this.isSelected)):n,this.taggable&&e.length&&!this.isExistingOption(e)&&("bottom"===this.tagPosition?n.push({isTag:!0,label:t}):n.unshift({isTag:!0,label:t})),n.slice(0,this.optionsLimit)},valueKeys:function(){var t=this;return this.trackBy?this.internalValue.map((function(e){return e[t.trackBy]})):this.internalValue},optionKeys:function(){var t=this;return(this.groupValues?this.flatAndStrip(this.options):this.options).map((function(e){return t.customLabel(e,t.label).toString().toLowerCase()}))},currentOptionLabel:function(){return this.multiple?this.searchable?"":this.placeholder:this.internalValue.length?this.getOptionLabel(this.internalValue[0]):this.searchable?"":this.placeholder}},watch:{internalValue:function(){this.resetAfter&&this.internalValue.length&&(this.search="",this.$emit("input",this.multiple?[]:null))},search:function(){this.$emit("search-change",this.search,this.id)}},methods:{getValue:function(){return this.multiple?this.internalValue:0===this.internalValue.length?null:this.internalValue[0]},filterAndFlat:function(t,e,n){return w(s(e,n,this.groupValues,this.groupLabel,this.customLabel),a(this.groupValues,this.groupLabel))(t)},flatAndStrip:function(t){return w(a(this.groupValues,this.groupLabel),o)(t)},updateSearch:function(t){this.search=t},isExistingOption:function(t){return!!this.options&&this.optionKeys.indexOf(t)>-1},isSelected:function(t){var e=this.trackBy?t[this.trackBy]:t;return this.valueKeys.indexOf(e)>-1},isOptionDisabled:function(t){return!!t.$isDisabled},getOptionLabel:function(t){if(i(t))return"";if(t.isTag)return t.label;if(t.$isLabel)return t.$groupLabel;var e=this.customLabel(t,this.label);return i(e)?"":e},select:function(t,e){if(t.$isLabel&&this.groupSelect)this.selectGroup(t);else if(!(-1!==this.blockKeys.indexOf(e)||this.disabled||t.$isDisabled||t.$isLabel)&&(!this.max||!this.multiple||this.internalValue.length!==this.max)&&("Tab"!==e||this.pointerDirty)){if(t.isTag)this.$emit("tag",t.label,this.id),this.search="",this.closeOnSelect&&!this.multiple&&this.deactivate();else{if(this.isSelected(t))return void("Tab"!==e&&this.removeElement(t));this.$emit("select",t,this.id),this.multiple?this.$emit("input",this.internalValue.concat([t]),this.id):this.$emit("input",t,this.id),this.clearOnSelect&&(this.search="")}this.closeOnSelect&&this.deactivate()}},selectGroup:function(t){var e=this,n=this.options.find((function(n){return n[e.groupLabel]===t.$groupLabel}));if(n)if(this.wholeGroupSelected(n)){this.$emit("remove",n[this.groupValues],this.id);var i=this.internalValue.filter((function(t){return-1===n[e.groupValues].indexOf(t)}));this.$emit("input",i,this.id)}else{var r=n[this.groupValues].filter((function(t){return!(e.isOptionDisabled(t)||e.isSelected(t))}));this.$emit("select",r,this.id),this.$emit("input",this.internalValue.concat(r),this.id)}},wholeGroupSelected:function(t){var e=this;return t[this.groupValues].every((function(t){return e.isSelected(t)||e.isOptionDisabled(t)}))},wholeGroupDisabled:function(t){return t[this.groupValues].every(this.isOptionDisabled)},removeElement:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(!this.disabled&&!t.$isDisabled){if(!this.allowEmpty&&this.internalValue.length<=1)return void this.deactivate();var i="object"===n.i(c.a)(t)?this.valueKeys.indexOf(t[this.trackBy]):this.valueKeys.indexOf(t);if(this.$emit("remove",t,this.id),this.multiple){var r=this.internalValue.slice(0,i).concat(this.internalValue.slice(i+1));this.$emit("input",r,this.id)}else this.$emit("input",null,this.id);this.closeOnSelect&&e&&this.deactivate()}},removeLastElement:function(){-1===this.blockKeys.indexOf("Delete")&&0===this.search.length&&Array.isArray(this.internalValue)&&this.internalValue.length&&this.removeElement(this.internalValue[this.internalValue.length-1],!1)},activate:function(){var t=this;this.isOpen||this.disabled||(this.adjustPosition(),this.groupValues&&0===this.pointer&&this.filteredOptions.length&&(this.pointer=1),this.isOpen=!0,this.searchable?(this.preserveSearch||(this.search=""),this.$nextTick((function(){return t.$refs.search.focus()}))):this.$el.focus(),this.$emit("open",this.id))},deactivate:function(){this.isOpen&&(this.isOpen=!1,this.searchable?this.$refs.search.blur():this.$el.blur(),this.preserveSearch||(this.search=""),this.$emit("close",this.getValue(),this.id))},toggle:function(){this.isOpen?this.deactivate():this.activate()},adjustPosition:function(){if("undefined"!=typeof window){var t=this.$el.getBoundingClientRect().top,e=window.innerHeight-this.$el.getBoundingClientRect().bottom;e>this.maxHeight||e>t||"below"===this.openDirection||"bottom"===this.openDirection?(this.preferredOpenDirection="below",this.optimizedHeight=Math.min(e-40,this.maxHeight)):(this.preferredOpenDirection="above",this.optimizedHeight=Math.min(t-40,this.maxHeight))}}}}},function(t,e,n){"use strict";var i=n(54),r=(n.n(i),n(31));n.n(r),e.a={data:function(){return{pointer:0,pointerDirty:!1}},props:{showPointer:{type:Boolean,default:!0},optionHeight:{type:Number,default:40}},computed:{pointerPosition:function(){return this.pointer*this.optionHeight},visibleElements:function(){return this.optimizedHeight/this.optionHeight}},watch:{filteredOptions:function(){this.pointerAdjust()},isOpen:function(){this.pointerDirty=!1}},methods:{optionHighlight:function(t,e){return{"multiselect__option--highlight":t===this.pointer&&this.showPointer,"multiselect__option--selected":this.isSelected(e)}},groupHighlight:function(t,e){var n=this;if(!this.groupSelect)return["multiselect__option--group","multiselect__option--disabled"];var i=this.options.find((function(t){return t[n.groupLabel]===e.$groupLabel}));return i&&!this.wholeGroupDisabled(i)?["multiselect__option--group",{"multiselect__option--highlight":t===this.pointer&&this.showPointer},{"multiselect__option--group-selected":this.wholeGroupSelected(i)}]:"multiselect__option--disabled"},addPointerElement:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"Enter",e=t.key;this.filteredOptions.length>0&&this.select(this.filteredOptions[this.pointer],e),this.pointerReset()},pointerForward:function(){this.pointer<this.filteredOptions.length-1&&(this.pointer++,this.$refs.list.scrollTop<=this.pointerPosition-(this.visibleElements-1)*this.optionHeight&&(this.$refs.list.scrollTop=this.pointerPosition-(this.visibleElements-1)*this.optionHeight),this.filteredOptions[this.pointer]&&this.filteredOptions[this.pointer].$isLabel&&!this.groupSelect&&this.pointerForward()),this.pointerDirty=!0},pointerBackward:function(){this.pointer>0?(this.pointer--,this.$refs.list.scrollTop>=this.pointerPosition&&(this.$refs.list.scrollTop=this.pointerPosition),this.filteredOptions[this.pointer]&&this.filteredOptions[this.pointer].$isLabel&&!this.groupSelect&&this.pointerBackward()):this.filteredOptions[this.pointer]&&this.filteredOptions[0].$isLabel&&!this.groupSelect&&this.pointerForward(),this.pointerDirty=!0},pointerReset:function(){this.closeOnSelect&&(this.pointer=0,this.$refs.list&&(this.$refs.list.scrollTop=0))},pointerAdjust:function(){this.pointer>=this.filteredOptions.length-1&&(this.pointer=this.filteredOptions.length?this.filteredOptions.length-1:0),this.filteredOptions.length>0&&this.filteredOptions[this.pointer].$isLabel&&!this.groupSelect&&this.pointerForward()},pointerSet:function(t){this.pointer=t,this.pointerDirty=!0}}}},function(t,e,n){"use strict";var i=n(36),r=n(74),o=n(15),a=n(18);t.exports=n(72)(Array,"Array",(function(t,e){this._t=a(t),this._i=0,this._k=e}),(function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,r(1)):r(0,"keys"==e?n:"values"==e?t[n]:[n,t[n]])}),"values"),o.Arguments=o.Array,i("keys"),i("values"),i("entries")},function(t,e,n){"use strict";var i=n(31),r=(n.n(i),n(32)),o=n(33);e.a={name:"vue-multiselect",mixins:[r.a,o.a],props:{name:{type:String,default:""},selectLabel:{type:String,default:"Press enter to select"},selectGroupLabel:{type:String,default:"Press enter to select group"},selectedLabel:{type:String,default:"Selected"},deselectLabel:{type:String,default:"Press enter to remove"},deselectGroupLabel:{type:String,default:"Press enter to deselect group"},showLabels:{type:Boolean,default:!0},limit:{type:Number,default:99999},maxHeight:{type:Number,default:300},limitText:{type:Function,default:function(t){return"and ".concat(t," more")}},loading:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},openDirection:{type:String,default:""},showNoOptions:{type:Boolean,default:!0},showNoResults:{type:Boolean,default:!0},tabindex:{type:Number,default:0}},computed:{isSingleLabelVisible:function(){return(this.singleValue||0===this.singleValue)&&(!this.isOpen||!this.searchable)&&!this.visibleValues.length},isPlaceholderVisible:function(){return!(this.internalValue.length||this.searchable&&this.isOpen)},visibleValues:function(){return this.multiple?this.internalValue.slice(0,this.limit):[]},singleValue:function(){return this.internalValue[0]},deselectLabelText:function(){return this.showLabels?this.deselectLabel:""},deselectGroupLabelText:function(){return this.showLabels?this.deselectGroupLabel:""},selectLabelText:function(){return this.showLabels?this.selectLabel:""},selectGroupLabelText:function(){return this.showLabels?this.selectGroupLabel:""},selectedLabelText:function(){return this.showLabels?this.selectedLabel:""},inputStyle:function(){if(this.searchable||this.multiple&&this.value&&this.value.length)return this.isOpen?{width:"100%"}:{width:"0",position:"absolute",padding:"0"}},contentStyle:function(){return this.options.length?{display:"inline-block"}:{display:"block"}},isAbove:function(){return"above"===this.openDirection||"top"===this.openDirection||"below"!==this.openDirection&&"bottom"!==this.openDirection&&"above"===this.preferredOpenDirection},showSearchInput:function(){return this.searchable&&(!this.hasSingleSelectedSlot||!this.visibleSingleValue&&0!==this.visibleSingleValue||this.isOpen)}}}},function(t,e,n){var i=n(1)("unscopables"),r=Array.prototype;null==r[i]&&n(8)(r,i,{}),t.exports=function(t){r[i][t]=!0}},function(t,e,n){var i=n(18),r=n(19),o=n(85);t.exports=function(t){return function(e,n,a){var s,c=i(e),l=r(c.length),u=o(a,l);if(t&&n!=n){for(;l>u;)if((s=c[u++])!=s)return!0}else for(;l>u;u++)if((t||u in c)&&c[u]===n)return t||u||0;return!t&&-1}}},function(t,e,n){var i=n(9),r=n(1)("toStringTag"),o="Arguments"==i(function(){return arguments}());t.exports=function(t){var e,n,a;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=function(t,e){try{return t[e]}catch(t){}}(e=Object(t),r))?n:o?i(e):"Object"==(a=i(e))&&"function"==typeof e.callee?"Arguments":a}},function(t,e,n){"use strict";var i=n(2);t.exports=function(){var t=i(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},function(t,e,n){var i=n(0).document;t.exports=i&&i.documentElement},function(t,e,n){t.exports=!n(4)&&!n(7)((function(){return 7!=Object.defineProperty(n(21)("div"),"a",{get:function(){return 7}}).a}))},function(t,e,n){var i=n(9);t.exports=Array.isArray||function(t){return"Array"==i(t)}},function(t,e,n){"use strict";function i(t){var e,n;this.promise=new t((function(t,i){if(void 0!==e||void 0!==n)throw TypeError("Bad Promise constructor");e=t,n=i})),this.resolve=r(e),this.reject=r(n)}var r=n(14);t.exports.f=function(t){return new i(t)}},function(t,e,n){var i=n(2),r=n(76),o=n(22),a=n(27)("IE_PROTO"),s=function(){},c=function(){var t,e=n(21)("iframe"),i=o.length;for(e.style.display="none",n(40).appendChild(e),e.src="javascript:",(t=e.contentWindow.document).open(),t.write("<script>document.F=Object<\/script>"),t.close(),c=t.F;i--;)delete c.prototype[o[i]];return c()};t.exports=Object.create||function(t,e){var n;return null!==t?(s.prototype=i(t),n=new s,s.prototype=null,n[a]=t):n=c(),void 0===e?n:r(n,e)}},function(t,e,n){var i=n(79),r=n(25),o=n(18),a=n(29),s=n(12),c=n(41),l=Object.getOwnPropertyDescriptor;e.f=n(4)?l:function(t,e){if(t=o(t),e=a(e,!0),c)try{return l(t,e)}catch(t){}if(s(t,e))return r(!i.f.call(t,e),t[e])}},function(t,e,n){var i=n(12),r=n(18),o=n(37)(!1),a=n(27)("IE_PROTO");t.exports=function(t,e){var n,s=r(t),c=0,l=[];for(n in s)n!=a&&i(s,n)&&l.push(n);for(;e.length>c;)i(s,n=e[c++])&&(~o(l,n)||l.push(n));return l}},function(t,e,n){var i=n(46),r=n(22);t.exports=Object.keys||function(t){return i(t,r)}},function(t,e,n){var i=n(2),r=n(5),o=n(43);t.exports=function(t,e){if(i(t),r(e)&&e.constructor===t)return e;var n=o.f(t);return(0,n.resolve)(e),n.promise}},function(t,e,n){var i=n(10),r=n(0),o=r["__core-js_shared__"]||(r["__core-js_shared__"]={});(t.exports=function(t,e){return o[t]||(o[t]=void 0!==e?e:{})})("versions",[]).push({version:i.version,mode:n(24)?"pure":"global",copyright:"© 2018 Denis Pushkarev (zloirock.ru)"})},function(t,e,n){var i=n(2),r=n(14),o=n(1)("species");t.exports=function(t,e){var n,a=i(t).constructor;return void 0===a||null==(n=i(a)[o])?e:r(n)}},function(t,e,n){var i=n(3),r=n(16),o=n(7),a=n(84),s="["+a+"]",c=RegExp("^"+s+s+"*"),l=RegExp(s+s+"*$"),u=function(t,e,n){var r={},s=o((function(){return!!a[t]()||"​…"!="​…"[t]()})),c=r[t]=s?e(d):a[t];n&&(r[n]=c),i(i.P+i.F*s,"String",r)},d=u.trim=function(t,e){return t=String(r(t)),1&e&&(t=t.replace(c,"")),2&e&&(t=t.replace(l,"")),t};t.exports=u},function(t,e,n){var i,r,o,a=n(11),s=n(68),c=n(40),l=n(21),u=n(0),d=u.process,p=u.setImmediate,f=u.clearImmediate,h=u.MessageChannel,v=u.Dispatch,m=0,A={},g=function(){var t=+this;if(A.hasOwnProperty(t)){var e=A[t];delete A[t],e()}},b=function(t){g.call(t.data)};p&&f||(p=function(t){for(var e=[],n=1;arguments.length>n;)e.push(arguments[n++]);return A[++m]=function(){s("function"==typeof t?t:Function(t),e)},i(m),m},f=function(t){delete A[t]},"process"==n(9)(d)?i=function(t){d.nextTick(a(g,t,1))}:v&&v.now?i=function(t){v.now(a(g,t,1))}:h?(o=(r=new h).port2,r.port1.onmessage=b,i=a(o.postMessage,o,1)):u.addEventListener&&"function"==typeof postMessage&&!u.importScripts?(i=function(t){u.postMessage(t+"","*")},u.addEventListener("message",b,!1)):i="onreadystatechange"in l("script")?function(t){c.appendChild(l("script")).onreadystatechange=function(){c.removeChild(this),g.call(t)}}:function(t){setTimeout(a(g,t,1),0)}),t.exports={set:p,clear:f}},function(t,e){var n=Math.ceil,i=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?i:n)(t)}},function(t,e,n){"use strict";var i=n(3),r=n(20)(5),o=!0;"find"in[]&&Array(1).find((function(){o=!1})),i(i.P+i.F*o,"Array",{find:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}}),n(36)("find")},function(t,e,n){"use strict";var i,r,o,a,s=n(24),c=n(0),l=n(11),u=n(38),d=n(3),p=n(5),f=n(14),h=n(61),v=n(66),m=n(50),A=n(52).set,g=n(75)(),b=n(43),y=n(80),_=n(86),w=n(48),x=c.TypeError,C=c.process,k=C&&C.versions,T=k&&k.v8||"",E=c.Promise,O="process"==u(C),S=function(){},M=r=b.f,D=!!function(){try{var t=E.resolve(1),e=(t.constructor={})[n(1)("species")]=function(t){t(S,S)};return(O||"function"==typeof PromiseRejectionEvent)&&t.then(S)instanceof e&&0!==T.indexOf("6.6")&&-1===_.indexOf("Chrome/66")}catch(t){}}(),N=function(t){var e;return!(!p(t)||"function"!=typeof(e=t.then))&&e},I=function(t,e){if(!t._n){t._n=!0;var n=t._c;g((function(){for(var i=t._v,r=1==t._s,o=0;n.length>o;)!function(e){var n,o,a,s=r?e.ok:e.fail,c=e.resolve,l=e.reject,u=e.domain;try{s?(r||(2==t._h&&L(t),t._h=1),!0===s?n=i:(u&&u.enter(),n=s(i),u&&(u.exit(),a=!0)),n===e.promise?l(x("Promise-chain cycle")):(o=N(n))?o.call(n,c,l):c(n)):l(i)}catch(t){u&&!a&&u.exit(),l(t)}}(n[o++]);t._c=[],t._n=!1,e&&!t._h&&B(t)}))}},B=function(t){A.call(c,(function(){var e,n,i,r=t._v,o=P(t);if(o&&(e=y((function(){O?C.emit("unhandledRejection",r,t):(n=c.onunhandledrejection)?n({promise:t,reason:r}):(i=c.console)&&i.error&&i.error("Unhandled promise rejection",r)})),t._h=O||P(t)?2:1),t._a=void 0,o&&e.e)throw e.v}))},P=function(t){return 1!==t._h&&0===(t._a||t._c).length},L=function(t){A.call(c,(function(){var e;O?C.emit("rejectionHandled",t):(e=c.onrejectionhandled)&&e({promise:t,reason:t._v})}))},j=function(t){var e=this;e._d||(e._d=!0,(e=e._w||e)._v=t,e._s=2,e._a||(e._a=e._c.slice()),I(e,!0))},$=function(t){var e,n=this;if(!n._d){n._d=!0,n=n._w||n;try{if(n===t)throw x("Promise can't be resolved itself");(e=N(t))?g((function(){var i={_w:n,_d:!1};try{e.call(t,l($,i,1),l(j,i,1))}catch(t){j.call(i,t)}})):(n._v=t,n._s=1,I(n,!1))}catch(t){j.call({_w:n,_d:!1},t)}}};D||(E=function(t){h(this,E,"Promise","_h"),f(t),i.call(this);try{t(l($,this,1),l(j,this,1))}catch(t){j.call(this,t)}},(i=function(t){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1}).prototype=n(81)(E.prototype,{then:function(t,e){var n=M(m(this,E));return n.ok="function"!=typeof t||t,n.fail="function"==typeof e&&e,n.domain=O?C.domain:void 0,this._c.push(n),this._a&&this._a.push(n),this._s&&I(this,!1),n.promise},catch:function(t){return this.then(void 0,t)}}),o=function(){var t=new i;this.promise=t,this.resolve=l($,t,1),this.reject=l(j,t,1)},b.f=M=function(t){return t===E||t===a?new o(t):r(t)}),d(d.G+d.W+d.F*!D,{Promise:E}),n(26)(E,"Promise"),n(83)("Promise"),a=n(10).Promise,d(d.S+d.F*!D,"Promise",{reject:function(t){var e=M(this);return(0,e.reject)(t),e.promise}}),d(d.S+d.F*(s||!D),"Promise",{resolve:function(t){return w(s&&this===a?E:this,t)}}),d(d.S+d.F*!(D&&n(73)((function(t){E.all(t).catch(S)}))),"Promise",{all:function(t){var e=this,n=M(e),i=n.resolve,r=n.reject,o=y((function(){var n=[],o=0,a=1;v(t,!1,(function(t){var s=o++,c=!1;n.push(void 0),a++,e.resolve(t).then((function(t){c||(c=!0,n[s]=t,--a||i(n))}),r)})),--a||i(n)}));return o.e&&r(o.v),n.promise},race:function(t){var e=this,n=M(e),i=n.reject,r=y((function(){v(t,!1,(function(t){e.resolve(t).then(n.resolve,i)}))}));return r.e&&i(r.v),n.promise}})},function(t,e,n){"use strict";var i=n(3),r=n(10),o=n(0),a=n(50),s=n(48);i(i.P+i.R,"Promise",{finally:function(t){var e=a(this,r.Promise||o.Promise),n="function"==typeof t;return this.then(n?function(n){return s(e,t()).then((function(){return n}))}:t,n?function(n){return s(e,t()).then((function(){throw n}))}:t)}})},function(t,e,n){"use strict";var i=n(35),r=n(101),o=n(100)(i.a,r.a,!1,(function(t){n(99)}),null,null);e.a=o.exports},function(t,e,n){"use strict";e.a=function(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}},function(t,e,n){"use strict";function i(t){return(i="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})(t)}function r(t){return(r="function"==typeof Symbol&&"symbol"===i(Symbol.iterator)?function(t){return i(t)}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":i(t)})(t)}e.a=r},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(34),r=(n.n(i),n(55)),o=(n.n(r),n(56)),a=(n.n(o),n(57)),s=n(32),c=n(33);n.d(e,"Multiselect",(function(){return a.a})),n.d(e,"multiselectMixin",(function(){return s.a})),n.d(e,"pointerMixin",(function(){return c.a})),e.default=a.a},function(t,e){t.exports=function(t,e,n,i){if(!(t instanceof e)||void 0!==i&&i in t)throw TypeError(n+": incorrect invocation!");return t}},function(t,e,n){var i=n(14),r=n(28),o=n(23),a=n(19);t.exports=function(t,e,n,s,c){i(e);var l=r(t),u=o(l),d=a(l.length),p=c?d-1:0,f=c?-1:1;if(n<2)for(;;){if(p in u){s=u[p],p+=f;break}if(p+=f,c?p<0:d<=p)throw TypeError("Reduce of empty array with no initial value")}for(;c?p>=0:d>p;p+=f)p in u&&(s=e(s,u[p],p,l));return s}},function(t,e,n){var i=n(5),r=n(42),o=n(1)("species");t.exports=function(t){var e;return r(t)&&("function"!=typeof(e=t.constructor)||e!==Array&&!r(e.prototype)||(e=void 0),i(e)&&null===(e=e[o])&&(e=void 0)),void 0===e?Array:e}},function(t,e,n){var i=n(63);t.exports=function(t,e){return new(i(t))(e)}},function(t,e,n){"use strict";var i=n(8),r=n(6),o=n(7),a=n(16),s=n(1);t.exports=function(t,e,n){var c=s(t),l=n(a,c,""[t]),u=l[0],d=l[1];o((function(){var e={};return e[c]=function(){return 7},7!=""[t](e)}))&&(r(String.prototype,t,u),i(RegExp.prototype,c,2==e?function(t,e){return d.call(t,this,e)}:function(t){return d.call(t,this)}))}},function(t,e,n){var i=n(11),r=n(70),o=n(69),a=n(2),s=n(19),c=n(87),l={},u={};(e=t.exports=function(t,e,n,d,p){var f,h,v,m,A=p?function(){return t}:c(t),g=i(n,d,e?2:1),b=0;if("function"!=typeof A)throw TypeError(t+" is not iterable!");if(o(A)){for(f=s(t.length);f>b;b++)if((m=e?g(a(h=t[b])[0],h[1]):g(t[b]))===l||m===u)return m}else for(v=A.call(t);!(h=v.next()).done;)if((m=r(v,g,h.value,e))===l||m===u)return m}).BREAK=l,e.RETURN=u},function(t,e,n){var i=n(5),r=n(82).set;t.exports=function(t,e,n){var o,a=e.constructor;return a!==n&&"function"==typeof a&&(o=a.prototype)!==n.prototype&&i(o)&&r&&r(t,o),t}},function(t,e){t.exports=function(t,e,n){var i=void 0===n;switch(e.length){case 0:return i?t():t.call(n);case 1:return i?t(e[0]):t.call(n,e[0]);case 2:return i?t(e[0],e[1]):t.call(n,e[0],e[1]);case 3:return i?t(e[0],e[1],e[2]):t.call(n,e[0],e[1],e[2]);case 4:return i?t(e[0],e[1],e[2],e[3]):t.call(n,e[0],e[1],e[2],e[3])}return t.apply(n,e)}},function(t,e,n){var i=n(15),r=n(1)("iterator"),o=Array.prototype;t.exports=function(t){return void 0!==t&&(i.Array===t||o[r]===t)}},function(t,e,n){var i=n(2);t.exports=function(t,e,n,r){try{return r?e(i(n)[0],n[1]):e(n)}catch(e){var o=t.return;throw void 0!==o&&i(o.call(t)),e}}},function(t,e,n){"use strict";var i=n(44),r=n(25),o=n(26),a={};n(8)(a,n(1)("iterator"),(function(){return this})),t.exports=function(t,e,n){t.prototype=i(a,{next:r(1,n)}),o(t,e+" Iterator")}},function(t,e,n){"use strict";var i=n(24),r=n(3),o=n(6),a=n(8),s=n(15),c=n(71),l=n(26),u=n(78),d=n(1)("iterator"),p=!([].keys&&"next"in[].keys()),f=function(){return this};t.exports=function(t,e,n,h,v,m,A){c(n,e,h);var g,b,y,_=function(t){if(!p&&t in k)return k[t];switch(t){case"keys":case"values":return function(){return new n(this,t)}}return function(){return new n(this,t)}},w=e+" Iterator",x="values"==v,C=!1,k=t.prototype,T=k[d]||k["@@iterator"]||v&&k[v],E=T||_(v),O=v?x?_("entries"):E:void 0,S="Array"==e&&k.entries||T;if(S&&(y=u(S.call(new t)))!==Object.prototype&&y.next&&(l(y,w,!0),i||"function"==typeof y[d]||a(y,d,f)),x&&T&&"values"!==T.name&&(C=!0,E=function(){return T.call(this)}),i&&!A||!p&&!C&&k[d]||a(k,d,E),s[e]=E,s[w]=f,v)if(g={values:x?E:_("values"),keys:m?E:_("keys"),entries:O},A)for(b in g)b in k||o(k,b,g[b]);else r(r.P+r.F*(p||C),e,g);return g}},function(t,e,n){var i=n(1)("iterator"),r=!1;try{var o=[7][i]();o.return=function(){r=!0},Array.from(o,(function(){throw 2}))}catch(t){}t.exports=function(t,e){if(!e&&!r)return!1;var n=!1;try{var o=[7],a=o[i]();a.next=function(){return{done:n=!0}},o[i]=function(){return a},t(o)}catch(t){}return n}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e,n){var i=n(0),r=n(52).set,o=i.MutationObserver||i.WebKitMutationObserver,a=i.process,s=i.Promise,c="process"==n(9)(a);t.exports=function(){var t,e,n,l=function(){var i,r;for(c&&(i=a.domain)&&i.exit();t;){r=t.fn,t=t.next;try{r()}catch(i){throw t?n():e=void 0,i}}e=void 0,i&&i.enter()};if(c)n=function(){a.nextTick(l)};else if(!o||i.navigator&&i.navigator.standalone)if(s&&s.resolve){var u=s.resolve(void 0);n=function(){u.then(l)}}else n=function(){r.call(i,l)};else{var d=!0,p=document.createTextNode("");new o(l).observe(p,{characterData:!0}),n=function(){p.data=d=!d}}return function(i){var r={fn:i,next:void 0};e&&(e.next=r),t||(t=r,n()),e=r}}},function(t,e,n){var i=n(13),r=n(2),o=n(47);t.exports=n(4)?Object.defineProperties:function(t,e){r(t);for(var n,a=o(e),s=a.length,c=0;s>c;)i.f(t,n=a[c++],e[n]);return t}},function(t,e,n){var i=n(46),r=n(22).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return i(t,r)}},function(t,e,n){var i=n(12),r=n(28),o=n(27)("IE_PROTO"),a=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=r(t),i(t,o)?t[o]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?a:null}},function(t,e){e.f={}.propertyIsEnumerable},function(t,e){t.exports=function(t){try{return{e:!1,v:t()}}catch(t){return{e:!0,v:t}}}},function(t,e,n){var i=n(6);t.exports=function(t,e,n){for(var r in e)i(t,r,e[r],n);return t}},function(t,e,n){var i=n(5),r=n(2),o=function(t,e){if(r(t),!i(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,e,i){try{(i=n(11)(Function.call,n(45).f(Object.prototype,"__proto__").set,2))(t,[]),e=!(t instanceof Array)}catch(t){e=!0}return function(t,n){return o(t,n),e?t.__proto__=n:i(t,n),t}}({},!1):void 0),check:o}},function(t,e,n){"use strict";var i=n(0),r=n(13),o=n(4),a=n(1)("species");t.exports=function(t){var e=i[t];o&&e&&!e[a]&&r.f(e,a,{configurable:!0,get:function(){return this}})}},function(t,e){t.exports="\t\n\v\f\r   ᠎              \u2028\u2029\ufeff"},function(t,e,n){var i=n(53),r=Math.max,o=Math.min;t.exports=function(t,e){return(t=i(t))<0?r(t+e,0):o(t,e)}},function(t,e,n){var i=n(0).navigator;t.exports=i&&i.userAgent||""},function(t,e,n){var i=n(38),r=n(1)("iterator"),o=n(15);t.exports=n(10).getIteratorMethod=function(t){if(null!=t)return t[r]||t["@@iterator"]||o[i(t)]}},function(t,e,n){"use strict";var i=n(3),r=n(20)(2);i(i.P+i.F*!n(17)([].filter,!0),"Array",{filter:function(t){return r(this,t,arguments[1])}})},function(t,e,n){"use strict";var i=n(3),r=n(37)(!1),o=[].indexOf,a=!!o&&1/[1].indexOf(1,-0)<0;i(i.P+i.F*(a||!n(17)(o)),"Array",{indexOf:function(t){return a?o.apply(this,arguments)||0:r(this,t,arguments[1])}})},function(t,e,n){var i=n(3);i(i.S,"Array",{isArray:n(42)})},function(t,e,n){"use strict";var i=n(3),r=n(20)(1);i(i.P+i.F*!n(17)([].map,!0),"Array",{map:function(t){return r(this,t,arguments[1])}})},function(t,e,n){"use strict";var i=n(3),r=n(62);i(i.P+i.F*!n(17)([].reduce,!0),"Array",{reduce:function(t){return r(this,t,arguments.length,arguments[1],!1)}})},function(t,e,n){var i=Date.prototype,r=i.toString,o=i.getTime;new Date(NaN)+""!="Invalid Date"&&n(6)(i,"toString",(function(){var t=o.call(this);return t==t?r.call(this):"Invalid Date"}))},function(t,e,n){n(4)&&"g"!=/./g.flags&&n(13).f(RegExp.prototype,"flags",{configurable:!0,get:n(39)})},function(t,e,n){n(65)("search",1,(function(t,e,n){return[function(n){"use strict";var i=t(this),r=null==n?void 0:n[e];return void 0!==r?r.call(n,i):new RegExp(n)[e](String(i))},n]}))},function(t,e,n){"use strict";n(94);var i=n(2),r=n(39),o=n(4),a=/./.toString,s=function(t){n(6)(RegExp.prototype,"toString",t,!0)};n(7)((function(){return"/a/b"!=a.call({source:"a",flags:"b"})}))?s((function(){var t=i(this);return"/".concat(t.source,"/","flags"in t?t.flags:!o&&t instanceof RegExp?r.call(t):void 0)})):"toString"!=a.name&&s((function(){return a.call(this)}))},function(t,e,n){"use strict";n(51)("trim",(function(t){return function(){return t(this,3)}}))},function(t,e,n){for(var i=n(34),r=n(47),o=n(6),a=n(0),s=n(8),c=n(15),l=n(1),u=l("iterator"),d=l("toStringTag"),p=c.Array,f={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},h=r(f),v=0;v<h.length;v++){var m,A=h[v],g=f[A],b=a[A],y=b&&b.prototype;if(y&&(y[u]||s(y,u,p),y[d]||s(y,d,A),c[A]=p,g))for(m in i)y[m]||o(y,m,i[m],!0)}},function(t,e){},function(t,e){t.exports=function(t,e,n,i,r,o){var a,s=t=t||{},c=typeof t.default;"object"!==c&&"function"!==c||(a=t,s=t.default);var l,u="function"==typeof s?s.options:s;if(e&&(u.render=e.render,u.staticRenderFns=e.staticRenderFns,u._compiled=!0),n&&(u.functional=!0),r&&(u._scopeId=r),o?(l=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),i&&i.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(o)},u._ssrRegister=l):i&&(l=i),l){var d=u.functional,p=d?u.render:u.beforeCreate;d?(u._injectStyles=l,u.render=function(t,e){return l.call(e),p(t,e)}):u.beforeCreate=p?[].concat(p,l):[l]}return{esModule:a,exports:s,options:u}}},function(t,e,n){"use strict";e.a={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"multiselect",class:{"multiselect--active":t.isOpen,"multiselect--disabled":t.disabled,"multiselect--above":t.isAbove},attrs:{tabindex:t.searchable?-1:t.tabindex},on:{focus:function(e){t.activate()},blur:function(e){!t.searchable&&t.deactivate()},keydown:[function(e){return"button"in e||!t._k(e.keyCode,"down",40,e.key,["Down","ArrowDown"])?e.target!==e.currentTarget?null:(e.preventDefault(),void t.pointerForward()):null},function(e){return"button"in e||!t._k(e.keyCode,"up",38,e.key,["Up","ArrowUp"])?e.target!==e.currentTarget?null:(e.preventDefault(),void t.pointerBackward()):null}],keypress:function(e){return"button"in e||!t._k(e.keyCode,"enter",13,e.key,"Enter")||!t._k(e.keyCode,"tab",9,e.key,"Tab")?(e.stopPropagation(),e.target!==e.currentTarget?null:void t.addPointerElement(e)):null},keyup:function(e){if(!("button"in e)&&t._k(e.keyCode,"esc",27,e.key,"Escape"))return null;t.deactivate()}}},[t._t("caret",[n("div",{staticClass:"multiselect__select",on:{mousedown:function(e){e.preventDefault(),e.stopPropagation(),t.toggle()}}})],{toggle:t.toggle}),t._v(" "),t._t("clear",null,{search:t.search}),t._v(" "),n("div",{ref:"tags",staticClass:"multiselect__tags"},[t._t("selection",[n("div",{directives:[{name:"show",rawName:"v-show",value:t.visibleValues.length>0,expression:"visibleValues.length > 0"}],staticClass:"multiselect__tags-wrap"},[t._l(t.visibleValues,(function(e,i){return[t._t("tag",[n("span",{key:i,staticClass:"multiselect__tag"},[n("span",{domProps:{textContent:t._s(t.getOptionLabel(e))}}),t._v(" "),n("i",{staticClass:"multiselect__tag-icon",attrs:{"aria-hidden":"true",tabindex:"1"},on:{keypress:function(n){if(!("button"in n)&&t._k(n.keyCode,"enter",13,n.key,"Enter"))return null;n.preventDefault(),t.removeElement(e)},mousedown:function(n){n.preventDefault(),t.removeElement(e)}}})])],{option:e,search:t.search,remove:t.removeElement})]}))],2),t._v(" "),t.internalValue&&t.internalValue.length>t.limit?[t._t("limit",[n("strong",{staticClass:"multiselect__strong",domProps:{textContent:t._s(t.limitText(t.internalValue.length-t.limit))}})])]:t._e()],{search:t.search,remove:t.removeElement,values:t.visibleValues,isOpen:t.isOpen}),t._v(" "),n("transition",{attrs:{name:"multiselect__loading"}},[t._t("loading",[n("div",{directives:[{name:"show",rawName:"v-show",value:t.loading,expression:"loading"}],staticClass:"multiselect__spinner"})])],2),t._v(" "),t.searchable?n("input",{ref:"search",staticClass:"multiselect__input",style:t.inputStyle,attrs:{name:t.name,id:t.id,type:"text",autocomplete:"nope",placeholder:t.placeholder,disabled:t.disabled,tabindex:t.tabindex},domProps:{value:t.search},on:{input:function(e){t.updateSearch(e.target.value)},focus:function(e){e.preventDefault(),t.activate()},blur:function(e){e.preventDefault(),t.deactivate()},keyup:function(e){if(!("button"in e)&&t._k(e.keyCode,"esc",27,e.key,"Escape"))return null;t.deactivate()},keydown:[function(e){if(!("button"in e)&&t._k(e.keyCode,"down",40,e.key,["Down","ArrowDown"]))return null;e.preventDefault(),t.pointerForward()},function(e){if(!("button"in e)&&t._k(e.keyCode,"up",38,e.key,["Up","ArrowUp"]))return null;e.preventDefault(),t.pointerBackward()},function(e){if(!("button"in e)&&t._k(e.keyCode,"delete",[8,46],e.key,["Backspace","Delete"]))return null;e.stopPropagation(),t.removeLastElement()}],keypress:function(e){return"button"in e||!t._k(e.keyCode,"enter",13,e.key,"Enter")?(e.preventDefault(),e.stopPropagation(),e.target!==e.currentTarget?null:void t.addPointerElement(e)):null}}}):t._e(),t._v(" "),t.isSingleLabelVisible?n("span",{staticClass:"multiselect__single",on:{mousedown:function(e){return e.preventDefault(),t.toggle(e)}}},[t._t("singleLabel",[[t._v(t._s(t.currentOptionLabel))]],{option:t.singleValue})],2):t._e(),t._v(" "),t.isPlaceholderVisible?n("span",{staticClass:"multiselect__placeholder",on:{mousedown:function(e){return e.preventDefault(),t.toggle(e)}}},[t._t("placeholder",[t._v("\n "+t._s(t.placeholder)+"\n ")])],2):t._e()],2),t._v(" "),n("transition",{attrs:{name:"multiselect"}},[n("div",{directives:[{name:"show",rawName:"v-show",value:t.isOpen,expression:"isOpen"}],ref:"list",staticClass:"multiselect__content-wrapper",style:{maxHeight:t.optimizedHeight+"px"},attrs:{tabindex:"-1"},on:{focus:t.activate,mousedown:function(t){t.preventDefault()}}},[n("ul",{staticClass:"multiselect__content",style:t.contentStyle},[t._t("beforeList"),t._v(" "),t.multiple&&t.max===t.internalValue.length?n("li",[n("span",{staticClass:"multiselect__option"},[t._t("maxElements",[t._v("Maximum of "+t._s(t.max)+" options selected. First remove a selected option to select another.")])],2)]):t._e(),t._v(" "),!t.max||t.internalValue.length<t.max?t._l(t.filteredOptions,(function(e,i){return n("li",{key:i,staticClass:"multiselect__element"},[e&&(e.$isLabel||e.$isDisabled)?t._e():n("span",{staticClass:"multiselect__option",class:t.optionHighlight(i,e),attrs:{"data-select":e&&e.isTag?t.tagPlaceholder:t.selectLabelText,"data-selected":t.selectedLabelText,"data-deselect":t.deselectLabelText},on:{click:function(n){n.stopPropagation(),t.select(e)},mouseenter:function(e){if(e.target!==e.currentTarget)return null;t.pointerSet(i)}}},[t._t("option",[n("span",[t._v(t._s(t.getOptionLabel(e)))])],{option:e,search:t.search})],2),t._v(" "),e&&(e.$isLabel||e.$isDisabled)?n("span",{staticClass:"multiselect__option",class:t.groupHighlight(i,e),attrs:{"data-select":t.groupSelect&&t.selectGroupLabelText,"data-deselect":t.groupSelect&&t.deselectGroupLabelText},on:{mouseenter:function(e){if(e.target!==e.currentTarget)return null;t.groupSelect&&t.pointerSet(i)},mousedown:function(n){n.preventDefault(),t.selectGroup(e)}}},[t._t("option",[n("span",[t._v(t._s(t.getOptionLabel(e)))])],{option:e,search:t.search})],2):t._e()])})):t._e(),t._v(" "),n("li",{directives:[{name:"show",rawName:"v-show",value:t.showNoResults&&0===t.filteredOptions.length&&t.search&&!t.loading,expression:"showNoResults && (filteredOptions.length === 0 && search && !loading)"}]},[n("span",{staticClass:"multiselect__option"},[t._t("noResult",[t._v("No elements found. Consider changing the search query.")],{search:t.search})],2)]),t._v(" "),n("li",{directives:[{name:"show",rawName:"v-show",value:t.showNoOptions&&0===t.options.length&&!t.search&&!t.loading,expression:"showNoOptions && (options.length === 0 && !search && !loading)"}]},[n("span",{staticClass:"multiselect__option"},[t._t("noOptions",[t._v("List is empty.")])],2)]),t._v(" "),t._t("afterList")],2)])])],2)},staticRenderFns:[]}}])},function(t,e,n){"use strict";n.r(e), +/** + * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +e.default={data:function(){return{isFullscreen:this._isFullscreen()}},beforeMount:function(){window.addEventListener("resize",this._onResize)},beforeDestroy:function(){window.removeEventListener("resize",this._onResize)},methods:{_onResize:function(){this.isFullscreen=this._isFullscreen()},_isFullscreen:function(){return window.outerHeight===screen.height}}}},function(t,e,n){"use strict";n.r(e), +/** + * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +e.default={data:function(){return{isMobile:this._isMobile()}},beforeMount:function(){window.addEventListener("resize",this._onResize)},beforeDestroy:function(){window.removeEventListener("resize",this._onResize)},methods:{_onResize:function(){this.isMobile=this._isMobile()},_isMobile:function(){return document.documentElement.clientWidth<768}}}},function(t,e,n){"use strict";n.r(e);var i=n(23),r=n(121),o=n.n(r),a=n(34),s=n.n(a),c={methods:{highlightText:function(t,e){return e.length?t.replace(new RegExp(e,"gi"),"<strong>".concat(e,"</strong>")):t}}},l={name:"AvatarSelectOption",components:{Avatar:n(64).default},mixins:[c],props:{desc:{type:String,default:""},displayName:{type:String,required:!0},icon:{type:String,default:""},user:{type:String,default:""},isNoUser:{type:Boolean,default:!1},search:{type:String,default:""}},computed:{highlightedDisplayName:function(){return this.highlightText(s()(this.displayName),this.search)},highlightedDesc:function(){return this.highlightText(s()(this.desc),this.search)}}},u=(n(175),n(0)),d=n(88),p=n.n(d),f=Object(u.a)(l,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("span",{staticClass:"option"},[n("Avatar",{staticClass:"option__avatar",attrs:{"display-name":t.displayName,user:t.user,"is-no-user":t.isNoUser,"disable-menu":!0,"disable-tooltip":!0}}),t._v(" "),n("div",{staticClass:"option__desc"},[n("span",{staticClass:"option__desc--lineone",domProps:{innerHTML:t._s(t.highlightedDisplayName)}}),t._v(" "),""!==t.desc?n("span",{staticClass:"option__desc--linetwo",domProps:{innerHTML:t._s(t.highlightedDesc)}}):t._e()]),t._v(" "),""!==t.icon?n("span",{staticClass:"icon option__icon",class:t.icon}):t._e()],1)}),[],!1,null,"30d8da34",null);"function"==typeof p.a&&p()(f);var h=f.exports,v={name:"EllipsisedOption",mixins:[c],props:{option:{type:[String,Object],required:!0,default:""},label:{type:String,default:""},search:{type:String,default:""}},computed:{name:function(){return this.$parent.getOptionLabel(this.option)},needsTruncate:function(){return this.name&&this.name.length>=10},part1:function(){if(this.needsTruncate){var t=Math.min(Math.floor(this.name.length/2),10);return this.name.substr(0,this.name.length-t)}return this.name},part2:function(){if(this.needsTruncate){var t=Math.min(Math.floor(this.name.length/2),10);return this.name.substr(this.name.length-t)}return""},highlightedPart1:function(){return this.highlightText(s()(this.part1),this.search)},highlightedPart2:function(){return this.highlightText(s()(this.part2),this.search)}}},m=(n(177),Object(u.a)(v,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"name-parts",attrs:{title:t.name}},[n("span",{staticClass:"name-parts__first",domProps:{innerHTML:t._s(t.highlightedPart1)}}),t._v(" "),t.part2?n("span",{staticClass:"name-parts__last",domProps:{innerHTML:t._s(t.highlightedPart2)}}):t._e()])}),[],!1,null,"c4325954",null).exports),A=n(6),g=n(122),b={name:"Multiselect",components:{AvatarSelectOption:h,EllipsisedOption:m,VueMultiselect:n.n(g).a},directives:{tooltip:A.default},inheritAttrs:!1,props:{value:{default:function(){return[]}},multiple:{type:Boolean,default:!1},limit:{type:Number,default:99999},label:{type:String,default:""},trackBy:{type:String,default:""},userSelect:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},autoLimit:{type:Boolean,default:!0},tagWidth:{type:Number,default:150,validator:function(t){return t>0}}},data:function(){return{elWidth:0}},computed:{maxOptions:function(){if(this.autoLimit&&this.elWidth>0&&0!==this.tagWidth){var t=Math.floor(this.elWidth/this.tagWidth);return t>0?t:1}return this.limit?this.limit:9999},limitString:function(){return"+".concat(this.value.length-this.maxOptions)}},watch:{value:function(){this.updateWidth()}},mounted:function(){this.updateWidth(),window.addEventListener("resize",this.updateWidth)},beforeDestroy:function(){window.removeEventListener("resize",this.updateWidth)},methods:{formatLimitTitle:function(t){var e=this;if(Array.isArray(t)&&t.length>0){var n=t;return"object"===o()(t[0])&&(n=t.map((function(t){return t[e.label]}))),n.slice(this.maxOptions).join(", ")}return""},updateWidth:function(){this.$el&&(this.elWidth=this.$el.querySelector(".multiselect__tags-wrap").offsetWidth-10)}}},y=n(89),_=n.n(y),w=Object(u.a)(b,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("VueMultiselect",t._g(t._b({class:[{"icon-loading-small":t.loading},t.multiple?"multiselect--multiple":"multiselect--single"],attrs:{value:t.value,limit:t.maxOptions,"close-on-select":!t.multiple,multiple:t.multiple,label:t.label,"track-by":t.trackBy,"tag-placeholder":"create"},on:{"update:value":function(e){return t.$emit("update:value",t.value)}},scopedSlots:t._u([{key:"option",fn:function(e){return[t.userSelect&&!t.$scopedSlots.option?n("AvatarSelectOption",t._b({attrs:{search:e.search}},"AvatarSelectOption",e.option,!1)):t.$scopedSlots.option?t._t("option",null,null,e):n("EllipsisedOption",{attrs:{option:e.option,search:e.search,label:t.label}})]}},t.multiple?{key:"limit",fn:function(){return[n("span",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.formatLimitTitle(t.value),expression:"formatLimitTitle(value)",modifiers:{auto:!0}}],staticClass:"multiselect__limit"},[t._v("\n\t\t\t"+t._s(t.limitString)+"\n\t\t")])]},proxy:!0}:null,t._l(t.$scopedSlots,(function(e,n){return{key:n,fn:function(e){return[t._t(n,null,null,e)]}}}))],null,!0)},"VueMultiselect",t.$attrs,!1),t.$listeners))}),[],!1,null,null,null);"function"==typeof _.a&&_()(w);var x=w.exports;n(179),n.d(e,"Multiselect",(function(){return x})), +/** + * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +Object(i.a)(x),e.default=x},function(e,n,i){"use strict";i.r(n);var r=i(23),o=i(40),a=i.n(o),s=i(30),c=i(65),l=i(6); +/** + * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */function u(t,e){var n,i,r,o=e;this.start=function(){r=!0,i=new Date,n=setTimeout(t,o)},this.pause=function(){r=!1,clearTimeout(n),o-=new Date-i},this.clear=function(){r=!1,clearTimeout(n),o=0},this.getTimeLeft=function(){return r&&(this.pause(),this.start()),o},this.getStateRunning=function(){return r},this.start()}var d={name:"Modal",components:{Actions:s.default,ActionButton:c.default},directives:{tooltip:l.default},props:{title:{type:String,default:""},hasPrevious:{type:Boolean,default:!1},hasNext:{type:Boolean,default:!1},outTransition:{type:Boolean,default:!1},enableSlideshow:{type:Boolean,default:!1},clearViewDelay:{type:Number,default:5e3},slideshowDelay:{type:Number,default:3e3},slideshowPaused:{type:Boolean,default:!1},enableSwipe:{type:Boolean,default:!0},spreadNavigation:{type:Boolean,default:!1},size:{type:String,default:"normal",validator:function(t){return-1!==["normal","large","full"].indexOf(t)}},canClose:{type:Boolean,default:!0}},data:function(){return{mc:null,showModal:!1,clearView:!1,clearViewTimeout:null,playing:!1,slideshowTimeout:null}},computed:{modalTransitionName:function(){return"modal-".concat(this.outTransition?"out":"in")},playPauseTitle:function(){return this.playing?t("core","Pause slideshow"):t("core","Start slideshow")}},watch:{slideshowPaused:function(t){this.slideshowTimeout&&(t?this.slideshowTimeout.pause():this.slideshowTimeout.start())}},beforeMount:function(){window.addEventListener("keydown",this.handleKeydown)},beforeDestroy:function(){window.removeEventListener("keydown",this.handleKeydown)},mounted:function(){var t=this;this.showModal=!0,this.handleMouseMove(),this.mc=new a.a(this.$refs.mask),this.mc.on("swipeleft swiperight",(function(e){t.handleSwipe(e)})),document.body.insertBefore(this.$el,document.body.lastChild)},unmounted:function(){this.mc.off("swipeleft swiperight"),this.mc.destroy()},methods:{previous:function(t){this.hasPrevious&&(t&&this.resetSlideshow(),this.$emit("previous",t))},next:function(t){this.hasNext&&(t&&this.resetSlideshow(),this.$emit("next",t))},close:function(t){var e=this;this.canClose&&(this.showModal=!1,setTimeout((function(){e.$emit("close",t)}),300))},handleKeydown:function(t){switch(t.keyCode){case 37:this.previous(t);break;case 13:case 39:this.next(t);break;case 27:this.close(t)}},handleSwipe:function(t){this.enableSwipe&&("swipeleft"===t.type?this.next(t):"swiperight"===t.type&&this.previous(t))},handleMouseMove:function(){var t=this;this.clearViewDelay>0&&(this.clearView=!1,clearTimeout(this.clearViewTimeout),this.clearViewTimeout=setTimeout((function(){t.clearView=!0}),this.clearViewDelay))},togglePlayPause:function(){this.playing=!this.playing,this.playing?this.handleSlideshow():this.clearSlideshowTimeout()},resetSlideshow:function(){this.playing=!this.playing,this.clearSlideshowTimeout(),this.$nextTick((function(){this.togglePlayPause()}))},handleSlideshow:function(){var t=this;this.playing=!0,this.hasNext?this.slideshowTimeout=new u((function(){t.next(),t.handleSlideshow()}),this.slideshowDelay):(this.playing=!1,this.clearSlideshowTimeout())},clearSlideshowTimeout:function(){this.slideshowTimeout&&this.slideshowTimeout.clear()}}},p=(i(173),i(0)),f=i(87),h=i.n(f),v=Object(p.a)(d,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("transition",{attrs:{name:"fade"}},[n("div",{ref:"mask",staticClass:"modal-mask",on:{click:t.handleMouseMove,mousemove:t.handleMouseMove,touchmove:t.handleMouseMove}},[n("transition",{attrs:{name:"fade-visibility"}},[n("div",{directives:[{name:"show",rawName:"v-show",value:!t.clearView,expression:"!clearView"}],staticClass:"modal-header",class:{invisible:t.clearView}},[""!==t.title.trim()?n("div",{staticClass:"modal-title"},[t._v("\n\t\t\t\t\t"+t._s(t.title)+"\n\t\t\t\t")]):t._e(),t._v(" "),n("div",{staticClass:"icons-menu"},[n("Actions",{staticClass:"header-actions"},[t._t("actions")],2),t._v(" "),t.hasNext&&t.enableSlideshow?n("button",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:t.playPauseTitle,expression:"playPauseTitle",modifiers:{auto:!0}}],staticClass:"play-pause",class:{"play-pause--paused":t.slideshowPaused},on:{click:t.togglePlayPause}},[n("div",{class:[t.playing?"icon-pause":"icon-play"]},[n("span",{staticClass:"hidden-visually"},[t._v("\n\t\t\t\t\t\t\t\t"+t._s(t.playPauseTitle)+"\n\t\t\t\t\t\t\t")])]),t._v(" "),t.playing?n("svg",{staticClass:"progress-ring",attrs:{height:"50",width:"50"}},[n("circle",{staticClass:"progress-ring__circle",attrs:{stroke:"white","stroke-width":"2",fill:"transparent",r:"15",cx:"25",cy:"25"}})]):t._e()]):t._e(),t._v(" "),t.canClose?n("Actions",{staticClass:"header-close"},[n("ActionButton",{attrs:{icon:"icon-close"},on:{click:t.close}},[t._v("\n\t\t\t\t\t\t\t"+t._s(t.t("core","Close"))+"\n\t\t\t\t\t\t")])],1):t._e()],1)])]),t._v(" "),n("transition",{attrs:{name:t.modalTransitionName}},[n("div",{directives:[{name:"show",rawName:"v-show",value:t.showModal,expression:"showModal"}],staticClass:"modal-wrapper",class:["modal-wrapper--"+t.size,t.spreadNavigation?"modal-wrapper--spread-navigation":""],on:{click:function(e){return e.target!==e.currentTarget?null:t.close(e)}}},[n("transition",{attrs:{name:"fade-visibility"}},[n("a",{directives:[{name:"show",rawName:"v-show",value:t.hasPrevious&&!t.clearView,expression:"hasPrevious && !clearView"}],staticClass:"prev",class:{invisible:t.clearView||!t.hasPrevious},on:{click:t.previous}},[n("div",{staticClass:"icon icon-previous"},[n("span",{staticClass:"hidden-visually"},[t._v("\n\t\t\t\t\t\t\t\t"+t._s(t.t("core","Previous"))+"\n\t\t\t\t\t\t\t")])])])]),t._v(" "),n("div",{staticClass:"modal-container"},[t._t("default")],2),t._v(" "),n("transition",{attrs:{name:"fade-visibility"}},[n("a",{directives:[{name:"show",rawName:"v-show",value:t.hasNext&&!t.clearView,expression:"hasNext && !clearView"}],staticClass:"next",class:{invisible:t.clearView||!t.hasNext},on:{click:t.next}},[n("div",{staticClass:"icon icon-next"},[n("span",{staticClass:"hidden-visually"},[t._v("\n\t\t\t\t\t\t\t\t"+t._s(t.t("core","Next"))+"\n\t\t\t\t\t\t\t")])])])])],1)])],1)])}),[],!1,null,"9c792ef2",null);"function"==typeof h.a&&h()(v);var m=v.exports;i.d(n,"Modal",(function(){return m})), +/** + * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +Object(r.a)(m),n.default=m},function(t,e,n){"use strict";n.r(e);var i=n(7),r=n(17),o={name:"ActionCheckbox",mixins:[i.a],props:{id:{type:String,default:function(){return"action-"+Object(r.a)()},validator:function(t){return""!==t.trim()}},checked:{type:Boolean,default:!1},value:{type:[String,Number],default:""},disabled:{type:Boolean,default:!1}},computed:{isFocusable:function(){return!this.disabled}},methods:{checkInput:function(t){this.$refs.label.click()},onChange:function(t){this.$emit("change",t),this.$refs.checkbox.checked?this.$emit("check",!0):this.$emit("uncheck",!0),this.$emit("update:checked",this.$refs.checkbox.checked)}}},a=(n(145),n(0)),s=n(83),c=n.n(s),l=Object(a.a)(o,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("li",{class:{"action--disabled":t.disabled}},[n("span",{staticClass:"action-checkbox"},[n("input",{ref:"checkbox",staticClass:"checkbox action-checkbox__checkbox",class:{focusable:t.isFocusable},attrs:{id:t.id,disabled:t.disabled,type:"checkbox"},domProps:{checked:t.checked,value:t.value},on:{keydown:function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.checkInput(e))},change:t.onChange}}),t._v(" "),n("label",{ref:"label",staticClass:"action-checkbox__label",attrs:{for:t.id}},[t._v(t._s(t.text))]),t._v(" "),t._e()],2)])}),[],!1,null,"f874e42c",null);"function"==typeof c.a&&c()(l);var u=l.exports;n.d(e,"ActionCheckbox",(function(){return u})), +/** + * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +e.default=u},function(t,e,n){"use strict";n.r(e);var i=n(7),r=n(17),o={name:"ActionInput",components:{DatetimePicker:n(66).default},mixins:[i.a],props:{id:{type:String,default:function(){return"action-"+Object(r.a)()},validator:function(t){return""!==t.trim()}},icon:{type:String,default:"",required:!0},type:{type:String,default:"text",validator:function(t){return["date","datetime-local","month","number","password","search","tel","text","time","url","week"].indexOf(t)>-1}},value:{type:String,default:""},disabled:{type:Boolean,default:!1}},computed:{isIconUrl:function(){try{return new URL(this.icon)}catch(t){return!1}},isDatePickerType:function(){switch(this.type){case"date":case"month":case"time":return this.type;case"datetime-local":return"datetime"}return!1},isFocusable:function(){return!this.disabled}},methods:{onInput:function(t){this.$emit("input",t),this.$emit("update:value",t.target?t.target.value:t)},onSubmit:function(t){if(t.preventDefault(),t.stopPropagation(),this.disabled)return!1;this.$emit("submit",t)},onChange:function(t){this.$emit("change",t)}}},a=(n(147),n(0)),s=n(84),c=n.n(s),l=Object(a.a)(o,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("li",{class:{"action--disabled":t.disabled}},[n("span",{staticClass:"action-input",class:{"action-input--picker":t.isDatePickerType,"action-input-picker--disabled":t.disabled}},[n("span",{staticClass:"action-input__icon",class:[t.isIconUrl?"action-input__icon--url":t.icon],style:{backgroundImage:t.isIconUrl?"url("+t.icon+")":null}}),t._v(" "),n("form",{ref:"form",staticClass:"action-input__form",attrs:{disabled:t.disabled},on:{submit:function(e){return e.preventDefault(),t.onSubmit(e)}}},[t.isDatePickerType?n("DatetimePicker",t._b({staticClass:"action-input__picker",attrs:{value:t.value,placeholder:t.text,disabled:t.disabled,type:t.isDatePickerType,"input-class":["mx-input",{focusable:t.isFocusable}]},on:{input:t.onInput,change:t.onChange}},"DatetimePicker",t.$attrs,!1)):[n("input",{staticClass:"action-input__submit",attrs:{id:t.id,type:"submit"}}),t._v(" "),n("input",t._b({staticClass:"action-input__input",class:{focusable:t.isFocusable},attrs:{type:t.type,placeholder:t.text,disabled:t.disabled},domProps:{value:t.value},on:{input:t.onInput,change:t.onChange}},"input",t.$attrs,!1)),t._v(" "),n("label",{directives:[{name:"show",rawName:"v-show",value:!t.disabled,expression:"!disabled"}],staticClass:"action-input__label",attrs:{for:t.id}})]],2)])])}),[],!1,null,"44d356e8",null);"function"==typeof c.a&&c()(l);var u=l.exports;n.d(e,"ActionInput",(function(){return u})), +/** + * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +e.default=u},function(t,e,n){"use strict";n.r(e);var i={name:"ActionLink",mixins:[n(14).a],props:{href:{type:String,default:"#",required:!0,validator:function(t){try{return new URL(t)}catch(e){return t.startsWith("#")||t.startsWith("/")}}},download:{type:String,default:""},target:{type:String,default:"_self",validator:function(t){return["_blank","_self","_parent","_top"].indexOf(t)>-1}}}},r=(n(149),n(0)),o=n(85),a=n.n(o),s=Object(r.a)(i,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("li",[n("a",{staticClass:"action-link focusable",attrs:{download:t.download,href:t.href,target:t.target,rel:"noreferrer noopener"},on:{click:t.onClick}},[n("span",{staticClass:"action-link__icon",class:[t.isIconUrl?"action-link__icon--url":t.icon],style:{backgroundImage:t.isIconUrl?"url("+t.icon+")":null}}),t._v(" "),t.title?n("p",[n("strong",{staticClass:"action-link__title"},[t._v("\n\t\t\t\t"+t._s(t.title)+"\n\t\t\t")]),t._v(" "),n("br"),t._v(" "),n("span",{staticClass:"action-link__longtext",domProps:{textContent:t._s(t.text)}})]):t.isLongText?n("p",{staticClass:"action-link__longtext",domProps:{textContent:t._s(t.text)}}):n("span",{staticClass:"action-link__text"},[t._v(t._s(t.text))]),t._v(" "),t._e()],2)])}),[],!1,null,"f9c0ebfe",null);"function"==typeof a.a&&a()(s);var c=s.exports;n.d(e,"ActionLink",(function(){return c})), +/** + * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +e.default=c},function(t,e,n){"use strict";n.r(e);var i={name:"ActionRouter",mixins:[n(14).a],props:{to:{type:[String,Object],default:"",required:!0},exact:{type:Boolean,default:!1}}},r=(n(151),n(0)),o=Object(r.a)(i,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("li",[n("router-link",{staticClass:"action-router focusable",attrs:{to:t.to,exact:t.exact,rel:"noreferrer noopener"}},[n("span",{staticClass:"action-router__icon",class:[t.isIconUrl?"action-router__icon--url":t.icon],style:{backgroundImage:t.isIconUrl?"url("+t.icon+")":null}}),t._v(" "),t.title?n("p",[n("strong",{staticClass:"action-router__title"},[t._v("\n\t\t\t\t"+t._s(t.title)+"\n\t\t\t")]),t._v(" "),n("br"),t._v(" "),n("span",{staticClass:"action-router__longtext",domProps:{textContent:t._s(t.text)}})]):t.isLongText?n("p",{staticClass:"action-router__longtext",domProps:{textContent:t._s(t.text)}}):n("span",{staticClass:"action-router__text"},[t._v(t._s(t.text))]),t._v(" "),t._e()],2)],1)}),[],!1,null,"3bf6846c",null).exports;n.d(e,"ActionRouter",(function(){return o})), +/** + * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +e.default=o},function(t,e,n){"use strict";n.r(e);var i={name:"ActionText",mixins:[n(14).a]},r=(n(153),n(0)),o=Object(r.a)(i,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("li",[n("span",{staticClass:"action-text"},[n("span",{staticClass:"action-text__icon",class:[t.isIconUrl?"action-text__icon--url":t.icon],style:{backgroundImage:t.isIconUrl?"url("+t.icon+")":null}}),t._v(" "),t.title?n("p",[n("strong",{staticClass:"action-text__title"},[t._v("\n\t\t\t\t"+t._s(t.title)+"\n\t\t\t")]),t._v(" "),n("br"),t._v(" "),n("span",{staticClass:"action-text__longtext",domProps:{textContent:t._s(t.text)}})]):t.isLongText?n("p",{staticClass:"action-text__longtext",domProps:{textContent:t._s(t.text)}}):n("span",{staticClass:"action-text__text"},[t._v(t._s(t.text))]),t._v(" "),t._e()],2)])}),[],!1,null,"b4603aaa",null).exports;n.d(e,"ActionText",(function(){return o})), +/** + * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +e.default=o},function(t,e,n){"use strict";n.r(e);var i=n(14),r=n(17),o={name:"ActionTextEditable",mixins:[i.a],props:{id:{type:String,default:function(){return"action-"+Object(r.a)()},validator:function(t){return""!==t.trim()}},disabled:{type:Boolean,default:!1},value:{type:String,default:""}},computed:{isFocusable:function(){return!this.disabled}},methods:{onInput:function(t){this.$emit("input",t),this.$emit("update:value",t.target.value)},onSubmit:function(t){if(t.preventDefault(),t.stopPropagation(),this.disabled)return!1;this.$emit("submit",t)}}},a=(n(155),n(0)),s=n(86),c=n.n(s),l=Object(a.a)(o,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("li",{class:{"action--disabled":t.disabled}},[n("span",{staticClass:"action-text-editable"},[n("span",{staticClass:"action-text-editable__icon",class:[t.isIconUrl?"action-text-editable__icon--url":t.icon],style:{backgroundImage:t.isIconUrl?"url("+t.icon+")":null}}),t._v(" "),n("form",{ref:"form",staticClass:"action-text-editable__form",attrs:{disabled:t.disabled},on:{submit:function(e){return e.preventDefault(),t.onSubmit(e)}}},[n("input",{staticClass:"action-text-editable__submit",attrs:{id:t.id,type:"submit"}}),t._v(" "),t.title?n("strong",{staticClass:"action-text__title"},[t._v("\n\t\t\t\t"+t._s(t.title)+"\n\t\t\t")]):t._e(),t._v(" "),n("textarea",t._b({class:["action-text-editable__textarea",{focusable:t.isFocusable}],attrs:{disabled:t.disabled},domProps:{value:t.value},on:{input:t.onInput}},"textarea",t.$attrs,!1)),t._v(" "),n("label",{directives:[{name:"show",rawName:"v-show",value:!t.disabled,expression:"!disabled"}],staticClass:"action-text-editable__label",attrs:{for:t.id}})])])])}),[],!1,null,"43b509b7",null);"function"==typeof c.a&&c()(l);var u=l.exports;n.d(e,"ActionTextEditable",(function(){return u})), +/** + * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +e.default=u},function(t,e,n){"use strict";n.r(e);var i=n(40),r=n.n(i),o={name:"AppContent",components:{AppNavigationToggle:n(82).default},data:function(){return{opened:!1}},mounted:function(){var t=this;this.mc=new r.a(this.$el,{cssProps:{userSelect:"text"}}),this.mc.on("swipeleft swiperight",(function(e){t.handleSwipe(e)}))},unmounted:function(){this.mc.off("swipeleft swiperight"),this.mc.destroy()},methods:{toggleNavigation:function(t){this.opened=t||!this.opened,this.opened?document.body.classList.add("nav-open"):document.body.classList.remove("nav-open")},handleSwipe:function(t){var e=t.srcEvent.pageX-t.deltaX,n=Math.abs(t.deltaX)>70;n&&e<40?this.toggleNavigation(!0):this.opened&&n&&e<340&&this.toggleNavigation(!1)}}},a=(n(157),n(0)),s=Object(a.a)(o,(function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"no-snapper",style:this.opened?"transform: translateX(300px)":"",attrs:{id:"app-content"}},[e("AppNavigationToggle",{attrs:{"aria-expanded":this.opened,"aria-controls":"app-navigation"},on:{click:this.toggleNavigation}}),this._v(" "),this._t("default")],2)}),[],!1,null,"0fe2f738",null).exports;n.d(e,"AppContent",(function(){return s})), +/* + * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +e.default=s},function(t,e,n){"use strict";n.r(e);var i=n(0),r=Object(i.a)({name:"AppContentDetails"},(function(){var t=this.$createElement;return(this._self._c||t)("div",{staticClass:"app-content-details"},[this._t("default")],2)}),[],!1,null,null,null).exports;n.d(e,"AppContentDetails",(function(){return r})), +/* + * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +e.default=r},function(t,e,n){"use strict";n.r(e);var i={name:"AppContentList",props:{selection:{type:Boolean,default:!1},showDetails:{type:Boolean,default:!1}}},r=n(0),o=Object(r.a)(i,(function(){var t=this.$createElement;return(this._self._c||t)("div",{staticClass:"app-content-list",class:{selection:this.selection,showdetails:this.showDetails}},[this._t("default")],2)}),[],!1,null,null,null).exports;n.d(e,"AppContentList",(function(){return o})), +/* + * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +e.default=o},function(t,e,n){"use strict";n.r(e);var i=(n(159),n(0)),r=Object(i.a)({name:"AppNavigation"},(function(){var t=this.$createElement;return(this._self._c||t)("div",{attrs:{id:"app-navigation"}},[this._t("default")],2)}),[],!1,null,null,null).exports;n.d(e,"AppNavigation",(function(){return r})), +/** + * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +e.default=r},function(t,e,n){"use strict";n.r(e);var i={name:"AppNavigationCaption",props:{text:{type:String,required:!0}}},r=(n(161),n(0)),o=Object(r.a)(i,(function(){var t=this.$createElement;return(this._self._c||t)("li",{staticClass:"app-navigation-caption--item"},[this._v("\n\t"+this._s(this.text)+"\n")])}),[],!1,null,"9639e4a4",null).exports;n.d(e,"AppNavigationCaption",(function(){return o})),e.default=o},function(t,e,n){"use strict";n.r(e);var i=n(24),r=n(13),o=n.n(r),a=n(67),s={name:"AppNavigationItem",components:{PopoverMenu:i.PopoverMenu,AppNavigationCounter:a.AppNavigationCounter},directives:{ClickOutside:o.a},props:{item:{type:Object,required:!0},open:{type:Boolean,default:!1},menuOpen:{type:Boolean,default:!1}},data:function(){return{opened:this.open,openedMenu:this.menuOpen}},computed:{collapsible:function(){return this.item.collapsible&&this.item.children&&this.item.children.length>0},simpleAction:function(){return this.collapsible&&!this.item.action?this.toggleCollapse:this.item.action}},watch:{open:function(t){this.opened=t},menuOpen:function(t){this.openedMenu=t}},mounted:function(){this.popupItem=this.$el},methods:{hideMenu:function(){this.openedMenu=!1,this.$emit("update:menuOpen",this.openedMenu)},toggleMenu:function(){this.openedMenu=!this.openedMenu,this.$emit("update:menuOpen",this.openedMenu)},toggleCollapse:function(){this.opened=!this.opened,this.$emit("update:open",this.opened)},callPreventStop:function(t,e){t&&(e.preventDefault(),e.stopPropagation(),t())},cancelEdit:function(t){Array.isArray(this.item.classes)&&(this.item.classes=this.item.classes.filter((function(t){return"editing"!==t}))),this.item.edit.reset(t)},navElement:function(t){if(t.router){var e=t.router.exact;return void 0===t.router.exact&&(e=!0),{is:"router-link",tag:"li",to:t.router,exact:e}}return{is:"li"}}}},c=n(0),l=Object(c.a)(s,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("nav-element",t._b({class:[{"icon-loading-small":t.item.loading,open:t.opened,collapsible:t.collapsible},t.item.classes],attrs:{id:t.item.id,title:t.item.title}},"nav-element",t.navElement(t.item),!1),[t.item.bullet?n("div",{staticClass:"app-navigation-entry-bullet",style:{backgroundColor:t.item.bullet}}):t._e(),t._v(" "),t.collapsible?n("button",{staticClass:"collapse",on:{click:function(e){return e.preventDefault(),e.stopPropagation(),t.toggleCollapse(e)}}}):t._e(),t._v(" "),n("a",{class:t.item.icon,attrs:{href:t.item.href?t.item.href:"#"},on:{click:function(e){return t.callPreventStop(t.simpleAction,e)}}},[t.item.iconUrl?n("img",{attrs:{alt:t.item.text,src:t.item.iconUrl}}):t._e(),t._v("\n\t\t"+t._s(t.item.text)+"\n\t")]),t._v(" "),t.item.utils?n("div",{staticClass:"app-navigation-entry-utils"},[n("ul",[t.item.utils.counter?n("AppNavigationCounter",{attrs:{highlighted:!0===t.item.utils.counter_highlighted}},[t._v("\n\t\t\t\t"+t._s(t.item.utils.counter)+"\n\t\t\t")]):t._e(),t._v(" "),t.item.utils.actions&&1===t.item.utils.actions.length?n("li",{staticClass:"app-navigation-entry-utils-menu-button"},[n("button",{class:t.item.utils.actions[0].icon,attrs:{title:t.item.utils.actions[0].text},on:{click:t.item.utils.actions[0].action}})]):t.item.utils.actions&&t.item.utils.actions.length>1?n("li",{staticClass:"app-navigation-entry-utils-menu-button"},[n("button",{directives:[{name:"click-outside",rawName:"v-click-outside",value:t.hideMenu,expression:"hideMenu"}],on:{click:t.toggleMenu}})]):t._e()],1)]):t._e(),t._v(" "),t.item.utils&&t.item.utils.actions&&t.item.utils.actions.length>1?n("div",{staticClass:"app-navigation-entry-menu",class:{open:t.openedMenu}},[n("PopoverMenu",{attrs:{menu:t.item.utils.actions}})],1):t._e(),t._v(" "),t.item.undo?n("div",{staticClass:"app-navigation-entry-deleted"},[n("div",{staticClass:"app-navigation-entry-deleted-description"},[t._v("\n\t\t\t"+t._s(t.item.undo.text)+"\n\t\t")]),t._v(" "),n("button",{staticClass:"app-navigation-entry-deleted-button icon-history",attrs:{title:t.t("settings","Undo")}})]):t._e(),t._v(" "),t.item.edit?n("div",{staticClass:"app-navigation-entry-edit"},[n("form",{on:{submit:function(e){return e.preventDefault(),e.stopPropagation(),t.item.edit.action(e)}}},[n("input",{attrs:{placeholder:t.item.edit.text,type:"text"}}),t._v(" "),n("input",{staticClass:"icon-confirm",attrs:{type:"submit",value:""}}),t._v(" "),n("input",{staticClass:"icon-close",attrs:{type:"submit",value:""},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.cancelEdit(e)}}})])]):t._e(),t._v(" "),t.item.children?n("ul",t._l(t.item.children,(function(t,e){return n("app-navigation-item",{key:e,attrs:{item:t}})})),1):t._e()])}),[],!1,null,null,null).exports;n.d(e,"AppNavigationItem",(function(){return l})), +/** + * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +e.default=l},function(t,e,n){"use strict";n.r(e);var i={props:{buttonId:{type:String,required:!1,default:""},buttonClass:{type:[String,Array,Object],required:!1,default:""},disabled:{type:Boolean,required:!1,default:!1},text:{type:String,required:!0}}},r=n(0),o=Object(r.a)(i,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"app-navigation-new"},[n("button",{class:t.buttonClass,attrs:{id:t.buttonId,type:"button",disabled:t.disabled},on:{click:function(e){return t.$emit("click")}}},[t._v("\n\t\t"+t._s(t.text)+"\n\t")])])}),[],!1,null,null,null).exports;n.d(e,"AppNavigationNew",(function(){return o})), +/* + * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @author 2018 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +e.default=o},function(e,n,i){"use strict";i.r(n);var r=i(13),o={directives:{ClickOutside:i.n(r).a},props:{title:{type:String,required:!1,default:t("core","Settings")}},data:function(){return{open:!1}},methods:{toggleMenu:function(){this.open=!this.open},closeMenu:function(){this.open=!1}}},a=(i(163),i(0)),s=Object(a.a)(o,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{directives:[{name:"click-outside",rawName:"v-click-outside",value:t.closeMenu,expression:"closeMenu"}],class:{open:t.open},attrs:{id:"app-settings"}},[n("div",{attrs:{id:"app-settings-header"}},[n("button",{staticClass:"settings-button",on:{click:t.toggleMenu}},[t._v("\n\t\t\t"+t._s(t.title)+"\n\t\t")])]),t._v(" "),n("transition",{attrs:{name:"slide-up"}},[n("div",{directives:[{name:"show",rawName:"v-show",value:t.open,expression:"open"}],attrs:{id:"app-settings-content"}},[t._t("default")],2)])],1)}),[],!1,null,"7f13ea43",null).exports;i.d(n,"AppNavigationSettings",(function(){return s})), +/* + * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @author 2018 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +n.default=s},function(t,e,n){"use strict";n.r(e);var i=(n(165),n(0)),r=Object(i.a)({name:"AppNavigationSpacer"},(function(){var t=this.$createElement;return(this._self._c||t)("li",{staticClass:"app-navigation-spacer"})}),[],!1,null,"18241e10",null).exports;n.d(e,"AppNavigationSpacer",(function(){return r})), +/** + * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +e.default=r},function(t,e,n){"use strict";n.r(e);var i=n(3),r=n.n(i),o=n(30),a=function(t){return t&&"string"==typeof t&&""!==t.trim()&&-1===t.indexOf(" ")},s={name:"AppSidebar",components:{Actions:o.default},props:{active:{type:String,default:""},title:{type:String,default:"",required:!0},subtitle:{type:String,default:""},background:{type:String,default:""},starred:{type:Boolean,default:null},starLoading:{type:Boolean,default:!1},compact:{type:Boolean,default:!1}},data:function(){return{tabs:[],activeTab:"",isStarred:this.starred}},computed:{canStar:function(){return null!==this.isStarred},hasFigure:function(){return this.$slots.header||this.background},hasMultipleTabs:function(){return this.tabs.length>1},hasFigureClickListener:function(){return this.$listeners["figure-click"]},currentTabIndex:function(){var t=this;return this.tabs.findIndex((function(e){return e.id===t.activeTab}))}},watch:{active:function(t){t!==this.activeTab&&this.updateActive()},starred:function(){this.isStarred=this.starred}},mounted:function(){this.updateTabs()},methods:{closeSidebar:function(t){this.$emit("close",t)},onFigureClick:function(t){this.$emit("figure-click",t)},setActive:function(t){var e=t.target.closest("a").dataset.id;this.activeTab=e,this.$emit("update:active",e)},focusPreviousTab:function(){this.currentTabIndex>0&&(this.activeTab=this.tabs[this.currentTabIndex-1].id,this.$emit("update:active",this.activeTab)),this.focusActiveTab()},focusNextTab:function(){this.currentTabIndex<this.tabs.length-1&&(this.activeTab=this.tabs[this.currentTabIndex+1].id,this.$emit("update:active",this.activeTab)),this.focusActiveTab()},focusFirstTab:function(){this.activeTab=this.tabs[0].id,this.$emit("update:active",this.activeTab),this.focusActiveTab()},focusLastTab:function(){this.activeTab=this.tabs[this.tabs.length-1].id,this.$emit("update:active",this.activeTab),this.focusActiveTab()},focusActiveTab:function(){this.$el.querySelector("#"+this.activeTab).focus()},focusActiveTabContent:function(){this.$el.querySelector("#tab-"+this.activeTab).focus()},updateActive:function(){var t=this;this.activeTab=this.active&&-1!==this.tabs.findIndex((function(e){return e.id===t.active}))?this.active:this.tabs.length>0?this.tabs[0].id:""},toggleStarred:function(){this.isStarred=!this.isStarred,this.$emit("update:starred",this.isStarred)},updateTabs:function(){var t=this.$children.reduce((function(t,e){return e.name&&"string"==typeof e.name?a(e.id)?a(e.icon)?(t.push(e),t):(r.a.util.warn("This tab is missing a valid icon: ".concat(e.icon),e),t):(r.a.util.warn("This tab is missing a valid id: ".concat(e.id),e),t):(r.a.util.warn("This tab is missing a valid name: ".concat(e.name),e),t)}),[]);this.tabs=t.sort((function(t,e){var n=t.order||0,i=e.order||0;return n===i?OC.Util.naturalSortCompare(t.name,e.name):n-i})),this.tabs.length>0&&this.updateActive()}}},c=(n(167),n(169),n(0)),l=Object(c.a)(s,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("transition",{attrs:{name:"slide-right"}},[n("aside",{attrs:{id:"app-sidebar"}},[n("header",{staticClass:"app-sidebar-header",class:{"app-sidebar-header--with-figure":t.hasFigure,"app-sidebar-header--compact":t.compact}},[n("a",{staticClass:"icon-close",attrs:{href:"#",title:t.t("core","close")},on:{click:t.closeSidebar}}),t._v(" "),t.hasFigure?n("div",{staticClass:"app-sidebar-header__figure",class:{"app-sidebar-header__figure--with-action":t.hasFigureClickListener},style:{backgroundImage:"url("+t.background+")"},on:{click:t.onFigureClick}},[t._t("header")],2):t._e(),t._v(" "),n("div",{staticClass:"app-sidebar-header__desc",class:{"app-sidebar-header__desc--with-star":t.canStar,"app-sidebar-header__desc--with-subtitle":t.subtitle}},[t.canStar?n("a",{staticClass:"app-sidebar-header__star",class:{"icon-starred":t.isStarred&&!t.starLoading,"icon-star":!t.isStarred&&!t.starLoading,"icon-loading-small":t.starLoading},on:{click:function(e){return e.preventDefault(),t.toggleStarred(e)}}}):t._e(),t._v(" "),n("h3",{staticClass:"app-sidebar-header__title"},[t._v("\n\t\t\t\t\t"+t._s(t.title)+"\n\t\t\t\t")]),t._v(" "),""!==t.subtitle.trim()?n("h4",{staticClass:"app-sidebar-header__subtitle"},[t._v("\n\t\t\t\t\t"+t._s(t.subtitle)+"\n\t\t\t\t")]):t._e(),t._v(" "),t.$slots["secondary-actions"]?n("Actions",{staticClass:"app-sidebar-header__menu"},[t._t("secondary-actions")],2):t._e()],1),t._v(" "),t.$slots["primary-actions"]?n("div",{staticClass:"app-sidebar-header__action"},[t._t("primary-actions")],2):t._e()]),t._v(" "),t.hasMultipleTabs?n("nav",{staticClass:"app-sidebar-tabs__nav",on:{keydown:[function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"left",37,e.key,["Left","ArrowLeft"])?null:"button"in e&&0!==e.button?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.focusPreviousTab(e))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"right",39,e.key,["Right","ArrowRight"])?null:"button"in e&&2!==e.button?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.focusNextTab(e))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"tab",9,e.key,"Tab")?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.focusActiveTabContent(e))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"page-up",void 0,e.key,void 0)?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.focusFirstTab(e))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"page-down",void 0,e.key,void 0)?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.focusLastTab(e))}]}},[n("ul",t._l(t.tabs,(function(e){return n("li",{key:e.id,staticClass:"app-sidebar-tabs__tab"},[n("a",{class:{active:t.activeTab===e.id},attrs:{id:e.id,"aria-controls":"tab-"+e.id,"aria-selected":t.activeTab===e.id,"data-id":e.id,href:"#tab-"+e.id,tabindex:t.activeTab===e.id?null:-1,role:"tab"},on:{click:function(e){return e.preventDefault(),t.setActive(e)}}},[n("span",{staticClass:"app-sidebar-tabs__tab-icon",class:e.icon}),t._v("\n\t\t\t\t\t\t"+t._s(e.name)+"\n\t\t\t\t\t")])])})),0)]):t._e(),t._v(" "),n("div",{staticClass:"app-sidebar-tabs__content",class:{"app-sidebar-tabs__content--multiple":t.hasMultipleTabs}},[t._t("default",null,{activeTab:t.activeTab})],2)])])}),[],!1,null,"625289d6",null).exports;n.d(e,"AppSidebar",(function(){return l})), +/* + * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +e.default=l},function(t,e,n){"use strict";n.r(e);var i={name:"AppSidebarTab",props:{name:{type:String,default:"",required:!0},icon:{type:String,default:"",required:!0},order:{type:Number,default:0,required:!1}},computed:{id:function(){return this.name.toLowerCase().replace(/ /g,"-")},isActive:function(){return this.$parent.activeTab===this.id}}},r=(n(171),n(0)),o=Object(r.a)(i,(function(){var t=this.$createElement;return(this._self._c||t)("section",{directives:[{name:"show",rawName:"v-show",value:this.isActive,expression:"isActive"}],attrs:{id:"tab-"+this.id,"aria-hidden":!this.isActive,"aria-labelledby":this.name,tabindex:"0",role:"tabpanel"}},[this._t("default")],2)}),[],!1,null,"3f1c0b76",null).exports;n.d(e,"AppSidebarTab",(function(){return o})), +/** + * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +e.default=o},function(t,e,n){"use strict";n.r(e);var i={props:{appName:{type:String,required:!0}}},r=n(0),o=Object(r.a)(i,(function(){var t=this.$createElement;return(this._self._c||t)("div",{class:"app-"+this.appName,attrs:{id:"content"}},[this._t("default")],2)}),[],!1,null,null,null).exports;n.d(e,"Content",(function(){return o})), +/* + * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @author 2018 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +e.default=o},function(t,e,n){"use strict";var i=n(47);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,"li.active[data-v-f874e42c]{box-shadow:inset 4px 0 var(--color-primary)}.action--disabled[data-v-f874e42c]{pointer-events:none;opacity:.5}.action--disabled[data-v-f874e42c]:hover,.action--disabled[data-v-f874e42c]:focus{cursor:default;opacity:.5}.action--disabled *[data-v-f874e42c]{opacity:1 !important}.action-checkbox[data-v-f874e42c]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;cursor:pointer;white-space:nowrap;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:normal;line-height:44px}.action-checkbox__checkbox[data-v-f874e42c]{position:absolute;top:auto;left:-10000px;overflow:hidden;width:1px;height:1px}.action-checkbox__checkbox:focus+.action-checkbox__label[data-v-f874e42c]{opacity:1}.action-checkbox__label[data-v-f874e42c]{display:flex;align-items:center;width:100%;padding:0 !important;padding-right:14px !important;opacity:.7}.action-checkbox__label[data-v-f874e42c]::before{margin:0 14px 0 !important}.action-checkbox--disabled[data-v-f874e42c],.action-checkbox--disabled .action-checkbox__label[data-v-f874e42c]{cursor:pointer}.action-checkbox:not(.action-checkbox--disabled):hover .action-checkbox__label[data-v-f874e42c],.action-checkbox:not(.action-checkbox--disabled):focus .action-checkbox__label[data-v-f874e42c]{opacity:1}\n",""])},function(t,e,n){"use strict";var i=n(48);n.n(i).a},function(t,e,n){e=t.exports=n(1)(!1);var i=n(8),r=i(n(9)),o=i(n(10)),a=i(n(11)),s=i(n(12));e.push([t.i,'@font-face{font-family:"iconfont-vue";src:url('+r+");src:url("+r+') format("embedded-opentype"),url('+o+') format("woff"),url('+a+') format("truetype"),url('+s+') format("svg")}.icon[data-v-44d356e8]{font-style:normal;font-weight:400}.icon.arrow-left-double[data-v-44d356e8]:before{font-family:"iconfont-vue";content:""}.icon.arrow-left[data-v-44d356e8]:before{font-family:"iconfont-vue";content:""}.icon.arrow-right-double[data-v-44d356e8]:before{font-family:"iconfont-vue";content:""}.icon.arrow-right[data-v-44d356e8]:before{font-family:"iconfont-vue";content:""}.icon.close[data-v-44d356e8]:before{font-family:"iconfont-vue";content:""}.icon.confirm-fade[data-v-44d356e8]:before{font-family:"iconfont-vue";content:""}.icon.confirm[data-v-44d356e8]:before{font-family:"iconfont-vue";content:""}.icon.menu[data-v-44d356e8]:before{font-family:"iconfont-vue";content:""}.icon.more[data-v-44d356e8]:before{font-family:"iconfont-vue";content:""}.icon.pause[data-v-44d356e8]:before{font-family:"iconfont-vue";content:""}.icon.play[data-v-44d356e8]:before{font-family:"iconfont-vue";content:""}button[data-v-44d356e8],input[data-v-44d356e8]:not([type=\'range\']),textarea[data-v-44d356e8]{margin:0;padding:7px 6px;cursor:text;color:var(--color-text-lighter);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);outline:none;background-color:var(--color-main-background);font-size:13px}button[data-v-44d356e8]:not(:disabled):not(.primary):hover,button[data-v-44d356e8]:not(:disabled):not(.primary):focus,button:not(:disabled):not(.primary).active[data-v-44d356e8],input[data-v-44d356e8]:not([type=\'range\']):not(:disabled):not(.primary):hover,input[data-v-44d356e8]:not([type=\'range\']):not(:disabled):not(.primary):focus,input:not([type=\'range\']):not(:disabled):not(.primary).active[data-v-44d356e8],textarea[data-v-44d356e8]:not(:disabled):not(.primary):hover,textarea[data-v-44d356e8]:not(:disabled):not(.primary):focus,textarea:not(:disabled):not(.primary).active[data-v-44d356e8]{border-color:var(--color-primary-element);outline:none}button[data-v-44d356e8]:not(:disabled):not(.primary):active,input[data-v-44d356e8]:not([type=\'range\']):not(:disabled):not(.primary):active,textarea[data-v-44d356e8]:not(:disabled):not(.primary):active{color:var(--color-text-light);outline:none;background-color:var(--color-main-background)}button[data-v-44d356e8]:disabled,input[data-v-44d356e8]:not([type=\'range\']):disabled,textarea[data-v-44d356e8]:disabled{cursor:default;opacity:.5;color:var(--color-text-maxcontrast);background-color:var(--color-background-dark)}button[data-v-44d356e8]:required,input[data-v-44d356e8]:not([type=\'range\']):required,textarea[data-v-44d356e8]:required{box-shadow:none}button[data-v-44d356e8]:invalid,input[data-v-44d356e8]:not([type=\'range\']):invalid,textarea[data-v-44d356e8]:invalid{border-color:var(--color-error);box-shadow:none !important}button.primary[data-v-44d356e8],input:not([type=\'range\']).primary[data-v-44d356e8],textarea.primary[data-v-44d356e8]{cursor:pointer;color:var(--color-primary-text);border-color:var(--color-primary-element);background-color:var(--color-primary-element)}button.primary[data-v-44d356e8]:not(:disabled):hover,button.primary[data-v-44d356e8]:not(:disabled):focus,button.primary[data-v-44d356e8]:not(:disabled):active,input:not([type=\'range\']).primary[data-v-44d356e8]:not(:disabled):hover,input:not([type=\'range\']).primary[data-v-44d356e8]:not(:disabled):focus,input:not([type=\'range\']).primary[data-v-44d356e8]:not(:disabled):active,textarea.primary[data-v-44d356e8]:not(:disabled):hover,textarea.primary[data-v-44d356e8]:not(:disabled):focus,textarea.primary[data-v-44d356e8]:not(:disabled):active{border-color:var(--color-primary-element-light);background-color:var(--color-primary-element-light)}button.primary[data-v-44d356e8]:not(:disabled):active,input:not([type=\'range\']).primary[data-v-44d356e8]:not(:disabled):active,textarea.primary[data-v-44d356e8]:not(:disabled):active{color:var(--color-primary-text-dark)}button.primary[data-v-44d356e8]:disabled,input:not([type=\'range\']).primary[data-v-44d356e8]:disabled,textarea.primary[data-v-44d356e8]:disabled{cursor:default;color:var(--color-primary-text-dark);background-color:var(--color-primary-element)}li.active[data-v-44d356e8]{box-shadow:inset 4px 0 var(--color-primary)}.action--disabled[data-v-44d356e8]{pointer-events:none;opacity:.5}.action--disabled[data-v-44d356e8]:hover,.action--disabled[data-v-44d356e8]:focus{cursor:default;opacity:.5}.action--disabled *[data-v-44d356e8]{opacity:1 !important}.action-input[data-v-44d356e8]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;cursor:pointer;white-space:nowrap;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:normal}.action-input[data-v-44d356e8]:not(.action-input--picker){opacity:.7}.action-input[data-v-44d356e8]:not(.action-input--picker):hover,.action-input[data-v-44d356e8]:not(.action-input--picker):focus{opacity:1}.action-input--picker .action-input__icon[data-v-44d356e8]{opacity:.7}.action-input--picker:hover .action-input__icon[data-v-44d356e8],.action-input--picker:focus .action-input__icon[data-v-44d356e8]{opacity:1}.action-input>span[data-v-44d356e8]{cursor:pointer;white-space:nowrap}.action-input__icon[data-v-44d356e8]{min-width:0;min-height:0;padding:22px 0 22px 44px;background-position:14px center;background-size:16px}.action-input__form[data-v-44d356e8]{display:flex;align-items:center;flex:1 1 auto;margin:4px 0;padding-right:14px}.action-input__submit[data-v-44d356e8]{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}.action-input__label[data-v-44d356e8]{display:flex;align-items:center;justify-content:center;width:36px;height:36px;margin:0 0 0 -8px;padding:7px 6px;cursor:pointer;opacity:1;color:var(--color-text-lighter);border:1px solid var(--color-border-dark);border-left-color:transparent;border-radius:0 var(--border-radius) var(--border-radius) 0;background-color:var(--color-main-background);background-clip:padding-box;font-size:16px}.action-input__label[data-v-44d356e8]:before{font-family:"iconfont-vue";font-style:normal;font-weight:400;content:""}.action-input__input[data-v-44d356e8]{flex:1 1 auto;min-width:132px;min-height:36px;max-height:36px;margin:0}.action-input__input[data-v-44d356e8]:disabled{cursor:default}.action-input__input:not(:active):not(:hover):not(:focus):invalid+.action-input__label[data-v-44d356e8]{border-color:var(--color-error);border-left-color:transparent}.action-input__input:not(:active):not(:hover):not(:focus):not(:disabled)+.action-input__label[data-v-44d356e8]:active,.action-input__input:not(:active):not(:hover):not(:focus):not(:disabled)+.action-input__label[data-v-44d356e8]:hover,.action-input__input:not(:active):not(:hover):not(:focus):not(:disabled)+.action-input__label[data-v-44d356e8]:focus{border-color:var(--color-primary-element);border-radius:var(--border-radius)}.action-input__input:active:not(:disabled)+.action-input__label[data-v-44d356e8],.action-input__input:hover:not(:disabled)+.action-input__label[data-v-44d356e8],.action-input__input:focus:not(:disabled)+.action-input__label[data-v-44d356e8]{z-index:2;border-color:var(--color-primary-element);border-left-color:transparent}.action-input__picker[data-v-44d356e8] .mx-input{margin:0}li:last-child>.action-input[data-v-44d356e8]{margin-bottom:10px}li:first-child>.action-input[data-v-44d356e8]{margin-top:10px}\n',""])},function(t,e,n){"use strict";var i=n(49);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,"li.active[data-v-f9c0ebfe]{box-shadow:inset 4px 0 var(--color-primary)}.action-link[data-v-f9c0ebfe]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;padding-right:14px;cursor:pointer;white-space:nowrap;opacity:.7;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:normal;line-height:44px}.action-link[data-v-f9c0ebfe]:hover,.action-link[data-v-f9c0ebfe]:focus{opacity:1}.action-link>span[data-v-f9c0ebfe]{cursor:pointer;white-space:nowrap}.action-link__icon[data-v-f9c0ebfe]{width:44px;height:44px;opacity:1;background-position:14px center;background-size:16px}.action-link p[data-v-f9c0ebfe]{width:150px;padding:7px 0;cursor:pointer;text-align:left;line-height:1.6em}.action-link__longtext[data-v-f9c0ebfe]{cursor:pointer;white-space:pre-wrap}.action-link__title[data-v-f9c0ebfe]{font-weight:bold}.action--disabled[data-v-f9c0ebfe]{pointer-events:none;opacity:.5}.action--disabled[data-v-f9c0ebfe]:hover,.action--disabled[data-v-f9c0ebfe]:focus{cursor:default;opacity:.5}.action--disabled *[data-v-f9c0ebfe]{opacity:1 !important}\n",""])},function(t,e,n){"use strict";var i=n(50);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,"li.active[data-v-3bf6846c]{box-shadow:inset 4px 0 var(--color-primary)}.action-router[data-v-3bf6846c]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;padding-right:14px;cursor:pointer;white-space:nowrap;opacity:.7;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:normal;line-height:44px}.action-router[data-v-3bf6846c]:hover,.action-router[data-v-3bf6846c]:focus{opacity:1}.action-router>span[data-v-3bf6846c]{cursor:pointer;white-space:nowrap}.action-router__icon[data-v-3bf6846c]{width:44px;height:44px;opacity:1;background-position:14px center;background-size:16px}.action-router p[data-v-3bf6846c]{width:150px;padding:7px 0;cursor:pointer;text-align:left;line-height:1.6em}.action-router__longtext[data-v-3bf6846c]{cursor:pointer;white-space:pre-wrap}.action-router__title[data-v-3bf6846c]{font-weight:bold}.action--disabled[data-v-3bf6846c]{pointer-events:none;opacity:.5}.action--disabled[data-v-3bf6846c]:hover,.action--disabled[data-v-3bf6846c]:focus{cursor:default;opacity:.5}.action--disabled *[data-v-3bf6846c]{opacity:1 !important}\n",""])},function(t,e,n){"use strict";var i=n(51);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,"li.active[data-v-b4603aaa]{box-shadow:inset 4px 0 var(--color-primary)}.action-text[data-v-b4603aaa]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;padding-right:14px;cursor:pointer;white-space:nowrap;opacity:.7;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:normal;line-height:44px}.action-text[data-v-b4603aaa]:hover,.action-text[data-v-b4603aaa]:focus{opacity:1}.action-text>span[data-v-b4603aaa]{cursor:pointer;white-space:nowrap}.action-text__icon[data-v-b4603aaa]{width:44px;height:44px;opacity:1;background-position:14px center;background-size:16px}.action-text p[data-v-b4603aaa]{width:150px;padding:7px 0;cursor:pointer;text-align:left;line-height:1.6em}.action-text__longtext[data-v-b4603aaa]{cursor:pointer;white-space:pre-wrap}.action-text__title[data-v-b4603aaa]{font-weight:bold}.action--disabled[data-v-b4603aaa]{pointer-events:none;opacity:.5}.action--disabled[data-v-b4603aaa]:hover,.action--disabled[data-v-b4603aaa]:focus{cursor:default;opacity:.5}.action--disabled *[data-v-b4603aaa]{opacity:1 !important}.action-text[data-v-b4603aaa],.action-text span[data-v-b4603aaa]{cursor:default}\n",""])},function(t,e,n){"use strict";var i=n(52);n.n(i).a},function(t,e,n){e=t.exports=n(1)(!1);var i=n(8),r=i(n(9)),o=i(n(10)),a=i(n(11)),s=i(n(12));e.push([t.i,'@font-face{font-family:"iconfont-vue";src:url('+r+");src:url("+r+') format("embedded-opentype"),url('+o+') format("woff"),url('+a+') format("truetype"),url('+s+') format("svg")}.icon[data-v-43b509b7]{font-style:normal;font-weight:400}.icon.arrow-left-double[data-v-43b509b7]:before{font-family:"iconfont-vue";content:""}.icon.arrow-left[data-v-43b509b7]:before{font-family:"iconfont-vue";content:""}.icon.arrow-right-double[data-v-43b509b7]:before{font-family:"iconfont-vue";content:""}.icon.arrow-right[data-v-43b509b7]:before{font-family:"iconfont-vue";content:""}.icon.close[data-v-43b509b7]:before{font-family:"iconfont-vue";content:""}.icon.confirm-fade[data-v-43b509b7]:before{font-family:"iconfont-vue";content:""}.icon.confirm[data-v-43b509b7]:before{font-family:"iconfont-vue";content:""}.icon.menu[data-v-43b509b7]:before{font-family:"iconfont-vue";content:""}.icon.more[data-v-43b509b7]:before{font-family:"iconfont-vue";content:""}.icon.pause[data-v-43b509b7]:before{font-family:"iconfont-vue";content:""}.icon.play[data-v-43b509b7]:before{font-family:"iconfont-vue";content:""}button[data-v-43b509b7],input[data-v-43b509b7]:not([type=\'range\']),textarea[data-v-43b509b7]{margin:0;padding:7px 6px;cursor:text;color:var(--color-text-lighter);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);outline:none;background-color:var(--color-main-background);font-size:13px}button[data-v-43b509b7]:not(:disabled):not(.primary):hover,button[data-v-43b509b7]:not(:disabled):not(.primary):focus,button:not(:disabled):not(.primary).active[data-v-43b509b7],input[data-v-43b509b7]:not([type=\'range\']):not(:disabled):not(.primary):hover,input[data-v-43b509b7]:not([type=\'range\']):not(:disabled):not(.primary):focus,input:not([type=\'range\']):not(:disabled):not(.primary).active[data-v-43b509b7],textarea[data-v-43b509b7]:not(:disabled):not(.primary):hover,textarea[data-v-43b509b7]:not(:disabled):not(.primary):focus,textarea:not(:disabled):not(.primary).active[data-v-43b509b7]{border-color:var(--color-primary-element);outline:none}button[data-v-43b509b7]:not(:disabled):not(.primary):active,input[data-v-43b509b7]:not([type=\'range\']):not(:disabled):not(.primary):active,textarea[data-v-43b509b7]:not(:disabled):not(.primary):active{color:var(--color-text-light);outline:none;background-color:var(--color-main-background)}button[data-v-43b509b7]:disabled,input[data-v-43b509b7]:not([type=\'range\']):disabled,textarea[data-v-43b509b7]:disabled{cursor:default;opacity:.5;color:var(--color-text-maxcontrast);background-color:var(--color-background-dark)}button[data-v-43b509b7]:required,input[data-v-43b509b7]:not([type=\'range\']):required,textarea[data-v-43b509b7]:required{box-shadow:none}button[data-v-43b509b7]:invalid,input[data-v-43b509b7]:not([type=\'range\']):invalid,textarea[data-v-43b509b7]:invalid{border-color:var(--color-error);box-shadow:none !important}button.primary[data-v-43b509b7],input:not([type=\'range\']).primary[data-v-43b509b7],textarea.primary[data-v-43b509b7]{cursor:pointer;color:var(--color-primary-text);border-color:var(--color-primary-element);background-color:var(--color-primary-element)}button.primary[data-v-43b509b7]:not(:disabled):hover,button.primary[data-v-43b509b7]:not(:disabled):focus,button.primary[data-v-43b509b7]:not(:disabled):active,input:not([type=\'range\']).primary[data-v-43b509b7]:not(:disabled):hover,input:not([type=\'range\']).primary[data-v-43b509b7]:not(:disabled):focus,input:not([type=\'range\']).primary[data-v-43b509b7]:not(:disabled):active,textarea.primary[data-v-43b509b7]:not(:disabled):hover,textarea.primary[data-v-43b509b7]:not(:disabled):focus,textarea.primary[data-v-43b509b7]:not(:disabled):active{border-color:var(--color-primary-element-light);background-color:var(--color-primary-element-light)}button.primary[data-v-43b509b7]:not(:disabled):active,input:not([type=\'range\']).primary[data-v-43b509b7]:not(:disabled):active,textarea.primary[data-v-43b509b7]:not(:disabled):active{color:var(--color-primary-text-dark)}button.primary[data-v-43b509b7]:disabled,input:not([type=\'range\']).primary[data-v-43b509b7]:disabled,textarea.primary[data-v-43b509b7]:disabled{cursor:default;color:var(--color-primary-text-dark);background-color:var(--color-primary-element)}li.active[data-v-43b509b7]{box-shadow:inset 4px 0 var(--color-primary)}.action--disabled[data-v-43b509b7]{pointer-events:none;opacity:.5}.action--disabled[data-v-43b509b7]:hover,.action--disabled[data-v-43b509b7]:focus{cursor:default;opacity:.5}.action--disabled *[data-v-43b509b7]{opacity:1 !important}.action-text-editable[data-v-43b509b7]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;cursor:pointer;white-space:nowrap;opacity:.7;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:normal;line-height:44px}.action-text-editable[data-v-43b509b7]:hover,.action-text-editable[data-v-43b509b7]:focus{opacity:1}.action-text-editable>span[data-v-43b509b7]{cursor:pointer;white-space:nowrap}.action-text-editable__icon[data-v-43b509b7]{min-width:0;min-height:0;padding:22px 0 22px 44px;background-position:14px center;background-size:16px}.action-text-editable__form[data-v-43b509b7]{display:flex;flex:1 1 auto;flex-direction:column;position:relative;margin:4px 0;padding-right:14px}.action-text-editable__submit[data-v-43b509b7]{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}.action-text-editable__label[data-v-43b509b7]{display:flex;align-items:center;justify-content:center;position:absolute;right:15px;bottom:1px;width:36px;height:36px;margin:0;padding:7px 6px;cursor:pointer;opacity:1;color:var(--color-text-lighter);border:0;border-radius:50%;background-color:var(--color-main-background);background-clip:padding-box;font-size:16px}.action-text-editable__label[data-v-43b509b7]:before{font-family:"iconfont-vue";font-style:normal;font-weight:400;content:""}.action-text-editable__textarea[data-v-43b509b7]{flex:1 1 auto;min-height:80px;max-height:124px;min-width:176px;width:100% !important;margin:0}.action-text-editable__textarea[data-v-43b509b7]:disabled{cursor:default}.action-text-editable__textarea:not(:active):not(:hover):not(:focus):invalid+.action-text-editable__label[data-v-43b509b7]{background-color:var(--color-error)}.action-text-editable__textarea:not(:active):not(:hover):not(:focus):not(:disabled)+.action-text-editable__label[data-v-43b509b7]:active,.action-text-editable__textarea:not(:active):not(:hover):not(:focus):not(:disabled)+.action-text-editable__label[data-v-43b509b7]:hover,.action-text-editable__textarea:not(:active):not(:hover):not(:focus):not(:disabled)+.action-text-editable__label[data-v-43b509b7]:focus{background-color:var(--color-primary-element);color:var(--color-primary-text)}.action-text-editable__textarea:active:not(:disabled)+.action-text-editable__label[data-v-43b509b7],.action-text-editable__textarea:hover:not(:disabled)+.action-text-editable__label[data-v-43b509b7],.action-text-editable__textarea:focus:not(:disabled)+.action-text-editable__label[data-v-43b509b7]{z-index:2;border-color:var(--color-primary-element);border-left-color:transparent}li:last-child>.action-text-editable[data-v-43b509b7]{margin-bottom:10px}li:first-child>.action-text-editable[data-v-43b509b7]{margin-top:10px}\n',""])},function(t,e,n){"use strict";var i=n(53);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,"#app-content[data-v-0fe2f738]{z-index:1000;background-color:var(--color-main-background);position:relative;flex-basis:100vw;min-height:100%;transition:transform var(--animation-quick)}\n",""])},function(t,e,n){"use strict";var i=n(54);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,"#app-navigation{will-change:transform;transition:transform var(--animation-quick)}@media only screen and (max-width: 768px){.nav-open #app-navigation{transform:translateX(0)}}\n",""])},function(t,e,n){"use strict";var i=n(55);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,".app-navigation-caption--item[data-v-9639e4a4]{font-weight:bold;color:var(--color-text-maxcontrast);line-height:44px;padding-left:44px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:0.7;box-shadow:none !important;pointer-events:none}.app-navigation-caption--item[data-v-9639e4a4]:not(:first-child){margin-top:22px}\n",""])},function(t,e,n){"use strict";var i=n(56);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,"#app-settings-content[data-v-7f13ea43]{display:block;padding:10px;background-color:var(--color-main-background);max-height:300px;overflow-y:auto;box-sizing:border-box}.slide-up-leave-active[data-v-7f13ea43],.slide-up-enter-active[data-v-7f13ea43]{transition-duration:var(--animation-slow);transition-property:max-height, padding;overflow-y:hidden !important}.slide-up-enter[data-v-7f13ea43],.slide-up-leave-to[data-v-7f13ea43]{max-height:0 !important;padding:0 10px !important}\n",""])},function(t,e,n){"use strict";var i=n(57);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,"\n.app-navigation-spacer[data-v-18241e10] {\n\theight: 22px;\n}\n",""])},function(t,e,n){"use strict";var i=n(58);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,"#app-sidebar[data-v-625289d6]{z-index:1500;height:calc(100vh - 50px);width:27vw;min-width:300px;max-width:500px;top:50px;right:0;display:flex;flex-shrink:0;flex-direction:column;position:-webkit-sticky;position:sticky;overflow-y:auto;overflow-x:hidden;background:var(--color-main-background);border-left:1px solid var(--color-border)}#app-sidebar .app-sidebar-header>.icon-close[data-v-625289d6]{position:absolute;width:44px;height:44px;top:0;right:0;z-index:100;opacity:.7;border-radius:22px}#app-sidebar .app-sidebar-header>.icon-close[data-v-625289d6]:hover,#app-sidebar .app-sidebar-header>.icon-close[data-v-625289d6]:active,#app-sidebar .app-sidebar-header>.icon-close[data-v-625289d6]:focus{opacity:1;background-color:rgba(127,127,127,0.25)}#app-sidebar .app-sidebar-header__figure[data-v-625289d6]{max-height:250px;height:250px;width:100%;background-size:contain;background-position:center;background-repeat:no-repeat}#app-sidebar .app-sidebar-header__figure--with-action[data-v-625289d6]{cursor:pointer}#app-sidebar .app-sidebar-header__desc[data-v-625289d6]{position:relative;padding:18px 88px 18px 9px;display:flex;height:23px;flex-direction:column;justify-content:center;box-sizing:content-box}#app-sidebar .app-sidebar-header__desc--with-star[data-v-625289d6]{padding-left:44px}#app-sidebar .app-sidebar-header__desc--with-subtitle[data-v-625289d6]{justify-content:space-between;height:46px}#app-sidebar .app-sidebar-header__desc h3[data-v-625289d6],#app-sidebar .app-sidebar-header__desc h4[data-v-625289d6]{width:100%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;margin:0}#app-sidebar .app-sidebar-header__desc h3[data-v-625289d6]{font-size:16px;padding:0}#app-sidebar .app-sidebar-header__desc h4[data-v-625289d6]{font-size:14px;padding:0;opacity:.7}#app-sidebar .app-sidebar-header__desc .app-sidebar-header__star[data-v-625289d6]{display:block;width:44px;height:44px;padding:14px;position:absolute;top:6px;left:0}#app-sidebar .app-sidebar-header__desc .app-sidebar-header__menu[data-v-625289d6]{position:absolute;right:22px;top:50%;margin-top:-22px;background-color:rgba(127,127,127,0.25);border-radius:22px}#app-sidebar .app-sidebar-header__action[data-v-625289d6]{display:flex;margin:10px;max-height:50px;align-items:center}#app-sidebar .app-sidebar-header--compact[data-v-625289d6]{padding-left:40px}#app-sidebar .app-sidebar-header--compact .app-sidebar-header__figure[data-v-625289d6]{height:64px;width:64px;margin:9px;border-radius:3px;position:absolute;left:0;top:0;z-index:2}#app-sidebar .app-sidebar-header--compact .app-sidebar-header__desc[data-v-625289d6]{padding-left:44px;height:46px}#app-sidebar .app-sidebar-header--compact .app-sidebar-header__desc .app-sidebar-header__star[data-v-625289d6]{margin-top:-9px;z-index:3}#app-sidebar .app-sidebar-header--compact .app-sidebar-header__desc .app-sidebar-header__menu[data-v-625289d6]{right:44px;top:0;margin:0;background-color:transparent}#app-sidebar .app-sidebar-tabs__nav[data-v-625289d6]{margin-top:10px}#app-sidebar .app-sidebar-tabs__nav ul[data-v-625289d6]{display:flex;justify-content:stretch}#app-sidebar .app-sidebar-tabs__tab[data-v-625289d6]{display:block;text-align:center;flex:1 1}#app-sidebar .app-sidebar-tabs__tab a[data-v-625289d6]{display:block;padding-top:25px;padding-bottom:5px;position:relative;border-bottom:1px solid var(--color-border);text-align:center;opacity:.7;color:var(--color-main-text);transition:color var(--animation-quick),opacity var(--animation-quick),border-color var(--animation-quick)}#app-sidebar .app-sidebar-tabs__tab a[data-v-625289d6]:hover,#app-sidebar .app-sidebar-tabs__tab a[data-v-625289d6]:focus,#app-sidebar .app-sidebar-tabs__tab a[data-v-625289d6]:active,#app-sidebar .app-sidebar-tabs__tab a.active[data-v-625289d6]{opacity:1}#app-sidebar .app-sidebar-tabs__tab a:hover .app-sidebar-tabs__tab-icon[data-v-625289d6],#app-sidebar .app-sidebar-tabs__tab a:focus .app-sidebar-tabs__tab-icon[data-v-625289d6],#app-sidebar .app-sidebar-tabs__tab a:active .app-sidebar-tabs__tab-icon[data-v-625289d6],#app-sidebar .app-sidebar-tabs__tab a.active .app-sidebar-tabs__tab-icon[data-v-625289d6]{opacity:1}#app-sidebar .app-sidebar-tabs__tab a[data-v-625289d6]:not(.active):hover,#app-sidebar .app-sidebar-tabs__tab a[data-v-625289d6]:not(.active):focus{box-shadow:inset 0 -1px 0 var(--color-background-darker);border-bottom-color:var(--color-background-darker)}#app-sidebar .app-sidebar-tabs__tab a.active[data-v-625289d6]{font-weight:bold;color:var(--color-text-light);border-bottom-color:var(--color-text-light);box-shadow:inset 0 -1px 0 var(--color-text-light)}#app-sidebar .app-sidebar-tabs__tab a[data-v-625289d6]:focus{border-bottom-color:var(--color-primary-element);box-shadow:inset 0 -1px 0 var(--color-primary-element)}#app-sidebar .app-sidebar-tabs__tab-icon[data-v-625289d6]{height:25px;width:100%;position:absolute;top:0;left:0;opacity:.7;background-position:center 8px;background-size:16px;transition:opacity var(--animation-quick)}#app-sidebar .app-sidebar-tabs__content[data-v-625289d6]{position:relative;flex:1 1 100%}#app-sidebar .app-sidebar-tabs__content--multiple[data-v-625289d6]>:not(section){display:none}.slide-right-leave-active[data-v-625289d6],.slide-right-enter-active[data-v-625289d6]{transition-duration:var(--animation-quick);transition-property:max-width, min-width}.slide-right-enter-to[data-v-625289d6],.slide-right-leave[data-v-625289d6]{min-width:300px;max-width:500px}.slide-right-enter[data-v-625289d6],.slide-right-leave-to[data-v-625289d6]{min-width:0 !important;max-width:0 !important}.fade-leave-active[data-v-625289d6],.fade-enter-active[data-v-625289d6]{transition-duration:var(--animation-quick);transition-property:opacity;position:absolute;top:0;left:0;width:100%;opacity:1}.fade-enter[data-v-625289d6],.fade-leave-to[data-v-625289d6]{opacity:0}\n",""])},function(t,e,n){"use strict";var i=n(59);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,".app-sidebar-header__action button,.app-sidebar-header__action .button,.app-sidebar-header__action input[type='button'],.app-sidebar-header__action input[type='submit'],.app-sidebar-header__action input[type='reset']{padding:6px 22px}\n",""])},function(t,e,n){"use strict";var i=n(60);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,"section[data-v-3f1c0b76]{padding:10px;min-height:100%}section[data-v-3f1c0b76]:focus{border-color:var(--color-primary);box-shadow:0 0 0.2em var(--color-primary);outline:0}\n",""])},function(t,e,n){"use strict";var i=n(61);n.n(i).a},function(t,e,n){e=t.exports=n(1)(!1);var i=n(8),r=i(n(9)),o=i(n(10)),a=i(n(11)),s=i(n(12));e.push([t.i,'@font-face{font-family:"iconfont-vue";src:url('+r+");src:url("+r+') format("embedded-opentype"),url('+o+') format("woff"),url('+a+') format("truetype"),url('+s+') format("svg")}.icon[data-v-9c792ef2]{font-style:normal;font-weight:400}.icon.arrow-left-double[data-v-9c792ef2]:before{font-family:"iconfont-vue";content:""}.icon.arrow-left[data-v-9c792ef2]:before{font-family:"iconfont-vue";content:""}.icon.arrow-right-double[data-v-9c792ef2]:before{font-family:"iconfont-vue";content:""}.icon.arrow-right[data-v-9c792ef2]:before{font-family:"iconfont-vue";content:""}.icon.close[data-v-9c792ef2]:before{font-family:"iconfont-vue";content:""}.icon.confirm-fade[data-v-9c792ef2]:before{font-family:"iconfont-vue";content:""}.icon.confirm[data-v-9c792ef2]:before{font-family:"iconfont-vue";content:""}.icon.menu[data-v-9c792ef2]:before{font-family:"iconfont-vue";content:""}.icon.more[data-v-9c792ef2]:before{font-family:"iconfont-vue";content:""}.icon.pause[data-v-9c792ef2]:before{font-family:"iconfont-vue";content:""}.icon.play[data-v-9c792ef2]:before{font-family:"iconfont-vue";content:""}.modal-mask[data-v-9c792ef2]{position:fixed;z-index:9998;top:0;left:0;display:block;width:100%;height:100%;background-color:rgba(0,0,0,0.92)}.modal-header[data-v-9c792ef2]{position:absolute;z-index:10001;top:0;right:0;left:0;display:flex !important;align-items:center;justify-content:center;width:100%;height:50px;transition:opacity 250ms, visibility 250ms}.modal-header.invisible[style*=\'display:none\'][data-v-9c792ef2],.modal-header.invisible[style*=\'display: none\'][data-v-9c792ef2]{visibility:hidden}.modal-header .modal-title[data-v-9c792ef2]{overflow-x:hidden;box-sizing:border-box;max-width:100%;padding:0 88px;transition:padding ease 100ms;white-space:nowrap;text-overflow:ellipsis;color:#fff;font-size:14px}.modal-header .icons-menu[data-v-9c792ef2]{position:absolute;right:0;display:flex;align-items:center;justify-content:flex-end}.modal-header .icons-menu .icon-close[data-v-9c792ef2]{box-sizing:border-box;margin:3px;padding:10px 11px;color:#fff;background-image:none;font-size:23px}.modal-header .icons-menu .icon-close[data-v-9c792ef2]:before{font-family:"iconfont-vue";font-style:normal;font-weight:400;content:""}.modal-header .icons-menu .play-pause[data-v-9c792ef2]{position:relative;width:50px;height:50px;margin:0;padding:0;cursor:pointer;color:white;border:none;background-color:transparent;font-size:22px}.modal-header .icons-menu .play-pause:hover .icon-play[data-v-9c792ef2],.modal-header .icons-menu .play-pause:hover .icon-pause[data-v-9c792ef2],.modal-header .icons-menu .play-pause:focus .icon-play[data-v-9c792ef2],.modal-header .icons-menu .play-pause:focus .icon-pause[data-v-9c792ef2]{opacity:1;border-radius:22px;background-color:rgba(127,127,127,0.25)}.modal-header .icons-menu .play-pause .icon-play[data-v-9c792ef2],.modal-header .icons-menu .play-pause .icon-pause[data-v-9c792ef2]{box-sizing:border-box;width:44px;height:44px;margin:3px;opacity:.7;background-image:none;cursor:pointer}.modal-header .icons-menu .play-pause .icon-play[data-v-9c792ef2]{padding:11px 13px}.modal-header .icons-menu .play-pause .icon-play[data-v-9c792ef2]:before{font-family:"iconfont-vue";font-style:normal;font-weight:400;content:""}.modal-header .icons-menu .play-pause .icon-pause[data-v-9c792ef2]{padding:12px;font-size:19.5px}.modal-header .icons-menu .play-pause .icon-pause[data-v-9c792ef2]:before{font-family:"iconfont-vue";font-style:normal;font-weight:400;content:""}.modal-header .icons-menu .header-actions[data-v-9c792ef2]{margin:3px;color:white}.modal-header .icons-menu .action-item--single[data-v-9c792ef2]{box-sizing:border-box;width:44px;height:44px;cursor:pointer;background-position:center;background-size:22px}.modal-header .icons-menu[data-v-9c792ef2] .action-item__menutoggle{padding:13px 11px;color:#fff;font-size:22px}.modal-wrapper[data-v-9c792ef2]{display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:100%;height:100%}.modal-wrapper .prev[data-v-9c792ef2],.modal-wrapper .next[data-v-9c792ef2]{z-index:10000;display:flex !important;align-items:center;justify-content:center;width:15%;min-width:60px;height:100%;transition:opacity 250ms, visibility 250ms}.modal-wrapper .prev.invisible[style*=\'display:none\'][data-v-9c792ef2],.modal-wrapper .prev.invisible[style*=\'display: none\'][data-v-9c792ef2],.modal-wrapper .next.invisible[style*=\'display:none\'][data-v-9c792ef2],.modal-wrapper .next.invisible[style*=\'display: none\'][data-v-9c792ef2]{visibility:hidden}.modal-wrapper .icon-next[data-v-9c792ef2],.modal-wrapper .icon-previous[data-v-9c792ef2]{box-sizing:border-box;width:44px;height:44px;padding:12px 11px;color:white;border-radius:22px;background-image:none;font-size:24px}.modal-wrapper .icon-previous[data-v-9c792ef2]:before{font-family:"iconfont-vue";font-style:normal;font-weight:400;content:""}.modal-wrapper .icon-next[data-v-9c792ef2]:before{font-family:"iconfont-vue";font-style:normal;font-weight:400;content:""}.modal-wrapper .modal-container[data-v-9c792ef2]{display:block;overflow:hidden;padding:0;transition:transform 300ms ease;border-radius:var(--border-radius-large);background-color:var(--color-main-background);box-shadow:0 2px 8px rgba(0,0,0,0.33)}.modal-wrapper:not(.modal-wrapper--large):not(.modal-wrapper--full) .modal-container[data-v-9c792ef2]{max-width:900px;max-height:80%}.modal-wrapper--full .modal-container[data-v-9c792ef2]{max-width:100%;max-height:100%;border-radius:0}.modal-wrapper--full .prev[data-v-9c792ef2],.modal-wrapper--full .next[data-v-9c792ef2],.modal-wrapper--spread-navigation .prev[data-v-9c792ef2],.modal-wrapper--spread-navigation .next[data-v-9c792ef2]{position:absolute;width:10%}.modal-wrapper--full .prev[data-v-9c792ef2],.modal-wrapper--spread-navigation .prev[data-v-9c792ef2]{left:0}.modal-wrapper--full .next[data-v-9c792ef2],.modal-wrapper--spread-navigation .next[data-v-9c792ef2]{right:0}.modal-wrapper--large .modal-container[data-v-9c792ef2]{max-width:70%;max-height:90%}.modal-wrapper--large .prev[data-v-9c792ef2],.modal-wrapper--large .next[data-v-9c792ef2]{width:10%}.fade-enter-active[data-v-9c792ef2],.fade-leave-active[data-v-9c792ef2]{transition:opacity 250ms}.fade-enter[data-v-9c792ef2],.fade-leave-to[data-v-9c792ef2]{opacity:0}.fade-visibility-enter[data-v-9c792ef2],.fade-visibility-leave-to[data-v-9c792ef2]{visibility:hidden;opacity:0}.modal-in-enter-active[data-v-9c792ef2],.modal-in-leave-active[data-v-9c792ef2],.modal-out-enter-active[data-v-9c792ef2],.modal-out-leave-active[data-v-9c792ef2]{transition:opacity 250ms}.modal-in-enter[data-v-9c792ef2],.modal-in-leave-to[data-v-9c792ef2],.modal-out-enter[data-v-9c792ef2],.modal-out-leave-to[data-v-9c792ef2]{opacity:0}.modal-in-enter .modal-container[data-v-9c792ef2],.modal-in-leave-to .modal-container[data-v-9c792ef2]{transform:scale(0.9)}.modal-out-enter .modal-container[data-v-9c792ef2],.modal-out-leave-to .modal-container[data-v-9c792ef2]{transform:scale(1.1)}.modal-mask .play-pause .progress-ring[data-v-9c792ef2]{position:absolute;top:0;left:0;transform:rotate(-90deg)}.modal-mask .play-pause .progress-ring .progress-ring__circle[data-v-9c792ef2]{transition:100ms stroke-dashoffset;transform-origin:50% 50%;animation:progressring-data-v-9c792ef2 linear 3s infinite;stroke-linecap:round;stroke-dashoffset:94.24778;stroke-dasharray:94.24778}.modal-mask .play-pause--paused .icon-pause[data-v-9c792ef2]{animation:breath-data-v-9c792ef2 2s cubic-bezier(0.4, 0, 0.2, 1) infinite}.modal-mask .play-pause--paused .progress-ring__circle[data-v-9c792ef2]{animation-play-state:paused !important}@keyframes progressring-data-v-9c792ef2{from{stroke-dashoffset:94.24778}to{stroke-dashoffset:0}}@keyframes breath-data-v-9c792ef2{0%{opacity:1}50%{opacity:0}100%{opacity:1}}\n',""])},function(t,e,n){"use strict";var i=n(62);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,".option[data-v-30d8da34]{display:flex;align-items:center;width:100%;height:32px}.option__avatar[data-v-30d8da34]{flex:0 0 32px;width:32px;height:32px;margin-right:6px}.option__desc[data-v-30d8da34]{display:flex;flex:1 1;flex-direction:column;justify-content:center;min-width:0}.option__desc--lineone[data-v-30d8da34]{color:var(--color-text-light)}.option__desc--linetwo[data-v-30d8da34]{opacity:.7}.option__desc--lineone[data-v-30d8da34],.option__desc--linetwo[data-v-30d8da34]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.option__desc--lineone strong[data-v-30d8da34],.option__desc--linetwo strong[data-v-30d8da34]{font-weight:bold}.option__icon[data-v-30d8da34]{flex:0 0 44px;width:44px;height:44px;margin:-6px;opacity:.5;background-position:center;background-size:16px}\n",""])},function(t,e,n){"use strict";var i=n(63);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,".name-parts[data-v-c4325954]{display:flex;max-width:100%}.name-parts__first[data-v-c4325954]{overflow:hidden;text-overflow:ellipsis}.name-parts__first[data-v-c4325954],.name-parts__last[data-v-c4325954]{white-space:pre}.name-parts__first strong[data-v-c4325954],.name-parts__last strong[data-v-c4325954]{font-weight:bold}\n",""])},function(t,e,n){var i=n(180);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals),(0,n(2).default)("b5985a26",i,!0,{})},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,".multiselect[data-v-6673a70]{margin:0;padding:0 !important;display:inline-block;min-width:160px;position:relative;background-color:var(--color-main-background)}.multiselect[data-v-6673a70].multiselect--active input.multiselect__input{opacity:1 !important;cursor:text !important;border-radius:var(--border-radius) var(--border-radius) 0 0}.multiselect[data-v-6673a70].multiselect--active .multiselect__limit{display:none}.multiselect[data-v-6673a70].multiselect--active.multiselect--above input.multiselect__input{border-radius:0 0 var(--border-radius) var(--border-radius)}.multiselect[data-v-6673a70].multiselect--disabled,.multiselect[data-v-6673a70].multiselect--disabled .multiselect__single{background-color:var(--color-background-dark) !important}.multiselect[data-v-6673a70].icon-loading-small::after{left:100%;margin-left:-24px}.multiselect[data-v-6673a70] .multiselect__tags{display:flex;flex-wrap:nowrap;overflow:hidden;border:1px solid var(--color-border-dark);cursor:pointer;position:relative;border-radius:3px;height:34px}.multiselect[data-v-6673a70] .multiselect__tags .multiselect__tags-wrap{align-items:center;display:inline-flex;overflow:hidden;max-width:100%;position:relative;padding:3px 5px;flex-grow:1}.multiselect[data-v-6673a70] .multiselect__tags .multiselect__tags-wrap:empty ~ input.multiselect__input{opacity:1 !important}.multiselect[data-v-6673a70] .multiselect__tags .multiselect__tags-wrap:empty ~ input.multiselect__input+span:not(.multiselect__single){display:none}.multiselect[data-v-6673a70] .multiselect__tags .multiselect__tags-wrap .multiselect__tag{flex:1 0 0;line-height:20px;padding:1px 5px;background-image:none;color:var(--color-text-lighter);border:1px solid var(--color-border-dark);display:inline-flex;align-items:center;border-radius:3px;min-width:0;max-width:50%;max-width:fit-content;max-width:-moz-fit-content}.multiselect[data-v-6673a70] .multiselect__tags .multiselect__tags-wrap .multiselect__tag:only-child{flex:0 1 auto}.multiselect[data-v-6673a70] .multiselect__tags .multiselect__tags-wrap .multiselect__tag:not(:last-child){margin-right:5px}.multiselect[data-v-6673a70] .multiselect__tags .multiselect__tags-wrap .multiselect__tag>span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.multiselect[data-v-6673a70] .multiselect__tags .multiselect__single,.multiselect[data-v-6673a70] .multiselect__tags .multiselect__placeholder{padding:7px 6px;flex:0 0 100%;z-index:1;background-color:var(--color-main-background);cursor:pointer;line-height:18px;color:var(--color-text-lighter)}.multiselect[data-v-6673a70] .multiselect__tags .multiselect__strong,.multiselect[data-v-6673a70] .multiselect__tags .multiselect__limit{flex:0 0 auto;line-height:20px;color:var(--color-text-lighter);display:inline-flex;align-items:center;opacity:.7;margin-right:5px;z-index:5}.multiselect[data-v-6673a70] .multiselect__tags input.multiselect__input{width:100% !important;position:absolute !important;top:0;left:0;margin:0;opacity:0;height:100%;border:none;display:block !important;cursor:pointer;padding:7px 6px !important}.multiselect[data-v-6673a70] .multiselect__content-wrapper{position:absolute;width:100%;margin-top:-1px;border:1px solid var(--color-border-dark);background:var(--color-main-background);z-index:50;max-height:250px;overflow-y:auto;border-radius:0 0 var(--border-radius) var(--border-radius)}.multiselect[data-v-6673a70] .multiselect__content-wrapper .multiselect__content{width:100%;padding:0}.multiselect[data-v-6673a70] .multiselect__content-wrapper li{position:relative;display:flex;align-items:center;background-color:transparent}.multiselect[data-v-6673a70] .multiselect__content-wrapper li,.multiselect[data-v-6673a70] .multiselect__content-wrapper li span{cursor:pointer}.multiselect[data-v-6673a70] .multiselect__content-wrapper li>span{padding:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:0;height:auto;min-height:1em;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:inline-flex;align-items:center;background-color:transparent;color:var(--color-text-lighter);width:100%}.multiselect[data-v-6673a70] .multiselect__content-wrapper li>span::before{content:' ';background-repeat:no-repeat;background-position:center;min-width:16px;min-height:16px;display:block;opacity:.5;margin-right:5px;visibility:hidden}.multiselect[data-v-6673a70] .multiselect__content-wrapper li>span.multiselect__option--disabled{background-color:var(--color-background-dark);opacity:.5}.multiselect[data-v-6673a70] .multiselect__content-wrapper li>span.multiselect__option--highlight{color:var(--color-main-text);background-color:var(--color-background-dark)}.multiselect[data-v-6673a70] .multiselect__content-wrapper li>span:not(.multiselect__option--disabled):hover::before{opacity:.3}.multiselect[data-v-6673a70] .multiselect__content-wrapper li>span.multiselect__option--selected::before,.multiselect[data-v-6673a70] .multiselect__content-wrapper li>span:not(.multiselect__option--disabled):hover::before{visibility:visible}.multiselect[data-v-6673a70].multiselect--above .multiselect__content-wrapper{bottom:100%;margin-bottom:-1px}.multiselect[data-v-6673a70].multiselect--multiple .multiselect__content-wrapper li>span::before{background-image:var(--icon-checkmark-000)}.multiselect[data-v-6673a70].multiselect--multiple .multiselect__content-wrapper li>span[data-select='create']::before{background-image:var(--icon-add-000);visibility:visible}.multiselect[data-v-6673a70].multiselect--single .multiselect__content-wrapper li>span::before{display:none}.multiselect[data-v-6673a70]:hover .multiselect__placeholder,.multiselect[data-v-6673a70] input.multiselect__input .multiselect__placeholder{color:var(--color-main-text)}\n",""])},function(t,e){t.exports=function(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}},function(t,e,n){"use strict";n.r(e);var i={};n.r(i),n.d(i,"ActionButton",(function(){return a.default})),n.d(i,"ActionCheckbox",(function(){return s.default})),n.d(i,"ActionInput",(function(){return c.default})),n.d(i,"ActionLink",(function(){return l.default})),n.d(i,"ActionRouter",(function(){return u.default})),n.d(i,"ActionText",(function(){return d.default})),n.d(i,"ActionTextEditable",(function(){return p.default})),n.d(i,"Actions",(function(){return f.default})),n.d(i,"AppContent",(function(){return h.default})),n.d(i,"AppContentDetails",(function(){return v.default})),n.d(i,"AppContentList",(function(){return m.default})),n.d(i,"AppNavigation",(function(){return A.default})),n.d(i,"AppNavigationCaption",(function(){return g.default})),n.d(i,"AppNavigationCounter",(function(){return b.default})),n.d(i,"AppNavigationItem",(function(){return y.default})),n.d(i,"AppNavigationNew",(function(){return _.default})),n.d(i,"AppNavigationSettings",(function(){return w.default})),n.d(i,"AppNavigationSpacer",(function(){return x.default})),n.d(i,"AppSidebar",(function(){return C.default})),n.d(i,"AppSidebarTab",(function(){return k.default})),n.d(i,"Avatar",(function(){return T.default})),n.d(i,"Content",(function(){return E.default})),n.d(i,"DatetimePicker",(function(){return O.default})),n.d(i,"Modal",(function(){return S.default})),n.d(i,"Multiselect",(function(){return M.default})),n.d(i,"PopoverMenu",(function(){return D.default}));var r=n(181),o=n.n(r),a=n(65),s=n(127),c=n(128),l=n(129),u=n(130),d=n(131),p=n(132),f=n(30),h=n(133),v=n(134),m=n(135),A=n(136),g=n(137),b=n(67),y=n(138),_=n(139),w=n(140),x=n(141),C=n(142),k=n(143),T=n(64),E=n(144),O=n(66),S=n(126),M=n(125),D=n(24),N=n(6),I=n(123),B=n(124);function P(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,i)}return n} +/** + * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */function L(t){Object.values(i).forEach((function(e){t.component(e.name,e)}))} +/** + * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */n.d(e,"ActionButton",(function(){return a.default})),n.d(e,"ActionCheckbox",(function(){return s.default})),n.d(e,"ActionInput",(function(){return c.default})),n.d(e,"ActionLink",(function(){return l.default})),n.d(e,"ActionRouter",(function(){return u.default})),n.d(e,"ActionText",(function(){return d.default})),n.d(e,"ActionTextEditable",(function(){return p.default})),n.d(e,"Actions",(function(){return f.default})),n.d(e,"AppContent",(function(){return h.default})),n.d(e,"AppContentDetails",(function(){return v.default})),n.d(e,"AppContentList",(function(){return m.default})),n.d(e,"AppNavigation",(function(){return A.default})),n.d(e,"AppNavigationCaption",(function(){return g.default})),n.d(e,"AppNavigationCounter",(function(){return b.default})),n.d(e,"AppNavigationItem",(function(){return y.default})),n.d(e,"AppNavigationNew",(function(){return _.default})),n.d(e,"AppNavigationSettings",(function(){return w.default})),n.d(e,"AppNavigationSpacer",(function(){return x.default})),n.d(e,"AppSidebar",(function(){return C.default})),n.d(e,"AppSidebarTab",(function(){return k.default})),n.d(e,"Avatar",(function(){return T.default})),n.d(e,"Content",(function(){return E.default})),n.d(e,"DatetimePicker",(function(){return O.default})),n.d(e,"Modal",(function(){return S.default})),n.d(e,"Multiselect",(function(){return M.default})),n.d(e,"PopoverMenu",(function(){return D.default})),n.d(e,"Tooltip",(function(){return N.default})),n.d(e,"isFullscreen",(function(){return I.default})),n.d(e,"isMobile",(function(){return B.default})),"undefined"!=typeof window&&window.Vue&&L(window.Vue),e.default=function(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?P(n,!0).forEach((function(e){o()(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):P(n).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}({install:L},i)}])}))},function(t,e,n){window,t.exports=function(t){var e={};function n(i){if(e[i])return e[i].exports;var r=e[i]={i:i,l:!1,exports:{}};return t[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)n.d(i,r,function(e){return t[e]}.bind(null,r));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=0)}([function(t,e,n){"use strict";function i(){return"undefined"==typeof OC?Promise.reject(new Error("OC not defined")):void 0===OC.PasswordConfirmation?Promise.reject(new Error("OC.PasswordConfirmation not defined")):OC.PasswordConfirmation.requiresPasswordConfirmation()?new Promise((function(t,e){OC.PasswordConfirmation.requirePasswordConfirmation(t,{},e)})):Promise.resolve()}n.r(e),n.d(e,"default",(function(){return i}))}])},function(t,e,n){"use strict";(function(t){for( +/**! + * @fileOverview Kickass library to create and place poppers near their reference elements. + * @version 1.15.0 + * @license + * Copyright (c) 2016 Federico Zivolo and contributors + * + * 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. + */ +var n="undefined"!=typeof window&&"undefined"!=typeof document,i=["Edge","Trident","Firefox"],r=0,o=0;o<i.length;o+=1)if(n&&navigator.userAgent.indexOf(i[o])>=0){r=1;break}var a=n&&window.Promise?function(t){var e=!1;return function(){e||(e=!0,window.Promise.resolve().then((function(){e=!1,t()})))}}:function(t){var e=!1;return function(){e||(e=!0,setTimeout((function(){e=!1,t()}),r))}};function s(t){return t&&"[object Function]"==={}.toString.call(t)}function c(t,e){if(1!==t.nodeType)return[];var n=t.ownerDocument.defaultView.getComputedStyle(t,null);return e?n[e]:n}function l(t){return"HTML"===t.nodeName?t:t.parentNode||t.host}function u(t){if(!t)return document.body;switch(t.nodeName){case"HTML":case"BODY":return t.ownerDocument.body;case"#document":return t.body}var e=c(t),n=e.overflow,i=e.overflowX,r=e.overflowY;return/(auto|scroll|overlay)/.test(n+r+i)?t:u(l(t))}var d=n&&!(!window.MSInputMethodContext||!document.documentMode),p=n&&/MSIE 10/.test(navigator.userAgent);function f(t){return 11===t?d:10===t?p:d||p}function h(t){if(!t)return document.documentElement;for(var e=f(10)?document.body:null,n=t.offsetParent||null;n===e&&t.nextElementSibling;)n=(t=t.nextElementSibling).offsetParent;var i=n&&n.nodeName;return i&&"BODY"!==i&&"HTML"!==i?-1!==["TH","TD","TABLE"].indexOf(n.nodeName)&&"static"===c(n,"position")?h(n):n:t?t.ownerDocument.documentElement:document.documentElement}function v(t){return null!==t.parentNode?v(t.parentNode):t}function m(t,e){if(!(t&&t.nodeType&&e&&e.nodeType))return document.documentElement;var n=t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING,i=n?t:e,r=n?e:t,o=document.createRange();o.setStart(i,0),o.setEnd(r,0);var a,s,c=o.commonAncestorContainer;if(t!==c&&e!==c||i.contains(r))return"BODY"===(s=(a=c).nodeName)||"HTML"!==s&&h(a.firstElementChild)!==a?h(c):c;var l=v(t);return l.host?m(l.host,e):m(t,v(e).host)}function A(t){var e="top"===(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"top")?"scrollTop":"scrollLeft",n=t.nodeName;if("BODY"===n||"HTML"===n){var i=t.ownerDocument.documentElement;return(t.ownerDocument.scrollingElement||i)[e]}return t[e]}function g(t,e){var n="x"===e?"Left":"Top",i="Left"===n?"Right":"Bottom";return parseFloat(t["border"+n+"Width"],10)+parseFloat(t["border"+i+"Width"],10)}function b(t,e,n,i){return Math.max(e["offset"+t],e["scroll"+t],n["client"+t],n["offset"+t],n["scroll"+t],f(10)?parseInt(n["offset"+t])+parseInt(i["margin"+("Height"===t?"Top":"Left")])+parseInt(i["margin"+("Height"===t?"Bottom":"Right")]):0)}function y(t){var e=t.body,n=t.documentElement,i=f(10)&&getComputedStyle(n);return{height:b("Height",e,n,i),width:b("Width",e,n,i)}}var _=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},w=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}(),x=function(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t},C=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])}return t};function k(t){return C({},t,{right:t.left+t.width,bottom:t.top+t.height})}function T(t){var e={};try{if(f(10)){e=t.getBoundingClientRect();var n=A(t,"top"),i=A(t,"left");e.top+=n,e.left+=i,e.bottom+=n,e.right+=i}else e=t.getBoundingClientRect()}catch(t){}var r={left:e.left,top:e.top,width:e.right-e.left,height:e.bottom-e.top},o="HTML"===t.nodeName?y(t.ownerDocument):{},a=o.width||t.clientWidth||r.right-r.left,s=o.height||t.clientHeight||r.bottom-r.top,l=t.offsetWidth-a,u=t.offsetHeight-s;if(l||u){var d=c(t);l-=g(d,"x"),u-=g(d,"y"),r.width-=l,r.height-=u}return k(r)}function E(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=f(10),r="HTML"===e.nodeName,o=T(t),a=T(e),s=u(t),l=c(e),d=parseFloat(l.borderTopWidth,10),p=parseFloat(l.borderLeftWidth,10);n&&r&&(a.top=Math.max(a.top,0),a.left=Math.max(a.left,0));var h=k({top:o.top-a.top-d,left:o.left-a.left-p,width:o.width,height:o.height});if(h.marginTop=0,h.marginLeft=0,!i&&r){var v=parseFloat(l.marginTop,10),m=parseFloat(l.marginLeft,10);h.top-=d-v,h.bottom-=d-v,h.left-=p-m,h.right-=p-m,h.marginTop=v,h.marginLeft=m}return(i&&!n?e.contains(s):e===s&&"BODY"!==s.nodeName)&&(h=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=A(e,"top"),r=A(e,"left"),o=n?-1:1;return t.top+=i*o,t.bottom+=i*o,t.left+=r*o,t.right+=r*o,t}(h,e)),h}function O(t){if(!t||!t.parentElement||f())return document.documentElement;for(var e=t.parentElement;e&&"none"===c(e,"transform");)e=e.parentElement;return e||document.documentElement}function S(t,e,n,i){var r=arguments.length>4&&void 0!==arguments[4]&&arguments[4],o={top:0,left:0},a=r?O(t):m(t,e);if("viewport"===i)o=function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=t.ownerDocument.documentElement,i=E(t,n),r=Math.max(n.clientWidth,window.innerWidth||0),o=Math.max(n.clientHeight,window.innerHeight||0),a=e?0:A(n),s=e?0:A(n,"left");return k({top:a-i.top+i.marginTop,left:s-i.left+i.marginLeft,width:r,height:o})}(a,r);else{var s=void 0;"scrollParent"===i?"BODY"===(s=u(l(e))).nodeName&&(s=t.ownerDocument.documentElement):s="window"===i?t.ownerDocument.documentElement:i;var d=E(s,a,r);if("HTML"!==s.nodeName||function t(e){var n=e.nodeName;if("BODY"===n||"HTML"===n)return!1;if("fixed"===c(e,"position"))return!0;var i=l(e);return!!i&&t(i)}(a))o=d;else{var p=y(t.ownerDocument),f=p.height,h=p.width;o.top+=d.top-d.marginTop,o.bottom=f+d.top,o.left+=d.left-d.marginLeft,o.right=h+d.left}}var v="number"==typeof(n=n||0);return o.left+=v?n:n.left||0,o.top+=v?n:n.top||0,o.right-=v?n:n.right||0,o.bottom-=v?n:n.bottom||0,o}function M(t,e,n,i,r){var o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===t.indexOf("auto"))return t;var a=S(n,i,o,r),s={top:{width:a.width,height:e.top-a.top},right:{width:a.right-e.right,height:a.height},bottom:{width:a.width,height:a.bottom-e.bottom},left:{width:e.left-a.left,height:a.height}},c=Object.keys(s).map((function(t){return C({key:t},s[t],{area:(e=s[t],e.width*e.height)});var e})).sort((function(t,e){return e.area-t.area})),l=c.filter((function(t){var e=t.width,i=t.height;return e>=n.clientWidth&&i>=n.clientHeight})),u=l.length>0?l[0].key:c[0].key,d=t.split("-")[1];return u+(d?"-"+d:"")}function D(t,e,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;return E(n,i?O(e):m(e,n),i)}function N(t){var e=t.ownerDocument.defaultView.getComputedStyle(t),n=parseFloat(e.marginTop||0)+parseFloat(e.marginBottom||0),i=parseFloat(e.marginLeft||0)+parseFloat(e.marginRight||0);return{width:t.offsetWidth+i,height:t.offsetHeight+n}}function I(t){var e={left:"right",right:"left",bottom:"top",top:"bottom"};return t.replace(/left|right|bottom|top/g,(function(t){return e[t]}))}function B(t,e,n){n=n.split("-")[0];var i=N(t),r={width:i.width,height:i.height},o=-1!==["right","left"].indexOf(n),a=o?"top":"left",s=o?"left":"top",c=o?"height":"width",l=o?"width":"height";return r[a]=e[a]+e[c]/2-i[c]/2,r[s]=n===s?e[s]-i[l]:e[I(s)],r}function P(t,e){return Array.prototype.find?t.find(e):t.filter(e)[0]}function L(t,e,n){return(void 0===n?t:t.slice(0,function(t,e,n){if(Array.prototype.findIndex)return t.findIndex((function(t){return t[e]===n}));var i=P(t,(function(t){return t[e]===n}));return t.indexOf(i)}(t,"name",n))).forEach((function(t){t.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var n=t.function||t.fn;t.enabled&&s(n)&&(e.offsets.popper=k(e.offsets.popper),e.offsets.reference=k(e.offsets.reference),e=n(e,t))})),e}function j(){if(!this.state.isDestroyed){var t={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};t.offsets.reference=D(this.state,this.popper,this.reference,this.options.positionFixed),t.placement=M(this.options.placement,t.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),t.originalPlacement=t.placement,t.positionFixed=this.options.positionFixed,t.offsets.popper=B(this.popper,t.offsets.reference,t.placement),t.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",t=L(this.modifiers,t),this.state.isCreated?this.options.onUpdate(t):(this.state.isCreated=!0,this.options.onCreate(t))}}function $(t,e){return t.some((function(t){var n=t.name;return t.enabled&&n===e}))}function R(t){for(var e=[!1,"ms","Webkit","Moz","O"],n=t.charAt(0).toUpperCase()+t.slice(1),i=0;i<e.length;i++){var r=e[i],o=r?""+r+n:t;if(void 0!==document.body.style[o])return o}return null}function F(){return this.state.isDestroyed=!0,$(this.modifiers,"applyStyle")&&(this.popper.removeAttribute("x-placement"),this.popper.style.position="",this.popper.style.top="",this.popper.style.left="",this.popper.style.right="",this.popper.style.bottom="",this.popper.style.willChange="",this.popper.style[R("transform")]=""),this.disableEventListeners(),this.options.removeOnDestroy&&this.popper.parentNode.removeChild(this.popper),this}function H(t){var e=t.ownerDocument;return e?e.defaultView:window}function z(t,e,n,i){n.updateBound=i,H(t).addEventListener("resize",n.updateBound,{passive:!0});var r=u(t);return function t(e,n,i,r){var o="BODY"===e.nodeName,a=o?e.ownerDocument.defaultView:e;a.addEventListener(n,i,{passive:!0}),o||t(u(a.parentNode),n,i,r),r.push(a)}(r,"scroll",n.updateBound,n.scrollParents),n.scrollElement=r,n.eventsEnabled=!0,n}function U(){this.state.eventsEnabled||(this.state=z(this.reference,this.options,this.state,this.scheduleUpdate))}function Y(){var t,e;this.state.eventsEnabled&&(cancelAnimationFrame(this.scheduleUpdate),this.state=(t=this.reference,e=this.state,H(t).removeEventListener("resize",e.updateBound),e.scrollParents.forEach((function(t){t.removeEventListener("scroll",e.updateBound)})),e.updateBound=null,e.scrollParents=[],e.scrollElement=null,e.eventsEnabled=!1,e))}function V(t){return""!==t&&!isNaN(parseFloat(t))&&isFinite(t)}function Q(t,e){Object.keys(e).forEach((function(n){var i="";-1!==["width","height","top","right","bottom","left"].indexOf(n)&&V(e[n])&&(i="px"),t.style[n]=e[n]+i}))}var G=n&&/Firefox/i.test(navigator.userAgent);function W(t,e,n){var i=P(t,(function(t){return t.name===e})),r=!!i&&t.some((function(t){return t.name===n&&t.enabled&&t.order<i.order}));if(!r){var o="`"+e+"`",a="`"+n+"`";console.warn(a+" modifier is required by "+o+" modifier in order to work, be sure to include it before "+o+"!")}return r}var q=["auto-start","auto","auto-end","top-start","top","top-end","right-start","right","right-end","bottom-end","bottom","bottom-start","left-end","left","left-start"],X=q.slice(3);function Z(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=X.indexOf(t),i=X.slice(n+1).concat(X.slice(0,n));return e?i.reverse():i}var K={FLIP:"flip",CLOCKWISE:"clockwise",COUNTERCLOCKWISE:"counterclockwise"};function J(t,e,n,i){var r=[0,0],o=-1!==["right","left"].indexOf(i),a=t.split(/(\+|\-)/).map((function(t){return t.trim()})),s=a.indexOf(P(a,(function(t){return-1!==t.search(/,|\s/)})));a[s]&&-1===a[s].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var c=/\s*,\s*|\s+/,l=-1!==s?[a.slice(0,s).concat([a[s].split(c)[0]]),[a[s].split(c)[1]].concat(a.slice(s+1))]:[a];return(l=l.map((function(t,i){var r=(1===i?!o:o)?"height":"width",a=!1;return t.reduce((function(t,e){return""===t[t.length-1]&&-1!==["+","-"].indexOf(e)?(t[t.length-1]=e,a=!0,t):a?(t[t.length-1]+=e,a=!1,t):t.concat(e)}),[]).map((function(t){return function(t,e,n,i){var r=t.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),o=+r[1],a=r[2];if(!o)return t;if(0===a.indexOf("%")){var s=void 0;switch(a){case"%p":s=n;break;case"%":case"%r":default:s=i}return k(s)[e]/100*o}if("vh"===a||"vw"===a){return("vh"===a?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*o}return o}(t,r,e,n)}))}))).forEach((function(t,e){t.forEach((function(n,i){V(n)&&(r[e]+=n*("-"===t[i-1]?-1:1))}))})),r}var tt={placement:"bottom",positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(t){var e=t.placement,n=e.split("-")[0],i=e.split("-")[1];if(i){var r=t.offsets,o=r.reference,a=r.popper,s=-1!==["bottom","top"].indexOf(n),c=s?"left":"top",l=s?"width":"height",u={start:x({},c,o[c]),end:x({},c,o[c]+o[l]-a[l])};t.offsets.popper=C({},a,u[i])}return t}},offset:{order:200,enabled:!0,fn:function(t,e){var n=e.offset,i=t.placement,r=t.offsets,o=r.popper,a=r.reference,s=i.split("-")[0],c=void 0;return c=V(+n)?[+n,0]:J(n,o,a,s),"left"===s?(o.top+=c[0],o.left-=c[1]):"right"===s?(o.top+=c[0],o.left+=c[1]):"top"===s?(o.left+=c[0],o.top-=c[1]):"bottom"===s&&(o.left+=c[0],o.top+=c[1]),t.popper=o,t},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(t,e){var n=e.boundariesElement||h(t.instance.popper);t.instance.reference===n&&(n=h(n));var i=R("transform"),r=t.instance.popper.style,o=r.top,a=r.left,s=r[i];r.top="",r.left="",r[i]="";var c=S(t.instance.popper,t.instance.reference,e.padding,n,t.positionFixed);r.top=o,r.left=a,r[i]=s,e.boundaries=c;var l=e.priority,u=t.offsets.popper,d={primary:function(t){var n=u[t];return u[t]<c[t]&&!e.escapeWithReference&&(n=Math.max(u[t],c[t])),x({},t,n)},secondary:function(t){var n="right"===t?"left":"top",i=u[n];return u[t]>c[t]&&!e.escapeWithReference&&(i=Math.min(u[n],c[t]-("right"===t?u.width:u.height))),x({},n,i)}};return l.forEach((function(t){var e=-1!==["left","top"].indexOf(t)?"primary":"secondary";u=C({},u,d[e](t))})),t.offsets.popper=u,t},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(t){var e=t.offsets,n=e.popper,i=e.reference,r=t.placement.split("-")[0],o=Math.floor,a=-1!==["top","bottom"].indexOf(r),s=a?"right":"bottom",c=a?"left":"top",l=a?"width":"height";return n[s]<o(i[c])&&(t.offsets.popper[c]=o(i[c])-n[l]),n[c]>o(i[s])&&(t.offsets.popper[c]=o(i[s])),t}},arrow:{order:500,enabled:!0,fn:function(t,e){var n;if(!W(t.instance.modifiers,"arrow","keepTogether"))return t;var i=e.element;if("string"==typeof i){if(!(i=t.instance.popper.querySelector(i)))return t}else if(!t.instance.popper.contains(i))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),t;var r=t.placement.split("-")[0],o=t.offsets,a=o.popper,s=o.reference,l=-1!==["left","right"].indexOf(r),u=l?"height":"width",d=l?"Top":"Left",p=d.toLowerCase(),f=l?"left":"top",h=l?"bottom":"right",v=N(i)[u];s[h]-v<a[p]&&(t.offsets.popper[p]-=a[p]-(s[h]-v)),s[p]+v>a[h]&&(t.offsets.popper[p]+=s[p]+v-a[h]),t.offsets.popper=k(t.offsets.popper);var m=s[p]+s[u]/2-v/2,A=c(t.instance.popper),g=parseFloat(A["margin"+d],10),b=parseFloat(A["border"+d+"Width"],10),y=m-t.offsets.popper[p]-g-b;return y=Math.max(Math.min(a[u]-v,y),0),t.arrowElement=i,t.offsets.arrow=(x(n={},p,Math.round(y)),x(n,f,""),n),t},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(t,e){if($(t.instance.modifiers,"inner"))return t;if(t.flipped&&t.placement===t.originalPlacement)return t;var n=S(t.instance.popper,t.instance.reference,e.padding,e.boundariesElement,t.positionFixed),i=t.placement.split("-")[0],r=I(i),o=t.placement.split("-")[1]||"",a=[];switch(e.behavior){case K.FLIP:a=[i,r];break;case K.CLOCKWISE:a=Z(i);break;case K.COUNTERCLOCKWISE:a=Z(i,!0);break;default:a=e.behavior}return a.forEach((function(s,c){if(i!==s||a.length===c+1)return t;i=t.placement.split("-")[0],r=I(i);var l=t.offsets.popper,u=t.offsets.reference,d=Math.floor,p="left"===i&&d(l.right)>d(u.left)||"right"===i&&d(l.left)<d(u.right)||"top"===i&&d(l.bottom)>d(u.top)||"bottom"===i&&d(l.top)<d(u.bottom),f=d(l.left)<d(n.left),h=d(l.right)>d(n.right),v=d(l.top)<d(n.top),m=d(l.bottom)>d(n.bottom),A="left"===i&&f||"right"===i&&h||"top"===i&&v||"bottom"===i&&m,g=-1!==["top","bottom"].indexOf(i),b=!!e.flipVariations&&(g&&"start"===o&&f||g&&"end"===o&&h||!g&&"start"===o&&v||!g&&"end"===o&&m),y=!!e.flipVariationsByContent&&(g&&"start"===o&&h||g&&"end"===o&&f||!g&&"start"===o&&m||!g&&"end"===o&&v),_=b||y;(p||A||_)&&(t.flipped=!0,(p||A)&&(i=a[c+1]),_&&(o=function(t){return"end"===t?"start":"start"===t?"end":t}(o)),t.placement=i+(o?"-"+o:""),t.offsets.popper=C({},t.offsets.popper,B(t.instance.popper,t.offsets.reference,t.placement)),t=L(t.instance.modifiers,t,"flip"))})),t},behavior:"flip",padding:5,boundariesElement:"viewport",flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:function(t){var e=t.placement,n=e.split("-")[0],i=t.offsets,r=i.popper,o=i.reference,a=-1!==["left","right"].indexOf(n),s=-1===["top","left"].indexOf(n);return r[a?"left":"top"]=o[n]-(s?r[a?"width":"height"]:0),t.placement=I(e),t.offsets.popper=k(r),t}},hide:{order:800,enabled:!0,fn:function(t){if(!W(t.instance.modifiers,"hide","preventOverflow"))return t;var e=t.offsets.reference,n=P(t.instance.modifiers,(function(t){return"preventOverflow"===t.name})).boundaries;if(e.bottom<n.top||e.left>n.right||e.top>n.bottom||e.right<n.left){if(!0===t.hide)return t;t.hide=!0,t.attributes["x-out-of-boundaries"]=""}else{if(!1===t.hide)return t;t.hide=!1,t.attributes["x-out-of-boundaries"]=!1}return t}},computeStyle:{order:850,enabled:!0,fn:function(t,e){var n=e.x,i=e.y,r=t.offsets.popper,o=P(t.instance.modifiers,(function(t){return"applyStyle"===t.name})).gpuAcceleration;void 0!==o&&console.warn("WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!");var a=void 0!==o?o:e.gpuAcceleration,s=h(t.instance.popper),c=T(s),l={position:r.position},u=function(t,e){var n=t.offsets,i=n.popper,r=n.reference,o=Math.round,a=Math.floor,s=function(t){return t},c=o(r.width),l=o(i.width),u=-1!==["left","right"].indexOf(t.placement),d=-1!==t.placement.indexOf("-"),p=e?u||d||c%2==l%2?o:a:s,f=e?o:s;return{left:p(c%2==1&&l%2==1&&!d&&e?i.left-1:i.left),top:f(i.top),bottom:f(i.bottom),right:p(i.right)}}(t,window.devicePixelRatio<2||!G),d="bottom"===n?"top":"bottom",p="right"===i?"left":"right",f=R("transform"),v=void 0,m=void 0;if(m="bottom"===d?"HTML"===s.nodeName?-s.clientHeight+u.bottom:-c.height+u.bottom:u.top,v="right"===p?"HTML"===s.nodeName?-s.clientWidth+u.right:-c.width+u.right:u.left,a&&f)l[f]="translate3d("+v+"px, "+m+"px, 0)",l[d]=0,l[p]=0,l.willChange="transform";else{var A="bottom"===d?-1:1,g="right"===p?-1:1;l[d]=m*A,l[p]=v*g,l.willChange=d+", "+p}var b={"x-placement":t.placement};return t.attributes=C({},b,t.attributes),t.styles=C({},l,t.styles),t.arrowStyles=C({},t.offsets.arrow,t.arrowStyles),t},gpuAcceleration:!0,x:"bottom",y:"right"},applyStyle:{order:900,enabled:!0,fn:function(t){var e,n;return Q(t.instance.popper,t.styles),e=t.instance.popper,n=t.attributes,Object.keys(n).forEach((function(t){!1!==n[t]?e.setAttribute(t,n[t]):e.removeAttribute(t)})),t.arrowElement&&Object.keys(t.arrowStyles).length&&Q(t.arrowElement,t.arrowStyles),t},onLoad:function(t,e,n,i,r){var o=D(r,e,t,n.positionFixed),a=M(n.placement,o,e,t,n.modifiers.flip.boundariesElement,n.modifiers.flip.padding);return e.setAttribute("x-placement",a),Q(e,{position:n.positionFixed?"fixed":"absolute"}),n},gpuAcceleration:void 0}}},et=function(){function t(e,n){var i=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};_(this,t),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=a(this.update.bind(this)),this.options=C({},t.Defaults,r),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=e&&e.jquery?e[0]:e,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(C({},t.Defaults.modifiers,r.modifiers)).forEach((function(e){i.options.modifiers[e]=C({},t.Defaults.modifiers[e]||{},r.modifiers?r.modifiers[e]:{})})),this.modifiers=Object.keys(this.options.modifiers).map((function(t){return C({name:t},i.options.modifiers[t])})).sort((function(t,e){return t.order-e.order})),this.modifiers.forEach((function(t){t.enabled&&s(t.onLoad)&&t.onLoad(i.reference,i.popper,i.options,t,i.state)})),this.update();var o=this.options.eventsEnabled;o&&this.enableEventListeners(),this.state.eventsEnabled=o}return w(t,[{key:"update",value:function(){return j.call(this)}},{key:"destroy",value:function(){return F.call(this)}},{key:"enableEventListeners",value:function(){return U.call(this)}},{key:"disableEventListeners",value:function(){return Y.call(this)}}]),t}();et.Utils=("undefined"!=typeof window?window:t).PopperUtils,et.placements=q,et.Defaults=tt,e.a=et}).call(this,n(3))},function(t,e,n){"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var n=function(t,e){var n=t[1]||"",i=t[3];if(!i)return n;if(e&&"function"==typeof btoa){var r=(a=i,s=btoa(unescape(encodeURIComponent(JSON.stringify(a)))),c="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(s),"/*# ".concat(c," */")),o=i.sources.map((function(t){return"/*# sourceURL=".concat(i.sourceRoot).concat(t," */")}));return[n].concat(o).concat([r]).join("\n")}var a,s,c;return[n].join("\n")}(e,t);return e[2]?"@media ".concat(e[2],"{").concat(n,"}"):n})).join("")},e.i=function(t,n){"string"==typeof t&&(t=[[null,t,""]]);for(var i={},r=0;r<this.length;r++){var o=this[r][0];null!=o&&(i[o]=!0)}for(var a=0;a<t.length;a++){var s=t[a];null!=s[0]&&i[s[0]]||(n&&!s[2]?s[2]=n:n&&(s[2]="(".concat(s[2],") and (").concat(n,")")),e.push(s))}},e}},function(t,e,n){"use strict";var i,r={},o=function(){return void 0===i&&(i=Boolean(window&&document&&document.all&&!window.atob)),i},a=function(){var t={};return function(e){if(void 0===t[e]){var n=document.querySelector(e);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(t){n=null}t[e]=n}return t[e]}}();function s(t,e){for(var n=[],i={},r=0;r<t.length;r++){var o=t[r],a=e.base?o[0]+e.base:o[0],s={css:o[1],media:o[2],sourceMap:o[3]};i[a]?i[a].parts.push(s):n.push(i[a]={id:a,parts:[s]})}return n}function c(t,e){for(var n=0;n<t.length;n++){var i=t[n],o=r[i.id],a=0;if(o){for(o.refs++;a<o.parts.length;a++)o.parts[a](i.parts[a]);for(;a<i.parts.length;a++)o.parts.push(m(i.parts[a],e))}else{for(var s=[];a<i.parts.length;a++)s.push(m(i.parts[a],e));r[i.id]={id:i.id,refs:1,parts:s}}}}function l(t){var e=document.createElement("style");if(void 0===t.attributes.nonce){var i=n.nc;i&&(t.attributes.nonce=i)}if(Object.keys(t.attributes).forEach((function(n){e.setAttribute(n,t.attributes[n])})),"function"==typeof t.insert)t.insert(e);else{var r=a(t.insert||"head");if(!r)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");r.appendChild(e)}return e}var u,d=(u=[],function(t,e){return u[t]=e,u.filter(Boolean).join("\n")});function p(t,e,n,i){var r=n?"":i.css;if(t.styleSheet)t.styleSheet.cssText=d(e,r);else{var o=document.createTextNode(r),a=t.childNodes;a[e]&&t.removeChild(a[e]),a.length?t.insertBefore(o,a[e]):t.appendChild(o)}}function f(t,e,n){var i=n.css,r=n.media,o=n.sourceMap;if(r&&t.setAttribute("media",r),o&&btoa&&(i+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(o))))," */")),t.styleSheet)t.styleSheet.cssText=i;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(i))}}var h=null,v=0;function m(t,e){var n,i,r;if(e.singleton){var o=v++;n=h||(h=l(e)),i=p.bind(null,n,o,!1),r=p.bind(null,n,o,!0)}else n=l(e),i=f.bind(null,n,e),r=function(){!function(t){if(null===t.parentNode)return!1;t.parentNode.removeChild(t)}(n)};return i(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;i(t=e)}else r()}}t.exports=function(t,e){(e=e||{}).attributes="object"==typeof e.attributes?e.attributes:{},e.singleton||"boolean"==typeof e.singleton||(e.singleton=o());var n=s(t,e);return c(n,e),function(t){for(var i=[],o=0;o<n.length;o++){var a=n[o],l=r[a.id];l&&(l.refs--,i.push(l))}t&&c(s(t,e),e);for(var u=0;u<i.length;u++){var d=i[u];if(0===d.refs){for(var p=0;p<d.parts.length;p++)d.parts[p]();delete r[d.id]}}}}},,function(t,e,n){(function(t){var i=void 0!==t&&t||"undefined"!=typeof self&&self||window,r=Function.prototype.apply;function o(t,e){this._id=t,this._clearFn=e}e.setTimeout=function(){return new o(r.call(setTimeout,i,arguments),clearTimeout)},e.setInterval=function(){return new o(r.call(setInterval,i,arguments),clearInterval)},e.clearTimeout=e.clearInterval=function(t){t&&t.close()},o.prototype.unref=o.prototype.ref=function(){},o.prototype.close=function(){this._clearFn.call(i,this._id)},e.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},e.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},e._unrefActive=e.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;e>=0&&(t._idleTimeoutId=setTimeout((function(){t._onTimeout&&t._onTimeout()}),e))},n(23),e.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==t&&t.setImmediate||this&&this.setImmediate,e.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==t&&t.clearImmediate||this&&this.clearImmediate}).call(this,n(3))},function(t,e,n){(function(t,e){!function(t,n){"use strict";if(!t.setImmediate){var i,r,o,a,s,c=1,l={},u=!1,d=t.document,p=Object.getPrototypeOf&&Object.getPrototypeOf(t);p=p&&p.setTimeout?p:t,"[object process]"==={}.toString.call(t.process)?i=function(t){e.nextTick((function(){h(t)}))}:!function(){if(t.postMessage&&!t.importScripts){var e=!0,n=t.onmessage;return t.onmessage=function(){e=!1},t.postMessage("","*"),t.onmessage=n,e}}()?t.MessageChannel?((o=new MessageChannel).port1.onmessage=function(t){h(t.data)},i=function(t){o.port2.postMessage(t)}):d&&"onreadystatechange"in d.createElement("script")?(r=d.documentElement,i=function(t){var e=d.createElement("script");e.onreadystatechange=function(){h(t),e.onreadystatechange=null,r.removeChild(e),e=null},r.appendChild(e)}):i=function(t){setTimeout(h,0,t)}:(a="setImmediate$"+Math.random()+"$",s=function(e){e.source===t&&"string"==typeof e.data&&0===e.data.indexOf(a)&&h(+e.data.slice(a.length))},t.addEventListener?t.addEventListener("message",s,!1):t.attachEvent("onmessage",s),i=function(e){t.postMessage(a+e,"*")}),p.setImmediate=function(t){"function"!=typeof t&&(t=new Function(""+t));for(var e=new Array(arguments.length-1),n=0;n<e.length;n++)e[n]=arguments[n+1];var r={callback:t,args:e};return l[c]=r,i(c),c++},p.clearImmediate=f}function f(t){delete l[t]}function h(t){if(u)setTimeout(h,0,t);else{var e=l[t];if(e){u=!0;try{!function(t){var e=t.callback,i=t.args;switch(i.length){case 0:e();break;case 1:e(i[0]);break;case 2:e(i[0],i[1]);break;case 3:e(i[0],i[1],i[2]);break;default:e.apply(n,i)}}(e)}finally{f(t),u=!1}}}}}("undefined"==typeof self?void 0===t?this:t:self)}).call(this,n(3),n(6))},function(t,e,n){t.exports=n(25)},function(t,e,n){"use strict";var i=n(1),r=n(7),o=n(27),a=n(13);function s(t){var e=new o(t),n=r(o.prototype.request,e);return i.extend(n,o.prototype,e),i.extend(n,e),n}var c=s(n(10));c.Axios=o,c.create=function(t){return s(a(c.defaults,t))},c.Cancel=n(14),c.CancelToken=n(39),c.isCancel=n(9),c.all=function(t){return Promise.all(t)},c.spread=n(40),t.exports=c,t.exports.default=c},function(t,e){ +/*! + * Determine if an object is a Buffer + * + * @author Feross Aboukhadijeh <https://feross.org> + * @license MIT + */ +t.exports=function(t){return null!=t&&null!=t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}},function(t,e,n){"use strict";var i=n(1),r=n(8),o=n(28),a=n(29),s=n(13);function c(t){this.defaults=t,this.interceptors={request:new o,response:new o}}c.prototype.request=function(t){"string"==typeof t?(t=arguments[1]||{}).url=arguments[0]:t=t||{},(t=s(this.defaults,t)).method=t.method?t.method.toLowerCase():"get";var e=[a,void 0],n=Promise.resolve(t);for(this.interceptors.request.forEach((function(t){e.unshift(t.fulfilled,t.rejected)})),this.interceptors.response.forEach((function(t){e.push(t.fulfilled,t.rejected)}));e.length;)n=n.then(e.shift(),e.shift());return n},c.prototype.getUri=function(t){return t=s(this.defaults,t),r(t.url,t.params,t.paramsSerializer).replace(/^\?/,"")},i.forEach(["delete","get","head","options"],(function(t){c.prototype[t]=function(e,n){return this.request(i.merge(n||{},{method:t,url:e}))}})),i.forEach(["post","put","patch"],(function(t){c.prototype[t]=function(e,n,r){return this.request(i.merge(r||{},{method:t,url:e,data:n}))}})),t.exports=c},function(t,e,n){"use strict";var i=n(1);function r(){this.handlers=[]}r.prototype.use=function(t,e){return this.handlers.push({fulfilled:t,rejected:e}),this.handlers.length-1},r.prototype.eject=function(t){this.handlers[t]&&(this.handlers[t]=null)},r.prototype.forEach=function(t){i.forEach(this.handlers,(function(e){null!==e&&t(e)}))},t.exports=r},function(t,e,n){"use strict";var i=n(1),r=n(30),o=n(9),a=n(10),s=n(37),c=n(38);function l(t){t.cancelToken&&t.cancelToken.throwIfRequested()}t.exports=function(t){return l(t),t.baseURL&&!s(t.url)&&(t.url=c(t.baseURL,t.url)),t.headers=t.headers||{},t.data=r(t.data,t.headers,t.transformRequest),t.headers=i.merge(t.headers.common||{},t.headers[t.method]||{},t.headers||{}),i.forEach(["delete","get","head","post","put","patch","common"],(function(e){delete t.headers[e]})),(t.adapter||a.adapter)(t).then((function(e){return l(t),e.data=r(e.data,e.headers,t.transformResponse),e}),(function(e){return o(e)||(l(t),e&&e.response&&(e.response.data=r(e.response.data,e.response.headers,t.transformResponse))),Promise.reject(e)}))}},function(t,e,n){"use strict";var i=n(1);t.exports=function(t,e,n){return i.forEach(n,(function(n){t=n(t,e)})),t}},function(t,e,n){"use strict";var i=n(1);t.exports=function(t,e){i.forEach(t,(function(n,i){i!==e&&i.toUpperCase()===e.toUpperCase()&&(t[e]=n,delete t[i])}))}},function(t,e,n){"use strict";var i=n(12);t.exports=function(t,e,n){var r=n.config.validateStatus;!r||r(n.status)?t(n):e(i("Request failed with status code "+n.status,n.config,null,n.request,n))}},function(t,e,n){"use strict";t.exports=function(t,e,n,i,r){return t.config=e,n&&(t.code=n),t.request=i,t.response=r,t.isAxiosError=!0,t.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},t}},function(t,e,n){"use strict";var i=n(1),r=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];t.exports=function(t){var e,n,o,a={};return t?(i.forEach(t.split("\n"),(function(t){if(o=t.indexOf(":"),e=i.trim(t.substr(0,o)).toLowerCase(),n=i.trim(t.substr(o+1)),e){if(a[e]&&r.indexOf(e)>=0)return;a[e]="set-cookie"===e?(a[e]?a[e]:[]).concat([n]):a[e]?a[e]+", "+n:n}})),a):a}},function(t,e,n){"use strict";var i=n(1);t.exports=i.isStandardBrowserEnv()?function(){var t,e=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function r(t){var i=t;return e&&(n.setAttribute("href",i),i=n.href),n.setAttribute("href",i),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return t=r(window.location.href),function(e){var n=i.isString(e)?r(e):e;return n.protocol===t.protocol&&n.host===t.host}}():function(){return!0}},function(t,e,n){"use strict";var i=n(1);t.exports=i.isStandardBrowserEnv()?{write:function(t,e,n,r,o,a){var s=[];s.push(t+"="+encodeURIComponent(e)),i.isNumber(n)&&s.push("expires="+new Date(n).toGMTString()),i.isString(r)&&s.push("path="+r),i.isString(o)&&s.push("domain="+o),!0===a&&s.push("secure"),document.cookie=s.join("; ")},read:function(t){var e=document.cookie.match(new RegExp("(^|;\\s*)("+t+")=([^;]*)"));return e?decodeURIComponent(e[3]):null},remove:function(t){this.write(t,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},function(t,e,n){"use strict";t.exports=function(t){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(t)}},function(t,e,n){"use strict";t.exports=function(t,e){return e?t.replace(/\/+$/,"")+"/"+e.replace(/^\/+/,""):t}},function(t,e,n){"use strict";var i=n(14);function r(t){if("function"!=typeof t)throw new TypeError("executor must be a function.");var e;this.promise=new Promise((function(t){e=t}));var n=this;t((function(t){n.reason||(n.reason=new i(t),e(n.reason))}))}r.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},r.source=function(){var t;return{token:new r((function(e){t=e})),cancel:t}},t.exports=r},function(t,e,n){"use strict";t.exports=function(t){return function(e){return t.apply(null,e)}}},function(t,e,n){"use strict";(function(t){var i=n(18),r=n(42);function o(t){return(o="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})(t)}function a(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function c(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{},i=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(i=i.concat(Object.getOwnPropertySymbols(n).filter((function(t){return Object.getOwnPropertyDescriptor(n,t).enumerable})))),i.forEach((function(e){s(t,e,n[e])}))}return t}var l=function(){};function u(t){return"string"==typeof t&&(t=t.split(" ")),t}function d(t,e){var n,i=u(e);n=t.className instanceof l?u(t.className.baseVal):u(t.className),i.forEach((function(t){-1===n.indexOf(t)&&n.push(t)})),t instanceof SVGElement?t.setAttribute("class",n.join(" ")):t.className=n.join(" ")}function p(t,e){var n,i=u(e);n=t.className instanceof l?u(t.className.baseVal):u(t.className),i.forEach((function(t){var e=n.indexOf(t);-1!==e&&n.splice(e,1)})),t instanceof SVGElement?t.setAttribute("class",n.join(" ")):t.className=n.join(" ")}"undefined"!=typeof window&&(l=window.SVGAnimatedString);var f=!1;if("undefined"!=typeof window){f=!1;try{var h=Object.defineProperty({},"passive",{get:function(){f=!0}});window.addEventListener("test",null,h)}catch(t){}}var v={container:!1,delay:0,html:!1,placement:"top",title:"",template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",offset:0},m=[],A=function(){function t(e,n){var i=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),s(this,"_events",[]),s(this,"_setTooltipNodeEvent",(function(t,e,n,r){var o=t.relatedreference||t.toElement||t.relatedTarget;return!!i._tooltipNode.contains(o)&&(i._tooltipNode.addEventListener(t.type,(function n(o){var a=o.relatedreference||o.toElement||o.relatedTarget;i._tooltipNode.removeEventListener(t.type,n),e.contains(a)||i._scheduleHide(e,r.delay,r,o)})),!0)})),n=c({},v,n),e.jquery&&(e=e[0]),this.show=this.show.bind(this),this.hide=this.hide.bind(this),this.reference=e,this.options=n,this._isOpen=!1,this._init()}var e,n,r;return e=t,(n=[{key:"show",value:function(){this._show(this.reference,this.options)}},{key:"hide",value:function(){this._hide()}},{key:"dispose",value:function(){this._dispose()}},{key:"toggle",value:function(){return this._isOpen?this.hide():this.show()}},{key:"setClasses",value:function(t){this._classes=t}},{key:"setContent",value:function(t){this.options.title=t,this._tooltipNode&&this._setContent(t,this.options)}},{key:"setOptions",value:function(t){var e=!1,n=t&&t.classes||T.options.defaultClass;this._classes!==n&&(this.setClasses(n),e=!0),t=_(t);var i=!1,r=!1;for(var o in this.options.offset===t.offset&&this.options.placement===t.placement||(i=!0),(this.options.template!==t.template||this.options.trigger!==t.trigger||this.options.container!==t.container||e)&&(r=!0),t)this.options[o]=t[o];if(this._tooltipNode)if(r){var a=this._isOpen;this.dispose(),this._init(),a&&this.show()}else i&&this.popperInstance.update()}},{key:"_init",value:function(){var t="string"==typeof this.options.trigger?this.options.trigger.split(" "):[];this._isDisposed=!1,this._enableDocumentTouch=-1===t.indexOf("manual"),t=t.filter((function(t){return-1!==["click","hover","focus"].indexOf(t)})),this._setEventListeners(this.reference,t,this.options),this.$_originalTitle=this.reference.getAttribute("title"),this.reference.removeAttribute("title"),this.reference.setAttribute("data-original-title",this.$_originalTitle)}},{key:"_create",value:function(t,e){var n=window.document.createElement("div");n.innerHTML=e.trim();var i=n.childNodes[0];return i.id="tooltip_".concat(Math.random().toString(36).substr(2,10)),i.setAttribute("aria-hidden","true"),this.options.autoHide&&-1!==this.options.trigger.indexOf("hover")&&(i.addEventListener("mouseenter",this.hide),i.addEventListener("click",this.hide)),i}},{key:"_setContent",value:function(t,e){var n=this;this.asyncContent=!1,this._applyContent(t,e).then((function(){n.popperInstance.update()}))}},{key:"_applyContent",value:function(t,e){var n=this;return new Promise((function(i,r){var o=e.html,a=n._tooltipNode;if(a){var s=a.querySelector(n.options.innerSelector);if(1===t.nodeType){if(o){for(;s.firstChild;)s.removeChild(s.firstChild);s.appendChild(t)}}else{if("function"==typeof t){var c=t();return void(c&&"function"==typeof c.then?(n.asyncContent=!0,e.loadingClass&&d(a,e.loadingClass),e.loadingContent&&n._applyContent(e.loadingContent,e),c.then((function(t){return e.loadingClass&&p(a,e.loadingClass),n._applyContent(t,e)})).then(i).catch(r)):n._applyContent(c,e).then(i).catch(r))}o?s.innerHTML=t:s.innerText=t}i()}}))}},{key:"_show",value:function(t,e){if(!e||"string"!=typeof e.container||document.querySelector(e.container)){clearTimeout(this._disposeTimer),delete(e=Object.assign({},e)).offset;var n=!0;this._tooltipNode&&(d(this._tooltipNode,this._classes),n=!1);var i=this._ensureShown(t,e);return n&&this._tooltipNode&&d(this._tooltipNode,this._classes),d(t,["v-tooltip-open"]),i}}},{key:"_ensureShown",value:function(t,e){var n=this;if(this._isOpen)return this;if(this._isOpen=!0,m.push(this),this._tooltipNode)return this._tooltipNode.style.display="",this._tooltipNode.setAttribute("aria-hidden","false"),this.popperInstance.enableEventListeners(),this.popperInstance.update(),this.asyncContent&&this._setContent(e.title,e),this;var r=t.getAttribute("title")||e.title;if(!r)return this;var o=this._create(t,e.template);this._tooltipNode=o,t.setAttribute("aria-describedby",o.id);var a=this._findContainer(e.container,t);this._append(o,a);var s=c({},e.popperOptions,{placement:e.placement});return s.modifiers=c({},s.modifiers,{arrow:{element:this.options.arrowSelector}}),e.boundariesElement&&(s.modifiers.preventOverflow={boundariesElement:e.boundariesElement}),this.popperInstance=new i.a(t,o,s),this._setContent(r,e),requestAnimationFrame((function(){!n._isDisposed&&n.popperInstance?(n.popperInstance.update(),requestAnimationFrame((function(){n._isDisposed?n.dispose():n._isOpen&&o.setAttribute("aria-hidden","false")}))):n.dispose()})),this}},{key:"_noLongerOpen",value:function(){var t=m.indexOf(this);-1!==t&&m.splice(t,1)}},{key:"_hide",value:function(){var t=this;if(!this._isOpen)return this;this._isOpen=!1,this._noLongerOpen(),this._tooltipNode.style.display="none",this._tooltipNode.setAttribute("aria-hidden","true"),this.popperInstance.disableEventListeners(),clearTimeout(this._disposeTimer);var e=T.options.disposeTimeout;return null!==e&&(this._disposeTimer=setTimeout((function(){t._tooltipNode&&(t._tooltipNode.removeEventListener("mouseenter",t.hide),t._tooltipNode.removeEventListener("click",t.hide),t._removeTooltipNode())}),e)),p(this.reference,["v-tooltip-open"]),this}},{key:"_removeTooltipNode",value:function(){if(this._tooltipNode){var t=this._tooltipNode.parentNode;t&&(t.removeChild(this._tooltipNode),this.reference.removeAttribute("aria-describedby")),this._tooltipNode=null}}},{key:"_dispose",value:function(){var t=this;return this._isDisposed=!0,this.reference.removeAttribute("data-original-title"),this.$_originalTitle&&this.reference.setAttribute("title",this.$_originalTitle),this._events.forEach((function(e){var n=e.func,i=e.event;t.reference.removeEventListener(i,n)})),this._events=[],this._tooltipNode?(this._hide(),this._tooltipNode.removeEventListener("mouseenter",this.hide),this._tooltipNode.removeEventListener("click",this.hide),this.popperInstance.destroy(),this.popperInstance.options.removeOnDestroy||this._removeTooltipNode()):this._noLongerOpen(),this}},{key:"_findContainer",value:function(t,e){return"string"==typeof t?t=window.document.querySelector(t):!1===t&&(t=e.parentNode),t}},{key:"_append",value:function(t,e){e.appendChild(t)}},{key:"_setEventListeners",value:function(t,e,n){var i=this,r=[],o=[];e.forEach((function(t){switch(t){case"hover":r.push("mouseenter"),o.push("mouseleave"),i.options.hideOnTargetClick&&o.push("click");break;case"focus":r.push("focus"),o.push("blur"),i.options.hideOnTargetClick&&o.push("click");break;case"click":r.push("click"),o.push("click")}})),r.forEach((function(e){var r=function(e){!0!==i._isOpen&&(e.usedByTooltip=!0,i._scheduleShow(t,n.delay,n,e))};i._events.push({event:e,func:r}),t.addEventListener(e,r)})),o.forEach((function(e){var r=function(e){!0!==e.usedByTooltip&&i._scheduleHide(t,n.delay,n,e)};i._events.push({event:e,func:r}),t.addEventListener(e,r)}))}},{key:"_onDocumentTouch",value:function(t){this._enableDocumentTouch&&this._scheduleHide(this.reference,this.options.delay,this.options,t)}},{key:"_scheduleShow",value:function(t,e,n){var i=this,r=e&&e.show||e||0;clearTimeout(this._scheduleTimer),this._scheduleTimer=window.setTimeout((function(){return i._show(t,n)}),r)}},{key:"_scheduleHide",value:function(t,e,n,i){var r=this,o=e&&e.hide||e||0;clearTimeout(this._scheduleTimer),this._scheduleTimer=window.setTimeout((function(){if(!1!==r._isOpen&&document.body.contains(r._tooltipNode)){if("mouseleave"===i.type&&r._setTooltipNodeEvent(i,t,e,n))return;r._hide(t,n)}}),o)}}])&&a(e.prototype,n),r&&a(e,r),t}();"undefined"!=typeof document&&document.addEventListener("touchstart",(function(t){for(var e=0;e<m.length;e++)m[e]._onDocumentTouch(t)}),!f||{passive:!0,capture:!0});var g={enabled:!0},b=["top","top-start","top-end","right","right-start","right-end","bottom","bottom-start","bottom-end","left","left-start","left-end"],y={defaultPlacement:"top",defaultClass:"vue-tooltip-theme",defaultTargetClass:"has-tooltip",defaultHtml:!0,defaultTemplate:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',defaultArrowSelector:".tooltip-arrow, .tooltip__arrow",defaultInnerSelector:".tooltip-inner, .tooltip__inner",defaultDelay:0,defaultTrigger:"hover focus",defaultOffset:0,defaultContainer:"body",defaultBoundariesElement:void 0,defaultPopperOptions:{},defaultLoadingClass:"tooltip-loading",defaultLoadingContent:"...",autoHide:!0,defaultHideOnTargetClick:!0,disposeTimeout:5e3,popover:{defaultPlacement:"bottom",defaultClass:"vue-popover-theme",defaultBaseClass:"tooltip popover",defaultWrapperClass:"wrapper",defaultInnerClass:"tooltip-inner popover-inner",defaultArrowClass:"tooltip-arrow popover-arrow",defaultOpenClass:"open",defaultDelay:0,defaultTrigger:"click",defaultOffset:0,defaultContainer:"body",defaultBoundariesElement:void 0,defaultPopperOptions:{},defaultAutoHide:!0,defaultHandleResize:!0}};function _(t){var e={placement:void 0!==t.placement?t.placement:T.options.defaultPlacement,delay:void 0!==t.delay?t.delay:T.options.defaultDelay,html:void 0!==t.html?t.html:T.options.defaultHtml,template:void 0!==t.template?t.template:T.options.defaultTemplate,arrowSelector:void 0!==t.arrowSelector?t.arrowSelector:T.options.defaultArrowSelector,innerSelector:void 0!==t.innerSelector?t.innerSelector:T.options.defaultInnerSelector,trigger:void 0!==t.trigger?t.trigger:T.options.defaultTrigger,offset:void 0!==t.offset?t.offset:T.options.defaultOffset,container:void 0!==t.container?t.container:T.options.defaultContainer,boundariesElement:void 0!==t.boundariesElement?t.boundariesElement:T.options.defaultBoundariesElement,autoHide:void 0!==t.autoHide?t.autoHide:T.options.autoHide,hideOnTargetClick:void 0!==t.hideOnTargetClick?t.hideOnTargetClick:T.options.defaultHideOnTargetClick,loadingClass:void 0!==t.loadingClass?t.loadingClass:T.options.defaultLoadingClass,loadingContent:void 0!==t.loadingContent?t.loadingContent:T.options.defaultLoadingContent,popperOptions:c({},void 0!==t.popperOptions?t.popperOptions:T.options.defaultPopperOptions)};if(e.offset){var n=o(e.offset),i=e.offset;("number"===n||"string"===n&&-1===i.indexOf(","))&&(i="0, ".concat(i)),e.popperOptions.modifiers||(e.popperOptions.modifiers={}),e.popperOptions.modifiers.offset={offset:i}}return e.trigger&&-1!==e.trigger.indexOf("click")&&(e.hideOnTargetClick=!1),e}function w(t,e){for(var n=t.placement,i=0;i<b.length;i++){var r=b[i];e[r]&&(n=r)}return n}function x(t){var e=o(t);return"string"===e?t:!(!t||"object"!==e)&&t.content}function C(t){t._tooltip&&(t._tooltip.dispose(),delete t._tooltip,delete t._tooltipOldShow),t._tooltipTargetClasses&&(p(t,t._tooltipTargetClasses),delete t._tooltipTargetClasses)}function k(t,e){var n,i=e.value,r=(e.oldValue,e.modifiers),o=x(i);o&&g.enabled?(t._tooltip?((n=t._tooltip).setContent(o),n.setOptions(c({},i,{placement:w(i,r)}))):n=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=x(e),r=void 0!==e.classes?e.classes:T.options.defaultClass,o=c({title:i},_(c({},e,{placement:w(e,n)}))),a=t._tooltip=new A(t,o);a.setClasses(r),a._vueEl=t;var s=void 0!==e.targetClasses?e.targetClasses:T.options.defaultTargetClass;return t._tooltipTargetClasses=s,d(t,s),a}(t,i,r),void 0!==i.show&&i.show!==t._tooltipOldShow&&(t._tooltipOldShow=i.show,i.show?n.show():n.hide())):C(t)}var T={options:y,bind:k,update:k,unbind:function(t){C(t)}};function E(t){t.addEventListener("click",S),t.addEventListener("touchstart",M,!!f&&{passive:!0})}function O(t){t.removeEventListener("click",S),t.removeEventListener("touchstart",M),t.removeEventListener("touchend",D),t.removeEventListener("touchcancel",N)}function S(t){var e=t.currentTarget;t.closePopover=!e.$_vclosepopover_touch,t.closeAllPopover=e.$_closePopoverModifiers&&!!e.$_closePopoverModifiers.all}function M(t){if(1===t.changedTouches.length){var e=t.currentTarget;e.$_vclosepopover_touch=!0;var n=t.changedTouches[0];e.$_vclosepopover_touchPoint=n,e.addEventListener("touchend",D),e.addEventListener("touchcancel",N)}}function D(t){var e=t.currentTarget;if(e.$_vclosepopover_touch=!1,1===t.changedTouches.length){var n=t.changedTouches[0],i=e.$_vclosepopover_touchPoint;t.closePopover=Math.abs(n.screenY-i.screenY)<20&&Math.abs(n.screenX-i.screenX)<20,t.closeAllPopover=e.$_closePopoverModifiers&&!!e.$_closePopoverModifiers.all}}function N(t){t.currentTarget.$_vclosepopover_touch=!1}var I={bind:function(t,e){var n=e.value,i=e.modifiers;t.$_closePopoverModifiers=i,(void 0===n||n)&&E(t)},update:function(t,e){var n=e.value,i=e.oldValue,r=e.modifiers;t.$_closePopoverModifiers=r,n!==i&&(void 0===n||n?E(t):O(t))},unbind:function(t){O(t)}};function B(t){var e=T.options.popover[t];return void 0===e?T.options[t]:e}var P=!1;"undefined"!=typeof window&&"undefined"!=typeof navigator&&(P=/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream);var L=[],j=function(){};"undefined"!=typeof window&&(j=window.Element);var $={name:"VPopover",components:{ResizeObserver:r.a},props:{open:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},placement:{type:String,default:function(){return B("defaultPlacement")}},delay:{type:[String,Number,Object],default:function(){return B("defaultDelay")}},offset:{type:[String,Number],default:function(){return B("defaultOffset")}},trigger:{type:String,default:function(){return B("defaultTrigger")}},container:{type:[String,Object,j,Boolean],default:function(){return B("defaultContainer")}},boundariesElement:{type:[String,j],default:function(){return B("defaultBoundariesElement")}},popperOptions:{type:Object,default:function(){return B("defaultPopperOptions")}},popoverClass:{type:[String,Array],default:function(){return B("defaultClass")}},popoverBaseClass:{type:[String,Array],default:function(){return T.options.popover.defaultBaseClass}},popoverInnerClass:{type:[String,Array],default:function(){return T.options.popover.defaultInnerClass}},popoverWrapperClass:{type:[String,Array],default:function(){return T.options.popover.defaultWrapperClass}},popoverArrowClass:{type:[String,Array],default:function(){return T.options.popover.defaultArrowClass}},autoHide:{type:Boolean,default:function(){return T.options.popover.defaultAutoHide}},handleResize:{type:Boolean,default:function(){return T.options.popover.defaultHandleResize}},openGroup:{type:String,default:null},openClass:{type:[String,Array],default:function(){return T.options.popover.defaultOpenClass}}},data:function(){return{isOpen:!1,id:Math.random().toString(36).substr(2,10)}},computed:{cssClass:function(){return s({},this.openClass,this.isOpen)},popoverId:function(){return"popover_".concat(this.id)}},watch:{open:function(t){t?this.show():this.hide()},disabled:function(t,e){t!==e&&(t?this.hide():this.open&&this.show())},container:function(t){if(this.isOpen&&this.popperInstance){var e=this.$refs.popover,n=this.$refs.trigger,i=this.$_findContainer(this.container,n);if(!i)return void console.warn("No container for popover",this);i.appendChild(e),this.popperInstance.scheduleUpdate()}},trigger:function(t){this.$_removeEventListeners(),this.$_addEventListeners()},placement:function(t){var e=this;this.$_updatePopper((function(){e.popperInstance.options.placement=t}))},offset:"$_restartPopper",boundariesElement:"$_restartPopper",popperOptions:{handler:"$_restartPopper",deep:!0}},created:function(){this.$_isDisposed=!1,this.$_mounted=!1,this.$_events=[],this.$_preventOpen=!1},mounted:function(){var t=this.$refs.popover;t.parentNode&&t.parentNode.removeChild(t),this.$_init(),this.open&&this.show()},deactivated:function(){this.hide()},beforeDestroy:function(){this.dispose()},methods:{show:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.event,i=(e.skipDelay,e.force),r=void 0!==i&&i;!r&&this.disabled||(this.$_scheduleShow(n),this.$emit("show")),this.$emit("update:open",!0),this.$_beingShowed=!0,requestAnimationFrame((function(){t.$_beingShowed=!1}))},hide:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.event;t.skipDelay;this.$_scheduleHide(e),this.$emit("hide"),this.$emit("update:open",!1)},dispose:function(){if(this.$_isDisposed=!0,this.$_removeEventListeners(),this.hide({skipDelay:!0}),this.popperInstance&&(this.popperInstance.destroy(),!this.popperInstance.options.removeOnDestroy)){var t=this.$refs.popover;t.parentNode&&t.parentNode.removeChild(t)}this.$_mounted=!1,this.popperInstance=null,this.isOpen=!1,this.$emit("dispose")},$_init:function(){-1===this.trigger.indexOf("manual")&&this.$_addEventListeners()},$_show:function(){var t=this,e=this.$refs.trigger,n=this.$refs.popover;if(clearTimeout(this.$_disposeTimer),!this.isOpen){if(this.popperInstance&&(this.isOpen=!0,this.popperInstance.enableEventListeners(),this.popperInstance.scheduleUpdate()),!this.$_mounted){var r=this.$_findContainer(this.container,e);if(!r)return void console.warn("No container for popover",this);r.appendChild(n),this.$_mounted=!0}if(!this.popperInstance){var o=c({},this.popperOptions,{placement:this.placement});if(o.modifiers=c({},o.modifiers,{arrow:c({},o.modifiers&&o.modifiers.arrow,{element:this.$refs.arrow})}),this.offset){var a=this.$_getOffset();o.modifiers.offset=c({},o.modifiers&&o.modifiers.offset,{offset:a})}this.boundariesElement&&(o.modifiers.preventOverflow=c({},o.modifiers&&o.modifiers.preventOverflow,{boundariesElement:this.boundariesElement})),this.popperInstance=new i.a(e,n,o),requestAnimationFrame((function(){if(t.hidden)return t.hidden=!1,void t.$_hide();!t.$_isDisposed&&t.popperInstance?(t.popperInstance.scheduleUpdate(),requestAnimationFrame((function(){if(t.hidden)return t.hidden=!1,void t.$_hide();t.$_isDisposed?t.dispose():t.isOpen=!0}))):t.dispose()}))}var s=this.openGroup;if(s)for(var l,u=0;u<L.length;u++)(l=L[u]).openGroup!==s&&(l.hide(),l.$emit("close-group"));L.push(this),this.$emit("apply-show")}},$_hide:function(){var t=this;if(this.isOpen){var e=L.indexOf(this);-1!==e&&L.splice(e,1),this.isOpen=!1,this.popperInstance&&this.popperInstance.disableEventListeners(),clearTimeout(this.$_disposeTimer);var n=T.options.popover.disposeTimeout||T.options.disposeTimeout;null!==n&&(this.$_disposeTimer=setTimeout((function(){var e=t.$refs.popover;e&&(e.parentNode&&e.parentNode.removeChild(e),t.$_mounted=!1)}),n)),this.$emit("apply-hide")}},$_findContainer:function(t,e){return"string"==typeof t?t=window.document.querySelector(t):!1===t&&(t=e.parentNode),t},$_getOffset:function(){var t=o(this.offset),e=this.offset;return("number"===t||"string"===t&&-1===e.indexOf(","))&&(e="0, ".concat(e)),e},$_addEventListeners:function(){var t=this,e=this.$refs.trigger,n=[],i=[];("string"==typeof this.trigger?this.trigger.split(" ").filter((function(t){return-1!==["click","hover","focus"].indexOf(t)})):[]).forEach((function(t){switch(t){case"hover":n.push("mouseenter"),i.push("mouseleave");break;case"focus":n.push("focus"),i.push("blur");break;case"click":n.push("click"),i.push("click")}})),n.forEach((function(n){var i=function(e){t.isOpen||(e.usedByTooltip=!0,!t.$_preventOpen&&t.show({event:e}),t.hidden=!1)};t.$_events.push({event:n,func:i}),e.addEventListener(n,i)})),i.forEach((function(n){var i=function(e){e.usedByTooltip||(t.hide({event:e}),t.hidden=!0)};t.$_events.push({event:n,func:i}),e.addEventListener(n,i)}))},$_scheduleShow:function(){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(clearTimeout(this.$_scheduleTimer),t)this.$_show();else{var e=parseInt(this.delay&&this.delay.show||this.delay||0);this.$_scheduleTimer=setTimeout(this.$_show.bind(this),e)}},$_scheduleHide:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(clearTimeout(this.$_scheduleTimer),n)this.$_hide();else{var i=parseInt(this.delay&&this.delay.hide||this.delay||0);this.$_scheduleTimer=setTimeout((function(){if(t.isOpen){if(e&&"mouseleave"===e.type)if(t.$_setTooltipNodeEvent(e))return;t.$_hide()}}),i)}},$_setTooltipNodeEvent:function(t){var e=this,n=this.$refs.trigger,i=this.$refs.popover,r=t.relatedreference||t.toElement||t.relatedTarget;return!!i.contains(r)&&(i.addEventListener(t.type,(function r(o){var a=o.relatedreference||o.toElement||o.relatedTarget;i.removeEventListener(t.type,r),n.contains(a)||e.hide({event:o})})),!0)},$_removeEventListeners:function(){var t=this.$refs.trigger;this.$_events.forEach((function(e){var n=e.func,i=e.event;t.removeEventListener(i,n)})),this.$_events=[]},$_updatePopper:function(t){this.popperInstance&&(t(),this.isOpen&&this.popperInstance.scheduleUpdate())},$_restartPopper:function(){if(this.popperInstance){var t=this.isOpen;this.dispose(),this.$_isDisposed=!1,this.$_init(),t&&this.show({skipDelay:!0,force:!0})}},$_handleGlobalClose:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.$_beingShowed||(this.hide({event:t}),t.closePopover?this.$emit("close-directive"):this.$emit("auto-hide"),n&&(this.$_preventOpen=!0,setTimeout((function(){e.$_preventOpen=!1}),300)))},$_handleResize:function(){this.isOpen&&this.popperInstance&&(this.popperInstance.scheduleUpdate(),this.$emit("resize"))}}};function R(t){for(var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=function(n){var i=L[n];if(i.$refs.popover){var r=i.$refs.popover.contains(t.target);requestAnimationFrame((function(){(t.closeAllPopover||t.closePopover&&r||i.autoHide&&!r)&&i.$_handleGlobalClose(t,e)}))}},i=0;i<L.length;i++)n(i)}"undefined"!=typeof document&&"undefined"!=typeof window&&(P?document.addEventListener("touchend",(function(t){R(t,!0)}),!f||{passive:!0,capture:!0}):window.addEventListener("click",(function(t){R(t)}),!0));var F=function(t,e,n,i,r,o,a,s,c,l){"boolean"!=typeof a&&(c=s,s=a,a=!1);var u,d="function"==typeof n?n.options:n;if(t&&t.render&&(d.render=t.render,d.staticRenderFns=t.staticRenderFns,d._compiled=!0,r&&(d.functional=!0)),i&&(d._scopeId=i),o?(u=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),e&&e.call(this,c(t)),t&&t._registeredComponents&&t._registeredComponents.add(o)},d._ssrRegister=u):e&&(u=a?function(){e.call(this,l(this.$root.$options.shadowRoot))}:function(t){e.call(this,s(t))}),u)if(d.functional){var p=d.render;d.render=function(t,e){return u.call(e),p(t,e)}}else{var f=d.beforeCreate;d.beforeCreate=f?[].concat(f,u):[u]}return n},H=$,z=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"v-popover",class:t.cssClass},[n("div",{ref:"trigger",staticClass:"trigger",staticStyle:{display:"inline-block"},attrs:{"aria-describedby":t.popoverId,tabindex:-1!==t.trigger.indexOf("focus")?0:void 0}},[t._t("default")],2),t._v(" "),n("div",{ref:"popover",class:[t.popoverBaseClass,t.popoverClass,t.cssClass],style:{visibility:t.isOpen?"visible":"hidden"},attrs:{id:t.popoverId,"aria-hidden":t.isOpen?"false":"true",tabindex:t.autoHide?0:void 0},on:{keyup:function(e){if(!e.type.indexOf("key")&&t._k(e.keyCode,"esc",27,e.key,["Esc","Escape"]))return null;t.autoHide&&t.hide()}}},[n("div",{class:t.popoverWrapperClass},[n("div",{ref:"inner",class:t.popoverInnerClass,staticStyle:{position:"relative"}},[n("div",[t._t("popover")],2),t._v(" "),t.handleResize?n("ResizeObserver",{on:{notify:t.$_handleResize}}):t._e()],1),t._v(" "),n("div",{ref:"arrow",class:t.popoverArrowClass})])])])};z._withStripped=!0;var U=F({render:z,staticRenderFns:[]},void 0,H,void 0,!1,void 0,void 0,void 0);var Y=function(){this.__data__=[],this.size=0};var V=function(t,e){return t===e||t!=t&&e!=e};var Q=function(t,e){for(var n=t.length;n--;)if(V(t[n][0],e))return n;return-1},G=Array.prototype.splice;var W=function(t){var e=this.__data__,n=Q(e,t);return!(n<0)&&(n==e.length-1?e.pop():G.call(e,n,1),--this.size,!0)};var q=function(t){var e=this.__data__,n=Q(e,t);return n<0?void 0:e[n][1]};var X=function(t){return Q(this.__data__,t)>-1};var Z=function(t,e){var n=this.__data__,i=Q(n,t);return i<0?(++this.size,n.push([t,e])):n[i][1]=e,this};function K(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var i=t[e];this.set(i[0],i[1])}}K.prototype.clear=Y,K.prototype.delete=W,K.prototype.get=q,K.prototype.has=X,K.prototype.set=Z;var J=K;var tt=function(){this.__data__=new J,this.size=0};var et=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n};var nt=function(t){return this.__data__.get(t)};var it=function(t){return this.__data__.has(t)},rt="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==t?t:"undefined"!=typeof self?self:{};function ot(t,e){return t(e={exports:{}},e.exports),e.exports}var at="object"==typeof rt&&rt&&rt.Object===Object&&rt,st="object"==typeof self&&self&&self.Object===Object&&self,ct=at||st||Function("return this")(),lt=ct.Symbol,ut=Object.prototype,dt=ut.hasOwnProperty,pt=ut.toString,ft=lt?lt.toStringTag:void 0;var ht=function(t){var e=dt.call(t,ft),n=t[ft];try{t[ft]=void 0;var i=!0}catch(t){}var r=pt.call(t);return i&&(e?t[ft]=n:delete t[ft]),r},vt=Object.prototype.toString;var mt=function(t){return vt.call(t)},At="[object Null]",gt="[object Undefined]",bt=lt?lt.toStringTag:void 0;var yt=function(t){return null==t?void 0===t?gt:At:bt&&bt in Object(t)?ht(t):mt(t)};var _t=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)},wt="[object AsyncFunction]",xt="[object Function]",Ct="[object GeneratorFunction]",kt="[object Proxy]";var Tt,Et=function(t){if(!_t(t))return!1;var e=yt(t);return e==xt||e==Ct||e==wt||e==kt},Ot=ct["__core-js_shared__"],St=(Tt=/[^.]+$/.exec(Ot&&Ot.keys&&Ot.keys.IE_PROTO||""))?"Symbol(src)_1."+Tt:"";var Mt=function(t){return!!St&&St in t},Dt=Function.prototype.toString;var Nt=function(t){if(null!=t){try{return Dt.call(t)}catch(t){}try{return t+""}catch(t){}}return""},It=/^\[object .+?Constructor\]$/,Bt=Function.prototype,Pt=Object.prototype,Lt=Bt.toString,jt=Pt.hasOwnProperty,$t=RegExp("^"+Lt.call(jt).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");var Rt=function(t){return!(!_t(t)||Mt(t))&&(Et(t)?$t:It).test(Nt(t))};var Ft=function(t,e){return null==t?void 0:t[e]};var Ht=function(t,e){var n=Ft(t,e);return Rt(n)?n:void 0},zt=Ht(ct,"Map"),Ut=Ht(Object,"create");var Yt=function(){this.__data__=Ut?Ut(null):{},this.size=0};var Vt=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e},Qt="__lodash_hash_undefined__",Gt=Object.prototype.hasOwnProperty;var Wt=function(t){var e=this.__data__;if(Ut){var n=e[t];return n===Qt?void 0:n}return Gt.call(e,t)?e[t]:void 0},qt=Object.prototype.hasOwnProperty;var Xt=function(t){var e=this.__data__;return Ut?void 0!==e[t]:qt.call(e,t)},Zt="__lodash_hash_undefined__";var Kt=function(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=Ut&&void 0===e?Zt:e,this};function Jt(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var i=t[e];this.set(i[0],i[1])}}Jt.prototype.clear=Yt,Jt.prototype.delete=Vt,Jt.prototype.get=Wt,Jt.prototype.has=Xt,Jt.prototype.set=Kt;var te=Jt;var ee=function(){this.size=0,this.__data__={hash:new te,map:new(zt||J),string:new te}};var ne=function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t};var ie=function(t,e){var n=t.__data__;return ne(e)?n["string"==typeof e?"string":"hash"]:n.map};var re=function(t){var e=ie(this,t).delete(t);return this.size-=e?1:0,e};var oe=function(t){return ie(this,t).get(t)};var ae=function(t){return ie(this,t).has(t)};var se=function(t,e){var n=ie(this,t),i=n.size;return n.set(t,e),this.size+=n.size==i?0:1,this};function ce(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var i=t[e];this.set(i[0],i[1])}}ce.prototype.clear=ee,ce.prototype.delete=re,ce.prototype.get=oe,ce.prototype.has=ae,ce.prototype.set=se;var le=ce,ue=200;var de=function(t,e){var n=this.__data__;if(n instanceof J){var i=n.__data__;if(!zt||i.length<ue-1)return i.push([t,e]),this.size=++n.size,this;n=this.__data__=new le(i)}return n.set(t,e),this.size=n.size,this};function pe(t){var e=this.__data__=new J(t);this.size=e.size}pe.prototype.clear=tt,pe.prototype.delete=et,pe.prototype.get=nt,pe.prototype.has=it,pe.prototype.set=de;var fe=pe,he=function(){try{var t=Ht(Object,"defineProperty");return t({},"",{}),t}catch(t){}}();var ve=function(t,e,n){"__proto__"==e&&he?he(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n};var me=function(t,e,n){(void 0===n||V(t[e],n))&&(void 0!==n||e in t)||ve(t,e,n)};var Ae=function(t){return function(e,n,i){for(var r=-1,o=Object(e),a=i(e),s=a.length;s--;){var c=a[t?s:++r];if(!1===n(o[c],c,o))break}return e}}(),ge=ot((function(t,e){var n=e&&!e.nodeType&&e,i=n&&t&&!t.nodeType&&t,r=i&&i.exports===n?ct.Buffer:void 0,o=r?r.allocUnsafe:void 0;t.exports=function(t,e){if(e)return t.slice();var n=t.length,i=o?o(n):new t.constructor(n);return t.copy(i),i}})),be=ct.Uint8Array;var ye=function(t){var e=new t.constructor(t.byteLength);return new be(e).set(new be(t)),e};var _e=function(t,e){var n=e?ye(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)};var we=function(t,e){var n=-1,i=t.length;for(e||(e=Array(i));++n<i;)e[n]=t[n];return e},xe=Object.create,Ce=function(){function t(){}return function(e){if(!_t(e))return{};if(xe)return xe(e);t.prototype=e;var n=new t;return t.prototype=void 0,n}}();var ke=function(t,e){return function(n){return t(e(n))}}(Object.getPrototypeOf,Object),Te=Object.prototype;var Ee=function(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||Te)};var Oe=function(t){return"function"!=typeof t.constructor||Ee(t)?{}:Ce(ke(t))};var Se=function(t){return null!=t&&"object"==typeof t},Me="[object Arguments]";var De=function(t){return Se(t)&&yt(t)==Me},Ne=Object.prototype,Ie=Ne.hasOwnProperty,Be=Ne.propertyIsEnumerable,Pe=De(function(){return arguments}())?De:function(t){return Se(t)&&Ie.call(t,"callee")&&!Be.call(t,"callee")},Le=Array.isArray,je=9007199254740991;var $e=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=je};var Re=function(t){return null!=t&&$e(t.length)&&!Et(t)};var Fe=function(t){return Se(t)&&Re(t)};var He=function(){return!1},ze=ot((function(t,e){var n=e&&!e.nodeType&&e,i=n&&t&&!t.nodeType&&t,r=i&&i.exports===n?ct.Buffer:void 0,o=(r?r.isBuffer:void 0)||He;t.exports=o})),Ue="[object Object]",Ye=Function.prototype,Ve=Object.prototype,Qe=Ye.toString,Ge=Ve.hasOwnProperty,We=Qe.call(Object);var qe=function(t){if(!Se(t)||yt(t)!=Ue)return!1;var e=ke(t);if(null===e)return!0;var n=Ge.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&Qe.call(n)==We},Xe={};Xe["[object Float32Array]"]=Xe["[object Float64Array]"]=Xe["[object Int8Array]"]=Xe["[object Int16Array]"]=Xe["[object Int32Array]"]=Xe["[object Uint8Array]"]=Xe["[object Uint8ClampedArray]"]=Xe["[object Uint16Array]"]=Xe["[object Uint32Array]"]=!0,Xe["[object Arguments]"]=Xe["[object Array]"]=Xe["[object ArrayBuffer]"]=Xe["[object Boolean]"]=Xe["[object DataView]"]=Xe["[object Date]"]=Xe["[object Error]"]=Xe["[object Function]"]=Xe["[object Map]"]=Xe["[object Number]"]=Xe["[object Object]"]=Xe["[object RegExp]"]=Xe["[object Set]"]=Xe["[object String]"]=Xe["[object WeakMap]"]=!1;var Ze=function(t){return Se(t)&&$e(t.length)&&!!Xe[yt(t)]};var Ke=function(t){return function(e){return t(e)}},Je=ot((function(t,e){var n=e&&!e.nodeType&&e,i=n&&t&&!t.nodeType&&t,r=i&&i.exports===n&&at.process,o=function(){try{var t=i&&i.require&&i.require("util").types;return t||r&&r.binding&&r.binding("util")}catch(t){}}();t.exports=o})),tn=Je&&Je.isTypedArray,en=tn?Ke(tn):Ze;var nn=function(t,e){if("__proto__"!=e)return t[e]},rn=Object.prototype.hasOwnProperty;var on=function(t,e,n){var i=t[e];rn.call(t,e)&&V(i,n)&&(void 0!==n||e in t)||ve(t,e,n)};var an=function(t,e,n,i){var r=!n;n||(n={});for(var o=-1,a=e.length;++o<a;){var s=e[o],c=i?i(n[s],t[s],s,n,t):void 0;void 0===c&&(c=t[s]),r?ve(n,s,c):on(n,s,c)}return n};var sn=function(t,e){for(var n=-1,i=Array(t);++n<t;)i[n]=e(n);return i},cn=9007199254740991,ln=/^(?:0|[1-9]\d*)$/;var un=function(t,e){var n=typeof t;return!!(e=null==e?cn:e)&&("number"==n||"symbol"!=n&&ln.test(t))&&t>-1&&t%1==0&&t<e},dn=Object.prototype.hasOwnProperty;var pn=function(t,e){var n=Le(t),i=!n&&Pe(t),r=!n&&!i&&ze(t),o=!n&&!i&&!r&&en(t),a=n||i||r||o,s=a?sn(t.length,String):[],c=s.length;for(var l in t)!e&&!dn.call(t,l)||a&&("length"==l||r&&("offset"==l||"parent"==l)||o&&("buffer"==l||"byteLength"==l||"byteOffset"==l)||un(l,c))||s.push(l);return s};var fn=function(t){var e=[];if(null!=t)for(var n in Object(t))e.push(n);return e},hn=Object.prototype.hasOwnProperty;var vn=function(t){if(!_t(t))return fn(t);var e=Ee(t),n=[];for(var i in t)("constructor"!=i||!e&&hn.call(t,i))&&n.push(i);return n};var mn=function(t){return Re(t)?pn(t,!0):vn(t)};var An=function(t){return an(t,mn(t))};var gn=function(t,e,n,i,r,o,a){var s=nn(t,n),c=nn(e,n),l=a.get(c);if(l)me(t,n,l);else{var u=o?o(s,c,n+"",t,e,a):void 0,d=void 0===u;if(d){var p=Le(c),f=!p&&ze(c),h=!p&&!f&&en(c);u=c,p||f||h?Le(s)?u=s:Fe(s)?u=we(s):f?(d=!1,u=ge(c,!0)):h?(d=!1,u=_e(c,!0)):u=[]:qe(c)||Pe(c)?(u=s,Pe(s)?u=An(s):_t(s)&&!Et(s)||(u=Oe(c))):d=!1}d&&(a.set(c,u),r(u,c,i,o,a),a.delete(c)),me(t,n,u)}};var bn=function t(e,n,i,r,o){e!==n&&Ae(n,(function(a,s){if(_t(a))o||(o=new fe),gn(e,n,s,i,t,r,o);else{var c=r?r(nn(e,s),a,s+"",e,n,o):void 0;void 0===c&&(c=a),me(e,s,c)}}),mn)};var yn=function(t){return t};var _n=function(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)},wn=Math.max;var xn=function(t,e,n){return e=wn(void 0===e?t.length-1:e,0),function(){for(var i=arguments,r=-1,o=wn(i.length-e,0),a=Array(o);++r<o;)a[r]=i[e+r];r=-1;for(var s=Array(e+1);++r<e;)s[r]=i[r];return s[e]=n(a),_n(t,this,s)}};var Cn=function(t){return function(){return t}},kn=he?function(t,e){return he(t,"toString",{configurable:!0,enumerable:!1,value:Cn(e),writable:!0})}:yn,Tn=800,En=16,On=Date.now;var Sn=function(t){var e=0,n=0;return function(){var i=On(),r=En-(i-n);if(n=i,r>0){if(++e>=Tn)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(kn);var Mn=function(t,e){return Sn(xn(t,e,yn),t+"")};var Dn=function(t,e,n){if(!_t(n))return!1;var i=typeof e;return!!("number"==i?Re(n)&&un(e,n.length):"string"==i&&e in n)&&V(n[e],t)};var Nn=function(t){return Mn((function(e,n){var i=-1,r=n.length,o=r>1?n[r-1]:void 0,a=r>2?n[2]:void 0;for(o=t.length>3&&"function"==typeof o?(r--,o):void 0,a&&Dn(n[0],n[1],a)&&(o=r<3?void 0:o,r=1),e=Object(e);++i<r;){var s=n[i];s&&t(e,s,i,o)}return e}))}((function(t,e,n){bn(t,e,n)}));!function(t,e){void 0===e&&(e={});var n=e.insertAt;if(t&&"undefined"!=typeof document){var i=document.head||document.getElementsByTagName("head")[0],r=document.createElement("style");r.type="text/css","top"===n&&i.firstChild?i.insertBefore(r,i.firstChild):i.appendChild(r),r.styleSheet?r.styleSheet.cssText=t:r.appendChild(document.createTextNode(t))}}(".resize-observer[data-v-b329ee4c]{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:transparent;pointer-events:none;display:block;overflow:hidden;opacity:0}.resize-observer[data-v-b329ee4c] object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}");var In={install:function t(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!t.installed){t.installed=!0;var i={};Nn(i,y,n),In.options=i,T.options=i,e.directive("tooltip",T),e.directive("close-popover",I),e.component("v-popover",U)}},get enabled(){return g.enabled},set enabled(t){g.enabled=t}},Bn=null;"undefined"!=typeof window?Bn=window.Vue:void 0!==t&&(Bn=t.Vue),Bn&&Bn.use(In),e.a=In}).call(this,n(3))},function(t,e,n){"use strict";(function(t){n.d(e,"a",(function(){return o}));var i=void 0;function r(){r.init||(r.init=!0,i=-1!==function(){var t=window.navigator.userAgent,e=t.indexOf("MSIE ");if(e>0)return parseInt(t.substring(e+5,t.indexOf(".",e)),10);if(t.indexOf("Trident/")>0){var n=t.indexOf("rv:");return parseInt(t.substring(n+3,t.indexOf(".",n)),10)}var i=t.indexOf("Edge/");return i>0?parseInt(t.substring(i+5,t.indexOf(".",i)),10):-1}())}var o={render:function(){var t=this.$createElement;return(this._self._c||t)("div",{staticClass:"resize-observer",attrs:{tabindex:"-1"}})},staticRenderFns:[],_scopeId:"data-v-b329ee4c",name:"resize-observer",methods:{compareAndNotify:function(){this._w===this.$el.offsetWidth&&this._h===this.$el.offsetHeight||(this._w=this.$el.offsetWidth,this._h=this.$el.offsetHeight,this.$emit("notify"))},addResizeHandlers:function(){this._resizeObject.contentDocument.defaultView.addEventListener("resize",this.compareAndNotify),this.compareAndNotify()},removeResizeHandlers:function(){this._resizeObject&&this._resizeObject.onload&&(!i&&this._resizeObject.contentDocument&&this._resizeObject.contentDocument.defaultView.removeEventListener("resize",this.compareAndNotify),delete this._resizeObject.onload)}},mounted:function(){var t=this;r(),this.$nextTick((function(){t._w=t.$el.offsetWidth,t._h=t.$el.offsetHeight}));var e=document.createElement("object");this._resizeObject=e,e.setAttribute("aria-hidden","true"),e.setAttribute("tabindex",-1),e.onload=this.addResizeHandlers,e.type="text/html",i&&this.$el.appendChild(e),e.data="about:blank",i||this.$el.appendChild(e)},beforeDestroy:function(){this.removeResizeHandlers()}};var a={version:"0.4.5",install:function(t){t.component("resize-observer",o),t.component("ResizeObserver",o)}},s=null;"undefined"!=typeof window?s=window.Vue:void 0!==t&&(s=t.Vue),s&&s.use(a)}).call(this,n(3))},,function(t,e,n){var i=n(55);"string"==typeof i&&(i=[[t.i,i,""]]);var r={insert:"head",singleton:!1};n(20)(i,r);i.locals&&(t.exports=i.locals)},function(t,e,n){var i=n(57);"string"==typeof i&&(i=[[t.i,i,""]]);var r={insert:"head",singleton:!1};n(20)(i,r);i.locals&&(t.exports=i.locals)},function(t,e,n){var i=n(59);"string"==typeof i&&(i=[[t.i,i,""]]);var r={insert:"head",singleton:!1};n(20)(i,r);i.locals&&(t.exports=i.locals)},function(t,e,n){var i=n(61);"string"==typeof i&&(i=[[t.i,i,""]]);var r={insert:"head",singleton:!1};n(20)(i,r);i.locals&&(t.exports=i.locals)},,function(t,e,n){var i=n(53),r={autoSetContainer:!1,appendToBody:!0},o={install:function(t){t.prototype.$clipboardConfig=r,t.prototype.$copyText=function(t,e){return new Promise((function(n,o){var a=document.createElement("button"),s=new i(a,{text:function(){return t},action:function(){return"copy"},container:"object"==typeof e?e:document.body});s.on("success",(function(t){s.destroy(),n(t)})),s.on("error",(function(t){s.destroy(),o(t)})),r.appendToBody&&document.body.appendChild(a),a.click(),r.appendToBody&&document.body.removeChild(a)}))},t.directive("clipboard",{bind:function(t,e,n){if("success"===e.arg)t._vClipboard_success=e.value;else if("error"===e.arg)t._vClipboard_error=e.value;else{var o=new i(t,{text:function(){return e.value},action:function(){return"cut"===e.arg?"cut":"copy"},container:r.autoSetContainer?t:void 0});o.on("success",(function(e){var n=t._vClipboard_success;n&&n(e)})),o.on("error",(function(e){var n=t._vClipboard_error;n&&n(e)})),t._vClipboard=o}},update:function(t,e){"success"===e.arg?t._vClipboard_success=e.value:"error"===e.arg?t._vClipboard_error=e.value:(t._vClipboard.text=function(){return e.value},t._vClipboard.action=function(){return"cut"===e.arg?"cut":"copy"})},unbind:function(t,e){"success"===e.arg?delete t._vClipboard_success:"error"===e.arg?delete t._vClipboard_error:(t._vClipboard.destroy(),delete t._vClipboard)}})},config:r};t.exports=o},,,,function(t,e,n){ +/*! + * clipboard.js v2.0.4 + * https://zenorocha.github.io/clipboard.js + * + * Licensed MIT © Zeno Rocha + */ +t.exports=function(t){var e={};function n(i){if(e[i])return e[i].exports;var r=e[i]={i:i,l:!1,exports:{}};return t[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)n.d(i,r,function(e){return t[e]}.bind(null,r));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=0)}([function(t,e,n){"use strict";var i="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},r=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}(),o=c(n(1)),a=c(n(3)),s=c(n(4));function c(t){return t&&t.__esModule?t:{default:t}}var l=function(t){function e(t,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var i=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return i.resolveOptions(n),i.listenClick(t),i}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,a.default),r(e,[{key:"resolveOptions",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof t.action?t.action:this.defaultAction,this.target="function"==typeof t.target?t.target:this.defaultTarget,this.text="function"==typeof t.text?t.text:this.defaultText,this.container="object"===i(t.container)?t.container:document.body}},{key:"listenClick",value:function(t){var e=this;this.listener=(0,s.default)(t,"click",(function(t){return e.onClick(t)}))}},{key:"onClick",value:function(t){var e=t.delegateTarget||t.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new o.default({action:this.action(e),target:this.target(e),text:this.text(e),container:this.container,trigger:e,emitter:this})}},{key:"defaultAction",value:function(t){return u("action",t)}},{key:"defaultTarget",value:function(t){var e=u("target",t);if(e)return document.querySelector(e)}},{key:"defaultText",value:function(t){return u("text",t)}},{key:"destroy",value:function(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)}}],[{key:"isSupported",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:["copy","cut"],e="string"==typeof t?[t]:t,n=!!document.queryCommandSupported;return e.forEach((function(t){n=n&&!!document.queryCommandSupported(t)})),n}}]),e}();function u(t,e){var n="data-clipboard-"+t;if(e.hasAttribute(n))return e.getAttribute(n)}t.exports=l},function(t,e,n){"use strict";var i,r="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},o=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}(),a=(i=n(2))&&i.__esModule?i:{default:i},s=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.resolveOptions(e),this.initSelection()}return o(t,[{key:"resolveOptions",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};this.action=t.action,this.container=t.container,this.emitter=t.emitter,this.target=t.target,this.text=t.text,this.trigger=t.trigger,this.selectedText=""}},{key:"initSelection",value:function(){this.text?this.selectFake():this.target&&this.selectTarget()}},{key:"selectFake",value:function(){var t=this,e="rtl"==document.documentElement.getAttribute("dir");this.removeFake(),this.fakeHandlerCallback=function(){return t.removeFake()},this.fakeHandler=this.container.addEventListener("click",this.fakeHandlerCallback)||!0,this.fakeElem=document.createElement("textarea"),this.fakeElem.style.fontSize="12pt",this.fakeElem.style.border="0",this.fakeElem.style.padding="0",this.fakeElem.style.margin="0",this.fakeElem.style.position="absolute",this.fakeElem.style[e?"right":"left"]="-9999px";var n=window.pageYOffset||document.documentElement.scrollTop;this.fakeElem.style.top=n+"px",this.fakeElem.setAttribute("readonly",""),this.fakeElem.value=this.text,this.container.appendChild(this.fakeElem),this.selectedText=(0,a.default)(this.fakeElem),this.copyText()}},{key:"removeFake",value:function(){this.fakeHandler&&(this.container.removeEventListener("click",this.fakeHandlerCallback),this.fakeHandler=null,this.fakeHandlerCallback=null),this.fakeElem&&(this.container.removeChild(this.fakeElem),this.fakeElem=null)}},{key:"selectTarget",value:function(){this.selectedText=(0,a.default)(this.target),this.copyText()}},{key:"copyText",value:function(){var t=void 0;try{t=document.execCommand(this.action)}catch(e){t=!1}this.handleResult(t)}},{key:"handleResult",value:function(t){this.emitter.emit(t?"success":"error",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})}},{key:"clearSelection",value:function(){this.trigger&&this.trigger.focus(),window.getSelection().removeAllRanges()}},{key:"destroy",value:function(){this.removeFake()}},{key:"action",set:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:"copy";if(this._action=t,"copy"!==this._action&&"cut"!==this._action)throw new Error('Invalid "action" value, use either "copy" or "cut"')},get:function(){return this._action}},{key:"target",set:function(t){if(void 0!==t){if(!t||"object"!==(void 0===t?"undefined":r(t))||1!==t.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===this.action&&t.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===this.action&&(t.hasAttribute("readonly")||t.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');this._target=t}},get:function(){return this._target}}]),t}();t.exports=s},function(t,e){t.exports=function(t){var e;if("SELECT"===t.nodeName)t.focus(),e=t.value;else if("INPUT"===t.nodeName||"TEXTAREA"===t.nodeName){var n=t.hasAttribute("readonly");n||t.setAttribute("readonly",""),t.select(),t.setSelectionRange(0,t.value.length),n||t.removeAttribute("readonly"),e=t.value}else{t.hasAttribute("contenteditable")&&t.focus();var i=window.getSelection(),r=document.createRange();r.selectNodeContents(t),i.removeAllRanges(),i.addRange(r),e=i.toString()}return e}},function(t,e){function n(){}n.prototype={on:function(t,e,n){var i=this.e||(this.e={});return(i[t]||(i[t]=[])).push({fn:e,ctx:n}),this},once:function(t,e,n){var i=this;function r(){i.off(t,r),e.apply(n,arguments)}return r._=e,this.on(t,r,n)},emit:function(t){for(var e=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),i=0,r=n.length;i<r;i++)n[i].fn.apply(n[i].ctx,e);return this},off:function(t,e){var n=this.e||(this.e={}),i=n[t],r=[];if(i&&e)for(var o=0,a=i.length;o<a;o++)i[o].fn!==e&&i[o].fn._!==e&&r.push(i[o]);return r.length?n[t]=r:delete n[t],this}},t.exports=n},function(t,e,n){var i=n(5),r=n(6);t.exports=function(t,e,n){if(!t&&!e&&!n)throw new Error("Missing required arguments");if(!i.string(e))throw new TypeError("Second argument must be a String");if(!i.fn(n))throw new TypeError("Third argument must be a Function");if(i.node(t))return p=e,f=n,(d=t).addEventListener(p,f),{destroy:function(){d.removeEventListener(p,f)}};if(i.nodeList(t))return c=t,l=e,u=n,Array.prototype.forEach.call(c,(function(t){t.addEventListener(l,u)})),{destroy:function(){Array.prototype.forEach.call(c,(function(t){t.removeEventListener(l,u)}))}};if(i.string(t))return o=t,a=e,s=n,r(document.body,o,a,s);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList");var o,a,s,c,l,u,d,p,f}},function(t,e){e.node=function(t){return void 0!==t&&t instanceof HTMLElement&&1===t.nodeType},e.nodeList=function(t){var n=Object.prototype.toString.call(t);return void 0!==t&&("[object NodeList]"===n||"[object HTMLCollection]"===n)&&"length"in t&&(0===t.length||e.node(t[0]))},e.string=function(t){return"string"==typeof t||t instanceof String},e.fn=function(t){return"[object Function]"===Object.prototype.toString.call(t)}},function(t,e,n){var i=n(7);function r(t,e,n,r,o){var a=function(t,e,n,r){return function(n){n.delegateTarget=i(n.target,e),n.delegateTarget&&r.call(t,n)}}.apply(this,arguments);return t.addEventListener(n,a,o),{destroy:function(){t.removeEventListener(n,a,o)}}}t.exports=function(t,e,n,i,o){return"function"==typeof t.addEventListener?r.apply(null,arguments):"function"==typeof n?r.bind(null,document).apply(null,arguments):("string"==typeof t&&(t=document.querySelectorAll(t)),Array.prototype.map.call(t,(function(t){return r(t,e,n,i,o)})))}},function(t,e){if("undefined"!=typeof Element&&!Element.prototype.matches){var n=Element.prototype;n.matches=n.matchesSelector||n.mozMatchesSelector||n.msMatchesSelector||n.oMatchesSelector||n.webkitMatchesSelector}t.exports=function(t,e){for(;t&&9!==t.nodeType;){if("function"==typeof t.matches&&t.matches(e))return t;t=t.parentNode}}}])},function(t,e,n){"use strict";var i=n(44);n.n(i).a},function(t,e,n){(t.exports=n(19)(!1)).push([t.i,".wiping[data-v-718a4666]{background-color:var(--color-background-darker)}td[data-v-718a4666]{border-top:1px solid var(--color-border);max-width:200px;white-space:normal;vertical-align:middle;position:relative}td.more[data-v-718a4666],td.client[data-v-718a4666]{overflow:visible;position:relative;width:44px;height:44px}td.token-name[data-v-718a4666]{padding:10px 6px}td.token-name.token-rename[data-v-718a4666]{padding:0}td.token-name input[data-v-718a4666]{width:100%;margin:0}td.token-name .wiping-warning[data-v-718a4666]{color:var(--color-text-lighter)}td.more[data-v-718a4666]{padding:0 10px}td.client div[data-v-718a4666]{opacity:0.57;width:44px;height:44px}\n",""])},function(t,e,n){"use strict";var i=n(45);n.n(i).a},function(t,e,n){(t.exports=n(19)(!1)).push([t.i,"table[data-v-184efa25]{width:100%;min-height:50px;padding-top:5px;max-width:580px}table th[data-v-184efa25]{opacity:.5;padding:10px 10px 10px 0}.token-list td>a.icon-more[data-v-184efa25]{transition:opacity var(--animation-quick)}.token-list a.icon-more[data-v-184efa25]{padding:14px;display:block;width:44px;height:44px;opacity:.5}.token-list tr:hover td>a.icon[data-v-184efa25],.token-list tr td>a.icon[data-v-184efa25]:focus,.token-list tr.active td>a.icon[data-v-184efa25]{opacity:1}\n",""])},function(t,e,n){"use strict";var i=n(46);n.n(i).a},function(t,e,n){(t.exports=n(19)(!1)).push([t.i,"#app-tokens-table tr>*:nth-child(2){padding-left:6px}#app-tokens-table tr>*:nth-child(3){text-align:right}\n",""])},function(t,e,n){"use strict";var i=n(47);n.n(i).a},function(t,e,n){(t.exports=n(19)(!1)).push([t.i,".app-password-row[data-v-be9cc7be]{display:table-row}.app-password-row .icon[data-v-be9cc7be]{background-size:16px 16px;display:inline-block;position:relative;top:3px;margin-left:5px;margin-right:8px}.app-password-label[data-v-be9cc7be]{display:table-cell;padding-right:1em;text-align:right;vertical-align:middle}.monospaced[data-v-be9cc7be]{width:245px;font-family:monospace}\n",""])},function(e,n,i){"use strict";i.r(n);var r=i(2),o=i(49),a=i.n(o),s=i(41),c=i(4),l=i.n(c),u=i(17),d=i.n(u),p=i(16),f={ie:/(?:MSIE|Trident|Trident\/7.0; rv)[ :](\d+)/,edge:/^Mozilla\/5\.0 \([^)]+\) AppleWebKit\/[0-9.]+ \(KHTML, like Gecko\) Chrome\/[0-9.]+ (?:Mobile Safari|Safari)\/[0-9.]+ Edge\/[0-9.]+$/,firefox:/^Mozilla\/5\.0 \([^)]*(Windows|OS X|Linux)[^)]+\) Gecko\/[0-9.]+ Firefox\/(\d+)(?:\.\d)?$/,chrome:/^Mozilla\/5\.0 \([^)]*(Windows|OS X|Linux)[^)]+\) AppleWebKit\/[0-9.]+ \(KHTML, like Gecko\) Chrome\/(\d+)[0-9.]+ (?:Mobile Safari|Safari)\/[0-9.]+$/,safari:/^Mozilla\/5\.0 \([^)]*(Windows|OS X)[^)]+\) AppleWebKit\/[0-9.]+ \(KHTML, like Gecko\)(?: Version\/([0-9]+)[0-9.]+)? Safari\/[0-9.A-Z]+$/,androidChrome:/Android.*(?:; (.*) Build\/).*Chrome\/(\d+)[0-9.]+/,iphone:/ *CPU +iPhone +OS +([0-9]+)_(?:[0-9_])+ +like +Mac +OS +X */,ipad:/\(iPad\; *CPU +OS +([0-9]+)_(?:[0-9_])+ +like +Mac +OS +X */,iosClient:/^Mozilla\/5\.0 \(iOS\) (ownCloud|Nextcloud)\-iOS.*$/,androidClient:/^Mozilla\/5\.0 \(Android\) ownCloud\-android.*$/,iosTalkClient:/^Mozilla\/5\.0 \(iOS\) Nextcloud\-Talk.*$/,androidTalkClient:/^Mozilla\/5\.0 \(Android\) Nextcloud\-Talk.*$/,davDroid:/DAV(droid|x5)\/([0-9.]+)/,webPirate:/(Sailfish).*WebPirate\/(\d+)/,sailfishBrowser:/(Sailfish).*SailfishBrowser\/(\d+)/},h={ie:t("setting","Internet Explorer"),edge:t("setting","Edge"),firefox:t("setting","Firefox"),chrome:t("setting","Google Chrome"),safari:t("setting","Safari"),androidChrome:t("setting","Google Chrome for Android"),iphone:t("setting","iPhone"),ipad:t("setting","iPad"),iosClient:t("setting","Nextcloud iOS app"),androidClient:t("setting","Nextcloud Android app"),iosTalkClient:t("setting","Nextcloud Talk for iOS"),androidTalkClient:t("setting","Nextcloud Talk for Android"),davDroid:"DAVdroid",webPirate:"WebPirate",sailfishBrowser:"SailfishBrowser"},v={ie:"icon-desktop",edge:"icon-desktop",firefox:"icon-desktop",chrome:"icon-desktop",safari:"icon-desktop",androidChrome:"icon-phone",iphone:"icon-phone",ipad:"icon-tablet",iosClient:"icon-phone",androidClient:"icon-phone",iosTalkClient:"icon-phone",androidTalkClient:"icon-phone",davDroid:"icon-phone",webPirate:"icon-link",sailfishBrowser:"icon-link"},m={name:"AuthToken",components:{Actions:p.Actions,ActionButton:p.ActionButton,ActionCheckbox:p.ActionCheckbox},props:{token:{type:Object,required:!0}},computed:{lastActivityRelative:function(){return OC.Util.relativeModifiedDate(1e3*this.token.lastActivity)},lastActivity:function(){return OC.Util.formatDate(1e3*this.token.lastActivity,"LLL")},iconName:function(){var e=this.token.name.match(/Mozilla\/5\.0 \((\w+)\) (?:mirall|csyncoC)\/(\d+\.\d+\.\d+)/),n="";e&&(this.token.name=t("settings","Sync client - {os}",{os:e[1],version:e[2]}),n="icon-desktop");var i=this.token.name,r=this.token.name;for(var o in f)(e=i.match(f[o]))&&(r=e[2]&&e[1]?h[o]+" "+e[2]+" - "+e[1]:e[1]?h[o]+" "+e[1]:h[o],n=v[o]);return this.token.current&&(r=t("settings","This session")),{icon:n,name:r}},wiping:function(){return 2===this.token.type}},data:function(){return{showMore:this.token.canScope||this.token.canDelete,renaming:!1,newName:"",actionOpen:!1}},methods:{startRename:function(){var t=this;this.actionOpen=!1,this.newName=this.token.name,this.renaming=!0,this.$nextTick((function(){t.$refs.input.select()}))},cancelRename:function(){this.renaming=!1},revoke:function(){this.actionOpen=!1,this.$emit("delete",this.token)},rename:function(){this.renaming=!1,this.$emit("rename",this.token,this.newName)},wipe:function(){this.actionOpen=!1,this.$emit("wipe",this.token)}}},A=(i(54),i(5)),g={name:"AuthTokenList",components:{AuthToken:Object(A.a)(m,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("tr",{class:t.wiping,attrs:{"data-id":t.token.id}},[n("td",{staticClass:"client"},[n("div",{class:t.iconName.icon})]),t._v(" "),n("td",{staticClass:"token-name"},[t.token.canRename&&t.renaming?n("input",{directives:[{name:"model",rawName:"v-model",value:t.newName,expression:"newName"}],ref:"input",attrs:{type:"text"},domProps:{value:t.newName},on:{keyup:[function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:t.rename(e)},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"esc",27,e.key,["Esc","Escape"])?null:t.cancelRename(e)}],blur:t.cancelRename,input:function(e){e.target.composing||(t.newName=e.target.value)}}}):n("span",[t._v(t._s(t.iconName.name))]),t._v(" "),t.wiping?n("span",{staticClass:"wiping-warning"},[t._v("("+t._s(t.t("settings","Marked for remote wipe"))+")")]):t._e()]),t._v(" "),n("td",[n("span",{directives:[{name:"tooltip",rawName:"v-tooltip",value:t.lastActivity,expression:"lastActivity"}],staticClass:"last-activity"},[t._v(t._s(t.lastActivityRelative))])]),t._v(" "),n("td",{staticClass:"more"},[t.token.current?t._e():n("Actions",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:t.t("settings","Device settings"),container:"body"},expression:"{\n\t\t\t\tcontent: t('settings', 'Device settings'),\n\t\t\t\tcontainer: 'body'\n\t\t\t}",modifiers:{auto:!0}}],attrs:{actions:t.actions,open:t.actionOpen},on:{"update:open":function(e){t.actionOpen=e}}},[1===t.token.type?n("ActionCheckbox",{attrs:{checked:t.token.scope.filesystem},on:{change:function(e){return e.stopPropagation(),e.preventDefault(),t.$emit("toggleScope",t.token,"filesystem",!t.token.scope.filesystem)}}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Allow filesystem access"))+"\n\t\t\t")]):t._e(),t._v(" "),t.token.canRename?n("ActionButton",{attrs:{icon:"icon-rename"},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.startRename(e)}}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Rename"))+"\n\t\t\t")]):t._e(),t._v(" "),t.token.canDelete?[2!==t.token.type?[n("ActionButton",{attrs:{icon:"icon-delete"},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.revoke(e)}}},[t._v("\n\t\t\t\t\t\t"+t._s(t.t("settings","Revoke"))+"\n\t\t\t\t\t")]),t._v(" "),n("ActionButton",{attrs:{icon:"icon-delete"},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.wipe(e)}}},[t._v("\n\t\t\t\t\t\t"+t._s(t.t("settings","Wipe device"))+"\n\t\t\t\t\t")])]:2===t.token.type?n("ActionButton",{attrs:{icon:"icon-delete",title:t.t("settings","Revoke")},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.revoke(e)}}},[t._v("\n\t\t\t\t\t"+t._s(t.t("settings","Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet."))+"\n\t\t\t\t")]):t._e()]:t._e()],2)],1)])}),[],!1,null,"718a4666",null).exports},props:{tokens:{type:Array,required:!0}},computed:{sortedTokens:function(){return this.tokens.sort((function(t,e){var n=parseInt(t.lastActivity,10);return parseInt(e.lastActivity,10)-n}))}},methods:{toggleScope:function(t,e,n){this.$emit("toggleScope",t,e,n)},rename:function(t,e){this.$emit("rename",t,e)},onDelete:function(t){this.$emit("delete",t)},onWipe:function(t){this.$emit("wipe",t)}}},b=(i(56),i(58),Object(A.a)(g,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("table",{attrs:{id:"app-tokens-table"}},[t.tokens.length?n("thead",[n("tr",[n("th"),t._v(" "),n("th",[t._v(t._s(t.t("settings","Device")))]),t._v(" "),n("th",[t._v(t._s(t.t("settings","Last activity")))]),t._v(" "),n("th")])]):t._e(),t._v(" "),n("tbody",{staticClass:"token-list"},t._l(t.sortedTokens,(function(e){return n("AuthToken",{key:e.id,attrs:{token:e},on:{toggleScope:t.toggleScope,rename:t.rename,delete:t.onDelete,wipe:t.onWipe}})})),1)])}),[],!1,null,"184efa25",null).exports); +/*! + * vue-qrcode v1.0.1 + * https://fengyuanchen.github.io/vue-qrcode + * + * Copyright 2018-present Chen Fengyuan + * Released under the MIT license + * + * Date: 2019-06-29T08:20:19.827Z + */ +function y(){throw new Error("Dynamic requires are not currently supported by rollup-plugin-commonjs")}var _=function(t,e){return t(e={exports:{}},e.exports),e.exports}((function(t,e){t.exports=function t(e,n,i){function r(a,s){if(!n[a]){if(!e[a]){if(!s&&y)return y();if(o)return o(a,!0);var c=new Error("Cannot find module '"+a+"'");throw c.code="MODULE_NOT_FOUND",c}var l=n[a]={exports:{}};e[a][0].call(l.exports,(function(t){return r(e[a][1][t]||t)}),l,l.exports,t,e,n,i)}return n[a].exports}for(var o=y,a=0;a<i.length;a++)r(i[a]);return r}({1:[function(t,e,n){e.exports=function(){return"function"==typeof Promise&&Promise.prototype&&Promise.prototype.then}},{}],2:[function(t,e,n){var i=t("./utils").getSymbolSize;n.getRowColCoords=function(t){if(1===t)return[];for(var e=Math.floor(t/7)+2,n=i(t),r=145===n?26:2*Math.ceil((n-13)/(2*e-2)),o=[n-7],a=1;a<e-1;a++)o[a]=o[a-1]-r;return o.push(6),o.reverse()},n.getPositions=function(t){for(var e=[],i=n.getRowColCoords(t),r=i.length,o=0;o<r;o++)for(var a=0;a<r;a++)0===o&&0===a||0===o&&a===r-1||o===r-1&&0===a||e.push([i[o],i[a]]);return e}},{"./utils":21}],3:[function(t,e,n){var i=t("./mode"),r=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function o(t){this.mode=i.ALPHANUMERIC,this.data=t}o.getBitsLength=function(t){return 11*Math.floor(t/2)+t%2*6},o.prototype.getLength=function(){return this.data.length},o.prototype.getBitsLength=function(){return o.getBitsLength(this.data.length)},o.prototype.write=function(t){var e;for(e=0;e+2<=this.data.length;e+=2){var n=45*r.indexOf(this.data[e]);n+=r.indexOf(this.data[e+1]),t.put(n,11)}this.data.length%2&&t.put(r.indexOf(this.data[e]),6)},e.exports=o},{"./mode":14}],4:[function(t,e,n){function i(){this.buffer=[],this.length=0}i.prototype={get:function(t){var e=Math.floor(t/8);return 1==(this.buffer[e]>>>7-t%8&1)},put:function(t,e){for(var n=0;n<e;n++)this.putBit(1==(t>>>e-n-1&1))},getLengthInBits:function(){return this.length},putBit:function(t){var e=Math.floor(this.length/8);this.buffer.length<=e&&this.buffer.push(0),t&&(this.buffer[e]|=128>>>this.length%8),this.length++}},e.exports=i},{}],5:[function(t,e,n){var i=t("../utils/buffer");function r(t){if(!t||t<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=t,this.data=new i(t*t),this.data.fill(0),this.reservedBit=new i(t*t),this.reservedBit.fill(0)}r.prototype.set=function(t,e,n,i){var r=t*this.size+e;this.data[r]=n,i&&(this.reservedBit[r]=!0)},r.prototype.get=function(t,e){return this.data[t*this.size+e]},r.prototype.xor=function(t,e,n){this.data[t*this.size+e]^=n},r.prototype.isReserved=function(t,e){return this.reservedBit[t*this.size+e]},e.exports=r},{"../utils/buffer":28}],6:[function(t,e,n){var i=t("../utils/buffer"),r=t("./mode");function o(t){this.mode=r.BYTE,this.data=new i(t)}o.getBitsLength=function(t){return 8*t},o.prototype.getLength=function(){return this.data.length},o.prototype.getBitsLength=function(){return o.getBitsLength(this.data.length)},o.prototype.write=function(t){for(var e=0,n=this.data.length;e<n;e++)t.put(this.data[e],8)},e.exports=o},{"../utils/buffer":28,"./mode":14}],7:[function(t,e,n){var i=t("./error-correction-level"),r=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],o=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];n.getBlocksCount=function(t,e){switch(e){case i.L:return r[4*(t-1)+0];case i.M:return r[4*(t-1)+1];case i.Q:return r[4*(t-1)+2];case i.H:return r[4*(t-1)+3];default:return}},n.getTotalCodewordsCount=function(t,e){switch(e){case i.L:return o[4*(t-1)+0];case i.M:return o[4*(t-1)+1];case i.Q:return o[4*(t-1)+2];case i.H:return o[4*(t-1)+3];default:return}}},{"./error-correction-level":8}],8:[function(t,e,n){n.L={bit:1},n.M={bit:0},n.Q={bit:3},n.H={bit:2},n.isValid=function(t){return t&&void 0!==t.bit&&t.bit>=0&&t.bit<4},n.from=function(t,e){if(n.isValid(t))return t;try{return function(t){if("string"!=typeof t)throw new Error("Param is not a string");switch(t.toLowerCase()){case"l":case"low":return n.L;case"m":case"medium":return n.M;case"q":case"quartile":return n.Q;case"h":case"high":return n.H;default:throw new Error("Unknown EC Level: "+t)}}(t)}catch(t){return e}}},{}],9:[function(t,e,n){var i=t("./utils").getSymbolSize;n.getPositions=function(t){var e=i(t);return[[0,0],[e-7,0],[0,e-7]]}},{"./utils":21}],10:[function(t,e,n){var i=t("./utils"),r=i.getBCHDigit(1335);n.getEncodedBits=function(t,e){for(var n=t.bit<<3|e,o=n<<10;i.getBCHDigit(o)-r>=0;)o^=1335<<i.getBCHDigit(o)-r;return 21522^(n<<10|o)}},{"./utils":21}],11:[function(t,e,n){var i=t("../utils/buffer");if(i.alloc)var r=i.alloc(512),o=i.alloc(256);else r=new i(512),o=new i(256);!function(){for(var t=1,e=0;e<255;e++)r[e]=t,o[t]=e,256&(t<<=1)&&(t^=285);for(e=255;e<512;e++)r[e]=r[e-255]}(),n.log=function(t){if(t<1)throw new Error("log("+t+")");return o[t]},n.exp=function(t){return r[t]},n.mul=function(t,e){return 0===t||0===e?0:r[o[t]+o[e]]}},{"../utils/buffer":28}],12:[function(t,e,n){var i=t("./mode"),r=t("./utils");function o(t){this.mode=i.KANJI,this.data=t}o.getBitsLength=function(t){return 13*t},o.prototype.getLength=function(){return this.data.length},o.prototype.getBitsLength=function(){return o.getBitsLength(this.data.length)},o.prototype.write=function(t){var e;for(e=0;e<this.data.length;e++){var n=r.toSJIS(this.data[e]);if(n>=33088&&n<=40956)n-=33088;else{if(!(n>=57408&&n<=60351))throw new Error("Invalid SJIS character: "+this.data[e]+"\nMake sure your charset is UTF-8");n-=49472}n=192*(n>>>8&255)+(255&n),t.put(n,13)}},e.exports=o},{"./mode":14,"./utils":21}],13:[function(t,e,n){n.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var i=3,r=3,o=40,a=10;function s(t,e,i){switch(t){case n.Patterns.PATTERN000:return(e+i)%2==0;case n.Patterns.PATTERN001:return e%2==0;case n.Patterns.PATTERN010:return i%3==0;case n.Patterns.PATTERN011:return(e+i)%3==0;case n.Patterns.PATTERN100:return(Math.floor(e/2)+Math.floor(i/3))%2==0;case n.Patterns.PATTERN101:return e*i%2+e*i%3==0;case n.Patterns.PATTERN110:return(e*i%2+e*i%3)%2==0;case n.Patterns.PATTERN111:return(e*i%3+(e+i)%2)%2==0;default:throw new Error("bad maskPattern:"+t)}}n.isValid=function(t){return null!=t&&""!==t&&!isNaN(t)&&t>=0&&t<=7},n.from=function(t){return n.isValid(t)?parseInt(t,10):void 0},n.getPenaltyN1=function(t){for(var e=t.size,n=0,r=0,o=0,a=null,s=null,c=0;c<e;c++){r=o=0,a=s=null;for(var l=0;l<e;l++){var u=t.get(c,l);u===a?r++:(r>=5&&(n+=i+(r-5)),a=u,r=1),(u=t.get(l,c))===s?o++:(o>=5&&(n+=i+(o-5)),s=u,o=1)}r>=5&&(n+=i+(r-5)),o>=5&&(n+=i+(o-5))}return n},n.getPenaltyN2=function(t){for(var e=t.size,n=0,i=0;i<e-1;i++)for(var o=0;o<e-1;o++){var a=t.get(i,o)+t.get(i,o+1)+t.get(i+1,o)+t.get(i+1,o+1);4!==a&&0!==a||n++}return n*r},n.getPenaltyN3=function(t){for(var e=t.size,n=0,i=0,r=0,a=0;a<e;a++){i=r=0;for(var s=0;s<e;s++)i=i<<1&2047|t.get(a,s),s>=10&&(1488===i||93===i)&&n++,r=r<<1&2047|t.get(s,a),s>=10&&(1488===r||93===r)&&n++}return n*o},n.getPenaltyN4=function(t){for(var e=0,n=t.data.length,i=0;i<n;i++)e+=t.data[i];return Math.abs(Math.ceil(100*e/n/5)-10)*a},n.applyMask=function(t,e){for(var n=e.size,i=0;i<n;i++)for(var r=0;r<n;r++)e.isReserved(r,i)||e.xor(r,i,s(t,r,i))},n.getBestMask=function(t,e){for(var i=Object.keys(n.Patterns).length,r=0,o=1/0,a=0;a<i;a++){e(a),n.applyMask(a,t);var s=n.getPenaltyN1(t)+n.getPenaltyN2(t)+n.getPenaltyN3(t)+n.getPenaltyN4(t);n.applyMask(a,t),s<o&&(o=s,r=a)}return r}},{}],14:[function(t,e,n){var i=t("./version-check"),r=t("./regex");n.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]},n.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]},n.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]},n.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]},n.MIXED={bit:-1},n.getCharCountIndicator=function(t,e){if(!t.ccBits)throw new Error("Invalid mode: "+t);if(!i.isValid(e))throw new Error("Invalid version: "+e);return e>=1&&e<10?t.ccBits[0]:e<27?t.ccBits[1]:t.ccBits[2]},n.getBestModeForData=function(t){return r.testNumeric(t)?n.NUMERIC:r.testAlphanumeric(t)?n.ALPHANUMERIC:r.testKanji(t)?n.KANJI:n.BYTE},n.toString=function(t){if(t&&t.id)return t.id;throw new Error("Invalid mode")},n.isValid=function(t){return t&&t.bit&&t.ccBits},n.from=function(t,e){if(n.isValid(t))return t;try{return function(t){if("string"!=typeof t)throw new Error("Param is not a string");switch(t.toLowerCase()){case"numeric":return n.NUMERIC;case"alphanumeric":return n.ALPHANUMERIC;case"kanji":return n.KANJI;case"byte":return n.BYTE;default:throw new Error("Unknown mode: "+t)}}(t)}catch(t){return e}}},{"./regex":19,"./version-check":22}],15:[function(t,e,n){var i=t("./mode");function r(t){this.mode=i.NUMERIC,this.data=t.toString()}r.getBitsLength=function(t){return 10*Math.floor(t/3)+(t%3?t%3*3+1:0)},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(t){var e,n,i;for(e=0;e+3<=this.data.length;e+=3)n=this.data.substr(e,3),i=parseInt(n,10),t.put(i,10);var r=this.data.length-e;r>0&&(n=this.data.substr(e),i=parseInt(n,10),t.put(i,3*r+1))},e.exports=r},{"./mode":14}],16:[function(t,e,n){var i=t("../utils/buffer"),r=t("./galois-field");n.mul=function(t,e){var n=new i(t.length+e.length-1);n.fill(0);for(var o=0;o<t.length;o++)for(var a=0;a<e.length;a++)n[o+a]^=r.mul(t[o],e[a]);return n},n.mod=function(t,e){for(var n=new i(t);n.length-e.length>=0;){for(var o=n[0],a=0;a<e.length;a++)n[a]^=r.mul(e[a],o);for(var s=0;s<n.length&&0===n[s];)s++;n=n.slice(s)}return n},n.generateECPolynomial=function(t){for(var e=new i([1]),o=0;o<t;o++)e=n.mul(e,[1,r.exp(o)]);return e}},{"../utils/buffer":28,"./galois-field":11}],17:[function(t,e,n){var i=t("../utils/buffer"),r=t("./utils"),o=t("./error-correction-level"),a=t("./bit-buffer"),s=t("./bit-matrix"),c=t("./alignment-pattern"),l=t("./finder-pattern"),u=t("./mask-pattern"),d=t("./error-correction-code"),p=t("./reed-solomon-encoder"),f=t("./version"),h=t("./format-info"),v=t("./mode"),m=t("./segments"),A=t("isarray");function g(t,e,n){var i,r,o=t.size,a=h.getEncodedBits(e,n);for(i=0;i<15;i++)r=1==(a>>i&1),i<6?t.set(i,8,r,!0):i<8?t.set(i+1,8,r,!0):t.set(o-15+i,8,r,!0),i<8?t.set(8,o-i-1,r,!0):i<9?t.set(8,15-i-1+1,r,!0):t.set(8,15-i-1,r,!0);t.set(o-8,8,1,!0)}function b(t,e,n){var o=new a;n.forEach((function(e){o.put(e.mode.bit,4),o.put(e.getLength(),v.getCharCountIndicator(e.mode,t)),e.write(o)}));var s=8*(r.getSymbolTotalCodewords(t)-d.getTotalCodewordsCount(t,e));for(o.getLengthInBits()+4<=s&&o.put(0,4);o.getLengthInBits()%8!=0;)o.putBit(0);for(var c=(s-o.getLengthInBits())/8,l=0;l<c;l++)o.put(l%2?17:236,8);return function(t,e,n){for(var o=r.getSymbolTotalCodewords(e),a=d.getTotalCodewordsCount(e,n),s=o-a,c=d.getBlocksCount(e,n),l=c-o%c,u=Math.floor(o/c),f=Math.floor(s/c),h=f+1,v=u-f,m=new p(v),A=0,g=new Array(c),b=new Array(c),y=0,_=new i(t.buffer),w=0;w<c;w++){var x=w<l?f:h;g[w]=_.slice(A,A+x),b[w]=m.encode(g[w]),A+=x,y=Math.max(y,x)}var C,k,T=new i(o),E=0;for(C=0;C<y;C++)for(k=0;k<c;k++)C<g[k].length&&(T[E++]=g[k][C]);for(C=0;C<v;C++)for(k=0;k<c;k++)T[E++]=b[k][C];return T}(o,t,e)}function y(t,e,n,i){var o;if(A(t))o=m.fromArray(t);else{if("string"!=typeof t)throw new Error("Invalid data");var a=e;if(!a){var d=m.rawSplit(t);a=f.getBestVersionForData(d,n)}o=m.fromString(t,a||40)}var p=f.getBestVersionForData(o,n);if(!p)throw new Error("The amount of data is too big to be stored in a QR Code");if(e){if(e<p)throw new Error("\nThe chosen QR Code version cannot contain this amount of data.\nMinimum version required to store current data is: "+p+".\n")}else e=p;var h=b(e,n,o),v=r.getSymbolSize(e),y=new s(v);return function(t,e){for(var n=t.size,i=l.getPositions(e),r=0;r<i.length;r++)for(var o=i[r][0],a=i[r][1],s=-1;s<=7;s++)if(!(o+s<=-1||n<=o+s))for(var c=-1;c<=7;c++)a+c<=-1||n<=a+c||(s>=0&&s<=6&&(0===c||6===c)||c>=0&&c<=6&&(0===s||6===s)||s>=2&&s<=4&&c>=2&&c<=4?t.set(o+s,a+c,!0,!0):t.set(o+s,a+c,!1,!0))}(y,e),function(t){for(var e=t.size,n=8;n<e-8;n++){var i=n%2==0;t.set(n,6,i,!0),t.set(6,n,i,!0)}}(y),function(t,e){for(var n=c.getPositions(e),i=0;i<n.length;i++)for(var r=n[i][0],o=n[i][1],a=-2;a<=2;a++)for(var s=-2;s<=2;s++)-2===a||2===a||-2===s||2===s||0===a&&0===s?t.set(r+a,o+s,!0,!0):t.set(r+a,o+s,!1,!0)}(y,e),g(y,n,0),e>=7&&function(t,e){for(var n,i,r,o=t.size,a=f.getEncodedBits(e),s=0;s<18;s++)n=Math.floor(s/3),i=s%3+o-8-3,r=1==(a>>s&1),t.set(n,i,r,!0),t.set(i,n,r,!0)}(y,e),function(t,e){for(var n=t.size,i=-1,r=n-1,o=7,a=0,s=n-1;s>0;s-=2)for(6===s&&s--;;){for(var c=0;c<2;c++)if(!t.isReserved(r,s-c)){var l=!1;a<e.length&&(l=1==(e[a]>>>o&1)),t.set(r,s-c,l),-1==--o&&(a++,o=7)}if((r+=i)<0||n<=r){r-=i,i=-i;break}}}(y,h),isNaN(i)&&(i=u.getBestMask(y,g.bind(null,y,n))),u.applyMask(i,y),g(y,n,i),{modules:y,version:e,errorCorrectionLevel:n,maskPattern:i,segments:o}}n.create=function(t,e){if(void 0===t||""===t)throw new Error("No input text");var n,i,a=o.M;return void 0!==e&&(a=o.from(e.errorCorrectionLevel,o.M),n=f.from(e.version),i=u.from(e.maskPattern),e.toSJISFunc&&r.setToSJISFunction(e.toSJISFunc)),y(t,n,a,i)}},{"../utils/buffer":28,"./alignment-pattern":2,"./bit-buffer":4,"./bit-matrix":5,"./error-correction-code":7,"./error-correction-level":8,"./finder-pattern":9,"./format-info":10,"./mask-pattern":13,"./mode":14,"./reed-solomon-encoder":18,"./segments":20,"./utils":21,"./version":23,isarray:30}],18:[function(t,e,n){var i=t("../utils/buffer"),r=t("./polynomial");function o(t){this.genPoly=void 0,this.degree=t,this.degree&&this.initialize(this.degree)}o.prototype.initialize=function(t){this.degree=t,this.genPoly=r.generateECPolynomial(this.degree)},o.prototype.encode=function(t){if(!this.genPoly)throw new Error("Encoder not initialized");var e=new i(this.degree);e.fill(0);var n=i.concat([t,e],t.length+this.degree),o=r.mod(n,this.genPoly),a=this.degree-o.length;if(a>0){var s=new i(this.degree);return s.fill(0),o.copy(s,a),s}return o},e.exports=o},{"../utils/buffer":28,"./polynomial":16}],19:[function(t,e,n){var i="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+",r="(?:(?![A-Z0-9 $%*+\\-./:]|"+(i=i.replace(/u/g,"\\u"))+")(?:.|[\r\n]))+";n.KANJI=new RegExp(i,"g"),n.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g"),n.BYTE=new RegExp(r,"g"),n.NUMERIC=new RegExp("[0-9]+","g"),n.ALPHANUMERIC=new RegExp("[A-Z $%*+\\-./:]+","g");var o=new RegExp("^"+i+"$"),a=new RegExp("^[0-9]+$"),s=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");n.testKanji=function(t){return o.test(t)},n.testNumeric=function(t){return a.test(t)},n.testAlphanumeric=function(t){return s.test(t)}},{}],20:[function(t,e,n){var i=t("./mode"),r=t("./numeric-data"),o=t("./alphanumeric-data"),a=t("./byte-data"),s=t("./kanji-data"),c=t("./regex"),l=t("./utils"),u=t("dijkstrajs");function d(t){return unescape(encodeURIComponent(t)).length}function p(t,e,n){for(var i,r=[];null!==(i=t.exec(n));)r.push({data:i[0],index:i.index,mode:e,length:i[0].length});return r}function f(t){var e,n,r=p(c.NUMERIC,i.NUMERIC,t),o=p(c.ALPHANUMERIC,i.ALPHANUMERIC,t);return l.isKanjiModeEnabled()?(e=p(c.BYTE,i.BYTE,t),n=p(c.KANJI,i.KANJI,t)):(e=p(c.BYTE_KANJI,i.BYTE,t),n=[]),r.concat(o,e,n).sort((function(t,e){return t.index-e.index})).map((function(t){return{data:t.data,mode:t.mode,length:t.length}}))}function h(t,e){switch(e){case i.NUMERIC:return r.getBitsLength(t);case i.ALPHANUMERIC:return o.getBitsLength(t);case i.KANJI:return s.getBitsLength(t);case i.BYTE:return a.getBitsLength(t)}}function v(t,e){var n,c=i.getBestModeForData(t);if((n=i.from(e,c))!==i.BYTE&&n.bit<c.bit)throw new Error('"'+t+'" cannot be encoded with mode '+i.toString(n)+".\n Suggested mode is: "+i.toString(c));switch(n!==i.KANJI||l.isKanjiModeEnabled()||(n=i.BYTE),n){case i.NUMERIC:return new r(t);case i.ALPHANUMERIC:return new o(t);case i.KANJI:return new s(t);case i.BYTE:return new a(t)}}n.fromArray=function(t){return t.reduce((function(t,e){return"string"==typeof e?t.push(v(e,null)):e.data&&t.push(v(e.data,e.mode)),t}),[])},n.fromString=function(t,e){for(var r=function(t,e){for(var n={},r={start:{}},o=["start"],a=0;a<t.length;a++){for(var s=t[a],c=[],l=0;l<s.length;l++){var u=s[l],d=""+a+l;c.push(d),n[d]={node:u,lastCount:0},r[d]={};for(var p=0;p<o.length;p++){var f=o[p];n[f]&&n[f].node.mode===u.mode?(r[f][d]=h(n[f].lastCount+u.length,u.mode)-h(n[f].lastCount,u.mode),n[f].lastCount+=u.length):(n[f]&&(n[f].lastCount=u.length),r[f][d]=h(u.length,u.mode)+4+i.getCharCountIndicator(u.mode,e))}}o=c}for(p=0;p<o.length;p++)r[o[p]].end=0;return{map:r,table:n}}(function(t){for(var e=[],n=0;n<t.length;n++){var r=t[n];switch(r.mode){case i.NUMERIC:e.push([r,{data:r.data,mode:i.ALPHANUMERIC,length:r.length},{data:r.data,mode:i.BYTE,length:r.length}]);break;case i.ALPHANUMERIC:e.push([r,{data:r.data,mode:i.BYTE,length:r.length}]);break;case i.KANJI:e.push([r,{data:r.data,mode:i.BYTE,length:d(r.data)}]);break;case i.BYTE:e.push([{data:r.data,mode:i.BYTE,length:d(r.data)}])}}return e}(f(t,l.isKanjiModeEnabled())),e),o=u.find_path(r.map,"start","end"),a=[],s=1;s<o.length-1;s++)a.push(r.table[o[s]].node);return n.fromArray(function(t){return t.reduce((function(t,e){var n=t.length-1>=0?t[t.length-1]:null;return n&&n.mode===e.mode?(t[t.length-1].data+=e.data,t):(t.push(e),t)}),[])}(a))},n.rawSplit=function(t){return n.fromArray(f(t,l.isKanjiModeEnabled()))}},{"./alphanumeric-data":3,"./byte-data":6,"./kanji-data":12,"./mode":14,"./numeric-data":15,"./regex":19,"./utils":21,dijkstrajs:29}],21:[function(t,e,n){var i,r=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];n.getSymbolSize=function(t){if(!t)throw new Error('"version" cannot be null or undefined');if(t<1||t>40)throw new Error('"version" should be in range from 1 to 40');return 4*t+17},n.getSymbolTotalCodewords=function(t){return r[t]},n.getBCHDigit=function(t){for(var e=0;0!==t;)e++,t>>>=1;return e},n.setToSJISFunction=function(t){if("function"!=typeof t)throw new Error('"toSJISFunc" is not a valid function.');i=t},n.isKanjiModeEnabled=function(){return void 0!==i},n.toSJIS=function(t){return i(t)}},{}],22:[function(t,e,n){n.isValid=function(t){return!isNaN(t)&&t>=1&&t<=40}},{}],23:[function(t,e,n){var i=t("./utils"),r=t("./error-correction-code"),o=t("./error-correction-level"),a=t("./mode"),s=t("./version-check"),c=t("isarray"),l=i.getBCHDigit(7973);function u(t,e){return a.getCharCountIndicator(t,e)+4}function d(t,e){var n=0;return t.forEach((function(t){var i=u(t.mode,e);n+=i+t.getBitsLength()})),n}n.from=function(t,e){return s.isValid(t)?parseInt(t,10):e},n.getCapacity=function(t,e,n){if(!s.isValid(t))throw new Error("Invalid QR Code version");void 0===n&&(n=a.BYTE);var o=8*(i.getSymbolTotalCodewords(t)-r.getTotalCodewordsCount(t,e));if(n===a.MIXED)return o;var c=o-u(n,t);switch(n){case a.NUMERIC:return Math.floor(c/10*3);case a.ALPHANUMERIC:return Math.floor(c/11*2);case a.KANJI:return Math.floor(c/13);case a.BYTE:default:return Math.floor(c/8)}},n.getBestVersionForData=function(t,e){var i,r=o.from(e,o.M);if(c(t)){if(t.length>1)return function(t,e){for(var i=1;i<=40;i++)if(d(t,i)<=n.getCapacity(i,e,a.MIXED))return i}(t,r);if(0===t.length)return 1;i=t[0]}else i=t;return function(t,e,i){for(var r=1;r<=40;r++)if(e<=n.getCapacity(r,i,t))return r}(i.mode,i.getLength(),r)},n.getEncodedBits=function(t){if(!s.isValid(t)||t<7)throw new Error("Invalid QR Code version");for(var e=t<<12;i.getBCHDigit(e)-l>=0;)e^=7973<<i.getBCHDigit(e)-l;return t<<12|e}},{"./error-correction-code":7,"./error-correction-level":8,"./mode":14,"./utils":21,"./version-check":22,isarray:30}],24:[function(t,e,n){var i=t("./can-promise"),r=t("./core/qrcode"),o=t("./renderer/canvas"),a=t("./renderer/svg-tag.js");function s(t,e,n,o,a){var s=[].slice.call(arguments,1),c=s.length,l="function"==typeof s[c-1];if(!l&&!i())throw new Error("Callback required as last argument");if(!l){if(c<1)throw new Error("Too few arguments provided");return 1===c?(n=e,e=o=void 0):2!==c||e.getContext||(o=n,n=e,e=void 0),new Promise((function(i,a){try{var s=r.create(n,o);i(t(s,e,o))}catch(t){a(t)}}))}if(c<2)throw new Error("Too few arguments provided");2===c?(a=n,n=e,e=o=void 0):3===c&&(e.getContext&&void 0===a?(a=o,o=void 0):(a=o,o=n,n=e,e=void 0));try{var u=r.create(n,o);a(null,t(u,e,o))}catch(t){a(t)}}n.create=r.create,n.toCanvas=s.bind(null,o.render),n.toDataURL=s.bind(null,o.renderToDataURL),n.toString=s.bind(null,(function(t,e,n){return a.render(t,n)}))},{"./can-promise":1,"./core/qrcode":17,"./renderer/canvas":25,"./renderer/svg-tag.js":26}],25:[function(t,e,n){var i=t("./utils");n.render=function(t,e,n){var r=n,o=e;void 0!==r||e&&e.getContext||(r=e,e=void 0),e||(o=function(){try{return document.createElement("canvas")}catch(t){throw new Error("You need to specify a canvas element")}}()),r=i.getOptions(r);var a=i.getImageWidth(t.modules.size,r),s=o.getContext("2d"),c=s.createImageData(a,a);return i.qrToImageData(c.data,t,r),function(t,e,n){t.clearRect(0,0,e.width,e.height),e.style||(e.style={}),e.height=n,e.width=n,e.style.height=n+"px",e.style.width=n+"px"}(s,o,a),s.putImageData(c,0,0),o},n.renderToDataURL=function(t,e,i){var r=i;void 0!==r||e&&e.getContext||(r=e,e=void 0),r||(r={});var o=n.render(t,e,r),a=r.type||"image/png",s=r.rendererOpts||{};return o.toDataURL(a,s.quality)}},{"./utils":27}],26:[function(t,e,n){var i=t("./utils");function r(t,e){var n=t.a/255,i=e+'="'+t.hex+'"';return n<1?i+" "+e+'-opacity="'+n.toFixed(2).slice(1)+'"':i}function o(t,e,n){var i=t+e;return void 0!==n&&(i+=" "+n),i}n.render=function(t,e,n){var a=i.getOptions(e),s=t.modules.size,c=t.modules.data,l=s+2*a.margin,u=a.color.light.a?"<path "+r(a.color.light,"fill")+' d="M0 0h'+l+"v"+l+'H0z"/>':"",d="<path "+r(a.color.dark,"stroke")+' d="'+function(t,e,n){for(var i="",r=0,a=!1,s=0,c=0;c<t.length;c++){var l=Math.floor(c%e),u=Math.floor(c/e);l||a||(a=!0),t[c]?(s++,c>0&&l>0&&t[c-1]||(i+=a?o("M",l+n,.5+u+n):o("m",r,0),r=0,a=!1),l+1<e&&t[c+1]||(i+=o("h",s),s=0)):r++}return i}(c,s,a.margin)+'"/>',p='viewBox="0 0 '+l+" "+l+'"',f='<svg xmlns="http://www.w3.org/2000/svg" '+(a.width?'width="'+a.width+'" height="'+a.width+'" ':"")+p+' shape-rendering="crispEdges">'+u+d+"</svg>\n";return"function"==typeof n&&n(null,f),f}},{"./utils":27}],27:[function(t,e,n){function i(t){if("string"!=typeof t)throw new Error("Color should be defined as hex string");var e=t.slice().replace("#","").split("");if(e.length<3||5===e.length||e.length>8)throw new Error("Invalid hex color: "+t);3!==e.length&&4!==e.length||(e=Array.prototype.concat.apply([],e.map((function(t){return[t,t]})))),6===e.length&&e.push("F","F");var n=parseInt(e.join(""),16);return{r:n>>24&255,g:n>>16&255,b:n>>8&255,a:255&n,hex:"#"+e.slice(0,6).join("")}}n.getOptions=function(t){t||(t={}),t.color||(t.color={});var e=void 0===t.margin||null===t.margin||t.margin<0?4:t.margin,n=t.width&&t.width>=21?t.width:void 0,r=t.scale||4;return{width:n,scale:n?4:r,margin:e,color:{dark:i(t.color.dark||"#000000ff"),light:i(t.color.light||"#ffffffff")},type:t.type,rendererOpts:t.rendererOpts||{}}},n.getScale=function(t,e){return e.width&&e.width>=t+2*e.margin?e.width/(t+2*e.margin):e.scale},n.getImageWidth=function(t,e){var i=n.getScale(t,e);return Math.floor((t+2*e.margin)*i)},n.qrToImageData=function(t,e,i){for(var r=e.modules.size,o=e.modules.data,a=n.getScale(r,i),s=Math.floor((r+2*i.margin)*a),c=i.margin*a,l=[i.color.light,i.color.dark],u=0;u<s;u++)for(var d=0;d<s;d++){var p=4*(u*s+d),f=i.color.light;u>=c&&d>=c&&u<s-c&&d<s-c&&(f=l[o[Math.floor((u-c)/a)*r+Math.floor((d-c)/a)]?1:0]),t[p++]=f.r,t[p++]=f.g,t[p++]=f.b,t[p]=f.a}}},{}],28:[function(t,e,n){var i=t("isarray");o.TYPED_ARRAY_SUPPORT=function(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()}catch(t){return!1}}();var r=o.TYPED_ARRAY_SUPPORT?2147483647:1073741823;function o(t,e,n){return o.TYPED_ARRAY_SUPPORT||this instanceof o?"number"==typeof t?c(this,t):function(t,e,n,i){if("number"==typeof e)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer?function(t,e,n,i){if(n<0||e.byteLength<n)throw new RangeError("'offset' is out of bounds");if(e.byteLength<n+(i||0))throw new RangeError("'length' is out of bounds");var r;return r=void 0===n&&void 0===i?new Uint8Array(e):void 0===i?new Uint8Array(e,n):new Uint8Array(e,n,i),o.TYPED_ARRAY_SUPPORT?r.__proto__=o.prototype:r=l(t,r),r}(t,e,n,i):"string"==typeof e?function(t,e){var n=0|d(e),i=s(t,n),r=i.write(e);return r!==n&&(i=i.slice(0,r)),i}(t,e):function(t,e){if(o.isBuffer(e)){var n=0|a(e.length),i=s(t,n);return 0===i.length?i:(e.copy(i,0,0,n),i)}if(e){if("undefined"!=typeof ArrayBuffer&&e.buffer instanceof ArrayBuffer||"length"in e)return"number"!=typeof e.length||(r=e.length)!=r?s(t,0):l(t,e);if("Buffer"===e.type&&Array.isArray(e.data))return l(t,e.data)}var r;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(t,e)}(this,t,e,n):new o(t,e,n)}function a(t){if(t>=r)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+r.toString(16)+" bytes");return 0|t}function s(t,e){var n;return o.TYPED_ARRAY_SUPPORT?(n=new Uint8Array(e)).__proto__=o.prototype:(null===(n=t)&&(n=new o(e)),n.length=e),n}function c(t,e){var n=s(t,e<0?0:0|a(e));if(!o.TYPED_ARRAY_SUPPORT)for(var i=0;i<e;++i)n[i]=0;return n}function l(t,e){for(var n=e.length<0?0:0|a(e.length),i=s(t,n),r=0;r<n;r+=1)i[r]=255&e[r];return i}function u(t,e){var n;e=e||1/0;for(var i=t.length,r=null,o=[],a=0;a<i;++a){if((n=t.charCodeAt(a))>55295&&n<57344){if(!r){if(n>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(a+1===i){(e-=3)>-1&&o.push(239,191,189);continue}r=n;continue}if(n<56320){(e-=3)>-1&&o.push(239,191,189),r=n;continue}n=65536+(r-55296<<10|n-56320)}else r&&(e-=3)>-1&&o.push(239,191,189);if(r=null,n<128){if((e-=1)<0)break;o.push(n)}else if(n<2048){if((e-=2)<0)break;o.push(n>>6|192,63&n|128)}else if(n<65536){if((e-=3)<0)break;o.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return o}function d(t){return o.isBuffer(t)?t.length:"undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer)?t.byteLength:("string"!=typeof t&&(t=""+t),0===t.length?0:u(t).length)}o.TYPED_ARRAY_SUPPORT&&(o.prototype.__proto__=Uint8Array.prototype,o.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&o[Symbol.species]===o&&Object.defineProperty(o,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1})),o.prototype.write=function(t,e,n){void 0===e?(n=this.length,e=0):void 0===n&&"string"==typeof e?(n=this.length,e=0):isFinite(e)&&(e|=0,isFinite(n)?n|=0:n=void 0);var i=this.length-e;if((void 0===n||n>i)&&(n=i),t.length>0&&(n<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");return function(t,e,n,i){return function(t,e,n,i){for(var r=0;r<i&&!(r+n>=e.length||r>=t.length);++r)e[r+n]=t[r];return r}(u(e,t.length-n),t,n,i)}(this,t,e,n)},o.prototype.slice=function(t,e){var n,i=this.length;if((t=~~t)<0?(t+=i)<0&&(t=0):t>i&&(t=i),(e=void 0===e?i:~~e)<0?(e+=i)<0&&(e=0):e>i&&(e=i),e<t&&(e=t),o.TYPED_ARRAY_SUPPORT)(n=this.subarray(t,e)).__proto__=o.prototype;else{var r=e-t;n=new o(r,void 0);for(var a=0;a<r;++a)n[a]=this[a+t]}return n},o.prototype.copy=function(t,e,n,i){if(n||(n=0),i||0===i||(i=this.length),e>=t.length&&(e=t.length),e||(e=0),i>0&&i<n&&(i=n),i===n)return 0;if(0===t.length||0===this.length)return 0;if(e<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("sourceStart out of bounds");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),t.length-e<i-n&&(i=t.length-e+n);var r,a=i-n;if(this===t&&n<e&&e<i)for(r=a-1;r>=0;--r)t[r+e]=this[r+n];else if(a<1e3||!o.TYPED_ARRAY_SUPPORT)for(r=0;r<a;++r)t[r+e]=this[r+n];else Uint8Array.prototype.set.call(t,this.subarray(n,n+a),e);return a},o.prototype.fill=function(t,e,n){if("string"==typeof t){if("string"==typeof e?(e=0,n=this.length):"string"==typeof n&&(n=this.length),1===t.length){var i=t.charCodeAt(0);i<256&&(t=i)}}else"number"==typeof t&&(t&=255);if(e<0||this.length<e||this.length<n)throw new RangeError("Out of range index");if(n<=e)return this;var r;if(e>>>=0,n=void 0===n?this.length:n>>>0,t||(t=0),"number"==typeof t)for(r=e;r<n;++r)this[r]=t;else{var a=o.isBuffer(t)?t:new o(t),s=a.length;for(r=0;r<n-e;++r)this[r+e]=a[r%s]}return this},o.concat=function(t,e){if(!i(t))throw new TypeError('"list" argument must be an Array of Buffers');if(0===t.length)return s(null,0);var n;if(void 0===e)for(e=0,n=0;n<t.length;++n)e+=t[n].length;var r=c(null,e),a=0;for(n=0;n<t.length;++n){var l=t[n];if(!o.isBuffer(l))throw new TypeError('"list" argument must be an Array of Buffers');l.copy(r,a),a+=l.length}return r},o.byteLength=d,o.prototype._isBuffer=!0,o.isBuffer=function(t){return!(null==t||!t._isBuffer)},e.exports=o},{isarray:30}],29:[function(t,e,n){var i={single_source_shortest_paths:function(t,e,n){var r={},o={};o[e]=0;var a,s,c,l,u,d,p,f=i.PriorityQueue.make();for(f.push(e,0);!f.empty();)for(c in s=(a=f.pop()).value,l=a.cost,u=t[s]||{})u.hasOwnProperty(c)&&(d=l+u[c],p=o[c],(void 0===o[c]||p>d)&&(o[c]=d,f.push(c,d),r[c]=s));if(void 0!==n&&void 0===o[n]){var h=["Could not find a path from ",e," to ",n,"."].join("");throw new Error(h)}return r},extract_shortest_path_from_predecessor_list:function(t,e){for(var n=[],i=e;i;)n.push(i),t[i],i=t[i];return n.reverse(),n},find_path:function(t,e,n){var r=i.single_source_shortest_paths(t,e,n);return i.extract_shortest_path_from_predecessor_list(r,n)},PriorityQueue:{make:function(t){var e,n=i.PriorityQueue,r={};for(e in t=t||{},n)n.hasOwnProperty(e)&&(r[e]=n[e]);return r.queue=[],r.sorter=t.sorter||n.default_sorter,r},default_sorter:function(t,e){return t.cost-e.cost},push:function(t,e){var n={value:t,cost:e};this.queue.push(n),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return 0===this.queue.length}}};void 0!==e&&(e.exports=i)},{}],30:[function(t,e,n){var i={}.toString;e.exports=Array.isArray||function(t){return"[object Array]"==i.call(t)}},{}]},{},[24])(24)}));function w(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,i)}return n}function x(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?w(n,!0).forEach((function(e){C(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):w(n).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function C(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var k={name:"AuthTokenSetupDialogue",components:{QR:{name:"qrcode",props:{value:null,options:Object,tag:{type:String,default:"canvas"}},render:function(t){return t(this.tag,this.$slots.default)},watch:{$props:{deep:!0,immediate:!0,handler:function(){this.$el&&this.generate()}}},methods:{generate:function(){var t=this,e=this.options,n=this.tag,i=String(this.value);"canvas"===n?_.toCanvas(this.$el,i,e,(function(t){if(t)throw t})):"img"===n?_.toDataURL(i,e,(function(e,n){if(e)throw e;t.$el.src=n})):_.toString(i,e,(function(e,n){if(e)throw e;t.$el.innerHTML=n}))}},mounted:function(){this.generate()}}},props:{add:{type:Function,required:!0}},data:function(){return{adding:!1,loading:!1,deviceName:"",appPassword:"",loginName:"",passwordCopied:!1,showQR:!1,qrUrl:"",hoveringCopyButton:!1}},computed:{copyTooltipOptions:function(){var e={hideOnTargetClick:!1,trigger:"manual"};return this.passwordCopied?x({},e,{content:t("core","Copied!"),show:!0}):x({},e,{content:t("core","Copy"),show:this.hoveringCopyButton})}},methods:{selectInput:function(t){t.currentTarget.select()},submit:function(){var e=this;d()().then((function(){return e.loading=!0,e.add(e.deviceName)})).then((function(t){e.adding=!0,e.loginName=t.loginName,e.appPassword=t.token;var n=window.location.protocol+"//"+window.location.host+OC.getRootPath();e.qrUrl="nc://login/user:".concat(t.loginName,"&password:").concat(t.token,"&server:").concat(n),e.$nextTick((function(){e.$refs.appPassword.select()}))})).catch((function(n){console.error("could not create a new app password",n),OC.Notification.showTemporary(t("core","Error while creating device token")),e.reset()}))},onCopyPassword:function(){var t=this;this.passwordCopied=!0,this.$refs.clipboardButton.blur(),setTimeout((function(){return t.passwordCopied=!1}),3e3)},onCopyPasswordFailed:function(){OC.Notification.showTemporary(t("core","Could not copy app password. Please copy it manually."))},reset:function(){this.adding=!1,this.loading=!1,this.showQR=!1,this.qrUrl="",this.deviceName="",this.appPassword="",this.loginName=""}}},T=(i(60),Object(A.a)(k,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.adding?n("div",[t._v("\n\t"+t._s(t.t("settings","Use the credentials below to configure your app or device."))+"\n\t"+t._s(t.t("settings","For security reasons this password will only be shown once."))+"\n\t"),n("div",{staticClass:"app-password-row"},[n("span",{staticClass:"app-password-label"},[t._v(t._s(t.t("settings","Username")))]),t._v(" "),n("input",{staticClass:"monospaced",attrs:{type:"text",readonly:"readonly"},domProps:{value:t.loginName},on:{focus:t.selectInput}})]),t._v(" "),n("div",{staticClass:"app-password-row"},[n("span",{staticClass:"app-password-label"},[t._v(t._s(t.t("settings","Password")))]),t._v(" "),n("input",{ref:"appPassword",staticClass:"monospaced",attrs:{type:"text",readonly:"readonly"},domProps:{value:t.appPassword},on:{focus:t.selectInput}}),t._v(" "),n("a",{directives:[{name:"tooltip",rawName:"v-tooltip",value:t.copyTooltipOptions,expression:"copyTooltipOptions"},{name:"clipboard",rawName:"v-clipboard:copy",value:t.appPassword,expression:"appPassword",arg:"copy"},{name:"clipboard",rawName:"v-clipboard:success",value:t.onCopyPassword,expression:"onCopyPassword",arg:"success"},{name:"clipboard",rawName:"v-clipboard:error",value:t.onCopyPasswordFailed,expression:"onCopyPasswordFailed",arg:"error"}],ref:"clipboardButton",staticClass:"icon icon-clippy",on:{mouseover:function(e){t.hoveringCopyButton=!0},mouseleave:function(e){t.hoveringCopyButton=!1}}}),t._v(" "),n("button",{staticClass:"button",on:{click:t.reset}},[t._v("\n\t\t\t"+t._s(t.t("settings","Done"))+"\n\t\t")])]),t._v(" "),n("div",{staticClass:"app-password-row"},[n("span",{staticClass:"app-password-label"}),t._v(" "),t.showQR?n("QR",{attrs:{value:t.qrUrl}}):n("a",{on:{click:function(e){t.showQR=!0}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Show QR code for mobile apps"))+"\n\t\t")])],1)]):n("div",[n("input",{directives:[{name:"model",rawName:"v-model",value:t.deviceName,expression:"deviceName"}],attrs:{type:"text",disabled:t.loading,placeholder:t.t("settings","App name")},domProps:{value:t.deviceName},on:{keydown:function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:t.submit(e)},input:function(e){e.target.composing||(t.deviceName=e.target.value)}}}),t._v(" "),n("button",{staticClass:"button",attrs:{disabled:t.loading},on:{click:t.submit}},[t._v(t._s(t.t("settings","Create new app password"))+"\n\t")])])}),[],!1,null,"be9cc7be",null).exports);function E(t,e,n,i,r,o,a){try{var s=t[o](a),c=s.value}catch(t){return void n(t)}s.done?e(c):Promise.resolve(c).then(i,r)}var O,S,M=function(t){return function(e){return t(e),e}},D={name:"AuthTokenSection",props:{tokens:{type:Array,required:!0},canCreateToken:{type:Boolean,required:!0}},components:{AuthTokenSetupDialogue:T,AuthTokenList:b},data:function(){return{baseUrl:OC.generateUrl("/settings/personal/authtokens")}},methods:{addNewToken:function(e){var n=this;console.debug("creating a new app token",e);var i={name:e};return l.a.post(this.baseUrl,i).then((function(t){return t.data})).then(M((function(){return console.debug("app token created")}))).then(M((function(t){return n.tokens.push(t.deviceToken)}))).catch((function(e){throw console.error.bind("could not create app password",e),OC.Notification.showTemporary(t("core","Error while creating device token")),e}))},toggleTokenScope:function(e,n,i){console.debug("updating app token scope",e.id,n,i);var r=e.scope[n];return e.scope[n]=i,this.updateToken(e).then(M((function(){return console.debug("app token scope updated")}))).catch((function(i){throw console.error.bind("could not update app token scope",i),OC.Notification.showTemporary(t("core","Error while updating device token scope")),e.scope[n]=r,i}))},rename:function(e,n){console.debug("renaming app token",e.id,e.name,n);var i=e.name;return e.name=n,this.updateToken(e).then(M((function(){return console.debug("app token name updated")}))).catch((function(n){console.error.bind("could not update app token name",n),OC.Notification.showTemporary(t("core","Error while updating device token name")),e.name=i}))},updateToken:function(t){return l.a.put(this.baseUrl+"/"+t.id,t).then((function(t){return t.data}))},deleteToken:function(e){var n=this;return console.debug("deleting app token",e),this.tokens=this.tokens.filter((function(t){return t!==e})),l.a.delete(this.baseUrl+"/"+e.id).then((function(t){return t.data})).then(M((function(){return console.debug("app token deleted")}))).catch((function(i){console.error.bind("could not delete app token",i),OC.Notification.showTemporary(t("core","Error while deleting the token")),n.tokens.push(e)}))},wipeToken:(O=regeneratorRuntime.mark((function e(n){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return console.debug("wiping app token",n),e.prev=1,e.next=4,d()();case 4:return e.next=6,new Promise((function(e){OC.dialogs.confirm(t("core","Do you really want to wipe your data from this device?"),t("core","Confirm wipe"),e,!0)}));case 6:if(e.sent){e.next=9;break}return console.debug("wipe aborted by user"),e.abrupt("return");case 9:return e.next=11,l.a.post(this.baseUrl+"/wipe/"+n.id);case 11:console.debug("app token marked for wipe"),n.type=2,e.next=19;break;case 15:e.prev=15,e.t0=e.catch(1),console.error("could not wipe app token",e.t0),OC.Notification.showTemporary(t("core","Error while wiping the device with the token"));case 19:case"end":return e.stop()}}),e,this,[[1,15]])})),S=function(){var t=this,e=arguments;return new Promise((function(n,i){var r=O.apply(t,e);function o(t){E(r,n,i,o,a,"next",t)}function a(t){E(r,n,i,o,a,"throw",t)}o(void 0)}))},function(t){return S.apply(this,arguments)})}},N=Object(A.a)(D,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"section",attrs:{id:"security"}},[n("h2",[t._v(t._s(t.t("settings","Devices & sessions")))]),t._v(" "),n("p",{staticClass:"settings-hint hidden-when-empty"},[t._v(t._s(t.t("settings","Web, desktop and mobile clients currently logged in to your account.")))]),t._v(" "),n("AuthTokenList",{attrs:{tokens:t.tokens},on:{toggleScope:t.toggleTokenScope,rename:t.rename,delete:t.deleteToken,wipe:t.wipeToken}}),t._v(" "),t.canCreateToken?n("AuthTokenSetupDialogue",{attrs:{add:t.addNewToken}}):t._e()],1)}),[],!1,null,"f0bc4a22",null).exports; +/* + * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +i.nc=btoa(OC.requestToken),r.default.use(a.a),r.default.use(s.a,{defaultHtml:!1}),r.default.prototype.t=t,new(r.default.extend(N))({propsData:{tokens:OCP.InitialState.loadState("settings","app_tokens"),canCreateToken:OCP.InitialState.loadState("settings","can_create_app_token")}}).$mount("#security-authtokens")}]); +//# sourceMappingURL=vue-settings-personal-security.js.map?v=0f6e8042c8bc16b71371 \ No newline at end of file diff --git a/apps/settings/js/vue-settings-personal-security.js.map b/apps/settings/js/vue-settings-personal-security.js.map new file mode 100644 index 00000000000..2d7326c31d7 --- /dev/null +++ b/apps/settings/js/vue-settings-personal-security.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/axios/lib/utils.js","webpack:///./node_modules/vue/dist/vue.runtime.esm.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/nextcloud-axios/dist/client.js","webpack:///./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/axios/lib/helpers/buildURL.js","webpack:///./node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/axios/lib/defaults.js","webpack:///./node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/axios/lib/core/createError.js","webpack:///./node_modules/axios/lib/core/mergeConfig.js","webpack:///./node_modules/axios/lib/cancel/Cancel.js","webpack:///./node_modules/nextcloud-vue/dist/ncvuecomponents.js","webpack:///./node_modules/nextcloud-password-confirmation/dist/main.js","webpack:///./node_modules/popper.js/dist/esm/popper.js","webpack:///./node_modules/css-loader/dist/runtime/api.js","webpack:///./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack:///./node_modules/timers-browserify/main.js","webpack:///./node_modules/setimmediate/setImmediate.js","webpack:///./node_modules/axios/index.js","webpack:///./node_modules/axios/lib/axios.js","webpack:///./node_modules/axios/node_modules/is-buffer/index.js","webpack:///./node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///./node_modules/axios/lib/core/settle.js","webpack:///./node_modules/axios/lib/core/enhanceError.js","webpack:///./node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/axios/lib/helpers/cookies.js","webpack:///./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/axios/lib/helpers/combineURLs.js","webpack:///./node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/axios/lib/helpers/spread.js","webpack:///./node_modules/v-tooltip/dist/v-tooltip.esm.js","webpack:///./node_modules/vue-resize/dist/vue-resize.esm.js","webpack:///./apps/settings/src/components/AuthToken.vue?9e4e","webpack:///./apps/settings/src/components/AuthTokenList.vue?02cd","webpack:///./apps/settings/src/components/AuthTokenList.vue?ef74","webpack:///./apps/settings/src/components/AuthTokenSetupDialogue.vue?c2dd","webpack:///./node_modules/vue-clipboard2/vue-clipboard.js","webpack:///./node_modules/clipboard/dist/clipboard.min.js","webpack:///./apps/settings/src/components/AuthToken.vue?43c2","webpack:///./apps/settings/src/components/AuthToken.vue?d69b","webpack:///./apps/settings/src/components/AuthTokenList.vue?f5b6","webpack:///./apps/settings/src/components/AuthTokenList.vue?bf5d","webpack:///./apps/settings/src/components/AuthTokenList.vue?764f","webpack:///./apps/settings/src/components/AuthTokenList.vue?d947","webpack:///./apps/settings/src/components/AuthTokenSetupDialogue.vue?8a31","webpack:///./apps/settings/src/components/AuthTokenSetupDialogue.vue?edf0","webpack:///apps/settings/src/components/AuthToken.vue","webpack:///./apps/settings/src/components/AuthToken.vue?2ab6","webpack:///./apps/settings/src/components/AuthTokenList.vue?7de9","webpack:///apps/settings/src/components/AuthTokenList.vue","webpack:///./apps/settings/src/components/AuthToken.vue","webpack:///./apps/settings/src/components/AuthToken.vue?2252","webpack:///./apps/settings/src/components/AuthTokenList.vue","webpack:///./apps/settings/src/components/AuthTokenList.vue?b57b","webpack:///./node_modules/@chenfengyuan/vue-qrcode/dist/vue-qrcode.esm.js","webpack:///apps/settings/src/components/AuthTokenSetupDialogue.vue","webpack:///./apps/settings/src/components/AuthTokenSetupDialogue.vue?907e","webpack:///./apps/settings/src/components/AuthTokenSetupDialogue.vue","webpack:///./apps/settings/src/components/AuthTokenSetupDialogue.vue?d834","webpack:///apps/settings/src/components/AuthTokenSection.vue","webpack:///./apps/settings/src/components/AuthTokenSection.vue?0440","webpack:///./apps/settings/src/components/AuthTokenSection.vue","webpack:///./apps/settings/src/components/AuthTokenSection.vue?c668","webpack:///./apps/settings/src/main-personal-security.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","isBuffer","toString","isArray","val","isObject","isFunction","forEach","obj","fn","length","isArrayBuffer","isFormData","FormData","isArrayBufferView","ArrayBuffer","isView","buffer","isString","isNumber","isUndefined","isDate","isFile","isBlob","isStream","pipe","isURLSearchParams","URLSearchParams","isStandardBrowserEnv","navigator","product","window","document","merge","result","assignValue","arguments","deepMerge","extend","a","b","thisArg","trim","str","replace","emptyObject","freeze","isUndef","v","isDef","isTrue","isPrimitive","_toString","isPlainObject","isRegExp","isValidArrayIndex","parseFloat","String","Math","floor","isFinite","isPromise","then","catch","Array","JSON","stringify","toNumber","isNaN","makeMap","expectsLowerCase","map","list","split","toLowerCase","isReservedAttribute","remove","arr","item","index","indexOf","splice","hasOwn","cached","cache","camelizeRE","camelize","_","toUpperCase","capitalize","charAt","slice","hyphenateRE","hyphenate","Function","ctx","boundFn","apply","_length","toArray","start","ret","to","_from","toObject","res","noop","no","identity","looseEqual","isObjectA","isObjectB","isArrayA","isArrayB","every","e","Date","getTime","keysA","keys","keysB","looseIndexOf","once","called","this","SSR_ATTR","ASSET_TYPES","LIFECYCLE_HOOKS","config","optionMergeStrategies","silent","productionTip","devtools","performance","errorHandler","warnHandler","ignoredElements","keyCodes","isReservedTag","isReservedAttr","isUnknownElement","getTagNamespace","parsePlatformTagName","mustUseProp","async","_lifecycleHooks","unicodeRegExp","def","writable","configurable","bailRE","RegExp","_isServer","hasProto","inBrowser","inWeex","WXEnvironment","platform","weexPlatform","UA","userAgent","isIE","test","isIE9","isEdge","isIOS","isFF","match","nativeWatch","watch","supportsPassive","opts","addEventListener","isServerRendering","undefined","global","env","VUE_ENV","__VUE_DEVTOOLS_GLOBAL_HOOK__","isNative","Ctor","_Set","hasSymbol","Reflect","ownKeys","Set","set","has","add","clear","warn","uid","Dep","id","subs","addSub","sub","push","removeSub","depend","target","addDep","notify","update","targetStack","pushTarget","popTarget","pop","VNode","tag","data","children","text","elm","context","componentOptions","asyncFactory","fnContext","fnOptions","fnScopeId","componentInstance","parent","raw","isStatic","isRootInsert","isComment","isCloned","isOnce","asyncMeta","isAsyncPlaceholder","prototypeAccessors","child","defineProperties","createEmptyVNode","node","createTextVNode","cloneVNode","vnode","cloned","arrayProto","arrayMethods","method","original","args","len","inserted","ob","__ob__","observeArray","dep","arrayKeys","getOwnPropertyNames","shouldObserve","toggleObserving","Observer","vmCount","src","__proto__","protoAugment","copyAugment","walk","observe","asRootData","isExtensible","_isVue","defineReactive$$1","customSetter","shallow","getOwnPropertyDescriptor","setter","childOb","dependArray","newVal","max","del","items","strats","mergeData","from","toVal","fromVal","mergeDataOrFn","parentVal","childVal","vm","instanceData","defaultData","mergeHook","concat","hooks","dedupeHooks","mergeAssets","hook","type","key$1","props","methods","inject","computed","provide","defaultStrat","mergeOptions","options","normalizeProps","normalized","normalizeInject","dirs","directives","def$$1","normalizeDirectives","_base","extends","mixins","mergeField","strat","resolveAsset","warnMissing","assets","camelizedId","PascalCaseId","validateProp","propOptions","propsData","prop","absent","booleanIndex","getTypeIndex","Boolean","stringIndex","default","$options","_props","getType","getPropDefaultValue","prevShouldObserve","isSameType","expectedTypes","handleError","err","info","cur","$parent","errorCaptured","globalHandleError","invokeWithErrorHandling","handler","_handled","logError","console","error","timerFunc","isUsingMicroTask","callbacks","pending","flushCallbacks","copies","Promise","resolve","setTimeout","MutationObserver","setImmediate","counter","observer","textNode","createTextNode","characterData","nextTick","cb","_resolve","seenObjects","traverse","_traverse","seen","isA","isFrozen","depId","normalizeEvent","passive","once$$1","capture","createFnInvoker","fns","invoker","arguments$1","updateListeners","on","oldOn","remove$$1","createOnceHandler","old","event","params","mergeVNodeHook","hookKey","oldHook","wrappedHook","merged","checkProp","hash","altKey","preserve","normalizeChildren","normalizeArrayChildren","nestedIndex","lastIndex","last","isTextNode","shift","_isVList","resolveInject","provideKey","source","_provided","provideDefault","resolveSlots","slots","attrs","slot","name$1","isWhitespace","normalizeScopedSlots","normalSlots","prevSlots","hasNormalSlots","isStable","$stable","$key","_normalized","$hasNormal","normalizeScopedSlot","key$2","proxyNormalSlot","proxy","renderList","render","iterator","next","done","renderSlot","fallback","bindObject","nodes","scopedSlotFn","$scopedSlots","$slots","$createElement","resolveFilter","isKeyNotMatch","expect","actual","checkKeyCodes","eventKeyCode","builtInKeyCode","eventKeyName","builtInKeyName","mappedKeyCode","bindObjectProps","asProp","isSync","loop","domProps","camelizedKey","hyphenatedKey","$event","renderStatic","isInFor","_staticTrees","tree","markStatic","staticRenderFns","_renderProxy","markOnce","markStaticNode","bindObjectListeners","existing","ours","resolveScopedSlots","hasDynamicKeys","contentHashKey","bindDynamicKeys","baseObj","values","prependModifier","symbol","installRenderHelpers","_o","_n","_s","_l","_t","_q","_i","_m","_f","_k","_b","_v","_e","_u","_g","_d","_p","FunctionalRenderContext","contextVm","this$1","_original","isCompiled","_compiled","needNormalization","listeners","injections","scopedSlots","_scopeId","_c","createElement","cloneAndMarkFunctionalResult","renderContext","clone","mergeProps","componentVNodeHooks","init","hydrating","_isDestroyed","keepAlive","mountedNode","prepatch","_isComponent","_parentVnode","inlineTemplate","createComponentInstanceForVnode","activeInstance","$mount","oldVnode","parentVnode","renderChildren","newScopedSlots","oldScopedSlots","hasDynamicScopedSlot","needsForceUpdate","_renderChildren","$vnode","_vnode","$attrs","$listeners","propKeys","_propKeys","oldListeners","_parentListeners","updateComponentListeners","$forceUpdate","updateChildComponent","insert","_isMounted","callHook","_inactive","activatedChildren","activateChildComponent","destroy","deactivateChildComponent","direct","_directInactive","isInInactiveTree","$children","$destroy","hooksToMerge","createComponent","baseCtor","cid","factory","errorComp","resolved","owner","currentRenderingInstance","owners","loading","loadingComp","sync","timerLoading","timerTimeout","$on","forceRender","renderCompleted","clearTimeout","ensureCtor","reject","reason","component","delay","timeout","resolveAsyncComponent","createAsyncPlaceholder","resolveConstructorOptions","model","callback","transformModel","extractPropsFromVNodeData","functional","vnodes","createFunctionalComponent","nativeOn","abstract","toMerge","_merged","mergeHook$1","installComponentHooks","f1","f2","SIMPLE_NORMALIZE","ALWAYS_NORMALIZE","normalizationType","alwaysNormalize","is","simpleNormalizeChildren","pre","applyNS","force","style","class","registerDeepBindings","_createElement","comp","base","getFirstComponentChild","remove$1","$off","_target","onceHandler","setActiveInstance","prevActiveInstance","handlers","j","_hasHookEvent","$emit","queue","waiting","flushing","currentFlushTimestamp","getNow","now","createEvent","timeStamp","flushSchedulerQueue","watcher","sort","before","run","activatedQueue","updatedQueue","callActivatedHooks","_watcher","callUpdatedHooks","emit","uid$2","Watcher","expOrFn","isRenderWatcher","_watchers","deep","user","lazy","active","dirty","deps","newDeps","depIds","newDepIds","expression","path","segments","parsePath","cleanupDeps","tmp","queueWatcher","oldValue","evaluate","teardown","_isBeingDestroyed","sharedPropertyDefinition","sourceKey","initState","propsOptions","initProps","initMethods","_data","getData","charCodeAt","initData","watchers","_computedWatchers","isSSR","userDef","computedWatcherOptions","defineComputed","initComputed","createWatcher","initWatch","shouldCache","createComputedGetter","createGetterInvoker","$watch","uid$3","super","superOptions","modifiedOptions","modified","latest","sealed","sealedOptions","resolveModifiedOptions","extendOptions","components","Vue","_init","initExtend","Super","SuperId","cachedCtors","_Ctor","Sub","constructor","Comp","initProps$1","initComputed$1","mixin","use","getComponentName","matches","pattern","pruneCache","keepAliveInstance","filter","cachedNode","pruneCacheEntry","current","cached$$1","_uid","vnodeComponentOptions","_componentTag","initInternalComponent","_self","$root","$refs","initLifecycle","_events","initEvents","parentData","initRender","initInjections","initProvide","el","initMixin","dataDef","propsDef","$set","$delete","immediate","stateMixin","hookRE","$once","i$1","cbs","eventsMixin","_update","prevEl","$el","prevVnode","restoreActiveInstance","__patch__","__vue__","lifecycleMixin","$nextTick","_render","ref","renderMixin","patternTypes","builtInComponents","KeepAlive","include","exclude","Number","created","destroyed","mounted","parseInt","configDef","util","defineReactive","delete","observable","plugin","installedPlugins","_installedPlugins","unshift","install","initUse","initMixin$1","definition","initAssetRegisters","initGlobalAPI","ssrContext","version","acceptValue","isEnumeratedAttr","isValidContentEditableValue","convertEnumeratedValue","isFalsyAttrValue","isBooleanAttr","xlinkNS","isXlink","getXlinkProp","genClassForVnode","parentNode","childNode","mergeClassData","staticClass","dynamicClass","stringifyClass","renderClass","stringified","stringifyArray","stringifyObject","namespaceMap","svg","math","isHTMLTag","isSVG","unknownElementCache","isTextInputType","nodeOps","tagName","multiple","setAttribute","createElementNS","namespace","createComment","insertBefore","newNode","referenceNode","removeChild","appendChild","nextSibling","setTextContent","textContent","setStyleScope","scopeId","registerRef","isRemoval","refs","refInFor","emptyNode","sameVnode","typeA","typeB","sameInputType","createKeyToOldIdx","beginIdx","endIdx","updateDirectives","oldDir","dir","isCreate","isDestroy","oldDirs","normalizeDirectives$1","newDirs","dirsWithInsert","dirsWithPostpatch","oldArg","arg","callHook$1","componentUpdated","callInsert","emptyModifiers","modifiers","getRawDirName","rawName","join","baseModules","updateAttrs","inheritAttrs","oldAttrs","setAttr","removeAttributeNS","removeAttribute","baseSetAttr","setAttributeNS","__ieph","blocker","stopImmediatePropagation","removeEventListener","updateClass","oldData","cls","transitionClass","_transitionClasses","_prevClass","target$1","klass","RANGE_TOKEN","CHECKBOX_RADIO_TOKEN","createOnceHandler$1","remove$2","useMicrotaskFix","add$1","attachedTimestamp","_wrapper","currentTarget","ownerDocument","updateDOMListeners","change","normalizeEvents","svgContainer","events","updateDOMProps","oldProps","childNodes","_value","strCur","shouldUpdateValue","innerHTML","firstChild","checkVal","composing","notInFocus","activeElement","isNotInFocusAndDirty","_vModifiers","number","isDirtyWithModifiers","parseStyleText","cssText","propertyDelimiter","normalizeStyleData","normalizeStyleBinding","staticStyle","bindingStyle","emptyStyle","cssVarRE","importantRE","setProp","setProperty","normalizedName","normalize","vendorNames","capName","updateStyle","oldStaticStyle","oldStyleBinding","normalizedStyle","oldStyle","newStyle","checkChild","styleData","getStyle","whitespaceRE","addClass","classList","getAttribute","removeClass","tar","resolveTransition","css","autoCssTransition","enterClass","enterToClass","enterActiveClass","leaveClass","leaveToClass","leaveActiveClass","hasTransition","TRANSITION","ANIMATION","transitionProp","transitionEndEvent","animationProp","animationEndEvent","ontransitionend","onwebkittransitionend","onanimationend","onwebkitanimationend","raf","requestAnimationFrame","nextFrame","addTransitionClass","transitionClasses","removeTransitionClass","whenTransitionEnds","expectedType","getTransitionInfo","propCount","ended","end","onEnd","transformRE","styles","getComputedStyle","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","durations","toMs","enter","toggleDisplay","_leaveCb","cancelled","transition","_enterCb","nodeType","appearClass","appearToClass","appearActiveClass","beforeEnter","afterEnter","enterCancelled","beforeAppear","appear","afterAppear","appearCancelled","duration","transitionNode","isAppear","startClass","activeClass","toClass","beforeEnterHook","enterHook","afterEnterHook","enterCancelledHook","explicitEnterDuration","expectsCSS","userWantsControl","getHookArgumentsLength","show","pendingNode","_pending","isValidDuration","leave","rm","beforeLeave","afterLeave","leaveCancelled","delayLeave","explicitLeaveDuration","performLeave","invokerFns","_enter","patch","backend","removeNode","createElm","insertedVnodeQueue","parentElm","refElm","nested","ownerArray","isReactivated","initComponent","innerNode","activate","reactivateComponent","setScope","createChildren","invokeCreateHooks","pendingInsert","isPatchable","ref$$1","ancestor","addVnodes","startIdx","invokeDestroyHook","removeVnodes","ch","removeAndInvokeRemoveHook","childElm","createRmCb","findIdxInOld","oldCh","patchVnode","removeOnly","hydrate","newCh","oldKeyToIdx","idxInOld","vnodeToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","canMove","updateChildren","postpatch","invokeInsertHook","initial","isRenderedModule","inVPre","hasChildNodes","childrenMatch","fullInvoke","isInitialPatch","isRealElement","hasAttribute","oldElm","patchable","i$2","createPatchFunction","vmodel","trigger","directive","binding","_vOptions","setSelected","getValue","onCompositionStart","onCompositionEnd","prevOptions","curOptions","some","hasNoMatchingOption","actuallySetSelected","isMultiple","selected","option","selectedIndex","initEvent","dispatchEvent","locateNode","platformDirectives","transition$$1","originalDisplay","__vOriginalDisplay","display","unbind","transitionProps","getRealChild","compOptions","extractTransitionData","placeholder","h","rawChild","isNotTextNode","isVShowDirective","Transition","hasParentTransition","_leaving","oldRawChild","oldChild","isSameChild","delayedLeave","moveClass","callPendingCbs","_moveCb","recordPosition","newPos","getBoundingClientRect","applyTranslation","oldPos","pos","dx","left","dy","top","moved","transform","WebkitTransform","transitionDuration","platformComponents","TransitionGroup","beforeMount","kept","prevChildren","rawChildren","transitionData","removed","c$1","updated","hasMove","_reflow","body","offsetHeight","propertyName","_hasMove","cloneNode","attr","HTMLUnknownElement","HTMLElement","updateComponent","mountComponent","querySelector","query","g","client","headers","requesttoken","OC","requestToken","normalizeComponent","scriptExports","functionalTemplate","injectStyles","moduleIdentifier","shadowMode","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","shadowRoot","_injectStyles","originalRender","beforeCreate","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","Error","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","marker","runClearTimeout","Item","array","title","browser","argv","versions","addListener","off","removeListener","removeAllListeners","prependListener","prependOnceListener","cwd","chdir","umask","utils","encode","encodeURIComponent","url","paramsSerializer","serializedParams","parts","toISOString","hashmarkIndex","__CANCEL__","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","adapter","defaults","XMLHttpRequest","transformRequest","transformResponse","parse","xsrfCookieName","xsrfHeaderName","maxContentLength","validateStatus","status","common","settle","buildURL","parseHeaders","isURLSameOrigin","createError","requestData","requestHeaders","request","auth","username","password","Authorization","btoa","open","onreadystatechange","readyState","responseURL","responseHeaders","getAllResponseHeaders","response","responseType","responseText","statusText","onabort","onerror","ontimeout","cookies","xsrfValue","withCredentials","read","setRequestHeader","onDownloadProgress","onUploadProgress","upload","cancelToken","promise","cancel","abort","send","enhanceError","message","code","config1","config2","Cancel","u","unescape","sources","sourceRoot","media","sourceMap","DEBUG","head","getElementsByTagName","f","A","y","ssrId","styleSheet","In","getOwnPropertySymbols","className","baseVal","SVGElement","SVGAnimatedString","container","html","placement","template","offset","TypeError","relatedreference","toElement","relatedTarget","_tooltipNode","contains","_scheduleHide","jquery","hide","reference","_isOpen","_show","_hide","_dispose","_classes","_setContent","classes","C","defaultClass","setClasses","x","dispose","popperInstance","_isDisposed","_enableDocumentTouch","_setEventListeners","$_originalTitle","random","substr","autoHide","asyncContent","_applyContent","innerSelector","loadingClass","loadingContent","innerText","_disposeTimer","assign","_ensureShown","enableEventListeners","_create","_findContainer","_append","popperOptions","arrow","element","arrowSelector","boundariesElement","preventOverflow","_noLongerOpen","disableEventListeners","disposeTimeout","_removeTooltipNode","func","removeOnDestroy","hideOnTargetClick","usedByTooltip","_scheduleShow","_scheduleTimer","_setTooltipNodeEvent","_onDocumentTouch","enabled","defaultPlacement","defaultTargetClass","defaultHtml","defaultTemplate","defaultArrowSelector","defaultInnerSelector","defaultDelay","defaultTrigger","defaultOffset","defaultContainer","defaultBoundariesElement","defaultPopperOptions","defaultLoadingClass","defaultLoadingContent","defaultHideOnTargetClick","popover","defaultBaseClass","defaultWrapperClass","defaultInnerClass","defaultArrowClass","defaultOpenClass","defaultAutoHide","defaultHandleResize","w","content","T","_tooltip","_tooltipOldShow","_tooltipTargetClasses","k","setContent","setOptions","_vueEl","targetClasses","E","S","D","M","O","B","closePopover","$_vclosepopover_touch","closeAllPopover","$_closePopoverModifiers","all","changedTouches","$_vclosepopover_touchPoint","abs","screenY","screenX","I","N","L","MSStream","P","Element","$","ResizeObserver","disabled","popoverClass","popoverBaseClass","popoverInnerClass","popoverWrapperClass","popoverArrowClass","handleResize","openGroup","openClass","isOpen","cssClass","popoverId","$_findContainer","scheduleUpdate","$_removeEventListeners","$_addEventListeners","$_updatePopper","$_isDisposed","$_mounted","$_events","$_preventOpen","$_init","deactivated","beforeDestroy","skipDelay","$_scheduleShow","$_beingShowed","$_scheduleHide","$_show","$_disposeTimer","$_getOffset","hidden","$_hide","$_scheduleTimer","$_setTooltipNodeEvent","$_restartPopper","$_handleGlobalClose","$_handleResize","F","R","z","tabindex","visibility","keyup","keyCode","position","_withStripped","H","Y","V","G","U","K","__data__","size","J","ot","globalThis","self","at","Ct","rt","st","ct","lt","ut","dt","pt","ft","At","bt","yt","ht","vt","xt","Et","Mt","St","exec","IE_PROTO","Ot","It","Nt","Lt","Pt","jt","$t","Ft","Dt","Bt","Rt","Yt","zt","Ht","Ut","Zt","Jt","te","ie","ne","ce","string","le","pe","ue","fe","he","Ae","ve","me","ge","Buffer","allocUnsafe","copy","be","Uint8Array","xe","byteLength","ye","byteOffset","Te","ke","getPrototypeOf","Ce","Ee","Se","Oe","Be","Ie","Ne","propertyIsEnumerable","Le","Pe","$e","Fe","Re","ze","Qe","Ve","Ge","Ue","We","Xe","Je","require","types","tn","isTypedArray","en","Ke","nn","an","ln","un","dn","pn","sn","hn","An","vn","mn","rn","gn","Ye","we","Ze","Me","yn","xn","wn","Tn","kn","Mn","Sn","Dn","Bn","On","bn","insertAt","Nn","installed","Ln","beforeUpdate","getText","isLongText","$isServer","composedPath","popupItem","__vueClickOutside__","icon","required","isIconUrl","URL","onClick","defaultView","nodeName","host","overflow","overflowX","overflowY","MSInputMethodContext","documentMode","documentElement","offsetParent","nextElementSibling","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","createRange","setStart","setEnd","commonAncestorContainer","firstElementChild","scrollingElement","height","width","right","bottom","clientWidth","clientHeight","offsetWidth","borderTopWidth","borderLeftWidth","marginTop","marginLeft","parentElement","innerWidth","innerHeight","area","marginBottom","marginRight","find","findIndex","function","offsets","popper","state","eventsEnabled","cancelAnimationFrame","updateBound","scrollParents","scrollElement","Q","order","W","reverse","Z","q","positionFixed","onCreate","onUpdate","search","reduce","X","instance","padding","boundaries","priority","primary","escapeWithReference","secondary","min","keepTogether","arrowElement","round","flip","flipped","originalPlacement","behavior","flipVariations","flipVariationsByContent","inner","attributes","computeStyle","gpuAcceleration","devicePixelRatio","willChange","arrowStyles","applyStyle","onLoad","Defaults","isDestroyed","isCreated","Utils","PopperUtils","placements","locals","compareAndNotify","_w","_h","addResizeHandlers","_resizeObject","contentDocument","removeResizeHandlers","onload","substring","href","validator","input","iconIsUrl","action","PopoverMenuItem","download","rel","click","longtext","submit","preventDefault","checked","for","stopPropagation","menu","ClickOutside","tooltip","menuAlign","actions","opened","focusIndex","randomId","offsetX","isValidSingleAction","firstAction","firstActionElement","getVNodeProp","exact","firstActionEvent","onOpen","initActions","toggleMenu","focusFirstAction","closeMenu","any","offsetY","onMouseFocusAction","closest","querySelectorAll","focusAction","removeCurrentActive","focus","focusPreviousAction","focusNextAction","focusLastAction","execFirstAction","auto","keydown","ctrlKey","shiftKey","metaKey","mousemove","month","i18n","dayNamesShort","dayNames","monthNamesShort","monthNames","amPm","DoFn","getDate","DD","Do","getDay","dd","ddd","dddd","getMonth","MM","MMM","MMMM","YY","getFullYear","YYYY","getHours","hh","HH","getMinutes","mm","getSeconds","ss","getMilliseconds","SS","SSS","ZZ","getTimezoneOffset","day","year","hour","minute","second","millisecond","isPm","timezoneOffset","masks","shortDate","mediumDate","longDate","fullDate","shortTime","mediumTime","longTime","format","UTC","popupElm","hours","minutes","date","value2date","date2value","timestamp","zh","days","months","pickers","dateRange","ro","fr","es","ru","de","it","cs","sl","language","offsetTop","scrollTop","startAt","endAt","dateFormat","calendarMonth","calendarYear","firstDayOfWeek","disabledDate","selectDate","getDays","getDates","setDate","setMonth","getCellClasses","setHours","getCellTitle","firstYear","disabledYear","isDisabled","selectYear","cell","actived","disabledMonth","selectMonth","PanelDate","PanelYear","PanelMonth","PanelTime","timePickerOptions","timeSelectOptions","minuteStep","timeType","disabledTime","currentHours","currentMinutes","currentSeconds","stringifyText","selectTime","pickTime","getTimePickerOptions","step","label","seconds","setMinutes","setSeconds","dispatch","visible","defaultValue","notBefore","notAfter","disabledDays","panel","dates","timeHeader","yearHeader","notBeforeTime","getCriticalTime","notAfterTime","handelPanelChange","showPanelMonth","showPanelYear","showPanelTime","showPanelDate","showPanelNone","updateNow","inBefore","inAfter","inDisabledDays","isDisabledYear","isDisabledMonth","isDisabledDate","isDisabledTime","changeCalendarYear","changeCalendarMonth","getSibling","handleIconMonth","flag","sibling","handleIconYear","changePanelYears","handleBtnYear","handleBtnMonth","handleTimeHeader","select","pick","fecha","CalendarPanel","clickoutside","valueType","lang","range","rangeSeparator","confirmText","confirm","editable","clearable","shortcuts","inputName","inputClass","inputAttr","appendToBody","popupStyle","currentValue","userInput","popupVisible","initCalendar","blur","innerPlaceholder","isValidRangeValue","isValidValue","computedWidth","showClearIcon","innerType","innerShortcuts","updateDate","innerDateFormat","innerPopupStyle","calendar","_displayPopup","displayPopup","handleValueChange","dateEqual","rangeEqual","selectRange","closePopup","clearDate","confirmDate","emitDate","selectStartDate","selectEndDate","selectStartTime","selectEndTime","showPopup","getPopupSize","_popupRect","pageXOffset","pageYOffset","handleBlur","handleFocus","handleKeydown","handleChange","handleInput","calendarPanel","autocomplete","readonly","xmlns","viewBox","rx","ry","fill","x1","x2","y1","y2","stack","log","_super","parentWindow","tt","manager","inputTarget","domHandler","enable","et","pointers","changedPointers","isFirst","isFinal","session","eventType","firstInput","nt","firstMultiple","center","deltaTime","angle","distance","offsetDelta","prevDelta","prevInput","deltaX","deltaY","offsetDirection","overallVelocityX","overallVelocityY","overallVelocity","scale","rotation","maxPointers","lastInterval","velocity","velocityX","velocityY","direction","srcEvent","recognize","clientX","clientY","sqrt","atan2","PI","evEl","evTarget","evWin","mousedown","mouseup","pressed","button","which","pointerType","pointerdown","pointermove","pointerup","pointercancel","pointerout","2","3","4","5","store","pointerEvents","MSPointerEvent","PointerEvent","pointerId","mt","touchstart","touchmove","touchend","touchcancel","gt","started","touches","wt","targetIds","identifier","Tt","touch","mouse","primaryTouch","lastTouches","sourceCapabilities","firesTouchEvents","CSS","supports","compute","touchAction","recognizers","getTouchAction","preventDefaults","prevented","preventSrc","simultaneous","requireFail","Qt","Vt","Gt","Wt","pX","pY","Xt","_timer","_input","qt","Kt","pTime","pCenter","count","preset","ee","oldCssProps","recognizeWith","requireFailure","cssProps","dropRecognizeWith","dropRequireFailure","hasRequireFailures","canRecognizeWith","additionalEvent","tryEmit","canEmit","reset","attrTest","threshold","directionTest","time","taps","interval","posThreshold","failTimeout","tapCount","VERSION","domEvents","userSelect","touchSelect","touchCallout","contentZooming","userDrag","tapHighlightColor","stop","stopped","curRecognizer","gesture","INPUT_START","INPUT_MOVE","INPUT_END","INPUT_CANCEL","STATE_POSSIBLE","STATE_BEGAN","STATE_CHANGED","STATE_ENDED","STATE_RECOGNIZED","STATE_CANCELLED","STATE_FAILED","DIRECTION_NONE","DIRECTION_LEFT","DIRECTION_RIGHT","DIRECTION_UP","DIRECTION_DOWN","DIRECTION_HORIZONTAL","DIRECTION_VERTICAL","DIRECTION_ALL","Manager","Input","TouchAction","TouchInput","MouseInput","PointerEventInput","TouchMouseInput","SingleTouchInput","Recognizer","AttrRecognizer","Tap","Pan","Swipe","Pinch","Rotate","Press","each","inherit","bindFn","prefixed","Hammer","PopoverMenu","isGuest","displayName","allowPlaceholder","disableTooltip","disableMenu","tooltipMessage","isNoUser","statusColor","avatarUrlLoaded","avatarSrcSetLoaded","userDoesNotExist","isAvatarLoaded","isMenuLoaded","contactsMenuActions","contactsMenuOpenState","getUserIdentifier","isDisplayNameDefined","isUserDefined","isUrlDefined","hasMenu","getCurrentUser","shouldShowPlaceholder","avatarStyle","lineHeight","fontSize","backgroundColor","initials","hyperlink","loadAvatarUrl","fetchContactsMenu","mark","wrap","prev","post","generateUrl","sent","topAction","t0","oc_userconfig","avatar","Image","srcset","stroke","isFocusable","focusable","backgroundImage","DatePicker","handleSelectYear","datepicker","setFullYear","handleSelectMonth","highlighted","Accept","utf8","stringToBytes","bin","bytesToString","decodeURIComponent","escape","fromCharCode","encoding","bytesToWords","_ff","_gg","_hh","_ii","endian","_blocksize","_digestsize","wordsToBytes","asBytes","asString","bytesToHex","emitClick","asyncIterator","_invoke","delegate","_sent","dispatchException","abrupt","__await","return","resultName","nextLoc","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","completion","isGeneratorFunction","setPrototypeOf","awrap","AsyncIterator","rval","complete","finish","delegateYield","regeneratorRuntime","Axios","CancelToken","isCancel","spread","interceptors","fulfilled","rejected","getUri","eject","throwIfRequested","baseURL","isAxiosError","toJSON","description","fileName","lineNumber","columnNumber","protocol","hostname","port","pathname","location","write","toGMTString","cookie","token","rotl","rotr","randomBytes","hexToBytes","bytesToBase64","base64ToBytes","pow","readFloatLE","_isBuffer","__g","core","inspectSource","__e","valueOf","NaN","$isLabel","$groupLabel","preferredOpenDirection","optimizedHeight","maxHeight","internalSearch","trackBy","searchable","clearOnSelect","hideSelected","allowEmpty","resetAfter","closeOnSelect","customLabel","taggable","tagPlaceholder","tagPosition","optionsLimit","groupValues","groupLabel","groupSelect","blockKeys","preserveSearch","preselectFirst","internalValue","filteredOptions","filterAndFlat","isSelected","isExistingOption","isTag","valueKeys","optionKeys","flatAndStrip","currentOptionLabel","getOptionLabel","updateSearch","isOptionDisabled","$isDisabled","selectGroup","pointerDirty","deactivate","removeElement","wholeGroupSelected","wholeGroupDisabled","removeLastElement","adjustPosition","pointer","toggle","openDirection","showPointer","optionHeight","pointerPosition","visibleElements","pointerAdjust","optionHighlight","groupHighlight","addPointerElement","pointerReset","pointerForward","pointerBackward","pointerSet","Arguments","selectLabel","selectGroupLabel","selectedLabel","deselectLabel","deselectGroupLabel","showLabels","limit","limitText","showNoOptions","showNoResults","isSingleLabelVisible","singleValue","visibleValues","isPlaceholderVisible","deselectLabelText","deselectGroupLabelText","selectLabelText","selectGroupLabelText","selectedLabelText","inputStyle","contentStyle","isAbove","showSearchInput","hasSingleSelectedSlot","visibleSingleValue","callee","ignoreCase","multiline","unicode","sticky","contentWindow","close","copyright","clearImmediate","MessageChannel","Dispatch","port2","port1","onmessage","postMessage","importScripts","ceil","v8","PromiseRejectionEvent","ok","fail","domain","exit","onunhandledrejection","_a","onrejectionhandled","race","finally","BREAK","RETURN","entries","WebKitMutationObserver","standalone","check","getIteratorMethod","flags","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","esModule","keypress","mouseenter","isFullscreen","_isFullscreen","_onResize","outerHeight","screen","isMobile","_isMobile","highlightText","Avatar","desc","highlightedDisplayName","highlightedDesc","needsTruncate","part1","part2","highlightedPart1","highlightedPart2","AvatarSelectOption","EllipsisedOption","VueMultiselect","autoLimit","tagWidth","elWidth","maxOptions","limitString","updateWidth","formatLimitTitle","pause","getTimeLeft","getStateRunning","Actions","ActionButton","hasPrevious","hasNext","outTransition","enableSlideshow","clearViewDelay","slideshowDelay","slideshowPaused","enableSwipe","spreadNavigation","canClose","mc","showModal","clearView","clearViewTimeout","playing","slideshowTimeout","modalTransitionName","playPauseTitle","handleMouseMove","mask","handleSwipe","lastChild","unmounted","previous","resetSlideshow","togglePlayPause","handleSlideshow","clearSlideshowTimeout","invisible","cx","cy","checkInput","onChange","checkbox","DatetimePicker","isDatePickerType","onInput","onSubmit","startsWith","AppNavigationToggle","toggleNavigation","pageX","selection","showDetails","showdetails","AppNavigationCounter","menuOpen","openedMenu","collapsible","simpleAction","toggleCollapse","hideMenu","callPreventStop","cancelEdit","edit","navElement","router","bullet","iconUrl","alt","counter_highlighted","undo","buttonId","buttonClass","subtitle","background","starred","starLoading","compact","tabs","activeTab","isStarred","canStar","hasFigure","header","hasMultipleTabs","hasFigureClickListener","currentTabIndex","updateActive","updateTabs","closeSidebar","onFigureClick","setActive","dataset","focusPreviousTab","focusActiveTab","focusNextTab","focusFirstTab","focusLastTab","focusActiveTabContent","toggleStarred","Util","naturalSortCompare","role","isActive","appName","getOwnPropertyDescriptors","PasswordConfirmation","requiresPasswordConfirmation","requirePasswordConfirmation","isBrowser","longerTimeoutBrowsers","timeoutDuration","debounce","scheduled","functionToCheck","getStyleComputedProperty","getParentNode","getScrollParent","_getStyleComputedProp","isIE11","isIE10","getOffsetParent","noOffsetParent","getRoot","findCommonOffsetParent","element1","element2","element1root","getScroll","upperSide","getBordersSize","axis","sideA","sideB","getSize","computedStyle","getWindowSizes","classCallCheck","Constructor","createClass","descriptor","protoProps","staticProps","_extends","getClientRect","rect","scrollLeft","sizes","horizScrollbar","vertScrollbar","getOffsetRectRelativeToArbitraryNode","fixedPosition","isHTML","childrenRect","parentRect","scrollParent","subtract","modifier","includeScroll","getFixedPositionOffsetParent","getBoundaries","excludeScroll","relativeOffset","getViewportOffsetRectRelativeToArtbitraryNode","boundariesNode","isFixed","_getWindowSizes","isPaddingNumber","computeAutoPlacement","refRect","rects","sortedAreas","_ref","filteredAreas","_ref2","computedPlacement","variation","getReferenceOffsets","getOuterSizes","getOppositePlacement","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","runModifiers","ends","isModifierEnabled","modifierName","getSupportedPropertyName","prefixes","upperProp","prefix","toCheck","getWindow","setupEventListeners","attachToScrollParents","isBody","isNumeric","setStyles","unit","isFirefox","isModifierRequired","requestingName","requestedName","requesting","isRequired","_requesting","requested","validPlacements","clockwise","BEHAVIORS","FLIP","CLOCKWISE","COUNTERCLOCKWISE","parseOffset","basePlacement","useHeight","fragments","frag","divider","splitRegex","ops","op","mergeWithPrevious","toValue","index2","shiftvariation","_data$offsets","isVertical","side","shiftOffsets","transformProp","popperStyles","opSide","_data$offsets$arrow","sideCapitalized","altSide","arrowElementSize","popperMarginSide","popperBorderSide","sideValue","placementOpposite","flipOrder","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flippedVariationByContent","flippedVariation","getOppositeVariation","subtractLength","bound","legacyGpuAccelerationOption","offsetParentRect","shouldRound","noRound","referenceWidth","popperWidth","isVariation","horizontalToInteger","verticalToInteger","getRoundedOffsets","prefixedProperty","invertTop","invertLeft","modifierOptions","Popper","_this","useSourceMap","cssMapping","sourceMapping","base64","sourceURLs","cssWithMappingToString","mediaQuery","alreadyImportedModules","memo","stylesInDom","isOldIE","atob","getTarget","styleTarget","HTMLIFrameElement","listToStyles","newStyles","part","addStylesToDom","domStyle","addStyle","insertStyleElement","nonce","textStore","replaceText","replacement","applyToSingletonTag","cssNode","applyToTag","singleton","singletonCounter","styleIndex","removeStyleElement","newObj","newList","mayRemove","_domStyle","Timeout","clearFn","_id","_clearFn","scope","setInterval","clearInterval","unref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","_onTimeout","registerImmediate","channel","messagePrefix","onGlobalMessage","nextHandle","tasksByHandle","currentlyRunningATask","doc","attachTo","handle","runIfPresent","postMessageIsAsynchronous","oldOnMessage","canUsePostMessage","script","attachEvent","task","mergeConfig","createInstance","defaultConfig","axios","instanceConfig","promises","InterceptorManager","dispatchRequest","chain","interceptor","transformData","isAbsoluteURL","combineURLs","throwIfCancellationRequested","ignoreDuplicateOf","parsed","line","originURL","msie","urlParsingNode","resolveURL","requestURL","expires","secure","relativeURL","executor","resolvePromise","_typeof","_defineProperties","_defineProperty","_objectSpread","sym","convertToArray","addClasses","newClasses","newClass","removeClasses","DEFAULT_OPTIONS","openTooltips","Tooltip","_reference","_options","_classCallCheck","evt","evt2","relatedreference2","classesUpdated","getOptions","needPopperUpdate","needRestart","tooltipGenerator","tooltipNode","_this2","_this3","allowHtml","rootNode","titleNode","asyncResult","updateClasses","_this4","_this5","disposeTime","_this6","_this7","directEvents","oppositeEvents","_this8","computedDelay","_this9","positions","defaultOptions","typeofOffset","getPlacement","getContent","destroyTooltip","createTooltip","addListeners","onTouchStart","removeListeners","onTouchEnd","onTouchCancel","firstTouch","vclosepopover","getDefault","openPopovers","oldVal","popoverNode","_ref2$force","_ref3","event2","_ref4","handleGlobalClose","_loop","normalizeComponent_1","isFunctionalTemplate","createInjector","createInjectorSSR","createInjectorShadow","__vue_script__","__vue_render__","_vm","Popover","_listCacheClear","eq_1","other","_assocIndexOf","_listCacheDelete","_listCacheGet","_listCacheHas","_listCacheSet","ListCache","entry","_ListCache","_stackClear","_stackDelete","_stackGet","_stackHas","commonjsGlobal","createCommonjsModule","_freeGlobal","freeSelf","_root","_Symbol","objectProto","nativeObjectToString","symToStringTag","_getRawTag","isOwn","unmasked","nativeObjectToString$1","_objectToString","nullTag","undefinedTag","symToStringTag$1","_baseGetTag","isObject_1","asyncTag","funcTag","genTag","proxyTag","isFunction_1","_coreJsData","maskSrcKey","_isMasked","funcToString","_toSource","reIsHostCtor","funcProto$1","objectProto$2","funcToString$1","hasOwnProperty$1","reIsNative","_baseIsNative","_getValue","_getNative","_Map","_nativeCreate","_hashClear","_hashDelete","HASH_UNDEFINED","hasOwnProperty$2","_hashGet","hasOwnProperty$3","_hashHas","HASH_UNDEFINED$1","_hashSet","Hash","_Hash","_mapCacheClear","_isKeyable","_getMapData","_mapCacheDelete","_mapCacheGet","_mapCacheHas","_mapCacheSet","MapCache","_MapCache","LARGE_ARRAY_SIZE","_stackSet","pairs","Stack","_Stack","_defineProperty$1","_baseAssignValue","_assignMergeValue","_baseFor","fromRight","iteratee","keysFunc","iterable","_createBaseFor","_cloneBuffer","freeExports","freeModule","isDeep","_Uint8Array","_cloneArrayBuffer","arrayBuffer","_cloneTypedArray","typedArray","_copyArray","objectCreate","_baseCreate","proto","_getPrototype","_overArg","objectProto$5","_isPrototype","_initCloneObject","isObjectLike_1","argsTag","_baseIsArguments","objectProto$6","hasOwnProperty$4","isArguments_1","isArray_1","MAX_SAFE_INTEGER","isLength_1","isArrayLike_1","isArrayLikeObject_1","stubFalse_1","isBuffer_1","objectTag","funcProto$2","objectProto$7","funcToString$2","hasOwnProperty$5","objectCtorString","isPlainObject_1","typedArrayTags","_baseIsTypedArray","_baseUnary","_nodeUtil","freeProcess","nodeUtil","nodeIsTypedArray","isTypedArray_1","_safeGet","hasOwnProperty$6","_assignValue","objValue","_copyObject","customizer","isNew","newValue","_baseTimes","MAX_SAFE_INTEGER$1","reIsUint","_isIndex","hasOwnProperty$7","_arrayLikeKeys","inherited","isArr","isArg","isBuff","isType","skipIndexes","_nativeKeysIn","hasOwnProperty$8","_baseKeysIn","isProto","keysIn_1","toPlainObject_1","_baseMergeDeep","srcIndex","mergeFunc","srcValue","stacked","isCommon","isTyped","_baseMerge","baseMerge","identity_1","_apply","nativeMax","_overRest","otherArgs","constant_1","_baseSetToString","HOT_COUNT","HOT_SPAN","nativeNow","_setToString","lastCalled","stamp","remaining","_shortOut","_baseRest","_isIterateeCall","merge_1","assigner","guard","_createAssigner","styleInject","finalOptions","GlobalVue","initCompat","ua","rv","edge","getInternetExplorerVersion","Clipboard","VueClipboardConfig","autoSetContainer","VueClipboard","$clipboardConfig","$copyText","fakeElement","clipboard","_vClipboard_success","_vClipboard_error","_vClipboard","ReferenceError","resolveOptions","listenClick","defaultAction","defaultTarget","defaultText","listener","delegateTarget","clipboardAction","emitter","queryCommandSupported","initSelection","selectedText","selectFake","selectTarget","removeFake","fakeHandlerCallback","fakeHandler","fakeElem","border","margin","copyText","execCommand","handleResult","clearSelection","getSelection","removeAllRanges","_action","setSelectionRange","selectNodeContents","addRange","nodeList","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","wiping","iconName","canRename","renaming","rename","cancelRename","newName","lastActivityRelative","actionOpen","filesystem","startRename","revoke","wipe","tokens","toggleScope","onDelete","onWipe","commonjsRequire","qrcode","1","getSymbolSize","getRowColCoords","posCount","intervals","getPositions","coords","posLength","Mode","ALPHA_NUM_CHARS","AlphanumericData","ALPHANUMERIC","getBitsLength","getLength","bitBuffer","put","BitBuffer","bufIndex","num","putBit","getLengthInBits","bit","BitMatrix","reservedBit","row","col","reserved","xor","isReserved","6","ByteData","BYTE","7","ECLevel","EC_BLOCKS_TABLE","EC_CODEWORDS_TABLE","getBlocksCount","errorCorrectionLevel","getTotalCodewordsCount","8","isValid","level","fromString","9","10","G15_BCH","getBCHDigit","getEncodedBits","11","alloc","EXP_TABLE","LOG_TABLE","exp","mul","12","KanjiData","KANJI","toSJIS","13","Patterns","PATTERN000","PATTERN001","PATTERN010","PATTERN011","PATTERN100","PATTERN101","PATTERN110","PATTERN111","PenaltyScores","getMaskAt","maskPattern","getPenaltyN1","points","sameCountCol","sameCountRow","lastCol","lastRow","getPenaltyN2","getPenaltyN3","bitsCol","bitsRow","getPenaltyN4","darkCount","modulesCount","applyMask","getBestMask","setupFormatFunc","numPatterns","bestPattern","lowerPenalty","Infinity","penalty","14","VersionCheck","Regex","NUMERIC","ccBits","MIXED","getCharCountIndicator","getBestModeForData","dataStr","testNumeric","testAlphanumeric","testKanji","15","NumericData","group","remainingNum","16","GF","p1","p2","coeff","mod","divident","divisor","generateECPolynomial","degree","poly","17","AlignmentPattern","FinderPattern","MaskPattern","ECCode","ReedSolomonEncoder","Version","FormatInfo","Segments","setupFormatInfo","matrix","bits","createData","dataTotalCodewordsBits","getSymbolTotalCodewords","remainingByte","totalCodewords","ecTotalCodewords","dataTotalCodewords","ecTotalBlocks","blocksInGroup1","totalCodewordsInGroup1","dataCodewordsInGroup1","dataCodewordsInGroup2","ecCount","rs","dcData","ecData","maxDataSize","dataSize","createCodewords","createSymbol","fromArray","estimatedVersion","rawSegments","rawSplit","getBestVersionForData","bestVersion","dataBits","moduleCount","setupFinderPattern","setupTimingPattern","setupAlignmentPattern","setupVersionInfo","inc","bitIndex","byteIndex","dark","setupData","toSJISFunc","setToSJISFunction","18","Polynomial","genPoly","initialize","pad","paddedData","remainder","buff","19","kanji","byte","BYTE_KANJI","TEST_KANJI","TEST_NUMERIC","TEST_ALPHANUMERIC","20","dijkstra","getStringByteLength","getSegments","regex","getSegmentsFromString","byteSegs","kanjiSegs","numSegs","alphaNumSegs","isKanjiModeEnabled","s1","s2","getSegmentBitsLength","buildSingleSegment","modesHint","bestMode","acc","seg","graph","table","prevNodeIds","nodeGroup","currentNodeIds","lastCount","prevNodeId","buildGraph","segs","buildNodes","find_path","optimizedSegs","curr","prevSeg","mergeSegments","21","toSJISFunction","CODEWORDS_COUNT","digit","22","23","G18_BCH","getReservedBitsCount","getTotalBitsFromDataArray","totalBits","reservedBits","getCapacity","usableBits","ecl","currentVersion","getBestVersionForMixedData","getBestVersionForDataLength","24","canPromise","QRCode","CanvasRenderer","SvgRenderer","renderCanvas","renderFunc","canvas","argsNum","isLastArgCb","getContext","toCanvas","toDataURL","renderToDataURL","25","qrData","canvasEl","getCanvasElement","getImageWidth","image","createImageData","qrToImageData","clearRect","clearCanvas","putImageData","rendererOpts","quality","26","getColorAttrib","color","attrib","alpha","hex","toFixed","svgCmd","cmd","qrcodesize","bg","light","moveBy","newRow","lineLength","qrToPath","svgTag","27","hex2rgba","hexCode","hexValue","getScale","qrSize","imgData","qr","symbolSize","scaledMargin","palette","posDst","pxColor","28","TYPED_ARRAY_SUPPORT","foo","typedArraySupport","K_MAX_LENGTH","that","RangeError","buf","fromArrayLike","fromArrayBuffer","createBuffer","fromObject","utf8ToBytes","units","codePoint","leadSurrogate","bytes","species","dst","blitBuffer","utf8Write","newBuf","subarray","sliceLen","targetStart","29","single_source_shortest_paths","predecessors","costs","cost_of_s_to_u","adjacent_nodes","cost_of_s_to_u_plus_cost_of_e","cost_of_s_to_v","PriorityQueue","make","empty","cost","msg","extract_shortest_path_from_predecessor_list","sorter","default_sorter","30","$props","generate","adding","loginName","selectInput","appPassword","hoveringCopyButton","showQR","qrUrl","deviceName","toggleTokenScope","deleteToken","wipeToken","addNewToken","__webpack_nonce__","VTooltip","AuthTokenSection","OCP","InitialState","loadState","canCreateToken"],"mappings":"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","file":"vue-settings-personal-security.js?v=0f6e8042c8bc16b71371","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/js/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 62);\n","'use strict';\n\nvar bind = require('./helpers/bind');\nvar isBuffer = require('is-buffer');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = merge(result[key], val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Function equal to merge with the difference being that no reference\n * to original objects is kept.\n *\n * @see merge\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction deepMerge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = deepMerge(result[key], val);\n } else if (typeof val === 'object') {\n result[key] = deepMerge({}, val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n deepMerge: deepMerge,\n extend: extend,\n trim: trim\n};\n","/*!\n * Vue.js v2.6.10\n * (c) 2014-2019 Evan You\n * Released under the MIT License.\n */\n/* */\n\nvar emptyObject = Object.freeze({});\n\n// These helpers produce better VM code in JS engines due to their\n// explicitness and function inlining.\nfunction isUndef (v) {\n return v === undefined || v === null\n}\n\nfunction isDef (v) {\n return v !== undefined && v !== null\n}\n\nfunction isTrue (v) {\n return v === true\n}\n\nfunction isFalse (v) {\n return v === false\n}\n\n/**\n * Check if value is primitive.\n */\nfunction isPrimitive (value) {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n // $flow-disable-line\n typeof value === 'symbol' ||\n typeof value === 'boolean'\n )\n}\n\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\n/**\n * Get the raw type string of a value, e.g., [object Object].\n */\nvar _toString = Object.prototype.toString;\n\nfunction toRawType (value) {\n return _toString.call(value).slice(8, -1)\n}\n\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject (obj) {\n return _toString.call(obj) === '[object Object]'\n}\n\nfunction isRegExp (v) {\n return _toString.call(v) === '[object RegExp]'\n}\n\n/**\n * Check if val is a valid array index.\n */\nfunction isValidArrayIndex (val) {\n var n = parseFloat(String(val));\n return n >= 0 && Math.floor(n) === n && isFinite(val)\n}\n\nfunction isPromise (val) {\n return (\n isDef(val) &&\n typeof val.then === 'function' &&\n typeof val.catch === 'function'\n )\n}\n\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString (val) {\n return val == null\n ? ''\n : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n\n/**\n * Convert an input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber (val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n\n}\n\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap (\n str,\n expectsLowerCase\n) {\n var map = Object.create(null);\n var list = str.split(',');\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase\n ? function (val) { return map[val.toLowerCase()]; }\n : function (val) { return map[val]; }\n}\n\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n\n/**\n * Check if an attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n\n/**\n * Remove an item from an array.\n */\nfunction remove (arr, item) {\n if (arr.length) {\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1)\n }\n }\n}\n\n/**\n * Check whether an object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n return hasOwnProperty.call(obj, key)\n}\n\n/**\n * Create a cached version of a pure function.\n */\nfunction cached (fn) {\n var cache = Object.create(null);\n return (function cachedFn (str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str))\n })\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })\n});\n\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n});\n\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '-$1').toLowerCase()\n});\n\n/**\n * Simple bind polyfill for environments that do not support it,\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\n * since native bind is now performant enough in most browsers.\n * But removing it would mean breaking code that was able to run in\n * PhantomJS 1.x, so this must be kept for backward compatibility.\n */\n\n/* istanbul ignore next */\nfunction polyfillBind (fn, ctx) {\n function boundFn (a) {\n var l = arguments.length;\n return l\n ? l > 1\n ? fn.apply(ctx, arguments)\n : fn.call(ctx, a)\n : fn.call(ctx)\n }\n\n boundFn._length = fn.length;\n return boundFn\n}\n\nfunction nativeBind (fn, ctx) {\n return fn.bind(ctx)\n}\n\nvar bind = Function.prototype.bind\n ? nativeBind\n : polyfillBind;\n\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray (list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret\n}\n\n/**\n * Mix properties into target object.\n */\nfunction extend (to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n return to\n}\n\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject (arr) {\n var res = {};\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n return res\n}\n\n/* eslint-disable no-unused-vars */\n\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\n */\nfunction noop (a, b, c) {}\n\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n\n/* eslint-enable no-unused-vars */\n\n/**\n * Return the same value.\n */\nvar identity = function (_) { return _; };\n\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual (a, b) {\n if (a === b) { return true }\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n if (isArrayA && isArrayB) {\n return a.length === b.length && a.every(function (e, i) {\n return looseEqual(e, b[i])\n })\n } else if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime()\n } else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return keysA.length === keysB.length && keysA.every(function (key) {\n return looseEqual(a[key], b[key])\n })\n } else {\n /* istanbul ignore next */\n return false\n }\n } catch (e) {\n /* istanbul ignore next */\n return false\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b)\n } else {\n return false\n }\n}\n\n/**\n * Return the first index at which a loosely equal value can be\n * found in the array (if value is a plain object, the array must\n * contain an object of the same shape), or -1 if it is not present.\n */\nfunction looseIndexOf (arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val)) { return i }\n }\n return -1\n}\n\n/**\n * Ensure a function is called only once.\n */\nfunction once (fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n }\n}\n\nvar SSR_ATTR = 'data-server-rendered';\n\nvar ASSET_TYPES = [\n 'component',\n 'directive',\n 'filter'\n];\n\nvar LIFECYCLE_HOOKS = [\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeDestroy',\n 'destroyed',\n 'activated',\n 'deactivated',\n 'errorCaptured',\n 'serverPrefetch'\n];\n\n/* */\n\n\n\nvar config = ({\n /**\n * Option merge strategies (used in core/util/options)\n */\n // $flow-disable-line\n optionMergeStrategies: Object.create(null),\n\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n\n /**\n * Show production mode tip message on boot?\n */\n productionTip: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to enable devtools\n */\n devtools: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to record perf\n */\n performance: false,\n\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n\n /**\n * Warn handler for watcher warns\n */\n warnHandler: null,\n\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n\n /**\n * Custom user key aliases for v-on\n */\n // $flow-disable-line\n keyCodes: Object.create(null),\n\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n\n /**\n * Perform updates asynchronously. Intended to be used by Vue Test Utils\n * This will significantly reduce performance if set to false.\n */\n async: true,\n\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n});\n\n/* */\n\n/**\n * unicode letters used for parsing html tags, component names and property paths.\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\n */\nvar unicodeRegExp = /a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;\n\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved (str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5F\n}\n\n/**\n * Define a property.\n */\nfunction def (obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n}\n\n/**\n * Parse simple path.\n */\nvar bailRE = new RegExp((\"[^\" + (unicodeRegExp.source) + \".$_\\\\d]\"));\nfunction parsePath (path) {\n if (bailRE.test(path)) {\n return\n }\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj) { return }\n obj = obj[segments[i]];\n }\n return obj\n }\n}\n\n/* */\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;\nvar weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nvar isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');\nvar isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');\nvar isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\nvar isPhantomJS = UA && /phantomjs/.test(UA);\nvar isFF = UA && UA.match(/firefox\\/(\\d+)/);\n\n// Firefox has a \"watch\" function on Object.prototype...\nvar nativeWatch = ({}).watch;\n\nvar supportsPassive = false;\nif (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', ({\n get: function get () {\n /* istanbul ignore next */\n supportsPassive = true;\n }\n })); // https://github.com/facebook/flow/issues/285\n window.addEventListener('test-passive', null, opts);\n } catch (e) {}\n}\n\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && !inWeex && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer = global['process'] && global['process'].env.VUE_ENV === 'server';\n } else {\n _isServer = false;\n }\n }\n return _isServer\n};\n\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n/* istanbul ignore next */\nfunction isNative (Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString())\n}\n\nvar hasSymbol =\n typeof Symbol !== 'undefined' && isNative(Symbol) &&\n typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\nvar _Set;\n/* istanbul ignore if */ // $flow-disable-line\nif (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n} else {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = /*@__PURE__*/(function () {\n function Set () {\n this.set = Object.create(null);\n }\n Set.prototype.has = function has (key) {\n return this.set[key] === true\n };\n Set.prototype.add = function add (key) {\n this.set[key] = true;\n };\n Set.prototype.clear = function clear () {\n this.set = Object.create(null);\n };\n\n return Set;\n }());\n}\n\n/* */\n\nvar warn = noop;\nvar tip = noop;\nvar generateComponentTrace = (noop); // work around flow check\nvar formatComponentName = (noop);\n\nif (process.env.NODE_ENV !== 'production') {\n var hasConsole = typeof console !== 'undefined';\n var classifyRE = /(?:^|[-_])(\\w)/g;\n var classify = function (str) { return str\n .replace(classifyRE, function (c) { return c.toUpperCase(); })\n .replace(/[-_]/g, ''); };\n\n warn = function (msg, vm) {\n var trace = vm ? generateComponentTrace(vm) : '';\n\n if (config.warnHandler) {\n config.warnHandler.call(null, msg, vm, trace);\n } else if (hasConsole && (!config.silent)) {\n console.error((\"[Vue warn]: \" + msg + trace));\n }\n };\n\n tip = function (msg, vm) {\n if (hasConsole && (!config.silent)) {\n console.warn(\"[Vue tip]: \" + msg + (\n vm ? generateComponentTrace(vm) : ''\n ));\n }\n };\n\n formatComponentName = function (vm, includeFile) {\n if (vm.$root === vm) {\n return '<Root>'\n }\n var options = typeof vm === 'function' && vm.cid != null\n ? vm.options\n : vm._isVue\n ? vm.$options || vm.constructor.options\n : vm;\n var name = options.name || options._componentTag;\n var file = options.__file;\n if (!name && file) {\n var match = file.match(/([^/\\\\]+)\\.vue$/);\n name = match && match[1];\n }\n\n return (\n (name ? (\"<\" + (classify(name)) + \">\") : \"<Anonymous>\") +\n (file && includeFile !== false ? (\" at \" + file) : '')\n )\n };\n\n var repeat = function (str, n) {\n var res = '';\n while (n) {\n if (n % 2 === 1) { res += str; }\n if (n > 1) { str += str; }\n n >>= 1;\n }\n return res\n };\n\n generateComponentTrace = function (vm) {\n if (vm._isVue && vm.$parent) {\n var tree = [];\n var currentRecursiveSequence = 0;\n while (vm) {\n if (tree.length > 0) {\n var last = tree[tree.length - 1];\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence++;\n vm = vm.$parent;\n continue\n } else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence];\n currentRecursiveSequence = 0;\n }\n }\n tree.push(vm);\n vm = vm.$parent;\n }\n return '\\n\\nfound in\\n\\n' + tree\n .map(function (vm, i) { return (\"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)\n ? ((formatComponentName(vm[0])) + \"... (\" + (vm[1]) + \" recursive calls)\")\n : formatComponentName(vm))); })\n .join('\\n')\n } else {\n return (\"\\n\\n(found in \" + (formatComponentName(vm)) + \")\")\n }\n };\n}\n\n/* */\n\nvar uid = 0;\n\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\nvar Dep = function Dep () {\n this.id = uid++;\n this.subs = [];\n};\n\nDep.prototype.addSub = function addSub (sub) {\n this.subs.push(sub);\n};\n\nDep.prototype.removeSub = function removeSub (sub) {\n remove(this.subs, sub);\n};\n\nDep.prototype.depend = function depend () {\n if (Dep.target) {\n Dep.target.addDep(this);\n }\n};\n\nDep.prototype.notify = function notify () {\n // stabilize the subscriber list first\n var subs = this.subs.slice();\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n // subs aren't sorted in scheduler if not running async\n // we need to sort them now to make sure they fire in correct\n // order\n subs.sort(function (a, b) { return a.id - b.id; });\n }\n for (var i = 0, l = subs.length; i < l; i++) {\n subs[i].update();\n }\n};\n\n// The current target watcher being evaluated.\n// This is globally unique because only one watcher\n// can be evaluated at a time.\nDep.target = null;\nvar targetStack = [];\n\nfunction pushTarget (target) {\n targetStack.push(target);\n Dep.target = target;\n}\n\nfunction popTarget () {\n targetStack.pop();\n Dep.target = targetStack[targetStack.length - 1];\n}\n\n/* */\n\nvar VNode = function VNode (\n tag,\n data,\n children,\n text,\n elm,\n context,\n componentOptions,\n asyncFactory\n) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = undefined;\n this.context = context;\n this.fnContext = undefined;\n this.fnOptions = undefined;\n this.fnScopeId = undefined;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.componentInstance = undefined;\n this.parent = undefined;\n this.raw = false;\n this.isStatic = false;\n this.isRootInsert = true;\n this.isComment = false;\n this.isCloned = false;\n this.isOnce = false;\n this.asyncFactory = asyncFactory;\n this.asyncMeta = undefined;\n this.isAsyncPlaceholder = false;\n};\n\nvar prototypeAccessors = { child: { configurable: true } };\n\n// DEPRECATED: alias for componentInstance for backwards compat.\n/* istanbul ignore next */\nprototypeAccessors.child.get = function () {\n return this.componentInstance\n};\n\nObject.defineProperties( VNode.prototype, prototypeAccessors );\n\nvar createEmptyVNode = function (text) {\n if ( text === void 0 ) text = '';\n\n var node = new VNode();\n node.text = text;\n node.isComment = true;\n return node\n};\n\nfunction createTextVNode (val) {\n return new VNode(undefined, undefined, undefined, String(val))\n}\n\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode (vnode) {\n var cloned = new VNode(\n vnode.tag,\n vnode.data,\n // #7975\n // clone children array to avoid mutating original in case of cloning\n // a child.\n vnode.children && vnode.children.slice(),\n vnode.text,\n vnode.elm,\n vnode.context,\n vnode.componentOptions,\n vnode.asyncFactory\n );\n cloned.ns = vnode.ns;\n cloned.isStatic = vnode.isStatic;\n cloned.key = vnode.key;\n cloned.isComment = vnode.isComment;\n cloned.fnContext = vnode.fnContext;\n cloned.fnOptions = vnode.fnOptions;\n cloned.fnScopeId = vnode.fnScopeId;\n cloned.asyncMeta = vnode.asyncMeta;\n cloned.isCloned = true;\n return cloned\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\n\nvar methodsToPatch = [\n 'push',\n 'pop',\n 'shift',\n 'unshift',\n 'splice',\n 'sort',\n 'reverse'\n];\n\n/**\n * Intercept mutating methods and emit events\n */\nmethodsToPatch.forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n switch (method) {\n case 'push':\n case 'unshift':\n inserted = args;\n break\n case 'splice':\n inserted = args.slice(2);\n break\n }\n if (inserted) { ob.observeArray(inserted); }\n // notify change\n ob.dep.notify();\n return result\n });\n});\n\n/* */\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\nvar shouldObserve = true;\n\nfunction toggleObserving (value) {\n shouldObserve = value;\n}\n\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\nvar Observer = function Observer (value) {\n this.value = value;\n this.dep = new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n if (Array.isArray(value)) {\n if (hasProto) {\n protoAugment(value, arrayMethods);\n } else {\n copyAugment(value, arrayMethods, arrayKeys);\n }\n this.observeArray(value);\n } else {\n this.walk(value);\n }\n};\n\n/**\n * Walk through all properties and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\nObserver.prototype.walk = function walk (obj) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n defineReactive$$1(obj, keys[i]);\n }\n};\n\n/**\n * Observe a list of Array items.\n */\nObserver.prototype.observeArray = function observeArray (items) {\n for (var i = 0, l = items.length; i < l; i++) {\n observe(items[i]);\n }\n};\n\n// helpers\n\n/**\n * Augment a target Object or Array by intercepting\n * the prototype chain using __proto__\n */\nfunction protoAugment (target, src) {\n /* eslint-disable no-proto */\n target.__proto__ = src;\n /* eslint-enable no-proto */\n}\n\n/**\n * Augment a target Object or Array by defining\n * hidden properties.\n */\n/* istanbul ignore next */\nfunction copyAugment (target, src, keys) {\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n def(target, key, src[key]);\n }\n}\n\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe (value, asRootData) {\n if (!isObject(value) || value instanceof VNode) {\n return\n }\n var ob;\n if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n ob = value.__ob__;\n } else if (\n shouldObserve &&\n !isServerRendering() &&\n (Array.isArray(value) || isPlainObject(value)) &&\n Object.isExtensible(value) &&\n !value._isVue\n ) {\n ob = new Observer(value);\n }\n if (asRootData && ob) {\n ob.vmCount++;\n }\n return ob\n}\n\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive$$1 (\n obj,\n key,\n val,\n customSetter,\n shallow\n) {\n var dep = new Dep();\n\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return\n }\n\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n var setter = property && property.set;\n if ((!getter || setter) && arguments.length === 2) {\n val = obj[key];\n }\n\n var childOb = !shallow && observe(val);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter () {\n var value = getter ? getter.call(obj) : val;\n if (Dep.target) {\n dep.depend();\n if (childOb) {\n childOb.dep.depend();\n if (Array.isArray(value)) {\n dependArray(value);\n }\n }\n }\n return value\n },\n set: function reactiveSetter (newVal) {\n var value = getter ? getter.call(obj) : val;\n /* eslint-disable no-self-compare */\n if (newVal === value || (newVal !== newVal && value !== value)) {\n return\n }\n /* eslint-enable no-self-compare */\n if (process.env.NODE_ENV !== 'production' && customSetter) {\n customSetter();\n }\n // #7981: for accessor properties without setter\n if (getter && !setter) { return }\n if (setter) {\n setter.call(obj, newVal);\n } else {\n val = newVal;\n }\n childOb = !shallow && observe(newVal);\n dep.notify();\n }\n });\n}\n\n/**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\nfunction set (target, key, val) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot set reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.length = Math.max(target.length, key);\n target.splice(key, 1, val);\n return val\n }\n if (key in target && !(key in Object.prototype)) {\n target[key] = val;\n return val\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid adding reactive properties to a Vue instance or its root $data ' +\n 'at runtime - declare it upfront in the data option.'\n );\n return val\n }\n if (!ob) {\n target[key] = val;\n return val\n }\n defineReactive$$1(ob.value, key, val);\n ob.dep.notify();\n return val\n}\n\n/**\n * Delete a property and trigger change if necessary.\n */\nfunction del (target, key) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot delete reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.splice(key, 1);\n return\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid deleting properties on a Vue instance or its root $data ' +\n '- just set it to null.'\n );\n return\n }\n if (!hasOwn(target, key)) {\n return\n }\n delete target[key];\n if (!ob) {\n return\n }\n ob.dep.notify();\n}\n\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray (value) {\n for (var e = (void 0), i = 0, l = value.length; i < l; i++) {\n e = value[i];\n e && e.__ob__ && e.__ob__.dep.depend();\n if (Array.isArray(e)) {\n dependArray(e);\n }\n }\n}\n\n/* */\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\nvar strats = config.optionMergeStrategies;\n\n/**\n * Options with restrictions\n */\nif (process.env.NODE_ENV !== 'production') {\n strats.el = strats.propsData = function (parent, child, vm, key) {\n if (!vm) {\n warn(\n \"option \\\"\" + key + \"\\\" can only be used during instance \" +\n 'creation with the `new` keyword.'\n );\n }\n return defaultStrat(parent, child)\n };\n}\n\n/**\n * Helper that recursively merges two data objects together.\n */\nfunction mergeData (to, from) {\n if (!from) { return to }\n var key, toVal, fromVal;\n\n var keys = hasSymbol\n ? Reflect.ownKeys(from)\n : Object.keys(from);\n\n for (var i = 0; i < keys.length; i++) {\n key = keys[i];\n // in case the object is already observed...\n if (key === '__ob__') { continue }\n toVal = to[key];\n fromVal = from[key];\n if (!hasOwn(to, key)) {\n set(to, key, fromVal);\n } else if (\n toVal !== fromVal &&\n isPlainObject(toVal) &&\n isPlainObject(fromVal)\n ) {\n mergeData(toVal, fromVal);\n }\n }\n return to\n}\n\n/**\n * Data\n */\nfunction mergeDataOrFn (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n // in a Vue.extend merge, both should be functions\n if (!childVal) {\n return parentVal\n }\n if (!parentVal) {\n return childVal\n }\n // when parentVal & childVal are both present,\n // we need to return a function that returns the\n // merged result of both functions... no need to\n // check if parentVal is a function here because\n // it has to be a function to pass previous merges.\n return function mergedDataFn () {\n return mergeData(\n typeof childVal === 'function' ? childVal.call(this, this) : childVal,\n typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal\n )\n }\n } else {\n return function mergedInstanceDataFn () {\n // instance merge\n var instanceData = typeof childVal === 'function'\n ? childVal.call(vm, vm)\n : childVal;\n var defaultData = typeof parentVal === 'function'\n ? parentVal.call(vm, vm)\n : parentVal;\n if (instanceData) {\n return mergeData(instanceData, defaultData)\n } else {\n return defaultData\n }\n }\n }\n}\n\nstrats.data = function (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n if (childVal && typeof childVal !== 'function') {\n process.env.NODE_ENV !== 'production' && warn(\n 'The \"data\" option should be a function ' +\n 'that returns a per-instance value in component ' +\n 'definitions.',\n vm\n );\n\n return parentVal\n }\n return mergeDataOrFn(parentVal, childVal)\n }\n\n return mergeDataOrFn(parentVal, childVal, vm)\n};\n\n/**\n * Hooks and props are merged as arrays.\n */\nfunction mergeHook (\n parentVal,\n childVal\n) {\n var res = childVal\n ? parentVal\n ? parentVal.concat(childVal)\n : Array.isArray(childVal)\n ? childVal\n : [childVal]\n : parentVal;\n return res\n ? dedupeHooks(res)\n : res\n}\n\nfunction dedupeHooks (hooks) {\n var res = [];\n for (var i = 0; i < hooks.length; i++) {\n if (res.indexOf(hooks[i]) === -1) {\n res.push(hooks[i]);\n }\n }\n return res\n}\n\nLIFECYCLE_HOOKS.forEach(function (hook) {\n strats[hook] = mergeHook;\n});\n\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\nfunction mergeAssets (\n parentVal,\n childVal,\n vm,\n key\n) {\n var res = Object.create(parentVal || null);\n if (childVal) {\n process.env.NODE_ENV !== 'production' && assertObjectType(key, childVal, vm);\n return extend(res, childVal)\n } else {\n return res\n }\n}\n\nASSET_TYPES.forEach(function (type) {\n strats[type + 's'] = mergeAssets;\n});\n\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\nstrats.watch = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n // work around Firefox's Object.prototype.watch...\n if (parentVal === nativeWatch) { parentVal = undefined; }\n if (childVal === nativeWatch) { childVal = undefined; }\n /* istanbul ignore if */\n if (!childVal) { return Object.create(parentVal || null) }\n if (process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = {};\n extend(ret, parentVal);\n for (var key$1 in childVal) {\n var parent = ret[key$1];\n var child = childVal[key$1];\n if (parent && !Array.isArray(parent)) {\n parent = [parent];\n }\n ret[key$1] = parent\n ? parent.concat(child)\n : Array.isArray(child) ? child : [child];\n }\n return ret\n};\n\n/**\n * Other object hashes.\n */\nstrats.props =\nstrats.methods =\nstrats.inject =\nstrats.computed = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n if (childVal && process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = Object.create(null);\n extend(ret, parentVal);\n if (childVal) { extend(ret, childVal); }\n return ret\n};\nstrats.provide = mergeDataOrFn;\n\n/**\n * Default strategy.\n */\nvar defaultStrat = function (parentVal, childVal) {\n return childVal === undefined\n ? parentVal\n : childVal\n};\n\n/**\n * Validate component names\n */\nfunction checkComponents (options) {\n for (var key in options.components) {\n validateComponentName(key);\n }\n}\n\nfunction validateComponentName (name) {\n if (!new RegExp((\"^[a-zA-Z][\\\\-\\\\.0-9_\" + (unicodeRegExp.source) + \"]*$\")).test(name)) {\n warn(\n 'Invalid component name: \"' + name + '\". Component names ' +\n 'should conform to valid custom element name in html5 specification.'\n );\n }\n if (isBuiltInTag(name) || config.isReservedTag(name)) {\n warn(\n 'Do not use built-in or reserved HTML elements as component ' +\n 'id: ' + name\n );\n }\n}\n\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\nfunction normalizeProps (options, vm) {\n var props = options.props;\n if (!props) { return }\n var res = {};\n var i, val, name;\n if (Array.isArray(props)) {\n i = props.length;\n while (i--) {\n val = props[i];\n if (typeof val === 'string') {\n name = camelize(val);\n res[name] = { type: null };\n } else if (process.env.NODE_ENV !== 'production') {\n warn('props must be strings when using array syntax.');\n }\n }\n } else if (isPlainObject(props)) {\n for (var key in props) {\n val = props[key];\n name = camelize(key);\n res[name] = isPlainObject(val)\n ? val\n : { type: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"props\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(props)) + \".\",\n vm\n );\n }\n options.props = res;\n}\n\n/**\n * Normalize all injections into Object-based format\n */\nfunction normalizeInject (options, vm) {\n var inject = options.inject;\n if (!inject) { return }\n var normalized = options.inject = {};\n if (Array.isArray(inject)) {\n for (var i = 0; i < inject.length; i++) {\n normalized[inject[i]] = { from: inject[i] };\n }\n } else if (isPlainObject(inject)) {\n for (var key in inject) {\n var val = inject[key];\n normalized[key] = isPlainObject(val)\n ? extend({ from: key }, val)\n : { from: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(inject)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Normalize raw function directives into object format.\n */\nfunction normalizeDirectives (options) {\n var dirs = options.directives;\n if (dirs) {\n for (var key in dirs) {\n var def$$1 = dirs[key];\n if (typeof def$$1 === 'function') {\n dirs[key] = { bind: def$$1, update: def$$1 };\n }\n }\n }\n}\n\nfunction assertObjectType (name, value, vm) {\n if (!isPlainObject(value)) {\n warn(\n \"Invalid value for option \\\"\" + name + \"\\\": expected an Object, \" +\n \"but got \" + (toRawType(value)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\nfunction mergeOptions (\n parent,\n child,\n vm\n) {\n if (process.env.NODE_ENV !== 'production') {\n checkComponents(child);\n }\n\n if (typeof child === 'function') {\n child = child.options;\n }\n\n normalizeProps(child, vm);\n normalizeInject(child, vm);\n normalizeDirectives(child);\n\n // Apply extends and mixins on the child options,\n // but only if it is a raw options object that isn't\n // the result of another mergeOptions call.\n // Only merged options has the _base property.\n if (!child._base) {\n if (child.extends) {\n parent = mergeOptions(parent, child.extends, vm);\n }\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n }\n\n var options = {};\n var key;\n for (key in parent) {\n mergeField(key);\n }\n for (key in child) {\n if (!hasOwn(parent, key)) {\n mergeField(key);\n }\n }\n function mergeField (key) {\n var strat = strats[key] || defaultStrat;\n options[key] = strat(parent[key], child[key], vm, key);\n }\n return options\n}\n\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\nfunction resolveAsset (\n options,\n type,\n id,\n warnMissing\n) {\n /* istanbul ignore if */\n if (typeof id !== 'string') {\n return\n }\n var assets = options[type];\n // check local registration variations first\n if (hasOwn(assets, id)) { return assets[id] }\n var camelizedId = camelize(id);\n if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }\n var PascalCaseId = capitalize(camelizedId);\n if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }\n // fallback to prototype chain\n var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {\n warn(\n 'Failed to resolve ' + type.slice(0, -1) + ': ' + id,\n options\n );\n }\n return res\n}\n\n/* */\n\n\n\nfunction validateProp (\n key,\n propOptions,\n propsData,\n vm\n) {\n var prop = propOptions[key];\n var absent = !hasOwn(propsData, key);\n var value = propsData[key];\n // boolean casting\n var booleanIndex = getTypeIndex(Boolean, prop.type);\n if (booleanIndex > -1) {\n if (absent && !hasOwn(prop, 'default')) {\n value = false;\n } else if (value === '' || value === hyphenate(key)) {\n // only cast empty string / same name to boolean if\n // boolean has higher priority\n var stringIndex = getTypeIndex(String, prop.type);\n if (stringIndex < 0 || booleanIndex < stringIndex) {\n value = true;\n }\n }\n }\n // check default value\n if (value === undefined) {\n value = getPropDefaultValue(vm, prop, key);\n // since the default value is a fresh copy,\n // make sure to observe it.\n var prevShouldObserve = shouldObserve;\n toggleObserving(true);\n observe(value);\n toggleObserving(prevShouldObserve);\n }\n if (\n process.env.NODE_ENV !== 'production' &&\n // skip validation for weex recycle-list child component props\n !(false)\n ) {\n assertProp(prop, key, value, vm, absent);\n }\n return value\n}\n\n/**\n * Get the default value of a prop.\n */\nfunction getPropDefaultValue (vm, prop, key) {\n // no default, return undefined\n if (!hasOwn(prop, 'default')) {\n return undefined\n }\n var def = prop.default;\n // warn against non-factory defaults for Object & Array\n if (process.env.NODE_ENV !== 'production' && isObject(def)) {\n warn(\n 'Invalid default value for prop \"' + key + '\": ' +\n 'Props with type Object/Array must use a factory function ' +\n 'to return the default value.',\n vm\n );\n }\n // the raw prop value was also undefined from previous render,\n // return previous default value to avoid unnecessary watcher trigger\n if (vm && vm.$options.propsData &&\n vm.$options.propsData[key] === undefined &&\n vm._props[key] !== undefined\n ) {\n return vm._props[key]\n }\n // call factory function for non-Function types\n // a value is Function if its prototype is function even across different execution context\n return typeof def === 'function' && getType(prop.type) !== 'Function'\n ? def.call(vm)\n : def\n}\n\n/**\n * Assert whether a prop is valid.\n */\nfunction assertProp (\n prop,\n name,\n value,\n vm,\n absent\n) {\n if (prop.required && absent) {\n warn(\n 'Missing required prop: \"' + name + '\"',\n vm\n );\n return\n }\n if (value == null && !prop.required) {\n return\n }\n var type = prop.type;\n var valid = !type || type === true;\n var expectedTypes = [];\n if (type) {\n if (!Array.isArray(type)) {\n type = [type];\n }\n for (var i = 0; i < type.length && !valid; i++) {\n var assertedType = assertType(value, type[i]);\n expectedTypes.push(assertedType.expectedType || '');\n valid = assertedType.valid;\n }\n }\n\n if (!valid) {\n warn(\n getInvalidTypeMessage(name, value, expectedTypes),\n vm\n );\n return\n }\n var validator = prop.validator;\n if (validator) {\n if (!validator(value)) {\n warn(\n 'Invalid prop: custom validator check failed for prop \"' + name + '\".',\n vm\n );\n }\n }\n}\n\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;\n\nfunction assertType (value, type) {\n var valid;\n var expectedType = getType(type);\n if (simpleCheckRE.test(expectedType)) {\n var t = typeof value;\n valid = t === expectedType.toLowerCase();\n // for primitive wrapper objects\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n } else if (expectedType === 'Object') {\n valid = isPlainObject(value);\n } else if (expectedType === 'Array') {\n valid = Array.isArray(value);\n } else {\n valid = value instanceof type;\n }\n return {\n valid: valid,\n expectedType: expectedType\n }\n}\n\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\nfunction getType (fn) {\n var match = fn && fn.toString().match(/^\\s*function (\\w+)/);\n return match ? match[1] : ''\n}\n\nfunction isSameType (a, b) {\n return getType(a) === getType(b)\n}\n\nfunction getTypeIndex (type, expectedTypes) {\n if (!Array.isArray(expectedTypes)) {\n return isSameType(expectedTypes, type) ? 0 : -1\n }\n for (var i = 0, len = expectedTypes.length; i < len; i++) {\n if (isSameType(expectedTypes[i], type)) {\n return i\n }\n }\n return -1\n}\n\nfunction getInvalidTypeMessage (name, value, expectedTypes) {\n var message = \"Invalid prop: type check failed for prop \\\"\" + name + \"\\\".\" +\n \" Expected \" + (expectedTypes.map(capitalize).join(', '));\n var expectedType = expectedTypes[0];\n var receivedType = toRawType(value);\n var expectedValue = styleValue(value, expectedType);\n var receivedValue = styleValue(value, receivedType);\n // check if we need to specify expected value\n if (expectedTypes.length === 1 &&\n isExplicable(expectedType) &&\n !isBoolean(expectedType, receivedType)) {\n message += \" with value \" + expectedValue;\n }\n message += \", got \" + receivedType + \" \";\n // check if we need to specify received value\n if (isExplicable(receivedType)) {\n message += \"with value \" + receivedValue + \".\";\n }\n return message\n}\n\nfunction styleValue (value, type) {\n if (type === 'String') {\n return (\"\\\"\" + value + \"\\\"\")\n } else if (type === 'Number') {\n return (\"\" + (Number(value)))\n } else {\n return (\"\" + value)\n }\n}\n\nfunction isExplicable (value) {\n var explicitTypes = ['string', 'number', 'boolean'];\n return explicitTypes.some(function (elem) { return value.toLowerCase() === elem; })\n}\n\nfunction isBoolean () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; })\n}\n\n/* */\n\nfunction handleError (err, vm, info) {\n // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.\n // See: https://github.com/vuejs/vuex/issues/1505\n pushTarget();\n try {\n if (vm) {\n var cur = vm;\n while ((cur = cur.$parent)) {\n var hooks = cur.$options.errorCaptured;\n if (hooks) {\n for (var i = 0; i < hooks.length; i++) {\n try {\n var capture = hooks[i].call(cur, err, vm, info) === false;\n if (capture) { return }\n } catch (e) {\n globalHandleError(e, cur, 'errorCaptured hook');\n }\n }\n }\n }\n }\n globalHandleError(err, vm, info);\n } finally {\n popTarget();\n }\n}\n\nfunction invokeWithErrorHandling (\n handler,\n context,\n args,\n vm,\n info\n) {\n var res;\n try {\n res = args ? handler.apply(context, args) : handler.call(context);\n if (res && !res._isVue && isPromise(res) && !res._handled) {\n res.catch(function (e) { return handleError(e, vm, info + \" (Promise/async)\"); });\n // issue #9511\n // avoid catch triggering multiple times when nested calls\n res._handled = true;\n }\n } catch (e) {\n handleError(e, vm, info);\n }\n return res\n}\n\nfunction globalHandleError (err, vm, info) {\n if (config.errorHandler) {\n try {\n return config.errorHandler.call(null, err, vm, info)\n } catch (e) {\n // if the user intentionally throws the original error in the handler,\n // do not log it twice\n if (e !== err) {\n logError(e, null, 'config.errorHandler');\n }\n }\n }\n logError(err, vm, info);\n}\n\nfunction logError (err, vm, info) {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n }\n /* istanbul ignore else */\n if ((inBrowser || inWeex) && typeof console !== 'undefined') {\n console.error(err);\n } else {\n throw err\n }\n}\n\n/* */\n\nvar isUsingMicroTask = false;\n\nvar callbacks = [];\nvar pending = false;\n\nfunction flushCallbacks () {\n pending = false;\n var copies = callbacks.slice(0);\n callbacks.length = 0;\n for (var i = 0; i < copies.length; i++) {\n copies[i]();\n }\n}\n\n// Here we have async deferring wrappers using microtasks.\n// In 2.5 we used (macro) tasks (in combination with microtasks).\n// However, it has subtle problems when state is changed right before repaint\n// (e.g. #6813, out-in transitions).\n// Also, using (macro) tasks in event handler would cause some weird behaviors\n// that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).\n// So we now use microtasks everywhere, again.\n// A major drawback of this tradeoff is that there are some scenarios\n// where microtasks have too high a priority and fire in between supposedly\n// sequential events (e.g. #4521, #6690, which have workarounds)\n// or even between bubbling of the same event (#6566).\nvar timerFunc;\n\n// The nextTick behavior leverages the microtask queue, which can be accessed\n// via either native Promise.then or MutationObserver.\n// MutationObserver has wider support, however it is seriously bugged in\n// UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It\n// completely stops working after triggering a few times... so, if native\n// Promise is available, we will use it:\n/* istanbul ignore next, $flow-disable-line */\nif (typeof Promise !== 'undefined' && isNative(Promise)) {\n var p = Promise.resolve();\n timerFunc = function () {\n p.then(flushCallbacks);\n // In problematic UIWebViews, Promise.then doesn't completely break, but\n // it can get stuck in a weird state where callbacks are pushed into the\n // microtask queue but the queue isn't being flushed, until the browser\n // needs to do some other work, e.g. handle a timer. Therefore we can\n // \"force\" the microtask queue to be flushed by adding an empty timer.\n if (isIOS) { setTimeout(noop); }\n };\n isUsingMicroTask = true;\n} else if (!isIE && typeof MutationObserver !== 'undefined' && (\n isNative(MutationObserver) ||\n // PhantomJS and iOS 7.x\n MutationObserver.toString() === '[object MutationObserverConstructor]'\n)) {\n // Use MutationObserver where native Promise is not available,\n // e.g. PhantomJS, iOS7, Android 4.4\n // (#6466 MutationObserver is unreliable in IE11)\n var counter = 1;\n var observer = new MutationObserver(flushCallbacks);\n var textNode = document.createTextNode(String(counter));\n observer.observe(textNode, {\n characterData: true\n });\n timerFunc = function () {\n counter = (counter + 1) % 2;\n textNode.data = String(counter);\n };\n isUsingMicroTask = true;\n} else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n // Fallback to setImmediate.\n // Techinically it leverages the (macro) task queue,\n // but it is still a better choice than setTimeout.\n timerFunc = function () {\n setImmediate(flushCallbacks);\n };\n} else {\n // Fallback to setTimeout.\n timerFunc = function () {\n setTimeout(flushCallbacks, 0);\n };\n}\n\nfunction nextTick (cb, ctx) {\n var _resolve;\n callbacks.push(function () {\n if (cb) {\n try {\n cb.call(ctx);\n } catch (e) {\n handleError(e, ctx, 'nextTick');\n }\n } else if (_resolve) {\n _resolve(ctx);\n }\n });\n if (!pending) {\n pending = true;\n timerFunc();\n }\n // $flow-disable-line\n if (!cb && typeof Promise !== 'undefined') {\n return new Promise(function (resolve) {\n _resolve = resolve;\n })\n }\n}\n\n/* */\n\n/* not type checking this file because flow doesn't play well with Proxy */\n\nvar initProxy;\n\nif (process.env.NODE_ENV !== 'production') {\n var allowedGlobals = makeMap(\n 'Infinity,undefined,NaN,isFinite,isNaN,' +\n 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +\n 'require' // for Webpack/Browserify\n );\n\n var warnNonPresent = function (target, key) {\n warn(\n \"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" +\n 'referenced during render. Make sure that this property is reactive, ' +\n 'either in the data option, or for class-based components, by ' +\n 'initializing the property. ' +\n 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',\n target\n );\n };\n\n var warnReservedPrefix = function (target, key) {\n warn(\n \"Property \\\"\" + key + \"\\\" must be accessed with \\\"$data.\" + key + \"\\\" because \" +\n 'properties starting with \"$\" or \"_\" are not proxied in the Vue instance to ' +\n 'prevent conflicts with Vue internals' +\n 'See: https://vuejs.org/v2/api/#data',\n target\n );\n };\n\n var hasProxy =\n typeof Proxy !== 'undefined' && isNative(Proxy);\n\n if (hasProxy) {\n var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n config.keyCodes = new Proxy(config.keyCodes, {\n set: function set (target, key, value) {\n if (isBuiltInModifier(key)) {\n warn((\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key));\n return false\n } else {\n target[key] = value;\n return true\n }\n }\n });\n }\n\n var hasHandler = {\n has: function has (target, key) {\n var has = key in target;\n var isAllowed = allowedGlobals(key) ||\n (typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data));\n if (!has && !isAllowed) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return has || !isAllowed\n }\n };\n\n var getHandler = {\n get: function get (target, key) {\n if (typeof key === 'string' && !(key in target)) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return target[key]\n }\n };\n\n initProxy = function initProxy (vm) {\n if (hasProxy) {\n // determine which proxy handler to use\n var options = vm.$options;\n var handlers = options.render && options.render._withStripped\n ? getHandler\n : hasHandler;\n vm._renderProxy = new Proxy(vm, handlers);\n } else {\n vm._renderProxy = vm;\n }\n };\n}\n\n/* */\n\nvar seenObjects = new _Set();\n\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\nfunction traverse (val) {\n _traverse(val, seenObjects);\n seenObjects.clear();\n}\n\nfunction _traverse (val, seen) {\n var i, keys;\n var isA = Array.isArray(val);\n if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) {\n return\n }\n if (val.__ob__) {\n var depId = val.__ob__.dep.id;\n if (seen.has(depId)) {\n return\n }\n seen.add(depId);\n }\n if (isA) {\n i = val.length;\n while (i--) { _traverse(val[i], seen); }\n } else {\n keys = Object.keys(val);\n i = keys.length;\n while (i--) { _traverse(val[keys[i]], seen); }\n }\n}\n\nvar mark;\nvar measure;\n\nif (process.env.NODE_ENV !== 'production') {\n var perf = inBrowser && window.performance;\n /* istanbul ignore if */\n if (\n perf &&\n perf.mark &&\n perf.measure &&\n perf.clearMarks &&\n perf.clearMeasures\n ) {\n mark = function (tag) { return perf.mark(tag); };\n measure = function (name, startTag, endTag) {\n perf.measure(name, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n // perf.clearMeasures(name)\n };\n }\n}\n\n/* */\n\nvar normalizeEvent = cached(function (name) {\n var passive = name.charAt(0) === '&';\n name = passive ? name.slice(1) : name;\n var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n name = once$$1 ? name.slice(1) : name;\n var capture = name.charAt(0) === '!';\n name = capture ? name.slice(1) : name;\n return {\n name: name,\n once: once$$1,\n capture: capture,\n passive: passive\n }\n});\n\nfunction createFnInvoker (fns, vm) {\n function invoker () {\n var arguments$1 = arguments;\n\n var fns = invoker.fns;\n if (Array.isArray(fns)) {\n var cloned = fns.slice();\n for (var i = 0; i < cloned.length; i++) {\n invokeWithErrorHandling(cloned[i], null, arguments$1, vm, \"v-on handler\");\n }\n } else {\n // return handler return value for single handlers\n return invokeWithErrorHandling(fns, null, arguments, vm, \"v-on handler\")\n }\n }\n invoker.fns = fns;\n return invoker\n}\n\nfunction updateListeners (\n on,\n oldOn,\n add,\n remove$$1,\n createOnceHandler,\n vm\n) {\n var name, def$$1, cur, old, event;\n for (name in on) {\n def$$1 = cur = on[name];\n old = oldOn[name];\n event = normalizeEvent(name);\n if (isUndef(cur)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Invalid handler for event \\\"\" + (event.name) + \"\\\": got \" + String(cur),\n vm\n );\n } else if (isUndef(old)) {\n if (isUndef(cur.fns)) {\n cur = on[name] = createFnInvoker(cur, vm);\n }\n if (isTrue(event.once)) {\n cur = on[name] = createOnceHandler(event.name, cur, event.capture);\n }\n add(event.name, cur, event.capture, event.passive, event.params);\n } else if (cur !== old) {\n old.fns = cur;\n on[name] = old;\n }\n }\n for (name in oldOn) {\n if (isUndef(on[name])) {\n event = normalizeEvent(name);\n remove$$1(event.name, oldOn[name], event.capture);\n }\n }\n}\n\n/* */\n\nfunction mergeVNodeHook (def, hookKey, hook) {\n if (def instanceof VNode) {\n def = def.data.hook || (def.data.hook = {});\n }\n var invoker;\n var oldHook = def[hookKey];\n\n function wrappedHook () {\n hook.apply(this, arguments);\n // important: remove merged hook to ensure it's called only once\n // and prevent memory leak\n remove(invoker.fns, wrappedHook);\n }\n\n if (isUndef(oldHook)) {\n // no existing hook\n invoker = createFnInvoker([wrappedHook]);\n } else {\n /* istanbul ignore if */\n if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n // already a merged invoker\n invoker = oldHook;\n invoker.fns.push(wrappedHook);\n } else {\n // existing plain hook\n invoker = createFnInvoker([oldHook, wrappedHook]);\n }\n }\n\n invoker.merged = true;\n def[hookKey] = invoker;\n}\n\n/* */\n\nfunction extractPropsFromVNodeData (\n data,\n Ctor,\n tag\n) {\n // we are only extracting raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n if (isUndef(propOptions)) {\n return\n }\n var res = {};\n var attrs = data.attrs;\n var props = data.props;\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n if (process.env.NODE_ENV !== 'production') {\n var keyInLowerCase = key.toLowerCase();\n if (\n key !== keyInLowerCase &&\n attrs && hasOwn(attrs, keyInLowerCase)\n ) {\n tip(\n \"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" +\n (formatComponentName(tag || Ctor)) + \", but the declared prop name is\" +\n \" \\\"\" + key + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and camelCased \" +\n \"props need to use their kebab-case equivalents when using in-DOM \" +\n \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\"\n );\n }\n }\n checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n }\n }\n return res\n}\n\nfunction checkProp (\n res,\n hash,\n key,\n altKey,\n preserve\n) {\n if (isDef(hash)) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n if (!preserve) {\n delete hash[key];\n }\n return true\n } else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n if (!preserve) {\n delete hash[altKey];\n }\n return true\n }\n }\n return false\n}\n\n/* */\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array<VNode>. There are\n// two cases where extra normalization is needed:\n\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren (children) {\n for (var i = 0; i < children.length; i++) {\n if (Array.isArray(children[i])) {\n return Array.prototype.concat.apply([], children)\n }\n }\n return children\n}\n\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g. <template>, <slot>, v-for, or when the children is provided by user\n// with hand-written render functions / JSX. In such cases a full normalization\n// is needed to cater to all possible types of children values.\nfunction normalizeChildren (children) {\n return isPrimitive(children)\n ? [createTextVNode(children)]\n : Array.isArray(children)\n ? normalizeArrayChildren(children)\n : undefined\n}\n\nfunction isTextNode (node) {\n return isDef(node) && isDef(node.text) && isFalse(node.isComment)\n}\n\nfunction normalizeArrayChildren (children, nestedIndex) {\n var res = [];\n var i, c, lastIndex, last;\n for (i = 0; i < children.length; i++) {\n c = children[i];\n if (isUndef(c) || typeof c === 'boolean') { continue }\n lastIndex = res.length - 1;\n last = res[lastIndex];\n // nested\n if (Array.isArray(c)) {\n if (c.length > 0) {\n c = normalizeArrayChildren(c, ((nestedIndex || '') + \"_\" + i));\n // merge adjacent text nodes\n if (isTextNode(c[0]) && isTextNode(last)) {\n res[lastIndex] = createTextVNode(last.text + (c[0]).text);\n c.shift();\n }\n res.push.apply(res, c);\n }\n } else if (isPrimitive(c)) {\n if (isTextNode(last)) {\n // merge adjacent text nodes\n // this is necessary for SSR hydration because text nodes are\n // essentially merged when rendered to HTML strings\n res[lastIndex] = createTextVNode(last.text + c);\n } else if (c !== '') {\n // convert primitive to vnode\n res.push(createTextVNode(c));\n }\n } else {\n if (isTextNode(c) && isTextNode(last)) {\n // merge adjacent text nodes\n res[lastIndex] = createTextVNode(last.text + c.text);\n } else {\n // default key for nested array children (likely generated by v-for)\n if (isTrue(children._isVList) &&\n isDef(c.tag) &&\n isUndef(c.key) &&\n isDef(nestedIndex)) {\n c.key = \"__vlist\" + nestedIndex + \"_\" + i + \"__\";\n }\n res.push(c);\n }\n }\n }\n return res\n}\n\n/* */\n\nfunction initProvide (vm) {\n var provide = vm.$options.provide;\n if (provide) {\n vm._provided = typeof provide === 'function'\n ? provide.call(vm)\n : provide;\n }\n}\n\nfunction initInjections (vm) {\n var result = resolveInject(vm.$options.inject, vm);\n if (result) {\n toggleObserving(false);\n Object.keys(result).forEach(function (key) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n defineReactive$$1(vm, key, result[key], function () {\n warn(\n \"Avoid mutating an injected value directly since the changes will be \" +\n \"overwritten whenever the provided component re-renders. \" +\n \"injection being mutated: \\\"\" + key + \"\\\"\",\n vm\n );\n });\n } else {\n defineReactive$$1(vm, key, result[key]);\n }\n });\n toggleObserving(true);\n }\n}\n\nfunction resolveInject (inject, vm) {\n if (inject) {\n // inject is :any because flow is not smart enough to figure out cached\n var result = Object.create(null);\n var keys = hasSymbol\n ? Reflect.ownKeys(inject)\n : Object.keys(inject);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n // #6574 in case the inject object is observed...\n if (key === '__ob__') { continue }\n var provideKey = inject[key].from;\n var source = vm;\n while (source) {\n if (source._provided && hasOwn(source._provided, provideKey)) {\n result[key] = source._provided[provideKey];\n break\n }\n source = source.$parent;\n }\n if (!source) {\n if ('default' in inject[key]) {\n var provideDefault = inject[key].default;\n result[key] = typeof provideDefault === 'function'\n ? provideDefault.call(vm)\n : provideDefault;\n } else if (process.env.NODE_ENV !== 'production') {\n warn((\"Injection \\\"\" + key + \"\\\" not found\"), vm);\n }\n }\n }\n return result\n }\n}\n\n/* */\n\n\n\n/**\n * Runtime helper for resolving raw children VNodes into a slot object.\n */\nfunction resolveSlots (\n children,\n context\n) {\n if (!children || !children.length) {\n return {}\n }\n var slots = {};\n for (var i = 0, l = children.length; i < l; i++) {\n var child = children[i];\n var data = child.data;\n // remove slot attribute if the node is resolved as a Vue slot node\n if (data && data.attrs && data.attrs.slot) {\n delete data.attrs.slot;\n }\n // named slots should only be respected if the vnode was rendered in the\n // same context.\n if ((child.context === context || child.fnContext === context) &&\n data && data.slot != null\n ) {\n var name = data.slot;\n var slot = (slots[name] || (slots[name] = []));\n if (child.tag === 'template') {\n slot.push.apply(slot, child.children || []);\n } else {\n slot.push(child);\n }\n } else {\n (slots.default || (slots.default = [])).push(child);\n }\n }\n // ignore slots that contains only whitespace\n for (var name$1 in slots) {\n if (slots[name$1].every(isWhitespace)) {\n delete slots[name$1];\n }\n }\n return slots\n}\n\nfunction isWhitespace (node) {\n return (node.isComment && !node.asyncFactory) || node.text === ' '\n}\n\n/* */\n\nfunction normalizeScopedSlots (\n slots,\n normalSlots,\n prevSlots\n) {\n var res;\n var hasNormalSlots = Object.keys(normalSlots).length > 0;\n var isStable = slots ? !!slots.$stable : !hasNormalSlots;\n var key = slots && slots.$key;\n if (!slots) {\n res = {};\n } else if (slots._normalized) {\n // fast path 1: child component re-render only, parent did not change\n return slots._normalized\n } else if (\n isStable &&\n prevSlots &&\n prevSlots !== emptyObject &&\n key === prevSlots.$key &&\n !hasNormalSlots &&\n !prevSlots.$hasNormal\n ) {\n // fast path 2: stable scoped slots w/ no normal slots to proxy,\n // only need to normalize once\n return prevSlots\n } else {\n res = {};\n for (var key$1 in slots) {\n if (slots[key$1] && key$1[0] !== '$') {\n res[key$1] = normalizeScopedSlot(normalSlots, key$1, slots[key$1]);\n }\n }\n }\n // expose normal slots on scopedSlots\n for (var key$2 in normalSlots) {\n if (!(key$2 in res)) {\n res[key$2] = proxyNormalSlot(normalSlots, key$2);\n }\n }\n // avoriaz seems to mock a non-extensible $scopedSlots object\n // and when that is passed down this would cause an error\n if (slots && Object.isExtensible(slots)) {\n (slots)._normalized = res;\n }\n def(res, '$stable', isStable);\n def(res, '$key', key);\n def(res, '$hasNormal', hasNormalSlots);\n return res\n}\n\nfunction normalizeScopedSlot(normalSlots, key, fn) {\n var normalized = function () {\n var res = arguments.length ? fn.apply(null, arguments) : fn({});\n res = res && typeof res === 'object' && !Array.isArray(res)\n ? [res] // single vnode\n : normalizeChildren(res);\n return res && (\n res.length === 0 ||\n (res.length === 1 && res[0].isComment) // #9658\n ) ? undefined\n : res\n };\n // this is a slot using the new v-slot syntax without scope. although it is\n // compiled as a scoped slot, render fn users would expect it to be present\n // on this.$slots because the usage is semantically a normal slot.\n if (fn.proxy) {\n Object.defineProperty(normalSlots, key, {\n get: normalized,\n enumerable: true,\n configurable: true\n });\n }\n return normalized\n}\n\nfunction proxyNormalSlot(slots, key) {\n return function () { return slots[key]; }\n}\n\n/* */\n\n/**\n * Runtime helper for rendering v-for lists.\n */\nfunction renderList (\n val,\n render\n) {\n var ret, i, l, keys, key;\n if (Array.isArray(val) || typeof val === 'string') {\n ret = new Array(val.length);\n for (i = 0, l = val.length; i < l; i++) {\n ret[i] = render(val[i], i);\n }\n } else if (typeof val === 'number') {\n ret = new Array(val);\n for (i = 0; i < val; i++) {\n ret[i] = render(i + 1, i);\n }\n } else if (isObject(val)) {\n if (hasSymbol && val[Symbol.iterator]) {\n ret = [];\n var iterator = val[Symbol.iterator]();\n var result = iterator.next();\n while (!result.done) {\n ret.push(render(result.value, ret.length));\n result = iterator.next();\n }\n } else {\n keys = Object.keys(val);\n ret = new Array(keys.length);\n for (i = 0, l = keys.length; i < l; i++) {\n key = keys[i];\n ret[i] = render(val[key], key, i);\n }\n }\n }\n if (!isDef(ret)) {\n ret = [];\n }\n (ret)._isVList = true;\n return ret\n}\n\n/* */\n\n/**\n * Runtime helper for rendering <slot>\n */\nfunction renderSlot (\n name,\n fallback,\n props,\n bindObject\n) {\n var scopedSlotFn = this.$scopedSlots[name];\n var nodes;\n if (scopedSlotFn) { // scoped slot\n props = props || {};\n if (bindObject) {\n if (process.env.NODE_ENV !== 'production' && !isObject(bindObject)) {\n warn(\n 'slot v-bind without argument expects an Object',\n this\n );\n }\n props = extend(extend({}, bindObject), props);\n }\n nodes = scopedSlotFn(props) || fallback;\n } else {\n nodes = this.$slots[name] || fallback;\n }\n\n var target = props && props.slot;\n if (target) {\n return this.$createElement('template', { slot: target }, nodes)\n } else {\n return nodes\n }\n}\n\n/* */\n\n/**\n * Runtime helper for resolving filters\n */\nfunction resolveFilter (id) {\n return resolveAsset(this.$options, 'filters', id, true) || identity\n}\n\n/* */\n\nfunction isKeyNotMatch (expect, actual) {\n if (Array.isArray(expect)) {\n return expect.indexOf(actual) === -1\n } else {\n return expect !== actual\n }\n}\n\n/**\n * Runtime helper for checking keyCodes from config.\n * exposed as Vue.prototype._k\n * passing in eventKeyName as last argument separately for backwards compat\n */\nfunction checkKeyCodes (\n eventKeyCode,\n key,\n builtInKeyCode,\n eventKeyName,\n builtInKeyName\n) {\n var mappedKeyCode = config.keyCodes[key] || builtInKeyCode;\n if (builtInKeyName && eventKeyName && !config.keyCodes[key]) {\n return isKeyNotMatch(builtInKeyName, eventKeyName)\n } else if (mappedKeyCode) {\n return isKeyNotMatch(mappedKeyCode, eventKeyCode)\n } else if (eventKeyName) {\n return hyphenate(eventKeyName) !== key\n }\n}\n\n/* */\n\n/**\n * Runtime helper for merging v-bind=\"object\" into a VNode's data.\n */\nfunction bindObjectProps (\n data,\n tag,\n value,\n asProp,\n isSync\n) {\n if (value) {\n if (!isObject(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'v-bind without argument expects an Object or Array value',\n this\n );\n } else {\n if (Array.isArray(value)) {\n value = toObject(value);\n }\n var hash;\n var loop = function ( key ) {\n if (\n key === 'class' ||\n key === 'style' ||\n isReservedAttribute(key)\n ) {\n hash = data;\n } else {\n var type = data.attrs && data.attrs.type;\n hash = asProp || config.mustUseProp(tag, type, key)\n ? data.domProps || (data.domProps = {})\n : data.attrs || (data.attrs = {});\n }\n var camelizedKey = camelize(key);\n var hyphenatedKey = hyphenate(key);\n if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) {\n hash[key] = value[key];\n\n if (isSync) {\n var on = data.on || (data.on = {});\n on[(\"update:\" + key)] = function ($event) {\n value[key] = $event;\n };\n }\n }\n };\n\n for (var key in value) loop( key );\n }\n }\n return data\n}\n\n/* */\n\n/**\n * Runtime helper for rendering static trees.\n */\nfunction renderStatic (\n index,\n isInFor\n) {\n var cached = this._staticTrees || (this._staticTrees = []);\n var tree = cached[index];\n // if has already-rendered static tree and not inside v-for,\n // we can reuse the same tree.\n if (tree && !isInFor) {\n return tree\n }\n // otherwise, render a fresh tree.\n tree = cached[index] = this.$options.staticRenderFns[index].call(\n this._renderProxy,\n null,\n this // for render fns generated for functional component templates\n );\n markStatic(tree, (\"__static__\" + index), false);\n return tree\n}\n\n/**\n * Runtime helper for v-once.\n * Effectively it means marking the node as static with a unique key.\n */\nfunction markOnce (\n tree,\n index,\n key\n) {\n markStatic(tree, (\"__once__\" + index + (key ? (\"_\" + key) : \"\")), true);\n return tree\n}\n\nfunction markStatic (\n tree,\n key,\n isOnce\n) {\n if (Array.isArray(tree)) {\n for (var i = 0; i < tree.length; i++) {\n if (tree[i] && typeof tree[i] !== 'string') {\n markStaticNode(tree[i], (key + \"_\" + i), isOnce);\n }\n }\n } else {\n markStaticNode(tree, key, isOnce);\n }\n}\n\nfunction markStaticNode (node, key, isOnce) {\n node.isStatic = true;\n node.key = key;\n node.isOnce = isOnce;\n}\n\n/* */\n\nfunction bindObjectListeners (data, value) {\n if (value) {\n if (!isPlainObject(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'v-on without argument expects an Object value',\n this\n );\n } else {\n var on = data.on = data.on ? extend({}, data.on) : {};\n for (var key in value) {\n var existing = on[key];\n var ours = value[key];\n on[key] = existing ? [].concat(existing, ours) : ours;\n }\n }\n }\n return data\n}\n\n/* */\n\nfunction resolveScopedSlots (\n fns, // see flow/vnode\n res,\n // the following are added in 2.6\n hasDynamicKeys,\n contentHashKey\n) {\n res = res || { $stable: !hasDynamicKeys };\n for (var i = 0; i < fns.length; i++) {\n var slot = fns[i];\n if (Array.isArray(slot)) {\n resolveScopedSlots(slot, res, hasDynamicKeys);\n } else if (slot) {\n // marker for reverse proxying v-slot without scope on this.$slots\n if (slot.proxy) {\n slot.fn.proxy = true;\n }\n res[slot.key] = slot.fn;\n }\n }\n if (contentHashKey) {\n (res).$key = contentHashKey;\n }\n return res\n}\n\n/* */\n\nfunction bindDynamicKeys (baseObj, values) {\n for (var i = 0; i < values.length; i += 2) {\n var key = values[i];\n if (typeof key === 'string' && key) {\n baseObj[values[i]] = values[i + 1];\n } else if (process.env.NODE_ENV !== 'production' && key !== '' && key !== null) {\n // null is a speical value for explicitly removing a binding\n warn(\n (\"Invalid value for dynamic directive argument (expected string or null): \" + key),\n this\n );\n }\n }\n return baseObj\n}\n\n// helper to dynamically append modifier runtime markers to event names.\n// ensure only append when value is already string, otherwise it will be cast\n// to string and cause the type check to miss.\nfunction prependModifier (value, symbol) {\n return typeof value === 'string' ? symbol + value : value\n}\n\n/* */\n\nfunction installRenderHelpers (target) {\n target._o = markOnce;\n target._n = toNumber;\n target._s = toString;\n target._l = renderList;\n target._t = renderSlot;\n target._q = looseEqual;\n target._i = looseIndexOf;\n target._m = renderStatic;\n target._f = resolveFilter;\n target._k = checkKeyCodes;\n target._b = bindObjectProps;\n target._v = createTextVNode;\n target._e = createEmptyVNode;\n target._u = resolveScopedSlots;\n target._g = bindObjectListeners;\n target._d = bindDynamicKeys;\n target._p = prependModifier;\n}\n\n/* */\n\nfunction FunctionalRenderContext (\n data,\n props,\n children,\n parent,\n Ctor\n) {\n var this$1 = this;\n\n var options = Ctor.options;\n // ensure the createElement function in functional components\n // gets a unique context - this is necessary for correct named slot check\n var contextVm;\n if (hasOwn(parent, '_uid')) {\n contextVm = Object.create(parent);\n // $flow-disable-line\n contextVm._original = parent;\n } else {\n // the context vm passed in is a functional context as well.\n // in this case we want to make sure we are able to get a hold to the\n // real context instance.\n contextVm = parent;\n // $flow-disable-line\n parent = parent._original;\n }\n var isCompiled = isTrue(options._compiled);\n var needNormalization = !isCompiled;\n\n this.data = data;\n this.props = props;\n this.children = children;\n this.parent = parent;\n this.listeners = data.on || emptyObject;\n this.injections = resolveInject(options.inject, parent);\n this.slots = function () {\n if (!this$1.$slots) {\n normalizeScopedSlots(\n data.scopedSlots,\n this$1.$slots = resolveSlots(children, parent)\n );\n }\n return this$1.$slots\n };\n\n Object.defineProperty(this, 'scopedSlots', ({\n enumerable: true,\n get: function get () {\n return normalizeScopedSlots(data.scopedSlots, this.slots())\n }\n }));\n\n // support for compiled functional template\n if (isCompiled) {\n // exposing $options for renderStatic()\n this.$options = options;\n // pre-resolve slots for renderSlot()\n this.$slots = this.slots();\n this.$scopedSlots = normalizeScopedSlots(data.scopedSlots, this.$slots);\n }\n\n if (options._scopeId) {\n this._c = function (a, b, c, d) {\n var vnode = createElement(contextVm, a, b, c, d, needNormalization);\n if (vnode && !Array.isArray(vnode)) {\n vnode.fnScopeId = options._scopeId;\n vnode.fnContext = parent;\n }\n return vnode\n };\n } else {\n this._c = function (a, b, c, d) { return createElement(contextVm, a, b, c, d, needNormalization); };\n }\n}\n\ninstallRenderHelpers(FunctionalRenderContext.prototype);\n\nfunction createFunctionalComponent (\n Ctor,\n propsData,\n data,\n contextVm,\n children\n) {\n var options = Ctor.options;\n var props = {};\n var propOptions = options.props;\n if (isDef(propOptions)) {\n for (var key in propOptions) {\n props[key] = validateProp(key, propOptions, propsData || emptyObject);\n }\n } else {\n if (isDef(data.attrs)) { mergeProps(props, data.attrs); }\n if (isDef(data.props)) { mergeProps(props, data.props); }\n }\n\n var renderContext = new FunctionalRenderContext(\n data,\n props,\n children,\n contextVm,\n Ctor\n );\n\n var vnode = options.render.call(null, renderContext._c, renderContext);\n\n if (vnode instanceof VNode) {\n return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options, renderContext)\n } else if (Array.isArray(vnode)) {\n var vnodes = normalizeChildren(vnode) || [];\n var res = new Array(vnodes.length);\n for (var i = 0; i < vnodes.length; i++) {\n res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options, renderContext);\n }\n return res\n }\n}\n\nfunction cloneAndMarkFunctionalResult (vnode, data, contextVm, options, renderContext) {\n // #7817 clone node before setting fnContext, otherwise if the node is reused\n // (e.g. it was from a cached normal slot) the fnContext causes named slots\n // that should not be matched to match.\n var clone = cloneVNode(vnode);\n clone.fnContext = contextVm;\n clone.fnOptions = options;\n if (process.env.NODE_ENV !== 'production') {\n (clone.devtoolsMeta = clone.devtoolsMeta || {}).renderContext = renderContext;\n }\n if (data.slot) {\n (clone.data || (clone.data = {})).slot = data.slot;\n }\n return clone\n}\n\nfunction mergeProps (to, from) {\n for (var key in from) {\n to[camelize(key)] = from[key];\n }\n}\n\n/* */\n\n/* */\n\n/* */\n\n/* */\n\n// inline hooks to be invoked on component VNodes during patch\nvar componentVNodeHooks = {\n init: function init (vnode, hydrating) {\n if (\n vnode.componentInstance &&\n !vnode.componentInstance._isDestroyed &&\n vnode.data.keepAlive\n ) {\n // kept-alive components, treat as a patch\n var mountedNode = vnode; // work around flow\n componentVNodeHooks.prepatch(mountedNode, mountedNode);\n } else {\n var child = vnode.componentInstance = createComponentInstanceForVnode(\n vnode,\n activeInstance\n );\n child.$mount(hydrating ? vnode.elm : undefined, hydrating);\n }\n },\n\n prepatch: function prepatch (oldVnode, vnode) {\n var options = vnode.componentOptions;\n var child = vnode.componentInstance = oldVnode.componentInstance;\n updateChildComponent(\n child,\n options.propsData, // updated props\n options.listeners, // updated listeners\n vnode, // new parent vnode\n options.children // new children\n );\n },\n\n insert: function insert (vnode) {\n var context = vnode.context;\n var componentInstance = vnode.componentInstance;\n if (!componentInstance._isMounted) {\n componentInstance._isMounted = true;\n callHook(componentInstance, 'mounted');\n }\n if (vnode.data.keepAlive) {\n if (context._isMounted) {\n // vue-router#1212\n // During updates, a kept-alive component's child components may\n // change, so directly walking the tree here may call activated hooks\n // on incorrect children. Instead we push them into a queue which will\n // be processed after the whole patch process ended.\n queueActivatedComponent(componentInstance);\n } else {\n activateChildComponent(componentInstance, true /* direct */);\n }\n }\n },\n\n destroy: function destroy (vnode) {\n var componentInstance = vnode.componentInstance;\n if (!componentInstance._isDestroyed) {\n if (!vnode.data.keepAlive) {\n componentInstance.$destroy();\n } else {\n deactivateChildComponent(componentInstance, true /* direct */);\n }\n }\n }\n};\n\nvar hooksToMerge = Object.keys(componentVNodeHooks);\n\nfunction createComponent (\n Ctor,\n data,\n context,\n children,\n tag\n) {\n if (isUndef(Ctor)) {\n return\n }\n\n var baseCtor = context.$options._base;\n\n // plain options object: turn it into a constructor\n if (isObject(Ctor)) {\n Ctor = baseCtor.extend(Ctor);\n }\n\n // if at this stage it's not a constructor or an async component factory,\n // reject.\n if (typeof Ctor !== 'function') {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Invalid Component definition: \" + (String(Ctor))), context);\n }\n return\n }\n\n // async component\n var asyncFactory;\n if (isUndef(Ctor.cid)) {\n asyncFactory = Ctor;\n Ctor = resolveAsyncComponent(asyncFactory, baseCtor);\n if (Ctor === undefined) {\n // return a placeholder node for async component, which is rendered\n // as a comment node but preserves all the raw information for the node.\n // the information will be used for async server-rendering and hydration.\n return createAsyncPlaceholder(\n asyncFactory,\n data,\n context,\n children,\n tag\n )\n }\n }\n\n data = data || {};\n\n // resolve constructor options in case global mixins are applied after\n // component constructor creation\n resolveConstructorOptions(Ctor);\n\n // transform component v-model data into props & events\n if (isDef(data.model)) {\n transformModel(Ctor.options, data);\n }\n\n // extract props\n var propsData = extractPropsFromVNodeData(data, Ctor, tag);\n\n // functional component\n if (isTrue(Ctor.options.functional)) {\n return createFunctionalComponent(Ctor, propsData, data, context, children)\n }\n\n // extract listeners, since these needs to be treated as\n // child component listeners instead of DOM listeners\n var listeners = data.on;\n // replace with listeners with .native modifier\n // so it gets processed during parent component patch.\n data.on = data.nativeOn;\n\n if (isTrue(Ctor.options.abstract)) {\n // abstract components do not keep anything\n // other than props & listeners & slot\n\n // work around flow\n var slot = data.slot;\n data = {};\n if (slot) {\n data.slot = slot;\n }\n }\n\n // install component management hooks onto the placeholder node\n installComponentHooks(data);\n\n // return a placeholder vnode\n var name = Ctor.options.name || tag;\n var vnode = new VNode(\n (\"vue-component-\" + (Ctor.cid) + (name ? (\"-\" + name) : '')),\n data, undefined, undefined, undefined, context,\n { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children },\n asyncFactory\n );\n\n return vnode\n}\n\nfunction createComponentInstanceForVnode (\n vnode, // we know it's MountedComponentVNode but flow doesn't\n parent // activeInstance in lifecycle state\n) {\n var options = {\n _isComponent: true,\n _parentVnode: vnode,\n parent: parent\n };\n // check inline-template render functions\n var inlineTemplate = vnode.data.inlineTemplate;\n if (isDef(inlineTemplate)) {\n options.render = inlineTemplate.render;\n options.staticRenderFns = inlineTemplate.staticRenderFns;\n }\n return new vnode.componentOptions.Ctor(options)\n}\n\nfunction installComponentHooks (data) {\n var hooks = data.hook || (data.hook = {});\n for (var i = 0; i < hooksToMerge.length; i++) {\n var key = hooksToMerge[i];\n var existing = hooks[key];\n var toMerge = componentVNodeHooks[key];\n if (existing !== toMerge && !(existing && existing._merged)) {\n hooks[key] = existing ? mergeHook$1(toMerge, existing) : toMerge;\n }\n }\n}\n\nfunction mergeHook$1 (f1, f2) {\n var merged = function (a, b) {\n // flow complains about extra args which is why we use any\n f1(a, b);\n f2(a, b);\n };\n merged._merged = true;\n return merged\n}\n\n// transform component v-model info (value and callback) into\n// prop and event handler respectively.\nfunction transformModel (options, data) {\n var prop = (options.model && options.model.prop) || 'value';\n var event = (options.model && options.model.event) || 'input'\n ;(data.attrs || (data.attrs = {}))[prop] = data.model.value;\n var on = data.on || (data.on = {});\n var existing = on[event];\n var callback = data.model.callback;\n if (isDef(existing)) {\n if (\n Array.isArray(existing)\n ? existing.indexOf(callback) === -1\n : existing !== callback\n ) {\n on[event] = [callback].concat(existing);\n }\n } else {\n on[event] = callback;\n }\n}\n\n/* */\n\nvar SIMPLE_NORMALIZE = 1;\nvar ALWAYS_NORMALIZE = 2;\n\n// wrapper function for providing a more flexible interface\n// without getting yelled at by flow\nfunction createElement (\n context,\n tag,\n data,\n children,\n normalizationType,\n alwaysNormalize\n) {\n if (Array.isArray(data) || isPrimitive(data)) {\n normalizationType = children;\n children = data;\n data = undefined;\n }\n if (isTrue(alwaysNormalize)) {\n normalizationType = ALWAYS_NORMALIZE;\n }\n return _createElement(context, tag, data, children, normalizationType)\n}\n\nfunction _createElement (\n context,\n tag,\n data,\n children,\n normalizationType\n) {\n if (isDef(data) && isDef((data).__ob__)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Avoid using observed data object as vnode data: \" + (JSON.stringify(data)) + \"\\n\" +\n 'Always create fresh vnode data objects in each render!',\n context\n );\n return createEmptyVNode()\n }\n // object syntax in v-bind\n if (isDef(data) && isDef(data.is)) {\n tag = data.is;\n }\n if (!tag) {\n // in case of component :is set to falsy value\n return createEmptyVNode()\n }\n // warn against non-primitive key\n if (process.env.NODE_ENV !== 'production' &&\n isDef(data) && isDef(data.key) && !isPrimitive(data.key)\n ) {\n {\n warn(\n 'Avoid using non-primitive value as key, ' +\n 'use string/number value instead.',\n context\n );\n }\n }\n // support single function children as default scoped slot\n if (Array.isArray(children) &&\n typeof children[0] === 'function'\n ) {\n data = data || {};\n data.scopedSlots = { default: children[0] };\n children.length = 0;\n }\n if (normalizationType === ALWAYS_NORMALIZE) {\n children = normalizeChildren(children);\n } else if (normalizationType === SIMPLE_NORMALIZE) {\n children = simpleNormalizeChildren(children);\n }\n var vnode, ns;\n if (typeof tag === 'string') {\n var Ctor;\n ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag);\n if (config.isReservedTag(tag)) {\n // platform built-in elements\n vnode = new VNode(\n config.parsePlatformTagName(tag), data, children,\n undefined, undefined, context\n );\n } else if ((!data || !data.pre) && isDef(Ctor = resolveAsset(context.$options, 'components', tag))) {\n // component\n vnode = createComponent(Ctor, data, context, children, tag);\n } else {\n // unknown or unlisted namespaced elements\n // check at runtime because it may get assigned a namespace when its\n // parent normalizes children\n vnode = new VNode(\n tag, data, children,\n undefined, undefined, context\n );\n }\n } else {\n // direct component options / constructor\n vnode = createComponent(tag, data, context, children);\n }\n if (Array.isArray(vnode)) {\n return vnode\n } else if (isDef(vnode)) {\n if (isDef(ns)) { applyNS(vnode, ns); }\n if (isDef(data)) { registerDeepBindings(data); }\n return vnode\n } else {\n return createEmptyVNode()\n }\n}\n\nfunction applyNS (vnode, ns, force) {\n vnode.ns = ns;\n if (vnode.tag === 'foreignObject') {\n // use default namespace inside foreignObject\n ns = undefined;\n force = true;\n }\n if (isDef(vnode.children)) {\n for (var i = 0, l = vnode.children.length; i < l; i++) {\n var child = vnode.children[i];\n if (isDef(child.tag) && (\n isUndef(child.ns) || (isTrue(force) && child.tag !== 'svg'))) {\n applyNS(child, ns, force);\n }\n }\n }\n}\n\n// ref #5318\n// necessary to ensure parent re-render when deep bindings like :style and\n// :class are used on slot nodes\nfunction registerDeepBindings (data) {\n if (isObject(data.style)) {\n traverse(data.style);\n }\n if (isObject(data.class)) {\n traverse(data.class);\n }\n}\n\n/* */\n\nfunction initRender (vm) {\n vm._vnode = null; // the root of the child tree\n vm._staticTrees = null; // v-once cached trees\n var options = vm.$options;\n var parentVnode = vm.$vnode = options._parentVnode; // the placeholder node in parent tree\n var renderContext = parentVnode && parentVnode.context;\n vm.$slots = resolveSlots(options._renderChildren, renderContext);\n vm.$scopedSlots = emptyObject;\n // bind the createElement fn to this instance\n // so that we get proper render context inside it.\n // args order: tag, data, children, normalizationType, alwaysNormalize\n // internal version is used by render functions compiled from templates\n vm._c = function (a, b, c, d) { return createElement(vm, a, b, c, d, false); };\n // normalization is always applied for the public version, used in\n // user-written render functions.\n vm.$createElement = function (a, b, c, d) { return createElement(vm, a, b, c, d, true); };\n\n // $attrs & $listeners are exposed for easier HOC creation.\n // they need to be reactive so that HOCs using them are always updated\n var parentData = parentVnode && parentVnode.data;\n\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, function () {\n !isUpdatingChildComponent && warn(\"$attrs is readonly.\", vm);\n }, true);\n defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, function () {\n !isUpdatingChildComponent && warn(\"$listeners is readonly.\", vm);\n }, true);\n } else {\n defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, null, true);\n defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, null, true);\n }\n}\n\nvar currentRenderingInstance = null;\n\nfunction renderMixin (Vue) {\n // install runtime convenience helpers\n installRenderHelpers(Vue.prototype);\n\n Vue.prototype.$nextTick = function (fn) {\n return nextTick(fn, this)\n };\n\n Vue.prototype._render = function () {\n var vm = this;\n var ref = vm.$options;\n var render = ref.render;\n var _parentVnode = ref._parentVnode;\n\n if (_parentVnode) {\n vm.$scopedSlots = normalizeScopedSlots(\n _parentVnode.data.scopedSlots,\n vm.$slots,\n vm.$scopedSlots\n );\n }\n\n // set parent vnode. this allows render functions to have access\n // to the data on the placeholder node.\n vm.$vnode = _parentVnode;\n // render self\n var vnode;\n try {\n // There's no need to maintain a stack becaues all render fns are called\n // separately from one another. Nested component's render fns are called\n // when parent component is patched.\n currentRenderingInstance = vm;\n vnode = render.call(vm._renderProxy, vm.$createElement);\n } catch (e) {\n handleError(e, vm, \"render\");\n // return error render result,\n // or previous vnode to prevent render error causing blank component\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production' && vm.$options.renderError) {\n try {\n vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e);\n } catch (e) {\n handleError(e, vm, \"renderError\");\n vnode = vm._vnode;\n }\n } else {\n vnode = vm._vnode;\n }\n } finally {\n currentRenderingInstance = null;\n }\n // if the returned array contains only a single node, allow it\n if (Array.isArray(vnode) && vnode.length === 1) {\n vnode = vnode[0];\n }\n // return empty vnode in case the render function errored out\n if (!(vnode instanceof VNode)) {\n if (process.env.NODE_ENV !== 'production' && Array.isArray(vnode)) {\n warn(\n 'Multiple root nodes returned from render function. Render function ' +\n 'should return a single root node.',\n vm\n );\n }\n vnode = createEmptyVNode();\n }\n // set parent\n vnode.parent = _parentVnode;\n return vnode\n };\n}\n\n/* */\n\nfunction ensureCtor (comp, base) {\n if (\n comp.__esModule ||\n (hasSymbol && comp[Symbol.toStringTag] === 'Module')\n ) {\n comp = comp.default;\n }\n return isObject(comp)\n ? base.extend(comp)\n : comp\n}\n\nfunction createAsyncPlaceholder (\n factory,\n data,\n context,\n children,\n tag\n) {\n var node = createEmptyVNode();\n node.asyncFactory = factory;\n node.asyncMeta = { data: data, context: context, children: children, tag: tag };\n return node\n}\n\nfunction resolveAsyncComponent (\n factory,\n baseCtor\n) {\n if (isTrue(factory.error) && isDef(factory.errorComp)) {\n return factory.errorComp\n }\n\n if (isDef(factory.resolved)) {\n return factory.resolved\n }\n\n var owner = currentRenderingInstance;\n if (owner && isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {\n // already pending\n factory.owners.push(owner);\n }\n\n if (isTrue(factory.loading) && isDef(factory.loadingComp)) {\n return factory.loadingComp\n }\n\n if (owner && !isDef(factory.owners)) {\n var owners = factory.owners = [owner];\n var sync = true;\n var timerLoading = null;\n var timerTimeout = null\n\n ;(owner).$on('hook:destroyed', function () { return remove(owners, owner); });\n\n var forceRender = function (renderCompleted) {\n for (var i = 0, l = owners.length; i < l; i++) {\n (owners[i]).$forceUpdate();\n }\n\n if (renderCompleted) {\n owners.length = 0;\n if (timerLoading !== null) {\n clearTimeout(timerLoading);\n timerLoading = null;\n }\n if (timerTimeout !== null) {\n clearTimeout(timerTimeout);\n timerTimeout = null;\n }\n }\n };\n\n var resolve = once(function (res) {\n // cache resolved\n factory.resolved = ensureCtor(res, baseCtor);\n // invoke callbacks only if this is not a synchronous resolve\n // (async resolves are shimmed as synchronous during SSR)\n if (!sync) {\n forceRender(true);\n } else {\n owners.length = 0;\n }\n });\n\n var reject = once(function (reason) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Failed to resolve async component: \" + (String(factory)) +\n (reason ? (\"\\nReason: \" + reason) : '')\n );\n if (isDef(factory.errorComp)) {\n factory.error = true;\n forceRender(true);\n }\n });\n\n var res = factory(resolve, reject);\n\n if (isObject(res)) {\n if (isPromise(res)) {\n // () => Promise\n if (isUndef(factory.resolved)) {\n res.then(resolve, reject);\n }\n } else if (isPromise(res.component)) {\n res.component.then(resolve, reject);\n\n if (isDef(res.error)) {\n factory.errorComp = ensureCtor(res.error, baseCtor);\n }\n\n if (isDef(res.loading)) {\n factory.loadingComp = ensureCtor(res.loading, baseCtor);\n if (res.delay === 0) {\n factory.loading = true;\n } else {\n timerLoading = setTimeout(function () {\n timerLoading = null;\n if (isUndef(factory.resolved) && isUndef(factory.error)) {\n factory.loading = true;\n forceRender(false);\n }\n }, res.delay || 200);\n }\n }\n\n if (isDef(res.timeout)) {\n timerTimeout = setTimeout(function () {\n timerTimeout = null;\n if (isUndef(factory.resolved)) {\n reject(\n process.env.NODE_ENV !== 'production'\n ? (\"timeout (\" + (res.timeout) + \"ms)\")\n : null\n );\n }\n }, res.timeout);\n }\n }\n }\n\n sync = false;\n // return in case resolved synchronously\n return factory.loading\n ? factory.loadingComp\n : factory.resolved\n }\n}\n\n/* */\n\nfunction isAsyncPlaceholder (node) {\n return node.isComment && node.asyncFactory\n}\n\n/* */\n\nfunction getFirstComponentChild (children) {\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n var c = children[i];\n if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) {\n return c\n }\n }\n }\n}\n\n/* */\n\n/* */\n\nfunction initEvents (vm) {\n vm._events = Object.create(null);\n vm._hasHookEvent = false;\n // init parent attached events\n var listeners = vm.$options._parentListeners;\n if (listeners) {\n updateComponentListeners(vm, listeners);\n }\n}\n\nvar target;\n\nfunction add (event, fn) {\n target.$on(event, fn);\n}\n\nfunction remove$1 (event, fn) {\n target.$off(event, fn);\n}\n\nfunction createOnceHandler (event, fn) {\n var _target = target;\n return function onceHandler () {\n var res = fn.apply(null, arguments);\n if (res !== null) {\n _target.$off(event, onceHandler);\n }\n }\n}\n\nfunction updateComponentListeners (\n vm,\n listeners,\n oldListeners\n) {\n target = vm;\n updateListeners(listeners, oldListeners || {}, add, remove$1, createOnceHandler, vm);\n target = undefined;\n}\n\nfunction eventsMixin (Vue) {\n var hookRE = /^hook:/;\n Vue.prototype.$on = function (event, fn) {\n var vm = this;\n if (Array.isArray(event)) {\n for (var i = 0, l = event.length; i < l; i++) {\n vm.$on(event[i], fn);\n }\n } else {\n (vm._events[event] || (vm._events[event] = [])).push(fn);\n // optimize hook:event cost by using a boolean flag marked at registration\n // instead of a hash lookup\n if (hookRE.test(event)) {\n vm._hasHookEvent = true;\n }\n }\n return vm\n };\n\n Vue.prototype.$once = function (event, fn) {\n var vm = this;\n function on () {\n vm.$off(event, on);\n fn.apply(vm, arguments);\n }\n on.fn = fn;\n vm.$on(event, on);\n return vm\n };\n\n Vue.prototype.$off = function (event, fn) {\n var vm = this;\n // all\n if (!arguments.length) {\n vm._events = Object.create(null);\n return vm\n }\n // array of events\n if (Array.isArray(event)) {\n for (var i$1 = 0, l = event.length; i$1 < l; i$1++) {\n vm.$off(event[i$1], fn);\n }\n return vm\n }\n // specific event\n var cbs = vm._events[event];\n if (!cbs) {\n return vm\n }\n if (!fn) {\n vm._events[event] = null;\n return vm\n }\n // specific handler\n var cb;\n var i = cbs.length;\n while (i--) {\n cb = cbs[i];\n if (cb === fn || cb.fn === fn) {\n cbs.splice(i, 1);\n break\n }\n }\n return vm\n };\n\n Vue.prototype.$emit = function (event) {\n var vm = this;\n if (process.env.NODE_ENV !== 'production') {\n var lowerCaseEvent = event.toLowerCase();\n if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) {\n tip(\n \"Event \\\"\" + lowerCaseEvent + \"\\\" is emitted in component \" +\n (formatComponentName(vm)) + \" but the handler is registered for \\\"\" + event + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and you cannot use \" +\n \"v-on to listen to camelCase events when using in-DOM templates. \" +\n \"You should probably use \\\"\" + (hyphenate(event)) + \"\\\" instead of \\\"\" + event + \"\\\".\"\n );\n }\n }\n var cbs = vm._events[event];\n if (cbs) {\n cbs = cbs.length > 1 ? toArray(cbs) : cbs;\n var args = toArray(arguments, 1);\n var info = \"event handler for \\\"\" + event + \"\\\"\";\n for (var i = 0, l = cbs.length; i < l; i++) {\n invokeWithErrorHandling(cbs[i], vm, args, vm, info);\n }\n }\n return vm\n };\n}\n\n/* */\n\nvar activeInstance = null;\nvar isUpdatingChildComponent = false;\n\nfunction setActiveInstance(vm) {\n var prevActiveInstance = activeInstance;\n activeInstance = vm;\n return function () {\n activeInstance = prevActiveInstance;\n }\n}\n\nfunction initLifecycle (vm) {\n var options = vm.$options;\n\n // locate first non-abstract parent\n var parent = options.parent;\n if (parent && !options.abstract) {\n while (parent.$options.abstract && parent.$parent) {\n parent = parent.$parent;\n }\n parent.$children.push(vm);\n }\n\n vm.$parent = parent;\n vm.$root = parent ? parent.$root : vm;\n\n vm.$children = [];\n vm.$refs = {};\n\n vm._watcher = null;\n vm._inactive = null;\n vm._directInactive = false;\n vm._isMounted = false;\n vm._isDestroyed = false;\n vm._isBeingDestroyed = false;\n}\n\nfunction lifecycleMixin (Vue) {\n Vue.prototype._update = function (vnode, hydrating) {\n var vm = this;\n var prevEl = vm.$el;\n var prevVnode = vm._vnode;\n var restoreActiveInstance = setActiveInstance(vm);\n vm._vnode = vnode;\n // Vue.prototype.__patch__ is injected in entry points\n // based on the rendering backend used.\n if (!prevVnode) {\n // initial render\n vm.$el = vm.__patch__(vm.$el, vnode, hydrating, false /* removeOnly */);\n } else {\n // updates\n vm.$el = vm.__patch__(prevVnode, vnode);\n }\n restoreActiveInstance();\n // update __vue__ reference\n if (prevEl) {\n prevEl.__vue__ = null;\n }\n if (vm.$el) {\n vm.$el.__vue__ = vm;\n }\n // if parent is an HOC, update its $el as well\n if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) {\n vm.$parent.$el = vm.$el;\n }\n // updated hook is called by the scheduler to ensure that children are\n // updated in a parent's updated hook.\n };\n\n Vue.prototype.$forceUpdate = function () {\n var vm = this;\n if (vm._watcher) {\n vm._watcher.update();\n }\n };\n\n Vue.prototype.$destroy = function () {\n var vm = this;\n if (vm._isBeingDestroyed) {\n return\n }\n callHook(vm, 'beforeDestroy');\n vm._isBeingDestroyed = true;\n // remove self from parent\n var parent = vm.$parent;\n if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {\n remove(parent.$children, vm);\n }\n // teardown watchers\n if (vm._watcher) {\n vm._watcher.teardown();\n }\n var i = vm._watchers.length;\n while (i--) {\n vm._watchers[i].teardown();\n }\n // remove reference from data ob\n // frozen object may not have observer.\n if (vm._data.__ob__) {\n vm._data.__ob__.vmCount--;\n }\n // call the last hook...\n vm._isDestroyed = true;\n // invoke destroy hooks on current rendered tree\n vm.__patch__(vm._vnode, null);\n // fire destroyed hook\n callHook(vm, 'destroyed');\n // turn off all instance listeners.\n vm.$off();\n // remove __vue__ reference\n if (vm.$el) {\n vm.$el.__vue__ = null;\n }\n // release circular reference (#6759)\n if (vm.$vnode) {\n vm.$vnode.parent = null;\n }\n };\n}\n\nfunction mountComponent (\n vm,\n el,\n hydrating\n) {\n vm.$el = el;\n if (!vm.$options.render) {\n vm.$options.render = createEmptyVNode;\n if (process.env.NODE_ENV !== 'production') {\n /* istanbul ignore if */\n if ((vm.$options.template && vm.$options.template.charAt(0) !== '#') ||\n vm.$options.el || el) {\n warn(\n 'You are using the runtime-only build of Vue where the template ' +\n 'compiler is not available. Either pre-compile the templates into ' +\n 'render functions, or use the compiler-included build.',\n vm\n );\n } else {\n warn(\n 'Failed to mount component: template or render function not defined.',\n vm\n );\n }\n }\n }\n callHook(vm, 'beforeMount');\n\n var updateComponent;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n updateComponent = function () {\n var name = vm._name;\n var id = vm._uid;\n var startTag = \"vue-perf-start:\" + id;\n var endTag = \"vue-perf-end:\" + id;\n\n mark(startTag);\n var vnode = vm._render();\n mark(endTag);\n measure((\"vue \" + name + \" render\"), startTag, endTag);\n\n mark(startTag);\n vm._update(vnode, hydrating);\n mark(endTag);\n measure((\"vue \" + name + \" patch\"), startTag, endTag);\n };\n } else {\n updateComponent = function () {\n vm._update(vm._render(), hydrating);\n };\n }\n\n // we set this to vm._watcher inside the watcher's constructor\n // since the watcher's initial patch may call $forceUpdate (e.g. inside child\n // component's mounted hook), which relies on vm._watcher being already defined\n new Watcher(vm, updateComponent, noop, {\n before: function before () {\n if (vm._isMounted && !vm._isDestroyed) {\n callHook(vm, 'beforeUpdate');\n }\n }\n }, true /* isRenderWatcher */);\n hydrating = false;\n\n // manually mounted instance, call mounted on self\n // mounted is called for render-created child components in its inserted hook\n if (vm.$vnode == null) {\n vm._isMounted = true;\n callHook(vm, 'mounted');\n }\n return vm\n}\n\nfunction updateChildComponent (\n vm,\n propsData,\n listeners,\n parentVnode,\n renderChildren\n) {\n if (process.env.NODE_ENV !== 'production') {\n isUpdatingChildComponent = true;\n }\n\n // determine whether component has slot children\n // we need to do this before overwriting $options._renderChildren.\n\n // check if there are dynamic scopedSlots (hand-written or compiled but with\n // dynamic slot names). Static scoped slots compiled from template has the\n // \"$stable\" marker.\n var newScopedSlots = parentVnode.data.scopedSlots;\n var oldScopedSlots = vm.$scopedSlots;\n var hasDynamicScopedSlot = !!(\n (newScopedSlots && !newScopedSlots.$stable) ||\n (oldScopedSlots !== emptyObject && !oldScopedSlots.$stable) ||\n (newScopedSlots && vm.$scopedSlots.$key !== newScopedSlots.$key)\n );\n\n // Any static slot children from the parent may have changed during parent's\n // update. Dynamic scoped slots may also have changed. In such cases, a forced\n // update is necessary to ensure correctness.\n var needsForceUpdate = !!(\n renderChildren || // has new static slots\n vm.$options._renderChildren || // has old static slots\n hasDynamicScopedSlot\n );\n\n vm.$options._parentVnode = parentVnode;\n vm.$vnode = parentVnode; // update vm's placeholder node without re-render\n\n if (vm._vnode) { // update child tree's parent\n vm._vnode.parent = parentVnode;\n }\n vm.$options._renderChildren = renderChildren;\n\n // update $attrs and $listeners hash\n // these are also reactive so they may trigger child update if the child\n // used them during render\n vm.$attrs = parentVnode.data.attrs || emptyObject;\n vm.$listeners = listeners || emptyObject;\n\n // update props\n if (propsData && vm.$options.props) {\n toggleObserving(false);\n var props = vm._props;\n var propKeys = vm.$options._propKeys || [];\n for (var i = 0; i < propKeys.length; i++) {\n var key = propKeys[i];\n var propOptions = vm.$options.props; // wtf flow?\n props[key] = validateProp(key, propOptions, propsData, vm);\n }\n toggleObserving(true);\n // keep a copy of raw propsData\n vm.$options.propsData = propsData;\n }\n\n // update listeners\n listeners = listeners || emptyObject;\n var oldListeners = vm.$options._parentListeners;\n vm.$options._parentListeners = listeners;\n updateComponentListeners(vm, listeners, oldListeners);\n\n // resolve slots + force update if has children\n if (needsForceUpdate) {\n vm.$slots = resolveSlots(renderChildren, parentVnode.context);\n vm.$forceUpdate();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n isUpdatingChildComponent = false;\n }\n}\n\nfunction isInInactiveTree (vm) {\n while (vm && (vm = vm.$parent)) {\n if (vm._inactive) { return true }\n }\n return false\n}\n\nfunction activateChildComponent (vm, direct) {\n if (direct) {\n vm._directInactive = false;\n if (isInInactiveTree(vm)) {\n return\n }\n } else if (vm._directInactive) {\n return\n }\n if (vm._inactive || vm._inactive === null) {\n vm._inactive = false;\n for (var i = 0; i < vm.$children.length; i++) {\n activateChildComponent(vm.$children[i]);\n }\n callHook(vm, 'activated');\n }\n}\n\nfunction deactivateChildComponent (vm, direct) {\n if (direct) {\n vm._directInactive = true;\n if (isInInactiveTree(vm)) {\n return\n }\n }\n if (!vm._inactive) {\n vm._inactive = true;\n for (var i = 0; i < vm.$children.length; i++) {\n deactivateChildComponent(vm.$children[i]);\n }\n callHook(vm, 'deactivated');\n }\n}\n\nfunction callHook (vm, hook) {\n // #7573 disable dep collection when invoking lifecycle hooks\n pushTarget();\n var handlers = vm.$options[hook];\n var info = hook + \" hook\";\n if (handlers) {\n for (var i = 0, j = handlers.length; i < j; i++) {\n invokeWithErrorHandling(handlers[i], vm, null, vm, info);\n }\n }\n if (vm._hasHookEvent) {\n vm.$emit('hook:' + hook);\n }\n popTarget();\n}\n\n/* */\n\nvar MAX_UPDATE_COUNT = 100;\n\nvar queue = [];\nvar activatedChildren = [];\nvar has = {};\nvar circular = {};\nvar waiting = false;\nvar flushing = false;\nvar index = 0;\n\n/**\n * Reset the scheduler's state.\n */\nfunction resetSchedulerState () {\n index = queue.length = activatedChildren.length = 0;\n has = {};\n if (process.env.NODE_ENV !== 'production') {\n circular = {};\n }\n waiting = flushing = false;\n}\n\n// Async edge case #6566 requires saving the timestamp when event listeners are\n// attached. However, calling performance.now() has a perf overhead especially\n// if the page has thousands of event listeners. Instead, we take a timestamp\n// every time the scheduler flushes and use that for all event listeners\n// attached during that flush.\nvar currentFlushTimestamp = 0;\n\n// Async edge case fix requires storing an event listener's attach timestamp.\nvar getNow = Date.now;\n\n// Determine what event timestamp the browser is using. Annoyingly, the\n// timestamp can either be hi-res (relative to page load) or low-res\n// (relative to UNIX epoch), so in order to compare time we have to use the\n// same timestamp type when saving the flush timestamp.\n// All IE versions use low-res event timestamps, and have problematic clock\n// implementations (#9632)\nif (inBrowser && !isIE) {\n var performance = window.performance;\n if (\n performance &&\n typeof performance.now === 'function' &&\n getNow() > document.createEvent('Event').timeStamp\n ) {\n // if the event timestamp, although evaluated AFTER the Date.now(), is\n // smaller than it, it means the event is using a hi-res timestamp,\n // and we need to use the hi-res version for event listener timestamps as\n // well.\n getNow = function () { return performance.now(); };\n }\n}\n\n/**\n * Flush both queues and run the watchers.\n */\nfunction flushSchedulerQueue () {\n currentFlushTimestamp = getNow();\n flushing = true;\n var watcher, id;\n\n // Sort queue before flush.\n // This ensures that:\n // 1. Components are updated from parent to child. (because parent is always\n // created before the child)\n // 2. A component's user watchers are run before its render watcher (because\n // user watchers are created before the render watcher)\n // 3. If a component is destroyed during a parent component's watcher run,\n // its watchers can be skipped.\n queue.sort(function (a, b) { return a.id - b.id; });\n\n // do not cache length because more watchers might be pushed\n // as we run existing watchers\n for (index = 0; index < queue.length; index++) {\n watcher = queue[index];\n if (watcher.before) {\n watcher.before();\n }\n id = watcher.id;\n has[id] = null;\n watcher.run();\n // in dev build, check and stop circular updates.\n if (process.env.NODE_ENV !== 'production' && has[id] != null) {\n circular[id] = (circular[id] || 0) + 1;\n if (circular[id] > MAX_UPDATE_COUNT) {\n warn(\n 'You may have an infinite update loop ' + (\n watcher.user\n ? (\"in watcher with expression \\\"\" + (watcher.expression) + \"\\\"\")\n : \"in a component render function.\"\n ),\n watcher.vm\n );\n break\n }\n }\n }\n\n // keep copies of post queues before resetting state\n var activatedQueue = activatedChildren.slice();\n var updatedQueue = queue.slice();\n\n resetSchedulerState();\n\n // call component updated and activated hooks\n callActivatedHooks(activatedQueue);\n callUpdatedHooks(updatedQueue);\n\n // devtool hook\n /* istanbul ignore if */\n if (devtools && config.devtools) {\n devtools.emit('flush');\n }\n}\n\nfunction callUpdatedHooks (queue) {\n var i = queue.length;\n while (i--) {\n var watcher = queue[i];\n var vm = watcher.vm;\n if (vm._watcher === watcher && vm._isMounted && !vm._isDestroyed) {\n callHook(vm, 'updated');\n }\n }\n}\n\n/**\n * Queue a kept-alive component that was activated during patch.\n * The queue will be processed after the entire tree has been patched.\n */\nfunction queueActivatedComponent (vm) {\n // setting _inactive to false here so that a render function can\n // rely on checking whether it's in an inactive tree (e.g. router-view)\n vm._inactive = false;\n activatedChildren.push(vm);\n}\n\nfunction callActivatedHooks (queue) {\n for (var i = 0; i < queue.length; i++) {\n queue[i]._inactive = true;\n activateChildComponent(queue[i], true /* true */);\n }\n}\n\n/**\n * Push a watcher into the watcher queue.\n * Jobs with duplicate IDs will be skipped unless it's\n * pushed when the queue is being flushed.\n */\nfunction queueWatcher (watcher) {\n var id = watcher.id;\n if (has[id] == null) {\n has[id] = true;\n if (!flushing) {\n queue.push(watcher);\n } else {\n // if already flushing, splice the watcher based on its id\n // if already past its id, it will be run next immediately.\n var i = queue.length - 1;\n while (i > index && queue[i].id > watcher.id) {\n i--;\n }\n queue.splice(i + 1, 0, watcher);\n }\n // queue the flush\n if (!waiting) {\n waiting = true;\n\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n flushSchedulerQueue();\n return\n }\n nextTick(flushSchedulerQueue);\n }\n }\n}\n\n/* */\n\n\n\nvar uid$2 = 0;\n\n/**\n * A watcher parses an expression, collects dependencies,\n * and fires callback when the expression value changes.\n * This is used for both the $watch() api and directives.\n */\nvar Watcher = function Watcher (\n vm,\n expOrFn,\n cb,\n options,\n isRenderWatcher\n) {\n this.vm = vm;\n if (isRenderWatcher) {\n vm._watcher = this;\n }\n vm._watchers.push(this);\n // options\n if (options) {\n this.deep = !!options.deep;\n this.user = !!options.user;\n this.lazy = !!options.lazy;\n this.sync = !!options.sync;\n this.before = options.before;\n } else {\n this.deep = this.user = this.lazy = this.sync = false;\n }\n this.cb = cb;\n this.id = ++uid$2; // uid for batching\n this.active = true;\n this.dirty = this.lazy; // for lazy watchers\n this.deps = [];\n this.newDeps = [];\n this.depIds = new _Set();\n this.newDepIds = new _Set();\n this.expression = process.env.NODE_ENV !== 'production'\n ? expOrFn.toString()\n : '';\n // parse expression for getter\n if (typeof expOrFn === 'function') {\n this.getter = expOrFn;\n } else {\n this.getter = parsePath(expOrFn);\n if (!this.getter) {\n this.getter = noop;\n process.env.NODE_ENV !== 'production' && warn(\n \"Failed watching path: \\\"\" + expOrFn + \"\\\" \" +\n 'Watcher only accepts simple dot-delimited paths. ' +\n 'For full control, use a function instead.',\n vm\n );\n }\n }\n this.value = this.lazy\n ? undefined\n : this.get();\n};\n\n/**\n * Evaluate the getter, and re-collect dependencies.\n */\nWatcher.prototype.get = function get () {\n pushTarget(this);\n var value;\n var vm = this.vm;\n try {\n value = this.getter.call(vm, vm);\n } catch (e) {\n if (this.user) {\n handleError(e, vm, (\"getter for watcher \\\"\" + (this.expression) + \"\\\"\"));\n } else {\n throw e\n }\n } finally {\n // \"touch\" every property so they are all tracked as\n // dependencies for deep watching\n if (this.deep) {\n traverse(value);\n }\n popTarget();\n this.cleanupDeps();\n }\n return value\n};\n\n/**\n * Add a dependency to this directive.\n */\nWatcher.prototype.addDep = function addDep (dep) {\n var id = dep.id;\n if (!this.newDepIds.has(id)) {\n this.newDepIds.add(id);\n this.newDeps.push(dep);\n if (!this.depIds.has(id)) {\n dep.addSub(this);\n }\n }\n};\n\n/**\n * Clean up for dependency collection.\n */\nWatcher.prototype.cleanupDeps = function cleanupDeps () {\n var i = this.deps.length;\n while (i--) {\n var dep = this.deps[i];\n if (!this.newDepIds.has(dep.id)) {\n dep.removeSub(this);\n }\n }\n var tmp = this.depIds;\n this.depIds = this.newDepIds;\n this.newDepIds = tmp;\n this.newDepIds.clear();\n tmp = this.deps;\n this.deps = this.newDeps;\n this.newDeps = tmp;\n this.newDeps.length = 0;\n};\n\n/**\n * Subscriber interface.\n * Will be called when a dependency changes.\n */\nWatcher.prototype.update = function update () {\n /* istanbul ignore else */\n if (this.lazy) {\n this.dirty = true;\n } else if (this.sync) {\n this.run();\n } else {\n queueWatcher(this);\n }\n};\n\n/**\n * Scheduler job interface.\n * Will be called by the scheduler.\n */\nWatcher.prototype.run = function run () {\n if (this.active) {\n var value = this.get();\n if (\n value !== this.value ||\n // Deep watchers and watchers on Object/Arrays should fire even\n // when the value is the same, because the value may\n // have mutated.\n isObject(value) ||\n this.deep\n ) {\n // set new value\n var oldValue = this.value;\n this.value = value;\n if (this.user) {\n try {\n this.cb.call(this.vm, value, oldValue);\n } catch (e) {\n handleError(e, this.vm, (\"callback for watcher \\\"\" + (this.expression) + \"\\\"\"));\n }\n } else {\n this.cb.call(this.vm, value, oldValue);\n }\n }\n }\n};\n\n/**\n * Evaluate the value of the watcher.\n * This only gets called for lazy watchers.\n */\nWatcher.prototype.evaluate = function evaluate () {\n this.value = this.get();\n this.dirty = false;\n};\n\n/**\n * Depend on all deps collected by this watcher.\n */\nWatcher.prototype.depend = function depend () {\n var i = this.deps.length;\n while (i--) {\n this.deps[i].depend();\n }\n};\n\n/**\n * Remove self from all dependencies' subscriber list.\n */\nWatcher.prototype.teardown = function teardown () {\n if (this.active) {\n // remove self from vm's watcher list\n // this is a somewhat expensive operation so we skip it\n // if the vm is being destroyed.\n if (!this.vm._isBeingDestroyed) {\n remove(this.vm._watchers, this);\n }\n var i = this.deps.length;\n while (i--) {\n this.deps[i].removeSub(this);\n }\n this.active = false;\n }\n};\n\n/* */\n\nvar sharedPropertyDefinition = {\n enumerable: true,\n configurable: true,\n get: noop,\n set: noop\n};\n\nfunction proxy (target, sourceKey, key) {\n sharedPropertyDefinition.get = function proxyGetter () {\n return this[sourceKey][key]\n };\n sharedPropertyDefinition.set = function proxySetter (val) {\n this[sourceKey][key] = val;\n };\n Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction initState (vm) {\n vm._watchers = [];\n var opts = vm.$options;\n if (opts.props) { initProps(vm, opts.props); }\n if (opts.methods) { initMethods(vm, opts.methods); }\n if (opts.data) {\n initData(vm);\n } else {\n observe(vm._data = {}, true /* asRootData */);\n }\n if (opts.computed) { initComputed(vm, opts.computed); }\n if (opts.watch && opts.watch !== nativeWatch) {\n initWatch(vm, opts.watch);\n }\n}\n\nfunction initProps (vm, propsOptions) {\n var propsData = vm.$options.propsData || {};\n var props = vm._props = {};\n // cache prop keys so that future props updates can iterate using Array\n // instead of dynamic object key enumeration.\n var keys = vm.$options._propKeys = [];\n var isRoot = !vm.$parent;\n // root instance props should be converted\n if (!isRoot) {\n toggleObserving(false);\n }\n var loop = function ( key ) {\n keys.push(key);\n var value = validateProp(key, propsOptions, propsData, vm);\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n var hyphenatedKey = hyphenate(key);\n if (isReservedAttribute(hyphenatedKey) ||\n config.isReservedAttr(hyphenatedKey)) {\n warn(\n (\"\\\"\" + hyphenatedKey + \"\\\" is a reserved attribute and cannot be used as component prop.\"),\n vm\n );\n }\n defineReactive$$1(props, key, value, function () {\n if (!isRoot && !isUpdatingChildComponent) {\n warn(\n \"Avoid mutating a prop directly since the value will be \" +\n \"overwritten whenever the parent component re-renders. \" +\n \"Instead, use a data or computed property based on the prop's \" +\n \"value. Prop being mutated: \\\"\" + key + \"\\\"\",\n vm\n );\n }\n });\n } else {\n defineReactive$$1(props, key, value);\n }\n // static props are already proxied on the component's prototype\n // during Vue.extend(). We only need to proxy props defined at\n // instantiation here.\n if (!(key in vm)) {\n proxy(vm, \"_props\", key);\n }\n };\n\n for (var key in propsOptions) loop( key );\n toggleObserving(true);\n}\n\nfunction initData (vm) {\n var data = vm.$options.data;\n data = vm._data = typeof data === 'function'\n ? getData(data, vm)\n : data || {};\n if (!isPlainObject(data)) {\n data = {};\n process.env.NODE_ENV !== 'production' && warn(\n 'data functions should return an object:\\n' +\n 'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function',\n vm\n );\n }\n // proxy data on instance\n var keys = Object.keys(data);\n var props = vm.$options.props;\n var methods = vm.$options.methods;\n var i = keys.length;\n while (i--) {\n var key = keys[i];\n if (process.env.NODE_ENV !== 'production') {\n if (methods && hasOwn(methods, key)) {\n warn(\n (\"Method \\\"\" + key + \"\\\" has already been defined as a data property.\"),\n vm\n );\n }\n }\n if (props && hasOwn(props, key)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"The data property \\\"\" + key + \"\\\" is already declared as a prop. \" +\n \"Use prop default value instead.\",\n vm\n );\n } else if (!isReserved(key)) {\n proxy(vm, \"_data\", key);\n }\n }\n // observe data\n observe(data, true /* asRootData */);\n}\n\nfunction getData (data, vm) {\n // #7573 disable dep collection when invoking data getters\n pushTarget();\n try {\n return data.call(vm, vm)\n } catch (e) {\n handleError(e, vm, \"data()\");\n return {}\n } finally {\n popTarget();\n }\n}\n\nvar computedWatcherOptions = { lazy: true };\n\nfunction initComputed (vm, computed) {\n // $flow-disable-line\n var watchers = vm._computedWatchers = Object.create(null);\n // computed properties are just getters during SSR\n var isSSR = isServerRendering();\n\n for (var key in computed) {\n var userDef = computed[key];\n var getter = typeof userDef === 'function' ? userDef : userDef.get;\n if (process.env.NODE_ENV !== 'production' && getter == null) {\n warn(\n (\"Getter is missing for computed property \\\"\" + key + \"\\\".\"),\n vm\n );\n }\n\n if (!isSSR) {\n // create internal watcher for the computed property.\n watchers[key] = new Watcher(\n vm,\n getter || noop,\n noop,\n computedWatcherOptions\n );\n }\n\n // component-defined computed properties are already defined on the\n // component prototype. We only need to define computed properties defined\n // at instantiation here.\n if (!(key in vm)) {\n defineComputed(vm, key, userDef);\n } else if (process.env.NODE_ENV !== 'production') {\n if (key in vm.$data) {\n warn((\"The computed property \\\"\" + key + \"\\\" is already defined in data.\"), vm);\n } else if (vm.$options.props && key in vm.$options.props) {\n warn((\"The computed property \\\"\" + key + \"\\\" is already defined as a prop.\"), vm);\n }\n }\n }\n}\n\nfunction defineComputed (\n target,\n key,\n userDef\n) {\n var shouldCache = !isServerRendering();\n if (typeof userDef === 'function') {\n sharedPropertyDefinition.get = shouldCache\n ? createComputedGetter(key)\n : createGetterInvoker(userDef);\n sharedPropertyDefinition.set = noop;\n } else {\n sharedPropertyDefinition.get = userDef.get\n ? shouldCache && userDef.cache !== false\n ? createComputedGetter(key)\n : createGetterInvoker(userDef.get)\n : noop;\n sharedPropertyDefinition.set = userDef.set || noop;\n }\n if (process.env.NODE_ENV !== 'production' &&\n sharedPropertyDefinition.set === noop) {\n sharedPropertyDefinition.set = function () {\n warn(\n (\"Computed property \\\"\" + key + \"\\\" was assigned to but it has no setter.\"),\n this\n );\n };\n }\n Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction createComputedGetter (key) {\n return function computedGetter () {\n var watcher = this._computedWatchers && this._computedWatchers[key];\n if (watcher) {\n if (watcher.dirty) {\n watcher.evaluate();\n }\n if (Dep.target) {\n watcher.depend();\n }\n return watcher.value\n }\n }\n}\n\nfunction createGetterInvoker(fn) {\n return function computedGetter () {\n return fn.call(this, this)\n }\n}\n\nfunction initMethods (vm, methods) {\n var props = vm.$options.props;\n for (var key in methods) {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof methods[key] !== 'function') {\n warn(\n \"Method \\\"\" + key + \"\\\" has type \\\"\" + (typeof methods[key]) + \"\\\" in the component definition. \" +\n \"Did you reference the function correctly?\",\n vm\n );\n }\n if (props && hasOwn(props, key)) {\n warn(\n (\"Method \\\"\" + key + \"\\\" has already been defined as a prop.\"),\n vm\n );\n }\n if ((key in vm) && isReserved(key)) {\n warn(\n \"Method \\\"\" + key + \"\\\" conflicts with an existing Vue instance method. \" +\n \"Avoid defining component methods that start with _ or $.\"\n );\n }\n }\n vm[key] = typeof methods[key] !== 'function' ? noop : bind(methods[key], vm);\n }\n}\n\nfunction initWatch (vm, watch) {\n for (var key in watch) {\n var handler = watch[key];\n if (Array.isArray(handler)) {\n for (var i = 0; i < handler.length; i++) {\n createWatcher(vm, key, handler[i]);\n }\n } else {\n createWatcher(vm, key, handler);\n }\n }\n}\n\nfunction createWatcher (\n vm,\n expOrFn,\n handler,\n options\n) {\n if (isPlainObject(handler)) {\n options = handler;\n handler = handler.handler;\n }\n if (typeof handler === 'string') {\n handler = vm[handler];\n }\n return vm.$watch(expOrFn, handler, options)\n}\n\nfunction stateMixin (Vue) {\n // flow somehow has problems with directly declared definition object\n // when using Object.defineProperty, so we have to procedurally build up\n // the object here.\n var dataDef = {};\n dataDef.get = function () { return this._data };\n var propsDef = {};\n propsDef.get = function () { return this._props };\n if (process.env.NODE_ENV !== 'production') {\n dataDef.set = function () {\n warn(\n 'Avoid replacing instance root $data. ' +\n 'Use nested data properties instead.',\n this\n );\n };\n propsDef.set = function () {\n warn(\"$props is readonly.\", this);\n };\n }\n Object.defineProperty(Vue.prototype, '$data', dataDef);\n Object.defineProperty(Vue.prototype, '$props', propsDef);\n\n Vue.prototype.$set = set;\n Vue.prototype.$delete = del;\n\n Vue.prototype.$watch = function (\n expOrFn,\n cb,\n options\n ) {\n var vm = this;\n if (isPlainObject(cb)) {\n return createWatcher(vm, expOrFn, cb, options)\n }\n options = options || {};\n options.user = true;\n var watcher = new Watcher(vm, expOrFn, cb, options);\n if (options.immediate) {\n try {\n cb.call(vm, watcher.value);\n } catch (error) {\n handleError(error, vm, (\"callback for immediate watcher \\\"\" + (watcher.expression) + \"\\\"\"));\n }\n }\n return function unwatchFn () {\n watcher.teardown();\n }\n };\n}\n\n/* */\n\nvar uid$3 = 0;\n\nfunction initMixin (Vue) {\n Vue.prototype._init = function (options) {\n var vm = this;\n // a uid\n vm._uid = uid$3++;\n\n var startTag, endTag;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n startTag = \"vue-perf-start:\" + (vm._uid);\n endTag = \"vue-perf-end:\" + (vm._uid);\n mark(startTag);\n }\n\n // a flag to avoid this being observed\n vm._isVue = true;\n // merge options\n if (options && options._isComponent) {\n // optimize internal component instantiation\n // since dynamic options merging is pretty slow, and none of the\n // internal component options needs special treatment.\n initInternalComponent(vm, options);\n } else {\n vm.$options = mergeOptions(\n resolveConstructorOptions(vm.constructor),\n options || {},\n vm\n );\n }\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n initProxy(vm);\n } else {\n vm._renderProxy = vm;\n }\n // expose real self\n vm._self = vm;\n initLifecycle(vm);\n initEvents(vm);\n initRender(vm);\n callHook(vm, 'beforeCreate');\n initInjections(vm); // resolve injections before data/props\n initState(vm);\n initProvide(vm); // resolve provide after data/props\n callHook(vm, 'created');\n\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n vm._name = formatComponentName(vm, false);\n mark(endTag);\n measure((\"vue \" + (vm._name) + \" init\"), startTag, endTag);\n }\n\n if (vm.$options.el) {\n vm.$mount(vm.$options.el);\n }\n };\n}\n\nfunction initInternalComponent (vm, options) {\n var opts = vm.$options = Object.create(vm.constructor.options);\n // doing this because it's faster than dynamic enumeration.\n var parentVnode = options._parentVnode;\n opts.parent = options.parent;\n opts._parentVnode = parentVnode;\n\n var vnodeComponentOptions = parentVnode.componentOptions;\n opts.propsData = vnodeComponentOptions.propsData;\n opts._parentListeners = vnodeComponentOptions.listeners;\n opts._renderChildren = vnodeComponentOptions.children;\n opts._componentTag = vnodeComponentOptions.tag;\n\n if (options.render) {\n opts.render = options.render;\n opts.staticRenderFns = options.staticRenderFns;\n }\n}\n\nfunction resolveConstructorOptions (Ctor) {\n var options = Ctor.options;\n if (Ctor.super) {\n var superOptions = resolveConstructorOptions(Ctor.super);\n var cachedSuperOptions = Ctor.superOptions;\n if (superOptions !== cachedSuperOptions) {\n // super option changed,\n // need to resolve new options.\n Ctor.superOptions = superOptions;\n // check if there are any late-modified/attached options (#4976)\n var modifiedOptions = resolveModifiedOptions(Ctor);\n // update base extend options\n if (modifiedOptions) {\n extend(Ctor.extendOptions, modifiedOptions);\n }\n options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);\n if (options.name) {\n options.components[options.name] = Ctor;\n }\n }\n }\n return options\n}\n\nfunction resolveModifiedOptions (Ctor) {\n var modified;\n var latest = Ctor.options;\n var sealed = Ctor.sealedOptions;\n for (var key in latest) {\n if (latest[key] !== sealed[key]) {\n if (!modified) { modified = {}; }\n modified[key] = latest[key];\n }\n }\n return modified\n}\n\nfunction Vue (options) {\n if (process.env.NODE_ENV !== 'production' &&\n !(this instanceof Vue)\n ) {\n warn('Vue is a constructor and should be called with the `new` keyword');\n }\n this._init(options);\n}\n\ninitMixin(Vue);\nstateMixin(Vue);\neventsMixin(Vue);\nlifecycleMixin(Vue);\nrenderMixin(Vue);\n\n/* */\n\nfunction initUse (Vue) {\n Vue.use = function (plugin) {\n var installedPlugins = (this._installedPlugins || (this._installedPlugins = []));\n if (installedPlugins.indexOf(plugin) > -1) {\n return this\n }\n\n // additional parameters\n var args = toArray(arguments, 1);\n args.unshift(this);\n if (typeof plugin.install === 'function') {\n plugin.install.apply(plugin, args);\n } else if (typeof plugin === 'function') {\n plugin.apply(null, args);\n }\n installedPlugins.push(plugin);\n return this\n };\n}\n\n/* */\n\nfunction initMixin$1 (Vue) {\n Vue.mixin = function (mixin) {\n this.options = mergeOptions(this.options, mixin);\n return this\n };\n}\n\n/* */\n\nfunction initExtend (Vue) {\n /**\n * Each instance constructor, including Vue, has a unique\n * cid. This enables us to create wrapped \"child\n * constructors\" for prototypal inheritance and cache them.\n */\n Vue.cid = 0;\n var cid = 1;\n\n /**\n * Class inheritance\n */\n Vue.extend = function (extendOptions) {\n extendOptions = extendOptions || {};\n var Super = this;\n var SuperId = Super.cid;\n var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {});\n if (cachedCtors[SuperId]) {\n return cachedCtors[SuperId]\n }\n\n var name = extendOptions.name || Super.options.name;\n if (process.env.NODE_ENV !== 'production' && name) {\n validateComponentName(name);\n }\n\n var Sub = function VueComponent (options) {\n this._init(options);\n };\n Sub.prototype = Object.create(Super.prototype);\n Sub.prototype.constructor = Sub;\n Sub.cid = cid++;\n Sub.options = mergeOptions(\n Super.options,\n extendOptions\n );\n Sub['super'] = Super;\n\n // For props and computed properties, we define the proxy getters on\n // the Vue instances at extension time, on the extended prototype. This\n // avoids Object.defineProperty calls for each instance created.\n if (Sub.options.props) {\n initProps$1(Sub);\n }\n if (Sub.options.computed) {\n initComputed$1(Sub);\n }\n\n // allow further extension/mixin/plugin usage\n Sub.extend = Super.extend;\n Sub.mixin = Super.mixin;\n Sub.use = Super.use;\n\n // create asset registers, so extended classes\n // can have their private assets too.\n ASSET_TYPES.forEach(function (type) {\n Sub[type] = Super[type];\n });\n // enable recursive self-lookup\n if (name) {\n Sub.options.components[name] = Sub;\n }\n\n // keep a reference to the super options at extension time.\n // later at instantiation we can check if Super's options have\n // been updated.\n Sub.superOptions = Super.options;\n Sub.extendOptions = extendOptions;\n Sub.sealedOptions = extend({}, Sub.options);\n\n // cache constructor\n cachedCtors[SuperId] = Sub;\n return Sub\n };\n}\n\nfunction initProps$1 (Comp) {\n var props = Comp.options.props;\n for (var key in props) {\n proxy(Comp.prototype, \"_props\", key);\n }\n}\n\nfunction initComputed$1 (Comp) {\n var computed = Comp.options.computed;\n for (var key in computed) {\n defineComputed(Comp.prototype, key, computed[key]);\n }\n}\n\n/* */\n\nfunction initAssetRegisters (Vue) {\n /**\n * Create asset registration methods.\n */\n ASSET_TYPES.forEach(function (type) {\n Vue[type] = function (\n id,\n definition\n ) {\n if (!definition) {\n return this.options[type + 's'][id]\n } else {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && type === 'component') {\n validateComponentName(id);\n }\n if (type === 'component' && isPlainObject(definition)) {\n definition.name = definition.name || id;\n definition = this.options._base.extend(definition);\n }\n if (type === 'directive' && typeof definition === 'function') {\n definition = { bind: definition, update: definition };\n }\n this.options[type + 's'][id] = definition;\n return definition\n }\n };\n });\n}\n\n/* */\n\n\n\nfunction getComponentName (opts) {\n return opts && (opts.Ctor.options.name || opts.tag)\n}\n\nfunction matches (pattern, name) {\n if (Array.isArray(pattern)) {\n return pattern.indexOf(name) > -1\n } else if (typeof pattern === 'string') {\n return pattern.split(',').indexOf(name) > -1\n } else if (isRegExp(pattern)) {\n return pattern.test(name)\n }\n /* istanbul ignore next */\n return false\n}\n\nfunction pruneCache (keepAliveInstance, filter) {\n var cache = keepAliveInstance.cache;\n var keys = keepAliveInstance.keys;\n var _vnode = keepAliveInstance._vnode;\n for (var key in cache) {\n var cachedNode = cache[key];\n if (cachedNode) {\n var name = getComponentName(cachedNode.componentOptions);\n if (name && !filter(name)) {\n pruneCacheEntry(cache, key, keys, _vnode);\n }\n }\n }\n}\n\nfunction pruneCacheEntry (\n cache,\n key,\n keys,\n current\n) {\n var cached$$1 = cache[key];\n if (cached$$1 && (!current || cached$$1.tag !== current.tag)) {\n cached$$1.componentInstance.$destroy();\n }\n cache[key] = null;\n remove(keys, key);\n}\n\nvar patternTypes = [String, RegExp, Array];\n\nvar KeepAlive = {\n name: 'keep-alive',\n abstract: true,\n\n props: {\n include: patternTypes,\n exclude: patternTypes,\n max: [String, Number]\n },\n\n created: function created () {\n this.cache = Object.create(null);\n this.keys = [];\n },\n\n destroyed: function destroyed () {\n for (var key in this.cache) {\n pruneCacheEntry(this.cache, key, this.keys);\n }\n },\n\n mounted: function mounted () {\n var this$1 = this;\n\n this.$watch('include', function (val) {\n pruneCache(this$1, function (name) { return matches(val, name); });\n });\n this.$watch('exclude', function (val) {\n pruneCache(this$1, function (name) { return !matches(val, name); });\n });\n },\n\n render: function render () {\n var slot = this.$slots.default;\n var vnode = getFirstComponentChild(slot);\n var componentOptions = vnode && vnode.componentOptions;\n if (componentOptions) {\n // check pattern\n var name = getComponentName(componentOptions);\n var ref = this;\n var include = ref.include;\n var exclude = ref.exclude;\n if (\n // not included\n (include && (!name || !matches(include, name))) ||\n // excluded\n (exclude && name && matches(exclude, name))\n ) {\n return vnode\n }\n\n var ref$1 = this;\n var cache = ref$1.cache;\n var keys = ref$1.keys;\n var key = vnode.key == null\n // same constructor may get registered as different local components\n // so cid alone is not enough (#3269)\n ? componentOptions.Ctor.cid + (componentOptions.tag ? (\"::\" + (componentOptions.tag)) : '')\n : vnode.key;\n if (cache[key]) {\n vnode.componentInstance = cache[key].componentInstance;\n // make current key freshest\n remove(keys, key);\n keys.push(key);\n } else {\n cache[key] = vnode;\n keys.push(key);\n // prune oldest entry\n if (this.max && keys.length > parseInt(this.max)) {\n pruneCacheEntry(cache, keys[0], keys, this._vnode);\n }\n }\n\n vnode.data.keepAlive = true;\n }\n return vnode || (slot && slot[0])\n }\n};\n\nvar builtInComponents = {\n KeepAlive: KeepAlive\n};\n\n/* */\n\nfunction initGlobalAPI (Vue) {\n // config\n var configDef = {};\n configDef.get = function () { return config; };\n if (process.env.NODE_ENV !== 'production') {\n configDef.set = function () {\n warn(\n 'Do not replace the Vue.config object, set individual fields instead.'\n );\n };\n }\n Object.defineProperty(Vue, 'config', configDef);\n\n // exposed util methods.\n // NOTE: these are not considered part of the public API - avoid relying on\n // them unless you are aware of the risk.\n Vue.util = {\n warn: warn,\n extend: extend,\n mergeOptions: mergeOptions,\n defineReactive: defineReactive$$1\n };\n\n Vue.set = set;\n Vue.delete = del;\n Vue.nextTick = nextTick;\n\n // 2.6 explicit observable API\n Vue.observable = function (obj) {\n observe(obj);\n return obj\n };\n\n Vue.options = Object.create(null);\n ASSET_TYPES.forEach(function (type) {\n Vue.options[type + 's'] = Object.create(null);\n });\n\n // this is used to identify the \"base\" constructor to extend all plain-object\n // components with in Weex's multi-instance scenarios.\n Vue.options._base = Vue;\n\n extend(Vue.options.components, builtInComponents);\n\n initUse(Vue);\n initMixin$1(Vue);\n initExtend(Vue);\n initAssetRegisters(Vue);\n}\n\ninitGlobalAPI(Vue);\n\nObject.defineProperty(Vue.prototype, '$isServer', {\n get: isServerRendering\n});\n\nObject.defineProperty(Vue.prototype, '$ssrContext', {\n get: function get () {\n /* istanbul ignore next */\n return this.$vnode && this.$vnode.ssrContext\n }\n});\n\n// expose FunctionalRenderContext for ssr runtime helper installation\nObject.defineProperty(Vue, 'FunctionalRenderContext', {\n value: FunctionalRenderContext\n});\n\nVue.version = '2.6.10';\n\n/* */\n\n// these are reserved for web because they are directly compiled away\n// during template compilation\nvar isReservedAttr = makeMap('style,class');\n\n// attributes that should be using props for binding\nvar acceptValue = makeMap('input,textarea,option,select,progress');\nvar mustUseProp = function (tag, type, attr) {\n return (\n (attr === 'value' && acceptValue(tag)) && type !== 'button' ||\n (attr === 'selected' && tag === 'option') ||\n (attr === 'checked' && tag === 'input') ||\n (attr === 'muted' && tag === 'video')\n )\n};\n\nvar isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck');\n\nvar isValidContentEditableValue = makeMap('events,caret,typing,plaintext-only');\n\nvar convertEnumeratedValue = function (key, value) {\n return isFalsyAttrValue(value) || value === 'false'\n ? 'false'\n // allow arbitrary string value for contenteditable\n : key === 'contenteditable' && isValidContentEditableValue(value)\n ? value\n : 'true'\n};\n\nvar isBooleanAttr = makeMap(\n 'allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' +\n 'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' +\n 'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' +\n 'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' +\n 'required,reversed,scoped,seamless,selected,sortable,translate,' +\n 'truespeed,typemustmatch,visible'\n);\n\nvar xlinkNS = 'http://www.w3.org/1999/xlink';\n\nvar isXlink = function (name) {\n return name.charAt(5) === ':' && name.slice(0, 5) === 'xlink'\n};\n\nvar getXlinkProp = function (name) {\n return isXlink(name) ? name.slice(6, name.length) : ''\n};\n\nvar isFalsyAttrValue = function (val) {\n return val == null || val === false\n};\n\n/* */\n\nfunction genClassForVnode (vnode) {\n var data = vnode.data;\n var parentNode = vnode;\n var childNode = vnode;\n while (isDef(childNode.componentInstance)) {\n childNode = childNode.componentInstance._vnode;\n if (childNode && childNode.data) {\n data = mergeClassData(childNode.data, data);\n }\n }\n while (isDef(parentNode = parentNode.parent)) {\n if (parentNode && parentNode.data) {\n data = mergeClassData(data, parentNode.data);\n }\n }\n return renderClass(data.staticClass, data.class)\n}\n\nfunction mergeClassData (child, parent) {\n return {\n staticClass: concat(child.staticClass, parent.staticClass),\n class: isDef(child.class)\n ? [child.class, parent.class]\n : parent.class\n }\n}\n\nfunction renderClass (\n staticClass,\n dynamicClass\n) {\n if (isDef(staticClass) || isDef(dynamicClass)) {\n return concat(staticClass, stringifyClass(dynamicClass))\n }\n /* istanbul ignore next */\n return ''\n}\n\nfunction concat (a, b) {\n return a ? b ? (a + ' ' + b) : a : (b || '')\n}\n\nfunction stringifyClass (value) {\n if (Array.isArray(value)) {\n return stringifyArray(value)\n }\n if (isObject(value)) {\n return stringifyObject(value)\n }\n if (typeof value === 'string') {\n return value\n }\n /* istanbul ignore next */\n return ''\n}\n\nfunction stringifyArray (value) {\n var res = '';\n var stringified;\n for (var i = 0, l = value.length; i < l; i++) {\n if (isDef(stringified = stringifyClass(value[i])) && stringified !== '') {\n if (res) { res += ' '; }\n res += stringified;\n }\n }\n return res\n}\n\nfunction stringifyObject (value) {\n var res = '';\n for (var key in value) {\n if (value[key]) {\n if (res) { res += ' '; }\n res += key;\n }\n }\n return res\n}\n\n/* */\n\nvar namespaceMap = {\n svg: 'http://www.w3.org/2000/svg',\n math: 'http://www.w3.org/1998/Math/MathML'\n};\n\nvar isHTMLTag = makeMap(\n 'html,body,base,head,link,meta,style,title,' +\n 'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' +\n 'div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,' +\n 'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' +\n 's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' +\n 'embed,object,param,source,canvas,script,noscript,del,ins,' +\n 'caption,col,colgroup,table,thead,tbody,td,th,tr,' +\n 'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' +\n 'output,progress,select,textarea,' +\n 'details,dialog,menu,menuitem,summary,' +\n 'content,element,shadow,template,blockquote,iframe,tfoot'\n);\n\n// this map is intentionally selective, only covering SVG elements that may\n// contain child elements.\nvar isSVG = makeMap(\n 'svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' +\n 'foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' +\n 'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view',\n true\n);\n\nvar isReservedTag = function (tag) {\n return isHTMLTag(tag) || isSVG(tag)\n};\n\nfunction getTagNamespace (tag) {\n if (isSVG(tag)) {\n return 'svg'\n }\n // basic support for MathML\n // note it doesn't support other MathML elements being component roots\n if (tag === 'math') {\n return 'math'\n }\n}\n\nvar unknownElementCache = Object.create(null);\nfunction isUnknownElement (tag) {\n /* istanbul ignore if */\n if (!inBrowser) {\n return true\n }\n if (isReservedTag(tag)) {\n return false\n }\n tag = tag.toLowerCase();\n /* istanbul ignore if */\n if (unknownElementCache[tag] != null) {\n return unknownElementCache[tag]\n }\n var el = document.createElement(tag);\n if (tag.indexOf('-') > -1) {\n // http://stackoverflow.com/a/28210364/1070244\n return (unknownElementCache[tag] = (\n el.constructor === window.HTMLUnknownElement ||\n el.constructor === window.HTMLElement\n ))\n } else {\n return (unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString()))\n }\n}\n\nvar isTextInputType = makeMap('text,number,password,search,email,tel,url');\n\n/* */\n\n/**\n * Query an element selector if it's not an element already.\n */\nfunction query (el) {\n if (typeof el === 'string') {\n var selected = document.querySelector(el);\n if (!selected) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Cannot find element: ' + el\n );\n return document.createElement('div')\n }\n return selected\n } else {\n return el\n }\n}\n\n/* */\n\nfunction createElement$1 (tagName, vnode) {\n var elm = document.createElement(tagName);\n if (tagName !== 'select') {\n return elm\n }\n // false or null will remove the attribute but undefined will not\n if (vnode.data && vnode.data.attrs && vnode.data.attrs.multiple !== undefined) {\n elm.setAttribute('multiple', 'multiple');\n }\n return elm\n}\n\nfunction createElementNS (namespace, tagName) {\n return document.createElementNS(namespaceMap[namespace], tagName)\n}\n\nfunction createTextNode (text) {\n return document.createTextNode(text)\n}\n\nfunction createComment (text) {\n return document.createComment(text)\n}\n\nfunction insertBefore (parentNode, newNode, referenceNode) {\n parentNode.insertBefore(newNode, referenceNode);\n}\n\nfunction removeChild (node, child) {\n node.removeChild(child);\n}\n\nfunction appendChild (node, child) {\n node.appendChild(child);\n}\n\nfunction parentNode (node) {\n return node.parentNode\n}\n\nfunction nextSibling (node) {\n return node.nextSibling\n}\n\nfunction tagName (node) {\n return node.tagName\n}\n\nfunction setTextContent (node, text) {\n node.textContent = text;\n}\n\nfunction setStyleScope (node, scopeId) {\n node.setAttribute(scopeId, '');\n}\n\nvar nodeOps = /*#__PURE__*/Object.freeze({\n createElement: createElement$1,\n createElementNS: createElementNS,\n createTextNode: createTextNode,\n createComment: createComment,\n insertBefore: insertBefore,\n removeChild: removeChild,\n appendChild: appendChild,\n parentNode: parentNode,\n nextSibling: nextSibling,\n tagName: tagName,\n setTextContent: setTextContent,\n setStyleScope: setStyleScope\n});\n\n/* */\n\nvar ref = {\n create: function create (_, vnode) {\n registerRef(vnode);\n },\n update: function update (oldVnode, vnode) {\n if (oldVnode.data.ref !== vnode.data.ref) {\n registerRef(oldVnode, true);\n registerRef(vnode);\n }\n },\n destroy: function destroy (vnode) {\n registerRef(vnode, true);\n }\n};\n\nfunction registerRef (vnode, isRemoval) {\n var key = vnode.data.ref;\n if (!isDef(key)) { return }\n\n var vm = vnode.context;\n var ref = vnode.componentInstance || vnode.elm;\n var refs = vm.$refs;\n if (isRemoval) {\n if (Array.isArray(refs[key])) {\n remove(refs[key], ref);\n } else if (refs[key] === ref) {\n refs[key] = undefined;\n }\n } else {\n if (vnode.data.refInFor) {\n if (!Array.isArray(refs[key])) {\n refs[key] = [ref];\n } else if (refs[key].indexOf(ref) < 0) {\n // $flow-disable-line\n refs[key].push(ref);\n }\n } else {\n refs[key] = ref;\n }\n }\n}\n\n/**\n * Virtual DOM patching algorithm based on Snabbdom by\n * Simon Friis Vindum (@paldepind)\n * Licensed under the MIT License\n * https://github.com/paldepind/snabbdom/blob/master/LICENSE\n *\n * modified by Evan You (@yyx990803)\n *\n * Not type-checking this because this file is perf-critical and the cost\n * of making flow understand it is not worth it.\n */\n\nvar emptyNode = new VNode('', {}, []);\n\nvar hooks = ['create', 'activate', 'update', 'remove', 'destroy'];\n\nfunction sameVnode (a, b) {\n return (\n a.key === b.key && (\n (\n a.tag === b.tag &&\n a.isComment === b.isComment &&\n isDef(a.data) === isDef(b.data) &&\n sameInputType(a, b)\n ) || (\n isTrue(a.isAsyncPlaceholder) &&\n a.asyncFactory === b.asyncFactory &&\n isUndef(b.asyncFactory.error)\n )\n )\n )\n}\n\nfunction sameInputType (a, b) {\n if (a.tag !== 'input') { return true }\n var i;\n var typeA = isDef(i = a.data) && isDef(i = i.attrs) && i.type;\n var typeB = isDef(i = b.data) && isDef(i = i.attrs) && i.type;\n return typeA === typeB || isTextInputType(typeA) && isTextInputType(typeB)\n}\n\nfunction createKeyToOldIdx (children, beginIdx, endIdx) {\n var i, key;\n var map = {};\n for (i = beginIdx; i <= endIdx; ++i) {\n key = children[i].key;\n if (isDef(key)) { map[key] = i; }\n }\n return map\n}\n\nfunction createPatchFunction (backend) {\n var i, j;\n var cbs = {};\n\n var modules = backend.modules;\n var nodeOps = backend.nodeOps;\n\n for (i = 0; i < hooks.length; ++i) {\n cbs[hooks[i]] = [];\n for (j = 0; j < modules.length; ++j) {\n if (isDef(modules[j][hooks[i]])) {\n cbs[hooks[i]].push(modules[j][hooks[i]]);\n }\n }\n }\n\n function emptyNodeAt (elm) {\n return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm)\n }\n\n function createRmCb (childElm, listeners) {\n function remove$$1 () {\n if (--remove$$1.listeners === 0) {\n removeNode(childElm);\n }\n }\n remove$$1.listeners = listeners;\n return remove$$1\n }\n\n function removeNode (el) {\n var parent = nodeOps.parentNode(el);\n // element may have already been removed due to v-html / v-text\n if (isDef(parent)) {\n nodeOps.removeChild(parent, el);\n }\n }\n\n function isUnknownElement$$1 (vnode, inVPre) {\n return (\n !inVPre &&\n !vnode.ns &&\n !(\n config.ignoredElements.length &&\n config.ignoredElements.some(function (ignore) {\n return isRegExp(ignore)\n ? ignore.test(vnode.tag)\n : ignore === vnode.tag\n })\n ) &&\n config.isUnknownElement(vnode.tag)\n )\n }\n\n var creatingElmInVPre = 0;\n\n function createElm (\n vnode,\n insertedVnodeQueue,\n parentElm,\n refElm,\n nested,\n ownerArray,\n index\n ) {\n if (isDef(vnode.elm) && isDef(ownerArray)) {\n // This vnode was used in a previous render!\n // now it's used as a new node, overwriting its elm would cause\n // potential patch errors down the road when it's used as an insertion\n // reference node. Instead, we clone the node on-demand before creating\n // associated DOM element for it.\n vnode = ownerArray[index] = cloneVNode(vnode);\n }\n\n vnode.isRootInsert = !nested; // for transition enter check\n if (createComponent(vnode, insertedVnodeQueue, parentElm, refElm)) {\n return\n }\n\n var data = vnode.data;\n var children = vnode.children;\n var tag = vnode.tag;\n if (isDef(tag)) {\n if (process.env.NODE_ENV !== 'production') {\n if (data && data.pre) {\n creatingElmInVPre++;\n }\n if (isUnknownElement$$1(vnode, creatingElmInVPre)) {\n warn(\n 'Unknown custom element: <' + tag + '> - did you ' +\n 'register the component correctly? For recursive components, ' +\n 'make sure to provide the \"name\" option.',\n vnode.context\n );\n }\n }\n\n vnode.elm = vnode.ns\n ? nodeOps.createElementNS(vnode.ns, tag)\n : nodeOps.createElement(tag, vnode);\n setScope(vnode);\n\n /* istanbul ignore if */\n {\n createChildren(vnode, children, insertedVnodeQueue);\n if (isDef(data)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n }\n insert(parentElm, vnode.elm, refElm);\n }\n\n if (process.env.NODE_ENV !== 'production' && data && data.pre) {\n creatingElmInVPre--;\n }\n } else if (isTrue(vnode.isComment)) {\n vnode.elm = nodeOps.createComment(vnode.text);\n insert(parentElm, vnode.elm, refElm);\n } else {\n vnode.elm = nodeOps.createTextNode(vnode.text);\n insert(parentElm, vnode.elm, refElm);\n }\n }\n\n function createComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n var i = vnode.data;\n if (isDef(i)) {\n var isReactivated = isDef(vnode.componentInstance) && i.keepAlive;\n if (isDef(i = i.hook) && isDef(i = i.init)) {\n i(vnode, false /* hydrating */);\n }\n // after calling the init hook, if the vnode is a child component\n // it should've created a child instance and mounted it. the child\n // component also has set the placeholder vnode's elm.\n // in that case we can just return the element and be done.\n if (isDef(vnode.componentInstance)) {\n initComponent(vnode, insertedVnodeQueue);\n insert(parentElm, vnode.elm, refElm);\n if (isTrue(isReactivated)) {\n reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm);\n }\n return true\n }\n }\n }\n\n function initComponent (vnode, insertedVnodeQueue) {\n if (isDef(vnode.data.pendingInsert)) {\n insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert);\n vnode.data.pendingInsert = null;\n }\n vnode.elm = vnode.componentInstance.$el;\n if (isPatchable(vnode)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n setScope(vnode);\n } else {\n // empty component root.\n // skip all element-related modules except for ref (#3455)\n registerRef(vnode);\n // make sure to invoke the insert hook\n insertedVnodeQueue.push(vnode);\n }\n }\n\n function reactivateComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n var i;\n // hack for #4339: a reactivated component with inner transition\n // does not trigger because the inner node's created hooks are not called\n // again. It's not ideal to involve module-specific logic in here but\n // there doesn't seem to be a better way to do it.\n var innerNode = vnode;\n while (innerNode.componentInstance) {\n innerNode = innerNode.componentInstance._vnode;\n if (isDef(i = innerNode.data) && isDef(i = i.transition)) {\n for (i = 0; i < cbs.activate.length; ++i) {\n cbs.activate[i](emptyNode, innerNode);\n }\n insertedVnodeQueue.push(innerNode);\n break\n }\n }\n // unlike a newly created component,\n // a reactivated keep-alive component doesn't insert itself\n insert(parentElm, vnode.elm, refElm);\n }\n\n function insert (parent, elm, ref$$1) {\n if (isDef(parent)) {\n if (isDef(ref$$1)) {\n if (nodeOps.parentNode(ref$$1) === parent) {\n nodeOps.insertBefore(parent, elm, ref$$1);\n }\n } else {\n nodeOps.appendChild(parent, elm);\n }\n }\n }\n\n function createChildren (vnode, children, insertedVnodeQueue) {\n if (Array.isArray(children)) {\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(children);\n }\n for (var i = 0; i < children.length; ++i) {\n createElm(children[i], insertedVnodeQueue, vnode.elm, null, true, children, i);\n }\n } else if (isPrimitive(vnode.text)) {\n nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(String(vnode.text)));\n }\n }\n\n function isPatchable (vnode) {\n while (vnode.componentInstance) {\n vnode = vnode.componentInstance._vnode;\n }\n return isDef(vnode.tag)\n }\n\n function invokeCreateHooks (vnode, insertedVnodeQueue) {\n for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n cbs.create[i$1](emptyNode, vnode);\n }\n i = vnode.data.hook; // Reuse variable\n if (isDef(i)) {\n if (isDef(i.create)) { i.create(emptyNode, vnode); }\n if (isDef(i.insert)) { insertedVnodeQueue.push(vnode); }\n }\n }\n\n // set scope id attribute for scoped CSS.\n // this is implemented as a special case to avoid the overhead\n // of going through the normal attribute patching process.\n function setScope (vnode) {\n var i;\n if (isDef(i = vnode.fnScopeId)) {\n nodeOps.setStyleScope(vnode.elm, i);\n } else {\n var ancestor = vnode;\n while (ancestor) {\n if (isDef(i = ancestor.context) && isDef(i = i.$options._scopeId)) {\n nodeOps.setStyleScope(vnode.elm, i);\n }\n ancestor = ancestor.parent;\n }\n }\n // for slot content they should also get the scopeId from the host instance.\n if (isDef(i = activeInstance) &&\n i !== vnode.context &&\n i !== vnode.fnContext &&\n isDef(i = i.$options._scopeId)\n ) {\n nodeOps.setStyleScope(vnode.elm, i);\n }\n }\n\n function addVnodes (parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) {\n for (; startIdx <= endIdx; ++startIdx) {\n createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm, false, vnodes, startIdx);\n }\n }\n\n function invokeDestroyHook (vnode) {\n var i, j;\n var data = vnode.data;\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.destroy)) { i(vnode); }\n for (i = 0; i < cbs.destroy.length; ++i) { cbs.destroy[i](vnode); }\n }\n if (isDef(i = vnode.children)) {\n for (j = 0; j < vnode.children.length; ++j) {\n invokeDestroyHook(vnode.children[j]);\n }\n }\n }\n\n function removeVnodes (parentElm, vnodes, startIdx, endIdx) {\n for (; startIdx <= endIdx; ++startIdx) {\n var ch = vnodes[startIdx];\n if (isDef(ch)) {\n if (isDef(ch.tag)) {\n removeAndInvokeRemoveHook(ch);\n invokeDestroyHook(ch);\n } else { // Text node\n removeNode(ch.elm);\n }\n }\n }\n }\n\n function removeAndInvokeRemoveHook (vnode, rm) {\n if (isDef(rm) || isDef(vnode.data)) {\n var i;\n var listeners = cbs.remove.length + 1;\n if (isDef(rm)) {\n // we have a recursively passed down rm callback\n // increase the listeners count\n rm.listeners += listeners;\n } else {\n // directly removing\n rm = createRmCb(vnode.elm, listeners);\n }\n // recursively invoke hooks on child component root node\n if (isDef(i = vnode.componentInstance) && isDef(i = i._vnode) && isDef(i.data)) {\n removeAndInvokeRemoveHook(i, rm);\n }\n for (i = 0; i < cbs.remove.length; ++i) {\n cbs.remove[i](vnode, rm);\n }\n if (isDef(i = vnode.data.hook) && isDef(i = i.remove)) {\n i(vnode, rm);\n } else {\n rm();\n }\n } else {\n removeNode(vnode.elm);\n }\n }\n\n function updateChildren (parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) {\n var oldStartIdx = 0;\n var newStartIdx = 0;\n var oldEndIdx = oldCh.length - 1;\n var oldStartVnode = oldCh[0];\n var oldEndVnode = oldCh[oldEndIdx];\n var newEndIdx = newCh.length - 1;\n var newStartVnode = newCh[0];\n var newEndVnode = newCh[newEndIdx];\n var oldKeyToIdx, idxInOld, vnodeToMove, refElm;\n\n // removeOnly is a special flag used only by <transition-group>\n // to ensure removed elements stay in correct relative positions\n // during leaving transitions\n var canMove = !removeOnly;\n\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(newCh);\n }\n\n while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n if (isUndef(oldStartVnode)) {\n oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left\n } else if (isUndef(oldEndVnode)) {\n oldEndVnode = oldCh[--oldEndIdx];\n } else if (sameVnode(oldStartVnode, newStartVnode)) {\n patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n oldStartVnode = oldCh[++oldStartIdx];\n newStartVnode = newCh[++newStartIdx];\n } else if (sameVnode(oldEndVnode, newEndVnode)) {\n patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);\n oldEndVnode = oldCh[--oldEndIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldStartVnode, newEndVnode)) { // Vnode moved right\n patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);\n canMove && nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm));\n oldStartVnode = oldCh[++oldStartIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldEndVnode, newStartVnode)) { // Vnode moved left\n patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n canMove && nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);\n oldEndVnode = oldCh[--oldEndIdx];\n newStartVnode = newCh[++newStartIdx];\n } else {\n if (isUndef(oldKeyToIdx)) { oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx); }\n idxInOld = isDef(newStartVnode.key)\n ? oldKeyToIdx[newStartVnode.key]\n : findIdxInOld(newStartVnode, oldCh, oldStartIdx, oldEndIdx);\n if (isUndef(idxInOld)) { // New element\n createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n } else {\n vnodeToMove = oldCh[idxInOld];\n if (sameVnode(vnodeToMove, newStartVnode)) {\n patchVnode(vnodeToMove, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n oldCh[idxInOld] = undefined;\n canMove && nodeOps.insertBefore(parentElm, vnodeToMove.elm, oldStartVnode.elm);\n } else {\n // same key but different element. treat as new element\n createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n }\n }\n newStartVnode = newCh[++newStartIdx];\n }\n }\n if (oldStartIdx > oldEndIdx) {\n refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm;\n addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);\n } else if (newStartIdx > newEndIdx) {\n removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx);\n }\n }\n\n function checkDuplicateKeys (children) {\n var seenKeys = {};\n for (var i = 0; i < children.length; i++) {\n var vnode = children[i];\n var key = vnode.key;\n if (isDef(key)) {\n if (seenKeys[key]) {\n warn(\n (\"Duplicate keys detected: '\" + key + \"'. This may cause an update error.\"),\n vnode.context\n );\n } else {\n seenKeys[key] = true;\n }\n }\n }\n }\n\n function findIdxInOld (node, oldCh, start, end) {\n for (var i = start; i < end; i++) {\n var c = oldCh[i];\n if (isDef(c) && sameVnode(node, c)) { return i }\n }\n }\n\n function patchVnode (\n oldVnode,\n vnode,\n insertedVnodeQueue,\n ownerArray,\n index,\n removeOnly\n ) {\n if (oldVnode === vnode) {\n return\n }\n\n if (isDef(vnode.elm) && isDef(ownerArray)) {\n // clone reused vnode\n vnode = ownerArray[index] = cloneVNode(vnode);\n }\n\n var elm = vnode.elm = oldVnode.elm;\n\n if (isTrue(oldVnode.isAsyncPlaceholder)) {\n if (isDef(vnode.asyncFactory.resolved)) {\n hydrate(oldVnode.elm, vnode, insertedVnodeQueue);\n } else {\n vnode.isAsyncPlaceholder = true;\n }\n return\n }\n\n // reuse element for static trees.\n // note we only do this if the vnode is cloned -\n // if the new node is not cloned it means the render functions have been\n // reset by the hot-reload-api and we need to do a proper re-render.\n if (isTrue(vnode.isStatic) &&\n isTrue(oldVnode.isStatic) &&\n vnode.key === oldVnode.key &&\n (isTrue(vnode.isCloned) || isTrue(vnode.isOnce))\n ) {\n vnode.componentInstance = oldVnode.componentInstance;\n return\n }\n\n var i;\n var data = vnode.data;\n if (isDef(data) && isDef(i = data.hook) && isDef(i = i.prepatch)) {\n i(oldVnode, vnode);\n }\n\n var oldCh = oldVnode.children;\n var ch = vnode.children;\n if (isDef(data) && isPatchable(vnode)) {\n for (i = 0; i < cbs.update.length; ++i) { cbs.update[i](oldVnode, vnode); }\n if (isDef(i = data.hook) && isDef(i = i.update)) { i(oldVnode, vnode); }\n }\n if (isUndef(vnode.text)) {\n if (isDef(oldCh) && isDef(ch)) {\n if (oldCh !== ch) { updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly); }\n } else if (isDef(ch)) {\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(ch);\n }\n if (isDef(oldVnode.text)) { nodeOps.setTextContent(elm, ''); }\n addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);\n } else if (isDef(oldCh)) {\n removeVnodes(elm, oldCh, 0, oldCh.length - 1);\n } else if (isDef(oldVnode.text)) {\n nodeOps.setTextContent(elm, '');\n }\n } else if (oldVnode.text !== vnode.text) {\n nodeOps.setTextContent(elm, vnode.text);\n }\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.postpatch)) { i(oldVnode, vnode); }\n }\n }\n\n function invokeInsertHook (vnode, queue, initial) {\n // delay insert hooks for component root nodes, invoke them after the\n // element is really inserted\n if (isTrue(initial) && isDef(vnode.parent)) {\n vnode.parent.data.pendingInsert = queue;\n } else {\n for (var i = 0; i < queue.length; ++i) {\n queue[i].data.hook.insert(queue[i]);\n }\n }\n }\n\n var hydrationBailed = false;\n // list of modules that can skip create hook during hydration because they\n // are already rendered on the client or has no need for initialization\n // Note: style is excluded because it relies on initial clone for future\n // deep updates (#7063).\n var isRenderedModule = makeMap('attrs,class,staticClass,staticStyle,key');\n\n // Note: this is a browser-only function so we can assume elms are DOM nodes.\n function hydrate (elm, vnode, insertedVnodeQueue, inVPre) {\n var i;\n var tag = vnode.tag;\n var data = vnode.data;\n var children = vnode.children;\n inVPre = inVPre || (data && data.pre);\n vnode.elm = elm;\n\n if (isTrue(vnode.isComment) && isDef(vnode.asyncFactory)) {\n vnode.isAsyncPlaceholder = true;\n return true\n }\n // assert node match\n if (process.env.NODE_ENV !== 'production') {\n if (!assertNodeMatch(elm, vnode, inVPre)) {\n return false\n }\n }\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.init)) { i(vnode, true /* hydrating */); }\n if (isDef(i = vnode.componentInstance)) {\n // child component. it should have hydrated its own tree.\n initComponent(vnode, insertedVnodeQueue);\n return true\n }\n }\n if (isDef(tag)) {\n if (isDef(children)) {\n // empty element, allow client to pick up and populate children\n if (!elm.hasChildNodes()) {\n createChildren(vnode, children, insertedVnodeQueue);\n } else {\n // v-html and domProps: innerHTML\n if (isDef(i = data) && isDef(i = i.domProps) && isDef(i = i.innerHTML)) {\n if (i !== elm.innerHTML) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' &&\n typeof console !== 'undefined' &&\n !hydrationBailed\n ) {\n hydrationBailed = true;\n console.warn('Parent: ', elm);\n console.warn('server innerHTML: ', i);\n console.warn('client innerHTML: ', elm.innerHTML);\n }\n return false\n }\n } else {\n // iterate and compare children lists\n var childrenMatch = true;\n var childNode = elm.firstChild;\n for (var i$1 = 0; i$1 < children.length; i$1++) {\n if (!childNode || !hydrate(childNode, children[i$1], insertedVnodeQueue, inVPre)) {\n childrenMatch = false;\n break\n }\n childNode = childNode.nextSibling;\n }\n // if childNode is not null, it means the actual childNodes list is\n // longer than the virtual children list.\n if (!childrenMatch || childNode) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' &&\n typeof console !== 'undefined' &&\n !hydrationBailed\n ) {\n hydrationBailed = true;\n console.warn('Parent: ', elm);\n console.warn('Mismatching childNodes vs. VNodes: ', elm.childNodes, children);\n }\n return false\n }\n }\n }\n }\n if (isDef(data)) {\n var fullInvoke = false;\n for (var key in data) {\n if (!isRenderedModule(key)) {\n fullInvoke = true;\n invokeCreateHooks(vnode, insertedVnodeQueue);\n break\n }\n }\n if (!fullInvoke && data['class']) {\n // ensure collecting deps for deep class bindings for future updates\n traverse(data['class']);\n }\n }\n } else if (elm.data !== vnode.text) {\n elm.data = vnode.text;\n }\n return true\n }\n\n function assertNodeMatch (node, vnode, inVPre) {\n if (isDef(vnode.tag)) {\n return vnode.tag.indexOf('vue-component') === 0 || (\n !isUnknownElement$$1(vnode, inVPre) &&\n vnode.tag.toLowerCase() === (node.tagName && node.tagName.toLowerCase())\n )\n } else {\n return node.nodeType === (vnode.isComment ? 8 : 3)\n }\n }\n\n return function patch (oldVnode, vnode, hydrating, removeOnly) {\n if (isUndef(vnode)) {\n if (isDef(oldVnode)) { invokeDestroyHook(oldVnode); }\n return\n }\n\n var isInitialPatch = false;\n var insertedVnodeQueue = [];\n\n if (isUndef(oldVnode)) {\n // empty mount (likely as component), create new root element\n isInitialPatch = true;\n createElm(vnode, insertedVnodeQueue);\n } else {\n var isRealElement = isDef(oldVnode.nodeType);\n if (!isRealElement && sameVnode(oldVnode, vnode)) {\n // patch existing root node\n patchVnode(oldVnode, vnode, insertedVnodeQueue, null, null, removeOnly);\n } else {\n if (isRealElement) {\n // mounting to a real element\n // check if this is server-rendered content and if we can perform\n // a successful hydration.\n if (oldVnode.nodeType === 1 && oldVnode.hasAttribute(SSR_ATTR)) {\n oldVnode.removeAttribute(SSR_ATTR);\n hydrating = true;\n }\n if (isTrue(hydrating)) {\n if (hydrate(oldVnode, vnode, insertedVnodeQueue)) {\n invokeInsertHook(vnode, insertedVnodeQueue, true);\n return oldVnode\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n 'The client-side rendered virtual DOM tree is not matching ' +\n 'server-rendered content. This is likely caused by incorrect ' +\n 'HTML markup, for example nesting block-level elements inside ' +\n '<p>, or missing <tbody>. Bailing hydration and performing ' +\n 'full client-side render.'\n );\n }\n }\n // either not server-rendered, or hydration failed.\n // create an empty node and replace it\n oldVnode = emptyNodeAt(oldVnode);\n }\n\n // replacing existing element\n var oldElm = oldVnode.elm;\n var parentElm = nodeOps.parentNode(oldElm);\n\n // create new node\n createElm(\n vnode,\n insertedVnodeQueue,\n // extremely rare edge case: do not insert if old element is in a\n // leaving transition. Only happens when combining transition +\n // keep-alive + HOCs. (#4590)\n oldElm._leaveCb ? null : parentElm,\n nodeOps.nextSibling(oldElm)\n );\n\n // update parent placeholder node element, recursively\n if (isDef(vnode.parent)) {\n var ancestor = vnode.parent;\n var patchable = isPatchable(vnode);\n while (ancestor) {\n for (var i = 0; i < cbs.destroy.length; ++i) {\n cbs.destroy[i](ancestor);\n }\n ancestor.elm = vnode.elm;\n if (patchable) {\n for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n cbs.create[i$1](emptyNode, ancestor);\n }\n // #6513\n // invoke insert hooks that may have been merged by create hooks.\n // e.g. for directives that uses the \"inserted\" hook.\n var insert = ancestor.data.hook.insert;\n if (insert.merged) {\n // start at index 1 to avoid re-invoking component mounted hook\n for (var i$2 = 1; i$2 < insert.fns.length; i$2++) {\n insert.fns[i$2]();\n }\n }\n } else {\n registerRef(ancestor);\n }\n ancestor = ancestor.parent;\n }\n }\n\n // destroy old node\n if (isDef(parentElm)) {\n removeVnodes(parentElm, [oldVnode], 0, 0);\n } else if (isDef(oldVnode.tag)) {\n invokeDestroyHook(oldVnode);\n }\n }\n }\n\n invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch);\n return vnode.elm\n }\n}\n\n/* */\n\nvar directives = {\n create: updateDirectives,\n update: updateDirectives,\n destroy: function unbindDirectives (vnode) {\n updateDirectives(vnode, emptyNode);\n }\n};\n\nfunction updateDirectives (oldVnode, vnode) {\n if (oldVnode.data.directives || vnode.data.directives) {\n _update(oldVnode, vnode);\n }\n}\n\nfunction _update (oldVnode, vnode) {\n var isCreate = oldVnode === emptyNode;\n var isDestroy = vnode === emptyNode;\n var oldDirs = normalizeDirectives$1(oldVnode.data.directives, oldVnode.context);\n var newDirs = normalizeDirectives$1(vnode.data.directives, vnode.context);\n\n var dirsWithInsert = [];\n var dirsWithPostpatch = [];\n\n var key, oldDir, dir;\n for (key in newDirs) {\n oldDir = oldDirs[key];\n dir = newDirs[key];\n if (!oldDir) {\n // new directive, bind\n callHook$1(dir, 'bind', vnode, oldVnode);\n if (dir.def && dir.def.inserted) {\n dirsWithInsert.push(dir);\n }\n } else {\n // existing directive, update\n dir.oldValue = oldDir.value;\n dir.oldArg = oldDir.arg;\n callHook$1(dir, 'update', vnode, oldVnode);\n if (dir.def && dir.def.componentUpdated) {\n dirsWithPostpatch.push(dir);\n }\n }\n }\n\n if (dirsWithInsert.length) {\n var callInsert = function () {\n for (var i = 0; i < dirsWithInsert.length; i++) {\n callHook$1(dirsWithInsert[i], 'inserted', vnode, oldVnode);\n }\n };\n if (isCreate) {\n mergeVNodeHook(vnode, 'insert', callInsert);\n } else {\n callInsert();\n }\n }\n\n if (dirsWithPostpatch.length) {\n mergeVNodeHook(vnode, 'postpatch', function () {\n for (var i = 0; i < dirsWithPostpatch.length; i++) {\n callHook$1(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode);\n }\n });\n }\n\n if (!isCreate) {\n for (key in oldDirs) {\n if (!newDirs[key]) {\n // no longer present, unbind\n callHook$1(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy);\n }\n }\n }\n}\n\nvar emptyModifiers = Object.create(null);\n\nfunction normalizeDirectives$1 (\n dirs,\n vm\n) {\n var res = Object.create(null);\n if (!dirs) {\n // $flow-disable-line\n return res\n }\n var i, dir;\n for (i = 0; i < dirs.length; i++) {\n dir = dirs[i];\n if (!dir.modifiers) {\n // $flow-disable-line\n dir.modifiers = emptyModifiers;\n }\n res[getRawDirName(dir)] = dir;\n dir.def = resolveAsset(vm.$options, 'directives', dir.name, true);\n }\n // $flow-disable-line\n return res\n}\n\nfunction getRawDirName (dir) {\n return dir.rawName || ((dir.name) + \".\" + (Object.keys(dir.modifiers || {}).join('.')))\n}\n\nfunction callHook$1 (dir, hook, vnode, oldVnode, isDestroy) {\n var fn = dir.def && dir.def[hook];\n if (fn) {\n try {\n fn(vnode.elm, dir, vnode, oldVnode, isDestroy);\n } catch (e) {\n handleError(e, vnode.context, (\"directive \" + (dir.name) + \" \" + hook + \" hook\"));\n }\n }\n}\n\nvar baseModules = [\n ref,\n directives\n];\n\n/* */\n\nfunction updateAttrs (oldVnode, vnode) {\n var opts = vnode.componentOptions;\n if (isDef(opts) && opts.Ctor.options.inheritAttrs === false) {\n return\n }\n if (isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs)) {\n return\n }\n var key, cur, old;\n var elm = vnode.elm;\n var oldAttrs = oldVnode.data.attrs || {};\n var attrs = vnode.data.attrs || {};\n // clone observed objects, as the user probably wants to mutate it\n if (isDef(attrs.__ob__)) {\n attrs = vnode.data.attrs = extend({}, attrs);\n }\n\n for (key in attrs) {\n cur = attrs[key];\n old = oldAttrs[key];\n if (old !== cur) {\n setAttr(elm, key, cur);\n }\n }\n // #4391: in IE9, setting type can reset value for input[type=radio]\n // #6666: IE/Edge forces progress value down to 1 before setting a max\n /* istanbul ignore if */\n if ((isIE || isEdge) && attrs.value !== oldAttrs.value) {\n setAttr(elm, 'value', attrs.value);\n }\n for (key in oldAttrs) {\n if (isUndef(attrs[key])) {\n if (isXlink(key)) {\n elm.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else if (!isEnumeratedAttr(key)) {\n elm.removeAttribute(key);\n }\n }\n }\n}\n\nfunction setAttr (el, key, value) {\n if (el.tagName.indexOf('-') > -1) {\n baseSetAttr(el, key, value);\n } else if (isBooleanAttr(key)) {\n // set attribute for blank value\n // e.g. <option disabled>Select one</option>\n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n // technically allowfullscreen is a boolean attribute for <iframe>,\n // but Flash expects a value of \"true\" when used on <embed> tag\n value = key === 'allowfullscreen' && el.tagName === 'EMBED'\n ? 'true'\n : key;\n el.setAttribute(key, value);\n }\n } else if (isEnumeratedAttr(key)) {\n el.setAttribute(key, convertEnumeratedValue(key, value));\n } else if (isXlink(key)) {\n if (isFalsyAttrValue(value)) {\n el.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else {\n el.setAttributeNS(xlinkNS, key, value);\n }\n } else {\n baseSetAttr(el, key, value);\n }\n}\n\nfunction baseSetAttr (el, key, value) {\n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n // #7138: IE10 & 11 fires input event when setting placeholder on\n // <textarea>... block the first input event and remove the blocker\n // immediately.\n /* istanbul ignore if */\n if (\n isIE && !isIE9 &&\n el.tagName === 'TEXTAREA' &&\n key === 'placeholder' && value !== '' && !el.__ieph\n ) {\n var blocker = function (e) {\n e.stopImmediatePropagation();\n el.removeEventListener('input', blocker);\n };\n el.addEventListener('input', blocker);\n // $flow-disable-line\n el.__ieph = true; /* IE placeholder patched */\n }\n el.setAttribute(key, value);\n }\n}\n\nvar attrs = {\n create: updateAttrs,\n update: updateAttrs\n};\n\n/* */\n\nfunction updateClass (oldVnode, vnode) {\n var el = vnode.elm;\n var data = vnode.data;\n var oldData = oldVnode.data;\n if (\n isUndef(data.staticClass) &&\n isUndef(data.class) && (\n isUndef(oldData) || (\n isUndef(oldData.staticClass) &&\n isUndef(oldData.class)\n )\n )\n ) {\n return\n }\n\n var cls = genClassForVnode(vnode);\n\n // handle transition classes\n var transitionClass = el._transitionClasses;\n if (isDef(transitionClass)) {\n cls = concat(cls, stringifyClass(transitionClass));\n }\n\n // set the class\n if (cls !== el._prevClass) {\n el.setAttribute('class', cls);\n el._prevClass = cls;\n }\n}\n\nvar klass = {\n create: updateClass,\n update: updateClass\n};\n\n/* */\n\n/* */\n\n/* */\n\n/* */\n\n// in some cases, the event used has to be determined at runtime\n// so we used some reserved tokens during compile.\nvar RANGE_TOKEN = '__r';\nvar CHECKBOX_RADIO_TOKEN = '__c';\n\n/* */\n\n// normalize v-model event tokens that can only be determined at runtime.\n// it's important to place the event as the first in the array because\n// the whole point is ensuring the v-model callback gets called before\n// user-attached handlers.\nfunction normalizeEvents (on) {\n /* istanbul ignore if */\n if (isDef(on[RANGE_TOKEN])) {\n // IE input[type=range] only supports `change` event\n var event = isIE ? 'change' : 'input';\n on[event] = [].concat(on[RANGE_TOKEN], on[event] || []);\n delete on[RANGE_TOKEN];\n }\n // This was originally intended to fix #4521 but no longer necessary\n // after 2.5. Keeping it for backwards compat with generated code from < 2.4\n /* istanbul ignore if */\n if (isDef(on[CHECKBOX_RADIO_TOKEN])) {\n on.change = [].concat(on[CHECKBOX_RADIO_TOKEN], on.change || []);\n delete on[CHECKBOX_RADIO_TOKEN];\n }\n}\n\nvar target$1;\n\nfunction createOnceHandler$1 (event, handler, capture) {\n var _target = target$1; // save current target element in closure\n return function onceHandler () {\n var res = handler.apply(null, arguments);\n if (res !== null) {\n remove$2(event, onceHandler, capture, _target);\n }\n }\n}\n\n// #9446: Firefox <= 53 (in particular, ESR 52) has incorrect Event.timeStamp\n// implementation and does not fire microtasks in between event propagation, so\n// safe to exclude.\nvar useMicrotaskFix = isUsingMicroTask && !(isFF && Number(isFF[1]) <= 53);\n\nfunction add$1 (\n name,\n handler,\n capture,\n passive\n) {\n // async edge case #6566: inner click event triggers patch, event handler\n // attached to outer element during patch, and triggered again. This\n // happens because browsers fire microtask ticks between event propagation.\n // the solution is simple: we save the timestamp when a handler is attached,\n // and the handler would only fire if the event passed to it was fired\n // AFTER it was attached.\n if (useMicrotaskFix) {\n var attachedTimestamp = currentFlushTimestamp;\n var original = handler;\n handler = original._wrapper = function (e) {\n if (\n // no bubbling, should always fire.\n // this is just a safety net in case event.timeStamp is unreliable in\n // certain weird environments...\n e.target === e.currentTarget ||\n // event is fired after handler attachment\n e.timeStamp >= attachedTimestamp ||\n // bail for environments that have buggy event.timeStamp implementations\n // #9462 iOS 9 bug: event.timeStamp is 0 after history.pushState\n // #9681 QtWebEngine event.timeStamp is negative value\n e.timeStamp <= 0 ||\n // #9448 bail if event is fired in another document in a multi-page\n // electron/nw.js app, since event.timeStamp will be using a different\n // starting reference\n e.target.ownerDocument !== document\n ) {\n return original.apply(this, arguments)\n }\n };\n }\n target$1.addEventListener(\n name,\n handler,\n supportsPassive\n ? { capture: capture, passive: passive }\n : capture\n );\n}\n\nfunction remove$2 (\n name,\n handler,\n capture,\n _target\n) {\n (_target || target$1).removeEventListener(\n name,\n handler._wrapper || handler,\n capture\n );\n}\n\nfunction updateDOMListeners (oldVnode, vnode) {\n if (isUndef(oldVnode.data.on) && isUndef(vnode.data.on)) {\n return\n }\n var on = vnode.data.on || {};\n var oldOn = oldVnode.data.on || {};\n target$1 = vnode.elm;\n normalizeEvents(on);\n updateListeners(on, oldOn, add$1, remove$2, createOnceHandler$1, vnode.context);\n target$1 = undefined;\n}\n\nvar events = {\n create: updateDOMListeners,\n update: updateDOMListeners\n};\n\n/* */\n\nvar svgContainer;\n\nfunction updateDOMProps (oldVnode, vnode) {\n if (isUndef(oldVnode.data.domProps) && isUndef(vnode.data.domProps)) {\n return\n }\n var key, cur;\n var elm = vnode.elm;\n var oldProps = oldVnode.data.domProps || {};\n var props = vnode.data.domProps || {};\n // clone observed objects, as the user probably wants to mutate it\n if (isDef(props.__ob__)) {\n props = vnode.data.domProps = extend({}, props);\n }\n\n for (key in oldProps) {\n if (!(key in props)) {\n elm[key] = '';\n }\n }\n\n for (key in props) {\n cur = props[key];\n // ignore children if the node has textContent or innerHTML,\n // as these will throw away existing DOM nodes and cause removal errors\n // on subsequent patches (#3360)\n if (key === 'textContent' || key === 'innerHTML') {\n if (vnode.children) { vnode.children.length = 0; }\n if (cur === oldProps[key]) { continue }\n // #6601 work around Chrome version <= 55 bug where single textNode\n // replaced by innerHTML/textContent retains its parentNode property\n if (elm.childNodes.length === 1) {\n elm.removeChild(elm.childNodes[0]);\n }\n }\n\n if (key === 'value' && elm.tagName !== 'PROGRESS') {\n // store value as _value as well since\n // non-string values will be stringified\n elm._value = cur;\n // avoid resetting cursor position when value is the same\n var strCur = isUndef(cur) ? '' : String(cur);\n if (shouldUpdateValue(elm, strCur)) {\n elm.value = strCur;\n }\n } else if (key === 'innerHTML' && isSVG(elm.tagName) && isUndef(elm.innerHTML)) {\n // IE doesn't support innerHTML for SVG elements\n svgContainer = svgContainer || document.createElement('div');\n svgContainer.innerHTML = \"<svg>\" + cur + \"</svg>\";\n var svg = svgContainer.firstChild;\n while (elm.firstChild) {\n elm.removeChild(elm.firstChild);\n }\n while (svg.firstChild) {\n elm.appendChild(svg.firstChild);\n }\n } else if (\n // skip the update if old and new VDOM state is the same.\n // `value` is handled separately because the DOM value may be temporarily\n // out of sync with VDOM state due to focus, composition and modifiers.\n // This #4521 by skipping the unnecesarry `checked` update.\n cur !== oldProps[key]\n ) {\n // some property updates can throw\n // e.g. `value` on <progress> w/ non-finite value\n try {\n elm[key] = cur;\n } catch (e) {}\n }\n }\n}\n\n// check platforms/web/util/attrs.js acceptValue\n\n\nfunction shouldUpdateValue (elm, checkVal) {\n return (!elm.composing && (\n elm.tagName === 'OPTION' ||\n isNotInFocusAndDirty(elm, checkVal) ||\n isDirtyWithModifiers(elm, checkVal)\n ))\n}\n\nfunction isNotInFocusAndDirty (elm, checkVal) {\n // return true when textbox (.number and .trim) loses focus and its value is\n // not equal to the updated value\n var notInFocus = true;\n // #6157\n // work around IE bug when accessing document.activeElement in an iframe\n try { notInFocus = document.activeElement !== elm; } catch (e) {}\n return notInFocus && elm.value !== checkVal\n}\n\nfunction isDirtyWithModifiers (elm, newVal) {\n var value = elm.value;\n var modifiers = elm._vModifiers; // injected by v-model runtime\n if (isDef(modifiers)) {\n if (modifiers.number) {\n return toNumber(value) !== toNumber(newVal)\n }\n if (modifiers.trim) {\n return value.trim() !== newVal.trim()\n }\n }\n return value !== newVal\n}\n\nvar domProps = {\n create: updateDOMProps,\n update: updateDOMProps\n};\n\n/* */\n\nvar parseStyleText = cached(function (cssText) {\n var res = {};\n var listDelimiter = /;(?![^(]*\\))/g;\n var propertyDelimiter = /:(.+)/;\n cssText.split(listDelimiter).forEach(function (item) {\n if (item) {\n var tmp = item.split(propertyDelimiter);\n tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return res\n});\n\n// merge static and dynamic style data on the same vnode\nfunction normalizeStyleData (data) {\n var style = normalizeStyleBinding(data.style);\n // static style is pre-processed into an object during compilation\n // and is always a fresh object, so it's safe to merge into it\n return data.staticStyle\n ? extend(data.staticStyle, style)\n : style\n}\n\n// normalize possible array / string values into Object\nfunction normalizeStyleBinding (bindingStyle) {\n if (Array.isArray(bindingStyle)) {\n return toObject(bindingStyle)\n }\n if (typeof bindingStyle === 'string') {\n return parseStyleText(bindingStyle)\n }\n return bindingStyle\n}\n\n/**\n * parent component style should be after child's\n * so that parent component's style could override it\n */\nfunction getStyle (vnode, checkChild) {\n var res = {};\n var styleData;\n\n if (checkChild) {\n var childNode = vnode;\n while (childNode.componentInstance) {\n childNode = childNode.componentInstance._vnode;\n if (\n childNode && childNode.data &&\n (styleData = normalizeStyleData(childNode.data))\n ) {\n extend(res, styleData);\n }\n }\n }\n\n if ((styleData = normalizeStyleData(vnode.data))) {\n extend(res, styleData);\n }\n\n var parentNode = vnode;\n while ((parentNode = parentNode.parent)) {\n if (parentNode.data && (styleData = normalizeStyleData(parentNode.data))) {\n extend(res, styleData);\n }\n }\n return res\n}\n\n/* */\n\nvar cssVarRE = /^--/;\nvar importantRE = /\\s*!important$/;\nvar setProp = function (el, name, val) {\n /* istanbul ignore if */\n if (cssVarRE.test(name)) {\n el.style.setProperty(name, val);\n } else if (importantRE.test(val)) {\n el.style.setProperty(hyphenate(name), val.replace(importantRE, ''), 'important');\n } else {\n var normalizedName = normalize(name);\n if (Array.isArray(val)) {\n // Support values array created by autoprefixer, e.g.\n // {display: [\"-webkit-box\", \"-ms-flexbox\", \"flex\"]}\n // Set them one by one, and the browser will only set those it can recognize\n for (var i = 0, len = val.length; i < len; i++) {\n el.style[normalizedName] = val[i];\n }\n } else {\n el.style[normalizedName] = val;\n }\n }\n};\n\nvar vendorNames = ['Webkit', 'Moz', 'ms'];\n\nvar emptyStyle;\nvar normalize = cached(function (prop) {\n emptyStyle = emptyStyle || document.createElement('div').style;\n prop = camelize(prop);\n if (prop !== 'filter' && (prop in emptyStyle)) {\n return prop\n }\n var capName = prop.charAt(0).toUpperCase() + prop.slice(1);\n for (var i = 0; i < vendorNames.length; i++) {\n var name = vendorNames[i] + capName;\n if (name in emptyStyle) {\n return name\n }\n }\n});\n\nfunction updateStyle (oldVnode, vnode) {\n var data = vnode.data;\n var oldData = oldVnode.data;\n\n if (isUndef(data.staticStyle) && isUndef(data.style) &&\n isUndef(oldData.staticStyle) && isUndef(oldData.style)\n ) {\n return\n }\n\n var cur, name;\n var el = vnode.elm;\n var oldStaticStyle = oldData.staticStyle;\n var oldStyleBinding = oldData.normalizedStyle || oldData.style || {};\n\n // if static style exists, stylebinding already merged into it when doing normalizeStyleData\n var oldStyle = oldStaticStyle || oldStyleBinding;\n\n var style = normalizeStyleBinding(vnode.data.style) || {};\n\n // store normalized style under a different key for next diff\n // make sure to clone it if it's reactive, since the user likely wants\n // to mutate it.\n vnode.data.normalizedStyle = isDef(style.__ob__)\n ? extend({}, style)\n : style;\n\n var newStyle = getStyle(vnode, true);\n\n for (name in oldStyle) {\n if (isUndef(newStyle[name])) {\n setProp(el, name, '');\n }\n }\n for (name in newStyle) {\n cur = newStyle[name];\n if (cur !== oldStyle[name]) {\n // ie9 setting to null has no effect, must use empty string\n setProp(el, name, cur == null ? '' : cur);\n }\n }\n}\n\nvar style = {\n create: updateStyle,\n update: updateStyle\n};\n\n/* */\n\nvar whitespaceRE = /\\s+/;\n\n/**\n * Add class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction addClass (el, cls) {\n /* istanbul ignore if */\n if (!cls || !(cls = cls.trim())) {\n return\n }\n\n /* istanbul ignore else */\n if (el.classList) {\n if (cls.indexOf(' ') > -1) {\n cls.split(whitespaceRE).forEach(function (c) { return el.classList.add(c); });\n } else {\n el.classList.add(cls);\n }\n } else {\n var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n if (cur.indexOf(' ' + cls + ' ') < 0) {\n el.setAttribute('class', (cur + cls).trim());\n }\n }\n}\n\n/**\n * Remove class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction removeClass (el, cls) {\n /* istanbul ignore if */\n if (!cls || !(cls = cls.trim())) {\n return\n }\n\n /* istanbul ignore else */\n if (el.classList) {\n if (cls.indexOf(' ') > -1) {\n cls.split(whitespaceRE).forEach(function (c) { return el.classList.remove(c); });\n } else {\n el.classList.remove(cls);\n }\n if (!el.classList.length) {\n el.removeAttribute('class');\n }\n } else {\n var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n var tar = ' ' + cls + ' ';\n while (cur.indexOf(tar) >= 0) {\n cur = cur.replace(tar, ' ');\n }\n cur = cur.trim();\n if (cur) {\n el.setAttribute('class', cur);\n } else {\n el.removeAttribute('class');\n }\n }\n}\n\n/* */\n\nfunction resolveTransition (def$$1) {\n if (!def$$1) {\n return\n }\n /* istanbul ignore else */\n if (typeof def$$1 === 'object') {\n var res = {};\n if (def$$1.css !== false) {\n extend(res, autoCssTransition(def$$1.name || 'v'));\n }\n extend(res, def$$1);\n return res\n } else if (typeof def$$1 === 'string') {\n return autoCssTransition(def$$1)\n }\n}\n\nvar autoCssTransition = cached(function (name) {\n return {\n enterClass: (name + \"-enter\"),\n enterToClass: (name + \"-enter-to\"),\n enterActiveClass: (name + \"-enter-active\"),\n leaveClass: (name + \"-leave\"),\n leaveToClass: (name + \"-leave-to\"),\n leaveActiveClass: (name + \"-leave-active\")\n }\n});\n\nvar hasTransition = inBrowser && !isIE9;\nvar TRANSITION = 'transition';\nvar ANIMATION = 'animation';\n\n// Transition property/event sniffing\nvar transitionProp = 'transition';\nvar transitionEndEvent = 'transitionend';\nvar animationProp = 'animation';\nvar animationEndEvent = 'animationend';\nif (hasTransition) {\n /* istanbul ignore if */\n if (window.ontransitionend === undefined &&\n window.onwebkittransitionend !== undefined\n ) {\n transitionProp = 'WebkitTransition';\n transitionEndEvent = 'webkitTransitionEnd';\n }\n if (window.onanimationend === undefined &&\n window.onwebkitanimationend !== undefined\n ) {\n animationProp = 'WebkitAnimation';\n animationEndEvent = 'webkitAnimationEnd';\n }\n}\n\n// binding to window is necessary to make hot reload work in IE in strict mode\nvar raf = inBrowser\n ? window.requestAnimationFrame\n ? window.requestAnimationFrame.bind(window)\n : setTimeout\n : /* istanbul ignore next */ function (fn) { return fn(); };\n\nfunction nextFrame (fn) {\n raf(function () {\n raf(fn);\n });\n}\n\nfunction addTransitionClass (el, cls) {\n var transitionClasses = el._transitionClasses || (el._transitionClasses = []);\n if (transitionClasses.indexOf(cls) < 0) {\n transitionClasses.push(cls);\n addClass(el, cls);\n }\n}\n\nfunction removeTransitionClass (el, cls) {\n if (el._transitionClasses) {\n remove(el._transitionClasses, cls);\n }\n removeClass(el, cls);\n}\n\nfunction whenTransitionEnds (\n el,\n expectedType,\n cb\n) {\n var ref = getTransitionInfo(el, expectedType);\n var type = ref.type;\n var timeout = ref.timeout;\n var propCount = ref.propCount;\n if (!type) { return cb() }\n var event = type === TRANSITION ? transitionEndEvent : animationEndEvent;\n var ended = 0;\n var end = function () {\n el.removeEventListener(event, onEnd);\n cb();\n };\n var onEnd = function (e) {\n if (e.target === el) {\n if (++ended >= propCount) {\n end();\n }\n }\n };\n setTimeout(function () {\n if (ended < propCount) {\n end();\n }\n }, timeout + 1);\n el.addEventListener(event, onEnd);\n}\n\nvar transformRE = /\\b(transform|all)(,|$)/;\n\nfunction getTransitionInfo (el, expectedType) {\n var styles = window.getComputedStyle(el);\n // JSDOM may return undefined for transition properties\n var transitionDelays = (styles[transitionProp + 'Delay'] || '').split(', ');\n var transitionDurations = (styles[transitionProp + 'Duration'] || '').split(', ');\n var transitionTimeout = getTimeout(transitionDelays, transitionDurations);\n var animationDelays = (styles[animationProp + 'Delay'] || '').split(', ');\n var animationDurations = (styles[animationProp + 'Duration'] || '').split(', ');\n var animationTimeout = getTimeout(animationDelays, animationDurations);\n\n var type;\n var timeout = 0;\n var propCount = 0;\n /* istanbul ignore if */\n if (expectedType === TRANSITION) {\n if (transitionTimeout > 0) {\n type = TRANSITION;\n timeout = transitionTimeout;\n propCount = transitionDurations.length;\n }\n } else if (expectedType === ANIMATION) {\n if (animationTimeout > 0) {\n type = ANIMATION;\n timeout = animationTimeout;\n propCount = animationDurations.length;\n }\n } else {\n timeout = Math.max(transitionTimeout, animationTimeout);\n type = timeout > 0\n ? transitionTimeout > animationTimeout\n ? TRANSITION\n : ANIMATION\n : null;\n propCount = type\n ? type === TRANSITION\n ? transitionDurations.length\n : animationDurations.length\n : 0;\n }\n var hasTransform =\n type === TRANSITION &&\n transformRE.test(styles[transitionProp + 'Property']);\n return {\n type: type,\n timeout: timeout,\n propCount: propCount,\n hasTransform: hasTransform\n }\n}\n\nfunction getTimeout (delays, durations) {\n /* istanbul ignore next */\n while (delays.length < durations.length) {\n delays = delays.concat(delays);\n }\n\n return Math.max.apply(null, durations.map(function (d, i) {\n return toMs(d) + toMs(delays[i])\n }))\n}\n\n// Old versions of Chromium (below 61.0.3163.100) formats floating pointer numbers\n// in a locale-dependent way, using a comma instead of a dot.\n// If comma is not replaced with a dot, the input will be rounded down (i.e. acting\n// as a floor function) causing unexpected behaviors\nfunction toMs (s) {\n return Number(s.slice(0, -1).replace(',', '.')) * 1000\n}\n\n/* */\n\nfunction enter (vnode, toggleDisplay) {\n var el = vnode.elm;\n\n // call leave callback now\n if (isDef(el._leaveCb)) {\n el._leaveCb.cancelled = true;\n el._leaveCb();\n }\n\n var data = resolveTransition(vnode.data.transition);\n if (isUndef(data)) {\n return\n }\n\n /* istanbul ignore if */\n if (isDef(el._enterCb) || el.nodeType !== 1) {\n return\n }\n\n var css = data.css;\n var type = data.type;\n var enterClass = data.enterClass;\n var enterToClass = data.enterToClass;\n var enterActiveClass = data.enterActiveClass;\n var appearClass = data.appearClass;\n var appearToClass = data.appearToClass;\n var appearActiveClass = data.appearActiveClass;\n var beforeEnter = data.beforeEnter;\n var enter = data.enter;\n var afterEnter = data.afterEnter;\n var enterCancelled = data.enterCancelled;\n var beforeAppear = data.beforeAppear;\n var appear = data.appear;\n var afterAppear = data.afterAppear;\n var appearCancelled = data.appearCancelled;\n var duration = data.duration;\n\n // activeInstance will always be the <transition> component managing this\n // transition. One edge case to check is when the <transition> is placed\n // as the root node of a child component. In that case we need to check\n // <transition>'s parent for appear check.\n var context = activeInstance;\n var transitionNode = activeInstance.$vnode;\n while (transitionNode && transitionNode.parent) {\n context = transitionNode.context;\n transitionNode = transitionNode.parent;\n }\n\n var isAppear = !context._isMounted || !vnode.isRootInsert;\n\n if (isAppear && !appear && appear !== '') {\n return\n }\n\n var startClass = isAppear && appearClass\n ? appearClass\n : enterClass;\n var activeClass = isAppear && appearActiveClass\n ? appearActiveClass\n : enterActiveClass;\n var toClass = isAppear && appearToClass\n ? appearToClass\n : enterToClass;\n\n var beforeEnterHook = isAppear\n ? (beforeAppear || beforeEnter)\n : beforeEnter;\n var enterHook = isAppear\n ? (typeof appear === 'function' ? appear : enter)\n : enter;\n var afterEnterHook = isAppear\n ? (afterAppear || afterEnter)\n : afterEnter;\n var enterCancelledHook = isAppear\n ? (appearCancelled || enterCancelled)\n : enterCancelled;\n\n var explicitEnterDuration = toNumber(\n isObject(duration)\n ? duration.enter\n : duration\n );\n\n if (process.env.NODE_ENV !== 'production' && explicitEnterDuration != null) {\n checkDuration(explicitEnterDuration, 'enter', vnode);\n }\n\n var expectsCSS = css !== false && !isIE9;\n var userWantsControl = getHookArgumentsLength(enterHook);\n\n var cb = el._enterCb = once(function () {\n if (expectsCSS) {\n removeTransitionClass(el, toClass);\n removeTransitionClass(el, activeClass);\n }\n if (cb.cancelled) {\n if (expectsCSS) {\n removeTransitionClass(el, startClass);\n }\n enterCancelledHook && enterCancelledHook(el);\n } else {\n afterEnterHook && afterEnterHook(el);\n }\n el._enterCb = null;\n });\n\n if (!vnode.data.show) {\n // remove pending leave element on enter by injecting an insert hook\n mergeVNodeHook(vnode, 'insert', function () {\n var parent = el.parentNode;\n var pendingNode = parent && parent._pending && parent._pending[vnode.key];\n if (pendingNode &&\n pendingNode.tag === vnode.tag &&\n pendingNode.elm._leaveCb\n ) {\n pendingNode.elm._leaveCb();\n }\n enterHook && enterHook(el, cb);\n });\n }\n\n // start enter transition\n beforeEnterHook && beforeEnterHook(el);\n if (expectsCSS) {\n addTransitionClass(el, startClass);\n addTransitionClass(el, activeClass);\n nextFrame(function () {\n removeTransitionClass(el, startClass);\n if (!cb.cancelled) {\n addTransitionClass(el, toClass);\n if (!userWantsControl) {\n if (isValidDuration(explicitEnterDuration)) {\n setTimeout(cb, explicitEnterDuration);\n } else {\n whenTransitionEnds(el, type, cb);\n }\n }\n }\n });\n }\n\n if (vnode.data.show) {\n toggleDisplay && toggleDisplay();\n enterHook && enterHook(el, cb);\n }\n\n if (!expectsCSS && !userWantsControl) {\n cb();\n }\n}\n\nfunction leave (vnode, rm) {\n var el = vnode.elm;\n\n // call enter callback now\n if (isDef(el._enterCb)) {\n el._enterCb.cancelled = true;\n el._enterCb();\n }\n\n var data = resolveTransition(vnode.data.transition);\n if (isUndef(data) || el.nodeType !== 1) {\n return rm()\n }\n\n /* istanbul ignore if */\n if (isDef(el._leaveCb)) {\n return\n }\n\n var css = data.css;\n var type = data.type;\n var leaveClass = data.leaveClass;\n var leaveToClass = data.leaveToClass;\n var leaveActiveClass = data.leaveActiveClass;\n var beforeLeave = data.beforeLeave;\n var leave = data.leave;\n var afterLeave = data.afterLeave;\n var leaveCancelled = data.leaveCancelled;\n var delayLeave = data.delayLeave;\n var duration = data.duration;\n\n var expectsCSS = css !== false && !isIE9;\n var userWantsControl = getHookArgumentsLength(leave);\n\n var explicitLeaveDuration = toNumber(\n isObject(duration)\n ? duration.leave\n : duration\n );\n\n if (process.env.NODE_ENV !== 'production' && isDef(explicitLeaveDuration)) {\n checkDuration(explicitLeaveDuration, 'leave', vnode);\n }\n\n var cb = el._leaveCb = once(function () {\n if (el.parentNode && el.parentNode._pending) {\n el.parentNode._pending[vnode.key] = null;\n }\n if (expectsCSS) {\n removeTransitionClass(el, leaveToClass);\n removeTransitionClass(el, leaveActiveClass);\n }\n if (cb.cancelled) {\n if (expectsCSS) {\n removeTransitionClass(el, leaveClass);\n }\n leaveCancelled && leaveCancelled(el);\n } else {\n rm();\n afterLeave && afterLeave(el);\n }\n el._leaveCb = null;\n });\n\n if (delayLeave) {\n delayLeave(performLeave);\n } else {\n performLeave();\n }\n\n function performLeave () {\n // the delayed leave may have already been cancelled\n if (cb.cancelled) {\n return\n }\n // record leaving element\n if (!vnode.data.show && el.parentNode) {\n (el.parentNode._pending || (el.parentNode._pending = {}))[(vnode.key)] = vnode;\n }\n beforeLeave && beforeLeave(el);\n if (expectsCSS) {\n addTransitionClass(el, leaveClass);\n addTransitionClass(el, leaveActiveClass);\n nextFrame(function () {\n removeTransitionClass(el, leaveClass);\n if (!cb.cancelled) {\n addTransitionClass(el, leaveToClass);\n if (!userWantsControl) {\n if (isValidDuration(explicitLeaveDuration)) {\n setTimeout(cb, explicitLeaveDuration);\n } else {\n whenTransitionEnds(el, type, cb);\n }\n }\n }\n });\n }\n leave && leave(el, cb);\n if (!expectsCSS && !userWantsControl) {\n cb();\n }\n }\n}\n\n// only used in dev mode\nfunction checkDuration (val, name, vnode) {\n if (typeof val !== 'number') {\n warn(\n \"<transition> explicit \" + name + \" duration is not a valid number - \" +\n \"got \" + (JSON.stringify(val)) + \".\",\n vnode.context\n );\n } else if (isNaN(val)) {\n warn(\n \"<transition> explicit \" + name + \" duration is NaN - \" +\n 'the duration expression might be incorrect.',\n vnode.context\n );\n }\n}\n\nfunction isValidDuration (val) {\n return typeof val === 'number' && !isNaN(val)\n}\n\n/**\n * Normalize a transition hook's argument length. The hook may be:\n * - a merged hook (invoker) with the original in .fns\n * - a wrapped component method (check ._length)\n * - a plain function (.length)\n */\nfunction getHookArgumentsLength (fn) {\n if (isUndef(fn)) {\n return false\n }\n var invokerFns = fn.fns;\n if (isDef(invokerFns)) {\n // invoker\n return getHookArgumentsLength(\n Array.isArray(invokerFns)\n ? invokerFns[0]\n : invokerFns\n )\n } else {\n return (fn._length || fn.length) > 1\n }\n}\n\nfunction _enter (_, vnode) {\n if (vnode.data.show !== true) {\n enter(vnode);\n }\n}\n\nvar transition = inBrowser ? {\n create: _enter,\n activate: _enter,\n remove: function remove$$1 (vnode, rm) {\n /* istanbul ignore else */\n if (vnode.data.show !== true) {\n leave(vnode, rm);\n } else {\n rm();\n }\n }\n} : {};\n\nvar platformModules = [\n attrs,\n klass,\n events,\n domProps,\n style,\n transition\n];\n\n/* */\n\n// the directive module should be applied last, after all\n// built-in modules have been applied.\nvar modules = platformModules.concat(baseModules);\n\nvar patch = createPatchFunction({ nodeOps: nodeOps, modules: modules });\n\n/**\n * Not type checking this file because flow doesn't like attaching\n * properties to Elements.\n */\n\n/* istanbul ignore if */\nif (isIE9) {\n // http://www.matts411.com/post/internet-explorer-9-oninput/\n document.addEventListener('selectionchange', function () {\n var el = document.activeElement;\n if (el && el.vmodel) {\n trigger(el, 'input');\n }\n });\n}\n\nvar directive = {\n inserted: function inserted (el, binding, vnode, oldVnode) {\n if (vnode.tag === 'select') {\n // #6903\n if (oldVnode.elm && !oldVnode.elm._vOptions) {\n mergeVNodeHook(vnode, 'postpatch', function () {\n directive.componentUpdated(el, binding, vnode);\n });\n } else {\n setSelected(el, binding, vnode.context);\n }\n el._vOptions = [].map.call(el.options, getValue);\n } else if (vnode.tag === 'textarea' || isTextInputType(el.type)) {\n el._vModifiers = binding.modifiers;\n if (!binding.modifiers.lazy) {\n el.addEventListener('compositionstart', onCompositionStart);\n el.addEventListener('compositionend', onCompositionEnd);\n // Safari < 10.2 & UIWebView doesn't fire compositionend when\n // switching focus before confirming composition choice\n // this also fixes the issue where some browsers e.g. iOS Chrome\n // fires \"change\" instead of \"input\" on autocomplete.\n el.addEventListener('change', onCompositionEnd);\n /* istanbul ignore if */\n if (isIE9) {\n el.vmodel = true;\n }\n }\n }\n },\n\n componentUpdated: function componentUpdated (el, binding, vnode) {\n if (vnode.tag === 'select') {\n setSelected(el, binding, vnode.context);\n // in case the options rendered by v-for have changed,\n // it's possible that the value is out-of-sync with the rendered options.\n // detect such cases and filter out values that no longer has a matching\n // option in the DOM.\n var prevOptions = el._vOptions;\n var curOptions = el._vOptions = [].map.call(el.options, getValue);\n if (curOptions.some(function (o, i) { return !looseEqual(o, prevOptions[i]); })) {\n // trigger change event if\n // no matching option found for at least one value\n var needReset = el.multiple\n ? binding.value.some(function (v) { return hasNoMatchingOption(v, curOptions); })\n : binding.value !== binding.oldValue && hasNoMatchingOption(binding.value, curOptions);\n if (needReset) {\n trigger(el, 'change');\n }\n }\n }\n }\n};\n\nfunction setSelected (el, binding, vm) {\n actuallySetSelected(el, binding, vm);\n /* istanbul ignore if */\n if (isIE || isEdge) {\n setTimeout(function () {\n actuallySetSelected(el, binding, vm);\n }, 0);\n }\n}\n\nfunction actuallySetSelected (el, binding, vm) {\n var value = binding.value;\n var isMultiple = el.multiple;\n if (isMultiple && !Array.isArray(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"<select multiple v-model=\\\"\" + (binding.expression) + \"\\\"> \" +\n \"expects an Array value for its binding, but got \" + (Object.prototype.toString.call(value).slice(8, -1)),\n vm\n );\n return\n }\n var selected, option;\n for (var i = 0, l = el.options.length; i < l; i++) {\n option = el.options[i];\n if (isMultiple) {\n selected = looseIndexOf(value, getValue(option)) > -1;\n if (option.selected !== selected) {\n option.selected = selected;\n }\n } else {\n if (looseEqual(getValue(option), value)) {\n if (el.selectedIndex !== i) {\n el.selectedIndex = i;\n }\n return\n }\n }\n }\n if (!isMultiple) {\n el.selectedIndex = -1;\n }\n}\n\nfunction hasNoMatchingOption (value, options) {\n return options.every(function (o) { return !looseEqual(o, value); })\n}\n\nfunction getValue (option) {\n return '_value' in option\n ? option._value\n : option.value\n}\n\nfunction onCompositionStart (e) {\n e.target.composing = true;\n}\n\nfunction onCompositionEnd (e) {\n // prevent triggering an input event for no reason\n if (!e.target.composing) { return }\n e.target.composing = false;\n trigger(e.target, 'input');\n}\n\nfunction trigger (el, type) {\n var e = document.createEvent('HTMLEvents');\n e.initEvent(type, true, true);\n el.dispatchEvent(e);\n}\n\n/* */\n\n// recursively search for possible transition defined inside the component root\nfunction locateNode (vnode) {\n return vnode.componentInstance && (!vnode.data || !vnode.data.transition)\n ? locateNode(vnode.componentInstance._vnode)\n : vnode\n}\n\nvar show = {\n bind: function bind (el, ref, vnode) {\n var value = ref.value;\n\n vnode = locateNode(vnode);\n var transition$$1 = vnode.data && vnode.data.transition;\n var originalDisplay = el.__vOriginalDisplay =\n el.style.display === 'none' ? '' : el.style.display;\n if (value && transition$$1) {\n vnode.data.show = true;\n enter(vnode, function () {\n el.style.display = originalDisplay;\n });\n } else {\n el.style.display = value ? originalDisplay : 'none';\n }\n },\n\n update: function update (el, ref, vnode) {\n var value = ref.value;\n var oldValue = ref.oldValue;\n\n /* istanbul ignore if */\n if (!value === !oldValue) { return }\n vnode = locateNode(vnode);\n var transition$$1 = vnode.data && vnode.data.transition;\n if (transition$$1) {\n vnode.data.show = true;\n if (value) {\n enter(vnode, function () {\n el.style.display = el.__vOriginalDisplay;\n });\n } else {\n leave(vnode, function () {\n el.style.display = 'none';\n });\n }\n } else {\n el.style.display = value ? el.__vOriginalDisplay : 'none';\n }\n },\n\n unbind: function unbind (\n el,\n binding,\n vnode,\n oldVnode,\n isDestroy\n ) {\n if (!isDestroy) {\n el.style.display = el.__vOriginalDisplay;\n }\n }\n};\n\nvar platformDirectives = {\n model: directive,\n show: show\n};\n\n/* */\n\nvar transitionProps = {\n name: String,\n appear: Boolean,\n css: Boolean,\n mode: String,\n type: String,\n enterClass: String,\n leaveClass: String,\n enterToClass: String,\n leaveToClass: String,\n enterActiveClass: String,\n leaveActiveClass: String,\n appearClass: String,\n appearActiveClass: String,\n appearToClass: String,\n duration: [Number, String, Object]\n};\n\n// in case the child is also an abstract component, e.g. <keep-alive>\n// we want to recursively retrieve the real component to be rendered\nfunction getRealChild (vnode) {\n var compOptions = vnode && vnode.componentOptions;\n if (compOptions && compOptions.Ctor.options.abstract) {\n return getRealChild(getFirstComponentChild(compOptions.children))\n } else {\n return vnode\n }\n}\n\nfunction extractTransitionData (comp) {\n var data = {};\n var options = comp.$options;\n // props\n for (var key in options.propsData) {\n data[key] = comp[key];\n }\n // events.\n // extract listeners and pass them directly to the transition methods\n var listeners = options._parentListeners;\n for (var key$1 in listeners) {\n data[camelize(key$1)] = listeners[key$1];\n }\n return data\n}\n\nfunction placeholder (h, rawChild) {\n if (/\\d-keep-alive$/.test(rawChild.tag)) {\n return h('keep-alive', {\n props: rawChild.componentOptions.propsData\n })\n }\n}\n\nfunction hasParentTransition (vnode) {\n while ((vnode = vnode.parent)) {\n if (vnode.data.transition) {\n return true\n }\n }\n}\n\nfunction isSameChild (child, oldChild) {\n return oldChild.key === child.key && oldChild.tag === child.tag\n}\n\nvar isNotTextNode = function (c) { return c.tag || isAsyncPlaceholder(c); };\n\nvar isVShowDirective = function (d) { return d.name === 'show'; };\n\nvar Transition = {\n name: 'transition',\n props: transitionProps,\n abstract: true,\n\n render: function render (h) {\n var this$1 = this;\n\n var children = this.$slots.default;\n if (!children) {\n return\n }\n\n // filter out text nodes (possible whitespaces)\n children = children.filter(isNotTextNode);\n /* istanbul ignore if */\n if (!children.length) {\n return\n }\n\n // warn multiple elements\n if (process.env.NODE_ENV !== 'production' && children.length > 1) {\n warn(\n '<transition> can only be used on a single element. Use ' +\n '<transition-group> for lists.',\n this.$parent\n );\n }\n\n var mode = this.mode;\n\n // warn invalid mode\n if (process.env.NODE_ENV !== 'production' &&\n mode && mode !== 'in-out' && mode !== 'out-in'\n ) {\n warn(\n 'invalid <transition> mode: ' + mode,\n this.$parent\n );\n }\n\n var rawChild = children[0];\n\n // if this is a component root node and the component's\n // parent container node also has transition, skip.\n if (hasParentTransition(this.$vnode)) {\n return rawChild\n }\n\n // apply transition data to child\n // use getRealChild() to ignore abstract components e.g. keep-alive\n var child = getRealChild(rawChild);\n /* istanbul ignore if */\n if (!child) {\n return rawChild\n }\n\n if (this._leaving) {\n return placeholder(h, rawChild)\n }\n\n // ensure a key that is unique to the vnode type and to this transition\n // component instance. This key will be used to remove pending leaving nodes\n // during entering.\n var id = \"__transition-\" + (this._uid) + \"-\";\n child.key = child.key == null\n ? child.isComment\n ? id + 'comment'\n : id + child.tag\n : isPrimitive(child.key)\n ? (String(child.key).indexOf(id) === 0 ? child.key : id + child.key)\n : child.key;\n\n var data = (child.data || (child.data = {})).transition = extractTransitionData(this);\n var oldRawChild = this._vnode;\n var oldChild = getRealChild(oldRawChild);\n\n // mark v-show\n // so that the transition module can hand over the control to the directive\n if (child.data.directives && child.data.directives.some(isVShowDirective)) {\n child.data.show = true;\n }\n\n if (\n oldChild &&\n oldChild.data &&\n !isSameChild(child, oldChild) &&\n !isAsyncPlaceholder(oldChild) &&\n // #6687 component root is a comment node\n !(oldChild.componentInstance && oldChild.componentInstance._vnode.isComment)\n ) {\n // replace old child transition data with fresh one\n // important for dynamic transitions!\n var oldData = oldChild.data.transition = extend({}, data);\n // handle transition mode\n if (mode === 'out-in') {\n // return placeholder node and queue update when leave finishes\n this._leaving = true;\n mergeVNodeHook(oldData, 'afterLeave', function () {\n this$1._leaving = false;\n this$1.$forceUpdate();\n });\n return placeholder(h, rawChild)\n } else if (mode === 'in-out') {\n if (isAsyncPlaceholder(child)) {\n return oldRawChild\n }\n var delayedLeave;\n var performLeave = function () { delayedLeave(); };\n mergeVNodeHook(data, 'afterEnter', performLeave);\n mergeVNodeHook(data, 'enterCancelled', performLeave);\n mergeVNodeHook(oldData, 'delayLeave', function (leave) { delayedLeave = leave; });\n }\n }\n\n return rawChild\n }\n};\n\n/* */\n\nvar props = extend({\n tag: String,\n moveClass: String\n}, transitionProps);\n\ndelete props.mode;\n\nvar TransitionGroup = {\n props: props,\n\n beforeMount: function beforeMount () {\n var this$1 = this;\n\n var update = this._update;\n this._update = function (vnode, hydrating) {\n var restoreActiveInstance = setActiveInstance(this$1);\n // force removing pass\n this$1.__patch__(\n this$1._vnode,\n this$1.kept,\n false, // hydrating\n true // removeOnly (!important, avoids unnecessary moves)\n );\n this$1._vnode = this$1.kept;\n restoreActiveInstance();\n update.call(this$1, vnode, hydrating);\n };\n },\n\n render: function render (h) {\n var tag = this.tag || this.$vnode.data.tag || 'span';\n var map = Object.create(null);\n var prevChildren = this.prevChildren = this.children;\n var rawChildren = this.$slots.default || [];\n var children = this.children = [];\n var transitionData = extractTransitionData(this);\n\n for (var i = 0; i < rawChildren.length; i++) {\n var c = rawChildren[i];\n if (c.tag) {\n if (c.key != null && String(c.key).indexOf('__vlist') !== 0) {\n children.push(c);\n map[c.key] = c\n ;(c.data || (c.data = {})).transition = transitionData;\n } else if (process.env.NODE_ENV !== 'production') {\n var opts = c.componentOptions;\n var name = opts ? (opts.Ctor.options.name || opts.tag || '') : c.tag;\n warn((\"<transition-group> children must be keyed: <\" + name + \">\"));\n }\n }\n }\n\n if (prevChildren) {\n var kept = [];\n var removed = [];\n for (var i$1 = 0; i$1 < prevChildren.length; i$1++) {\n var c$1 = prevChildren[i$1];\n c$1.data.transition = transitionData;\n c$1.data.pos = c$1.elm.getBoundingClientRect();\n if (map[c$1.key]) {\n kept.push(c$1);\n } else {\n removed.push(c$1);\n }\n }\n this.kept = h(tag, null, kept);\n this.removed = removed;\n }\n\n return h(tag, null, children)\n },\n\n updated: function updated () {\n var children = this.prevChildren;\n var moveClass = this.moveClass || ((this.name || 'v') + '-move');\n if (!children.length || !this.hasMove(children[0].elm, moveClass)) {\n return\n }\n\n // we divide the work into three loops to avoid mixing DOM reads and writes\n // in each iteration - which helps prevent layout thrashing.\n children.forEach(callPendingCbs);\n children.forEach(recordPosition);\n children.forEach(applyTranslation);\n\n // force reflow to put everything in position\n // assign to this to avoid being removed in tree-shaking\n // $flow-disable-line\n this._reflow = document.body.offsetHeight;\n\n children.forEach(function (c) {\n if (c.data.moved) {\n var el = c.elm;\n var s = el.style;\n addTransitionClass(el, moveClass);\n s.transform = s.WebkitTransform = s.transitionDuration = '';\n el.addEventListener(transitionEndEvent, el._moveCb = function cb (e) {\n if (e && e.target !== el) {\n return\n }\n if (!e || /transform$/.test(e.propertyName)) {\n el.removeEventListener(transitionEndEvent, cb);\n el._moveCb = null;\n removeTransitionClass(el, moveClass);\n }\n });\n }\n });\n },\n\n methods: {\n hasMove: function hasMove (el, moveClass) {\n /* istanbul ignore if */\n if (!hasTransition) {\n return false\n }\n /* istanbul ignore if */\n if (this._hasMove) {\n return this._hasMove\n }\n // Detect whether an element with the move class applied has\n // CSS transitions. Since the element may be inside an entering\n // transition at this very moment, we make a clone of it and remove\n // all other transition classes applied to ensure only the move class\n // is applied.\n var clone = el.cloneNode();\n if (el._transitionClasses) {\n el._transitionClasses.forEach(function (cls) { removeClass(clone, cls); });\n }\n addClass(clone, moveClass);\n clone.style.display = 'none';\n this.$el.appendChild(clone);\n var info = getTransitionInfo(clone);\n this.$el.removeChild(clone);\n return (this._hasMove = info.hasTransform)\n }\n }\n};\n\nfunction callPendingCbs (c) {\n /* istanbul ignore if */\n if (c.elm._moveCb) {\n c.elm._moveCb();\n }\n /* istanbul ignore if */\n if (c.elm._enterCb) {\n c.elm._enterCb();\n }\n}\n\nfunction recordPosition (c) {\n c.data.newPos = c.elm.getBoundingClientRect();\n}\n\nfunction applyTranslation (c) {\n var oldPos = c.data.pos;\n var newPos = c.data.newPos;\n var dx = oldPos.left - newPos.left;\n var dy = oldPos.top - newPos.top;\n if (dx || dy) {\n c.data.moved = true;\n var s = c.elm.style;\n s.transform = s.WebkitTransform = \"translate(\" + dx + \"px,\" + dy + \"px)\";\n s.transitionDuration = '0s';\n }\n}\n\nvar platformComponents = {\n Transition: Transition,\n TransitionGroup: TransitionGroup\n};\n\n/* */\n\n// install platform specific utils\nVue.config.mustUseProp = mustUseProp;\nVue.config.isReservedTag = isReservedTag;\nVue.config.isReservedAttr = isReservedAttr;\nVue.config.getTagNamespace = getTagNamespace;\nVue.config.isUnknownElement = isUnknownElement;\n\n// install platform runtime directives & components\nextend(Vue.options.directives, platformDirectives);\nextend(Vue.options.components, platformComponents);\n\n// install platform patch function\nVue.prototype.__patch__ = inBrowser ? patch : noop;\n\n// public mount method\nVue.prototype.$mount = function (\n el,\n hydrating\n) {\n el = el && inBrowser ? query(el) : undefined;\n return mountComponent(this, el, hydrating)\n};\n\n// devtools global hook\n/* istanbul ignore next */\nif (inBrowser) {\n setTimeout(function () {\n if (config.devtools) {\n if (devtools) {\n devtools.emit('init', Vue);\n } else if (\n process.env.NODE_ENV !== 'production' &&\n process.env.NODE_ENV !== 'test'\n ) {\n console[console.info ? 'info' : 'log'](\n 'Download the Vue Devtools extension for a better development experience:\\n' +\n 'https://github.com/vuejs/vue-devtools'\n );\n }\n }\n if (process.env.NODE_ENV !== 'production' &&\n process.env.NODE_ENV !== 'test' &&\n config.productionTip !== false &&\n typeof console !== 'undefined'\n ) {\n console[console.info ? 'info' : 'log'](\n \"You are running Vue in development mode.\\n\" +\n \"Make sure to turn on production mode when deploying for production.\\n\" +\n \"See more tips at https://vuejs.org/guide/deployment.html\"\n );\n }\n }, 0);\n}\n\n/* */\n\nexport default Vue;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar axios_1 = require(\"axios\");\nvar client = axios_1.default.create({\n headers: {\n requesttoken: OC.requestToken\n }\n});\nexports.default = client;\n","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%40/gi, '@').\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n // Only Node.JS has a process variable that is of [[Class]] process\n if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n } else if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n }\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar buildURL = require('./../helpers/buildURL');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password || '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // Listen for ready state\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n };\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n var cookies = require('./../helpers/cookies');\n\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(config.url)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (config.withCredentials) {\n request.withCredentials = true;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (requestData === undefined) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n utils.forEach(['url', 'method', 'params', 'data'], function valueFromConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n }\n });\n\n utils.forEach(['headers', 'auth', 'proxy'], function mergeDeepProperties(prop) {\n if (utils.isObject(config2[prop])) {\n config[prop] = utils.deepMerge(config1[prop], config2[prop]);\n } else if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (utils.isObject(config1[prop])) {\n config[prop] = utils.deepMerge(config1[prop]);\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n utils.forEach([\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'maxContentLength',\n 'validateStatus', 'maxRedirects', 'httpAgent', 'httpsAgent', 'cancelToken',\n 'socketPath'\n ], function defaultToConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n return config;\n};\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e(require(\"vue\")):\"function\"==typeof define&&define.amd?define(\"ncvuecomponents\",[\"vue\"],e):\"object\"==typeof exports?exports.ncvuecomponents=e(require(\"vue\")):(t.NextcloudVue=t.NextcloudVue||{},t.NextcloudVue.ncvuecomponents=e(t.Vue))}(window,function(e){return function(t){var e={};function n(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return t[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)n.d(i,o,function(e){return t[e]}.bind(null,o));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"/dist/\",n(n.s=182)}([function(t,e,n){\"use strict\";function i(t,e,n,i,o,a,r,s){var c,l=\"function\"==typeof t?t.options:t;if(e&&(l.render=e,l.staticRenderFns=n,l._compiled=!0),i&&(l.functional=!0),a&&(l._scopeId=\"data-v-\"+a),r?(c=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),o&&o.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(r)},l._ssrRegister=c):o&&(c=s?function(){o.call(this,this.$root.$options.shadowRoot)}:o),c)if(l.functional){l._injectStyles=c;var u=l.render;l.render=function(t,e){return c.call(e),u(t,e)}}else{var d=l.beforeCreate;l.beforeCreate=d?[].concat(d,c):[c]}return{exports:t,options:l}}n.d(e,\"a\",function(){return i})},function(t,e,n){\"use strict\";t.exports=function(t){var e=[];return e.toString=function(){return this.map(function(e){var n=function(t,e){var n=t[1]||\"\",i=t[3];if(!i)return n;if(e&&\"function\"==typeof btoa){var o=(r=i,s=btoa(unescape(encodeURIComponent(JSON.stringify(r)))),c=\"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(s),\"/*# \".concat(c,\" */\")),a=i.sources.map(function(t){return\"/*# sourceURL=\".concat(i.sourceRoot).concat(t,\" */\")});return[n].concat(a).concat([o]).join(\"\\n\")}var r,s,c;return[n].join(\"\\n\")}(e,t);return e[2]?\"@media \".concat(e[2],\"{\").concat(n,\"}\"):n}).join(\"\")},e.i=function(t,n){\"string\"==typeof t&&(t=[[null,t,\"\"]]);for(var i={},o=0;o<this.length;o++){var a=this[o][0];null!=a&&(i[a]=!0)}for(var r=0;r<t.length;r++){var s=t[r];null!=s[0]&&i[s[0]]||(n&&!s[2]?s[2]=n:n&&(s[2]=\"(\".concat(s[2],\") and (\").concat(n,\")\")),e.push(s))}},e}},function(t,e,n){\"use strict\";function i(t,e){for(var n=[],i={},o=0;o<e.length;o++){var a=e[o],r=a[0],s={id:t+\":\"+o,css:a[1],media:a[2],sourceMap:a[3]};i[r]?i[r].parts.push(s):n.push(i[r]={id:r,parts:[s]})}return n}n.r(e),n.d(e,\"default\",function(){return h});var o=\"undefined\"!=typeof document;if(\"undefined\"!=typeof DEBUG&&DEBUG&&!o)throw new Error(\"vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\");var a={},r=o&&(document.head||document.getElementsByTagName(\"head\")[0]),s=null,c=0,l=!1,u=function(){},d=null,p=\"data-vue-ssr-id\",f=\"undefined\"!=typeof navigator&&/msie [6-9]\\b/.test(navigator.userAgent.toLowerCase());function h(t,e,n,o){l=n,d=o||{};var r=i(t,e);return A(r),function(e){for(var n=[],o=0;o<r.length;o++){var s=r[o];(c=a[s.id]).refs--,n.push(c)}e?A(r=i(t,e)):r=[];for(o=0;o<n.length;o++){var c;if(0===(c=n[o]).refs){for(var l=0;l<c.parts.length;l++)c.parts[l]();delete a[c.id]}}}}function A(t){for(var e=0;e<t.length;e++){var n=t[e],i=a[n.id];if(i){i.refs++;for(var o=0;o<i.parts.length;o++)i.parts[o](n.parts[o]);for(;o<n.parts.length;o++)i.parts.push(m(n.parts[o]));i.parts.length>n.parts.length&&(i.parts.length=n.parts.length)}else{var r=[];for(o=0;o<n.parts.length;o++)r.push(m(n.parts[o]));a[n.id]={id:n.id,refs:1,parts:r}}}}function v(){var t=document.createElement(\"style\");return t.type=\"text/css\",r.appendChild(t),t}function m(t){var e,n,i=document.querySelector(\"style[\"+p+'~=\"'+t.id+'\"]');if(i){if(l)return u;i.parentNode.removeChild(i)}if(f){var o=c++;i=s||(s=v()),e=y.bind(null,i,o,!1),n=y.bind(null,i,o,!0)}else i=v(),e=function(t,e){var n=e.css,i=e.media,o=e.sourceMap;i&&t.setAttribute(\"media\",i);d.ssrId&&t.setAttribute(p,e.id);o&&(n+=\"\\n/*# sourceURL=\"+o.sources[0]+\" */\",n+=\"\\n/*# sourceMappingURL=data:application/json;base64,\"+btoa(unescape(encodeURIComponent(JSON.stringify(o))))+\" */\");if(t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}.bind(null,i),n=function(){i.parentNode.removeChild(i)};return e(t),function(i){if(i){if(i.css===t.css&&i.media===t.media&&i.sourceMap===t.sourceMap)return;e(t=i)}else n()}}var g,b=(g=[],function(t,e){return g[t]=e,g.filter(Boolean).join(\"\\n\")});function y(t,e,n,i){var o=n?\"\":i.css;if(t.styleSheet)t.styleSheet.cssText=b(e,o);else{var a=document.createTextNode(o),r=t.childNodes;r[e]&&t.removeChild(r[e]),r.length?t.insertBefore(a,r[e]):t.appendChild(a)}}},function(t,n){t.exports=e},function(t,e,n){\"use strict\";var i=n(68),o=n(101),a=Object.prototype.toString;function r(t){return\"[object Array]\"===a.call(t)}function s(t){return null!==t&&\"object\"==typeof t}function c(t){return\"[object Function]\"===a.call(t)}function l(t,e){if(null!=t)if(\"object\"!=typeof t&&(t=[t]),r(t))for(var n=0,i=t.length;n<i;n++)e.call(null,t[n],n,t);else for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&e.call(null,t[o],o,t)}t.exports={isArray:r,isArrayBuffer:function(t){return\"[object ArrayBuffer]\"===a.call(t)},isBuffer:o,isFormData:function(t){return\"undefined\"!=typeof FormData&&t instanceof FormData},isArrayBufferView:function(t){return\"undefined\"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(t):t&&t.buffer&&t.buffer instanceof ArrayBuffer},isString:function(t){return\"string\"==typeof t},isNumber:function(t){return\"number\"==typeof t},isObject:s,isUndefined:function(t){return void 0===t},isDate:function(t){return\"[object Date]\"===a.call(t)},isFile:function(t){return\"[object File]\"===a.call(t)},isBlob:function(t){return\"[object Blob]\"===a.call(t)},isFunction:c,isStream:function(t){return s(t)&&c(t.pipe)},isURLSearchParams:function(t){return\"undefined\"!=typeof URLSearchParams&&t instanceof URLSearchParams},isStandardBrowserEnv:function(){return(\"undefined\"==typeof navigator||\"ReactNative\"!==navigator.product&&\"NativeScript\"!==navigator.product&&\"NS\"!==navigator.product)&&\"undefined\"!=typeof window&&\"undefined\"!=typeof document},forEach:l,merge:function t(){var e={};function n(n,i){\"object\"==typeof e[i]&&\"object\"==typeof n?e[i]=t(e[i],n):e[i]=n}for(var i=0,o=arguments.length;i<o;i++)l(arguments[i],n);return e},deepMerge:function t(){var e={};function n(n,i){\"object\"==typeof e[i]&&\"object\"==typeof n?e[i]=t(e[i],n):e[i]=\"object\"==typeof n?t({},n):n}for(var i=0,o=arguments.length;i<o;i++)l(arguments[i],n);return e},extend:function(t,e,n){return l(e,function(e,o){t[o]=n&&\"function\"==typeof e?i(e,n):e}),t},trim:function(t){return t.replace(/^\\s*/,\"\").replace(/\\s*$/,\"\")}}},function(t,e,n){\"use strict\";(function(t){n.d(e,\"a\",function(){return In});var i=n(16),o=n(21);function a(t){return(a=\"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})(t)}function r(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function c(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{},i=Object.keys(n);\"function\"==typeof Object.getOwnPropertySymbols&&(i=i.concat(Object.getOwnPropertySymbols(n).filter(function(t){return Object.getOwnPropertyDescriptor(n,t).enumerable}))),i.forEach(function(e){s(t,e,n[e])})}return t}var l=function(){};function u(t){return\"string\"==typeof t&&(t=t.split(\" \")),t}function d(t,e){var n,i=u(e);n=t.className instanceof l?u(t.className.baseVal):u(t.className),i.forEach(function(t){-1===n.indexOf(t)&&n.push(t)}),t instanceof SVGElement?t.setAttribute(\"class\",n.join(\" \")):t.className=n.join(\" \")}function p(t,e){var n,i=u(e);n=t.className instanceof l?u(t.className.baseVal):u(t.className),i.forEach(function(t){var e=n.indexOf(t);-1!==e&&n.splice(e,1)}),t instanceof SVGElement?t.setAttribute(\"class\",n.join(\" \")):t.className=n.join(\" \")}\"undefined\"!=typeof window&&(l=window.SVGAnimatedString);var f=!1;if(\"undefined\"!=typeof window){f=!1;try{var h=Object.defineProperty({},\"passive\",{get:function(){f=!0}});window.addEventListener(\"test\",null,h)}catch(t){}}var A={container:!1,delay:0,html:!1,placement:\"top\",title:\"\",template:'<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>',trigger:\"hover focus\",offset:0},v=[],m=function(){function t(e,n){var i=this;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),s(this,\"_events\",[]),s(this,\"_setTooltipNodeEvent\",function(t,e,n,o){var a=t.relatedreference||t.toElement||t.relatedTarget;return!!i._tooltipNode.contains(a)&&(i._tooltipNode.addEventListener(t.type,function n(a){var r=a.relatedreference||a.toElement||a.relatedTarget;i._tooltipNode.removeEventListener(t.type,n),e.contains(r)||i._scheduleHide(e,o.delay,o,a)}),!0)}),n=c({},A,n),e.jquery&&(e=e[0]),this.show=this.show.bind(this),this.hide=this.hide.bind(this),this.reference=e,this.options=n,this._isOpen=!1,this._init()}var e,n,o;return e=t,(n=[{key:\"show\",value:function(){this._show(this.reference,this.options)}},{key:\"hide\",value:function(){this._hide()}},{key:\"dispose\",value:function(){this._dispose()}},{key:\"toggle\",value:function(){return this._isOpen?this.hide():this.show()}},{key:\"setClasses\",value:function(t){this._classes=t}},{key:\"setContent\",value:function(t){this.options.title=t,this._tooltipNode&&this._setContent(t,this.options)}},{key:\"setOptions\",value:function(t){var e=!1,n=t&&t.classes||C.options.defaultClass;this._classes!==n&&(this.setClasses(n),e=!0),t=x(t);var i=!1,o=!1;for(var a in this.options.offset===t.offset&&this.options.placement===t.placement||(i=!0),(this.options.template!==t.template||this.options.trigger!==t.trigger||this.options.container!==t.container||e)&&(o=!0),t)this.options[a]=t[a];if(this._tooltipNode)if(o){var r=this._isOpen;this.dispose(),this._init(),r&&this.show()}else i&&this.popperInstance.update()}},{key:\"_init\",value:function(){var t=\"string\"==typeof this.options.trigger?this.options.trigger.split(\" \"):[];this._isDisposed=!1,this._enableDocumentTouch=-1===t.indexOf(\"manual\"),t=t.filter(function(t){return-1!==[\"click\",\"hover\",\"focus\"].indexOf(t)}),this._setEventListeners(this.reference,t,this.options),this.$_originalTitle=this.reference.getAttribute(\"title\"),this.reference.removeAttribute(\"title\"),this.reference.setAttribute(\"data-original-title\",this.$_originalTitle)}},{key:\"_create\",value:function(t,e){var n=window.document.createElement(\"div\");n.innerHTML=e.trim();var i=n.childNodes[0];return i.id=\"tooltip_\".concat(Math.random().toString(36).substr(2,10)),i.setAttribute(\"aria-hidden\",\"true\"),this.options.autoHide&&-1!==this.options.trigger.indexOf(\"hover\")&&(i.addEventListener(\"mouseenter\",this.hide),i.addEventListener(\"click\",this.hide)),i}},{key:\"_setContent\",value:function(t,e){var n=this;this.asyncContent=!1,this._applyContent(t,e).then(function(){n.popperInstance.update()})}},{key:\"_applyContent\",value:function(t,e){var n=this;return new Promise(function(i,o){var a=e.html,r=n._tooltipNode;if(r){var s=r.querySelector(n.options.innerSelector);if(1===t.nodeType){if(a){for(;s.firstChild;)s.removeChild(s.firstChild);s.appendChild(t)}}else{if(\"function\"==typeof t){var c=t();return void(c&&\"function\"==typeof c.then?(n.asyncContent=!0,e.loadingClass&&d(r,e.loadingClass),e.loadingContent&&n._applyContent(e.loadingContent,e),c.then(function(t){return e.loadingClass&&p(r,e.loadingClass),n._applyContent(t,e)}).then(i).catch(o)):n._applyContent(c,e).then(i).catch(o))}a?s.innerHTML=t:s.innerText=t}i()}})}},{key:\"_show\",value:function(t,e){if(e&&\"string\"==typeof e.container&&!document.querySelector(e.container))return;clearTimeout(this._disposeTimer),delete(e=Object.assign({},e)).offset;var n=!0;this._tooltipNode&&(d(this._tooltipNode,this._classes),n=!1);var i=this._ensureShown(t,e);return n&&this._tooltipNode&&d(this._tooltipNode,this._classes),d(t,[\"v-tooltip-open\"]),i}},{key:\"_ensureShown\",value:function(t,e){var n=this;if(this._isOpen)return this;if(this._isOpen=!0,v.push(this),this._tooltipNode)return this._tooltipNode.style.display=\"\",this._tooltipNode.setAttribute(\"aria-hidden\",\"false\"),this.popperInstance.enableEventListeners(),this.popperInstance.update(),this.asyncContent&&this._setContent(e.title,e),this;var o=t.getAttribute(\"title\")||e.title;if(!o)return this;var a=this._create(t,e.template);this._tooltipNode=a,t.setAttribute(\"aria-describedby\",a.id);var r=this._findContainer(e.container,t);this._append(a,r);var s=c({},e.popperOptions,{placement:e.placement});return s.modifiers=c({},s.modifiers,{arrow:{element:this.options.arrowSelector}}),e.boundariesElement&&(s.modifiers.preventOverflow={boundariesElement:e.boundariesElement}),this.popperInstance=new i.a(t,a,s),this._setContent(o,e),requestAnimationFrame(function(){!n._isDisposed&&n.popperInstance?(n.popperInstance.update(),requestAnimationFrame(function(){n._isDisposed?n.dispose():n._isOpen&&a.setAttribute(\"aria-hidden\",\"false\")})):n.dispose()}),this}},{key:\"_noLongerOpen\",value:function(){var t=v.indexOf(this);-1!==t&&v.splice(t,1)}},{key:\"_hide\",value:function(){var t=this;if(!this._isOpen)return this;this._isOpen=!1,this._noLongerOpen(),this._tooltipNode.style.display=\"none\",this._tooltipNode.setAttribute(\"aria-hidden\",\"true\"),this.popperInstance.disableEventListeners(),clearTimeout(this._disposeTimer);var e=C.options.disposeTimeout;return null!==e&&(this._disposeTimer=setTimeout(function(){t._tooltipNode&&(t._tooltipNode.removeEventListener(\"mouseenter\",t.hide),t._tooltipNode.removeEventListener(\"click\",t.hide),t._removeTooltipNode())},e)),p(this.reference,[\"v-tooltip-open\"]),this}},{key:\"_removeTooltipNode\",value:function(){if(this._tooltipNode){var t=this._tooltipNode.parentNode;t&&(t.removeChild(this._tooltipNode),this.reference.removeAttribute(\"aria-describedby\")),this._tooltipNode=null}}},{key:\"_dispose\",value:function(){var t=this;return this._isDisposed=!0,this.reference.removeAttribute(\"data-original-title\"),this.$_originalTitle&&this.reference.setAttribute(\"title\",this.$_originalTitle),this._events.forEach(function(e){var n=e.func,i=e.event;t.reference.removeEventListener(i,n)}),this._events=[],this._tooltipNode?(this._hide(),this._tooltipNode.removeEventListener(\"mouseenter\",this.hide),this._tooltipNode.removeEventListener(\"click\",this.hide),this.popperInstance.destroy(),this.popperInstance.options.removeOnDestroy||this._removeTooltipNode()):this._noLongerOpen(),this}},{key:\"_findContainer\",value:function(t,e){return\"string\"==typeof t?t=window.document.querySelector(t):!1===t&&(t=e.parentNode),t}},{key:\"_append\",value:function(t,e){e.appendChild(t)}},{key:\"_setEventListeners\",value:function(t,e,n){var i=this,o=[],a=[];e.forEach(function(t){switch(t){case\"hover\":o.push(\"mouseenter\"),a.push(\"mouseleave\"),i.options.hideOnTargetClick&&a.push(\"click\");break;case\"focus\":o.push(\"focus\"),a.push(\"blur\"),i.options.hideOnTargetClick&&a.push(\"click\");break;case\"click\":o.push(\"click\"),a.push(\"click\")}}),o.forEach(function(e){var o=function(e){!0!==i._isOpen&&(e.usedByTooltip=!0,i._scheduleShow(t,n.delay,n,e))};i._events.push({event:e,func:o}),t.addEventListener(e,o)}),a.forEach(function(e){var o=function(e){!0!==e.usedByTooltip&&i._scheduleHide(t,n.delay,n,e)};i._events.push({event:e,func:o}),t.addEventListener(e,o)})}},{key:\"_onDocumentTouch\",value:function(t){this._enableDocumentTouch&&this._scheduleHide(this.reference,this.options.delay,this.options,t)}},{key:\"_scheduleShow\",value:function(t,e,n){var i=this,o=e&&e.show||e||0;clearTimeout(this._scheduleTimer),this._scheduleTimer=window.setTimeout(function(){return i._show(t,n)},o)}},{key:\"_scheduleHide\",value:function(t,e,n,i){var o=this,a=e&&e.hide||e||0;clearTimeout(this._scheduleTimer),this._scheduleTimer=window.setTimeout(function(){if(!1!==o._isOpen&&document.body.contains(o._tooltipNode)){if(\"mouseleave\"===i.type)if(o._setTooltipNodeEvent(i,t,e,n))return;o._hide(t,n)}},a)}}])&&r(e.prototype,n),o&&r(e,o),t}();\"undefined\"!=typeof document&&document.addEventListener(\"touchstart\",function(t){for(var e=0;e<v.length;e++)v[e]._onDocumentTouch(t)},!f||{passive:!0,capture:!0});var g={enabled:!0},b=[\"top\",\"top-start\",\"top-end\",\"right\",\"right-start\",\"right-end\",\"bottom\",\"bottom-start\",\"bottom-end\",\"left\",\"left-start\",\"left-end\"],y={defaultPlacement:\"top\",defaultClass:\"vue-tooltip-theme\",defaultTargetClass:\"has-tooltip\",defaultHtml:!0,defaultTemplate:'<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>',defaultArrowSelector:\".tooltip-arrow, .tooltip__arrow\",defaultInnerSelector:\".tooltip-inner, .tooltip__inner\",defaultDelay:0,defaultTrigger:\"hover focus\",defaultOffset:0,defaultContainer:\"body\",defaultBoundariesElement:void 0,defaultPopperOptions:{},defaultLoadingClass:\"tooltip-loading\",defaultLoadingContent:\"...\",autoHide:!0,defaultHideOnTargetClick:!0,disposeTimeout:5e3,popover:{defaultPlacement:\"bottom\",defaultClass:\"vue-popover-theme\",defaultBaseClass:\"tooltip popover\",defaultWrapperClass:\"wrapper\",defaultInnerClass:\"tooltip-inner popover-inner\",defaultArrowClass:\"tooltip-arrow popover-arrow\",defaultOpenClass:\"open\",defaultDelay:0,defaultTrigger:\"click\",defaultOffset:0,defaultContainer:\"body\",defaultBoundariesElement:void 0,defaultPopperOptions:{},defaultAutoHide:!0,defaultHandleResize:!0}};function x(t){var e={placement:void 0!==t.placement?t.placement:C.options.defaultPlacement,delay:void 0!==t.delay?t.delay:C.options.defaultDelay,html:void 0!==t.html?t.html:C.options.defaultHtml,template:void 0!==t.template?t.template:C.options.defaultTemplate,arrowSelector:void 0!==t.arrowSelector?t.arrowSelector:C.options.defaultArrowSelector,innerSelector:void 0!==t.innerSelector?t.innerSelector:C.options.defaultInnerSelector,trigger:void 0!==t.trigger?t.trigger:C.options.defaultTrigger,offset:void 0!==t.offset?t.offset:C.options.defaultOffset,container:void 0!==t.container?t.container:C.options.defaultContainer,boundariesElement:void 0!==t.boundariesElement?t.boundariesElement:C.options.defaultBoundariesElement,autoHide:void 0!==t.autoHide?t.autoHide:C.options.autoHide,hideOnTargetClick:void 0!==t.hideOnTargetClick?t.hideOnTargetClick:C.options.defaultHideOnTargetClick,loadingClass:void 0!==t.loadingClass?t.loadingClass:C.options.defaultLoadingClass,loadingContent:void 0!==t.loadingContent?t.loadingContent:C.options.defaultLoadingContent,popperOptions:c({},void 0!==t.popperOptions?t.popperOptions:C.options.defaultPopperOptions)};if(e.offset){var n=a(e.offset),i=e.offset;(\"number\"===n||\"string\"===n&&-1===i.indexOf(\",\"))&&(i=\"0, \".concat(i)),e.popperOptions.modifiers||(e.popperOptions.modifiers={}),e.popperOptions.modifiers.offset={offset:i}}return e.trigger&&-1!==e.trigger.indexOf(\"click\")&&(e.hideOnTargetClick=!1),e}function w(t,e){for(var n=t.placement,i=0;i<b.length;i++){var o=b[i];e[o]&&(n=o)}return n}function _(t){var e=a(t);return\"string\"===e?t:!(!t||\"object\"!==e)&&t.content}function T(t){t._tooltip&&(t._tooltip.dispose(),delete t._tooltip,delete t._tooltipOldShow),t._tooltipTargetClasses&&(p(t,t._tooltipTargetClasses),delete t._tooltipTargetClasses)}function k(t,e){var n,i=e.value,o=(e.oldValue,e.modifiers),a=_(i);a&&g.enabled?(t._tooltip?((n=t._tooltip).setContent(a),n.setOptions(c({},i,{placement:w(i,o)}))):n=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=_(e),o=void 0!==e.classes?e.classes:C.options.defaultClass,a=c({title:i},x(c({},e,{placement:w(e,n)}))),r=t._tooltip=new m(t,a);r.setClasses(o),r._vueEl=t;var s=void 0!==e.targetClasses?e.targetClasses:C.options.defaultTargetClass;return t._tooltipTargetClasses=s,d(t,s),r}(t,i,o),void 0!==i.show&&i.show!==t._tooltipOldShow&&(t._tooltipOldShow=i.show,i.show?n.show():n.hide())):T(t)}var C={options:y,bind:k,update:k,unbind:function(t){T(t)}};function E(t){t.addEventListener(\"click\",S),t.addEventListener(\"touchstart\",D,!!f&&{passive:!0})}function M(t){t.removeEventListener(\"click\",S),t.removeEventListener(\"touchstart\",D),t.removeEventListener(\"touchend\",O),t.removeEventListener(\"touchcancel\",B)}function S(t){var e=t.currentTarget;t.closePopover=!e.$_vclosepopover_touch,t.closeAllPopover=e.$_closePopoverModifiers&&!!e.$_closePopoverModifiers.all}function D(t){if(1===t.changedTouches.length){var e=t.currentTarget;e.$_vclosepopover_touch=!0;var n=t.changedTouches[0];e.$_vclosepopover_touchPoint=n,e.addEventListener(\"touchend\",O),e.addEventListener(\"touchcancel\",B)}}function O(t){var e=t.currentTarget;if(e.$_vclosepopover_touch=!1,1===t.changedTouches.length){var n=t.changedTouches[0],i=e.$_vclosepopover_touchPoint;t.closePopover=Math.abs(n.screenY-i.screenY)<20&&Math.abs(n.screenX-i.screenX)<20,t.closeAllPopover=e.$_closePopoverModifiers&&!!e.$_closePopoverModifiers.all}}function B(t){t.currentTarget.$_vclosepopover_touch=!1}var I={bind:function(t,e){var n=e.value,i=e.modifiers;t.$_closePopoverModifiers=i,(void 0===n||n)&&E(t)},update:function(t,e){var n=e.value,i=e.oldValue,o=e.modifiers;t.$_closePopoverModifiers=o,n!==i&&(void 0===n||n?E(t):M(t))},unbind:function(t){M(t)}};function N(t){var e=C.options.popover[t];return void 0===e?C.options[t]:e}var L=!1;\"undefined\"!=typeof window&&\"undefined\"!=typeof navigator&&(L=/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream);var P=[],j=function(){};\"undefined\"!=typeof window&&(j=window.Element);var $={name:\"VPopover\",components:{ResizeObserver:o.a},props:{open:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},placement:{type:String,default:function(){return N(\"defaultPlacement\")}},delay:{type:[String,Number,Object],default:function(){return N(\"defaultDelay\")}},offset:{type:[String,Number],default:function(){return N(\"defaultOffset\")}},trigger:{type:String,default:function(){return N(\"defaultTrigger\")}},container:{type:[String,Object,j,Boolean],default:function(){return N(\"defaultContainer\")}},boundariesElement:{type:[String,j],default:function(){return N(\"defaultBoundariesElement\")}},popperOptions:{type:Object,default:function(){return N(\"defaultPopperOptions\")}},popoverClass:{type:[String,Array],default:function(){return N(\"defaultClass\")}},popoverBaseClass:{type:[String,Array],default:function(){return C.options.popover.defaultBaseClass}},popoverInnerClass:{type:[String,Array],default:function(){return C.options.popover.defaultInnerClass}},popoverWrapperClass:{type:[String,Array],default:function(){return C.options.popover.defaultWrapperClass}},popoverArrowClass:{type:[String,Array],default:function(){return C.options.popover.defaultArrowClass}},autoHide:{type:Boolean,default:function(){return C.options.popover.defaultAutoHide}},handleResize:{type:Boolean,default:function(){return C.options.popover.defaultHandleResize}},openGroup:{type:String,default:null},openClass:{type:[String,Array],default:function(){return C.options.popover.defaultOpenClass}}},data:function(){return{isOpen:!1,id:Math.random().toString(36).substr(2,10)}},computed:{cssClass:function(){return s({},this.openClass,this.isOpen)},popoverId:function(){return\"popover_\".concat(this.id)}},watch:{open:function(t){t?this.show():this.hide()},disabled:function(t,e){t!==e&&(t?this.hide():this.open&&this.show())},container:function(t){if(this.isOpen&&this.popperInstance){var e=this.$refs.popover,n=this.$refs.trigger,i=this.$_findContainer(this.container,n);if(!i)return void console.warn(\"No container for popover\",this);i.appendChild(e),this.popperInstance.scheduleUpdate()}},trigger:function(t){this.$_removeEventListeners(),this.$_addEventListeners()},placement:function(t){var e=this;this.$_updatePopper(function(){e.popperInstance.options.placement=t})},offset:\"$_restartPopper\",boundariesElement:\"$_restartPopper\",popperOptions:{handler:\"$_restartPopper\",deep:!0}},created:function(){this.$_isDisposed=!1,this.$_mounted=!1,this.$_events=[],this.$_preventOpen=!1},mounted:function(){var t=this.$refs.popover;t.parentNode&&t.parentNode.removeChild(t),this.$_init(),this.open&&this.show()},deactivated:function(){this.hide()},beforeDestroy:function(){this.dispose()},methods:{show:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.event,i=(e.skipDelay,e.force),o=void 0!==i&&i;!o&&this.disabled||(this.$_scheduleShow(n),this.$emit(\"show\")),this.$emit(\"update:open\",!0),this.$_beingShowed=!0,requestAnimationFrame(function(){t.$_beingShowed=!1})},hide:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.event;t.skipDelay;this.$_scheduleHide(e),this.$emit(\"hide\"),this.$emit(\"update:open\",!1)},dispose:function(){if(this.$_isDisposed=!0,this.$_removeEventListeners(),this.hide({skipDelay:!0}),this.popperInstance&&(this.popperInstance.destroy(),!this.popperInstance.options.removeOnDestroy)){var t=this.$refs.popover;t.parentNode&&t.parentNode.removeChild(t)}this.$_mounted=!1,this.popperInstance=null,this.isOpen=!1,this.$emit(\"dispose\")},$_init:function(){-1===this.trigger.indexOf(\"manual\")&&this.$_addEventListeners()},$_show:function(){var t=this,e=this.$refs.trigger,n=this.$refs.popover;if(clearTimeout(this.$_disposeTimer),!this.isOpen){if(this.popperInstance&&(this.isOpen=!0,this.popperInstance.enableEventListeners(),this.popperInstance.scheduleUpdate()),!this.$_mounted){var o=this.$_findContainer(this.container,e);if(!o)return void console.warn(\"No container for popover\",this);o.appendChild(n),this.$_mounted=!0}if(!this.popperInstance){var a=c({},this.popperOptions,{placement:this.placement});if(a.modifiers=c({},a.modifiers,{arrow:c({},a.modifiers&&a.modifiers.arrow,{element:this.$refs.arrow})}),this.offset){var r=this.$_getOffset();a.modifiers.offset=c({},a.modifiers&&a.modifiers.offset,{offset:r})}this.boundariesElement&&(a.modifiers.preventOverflow=c({},a.modifiers&&a.modifiers.preventOverflow,{boundariesElement:this.boundariesElement})),this.popperInstance=new i.a(e,n,a),requestAnimationFrame(function(){if(t.hidden)return t.hidden=!1,void t.$_hide();!t.$_isDisposed&&t.popperInstance?(t.popperInstance.scheduleUpdate(),requestAnimationFrame(function(){if(t.hidden)return t.hidden=!1,void t.$_hide();t.$_isDisposed?t.dispose():t.isOpen=!0})):t.dispose()})}var s=this.openGroup;if(s)for(var l,u=0;u<P.length;u++)(l=P[u]).openGroup!==s&&(l.hide(),l.$emit(\"close-group\"));P.push(this),this.$emit(\"apply-show\")}},$_hide:function(){var t=this;if(this.isOpen){var e=P.indexOf(this);-1!==e&&P.splice(e,1),this.isOpen=!1,this.popperInstance&&this.popperInstance.disableEventListeners(),clearTimeout(this.$_disposeTimer);var n=C.options.popover.disposeTimeout||C.options.disposeTimeout;null!==n&&(this.$_disposeTimer=setTimeout(function(){var e=t.$refs.popover;e&&(e.parentNode&&e.parentNode.removeChild(e),t.$_mounted=!1)},n)),this.$emit(\"apply-hide\")}},$_findContainer:function(t,e){return\"string\"==typeof t?t=window.document.querySelector(t):!1===t&&(t=e.parentNode),t},$_getOffset:function(){var t=a(this.offset),e=this.offset;return(\"number\"===t||\"string\"===t&&-1===e.indexOf(\",\"))&&(e=\"0, \".concat(e)),e},$_addEventListeners:function(){var t=this,e=this.$refs.trigger,n=[],i=[];(\"string\"==typeof this.trigger?this.trigger.split(\" \").filter(function(t){return-1!==[\"click\",\"hover\",\"focus\"].indexOf(t)}):[]).forEach(function(t){switch(t){case\"hover\":n.push(\"mouseenter\"),i.push(\"mouseleave\");break;case\"focus\":n.push(\"focus\"),i.push(\"blur\");break;case\"click\":n.push(\"click\"),i.push(\"click\")}}),n.forEach(function(n){var i=function(e){t.isOpen||(e.usedByTooltip=!0,!t.$_preventOpen&&t.show({event:e}),t.hidden=!1)};t.$_events.push({event:n,func:i}),e.addEventListener(n,i)}),i.forEach(function(n){var i=function(e){e.usedByTooltip||(t.hide({event:e}),t.hidden=!0)};t.$_events.push({event:n,func:i}),e.addEventListener(n,i)})},$_scheduleShow:function(){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(clearTimeout(this.$_scheduleTimer),t)this.$_show();else{var e=parseInt(this.delay&&this.delay.show||this.delay||0);this.$_scheduleTimer=setTimeout(this.$_show.bind(this),e)}},$_scheduleHide:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(clearTimeout(this.$_scheduleTimer),n)this.$_hide();else{var i=parseInt(this.delay&&this.delay.hide||this.delay||0);this.$_scheduleTimer=setTimeout(function(){if(t.isOpen){if(e&&\"mouseleave\"===e.type)if(t.$_setTooltipNodeEvent(e))return;t.$_hide()}},i)}},$_setTooltipNodeEvent:function(t){var e=this,n=this.$refs.trigger,i=this.$refs.popover,o=t.relatedreference||t.toElement||t.relatedTarget;return!!i.contains(o)&&(i.addEventListener(t.type,function o(a){var r=a.relatedreference||a.toElement||a.relatedTarget;i.removeEventListener(t.type,o),n.contains(r)||e.hide({event:a})}),!0)},$_removeEventListeners:function(){var t=this.$refs.trigger;this.$_events.forEach(function(e){var n=e.func,i=e.event;t.removeEventListener(i,n)}),this.$_events=[]},$_updatePopper:function(t){this.popperInstance&&(t(),this.isOpen&&this.popperInstance.scheduleUpdate())},$_restartPopper:function(){if(this.popperInstance){var t=this.isOpen;this.dispose(),this.$_isDisposed=!1,this.$_init(),t&&this.show({skipDelay:!0,force:!0})}},$_handleGlobalClose:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.$_beingShowed||(this.hide({event:t}),t.closePopover?this.$emit(\"close-directive\"):this.$emit(\"auto-hide\"),n&&(this.$_preventOpen=!0,setTimeout(function(){e.$_preventOpen=!1},300)))},$_handleResize:function(){this.isOpen&&this.popperInstance&&(this.popperInstance.scheduleUpdate(),this.$emit(\"resize\"))}}};function F(t){for(var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=function(n){var i=P[n];if(i.$refs.popover){var o=i.$refs.popover.contains(t.target);requestAnimationFrame(function(){(t.closeAllPopover||t.closePopover&&o||i.autoHide&&!o)&&i.$_handleGlobalClose(t,e)})}},i=0;i<P.length;i++)n(i)}\"undefined\"!=typeof document&&\"undefined\"!=typeof window&&(L?document.addEventListener(\"touchend\",function(t){F(t,!0)},!f||{passive:!0,capture:!0}):window.addEventListener(\"click\",function(t){F(t)},!0));var Y=function(t,e,n,i,o,a,r,s,c,l){\"boolean\"!=typeof r&&(c=s,s=r,r=!1);var u,d=\"function\"==typeof n?n.options:n;if(t&&t.render&&(d.render=t.render,d.staticRenderFns=t.staticRenderFns,d._compiled=!0,o&&(d.functional=!0)),i&&(d._scopeId=i),a?(u=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),e&&e.call(this,c(t)),t&&t._registeredComponents&&t._registeredComponents.add(a)},d._ssrRegister=u):e&&(u=r?function(){e.call(this,l(this.$root.$options.shadowRoot))}:function(t){e.call(this,s(t))}),u)if(d.functional){var p=d.render;d.render=function(t,e){return u.call(e),p(t,e)}}else{var f=d.beforeCreate;d.beforeCreate=f?[].concat(f,u):[u]}return n},R=$,z=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{staticClass:\"v-popover\",class:t.cssClass},[n(\"div\",{ref:\"trigger\",staticClass:\"trigger\",staticStyle:{display:\"inline-block\"},attrs:{\"aria-describedby\":t.popoverId,tabindex:-1!==t.trigger.indexOf(\"focus\")?0:void 0}},[t._t(\"default\")],2),t._v(\" \"),n(\"div\",{ref:\"popover\",class:[t.popoverBaseClass,t.popoverClass,t.cssClass],style:{visibility:t.isOpen?\"visible\":\"hidden\"},attrs:{id:t.popoverId,\"aria-hidden\":t.isOpen?\"false\":\"true\",tabindex:t.autoHide?0:void 0},on:{keyup:function(e){if(!e.type.indexOf(\"key\")&&t._k(e.keyCode,\"esc\",27,e.key,[\"Esc\",\"Escape\"]))return null;t.autoHide&&t.hide()}}},[n(\"div\",{class:t.popoverWrapperClass},[n(\"div\",{ref:\"inner\",class:t.popoverInnerClass,staticStyle:{position:\"relative\"}},[n(\"div\",[t._t(\"popover\")],2),t._v(\" \"),t.handleResize?n(\"ResizeObserver\",{on:{notify:t.$_handleResize}}):t._e()],1),t._v(\" \"),n(\"div\",{ref:\"arrow\",class:t.popoverArrowClass})])])])};z._withStripped=!0;var H=Y({render:z,staticRenderFns:[]},void 0,R,void 0,!1,void 0,void 0,void 0);var Q=function(){this.__data__=[],this.size=0};var V=function(t,e){return t===e||t!=t&&e!=e};var G=function(t,e){for(var n=t.length;n--;)if(V(t[n][0],e))return n;return-1},U=Array.prototype.splice;var W=function(t){var e=this.__data__,n=G(e,t);return!(n<0||(n==e.length-1?e.pop():U.call(e,n,1),--this.size,0))};var Z=function(t){var e=this.__data__,n=G(e,t);return n<0?void 0:e[n][1]};var X=function(t){return G(this.__data__,t)>-1};var q=function(t,e){var n=this.__data__,i=G(n,t);return i<0?(++this.size,n.push([t,e])):n[i][1]=e,this};function K(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var i=t[e];this.set(i[0],i[1])}}K.prototype.clear=Q,K.prototype.delete=W,K.prototype.get=Z,K.prototype.has=X,K.prototype.set=q;var J=K;var tt=function(){this.__data__=new J,this.size=0};var et=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n};var nt=function(t){return this.__data__.get(t)};var it=function(t){return this.__data__.has(t)},ot=\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof window?window:void 0!==t?t:\"undefined\"!=typeof self?self:{};function at(t,e){return t(e={exports:{}},e.exports),e.exports}var rt=\"object\"==typeof ot&&ot&&ot.Object===Object&&ot,st=\"object\"==typeof self&&self&&self.Object===Object&&self,ct=rt||st||Function(\"return this\")(),lt=ct.Symbol,ut=Object.prototype,dt=ut.hasOwnProperty,pt=ut.toString,ft=lt?lt.toStringTag:void 0;var ht=function(t){var e=dt.call(t,ft),n=t[ft];try{t[ft]=void 0;var i=!0}catch(t){}var o=pt.call(t);return i&&(e?t[ft]=n:delete t[ft]),o},At=Object.prototype.toString;var vt=function(t){return At.call(t)},mt=\"[object Null]\",gt=\"[object Undefined]\",bt=lt?lt.toStringTag:void 0;var yt=function(t){return null==t?void 0===t?gt:mt:bt&&bt in Object(t)?ht(t):vt(t)};var xt=function(t){var e=typeof t;return null!=t&&(\"object\"==e||\"function\"==e)},wt=\"[object AsyncFunction]\",_t=\"[object Function]\",Tt=\"[object GeneratorFunction]\",kt=\"[object Proxy]\";var Ct,Et=function(t){if(!xt(t))return!1;var e=yt(t);return e==_t||e==Tt||e==wt||e==kt},Mt=ct[\"__core-js_shared__\"],St=(Ct=/[^.]+$/.exec(Mt&&Mt.keys&&Mt.keys.IE_PROTO||\"\"))?\"Symbol(src)_1.\"+Ct:\"\";var Dt=function(t){return!!St&&St in t},Ot=Function.prototype.toString;var Bt=function(t){if(null!=t){try{return Ot.call(t)}catch(t){}try{return t+\"\"}catch(t){}}return\"\"},It=/^\\[object .+?Constructor\\]$/,Nt=Function.prototype,Lt=Object.prototype,Pt=Nt.toString,jt=Lt.hasOwnProperty,$t=RegExp(\"^\"+Pt.call(jt).replace(/[\\\\^$.*+?()[\\]{}|]/g,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\");var Ft=function(t){return!(!xt(t)||Dt(t))&&(Et(t)?$t:It).test(Bt(t))};var Yt=function(t,e){return null==t?void 0:t[e]};var Rt=function(t,e){var n=Yt(t,e);return Ft(n)?n:void 0},zt=Rt(ct,\"Map\"),Ht=Rt(Object,\"create\");var Qt=function(){this.__data__=Ht?Ht(null):{},this.size=0};var Vt=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e},Gt=\"__lodash_hash_undefined__\",Ut=Object.prototype.hasOwnProperty;var Wt=function(t){var e=this.__data__;if(Ht){var n=e[t];return n===Gt?void 0:n}return Ut.call(e,t)?e[t]:void 0},Zt=Object.prototype.hasOwnProperty;var Xt=function(t){var e=this.__data__;return Ht?void 0!==e[t]:Zt.call(e,t)},qt=\"__lodash_hash_undefined__\";var Kt=function(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=Ht&&void 0===e?qt:e,this};function Jt(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var i=t[e];this.set(i[0],i[1])}}Jt.prototype.clear=Qt,Jt.prototype.delete=Vt,Jt.prototype.get=Wt,Jt.prototype.has=Xt,Jt.prototype.set=Kt;var te=Jt;var ee=function(){this.size=0,this.__data__={hash:new te,map:new(zt||J),string:new te}};var ne=function(t){var e=typeof t;return\"string\"==e||\"number\"==e||\"symbol\"==e||\"boolean\"==e?\"__proto__\"!==t:null===t};var ie=function(t,e){var n=t.__data__;return ne(e)?n[\"string\"==typeof e?\"string\":\"hash\"]:n.map};var oe=function(t){var e=ie(this,t).delete(t);return this.size-=e?1:0,e};var ae=function(t){return ie(this,t).get(t)};var re=function(t){return ie(this,t).has(t)};var se=function(t,e){var n=ie(this,t),i=n.size;return n.set(t,e),this.size+=n.size==i?0:1,this};function ce(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var i=t[e];this.set(i[0],i[1])}}ce.prototype.clear=ee,ce.prototype.delete=oe,ce.prototype.get=ae,ce.prototype.has=re,ce.prototype.set=se;var le=ce,ue=200;var de=function(t,e){var n=this.__data__;if(n instanceof J){var i=n.__data__;if(!zt||i.length<ue-1)return i.push([t,e]),this.size=++n.size,this;n=this.__data__=new le(i)}return n.set(t,e),this.size=n.size,this};function pe(t){var e=this.__data__=new J(t);this.size=e.size}pe.prototype.clear=tt,pe.prototype.delete=et,pe.prototype.get=nt,pe.prototype.has=it,pe.prototype.set=de;var fe=pe,he=function(){try{var t=Rt(Object,\"defineProperty\");return t({},\"\",{}),t}catch(t){}}();var Ae=function(t,e,n){\"__proto__\"==e&&he?he(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n};var ve=function(t,e,n){(void 0===n||V(t[e],n))&&(void 0!==n||e in t)||Ae(t,e,n)};var me=function(t){return function(e,n,i){for(var o=-1,a=Object(e),r=i(e),s=r.length;s--;){var c=r[t?s:++o];if(!1===n(a[c],c,a))break}return e}}(),ge=at(function(t,e){var n=e&&!e.nodeType&&e,i=n&&t&&!t.nodeType&&t,o=i&&i.exports===n?ct.Buffer:void 0,a=o?o.allocUnsafe:void 0;t.exports=function(t,e){if(e)return t.slice();var n=t.length,i=a?a(n):new t.constructor(n);return t.copy(i),i}}),be=ct.Uint8Array;var ye=function(t){var e=new t.constructor(t.byteLength);return new be(e).set(new be(t)),e};var xe=function(t,e){var n=e?ye(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)};var we=function(t,e){var n=-1,i=t.length;for(e||(e=Array(i));++n<i;)e[n]=t[n];return e},_e=Object.create,Te=function(){function t(){}return function(e){if(!xt(e))return{};if(_e)return _e(e);t.prototype=e;var n=new t;return t.prototype=void 0,n}}();var ke=function(t,e){return function(n){return t(e(n))}}(Object.getPrototypeOf,Object),Ce=Object.prototype;var Ee=function(t){var e=t&&t.constructor;return t===(\"function\"==typeof e&&e.prototype||Ce)};var Me=function(t){return\"function\"!=typeof t.constructor||Ee(t)?{}:Te(ke(t))};var Se=function(t){return null!=t&&\"object\"==typeof t},De=\"[object Arguments]\";var Oe=function(t){return Se(t)&&yt(t)==De},Be=Object.prototype,Ie=Be.hasOwnProperty,Ne=Be.propertyIsEnumerable,Le=Oe(function(){return arguments}())?Oe:function(t){return Se(t)&&Ie.call(t,\"callee\")&&!Ne.call(t,\"callee\")},Pe=Array.isArray,je=9007199254740991;var $e=function(t){return\"number\"==typeof t&&t>-1&&t%1==0&&t<=je};var Fe=function(t){return null!=t&&$e(t.length)&&!Et(t)};var Ye=function(t){return Se(t)&&Fe(t)};var Re=function(){return!1},ze=at(function(t,e){var n=e&&!e.nodeType&&e,i=n&&t&&!t.nodeType&&t,o=i&&i.exports===n?ct.Buffer:void 0,a=(o?o.isBuffer:void 0)||Re;t.exports=a}),He=\"[object Object]\",Qe=Function.prototype,Ve=Object.prototype,Ge=Qe.toString,Ue=Ve.hasOwnProperty,We=Ge.call(Object);var Ze=function(t){if(!Se(t)||yt(t)!=He)return!1;var e=ke(t);if(null===e)return!0;var n=Ue.call(e,\"constructor\")&&e.constructor;return\"function\"==typeof n&&n instanceof n&&Ge.call(n)==We},Xe={};Xe[\"[object Float32Array]\"]=Xe[\"[object Float64Array]\"]=Xe[\"[object Int8Array]\"]=Xe[\"[object Int16Array]\"]=Xe[\"[object Int32Array]\"]=Xe[\"[object Uint8Array]\"]=Xe[\"[object Uint8ClampedArray]\"]=Xe[\"[object Uint16Array]\"]=Xe[\"[object Uint32Array]\"]=!0,Xe[\"[object Arguments]\"]=Xe[\"[object Array]\"]=Xe[\"[object ArrayBuffer]\"]=Xe[\"[object Boolean]\"]=Xe[\"[object DataView]\"]=Xe[\"[object Date]\"]=Xe[\"[object Error]\"]=Xe[\"[object Function]\"]=Xe[\"[object Map]\"]=Xe[\"[object Number]\"]=Xe[\"[object Object]\"]=Xe[\"[object RegExp]\"]=Xe[\"[object Set]\"]=Xe[\"[object String]\"]=Xe[\"[object WeakMap]\"]=!1;var qe=function(t){return Se(t)&&$e(t.length)&&!!Xe[yt(t)]};var Ke=function(t){return function(e){return t(e)}},Je=at(function(t,e){var n=e&&!e.nodeType&&e,i=n&&t&&!t.nodeType&&t,o=i&&i.exports===n&&rt.process,a=function(){try{var t=i&&i.require&&i.require(\"util\").types;return t||o&&o.binding&&o.binding(\"util\")}catch(t){}}();t.exports=a}),tn=Je&&Je.isTypedArray,en=tn?Ke(tn):qe;var nn=function(t,e){if(\"__proto__\"!=e)return t[e]},on=Object.prototype.hasOwnProperty;var an=function(t,e,n){var i=t[e];on.call(t,e)&&V(i,n)&&(void 0!==n||e in t)||Ae(t,e,n)};var rn=function(t,e,n,i){var o=!n;n||(n={});for(var a=-1,r=e.length;++a<r;){var s=e[a],c=i?i(n[s],t[s],s,n,t):void 0;void 0===c&&(c=t[s]),o?Ae(n,s,c):an(n,s,c)}return n};var sn=function(t,e){for(var n=-1,i=Array(t);++n<t;)i[n]=e(n);return i},cn=9007199254740991,ln=/^(?:0|[1-9]\\d*)$/;var un=function(t,e){var n=typeof t;return!!(e=null==e?cn:e)&&(\"number\"==n||\"symbol\"!=n&&ln.test(t))&&t>-1&&t%1==0&&t<e},dn=Object.prototype.hasOwnProperty;var pn=function(t,e){var n=Pe(t),i=!n&&Le(t),o=!n&&!i&&ze(t),a=!n&&!i&&!o&&en(t),r=n||i||o||a,s=r?sn(t.length,String):[],c=s.length;for(var l in t)!e&&!dn.call(t,l)||r&&(\"length\"==l||o&&(\"offset\"==l||\"parent\"==l)||a&&(\"buffer\"==l||\"byteLength\"==l||\"byteOffset\"==l)||un(l,c))||s.push(l);return s};var fn=function(t){var e=[];if(null!=t)for(var n in Object(t))e.push(n);return e},hn=Object.prototype.hasOwnProperty;var An=function(t){if(!xt(t))return fn(t);var e=Ee(t),n=[];for(var i in t)(\"constructor\"!=i||!e&&hn.call(t,i))&&n.push(i);return n};var vn=function(t){return Fe(t)?pn(t,!0):An(t)};var mn=function(t){return rn(t,vn(t))};var gn=function(t,e,n,i,o,a,r){var s=nn(t,n),c=nn(e,n),l=r.get(c);if(l)ve(t,n,l);else{var u=a?a(s,c,n+\"\",t,e,r):void 0,d=void 0===u;if(d){var p=Pe(c),f=!p&&ze(c),h=!p&&!f&&en(c);u=c,p||f||h?Pe(s)?u=s:Ye(s)?u=we(s):f?(d=!1,u=ge(c,!0)):h?(d=!1,u=xe(c,!0)):u=[]:Ze(c)||Le(c)?(u=s,Le(s)?u=mn(s):xt(s)&&!Et(s)||(u=Me(c))):d=!1}d&&(r.set(c,u),o(u,c,i,a,r),r.delete(c)),ve(t,n,u)}};var bn=function t(e,n,i,o,a){e!==n&&me(n,function(r,s){if(xt(r))a||(a=new fe),gn(e,n,s,i,t,o,a);else{var c=o?o(nn(e,s),r,s+\"\",e,n,a):void 0;void 0===c&&(c=r),ve(e,s,c)}},vn)};var yn=function(t){return t};var xn=function(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)},wn=Math.max;var _n=function(t,e,n){return e=wn(void 0===e?t.length-1:e,0),function(){for(var i=arguments,o=-1,a=wn(i.length-e,0),r=Array(a);++o<a;)r[o]=i[e+o];o=-1;for(var s=Array(e+1);++o<e;)s[o]=i[o];return s[e]=n(r),xn(t,this,s)}};var Tn=function(t){return function(){return t}},kn=he?function(t,e){return he(t,\"toString\",{configurable:!0,enumerable:!1,value:Tn(e),writable:!0})}:yn,Cn=800,En=16,Mn=Date.now;var Sn=function(t){var e=0,n=0;return function(){var i=Mn(),o=En-(i-n);if(n=i,o>0){if(++e>=Cn)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(kn);var Dn=function(t,e){return Sn(_n(t,e,yn),t+\"\")};var On=function(t,e,n){if(!xt(n))return!1;var i=typeof e;return!!(\"number\"==i?Fe(n)&&un(e,n.length):\"string\"==i&&e in n)&&V(n[e],t)};var Bn=function(t){return Dn(function(e,n){var i=-1,o=n.length,a=o>1?n[o-1]:void 0,r=o>2?n[2]:void 0;for(a=t.length>3&&\"function\"==typeof a?(o--,a):void 0,r&&On(n[0],n[1],r)&&(a=o<3?void 0:a,o=1),e=Object(e);++i<o;){var s=n[i];s&&t(e,s,i,a)}return e})}(function(t,e,n){bn(t,e,n)});!function(t,e){void 0===e&&(e={});var n=e.insertAt;if(t&&\"undefined\"!=typeof document){var i=document.head||document.getElementsByTagName(\"head\")[0],o=document.createElement(\"style\");o.type=\"text/css\",\"top\"===n&&i.firstChild?i.insertBefore(o,i.firstChild):i.appendChild(o),o.styleSheet?o.styleSheet.cssText=t:o.appendChild(document.createTextNode(t))}}(\".resize-observer[data-v-b329ee4c]{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:transparent;pointer-events:none;display:block;overflow:hidden;opacity:0}.resize-observer[data-v-b329ee4c] object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}\");var In=C,Nn={install:function t(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!t.installed){t.installed=!0;var i={};Bn(i,y,n),Nn.options=i,C.options=i,e.directive(\"tooltip\",C),e.directive(\"close-popover\",I),e.component(\"v-popover\",H)}},get enabled(){return g.enabled},set enabled(t){g.enabled=t}},Ln=null;\"undefined\"!=typeof window?Ln=window.Vue:void 0!==t&&(Ln=t.Vue),Ln&&Ln.use(Nn)}).call(this,n(15))},function(t,e,n){\"use strict\";n.r(e);var i=n(5);n(32);\n/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\ni.a.options.defaultTemplate='<div class=\"vue-tooltip\" role=\"tooltip\" data-v-'.concat(\"6673a70\",'><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>'),i.a.options.defaultHtml=!1,e.default=i.a},function(t,e,n){\"use strict\";var i=n(3),o=n.n(i);\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */e.a={before:function(){this.$slots.default&&\"\"!==this.text.trim()||(o.a.util.warn(\"\".concat(this.$options.name,\" cannot be empty and requires a meaningful text content\"),this),this.$destroy(),this.$el.remove())},beforeUpdate:function(){this.text=this.getText()},data:function(){return{text:this.getText()}},computed:{isLongText:function(){return this.text&&this.text.trim().length>20}},methods:{getText:function(){return this.$slots.default?this.$slots.default[0].text.trim():\"\"}}}},function(t,e,n){\"use strict\";t.exports=function(t,e){return\"string\"!=typeof(t=t.__esModule?t.default:t)?t:(/^['\"].*['\"]$/.test(t)&&(t=t.slice(1,-1)),/[\"'() \\t\\n]/.test(t)||e?'\"'.concat(t.replace(/\"/g,'\\\\\"').replace(/\\n/g,\"\\\\n\"),'\"'):t)}},function(t,e){t.exports=\"data:application/vnd.ms-fontobject;base64,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\"},function(t,e){t.exports=\"data:font/woff;base64,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\"},function(t,e){t.exports=\"data:font/ttf;base64,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\"},function(t,e){t.exports=\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCIgPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48bWV0YWRhdGE+PC9tZXRhZGF0YT48ZGVmcz48Zm9udCBpZD0iaWNvbmZvbnQtdnVlIiBob3Jpei1hZHYteD0iNTAwMCI+PGZvbnQtZmFjZSBmb250LWZhbWlseT0iaWNvbmZvbnQtdnVlIiBmb250LXdlaWdodD0iNDAwIiBmb250LXN0cmV0Y2g9Im5vcm1hbCIgdW5pdHMtcGVyLWVtPSI1MDAwIiBwYW5vc2UtMT0iMiAwIDUgMyAwIDAgMCAwIDAgMCIgYXNjZW50PSI1MDAwIiBkZXNjZW50PSIwIiB4LWhlaWdodD0iMCIgYmJveD0iLTEgMCA1MDExIDQ4NDQiIHVuZGVybGluZS10aGlja25lc3M9IjAiIHVuZGVybGluZS1wb3NpdGlvbj0iNTAiIHVuaWNvZGUtcmFuZ2U9IlUrZWEwMS1lYTBiIiAvPjxtaXNzaW5nLWdseXBoIGhvcml6LWFkdi14PSIwIiAgLz48Z2x5cGggZ2x5cGgtbmFtZT0iYXJyb3ctbGVmdC1kb3VibGUiIHVuaWNvZGU9IiYjeGVhMDE7IiBkPSJNMzc1MCAzOTA2IGwtMTQwNiAtMTQwNiBsMTQwNiAtMTQwNiBsMCAzMTIgbC0xMDk0IDEwOTQgbDEwOTQgMTA5NCBsMCAzMTIgWk0yMzQ0IDM5MDYgbC0xNDA2IC0xNDA2IGwxNDA2IC0xNDA2IGwwIDMxMiBsLTEwOTQgMTA5NCBsMTA5NCAxMDk0IGwwIDMxMiBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJhcnJvdy1sZWZ0IiB1bmljb2RlPSImI3hlYTAyOyIgZD0iTTE1NjMgMjUwMCBsMTg3NSAtMTg3NSBsMCAtMzEyIGwtMjE4OCAyMTg3IGwyMTg4IDIxODggbDAgLTMxMyBsLTE4NzUgLTE4NzUgWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0iYXJyb3ctcmlnaHQtZG91YmxlIiB1bmljb2RlPSImI3hlYTAzOyIgZD0iTTEyNTAgMTA5NCBsMTQwNiAxNDA2IGwtMTQwNiAxNDA2IGwwIC0zMTIgbDEwOTQgLTEwOTQgbC0xMDk0IC0xMDk0IGwwIC0zMTIgWk0yNjU2IDEwOTQgbDE0MDcgMTQwNiBsLTE0MDcgMTQwNiBsMCAtMzEyIGwxMDk0IC0xMDk0IGwtMTA5NCAtMTA5NCBsMCAtMzEyIFoiIC8+PGdseXBoIGdseXBoLW5hbWU9ImFycm93LXJpZ2h0IiB1bmljb2RlPSImI3hlYTA0OyIgZD0iTTM0MzggMjUwMCBsLTE4NzUgMTg3NSBsMCAzMTMgbDIxODcgLTIxODggbC0yMTg3IC0yMTg3IGwwIDMxMiBsMTg3NSAxODc1IFoiIC8+PGdseXBoIGdseXBoLW5hbWU9ImNsb3NlIiB1bmljb2RlPSImI3hlYTA1OyIgZD0iTTQzNzUgMTE1NiBsLTUzMSAtNTMxIGwtMTM0NCAxMzQ0IGwtMTM0NCAtMTM0NCBsLTUzMSA1MzEgbDEzNDQgMTM0NCBsLTEzNDQgMTM0NCBsNTMxIDUzMSBsMTM0NCAtMTM0NCBsMTM0NCAxMzQ0IGw1MzEgLTUzMSBsLTEzNDQgLTEzNDQgbDEzNDQgLTEzNDQgWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0iY29uZmlybS1mYWRlIiB1bmljb2RlPSImI3hlYTA2OyYjeGVhMDc7IiBkPSJNMjY1NiA0ODQ0IHEtMTAxIDAgLTE4MCAtNTcgcS03NCAtNTIgLTEwOSAtMTM4IHEtMzUgLTg2IC0xOSAtMTc1IHExOCAtOTYgOTAgLTE2NyBsMTQ5NSAtMTQ5NCBsLTM2MTYgMCBxLTc3IDEgLTEzOSAtMjYgcS01OCAtMjQgLTk5IC03MCBxLTM5IC00NCAtNTkgLTEwMSBxLTIwIC01NiAtMjAgLTExNiBxMCAtNjAgMjAgLTExNiBxMjAgLTU3IDU5IC0xMDEgcTQxIC00NiA5OSAtNzAgcTYyIC0yNyAxMzkgLTI1IGwzNjE2IDAgbC0xNDk1IC0xNDk1IHEtNTUgLTUzIC04MSAtMTE2IHEtMjQgLTU5IC0yMSAtMTIxIHEzIC01OCAzMCAtMTEzIHEyNSAtNTQgNjggLTk3IHE0MyAtNDMgOTYgLTY4IHE1NSAtMjYgMTE0IC0yOSBxNjIgLTMgMTIwIDIxIHE2MyAyNSAxMTYgODEgbDIwMjkgMjAyOCBxNTkgNjAgODAgMTQxIHEyMSA4MCAxIDE1OSBxLTIxIDgyIC04MSAxNDIgbC0yMDI5IDIwMjggcS00NCA0NSAtMTAyIDcwIHEtNTggMjUgLTEyMiAyNSBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJtZW51IiB1bmljb2RlPSImI3hlYTA4OyIgZD0iTTYyNSA0Mzc1IGwwIC02MjUgbDM3NTAgMCBsMCA2MjUgbC0zNzUwIDAgWk02MjUgMjgxMyBsMCAtNjI1IGwzNzUwIDAgbDAgNjI1IGwtMzc1MCAwIFpNNjI1IDEyNTAgbDAgLTYyNSBsMzc1MCAwIGwwIDYyNSBsLTM3NTAgMCBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJtb3JlIiB1bmljb2RlPSImI3hlYTA5OyIgZD0iTTkzOCAzMTI1IHEtMTI4IDAgLTI0NCAtNDkgcS0xMTIgLTQ4IC0xOTguNSAtMTM0LjUgcS04Ni41IC04Ni41IC0xMzMuNSAtMTk4LjUgcS01MCAtMTE2IC00OS41IC0yNDMgcTAuNSAtMTI3IDQ5LjUgLTI0MyBxNDcgLTExMiAxMzMuNSAtMTk4LjUgcTg2LjUgLTg2LjUgMTk4LjUgLTEzNC41IHExMTYgLTQ5IDI0My41IC00OSBxMTI3LjUgMCAyNDMuNSA0OSBxMTEyIDQ4IDE5OC41IDEzNC41IHE4Ni41IDg2LjUgMTMzLjUgMTk4LjUgcTUwIDExNiA1MCAyNDMgcTAgMTI3IC01MCAyNDMgcS00NyAxMTIgLTEzMy41IDE5OC41IHEtODYuNSA4Ni41IC0xOTguNSAxMzQuNSBxLTExNiA0OSAtMjQzIDQ5IFpNMjUwMCAzMTI1IHEtMTI3IDAgLTI0MyAtNDkgcS0xMTIgLTQ4IC0xOTguNSAtMTM0LjUgcS04Ni41IC04Ni41IC0xMzQuNSAtMTk4LjUgcS00OSAtMTE2IC00OSAtMjQzIHEwIC0xMjcgNDkgLTI0MyBxNDggLTExMiAxMzQuNSAtMTk4LjUgcTg2LjUgLTg2LjUgMTk4LjUgLTEzNC41IHExMTYgLTQ5IDI0MyAtNDkgcTEyNyAwIDI0MyA0OSBxMTEyIDQ4IDE5OC41IDEzNC41IHE4Ni41IDg2LjUgMTM0LjUgMTk4LjUgcTQ5IDExNiA0OSAyNDMgcTAgMTI3IC00OSAyNDMgcS00OCAxMTIgLTEzNC41IDE5OC41IHEtODYuNSA4Ni41IC0xOTguNSAxMzQuNSBxLTExNiA0OSAtMjQzIDQ5IFpNNDA2MyAzMTI1IHEtMTI4IDAgLTI0NCAtNDkgcS0xMTIgLTQ4IC0xOTguNSAtMTM0LjUgcS04Ni41IC04Ni41IC0xMzMuNSAtMTk4LjUgcS00OSAtMTE2IC00OSAtMjQzIHEwIC0xMjcgNDkgLTI0MyBxNDcgLTExMiAxMzMuNSAtMTk4LjUgcTg2LjUgLTg2LjUgMTk4LjUgLTEzNC41IHExMTYgLTQ5IDI0My41IC00OSBxMTI3LjUgMCAyNDMuNSA0OSBxMTEyIDQ4IDE5OC41IDEzNC41IHE4Ni41IDg2LjUgMTMzLjUgMTk4LjUgcTUwIDExNiA1MCAyNDMgcTAgMTI3IC01MCAyNDMgcS00NyAxMTIgLTEzMy41IDE5OC41IHEtODYuNSA4Ni41IC0xOTguNSAxMzQuNSBxLTExNiA0OSAtMjQzIDQ5IFoiIC8+PGdseXBoIGdseXBoLW5hbWU9InBhdXNlIiB1bmljb2RlPSImI3hlYTBhOyIgZD0iTTkzOCA0MDYzIGwwIC0zMTI1IGwxMjUwIDAgbDAgMzEyNSBsLTEyNTAgMCBaTTI4MTMgNDA2MyBsMCAtMzEyNSBsMTI1MCAwIGwwIDMxMjUgbC0xMjUwIDAgWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0icGxheSIgdW5pY29kZT0iJiN4ZWEwYjsiIGQ9Ik02MjUgNDM3NSBsMzc1MCAtMTg3NSBsLTM3NTAgLTE4NzUgbDAgMzc1MCBaIiAvPjwvZm9udD48L2RlZnM+PC9zdmc+\"},function(t,e){function n(t){return\"function\"==typeof t.value||(console.warn(\"[Vue-click-outside:] provided expression\",t.expression,\"is not a function.\"),!1)}function i(t){return void 0!==t.componentInstance&&t.componentInstance.$isServer}t.exports={bind:function(t,e,o){function a(e){if(o.context){var n=e.path||e.composedPath&&e.composedPath();n&&n.length>0&&n.unshift(e.target),t.contains(e.target)||function(t,e){if(!t||!e)return!1;for(var n=0,i=e.length;n<i;n++)try{if(t.contains(e[n]))return!0;if(e[n].contains(t))return!1}catch(t){return!1}return!1}(o.context.popupItem,n)||t.__vueClickOutside__.callback(e)}}n(e)&&(t.__vueClickOutside__={handler:a,callback:e.value},!i(o)&&document.addEventListener(\"click\",a))},update:function(t,e){n(e)&&(t.__vueClickOutside__.callback=e.value)},unbind:function(t,e,n){!i(n)&&document.removeEventListener(\"click\",t.__vueClickOutside__.handler),delete t.__vueClickOutside__}}},function(t,e,n){\"use strict\";var i=n(7);\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */e.a={mixins:[i.a],props:{icon:{type:String,default:\"\",required:!0},title:{type:String,default:\"\"}},computed:{isIconUrl:function(){try{return new URL(this.icon)}catch(t){return!1}}},methods:{onClick:function(t){this.$emit(\"click\",t)}}}},function(t,e){var n;n=function(){return this}();try{n=n||new Function(\"return this\")()}catch(t){\"object\"==typeof window&&(n=window)}t.exports=n},function(t,e,n){\"use strict\";(function(t){for(\n/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.15.0\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar n=\"undefined\"!=typeof window&&\"undefined\"!=typeof document,i=[\"Edge\",\"Trident\",\"Firefox\"],o=0,a=0;a<i.length;a+=1)if(n&&navigator.userAgent.indexOf(i[a])>=0){o=1;break}var r=n&&window.Promise?function(t){var e=!1;return function(){e||(e=!0,window.Promise.resolve().then(function(){e=!1,t()}))}}:function(t){var e=!1;return function(){e||(e=!0,setTimeout(function(){e=!1,t()},o))}};function s(t){return t&&\"[object Function]\"==={}.toString.call(t)}function c(t,e){if(1!==t.nodeType)return[];var n=t.ownerDocument.defaultView.getComputedStyle(t,null);return e?n[e]:n}function l(t){return\"HTML\"===t.nodeName?t:t.parentNode||t.host}function u(t){if(!t)return document.body;switch(t.nodeName){case\"HTML\":case\"BODY\":return t.ownerDocument.body;case\"#document\":return t.body}var e=c(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/(auto|scroll|overlay)/.test(n+o+i)?t:u(l(t))}var d=n&&!(!window.MSInputMethodContext||!document.documentMode),p=n&&/MSIE 10/.test(navigator.userAgent);function f(t){return 11===t?d:10===t?p:d||p}function h(t){if(!t)return document.documentElement;for(var e=f(10)?document.body:null,n=t.offsetParent||null;n===e&&t.nextElementSibling;)n=(t=t.nextElementSibling).offsetParent;var i=n&&n.nodeName;return i&&\"BODY\"!==i&&\"HTML\"!==i?-1!==[\"TH\",\"TD\",\"TABLE\"].indexOf(n.nodeName)&&\"static\"===c(n,\"position\")?h(n):n:t?t.ownerDocument.documentElement:document.documentElement}function A(t){return null!==t.parentNode?A(t.parentNode):t}function v(t,e){if(!(t&&t.nodeType&&e&&e.nodeType))return document.documentElement;var n=t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING,i=n?t:e,o=n?e:t,a=document.createRange();a.setStart(i,0),a.setEnd(o,0);var r,s,c=a.commonAncestorContainer;if(t!==c&&e!==c||i.contains(o))return\"BODY\"===(s=(r=c).nodeName)||\"HTML\"!==s&&h(r.firstElementChild)!==r?h(c):c;var l=A(t);return l.host?v(l.host,e):v(t,A(e).host)}function m(t){var e=\"top\"===(arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"top\")?\"scrollTop\":\"scrollLeft\",n=t.nodeName;if(\"BODY\"===n||\"HTML\"===n){var i=t.ownerDocument.documentElement;return(t.ownerDocument.scrollingElement||i)[e]}return t[e]}function g(t,e){var n=\"x\"===e?\"Left\":\"Top\",i=\"Left\"===n?\"Right\":\"Bottom\";return parseFloat(t[\"border\"+n+\"Width\"],10)+parseFloat(t[\"border\"+i+\"Width\"],10)}function b(t,e,n,i){return Math.max(e[\"offset\"+t],e[\"scroll\"+t],n[\"client\"+t],n[\"offset\"+t],n[\"scroll\"+t],f(10)?parseInt(n[\"offset\"+t])+parseInt(i[\"margin\"+(\"Height\"===t?\"Top\":\"Left\")])+parseInt(i[\"margin\"+(\"Height\"===t?\"Bottom\":\"Right\")]):0)}function y(t){var e=t.body,n=t.documentElement,i=f(10)&&getComputedStyle(n);return{height:b(\"Height\",e,n,i),width:b(\"Width\",e,n,i)}}var x=function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")},w=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}(),_=function(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t},T=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])}return t};function k(t){return T({},t,{right:t.left+t.width,bottom:t.top+t.height})}function C(t){var e={};try{if(f(10)){e=t.getBoundingClientRect();var n=m(t,\"top\"),i=m(t,\"left\");e.top+=n,e.left+=i,e.bottom+=n,e.right+=i}else e=t.getBoundingClientRect()}catch(t){}var o={left:e.left,top:e.top,width:e.right-e.left,height:e.bottom-e.top},a=\"HTML\"===t.nodeName?y(t.ownerDocument):{},r=a.width||t.clientWidth||o.right-o.left,s=a.height||t.clientHeight||o.bottom-o.top,l=t.offsetWidth-r,u=t.offsetHeight-s;if(l||u){var d=c(t);l-=g(d,\"x\"),u-=g(d,\"y\"),o.width-=l,o.height-=u}return k(o)}function E(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=f(10),o=\"HTML\"===e.nodeName,a=C(t),r=C(e),s=u(t),l=c(e),d=parseFloat(l.borderTopWidth,10),p=parseFloat(l.borderLeftWidth,10);n&&o&&(r.top=Math.max(r.top,0),r.left=Math.max(r.left,0));var h=k({top:a.top-r.top-d,left:a.left-r.left-p,width:a.width,height:a.height});if(h.marginTop=0,h.marginLeft=0,!i&&o){var A=parseFloat(l.marginTop,10),v=parseFloat(l.marginLeft,10);h.top-=d-A,h.bottom-=d-A,h.left-=p-v,h.right-=p-v,h.marginTop=A,h.marginLeft=v}return(i&&!n?e.contains(s):e===s&&\"BODY\"!==s.nodeName)&&(h=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=m(e,\"top\"),o=m(e,\"left\"),a=n?-1:1;return t.top+=i*a,t.bottom+=i*a,t.left+=o*a,t.right+=o*a,t}(h,e)),h}function M(t){if(!t||!t.parentElement||f())return document.documentElement;for(var e=t.parentElement;e&&\"none\"===c(e,\"transform\");)e=e.parentElement;return e||document.documentElement}function S(t,e,n,i){var o=arguments.length>4&&void 0!==arguments[4]&&arguments[4],a={top:0,left:0},r=o?M(t):v(t,e);if(\"viewport\"===i)a=function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=t.ownerDocument.documentElement,i=E(t,n),o=Math.max(n.clientWidth,window.innerWidth||0),a=Math.max(n.clientHeight,window.innerHeight||0),r=e?0:m(n),s=e?0:m(n,\"left\");return k({top:r-i.top+i.marginTop,left:s-i.left+i.marginLeft,width:o,height:a})}(r,o);else{var s=void 0;\"scrollParent\"===i?\"BODY\"===(s=u(l(e))).nodeName&&(s=t.ownerDocument.documentElement):s=\"window\"===i?t.ownerDocument.documentElement:i;var d=E(s,r,o);if(\"HTML\"!==s.nodeName||function t(e){var n=e.nodeName;if(\"BODY\"===n||\"HTML\"===n)return!1;if(\"fixed\"===c(e,\"position\"))return!0;var i=l(e);return!!i&&t(i)}(r))a=d;else{var p=y(t.ownerDocument),f=p.height,h=p.width;a.top+=d.top-d.marginTop,a.bottom=f+d.top,a.left+=d.left-d.marginLeft,a.right=h+d.left}}var A=\"number\"==typeof(n=n||0);return a.left+=A?n:n.left||0,a.top+=A?n:n.top||0,a.right-=A?n:n.right||0,a.bottom-=A?n:n.bottom||0,a}function D(t,e,n,i,o){var a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===t.indexOf(\"auto\"))return t;var r=S(n,i,a,o),s={top:{width:r.width,height:e.top-r.top},right:{width:r.right-e.right,height:r.height},bottom:{width:r.width,height:r.bottom-e.bottom},left:{width:e.left-r.left,height:r.height}},c=Object.keys(s).map(function(t){return T({key:t},s[t],{area:(e=s[t],e.width*e.height)});var e}).sort(function(t,e){return e.area-t.area}),l=c.filter(function(t){var e=t.width,i=t.height;return e>=n.clientWidth&&i>=n.clientHeight}),u=l.length>0?l[0].key:c[0].key,d=t.split(\"-\")[1];return u+(d?\"-\"+d:\"\")}function O(t,e,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;return E(n,i?M(e):v(e,n),i)}function B(t){var e=t.ownerDocument.defaultView.getComputedStyle(t),n=parseFloat(e.marginTop||0)+parseFloat(e.marginBottom||0),i=parseFloat(e.marginLeft||0)+parseFloat(e.marginRight||0);return{width:t.offsetWidth+i,height:t.offsetHeight+n}}function I(t){var e={left:\"right\",right:\"left\",bottom:\"top\",top:\"bottom\"};return t.replace(/left|right|bottom|top/g,function(t){return e[t]})}function N(t,e,n){n=n.split(\"-\")[0];var i=B(t),o={width:i.width,height:i.height},a=-1!==[\"right\",\"left\"].indexOf(n),r=a?\"top\":\"left\",s=a?\"left\":\"top\",c=a?\"height\":\"width\",l=a?\"width\":\"height\";return o[r]=e[r]+e[c]/2-i[c]/2,o[s]=n===s?e[s]-i[l]:e[I(s)],o}function L(t,e){return Array.prototype.find?t.find(e):t.filter(e)[0]}function P(t,e,n){return(void 0===n?t:t.slice(0,function(t,e,n){if(Array.prototype.findIndex)return t.findIndex(function(t){return t[e]===n});var i=L(t,function(t){return t[e]===n});return t.indexOf(i)}(t,\"name\",n))).forEach(function(t){t.function&&console.warn(\"`modifier.function` is deprecated, use `modifier.fn`!\");var n=t.function||t.fn;t.enabled&&s(n)&&(e.offsets.popper=k(e.offsets.popper),e.offsets.reference=k(e.offsets.reference),e=n(e,t))}),e}function j(t,e){return t.some(function(t){var n=t.name;return t.enabled&&n===e})}function $(t){for(var e=[!1,\"ms\",\"Webkit\",\"Moz\",\"O\"],n=t.charAt(0).toUpperCase()+t.slice(1),i=0;i<e.length;i++){var o=e[i],a=o?\"\"+o+n:t;if(void 0!==document.body.style[a])return a}return null}function F(t){var e=t.ownerDocument;return e?e.defaultView:window}function Y(t,e,n,i){n.updateBound=i,F(t).addEventListener(\"resize\",n.updateBound,{passive:!0});var o=u(t);return function t(e,n,i,o){var a=\"BODY\"===e.nodeName,r=a?e.ownerDocument.defaultView:e;r.addEventListener(n,i,{passive:!0}),a||t(u(r.parentNode),n,i,o),o.push(r)}(o,\"scroll\",n.updateBound,n.scrollParents),n.scrollElement=o,n.eventsEnabled=!0,n}function R(){var t,e;this.state.eventsEnabled&&(cancelAnimationFrame(this.scheduleUpdate),this.state=(t=this.reference,e=this.state,F(t).removeEventListener(\"resize\",e.updateBound),e.scrollParents.forEach(function(t){t.removeEventListener(\"scroll\",e.updateBound)}),e.updateBound=null,e.scrollParents=[],e.scrollElement=null,e.eventsEnabled=!1,e))}function z(t){return\"\"!==t&&!isNaN(parseFloat(t))&&isFinite(t)}function H(t,e){Object.keys(e).forEach(function(n){var i=\"\";-1!==[\"width\",\"height\",\"top\",\"right\",\"bottom\",\"left\"].indexOf(n)&&z(e[n])&&(i=\"px\"),t.style[n]=e[n]+i})}var Q=n&&/Firefox/i.test(navigator.userAgent);function V(t,e,n){var i=L(t,function(t){return t.name===e}),o=!!i&&t.some(function(t){return t.name===n&&t.enabled&&t.order<i.order});if(!o){var a=\"`\"+e+\"`\",r=\"`\"+n+\"`\";console.warn(r+\" modifier is required by \"+a+\" modifier in order to work, be sure to include it before \"+a+\"!\")}return o}var G=[\"auto-start\",\"auto\",\"auto-end\",\"top-start\",\"top\",\"top-end\",\"right-start\",\"right\",\"right-end\",\"bottom-end\",\"bottom\",\"bottom-start\",\"left-end\",\"left\",\"left-start\"],U=G.slice(3);function W(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=U.indexOf(t),i=U.slice(n+1).concat(U.slice(0,n));return e?i.reverse():i}var Z={FLIP:\"flip\",CLOCKWISE:\"clockwise\",COUNTERCLOCKWISE:\"counterclockwise\"};function X(t,e,n,i){var o=[0,0],a=-1!==[\"right\",\"left\"].indexOf(i),r=t.split(/(\\+|\\-)/).map(function(t){return t.trim()}),s=r.indexOf(L(r,function(t){return-1!==t.search(/,|\\s/)}));r[s]&&-1===r[s].indexOf(\",\")&&console.warn(\"Offsets separated by white space(s) are deprecated, use a comma (,) instead.\");var c=/\\s*,\\s*|\\s+/,l=-1!==s?[r.slice(0,s).concat([r[s].split(c)[0]]),[r[s].split(c)[1]].concat(r.slice(s+1))]:[r];return(l=l.map(function(t,i){var o=(1===i?!a:a)?\"height\":\"width\",r=!1;return t.reduce(function(t,e){return\"\"===t[t.length-1]&&-1!==[\"+\",\"-\"].indexOf(e)?(t[t.length-1]=e,r=!0,t):r?(t[t.length-1]+=e,r=!1,t):t.concat(e)},[]).map(function(t){return function(t,e,n,i){var o=t.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/),a=+o[1],r=o[2];if(!a)return t;if(0===r.indexOf(\"%\")){var s=void 0;switch(r){case\"%p\":s=n;break;case\"%\":case\"%r\":default:s=i}return k(s)[e]/100*a}if(\"vh\"===r||\"vw\"===r)return(\"vh\"===r?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*a;return a}(t,o,e,n)})})).forEach(function(t,e){t.forEach(function(n,i){z(n)&&(o[e]+=n*(\"-\"===t[i-1]?-1:1))})}),o}var q={placement:\"bottom\",positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(t){var e=t.placement,n=e.split(\"-\")[0],i=e.split(\"-\")[1];if(i){var o=t.offsets,a=o.reference,r=o.popper,s=-1!==[\"bottom\",\"top\"].indexOf(n),c=s?\"left\":\"top\",l=s?\"width\":\"height\",u={start:_({},c,a[c]),end:_({},c,a[c]+a[l]-r[l])};t.offsets.popper=T({},r,u[i])}return t}},offset:{order:200,enabled:!0,fn:function(t,e){var n=e.offset,i=t.placement,o=t.offsets,a=o.popper,r=o.reference,s=i.split(\"-\")[0],c=void 0;return c=z(+n)?[+n,0]:X(n,a,r,s),\"left\"===s?(a.top+=c[0],a.left-=c[1]):\"right\"===s?(a.top+=c[0],a.left+=c[1]):\"top\"===s?(a.left+=c[0],a.top-=c[1]):\"bottom\"===s&&(a.left+=c[0],a.top+=c[1]),t.popper=a,t},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(t,e){var n=e.boundariesElement||h(t.instance.popper);t.instance.reference===n&&(n=h(n));var i=$(\"transform\"),o=t.instance.popper.style,a=o.top,r=o.left,s=o[i];o.top=\"\",o.left=\"\",o[i]=\"\";var c=S(t.instance.popper,t.instance.reference,e.padding,n,t.positionFixed);o.top=a,o.left=r,o[i]=s,e.boundaries=c;var l=e.priority,u=t.offsets.popper,d={primary:function(t){var n=u[t];return u[t]<c[t]&&!e.escapeWithReference&&(n=Math.max(u[t],c[t])),_({},t,n)},secondary:function(t){var n=\"right\"===t?\"left\":\"top\",i=u[n];return u[t]>c[t]&&!e.escapeWithReference&&(i=Math.min(u[n],c[t]-(\"right\"===t?u.width:u.height))),_({},n,i)}};return l.forEach(function(t){var e=-1!==[\"left\",\"top\"].indexOf(t)?\"primary\":\"secondary\";u=T({},u,d[e](t))}),t.offsets.popper=u,t},priority:[\"left\",\"right\",\"top\",\"bottom\"],padding:5,boundariesElement:\"scrollParent\"},keepTogether:{order:400,enabled:!0,fn:function(t){var e=t.offsets,n=e.popper,i=e.reference,o=t.placement.split(\"-\")[0],a=Math.floor,r=-1!==[\"top\",\"bottom\"].indexOf(o),s=r?\"right\":\"bottom\",c=r?\"left\":\"top\",l=r?\"width\":\"height\";return n[s]<a(i[c])&&(t.offsets.popper[c]=a(i[c])-n[l]),n[c]>a(i[s])&&(t.offsets.popper[c]=a(i[s])),t}},arrow:{order:500,enabled:!0,fn:function(t,e){var n;if(!V(t.instance.modifiers,\"arrow\",\"keepTogether\"))return t;var i=e.element;if(\"string\"==typeof i){if(!(i=t.instance.popper.querySelector(i)))return t}else if(!t.instance.popper.contains(i))return console.warn(\"WARNING: `arrow.element` must be child of its popper element!\"),t;var o=t.placement.split(\"-\")[0],a=t.offsets,r=a.popper,s=a.reference,l=-1!==[\"left\",\"right\"].indexOf(o),u=l?\"height\":\"width\",d=l?\"Top\":\"Left\",p=d.toLowerCase(),f=l?\"left\":\"top\",h=l?\"bottom\":\"right\",A=B(i)[u];s[h]-A<r[p]&&(t.offsets.popper[p]-=r[p]-(s[h]-A)),s[p]+A>r[h]&&(t.offsets.popper[p]+=s[p]+A-r[h]),t.offsets.popper=k(t.offsets.popper);var v=s[p]+s[u]/2-A/2,m=c(t.instance.popper),g=parseFloat(m[\"margin\"+d],10),b=parseFloat(m[\"border\"+d+\"Width\"],10),y=v-t.offsets.popper[p]-g-b;return y=Math.max(Math.min(r[u]-A,y),0),t.arrowElement=i,t.offsets.arrow=(_(n={},p,Math.round(y)),_(n,f,\"\"),n),t},element:\"[x-arrow]\"},flip:{order:600,enabled:!0,fn:function(t,e){if(j(t.instance.modifiers,\"inner\"))return t;if(t.flipped&&t.placement===t.originalPlacement)return t;var n=S(t.instance.popper,t.instance.reference,e.padding,e.boundariesElement,t.positionFixed),i=t.placement.split(\"-\")[0],o=I(i),a=t.placement.split(\"-\")[1]||\"\",r=[];switch(e.behavior){case Z.FLIP:r=[i,o];break;case Z.CLOCKWISE:r=W(i);break;case Z.COUNTERCLOCKWISE:r=W(i,!0);break;default:r=e.behavior}return r.forEach(function(s,c){if(i!==s||r.length===c+1)return t;i=t.placement.split(\"-\")[0],o=I(i);var l=t.offsets.popper,u=t.offsets.reference,d=Math.floor,p=\"left\"===i&&d(l.right)>d(u.left)||\"right\"===i&&d(l.left)<d(u.right)||\"top\"===i&&d(l.bottom)>d(u.top)||\"bottom\"===i&&d(l.top)<d(u.bottom),f=d(l.left)<d(n.left),h=d(l.right)>d(n.right),A=d(l.top)<d(n.top),v=d(l.bottom)>d(n.bottom),m=\"left\"===i&&f||\"right\"===i&&h||\"top\"===i&&A||\"bottom\"===i&&v,g=-1!==[\"top\",\"bottom\"].indexOf(i),b=!!e.flipVariations&&(g&&\"start\"===a&&f||g&&\"end\"===a&&h||!g&&\"start\"===a&&A||!g&&\"end\"===a&&v),y=!!e.flipVariationsByContent&&(g&&\"start\"===a&&h||g&&\"end\"===a&&f||!g&&\"start\"===a&&v||!g&&\"end\"===a&&A),x=b||y;(p||m||x)&&(t.flipped=!0,(p||m)&&(i=r[c+1]),x&&(a=function(t){return\"end\"===t?\"start\":\"start\"===t?\"end\":t}(a)),t.placement=i+(a?\"-\"+a:\"\"),t.offsets.popper=T({},t.offsets.popper,N(t.instance.popper,t.offsets.reference,t.placement)),t=P(t.instance.modifiers,t,\"flip\"))}),t},behavior:\"flip\",padding:5,boundariesElement:\"viewport\",flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:function(t){var e=t.placement,n=e.split(\"-\")[0],i=t.offsets,o=i.popper,a=i.reference,r=-1!==[\"left\",\"right\"].indexOf(n),s=-1===[\"top\",\"left\"].indexOf(n);return o[r?\"left\":\"top\"]=a[n]-(s?o[r?\"width\":\"height\"]:0),t.placement=I(e),t.offsets.popper=k(o),t}},hide:{order:800,enabled:!0,fn:function(t){if(!V(t.instance.modifiers,\"hide\",\"preventOverflow\"))return t;var e=t.offsets.reference,n=L(t.instance.modifiers,function(t){return\"preventOverflow\"===t.name}).boundaries;if(e.bottom<n.top||e.left>n.right||e.top>n.bottom||e.right<n.left){if(!0===t.hide)return t;t.hide=!0,t.attributes[\"x-out-of-boundaries\"]=\"\"}else{if(!1===t.hide)return t;t.hide=!1,t.attributes[\"x-out-of-boundaries\"]=!1}return t}},computeStyle:{order:850,enabled:!0,fn:function(t,e){var n=e.x,i=e.y,o=t.offsets.popper,a=L(t.instance.modifiers,function(t){return\"applyStyle\"===t.name}).gpuAcceleration;void 0!==a&&console.warn(\"WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!\");var r=void 0!==a?a:e.gpuAcceleration,s=h(t.instance.popper),c=C(s),l={position:o.position},u=function(t,e){var n=t.offsets,i=n.popper,o=n.reference,a=Math.round,r=Math.floor,s=function(t){return t},c=a(o.width),l=a(i.width),u=-1!==[\"left\",\"right\"].indexOf(t.placement),d=-1!==t.placement.indexOf(\"-\"),p=e?u||d||c%2==l%2?a:r:s,f=e?a:s;return{left:p(c%2==1&&l%2==1&&!d&&e?i.left-1:i.left),top:f(i.top),bottom:f(i.bottom),right:p(i.right)}}(t,window.devicePixelRatio<2||!Q),d=\"bottom\"===n?\"top\":\"bottom\",p=\"right\"===i?\"left\":\"right\",f=$(\"transform\"),A=void 0,v=void 0;if(v=\"bottom\"===d?\"HTML\"===s.nodeName?-s.clientHeight+u.bottom:-c.height+u.bottom:u.top,A=\"right\"===p?\"HTML\"===s.nodeName?-s.clientWidth+u.right:-c.width+u.right:u.left,r&&f)l[f]=\"translate3d(\"+A+\"px, \"+v+\"px, 0)\",l[d]=0,l[p]=0,l.willChange=\"transform\";else{var m=\"bottom\"===d?-1:1,g=\"right\"===p?-1:1;l[d]=v*m,l[p]=A*g,l.willChange=d+\", \"+p}var b={\"x-placement\":t.placement};return t.attributes=T({},b,t.attributes),t.styles=T({},l,t.styles),t.arrowStyles=T({},t.offsets.arrow,t.arrowStyles),t},gpuAcceleration:!0,x:\"bottom\",y:\"right\"},applyStyle:{order:900,enabled:!0,fn:function(t){var e,n;return H(t.instance.popper,t.styles),e=t.instance.popper,n=t.attributes,Object.keys(n).forEach(function(t){!1!==n[t]?e.setAttribute(t,n[t]):e.removeAttribute(t)}),t.arrowElement&&Object.keys(t.arrowStyles).length&&H(t.arrowElement,t.arrowStyles),t},onLoad:function(t,e,n,i,o){var a=O(o,e,t,n.positionFixed),r=D(n.placement,a,e,t,n.modifiers.flip.boundariesElement,n.modifiers.flip.padding);return e.setAttribute(\"x-placement\",r),H(e,{position:n.positionFixed?\"fixed\":\"absolute\"}),n},gpuAcceleration:void 0}}},K=function(){function t(e,n){var i=this,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};x(this,t),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=r(this.update.bind(this)),this.options=T({},t.Defaults,o),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=e&&e.jquery?e[0]:e,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(T({},t.Defaults.modifiers,o.modifiers)).forEach(function(e){i.options.modifiers[e]=T({},t.Defaults.modifiers[e]||{},o.modifiers?o.modifiers[e]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(t){return T({name:t},i.options.modifiers[t])}).sort(function(t,e){return t.order-e.order}),this.modifiers.forEach(function(t){t.enabled&&s(t.onLoad)&&t.onLoad(i.reference,i.popper,i.options,t,i.state)}),this.update();var a=this.options.eventsEnabled;a&&this.enableEventListeners(),this.state.eventsEnabled=a}return w(t,[{key:\"update\",value:function(){return function(){if(!this.state.isDestroyed){var t={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};t.offsets.reference=O(this.state,this.popper,this.reference,this.options.positionFixed),t.placement=D(this.options.placement,t.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),t.originalPlacement=t.placement,t.positionFixed=this.options.positionFixed,t.offsets.popper=N(this.popper,t.offsets.reference,t.placement),t.offsets.popper.position=this.options.positionFixed?\"fixed\":\"absolute\",t=P(this.modifiers,t),this.state.isCreated?this.options.onUpdate(t):(this.state.isCreated=!0,this.options.onCreate(t))}}.call(this)}},{key:\"destroy\",value:function(){return function(){return this.state.isDestroyed=!0,j(this.modifiers,\"applyStyle\")&&(this.popper.removeAttribute(\"x-placement\"),this.popper.style.position=\"\",this.popper.style.top=\"\",this.popper.style.left=\"\",this.popper.style.right=\"\",this.popper.style.bottom=\"\",this.popper.style.willChange=\"\",this.popper.style[$(\"transform\")]=\"\"),this.disableEventListeners(),this.options.removeOnDestroy&&this.popper.parentNode.removeChild(this.popper),this}.call(this)}},{key:\"enableEventListeners\",value:function(){return function(){this.state.eventsEnabled||(this.state=Y(this.reference,this.options,this.state,this.scheduleUpdate))}.call(this)}},{key:\"disableEventListeners\",value:function(){return R.call(this)}}]),t}();K.Utils=(\"undefined\"!=typeof window?window:t).PopperUtils,K.placements=G,K.Defaults=q,e.a=K}).call(this,n(15))},function(t,e,n){\"use strict\";\n/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */e.a=function(t){return Math.random().toString(36).replace(/[^a-z]+/g,\"\").substr(0,t||5)}},function(t,e,n){var i=n(42);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"6d914181\",i,!0,{})},function(t,e,n){var i=n(44);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"2fc216d3\",i,!0,{})},function(t,e,n){var i=n(46);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"95523852\",i,!0,{})},function(t,e,n){\"use strict\";(function(t){n.d(e,\"a\",function(){return a});var i=void 0;function o(){o.init||(o.init=!0,i=-1!==function(){var t=window.navigator.userAgent,e=t.indexOf(\"MSIE \");if(e>0)return parseInt(t.substring(e+5,t.indexOf(\".\",e)),10);if(t.indexOf(\"Trident/\")>0){var n=t.indexOf(\"rv:\");return parseInt(t.substring(n+3,t.indexOf(\".\",n)),10)}var i=t.indexOf(\"Edge/\");return i>0?parseInt(t.substring(i+5,t.indexOf(\".\",i)),10):-1}())}var a={render:function(){var t=this.$createElement;return(this._self._c||t)(\"div\",{staticClass:\"resize-observer\",attrs:{tabindex:\"-1\"}})},staticRenderFns:[],_scopeId:\"data-v-b329ee4c\",name:\"resize-observer\",methods:{compareAndNotify:function(){this._w===this.$el.offsetWidth&&this._h===this.$el.offsetHeight||(this._w=this.$el.offsetWidth,this._h=this.$el.offsetHeight,this.$emit(\"notify\"))},addResizeHandlers:function(){this._resizeObject.contentDocument.defaultView.addEventListener(\"resize\",this.compareAndNotify),this.compareAndNotify()},removeResizeHandlers:function(){this._resizeObject&&this._resizeObject.onload&&(!i&&this._resizeObject.contentDocument&&this._resizeObject.contentDocument.defaultView.removeEventListener(\"resize\",this.compareAndNotify),delete this._resizeObject.onload)}},mounted:function(){var t=this;o(),this.$nextTick(function(){t._w=t.$el.offsetWidth,t._h=t.$el.offsetHeight});var e=document.createElement(\"object\");this._resizeObject=e,e.setAttribute(\"aria-hidden\",\"true\"),e.setAttribute(\"tabindex\",-1),e.onload=this.addResizeHandlers,e.type=\"text/html\",i&&this.$el.appendChild(e),e.data=\"about:blank\",i||this.$el.appendChild(e)},beforeDestroy:function(){this.removeResizeHandlers()}};var r={version:\"0.4.5\",install:function(t){t.component(\"resize-observer\",a),t.component(\"ResizeObserver\",a)}},s=null;\"undefined\"!=typeof window?s=window.Vue:void 0!==t&&(s=t.Vue),s&&s.use(r)}).call(this,n(15))},function(t,e,n){var i=n(81);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"1351c3b7\",i,!0,{})},function(t,e,n){\"use strict\";\n/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */e.a=function(t){t.mounted?Array.isArray(t.mounted)||(t.mounted=[t.mounted]):t.mounted=[],t.mounted.push(function(){this.$el.setAttribute(\"data-v-\".concat(\"6673a70\"),\"\")})}},function(t,e,n){\"use strict\";n.r(e);var i={name:\"PopoverMenuItem\",props:{item:{type:Object,required:!0,default:function(){return{key:\"nextcloud-link\",href:\"https://nextcloud.com\",icon:\"icon-links\",text:\"Nextcloud\"}},validator:function(t){return!t.input||-1!==[\"text\",\"checkbox\"].indexOf(t.input)}}},computed:{key:function(){return this.item.key?this.item.key:Math.round(16*Math.random()*1e6).toString(16)},iconIsUrl:function(){try{return new URL(this.item.icon),!0}catch(t){return!1}}},methods:{action:function(t){this.item.action&&this.item.action(t)}}},o=(n(41),n(43),n(0)),a={name:\"PopoverMenu\",components:{PopoverMenuItem:Object(o.a)(i,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"li\",[t.item.href?n(\"a\",{staticClass:\"focusable\",attrs:{href:t.item.href?t.item.href:\"#\",target:t.item.target?t.item.target:\"\",download:t.item.download,rel:\"noreferrer noopener\"},on:{click:t.action}},[t.iconIsUrl?n(\"img\",{attrs:{src:t.item.icon}}):n(\"span\",{class:t.item.icon}),t._v(\" \"),t.item.text&&t.item.longtext?n(\"p\",[n(\"strong\",{staticClass:\"menuitem-text\"},[t._v(\"\\n\\t\\t\\t\\t\"+t._s(t.item.text)+\"\\n\\t\\t\\t\")]),n(\"br\"),t._v(\" \"),n(\"span\",{staticClass:\"menuitem-text-detail\"},[t._v(\"\\n\\t\\t\\t\\t\"+t._s(t.item.longtext)+\"\\n\\t\\t\\t\")])]):t.item.text?n(\"span\",[t._v(\"\\n\\t\\t\\t\"+t._s(t.item.text)+\"\\n\\t\\t\")]):t.item.longtext?n(\"p\",[t._v(\"\\n\\t\\t\\t\"+t._s(t.item.longtext)+\"\\n\\t\\t\")]):t._e()]):t.item.input?n(\"span\",{staticClass:\"menuitem\",class:{active:t.item.active}},[\"checkbox\"!==t.item.input?n(\"span\",{class:t.item.icon}):t._e(),t._v(\" \"),\"text\"===t.item.input?n(\"form\",{class:t.item.input,on:{submit:function(e){return e.preventDefault(),t.item.action(e)}}},[n(\"input\",{attrs:{type:t.item.input,placeholder:t.item.text,required:\"\"},domProps:{value:t.item.value}}),t._v(\" \"),n(\"input\",{staticClass:\"icon-confirm\",attrs:{type:\"submit\",value:\"\"}})]):[\"checkbox\"===t.item.input?n(\"input\",{directives:[{name:\"model\",rawName:\"v-model\",value:t.item.model,expression:\"item.model\"}],class:t.item.input,attrs:{id:t.key,type:\"checkbox\"},domProps:{checked:Array.isArray(t.item.model)?t._i(t.item.model,null)>-1:t.item.model},on:{change:[function(e){var n=t.item.model,i=e.target,o=!!i.checked;if(Array.isArray(n)){var a=t._i(n,null);i.checked?a<0&&t.$set(t.item,\"model\",n.concat([null])):a>-1&&t.$set(t.item,\"model\",n.slice(0,a).concat(n.slice(a+1)))}else t.$set(t.item,\"model\",o)},t.item.action]}}):\"radio\"===t.item.input?n(\"input\",{directives:[{name:\"model\",rawName:\"v-model\",value:t.item.model,expression:\"item.model\"}],class:t.item.input,attrs:{id:t.key,type:\"radio\"},domProps:{checked:t._q(t.item.model,null)},on:{change:[function(e){return t.$set(t.item,\"model\",null)},t.item.action]}}):n(\"input\",{directives:[{name:\"model\",rawName:\"v-model\",value:t.item.model,expression:\"item.model\"}],class:t.item.input,attrs:{id:t.key,type:t.item.input},domProps:{value:t.item.model},on:{change:t.item.action,input:function(e){e.target.composing||t.$set(t.item,\"model\",e.target.value)}}}),t._v(\" \"),n(\"label\",{attrs:{for:t.key},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.item.action(e)}}},[t._v(\"\\n\\t\\t\\t\\t\"+t._s(t.item.text)+\"\\n\\t\\t\\t\")])]],2):t.item.action?n(\"button\",{staticClass:\"menuitem focusable\",class:{active:t.item.active},attrs:{disabled:t.item.disabled},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.item.action(e)}}},[n(\"span\",{class:t.item.icon}),t._v(\" \"),t.item.text&&t.item.longtext?n(\"p\",[n(\"strong\",{staticClass:\"menuitem-text\"},[t._v(\"\\n\\t\\t\\t\\t\"+t._s(t.item.text)+\"\\n\\t\\t\\t\")]),n(\"br\"),t._v(\" \"),n(\"span\",{staticClass:\"menuitem-text-detail\"},[t._v(\"\\n\\t\\t\\t\\t\"+t._s(t.item.longtext)+\"\\n\\t\\t\\t\")])]):t.item.text?n(\"span\",[t._v(\"\\n\\t\\t\\t\"+t._s(t.item.text)+\"\\n\\t\\t\")]):t.item.longtext?n(\"p\",[t._v(\"\\n\\t\\t\\t\"+t._s(t.item.longtext)+\"\\n\\t\\t\")]):t._e()]):n(\"span\",{staticClass:\"menuitem\",class:{active:t.item.active}},[n(\"span\",{class:t.item.icon}),t._v(\" \"),t.item.text&&t.item.longtext?n(\"p\",[n(\"strong\",{staticClass:\"menuitem-text\"},[t._v(\"\\n\\t\\t\\t\\t\"+t._s(t.item.text)+\"\\n\\t\\t\\t\")]),n(\"br\"),t._v(\" \"),n(\"span\",{staticClass:\"menuitem-text-detail\"},[t._v(\"\\n\\t\\t\\t\\t\"+t._s(t.item.longtext)+\"\\n\\t\\t\\t\")])]):t.item.text?n(\"span\",[t._v(\"\\n\\t\\t\\t\"+t._s(t.item.text)+\"\\n\\t\\t\")]):t.item.longtext?n(\"p\",[t._v(\"\\n\\t\\t\\t\"+t._s(t.item.longtext)+\"\\n\\t\\t\")]):t._e()])])},[],!1,null,\"8dc4efb0\",null).exports},props:{menu:{type:Array,default:function(){return[{href:\"https://nextcloud.com\",icon:\"icon-links\",text:\"Nextcloud\"}]},required:!0}}},r=(n(45),Object(o.a)(a,function(){var t=this.$createElement,e=this._self._c||t;return e(\"ul\",this._l(this.menu,function(t,n){return e(\"PopoverMenuItem\",{key:n,attrs:{item:t}})}),1)},[],!1,null,\"2f982451\",null).exports);n.d(e,\"PopoverMenu\",function(){return r});\n/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */e.default=r},function(t,e){},function(t,e,n){var i=n(91);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"2601b667\",i,!0,{})},function(t,e,n){var i=n(95);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"a39cae00\",i,!0,{})},function(t,e,n){var i=n(97);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"30f6e694\",i,!0,{})},function(t,e,n){var i=n(120);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"51023bd3\",i,!0,{})},function(t,e,n){\"use strict\";n.r(e);var i=n(13),o=n.n(i),a=n(6),r=n(17),s=function(t){var e=t.getBoundingClientRect(),n=document.documentElement.clientHeight,i=document.documentElement.clientWidth,o=Object.assign({});return o.top=e.top<0,o.left=e.left<0,o.bottom=e.bottom>n,o.right=e.right>i,o.any=o.top||o.left||o.bottom||o.right,o.all=o.top&&o.left&&o.bottom&&o.right,o.offsetY=o.top?e.top:o.bottom?e.bottom-n:0,o.offsetX=o.left?e.left:o.right?e.right-i:0,o},c=n(3),l=n.n(c),u=function(t,e,n){t.forEach(function(i,o){var a=!i.componentOptions&&i.tag,r=i.componentOptions&&\"string\"==typeof i.componentOptions.tag&&-1===e.indexOf(i.componentOptions.tag);(a||r)&&(l.a.util.warn(\"\".concat(a?i.tag:i.componentOptions.tag,\" is not allowed inside the \").concat(n.$options.name,\" component\"),n),t.splice(o,1))})},d=[\"ActionButton\",\"ActionCheckbox\",\"ActionInput\",\"ActionLink\",\"ActionRouter\",\"ActionText\",\"ActionTextEditable\"],p={name:\"Actions\",directives:{ClickOutside:o.a,tooltip:a.default},props:{open:{type:Boolean,default:!1},menuAlign:{type:String,default:\"center\",validator:function(t){return[\"left\",\"center\",\"right\"].indexOf(t)>-1}}},data:function(){return{actions:[],opened:this.open,focusIndex:0,randomId:\"menu-\"+Object(r.a)(),offsetX:0}},computed:{isValidSingleAction:function(){return 1===this.actions.length},firstAction:function(){return this.actions[0]},firstActionElement:function(){if(this.firstAction&&this.firstAction.componentOptions){var t=this.firstAction.componentOptions.tag;if(\"ActionLink\"===t)return{is:\"a\",href:this.getVNodeProp(this.firstAction,\"href\"),target:this.getVNodeProp(this.firstAction,\"target\")};if(\"ActionRouter\"===t)return{is:\"router-link\",to:this.getVNodeProp(this.firstAction,\"to\"),exact:this.getVNodeProp(this.firstAction,\"exact\")}}return{is:\"button\"}},firstActionEvent:function(){return this.firstAction&&this.firstAction.componentOptions&&this.firstAction.componentOptions.listeners&&this.firstAction.componentOptions.listeners.click?\"click\":null}},watch:{open:function(t){var e=this;this.opened=t,this.opened&&this.$nextTick(function(){e.onOpen()})}},beforeMount:function(){this.initActions(),u(this.$slots.default,d,this)},mounted:function(){this.popupItem=this.$el},beforeUpdate:function(){u(this.$slots.default,d,this)},methods:{toggleMenu:function(){var t=this;this.opened=!this.opened,this.opened&&(this.$nextTick(function(){t.onOpen(),t.focusFirstAction()}),this.$emit(\"open\")),this.$emit(\"update:open\",this.opened)},closeMenu:function(){this.opened&&(this.$emit(\"update:open\",!1),this.$emit(\"close\")),this.opened=!1,this.offsetX=0},onOpen:function(){this.offsetX=0;var t=s(this.$refs.menu);t.any&&(this.offsetX=t.offsetX>0?Math.round(t.offsetX)+5:Math.round(t.offsetX)-5)},onMouseFocusAction:function(t){if(document.activeElement!==t.target){var e=t.target.closest(\"li\");if(e){var n=e.querySelector(\".focusable\");if(n){var i=this.$refs.menu.querySelectorAll(\".focusable\"),o=Array.prototype.indexOf.call(i,n);o>-1&&(this.focusIndex=o,this.focusAction())}}}},removeCurrentActive:function(){var t=this.$refs.menu.querySelector(\"li.active\");t&&t.classList.remove(\"active\")},focusAction:function(){var t=this.$refs.menu.querySelectorAll(\".focusable\")[this.focusIndex];if(t){var e=t.closest(\"li\");t.focus(),e&&(this.removeCurrentActive(),e.classList.add(\"active\"))}},focusPreviousAction:function(){this.focusIndex=Math.max(this.focusIndex-1,0),this.focusAction()},focusNextAction:function(){this.focusIndex=Math.min(this.focusIndex+1,this.$refs.menu.querySelectorAll(\".focusable\").length-1),this.focusAction()},focusFirstAction:function(){this.focusIndex=0,this.focusAction()},focusLastAction:function(){this.focusIndex=this.$el.querySelectorAll(\".focusable\").length-1,this.focusAction()},getVNodeProp:function(t,e){return t.componentOptions.propsData[e]},execFirstAction:function(t){this.firstAction&&this.firstAction.componentOptions&&this.firstAction.componentOptions.listeners&&this.firstAction.componentOptions.listeners.click&&(this.firstAction.componentOptions.listeners.click(t),t.preventDefault())},initActions:function(){this.actions=this.$slots.default.filter(function(t){return t&&t.componentOptions})||[]}}},f=(n(80),n(0)),h=n(25),A=n.n(h),v=Object(f.a)(p,function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.isValidSingleAction?n(\"element\",t._b({directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:t.getVNodeProp(t.firstAction,\"text\"),expression:\"getVNodeProp(firstAction, 'text')\",modifiers:{auto:!0}}],staticClass:\"action-item action-item--single\",class:t.getVNodeProp(t.firstAction,\"icon\"),attrs:{rel:\"noreferrer noopener\"},on:t._d({},[t.firstActionEvent,t.execFirstAction])},\"element\",t.firstActionElement,!1),[n(\"span\",{attrs:{\"aria-hidden\":!0,hidden:\"\"}},[t._t(\"default\")],2)]):n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.actions.length>0,expression:\"actions.length > 0\"}],staticClass:\"action-item\",class:{\"action-item--open\":t.opened},on:{keydown:[function(e){return!e.type.indexOf(\"key\")&&t._k(e.keyCode,\"up\",38,e.key,[\"Up\",\"ArrowUp\"])?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.focusPreviousAction(e))},function(e){return!e.type.indexOf(\"key\")&&t._k(e.keyCode,\"down\",40,e.key,[\"Down\",\"ArrowDown\"])?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.focusNextAction(e))},function(e){return!e.type.indexOf(\"key\")&&t._k(e.keyCode,\"tab\",9,e.key,\"Tab\")?null:e.shiftKey?(e.preventDefault(),t.focusPreviousAction(e)):null},function(e){return!e.type.indexOf(\"key\")&&t._k(e.keyCode,\"page-up\",void 0,e.key,void 0)?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.focusFirstAction(e))},function(e){return!e.type.indexOf(\"key\")&&t._k(e.keyCode,\"page-down\",void 0,e.key,void 0)?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.focusLastAction(e))},function(e){return!e.type.indexOf(\"key\")&&t._k(e.keyCode,\"esc\",27,e.key,[\"Esc\",\"Escape\"])?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.closeMenu(e))}]}},[n(\"a\",{directives:[{name:\"click-outside\",rawName:\"v-click-outside\",value:t.closeMenu,expression:\"closeMenu\"}],staticClass:\"icon action-item__menutoggle\",attrs:{href:\"#\",\"aria-haspopup\":\"true\",\"aria-controls\":t.randomId,\"aria-expanded\":t.opened},on:{click:function(e){return e.preventDefault(),t.toggleMenu(e)},keydown:function(e){return!e.type.indexOf(\"key\")&&t._k(e.keyCode,\"space\",32,e.key,[\" \",\"Spacebar\"])?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.toggleMenu(e))}}}),t._v(\" \"),t.opened?n(\"div\",{ref:\"menu\",staticClass:\"action-item__menu\",class:[\"menu-\"+t.menuAlign,{open:t.opened}],style:{marginRight:t.offsetX+\"px\"},attrs:{tabindex:\"-1\"},on:{mousemove:t.onMouseFocusAction}},[n(\"div\",{staticClass:\"action-item__menu_arrow\",style:{transform:\"translateX(\"+t.offsetX+\"px)\"}}),t._v(\" \"),n(\"ul\",{attrs:{id:t.randomId,tabindex:\"-1\"}},[t._t(\"default\")],2)]):t._e()])},[],!1,null,\"627a433f\",null);\"function\"==typeof A.a&&A()(v);var m=v.exports;n.d(e,\"Actions\",function(){return m});\n/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */e.default=m},function(t,e,n){window,t.exports=function(t){var e={};function n(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return t[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:i})},n.r=function(t){Object.defineProperty(t,\"__esModule\",{value:!0})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=3)}([function(t,e,n){var i;!function(o){\"use strict\";var a={},r=/d{1,4}|M{1,4}|YY(?:YY)?|S{1,3}|Do|ZZ|([HhMsDm])\\1?|[aA]|\"[^\"]*\"|'[^']*'/g,s=/\\d\\d?/,c=/[0-9]*['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+|[\\u0600-\\u06FF\\/]+(\\s*?[\\u0600-\\u06FF]+){1,2}/i,l=/\\[([^]*?)\\]/gm,u=function(){};function d(t,e){for(var n=[],i=0,o=t.length;i<o;i++)n.push(t[i].substr(0,e));return n}function p(t){return function(e,n,i){var o=i[t].indexOf(n.charAt(0).toUpperCase()+n.substr(1).toLowerCase());~o&&(e.month=o)}}function f(t,e){for(t=String(t),e=e||2;t.length<e;)t=\"0\"+t;return t}var h=[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],A=[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],v=d(A,3),m=d(h,3);a.i18n={dayNamesShort:m,dayNames:h,monthNamesShort:v,monthNames:A,amPm:[\"am\",\"pm\"],DoFn:function(t){return t+[\"th\",\"st\",\"nd\",\"rd\"][t%10>3?0:(t-t%10!=10)*t%10]}};var g={D:function(t){return t.getDate()},DD:function(t){return f(t.getDate())},Do:function(t,e){return e.DoFn(t.getDate())},d:function(t){return t.getDay()},dd:function(t){return f(t.getDay())},ddd:function(t,e){return e.dayNamesShort[t.getDay()]},dddd:function(t,e){return e.dayNames[t.getDay()]},M:function(t){return t.getMonth()+1},MM:function(t){return f(t.getMonth()+1)},MMM:function(t,e){return e.monthNamesShort[t.getMonth()]},MMMM:function(t,e){return e.monthNames[t.getMonth()]},YY:function(t){return String(t.getFullYear()).substr(2)},YYYY:function(t){return f(t.getFullYear(),4)},h:function(t){return t.getHours()%12||12},hh:function(t){return f(t.getHours()%12||12)},H:function(t){return t.getHours()},HH:function(t){return f(t.getHours())},m:function(t){return t.getMinutes()},mm:function(t){return f(t.getMinutes())},s:function(t){return t.getSeconds()},ss:function(t){return f(t.getSeconds())},S:function(t){return Math.round(t.getMilliseconds()/100)},SS:function(t){return f(Math.round(t.getMilliseconds()/10),2)},SSS:function(t){return f(t.getMilliseconds(),3)},a:function(t,e){return t.getHours()<12?e.amPm[0]:e.amPm[1]},A:function(t,e){return t.getHours()<12?e.amPm[0].toUpperCase():e.amPm[1].toUpperCase()},ZZ:function(t){var e=t.getTimezoneOffset();return(e>0?\"-\":\"+\")+f(100*Math.floor(Math.abs(e)/60)+Math.abs(e)%60,4)}},b={D:[s,function(t,e){t.day=e}],Do:[new RegExp(s.source+c.source),function(t,e){t.day=parseInt(e,10)}],M:[s,function(t,e){t.month=e-1}],YY:[s,function(t,e){var n=+(\"\"+(new Date).getFullYear()).substr(0,2);t.year=\"\"+(e>68?n-1:n)+e}],h:[s,function(t,e){t.hour=e}],m:[s,function(t,e){t.minute=e}],s:[s,function(t,e){t.second=e}],YYYY:[/\\d{4}/,function(t,e){t.year=e}],S:[/\\d/,function(t,e){t.millisecond=100*e}],SS:[/\\d{2}/,function(t,e){t.millisecond=10*e}],SSS:[/\\d{3}/,function(t,e){t.millisecond=e}],d:[s,u],ddd:[c,u],MMM:[c,p(\"monthNamesShort\")],MMMM:[c,p(\"monthNames\")],a:[c,function(t,e,n){var i=e.toLowerCase();i===n.amPm[0]?t.isPm=!1:i===n.amPm[1]&&(t.isPm=!0)}],ZZ:[/([\\+\\-]\\d\\d:?\\d\\d|Z)/,function(t,e){\"Z\"===e&&(e=\"+00:00\");var n,i=(e+\"\").match(/([\\+\\-]|\\d\\d)/gi);i&&(n=60*i[1]+parseInt(i[2],10),t.timezoneOffset=\"+\"===i[0]?n:-n)}]};b.dd=b.d,b.dddd=b.ddd,b.DD=b.D,b.mm=b.m,b.hh=b.H=b.HH=b.h,b.MM=b.M,b.ss=b.s,b.A=b.a,a.masks={default:\"ddd MMM DD YYYY HH:mm:ss\",shortDate:\"M/D/YY\",mediumDate:\"MMM D, YYYY\",longDate:\"MMMM D, YYYY\",fullDate:\"dddd, MMMM D, YYYY\",shortTime:\"HH:mm\",mediumTime:\"HH:mm:ss\",longTime:\"HH:mm:ss.SSS\"},a.format=function(t,e,n){var i=n||a.i18n;if(\"number\"==typeof t&&(t=new Date(t)),\"[object Date]\"!==Object.prototype.toString.call(t)||isNaN(t.getTime()))throw new Error(\"Invalid Date in fecha.format\");var o=[];return(e=(e=(e=a.masks[e]||e||a.masks.default).replace(l,function(t,e){return o.push(e),\"??\"})).replace(r,function(e){return e in g?g[e](t,i):e.slice(1,e.length-1)})).replace(/\\?\\?/g,function(){return o.shift()})},a.parse=function(t,e,n){var i=n||a.i18n;if(\"string\"!=typeof e)throw new Error(\"Invalid format in fecha.parse\");if(e=a.masks[e]||e,t.length>1e3)return!1;var o=!0,s={};if(e.replace(r,function(e){if(b[e]){var n=b[e],a=t.search(n[0]);~a?t.replace(n[0],function(e){return n[1](s,e,i),t=t.substr(a+e.length),e}):o=!1}return b[e]?\"\":e.slice(1,e.length-1)}),!o)return!1;var c,l=new Date;return!0===s.isPm&&null!=s.hour&&12!=+s.hour?s.hour=+s.hour+12:!1===s.isPm&&12==+s.hour&&(s.hour=0),null!=s.timezoneOffset?(s.minute=+(s.minute||0)-+s.timezoneOffset,c=new Date(Date.UTC(s.year||l.getFullYear(),s.month||0,s.day||1,s.hour||0,s.minute||0,s.second||0,s.millisecond||0))):c=new Date(s.year||l.getFullYear(),s.month||0,s.day||1,s.hour||0,s.minute||0,s.second||0,s.millisecond||0),c},void 0!==t&&t.exports?t.exports=a:void 0===(i=function(){return a}.call(e,n,e,t))||(t.exports=i)}()},function(t,e){var n=/^(attrs|props|on|nativeOn|class|style|hook)$/;function i(t,e){return function(){t&&t.apply(this,arguments),e&&e.apply(this,arguments)}}t.exports=function(t){return t.reduce(function(t,e){var o,a,r,s,c;for(r in e)if(o=t[r],a=e[r],o&&n.test(r))if(\"class\"===r&&(\"string\"==typeof o&&(c=o,t[r]=o={},o[c]=!0),\"string\"==typeof a&&(c=a,e[r]=a={},a[c]=!0)),\"on\"===r||\"nativeOn\"===r||\"hook\"===r)for(s in a)o[s]=i(o[s],a[s]);else if(Array.isArray(o))t[r]=o.concat(a);else if(Array.isArray(a))t[r]=[o].concat(a);else for(s in a)o[s]=a[s];else t[r]=e[r];return t},{})}},function(t,e,n){\"use strict\";function i(t,e){for(var n=[],i={},o=0;o<e.length;o++){var a=e[o],r=a[0],s={id:t+\":\"+o,css:a[1],media:a[2],sourceMap:a[3]};i[r]?i[r].parts.push(s):n.push(i[r]={id:r,parts:[s]})}return n}n.r(e),n.d(e,\"default\",function(){return h});var o=\"undefined\"!=typeof document;if(\"undefined\"!=typeof DEBUG&&DEBUG&&!o)throw new Error(\"vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\");var a={},r=o&&(document.head||document.getElementsByTagName(\"head\")[0]),s=null,c=0,l=!1,u=function(){},d=null,p=\"data-vue-ssr-id\",f=\"undefined\"!=typeof navigator&&/msie [6-9]\\b/.test(navigator.userAgent.toLowerCase());function h(t,e,n,o){l=n,d=o||{};var r=i(t,e);return A(r),function(e){for(var n=[],o=0;o<r.length;o++){var s=r[o];(c=a[s.id]).refs--,n.push(c)}for(e?A(r=i(t,e)):r=[],o=0;o<n.length;o++){var c;if(0===(c=n[o]).refs){for(var l=0;l<c.parts.length;l++)c.parts[l]();delete a[c.id]}}}}function A(t){for(var e=0;e<t.length;e++){var n=t[e],i=a[n.id];if(i){i.refs++;for(var o=0;o<i.parts.length;o++)i.parts[o](n.parts[o]);for(;o<n.parts.length;o++)i.parts.push(m(n.parts[o]));i.parts.length>n.parts.length&&(i.parts.length=n.parts.length)}else{var r=[];for(o=0;o<n.parts.length;o++)r.push(m(n.parts[o]));a[n.id]={id:n.id,refs:1,parts:r}}}}function v(){var t=document.createElement(\"style\");return t.type=\"text/css\",r.appendChild(t),t}function m(t){var e,n,i=document.querySelector(\"style[\"+p+'~=\"'+t.id+'\"]');if(i){if(l)return u;i.parentNode.removeChild(i)}if(f){var o=c++;i=s||(s=v()),e=y.bind(null,i,o,!1),n=y.bind(null,i,o,!0)}else i=v(),e=function(t,e){var n=e.css,i=e.media,o=e.sourceMap;if(i&&t.setAttribute(\"media\",i),d.ssrId&&t.setAttribute(p,e.id),o&&(n+=\"\\n/*# sourceURL=\"+o.sources[0]+\" */\",n+=\"\\n/*# sourceMappingURL=data:application/json;base64,\"+btoa(unescape(encodeURIComponent(JSON.stringify(o))))+\" */\"),t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}.bind(null,i),n=function(){i.parentNode.removeChild(i)};return e(t),function(i){if(i){if(i.css===t.css&&i.media===t.media&&i.sourceMap===t.sourceMap)return;e(t=i)}else n()}}var g,b=(g=[],function(t,e){return g[t]=e,g.filter(Boolean).join(\"\\n\")});function y(t,e,n,i){var o=n?\"\":i.css;if(t.styleSheet)t.styleSheet.cssText=b(e,o);else{var a=document.createTextNode(o),r=t.childNodes;r[e]&&t.removeChild(r[e]),r.length?t.insertBefore(a,r[e]):t.appendChild(a)}}},function(t,e,n){\"use strict\";n.r(e);var i=n(0),o=n.n(i),a=void 0,r=function(t){return a=t.target},s={bind:function(t,e,n){t[\"@clickoutside\"]=function(i){var o=i.target,r=n&&n.context&&n.context.popupElm;!a||!o||t.contains(o)||t.contains(a)||r&&(r.contains(a)||r.contains(o))||!e.expression||!n.context[e.expression]||e.value()},document.addEventListener(\"mousedown\",r),document.addEventListener(\"mouseup\",t[\"@clickoutside\"])},unbind:function(t){document.removeEventListener(\"mousedown\",r),document.removeEventListener(\"mouseup\",t[\"@clickoutside\"])}};function c(t){return\"[object Object]\"===Object.prototype.toString.call(t)}function l(t){return t instanceof Date}function u(t){return null!=t&&!isNaN(new Date(t).getTime())}function d(t){var e=(t||\"\").split(\":\");return e.length>=2?{hours:parseInt(e[0],10),minutes:parseInt(e[1],10)}:null}function p(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"24\",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:\"a\",i=t.hours,o=(i=(i=\"24\"===e?i:i%12||12)<10?\"0\"+i:i)+\":\"+(t.minutes<10?\"0\"+t.minutes:t.minutes);if(\"12\"===e){var a=t.hours>=12?\"pm\":\"am\";\"A\"===n&&(a=a.toUpperCase()),o=o+\" \"+a}return o}function f(t,e){if(!t)return\"\";try{return o.a.format(new Date(t),e)}catch(t){return\"\"}}var h={date:{value2date:function(t){return u(t)?new Date(t):null},date2value:function(t){return t}},timestamp:{value2date:function(t){return u(t)?new Date(t):null},date2value:function(t){return t&&new Date(t).getTime()}}},A={zh:{days:[\"日\",\"一\",\"二\",\"三\",\"四\",\"五\",\"六\"],months:[\"1月\",\"2月\",\"3月\",\"4月\",\"5月\",\"6月\",\"7月\",\"8月\",\"9月\",\"10月\",\"11月\",\"12月\"],pickers:[\"未来7天\",\"未来30天\",\"最近7天\",\"最近30天\"],placeholder:{date:\"请选择日期\",dateRange:\"请选择日期范围\"}},en:{days:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],months:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],pickers:[\"next 7 days\",\"next 30 days\",\"previous 7 days\",\"previous 30 days\"],placeholder:{date:\"Select Date\",dateRange:\"Select Date Range\"}},ro:{days:[\"Lun\",\"Mar\",\"Mie\",\"Joi\",\"Vin\",\"Sâm\",\"Dum\"],months:[\"Ian\",\"Feb\",\"Mar\",\"Apr\",\"Mai\",\"Iun\",\"Iul\",\"Aug\",\"Sep\",\"Oct\",\"Noi\",\"Dec\"],pickers:[\"urmatoarele 7 zile\",\"urmatoarele 30 zile\",\"ultimele 7 zile\",\"ultimele 30 zile\"],placeholder:{date:\"Selectați Data\",dateRange:\"Selectați Intervalul De Date\"}},fr:{days:[\"Dim\",\"Lun\",\"Mar\",\"Mer\",\"Jeu\",\"Ven\",\"Sam\"],months:[\"Jan\",\"Fev\",\"Mar\",\"Avr\",\"Mai\",\"Juin\",\"Juil\",\"Aout\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],pickers:[\"7 jours suivants\",\"30 jours suivants\",\"7 jours précédents\",\"30 jours précédents\"],placeholder:{date:\"Sélectionnez une date\",dateRange:\"Sélectionnez une période\"}},es:{days:[\"Dom\",\"Lun\",\"mar\",\"Mie\",\"Jue\",\"Vie\",\"Sab\"],months:[\"Ene\",\"Feb\",\"Mar\",\"Abr\",\"May\",\"Jun\",\"Jul\",\"Ago\",\"Sep\",\"Oct\",\"Nov\",\"Dic\"],pickers:[\"próximos 7 días\",\"próximos 30 días\",\"7 días anteriores\",\"30 días anteriores\"],placeholder:{date:\"Seleccionar fecha\",dateRange:\"Seleccionar un rango de fechas\"}},\"pt-br\":{days:[\"Dom\",\"Seg\",\"Ter\",\"Qua\",\"Quin\",\"Sex\",\"Sáb\"],months:[\"Jan\",\"Fev\",\"Mar\",\"Abr\",\"Maio\",\"Jun\",\"Jul\",\"Ago\",\"Set\",\"Out\",\"Nov\",\"Dez\"],pickers:[\"próximos 7 dias\",\"próximos 30 dias\",\"7 dias anteriores\",\" 30 dias anteriores\"],placeholder:{date:\"Selecione uma data\",dateRange:\"Selecione um período\"}},ru:{days:[\"Вс\",\"Пн\",\"Вт\",\"Ср\",\"Чт\",\"Пт\",\"Сб\"],months:[\"Янв\",\"Фев\",\"Мар\",\"Апр\",\"Май\",\"Июн\",\"Июл\",\"Авг\",\"Сен\",\"Окт\",\"Ноя\",\"Дек\"],pickers:[\"след. 7 дней\",\"след. 30 дней\",\"прош. 7 дней\",\"прош. 30 дней\"],placeholder:{date:\"Выберите дату\",dateRange:\"Выберите период\"}},de:{days:[\"So\",\"Mo\",\"Di\",\"Mi\",\"Do\",\"Fr\",\"Sa\"],months:[\"Januar\",\"Februar\",\"März\",\"April\",\"Mai\",\"Juni\",\"Juli\",\"August\",\"September\",\"Oktober\",\"November\",\"Dezember\"],pickers:[\"nächsten 7 Tage\",\"nächsten 30 Tage\",\"vorigen 7 Tage\",\"vorigen 30 Tage\"],placeholder:{date:\"Datum auswählen\",dateRange:\"Zeitraum auswählen\"}},it:{days:[\"Dom\",\"Lun\",\"Mar\",\"Mer\",\"Gio\",\"Ven\",\"Sab\"],months:[\"Gen\",\"Feb\",\"Mar\",\"Apr\",\"Mag\",\"Giu\",\"Lug\",\"Ago\",\"Set\",\"Ott\",\"Nov\",\"Dic\"],pickers:[\"successivi 7 giorni\",\"successivi 30 giorni\",\"precedenti 7 giorni\",\"precedenti 30 giorni\"],placeholder:{date:\"Seleziona una data\",dateRange:\"Seleziona un intervallo date\"}},cs:{days:[\"Ned\",\"Pon\",\"Úte\",\"Stř\",\"Čtv\",\"Pát\",\"Sob\"],months:[\"Led\",\"Úno\",\"Bře\",\"Dub\",\"Kvě\",\"Čer\",\"Čerc\",\"Srp\",\"Zář\",\"Říj\",\"Lis\",\"Pro\"],pickers:[\"příštích 7 dní\",\"příštích 30 dní\",\"předchozích 7 dní\",\"předchozích 30 dní\"],placeholder:{date:\"Vyberte datum\",dateRange:\"Vyberte časové rozmezí\"}},sl:{days:[\"Ned\",\"Pon\",\"Tor\",\"Sre\",\"Čet\",\"Pet\",\"Sob\"],months:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"Maj\",\"Jun\",\"Jul\",\"Avg\",\"Sep\",\"Okt\",\"Nov\",\"Dec\"],pickers:[\"naslednjih 7 dni\",\"naslednjih 30 dni\",\"prejšnjih 7 dni\",\"prejšnjih 30 dni\"],placeholder:{date:\"Izberite datum\",dateRange:\"Izberite razpon med 2 datumoma\"}}},v=A.zh,m={methods:{t:function(t){for(var e=this,n=e.$options.name;e&&(!n||\"DatePicker\"!==n);)(e=e.$parent)&&(n=e.$options.name);for(var i=e&&e.language||v,o=t.split(\".\"),a=i,r=void 0,s=0,c=o.length;s<c;s++){if(r=a[o[s]],s===c-1)return r;if(!r)return\"\";a=r}return\"\"}}};function g(t,e){if(e){for(var n=[],i=e.offsetParent;i&&t!==i&&t.contains(i);)n.push(i),i=i.offsetParent;var o=e.offsetTop+n.reduce(function(t,e){return t+e.offsetTop},0),a=o+e.offsetHeight,r=t.scrollTop,s=r+t.clientHeight;o<r?t.scrollTop=o:a>s&&(t.scrollTop=a-t.clientHeight)}else t.scrollTop=0}var b=n(1),y=n.n(b),x={name:\"panelDate\",mixins:[m],props:{value:null,startAt:null,endAt:null,dateFormat:{type:String,default:\"YYYY-MM-DD\"},calendarMonth:{default:(new Date).getMonth()},calendarYear:{default:(new Date).getFullYear()},firstDayOfWeek:{default:7,type:Number,validator:function(t){return t>=1&&t<=7}},disabledDate:{type:Function,default:function(){return!1}}},methods:{selectDate:function(t){var e=t.year,n=t.month,i=t.day,o=new Date(e,n,i);this.disabledDate(o)||this.$emit(\"select\",o)},getDays:function(t){var e=this.t(\"days\"),n=parseInt(t,10);return e.concat(e).slice(n,n+7)},getDates:function(t,e,n){var i=[],o=new Date(t,e);o.setDate(0);for(var a=(o.getDay()+7-n)%7+1,r=o.getDate()-(a-1),s=0;s<a;s++)i.push({year:t,month:e-1,day:r+s});o.setMonth(o.getMonth()+2,0);for(var c=o.getDate(),l=0;l<c;l++)i.push({year:t,month:e,day:1+l});o.setMonth(o.getMonth()+1,1);for(var u=42-(a+c),d=0;d<u;d++)i.push({year:t,month:e+1,day:1+d});return i},getCellClasses:function(t){var e=t.year,n=t.month,i=t.day,o=[],a=new Date(e,n,i).getTime(),r=(new Date).setHours(0,0,0,0),s=this.value&&new Date(this.value).setHours(0,0,0,0),c=this.startAt&&new Date(this.startAt).setHours(0,0,0,0),l=this.endAt&&new Date(this.endAt).setHours(0,0,0,0);return n<this.calendarMonth?o.push(\"last-month\"):n>this.calendarMonth?o.push(\"next-month\"):o.push(\"cur-month\"),a===r&&o.push(\"today\"),this.disabledDate(a)&&o.push(\"disabled\"),s&&(a===s?o.push(\"actived\"):c&&a<=s?o.push(\"inrange\"):l&&a>=s&&o.push(\"inrange\")),o},getCellTitle:function(t){var e=t.year,n=t.month,i=t.day;return f(new Date(e,n,i),this.dateFormat)}},render:function(t){var e=this,n=this.getDays(this.firstDayOfWeek).map(function(e){return t(\"th\",[e])}),i=this.getDates(this.calendarYear,this.calendarMonth,this.firstDayOfWeek),o=Array.apply(null,{length:6}).map(function(n,o){var a=i.slice(7*o,7*o+7).map(function(n){var i={class:e.getCellClasses(n)};return t(\"td\",y()([{class:\"cell\"},i,{attrs:{\"data-year\":n.year,\"data-month\":n.month,title:e.getCellTitle(n)},on:{click:e.selectDate.bind(e,n)}}]),[n.day])});return t(\"tr\",[a])});return t(\"table\",{class:\"mx-panel mx-panel-date\"},[t(\"thead\",[t(\"tr\",[n])]),t(\"tbody\",[o])])}},w={name:\"panelYear\",props:{value:null,firstYear:Number,disabledYear:Function},methods:{isDisabled:function(t){return!(\"function\"!=typeof this.disabledYear||!this.disabledYear(t))},selectYear:function(t){this.isDisabled(t)||this.$emit(\"select\",t)}},render:function(t){var e=this,n=10*Math.floor(this.firstYear/10),i=this.value&&new Date(this.value).getFullYear(),o=Array.apply(null,{length:10}).map(function(o,a){var r=n+a;return t(\"span\",{class:{cell:!0,actived:i===r,disabled:e.isDisabled(r)},on:{click:e.selectYear.bind(e,r)}},[r])});return t(\"div\",{class:\"mx-panel mx-panel-year\"},[o])}},_={name:\"panelMonth\",mixins:[m],props:{value:null,calendarYear:{default:(new Date).getFullYear()},disabledMonth:Function},methods:{isDisabled:function(t){return!(\"function\"!=typeof this.disabledMonth||!this.disabledMonth(t))},selectMonth:function(t){this.isDisabled(t)||this.$emit(\"select\",t)}},render:function(t){var e=this,n=this.t(\"months\"),i=this.value&&new Date(this.value).getFullYear(),o=this.value&&new Date(this.value).getMonth();return n=n.map(function(n,a){return t(\"span\",{class:{cell:!0,actived:i===e.calendarYear&&o===a,disabled:e.isDisabled(a)},on:{click:e.selectMonth.bind(e,a)}},[n])}),t(\"div\",{class:\"mx-panel mx-panel-month\"},[n])}},T=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])}return t},k=\"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};function C(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e<t.length;e++)n[e]=t[e];return n}return Array.from(t)}function E(t,e,n,i,o,a,r,s){var c,l=\"function\"==typeof t?t.options:t;if(e&&(l.render=e,l.staticRenderFns=n,l._compiled=!0),i&&(l.functional=!0),a&&(l._scopeId=\"data-v-\"+a),r?(c=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),o&&o.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(r)},l._ssrRegister=c):o&&(c=s?function(){o.call(this,this.$root.$options.shadowRoot)}:o),c)if(l.functional){l._injectStyles=c;var u=l.render;l.render=function(t,e){return c.call(e),u(t,e)}}else{var d=l.beforeCreate;l.beforeCreate=d?[].concat(d,c):[c]}return{exports:t,options:l}}var M=E({name:\"CalendarPanel\",components:{PanelDate:x,PanelYear:w,PanelMonth:_,PanelTime:{name:\"panelTime\",props:{timePickerOptions:{type:[Object,Function],default:function(){return null}},timeSelectOptions:{type:Object,default:function(){return null}},minuteStep:{type:Number,default:0,validator:function(t){return t>=0&&t<=60}},value:null,timeType:{type:Array,default:function(){return[\"24\",\"a\"]}},disabledTime:Function},computed:{currentHours:function(){return this.value?new Date(this.value).getHours():0},currentMinutes:function(){return this.value?new Date(this.value).getMinutes():0},currentSeconds:function(){return this.value?new Date(this.value).getSeconds():0}},methods:{stringifyText:function(t){return(\"00\"+t).slice(String(t).length)},selectTime:function(t){\"function\"==typeof this.disabledTime&&this.disabledTime(t)||this.$emit(\"select\",new Date(t))},pickTime:function(t){\"function\"==typeof this.disabledTime&&this.disabledTime(t)||this.$emit(\"pick\",new Date(t))},getTimePickerOptions:function(){var t=[],e=this.timePickerOptions;if(!e)return[];if(\"function\"==typeof e)return e()||[];var n=d(e.start),i=d(e.end),o=d(e.step);if(n&&i&&o)for(var a=n.minutes+60*n.hours,r=i.minutes+60*i.hours,s=o.minutes+60*o.hours,c=Math.floor((r-a)/s),l=0;l<=c;l++){var u=a+l*s,f={hours:Math.floor(u/60),minutes:u%60};t.push({value:f,label:p.apply(void 0,[f].concat(C(this.timeType)))})}return t}},render:function(t){var e=this,n=this.value?new Date(this.value):(new Date).setHours(0,0,0,0),i=\"function\"==typeof this.disabledTime&&this.disabledTime,o=this.getTimePickerOptions();if(Array.isArray(o)&&o.length)return o=o.map(function(o){var a=o.value.hours,r=o.value.minutes,s=new Date(n).setHours(a,r,0);return t(\"li\",{class:{\"mx-time-picker-item\":!0,cell:!0,actived:a===e.currentHours&&r===e.currentMinutes,disabled:i&&i(s)},on:{click:e.pickTime.bind(e,s)}},[o.label])}),t(\"div\",{class:\"mx-panel mx-panel-time\"},[t(\"ul\",{class:\"mx-time-list\"},[o])]);var a=this.minuteStep||1,r=parseInt(60/a),s={hours:Array.apply(null,{length:24}).map(function(t,e){return e}),minutes:Array.apply(null,{length:r}).map(function(t,e){return e*a}),seconds:0===this.minuteStep?Array.apply(null,{length:60}).map(function(t,e){return e}):[]};this.timeSelectOptions&&\"object\"===k(this.timeSelectOptions)&&(s=T({},s,this.timeSelectOptions));var c=[s.hours.map(function(o){var a=new Date(n).setHours(o);return t(\"li\",{class:{cell:!0,actived:o===e.currentHours,disabled:i&&i(a)},on:{click:e.selectTime.bind(e,a)}},[e.stringifyText(o)])}),s.minutes.map(function(o){var a=new Date(n).setMinutes(o);return t(\"li\",{class:{cell:!0,actived:o===e.currentMinutes,disabled:i&&i(a)},on:{click:e.selectTime.bind(e,a)}},[e.stringifyText(o)])}),s.seconds.map(function(o){var a=new Date(n).setSeconds(o);return t(\"li\",{class:{cell:!0,actived:o===e.currentSeconds,disabled:i&&i(a)},on:{click:e.selectTime.bind(e,a)}},[e.stringifyText(o)])})].filter(function(t){return t.length>0});return c=c.map(function(e){return t(\"ul\",{class:\"mx-time-list\",style:{width:100/c.length+\"%\"}},[e])}),t(\"div\",{class:\"mx-panel mx-panel-time\"},[c])}}},mixins:[m,{methods:{dispatch:function(t,e,n){for(var i=this.$parent||this.$root,o=i.$options.name;i&&(!o||o!==t);)(i=i.$parent)&&(o=i.$options.name);o&&o===t&&(i=i||this).$emit.apply(i,[e].concat(n))}}}],props:{value:{default:null,validator:function(t){return null===t||u(t)}},startAt:null,endAt:null,visible:{type:Boolean,default:!1},type:{type:String,default:\"date\"},dateFormat:{type:String,default:\"YYYY-MM-DD\"},index:Number,defaultValue:{validator:function(t){return u(t)}},firstDayOfWeek:{default:7,type:Number,validator:function(t){return t>=1&&t<=7}},notBefore:{default:null,validator:function(t){return!t||u(t)}},notAfter:{default:null,validator:function(t){return!t||u(t)}},disabledDays:{type:[Array,Function],default:function(){return[]}},minuteStep:{type:Number,default:0,validator:function(t){return t>=0&&t<=60}},timeSelectOptions:{type:Object,default:function(){return null}},timePickerOptions:{type:[Object,Function],default:function(){return null}}},data:function(){var t=this.getNow(this.value),e=t.getFullYear();return{panel:\"NONE\",dates:[],calendarMonth:t.getMonth(),calendarYear:e,firstYear:10*Math.floor(e/10)}},computed:{now:{get:function(){return new Date(this.calendarYear,this.calendarMonth).getTime()},set:function(t){var e=new Date(t);this.calendarYear=e.getFullYear(),this.calendarMonth=e.getMonth()}},timeType:function(){return[/h+/.test(this.$parent.format)?\"12\":\"24\",/A/.test(this.$parent.format)?\"A\":\"a\"]},timeHeader:function(){return\"time\"===this.type?this.$parent.format:this.value&&f(this.value,this.dateFormat)},yearHeader:function(){return this.firstYear+\" ~ \"+(this.firstYear+9)},months:function(){return this.t(\"months\")},notBeforeTime:function(){return this.getCriticalTime(this.notBefore)},notAfterTime:function(){return this.getCriticalTime(this.notAfter)}},watch:{value:{immediate:!0,handler:\"updateNow\"},visible:{immediate:!0,handler:\"init\"},panel:{handler:\"handelPanelChange\"}},methods:{handelPanelChange:function(t,e){var n=this;this.dispatch(\"DatePicker\",\"panel-change\",[t,e]),\"YEAR\"===t?this.firstYear=10*Math.floor(this.calendarYear/10):\"TIME\"===t&&this.$nextTick(function(){for(var t=n.$el.querySelectorAll(\".mx-panel-time .mx-time-list\"),e=0,i=t.length;e<i;e++){var o=t[e];g(o,o.querySelector(\".actived\"))}})},init:function(t){if(t){var e=this.type;\"month\"===e?this.showPanelMonth():\"year\"===e?this.showPanelYear():\"time\"===e?this.showPanelTime():this.showPanelDate()}else this.showPanelNone(),this.updateNow(this.value)},getNow:function(t){return t?new Date(t):this.defaultValue&&u(this.defaultValue)?new Date(this.defaultValue):new Date},updateNow:function(t){var e=this.now;this.now=this.getNow(t),this.visible&&this.now!==e&&this.dispatch(\"DatePicker\",\"calendar-change\",[new Date(this.now),new Date(e)])},getCriticalTime:function(t){if(!t)return null;var e=new Date(t);return\"year\"===this.type?new Date(e.getFullYear(),0).getTime():\"month\"===this.type?new Date(e.getFullYear(),e.getMonth()).getTime():\"date\"===this.type?e.setHours(0,0,0,0):e.getTime()},inBefore:function(t,e){return void 0===e&&(e=this.startAt),this.notBeforeTime&&t<this.notBeforeTime||e&&t<this.getCriticalTime(e)},inAfter:function(t,e){return void 0===e&&(e=this.endAt),this.notAfterTime&&t>this.notAfterTime||e&&t>this.getCriticalTime(e)},inDisabledDays:function(t){var e=this;return Array.isArray(this.disabledDays)?this.disabledDays.some(function(n){return e.getCriticalTime(n)===t}):\"function\"==typeof this.disabledDays&&this.disabledDays(new Date(t))},isDisabledYear:function(t){var e=new Date(t,0).getTime(),n=new Date(t+1,0).getTime()-1;return this.inBefore(n)||this.inAfter(e)||\"year\"===this.type&&this.inDisabledDays(e)},isDisabledMonth:function(t){var e=new Date(this.calendarYear,t).getTime(),n=new Date(this.calendarYear,t+1).getTime()-1;return this.inBefore(n)||this.inAfter(e)||\"month\"===this.type&&this.inDisabledDays(e)},isDisabledDate:function(t){var e=new Date(t).getTime(),n=new Date(t).setHours(23,59,59,999);return this.inBefore(n)||this.inAfter(e)||this.inDisabledDays(e)},isDisabledTime:function(t,e,n){var i=new Date(t).getTime();return this.inBefore(i,e)||this.inAfter(i,n)||this.inDisabledDays(i)},selectDate:function(t){if(\"datetime\"===this.type){var e=new Date(t);return l(this.value)&&e.setHours(this.value.getHours(),this.value.getMinutes(),this.value.getSeconds()),this.isDisabledTime(e)&&(e.setHours(0,0,0,0),this.notBefore&&e.getTime()<new Date(this.notBefore).getTime()&&(e=new Date(this.notBefore)),this.startAt&&e.getTime()<new Date(this.startAt).getTime()&&(e=new Date(this.startAt))),this.selectTime(e),void this.showPanelTime()}this.$emit(\"select-date\",t)},selectYear:function(t){if(this.changeCalendarYear(t),\"year\"===this.type.toLowerCase())return this.selectDate(new Date(this.now));this.dispatch(\"DatePicker\",\"select-year\",[t,this.index]),this.showPanelMonth()},selectMonth:function(t){if(this.changeCalendarMonth(t),\"month\"===this.type.toLowerCase())return this.selectDate(new Date(this.now));this.dispatch(\"DatePicker\",\"select-month\",[t,this.index]),this.showPanelDate()},selectTime:function(t){this.$emit(\"select-time\",t,!1)},pickTime:function(t){this.$emit(\"select-time\",t,!0)},changeCalendarYear:function(t){this.updateNow(new Date(t,this.calendarMonth))},changeCalendarMonth:function(t){this.updateNow(new Date(this.calendarYear,t))},getSibling:function(){var t=this,e=this.$parent.$children.filter(function(e){return e.$options.name===t.$options.name});return e[1^e.indexOf(this)]},handleIconMonth:function(t){var e=this.calendarMonth;this.changeCalendarMonth(e+t),this.$parent.$emit(\"change-calendar-month\",{month:e,flag:t,vm:this,sibling:this.getSibling()})},handleIconYear:function(t){if(\"YEAR\"===this.panel)this.changePanelYears(t);else{var e=this.calendarYear;this.changeCalendarYear(e+t),this.$parent.$emit(\"change-calendar-year\",{year:e,flag:t,vm:this,sibling:this.getSibling()})}},handleBtnYear:function(){this.showPanelYear()},handleBtnMonth:function(){this.showPanelMonth()},handleTimeHeader:function(){\"time\"!==this.type&&this.showPanelDate()},changePanelYears:function(t){this.firstYear=this.firstYear+10*t},showPanelNone:function(){this.panel=\"NONE\"},showPanelTime:function(){this.panel=\"TIME\"},showPanelDate:function(){this.panel=\"DATE\"},showPanelYear:function(){this.panel=\"YEAR\"},showPanelMonth:function(){this.panel=\"MONTH\"}}},function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{staticClass:\"mx-calendar\",class:\"mx-calendar-panel-\"+t.panel.toLowerCase()},[n(\"div\",{staticClass:\"mx-calendar-header\"},[n(\"a\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"TIME\"!==t.panel,expression:\"panel !== 'TIME'\"}],staticClass:\"mx-icon-last-year\",on:{click:function(e){t.handleIconYear(-1)}}},[t._v(\"«\")]),t._v(\" \"),n(\"a\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"DATE\"===t.panel,expression:\"panel === 'DATE'\"}],staticClass:\"mx-icon-last-month\",on:{click:function(e){t.handleIconMonth(-1)}}},[t._v(\"‹\")]),t._v(\" \"),n(\"a\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"TIME\"!==t.panel,expression:\"panel !== 'TIME'\"}],staticClass:\"mx-icon-next-year\",on:{click:function(e){t.handleIconYear(1)}}},[t._v(\"»\")]),t._v(\" \"),n(\"a\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"DATE\"===t.panel,expression:\"panel === 'DATE'\"}],staticClass:\"mx-icon-next-month\",on:{click:function(e){t.handleIconMonth(1)}}},[t._v(\"›\")]),t._v(\" \"),n(\"a\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"DATE\"===t.panel,expression:\"panel === 'DATE'\"}],staticClass:\"mx-current-month\",on:{click:t.handleBtnMonth}},[t._v(t._s(t.months[t.calendarMonth]))]),t._v(\" \"),n(\"a\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"DATE\"===t.panel||\"MONTH\"===t.panel,expression:\"panel === 'DATE' || panel === 'MONTH'\"}],staticClass:\"mx-current-year\",on:{click:t.handleBtnYear}},[t._v(t._s(t.calendarYear))]),t._v(\" \"),n(\"a\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"YEAR\"===t.panel,expression:\"panel === 'YEAR'\"}],staticClass:\"mx-current-year\"},[t._v(t._s(t.yearHeader))]),t._v(\" \"),n(\"a\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"TIME\"===t.panel,expression:\"panel === 'TIME'\"}],staticClass:\"mx-time-header\",on:{click:t.handleTimeHeader}},[t._v(t._s(t.timeHeader))])]),t._v(\" \"),n(\"div\",{staticClass:\"mx-calendar-content\"},[n(\"panel-date\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"DATE\"===t.panel,expression:\"panel === 'DATE'\"}],attrs:{value:t.value,\"date-format\":t.dateFormat,\"calendar-month\":t.calendarMonth,\"calendar-year\":t.calendarYear,\"start-at\":t.startAt,\"end-at\":t.endAt,\"first-day-of-week\":t.firstDayOfWeek,\"disabled-date\":t.isDisabledDate},on:{select:t.selectDate}}),t._v(\" \"),n(\"panel-year\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"YEAR\"===t.panel,expression:\"panel === 'YEAR'\"}],attrs:{value:t.value,\"disabled-year\":t.isDisabledYear,\"first-year\":t.firstYear},on:{select:t.selectYear}}),t._v(\" \"),n(\"panel-month\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"MONTH\"===t.panel,expression:\"panel === 'MONTH'\"}],attrs:{value:t.value,\"disabled-month\":t.isDisabledMonth,\"calendar-year\":t.calendarYear},on:{select:t.selectMonth}}),t._v(\" \"),n(\"panel-time\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"TIME\"===t.panel,expression:\"panel === 'TIME'\"}],attrs:{\"minute-step\":t.minuteStep,\"time-picker-options\":t.timePickerOptions,\"time-select-options\":t.timeSelectOptions,value:t.value,\"disabled-time\":t.isDisabledTime,\"time-type\":t.timeType},on:{select:t.selectTime,pick:t.pickTime}})],1)])},[],!1,null,null,null).exports,S=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])}return t},D=E({fecha:o.a,name:\"DatePicker\",components:{CalendarPanel:M},mixins:[m],directives:{clickoutside:s},props:{value:null,valueType:{default:\"date\",validator:function(t){return-1!==[\"timestamp\",\"format\",\"date\"].indexOf(t)||c(t)}},placeholder:{type:String,default:null},lang:{type:[String,Object],default:\"zh\"},format:{type:[String,Object],default:\"YYYY-MM-DD\"},dateFormat:{type:String},type:{type:String,default:\"date\"},range:{type:Boolean,default:!1},rangeSeparator:{type:String,default:\"~\"},width:{type:[String,Number],default:null},confirmText:{type:String,default:\"OK\"},confirm:{type:Boolean,default:!1},editable:{type:Boolean,default:!0},disabled:{type:Boolean,default:!1},clearable:{type:Boolean,default:!0},shortcuts:{type:[Boolean,Array],default:!0},inputName:{type:String,default:\"date\"},inputClass:{type:[String,Array],default:\"mx-input\"},inputAttr:Object,appendToBody:{type:Boolean,default:!1},popupStyle:{type:Object}},data:function(){return{currentValue:this.range?[null,null]:null,userInput:null,popupVisible:!1,position:{}}},watch:{value:{immediate:!0,handler:\"handleValueChange\"},popupVisible:function(t){t?this.initCalendar():(this.userInput=null,this.blur())}},computed:{transform:function(){var t=this.valueType;return c(t)?S({},h.date,t):\"format\"===t?{value2date:this.parse.bind(this),date2value:this.stringify.bind(this)}:h[t]||h.date},language:function(){return c(this.lang)?S({},A.en,this.lang):A[this.lang]||A.en},innerPlaceholder:function(){return\"string\"==typeof this.placeholder?this.placeholder:this.range?this.t(\"placeholder.dateRange\"):this.t(\"placeholder.date\")},text:function(){if(null!==this.userInput)return this.userInput;var t=this.transform.value2date;return this.range?this.isValidRangeValue(this.value)?this.stringify(t(this.value[0]))+\" \"+this.rangeSeparator+\" \"+this.stringify(t(this.value[1])):\"\":this.isValidValue(this.value)?this.stringify(t(this.value)):\"\"},computedWidth:function(){return\"number\"==typeof this.width||\"string\"==typeof this.width&&/^\\d+$/.test(this.width)?this.width+\"px\":this.width},showClearIcon:function(){return!this.disabled&&this.clearable&&(this.range?this.isValidRangeValue(this.value):this.isValidValue(this.value))},innerType:function(){return String(this.type).toLowerCase()},innerShortcuts:function(){if(Array.isArray(this.shortcuts))return this.shortcuts;if(!1===this.shortcuts)return[];var t=this.t(\"pickers\");return[{text:t[0],onClick:function(t){t.currentValue=[new Date,new Date(Date.now()+6048e5)],t.updateDate(!0)}},{text:t[1],onClick:function(t){t.currentValue=[new Date,new Date(Date.now()+2592e6)],t.updateDate(!0)}},{text:t[2],onClick:function(t){t.currentValue=[new Date(Date.now()-6048e5),new Date],t.updateDate(!0)}},{text:t[3],onClick:function(t){t.currentValue=[new Date(Date.now()-2592e6),new Date],t.updateDate(!0)}}]},innerDateFormat:function(){return this.dateFormat?this.dateFormat:\"string\"!=typeof this.format?\"YYYY-MM-DD\":\"date\"===this.innerType?this.format:this.format.replace(/[Hh]+.*[msSaAZ]|\\[.*?\\]/g,\"\").trim()||\"YYYY-MM-DD\"},innerPopupStyle:function(){return S({},this.position,this.popupStyle)}},mounted:function(){var t,e,n,i,o=this;this.appendToBody&&(this.popupElm=this.$refs.calendar,document.body.appendChild(this.popupElm)),this._displayPopup=(t=function(){o.popupVisible&&o.displayPopup()},e=200,n=0,i=null,function(){var o=this;if(!i){var a=arguments,r=function(){n=Date.now(),i=null,t.apply(o,a)};Date.now()-n>=e?r():i=setTimeout(r,e)}}),window.addEventListener(\"resize\",this._displayPopup),window.addEventListener(\"scroll\",this._displayPopup)},beforeDestroy:function(){this.popupElm&&this.popupElm.parentNode===document.body&&document.body.removeChild(this.popupElm),window.removeEventListener(\"resize\",this._displayPopup),window.removeEventListener(\"scroll\",this._displayPopup)},methods:{initCalendar:function(){this.handleValueChange(this.value),this.displayPopup()},stringify:function(t){return c(this.format)&&\"function\"==typeof this.format.stringify?this.format.stringify(t):f(t,this.format)},parse:function(t){return c(this.format)&&\"function\"==typeof this.format.parse?this.format.parse(t):function(t,e){try{return o.a.parse(t,e)||null}catch(t){return null}}(t,this.format)},isValidValue:function(t){return u((0,this.transform.value2date)(t))},isValidRangeValue:function(t){var e=this.transform.value2date;return Array.isArray(t)&&2===t.length&&this.isValidValue(t[0])&&this.isValidValue(t[1])&&e(t[1]).getTime()>=e(t[0]).getTime()},dateEqual:function(t,e){return l(t)&&l(e)&&t.getTime()===e.getTime()},rangeEqual:function(t,e){var n=this;return Array.isArray(t)&&Array.isArray(e)&&t.length===e.length&&t.every(function(t,i){return n.dateEqual(t,e[i])})},selectRange:function(t){\"function\"==typeof t.onClick?!1!==t.onClick(this)&&this.closePopup():(this.currentValue=[new Date(t.start),new Date(t.end)],this.updateDate(!0),this.closePopup())},clearDate:function(){var t=this.range?[null,null]:null;this.currentValue=t,this.updateDate(!0),this.$emit(\"clear\")},confirmDate:function(){var t;(this.range?(t=this.currentValue,Array.isArray(t)&&2===t.length&&u(t[0])&&u(t[1])&&new Date(t[1]).getTime()>=new Date(t[0]).getTime()):u(this.currentValue))&&this.updateDate(!0),this.emitDate(\"confirm\"),this.closePopup()},updateDate:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return!(this.confirm&&!t||this.disabled||(this.range?this.rangeEqual(this.value,this.currentValue):this.dateEqual(this.value,this.currentValue))||(this.emitDate(\"input\"),this.emitDate(\"change\"),0))},emitDate:function(t){var e=this.transform.date2value,n=this.range?this.currentValue.map(e):e(this.currentValue);this.$emit(t,n)},handleValueChange:function(t){var e=this.transform.value2date;this.range?this.currentValue=this.isValidRangeValue(t)?t.map(e):[null,null]:this.currentValue=this.isValidValue(t)?e(t):null},selectDate:function(t){this.currentValue=t,this.updateDate()&&this.closePopup()},selectStartDate:function(t){this.$set(this.currentValue,0,t),this.currentValue[1]&&this.updateDate()},selectEndDate:function(t){this.$set(this.currentValue,1,t),this.currentValue[0]&&this.updateDate()},selectTime:function(t,e){this.currentValue=t,this.updateDate()&&e&&this.closePopup()},selectStartTime:function(t){this.selectStartDate(t)},selectEndTime:function(t){this.selectEndDate(t)},showPopup:function(){this.disabled||(this.popupVisible=!0)},closePopup:function(){this.popupVisible=!1},getPopupSize:function(t){var e=t.style.display,n=t.style.visibility;t.style.display=\"block\",t.style.visibility=\"hidden\";var i=window.getComputedStyle(t),o={width:t.offsetWidth+parseInt(i.marginLeft)+parseInt(i.marginRight),height:t.offsetHeight+parseInt(i.marginTop)+parseInt(i.marginBottom)};return t.style.display=e,t.style.visibility=n,o},displayPopup:function(){var t=document.documentElement.clientWidth,e=document.documentElement.clientHeight,n=this.$el.getBoundingClientRect(),i=this._popupRect||(this._popupRect=this.getPopupSize(this.$refs.calendar)),o={},a=0,r=0;this.appendToBody&&(a=window.pageXOffset+n.left,r=window.pageYOffset+n.top),t-n.left<i.width&&n.right<i.width?o.left=a-n.left+1+\"px\":n.left+n.width/2<=t/2?o.left=a+\"px\":o.left=a+n.width-i.width+\"px\",n.top<=i.height&&e-n.bottom<=i.height?o.top=r+e-n.top-i.height+\"px\":n.top+n.height/2<=e/2?o.top=r+n.height+\"px\":o.top=r-i.height+\"px\",o.top===this.position.top&&o.left===this.position.left||(this.position=o)},blur:function(){this.$refs.input.blur()},handleBlur:function(t){this.$emit(\"blur\",t)},handleFocus:function(t){this.popupVisible||this.showPopup(),this.$emit(\"focus\",t)},handleKeydown:function(t){var e=t.keyCode;9!==e&&13!==e||(t.stopPropagation(),this.handleChange(),this.userInput=null,this.closePopup())},handleInput:function(t){this.userInput=t.target.value},handleChange:function(){if(this.editable&&null!==this.userInput){var t=this.text,e=this.$refs.calendarPanel.isDisabledTime;if(!t)return void this.clearDate();if(this.range){var n=t.split(\" \"+this.rangeSeparator+\" \");if(2===n.length){var i=this.parse(n[0]),o=this.parse(n[1]);if(i&&o&&!e(i,null,o)&&!e(o,i,null))return this.currentValue=[i,o],this.updateDate(!0),void this.closePopup()}}else{var a=this.parse(t);if(a&&!e(a,null,null))return this.currentValue=a,this.updateDate(!0),void this.closePopup()}this.$emit(\"input-error\",t)}}}},function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{directives:[{name:\"clickoutside\",rawName:\"v-clickoutside\",value:t.closePopup,expression:\"closePopup\"}],staticClass:\"mx-datepicker\",class:{\"mx-datepicker-range\":t.range,disabled:t.disabled},style:{width:t.computedWidth}},[n(\"div\",{staticClass:\"mx-input-wrapper\",on:{click:function(e){return e.stopPropagation(),t.showPopup(e)}}},[n(\"input\",t._b({ref:\"input\",class:t.inputClass,attrs:{name:t.inputName,type:\"text\",autocomplete:\"off\",disabled:t.disabled,readonly:!t.editable,placeholder:t.innerPlaceholder},domProps:{value:t.text},on:{keydown:t.handleKeydown,focus:t.handleFocus,blur:t.handleBlur,input:t.handleInput,change:t.handleChange}},\"input\",t.inputAttr,!1)),t._v(\" \"),t.showClearIcon?n(\"span\",{staticClass:\"mx-input-append mx-clear-wrapper\",on:{click:function(e){return e.stopPropagation(),t.clearDate(e)}}},[t._t(\"mx-clear-icon\",[n(\"i\",{staticClass:\"mx-input-icon mx-clear-icon\"})])],2):t._e(),t._v(\" \"),n(\"span\",{staticClass:\"mx-input-append\"},[t._t(\"calendar-icon\",[n(\"svg\",{staticClass:\"mx-calendar-icon\",attrs:{xmlns:\"http://www.w3.org/2000/svg\",version:\"1.1\",viewBox:\"0 0 200 200\"}},[n(\"rect\",{attrs:{x:\"13\",y:\"29\",rx:\"14\",ry:\"14\",width:\"174\",height:\"158\",fill:\"transparent\"}}),t._v(\" \"),n(\"line\",{attrs:{x1:\"46\",x2:\"46\",y1:\"8\",y2:\"50\"}}),t._v(\" \"),n(\"line\",{attrs:{x1:\"154\",x2:\"154\",y1:\"8\",y2:\"50\"}}),t._v(\" \"),n(\"line\",{attrs:{x1:\"13\",x2:\"187\",y1:\"70\",y2:\"70\"}}),t._v(\" \"),n(\"text\",{attrs:{x:\"50%\",y:\"135\",\"font-size\":\"90\",\"stroke-width\":\"1\",\"text-anchor\":\"middle\",\"dominant-baseline\":\"middle\"}},[t._v(t._s((new Date).getDate()))])])])],2)]),t._v(\" \"),n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.popupVisible,expression:\"popupVisible\"}],ref:\"calendar\",staticClass:\"mx-datepicker-popup\",style:t.innerPopupStyle,on:{click:function(t){t.stopPropagation(),t.preventDefault()}}},[t._t(\"header\",[t.range&&t.innerShortcuts.length?n(\"div\",{staticClass:\"mx-shortcuts-wrapper\"},t._l(t.innerShortcuts,function(e,i){return n(\"button\",{key:i,staticClass:\"mx-shortcuts\",attrs:{type:\"button\"},on:{click:function(n){t.selectRange(e)}}},[t._v(t._s(e.text))])})):t._e()]),t._v(\" \"),t.range?n(\"div\",{staticClass:\"mx-range-wrapper\"},[n(\"calendar-panel\",t._b({ref:\"calendarPanel\",staticStyle:{\"box-shadow\":\"1px 0 rgba(0, 0, 0, .1)\"},attrs:{index:0,type:t.innerType,\"date-format\":t.innerDateFormat,value:t.currentValue[0],\"end-at\":t.currentValue[1],\"start-at\":null,visible:t.popupVisible},on:{\"select-date\":t.selectStartDate,\"select-time\":t.selectStartTime}},\"calendar-panel\",t.$attrs,!1)),t._v(\" \"),n(\"calendar-panel\",t._b({attrs:{index:1,type:t.innerType,\"date-format\":t.innerDateFormat,value:t.currentValue[1],\"start-at\":t.currentValue[0],\"end-at\":null,visible:t.popupVisible},on:{\"select-date\":t.selectEndDate,\"select-time\":t.selectEndTime}},\"calendar-panel\",t.$attrs,!1))],1):n(\"calendar-panel\",t._b({ref:\"calendarPanel\",attrs:{index:-1,type:t.innerType,\"date-format\":t.innerDateFormat,value:t.currentValue,visible:t.popupVisible},on:{\"select-date\":t.selectDate,\"select-time\":t.selectTime}},\"calendar-panel\",t.$attrs,!1)),t._v(\" \"),t._t(\"footer\",[t.confirm?n(\"div\",{staticClass:\"mx-datepicker-footer\"},[n(\"button\",{staticClass:\"mx-datepicker-btn mx-datepicker-btn-confirm\",attrs:{type:\"button\"},on:{click:t.confirmDate}},[t._v(t._s(t.confirmText))])]):t._e()],{confirm:t.confirmDate})],2)])},[],!1,null,null,null).exports;n(7),D.install=function(t){t.component(D.name,D)},\"undefined\"!=typeof window&&window.Vue&&D.install(window.Vue),e.default=D},function(t,e){t.exports=function(){var t=[];return t.toString=function(){for(var t=[],e=0;e<this.length;e++){var n=this[e];n[2]?t.push(\"@media \"+n[2]+\"{\"+n[1]+\"}\"):t.push(n[1])}return t.join(\"\")},t.i=function(e,n){\"string\"==typeof e&&(e=[[null,e,\"\"]]);for(var i={},o=0;o<this.length;o++){var a=this[o][0];\"number\"==typeof a&&(i[a]=!0)}for(o=0;o<e.length;o++){var r=e[o];\"number\"==typeof r[0]&&i[r[0]]||(n&&!r[2]?r[2]=n:n&&(r[2]=\"(\"+r[2]+\") and (\"+n+\")\"),t.push(r))}},t}},,function(t,e,n){(t.exports=n(4)()).push([t.i,\"\",\"\"])},function(t,e,n){var i=n(6);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals),(0,n(2).default)(\"529d5378\",i,!0,{})}])},function(t,e,n){var i=n(33);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"941c791e\",i,!0,{})},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,\".vue-tooltip[data-v-6673a70]{position:absolute;z-index:100000;right:auto;left:auto;display:block;margin:0;margin-top:-3px;padding:10px 0;text-align:left;text-align:start;white-space:normal;text-decoration:none;letter-spacing:normal;word-spacing:normal;text-transform:none;word-wrap:normal;word-break:normal;opacity:0;text-shadow:none;font-family:'Nunito', 'Open Sans', Frutiger, Calibri, 'Myriad Pro', Myriad, sans-serif;font-size:12px;font-weight:normal;font-style:normal;line-height:1.6;line-break:auto;filter:drop-shadow(0 1px 10px var(--color-box-shadow))}.vue-tooltip[data-v-6673a70][x-placement^='top'] .tooltip-arrow{bottom:0;margin-top:0;margin-bottom:0;border-width:10px 10px 0 10px;border-right-color:transparent;border-bottom-color:transparent;border-left-color:transparent}.vue-tooltip[data-v-6673a70][x-placement^='bottom'] .tooltip-arrow{top:0;margin-top:0;margin-bottom:0;border-width:0 10px 10px 10px;border-top-color:transparent;border-right-color:transparent;border-left-color:transparent}.vue-tooltip[data-v-6673a70][x-placement^='right'] .tooltip-arrow{right:100%;margin-right:0;margin-left:0;border-width:10px 10px 10px 0;border-top-color:transparent;border-bottom-color:transparent;border-left-color:transparent}.vue-tooltip[data-v-6673a70][x-placement^='left'] .tooltip-arrow{left:100%;margin-right:0;margin-left:0;border-width:10px 0 10px 10px;border-top-color:transparent;border-right-color:transparent;border-bottom-color:transparent}.vue-tooltip[data-v-6673a70][aria-hidden='true']{visibility:hidden;transition:opacity .15s, visibility .15s;opacity:0}.vue-tooltip[data-v-6673a70][aria-hidden='false']{visibility:visible;transition:opacity .15s;opacity:1}.vue-tooltip[data-v-6673a70] .tooltip-inner{max-width:350px;padding:5px 8px;text-align:center;color:var(--color-main-text);border-radius:var(--border-radius);background-color:var(--color-main-background)}.vue-tooltip[data-v-6673a70] .tooltip-arrow{position:absolute;z-index:1;width:0;height:0;margin:0;border-style:solid;border-color:var(--color-main-background)}\\n\",\"\"])},function(t,e,n){\"use strict\";\n/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */var i=/[\"'&<>]/;t.exports=function(t){var e,n=\"\"+t,o=i.exec(n);if(!o)return n;var a=\"\",r=0,s=0;for(r=o.index;r<n.length;r++){switch(n.charCodeAt(r)){case 34:e=\""\";break;case 38:e=\"&\";break;case 39:e=\"'\";break;case 60:e=\"<\";break;case 62:e=\">\";break;default:continue}s!==r&&(a+=n.substring(s,r)),s=r+1,a+=e}return s!==r?a+n.substring(s,r):a}},function(t,e){},function(t,e){},function(t,e){},function(t,e,n){t.exports=n(98)},function(t,e){},function(t,e,n){var i;\n/*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license */\n/*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license */\n!function(o,a,r,s){\"use strict\";var c,l=[\"\",\"webkit\",\"Moz\",\"MS\",\"ms\",\"o\"],u=a.createElement(\"div\"),d=\"function\",p=Math.round,f=Math.abs,h=Date.now;function A(t,e,n){return setTimeout(w(t,n),e)}function v(t,e,n){return!!Array.isArray(t)&&(m(t,n[e],n),!0)}function m(t,e,n){var i;if(t)if(t.forEach)t.forEach(e,n);else if(t.length!==s)for(i=0;i<t.length;)e.call(n,t[i],i,t),i++;else for(i in t)t.hasOwnProperty(i)&&e.call(n,t[i],i,t)}function g(t,e,n){var i=\"DEPRECATED METHOD: \"+e+\"\\n\"+n+\" AT \\n\";return function(){var e=new Error(\"get-stack-trace\"),n=e&&e.stack?e.stack.replace(/^[^\\(]+?[\\n$]/gm,\"\").replace(/^\\s+at\\s+/gm,\"\").replace(/^Object.<anonymous>\\s*\\(/gm,\"{anonymous}()@\"):\"Unknown Stack Trace\",a=o.console&&(o.console.warn||o.console.log);return a&&a.call(o.console,i,n),t.apply(this,arguments)}}c=\"function\"!=typeof Object.assign?function(t){if(t===s||null===t)throw new TypeError(\"Cannot convert undefined or null to object\");for(var e=Object(t),n=1;n<arguments.length;n++){var i=arguments[n];if(i!==s&&null!==i)for(var o in i)i.hasOwnProperty(o)&&(e[o]=i[o])}return e}:Object.assign;var b=g(function(t,e,n){for(var i=Object.keys(e),o=0;o<i.length;)(!n||n&&t[i[o]]===s)&&(t[i[o]]=e[i[o]]),o++;return t},\"extend\",\"Use `assign`.\"),y=g(function(t,e){return b(t,e,!0)},\"merge\",\"Use `assign`.\");function x(t,e,n){var i,o=e.prototype;(i=t.prototype=Object.create(o)).constructor=t,i._super=o,n&&c(i,n)}function w(t,e){return function(){return t.apply(e,arguments)}}function _(t,e){return typeof t==d?t.apply(e&&e[0]||s,e):t}function T(t,e){return t===s?e:t}function k(t,e,n){m(S(e),function(e){t.addEventListener(e,n,!1)})}function C(t,e,n){m(S(e),function(e){t.removeEventListener(e,n,!1)})}function E(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1}function M(t,e){return t.indexOf(e)>-1}function S(t){return t.trim().split(/\\s+/g)}function D(t,e,n){if(t.indexOf&&!n)return t.indexOf(e);for(var i=0;i<t.length;){if(n&&t[i][n]==e||!n&&t[i]===e)return i;i++}return-1}function O(t){return Array.prototype.slice.call(t,0)}function B(t,e,n){for(var i=[],o=[],a=0;a<t.length;){var r=e?t[a][e]:t[a];D(o,r)<0&&i.push(t[a]),o[a]=r,a++}return n&&(i=e?i.sort(function(t,n){return t[e]>n[e]}):i.sort()),i}function I(t,e){for(var n,i,o=e[0].toUpperCase()+e.slice(1),a=0;a<l.length;){if((i=(n=l[a])?n+o:e)in t)return i;a++}return s}var N=1;function L(t){var e=t.ownerDocument||t;return e.defaultView||e.parentWindow||o}var P=\"ontouchstart\"in o,j=I(o,\"PointerEvent\")!==s,$=P&&/mobile|tablet|ip(ad|hone|od)|android/i.test(navigator.userAgent),F=25,Y=1,R=2,z=4,H=8,Q=1,V=2,G=4,U=8,W=16,Z=V|G,X=U|W,q=Z|X,K=[\"x\",\"y\"],J=[\"clientX\",\"clientY\"];function tt(t,e){var n=this;this.manager=t,this.callback=e,this.element=t.element,this.target=t.options.inputTarget,this.domHandler=function(e){_(t.options.enable,[t])&&n.handler(e)},this.init()}function et(t,e,n){var i=n.pointers.length,o=n.changedPointers.length,a=e&Y&&i-o==0,r=e&(z|H)&&i-o==0;n.isFirst=!!a,n.isFinal=!!r,a&&(t.session={}),n.eventType=e,function(t,e){var n=t.session,i=e.pointers,o=i.length;n.firstInput||(n.firstInput=nt(e));o>1&&!n.firstMultiple?n.firstMultiple=nt(e):1===o&&(n.firstMultiple=!1);var a=n.firstInput,r=n.firstMultiple,c=r?r.center:a.center,l=e.center=it(i);e.timeStamp=h(),e.deltaTime=e.timeStamp-a.timeStamp,e.angle=st(c,l),e.distance=rt(c,l),function(t,e){var n=e.center,i=t.offsetDelta||{},o=t.prevDelta||{},a=t.prevInput||{};e.eventType!==Y&&a.eventType!==z||(o=t.prevDelta={x:a.deltaX||0,y:a.deltaY||0},i=t.offsetDelta={x:n.x,y:n.y});e.deltaX=o.x+(n.x-i.x),e.deltaY=o.y+(n.y-i.y)}(n,e),e.offsetDirection=at(e.deltaX,e.deltaY);var u=ot(e.deltaTime,e.deltaX,e.deltaY);e.overallVelocityX=u.x,e.overallVelocityY=u.y,e.overallVelocity=f(u.x)>f(u.y)?u.x:u.y,e.scale=r?(d=r.pointers,p=i,rt(p[0],p[1],J)/rt(d[0],d[1],J)):1,e.rotation=r?function(t,e){return st(e[1],e[0],J)+st(t[1],t[0],J)}(r.pointers,i):0,e.maxPointers=n.prevInput?e.pointers.length>n.prevInput.maxPointers?e.pointers.length:n.prevInput.maxPointers:e.pointers.length,function(t,e){var n,i,o,a,r=t.lastInterval||e,c=e.timeStamp-r.timeStamp;if(e.eventType!=H&&(c>F||r.velocity===s)){var l=e.deltaX-r.deltaX,u=e.deltaY-r.deltaY,d=ot(c,l,u);i=d.x,o=d.y,n=f(d.x)>f(d.y)?d.x:d.y,a=at(l,u),t.lastInterval=e}else n=r.velocity,i=r.velocityX,o=r.velocityY,a=r.direction;e.velocity=n,e.velocityX=i,e.velocityY=o,e.direction=a}(n,e);var d,p;var A=t.element;E(e.srcEvent.target,A)&&(A=e.srcEvent.target);e.target=A}(t,n),t.emit(\"hammer.input\",n),t.recognize(n),t.session.prevInput=n}function nt(t){for(var e=[],n=0;n<t.pointers.length;)e[n]={clientX:p(t.pointers[n].clientX),clientY:p(t.pointers[n].clientY)},n++;return{timeStamp:h(),pointers:e,center:it(e),deltaX:t.deltaX,deltaY:t.deltaY}}function it(t){var e=t.length;if(1===e)return{x:p(t[0].clientX),y:p(t[0].clientY)};for(var n=0,i=0,o=0;o<e;)n+=t[o].clientX,i+=t[o].clientY,o++;return{x:p(n/e),y:p(i/e)}}function ot(t,e,n){return{x:e/t||0,y:n/t||0}}function at(t,e){return t===e?Q:f(t)>=f(e)?t<0?V:G:e<0?U:W}function rt(t,e,n){n||(n=K);var i=e[n[0]]-t[n[0]],o=e[n[1]]-t[n[1]];return Math.sqrt(i*i+o*o)}function st(t,e,n){n||(n=K);var i=e[n[0]]-t[n[0]],o=e[n[1]]-t[n[1]];return 180*Math.atan2(o,i)/Math.PI}tt.prototype={handler:function(){},init:function(){this.evEl&&k(this.element,this.evEl,this.domHandler),this.evTarget&&k(this.target,this.evTarget,this.domHandler),this.evWin&&k(L(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&C(this.element,this.evEl,this.domHandler),this.evTarget&&C(this.target,this.evTarget,this.domHandler),this.evWin&&C(L(this.element),this.evWin,this.domHandler)}};var ct={mousedown:Y,mousemove:R,mouseup:z},lt=\"mousedown\",ut=\"mousemove mouseup\";function dt(){this.evEl=lt,this.evWin=ut,this.pressed=!1,tt.apply(this,arguments)}x(dt,tt,{handler:function(t){var e=ct[t.type];e&Y&&0===t.button&&(this.pressed=!0),e&R&&1!==t.which&&(e=z),this.pressed&&(e&z&&(this.pressed=!1),this.callback(this.manager,e,{pointers:[t],changedPointers:[t],pointerType:\"mouse\",srcEvent:t}))}});var pt={pointerdown:Y,pointermove:R,pointerup:z,pointercancel:H,pointerout:H},ft={2:\"touch\",3:\"pen\",4:\"mouse\",5:\"kinect\"},ht=\"pointerdown\",At=\"pointermove pointerup pointercancel\";function vt(){this.evEl=ht,this.evWin=At,tt.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}o.MSPointerEvent&&!o.PointerEvent&&(ht=\"MSPointerDown\",At=\"MSPointerMove MSPointerUp MSPointerCancel\"),x(vt,tt,{handler:function(t){var e=this.store,n=!1,i=t.type.toLowerCase().replace(\"ms\",\"\"),o=pt[i],a=ft[t.pointerType]||t.pointerType,r=\"touch\"==a,s=D(e,t.pointerId,\"pointerId\");o&Y&&(0===t.button||r)?s<0&&(e.push(t),s=e.length-1):o&(z|H)&&(n=!0),s<0||(e[s]=t,this.callback(this.manager,o,{pointers:e,changedPointers:[t],pointerType:a,srcEvent:t}),n&&e.splice(s,1))}});var mt={touchstart:Y,touchmove:R,touchend:z,touchcancel:H},gt=\"touchstart\",bt=\"touchstart touchmove touchend touchcancel\";function yt(){this.evTarget=gt,this.evWin=bt,this.started=!1,tt.apply(this,arguments)}x(yt,tt,{handler:function(t){var e=mt[t.type];if(e===Y&&(this.started=!0),this.started){var n=function(t,e){var n=O(t.touches),i=O(t.changedTouches);e&(z|H)&&(n=B(n.concat(i),\"identifier\",!0));return[n,i]}.call(this,t,e);e&(z|H)&&n[0].length-n[1].length==0&&(this.started=!1),this.callback(this.manager,e,{pointers:n[0],changedPointers:n[1],pointerType:\"touch\",srcEvent:t})}}});var xt={touchstart:Y,touchmove:R,touchend:z,touchcancel:H},wt=\"touchstart touchmove touchend touchcancel\";function _t(){this.evTarget=wt,this.targetIds={},tt.apply(this,arguments)}x(_t,tt,{handler:function(t){var e=xt[t.type],n=function(t,e){var n=O(t.touches),i=this.targetIds;if(e&(Y|R)&&1===n.length)return i[n[0].identifier]=!0,[n,n];var o,a,r=O(t.changedTouches),s=[],c=this.target;if(a=n.filter(function(t){return E(t.target,c)}),e===Y)for(o=0;o<a.length;)i[a[o].identifier]=!0,o++;o=0;for(;o<r.length;)i[r[o].identifier]&&s.push(r[o]),e&(z|H)&&delete i[r[o].identifier],o++;if(!s.length)return;return[B(a.concat(s),\"identifier\",!0),s]}.call(this,t,e);n&&this.callback(this.manager,e,{pointers:n[0],changedPointers:n[1],pointerType:\"touch\",srcEvent:t})}});var Tt=2500,kt=25;function Ct(){tt.apply(this,arguments);var t=w(this.handler,this);this.touch=new _t(this.manager,t),this.mouse=new dt(this.manager,t),this.primaryTouch=null,this.lastTouches=[]}function Et(t){var e=t.changedPointers[0];if(e.identifier===this.primaryTouch){var n={x:e.clientX,y:e.clientY};this.lastTouches.push(n);var i=this.lastTouches;setTimeout(function(){var t=i.indexOf(n);t>-1&&i.splice(t,1)},Tt)}}x(Ct,tt,{handler:function(t,e,n){var i=\"touch\"==n.pointerType,o=\"mouse\"==n.pointerType;if(!(o&&n.sourceCapabilities&&n.sourceCapabilities.firesTouchEvents)){if(i)(function(t,e){t&Y?(this.primaryTouch=e.changedPointers[0].identifier,Et.call(this,e)):t&(z|H)&&Et.call(this,e)}).call(this,e,n);else if(o&&function(t){for(var e=t.srcEvent.clientX,n=t.srcEvent.clientY,i=0;i<this.lastTouches.length;i++){var o=this.lastTouches[i],a=Math.abs(e-o.x),r=Math.abs(n-o.y);if(a<=kt&&r<=kt)return!0}return!1}.call(this,n))return;this.callback(t,e,n)}},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var Mt=I(u.style,\"touchAction\"),St=Mt!==s,Dt=\"auto\",Ot=\"manipulation\",Bt=\"none\",It=\"pan-x\",Nt=\"pan-y\",Lt=function(){if(!St)return!1;var t={},e=o.CSS&&o.CSS.supports;return[\"auto\",\"manipulation\",\"pan-y\",\"pan-x\",\"pan-x pan-y\",\"none\"].forEach(function(n){t[n]=!e||o.CSS.supports(\"touch-action\",n)}),t}();function Pt(t,e){this.manager=t,this.set(e)}Pt.prototype={set:function(t){\"compute\"==t&&(t=this.compute()),St&&this.manager.element.style&&Lt[t]&&(this.manager.element.style[Mt]=t),this.actions=t.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var t=[];return m(this.manager.recognizers,function(e){_(e.options.enable,[e])&&(t=t.concat(e.getTouchAction()))}),function(t){if(M(t,Bt))return Bt;var e=M(t,It),n=M(t,Nt);if(e&&n)return Bt;if(e||n)return e?It:Nt;if(M(t,Ot))return Ot;return Dt}(t.join(\" \"))},preventDefaults:function(t){var e=t.srcEvent,n=t.offsetDirection;if(this.manager.session.prevented)e.preventDefault();else{var i=this.actions,o=M(i,Bt)&&!Lt[Bt],a=M(i,Nt)&&!Lt[Nt],r=M(i,It)&&!Lt[It];if(o){var s=1===t.pointers.length,c=t.distance<2,l=t.deltaTime<250;if(s&&c&&l)return}if(!r||!a)return o||a&&n&Z||r&&n&X?this.preventSrc(e):void 0}},preventSrc:function(t){this.manager.session.prevented=!0,t.preventDefault()}};var jt=1,$t=2,Ft=4,Yt=8,Rt=Yt,zt=16;function Ht(t){this.options=c({},this.defaults,t||{}),this.id=N++,this.manager=null,this.options.enable=T(this.options.enable,!0),this.state=jt,this.simultaneous={},this.requireFail=[]}function Qt(t){return t&zt?\"cancel\":t&Yt?\"end\":t&Ft?\"move\":t&$t?\"start\":\"\"}function Vt(t){return t==W?\"down\":t==U?\"up\":t==V?\"left\":t==G?\"right\":\"\"}function Gt(t,e){var n=e.manager;return n?n.get(t):t}function Ut(){Ht.apply(this,arguments)}function Wt(){Ut.apply(this,arguments),this.pX=null,this.pY=null}function Zt(){Ut.apply(this,arguments)}function Xt(){Ht.apply(this,arguments),this._timer=null,this._input=null}function qt(){Ut.apply(this,arguments)}function Kt(){Ut.apply(this,arguments)}function Jt(){Ht.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}function te(t,e){return(e=e||{}).recognizers=T(e.recognizers,te.defaults.preset),new ee(t,e)}Ht.prototype={defaults:{},set:function(t){return c(this.options,t),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(t){if(v(t,\"recognizeWith\",this))return this;var e=this.simultaneous;return e[(t=Gt(t,this)).id]||(e[t.id]=t,t.recognizeWith(this)),this},dropRecognizeWith:function(t){return v(t,\"dropRecognizeWith\",this)?this:(t=Gt(t,this),delete this.simultaneous[t.id],this)},requireFailure:function(t){if(v(t,\"requireFailure\",this))return this;var e=this.requireFail;return-1===D(e,t=Gt(t,this))&&(e.push(t),t.requireFailure(this)),this},dropRequireFailure:function(t){if(v(t,\"dropRequireFailure\",this))return this;t=Gt(t,this);var e=D(this.requireFail,t);return e>-1&&this.requireFail.splice(e,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(t){return!!this.simultaneous[t.id]},emit:function(t){var e=this,n=this.state;function i(n){e.manager.emit(n,t)}n<Yt&&i(e.options.event+Qt(n)),i(e.options.event),t.additionalEvent&&i(t.additionalEvent),n>=Yt&&i(e.options.event+Qt(n))},tryEmit:function(t){if(this.canEmit())return this.emit(t);this.state=32},canEmit:function(){for(var t=0;t<this.requireFail.length;){if(!(this.requireFail[t].state&(32|jt)))return!1;t++}return!0},recognize:function(t){var e=c({},t);if(!_(this.options.enable,[this,e]))return this.reset(),void(this.state=32);this.state&(Rt|zt|32)&&(this.state=jt),this.state=this.process(e),this.state&($t|Ft|Yt|zt)&&this.tryEmit(e)},process:function(t){},getTouchAction:function(){},reset:function(){}},x(Ut,Ht,{defaults:{pointers:1},attrTest:function(t){var e=this.options.pointers;return 0===e||t.pointers.length===e},process:function(t){var e=this.state,n=t.eventType,i=e&($t|Ft),o=this.attrTest(t);return i&&(n&H||!o)?e|zt:i||o?n&z?e|Yt:e&$t?e|Ft:$t:32}}),x(Wt,Ut,{defaults:{event:\"pan\",threshold:10,pointers:1,direction:q},getTouchAction:function(){var t=this.options.direction,e=[];return t&Z&&e.push(Nt),t&X&&e.push(It),e},directionTest:function(t){var e=this.options,n=!0,i=t.distance,o=t.direction,a=t.deltaX,r=t.deltaY;return o&e.direction||(e.direction&Z?(o=0===a?Q:a<0?V:G,n=a!=this.pX,i=Math.abs(t.deltaX)):(o=0===r?Q:r<0?U:W,n=r!=this.pY,i=Math.abs(t.deltaY))),t.direction=o,n&&i>e.threshold&&o&e.direction},attrTest:function(t){return Ut.prototype.attrTest.call(this,t)&&(this.state&$t||!(this.state&$t)&&this.directionTest(t))},emit:function(t){this.pX=t.deltaX,this.pY=t.deltaY;var e=Vt(t.direction);e&&(t.additionalEvent=this.options.event+e),this._super.emit.call(this,t)}}),x(Zt,Ut,{defaults:{event:\"pinch\",threshold:0,pointers:2},getTouchAction:function(){return[Bt]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.scale-1)>this.options.threshold||this.state&$t)},emit:function(t){if(1!==t.scale){var e=t.scale<1?\"in\":\"out\";t.additionalEvent=this.options.event+e}this._super.emit.call(this,t)}}),x(Xt,Ht,{defaults:{event:\"press\",pointers:1,time:251,threshold:9},getTouchAction:function(){return[Dt]},process:function(t){var e=this.options,n=t.pointers.length===e.pointers,i=t.distance<e.threshold,o=t.deltaTime>e.time;if(this._input=t,!i||!n||t.eventType&(z|H)&&!o)this.reset();else if(t.eventType&Y)this.reset(),this._timer=A(function(){this.state=Rt,this.tryEmit()},e.time,this);else if(t.eventType&z)return Rt;return 32},reset:function(){clearTimeout(this._timer)},emit:function(t){this.state===Rt&&(t&&t.eventType&z?this.manager.emit(this.options.event+\"up\",t):(this._input.timeStamp=h(),this.manager.emit(this.options.event,this._input)))}}),x(qt,Ut,{defaults:{event:\"rotate\",threshold:0,pointers:2},getTouchAction:function(){return[Bt]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.rotation)>this.options.threshold||this.state&$t)}}),x(Kt,Ut,{defaults:{event:\"swipe\",threshold:10,velocity:.3,direction:Z|X,pointers:1},getTouchAction:function(){return Wt.prototype.getTouchAction.call(this)},attrTest:function(t){var e,n=this.options.direction;return n&(Z|X)?e=t.overallVelocity:n&Z?e=t.overallVelocityX:n&X&&(e=t.overallVelocityY),this._super.attrTest.call(this,t)&&n&t.offsetDirection&&t.distance>this.options.threshold&&t.maxPointers==this.options.pointers&&f(e)>this.options.velocity&&t.eventType&z},emit:function(t){var e=Vt(t.offsetDirection);e&&this.manager.emit(this.options.event+e,t),this.manager.emit(this.options.event,t)}}),x(Jt,Ht,{defaults:{event:\"tap\",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[Ot]},process:function(t){var e=this.options,n=t.pointers.length===e.pointers,i=t.distance<e.threshold,o=t.deltaTime<e.time;if(this.reset(),t.eventType&Y&&0===this.count)return this.failTimeout();if(i&&o&&n){if(t.eventType!=z)return this.failTimeout();var a=!this.pTime||t.timeStamp-this.pTime<e.interval,r=!this.pCenter||rt(this.pCenter,t.center)<e.posThreshold;if(this.pTime=t.timeStamp,this.pCenter=t.center,r&&a?this.count+=1:this.count=1,this._input=t,0===this.count%e.taps)return this.hasRequireFailures()?(this._timer=A(function(){this.state=Rt,this.tryEmit()},e.interval,this),$t):Rt}return 32},failTimeout:function(){return this._timer=A(function(){this.state=32},this.options.interval,this),32},reset:function(){clearTimeout(this._timer)},emit:function(){this.state==Rt&&(this._input.tapCount=this.count,this.manager.emit(this.options.event,this._input))}}),te.VERSION=\"2.0.7\",te.defaults={domEvents:!1,touchAction:\"compute\",enable:!0,inputTarget:null,inputClass:null,preset:[[qt,{enable:!1}],[Zt,{enable:!1},[\"rotate\"]],[Kt,{direction:Z}],[Wt,{direction:Z},[\"swipe\"]],[Jt],[Jt,{event:\"doubletap\",taps:2},[\"tap\"]],[Xt]],cssProps:{userSelect:\"none\",touchSelect:\"none\",touchCallout:\"none\",contentZooming:\"none\",userDrag:\"none\",tapHighlightColor:\"rgba(0,0,0,0)\"}};function ee(t,e){var n;this.options=c({},te.defaults,e||{}),this.options.inputTarget=this.options.inputTarget||t,this.handlers={},this.session={},this.recognizers=[],this.oldCssProps={},this.element=t,this.input=new((n=this).options.inputClass||(j?vt:$?_t:P?Ct:dt))(n,et),this.touchAction=new Pt(this,this.options.touchAction),ne(this,!0),m(this.options.recognizers,function(t){var e=this.add(new t[0](t[1]));t[2]&&e.recognizeWith(t[2]),t[3]&&e.requireFailure(t[3])},this)}function ne(t,e){var n,i=t.element;i.style&&(m(t.options.cssProps,function(o,a){n=I(i.style,a),e?(t.oldCssProps[n]=i.style[n],i.style[n]=o):i.style[n]=t.oldCssProps[n]||\"\"}),e||(t.oldCssProps={}))}ee.prototype={set:function(t){return c(this.options,t),t.touchAction&&this.touchAction.update(),t.inputTarget&&(this.input.destroy(),this.input.target=t.inputTarget,this.input.init()),this},stop:function(t){this.session.stopped=t?2:1},recognize:function(t){var e=this.session;if(!e.stopped){var n;this.touchAction.preventDefaults(t);var i=this.recognizers,o=e.curRecognizer;(!o||o&&o.state&Rt)&&(o=e.curRecognizer=null);for(var a=0;a<i.length;)n=i[a],2===e.stopped||o&&n!=o&&!n.canRecognizeWith(o)?n.reset():n.recognize(t),!o&&n.state&($t|Ft|Yt)&&(o=e.curRecognizer=n),a++}},get:function(t){if(t instanceof Ht)return t;for(var e=this.recognizers,n=0;n<e.length;n++)if(e[n].options.event==t)return e[n];return null},add:function(t){if(v(t,\"add\",this))return this;var e=this.get(t.options.event);return e&&this.remove(e),this.recognizers.push(t),t.manager=this,this.touchAction.update(),t},remove:function(t){if(v(t,\"remove\",this))return this;if(t=this.get(t)){var e=this.recognizers,n=D(e,t);-1!==n&&(e.splice(n,1),this.touchAction.update())}return this},on:function(t,e){if(t!==s&&e!==s){var n=this.handlers;return m(S(t),function(t){n[t]=n[t]||[],n[t].push(e)}),this}},off:function(t,e){if(t!==s){var n=this.handlers;return m(S(t),function(t){e?n[t]&&n[t].splice(D(n[t],e),1):delete n[t]}),this}},emit:function(t,e){this.options.domEvents&&function(t,e){var n=a.createEvent(\"Event\");n.initEvent(t,!0,!0),n.gesture=e,e.target.dispatchEvent(n)}(t,e);var n=this.handlers[t]&&this.handlers[t].slice();if(n&&n.length){e.type=t,e.preventDefault=function(){e.srcEvent.preventDefault()};for(var i=0;i<n.length;)n[i](e),i++}},destroy:function(){this.element&&ne(this,!1),this.handlers={},this.session={},this.input.destroy(),this.element=null}},c(te,{INPUT_START:Y,INPUT_MOVE:R,INPUT_END:z,INPUT_CANCEL:H,STATE_POSSIBLE:jt,STATE_BEGAN:$t,STATE_CHANGED:Ft,STATE_ENDED:Yt,STATE_RECOGNIZED:Rt,STATE_CANCELLED:zt,STATE_FAILED:32,DIRECTION_NONE:Q,DIRECTION_LEFT:V,DIRECTION_RIGHT:G,DIRECTION_UP:U,DIRECTION_DOWN:W,DIRECTION_HORIZONTAL:Z,DIRECTION_VERTICAL:X,DIRECTION_ALL:q,Manager:ee,Input:tt,TouchAction:Pt,TouchInput:_t,MouseInput:dt,PointerEventInput:vt,TouchMouseInput:Ct,SingleTouchInput:yt,Recognizer:Ht,AttrRecognizer:Ut,Tap:Jt,Pan:Wt,Swipe:Kt,Pinch:Zt,Rotate:qt,Press:Xt,on:k,off:C,each:m,merge:y,extend:b,assign:c,inherit:x,bindFn:w,prefixed:I}),(void 0!==o?o:\"undefined\"!=typeof self?self:{}).Hammer=te,(i=function(){return te}.call(e,n,e,t))===s||(t.exports=i)}(window,document)},function(t,e,n){\"use strict\";var i=n(18);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,\"\\nbutton.menuitem[data-v-8dc4efb0] {\\n\\ttext-align: left;\\n}\\nbutton.menuitem *[data-v-8dc4efb0] {\\n\\tcursor: pointer;\\n}\\nbutton.menuitem[data-v-8dc4efb0]:disabled {\\n\\topacity: 0.5 !important;\\n\\tcursor: default;\\n}\\nbutton.menuitem:disabled *[data-v-8dc4efb0] {\\n\\tcursor: default;\\n}\\n.menuitem.active[data-v-8dc4efb0] {\\n\\tbox-shadow: inset 2px 0 var(--color-primary);\\n\\tborder-radius: 0;\\n}\\n\",\"\"])},function(t,e,n){\"use strict\";var i=n(19);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,\"li[data-v-8dc4efb0]{display:flex;flex:0 0 auto}li.hidden[data-v-8dc4efb0]{display:none}li>button[data-v-8dc4efb0],li>a[data-v-8dc4efb0],li>.menuitem[data-v-8dc4efb0]{cursor:pointer;line-height:44px;border:0;border-radius:0;background-color:transparent;display:flex;align-items:flex-start;height:auto;margin:0;padding:0;font-weight:normal;box-shadow:none;width:100%;color:var(--color-main-text);white-space:nowrap;opacity:.7}li>button span[class^='icon-'][data-v-8dc4efb0],li>button span[class*=' icon-'][data-v-8dc4efb0],li>button[class^='icon-'][data-v-8dc4efb0],li>button[class*=' icon-'][data-v-8dc4efb0],li>a span[class^='icon-'][data-v-8dc4efb0],li>a span[class*=' icon-'][data-v-8dc4efb0],li>a[class^='icon-'][data-v-8dc4efb0],li>a[class*=' icon-'][data-v-8dc4efb0],li>.menuitem span[class^='icon-'][data-v-8dc4efb0],li>.menuitem span[class*=' icon-'][data-v-8dc4efb0],li>.menuitem[class^='icon-'][data-v-8dc4efb0],li>.menuitem[class*=' icon-'][data-v-8dc4efb0]{min-width:0;min-height:0;background-position:14px center;background-size:16px}li>button span[class^='icon-'][data-v-8dc4efb0],li>button span[class*=' icon-'][data-v-8dc4efb0],li>a span[class^='icon-'][data-v-8dc4efb0],li>a span[class*=' icon-'][data-v-8dc4efb0],li>.menuitem span[class^='icon-'][data-v-8dc4efb0],li>.menuitem span[class*=' icon-'][data-v-8dc4efb0]{padding:22px 0 22px 44px}li>button:not([class^='icon-']):not([class*='icon-'])>span[data-v-8dc4efb0]:not([class^='icon-']):not([class*='icon-']):first-child,li>button:not([class^='icon-']):not([class*='icon-'])>input[data-v-8dc4efb0]:not([class^='icon-']):not([class*='icon-']):first-child,li>button:not([class^='icon-']):not([class*='icon-'])>form[data-v-8dc4efb0]:not([class^='icon-']):not([class*='icon-']):first-child,li>a:not([class^='icon-']):not([class*='icon-'])>span[data-v-8dc4efb0]:not([class^='icon-']):not([class*='icon-']):first-child,li>a:not([class^='icon-']):not([class*='icon-'])>input[data-v-8dc4efb0]:not([class^='icon-']):not([class*='icon-']):first-child,li>a:not([class^='icon-']):not([class*='icon-'])>form[data-v-8dc4efb0]:not([class^='icon-']):not([class*='icon-']):first-child,li>.menuitem:not([class^='icon-']):not([class*='icon-'])>span[data-v-8dc4efb0]:not([class^='icon-']):not([class*='icon-']):first-child,li>.menuitem:not([class^='icon-']):not([class*='icon-'])>input[data-v-8dc4efb0]:not([class^='icon-']):not([class*='icon-']):first-child,li>.menuitem:not([class^='icon-']):not([class*='icon-'])>form[data-v-8dc4efb0]:not([class^='icon-']):not([class*='icon-']):first-child{margin-left:44px}li>button[class^='icon-'][data-v-8dc4efb0],li>button[class*=' icon-'][data-v-8dc4efb0],li>a[class^='icon-'][data-v-8dc4efb0],li>a[class*=' icon-'][data-v-8dc4efb0],li>.menuitem[class^='icon-'][data-v-8dc4efb0],li>.menuitem[class*=' icon-'][data-v-8dc4efb0]{padding:0 14px 0 44px}li>button[data-v-8dc4efb0]:not(:disabled):hover,li>button[data-v-8dc4efb0]:not(:disabled):focus,li>button:not(:disabled).active[data-v-8dc4efb0],li>a[data-v-8dc4efb0]:not(:disabled):hover,li>a[data-v-8dc4efb0]:not(:disabled):focus,li>a:not(:disabled).active[data-v-8dc4efb0],li>.menuitem[data-v-8dc4efb0]:not(:disabled):hover,li>.menuitem[data-v-8dc4efb0]:not(:disabled):focus,li>.menuitem:not(:disabled).active[data-v-8dc4efb0]{opacity:1 !important}li>button.action[data-v-8dc4efb0],li>a.action[data-v-8dc4efb0],li>.menuitem.action[data-v-8dc4efb0]{padding:inherit !important}li>button>span[data-v-8dc4efb0],li>a>span[data-v-8dc4efb0],li>.menuitem>span[data-v-8dc4efb0]{cursor:pointer;white-space:nowrap}li>button>p[data-v-8dc4efb0],li>a>p[data-v-8dc4efb0],li>.menuitem>p[data-v-8dc4efb0]{width:150px;line-height:1.6em;padding:8px 0;white-space:normal}li>button>select[data-v-8dc4efb0],li>a>select[data-v-8dc4efb0],li>.menuitem>select[data-v-8dc4efb0]{margin:0;margin-left:6px}li>button[data-v-8dc4efb0]:not(:empty),li>a[data-v-8dc4efb0]:not(:empty),li>.menuitem[data-v-8dc4efb0]:not(:empty){padding-right:14px !important}li>button>img[data-v-8dc4efb0],li>a>img[data-v-8dc4efb0],li>.menuitem>img[data-v-8dc4efb0]{width:16px;padding:14px}li>button>input.radio+label[data-v-8dc4efb0],li>button>input.checkbox+label[data-v-8dc4efb0],li>a>input.radio+label[data-v-8dc4efb0],li>a>input.checkbox+label[data-v-8dc4efb0],li>.menuitem>input.radio+label[data-v-8dc4efb0],li>.menuitem>input.checkbox+label[data-v-8dc4efb0]{padding:0 !important;width:100%}li>button>input.checkbox+label[data-v-8dc4efb0]::before,li>a>input.checkbox+label[data-v-8dc4efb0]::before,li>.menuitem>input.checkbox+label[data-v-8dc4efb0]::before{margin:-2px 13px 0}li>button>input.radio+label[data-v-8dc4efb0]::before,li>a>input.radio+label[data-v-8dc4efb0]::before,li>.menuitem>input.radio+label[data-v-8dc4efb0]::before{margin:-2px 12px 0}li>button>input[data-v-8dc4efb0]:not([type=radio]):not([type=checkbox]):not([type=image]),li>a>input[data-v-8dc4efb0]:not([type=radio]):not([type=checkbox]):not([type=image]),li>.menuitem>input[data-v-8dc4efb0]:not([type=radio]):not([type=checkbox]):not([type=image]){width:150px}li>button form[data-v-8dc4efb0],li>a form[data-v-8dc4efb0],li>.menuitem form[data-v-8dc4efb0]{display:flex;flex:1 1 auto}li>button form[data-v-8dc4efb0]:not(:first-child),li>a form[data-v-8dc4efb0]:not(:first-child),li>.menuitem form[data-v-8dc4efb0]:not(:first-child){margin-left:5px}li>button>span.hidden+form[data-v-8dc4efb0],li>button>span[style*='display:none']+form[data-v-8dc4efb0],li>a>span.hidden+form[data-v-8dc4efb0],li>a>span[style*='display:none']+form[data-v-8dc4efb0],li>.menuitem>span.hidden+form[data-v-8dc4efb0],li>.menuitem>span[style*='display:none']+form[data-v-8dc4efb0]{margin-left:0}li>button input[data-v-8dc4efb0],li>a input[data-v-8dc4efb0],li>.menuitem input[data-v-8dc4efb0]{min-width:44px;max-height:40px;margin:2px 0;flex:1 1 auto}li>button input[data-v-8dc4efb0]:not(:first-child),li>a input[data-v-8dc4efb0]:not(:first-child),li>.menuitem input[data-v-8dc4efb0]:not(:first-child){margin-left:5px}li:not(.hidden):not([style*='display:none']):first-of-type>button>form[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):first-of-type>button>input[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):first-of-type>a>form[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):first-of-type>a>input[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):first-of-type>.menuitem>form[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):first-of-type>.menuitem>input[data-v-8dc4efb0]{margin-top:12px}li:not(.hidden):not([style*='display:none']):last-of-type>button>form[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):last-of-type>button>input[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):last-of-type>a>form[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):last-of-type>a>input[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):last-of-type>.menuitem>form[data-v-8dc4efb0],li:not(.hidden):not([style*='display:none']):last-of-type>.menuitem>input[data-v-8dc4efb0]{margin-bottom:12px}li>button[data-v-8dc4efb0]{padding:0}li>button span[data-v-8dc4efb0]{opacity:1}\\n\",\"\"])},function(t,e,n){\"use strict\";var i=n(20);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,\"ul[data-v-2f982451]{display:flex;flex-direction:column}\\n\",\"\"])},function(t,e,n){var i=n(146);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"504198fc\",i,!0,{})},function(t,e,n){var i=n(148);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"efb117ce\",i,!0,{})},function(t,e,n){var i=n(150);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"89c943dc\",i,!0,{})},function(t,e,n){var i=n(152);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"766647a2\",i,!0,{})},function(t,e,n){var i=n(154);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"55805cbd\",i,!0,{})},function(t,e,n){var i=n(156);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"19f30fef\",i,!0,{})},function(t,e,n){var i=n(158);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"55b308c7\",i,!0,{})},function(t,e,n){var i=n(160);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"0c820946\",i,!0,{})},function(t,e,n){var i=n(162);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"7d41231a\",i,!0,{})},function(t,e,n){var i=n(164);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"4b6feab4\",i,!0,{})},function(t,e,n){var i=n(166);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"2eb234c2\",i,!0,{})},function(t,e,n){var i=n(168);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"30caeb37\",i,!0,{})},function(t,e,n){var i=n(170);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"4dd3631b\",i,!0,{})},function(t,e,n){var i=n(172);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"0a4af55c\",i,!0,{})},function(t,e,n){var i=n(174);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"acfb770c\",i,!0,{})},function(t,e,n){var i=n(176);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"05387ef8\",i,!0,{})},function(t,e,n){var i=n(178);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"a375d0ac\",i,!0,{})},function(t,e,n){\"use strict\";n.r(e);var i,o=n(38),a=n.n(o),r=n(77),s=n.n(r),c=n(6),l=n(24),u=n(13),d=n.n(u),p=n(78),f=n.n(p),h=n(79),A=n.n(h),v=function(t){var e=t.toLowerCase();function n(t,e,n){this.r=t,this.g=e,this.b=n}function i(t,e,i){var o=[];o.push(e);for(var a=function(t,e){var n=new Array(3);return n[0]=(e[1].r-e[0].r)/t,n[1]=(e[1].g-e[0].g)/t,n[2]=(e[1].b-e[0].b)/t,n}(t,[e,i]),r=1;r<t;r++){var s=parseInt(e.r+a[0]*r),c=parseInt(e.g+a[1]*r),l=parseInt(e.b+a[2]*r);o.push(new n(s,c,l))}return o}null===e.match(/^([0-9a-f]{4}-?){8}$/)&&(e=A()(e)),e=e.replace(/[^0-9a-f]/g,\"\");var o=new n(182,70,157),a=new n(221,203,85),r=new n(0,130,201),s=i(6,o,a),c=i(6,a,r),l=i(6,r,o);return s.concat(c).concat(l)[function(t,e){for(var n=0,i=[],o=0;o<t.length;o++)i.push(parseInt(t.charAt(o),16)%16);for(var a in i)n+=i[a];return parseInt(parseInt(n)%e)}(e,18)]},m={name:\"Avatar\",directives:{tooltip:c.default,ClickOutside:d.a},components:{PopoverMenu:l.PopoverMenu},props:{url:{type:String,default:void 0},user:{type:String,default:void 0},isGuest:{type:Boolean,default:!1},displayName:{type:String,default:void 0},size:{type:Number,default:32},allowPlaceholder:{type:Boolean,default:!0},disableTooltip:{type:Boolean,default:!1},disableMenu:{type:Boolean,default:!1},tooltipMessage:{type:String,default:null},isNoUser:{type:Boolean,default:!1},status:{type:String,default:null,validator:function(t){switch(t){case\"positive\":case\"negative\":case\"neutral\":return!0}return!1}},statusColor:{type:[Number,String],default:null,validator:function(t){return/^([a-f0-9]{3}){1,2}$/i.test(t)}}},data:function(){return{avatarUrlLoaded:null,avatarSrcSetLoaded:null,userDoesNotExist:!1,isAvatarLoaded:!1,isMenuLoaded:!1,contactsMenuActions:[],contactsMenuOpenState:!1}},computed:{getUserIdentifier:function(){return this.isDisplayNameDefined?this.displayName:this.isUserDefined?this.user:\"\"},isUserDefined:function(){return void 0!==this.user},isDisplayNameDefined:function(){return void 0!==this.displayName},isUrlDefined:function(){return void 0!==this.url},hasMenu:function(){return!this.disableMenu&&(this.isMenuLoaded?this.menu.length>0:!(this.user===OC.getCurrentUser().uid||this.userDoesNotExist||this.url))},shouldShowPlaceholder:function(){return this.allowPlaceholder&&this.userDoesNotExist},avatarStyle:function(){var t={width:this.size+\"px\",height:this.size+\"px\",lineHeight:this.size+\"px\",fontSize:Math.round(.55*this.size)+\"px\"},e=v(this.getUserIdentifier);return t.backgroundColor=\"rgb(\"+e.r+\", \"+e.g+\", \"+e.b+\")\",t},tooltip:function(){return!this.disableTooltip&&(this.tooltipMessage?this.tooltipMessage:this.displayName)},initials:function(){return this.shouldShowPlaceholder?this.getUserIdentifier.charAt(0).toUpperCase():\"?\"},menu:function(){return this.contactsMenuActions.map(function(t){return{href:t.hyperlink,icon:t.icon,text:t.title}})}},watch:{url:function(){this.userDoesNotExist=!1,this.loadAvatarUrl()},user:function(){this.userDoesNotExist=!1,this.isMenuLoaded=!1,this.loadAvatarUrl()}},mounted:function(){this.loadAvatarUrl()},methods:{toggleMenu:function(){this.hasMenu&&(this.contactsMenuOpenState=!this.contactsMenuOpenState,this.contactsMenuOpenState&&this.fetchContactsMenu())},closeMenu:function(){this.contactsMenuOpenState=!1},fetchContactsMenu:(i=s()(a.a.mark(function t(){var e,n,i;return a.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,e=encodeURIComponent(this.user),t.next=4,f.a.post(OC.generateUrl(\"contactsmenu/findOne\"),\"shareType=0&shareWith=\".concat(e));case 4:n=t.sent,i=n.data,this.contactsMenuActions=[i.topAction].concat(i.actions),t.next=12;break;case 9:t.prev=9,t.t0=t.catch(0),this.contactsMenuOpenState=!1;case 12:this.isMenuLoaded=!0;case 13:case\"end\":return t.stop()}},t,this,[[0,9]])})),function(){return i.apply(this,arguments)}),loadAvatarUrl:function(){var t=this;if(this.isAvatarLoaded=!1,!this.isUrlDefined&&(!this.isUserDefined||this.isNoUser))return this.isAvatarLoaded=!0,void(this.userDoesNotExist=!0);var e=function(e,n){var i=\"/avatar/{user}/{size}\";t.isGuest&&(i=\"/avatar/guest/{user}/{size}\");var o=OC.generateUrl(i,{user:e,size:n});return e===OC.getCurrentUser().uid&&\"undefined\"!=typeof oc_userconfig&&(o+=\"?v=\"+oc_userconfig.avatar.version),o},n=e(this.user,this.size);this.isUrlDefined&&(n=this.url);var i=[n+\" 1x\",e(this.user,2*this.size)+\" 2x\",e(this.user,4*this.size)+\" 4x\"].join(\", \"),o=new Image;o.onload=function(){t.avatarUrlLoaded=n,t.isUrlDefined||(t.avatarSrcSetLoaded=i),t.isAvatarLoaded=!0},o.onerror=function(){t.userDoesNotExist=!0,t.isAvatarLoaded=!0},this.isUrlDefined||(o.srcset=i),o.src=n}}},g=(n(119),n(0)),b=n(39),y=n.n(b),x=Object(g.a)(m,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:t.tooltip,expression:\"tooltip\"},{name:\"click-outside\",rawName:\"v-click-outside\",value:t.closeMenu,expression:\"closeMenu\"}],staticClass:\"avatardiv popovermenu-wrapper\",class:{\"icon-loading\":!t.isAvatarLoaded,\"avatardiv--unknown\":t.userDoesNotExist,\"avatardiv--with-menu\":t.hasMenu},style:t.avatarStyle,on:{click:t.toggleMenu}},[t.isAvatarLoaded&&!t.userDoesNotExist?n(\"img\",{attrs:{src:t.avatarUrlLoaded,srcset:t.avatarSrcSetLoaded}}):t._e(),t._v(\" \"),t.hasMenu?n(\"div\",{staticClass:\"icon-more\"}):t._e(),t._v(\" \"),t.status?n(\"div\",{staticClass:\"avatardiv__status\",class:\"avatardiv__status--\"+t.status,style:{backgroundColor:\"#\"+t.statusColor}},[\"neutral\"===t.status?n(\"svg\",{attrs:{xmlns:\"http://www.w3.org/2000/svg\",width:\"12\",height:\"11\",viewBox:\"0 0 3.175 2.91\"}},[n(\"path\",{style:{fill:\"#\"+t.statusColor},attrs:{d:\"M3.21 3.043H.494l.679-1.177.68-1.176.678 1.176z\",stroke:\"#fff\",\"stroke-width\":\".265\",\"stroke-linecap\":\"square\"}})]):t._e()]):t._e(),t._v(\" \"),t.userDoesNotExist?n(\"div\",{staticClass:\"unknown\"},[t._v(\"\\n\\t\\t\"+t._s(t.initials)+\"\\n\\t\")]):t._e(),t._v(\" \"),t.hasMenu?n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.contactsMenuOpenState,expression:\"contactsMenuOpenState\"}],staticClass:\"popovermenu menu-center\"},[n(\"PopoverMenu\",{attrs:{\"is-open\":t.contactsMenuOpenState,menu:t.menu}})],1):t._e()])},[],!1,null,\"6015a092\",null);\"function\"==typeof y.a&&y()(x);var w=x.exports;n.d(e,\"Avatar\",function(){return w});\n/**\n * @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */e.default=w},function(t,e,n){\"use strict\";n.r(e);var i={name:\"ActionButton\",mixins:[n(14).a],props:{disabled:{type:Boolean,default:!1}},computed:{isFocusable:function(){return!this.disabled}}},o=(n(90),n(0)),a=n(35),r=n.n(a),s=Object(o.a)(i,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"li\",{class:{\"action--disabled\":t.disabled}},[n(\"button\",{staticClass:\"action-button\",class:{focusable:t.isFocusable},on:{click:t.onClick}},[n(\"span\",{staticClass:\"action-button__icon\",class:[t.isIconUrl?\"action-button__icon--url\":t.icon],style:{backgroundImage:t.isIconUrl?\"url(\"+t.icon+\")\":null}}),t._v(\" \"),t.title?n(\"p\",[n(\"strong\",{staticClass:\"action-button__title\"},[t._v(\"\\n\\t\\t\\t\\t\"+t._s(t.title)+\"\\n\\t\\t\\t\")]),t._v(\" \"),n(\"br\"),t._v(\" \"),n(\"span\",{staticClass:\"action-button__longtext\",domProps:{textContent:t._s(t.text)}})]):t.isLongText?n(\"p\",{staticClass:\"action-button__longtext\",domProps:{textContent:t._s(t.text)}}):n(\"span\",{staticClass:\"action-button__text\"},[t._v(t._s(t.text))]),t._v(\" \"),t._e()],2)])},[],!1,null,\"37538719\",null);\"function\"==typeof r.a&&r()(s);var c=s.exports;n.d(e,\"ActionButton\",function(){return c});\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */e.default=c},function(t,e,n){\"use strict\";n.r(e);var i=n(23),o=n(31),a=n.n(o);a.a.components.CalendarPanel.components.PanelTime.methods.stringifyText=function(t){return t},a.a.methods.displayPopup=function(){var t=this.$el.querySelector(\".mx-datepicker-popup\");t&&!t.classList.contains(\"popovermenu\")&&(t.className+=\" popovermenu menu-center open\")};var r={name:\"DatetimePicker\",components:{DatePicker:a.a},inheritAttrs:!1,props:{value:{default:function(){return new Date}}},methods:{handleSelectYear:function(t){var e=this.$refs.datepicker.currentValue;if(e)try{var n=new Date(new Date(e).setFullYear(t));this.$refs.datepicker.selectDate(n)}catch(n){console.error(\"Invalid value\",e,t)}},handleSelectMonth:function(t){var e=this.$refs.datepicker.currentValue;if(e)try{var n=new Date(new Date(e).setMonth(t));this.$refs.datepicker.selectDate(n)}catch(n){console.error(\"Invalid value\",e,t)}}}},s=n(0),c=n(36),l=n.n(c),u=Object(s.a)(r,function(){var t=this,e=t.$createElement;return(t._self._c||e)(\"DatePicker\",t._g(t._b({ref:\"datepicker\",attrs:{clearable:!1,\"minute-step\":10,value:t.value},on:{\"select-year\":t.handleSelectYear,\"select-month\":t.handleSelectMonth,\"update:value\":function(e){return t.$emit(\"update:value\",t.value)}}},\"DatePicker\",t.$attrs,!1),t.$listeners))},[],!1,null,null,null);\"function\"==typeof l.a&&l()(u);var d=u.exports;n(92);n.d(e,\"DatetimePicker\",function(){return d}),\n/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nObject(i.a)(d);e.default=d},function(t,e,n){\"use strict\";n.r(e);var i={name:\"AppNavigationCounter\",props:{highlighted:{type:Boolean,default:!1}}},o=(n(96),n(0)),a=n(37),r=n.n(a),s=Object(o.a)(i,function(){var t=this.$createElement,e=this._self._c||t;return e(\"li\",{staticClass:\"app-navigation-entry-utils-counter\",class:{highlighted:this.highlighted}},[e(\"span\",[this._t(\"default\")],2)])},[],!1,null,\"7ed17014\",null);\"function\"==typeof r.a&&r()(s);var c=s.exports;n.d(e,\"AppNavigationCounter\",function(){return c});\n/**\n * @copyright Copyright (c) 2019 Marco Ambrosini <ma12co@pm.me>\n *\n * @author Marco Ambrosini <marcoambrosini@pm.me>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */e.default=c},function(t,e,n){\"use strict\";t.exports=function(t,e){return function(){for(var n=new Array(arguments.length),i=0;i<n.length;i++)n[i]=arguments[i];return t.apply(e,n)}}},function(t,e,n){\"use strict\";var i=n(4);function o(t){return encodeURIComponent(t).replace(/%40/gi,\"@\").replace(/%3A/gi,\":\").replace(/%24/g,\"$\").replace(/%2C/gi,\",\").replace(/%20/g,\"+\").replace(/%5B/gi,\"[\").replace(/%5D/gi,\"]\")}t.exports=function(t,e,n){if(!e)return t;var a;if(n)a=n(e);else if(i.isURLSearchParams(e))a=e.toString();else{var r=[];i.forEach(e,function(t,e){null!=t&&(i.isArray(t)?e+=\"[]\":t=[t],i.forEach(t,function(t){i.isDate(t)?t=t.toISOString():i.isObject(t)&&(t=JSON.stringify(t)),r.push(o(e)+\"=\"+o(t))}))}),a=r.join(\"&\")}if(a){var s=t.indexOf(\"#\");-1!==s&&(t=t.slice(0,s)),t+=(-1===t.indexOf(\"?\")?\"?\":\"&\")+a}return t}},function(t,e,n){\"use strict\";t.exports=function(t){return!(!t||!t.__CANCEL__)}},function(t,e,n){\"use strict\";(function(e){var i=n(4),o=n(107),a={\"Content-Type\":\"application/x-www-form-urlencoded\"};function r(t,e){!i.isUndefined(t)&&i.isUndefined(t[\"Content-Type\"])&&(t[\"Content-Type\"]=e)}var s,c={adapter:(void 0!==e&&\"[object process]\"===Object.prototype.toString.call(e)?s=n(72):\"undefined\"!=typeof XMLHttpRequest&&(s=n(72)),s),transformRequest:[function(t,e){return o(e,\"Accept\"),o(e,\"Content-Type\"),i.isFormData(t)||i.isArrayBuffer(t)||i.isBuffer(t)||i.isStream(t)||i.isFile(t)||i.isBlob(t)?t:i.isArrayBufferView(t)?t.buffer:i.isURLSearchParams(t)?(r(e,\"application/x-www-form-urlencoded;charset=utf-8\"),t.toString()):i.isObject(t)?(r(e,\"application/json;charset=utf-8\"),JSON.stringify(t)):t}],transformResponse:[function(t){if(\"string\"==typeof t)try{t=JSON.parse(t)}catch(t){}return t}],timeout:0,xsrfCookieName:\"XSRF-TOKEN\",xsrfHeaderName:\"X-XSRF-TOKEN\",maxContentLength:-1,validateStatus:function(t){return t>=200&&t<300}};c.headers={common:{Accept:\"application/json, text/plain, */*\"}},i.forEach([\"delete\",\"get\",\"head\"],function(t){c.headers[t]={}}),i.forEach([\"post\",\"put\",\"patch\"],function(t){c.headers[t]=i.merge(a)}),t.exports=c}).call(this,n(106))},function(t,e,n){\"use strict\";var i=n(4),o=n(108),a=n(69),r=n(110),s=n(111),c=n(73);t.exports=function(t){return new Promise(function(e,l){var u=t.data,d=t.headers;i.isFormData(u)&&delete d[\"Content-Type\"];var p=new XMLHttpRequest;if(t.auth){var f=t.auth.username||\"\",h=t.auth.password||\"\";d.Authorization=\"Basic \"+btoa(f+\":\"+h)}if(p.open(t.method.toUpperCase(),a(t.url,t.params,t.paramsSerializer),!0),p.timeout=t.timeout,p.onreadystatechange=function(){if(p&&4===p.readyState&&(0!==p.status||p.responseURL&&0===p.responseURL.indexOf(\"file:\"))){var n=\"getAllResponseHeaders\"in p?r(p.getAllResponseHeaders()):null,i={data:t.responseType&&\"text\"!==t.responseType?p.response:p.responseText,status:p.status,statusText:p.statusText,headers:n,config:t,request:p};o(e,l,i),p=null}},p.onabort=function(){p&&(l(c(\"Request aborted\",t,\"ECONNABORTED\",p)),p=null)},p.onerror=function(){l(c(\"Network Error\",t,null,p)),p=null},p.ontimeout=function(){l(c(\"timeout of \"+t.timeout+\"ms exceeded\",t,\"ECONNABORTED\",p)),p=null},i.isStandardBrowserEnv()){var A=n(112),v=(t.withCredentials||s(t.url))&&t.xsrfCookieName?A.read(t.xsrfCookieName):void 0;v&&(d[t.xsrfHeaderName]=v)}if(\"setRequestHeader\"in p&&i.forEach(d,function(t,e){void 0===u&&\"content-type\"===e.toLowerCase()?delete d[e]:p.setRequestHeader(e,t)}),t.withCredentials&&(p.withCredentials=!0),t.responseType)try{p.responseType=t.responseType}catch(e){if(\"json\"!==t.responseType)throw e}\"function\"==typeof t.onDownloadProgress&&p.addEventListener(\"progress\",t.onDownloadProgress),\"function\"==typeof t.onUploadProgress&&p.upload&&p.upload.addEventListener(\"progress\",t.onUploadProgress),t.cancelToken&&t.cancelToken.promise.then(function(t){p&&(p.abort(),l(t),p=null)}),void 0===u&&(u=null),p.send(u)})}},function(t,e,n){\"use strict\";var i=n(109);t.exports=function(t,e,n,o,a){var r=new Error(t);return i(r,e,n,o,a)}},function(t,e,n){\"use strict\";var i=n(4);t.exports=function(t,e){e=e||{};var n={};return i.forEach([\"url\",\"method\",\"params\",\"data\"],function(t){void 0!==e[t]&&(n[t]=e[t])}),i.forEach([\"headers\",\"auth\",\"proxy\"],function(o){i.isObject(e[o])?n[o]=i.deepMerge(t[o],e[o]):void 0!==e[o]?n[o]=e[o]:i.isObject(t[o])?n[o]=i.deepMerge(t[o]):void 0!==t[o]&&(n[o]=t[o])}),i.forEach([\"baseURL\",\"transformRequest\",\"transformResponse\",\"paramsSerializer\",\"timeout\",\"withCredentials\",\"adapter\",\"responseType\",\"xsrfCookieName\",\"xsrfHeaderName\",\"onUploadProgress\",\"onDownloadProgress\",\"maxContentLength\",\"validateStatus\",\"maxRedirects\",\"httpAgent\",\"httpsAgent\",\"cancelToken\",\"socketPath\"],function(i){void 0!==e[i]?n[i]=e[i]:void 0!==t[i]&&(n[i]=t[i])}),n}},function(t,e,n){\"use strict\";function i(t){this.message=t}i.prototype.toString=function(){return\"Cancel\"+(this.message?\": \"+this.message:\"\")},i.prototype.__CANCEL__=!0,t.exports=i},function(t,e){var n={utf8:{stringToBytes:function(t){return n.bin.stringToBytes(unescape(encodeURIComponent(t)))},bytesToString:function(t){return decodeURIComponent(escape(n.bin.bytesToString(t)))}},bin:{stringToBytes:function(t){for(var e=[],n=0;n<t.length;n++)e.push(255&t.charCodeAt(n));return e},bytesToString:function(t){for(var e=[],n=0;n<t.length;n++)e.push(String.fromCharCode(t[n]));return e.join(\"\")}}};t.exports=n},function(t,e){function n(t,e,n,i,o,a,r){try{var s=t[a](r),c=s.value}catch(t){return void n(t)}s.done?e(c):Promise.resolve(c).then(i,o)}t.exports=function(t){return function(){var e=this,i=arguments;return new Promise(function(o,a){var r=t.apply(e,i);function s(t){n(r,o,a,s,c,\"next\",t)}function c(t){n(r,o,a,s,c,\"throw\",t)}s(void 0)})}}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var i=n(99).default.create({headers:{requesttoken:OC.requestToken}});e.default=i},function(t,e,n){var i,o,a,r,s;i=n(117),o=n(76).utf8,a=n(118),r=n(76).bin,(s=function(t,e){t.constructor==String?t=e&&\"binary\"===e.encoding?r.stringToBytes(t):o.stringToBytes(t):a(t)?t=Array.prototype.slice.call(t,0):Array.isArray(t)||(t=t.toString());for(var n=i.bytesToWords(t),c=8*t.length,l=1732584193,u=-271733879,d=-1732584194,p=271733878,f=0;f<n.length;f++)n[f]=16711935&(n[f]<<8|n[f]>>>24)|4278255360&(n[f]<<24|n[f]>>>8);n[c>>>5]|=128<<c%32,n[14+(c+64>>>9<<4)]=c;var h=s._ff,A=s._gg,v=s._hh,m=s._ii;for(f=0;f<n.length;f+=16){var g=l,b=u,y=d,x=p;l=h(l,u,d,p,n[f+0],7,-680876936),p=h(p,l,u,d,n[f+1],12,-389564586),d=h(d,p,l,u,n[f+2],17,606105819),u=h(u,d,p,l,n[f+3],22,-1044525330),l=h(l,u,d,p,n[f+4],7,-176418897),p=h(p,l,u,d,n[f+5],12,1200080426),d=h(d,p,l,u,n[f+6],17,-1473231341),u=h(u,d,p,l,n[f+7],22,-45705983),l=h(l,u,d,p,n[f+8],7,1770035416),p=h(p,l,u,d,n[f+9],12,-1958414417),d=h(d,p,l,u,n[f+10],17,-42063),u=h(u,d,p,l,n[f+11],22,-1990404162),l=h(l,u,d,p,n[f+12],7,1804603682),p=h(p,l,u,d,n[f+13],12,-40341101),d=h(d,p,l,u,n[f+14],17,-1502002290),l=A(l,u=h(u,d,p,l,n[f+15],22,1236535329),d,p,n[f+1],5,-165796510),p=A(p,l,u,d,n[f+6],9,-1069501632),d=A(d,p,l,u,n[f+11],14,643717713),u=A(u,d,p,l,n[f+0],20,-373897302),l=A(l,u,d,p,n[f+5],5,-701558691),p=A(p,l,u,d,n[f+10],9,38016083),d=A(d,p,l,u,n[f+15],14,-660478335),u=A(u,d,p,l,n[f+4],20,-405537848),l=A(l,u,d,p,n[f+9],5,568446438),p=A(p,l,u,d,n[f+14],9,-1019803690),d=A(d,p,l,u,n[f+3],14,-187363961),u=A(u,d,p,l,n[f+8],20,1163531501),l=A(l,u,d,p,n[f+13],5,-1444681467),p=A(p,l,u,d,n[f+2],9,-51403784),d=A(d,p,l,u,n[f+7],14,1735328473),l=v(l,u=A(u,d,p,l,n[f+12],20,-1926607734),d,p,n[f+5],4,-378558),p=v(p,l,u,d,n[f+8],11,-2022574463),d=v(d,p,l,u,n[f+11],16,1839030562),u=v(u,d,p,l,n[f+14],23,-35309556),l=v(l,u,d,p,n[f+1],4,-1530992060),p=v(p,l,u,d,n[f+4],11,1272893353),d=v(d,p,l,u,n[f+7],16,-155497632),u=v(u,d,p,l,n[f+10],23,-1094730640),l=v(l,u,d,p,n[f+13],4,681279174),p=v(p,l,u,d,n[f+0],11,-358537222),d=v(d,p,l,u,n[f+3],16,-722521979),u=v(u,d,p,l,n[f+6],23,76029189),l=v(l,u,d,p,n[f+9],4,-640364487),p=v(p,l,u,d,n[f+12],11,-421815835),d=v(d,p,l,u,n[f+15],16,530742520),l=m(l,u=v(u,d,p,l,n[f+2],23,-995338651),d,p,n[f+0],6,-198630844),p=m(p,l,u,d,n[f+7],10,1126891415),d=m(d,p,l,u,n[f+14],15,-1416354905),u=m(u,d,p,l,n[f+5],21,-57434055),l=m(l,u,d,p,n[f+12],6,1700485571),p=m(p,l,u,d,n[f+3],10,-1894986606),d=m(d,p,l,u,n[f+10],15,-1051523),u=m(u,d,p,l,n[f+1],21,-2054922799),l=m(l,u,d,p,n[f+8],6,1873313359),p=m(p,l,u,d,n[f+15],10,-30611744),d=m(d,p,l,u,n[f+6],15,-1560198380),u=m(u,d,p,l,n[f+13],21,1309151649),l=m(l,u,d,p,n[f+4],6,-145523070),p=m(p,l,u,d,n[f+11],10,-1120210379),d=m(d,p,l,u,n[f+2],15,718787259),u=m(u,d,p,l,n[f+9],21,-343485551),l=l+g>>>0,u=u+b>>>0,d=d+y>>>0,p=p+x>>>0}return i.endian([l,u,d,p])})._ff=function(t,e,n,i,o,a,r){var s=t+(e&n|~e&i)+(o>>>0)+r;return(s<<a|s>>>32-a)+e},s._gg=function(t,e,n,i,o,a,r){var s=t+(e&i|n&~i)+(o>>>0)+r;return(s<<a|s>>>32-a)+e},s._hh=function(t,e,n,i,o,a,r){var s=t+(e^n^i)+(o>>>0)+r;return(s<<a|s>>>32-a)+e},s._ii=function(t,e,n,i,o,a,r){var s=t+(n^(e|~i))+(o>>>0)+r;return(s<<a|s>>>32-a)+e},s._blocksize=16,s._digestsize=16,t.exports=function(t,e){if(null==t)throw new Error(\"Illegal argument \"+t);var n=i.wordsToBytes(s(t,e));return e&&e.asBytes?n:e&&e.asString?r.bytesToString(n):i.bytesToHex(n)}},function(t,e,n){\"use strict\";var i=n(22);n.n(i).a},function(t,e,n){e=t.exports=n(1)(!1);var i=n(8),o=i(n(9)),a=i(n(10)),r=i(n(11)),s=i(n(12));e.push([t.i,'@font-face{font-family:\"iconfont-vue\";src:url('+o+\");src:url(\"+o+') format(\"embedded-opentype\"),url('+a+') format(\"woff\"),url('+r+') format(\"truetype\"),url('+s+') format(\"svg\")}.icon[data-v-627a433f]{font-style:normal;font-weight:400}.icon.arrow-left-double[data-v-627a433f]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.arrow-left[data-v-627a433f]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.arrow-right-double[data-v-627a433f]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.arrow-right[data-v-627a433f]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.close[data-v-627a433f]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.confirm-fade[data-v-627a433f]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.confirm[data-v-627a433f]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.menu[data-v-627a433f]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.more[data-v-627a433f]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.pause[data-v-627a433f]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.play[data-v-627a433f]:before{font-family:\"iconfont-vue\";content:\"\"}.action-item[data-v-627a433f]{position:relative;display:inline-block}.action-item--single[data-v-627a433f]:hover,.action-item--single[data-v-627a433f]:focus,.action-item--single[data-v-627a433f]:active,.action-item__menutoggle[data-v-627a433f]:hover,.action-item__menutoggle[data-v-627a433f]:focus,.action-item__menutoggle[data-v-627a433f]:active{border-radius:22px;background-color:rgba(127,127,127,0.25) !important;opacity:1}.action-item.action-item--open .action-item__menutoggle[data-v-627a433f]{opacity:1;border-radius:22px;background-color:rgba(127,127,127,0.25)}.action-item--single[data-v-627a433f],.action-item__menutoggle[data-v-627a433f]{box-sizing:border-box;width:44px;height:44px;margin:0;padding:14px;cursor:pointer;border:none;background-color:transparent}.action-item__menutoggle[data-v-627a433f]{display:flex;align-items:center;justify-content:center;opacity:.7;font-size:16px}.action-item__menutoggle[data-v-627a433f]:before{font-family:\"iconfont-vue\";font-style:normal;font-weight:400;content:\"\"}.action-item--single[data-v-627a433f]{opacity:.7}.action-item--single[data-v-627a433f]:hover,.action-item--single[data-v-627a433f]:focus,.action-item--single[data-v-627a433f]:active{opacity:1}.action-item--single>[hidden][data-v-627a433f]{display:none}.action-item--multiple[data-v-627a433f]{position:relative}.action-item__menu[data-v-627a433f]{position:absolute;z-index:110;right:50%;display:none;margin:10px;margin-top:-5px;transform:translateX(50%);color:var(--color-main-text);border-radius:var(--border-radius);background-color:var(--color-main-background);filter:drop-shadow(0 1px 3px var(--color-box-shadow))}.action-item__menu ul[data-v-627a433f]>:not(li){display:none}.action-item__menu.open[data-v-627a433f]{display:block}.action-item__menu .action-item__menu_arrow[data-v-627a433f]{position:absolute;right:50%;bottom:100%;width:0;height:0;margin-right:-9px;content:\\' \\';pointer-events:none;border:solid transparent;border-width:9px;border-bottom-color:var(--color-main-background)}.action-item__menu.menu-right[data-v-627a433f]{right:0;left:auto;transform:none}.action-item__menu.menu-right .action-item__menu_arrow[data-v-627a433f]{right:13px;margin-right:0}.action-item__menu.menu-left[data-v-627a433f]{right:auto;left:0;transform:none}.action-item__menu.menu-left .action-item__menu_arrow[data-v-627a433f]{right:auto;left:13px;margin-right:0}.ie .action-item__menu[data-v-627a433f],.ie .action-item__menu .action-item__menu_arrow[data-v-627a433f],.edge .action-item__menu[data-v-627a433f],.edge .action-item__menu .action-item__menu_arrow[data-v-627a433f]{border:1px solid var(--color-border)}\\n',\"\"])},function(t,e,n){\"use strict\";n.r(e);var i={name:\"AppNavigationToggle\",methods:{emitClick:function(){this.$emit(\"click\")}}},o=(n(94),n(0)),a=Object(o.a)(i,function(){var t=this,e=t.$createElement;return(t._self._c||e)(\"a\",{attrs:{id:\"app-navigation-toggle\",tabindex:\"0\",href:\"#\"},on:{click:function(e){return e.preventDefault(),t.emitClick(e)},keydown:function(e){return!e.type.indexOf(\"key\")&&t._k(e.keyCode,\"space\",32,e.key,[\" \",\"Spacebar\"])?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.emitClick(e))}}})},[],!1,null,\"d9538ec8\",null).exports;n.d(e,\"AppNavigationSpacer\",function(){return a});\n/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */e.default=a},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e,n){\"use strict\";var i=n(26);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,\"li.active[data-v-37538719]{box-shadow:inset 4px 0 var(--color-primary)}.action--disabled[data-v-37538719]{pointer-events:none;opacity:.5}.action--disabled[data-v-37538719]:hover,.action--disabled[data-v-37538719]:focus{cursor:default;opacity:.5}.action--disabled *[data-v-37538719]{opacity:1 !important}.action-button[data-v-37538719]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;padding-right:14px;cursor:pointer;white-space:nowrap;opacity:.7;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:normal;line-height:44px}.action-button[data-v-37538719]:hover,.action-button[data-v-37538719]:focus{opacity:1}.action-button>span[data-v-37538719]{cursor:pointer;white-space:nowrap}.action-button__icon[data-v-37538719]{width:44px;height:44px;opacity:1;background-position:14px center;background-size:16px}.action-button p[data-v-37538719]{width:150px;padding:7px 0;cursor:pointer;text-align:left;line-height:1.6em}.action-button__longtext[data-v-37538719]{cursor:pointer;white-space:pre-wrap}.action-button__title[data-v-37538719]{font-weight:bold}\\n\",\"\"])},function(t,e,n){var i=n(93);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"600615ea\",i,!0,{})},function(t,e,n){e=t.exports=n(1)(!1);var i=n(8),o=i(n(9)),a=i(n(10)),r=i(n(11)),s=i(n(12));e.push([t.i,'@font-face{font-family:\"iconfont-vue\";src:url('+o+\");src:url(\"+o+') format(\"embedded-opentype\"),url('+a+') format(\"woff\"),url('+r+') format(\"truetype\"),url('+s+') format(\"svg\")}.icon{font-style:normal;font-weight:400}.icon.arrow-left-double:before{font-family:\"iconfont-vue\";content:\"\"}.icon.arrow-left:before{font-family:\"iconfont-vue\";content:\"\"}.icon.arrow-right-double:before{font-family:\"iconfont-vue\";content:\"\"}.icon.arrow-right:before{font-family:\"iconfont-vue\";content:\"\"}.icon.close:before{font-family:\"iconfont-vue\";content:\"\"}.icon.confirm-fade:before{font-family:\"iconfont-vue\";content:\"\"}.icon.confirm:before{font-family:\"iconfont-vue\";content:\"\"}.icon.menu:before{font-family:\"iconfont-vue\";content:\"\"}.icon.more:before{font-family:\"iconfont-vue\";content:\"\"}.icon.pause:before{font-family:\"iconfont-vue\";content:\"\"}.icon.play:before{font-family:\"iconfont-vue\";content:\"\"}.mx-datepicker[data-v-6673a70]{width:210px;color:inherit;user-select:none;position:relative;display:inline-block}.mx-datepicker[data-v-6673a70].disabled{opacity:.7;cursor:not-allowed}.mx-datepicker[data-v-6673a70] .mx-input-wrapper .mx-input{width:100%}.mx-datepicker[data-v-6673a70] .mx-input-wrapper .mx-input-append{position:absolute;top:0;right:0;width:30px;height:100%;padding:6px;background-color:var(--color-main-background);background-clip:content-box}.mx-datepicker[data-v-6673a70] .mx-input-wrapper .mx-input-append .mx-input-icon{display:inline-block;font-style:normal;text-align:center;cursor:pointer}.mx-datepicker[data-v-6673a70] .mx-input-wrapper .mx-input-append .mx-clear-wrapper{display:none}.mx-datepicker[data-v-6673a70] .mx-input-wrapper .mx-input-append .mx-calendar-icon{stroke-width:8px;stroke:currentColor;fill:currentColor;width:100%;height:100%;color:var(--color-text-lighter)}.mx-datepicker[data-v-6673a70] .mx-datepicker-popup{box-shadow:none;background-color:var(--color-main-background);position:absolute;margin-top:1px;margin-bottom:1px;z-index:1000}.mx-datepicker[data-v-6673a70] .mx-range-wrapper{display:flex;overflow:hidden}.mx-datepicker[data-v-6673a70] .mx-range-wrapper .mx-calendar:first-child{box-shadow:var(--color-border) 1px 0px !important}.mx-datepicker[data-v-6673a70] .mx-range-wrapper .mx-calendar-content .mx-panel .cell.actived{border-radius:var(--border-radius) 0 0 var(--border-radius)}.mx-datepicker[data-v-6673a70] .mx-range-wrapper .mx-calendar-content .mx-panel .cell.inrange+.cell.actived{border-radius:0 var(--border-radius) var(--border-radius) 0}.mx-datepicker[data-v-6673a70] .mx-shortcuts-wrapper{display:flex;justify-content:space-evenly;padding:5px;border-bottom:1px solid var(--color-border)}.mx-datepicker[data-v-6673a70] .mx-shortcuts-wrapper .mx-shortcuts{font-weight:normal}.mx-datepicker[data-v-6673a70] .mx-calendar{font:inherit;color:var(--color-main-text);padding:5px;width:234px}.mx-datepicker[data-v-6673a70] .mx-calendar-header{padding:0 4px;margin-bottom:4px;text-align:center;overflow:hidden;display:flex;align-items:center;justify-content:space-between}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a{text-decoration:none;cursor:pointer;color:var(--color-text-lighter);padding:7px 10px;margin:0 auto;border-radius:32px;height:32px;line-height:20px;min-width:32px}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a:hover,.mx-datepicker[data-v-6673a70] .mx-calendar-header>a:focus{opacity:1;color:var(--color-main-text);background-color:var(--color-background-darker)}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-last-year,.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-last-month,.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-next-month,.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-next-year{background-position:center;background-repeat:no-repeat;font-size:0;opacity:.5;display:flex;align-items:center;justify-content:center;padding:0}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-last-year:before,.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-last-month:before,.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-next-month:before,.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-next-year:before{display:block;font-size:16px}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-last-year:before{font-family:\"iconfont-vue\";font-style:normal;font-weight:400;content:\"\"}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-last-month:before{font-family:\"iconfont-vue\";font-style:normal;font-weight:400;content:\"\"}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-next-month{order:3}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-next-month:before{font-family:\"iconfont-vue\";font-style:normal;font-weight:400;content:\"\"}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-next-year{order:4}.mx-datepicker[data-v-6673a70] .mx-calendar-header>a.mx-icon-next-year:before{font-family:\"iconfont-vue\";font-style:normal;font-weight:400;content:\"\"}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel{width:100%;height:100%;text-align:center}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel .cell{opacity:.7;border-radius:50px;transition:all 100ms ease-in-out;cursor:pointer}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel .cell:hover,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel .cell:focus,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel .cell.actived,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel .cell.inrange{font-weight:bold;opacity:1;color:var(--color-primary-text);background-color:var(--color-primary-element)}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel .cell.inrange,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel .cell.disabled{border-radius:0;font-weight:normal}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel .cell.inrange{opacity:.7}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel .cell.disabled{color:var(--color-text-lighter);opacity:.5;background-color:var(--color-background-darker)}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel span.cell,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel li.cell{min-height:32px}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date{table-layout:fixed;border-collapse:collapse;border-spacing:0}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date td,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date th{font-size:12px;width:32px;height:32px;line-height:30px;border:0;padding:0;padding-top:2px;overflow:hidden;text-align:center}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date th{color:var(--color-text-lighter);opacity:.5}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date td.today{color:var(--color-primary);opacity:1;font-weight:bold}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date td.last-month,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date td.next-month{color:var(--color-text-lighter);opacity:.5}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date tr:hover,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date tr:focus,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-date tr:active{background:none}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-year,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-month{display:flex;flex-wrap:wrap;justify-content:space-around}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-year span.cell,.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-month span.cell{display:block;padding:5px;height:44px;line-height:36px;margin-bottom:1%}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-year .cell{width:45%}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-month .cell{width:30%}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-time{display:flex}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-time .mx-time-list{position:relative;width:100%;height:100%;padding:5px;margin:0;list-style:none;overflow-y:auto;max-height:220px}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-time .mx-time-list .mx-time-picker-item{display:block;text-align:left;padding-left:10px}.mx-datepicker[data-v-6673a70] .mx-calendar-content .mx-panel-time .mx-time-list .cell{display:flex;justify-content:center;margin-bottom:1px;width:100%;font-size:12px;height:32px;line-height:32px}.mx-datepicker[data-v-6673a70] .mx-datepicker-footer{padding:4px;clear:both;text-align:right;border-top:1px solid var(--color-border)}\\n',\"\"])},function(t,e,n){\"use strict\";var i=n(27);n.n(i).a},function(t,e,n){e=t.exports=n(1)(!1);var i=n(8),o=i(n(9)),a=i(n(10)),r=i(n(11)),s=i(n(12));e.push([t.i,'@font-face{font-family:\"iconfont-vue\";src:url('+o+\");src:url(\"+o+') format(\"embedded-opentype\"),url('+a+') format(\"woff\"),url('+r+') format(\"truetype\"),url('+s+') format(\"svg\")}.icon[data-v-d9538ec8]{font-style:normal;font-weight:400}.icon.arrow-left-double[data-v-d9538ec8]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.arrow-left[data-v-d9538ec8]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.arrow-right-double[data-v-d9538ec8]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.arrow-right[data-v-d9538ec8]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.close[data-v-d9538ec8]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.confirm-fade[data-v-d9538ec8]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.confirm[data-v-d9538ec8]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.menu[data-v-d9538ec8]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.more[data-v-d9538ec8]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.pause[data-v-d9538ec8]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.play[data-v-d9538ec8]:before{font-family:\"iconfont-vue\";content:\"\"}#app-navigation-toggle[data-v-d9538ec8]{display:none;position:fixed;z-index:1050;left:0;width:44px;height:44px;padding:14px;cursor:pointer;opacity:0.6;font-size:16px;line-height:17px}#app-navigation-toggle[data-v-d9538ec8]:before{font-family:\"iconfont-vue\";font-style:normal;font-weight:400;content:\"\"}#app-navigation-toggle[data-v-d9538ec8]:hover,#app-navigation-toggle[data-v-d9538ec8]:focus{opacity:1}@media only screen and (max-width: 768px){#app-navigation-toggle[data-v-d9538ec8]{display:inline-block !important}}\\n',\"\"])},function(t,e,n){\"use strict\";var i=n(28);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,\".app-navigation-entry-utils-counter[data-v-7ed17014]{overflow:hidden;text-align:right;font-size:9px;line-height:44px;padding:0 12px}.highlighted[data-v-7ed17014]{padding:0;text-align:center}.highlighted span[data-v-7ed17014]{padding:2px 5px;border-radius:10px;background-color:var(--color-primary);color:var(--color-primary-text)}\\n\",\"\"])},function(t,e,n){var i=function(t){\"use strict\";var e,n=Object.prototype,i=n.hasOwnProperty,o=\"function\"==typeof Symbol?Symbol:{},a=o.iterator||\"@@iterator\",r=o.asyncIterator||\"@@asyncIterator\",s=o.toStringTag||\"@@toStringTag\";function c(t,e,n,i){var o=e&&e.prototype instanceof A?e:A,a=Object.create(o.prototype),r=new E(i||[]);return a._invoke=function(t,e,n){var i=u;return function(o,a){if(i===p)throw new Error(\"Generator is already running\");if(i===f){if(\"throw\"===o)throw a;return S()}for(n.method=o,n.arg=a;;){var r=n.delegate;if(r){var s=T(r,n);if(s){if(s===h)continue;return s}}if(\"next\"===n.method)n.sent=n._sent=n.arg;else if(\"throw\"===n.method){if(i===u)throw i=f,n.arg;n.dispatchException(n.arg)}else\"return\"===n.method&&n.abrupt(\"return\",n.arg);i=p;var c=l(t,e,n);if(\"normal\"===c.type){if(i=n.done?f:d,c.arg===h)continue;return{value:c.arg,done:n.done}}\"throw\"===c.type&&(i=f,n.method=\"throw\",n.arg=c.arg)}}}(t,n,r),a}function l(t,e,n){try{return{type:\"normal\",arg:t.call(e,n)}}catch(t){return{type:\"throw\",arg:t}}}t.wrap=c;var u=\"suspendedStart\",d=\"suspendedYield\",p=\"executing\",f=\"completed\",h={};function A(){}function v(){}function m(){}var g={};g[a]=function(){return this};var b=Object.getPrototypeOf,y=b&&b(b(M([])));y&&y!==n&&i.call(y,a)&&(g=y);var x=m.prototype=A.prototype=Object.create(g);function w(t){[\"next\",\"throw\",\"return\"].forEach(function(e){t[e]=function(t){return this._invoke(e,t)}})}function _(t){var e;this._invoke=function(n,o){function a(){return new Promise(function(e,a){!function e(n,o,a,r){var s=l(t[n],t,o);if(\"throw\"!==s.type){var c=s.arg,u=c.value;return u&&\"object\"==typeof u&&i.call(u,\"__await\")?Promise.resolve(u.__await).then(function(t){e(\"next\",t,a,r)},function(t){e(\"throw\",t,a,r)}):Promise.resolve(u).then(function(t){c.value=t,a(c)},function(t){return e(\"throw\",t,a,r)})}r(s.arg)}(n,o,e,a)})}return e=e?e.then(a,a):a()}}function T(t,n){var i=t.iterator[n.method];if(i===e){if(n.delegate=null,\"throw\"===n.method){if(t.iterator.return&&(n.method=\"return\",n.arg=e,T(t,n),\"throw\"===n.method))return h;n.method=\"throw\",n.arg=new TypeError(\"The iterator does not provide a 'throw' method\")}return h}var o=l(i,t.iterator,n.arg);if(\"throw\"===o.type)return n.method=\"throw\",n.arg=o.arg,n.delegate=null,h;var a=o.arg;return a?a.done?(n[t.resultName]=a.value,n.next=t.nextLoc,\"return\"!==n.method&&(n.method=\"next\",n.arg=e),n.delegate=null,h):a:(n.method=\"throw\",n.arg=new TypeError(\"iterator result is not an object\"),n.delegate=null,h)}function k(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function C(t){var e=t.completion||{};e.type=\"normal\",delete e.arg,t.completion=e}function E(t){this.tryEntries=[{tryLoc:\"root\"}],t.forEach(k,this),this.reset(!0)}function M(t){if(t){var n=t[a];if(n)return n.call(t);if(\"function\"==typeof t.next)return t;if(!isNaN(t.length)){var o=-1,r=function n(){for(;++o<t.length;)if(i.call(t,o))return n.value=t[o],n.done=!1,n;return n.value=e,n.done=!0,n};return r.next=r}}return{next:S}}function S(){return{value:e,done:!0}}return v.prototype=x.constructor=m,m.constructor=v,m[s]=v.displayName=\"GeneratorFunction\",t.isGeneratorFunction=function(t){var e=\"function\"==typeof t&&t.constructor;return!!e&&(e===v||\"GeneratorFunction\"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,m):(t.__proto__=m,s in t||(t[s]=\"GeneratorFunction\")),t.prototype=Object.create(x),t},t.awrap=function(t){return{__await:t}},w(_.prototype),_.prototype[r]=function(){return this},t.AsyncIterator=_,t.async=function(e,n,i,o){var a=new _(c(e,n,i,o));return t.isGeneratorFunction(n)?a:a.next().then(function(t){return t.done?t.value:a.next()})},w(x),x[s]=\"Generator\",x[a]=function(){return this},x.toString=function(){return\"[object Generator]\"},t.keys=function(t){var e=[];for(var n in t)e.push(n);return e.reverse(),function n(){for(;e.length;){var i=e.pop();if(i in t)return n.value=i,n.done=!1,n}return n.done=!0,n}},t.values=M,E.prototype={constructor:E,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method=\"next\",this.arg=e,this.tryEntries.forEach(C),!t)for(var n in this)\"t\"===n.charAt(0)&&i.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if(\"throw\"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function o(i,o){return s.type=\"throw\",s.arg=t,n.next=i,o&&(n.method=\"next\",n.arg=e),!!o}for(var a=this.tryEntries.length-1;a>=0;--a){var r=this.tryEntries[a],s=r.completion;if(\"root\"===r.tryLoc)return o(\"end\");if(r.tryLoc<=this.prev){var c=i.call(r,\"catchLoc\"),l=i.call(r,\"finallyLoc\");if(c&&l){if(this.prev<r.catchLoc)return o(r.catchLoc,!0);if(this.prev<r.finallyLoc)return o(r.finallyLoc)}else if(c){if(this.prev<r.catchLoc)return o(r.catchLoc,!0)}else{if(!l)throw new Error(\"try statement without catch or finally\");if(this.prev<r.finallyLoc)return o(r.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&i.call(o,\"finallyLoc\")&&this.prev<o.finallyLoc){var a=o;break}}a&&(\"break\"===t||\"continue\"===t)&&a.tryLoc<=e&&e<=a.finallyLoc&&(a=null);var r=a?a.completion:{};return r.type=t,r.arg=e,a?(this.method=\"next\",this.next=a.finallyLoc,h):this.complete(r)},complete:function(t,e){if(\"throw\"===t.type)throw t.arg;return\"break\"===t.type||\"continue\"===t.type?this.next=t.arg:\"return\"===t.type?(this.rval=this.arg=t.arg,this.method=\"return\",this.next=\"end\"):\"normal\"===t.type&&e&&(this.next=e),h},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),C(n),h}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if(\"throw\"===i.type){var o=i.arg;C(n)}return o}}throw new Error(\"illegal catch attempt\")},delegateYield:function(t,n,i){return this.delegate={iterator:M(t),resultName:n,nextLoc:i},\"next\"===this.method&&(this.arg=e),h}},t}(t.exports);try{regeneratorRuntime=i}catch(t){Function(\"r\",\"regeneratorRuntime = r\")(i)}},function(t,e,n){t.exports=n(100)},function(t,e,n){\"use strict\";var i=n(4),o=n(68),a=n(102),r=n(74);function s(t){var e=new a(t),n=o(a.prototype.request,e);return i.extend(n,a.prototype,e),i.extend(n,e),n}var c=s(n(71));c.Axios=a,c.create=function(t){return s(r(c.defaults,t))},c.Cancel=n(75),c.CancelToken=n(115),c.isCancel=n(70),c.all=function(t){return Promise.all(t)},c.spread=n(116),t.exports=c,t.exports.default=c},function(t,e){\n/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\nt.exports=function(t){return null!=t&&null!=t.constructor&&\"function\"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}},function(t,e,n){\"use strict\";var i=n(4),o=n(69),a=n(103),r=n(104),s=n(74);function c(t){this.defaults=t,this.interceptors={request:new a,response:new a}}c.prototype.request=function(t){\"string\"==typeof t?(t=arguments[1]||{}).url=arguments[0]:t=t||{},(t=s(this.defaults,t)).method=t.method?t.method.toLowerCase():\"get\";var e=[r,void 0],n=Promise.resolve(t);for(this.interceptors.request.forEach(function(t){e.unshift(t.fulfilled,t.rejected)}),this.interceptors.response.forEach(function(t){e.push(t.fulfilled,t.rejected)});e.length;)n=n.then(e.shift(),e.shift());return n},c.prototype.getUri=function(t){return t=s(this.defaults,t),o(t.url,t.params,t.paramsSerializer).replace(/^\\?/,\"\")},i.forEach([\"delete\",\"get\",\"head\",\"options\"],function(t){c.prototype[t]=function(e,n){return this.request(i.merge(n||{},{method:t,url:e}))}}),i.forEach([\"post\",\"put\",\"patch\"],function(t){c.prototype[t]=function(e,n,o){return this.request(i.merge(o||{},{method:t,url:e,data:n}))}}),t.exports=c},function(t,e,n){\"use strict\";var i=n(4);function o(){this.handlers=[]}o.prototype.use=function(t,e){return this.handlers.push({fulfilled:t,rejected:e}),this.handlers.length-1},o.prototype.eject=function(t){this.handlers[t]&&(this.handlers[t]=null)},o.prototype.forEach=function(t){i.forEach(this.handlers,function(e){null!==e&&t(e)})},t.exports=o},function(t,e,n){\"use strict\";var i=n(4),o=n(105),a=n(70),r=n(71),s=n(113),c=n(114);function l(t){t.cancelToken&&t.cancelToken.throwIfRequested()}t.exports=function(t){return l(t),t.baseURL&&!s(t.url)&&(t.url=c(t.baseURL,t.url)),t.headers=t.headers||{},t.data=o(t.data,t.headers,t.transformRequest),t.headers=i.merge(t.headers.common||{},t.headers[t.method]||{},t.headers||{}),i.forEach([\"delete\",\"get\",\"head\",\"post\",\"put\",\"patch\",\"common\"],function(e){delete t.headers[e]}),(t.adapter||r.adapter)(t).then(function(e){return l(t),e.data=o(e.data,e.headers,t.transformResponse),e},function(e){return a(e)||(l(t),e&&e.response&&(e.response.data=o(e.response.data,e.response.headers,t.transformResponse))),Promise.reject(e)})}},function(t,e,n){\"use strict\";var i=n(4);t.exports=function(t,e,n){return i.forEach(n,function(n){t=n(t,e)}),t}},function(t,e){var n,i,o=t.exports={};function a(){throw new Error(\"setTimeout has not been defined\")}function r(){throw new Error(\"clearTimeout has not been defined\")}function s(t){if(n===setTimeout)return setTimeout(t,0);if((n===a||!n)&&setTimeout)return n=setTimeout,setTimeout(t,0);try{return n(t,0)}catch(e){try{return n.call(null,t,0)}catch(e){return n.call(this,t,0)}}}!function(){try{n=\"function\"==typeof setTimeout?setTimeout:a}catch(t){n=a}try{i=\"function\"==typeof clearTimeout?clearTimeout:r}catch(t){i=r}}();var c,l=[],u=!1,d=-1;function p(){u&&c&&(u=!1,c.length?l=c.concat(l):d=-1,l.length&&f())}function f(){if(!u){var t=s(p);u=!0;for(var e=l.length;e;){for(c=l,l=[];++d<e;)c&&c[d].run();d=-1,e=l.length}c=null,u=!1,function(t){if(i===clearTimeout)return clearTimeout(t);if((i===r||!i)&&clearTimeout)return i=clearTimeout,clearTimeout(t);try{i(t)}catch(e){try{return i.call(null,t)}catch(e){return i.call(this,t)}}}(t)}}function h(t,e){this.fun=t,this.array=e}function A(){}o.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];l.push(new h(t,e)),1!==l.length||u||s(f)},h.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=A,o.addListener=A,o.once=A,o.off=A,o.removeListener=A,o.removeAllListeners=A,o.emit=A,o.prependListener=A,o.prependOnceListener=A,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}},function(t,e,n){\"use strict\";var i=n(4);t.exports=function(t,e){i.forEach(t,function(n,i){i!==e&&i.toUpperCase()===e.toUpperCase()&&(t[e]=n,delete t[i])})}},function(t,e,n){\"use strict\";var i=n(73);t.exports=function(t,e,n){var o=n.config.validateStatus;!o||o(n.status)?t(n):e(i(\"Request failed with status code \"+n.status,n.config,null,n.request,n))}},function(t,e,n){\"use strict\";t.exports=function(t,e,n,i,o){return t.config=e,n&&(t.code=n),t.request=i,t.response=o,t.isAxiosError=!0,t.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},t}},function(t,e,n){\"use strict\";var i=n(4),o=[\"age\",\"authorization\",\"content-length\",\"content-type\",\"etag\",\"expires\",\"from\",\"host\",\"if-modified-since\",\"if-unmodified-since\",\"last-modified\",\"location\",\"max-forwards\",\"proxy-authorization\",\"referer\",\"retry-after\",\"user-agent\"];t.exports=function(t){var e,n,a,r={};return t?(i.forEach(t.split(\"\\n\"),function(t){if(a=t.indexOf(\":\"),e=i.trim(t.substr(0,a)).toLowerCase(),n=i.trim(t.substr(a+1)),e){if(r[e]&&o.indexOf(e)>=0)return;r[e]=\"set-cookie\"===e?(r[e]?r[e]:[]).concat([n]):r[e]?r[e]+\", \"+n:n}}),r):r}},function(t,e,n){\"use strict\";var i=n(4);t.exports=i.isStandardBrowserEnv()?function(){var t,e=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement(\"a\");function o(t){var i=t;return e&&(n.setAttribute(\"href\",i),i=n.href),n.setAttribute(\"href\",i),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,\"\"):\"\",host:n.host,search:n.search?n.search.replace(/^\\?/,\"\"):\"\",hash:n.hash?n.hash.replace(/^#/,\"\"):\"\",hostname:n.hostname,port:n.port,pathname:\"/\"===n.pathname.charAt(0)?n.pathname:\"/\"+n.pathname}}return t=o(window.location.href),function(e){var n=i.isString(e)?o(e):e;return n.protocol===t.protocol&&n.host===t.host}}():function(){return!0}},function(t,e,n){\"use strict\";var i=n(4);t.exports=i.isStandardBrowserEnv()?{write:function(t,e,n,o,a,r){var s=[];s.push(t+\"=\"+encodeURIComponent(e)),i.isNumber(n)&&s.push(\"expires=\"+new Date(n).toGMTString()),i.isString(o)&&s.push(\"path=\"+o),i.isString(a)&&s.push(\"domain=\"+a),!0===r&&s.push(\"secure\"),document.cookie=s.join(\"; \")},read:function(t){var e=document.cookie.match(new RegExp(\"(^|;\\\\s*)(\"+t+\")=([^;]*)\"));return e?decodeURIComponent(e[3]):null},remove:function(t){this.write(t,\"\",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},function(t,e,n){\"use strict\";t.exports=function(t){return/^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(t)}},function(t,e,n){\"use strict\";t.exports=function(t,e){return e?t.replace(/\\/+$/,\"\")+\"/\"+e.replace(/^\\/+/,\"\"):t}},function(t,e,n){\"use strict\";var i=n(75);function o(t){if(\"function\"!=typeof t)throw new TypeError(\"executor must be a function.\");var e;this.promise=new Promise(function(t){e=t});var n=this;t(function(t){n.reason||(n.reason=new i(t),e(n.reason))})}o.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},o.source=function(){var t;return{token:new o(function(e){t=e}),cancel:t}},t.exports=o},function(t,e,n){\"use strict\";t.exports=function(t){return function(e){return t.apply(null,e)}}},function(t,e){var n,i;n=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",i={rotl:function(t,e){return t<<e|t>>>32-e},rotr:function(t,e){return t<<32-e|t>>>e},endian:function(t){if(t.constructor==Number)return 16711935&i.rotl(t,8)|4278255360&i.rotl(t,24);for(var e=0;e<t.length;e++)t[e]=i.endian(t[e]);return t},randomBytes:function(t){for(var e=[];t>0;t--)e.push(Math.floor(256*Math.random()));return e},bytesToWords:function(t){for(var e=[],n=0,i=0;n<t.length;n++,i+=8)e[i>>>5]|=t[n]<<24-i%32;return e},wordsToBytes:function(t){for(var e=[],n=0;n<32*t.length;n+=8)e.push(t[n>>>5]>>>24-n%32&255);return e},bytesToHex:function(t){for(var e=[],n=0;n<t.length;n++)e.push((t[n]>>>4).toString(16)),e.push((15&t[n]).toString(16));return e.join(\"\")},hexToBytes:function(t){for(var e=[],n=0;n<t.length;n+=2)e.push(parseInt(t.substr(n,2),16));return e},bytesToBase64:function(t){for(var e=[],i=0;i<t.length;i+=3)for(var o=t[i]<<16|t[i+1]<<8|t[i+2],a=0;a<4;a++)8*i+6*a<=8*t.length?e.push(n.charAt(o>>>6*(3-a)&63)):e.push(\"=\");return e.join(\"\")},base64ToBytes:function(t){t=t.replace(/[^A-Z0-9+\\/]/gi,\"\");for(var e=[],i=0,o=0;i<t.length;o=++i%4)0!=o&&e.push((n.indexOf(t.charAt(i-1))&Math.pow(2,-2*o+8)-1)<<2*o|n.indexOf(t.charAt(i))>>>6-2*o);return e}},t.exports=i},function(t,e){function n(t){return!!t.constructor&&\"function\"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}\n/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\nt.exports=function(t){return null!=t&&(n(t)||function(t){return\"function\"==typeof t.readFloatLE&&\"function\"==typeof t.slice&&n(t.slice(0,0))}(t)||!!t._isBuffer)}},function(t,e,n){\"use strict\";var i=n(29);n.n(i).a},function(t,e,n){e=t.exports=n(1)(!1);var i=n(8),o=i(n(9)),a=i(n(10)),r=i(n(11)),s=i(n(12));e.push([t.i,'@font-face{font-family:\"iconfont-vue\";src:url('+o+\");src:url(\"+o+') format(\"embedded-opentype\"),url('+a+') format(\"woff\"),url('+r+') format(\"truetype\"),url('+s+') format(\"svg\")}.icon[data-v-6015a092]{font-style:normal;font-weight:400}.icon.arrow-left-double[data-v-6015a092]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.arrow-left[data-v-6015a092]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.arrow-right-double[data-v-6015a092]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.arrow-right[data-v-6015a092]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.close[data-v-6015a092]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.confirm-fade[data-v-6015a092]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.confirm[data-v-6015a092]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.menu[data-v-6015a092]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.more[data-v-6015a092]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.pause[data-v-6015a092]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.play[data-v-6015a092]:before{font-family:\"iconfont-vue\";content:\"\"}.avatardiv[data-v-6015a092]{position:relative;display:inline-block}.avatardiv--unknown[data-v-6015a092]{position:relative;background-color:var(--color-text-maxcontrast)}.avatardiv--with-menu[data-v-6015a092]{cursor:pointer}.avatardiv--with-menu .icon-more[data-v-6015a092]{position:absolute;top:0;left:0;display:flex;align-items:center;justify-content:center;width:inherit;height:inherit;cursor:pointer;opacity:0;background:none;font-size:18px}.avatardiv--with-menu .icon-more[data-v-6015a092]:before{font-family:\"iconfont-vue\";font-style:normal;font-weight:400;content:\"\"}.avatardiv--with-menu .icon-more[data-v-6015a092]::before{display:block}.avatardiv--with-menu:focus .icon-more[data-v-6015a092],.avatardiv--with-menu:hover .icon-more[data-v-6015a092]{opacity:1}.avatardiv--with-menu:focus img[data-v-6015a092],.avatardiv--with-menu:hover img[data-v-6015a092]{opacity:0}.avatardiv--with-menu .icon-more[data-v-6015a092],.avatardiv--with-menu img[data-v-6015a092]{transition:opacity var(--animation-quick)}.avatardiv>.unknown[data-v-6015a092]{position:absolute;top:0;left:0;display:block;width:100%;text-align:center;color:var(--color-main-background)}.avatardiv img[data-v-6015a092]{width:100%;height:100%}.avatardiv .avatardiv__status[data-v-6015a092]{position:absolute;top:22px;left:22px;width:10px;height:10px;border:1px solid rgba(255,255,255,0.5);background-clip:content-box}.avatardiv .avatardiv__status--positive[data-v-6015a092]{border-radius:50%;background-color:var(--color-success)}.avatardiv .avatardiv__status--negative[data-v-6015a092]{background-color:var(--color-error)}.avatardiv .avatardiv__status--neutral[data-v-6015a092]{border:none;background-color:transparent !important}.avatardiv .avatardiv__status--neutral svg[data-v-6015a092]{position:absolute;top:-3px;left:-2px}.avatardiv .avatardiv__status--neutral svg path[data-v-6015a092]{fill:#aaa}.avatardiv .popovermenu-wrapper[data-v-6015a092]{position:relative;display:inline-block}.avatardiv .popovermenu[data-v-6015a092]{display:block;margin:0;font-size:initial}\\n',\"\"])},function(t,e){function n(t){return(n=\"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})(t)}function i(e){return\"function\"==typeof Symbol&&\"symbol\"===n(Symbol.iterator)?t.exports=i=function(t){return n(t)}:t.exports=i=function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":n(t)},i(e)}t.exports=i},function(t,e,n){t.exports=function(t){function e(i){if(n[i])return n[i].exports;var o=n[i]={i:i,l:!1,exports:{}};return t[i].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var n={};return e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,i){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:i})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,\"a\",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p=\"/\",e(e.s=60)}([function(t,e){var n=t.exports=\"undefined\"!=typeof window&&window.Math==Math?window:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")();\"number\"==typeof __g&&(__g=n)},function(t,e,n){var i=n(49)(\"wks\"),o=n(30),a=n(0).Symbol,r=\"function\"==typeof a;(t.exports=function(t){return i[t]||(i[t]=r&&a[t]||(r?a:o)(\"Symbol.\"+t))}).store=i},function(t,e,n){var i=n(5);t.exports=function(t){if(!i(t))throw TypeError(t+\" is not an object!\");return t}},function(t,e,n){var i=n(0),o=n(10),a=n(8),r=n(6),s=n(11),c=function(t,e,n){var l,u,d,p,f=t&c.F,h=t&c.G,A=t&c.S,v=t&c.P,m=t&c.B,g=h?i:A?i[e]||(i[e]={}):(i[e]||{}).prototype,b=h?o:o[e]||(o[e]={}),y=b.prototype||(b.prototype={});for(l in h&&(n=e),n)u=!f&&g&&void 0!==g[l],d=(u?g:n)[l],p=m&&u?s(d,i):v&&\"function\"==typeof d?s(Function.call,d):d,g&&r(g,l,d,t&c.U),b[l]!=d&&a(b,l,p),v&&y[l]!=d&&(y[l]=d)};i.core=o,c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,t.exports=c},function(t,e,n){t.exports=!n(7)(function(){return 7!=Object.defineProperty({},\"a\",{get:function(){return 7}}).a})},function(t,e){t.exports=function(t){return\"object\"==typeof t?null!==t:\"function\"==typeof t}},function(t,e,n){var i=n(0),o=n(8),a=n(12),r=n(30)(\"src\"),s=Function.toString,c=(\"\"+s).split(\"toString\");n(10).inspectSource=function(t){return s.call(t)},(t.exports=function(t,e,n,s){var l=\"function\"==typeof n;l&&(a(n,\"name\")||o(n,\"name\",e)),t[e]!==n&&(l&&(a(n,r)||o(n,r,t[e]?\"\"+t[e]:c.join(String(e)))),t===i?t[e]=n:s?t[e]?t[e]=n:o(t,e,n):(delete t[e],o(t,e,n)))})(Function.prototype,\"toString\",function(){return\"function\"==typeof this&&this[r]||s.call(this)})},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,n){var i=n(13),o=n(25);t.exports=n(4)?function(t,e,n){return i.f(t,e,o(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,e){var n=t.exports={version:\"2.5.7\"};\"number\"==typeof __e&&(__e=n)},function(t,e,n){var i=n(14);t.exports=function(t,e,n){if(i(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,i){return t.call(e,n,i)};case 3:return function(n,i,o){return t.call(e,n,i,o)}}return function(){return t.apply(e,arguments)}}},function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},function(t,e,n){var i=n(2),o=n(41),a=n(29),r=Object.defineProperty;e.f=n(4)?Object.defineProperty:function(t,e,n){if(i(t),e=a(e,!0),i(n),o)try{return r(t,e,n)}catch(t){}if(\"get\"in n||\"set\"in n)throw TypeError(\"Accessors not supported!\");return\"value\"in n&&(t[e]=n.value),t}},function(t,e){t.exports=function(t){if(\"function\"!=typeof t)throw TypeError(t+\" is not a function!\");return t}},function(t,e){t.exports={}},function(t,e){t.exports=function(t){if(null==t)throw TypeError(\"Can't call method on \"+t);return t}},function(t,e,n){\"use strict\";var i=n(7);t.exports=function(t,e){return!!t&&i(function(){e?t.call(null,function(){},1):t.call(null)})}},function(t,e,n){var i=n(23),o=n(16);t.exports=function(t){return i(o(t))}},function(t,e,n){var i=n(53),o=Math.min;t.exports=function(t){return t>0?o(i(t),9007199254740991):0}},function(t,e,n){var i=n(11),o=n(23),a=n(28),r=n(19),s=n(64);t.exports=function(t,e){var n=1==t,c=2==t,l=3==t,u=4==t,d=6==t,p=5==t||d,f=e||s;return function(e,s,h){for(var A,v,m=a(e),g=o(m),b=i(s,h,3),y=r(g.length),x=0,w=n?f(e,y):c?f(e,0):void 0;y>x;x++)if((p||x in g)&&(A=g[x],v=b(A,x,m),t))if(n)w[x]=v;else if(v)switch(t){case 3:return!0;case 5:return A;case 6:return x;case 2:w.push(A)}else if(u)return!1;return d?-1:l||u?u:w}}},function(t,e,n){var i=n(5),o=n(0).document,a=i(o)&&i(o.createElement);t.exports=function(t){return a?o.createElement(t):{}}},function(t,e){t.exports=\"constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf\".split(\",\")},function(t,e,n){var i=n(9);t.exports=Object(\"z\").propertyIsEnumerable(0)?Object:function(t){return\"String\"==i(t)?t.split(\"\"):Object(t)}},function(t,e){t.exports=!1},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,n){var i=n(13).f,o=n(12),a=n(1)(\"toStringTag\");t.exports=function(t,e,n){t&&!o(t=n?t:t.prototype,a)&&i(t,a,{configurable:!0,value:e})}},function(t,e,n){var i=n(49)(\"keys\"),o=n(30);t.exports=function(t){return i[t]||(i[t]=o(t))}},function(t,e,n){var i=n(16);t.exports=function(t){return Object(i(t))}},function(t,e,n){var i=n(5);t.exports=function(t,e){if(!i(t))return t;var n,o;if(e&&\"function\"==typeof(n=t.toString)&&!i(o=n.call(t)))return o;if(\"function\"==typeof(n=t.valueOf)&&!i(o=n.call(t)))return o;if(!e&&\"function\"==typeof(n=t.toString)&&!i(o=n.call(t)))return o;throw TypeError(\"Can't convert object to primitive value\")}},function(t,e){var n=0,i=Math.random();t.exports=function(t){return\"Symbol(\".concat(void 0===t?\"\":t,\")_\",(++n+i).toString(36))}},function(t,e,n){\"use strict\";var i=n(0),o=n(12),a=n(9),r=n(67),s=n(29),c=n(7),l=n(77).f,u=n(45).f,d=n(13).f,p=n(51).trim,f=i.Number,h=f,A=f.prototype,v=\"Number\"==a(n(44)(A)),m=\"trim\"in String.prototype,g=function(t){var e=s(t,!1);if(\"string\"==typeof e&&e.length>2){var n,i,o,a=(e=m?e.trim():p(e,3)).charCodeAt(0);if(43===a||45===a){if(88===(n=e.charCodeAt(2))||120===n)return NaN}else if(48===a){switch(e.charCodeAt(1)){case 66:case 98:i=2,o=49;break;case 79:case 111:i=8,o=55;break;default:return+e}for(var r,c=e.slice(2),l=0,u=c.length;l<u;l++)if((r=c.charCodeAt(l))<48||r>o)return NaN;return parseInt(c,i)}}return+e};if(!f(\" 0o1\")||!f(\"0b1\")||f(\"+0x1\")){f=function(t){var e=arguments.length<1?0:t,n=this;return n instanceof f&&(v?c(function(){A.valueOf.call(n)}):\"Number\"!=a(n))?r(new h(g(e)),n,f):g(e)};for(var b,y=n(4)?l(h):\"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger\".split(\",\"),x=0;y.length>x;x++)o(h,b=y[x])&&!o(f,b)&&d(f,b,u(h,b));f.prototype=A,A.constructor=f,n(6)(i,\"Number\",f)}},function(t,e,n){\"use strict\";function i(t){return!(0===t||(!Array.isArray(t)||0!==t.length)&&t)}function o(t,e,n,i){return t.filter(function(t){return function(t,e){return void 0===t&&(t=\"undefined\"),null===t&&(t=\"null\"),!1===t&&(t=\"false\"),-1!==t.toString().toLowerCase().indexOf(e.trim())}(i(t,n),e)})}function a(t){return t.filter(function(t){return!t.$isLabel})}function r(t,e){return function(n){return n.reduce(function(n,i){return i[t]&&i[t].length?(n.push({$groupLabel:i[e],$isLabel:!0}),n.concat(i[t])):n},[])}}function s(t,e,i,a,r){return function(s){return s.map(function(s){var c;if(!s[i])return console.warn(\"Options passed to vue-multiselect do not contain groups, despite the config.\"),[];var l=o(s[i],t,e,r);return l.length?(c={},n.i(p.a)(c,a,s[a]),n.i(p.a)(c,i,l),c):[]})}}var c=n(59),l=n(54),u=(n.n(l),n(95)),d=(n.n(u),n(31)),p=(n.n(d),n(58)),f=n(91),h=(n.n(f),n(98)),A=(n.n(h),n(92)),v=(n.n(A),n(88)),m=(n.n(v),n(97)),g=(n.n(m),n(89)),b=(n.n(g),n(96)),y=(n.n(b),n(93)),x=(n.n(y),n(90)),w=(n.n(x),function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return function(t){return e.reduce(function(t,e){return e(t)},t)}});e.a={data:function(){return{search:\"\",isOpen:!1,preferredOpenDirection:\"below\",optimizedHeight:this.maxHeight}},props:{internalSearch:{type:Boolean,default:!0},options:{type:Array,required:!0},multiple:{type:Boolean,default:!1},value:{type:null,default:function(){return[]}},trackBy:{type:String},label:{type:String},searchable:{type:Boolean,default:!0},clearOnSelect:{type:Boolean,default:!0},hideSelected:{type:Boolean,default:!1},placeholder:{type:String,default:\"Select option\"},allowEmpty:{type:Boolean,default:!0},resetAfter:{type:Boolean,default:!1},closeOnSelect:{type:Boolean,default:!0},customLabel:{type:Function,default:function(t,e){return i(t)?\"\":e?t[e]:t}},taggable:{type:Boolean,default:!1},tagPlaceholder:{type:String,default:\"Press enter to create a tag\"},tagPosition:{type:String,default:\"top\"},max:{type:[Number,Boolean],default:!1},id:{default:null},optionsLimit:{type:Number,default:1e3},groupValues:{type:String},groupLabel:{type:String},groupSelect:{type:Boolean,default:!1},blockKeys:{type:Array,default:function(){return[]}},preserveSearch:{type:Boolean,default:!1},preselectFirst:{type:Boolean,default:!1}},mounted:function(){!this.multiple&&this.max&&console.warn(\"[Vue-Multiselect warn]: Max prop should not be used when prop Multiple equals false.\"),this.preselectFirst&&!this.internalValue.length&&this.options.length&&this.select(this.filteredOptions[0])},computed:{internalValue:function(){return this.value||0===this.value?Array.isArray(this.value)?this.value:[this.value]:[]},filteredOptions:function(){var t=this.search||\"\",e=t.toLowerCase().trim(),n=this.options.concat();return n=this.internalSearch?this.groupValues?this.filterAndFlat(n,e,this.label):o(n,e,this.label,this.customLabel):this.groupValues?r(this.groupValues,this.groupLabel)(n):n,n=this.hideSelected?n.filter(function(t){return function(){return!t.apply(void 0,arguments)}}(this.isSelected)):n,this.taggable&&e.length&&!this.isExistingOption(e)&&(\"bottom\"===this.tagPosition?n.push({isTag:!0,label:t}):n.unshift({isTag:!0,label:t})),n.slice(0,this.optionsLimit)},valueKeys:function(){var t=this;return this.trackBy?this.internalValue.map(function(e){return e[t.trackBy]}):this.internalValue},optionKeys:function(){var t=this;return(this.groupValues?this.flatAndStrip(this.options):this.options).map(function(e){return t.customLabel(e,t.label).toString().toLowerCase()})},currentOptionLabel:function(){return this.multiple?this.searchable?\"\":this.placeholder:this.internalValue.length?this.getOptionLabel(this.internalValue[0]):this.searchable?\"\":this.placeholder}},watch:{internalValue:function(){this.resetAfter&&this.internalValue.length&&(this.search=\"\",this.$emit(\"input\",this.multiple?[]:null))},search:function(){this.$emit(\"search-change\",this.search,this.id)}},methods:{getValue:function(){return this.multiple?this.internalValue:0===this.internalValue.length?null:this.internalValue[0]},filterAndFlat:function(t,e,n){return w(s(e,n,this.groupValues,this.groupLabel,this.customLabel),r(this.groupValues,this.groupLabel))(t)},flatAndStrip:function(t){return w(r(this.groupValues,this.groupLabel),a)(t)},updateSearch:function(t){this.search=t},isExistingOption:function(t){return!!this.options&&this.optionKeys.indexOf(t)>-1},isSelected:function(t){var e=this.trackBy?t[this.trackBy]:t;return this.valueKeys.indexOf(e)>-1},isOptionDisabled:function(t){return!!t.$isDisabled},getOptionLabel:function(t){if(i(t))return\"\";if(t.isTag)return t.label;if(t.$isLabel)return t.$groupLabel;var e=this.customLabel(t,this.label);return i(e)?\"\":e},select:function(t,e){if(t.$isLabel&&this.groupSelect)this.selectGroup(t);else if(!(-1!==this.blockKeys.indexOf(e)||this.disabled||t.$isDisabled||t.$isLabel)&&(!this.max||!this.multiple||this.internalValue.length!==this.max)&&(\"Tab\"!==e||this.pointerDirty)){if(t.isTag)this.$emit(\"tag\",t.label,this.id),this.search=\"\",this.closeOnSelect&&!this.multiple&&this.deactivate();else{if(this.isSelected(t))return void(\"Tab\"!==e&&this.removeElement(t));this.$emit(\"select\",t,this.id),this.multiple?this.$emit(\"input\",this.internalValue.concat([t]),this.id):this.$emit(\"input\",t,this.id),this.clearOnSelect&&(this.search=\"\")}this.closeOnSelect&&this.deactivate()}},selectGroup:function(t){var e=this,n=this.options.find(function(n){return n[e.groupLabel]===t.$groupLabel});if(n)if(this.wholeGroupSelected(n)){this.$emit(\"remove\",n[this.groupValues],this.id);var i=this.internalValue.filter(function(t){return-1===n[e.groupValues].indexOf(t)});this.$emit(\"input\",i,this.id)}else{var o=n[this.groupValues].filter(function(t){return!(e.isOptionDisabled(t)||e.isSelected(t))});this.$emit(\"select\",o,this.id),this.$emit(\"input\",this.internalValue.concat(o),this.id)}},wholeGroupSelected:function(t){var e=this;return t[this.groupValues].every(function(t){return e.isSelected(t)||e.isOptionDisabled(t)})},wholeGroupDisabled:function(t){return t[this.groupValues].every(this.isOptionDisabled)},removeElement:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(!this.disabled&&!t.$isDisabled){if(!this.allowEmpty&&this.internalValue.length<=1)return void this.deactivate();var i=\"object\"===n.i(c.a)(t)?this.valueKeys.indexOf(t[this.trackBy]):this.valueKeys.indexOf(t);if(this.$emit(\"remove\",t,this.id),this.multiple){var o=this.internalValue.slice(0,i).concat(this.internalValue.slice(i+1));this.$emit(\"input\",o,this.id)}else this.$emit(\"input\",null,this.id);this.closeOnSelect&&e&&this.deactivate()}},removeLastElement:function(){-1===this.blockKeys.indexOf(\"Delete\")&&0===this.search.length&&Array.isArray(this.internalValue)&&this.internalValue.length&&this.removeElement(this.internalValue[this.internalValue.length-1],!1)},activate:function(){var t=this;this.isOpen||this.disabled||(this.adjustPosition(),this.groupValues&&0===this.pointer&&this.filteredOptions.length&&(this.pointer=1),this.isOpen=!0,this.searchable?(this.preserveSearch||(this.search=\"\"),this.$nextTick(function(){return t.$refs.search.focus()})):this.$el.focus(),this.$emit(\"open\",this.id))},deactivate:function(){this.isOpen&&(this.isOpen=!1,this.searchable?this.$refs.search.blur():this.$el.blur(),this.preserveSearch||(this.search=\"\"),this.$emit(\"close\",this.getValue(),this.id))},toggle:function(){this.isOpen?this.deactivate():this.activate()},adjustPosition:function(){if(\"undefined\"!=typeof window){var t=this.$el.getBoundingClientRect().top,e=window.innerHeight-this.$el.getBoundingClientRect().bottom;e>this.maxHeight||e>t||\"below\"===this.openDirection||\"bottom\"===this.openDirection?(this.preferredOpenDirection=\"below\",this.optimizedHeight=Math.min(e-40,this.maxHeight)):(this.preferredOpenDirection=\"above\",this.optimizedHeight=Math.min(t-40,this.maxHeight))}}}}},function(t,e,n){\"use strict\";var i=n(54),o=(n.n(i),n(31));n.n(o),e.a={data:function(){return{pointer:0,pointerDirty:!1}},props:{showPointer:{type:Boolean,default:!0},optionHeight:{type:Number,default:40}},computed:{pointerPosition:function(){return this.pointer*this.optionHeight},visibleElements:function(){return this.optimizedHeight/this.optionHeight}},watch:{filteredOptions:function(){this.pointerAdjust()},isOpen:function(){this.pointerDirty=!1}},methods:{optionHighlight:function(t,e){return{\"multiselect__option--highlight\":t===this.pointer&&this.showPointer,\"multiselect__option--selected\":this.isSelected(e)}},groupHighlight:function(t,e){var n=this;if(!this.groupSelect)return[\"multiselect__option--group\",\"multiselect__option--disabled\"];var i=this.options.find(function(t){return t[n.groupLabel]===e.$groupLabel});return i&&!this.wholeGroupDisabled(i)?[\"multiselect__option--group\",{\"multiselect__option--highlight\":t===this.pointer&&this.showPointer},{\"multiselect__option--group-selected\":this.wholeGroupSelected(i)}]:\"multiselect__option--disabled\"},addPointerElement:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"Enter\",e=t.key;this.filteredOptions.length>0&&this.select(this.filteredOptions[this.pointer],e),this.pointerReset()},pointerForward:function(){this.pointer<this.filteredOptions.length-1&&(this.pointer++,this.$refs.list.scrollTop<=this.pointerPosition-(this.visibleElements-1)*this.optionHeight&&(this.$refs.list.scrollTop=this.pointerPosition-(this.visibleElements-1)*this.optionHeight),this.filteredOptions[this.pointer]&&this.filteredOptions[this.pointer].$isLabel&&!this.groupSelect&&this.pointerForward()),this.pointerDirty=!0},pointerBackward:function(){this.pointer>0?(this.pointer--,this.$refs.list.scrollTop>=this.pointerPosition&&(this.$refs.list.scrollTop=this.pointerPosition),this.filteredOptions[this.pointer]&&this.filteredOptions[this.pointer].$isLabel&&!this.groupSelect&&this.pointerBackward()):this.filteredOptions[this.pointer]&&this.filteredOptions[0].$isLabel&&!this.groupSelect&&this.pointerForward(),this.pointerDirty=!0},pointerReset:function(){this.closeOnSelect&&(this.pointer=0,this.$refs.list&&(this.$refs.list.scrollTop=0))},pointerAdjust:function(){this.pointer>=this.filteredOptions.length-1&&(this.pointer=this.filteredOptions.length?this.filteredOptions.length-1:0),this.filteredOptions.length>0&&this.filteredOptions[this.pointer].$isLabel&&!this.groupSelect&&this.pointerForward()},pointerSet:function(t){this.pointer=t,this.pointerDirty=!0}}}},function(t,e,n){\"use strict\";var i=n(36),o=n(74),a=n(15),r=n(18);t.exports=n(72)(Array,\"Array\",function(t,e){this._t=r(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,o(1)):o(0,\"keys\"==e?n:\"values\"==e?t[n]:[n,t[n]])},\"values\"),a.Arguments=a.Array,i(\"keys\"),i(\"values\"),i(\"entries\")},function(t,e,n){\"use strict\";var i=n(31),o=(n.n(i),n(32)),a=n(33);e.a={name:\"vue-multiselect\",mixins:[o.a,a.a],props:{name:{type:String,default:\"\"},selectLabel:{type:String,default:\"Press enter to select\"},selectGroupLabel:{type:String,default:\"Press enter to select group\"},selectedLabel:{type:String,default:\"Selected\"},deselectLabel:{type:String,default:\"Press enter to remove\"},deselectGroupLabel:{type:String,default:\"Press enter to deselect group\"},showLabels:{type:Boolean,default:!0},limit:{type:Number,default:99999},maxHeight:{type:Number,default:300},limitText:{type:Function,default:function(t){return\"and \".concat(t,\" more\")}},loading:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},openDirection:{type:String,default:\"\"},showNoOptions:{type:Boolean,default:!0},showNoResults:{type:Boolean,default:!0},tabindex:{type:Number,default:0}},computed:{isSingleLabelVisible:function(){return(this.singleValue||0===this.singleValue)&&(!this.isOpen||!this.searchable)&&!this.visibleValues.length},isPlaceholderVisible:function(){return!(this.internalValue.length||this.searchable&&this.isOpen)},visibleValues:function(){return this.multiple?this.internalValue.slice(0,this.limit):[]},singleValue:function(){return this.internalValue[0]},deselectLabelText:function(){return this.showLabels?this.deselectLabel:\"\"},deselectGroupLabelText:function(){return this.showLabels?this.deselectGroupLabel:\"\"},selectLabelText:function(){return this.showLabels?this.selectLabel:\"\"},selectGroupLabelText:function(){return this.showLabels?this.selectGroupLabel:\"\"},selectedLabelText:function(){return this.showLabels?this.selectedLabel:\"\"},inputStyle:function(){if(this.searchable||this.multiple&&this.value&&this.value.length)return this.isOpen?{width:\"100%\"}:{width:\"0\",position:\"absolute\",padding:\"0\"}},contentStyle:function(){return this.options.length?{display:\"inline-block\"}:{display:\"block\"}},isAbove:function(){return\"above\"===this.openDirection||\"top\"===this.openDirection||\"below\"!==this.openDirection&&\"bottom\"!==this.openDirection&&\"above\"===this.preferredOpenDirection},showSearchInput:function(){return this.searchable&&(!this.hasSingleSelectedSlot||!this.visibleSingleValue&&0!==this.visibleSingleValue||this.isOpen)}}}},function(t,e,n){var i=n(1)(\"unscopables\"),o=Array.prototype;null==o[i]&&n(8)(o,i,{}),t.exports=function(t){o[i][t]=!0}},function(t,e,n){var i=n(18),o=n(19),a=n(85);t.exports=function(t){return function(e,n,r){var s,c=i(e),l=o(c.length),u=a(r,l);if(t&&n!=n){for(;l>u;)if((s=c[u++])!=s)return!0}else for(;l>u;u++)if((t||u in c)&&c[u]===n)return t||u||0;return!t&&-1}}},function(t,e,n){var i=n(9),o=n(1)(\"toStringTag\"),a=\"Arguments\"==i(function(){return arguments}());t.exports=function(t){var e,n,r;return void 0===t?\"Undefined\":null===t?\"Null\":\"string\"==typeof(n=function(t,e){try{return t[e]}catch(t){}}(e=Object(t),o))?n:a?i(e):\"Object\"==(r=i(e))&&\"function\"==typeof e.callee?\"Arguments\":r}},function(t,e,n){\"use strict\";var i=n(2);t.exports=function(){var t=i(this),e=\"\";return t.global&&(e+=\"g\"),t.ignoreCase&&(e+=\"i\"),t.multiline&&(e+=\"m\"),t.unicode&&(e+=\"u\"),t.sticky&&(e+=\"y\"),e}},function(t,e,n){var i=n(0).document;t.exports=i&&i.documentElement},function(t,e,n){t.exports=!n(4)&&!n(7)(function(){return 7!=Object.defineProperty(n(21)(\"div\"),\"a\",{get:function(){return 7}}).a})},function(t,e,n){var i=n(9);t.exports=Array.isArray||function(t){return\"Array\"==i(t)}},function(t,e,n){\"use strict\";function i(t){var e,n;this.promise=new t(function(t,i){if(void 0!==e||void 0!==n)throw TypeError(\"Bad Promise constructor\");e=t,n=i}),this.resolve=o(e),this.reject=o(n)}var o=n(14);t.exports.f=function(t){return new i(t)}},function(t,e,n){var i=n(2),o=n(76),a=n(22),r=n(27)(\"IE_PROTO\"),s=function(){},c=function(){var t,e=n(21)(\"iframe\"),i=a.length;for(e.style.display=\"none\",n(40).appendChild(e),e.src=\"javascript:\",(t=e.contentWindow.document).open(),t.write(\"<script>document.F=Object<\\/script>\"),t.close(),c=t.F;i--;)delete c.prototype[a[i]];return c()};t.exports=Object.create||function(t,e){var n;return null!==t?(s.prototype=i(t),n=new s,s.prototype=null,n[r]=t):n=c(),void 0===e?n:o(n,e)}},function(t,e,n){var i=n(79),o=n(25),a=n(18),r=n(29),s=n(12),c=n(41),l=Object.getOwnPropertyDescriptor;e.f=n(4)?l:function(t,e){if(t=a(t),e=r(e,!0),c)try{return l(t,e)}catch(t){}if(s(t,e))return o(!i.f.call(t,e),t[e])}},function(t,e,n){var i=n(12),o=n(18),a=n(37)(!1),r=n(27)(\"IE_PROTO\");t.exports=function(t,e){var n,s=o(t),c=0,l=[];for(n in s)n!=r&&i(s,n)&&l.push(n);for(;e.length>c;)i(s,n=e[c++])&&(~a(l,n)||l.push(n));return l}},function(t,e,n){var i=n(46),o=n(22);t.exports=Object.keys||function(t){return i(t,o)}},function(t,e,n){var i=n(2),o=n(5),a=n(43);t.exports=function(t,e){if(i(t),o(e)&&e.constructor===t)return e;var n=a.f(t);return(0,n.resolve)(e),n.promise}},function(t,e,n){var i=n(10),o=n(0),a=o[\"__core-js_shared__\"]||(o[\"__core-js_shared__\"]={});(t.exports=function(t,e){return a[t]||(a[t]=void 0!==e?e:{})})(\"versions\",[]).push({version:i.version,mode:n(24)?\"pure\":\"global\",copyright:\"© 2018 Denis Pushkarev (zloirock.ru)\"})},function(t,e,n){var i=n(2),o=n(14),a=n(1)(\"species\");t.exports=function(t,e){var n,r=i(t).constructor;return void 0===r||null==(n=i(r)[a])?e:o(n)}},function(t,e,n){var i=n(3),o=n(16),a=n(7),r=n(84),s=\"[\"+r+\"]\",c=RegExp(\"^\"+s+s+\"*\"),l=RegExp(s+s+\"*$\"),u=function(t,e,n){var o={},s=a(function(){return!!r[t]()||\"​…\"!=\"​…\"[t]()}),c=o[t]=s?e(d):r[t];n&&(o[n]=c),i(i.P+i.F*s,\"String\",o)},d=u.trim=function(t,e){return t=String(o(t)),1&e&&(t=t.replace(c,\"\")),2&e&&(t=t.replace(l,\"\")),t};t.exports=u},function(t,e,n){var i,o,a,r=n(11),s=n(68),c=n(40),l=n(21),u=n(0),d=u.process,p=u.setImmediate,f=u.clearImmediate,h=u.MessageChannel,A=u.Dispatch,v=0,m={},g=function(){var t=+this;if(m.hasOwnProperty(t)){var e=m[t];delete m[t],e()}},b=function(t){g.call(t.data)};p&&f||(p=function(t){for(var e=[],n=1;arguments.length>n;)e.push(arguments[n++]);return m[++v]=function(){s(\"function\"==typeof t?t:Function(t),e)},i(v),v},f=function(t){delete m[t]},\"process\"==n(9)(d)?i=function(t){d.nextTick(r(g,t,1))}:A&&A.now?i=function(t){A.now(r(g,t,1))}:h?(o=new h,a=o.port2,o.port1.onmessage=b,i=r(a.postMessage,a,1)):u.addEventListener&&\"function\"==typeof postMessage&&!u.importScripts?(i=function(t){u.postMessage(t+\"\",\"*\")},u.addEventListener(\"message\",b,!1)):i=\"onreadystatechange\"in l(\"script\")?function(t){c.appendChild(l(\"script\")).onreadystatechange=function(){c.removeChild(this),g.call(t)}}:function(t){setTimeout(r(g,t,1),0)}),t.exports={set:p,clear:f}},function(t,e){var n=Math.ceil,i=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?i:n)(t)}},function(t,e,n){\"use strict\";var i=n(3),o=n(20)(5),a=!0;\"find\"in[]&&Array(1).find(function(){a=!1}),i(i.P+i.F*a,\"Array\",{find:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),n(36)(\"find\")},function(t,e,n){\"use strict\";var i,o,a,r,s=n(24),c=n(0),l=n(11),u=n(38),d=n(3),p=n(5),f=n(14),h=n(61),A=n(66),v=n(50),m=n(52).set,g=n(75)(),b=n(43),y=n(80),x=n(86),w=n(48),_=c.TypeError,T=c.process,k=T&&T.versions,C=k&&k.v8||\"\",E=c.Promise,M=\"process\"==u(T),S=function(){},D=o=b.f,O=!!function(){try{var t=E.resolve(1),e=(t.constructor={})[n(1)(\"species\")]=function(t){t(S,S)};return(M||\"function\"==typeof PromiseRejectionEvent)&&t.then(S)instanceof e&&0!==C.indexOf(\"6.6\")&&-1===x.indexOf(\"Chrome/66\")}catch(t){}}(),B=function(t){var e;return!(!p(t)||\"function\"!=typeof(e=t.then))&&e},I=function(t,e){if(!t._n){t._n=!0;var n=t._c;g(function(){for(var i=t._v,o=1==t._s,a=0;n.length>a;)!function(e){var n,a,r,s=o?e.ok:e.fail,c=e.resolve,l=e.reject,u=e.domain;try{s?(o||(2==t._h&&P(t),t._h=1),!0===s?n=i:(u&&u.enter(),n=s(i),u&&(u.exit(),r=!0)),n===e.promise?l(_(\"Promise-chain cycle\")):(a=B(n))?a.call(n,c,l):c(n)):l(i)}catch(t){u&&!r&&u.exit(),l(t)}}(n[a++]);t._c=[],t._n=!1,e&&!t._h&&N(t)})}},N=function(t){m.call(c,function(){var e,n,i,o=t._v,a=L(t);if(a&&(e=y(function(){M?T.emit(\"unhandledRejection\",o,t):(n=c.onunhandledrejection)?n({promise:t,reason:o}):(i=c.console)&&i.error&&i.error(\"Unhandled promise rejection\",o)}),t._h=M||L(t)?2:1),t._a=void 0,a&&e.e)throw e.v})},L=function(t){return 1!==t._h&&0===(t._a||t._c).length},P=function(t){m.call(c,function(){var e;M?T.emit(\"rejectionHandled\",t):(e=c.onrejectionhandled)&&e({promise:t,reason:t._v})})},j=function(t){var e=this;e._d||(e._d=!0,(e=e._w||e)._v=t,e._s=2,e._a||(e._a=e._c.slice()),I(e,!0))},$=function(t){var e,n=this;if(!n._d){n._d=!0,n=n._w||n;try{if(n===t)throw _(\"Promise can't be resolved itself\");(e=B(t))?g(function(){var i={_w:n,_d:!1};try{e.call(t,l($,i,1),l(j,i,1))}catch(t){j.call(i,t)}}):(n._v=t,n._s=1,I(n,!1))}catch(t){j.call({_w:n,_d:!1},t)}}};O||(E=function(t){h(this,E,\"Promise\",\"_h\"),f(t),i.call(this);try{t(l($,this,1),l(j,this,1))}catch(t){j.call(this,t)}},(i=function(t){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1}).prototype=n(81)(E.prototype,{then:function(t,e){var n=D(v(this,E));return n.ok=\"function\"!=typeof t||t,n.fail=\"function\"==typeof e&&e,n.domain=M?T.domain:void 0,this._c.push(n),this._a&&this._a.push(n),this._s&&I(this,!1),n.promise},catch:function(t){return this.then(void 0,t)}}),a=function(){var t=new i;this.promise=t,this.resolve=l($,t,1),this.reject=l(j,t,1)},b.f=D=function(t){return t===E||t===r?new a(t):o(t)}),d(d.G+d.W+d.F*!O,{Promise:E}),n(26)(E,\"Promise\"),n(83)(\"Promise\"),r=n(10).Promise,d(d.S+d.F*!O,\"Promise\",{reject:function(t){var e=D(this);return(0,e.reject)(t),e.promise}}),d(d.S+d.F*(s||!O),\"Promise\",{resolve:function(t){return w(s&&this===r?E:this,t)}}),d(d.S+d.F*!(O&&n(73)(function(t){E.all(t).catch(S)})),\"Promise\",{all:function(t){var e=this,n=D(e),i=n.resolve,o=n.reject,a=y(function(){var n=[],a=0,r=1;A(t,!1,function(t){var s=a++,c=!1;n.push(void 0),r++,e.resolve(t).then(function(t){c||(c=!0,n[s]=t,--r||i(n))},o)}),--r||i(n)});return a.e&&o(a.v),n.promise},race:function(t){var e=this,n=D(e),i=n.reject,o=y(function(){A(t,!1,function(t){e.resolve(t).then(n.resolve,i)})});return o.e&&i(o.v),n.promise}})},function(t,e,n){\"use strict\";var i=n(3),o=n(10),a=n(0),r=n(50),s=n(48);i(i.P+i.R,\"Promise\",{finally:function(t){var e=r(this,o.Promise||a.Promise),n=\"function\"==typeof t;return this.then(n?function(n){return s(e,t()).then(function(){return n})}:t,n?function(n){return s(e,t()).then(function(){throw n})}:t)}})},function(t,e,n){\"use strict\";var i=n(35),o=n(101),a=n(100),r=function(t){n(99)},s=a(i.a,o.a,!1,r,null,null);e.a=s.exports},function(t,e,n){\"use strict\";e.a=function(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}},function(t,e,n){\"use strict\";function i(t){return(i=\"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})(t)}function o(t){return(o=\"function\"==typeof Symbol&&\"symbol\"===i(Symbol.iterator)?function(t){return i(t)}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":i(t)})(t)}e.a=o},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var i=n(34),o=(n.n(i),n(55)),a=(n.n(o),n(56)),r=(n.n(a),n(57)),s=n(32),c=n(33);n.d(e,\"Multiselect\",function(){return r.a}),n.d(e,\"multiselectMixin\",function(){return s.a}),n.d(e,\"pointerMixin\",function(){return c.a}),e.default=r.a},function(t,e){t.exports=function(t,e,n,i){if(!(t instanceof e)||void 0!==i&&i in t)throw TypeError(n+\": incorrect invocation!\");return t}},function(t,e,n){var i=n(14),o=n(28),a=n(23),r=n(19);t.exports=function(t,e,n,s,c){i(e);var l=o(t),u=a(l),d=r(l.length),p=c?d-1:0,f=c?-1:1;if(n<2)for(;;){if(p in u){s=u[p],p+=f;break}if(p+=f,c?p<0:d<=p)throw TypeError(\"Reduce of empty array with no initial value\")}for(;c?p>=0:d>p;p+=f)p in u&&(s=e(s,u[p],p,l));return s}},function(t,e,n){var i=n(5),o=n(42),a=n(1)(\"species\");t.exports=function(t){var e;return o(t)&&(\"function\"!=typeof(e=t.constructor)||e!==Array&&!o(e.prototype)||(e=void 0),i(e)&&null===(e=e[a])&&(e=void 0)),void 0===e?Array:e}},function(t,e,n){var i=n(63);t.exports=function(t,e){return new(i(t))(e)}},function(t,e,n){\"use strict\";var i=n(8),o=n(6),a=n(7),r=n(16),s=n(1);t.exports=function(t,e,n){var c=s(t),l=n(r,c,\"\"[t]),u=l[0],d=l[1];a(function(){var e={};return e[c]=function(){return 7},7!=\"\"[t](e)})&&(o(String.prototype,t,u),i(RegExp.prototype,c,2==e?function(t,e){return d.call(t,this,e)}:function(t){return d.call(t,this)}))}},function(t,e,n){var i=n(11),o=n(70),a=n(69),r=n(2),s=n(19),c=n(87),l={},u={},e=t.exports=function(t,e,n,d,p){var f,h,A,v,m=p?function(){return t}:c(t),g=i(n,d,e?2:1),b=0;if(\"function\"!=typeof m)throw TypeError(t+\" is not iterable!\");if(a(m)){for(f=s(t.length);f>b;b++)if((v=e?g(r(h=t[b])[0],h[1]):g(t[b]))===l||v===u)return v}else for(A=m.call(t);!(h=A.next()).done;)if((v=o(A,g,h.value,e))===l||v===u)return v};e.BREAK=l,e.RETURN=u},function(t,e,n){var i=n(5),o=n(82).set;t.exports=function(t,e,n){var a,r=e.constructor;return r!==n&&\"function\"==typeof r&&(a=r.prototype)!==n.prototype&&i(a)&&o&&o(t,a),t}},function(t,e){t.exports=function(t,e,n){var i=void 0===n;switch(e.length){case 0:return i?t():t.call(n);case 1:return i?t(e[0]):t.call(n,e[0]);case 2:return i?t(e[0],e[1]):t.call(n,e[0],e[1]);case 3:return i?t(e[0],e[1],e[2]):t.call(n,e[0],e[1],e[2]);case 4:return i?t(e[0],e[1],e[2],e[3]):t.call(n,e[0],e[1],e[2],e[3])}return t.apply(n,e)}},function(t,e,n){var i=n(15),o=n(1)(\"iterator\"),a=Array.prototype;t.exports=function(t){return void 0!==t&&(i.Array===t||a[o]===t)}},function(t,e,n){var i=n(2);t.exports=function(t,e,n,o){try{return o?e(i(n)[0],n[1]):e(n)}catch(e){var a=t.return;throw void 0!==a&&i(a.call(t)),e}}},function(t,e,n){\"use strict\";var i=n(44),o=n(25),a=n(26),r={};n(8)(r,n(1)(\"iterator\"),function(){return this}),t.exports=function(t,e,n){t.prototype=i(r,{next:o(1,n)}),a(t,e+\" Iterator\")}},function(t,e,n){\"use strict\";var i=n(24),o=n(3),a=n(6),r=n(8),s=n(15),c=n(71),l=n(26),u=n(78),d=n(1)(\"iterator\"),p=!([].keys&&\"next\"in[].keys()),f=function(){return this};t.exports=function(t,e,n,h,A,v,m){c(n,e,h);var g,b,y,x=function(t){if(!p&&t in k)return k[t];switch(t){case\"keys\":case\"values\":return function(){return new n(this,t)}}return function(){return new n(this,t)}},w=e+\" Iterator\",_=\"values\"==A,T=!1,k=t.prototype,C=k[d]||k[\"@@iterator\"]||A&&k[A],E=C||x(A),M=A?_?x(\"entries\"):E:void 0,S=\"Array\"==e&&k.entries||C;if(S&&(y=u(S.call(new t)))!==Object.prototype&&y.next&&(l(y,w,!0),i||\"function\"==typeof y[d]||r(y,d,f)),_&&C&&\"values\"!==C.name&&(T=!0,E=function(){return C.call(this)}),i&&!m||!p&&!T&&k[d]||r(k,d,E),s[e]=E,s[w]=f,A)if(g={values:_?E:x(\"values\"),keys:v?E:x(\"keys\"),entries:M},m)for(b in g)b in k||a(k,b,g[b]);else o(o.P+o.F*(p||T),e,g);return g}},function(t,e,n){var i=n(1)(\"iterator\"),o=!1;try{var a=[7][i]();a.return=function(){o=!0},Array.from(a,function(){throw 2})}catch(t){}t.exports=function(t,e){if(!e&&!o)return!1;var n=!1;try{var a=[7],r=a[i]();r.next=function(){return{done:n=!0}},a[i]=function(){return r},t(a)}catch(t){}return n}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e,n){var i=n(0),o=n(52).set,a=i.MutationObserver||i.WebKitMutationObserver,r=i.process,s=i.Promise,c=\"process\"==n(9)(r);t.exports=function(){var t,e,n,l=function(){var i,o;for(c&&(i=r.domain)&&i.exit();t;){o=t.fn,t=t.next;try{o()}catch(i){throw t?n():e=void 0,i}}e=void 0,i&&i.enter()};if(c)n=function(){r.nextTick(l)};else if(!a||i.navigator&&i.navigator.standalone)if(s&&s.resolve){var u=s.resolve(void 0);n=function(){u.then(l)}}else n=function(){o.call(i,l)};else{var d=!0,p=document.createTextNode(\"\");new a(l).observe(p,{characterData:!0}),n=function(){p.data=d=!d}}return function(i){var o={fn:i,next:void 0};e&&(e.next=o),t||(t=o,n()),e=o}}},function(t,e,n){var i=n(13),o=n(2),a=n(47);t.exports=n(4)?Object.defineProperties:function(t,e){o(t);for(var n,r=a(e),s=r.length,c=0;s>c;)i.f(t,n=r[c++],e[n]);return t}},function(t,e,n){var i=n(46),o=n(22).concat(\"length\",\"prototype\");e.f=Object.getOwnPropertyNames||function(t){return i(t,o)}},function(t,e,n){var i=n(12),o=n(28),a=n(27)(\"IE_PROTO\"),r=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=o(t),i(t,a)?t[a]:\"function\"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?r:null}},function(t,e){e.f={}.propertyIsEnumerable},function(t,e){t.exports=function(t){try{return{e:!1,v:t()}}catch(t){return{e:!0,v:t}}}},function(t,e,n){var i=n(6);t.exports=function(t,e,n){for(var o in e)i(t,o,e[o],n);return t}},function(t,e,n){var i=n(5),o=n(2),a=function(t,e){if(o(t),!i(e)&&null!==e)throw TypeError(e+\": can't set as prototype!\")};t.exports={set:Object.setPrototypeOf||(\"__proto__\"in{}?function(t,e,i){try{(i=n(11)(Function.call,n(45).f(Object.prototype,\"__proto__\").set,2))(t,[]),e=!(t instanceof Array)}catch(t){e=!0}return function(t,n){return a(t,n),e?t.__proto__=n:i(t,n),t}}({},!1):void 0),check:a}},function(t,e,n){\"use strict\";var i=n(0),o=n(13),a=n(4),r=n(1)(\"species\");t.exports=function(t){var e=i[t];a&&e&&!e[r]&&o.f(e,r,{configurable:!0,get:function(){return this}})}},function(t,e){t.exports=\"\\t\\n\\v\\f\\r   ᠎              \\u2028\\u2029\\ufeff\"},function(t,e,n){var i=n(53),o=Math.max,a=Math.min;t.exports=function(t,e){return(t=i(t))<0?o(t+e,0):a(t,e)}},function(t,e,n){var i=n(0),o=i.navigator;t.exports=o&&o.userAgent||\"\"},function(t,e,n){var i=n(38),o=n(1)(\"iterator\"),a=n(15);t.exports=n(10).getIteratorMethod=function(t){if(null!=t)return t[o]||t[\"@@iterator\"]||a[i(t)]}},function(t,e,n){\"use strict\";var i=n(3),o=n(20)(2);i(i.P+i.F*!n(17)([].filter,!0),\"Array\",{filter:function(t){return o(this,t,arguments[1])}})},function(t,e,n){\"use strict\";var i=n(3),o=n(37)(!1),a=[].indexOf,r=!!a&&1/[1].indexOf(1,-0)<0;i(i.P+i.F*(r||!n(17)(a)),\"Array\",{indexOf:function(t){return r?a.apply(this,arguments)||0:o(this,t,arguments[1])}})},function(t,e,n){var i=n(3);i(i.S,\"Array\",{isArray:n(42)})},function(t,e,n){\"use strict\";var i=n(3),o=n(20)(1);i(i.P+i.F*!n(17)([].map,!0),\"Array\",{map:function(t){return o(this,t,arguments[1])}})},function(t,e,n){\"use strict\";var i=n(3),o=n(62);i(i.P+i.F*!n(17)([].reduce,!0),\"Array\",{reduce:function(t){return o(this,t,arguments.length,arguments[1],!1)}})},function(t,e,n){var i=Date.prototype,o=i.toString,a=i.getTime;new Date(NaN)+\"\"!=\"Invalid Date\"&&n(6)(i,\"toString\",function(){var t=a.call(this);return t==t?o.call(this):\"Invalid Date\"})},function(t,e,n){n(4)&&\"g\"!=/./g.flags&&n(13).f(RegExp.prototype,\"flags\",{configurable:!0,get:n(39)})},function(t,e,n){n(65)(\"search\",1,function(t,e,n){return[function(n){\"use strict\";var i=t(this),o=null==n?void 0:n[e];return void 0!==o?o.call(n,i):new RegExp(n)[e](String(i))},n]})},function(t,e,n){\"use strict\";n(94);var i=n(2),o=n(39),a=n(4),r=/./.toString,s=function(t){n(6)(RegExp.prototype,\"toString\",t,!0)};n(7)(function(){return\"/a/b\"!=r.call({source:\"a\",flags:\"b\"})})?s(function(){var t=i(this);return\"/\".concat(t.source,\"/\",\"flags\"in t?t.flags:!a&&t instanceof RegExp?o.call(t):void 0)}):\"toString\"!=r.name&&s(function(){return r.call(this)})},function(t,e,n){\"use strict\";n(51)(\"trim\",function(t){return function(){return t(this,3)}})},function(t,e,n){for(var i=n(34),o=n(47),a=n(6),r=n(0),s=n(8),c=n(15),l=n(1),u=l(\"iterator\"),d=l(\"toStringTag\"),p=c.Array,f={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},h=o(f),A=0;A<h.length;A++){var v,m=h[A],g=f[m],b=r[m],y=b&&b.prototype;if(y&&(y[u]||s(y,u,p),y[d]||s(y,d,m),c[m]=p,g))for(v in i)y[v]||a(y,v,i[v],!0)}},function(t,e){},function(t,e){t.exports=function(t,e,n,i,o,a){var r,s=t=t||{},c=typeof t.default;\"object\"!==c&&\"function\"!==c||(r=t,s=t.default);var l,u=\"function\"==typeof s?s.options:s;if(e&&(u.render=e.render,u.staticRenderFns=e.staticRenderFns,u._compiled=!0),n&&(u.functional=!0),o&&(u._scopeId=o),a?(l=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),i&&i.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(a)},u._ssrRegister=l):i&&(l=i),l){var d=u.functional,p=d?u.render:u.beforeCreate;d?(u._injectStyles=l,u.render=function(t,e){return l.call(e),p(t,e)}):u.beforeCreate=p?[].concat(p,l):[l]}return{esModule:r,exports:s,options:u}}},function(t,e,n){\"use strict\";var i={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{staticClass:\"multiselect\",class:{\"multiselect--active\":t.isOpen,\"multiselect--disabled\":t.disabled,\"multiselect--above\":t.isAbove},attrs:{tabindex:t.searchable?-1:t.tabindex},on:{focus:function(e){t.activate()},blur:function(e){!t.searchable&&t.deactivate()},keydown:[function(e){return\"button\"in e||!t._k(e.keyCode,\"down\",40,e.key,[\"Down\",\"ArrowDown\"])?e.target!==e.currentTarget?null:(e.preventDefault(),void t.pointerForward()):null},function(e){return\"button\"in e||!t._k(e.keyCode,\"up\",38,e.key,[\"Up\",\"ArrowUp\"])?e.target!==e.currentTarget?null:(e.preventDefault(),void t.pointerBackward()):null}],keypress:function(e){return\"button\"in e||!t._k(e.keyCode,\"enter\",13,e.key,\"Enter\")||!t._k(e.keyCode,\"tab\",9,e.key,\"Tab\")?(e.stopPropagation(),e.target!==e.currentTarget?null:void t.addPointerElement(e)):null},keyup:function(e){if(!(\"button\"in e)&&t._k(e.keyCode,\"esc\",27,e.key,\"Escape\"))return null;t.deactivate()}}},[t._t(\"caret\",[n(\"div\",{staticClass:\"multiselect__select\",on:{mousedown:function(e){e.preventDefault(),e.stopPropagation(),t.toggle()}}})],{toggle:t.toggle}),t._v(\" \"),t._t(\"clear\",null,{search:t.search}),t._v(\" \"),n(\"div\",{ref:\"tags\",staticClass:\"multiselect__tags\"},[t._t(\"selection\",[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.visibleValues.length>0,expression:\"visibleValues.length > 0\"}],staticClass:\"multiselect__tags-wrap\"},[t._l(t.visibleValues,function(e,i){return[t._t(\"tag\",[n(\"span\",{key:i,staticClass:\"multiselect__tag\"},[n(\"span\",{domProps:{textContent:t._s(t.getOptionLabel(e))}}),t._v(\" \"),n(\"i\",{staticClass:\"multiselect__tag-icon\",attrs:{\"aria-hidden\":\"true\",tabindex:\"1\"},on:{keypress:function(n){if(!(\"button\"in n)&&t._k(n.keyCode,\"enter\",13,n.key,\"Enter\"))return null;n.preventDefault(),t.removeElement(e)},mousedown:function(n){n.preventDefault(),t.removeElement(e)}}})])],{option:e,search:t.search,remove:t.removeElement})]})],2),t._v(\" \"),t.internalValue&&t.internalValue.length>t.limit?[t._t(\"limit\",[n(\"strong\",{staticClass:\"multiselect__strong\",domProps:{textContent:t._s(t.limitText(t.internalValue.length-t.limit))}})])]:t._e()],{search:t.search,remove:t.removeElement,values:t.visibleValues,isOpen:t.isOpen}),t._v(\" \"),n(\"transition\",{attrs:{name:\"multiselect__loading\"}},[t._t(\"loading\",[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.loading,expression:\"loading\"}],staticClass:\"multiselect__spinner\"})])],2),t._v(\" \"),t.searchable?n(\"input\",{ref:\"search\",staticClass:\"multiselect__input\",style:t.inputStyle,attrs:{name:t.name,id:t.id,type:\"text\",autocomplete:\"nope\",placeholder:t.placeholder,disabled:t.disabled,tabindex:t.tabindex},domProps:{value:t.search},on:{input:function(e){t.updateSearch(e.target.value)},focus:function(e){e.preventDefault(),t.activate()},blur:function(e){e.preventDefault(),t.deactivate()},keyup:function(e){if(!(\"button\"in e)&&t._k(e.keyCode,\"esc\",27,e.key,\"Escape\"))return null;t.deactivate()},keydown:[function(e){if(!(\"button\"in e)&&t._k(e.keyCode,\"down\",40,e.key,[\"Down\",\"ArrowDown\"]))return null;e.preventDefault(),t.pointerForward()},function(e){if(!(\"button\"in e)&&t._k(e.keyCode,\"up\",38,e.key,[\"Up\",\"ArrowUp\"]))return null;e.preventDefault(),t.pointerBackward()},function(e){if(!(\"button\"in e)&&t._k(e.keyCode,\"delete\",[8,46],e.key,[\"Backspace\",\"Delete\"]))return null;e.stopPropagation(),t.removeLastElement()}],keypress:function(e){return\"button\"in e||!t._k(e.keyCode,\"enter\",13,e.key,\"Enter\")?(e.preventDefault(),e.stopPropagation(),e.target!==e.currentTarget?null:void t.addPointerElement(e)):null}}}):t._e(),t._v(\" \"),t.isSingleLabelVisible?n(\"span\",{staticClass:\"multiselect__single\",on:{mousedown:function(e){return e.preventDefault(),t.toggle(e)}}},[t._t(\"singleLabel\",[[t._v(t._s(t.currentOptionLabel))]],{option:t.singleValue})],2):t._e(),t._v(\" \"),t.isPlaceholderVisible?n(\"span\",{staticClass:\"multiselect__placeholder\",on:{mousedown:function(e){return e.preventDefault(),t.toggle(e)}}},[t._t(\"placeholder\",[t._v(\"\\n \"+t._s(t.placeholder)+\"\\n \")])],2):t._e()],2),t._v(\" \"),n(\"transition\",{attrs:{name:\"multiselect\"}},[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.isOpen,expression:\"isOpen\"}],ref:\"list\",staticClass:\"multiselect__content-wrapper\",style:{maxHeight:t.optimizedHeight+\"px\"},attrs:{tabindex:\"-1\"},on:{focus:t.activate,mousedown:function(t){t.preventDefault()}}},[n(\"ul\",{staticClass:\"multiselect__content\",style:t.contentStyle},[t._t(\"beforeList\"),t._v(\" \"),t.multiple&&t.max===t.internalValue.length?n(\"li\",[n(\"span\",{staticClass:\"multiselect__option\"},[t._t(\"maxElements\",[t._v(\"Maximum of \"+t._s(t.max)+\" options selected. First remove a selected option to select another.\")])],2)]):t._e(),t._v(\" \"),!t.max||t.internalValue.length<t.max?t._l(t.filteredOptions,function(e,i){return n(\"li\",{key:i,staticClass:\"multiselect__element\"},[e&&(e.$isLabel||e.$isDisabled)?t._e():n(\"span\",{staticClass:\"multiselect__option\",class:t.optionHighlight(i,e),attrs:{\"data-select\":e&&e.isTag?t.tagPlaceholder:t.selectLabelText,\"data-selected\":t.selectedLabelText,\"data-deselect\":t.deselectLabelText},on:{click:function(n){n.stopPropagation(),t.select(e)},mouseenter:function(e){if(e.target!==e.currentTarget)return null;t.pointerSet(i)}}},[t._t(\"option\",[n(\"span\",[t._v(t._s(t.getOptionLabel(e)))])],{option:e,search:t.search})],2),t._v(\" \"),e&&(e.$isLabel||e.$isDisabled)?n(\"span\",{staticClass:\"multiselect__option\",class:t.groupHighlight(i,e),attrs:{\"data-select\":t.groupSelect&&t.selectGroupLabelText,\"data-deselect\":t.groupSelect&&t.deselectGroupLabelText},on:{mouseenter:function(e){if(e.target!==e.currentTarget)return null;t.groupSelect&&t.pointerSet(i)},mousedown:function(n){n.preventDefault(),t.selectGroup(e)}}},[t._t(\"option\",[n(\"span\",[t._v(t._s(t.getOptionLabel(e)))])],{option:e,search:t.search})],2):t._e()])}):t._e(),t._v(\" \"),n(\"li\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.showNoResults&&0===t.filteredOptions.length&&t.search&&!t.loading,expression:\"showNoResults && (filteredOptions.length === 0 && search && !loading)\"}]},[n(\"span\",{staticClass:\"multiselect__option\"},[t._t(\"noResult\",[t._v(\"No elements found. Consider changing the search query.\")],{search:t.search})],2)]),t._v(\" \"),n(\"li\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.showNoOptions&&0===t.options.length&&!t.search&&!t.loading,expression:\"showNoOptions && (options.length === 0 && !search && !loading)\"}]},[n(\"span\",{staticClass:\"multiselect__option\"},[t._t(\"noOptions\",[t._v(\"List is empty.\")])],2)]),t._v(\" \"),t._t(\"afterList\")],2)])])],2)},staticRenderFns:[]};e.a=i}])},function(t,e,n){\"use strict\";n.r(e),\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */e.default={data:function(){return{isFullscreen:this._isFullscreen()}},beforeMount:function(){window.addEventListener(\"resize\",this._onResize)},beforeDestroy:function(){window.removeEventListener(\"resize\",this._onResize)},methods:{_onResize:function(){this.isFullscreen=this._isFullscreen()},_isFullscreen:function(){return window.outerHeight===screen.height}}}},function(t,e,n){\"use strict\";n.r(e),\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */e.default={data:function(){return{isMobile:this._isMobile()}},beforeMount:function(){window.addEventListener(\"resize\",this._onResize)},beforeDestroy:function(){window.removeEventListener(\"resize\",this._onResize)},methods:{_onResize:function(){this.isMobile=this._isMobile()},_isMobile:function(){return document.documentElement.clientWidth<768}}}},function(t,e,n){\"use strict\";n.r(e);var i=n(23),o=n(121),a=n.n(o),r=n(34),s=n.n(r),c={methods:{highlightText:function(t,e){return e.length?t.replace(new RegExp(e,\"gi\"),\"<strong>\".concat(e,\"</strong>\")):t}}},l={name:\"AvatarSelectOption\",components:{Avatar:n(64).default},mixins:[c],props:{desc:{type:String,default:\"\"},displayName:{type:String,required:!0},icon:{type:String,default:\"\"},user:{type:String,default:\"\"},isNoUser:{type:Boolean,default:!1},search:{type:String,default:\"\"}},computed:{highlightedDisplayName:function(){return this.highlightText(s()(this.displayName),this.search)},highlightedDesc:function(){return this.highlightText(s()(this.desc),this.search)}}},u=(n(175),n(0)),d=n(88),p=n.n(d),f=Object(u.a)(l,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"span\",{staticClass:\"option\"},[n(\"Avatar\",{staticClass:\"option__avatar\",attrs:{\"display-name\":t.displayName,user:t.user,\"is-no-user\":t.isNoUser,\"disable-menu\":!0,\"disable-tooltip\":!0}}),t._v(\" \"),n(\"div\",{staticClass:\"option__desc\"},[n(\"span\",{staticClass:\"option__desc--lineone\",domProps:{innerHTML:t._s(t.highlightedDisplayName)}}),t._v(\" \"),\"\"!==t.desc?n(\"span\",{staticClass:\"option__desc--linetwo\",domProps:{innerHTML:t._s(t.highlightedDesc)}}):t._e()]),t._v(\" \"),\"\"!==t.icon?n(\"span\",{staticClass:\"icon option__icon\",class:t.icon}):t._e()],1)},[],!1,null,\"30d8da34\",null);\"function\"==typeof p.a&&p()(f);var h=f.exports,A={name:\"EllipsisedOption\",mixins:[c],props:{option:{type:[String,Object],required:!0,default:\"\"},label:{type:String,default:\"\"},search:{type:String,default:\"\"}},computed:{name:function(){return this.$parent.getOptionLabel(this.option)},needsTruncate:function(){return this.name&&this.name.length>=10},part1:function(){if(this.needsTruncate){var t=Math.min(Math.floor(this.name.length/2),10);return this.name.substr(0,this.name.length-t)}return this.name},part2:function(){if(this.needsTruncate){var t=Math.min(Math.floor(this.name.length/2),10);return this.name.substr(this.name.length-t)}return\"\"},highlightedPart1:function(){return this.highlightText(s()(this.part1),this.search)},highlightedPart2:function(){return this.highlightText(s()(this.part2),this.search)}}},v=(n(177),Object(u.a)(A,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{staticClass:\"name-parts\",attrs:{title:t.name}},[n(\"span\",{staticClass:\"name-parts__first\",domProps:{innerHTML:t._s(t.highlightedPart1)}}),t._v(\" \"),t.part2?n(\"span\",{staticClass:\"name-parts__last\",domProps:{innerHTML:t._s(t.highlightedPart2)}}):t._e()])},[],!1,null,\"c4325954\",null).exports),m=n(6),g=n(122),b={name:\"Multiselect\",components:{AvatarSelectOption:h,EllipsisedOption:v,VueMultiselect:n.n(g).a},directives:{tooltip:m.default},inheritAttrs:!1,props:{value:{default:function(){return[]}},multiple:{type:Boolean,default:!1},limit:{type:Number,default:99999},label:{type:String,default:\"\"},trackBy:{type:String,default:\"\"},userSelect:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},autoLimit:{type:Boolean,default:!0},tagWidth:{type:Number,default:150,validator:function(t){return t>0}}},data:function(){return{elWidth:0}},computed:{maxOptions:function(){if(this.autoLimit&&this.elWidth>0&&0!==this.tagWidth){var t=Math.floor(this.elWidth/this.tagWidth);return t>0?t:1}return this.limit?this.limit:9999},limitString:function(){return\"+\".concat(this.value.length-this.maxOptions)}},watch:{value:function(){this.updateWidth()}},mounted:function(){this.updateWidth(),window.addEventListener(\"resize\",this.updateWidth)},beforeDestroy:function(){window.removeEventListener(\"resize\",this.updateWidth)},methods:{formatLimitTitle:function(t){var e=this;if(Array.isArray(t)&&t.length>0){var n=t;return\"object\"===a()(t[0])&&(n=t.map(function(t){return t[e.label]})),n.slice(this.maxOptions).join(\", \")}return\"\"},updateWidth:function(){this.$el&&(this.elWidth=this.$el.querySelector(\".multiselect__tags-wrap\").offsetWidth-10)}}},y=n(89),x=n.n(y),w=Object(u.a)(b,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"VueMultiselect\",t._g(t._b({class:[{\"icon-loading-small\":t.loading},t.multiple?\"multiselect--multiple\":\"multiselect--single\"],attrs:{value:t.value,limit:t.maxOptions,\"close-on-select\":!t.multiple,multiple:t.multiple,label:t.label,\"track-by\":t.trackBy,\"tag-placeholder\":\"create\"},on:{\"update:value\":function(e){return t.$emit(\"update:value\",t.value)}},scopedSlots:t._u([{key:\"option\",fn:function(e){return[t.userSelect&&!t.$scopedSlots.option?n(\"AvatarSelectOption\",t._b({attrs:{search:e.search}},\"AvatarSelectOption\",e.option,!1)):t.$scopedSlots.option?t._t(\"option\",null,null,e):n(\"EllipsisedOption\",{attrs:{option:e.option,search:e.search,label:t.label}})]}},t.multiple?{key:\"limit\",fn:function(){return[n(\"span\",{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:t.formatLimitTitle(t.value),expression:\"formatLimitTitle(value)\",modifiers:{auto:!0}}],staticClass:\"multiselect__limit\"},[t._v(\"\\n\\t\\t\\t\"+t._s(t.limitString)+\"\\n\\t\\t\")])]},proxy:!0}:null,t._l(t.$scopedSlots,function(e,n){return{key:n,fn:function(e){return[t._t(n,null,null,e)]}}})],null,!0)},\"VueMultiselect\",t.$attrs,!1),t.$listeners))},[],!1,null,null,null);\"function\"==typeof x.a&&x()(w);var _=w.exports;n(179);n.d(e,\"Multiselect\",function(){return _}),\n/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nObject(i.a)(_);e.default=_},function(e,n,i){\"use strict\";i.r(n);var o=i(23),a=i(40),r=i.n(a),s=i(30),c=i(65),l=i(6);\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nfunction u(t,e){var n,i,o,a=e;this.start=function(){o=!0,i=new Date,n=setTimeout(t,a)},this.pause=function(){o=!1,clearTimeout(n),a-=new Date-i},this.clear=function(){o=!1,clearTimeout(n),a=0},this.getTimeLeft=function(){return o&&(this.pause(),this.start()),a},this.getStateRunning=function(){return o},this.start()}var d={name:\"Modal\",components:{Actions:s.default,ActionButton:c.default},directives:{tooltip:l.default},props:{title:{type:String,default:\"\"},hasPrevious:{type:Boolean,default:!1},hasNext:{type:Boolean,default:!1},outTransition:{type:Boolean,default:!1},enableSlideshow:{type:Boolean,default:!1},clearViewDelay:{type:Number,default:5e3},slideshowDelay:{type:Number,default:3e3},slideshowPaused:{type:Boolean,default:!1},enableSwipe:{type:Boolean,default:!0},spreadNavigation:{type:Boolean,default:!1},size:{type:String,default:\"normal\",validator:function(t){return-1!==[\"normal\",\"large\",\"full\"].indexOf(t)}},canClose:{type:Boolean,default:!0}},data:function(){return{mc:null,showModal:!1,clearView:!1,clearViewTimeout:null,playing:!1,slideshowTimeout:null}},computed:{modalTransitionName:function(){return\"modal-\".concat(this.outTransition?\"out\":\"in\")},playPauseTitle:function(){return this.playing?t(\"core\",\"Pause slideshow\"):t(\"core\",\"Start slideshow\")}},watch:{slideshowPaused:function(t){this.slideshowTimeout&&(t?this.slideshowTimeout.pause():this.slideshowTimeout.start())}},beforeMount:function(){window.addEventListener(\"keydown\",this.handleKeydown)},beforeDestroy:function(){window.removeEventListener(\"keydown\",this.handleKeydown)},mounted:function(){var t=this;this.showModal=!0,this.handleMouseMove(),this.mc=new r.a(this.$refs.mask),this.mc.on(\"swipeleft swiperight\",function(e){t.handleSwipe(e)}),document.body.insertBefore(this.$el,document.body.lastChild)},unmounted:function(){this.mc.off(\"swipeleft swiperight\"),this.mc.destroy()},methods:{previous:function(t){this.hasPrevious&&(t&&this.resetSlideshow(),this.$emit(\"previous\",t))},next:function(t){this.hasNext&&(t&&this.resetSlideshow(),this.$emit(\"next\",t))},close:function(t){var e=this;this.canClose&&(this.showModal=!1,setTimeout(function(){e.$emit(\"close\",t)},300))},handleKeydown:function(t){switch(t.keyCode){case 37:this.previous(t);break;case 13:case 39:this.next(t);break;case 27:this.close(t)}},handleSwipe:function(t){this.enableSwipe&&(\"swipeleft\"===t.type?this.next(t):\"swiperight\"===t.type&&this.previous(t))},handleMouseMove:function(){var t=this;this.clearViewDelay>0&&(this.clearView=!1,clearTimeout(this.clearViewTimeout),this.clearViewTimeout=setTimeout(function(){t.clearView=!0},this.clearViewDelay))},togglePlayPause:function(){this.playing=!this.playing,this.playing?this.handleSlideshow():this.clearSlideshowTimeout()},resetSlideshow:function(){this.playing=!this.playing,this.clearSlideshowTimeout(),this.$nextTick(function(){this.togglePlayPause()})},handleSlideshow:function(){var t=this;this.playing=!0,this.hasNext?this.slideshowTimeout=new u(function(){t.next(),t.handleSlideshow()},this.slideshowDelay):(this.playing=!1,this.clearSlideshowTimeout())},clearSlideshowTimeout:function(){this.slideshowTimeout&&this.slideshowTimeout.clear()}}},p=(i(173),i(0)),f=i(87),h=i.n(f),A=Object(p.a)(d,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"transition\",{attrs:{name:\"fade\"}},[n(\"div\",{ref:\"mask\",staticClass:\"modal-mask\",on:{click:t.handleMouseMove,mousemove:t.handleMouseMove,touchmove:t.handleMouseMove}},[n(\"transition\",{attrs:{name:\"fade-visibility\"}},[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:!t.clearView,expression:\"!clearView\"}],staticClass:\"modal-header\",class:{invisible:t.clearView}},[\"\"!==t.title.trim()?n(\"div\",{staticClass:\"modal-title\"},[t._v(\"\\n\\t\\t\\t\\t\\t\"+t._s(t.title)+\"\\n\\t\\t\\t\\t\")]):t._e(),t._v(\" \"),n(\"div\",{staticClass:\"icons-menu\"},[n(\"Actions\",{staticClass:\"header-actions\"},[t._t(\"actions\")],2),t._v(\" \"),t.hasNext&&t.enableSlideshow?n(\"button\",{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:t.playPauseTitle,expression:\"playPauseTitle\",modifiers:{auto:!0}}],staticClass:\"play-pause\",class:{\"play-pause--paused\":t.slideshowPaused},on:{click:t.togglePlayPause}},[n(\"div\",{class:[t.playing?\"icon-pause\":\"icon-play\"]},[n(\"span\",{staticClass:\"hidden-visually\"},[t._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"+t._s(t.playPauseTitle)+\"\\n\\t\\t\\t\\t\\t\\t\\t\")])]),t._v(\" \"),t.playing?n(\"svg\",{staticClass:\"progress-ring\",attrs:{height:\"50\",width:\"50\"}},[n(\"circle\",{staticClass:\"progress-ring__circle\",attrs:{stroke:\"white\",\"stroke-width\":\"2\",fill:\"transparent\",r:\"15\",cx:\"25\",cy:\"25\"}})]):t._e()]):t._e(),t._v(\" \"),t.canClose?n(\"Actions\",{staticClass:\"header-close\"},[n(\"ActionButton\",{attrs:{icon:\"icon-close\"},on:{click:t.close}},[t._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+t._s(t.t(\"core\",\"Close\"))+\"\\n\\t\\t\\t\\t\\t\\t\")])],1):t._e()],1)])]),t._v(\" \"),n(\"transition\",{attrs:{name:t.modalTransitionName}},[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.showModal,expression:\"showModal\"}],staticClass:\"modal-wrapper\",class:[\"modal-wrapper--\"+t.size,t.spreadNavigation?\"modal-wrapper--spread-navigation\":\"\"],on:{click:function(e){return e.target!==e.currentTarget?null:t.close(e)}}},[n(\"transition\",{attrs:{name:\"fade-visibility\"}},[n(\"a\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.hasPrevious&&!t.clearView,expression:\"hasPrevious && !clearView\"}],staticClass:\"prev\",class:{invisible:t.clearView||!t.hasPrevious},on:{click:t.previous}},[n(\"div\",{staticClass:\"icon icon-previous\"},[n(\"span\",{staticClass:\"hidden-visually\"},[t._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"+t._s(t.t(\"core\",\"Previous\"))+\"\\n\\t\\t\\t\\t\\t\\t\\t\")])])])]),t._v(\" \"),n(\"div\",{staticClass:\"modal-container\"},[t._t(\"default\")],2),t._v(\" \"),n(\"transition\",{attrs:{name:\"fade-visibility\"}},[n(\"a\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.hasNext&&!t.clearView,expression:\"hasNext && !clearView\"}],staticClass:\"next\",class:{invisible:t.clearView||!t.hasNext},on:{click:t.next}},[n(\"div\",{staticClass:\"icon icon-next\"},[n(\"span\",{staticClass:\"hidden-visually\"},[t._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"+t._s(t.t(\"core\",\"Next\"))+\"\\n\\t\\t\\t\\t\\t\\t\\t\")])])])])],1)])],1)])},[],!1,null,\"9c792ef2\",null);\"function\"==typeof h.a&&h()(A);var v=A.exports;i.d(n,\"Modal\",function(){return v}),\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nObject(o.a)(v);n.default=v},function(t,e,n){\"use strict\";n.r(e);var i=n(7),o=n(17),a={name:\"ActionCheckbox\",mixins:[i.a],props:{id:{type:String,default:function(){return\"action-\"+Object(o.a)()},validator:function(t){return\"\"!==t.trim()}},checked:{type:Boolean,default:!1},value:{type:[String,Number],default:\"\"},disabled:{type:Boolean,default:!1}},computed:{isFocusable:function(){return!this.disabled}},methods:{checkInput:function(t){this.$refs.label.click()},onChange:function(t){this.$emit(\"change\",t),this.$refs.checkbox.checked?this.$emit(\"check\",!0):this.$emit(\"uncheck\",!0),this.$emit(\"update:checked\",this.$refs.checkbox.checked)}}},r=(n(145),n(0)),s=n(83),c=n.n(s),l=Object(r.a)(a,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"li\",{class:{\"action--disabled\":t.disabled}},[n(\"span\",{staticClass:\"action-checkbox\"},[n(\"input\",{ref:\"checkbox\",staticClass:\"checkbox action-checkbox__checkbox\",class:{focusable:t.isFocusable},attrs:{id:t.id,disabled:t.disabled,type:\"checkbox\"},domProps:{checked:t.checked,value:t.value},on:{keydown:function(e){return!e.type.indexOf(\"key\")&&t._k(e.keyCode,\"enter\",13,e.key,\"Enter\")?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.checkInput(e))},change:t.onChange}}),t._v(\" \"),n(\"label\",{ref:\"label\",staticClass:\"action-checkbox__label\",attrs:{for:t.id}},[t._v(t._s(t.text))]),t._v(\" \"),t._e()],2)])},[],!1,null,\"f874e42c\",null);\"function\"==typeof c.a&&c()(l);var u=l.exports;n.d(e,\"ActionCheckbox\",function(){return u});\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */e.default=u},function(t,e,n){\"use strict\";n.r(e);var i=n(7),o=n(17),a={name:\"ActionInput\",components:{DatetimePicker:n(66).default},mixins:[i.a],props:{id:{type:String,default:function(){return\"action-\"+Object(o.a)()},validator:function(t){return\"\"!==t.trim()}},icon:{type:String,default:\"\",required:!0},type:{type:String,default:\"text\",validator:function(t){return[\"date\",\"datetime-local\",\"month\",\"number\",\"password\",\"search\",\"tel\",\"text\",\"time\",\"url\",\"week\"].indexOf(t)>-1}},value:{type:String,default:\"\"},disabled:{type:Boolean,default:!1}},computed:{isIconUrl:function(){try{return new URL(this.icon)}catch(t){return!1}},isDatePickerType:function(){switch(this.type){case\"date\":case\"month\":case\"time\":return this.type;case\"datetime-local\":return\"datetime\"}return!1},isFocusable:function(){return!this.disabled}},methods:{onInput:function(t){this.$emit(\"input\",t),this.$emit(\"update:value\",t.target?t.target.value:t)},onSubmit:function(t){if(t.preventDefault(),t.stopPropagation(),this.disabled)return!1;this.$emit(\"submit\",t)},onChange:function(t){this.$emit(\"change\",t)}}},r=(n(147),n(0)),s=n(84),c=n.n(s),l=Object(r.a)(a,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"li\",{class:{\"action--disabled\":t.disabled}},[n(\"span\",{staticClass:\"action-input\",class:{\"action-input--picker\":t.isDatePickerType,\"action-input-picker--disabled\":t.disabled}},[n(\"span\",{staticClass:\"action-input__icon\",class:[t.isIconUrl?\"action-input__icon--url\":t.icon],style:{backgroundImage:t.isIconUrl?\"url(\"+t.icon+\")\":null}}),t._v(\" \"),n(\"form\",{ref:\"form\",staticClass:\"action-input__form\",attrs:{disabled:t.disabled},on:{submit:function(e){return e.preventDefault(),t.onSubmit(e)}}},[t.isDatePickerType?n(\"DatetimePicker\",t._b({staticClass:\"action-input__picker\",attrs:{value:t.value,placeholder:t.text,disabled:t.disabled,type:t.isDatePickerType,\"input-class\":[\"mx-input\",{focusable:t.isFocusable}]},on:{input:t.onInput,change:t.onChange}},\"DatetimePicker\",t.$attrs,!1)):[n(\"input\",{staticClass:\"action-input__submit\",attrs:{id:t.id,type:\"submit\"}}),t._v(\" \"),n(\"input\",t._b({staticClass:\"action-input__input\",class:{focusable:t.isFocusable},attrs:{type:t.type,placeholder:t.text,disabled:t.disabled},domProps:{value:t.value},on:{input:t.onInput,change:t.onChange}},\"input\",t.$attrs,!1)),t._v(\" \"),n(\"label\",{directives:[{name:\"show\",rawName:\"v-show\",value:!t.disabled,expression:\"!disabled\"}],staticClass:\"action-input__label\",attrs:{for:t.id}})]],2)])])},[],!1,null,\"44d356e8\",null);\"function\"==typeof c.a&&c()(l);var u=l.exports;n.d(e,\"ActionInput\",function(){return u});\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */e.default=u},function(t,e,n){\"use strict\";n.r(e);var i={name:\"ActionLink\",mixins:[n(14).a],props:{href:{type:String,default:\"#\",required:!0,validator:function(t){try{return new URL(t)}catch(e){return t.startsWith(\"#\")||t.startsWith(\"/\")}}},download:{type:String,default:\"\"},target:{type:String,default:\"_self\",validator:function(t){return[\"_blank\",\"_self\",\"_parent\",\"_top\"].indexOf(t)>-1}}}},o=(n(149),n(0)),a=n(85),r=n.n(a),s=Object(o.a)(i,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"li\",[n(\"a\",{staticClass:\"action-link focusable\",attrs:{download:t.download,href:t.href,target:t.target,rel:\"noreferrer noopener\"},on:{click:t.onClick}},[n(\"span\",{staticClass:\"action-link__icon\",class:[t.isIconUrl?\"action-link__icon--url\":t.icon],style:{backgroundImage:t.isIconUrl?\"url(\"+t.icon+\")\":null}}),t._v(\" \"),t.title?n(\"p\",[n(\"strong\",{staticClass:\"action-link__title\"},[t._v(\"\\n\\t\\t\\t\\t\"+t._s(t.title)+\"\\n\\t\\t\\t\")]),t._v(\" \"),n(\"br\"),t._v(\" \"),n(\"span\",{staticClass:\"action-link__longtext\",domProps:{textContent:t._s(t.text)}})]):t.isLongText?n(\"p\",{staticClass:\"action-link__longtext\",domProps:{textContent:t._s(t.text)}}):n(\"span\",{staticClass:\"action-link__text\"},[t._v(t._s(t.text))]),t._v(\" \"),t._e()],2)])},[],!1,null,\"f9c0ebfe\",null);\"function\"==typeof r.a&&r()(s);var c=s.exports;n.d(e,\"ActionLink\",function(){return c});\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */e.default=c},function(t,e,n){\"use strict\";n.r(e);var i={name:\"ActionRouter\",mixins:[n(14).a],props:{to:{type:[String,Object],default:\"\",required:!0},exact:{type:Boolean,default:!1}}},o=(n(151),n(0)),a=Object(o.a)(i,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"li\",[n(\"router-link\",{staticClass:\"action-router focusable\",attrs:{to:t.to,exact:t.exact,rel:\"noreferrer noopener\"}},[n(\"span\",{staticClass:\"action-router__icon\",class:[t.isIconUrl?\"action-router__icon--url\":t.icon],style:{backgroundImage:t.isIconUrl?\"url(\"+t.icon+\")\":null}}),t._v(\" \"),t.title?n(\"p\",[n(\"strong\",{staticClass:\"action-router__title\"},[t._v(\"\\n\\t\\t\\t\\t\"+t._s(t.title)+\"\\n\\t\\t\\t\")]),t._v(\" \"),n(\"br\"),t._v(\" \"),n(\"span\",{staticClass:\"action-router__longtext\",domProps:{textContent:t._s(t.text)}})]):t.isLongText?n(\"p\",{staticClass:\"action-router__longtext\",domProps:{textContent:t._s(t.text)}}):n(\"span\",{staticClass:\"action-router__text\"},[t._v(t._s(t.text))]),t._v(\" \"),t._e()],2)],1)},[],!1,null,\"3bf6846c\",null).exports;n.d(e,\"ActionRouter\",function(){return a});\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */e.default=a},function(t,e,n){\"use strict\";n.r(e);var i={name:\"ActionText\",mixins:[n(14).a]},o=(n(153),n(0)),a=Object(o.a)(i,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"li\",[n(\"span\",{staticClass:\"action-text\"},[n(\"span\",{staticClass:\"action-text__icon\",class:[t.isIconUrl?\"action-text__icon--url\":t.icon],style:{backgroundImage:t.isIconUrl?\"url(\"+t.icon+\")\":null}}),t._v(\" \"),t.title?n(\"p\",[n(\"strong\",{staticClass:\"action-text__title\"},[t._v(\"\\n\\t\\t\\t\\t\"+t._s(t.title)+\"\\n\\t\\t\\t\")]),t._v(\" \"),n(\"br\"),t._v(\" \"),n(\"span\",{staticClass:\"action-text__longtext\",domProps:{textContent:t._s(t.text)}})]):t.isLongText?n(\"p\",{staticClass:\"action-text__longtext\",domProps:{textContent:t._s(t.text)}}):n(\"span\",{staticClass:\"action-text__text\"},[t._v(t._s(t.text))]),t._v(\" \"),t._e()],2)])},[],!1,null,\"b4603aaa\",null).exports;n.d(e,\"ActionText\",function(){return a});\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */e.default=a},function(t,e,n){\"use strict\";n.r(e);var i=n(14),o=n(17),a={name:\"ActionTextEditable\",mixins:[i.a],props:{id:{type:String,default:function(){return\"action-\"+Object(o.a)()},validator:function(t){return\"\"!==t.trim()}},disabled:{type:Boolean,default:!1},value:{type:String,default:\"\"}},computed:{isFocusable:function(){return!this.disabled}},methods:{onInput:function(t){this.$emit(\"input\",t),this.$emit(\"update:value\",t.target.value)},onSubmit:function(t){if(t.preventDefault(),t.stopPropagation(),this.disabled)return!1;this.$emit(\"submit\",t)}}},r=(n(155),n(0)),s=n(86),c=n.n(s),l=Object(r.a)(a,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"li\",{class:{\"action--disabled\":t.disabled}},[n(\"span\",{staticClass:\"action-text-editable\"},[n(\"span\",{staticClass:\"action-text-editable__icon\",class:[t.isIconUrl?\"action-text-editable__icon--url\":t.icon],style:{backgroundImage:t.isIconUrl?\"url(\"+t.icon+\")\":null}}),t._v(\" \"),n(\"form\",{ref:\"form\",staticClass:\"action-text-editable__form\",attrs:{disabled:t.disabled},on:{submit:function(e){return e.preventDefault(),t.onSubmit(e)}}},[n(\"input\",{staticClass:\"action-text-editable__submit\",attrs:{id:t.id,type:\"submit\"}}),t._v(\" \"),t.title?n(\"strong\",{staticClass:\"action-text__title\"},[t._v(\"\\n\\t\\t\\t\\t\"+t._s(t.title)+\"\\n\\t\\t\\t\")]):t._e(),t._v(\" \"),n(\"textarea\",t._b({class:[\"action-text-editable__textarea\",{focusable:t.isFocusable}],attrs:{disabled:t.disabled},domProps:{value:t.value},on:{input:t.onInput}},\"textarea\",t.$attrs,!1)),t._v(\" \"),n(\"label\",{directives:[{name:\"show\",rawName:\"v-show\",value:!t.disabled,expression:\"!disabled\"}],staticClass:\"action-text-editable__label\",attrs:{for:t.id}})])])])},[],!1,null,\"43b509b7\",null);\"function\"==typeof c.a&&c()(l);var u=l.exports;n.d(e,\"ActionTextEditable\",function(){return u});\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */e.default=u},function(t,e,n){\"use strict\";n.r(e);var i=n(40),o=n.n(i),a={name:\"AppContent\",components:{AppNavigationToggle:n(82).default},data:function(){return{opened:!1}},mounted:function(){var t=this;this.mc=new o.a(this.$el,{cssProps:{userSelect:\"text\"}}),this.mc.on(\"swipeleft swiperight\",function(e){t.handleSwipe(e)})},unmounted:function(){this.mc.off(\"swipeleft swiperight\"),this.mc.destroy()},methods:{toggleNavigation:function(t){this.opened=t||!this.opened,this.opened?document.body.classList.add(\"nav-open\"):document.body.classList.remove(\"nav-open\")},handleSwipe:function(t){var e=t.srcEvent.pageX-t.deltaX,n=Math.abs(t.deltaX)>70;n&&e<40?this.toggleNavigation(!0):this.opened&&n&&e<340&&this.toggleNavigation(!1)}}},r=(n(157),n(0)),s=Object(r.a)(a,function(){var t=this.$createElement,e=this._self._c||t;return e(\"div\",{staticClass:\"no-snapper\",style:this.opened?\"transform: translateX(300px)\":\"\",attrs:{id:\"app-content\"}},[e(\"AppNavigationToggle\",{attrs:{\"aria-expanded\":this.opened,\"aria-controls\":\"app-navigation\"},on:{click:this.toggleNavigation}}),this._v(\" \"),this._t(\"default\")],2)},[],!1,null,\"0fe2f738\",null).exports;n.d(e,\"AppContent\",function(){return s});\n/*\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */e.default=s},function(t,e,n){\"use strict\";n.r(e);var i={name:\"AppContentDetails\"},o=n(0),a=Object(o.a)(i,function(){var t=this.$createElement;return(this._self._c||t)(\"div\",{staticClass:\"app-content-details\"},[this._t(\"default\")],2)},[],!1,null,null,null).exports;n.d(e,\"AppContentDetails\",function(){return a});\n/*\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */e.default=a},function(t,e,n){\"use strict\";n.r(e);var i={name:\"AppContentList\",props:{selection:{type:Boolean,default:!1},showDetails:{type:Boolean,default:!1}}},o=n(0),a=Object(o.a)(i,function(){var t=this.$createElement;return(this._self._c||t)(\"div\",{staticClass:\"app-content-list\",class:{selection:this.selection,showdetails:this.showDetails}},[this._t(\"default\")],2)},[],!1,null,null,null).exports;n.d(e,\"AppContentList\",function(){return a});\n/*\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */e.default=a},function(t,e,n){\"use strict\";n.r(e);var i={name:\"AppNavigation\"},o=(n(159),n(0)),a=Object(o.a)(i,function(){var t=this.$createElement;return(this._self._c||t)(\"div\",{attrs:{id:\"app-navigation\"}},[this._t(\"default\")],2)},[],!1,null,null,null).exports;n.d(e,\"AppNavigation\",function(){return a});\n/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */e.default=a},function(t,e,n){\"use strict\";n.r(e);var i={name:\"AppNavigationCaption\",props:{text:{type:String,required:!0}}},o=(n(161),n(0)),a=Object(o.a)(i,function(){var t=this.$createElement;return(this._self._c||t)(\"li\",{staticClass:\"app-navigation-caption--item\"},[this._v(\"\\n\\t\"+this._s(this.text)+\"\\n\")])},[],!1,null,\"9639e4a4\",null).exports;n.d(e,\"AppNavigationCaption\",function(){return a});e.default=a},function(t,e,n){\"use strict\";n.r(e);var i=n(24),o=n(13),a=n.n(o),r=n(67),s={name:\"AppNavigationItem\",components:{PopoverMenu:i.PopoverMenu,AppNavigationCounter:r.AppNavigationCounter},directives:{ClickOutside:a.a},props:{item:{type:Object,required:!0},open:{type:Boolean,default:!1},menuOpen:{type:Boolean,default:!1}},data:function(){return{opened:this.open,openedMenu:this.menuOpen}},computed:{collapsible:function(){return this.item.collapsible&&this.item.children&&this.item.children.length>0},simpleAction:function(){return this.collapsible&&!this.item.action?this.toggleCollapse:this.item.action}},watch:{open:function(t){this.opened=t},menuOpen:function(t){this.openedMenu=t}},mounted:function(){this.popupItem=this.$el},methods:{hideMenu:function(){this.openedMenu=!1,this.$emit(\"update:menuOpen\",this.openedMenu)},toggleMenu:function(){this.openedMenu=!this.openedMenu,this.$emit(\"update:menuOpen\",this.openedMenu)},toggleCollapse:function(){this.opened=!this.opened,this.$emit(\"update:open\",this.opened)},callPreventStop:function(t,e){t&&(e.preventDefault(),e.stopPropagation(),t())},cancelEdit:function(t){Array.isArray(this.item.classes)&&(this.item.classes=this.item.classes.filter(function(t){return\"editing\"!==t})),this.item.edit.reset(t)},navElement:function(t){if(t.router){var e=t.router.exact;return void 0===t.router.exact&&(e=!0),{is:\"router-link\",tag:\"li\",to:t.router,exact:e}}return{is:\"li\"}}}},c=n(0),l=Object(c.a)(s,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"nav-element\",t._b({class:[{\"icon-loading-small\":t.item.loading,open:t.opened,collapsible:t.collapsible},t.item.classes],attrs:{id:t.item.id,title:t.item.title}},\"nav-element\",t.navElement(t.item),!1),[t.item.bullet?n(\"div\",{staticClass:\"app-navigation-entry-bullet\",style:{backgroundColor:t.item.bullet}}):t._e(),t._v(\" \"),t.collapsible?n(\"button\",{staticClass:\"collapse\",on:{click:function(e){return e.preventDefault(),e.stopPropagation(),t.toggleCollapse(e)}}}):t._e(),t._v(\" \"),n(\"a\",{class:t.item.icon,attrs:{href:t.item.href?t.item.href:\"#\"},on:{click:function(e){return t.callPreventStop(t.simpleAction,e)}}},[t.item.iconUrl?n(\"img\",{attrs:{alt:t.item.text,src:t.item.iconUrl}}):t._e(),t._v(\"\\n\\t\\t\"+t._s(t.item.text)+\"\\n\\t\")]),t._v(\" \"),t.item.utils?n(\"div\",{staticClass:\"app-navigation-entry-utils\"},[n(\"ul\",[t.item.utils.counter?n(\"AppNavigationCounter\",{attrs:{highlighted:!0===t.item.utils.counter_highlighted}},[t._v(\"\\n\\t\\t\\t\\t\"+t._s(t.item.utils.counter)+\"\\n\\t\\t\\t\")]):t._e(),t._v(\" \"),t.item.utils.actions&&1===t.item.utils.actions.length?n(\"li\",{staticClass:\"app-navigation-entry-utils-menu-button\"},[n(\"button\",{class:t.item.utils.actions[0].icon,attrs:{title:t.item.utils.actions[0].text},on:{click:t.item.utils.actions[0].action}})]):t.item.utils.actions&&t.item.utils.actions.length>1?n(\"li\",{staticClass:\"app-navigation-entry-utils-menu-button\"},[n(\"button\",{directives:[{name:\"click-outside\",rawName:\"v-click-outside\",value:t.hideMenu,expression:\"hideMenu\"}],on:{click:t.toggleMenu}})]):t._e()],1)]):t._e(),t._v(\" \"),t.item.utils&&t.item.utils.actions&&t.item.utils.actions.length>1?n(\"div\",{staticClass:\"app-navigation-entry-menu\",class:{open:t.openedMenu}},[n(\"PopoverMenu\",{attrs:{menu:t.item.utils.actions}})],1):t._e(),t._v(\" \"),t.item.undo?n(\"div\",{staticClass:\"app-navigation-entry-deleted\"},[n(\"div\",{staticClass:\"app-navigation-entry-deleted-description\"},[t._v(\"\\n\\t\\t\\t\"+t._s(t.item.undo.text)+\"\\n\\t\\t\")]),t._v(\" \"),n(\"button\",{staticClass:\"app-navigation-entry-deleted-button icon-history\",attrs:{title:t.t(\"settings\",\"Undo\")}})]):t._e(),t._v(\" \"),t.item.edit?n(\"div\",{staticClass:\"app-navigation-entry-edit\"},[n(\"form\",{on:{submit:function(e){return e.preventDefault(),e.stopPropagation(),t.item.edit.action(e)}}},[n(\"input\",{attrs:{placeholder:t.item.edit.text,type:\"text\"}}),t._v(\" \"),n(\"input\",{staticClass:\"icon-confirm\",attrs:{type:\"submit\",value:\"\"}}),t._v(\" \"),n(\"input\",{staticClass:\"icon-close\",attrs:{type:\"submit\",value:\"\"},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.cancelEdit(e)}}})])]):t._e(),t._v(\" \"),t.item.children?n(\"ul\",t._l(t.item.children,function(t,e){return n(\"app-navigation-item\",{key:e,attrs:{item:t}})}),1):t._e()])},[],!1,null,null,null).exports;n.d(e,\"AppNavigationItem\",function(){return l});\n/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */e.default=l},function(t,e,n){\"use strict\";n.r(e);var i={props:{buttonId:{type:String,required:!1,default:\"\"},buttonClass:{type:[String,Array,Object],required:!1,default:\"\"},disabled:{type:Boolean,required:!1,default:!1},text:{type:String,required:!0}}},o=n(0),a=Object(o.a)(i,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{staticClass:\"app-navigation-new\"},[n(\"button\",{class:t.buttonClass,attrs:{id:t.buttonId,type:\"button\",disabled:t.disabled},on:{click:function(e){return t.$emit(\"click\")}}},[t._v(\"\\n\\t\\t\"+t._s(t.text)+\"\\n\\t\")])])},[],!1,null,null,null).exports;n.d(e,\"AppNavigationNew\",function(){return a});\n/*\n * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */e.default=a},function(e,n,i){\"use strict\";i.r(n);var o=i(13),a={directives:{ClickOutside:i.n(o).a},props:{title:{type:String,required:!1,default:t(\"core\",\"Settings\")}},data:function(){return{open:!1}},methods:{toggleMenu:function(){this.open=!this.open},closeMenu:function(){this.open=!1}}},r=(i(163),i(0)),s=Object(r.a)(a,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{directives:[{name:\"click-outside\",rawName:\"v-click-outside\",value:t.closeMenu,expression:\"closeMenu\"}],class:{open:t.open},attrs:{id:\"app-settings\"}},[n(\"div\",{attrs:{id:\"app-settings-header\"}},[n(\"button\",{staticClass:\"settings-button\",on:{click:t.toggleMenu}},[t._v(\"\\n\\t\\t\\t\"+t._s(t.title)+\"\\n\\t\\t\")])]),t._v(\" \"),n(\"transition\",{attrs:{name:\"slide-up\"}},[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.open,expression:\"open\"}],attrs:{id:\"app-settings-content\"}},[t._t(\"default\")],2)])],1)},[],!1,null,\"7f13ea43\",null).exports;i.d(n,\"AppNavigationSettings\",function(){return s});\n/*\n * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */n.default=s},function(t,e,n){\"use strict\";n.r(e);var i={name:\"AppNavigationSpacer\"},o=(n(165),n(0)),a=Object(o.a)(i,function(){var t=this.$createElement;return(this._self._c||t)(\"li\",{staticClass:\"app-navigation-spacer\"})},[],!1,null,\"18241e10\",null).exports;n.d(e,\"AppNavigationSpacer\",function(){return a});\n/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */e.default=a},function(t,e,n){\"use strict\";n.r(e);var i=n(3),o=n.n(i),a=n(30),r=function(t){return t&&\"string\"==typeof t&&\"\"!==t.trim()&&-1===t.indexOf(\" \")},s={name:\"AppSidebar\",components:{Actions:a.default},props:{active:{type:String,default:\"\"},title:{type:String,default:\"\",required:!0},subtitle:{type:String,default:\"\"},background:{type:String,default:\"\"},starred:{type:Boolean,default:null},starLoading:{type:Boolean,default:!1},compact:{type:Boolean,default:!1}},data:function(){return{tabs:[],activeTab:\"\",isStarred:this.starred}},computed:{canStar:function(){return null!==this.isStarred},hasFigure:function(){return this.$slots.header||this.background},hasMultipleTabs:function(){return this.tabs.length>1},hasFigureClickListener:function(){return this.$listeners[\"figure-click\"]},currentTabIndex:function(){var t=this;return this.tabs.findIndex(function(e){return e.id===t.activeTab})}},watch:{active:function(t){t!==this.activeTab&&this.updateActive()},starred:function(){this.isStarred=this.starred}},mounted:function(){this.updateTabs()},methods:{closeSidebar:function(t){this.$emit(\"close\",t)},onFigureClick:function(t){this.$emit(\"figure-click\",t)},setActive:function(t){var e=t.target.closest(\"a\").dataset.id;this.activeTab=e,this.$emit(\"update:active\",e)},focusPreviousTab:function(){this.currentTabIndex>0&&(this.activeTab=this.tabs[this.currentTabIndex-1].id,this.$emit(\"update:active\",this.activeTab)),this.focusActiveTab()},focusNextTab:function(){this.currentTabIndex<this.tabs.length-1&&(this.activeTab=this.tabs[this.currentTabIndex+1].id,this.$emit(\"update:active\",this.activeTab)),this.focusActiveTab()},focusFirstTab:function(){this.activeTab=this.tabs[0].id,this.$emit(\"update:active\",this.activeTab),this.focusActiveTab()},focusLastTab:function(){this.activeTab=this.tabs[this.tabs.length-1].id,this.$emit(\"update:active\",this.activeTab),this.focusActiveTab()},focusActiveTab:function(){this.$el.querySelector(\"#\"+this.activeTab).focus()},focusActiveTabContent:function(){this.$el.querySelector(\"#tab-\"+this.activeTab).focus()},updateActive:function(){var t=this;this.activeTab=this.active&&-1!==this.tabs.findIndex(function(e){return e.id===t.active})?this.active:this.tabs.length>0?this.tabs[0].id:\"\"},toggleStarred:function(){this.isStarred=!this.isStarred,this.$emit(\"update:starred\",this.isStarred)},updateTabs:function(){var t=this.$children.reduce(function(t,e){return e.name&&\"string\"==typeof e.name?r(e.id)?r(e.icon)?(t.push(e),t):(o.a.util.warn(\"This tab is missing a valid icon: \".concat(e.icon),e),t):(o.a.util.warn(\"This tab is missing a valid id: \".concat(e.id),e),t):(o.a.util.warn(\"This tab is missing a valid name: \".concat(e.name),e),t)},[]);this.tabs=t.sort(function(t,e){var n=t.order||0,i=e.order||0;return n===i?OC.Util.naturalSortCompare(t.name,e.name):n-i}),this.tabs.length>0&&this.updateActive()}}},c=(n(167),n(169),n(0)),l=Object(c.a)(s,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"transition\",{attrs:{name:\"slide-right\"}},[n(\"aside\",{attrs:{id:\"app-sidebar\"}},[n(\"header\",{staticClass:\"app-sidebar-header\",class:{\"app-sidebar-header--with-figure\":t.hasFigure,\"app-sidebar-header--compact\":t.compact}},[n(\"a\",{staticClass:\"icon-close\",attrs:{href:\"#\",title:t.t(\"core\",\"close\")},on:{click:t.closeSidebar}}),t._v(\" \"),t.hasFigure?n(\"div\",{staticClass:\"app-sidebar-header__figure\",class:{\"app-sidebar-header__figure--with-action\":t.hasFigureClickListener},style:{backgroundImage:\"url(\"+t.background+\")\"},on:{click:t.onFigureClick}},[t._t(\"header\")],2):t._e(),t._v(\" \"),n(\"div\",{staticClass:\"app-sidebar-header__desc\",class:{\"app-sidebar-header__desc--with-star\":t.canStar,\"app-sidebar-header__desc--with-subtitle\":t.subtitle}},[t.canStar?n(\"a\",{staticClass:\"app-sidebar-header__star\",class:{\"icon-starred\":t.isStarred&&!t.starLoading,\"icon-star\":!t.isStarred&&!t.starLoading,\"icon-loading-small\":t.starLoading},on:{click:function(e){return e.preventDefault(),t.toggleStarred(e)}}}):t._e(),t._v(\" \"),n(\"h3\",{staticClass:\"app-sidebar-header__title\"},[t._v(\"\\n\\t\\t\\t\\t\\t\"+t._s(t.title)+\"\\n\\t\\t\\t\\t\")]),t._v(\" \"),\"\"!==t.subtitle.trim()?n(\"h4\",{staticClass:\"app-sidebar-header__subtitle\"},[t._v(\"\\n\\t\\t\\t\\t\\t\"+t._s(t.subtitle)+\"\\n\\t\\t\\t\\t\")]):t._e(),t._v(\" \"),t.$slots[\"secondary-actions\"]?n(\"Actions\",{staticClass:\"app-sidebar-header__menu\"},[t._t(\"secondary-actions\")],2):t._e()],1),t._v(\" \"),t.$slots[\"primary-actions\"]?n(\"div\",{staticClass:\"app-sidebar-header__action\"},[t._t(\"primary-actions\")],2):t._e()]),t._v(\" \"),t.hasMultipleTabs?n(\"nav\",{staticClass:\"app-sidebar-tabs__nav\",on:{keydown:[function(e){return!e.type.indexOf(\"key\")&&t._k(e.keyCode,\"left\",37,e.key,[\"Left\",\"ArrowLeft\"])?null:\"button\"in e&&0!==e.button?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.focusPreviousTab(e))},function(e){return!e.type.indexOf(\"key\")&&t._k(e.keyCode,\"right\",39,e.key,[\"Right\",\"ArrowRight\"])?null:\"button\"in e&&2!==e.button?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.focusNextTab(e))},function(e){return!e.type.indexOf(\"key\")&&t._k(e.keyCode,\"tab\",9,e.key,\"Tab\")?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.focusActiveTabContent(e))},function(e){return!e.type.indexOf(\"key\")&&t._k(e.keyCode,\"page-up\",void 0,e.key,void 0)?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.focusFirstTab(e))},function(e){return!e.type.indexOf(\"key\")&&t._k(e.keyCode,\"page-down\",void 0,e.key,void 0)?null:e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:(e.preventDefault(),t.focusLastTab(e))}]}},[n(\"ul\",t._l(t.tabs,function(e){return n(\"li\",{key:e.id,staticClass:\"app-sidebar-tabs__tab\"},[n(\"a\",{class:{active:t.activeTab===e.id},attrs:{id:e.id,\"aria-controls\":\"tab-\"+e.id,\"aria-selected\":t.activeTab===e.id,\"data-id\":e.id,href:\"#tab-\"+e.id,tabindex:t.activeTab===e.id?null:-1,role:\"tab\"},on:{click:function(e){return e.preventDefault(),t.setActive(e)}}},[n(\"span\",{staticClass:\"app-sidebar-tabs__tab-icon\",class:e.icon}),t._v(\"\\n\\t\\t\\t\\t\\t\\t\"+t._s(e.name)+\"\\n\\t\\t\\t\\t\\t\")])])}),0)]):t._e(),t._v(\" \"),n(\"div\",{staticClass:\"app-sidebar-tabs__content\",class:{\"app-sidebar-tabs__content--multiple\":t.hasMultipleTabs}},[t._t(\"default\",null,{activeTab:t.activeTab})],2)])])},[],!1,null,\"625289d6\",null).exports;n.d(e,\"AppSidebar\",function(){return l});\n/*\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */e.default=l},function(t,e,n){\"use strict\";n.r(e);var i={name:\"AppSidebarTab\",props:{name:{type:String,default:\"\",required:!0},icon:{type:String,default:\"\",required:!0},order:{type:Number,default:0,required:!1}},computed:{id:function(){return this.name.toLowerCase().replace(/ /g,\"-\")},isActive:function(){return this.$parent.activeTab===this.id}}},o=(n(171),n(0)),a=Object(o.a)(i,function(){var t=this.$createElement;return(this._self._c||t)(\"section\",{directives:[{name:\"show\",rawName:\"v-show\",value:this.isActive,expression:\"isActive\"}],attrs:{id:\"tab-\"+this.id,\"aria-hidden\":!this.isActive,\"aria-labelledby\":this.name,tabindex:\"0\",role:\"tabpanel\"}},[this._t(\"default\")],2)},[],!1,null,\"3f1c0b76\",null).exports;n.d(e,\"AppSidebarTab\",function(){return a});\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */e.default=a},function(t,e,n){\"use strict\";n.r(e);var i={props:{appName:{type:String,required:!0}}},o=n(0),a=Object(o.a)(i,function(){var t=this.$createElement;return(this._self._c||t)(\"div\",{class:\"app-\"+this.appName,attrs:{id:\"content\"}},[this._t(\"default\")],2)},[],!1,null,null,null).exports;n.d(e,\"Content\",function(){return a});\n/*\n * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */e.default=a},function(t,e,n){\"use strict\";var i=n(47);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,\"li.active[data-v-f874e42c]{box-shadow:inset 4px 0 var(--color-primary)}.action--disabled[data-v-f874e42c]{pointer-events:none;opacity:.5}.action--disabled[data-v-f874e42c]:hover,.action--disabled[data-v-f874e42c]:focus{cursor:default;opacity:.5}.action--disabled *[data-v-f874e42c]{opacity:1 !important}.action-checkbox[data-v-f874e42c]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;cursor:pointer;white-space:nowrap;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:normal;line-height:44px}.action-checkbox__checkbox[data-v-f874e42c]{position:absolute;top:auto;left:-10000px;overflow:hidden;width:1px;height:1px}.action-checkbox__checkbox:focus+.action-checkbox__label[data-v-f874e42c]{opacity:1}.action-checkbox__label[data-v-f874e42c]{display:flex;align-items:center;width:100%;padding:0 !important;padding-right:14px !important;opacity:.7}.action-checkbox__label[data-v-f874e42c]::before{margin:0 14px 0 !important}.action-checkbox--disabled[data-v-f874e42c],.action-checkbox--disabled .action-checkbox__label[data-v-f874e42c]{cursor:pointer}.action-checkbox:not(.action-checkbox--disabled):hover .action-checkbox__label[data-v-f874e42c],.action-checkbox:not(.action-checkbox--disabled):focus .action-checkbox__label[data-v-f874e42c]{opacity:1}\\n\",\"\"])},function(t,e,n){\"use strict\";var i=n(48);n.n(i).a},function(t,e,n){e=t.exports=n(1)(!1);var i=n(8),o=i(n(9)),a=i(n(10)),r=i(n(11)),s=i(n(12));e.push([t.i,'@font-face{font-family:\"iconfont-vue\";src:url('+o+\");src:url(\"+o+') format(\"embedded-opentype\"),url('+a+') format(\"woff\"),url('+r+') format(\"truetype\"),url('+s+') format(\"svg\")}.icon[data-v-44d356e8]{font-style:normal;font-weight:400}.icon.arrow-left-double[data-v-44d356e8]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.arrow-left[data-v-44d356e8]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.arrow-right-double[data-v-44d356e8]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.arrow-right[data-v-44d356e8]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.close[data-v-44d356e8]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.confirm-fade[data-v-44d356e8]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.confirm[data-v-44d356e8]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.menu[data-v-44d356e8]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.more[data-v-44d356e8]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.pause[data-v-44d356e8]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.play[data-v-44d356e8]:before{font-family:\"iconfont-vue\";content:\"\"}button[data-v-44d356e8],input[data-v-44d356e8]:not([type=\\'range\\']),textarea[data-v-44d356e8]{margin:0;padding:7px 6px;cursor:text;color:var(--color-text-lighter);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);outline:none;background-color:var(--color-main-background);font-size:13px}button[data-v-44d356e8]:not(:disabled):not(.primary):hover,button[data-v-44d356e8]:not(:disabled):not(.primary):focus,button:not(:disabled):not(.primary).active[data-v-44d356e8],input[data-v-44d356e8]:not([type=\\'range\\']):not(:disabled):not(.primary):hover,input[data-v-44d356e8]:not([type=\\'range\\']):not(:disabled):not(.primary):focus,input:not([type=\\'range\\']):not(:disabled):not(.primary).active[data-v-44d356e8],textarea[data-v-44d356e8]:not(:disabled):not(.primary):hover,textarea[data-v-44d356e8]:not(:disabled):not(.primary):focus,textarea:not(:disabled):not(.primary).active[data-v-44d356e8]{border-color:var(--color-primary-element);outline:none}button[data-v-44d356e8]:not(:disabled):not(.primary):active,input[data-v-44d356e8]:not([type=\\'range\\']):not(:disabled):not(.primary):active,textarea[data-v-44d356e8]:not(:disabled):not(.primary):active{color:var(--color-text-light);outline:none;background-color:var(--color-main-background)}button[data-v-44d356e8]:disabled,input[data-v-44d356e8]:not([type=\\'range\\']):disabled,textarea[data-v-44d356e8]:disabled{cursor:default;opacity:.5;color:var(--color-text-maxcontrast);background-color:var(--color-background-dark)}button[data-v-44d356e8]:required,input[data-v-44d356e8]:not([type=\\'range\\']):required,textarea[data-v-44d356e8]:required{box-shadow:none}button[data-v-44d356e8]:invalid,input[data-v-44d356e8]:not([type=\\'range\\']):invalid,textarea[data-v-44d356e8]:invalid{border-color:var(--color-error);box-shadow:none !important}button.primary[data-v-44d356e8],input:not([type=\\'range\\']).primary[data-v-44d356e8],textarea.primary[data-v-44d356e8]{cursor:pointer;color:var(--color-primary-text);border-color:var(--color-primary-element);background-color:var(--color-primary-element)}button.primary[data-v-44d356e8]:not(:disabled):hover,button.primary[data-v-44d356e8]:not(:disabled):focus,button.primary[data-v-44d356e8]:not(:disabled):active,input:not([type=\\'range\\']).primary[data-v-44d356e8]:not(:disabled):hover,input:not([type=\\'range\\']).primary[data-v-44d356e8]:not(:disabled):focus,input:not([type=\\'range\\']).primary[data-v-44d356e8]:not(:disabled):active,textarea.primary[data-v-44d356e8]:not(:disabled):hover,textarea.primary[data-v-44d356e8]:not(:disabled):focus,textarea.primary[data-v-44d356e8]:not(:disabled):active{border-color:var(--color-primary-element-light);background-color:var(--color-primary-element-light)}button.primary[data-v-44d356e8]:not(:disabled):active,input:not([type=\\'range\\']).primary[data-v-44d356e8]:not(:disabled):active,textarea.primary[data-v-44d356e8]:not(:disabled):active{color:var(--color-primary-text-dark)}button.primary[data-v-44d356e8]:disabled,input:not([type=\\'range\\']).primary[data-v-44d356e8]:disabled,textarea.primary[data-v-44d356e8]:disabled{cursor:default;color:var(--color-primary-text-dark);background-color:var(--color-primary-element)}li.active[data-v-44d356e8]{box-shadow:inset 4px 0 var(--color-primary)}.action--disabled[data-v-44d356e8]{pointer-events:none;opacity:.5}.action--disabled[data-v-44d356e8]:hover,.action--disabled[data-v-44d356e8]:focus{cursor:default;opacity:.5}.action--disabled *[data-v-44d356e8]{opacity:1 !important}.action-input[data-v-44d356e8]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;cursor:pointer;white-space:nowrap;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:normal}.action-input[data-v-44d356e8]:not(.action-input--picker){opacity:.7}.action-input[data-v-44d356e8]:not(.action-input--picker):hover,.action-input[data-v-44d356e8]:not(.action-input--picker):focus{opacity:1}.action-input--picker .action-input__icon[data-v-44d356e8]{opacity:.7}.action-input--picker:hover .action-input__icon[data-v-44d356e8],.action-input--picker:focus .action-input__icon[data-v-44d356e8]{opacity:1}.action-input>span[data-v-44d356e8]{cursor:pointer;white-space:nowrap}.action-input__icon[data-v-44d356e8]{min-width:0;min-height:0;padding:22px 0 22px 44px;background-position:14px center;background-size:16px}.action-input__form[data-v-44d356e8]{display:flex;align-items:center;flex:1 1 auto;margin:4px 0;padding-right:14px}.action-input__submit[data-v-44d356e8]{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}.action-input__label[data-v-44d356e8]{display:flex;align-items:center;justify-content:center;width:36px;height:36px;margin:0 0 0 -8px;padding:7px 6px;cursor:pointer;opacity:1;color:var(--color-text-lighter);border:1px solid var(--color-border-dark);border-left-color:transparent;border-radius:0 var(--border-radius) var(--border-radius) 0;background-color:var(--color-main-background);background-clip:padding-box;font-size:16px}.action-input__label[data-v-44d356e8]:before{font-family:\"iconfont-vue\";font-style:normal;font-weight:400;content:\"\"}.action-input__input[data-v-44d356e8]{flex:1 1 auto;min-width:132px;min-height:36px;max-height:36px;margin:0}.action-input__input[data-v-44d356e8]:disabled{cursor:default}.action-input__input:not(:active):not(:hover):not(:focus):invalid+.action-input__label[data-v-44d356e8]{border-color:var(--color-error);border-left-color:transparent}.action-input__input:not(:active):not(:hover):not(:focus):not(:disabled)+.action-input__label[data-v-44d356e8]:active,.action-input__input:not(:active):not(:hover):not(:focus):not(:disabled)+.action-input__label[data-v-44d356e8]:hover,.action-input__input:not(:active):not(:hover):not(:focus):not(:disabled)+.action-input__label[data-v-44d356e8]:focus{border-color:var(--color-primary-element);border-radius:var(--border-radius)}.action-input__input:active:not(:disabled)+.action-input__label[data-v-44d356e8],.action-input__input:hover:not(:disabled)+.action-input__label[data-v-44d356e8],.action-input__input:focus:not(:disabled)+.action-input__label[data-v-44d356e8]{z-index:2;border-color:var(--color-primary-element);border-left-color:transparent}.action-input__picker[data-v-44d356e8] .mx-input{margin:0}li:last-child>.action-input[data-v-44d356e8]{margin-bottom:10px}li:first-child>.action-input[data-v-44d356e8]{margin-top:10px}\\n',\"\"])},function(t,e,n){\"use strict\";var i=n(49);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,\"li.active[data-v-f9c0ebfe]{box-shadow:inset 4px 0 var(--color-primary)}.action-link[data-v-f9c0ebfe]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;padding-right:14px;cursor:pointer;white-space:nowrap;opacity:.7;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:normal;line-height:44px}.action-link[data-v-f9c0ebfe]:hover,.action-link[data-v-f9c0ebfe]:focus{opacity:1}.action-link>span[data-v-f9c0ebfe]{cursor:pointer;white-space:nowrap}.action-link__icon[data-v-f9c0ebfe]{width:44px;height:44px;opacity:1;background-position:14px center;background-size:16px}.action-link p[data-v-f9c0ebfe]{width:150px;padding:7px 0;cursor:pointer;text-align:left;line-height:1.6em}.action-link__longtext[data-v-f9c0ebfe]{cursor:pointer;white-space:pre-wrap}.action-link__title[data-v-f9c0ebfe]{font-weight:bold}.action--disabled[data-v-f9c0ebfe]{pointer-events:none;opacity:.5}.action--disabled[data-v-f9c0ebfe]:hover,.action--disabled[data-v-f9c0ebfe]:focus{cursor:default;opacity:.5}.action--disabled *[data-v-f9c0ebfe]{opacity:1 !important}\\n\",\"\"])},function(t,e,n){\"use strict\";var i=n(50);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,\"li.active[data-v-3bf6846c]{box-shadow:inset 4px 0 var(--color-primary)}.action-router[data-v-3bf6846c]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;padding-right:14px;cursor:pointer;white-space:nowrap;opacity:.7;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:normal;line-height:44px}.action-router[data-v-3bf6846c]:hover,.action-router[data-v-3bf6846c]:focus{opacity:1}.action-router>span[data-v-3bf6846c]{cursor:pointer;white-space:nowrap}.action-router__icon[data-v-3bf6846c]{width:44px;height:44px;opacity:1;background-position:14px center;background-size:16px}.action-router p[data-v-3bf6846c]{width:150px;padding:7px 0;cursor:pointer;text-align:left;line-height:1.6em}.action-router__longtext[data-v-3bf6846c]{cursor:pointer;white-space:pre-wrap}.action-router__title[data-v-3bf6846c]{font-weight:bold}.action--disabled[data-v-3bf6846c]{pointer-events:none;opacity:.5}.action--disabled[data-v-3bf6846c]:hover,.action--disabled[data-v-3bf6846c]:focus{cursor:default;opacity:.5}.action--disabled *[data-v-3bf6846c]{opacity:1 !important}\\n\",\"\"])},function(t,e,n){\"use strict\";var i=n(51);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,\"li.active[data-v-b4603aaa]{box-shadow:inset 4px 0 var(--color-primary)}.action-text[data-v-b4603aaa]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;padding-right:14px;cursor:pointer;white-space:nowrap;opacity:.7;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:normal;line-height:44px}.action-text[data-v-b4603aaa]:hover,.action-text[data-v-b4603aaa]:focus{opacity:1}.action-text>span[data-v-b4603aaa]{cursor:pointer;white-space:nowrap}.action-text__icon[data-v-b4603aaa]{width:44px;height:44px;opacity:1;background-position:14px center;background-size:16px}.action-text p[data-v-b4603aaa]{width:150px;padding:7px 0;cursor:pointer;text-align:left;line-height:1.6em}.action-text__longtext[data-v-b4603aaa]{cursor:pointer;white-space:pre-wrap}.action-text__title[data-v-b4603aaa]{font-weight:bold}.action--disabled[data-v-b4603aaa]{pointer-events:none;opacity:.5}.action--disabled[data-v-b4603aaa]:hover,.action--disabled[data-v-b4603aaa]:focus{cursor:default;opacity:.5}.action--disabled *[data-v-b4603aaa]{opacity:1 !important}.action-text[data-v-b4603aaa],.action-text span[data-v-b4603aaa]{cursor:default}\\n\",\"\"])},function(t,e,n){\"use strict\";var i=n(52);n.n(i).a},function(t,e,n){e=t.exports=n(1)(!1);var i=n(8),o=i(n(9)),a=i(n(10)),r=i(n(11)),s=i(n(12));e.push([t.i,'@font-face{font-family:\"iconfont-vue\";src:url('+o+\");src:url(\"+o+') format(\"embedded-opentype\"),url('+a+') format(\"woff\"),url('+r+') format(\"truetype\"),url('+s+') format(\"svg\")}.icon[data-v-43b509b7]{font-style:normal;font-weight:400}.icon.arrow-left-double[data-v-43b509b7]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.arrow-left[data-v-43b509b7]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.arrow-right-double[data-v-43b509b7]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.arrow-right[data-v-43b509b7]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.close[data-v-43b509b7]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.confirm-fade[data-v-43b509b7]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.confirm[data-v-43b509b7]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.menu[data-v-43b509b7]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.more[data-v-43b509b7]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.pause[data-v-43b509b7]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.play[data-v-43b509b7]:before{font-family:\"iconfont-vue\";content:\"\"}button[data-v-43b509b7],input[data-v-43b509b7]:not([type=\\'range\\']),textarea[data-v-43b509b7]{margin:0;padding:7px 6px;cursor:text;color:var(--color-text-lighter);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);outline:none;background-color:var(--color-main-background);font-size:13px}button[data-v-43b509b7]:not(:disabled):not(.primary):hover,button[data-v-43b509b7]:not(:disabled):not(.primary):focus,button:not(:disabled):not(.primary).active[data-v-43b509b7],input[data-v-43b509b7]:not([type=\\'range\\']):not(:disabled):not(.primary):hover,input[data-v-43b509b7]:not([type=\\'range\\']):not(:disabled):not(.primary):focus,input:not([type=\\'range\\']):not(:disabled):not(.primary).active[data-v-43b509b7],textarea[data-v-43b509b7]:not(:disabled):not(.primary):hover,textarea[data-v-43b509b7]:not(:disabled):not(.primary):focus,textarea:not(:disabled):not(.primary).active[data-v-43b509b7]{border-color:var(--color-primary-element);outline:none}button[data-v-43b509b7]:not(:disabled):not(.primary):active,input[data-v-43b509b7]:not([type=\\'range\\']):not(:disabled):not(.primary):active,textarea[data-v-43b509b7]:not(:disabled):not(.primary):active{color:var(--color-text-light);outline:none;background-color:var(--color-main-background)}button[data-v-43b509b7]:disabled,input[data-v-43b509b7]:not([type=\\'range\\']):disabled,textarea[data-v-43b509b7]:disabled{cursor:default;opacity:.5;color:var(--color-text-maxcontrast);background-color:var(--color-background-dark)}button[data-v-43b509b7]:required,input[data-v-43b509b7]:not([type=\\'range\\']):required,textarea[data-v-43b509b7]:required{box-shadow:none}button[data-v-43b509b7]:invalid,input[data-v-43b509b7]:not([type=\\'range\\']):invalid,textarea[data-v-43b509b7]:invalid{border-color:var(--color-error);box-shadow:none !important}button.primary[data-v-43b509b7],input:not([type=\\'range\\']).primary[data-v-43b509b7],textarea.primary[data-v-43b509b7]{cursor:pointer;color:var(--color-primary-text);border-color:var(--color-primary-element);background-color:var(--color-primary-element)}button.primary[data-v-43b509b7]:not(:disabled):hover,button.primary[data-v-43b509b7]:not(:disabled):focus,button.primary[data-v-43b509b7]:not(:disabled):active,input:not([type=\\'range\\']).primary[data-v-43b509b7]:not(:disabled):hover,input:not([type=\\'range\\']).primary[data-v-43b509b7]:not(:disabled):focus,input:not([type=\\'range\\']).primary[data-v-43b509b7]:not(:disabled):active,textarea.primary[data-v-43b509b7]:not(:disabled):hover,textarea.primary[data-v-43b509b7]:not(:disabled):focus,textarea.primary[data-v-43b509b7]:not(:disabled):active{border-color:var(--color-primary-element-light);background-color:var(--color-primary-element-light)}button.primary[data-v-43b509b7]:not(:disabled):active,input:not([type=\\'range\\']).primary[data-v-43b509b7]:not(:disabled):active,textarea.primary[data-v-43b509b7]:not(:disabled):active{color:var(--color-primary-text-dark)}button.primary[data-v-43b509b7]:disabled,input:not([type=\\'range\\']).primary[data-v-43b509b7]:disabled,textarea.primary[data-v-43b509b7]:disabled{cursor:default;color:var(--color-primary-text-dark);background-color:var(--color-primary-element)}li.active[data-v-43b509b7]{box-shadow:inset 4px 0 var(--color-primary)}.action--disabled[data-v-43b509b7]{pointer-events:none;opacity:.5}.action--disabled[data-v-43b509b7]:hover,.action--disabled[data-v-43b509b7]:focus{cursor:default;opacity:.5}.action--disabled *[data-v-43b509b7]{opacity:1 !important}.action-text-editable[data-v-43b509b7]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;cursor:pointer;white-space:nowrap;opacity:.7;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:normal;line-height:44px}.action-text-editable[data-v-43b509b7]:hover,.action-text-editable[data-v-43b509b7]:focus{opacity:1}.action-text-editable>span[data-v-43b509b7]{cursor:pointer;white-space:nowrap}.action-text-editable__icon[data-v-43b509b7]{min-width:0;min-height:0;padding:22px 0 22px 44px;background-position:14px center;background-size:16px}.action-text-editable__form[data-v-43b509b7]{display:flex;flex:1 1 auto;flex-direction:column;position:relative;margin:4px 0;padding-right:14px}.action-text-editable__submit[data-v-43b509b7]{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}.action-text-editable__label[data-v-43b509b7]{display:flex;align-items:center;justify-content:center;position:absolute;right:15px;bottom:1px;width:36px;height:36px;margin:0;padding:7px 6px;cursor:pointer;opacity:1;color:var(--color-text-lighter);border:0;border-radius:50%;background-color:var(--color-main-background);background-clip:padding-box;font-size:16px}.action-text-editable__label[data-v-43b509b7]:before{font-family:\"iconfont-vue\";font-style:normal;font-weight:400;content:\"\"}.action-text-editable__textarea[data-v-43b509b7]{flex:1 1 auto;min-height:80px;max-height:124px;min-width:176px;width:100% !important;margin:0}.action-text-editable__textarea[data-v-43b509b7]:disabled{cursor:default}.action-text-editable__textarea:not(:active):not(:hover):not(:focus):invalid+.action-text-editable__label[data-v-43b509b7]{background-color:var(--color-error)}.action-text-editable__textarea:not(:active):not(:hover):not(:focus):not(:disabled)+.action-text-editable__label[data-v-43b509b7]:active,.action-text-editable__textarea:not(:active):not(:hover):not(:focus):not(:disabled)+.action-text-editable__label[data-v-43b509b7]:hover,.action-text-editable__textarea:not(:active):not(:hover):not(:focus):not(:disabled)+.action-text-editable__label[data-v-43b509b7]:focus{background-color:var(--color-primary-element);color:var(--color-primary-text)}.action-text-editable__textarea:active:not(:disabled)+.action-text-editable__label[data-v-43b509b7],.action-text-editable__textarea:hover:not(:disabled)+.action-text-editable__label[data-v-43b509b7],.action-text-editable__textarea:focus:not(:disabled)+.action-text-editable__label[data-v-43b509b7]{z-index:2;border-color:var(--color-primary-element);border-left-color:transparent}li:last-child>.action-text-editable[data-v-43b509b7]{margin-bottom:10px}li:first-child>.action-text-editable[data-v-43b509b7]{margin-top:10px}\\n',\"\"])},function(t,e,n){\"use strict\";var i=n(53);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,\"#app-content[data-v-0fe2f738]{z-index:1000;background-color:var(--color-main-background);position:relative;flex-basis:100vw;min-height:100%;transition:transform var(--animation-quick)}\\n\",\"\"])},function(t,e,n){\"use strict\";var i=n(54);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,\"#app-navigation{will-change:transform;transition:transform var(--animation-quick)}@media only screen and (max-width: 768px){.nav-open #app-navigation{transform:translateX(0)}}\\n\",\"\"])},function(t,e,n){\"use strict\";var i=n(55);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,\".app-navigation-caption--item[data-v-9639e4a4]{font-weight:bold;color:var(--color-text-maxcontrast);line-height:44px;padding-left:44px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:0.7;box-shadow:none !important;pointer-events:none}.app-navigation-caption--item[data-v-9639e4a4]:not(:first-child){margin-top:22px}\\n\",\"\"])},function(t,e,n){\"use strict\";var i=n(56);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,\"#app-settings-content[data-v-7f13ea43]{display:block;padding:10px;background-color:var(--color-main-background);max-height:300px;overflow-y:auto;box-sizing:border-box}.slide-up-leave-active[data-v-7f13ea43],.slide-up-enter-active[data-v-7f13ea43]{transition-duration:var(--animation-slow);transition-property:max-height, padding;overflow-y:hidden !important}.slide-up-enter[data-v-7f13ea43],.slide-up-leave-to[data-v-7f13ea43]{max-height:0 !important;padding:0 10px !important}\\n\",\"\"])},function(t,e,n){\"use strict\";var i=n(57);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,\"\\n.app-navigation-spacer[data-v-18241e10] {\\n\\theight: 22px;\\n}\\n\",\"\"])},function(t,e,n){\"use strict\";var i=n(58);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,\"#app-sidebar[data-v-625289d6]{z-index:1500;height:calc(100vh - 50px);width:27vw;min-width:300px;max-width:500px;top:50px;right:0;display:flex;flex-shrink:0;flex-direction:column;position:-webkit-sticky;position:sticky;overflow-y:auto;overflow-x:hidden;background:var(--color-main-background);border-left:1px solid var(--color-border)}#app-sidebar .app-sidebar-header>.icon-close[data-v-625289d6]{position:absolute;width:44px;height:44px;top:0;right:0;z-index:100;opacity:.7;border-radius:22px}#app-sidebar .app-sidebar-header>.icon-close[data-v-625289d6]:hover,#app-sidebar .app-sidebar-header>.icon-close[data-v-625289d6]:active,#app-sidebar .app-sidebar-header>.icon-close[data-v-625289d6]:focus{opacity:1;background-color:rgba(127,127,127,0.25)}#app-sidebar .app-sidebar-header__figure[data-v-625289d6]{max-height:250px;height:250px;width:100%;background-size:contain;background-position:center;background-repeat:no-repeat}#app-sidebar .app-sidebar-header__figure--with-action[data-v-625289d6]{cursor:pointer}#app-sidebar .app-sidebar-header__desc[data-v-625289d6]{position:relative;padding:18px 88px 18px 9px;display:flex;height:23px;flex-direction:column;justify-content:center;box-sizing:content-box}#app-sidebar .app-sidebar-header__desc--with-star[data-v-625289d6]{padding-left:44px}#app-sidebar .app-sidebar-header__desc--with-subtitle[data-v-625289d6]{justify-content:space-between;height:46px}#app-sidebar .app-sidebar-header__desc h3[data-v-625289d6],#app-sidebar .app-sidebar-header__desc h4[data-v-625289d6]{width:100%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;margin:0}#app-sidebar .app-sidebar-header__desc h3[data-v-625289d6]{font-size:16px;padding:0}#app-sidebar .app-sidebar-header__desc h4[data-v-625289d6]{font-size:14px;padding:0;opacity:.7}#app-sidebar .app-sidebar-header__desc .app-sidebar-header__star[data-v-625289d6]{display:block;width:44px;height:44px;padding:14px;position:absolute;top:6px;left:0}#app-sidebar .app-sidebar-header__desc .app-sidebar-header__menu[data-v-625289d6]{position:absolute;right:22px;top:50%;margin-top:-22px;background-color:rgba(127,127,127,0.25);border-radius:22px}#app-sidebar .app-sidebar-header__action[data-v-625289d6]{display:flex;margin:10px;max-height:50px;align-items:center}#app-sidebar .app-sidebar-header--compact[data-v-625289d6]{padding-left:40px}#app-sidebar .app-sidebar-header--compact .app-sidebar-header__figure[data-v-625289d6]{height:64px;width:64px;margin:9px;border-radius:3px;position:absolute;left:0;top:0;z-index:2}#app-sidebar .app-sidebar-header--compact .app-sidebar-header__desc[data-v-625289d6]{padding-left:44px;height:46px}#app-sidebar .app-sidebar-header--compact .app-sidebar-header__desc .app-sidebar-header__star[data-v-625289d6]{margin-top:-9px;z-index:3}#app-sidebar .app-sidebar-header--compact .app-sidebar-header__desc .app-sidebar-header__menu[data-v-625289d6]{right:44px;top:0;margin:0;background-color:transparent}#app-sidebar .app-sidebar-tabs__nav[data-v-625289d6]{margin-top:10px}#app-sidebar .app-sidebar-tabs__nav ul[data-v-625289d6]{display:flex;justify-content:stretch}#app-sidebar .app-sidebar-tabs__tab[data-v-625289d6]{display:block;text-align:center;flex:1 1}#app-sidebar .app-sidebar-tabs__tab a[data-v-625289d6]{display:block;padding-top:25px;padding-bottom:5px;position:relative;border-bottom:1px solid var(--color-border);text-align:center;opacity:.7;color:var(--color-main-text);transition:color var(--animation-quick),opacity var(--animation-quick),border-color var(--animation-quick)}#app-sidebar .app-sidebar-tabs__tab a[data-v-625289d6]:hover,#app-sidebar .app-sidebar-tabs__tab a[data-v-625289d6]:focus,#app-sidebar .app-sidebar-tabs__tab a[data-v-625289d6]:active,#app-sidebar .app-sidebar-tabs__tab a.active[data-v-625289d6]{opacity:1}#app-sidebar .app-sidebar-tabs__tab a:hover .app-sidebar-tabs__tab-icon[data-v-625289d6],#app-sidebar .app-sidebar-tabs__tab a:focus .app-sidebar-tabs__tab-icon[data-v-625289d6],#app-sidebar .app-sidebar-tabs__tab a:active .app-sidebar-tabs__tab-icon[data-v-625289d6],#app-sidebar .app-sidebar-tabs__tab a.active .app-sidebar-tabs__tab-icon[data-v-625289d6]{opacity:1}#app-sidebar .app-sidebar-tabs__tab a[data-v-625289d6]:not(.active):hover,#app-sidebar .app-sidebar-tabs__tab a[data-v-625289d6]:not(.active):focus{box-shadow:inset 0 -1px 0 var(--color-background-darker);border-bottom-color:var(--color-background-darker)}#app-sidebar .app-sidebar-tabs__tab a.active[data-v-625289d6]{font-weight:bold;color:var(--color-text-light);border-bottom-color:var(--color-text-light);box-shadow:inset 0 -1px 0 var(--color-text-light)}#app-sidebar .app-sidebar-tabs__tab a[data-v-625289d6]:focus{border-bottom-color:var(--color-primary-element);box-shadow:inset 0 -1px 0 var(--color-primary-element)}#app-sidebar .app-sidebar-tabs__tab-icon[data-v-625289d6]{height:25px;width:100%;position:absolute;top:0;left:0;opacity:.7;background-position:center 8px;background-size:16px;transition:opacity var(--animation-quick)}#app-sidebar .app-sidebar-tabs__content[data-v-625289d6]{position:relative;flex:1 1 100%}#app-sidebar .app-sidebar-tabs__content--multiple[data-v-625289d6]>:not(section){display:none}.slide-right-leave-active[data-v-625289d6],.slide-right-enter-active[data-v-625289d6]{transition-duration:var(--animation-quick);transition-property:max-width, min-width}.slide-right-enter-to[data-v-625289d6],.slide-right-leave[data-v-625289d6]{min-width:300px;max-width:500px}.slide-right-enter[data-v-625289d6],.slide-right-leave-to[data-v-625289d6]{min-width:0 !important;max-width:0 !important}.fade-leave-active[data-v-625289d6],.fade-enter-active[data-v-625289d6]{transition-duration:var(--animation-quick);transition-property:opacity;position:absolute;top:0;left:0;width:100%;opacity:1}.fade-enter[data-v-625289d6],.fade-leave-to[data-v-625289d6]{opacity:0}\\n\",\"\"])},function(t,e,n){\"use strict\";var i=n(59);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,\".app-sidebar-header__action button,.app-sidebar-header__action .button,.app-sidebar-header__action input[type='button'],.app-sidebar-header__action input[type='submit'],.app-sidebar-header__action input[type='reset']{padding:6px 22px}\\n\",\"\"])},function(t,e,n){\"use strict\";var i=n(60);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,\"section[data-v-3f1c0b76]{padding:10px;min-height:100%}section[data-v-3f1c0b76]:focus{border-color:var(--color-primary);box-shadow:0 0 0.2em var(--color-primary);outline:0}\\n\",\"\"])},function(t,e,n){\"use strict\";var i=n(61);n.n(i).a},function(t,e,n){e=t.exports=n(1)(!1);var i=n(8),o=i(n(9)),a=i(n(10)),r=i(n(11)),s=i(n(12));e.push([t.i,'@font-face{font-family:\"iconfont-vue\";src:url('+o+\");src:url(\"+o+') format(\"embedded-opentype\"),url('+a+') format(\"woff\"),url('+r+') format(\"truetype\"),url('+s+') format(\"svg\")}.icon[data-v-9c792ef2]{font-style:normal;font-weight:400}.icon.arrow-left-double[data-v-9c792ef2]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.arrow-left[data-v-9c792ef2]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.arrow-right-double[data-v-9c792ef2]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.arrow-right[data-v-9c792ef2]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.close[data-v-9c792ef2]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.confirm-fade[data-v-9c792ef2]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.confirm[data-v-9c792ef2]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.menu[data-v-9c792ef2]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.more[data-v-9c792ef2]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.pause[data-v-9c792ef2]:before{font-family:\"iconfont-vue\";content:\"\"}.icon.play[data-v-9c792ef2]:before{font-family:\"iconfont-vue\";content:\"\"}.modal-mask[data-v-9c792ef2]{position:fixed;z-index:9998;top:0;left:0;display:block;width:100%;height:100%;background-color:rgba(0,0,0,0.92)}.modal-header[data-v-9c792ef2]{position:absolute;z-index:10001;top:0;right:0;left:0;display:flex !important;align-items:center;justify-content:center;width:100%;height:50px;transition:opacity 250ms, visibility 250ms}.modal-header.invisible[style*=\\'display:none\\'][data-v-9c792ef2],.modal-header.invisible[style*=\\'display: none\\'][data-v-9c792ef2]{visibility:hidden}.modal-header .modal-title[data-v-9c792ef2]{overflow-x:hidden;box-sizing:border-box;max-width:100%;padding:0 88px;transition:padding ease 100ms;white-space:nowrap;text-overflow:ellipsis;color:#fff;font-size:14px}.modal-header .icons-menu[data-v-9c792ef2]{position:absolute;right:0;display:flex;align-items:center;justify-content:flex-end}.modal-header .icons-menu .icon-close[data-v-9c792ef2]{box-sizing:border-box;margin:3px;padding:10px 11px;color:#fff;background-image:none;font-size:23px}.modal-header .icons-menu .icon-close[data-v-9c792ef2]:before{font-family:\"iconfont-vue\";font-style:normal;font-weight:400;content:\"\"}.modal-header .icons-menu .play-pause[data-v-9c792ef2]{position:relative;width:50px;height:50px;margin:0;padding:0;cursor:pointer;color:white;border:none;background-color:transparent;font-size:22px}.modal-header .icons-menu .play-pause:hover .icon-play[data-v-9c792ef2],.modal-header .icons-menu .play-pause:hover .icon-pause[data-v-9c792ef2],.modal-header .icons-menu .play-pause:focus .icon-play[data-v-9c792ef2],.modal-header .icons-menu .play-pause:focus .icon-pause[data-v-9c792ef2]{opacity:1;border-radius:22px;background-color:rgba(127,127,127,0.25)}.modal-header .icons-menu .play-pause .icon-play[data-v-9c792ef2],.modal-header .icons-menu .play-pause .icon-pause[data-v-9c792ef2]{box-sizing:border-box;width:44px;height:44px;margin:3px;opacity:.7;background-image:none;cursor:pointer}.modal-header .icons-menu .play-pause .icon-play[data-v-9c792ef2]{padding:11px 13px}.modal-header .icons-menu .play-pause .icon-play[data-v-9c792ef2]:before{font-family:\"iconfont-vue\";font-style:normal;font-weight:400;content:\"\"}.modal-header .icons-menu .play-pause .icon-pause[data-v-9c792ef2]{padding:12px;font-size:19.5px}.modal-header .icons-menu .play-pause .icon-pause[data-v-9c792ef2]:before{font-family:\"iconfont-vue\";font-style:normal;font-weight:400;content:\"\"}.modal-header .icons-menu .header-actions[data-v-9c792ef2]{margin:3px;color:white}.modal-header .icons-menu .action-item--single[data-v-9c792ef2]{box-sizing:border-box;width:44px;height:44px;cursor:pointer;background-position:center;background-size:22px}.modal-header .icons-menu[data-v-9c792ef2] .action-item__menutoggle{padding:13px 11px;color:#fff;font-size:22px}.modal-wrapper[data-v-9c792ef2]{display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:100%;height:100%}.modal-wrapper .prev[data-v-9c792ef2],.modal-wrapper .next[data-v-9c792ef2]{z-index:10000;display:flex !important;align-items:center;justify-content:center;width:15%;min-width:60px;height:100%;transition:opacity 250ms, visibility 250ms}.modal-wrapper .prev.invisible[style*=\\'display:none\\'][data-v-9c792ef2],.modal-wrapper .prev.invisible[style*=\\'display: none\\'][data-v-9c792ef2],.modal-wrapper .next.invisible[style*=\\'display:none\\'][data-v-9c792ef2],.modal-wrapper .next.invisible[style*=\\'display: none\\'][data-v-9c792ef2]{visibility:hidden}.modal-wrapper .icon-next[data-v-9c792ef2],.modal-wrapper .icon-previous[data-v-9c792ef2]{box-sizing:border-box;width:44px;height:44px;padding:12px 11px;color:white;border-radius:22px;background-image:none;font-size:24px}.modal-wrapper .icon-previous[data-v-9c792ef2]:before{font-family:\"iconfont-vue\";font-style:normal;font-weight:400;content:\"\"}.modal-wrapper .icon-next[data-v-9c792ef2]:before{font-family:\"iconfont-vue\";font-style:normal;font-weight:400;content:\"\"}.modal-wrapper .modal-container[data-v-9c792ef2]{display:block;overflow:hidden;padding:0;transition:transform 300ms ease;border-radius:var(--border-radius-large);background-color:var(--color-main-background);box-shadow:0 2px 8px rgba(0,0,0,0.33)}.modal-wrapper:not(.modal-wrapper--large):not(.modal-wrapper--full) .modal-container[data-v-9c792ef2]{max-width:900px;max-height:80%}.modal-wrapper--full .modal-container[data-v-9c792ef2]{max-width:100%;max-height:100%;border-radius:0}.modal-wrapper--full .prev[data-v-9c792ef2],.modal-wrapper--full .next[data-v-9c792ef2],.modal-wrapper--spread-navigation .prev[data-v-9c792ef2],.modal-wrapper--spread-navigation .next[data-v-9c792ef2]{position:absolute;width:10%}.modal-wrapper--full .prev[data-v-9c792ef2],.modal-wrapper--spread-navigation .prev[data-v-9c792ef2]{left:0}.modal-wrapper--full .next[data-v-9c792ef2],.modal-wrapper--spread-navigation .next[data-v-9c792ef2]{right:0}.modal-wrapper--large .modal-container[data-v-9c792ef2]{max-width:70%;max-height:90%}.modal-wrapper--large .prev[data-v-9c792ef2],.modal-wrapper--large .next[data-v-9c792ef2]{width:10%}.fade-enter-active[data-v-9c792ef2],.fade-leave-active[data-v-9c792ef2]{transition:opacity 250ms}.fade-enter[data-v-9c792ef2],.fade-leave-to[data-v-9c792ef2]{opacity:0}.fade-visibility-enter[data-v-9c792ef2],.fade-visibility-leave-to[data-v-9c792ef2]{visibility:hidden;opacity:0}.modal-in-enter-active[data-v-9c792ef2],.modal-in-leave-active[data-v-9c792ef2],.modal-out-enter-active[data-v-9c792ef2],.modal-out-leave-active[data-v-9c792ef2]{transition:opacity 250ms}.modal-in-enter[data-v-9c792ef2],.modal-in-leave-to[data-v-9c792ef2],.modal-out-enter[data-v-9c792ef2],.modal-out-leave-to[data-v-9c792ef2]{opacity:0}.modal-in-enter .modal-container[data-v-9c792ef2],.modal-in-leave-to .modal-container[data-v-9c792ef2]{transform:scale(0.9)}.modal-out-enter .modal-container[data-v-9c792ef2],.modal-out-leave-to .modal-container[data-v-9c792ef2]{transform:scale(1.1)}.modal-mask .play-pause .progress-ring[data-v-9c792ef2]{position:absolute;top:0;left:0;transform:rotate(-90deg)}.modal-mask .play-pause .progress-ring .progress-ring__circle[data-v-9c792ef2]{transition:100ms stroke-dashoffset;transform-origin:50% 50%;animation:progressring-data-v-9c792ef2 linear 3s infinite;stroke-linecap:round;stroke-dashoffset:94.24778;stroke-dasharray:94.24778}.modal-mask .play-pause--paused .icon-pause[data-v-9c792ef2]{animation:breath-data-v-9c792ef2 2s cubic-bezier(0.4, 0, 0.2, 1) infinite}.modal-mask .play-pause--paused .progress-ring__circle[data-v-9c792ef2]{animation-play-state:paused !important}@keyframes progressring-data-v-9c792ef2{from{stroke-dashoffset:94.24778}to{stroke-dashoffset:0}}@keyframes breath-data-v-9c792ef2{0%{opacity:1}50%{opacity:0}100%{opacity:1}}\\n',\"\"])},function(t,e,n){\"use strict\";var i=n(62);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,\".option[data-v-30d8da34]{display:flex;align-items:center;width:100%;height:32px}.option__avatar[data-v-30d8da34]{flex:0 0 32px;width:32px;height:32px;margin-right:6px}.option__desc[data-v-30d8da34]{display:flex;flex:1 1;flex-direction:column;justify-content:center;min-width:0}.option__desc--lineone[data-v-30d8da34]{color:var(--color-text-light)}.option__desc--linetwo[data-v-30d8da34]{opacity:.7}.option__desc--lineone[data-v-30d8da34],.option__desc--linetwo[data-v-30d8da34]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.option__desc--lineone strong[data-v-30d8da34],.option__desc--linetwo strong[data-v-30d8da34]{font-weight:bold}.option__icon[data-v-30d8da34]{flex:0 0 44px;width:44px;height:44px;margin:-6px;opacity:.5;background-position:center;background-size:16px}\\n\",\"\"])},function(t,e,n){\"use strict\";var i=n(63);n.n(i).a},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,\".name-parts[data-v-c4325954]{display:flex;max-width:100%}.name-parts__first[data-v-c4325954]{overflow:hidden;text-overflow:ellipsis}.name-parts__first[data-v-c4325954],.name-parts__last[data-v-c4325954]{white-space:pre}.name-parts__first strong[data-v-c4325954],.name-parts__last strong[data-v-c4325954]{font-weight:bold}\\n\",\"\"])},function(t,e,n){var i=n(180);\"string\"==typeof i&&(i=[[t.i,i,\"\"]]),i.locals&&(t.exports=i.locals);(0,n(2).default)(\"b5985a26\",i,!0,{})},function(t,e,n){(t.exports=n(1)(!1)).push([t.i,\".multiselect[data-v-6673a70]{margin:0;padding:0 !important;display:inline-block;min-width:160px;position:relative;background-color:var(--color-main-background)}.multiselect[data-v-6673a70].multiselect--active input.multiselect__input{opacity:1 !important;cursor:text !important;border-radius:var(--border-radius) var(--border-radius) 0 0}.multiselect[data-v-6673a70].multiselect--active .multiselect__limit{display:none}.multiselect[data-v-6673a70].multiselect--active.multiselect--above input.multiselect__input{border-radius:0 0 var(--border-radius) var(--border-radius)}.multiselect[data-v-6673a70].multiselect--disabled,.multiselect[data-v-6673a70].multiselect--disabled .multiselect__single{background-color:var(--color-background-dark) !important}.multiselect[data-v-6673a70].icon-loading-small::after{left:100%;margin-left:-24px}.multiselect[data-v-6673a70] .multiselect__tags{display:flex;flex-wrap:nowrap;overflow:hidden;border:1px solid var(--color-border-dark);cursor:pointer;position:relative;border-radius:3px;height:34px}.multiselect[data-v-6673a70] .multiselect__tags .multiselect__tags-wrap{align-items:center;display:inline-flex;overflow:hidden;max-width:100%;position:relative;padding:3px 5px;flex-grow:1}.multiselect[data-v-6673a70] .multiselect__tags .multiselect__tags-wrap:empty ~ input.multiselect__input{opacity:1 !important}.multiselect[data-v-6673a70] .multiselect__tags .multiselect__tags-wrap:empty ~ input.multiselect__input+span:not(.multiselect__single){display:none}.multiselect[data-v-6673a70] .multiselect__tags .multiselect__tags-wrap .multiselect__tag{flex:1 0 0;line-height:20px;padding:1px 5px;background-image:none;color:var(--color-text-lighter);border:1px solid var(--color-border-dark);display:inline-flex;align-items:center;border-radius:3px;min-width:0;max-width:50%;max-width:fit-content;max-width:-moz-fit-content}.multiselect[data-v-6673a70] .multiselect__tags .multiselect__tags-wrap .multiselect__tag:only-child{flex:0 1 auto}.multiselect[data-v-6673a70] .multiselect__tags .multiselect__tags-wrap .multiselect__tag:not(:last-child){margin-right:5px}.multiselect[data-v-6673a70] .multiselect__tags .multiselect__tags-wrap .multiselect__tag>span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.multiselect[data-v-6673a70] .multiselect__tags .multiselect__single,.multiselect[data-v-6673a70] .multiselect__tags .multiselect__placeholder{padding:7px 6px;flex:0 0 100%;z-index:1;background-color:var(--color-main-background);cursor:pointer;line-height:18px;color:var(--color-text-lighter)}.multiselect[data-v-6673a70] .multiselect__tags .multiselect__strong,.multiselect[data-v-6673a70] .multiselect__tags .multiselect__limit{flex:0 0 auto;line-height:20px;color:var(--color-text-lighter);display:inline-flex;align-items:center;opacity:.7;margin-right:5px;z-index:5}.multiselect[data-v-6673a70] .multiselect__tags input.multiselect__input{width:100% !important;position:absolute !important;top:0;left:0;margin:0;opacity:0;height:100%;border:none;display:block !important;cursor:pointer;padding:7px 6px !important}.multiselect[data-v-6673a70] .multiselect__content-wrapper{position:absolute;width:100%;margin-top:-1px;border:1px solid var(--color-border-dark);background:var(--color-main-background);z-index:50;max-height:250px;overflow-y:auto;border-radius:0 0 var(--border-radius) var(--border-radius)}.multiselect[data-v-6673a70] .multiselect__content-wrapper .multiselect__content{width:100%;padding:0}.multiselect[data-v-6673a70] .multiselect__content-wrapper li{position:relative;display:flex;align-items:center;background-color:transparent}.multiselect[data-v-6673a70] .multiselect__content-wrapper li,.multiselect[data-v-6673a70] .multiselect__content-wrapper li span{cursor:pointer}.multiselect[data-v-6673a70] .multiselect__content-wrapper li>span{padding:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:0;height:auto;min-height:1em;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:inline-flex;align-items:center;background-color:transparent;color:var(--color-text-lighter);width:100%}.multiselect[data-v-6673a70] .multiselect__content-wrapper li>span::before{content:' ';background-repeat:no-repeat;background-position:center;min-width:16px;min-height:16px;display:block;opacity:.5;margin-right:5px;visibility:hidden}.multiselect[data-v-6673a70] .multiselect__content-wrapper li>span.multiselect__option--disabled{background-color:var(--color-background-dark);opacity:.5}.multiselect[data-v-6673a70] .multiselect__content-wrapper li>span.multiselect__option--highlight{color:var(--color-main-text);background-color:var(--color-background-dark)}.multiselect[data-v-6673a70] .multiselect__content-wrapper li>span:not(.multiselect__option--disabled):hover::before{opacity:.3}.multiselect[data-v-6673a70] .multiselect__content-wrapper li>span.multiselect__option--selected::before,.multiselect[data-v-6673a70] .multiselect__content-wrapper li>span:not(.multiselect__option--disabled):hover::before{visibility:visible}.multiselect[data-v-6673a70].multiselect--above .multiselect__content-wrapper{bottom:100%;margin-bottom:-1px}.multiselect[data-v-6673a70].multiselect--multiple .multiselect__content-wrapper li>span::before{background-image:var(--icon-checkmark-000)}.multiselect[data-v-6673a70].multiselect--multiple .multiselect__content-wrapper li>span[data-select='create']::before{background-image:var(--icon-add-000);visibility:visible}.multiselect[data-v-6673a70].multiselect--single .multiselect__content-wrapper li>span::before{display:none}.multiselect[data-v-6673a70]:hover .multiselect__placeholder,.multiselect[data-v-6673a70] input.multiselect__input .multiselect__placeholder{color:var(--color-main-text)}\\n\",\"\"])},function(t,e){t.exports=function(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}},function(t,e,n){\"use strict\";n.r(e);var i={};n.r(i),n.d(i,\"ActionButton\",function(){return r.default}),n.d(i,\"ActionCheckbox\",function(){return s.default}),n.d(i,\"ActionInput\",function(){return c.default}),n.d(i,\"ActionLink\",function(){return l.default}),n.d(i,\"ActionRouter\",function(){return u.default}),n.d(i,\"ActionText\",function(){return d.default}),n.d(i,\"ActionTextEditable\",function(){return p.default}),n.d(i,\"Actions\",function(){return f.default}),n.d(i,\"AppContent\",function(){return h.default}),n.d(i,\"AppContentDetails\",function(){return A.default}),n.d(i,\"AppContentList\",function(){return v.default}),n.d(i,\"AppNavigation\",function(){return m.default}),n.d(i,\"AppNavigationCaption\",function(){return g.default}),n.d(i,\"AppNavigationCounter\",function(){return b.default}),n.d(i,\"AppNavigationItem\",function(){return y.default}),n.d(i,\"AppNavigationNew\",function(){return x.default}),n.d(i,\"AppNavigationSettings\",function(){return w.default}),n.d(i,\"AppNavigationSpacer\",function(){return _.default}),n.d(i,\"AppSidebar\",function(){return T.default}),n.d(i,\"AppSidebarTab\",function(){return k.default}),n.d(i,\"Avatar\",function(){return C.default}),n.d(i,\"Content\",function(){return E.default}),n.d(i,\"DatetimePicker\",function(){return M.default}),n.d(i,\"Modal\",function(){return S.default}),n.d(i,\"Multiselect\",function(){return D.default}),n.d(i,\"PopoverMenu\",function(){return O.default});var o=n(181),a=n.n(o),r=n(65),s=n(127),c=n(128),l=n(129),u=n(130),d=n(131),p=n(132),f=n(30),h=n(133),A=n(134),v=n(135),m=n(136),g=n(137),b=n(67),y=n(138),x=n(139),w=n(140),_=n(141),T=n(142),k=n(143),C=n(64),E=n(144),M=n(66),S=n(126),D=n(125),O=n(24),B=n(6),I=n(123),N=n(124);function L(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,i)}return n}\n/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nfunction P(t){Object.values(i).forEach(function(e){t.component(e.name,e)})}\n/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */n.d(e,\"ActionButton\",function(){return r.default}),n.d(e,\"ActionCheckbox\",function(){return s.default}),n.d(e,\"ActionInput\",function(){return c.default}),n.d(e,\"ActionLink\",function(){return l.default}),n.d(e,\"ActionRouter\",function(){return u.default}),n.d(e,\"ActionText\",function(){return d.default}),n.d(e,\"ActionTextEditable\",function(){return p.default}),n.d(e,\"Actions\",function(){return f.default}),n.d(e,\"AppContent\",function(){return h.default}),n.d(e,\"AppContentDetails\",function(){return A.default}),n.d(e,\"AppContentList\",function(){return v.default}),n.d(e,\"AppNavigation\",function(){return m.default}),n.d(e,\"AppNavigationCaption\",function(){return g.default}),n.d(e,\"AppNavigationCounter\",function(){return b.default}),n.d(e,\"AppNavigationItem\",function(){return y.default}),n.d(e,\"AppNavigationNew\",function(){return x.default}),n.d(e,\"AppNavigationSettings\",function(){return w.default}),n.d(e,\"AppNavigationSpacer\",function(){return _.default}),n.d(e,\"AppSidebar\",function(){return T.default}),n.d(e,\"AppSidebarTab\",function(){return k.default}),n.d(e,\"Avatar\",function(){return C.default}),n.d(e,\"Content\",function(){return E.default}),n.d(e,\"DatetimePicker\",function(){return M.default}),n.d(e,\"Modal\",function(){return S.default}),n.d(e,\"Multiselect\",function(){return D.default}),n.d(e,\"PopoverMenu\",function(){return O.default}),n.d(e,\"Tooltip\",function(){return B.default}),n.d(e,\"isFullscreen\",function(){return I.default}),n.d(e,\"isMobile\",function(){return N.default}),\"undefined\"!=typeof window&&window.Vue&&P(window.Vue);e.default=function(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?L(n,!0).forEach(function(e){a()(t,e,n[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):L(n).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}({install:P},i)}])});\n//# sourceMappingURL=ncvuecomponents.js.map","!function(e,r){if(\"object\"==typeof exports&&\"object\"==typeof module)module.exports=r();else if(\"function\"==typeof define&&define.amd)define([],r);else{var n=r();for(var o in n)(\"object\"==typeof exports?exports:e)[o]=n[o]}}(window,function(){return function(e){var r={};function n(o){if(r[o])return r[o].exports;var t=r[o]={i:o,l:!1,exports:{}};return e[o].call(t.exports,t,t.exports,n),t.l=!0,t.exports}return n.m=e,n.c=r,n.d=function(e,r,o){n.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:o})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,r){if(1&r&&(e=n(e)),8&r)return e;if(4&r&&\"object\"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,\"default\",{enumerable:!0,value:e}),2&r&&\"string\"!=typeof e)for(var t in e)n.d(o,t,function(r){return e[r]}.bind(null,t));return o},n.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(r,\"a\",r),r},n.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},n.p=\"\",n(n.s=0)}([function(e,r,n){\"use strict\";function o(){return\"undefined\"==typeof OC?Promise.reject(new Error(\"OC not defined\")):void 0===OC.PasswordConfirmation?Promise.reject(new Error(\"OC.PasswordConfirmation not defined\")):OC.PasswordConfirmation.requiresPasswordConfirmation()?new Promise(function(e,r){OC.PasswordConfirmation.requirePasswordConfirmation(e,{},r)}):Promise.resolve()}n.r(r),n.d(r,\"default\",function(){return o})}])});\n//# sourceMappingURL=main.js.map","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.15.0\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nvar longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nvar timeoutDuration = 0;\nfor (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n timeoutDuration = 1;\n break;\n }\n}\n\nfunction microtaskDebounce(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\n }\n called = true;\n window.Promise.resolve().then(function () {\n called = false;\n fn();\n });\n };\n}\n\nfunction taskDebounce(fn) {\n var scheduled = false;\n return function () {\n if (!scheduled) {\n scheduled = true;\n setTimeout(function () {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nfunction isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n var window = element.ownerDocument.defaultView;\n var css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nfunction getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body;\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body;\n case '#document':\n return element.body;\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n\n var _getStyleComputedProp = getStyleComputedProperty(element),\n overflow = _getStyleComputedProp.overflow,\n overflowX = _getStyleComputedProp.overflowX,\n overflowY = _getStyleComputedProp.overflowY;\n\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nfunction isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nfunction getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n var noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n var offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n var nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY') {\n return false;\n }\n return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nfunction findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n var start = order ? element1 : element2;\n var end = order ? element2 : element1;\n\n // Get common ancestor container\n var range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n var commonAncestorContainer = range.commonAncestorContainer;\n\n // Both nodes are inside #document\n\n if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n var element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nfunction getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\n var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n var html = element.ownerDocument.documentElement;\n var scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nfunction includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n var modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nfunction getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return parseFloat(styles['border' + sideA + 'Width'], 10) + parseFloat(styles['border' + sideB + 'Width'], 10);\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n}\n\nfunction getWindowSizes(document) {\n var body = document.body;\n var html = document.documentElement;\n var computedStyle = isIE(10) && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nfunction getClientRect(offsets) {\n return _extends({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n });\n}\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nfunction getBoundingClientRect(element) {\n var rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } else {\n rect = element.getBoundingClientRect();\n }\n } catch (e) {}\n\n var result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n\n // subtract scrollbar size from sizes\n var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n var width = sizes.width || element.clientWidth || result.right - result.left;\n var height = sizes.height || element.clientHeight || result.bottom - result.top;\n\n var horizScrollbar = element.offsetWidth - width;\n var vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n var styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var isIE10 = isIE(10);\n var isHTML = parent.nodeName === 'HTML';\n var childrenRect = getBoundingClientRect(children);\n var parentRect = getBoundingClientRect(parent);\n var scrollParent = getScrollParent(children);\n\n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = parseFloat(styles.borderTopWidth, 10);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n var offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n var marginTop = parseFloat(styles.marginTop, 10);\n var marginLeft = parseFloat(styles.marginLeft, 10);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var html = element.ownerDocument.documentElement;\n var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n var width = Math.max(html.clientWidth, window.innerWidth || 0);\n var height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n var scrollTop = !excludeScroll ? getScroll(html) : 0;\n var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n var offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width: width,\n height: height\n };\n\n return getClientRect(offset);\n}\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nfunction isFixed(element) {\n var nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n var parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\n\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nfunction getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n var el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n}\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n // NOTE: 1 DOM access here\n\n var boundaries = { top: 0, left: 0 };\n var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n } else {\n // Handle other cases based on DOM element used as boundaries\n var boundariesNode = void 0;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n height = _getWindowSizes.height,\n width = _getWindowSizes.width;\n\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n padding = padding || 0;\n var isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n\n return boundaries;\n}\n\nfunction getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n\n var rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height\n }\n };\n\n var sortedAreas = Object.keys(rects).map(function (key) {\n return _extends({\n key: key\n }, rects[key], {\n area: getArea(rects[key])\n });\n }).sort(function (a, b) {\n return b.area - a.area;\n });\n\n var filteredAreas = sortedAreas.filter(function (_ref2) {\n var width = _ref2.width,\n height = _ref2.height;\n return width >= popper.clientWidth && height >= popper.clientHeight;\n });\n\n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n var variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? '-' + variation : '');\n}\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nfunction getReferenceOffsets(state, popper, reference) {\n var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nfunction getOuterSizes(element) {\n var window = element.ownerDocument.defaultView;\n var styles = window.getComputedStyle(element);\n var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n var result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x\n };\n return result;\n}\n\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nfunction getOppositePlacement(placement) {\n var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n var popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n var popperOffsets = {\n width: popperRect.width,\n height: popperRect.height\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n var mainSide = isHoriz ? 'top' : 'left';\n var secondarySide = isHoriz ? 'left' : 'top';\n var measurement = isHoriz ? 'height' : 'width';\n var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(function (cur) {\n return cur[prop] === value;\n });\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n var match = find(arr, function (obj) {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n}\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nfunction runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(function (modifier) {\n if (modifier['function']) {\n // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nfunction update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n var data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {}\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n\n data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nfunction isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(function (_ref) {\n var name = _ref.name,\n enabled = _ref.enabled;\n return enabled && name === modifierName;\n });\n}\n\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nfunction getSupportedPropertyName(property) {\n var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (var i = 0; i < prefixes.length; i++) {\n var prefix = prefixes[i];\n var toCheck = prefix ? '' + prefix + upperProp : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nfunction destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicity asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nfunction getWindow(element) {\n var ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n var isBody = scrollParent.nodeName === 'BODY';\n var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n var scrollElement = getScrollParent(reference);\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nfunction enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(function (target) {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nfunction disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setStyles(element, styles) {\n Object.keys(styles).forEach(function (prop) {\n var unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function (prop) {\n var value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nfunction applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n // compute reference element offsets\n var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\n\n/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nfunction getRoundedOffsets(data, shouldRound) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var round = Math.round,\n floor = Math.floor;\n\n var noRound = function noRound(v) {\n return v;\n };\n\n var referenceWidth = round(reference.width);\n var popperWidth = round(popper.width);\n\n var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n var isVariation = data.placement.indexOf('-') !== -1;\n var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n var verticalToInteger = !shouldRound ? noRound : round;\n\n return {\n left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right)\n };\n}\n\nvar isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeStyle(data, options) {\n var x = options.x,\n y = options.y;\n var popper = data.offsets.popper;\n\n // Remove this legacy support in Popper.js v2\n\n var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'applyStyle';\n }).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n }\n var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n var styles = {\n position: popper.position\n };\n\n var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n\n var sideA = x === 'bottom' ? 'top' : 'bottom';\n var sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n var prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n var left = void 0,\n top = void 0;\n if (sideA === 'bottom') {\n // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n var invertTop = sideA === 'bottom' ? -1 : 1;\n var invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = sideA + ', ' + sideB;\n }\n\n // Attributes\n var attributes = {\n 'x-placement': data.placement\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n return data;\n}\n\n/**\n * Helper used to know if the given modifier depends from another one.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\n\n var isRequired = !!requesting && modifiers.some(function (modifier) {\n return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n });\n\n if (!isRequired) {\n var _requesting = '`' + requestingName + '`';\n var requested = '`' + requestedName + '`';\n console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n }\n return isRequired;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction arrow(data, options) {\n var _data$offsets$arrow;\n\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n var arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn('WARNING: `arrow.element` must be child of its popper element!');\n return data;\n }\n }\n\n var placement = data.placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n var len = isVertical ? 'height' : 'width';\n var sideCapitalized = isVertical ? 'Top' : 'Left';\n var side = sideCapitalized.toLowerCase();\n var altSide = isVertical ? 'left' : 'top';\n var opSide = isVertical ? 'bottom' : 'right';\n var arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n var css = getStyleComputedProperty(data.instance.popper);\n var popperMarginSide = parseFloat(css['margin' + sideCapitalized], 10);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width'], 10);\n var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n\n return data;\n}\n\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nfunction getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n\n/**\n * List of accepted placements to use as values of the `placement` option.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nfunction clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var index = validPlacements.indexOf(placement);\n var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise'\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n\n var flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach(function (step, index) {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n var popperOffsets = data.offsets.popper;\n var refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n var floor = Math.floor;\n var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n\n var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n // flip the variation if required\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n // flips variation if reference element overflows boundaries\n var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n // flips variation if popper content overflows boundaries\n var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop);\n\n var flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var placement = data.placement.split('-')[0];\n var floor = Math.floor;\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var side = isVertical ? 'right' : 'bottom';\n var opSide = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n var value = +split[1];\n var unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n var element = void 0;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n var rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n var size = void 0;\n if (unit === 'vh') {\n size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n } else {\n size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n var offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n return frag.trim();\n });\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n var divider = fragments.indexOf(find(fragments, function (frag) {\n return frag.search(/,|\\s/) !== -1;\n }));\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n var splitRegex = /\\s*,\\s*|\\s+/;\n var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map(function (op, index) {\n // Most of the units rely on the orientation of the popper\n var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n var mergeWithPrevious = false;\n return op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce(function (a, b) {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(function (str) {\n return toValue(str, measurement, popperOffsets, referenceOffsets);\n });\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach(function (op, index) {\n op.forEach(function (frag, index2) {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nfunction offset(data, _ref) {\n var offset = _ref.offset;\n var placement = data.placement,\n _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var basePlacement = placement.split('-')[0];\n\n var offsets = void 0;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction preventOverflow(data, options) {\n var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n var transformProp = getSupportedPropertyName('transform');\n var popperStyles = data.instance.popper.style; // assignment to help minification\n var top = popperStyles.top,\n left = popperStyles.left,\n transform = popperStyles[transformProp];\n\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n var order = options.priority;\n var popper = data.offsets.popper;\n\n var check = {\n primary: function primary(placement) {\n var value = popper[placement];\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return defineProperty({}, placement, value);\n },\n secondary: function secondary(placement) {\n var mainSide = placement === 'right' ? 'left' : 'top';\n var value = popper[mainSide];\n if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n return defineProperty({}, mainSide, value);\n }\n };\n\n order.forEach(function (placement) {\n var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = _extends({}, popper, check[side](placement));\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction shift(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n var _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n\n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n var shiftOffsets = {\n start: defineProperty({}, side, reference[side]),\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n var refRect = data.offsets.reference;\n var bound = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'preventOverflow';\n }).boundaries;\n\n if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction inner(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nvar modifiers = {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.<br />\n * It will read the variation of the `placement` property.<br />\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.<br />\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.<br />\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.<br />\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.<br />\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent'\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]'\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport',\n /**\n * @prop {Boolean} flipVariations=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the reference element overlaps its boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariations: false,\n /**\n * @prop {Boolean} flipVariationsByContent=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the popper element overlaps its reference boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariationsByContent: false\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right'\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined\n }\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overridden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nvar Defaults = {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: function onCreate() {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: function onUpdate() {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers: modifiers\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\nvar Popper = function () {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {Element|referenceObject} reference - The reference element used to position the popper\n * @param {Element} popper - The HTML / XML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n function Popper(reference, popper) {\n var _this = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, Popper);\n\n this.scheduleUpdate = function () {\n return requestAnimationFrame(_this.update);\n };\n\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = _extends({}, Popper.Defaults, options);\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: []\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n return _extends({\n name: name\n }, _this.options.modifiers[name]);\n })\n // sort the modifiers by order\n .sort(function (a, b) {\n return a.order - b.order;\n });\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(function (modifierOptions) {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n var eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n\n\n createClass(Popper, [{\n key: 'update',\n value: function update$$1() {\n return update.call(this);\n }\n }, {\n key: 'destroy',\n value: function destroy$$1() {\n return destroy.call(this);\n }\n }, {\n key: 'enableEventListeners',\n value: function enableEventListeners$$1() {\n return enableEventListeners.call(this);\n }\n }, {\n key: 'disableEventListeners',\n value: function disableEventListeners$$1() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n\n }]);\n return Popper;\n}();\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.<br />\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\n\nexport default Popper;\n//# sourceMappingURL=popper.js.map\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (useSourceMap) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item, useSourceMap);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \"{\").concat(content, \"}\");\n }\n\n return content;\n }).join('');\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery) {\n if (typeof modules === 'string') {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, '']];\n }\n\n var alreadyImportedModules = {};\n\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = modules[_i]; // skip already imported module\n // this implementation is not 100% perfect for weird media query combinations\n // when a module is imported multiple times with different media queries.\n // I hope this will never occur (Hey this way we have smaller bundles)\n\n if (item[0] == null || !alreadyImportedModules[item[0]]) {\n if (mediaQuery && !item[2]) {\n item[2] = mediaQuery;\n } else if (mediaQuery) {\n item[2] = \"(\".concat(item[2], \") and (\").concat(mediaQuery, \")\");\n }\n\n list.push(item);\n }\n }\n };\n\n return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring\n\n var cssMapping = item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (useSourceMap && typeof btoa === 'function') {\n var sourceMapping = toComment(cssMapping);\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot).concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n }\n\n return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n return \"/*# \".concat(data, \" */\");\n}","\"use strict\";\n\nvar stylesInDom = {};\n\nvar isOldIE = function isOldIE() {\n var memo;\n return function memorize() {\n if (typeof memo === 'undefined') {\n // Test for IE <= 9 as proposed by Browserhacks\n // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n // Tests for existence of standard globals is to allow style-loader\n // to operate correctly into non-standard environments\n // @see https://github.com/webpack-contrib/style-loader/issues/177\n memo = Boolean(window && document && document.all && !window.atob);\n }\n\n return memo;\n };\n}();\n\nvar getTarget = function getTarget() {\n var memo = {};\n return function memorize(target) {\n if (typeof memo[target] === 'undefined') {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n };\n}();\n\nfunction listToStyles(list, options) {\n var styles = [];\n var newStyles = {};\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var css = item[1];\n var media = item[2];\n var sourceMap = item[3];\n var part = {\n css: css,\n media: media,\n sourceMap: sourceMap\n };\n\n if (!newStyles[id]) {\n styles.push(newStyles[id] = {\n id: id,\n parts: [part]\n });\n } else {\n newStyles[id].parts.push(part);\n }\n }\n\n return styles;\n}\n\nfunction addStylesToDom(styles, options) {\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i];\n var domStyle = stylesInDom[item.id];\n var j = 0;\n\n if (domStyle) {\n domStyle.refs++;\n\n for (; j < domStyle.parts.length; j++) {\n domStyle.parts[j](item.parts[j]);\n }\n\n for (; j < item.parts.length; j++) {\n domStyle.parts.push(addStyle(item.parts[j], options));\n }\n } else {\n var parts = [];\n\n for (; j < item.parts.length; j++) {\n parts.push(addStyle(item.parts[j], options));\n }\n\n stylesInDom[item.id] = {\n id: item.id,\n refs: 1,\n parts: parts\n };\n }\n }\n}\n\nfunction insertStyleElement(options) {\n var style = document.createElement('style');\n\n if (typeof options.attributes.nonce === 'undefined') {\n var nonce = typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n\n if (nonce) {\n options.attributes.nonce = nonce;\n }\n }\n\n Object.keys(options.attributes).forEach(function (key) {\n style.setAttribute(key, options.attributes[key]);\n });\n\n if (typeof options.insert === 'function') {\n options.insert(style);\n } else {\n var target = getTarget(options.insert || 'head');\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n }\n\n return style;\n}\n\nfunction removeStyleElement(style) {\n // istanbul ignore if\n if (style.parentNode === null) {\n return false;\n }\n\n style.parentNode.removeChild(style);\n}\n/* istanbul ignore next */\n\n\nvar replaceText = function replaceText() {\n var textStore = [];\n return function replace(index, replacement) {\n textStore[index] = replacement;\n return textStore.filter(Boolean).join('\\n');\n };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n var css = remove ? '' : obj.css; // For old IE\n\n /* istanbul ignore if */\n\n if (style.styleSheet) {\n style.styleSheet.cssText = replaceText(index, css);\n } else {\n var cssNode = document.createTextNode(css);\n var childNodes = style.childNodes;\n\n if (childNodes[index]) {\n style.removeChild(childNodes[index]);\n }\n\n if (childNodes.length) {\n style.insertBefore(cssNode, childNodes[index]);\n } else {\n style.appendChild(cssNode);\n }\n }\n}\n\nfunction applyToTag(style, options, obj) {\n var css = obj.css;\n var media = obj.media;\n var sourceMap = obj.sourceMap;\n\n if (media) {\n style.setAttribute('media', media);\n }\n\n if (sourceMap && btoa) {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n while (style.firstChild) {\n style.removeChild(style.firstChild);\n }\n\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n var style;\n var update;\n var remove;\n\n if (options.singleton) {\n var styleIndex = singletonCounter++;\n style = singleton || (singleton = insertStyleElement(options));\n update = applyToSingletonTag.bind(null, style, styleIndex, false);\n remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n } else {\n style = insertStyleElement(options);\n update = applyToTag.bind(null, style, options);\n\n remove = function remove() {\n removeStyleElement(style);\n };\n }\n\n update(obj);\n return function updateStyle(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n return;\n }\n\n update(obj = newObj);\n } else {\n remove();\n }\n };\n}\n\nmodule.exports = function (list, options) {\n options = options || {};\n options.attributes = typeof options.attributes === 'object' ? options.attributes : {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n // tags it will allow on a page\n\n if (!options.singleton && typeof options.singleton !== 'boolean') {\n options.singleton = isOldIE();\n }\n\n var styles = listToStyles(list, options);\n addStylesToDom(styles, options);\n return function update(newList) {\n var mayRemove = [];\n\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i];\n var domStyle = stylesInDom[item.id];\n\n if (domStyle) {\n domStyle.refs--;\n mayRemove.push(domStyle);\n }\n }\n\n if (newList) {\n var newStyles = listToStyles(newList, options);\n addStylesToDom(newStyles, options);\n }\n\n for (var _i = 0; _i < mayRemove.length; _i++) {\n var _domStyle = mayRemove[_i];\n\n if (_domStyle.refs === 0) {\n for (var j = 0; j < _domStyle.parts.length; j++) {\n _domStyle.parts[j]();\n }\n\n delete stylesInDom[_domStyle.id];\n }\n }\n };\n};","var scope = (typeof global !== \"undefined\" && global) ||\n (typeof self !== \"undefined\" && self) ||\n window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n (typeof global !== \"undefined\" && global.setImmediate) ||\n (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n (typeof global !== \"undefined\" && global.clearImmediate) ||\n (this && this.clearImmediate);\n","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n }\n\n // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n // Don't get fooled by e.g. browserify environments.\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n\nmodule.exports = function isBuffer (obj) {\n return obj != null && obj.constructor != null &&\n typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n config.method = config.method ? config.method.toLowerCase() : 'get';\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar isAbsoluteURL = require('./../helpers/isAbsoluteURL');\nvar combineURLs = require('./../helpers/combineURLs');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Support baseURL config\n if (config.baseURL && !isAbsoluteURL(config.url)) {\n config.url = combineURLs(config.baseURL, config.url);\n }\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers || {}\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData(\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData(\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","import Popper from 'popper.js';\nimport { ResizeObserver } from 'vue-resize';\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nvar SVGAnimatedString = function SVGAnimatedString() {};\n\nif (typeof window !== 'undefined') {\n SVGAnimatedString = window.SVGAnimatedString;\n}\n\nfunction convertToArray(value) {\n if (typeof value === 'string') {\n value = value.split(' ');\n }\n\n return value;\n}\n/**\n * Add classes to an element.\n * This method checks to ensure that the classes don't already exist before adding them.\n * It uses el.className rather than classList in order to be IE friendly.\n * @param {object} el - The element to add the classes to.\n * @param {classes} string - List of space separated classes to be added to the element.\n */\n\nfunction addClasses(el, classes) {\n var newClasses = convertToArray(classes);\n var classList;\n\n if (el.className instanceof SVGAnimatedString) {\n classList = convertToArray(el.className.baseVal);\n } else {\n classList = convertToArray(el.className);\n }\n\n newClasses.forEach(function (newClass) {\n if (classList.indexOf(newClass) === -1) {\n classList.push(newClass);\n }\n });\n\n if (el instanceof SVGElement) {\n el.setAttribute('class', classList.join(' '));\n } else {\n el.className = classList.join(' ');\n }\n}\n/**\n * Remove classes from an element.\n * It uses el.className rather than classList in order to be IE friendly.\n * @export\n * @param {any} el The element to remove the classes from.\n * @param {any} classes List of space separated classes to be removed from the element.\n */\n\nfunction removeClasses(el, classes) {\n var newClasses = convertToArray(classes);\n var classList;\n\n if (el.className instanceof SVGAnimatedString) {\n classList = convertToArray(el.className.baseVal);\n } else {\n classList = convertToArray(el.className);\n }\n\n newClasses.forEach(function (newClass) {\n var index = classList.indexOf(newClass);\n\n if (index !== -1) {\n classList.splice(index, 1);\n }\n });\n\n if (el instanceof SVGElement) {\n el.setAttribute('class', classList.join(' '));\n } else {\n el.className = classList.join(' ');\n }\n}\nvar supportsPassive = false;\n\nif (typeof window !== 'undefined') {\n supportsPassive = false;\n\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassive = true;\n }\n });\n window.addEventListener('test', null, opts);\n } catch (e) {}\n}\n\nvar DEFAULT_OPTIONS = {\n container: false,\n delay: 0,\n html: false,\n placement: 'top',\n title: '',\n template: '<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>',\n trigger: 'hover focus',\n offset: 0\n};\nvar openTooltips = [];\n\nvar Tooltip =\n/*#__PURE__*/\nfunction () {\n /**\n * Create a new Tooltip.js instance\n * @class Tooltip\n * @param {HTMLElement} reference - The DOM node used as reference of the tooltip (it can be a jQuery element).\n * @param {Object} options\n * @param {String} options.placement=bottom\n * Placement of the popper accepted values: `top(-start, -end), right(-start, -end), bottom(-start, -end),\n * left(-start, -end)`\n * @param {HTMLElement|String|false} options.container=false - Append the tooltip to a specific element.\n * @param {Number|Object} options.delay=0\n * Delay showing and hiding the tooltip (ms) - does not apply to manual trigger type.\n * If a number is supplied, delay is applied to both hide/show.\n * Object structure is: `{ show: 500, hide: 100 }`\n * @param {Boolean} options.html=false - Insert HTML into the tooltip. If false, the content will inserted with `innerText`.\n * @param {String|PlacementFunction} options.placement='top' - One of the allowed placements, or a function returning one of them.\n * @param {String} [options.template='<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>']\n * Base HTML to used when creating the tooltip.\n * The tooltip's `title` will be injected into the `.tooltip-inner` or `.tooltip__inner`.\n * `.tooltip-arrow` or `.tooltip__arrow` will become the tooltip's arrow.\n * The outermost wrapper element should have the `.tooltip` class.\n * @param {String|HTMLElement|TitleFunction} options.title='' - Default title value if `title` attribute isn't present.\n * @param {String} [options.trigger='hover focus']\n * How tooltip is triggered - click, hover, focus, manual.\n * You may pass multiple triggers; separate them with a space. `manual` cannot be combined with any other trigger.\n * @param {HTMLElement} options.boundariesElement\n * The element used as boundaries for the tooltip. For more information refer to Popper.js'\n * [boundariesElement docs](https://popper.js.org/popper-documentation.html)\n * @param {Number|String} options.offset=0 - Offset of the tooltip relative to its reference. For more information refer to Popper.js'\n * [offset docs](https://popper.js.org/popper-documentation.html)\n * @param {Object} options.popperOptions={} - Popper options, will be passed directly to popper instance. For more information refer to Popper.js'\n * [options docs](https://popper.js.org/popper-documentation.html)\n * @return {Object} instance - The generated tooltip instance\n */\n function Tooltip(_reference, _options) {\n var _this = this;\n\n _classCallCheck(this, Tooltip);\n\n _defineProperty(this, \"_events\", []);\n\n _defineProperty(this, \"_setTooltipNodeEvent\", function (evt, reference, delay, options) {\n var relatedreference = evt.relatedreference || evt.toElement || evt.relatedTarget;\n\n var callback = function callback(evt2) {\n var relatedreference2 = evt2.relatedreference || evt2.toElement || evt2.relatedTarget; // Remove event listener after call\n\n _this._tooltipNode.removeEventListener(evt.type, callback); // If the new reference is not the reference element\n\n\n if (!reference.contains(relatedreference2)) {\n // Schedule to hide tooltip\n _this._scheduleHide(reference, options.delay, options, evt2);\n }\n };\n\n if (_this._tooltipNode.contains(relatedreference)) {\n // listen to mouseleave on the tooltip element to be able to hide the tooltip\n _this._tooltipNode.addEventListener(evt.type, callback);\n\n return true;\n }\n\n return false;\n });\n\n // apply user options over default ones\n _options = _objectSpread({}, DEFAULT_OPTIONS, _options);\n _reference.jquery && (_reference = _reference[0]);\n this.show = this.show.bind(this);\n this.hide = this.hide.bind(this); // cache reference and options\n\n this.reference = _reference;\n this.options = _options; // set initial state\n\n this._isOpen = false;\n\n this._init();\n } //\n // Public methods\n //\n\n /**\n * Reveals an element's tooltip. This is considered a \"manual\" triggering of the tooltip.\n * Tooltips with zero-length titles are never displayed.\n * @method Tooltip#show\n * @memberof Tooltip\n */\n\n\n _createClass(Tooltip, [{\n key: \"show\",\n value: function show() {\n this._show(this.reference, this.options);\n }\n /**\n * Hides an element’s tooltip. This is considered a “manual” triggering of the tooltip.\n * @method Tooltip#hide\n * @memberof Tooltip\n */\n\n }, {\n key: \"hide\",\n value: function hide() {\n this._hide();\n }\n /**\n * Hides and destroys an element’s tooltip.\n * @method Tooltip#dispose\n * @memberof Tooltip\n */\n\n }, {\n key: \"dispose\",\n value: function dispose() {\n this._dispose();\n }\n /**\n * Toggles an element’s tooltip. This is considered a “manual” triggering of the tooltip.\n * @method Tooltip#toggle\n * @memberof Tooltip\n */\n\n }, {\n key: \"toggle\",\n value: function toggle() {\n if (this._isOpen) {\n return this.hide();\n } else {\n return this.show();\n }\n }\n }, {\n key: \"setClasses\",\n value: function setClasses(classes) {\n this._classes = classes;\n }\n }, {\n key: \"setContent\",\n value: function setContent(content) {\n this.options.title = content;\n\n if (this._tooltipNode) {\n this._setContent(content, this.options);\n }\n }\n }, {\n key: \"setOptions\",\n value: function setOptions(options) {\n var classesUpdated = false;\n var classes = options && options.classes || directive.options.defaultClass;\n\n if (this._classes !== classes) {\n this.setClasses(classes);\n classesUpdated = true;\n }\n\n options = getOptions(options);\n var needPopperUpdate = false;\n var needRestart = false;\n\n if (this.options.offset !== options.offset || this.options.placement !== options.placement) {\n needPopperUpdate = true;\n }\n\n if (this.options.template !== options.template || this.options.trigger !== options.trigger || this.options.container !== options.container || classesUpdated) {\n needRestart = true;\n }\n\n for (var key in options) {\n this.options[key] = options[key];\n }\n\n if (this._tooltipNode) {\n if (needRestart) {\n var isOpen = this._isOpen;\n this.dispose();\n\n this._init();\n\n if (isOpen) {\n this.show();\n }\n } else if (needPopperUpdate) {\n this.popperInstance.update();\n }\n }\n } //\n // Private methods\n //\n\n }, {\n key: \"_init\",\n value: function _init() {\n // get events list\n var events = typeof this.options.trigger === 'string' ? this.options.trigger.split(' ') : [];\n this._isDisposed = false;\n this._enableDocumentTouch = events.indexOf('manual') === -1;\n events = events.filter(function (trigger) {\n return ['click', 'hover', 'focus'].indexOf(trigger) !== -1;\n }); // set event listeners\n\n this._setEventListeners(this.reference, events, this.options); // title attribute\n\n\n this.$_originalTitle = this.reference.getAttribute('title');\n this.reference.removeAttribute('title');\n this.reference.setAttribute('data-original-title', this.$_originalTitle);\n }\n /**\n * Creates a new tooltip node\n * @memberof Tooltip\n * @private\n * @param {HTMLElement} reference\n * @param {String} template\n * @param {String|HTMLElement|TitleFunction} title\n * @param {Boolean} allowHtml\n * @return {HTMLelement} tooltipNode\n */\n\n }, {\n key: \"_create\",\n value: function _create(reference, template) {\n // create tooltip element\n var tooltipGenerator = window.document.createElement('div');\n tooltipGenerator.innerHTML = template.trim();\n var tooltipNode = tooltipGenerator.childNodes[0]; // add unique ID to our tooltip (needed for accessibility reasons)\n\n tooltipNode.id = \"tooltip_\".concat(Math.random().toString(36).substr(2, 10)); // Initially hide the tooltip\n // The attribute will be switched in a next frame so\n // CSS transitions can play\n\n tooltipNode.setAttribute('aria-hidden', 'true');\n\n if (this.options.autoHide && this.options.trigger.indexOf('hover') !== -1) {\n tooltipNode.addEventListener('mouseenter', this.hide);\n tooltipNode.addEventListener('click', this.hide);\n } // return the generated tooltip node\n\n\n return tooltipNode;\n }\n }, {\n key: \"_setContent\",\n value: function _setContent(content, options) {\n var _this2 = this;\n\n this.asyncContent = false;\n\n this._applyContent(content, options).then(function () {\n _this2.popperInstance.update();\n });\n }\n }, {\n key: \"_applyContent\",\n value: function _applyContent(title, options) {\n var _this3 = this;\n\n return new Promise(function (resolve, reject) {\n var allowHtml = options.html;\n var rootNode = _this3._tooltipNode;\n if (!rootNode) return;\n var titleNode = rootNode.querySelector(_this3.options.innerSelector);\n\n if (title.nodeType === 1) {\n // if title is a node, append it only if allowHtml is true\n if (allowHtml) {\n while (titleNode.firstChild) {\n titleNode.removeChild(titleNode.firstChild);\n }\n\n titleNode.appendChild(title);\n }\n } else if (typeof title === 'function') {\n // if title is a function, call it and set innerText or innerHtml depending by `allowHtml` value\n var result = title();\n\n if (result && typeof result.then === 'function') {\n _this3.asyncContent = true;\n options.loadingClass && addClasses(rootNode, options.loadingClass);\n\n if (options.loadingContent) {\n _this3._applyContent(options.loadingContent, options);\n }\n\n result.then(function (asyncResult) {\n options.loadingClass && removeClasses(rootNode, options.loadingClass);\n return _this3._applyContent(asyncResult, options);\n }).then(resolve).catch(reject);\n } else {\n _this3._applyContent(result, options).then(resolve).catch(reject);\n }\n\n return;\n } else {\n // if it's just a simple text, set innerText or innerHtml depending by `allowHtml` value\n allowHtml ? titleNode.innerHTML = title : titleNode.innerText = title;\n }\n\n resolve();\n });\n }\n }, {\n key: \"_show\",\n value: function _show(reference, options) {\n if (options && typeof options.container === 'string') {\n var container = document.querySelector(options.container);\n if (!container) return;\n }\n\n clearTimeout(this._disposeTimer);\n options = Object.assign({}, options);\n delete options.offset;\n var updateClasses = true;\n\n if (this._tooltipNode) {\n addClasses(this._tooltipNode, this._classes);\n updateClasses = false;\n }\n\n var result = this._ensureShown(reference, options);\n\n if (updateClasses && this._tooltipNode) {\n addClasses(this._tooltipNode, this._classes);\n }\n\n addClasses(reference, ['v-tooltip-open']);\n return result;\n }\n }, {\n key: \"_ensureShown\",\n value: function _ensureShown(reference, options) {\n var _this4 = this;\n\n // don't show if it's already visible\n if (this._isOpen) {\n return this;\n }\n\n this._isOpen = true;\n openTooltips.push(this); // if the tooltipNode already exists, just show it\n\n if (this._tooltipNode) {\n this._tooltipNode.style.display = '';\n\n this._tooltipNode.setAttribute('aria-hidden', 'false');\n\n this.popperInstance.enableEventListeners();\n this.popperInstance.update();\n\n if (this.asyncContent) {\n this._setContent(options.title, options);\n }\n\n return this;\n } // get title\n\n\n var title = reference.getAttribute('title') || options.title; // don't show tooltip if no title is defined\n\n if (!title) {\n return this;\n } // create tooltip node\n\n\n var tooltipNode = this._create(reference, options.template);\n\n this._tooltipNode = tooltipNode; // Add `aria-describedby` to our reference element for accessibility reasons\n\n reference.setAttribute('aria-describedby', tooltipNode.id); // append tooltip to container\n\n var container = this._findContainer(options.container, reference);\n\n this._append(tooltipNode, container);\n\n var popperOptions = _objectSpread({}, options.popperOptions, {\n placement: options.placement\n });\n\n popperOptions.modifiers = _objectSpread({}, popperOptions.modifiers, {\n arrow: {\n element: this.options.arrowSelector\n }\n });\n\n if (options.boundariesElement) {\n popperOptions.modifiers.preventOverflow = {\n boundariesElement: options.boundariesElement\n };\n }\n\n this.popperInstance = new Popper(reference, tooltipNode, popperOptions);\n\n this._setContent(title, options); // Fix position\n\n\n requestAnimationFrame(function () {\n if (!_this4._isDisposed && _this4.popperInstance) {\n _this4.popperInstance.update(); // Show the tooltip\n\n\n requestAnimationFrame(function () {\n if (!_this4._isDisposed) {\n _this4._isOpen && tooltipNode.setAttribute('aria-hidden', 'false');\n } else {\n _this4.dispose();\n }\n });\n } else {\n _this4.dispose();\n }\n });\n return this;\n }\n }, {\n key: \"_noLongerOpen\",\n value: function _noLongerOpen() {\n var index = openTooltips.indexOf(this);\n\n if (index !== -1) {\n openTooltips.splice(index, 1);\n }\n }\n }, {\n key: \"_hide\",\n value: function _hide()\n /* reference, options */\n {\n var _this5 = this;\n\n // don't hide if it's already hidden\n if (!this._isOpen) {\n return this;\n }\n\n this._isOpen = false;\n\n this._noLongerOpen(); // hide tooltipNode\n\n\n this._tooltipNode.style.display = 'none';\n\n this._tooltipNode.setAttribute('aria-hidden', 'true');\n\n this.popperInstance.disableEventListeners();\n clearTimeout(this._disposeTimer);\n var disposeTime = directive.options.disposeTimeout;\n\n if (disposeTime !== null) {\n this._disposeTimer = setTimeout(function () {\n if (_this5._tooltipNode) {\n _this5._tooltipNode.removeEventListener('mouseenter', _this5.hide);\n\n _this5._tooltipNode.removeEventListener('click', _this5.hide); // Don't remove popper instance, just the HTML element\n\n\n _this5._removeTooltipNode();\n }\n }, disposeTime);\n }\n\n removeClasses(this.reference, ['v-tooltip-open']);\n return this;\n }\n }, {\n key: \"_removeTooltipNode\",\n value: function _removeTooltipNode() {\n if (!this._tooltipNode) return;\n var parentNode = this._tooltipNode.parentNode;\n\n if (parentNode) {\n parentNode.removeChild(this._tooltipNode);\n this.reference.removeAttribute('aria-describedby');\n }\n\n this._tooltipNode = null;\n }\n }, {\n key: \"_dispose\",\n value: function _dispose() {\n var _this6 = this;\n\n this._isDisposed = true;\n this.reference.removeAttribute('data-original-title');\n\n if (this.$_originalTitle) {\n this.reference.setAttribute('title', this.$_originalTitle);\n } // remove event listeners first to prevent any unexpected behaviour\n\n\n this._events.forEach(function (_ref) {\n var func = _ref.func,\n event = _ref.event;\n\n _this6.reference.removeEventListener(event, func);\n });\n\n this._events = [];\n\n if (this._tooltipNode) {\n this._hide();\n\n this._tooltipNode.removeEventListener('mouseenter', this.hide);\n\n this._tooltipNode.removeEventListener('click', this.hide); // destroy instance\n\n\n this.popperInstance.destroy(); // destroy tooltipNode if removeOnDestroy is not set, as popperInstance.destroy() already removes the element\n\n if (!this.popperInstance.options.removeOnDestroy) {\n this._removeTooltipNode();\n }\n } else {\n this._noLongerOpen();\n }\n\n return this;\n }\n }, {\n key: \"_findContainer\",\n value: function _findContainer(container, reference) {\n // if container is a query, get the relative element\n if (typeof container === 'string') {\n container = window.document.querySelector(container);\n } else if (container === false) {\n // if container is `false`, set it to reference parent\n container = reference.parentNode;\n }\n\n return container;\n }\n /**\n * Append tooltip to container\n * @memberof Tooltip\n * @private\n * @param {HTMLElement} tooltip\n * @param {HTMLElement|String|false} container\n */\n\n }, {\n key: \"_append\",\n value: function _append(tooltipNode, container) {\n container.appendChild(tooltipNode);\n }\n }, {\n key: \"_setEventListeners\",\n value: function _setEventListeners(reference, events, options) {\n var _this7 = this;\n\n var directEvents = [];\n var oppositeEvents = [];\n events.forEach(function (event) {\n switch (event) {\n case 'hover':\n directEvents.push('mouseenter');\n oppositeEvents.push('mouseleave');\n if (_this7.options.hideOnTargetClick) oppositeEvents.push('click');\n break;\n\n case 'focus':\n directEvents.push('focus');\n oppositeEvents.push('blur');\n if (_this7.options.hideOnTargetClick) oppositeEvents.push('click');\n break;\n\n case 'click':\n directEvents.push('click');\n oppositeEvents.push('click');\n break;\n }\n }); // schedule show tooltip\n\n directEvents.forEach(function (event) {\n var func = function func(evt) {\n if (_this7._isOpen === true) {\n return;\n }\n\n evt.usedByTooltip = true;\n\n _this7._scheduleShow(reference, options.delay, options, evt);\n };\n\n _this7._events.push({\n event: event,\n func: func\n });\n\n reference.addEventListener(event, func);\n }); // schedule hide tooltip\n\n oppositeEvents.forEach(function (event) {\n var func = function func(evt) {\n if (evt.usedByTooltip === true) {\n return;\n }\n\n _this7._scheduleHide(reference, options.delay, options, evt);\n };\n\n _this7._events.push({\n event: event,\n func: func\n });\n\n reference.addEventListener(event, func);\n });\n }\n }, {\n key: \"_onDocumentTouch\",\n value: function _onDocumentTouch(event) {\n if (this._enableDocumentTouch) {\n this._scheduleHide(this.reference, this.options.delay, this.options, event);\n }\n }\n }, {\n key: \"_scheduleShow\",\n value: function _scheduleShow(reference, delay, options\n /*, evt */\n ) {\n var _this8 = this;\n\n // defaults to 0\n var computedDelay = delay && delay.show || delay || 0;\n clearTimeout(this._scheduleTimer);\n this._scheduleTimer = window.setTimeout(function () {\n return _this8._show(reference, options);\n }, computedDelay);\n }\n }, {\n key: \"_scheduleHide\",\n value: function _scheduleHide(reference, delay, options, evt) {\n var _this9 = this;\n\n // defaults to 0\n var computedDelay = delay && delay.hide || delay || 0;\n clearTimeout(this._scheduleTimer);\n this._scheduleTimer = window.setTimeout(function () {\n if (_this9._isOpen === false) {\n return;\n }\n\n if (!document.body.contains(_this9._tooltipNode)) {\n return;\n } // if we are hiding because of a mouseleave, we must check that the new\n // reference isn't the tooltip, because in this case we don't want to hide it\n\n\n if (evt.type === 'mouseleave') {\n var isSet = _this9._setTooltipNodeEvent(evt, reference, delay, options); // if we set the new event, don't hide the tooltip yet\n // the new event will take care to hide it if necessary\n\n\n if (isSet) {\n return;\n }\n }\n\n _this9._hide(reference, options);\n }, computedDelay);\n }\n }]);\n\n return Tooltip;\n}(); // Hide tooltips on touch devices\n\nif (typeof document !== 'undefined') {\n document.addEventListener('touchstart', function (event) {\n for (var i = 0; i < openTooltips.length; i++) {\n openTooltips[i]._onDocumentTouch(event);\n }\n }, supportsPassive ? {\n passive: true,\n capture: true\n } : true);\n}\n/**\n * Placement function, its context is the Tooltip instance.\n * @memberof Tooltip\n * @callback PlacementFunction\n * @param {HTMLElement} tooltip - tooltip DOM node.\n * @param {HTMLElement} reference - reference DOM node.\n * @return {String} placement - One of the allowed placement options.\n */\n\n/**\n * Title function, its context is the Tooltip instance.\n * @memberof Tooltip\n * @callback TitleFunction\n * @return {String} placement - The desired title.\n */\n\nvar state = {\n enabled: true\n};\nvar positions = ['top', 'top-start', 'top-end', 'right', 'right-start', 'right-end', 'bottom', 'bottom-start', 'bottom-end', 'left', 'left-start', 'left-end'];\nvar defaultOptions = {\n // Default tooltip placement relative to target element\n defaultPlacement: 'top',\n // Default CSS classes applied to the tooltip element\n defaultClass: 'vue-tooltip-theme',\n // Default CSS classes applied to the target element of the tooltip\n defaultTargetClass: 'has-tooltip',\n // Is the content HTML by default?\n defaultHtml: true,\n // Default HTML template of the tooltip element\n // It must include `tooltip-arrow` & `tooltip-inner` CSS classes (can be configured, see below)\n // Change if the classes conflict with other libraries (for example bootstrap)\n defaultTemplate: '<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>',\n // Selector used to get the arrow element in the tooltip template\n defaultArrowSelector: '.tooltip-arrow, .tooltip__arrow',\n // Selector used to get the inner content element in the tooltip template\n defaultInnerSelector: '.tooltip-inner, .tooltip__inner',\n // Delay (ms)\n defaultDelay: 0,\n // Default events that trigger the tooltip\n defaultTrigger: 'hover focus',\n // Default position offset (px)\n defaultOffset: 0,\n // Default container where the tooltip will be appended\n defaultContainer: 'body',\n defaultBoundariesElement: undefined,\n defaultPopperOptions: {},\n // Class added when content is loading\n defaultLoadingClass: 'tooltip-loading',\n // Displayed when tooltip content is loading\n defaultLoadingContent: '...',\n // Hide on mouseover tooltip\n autoHide: true,\n // Close tooltip on click on tooltip target?\n defaultHideOnTargetClick: true,\n // Auto destroy tooltip DOM nodes (ms)\n disposeTimeout: 5000,\n // Options for popover\n popover: {\n defaultPlacement: 'bottom',\n // Use the `popoverClass` prop for theming\n defaultClass: 'vue-popover-theme',\n // Base class (change if conflicts with other libraries)\n defaultBaseClass: 'tooltip popover',\n // Wrapper class (contains arrow and inner)\n defaultWrapperClass: 'wrapper',\n // Inner content class\n defaultInnerClass: 'tooltip-inner popover-inner',\n // Arrow class\n defaultArrowClass: 'tooltip-arrow popover-arrow',\n // Class added when popover is open\n defaultOpenClass: 'open',\n defaultDelay: 0,\n defaultTrigger: 'click',\n defaultOffset: 0,\n defaultContainer: 'body',\n defaultBoundariesElement: undefined,\n defaultPopperOptions: {},\n // Hides if clicked outside of popover\n defaultAutoHide: true,\n // Update popper on content resize\n defaultHandleResize: true\n }\n};\nfunction getOptions(options) {\n var result = {\n placement: typeof options.placement !== 'undefined' ? options.placement : directive.options.defaultPlacement,\n delay: typeof options.delay !== 'undefined' ? options.delay : directive.options.defaultDelay,\n html: typeof options.html !== 'undefined' ? options.html : directive.options.defaultHtml,\n template: typeof options.template !== 'undefined' ? options.template : directive.options.defaultTemplate,\n arrowSelector: typeof options.arrowSelector !== 'undefined' ? options.arrowSelector : directive.options.defaultArrowSelector,\n innerSelector: typeof options.innerSelector !== 'undefined' ? options.innerSelector : directive.options.defaultInnerSelector,\n trigger: typeof options.trigger !== 'undefined' ? options.trigger : directive.options.defaultTrigger,\n offset: typeof options.offset !== 'undefined' ? options.offset : directive.options.defaultOffset,\n container: typeof options.container !== 'undefined' ? options.container : directive.options.defaultContainer,\n boundariesElement: typeof options.boundariesElement !== 'undefined' ? options.boundariesElement : directive.options.defaultBoundariesElement,\n autoHide: typeof options.autoHide !== 'undefined' ? options.autoHide : directive.options.autoHide,\n hideOnTargetClick: typeof options.hideOnTargetClick !== 'undefined' ? options.hideOnTargetClick : directive.options.defaultHideOnTargetClick,\n loadingClass: typeof options.loadingClass !== 'undefined' ? options.loadingClass : directive.options.defaultLoadingClass,\n loadingContent: typeof options.loadingContent !== 'undefined' ? options.loadingContent : directive.options.defaultLoadingContent,\n popperOptions: _objectSpread({}, typeof options.popperOptions !== 'undefined' ? options.popperOptions : directive.options.defaultPopperOptions)\n };\n\n if (result.offset) {\n var typeofOffset = _typeof(result.offset);\n\n var offset = result.offset; // One value -> switch\n\n if (typeofOffset === 'number' || typeofOffset === 'string' && offset.indexOf(',') === -1) {\n offset = \"0, \".concat(offset);\n }\n\n if (!result.popperOptions.modifiers) {\n result.popperOptions.modifiers = {};\n }\n\n result.popperOptions.modifiers.offset = {\n offset: offset\n };\n }\n\n if (result.trigger && result.trigger.indexOf('click') !== -1) {\n result.hideOnTargetClick = false;\n }\n\n return result;\n}\nfunction getPlacement(value, modifiers) {\n var placement = value.placement;\n\n for (var i = 0; i < positions.length; i++) {\n var pos = positions[i];\n\n if (modifiers[pos]) {\n placement = pos;\n }\n }\n\n return placement;\n}\nfunction getContent(value) {\n var type = _typeof(value);\n\n if (type === 'string') {\n return value;\n } else if (value && type === 'object') {\n return value.content;\n } else {\n return false;\n }\n}\nfunction createTooltip(el, value) {\n var modifiers = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var content = getContent(value);\n var classes = typeof value.classes !== 'undefined' ? value.classes : directive.options.defaultClass;\n\n var opts = _objectSpread({\n title: content\n }, getOptions(_objectSpread({}, value, {\n placement: getPlacement(value, modifiers)\n })));\n\n var tooltip = el._tooltip = new Tooltip(el, opts);\n tooltip.setClasses(classes);\n tooltip._vueEl = el; // Class on target\n\n var targetClasses = typeof value.targetClasses !== 'undefined' ? value.targetClasses : directive.options.defaultTargetClass;\n el._tooltipTargetClasses = targetClasses;\n addClasses(el, targetClasses);\n return tooltip;\n}\nfunction destroyTooltip(el) {\n if (el._tooltip) {\n el._tooltip.dispose();\n\n delete el._tooltip;\n delete el._tooltipOldShow;\n }\n\n if (el._tooltipTargetClasses) {\n removeClasses(el, el._tooltipTargetClasses);\n delete el._tooltipTargetClasses;\n }\n}\nfunction bind(el, _ref) {\n var value = _ref.value,\n oldValue = _ref.oldValue,\n modifiers = _ref.modifiers;\n var content = getContent(value);\n\n if (!content || !state.enabled) {\n destroyTooltip(el);\n } else {\n var tooltip;\n\n if (el._tooltip) {\n tooltip = el._tooltip; // Content\n\n tooltip.setContent(content); // Options\n\n tooltip.setOptions(_objectSpread({}, value, {\n placement: getPlacement(value, modifiers)\n }));\n } else {\n tooltip = createTooltip(el, value, modifiers);\n } // Manual show\n\n\n if (typeof value.show !== 'undefined' && value.show !== el._tooltipOldShow) {\n el._tooltipOldShow = value.show;\n value.show ? tooltip.show() : tooltip.hide();\n }\n }\n}\nvar directive = {\n options: defaultOptions,\n bind: bind,\n update: bind,\n unbind: function unbind(el) {\n destroyTooltip(el);\n }\n};\n\nfunction addListeners(el) {\n el.addEventListener('click', onClick);\n el.addEventListener('touchstart', onTouchStart, supportsPassive ? {\n passive: true\n } : false);\n}\n\nfunction removeListeners(el) {\n el.removeEventListener('click', onClick);\n el.removeEventListener('touchstart', onTouchStart);\n el.removeEventListener('touchend', onTouchEnd);\n el.removeEventListener('touchcancel', onTouchCancel);\n}\n\nfunction onClick(event) {\n var el = event.currentTarget;\n event.closePopover = !el.$_vclosepopover_touch;\n event.closeAllPopover = el.$_closePopoverModifiers && !!el.$_closePopoverModifiers.all;\n}\n\nfunction onTouchStart(event) {\n if (event.changedTouches.length === 1) {\n var el = event.currentTarget;\n el.$_vclosepopover_touch = true;\n var touch = event.changedTouches[0];\n el.$_vclosepopover_touchPoint = touch;\n el.addEventListener('touchend', onTouchEnd);\n el.addEventListener('touchcancel', onTouchCancel);\n }\n}\n\nfunction onTouchEnd(event) {\n var el = event.currentTarget;\n el.$_vclosepopover_touch = false;\n\n if (event.changedTouches.length === 1) {\n var touch = event.changedTouches[0];\n var firstTouch = el.$_vclosepopover_touchPoint;\n event.closePopover = Math.abs(touch.screenY - firstTouch.screenY) < 20 && Math.abs(touch.screenX - firstTouch.screenX) < 20;\n event.closeAllPopover = el.$_closePopoverModifiers && !!el.$_closePopoverModifiers.all;\n }\n}\n\nfunction onTouchCancel(event) {\n var el = event.currentTarget;\n el.$_vclosepopover_touch = false;\n}\n\nvar vclosepopover = {\n bind: function bind(el, _ref) {\n var value = _ref.value,\n modifiers = _ref.modifiers;\n el.$_closePopoverModifiers = modifiers;\n\n if (typeof value === 'undefined' || value) {\n addListeners(el);\n }\n },\n update: function update(el, _ref2) {\n var value = _ref2.value,\n oldValue = _ref2.oldValue,\n modifiers = _ref2.modifiers;\n el.$_closePopoverModifiers = modifiers;\n\n if (value !== oldValue) {\n if (typeof value === 'undefined' || value) {\n addListeners(el);\n } else {\n removeListeners(el);\n }\n }\n },\n unbind: function unbind(el) {\n removeListeners(el);\n }\n};\n\nfunction getDefault(key) {\n var value = directive.options.popover[key];\n\n if (typeof value === 'undefined') {\n return directive.options[key];\n }\n\n return value;\n}\n\nvar isIOS = false;\n\nif (typeof window !== 'undefined' && typeof navigator !== 'undefined') {\n isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\n}\n\nvar openPopovers = [];\n\nvar Element = function Element() {};\n\nif (typeof window !== 'undefined') {\n Element = window.Element;\n}\n\nvar script = {\n name: 'VPopover',\n components: {\n ResizeObserver: ResizeObserver\n },\n props: {\n open: {\n type: Boolean,\n default: false\n },\n disabled: {\n type: Boolean,\n default: false\n },\n placement: {\n type: String,\n default: function _default() {\n return getDefault('defaultPlacement');\n }\n },\n delay: {\n type: [String, Number, Object],\n default: function _default() {\n return getDefault('defaultDelay');\n }\n },\n offset: {\n type: [String, Number],\n default: function _default() {\n return getDefault('defaultOffset');\n }\n },\n trigger: {\n type: String,\n default: function _default() {\n return getDefault('defaultTrigger');\n }\n },\n container: {\n type: [String, Object, Element, Boolean],\n default: function _default() {\n return getDefault('defaultContainer');\n }\n },\n boundariesElement: {\n type: [String, Element],\n default: function _default() {\n return getDefault('defaultBoundariesElement');\n }\n },\n popperOptions: {\n type: Object,\n default: function _default() {\n return getDefault('defaultPopperOptions');\n }\n },\n popoverClass: {\n type: [String, Array],\n default: function _default() {\n return getDefault('defaultClass');\n }\n },\n popoverBaseClass: {\n type: [String, Array],\n default: function _default() {\n return directive.options.popover.defaultBaseClass;\n }\n },\n popoverInnerClass: {\n type: [String, Array],\n default: function _default() {\n return directive.options.popover.defaultInnerClass;\n }\n },\n popoverWrapperClass: {\n type: [String, Array],\n default: function _default() {\n return directive.options.popover.defaultWrapperClass;\n }\n },\n popoverArrowClass: {\n type: [String, Array],\n default: function _default() {\n return directive.options.popover.defaultArrowClass;\n }\n },\n autoHide: {\n type: Boolean,\n default: function _default() {\n return directive.options.popover.defaultAutoHide;\n }\n },\n handleResize: {\n type: Boolean,\n default: function _default() {\n return directive.options.popover.defaultHandleResize;\n }\n },\n openGroup: {\n type: String,\n default: null\n },\n openClass: {\n type: [String, Array],\n default: function _default() {\n return directive.options.popover.defaultOpenClass;\n }\n }\n },\n data: function data() {\n return {\n isOpen: false,\n id: Math.random().toString(36).substr(2, 10)\n };\n },\n computed: {\n cssClass: function cssClass() {\n return _defineProperty({}, this.openClass, this.isOpen);\n },\n popoverId: function popoverId() {\n return \"popover_\".concat(this.id);\n }\n },\n watch: {\n open: function open(val) {\n if (val) {\n this.show();\n } else {\n this.hide();\n }\n },\n disabled: function disabled(val, oldVal) {\n if (val !== oldVal) {\n if (val) {\n this.hide();\n } else if (this.open) {\n this.show();\n }\n }\n },\n container: function container(val) {\n if (this.isOpen && this.popperInstance) {\n var popoverNode = this.$refs.popover;\n var reference = this.$refs.trigger;\n var container = this.$_findContainer(this.container, reference);\n\n if (!container) {\n console.warn('No container for popover', this);\n return;\n }\n\n container.appendChild(popoverNode);\n this.popperInstance.scheduleUpdate();\n }\n },\n trigger: function trigger(val) {\n this.$_removeEventListeners();\n this.$_addEventListeners();\n },\n placement: function placement(val) {\n var _this = this;\n\n this.$_updatePopper(function () {\n _this.popperInstance.options.placement = val;\n });\n },\n offset: '$_restartPopper',\n boundariesElement: '$_restartPopper',\n popperOptions: {\n handler: '$_restartPopper',\n deep: true\n }\n },\n created: function created() {\n this.$_isDisposed = false;\n this.$_mounted = false;\n this.$_events = [];\n this.$_preventOpen = false;\n },\n mounted: function mounted() {\n var popoverNode = this.$refs.popover;\n popoverNode.parentNode && popoverNode.parentNode.removeChild(popoverNode);\n this.$_init();\n\n if (this.open) {\n this.show();\n }\n },\n deactivated: function deactivated() {\n this.hide();\n },\n beforeDestroy: function beforeDestroy() {\n this.dispose();\n },\n methods: {\n show: function show() {\n var _this2 = this;\n\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n event = _ref2.event,\n _ref2$skipDelay = _ref2.skipDelay,\n _ref2$force = _ref2.force,\n force = _ref2$force === void 0 ? false : _ref2$force;\n\n if (force || !this.disabled) {\n this.$_scheduleShow(event);\n this.$emit('show');\n }\n\n this.$emit('update:open', true);\n this.$_beingShowed = true;\n requestAnimationFrame(function () {\n _this2.$_beingShowed = false;\n });\n },\n hide: function hide() {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n event = _ref3.event,\n _ref3$skipDelay = _ref3.skipDelay;\n\n this.$_scheduleHide(event);\n this.$emit('hide');\n this.$emit('update:open', false);\n },\n dispose: function dispose() {\n this.$_isDisposed = true;\n this.$_removeEventListeners();\n this.hide({\n skipDelay: true\n });\n\n if (this.popperInstance) {\n this.popperInstance.destroy(); // destroy tooltipNode if removeOnDestroy is not set, as popperInstance.destroy() already removes the element\n\n if (!this.popperInstance.options.removeOnDestroy) {\n var popoverNode = this.$refs.popover;\n popoverNode.parentNode && popoverNode.parentNode.removeChild(popoverNode);\n }\n }\n\n this.$_mounted = false;\n this.popperInstance = null;\n this.isOpen = false;\n this.$emit('dispose');\n },\n $_init: function $_init() {\n if (this.trigger.indexOf('manual') === -1) {\n this.$_addEventListeners();\n }\n },\n $_show: function $_show() {\n var _this3 = this;\n\n var reference = this.$refs.trigger;\n var popoverNode = this.$refs.popover;\n clearTimeout(this.$_disposeTimer); // Already open\n\n if (this.isOpen) {\n return;\n } // Popper is already initialized\n\n\n if (this.popperInstance) {\n this.isOpen = true;\n this.popperInstance.enableEventListeners();\n this.popperInstance.scheduleUpdate();\n }\n\n if (!this.$_mounted) {\n var container = this.$_findContainer(this.container, reference);\n\n if (!container) {\n console.warn('No container for popover', this);\n return;\n }\n\n container.appendChild(popoverNode);\n this.$_mounted = true;\n }\n\n if (!this.popperInstance) {\n var popperOptions = _objectSpread({}, this.popperOptions, {\n placement: this.placement\n });\n\n popperOptions.modifiers = _objectSpread({}, popperOptions.modifiers, {\n arrow: _objectSpread({}, popperOptions.modifiers && popperOptions.modifiers.arrow, {\n element: this.$refs.arrow\n })\n });\n\n if (this.offset) {\n var offset = this.$_getOffset();\n popperOptions.modifiers.offset = _objectSpread({}, popperOptions.modifiers && popperOptions.modifiers.offset, {\n offset: offset\n });\n }\n\n if (this.boundariesElement) {\n popperOptions.modifiers.preventOverflow = _objectSpread({}, popperOptions.modifiers && popperOptions.modifiers.preventOverflow, {\n boundariesElement: this.boundariesElement\n });\n }\n\n this.popperInstance = new Popper(reference, popoverNode, popperOptions); // Fix position\n\n requestAnimationFrame(function () {\n if (_this3.hidden) {\n _this3.hidden = false;\n\n _this3.$_hide();\n\n return;\n }\n\n if (!_this3.$_isDisposed && _this3.popperInstance) {\n _this3.popperInstance.scheduleUpdate(); // Show the tooltip\n\n\n requestAnimationFrame(function () {\n if (_this3.hidden) {\n _this3.hidden = false;\n\n _this3.$_hide();\n\n return;\n }\n\n if (!_this3.$_isDisposed) {\n _this3.isOpen = true;\n } else {\n _this3.dispose();\n }\n });\n } else {\n _this3.dispose();\n }\n });\n }\n\n var openGroup = this.openGroup;\n\n if (openGroup) {\n var popover;\n\n for (var i = 0; i < openPopovers.length; i++) {\n popover = openPopovers[i];\n\n if (popover.openGroup !== openGroup) {\n popover.hide();\n popover.$emit('close-group');\n }\n }\n }\n\n openPopovers.push(this);\n this.$emit('apply-show');\n },\n $_hide: function $_hide() {\n var _this4 = this;\n\n // Already hidden\n if (!this.isOpen) {\n return;\n }\n\n var index = openPopovers.indexOf(this);\n\n if (index !== -1) {\n openPopovers.splice(index, 1);\n }\n\n this.isOpen = false;\n\n if (this.popperInstance) {\n this.popperInstance.disableEventListeners();\n }\n\n clearTimeout(this.$_disposeTimer);\n var disposeTime = directive.options.popover.disposeTimeout || directive.options.disposeTimeout;\n\n if (disposeTime !== null) {\n this.$_disposeTimer = setTimeout(function () {\n var popoverNode = _this4.$refs.popover;\n\n if (popoverNode) {\n // Don't remove popper instance, just the HTML element\n popoverNode.parentNode && popoverNode.parentNode.removeChild(popoverNode);\n _this4.$_mounted = false;\n }\n }, disposeTime);\n }\n\n this.$emit('apply-hide');\n },\n $_findContainer: function $_findContainer(container, reference) {\n // if container is a query, get the relative element\n if (typeof container === 'string') {\n container = window.document.querySelector(container);\n } else if (container === false) {\n // if container is `false`, set it to reference parent\n container = reference.parentNode;\n }\n\n return container;\n },\n $_getOffset: function $_getOffset() {\n var typeofOffset = _typeof(this.offset);\n\n var offset = this.offset; // One value -> switch\n\n if (typeofOffset === 'number' || typeofOffset === 'string' && offset.indexOf(',') === -1) {\n offset = \"0, \".concat(offset);\n }\n\n return offset;\n },\n $_addEventListeners: function $_addEventListeners() {\n var _this5 = this;\n\n var reference = this.$refs.trigger;\n var directEvents = [];\n var oppositeEvents = [];\n var events = typeof this.trigger === 'string' ? this.trigger.split(' ').filter(function (trigger) {\n return ['click', 'hover', 'focus'].indexOf(trigger) !== -1;\n }) : [];\n events.forEach(function (event) {\n switch (event) {\n case 'hover':\n directEvents.push('mouseenter');\n oppositeEvents.push('mouseleave');\n break;\n\n case 'focus':\n directEvents.push('focus');\n oppositeEvents.push('blur');\n break;\n\n case 'click':\n directEvents.push('click');\n oppositeEvents.push('click');\n break;\n }\n }); // schedule show tooltip\n\n directEvents.forEach(function (event) {\n var func = function func(event) {\n if (_this5.isOpen) {\n return;\n }\n\n event.usedByTooltip = true;\n !_this5.$_preventOpen && _this5.show({\n event: event\n });\n _this5.hidden = false;\n };\n\n _this5.$_events.push({\n event: event,\n func: func\n });\n\n reference.addEventListener(event, func);\n }); // schedule hide tooltip\n\n oppositeEvents.forEach(function (event) {\n var func = function func(event) {\n if (event.usedByTooltip) {\n return;\n }\n\n _this5.hide({\n event: event\n });\n\n _this5.hidden = true;\n };\n\n _this5.$_events.push({\n event: event,\n func: func\n });\n\n reference.addEventListener(event, func);\n });\n },\n $_scheduleShow: function $_scheduleShow() {\n var skipDelay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n clearTimeout(this.$_scheduleTimer);\n\n if (skipDelay) {\n this.$_show();\n } else {\n // defaults to 0\n var computedDelay = parseInt(this.delay && this.delay.show || this.delay || 0);\n this.$_scheduleTimer = setTimeout(this.$_show.bind(this), computedDelay);\n }\n },\n $_scheduleHide: function $_scheduleHide() {\n var _this6 = this;\n\n var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n var skipDelay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n clearTimeout(this.$_scheduleTimer);\n\n if (skipDelay) {\n this.$_hide();\n } else {\n // defaults to 0\n var computedDelay = parseInt(this.delay && this.delay.hide || this.delay || 0);\n this.$_scheduleTimer = setTimeout(function () {\n if (!_this6.isOpen) {\n return;\n } // if we are hiding because of a mouseleave, we must check that the new\n // reference isn't the tooltip, because in this case we don't want to hide it\n\n\n if (event && event.type === 'mouseleave') {\n var isSet = _this6.$_setTooltipNodeEvent(event); // if we set the new event, don't hide the tooltip yet\n // the new event will take care to hide it if necessary\n\n\n if (isSet) {\n return;\n }\n }\n\n _this6.$_hide();\n }, computedDelay);\n }\n },\n $_setTooltipNodeEvent: function $_setTooltipNodeEvent(event) {\n var _this7 = this;\n\n var reference = this.$refs.trigger;\n var popoverNode = this.$refs.popover;\n var relatedreference = event.relatedreference || event.toElement || event.relatedTarget;\n\n var callback = function callback(event2) {\n var relatedreference2 = event2.relatedreference || event2.toElement || event2.relatedTarget; // Remove event listener after call\n\n popoverNode.removeEventListener(event.type, callback); // If the new reference is not the reference element\n\n if (!reference.contains(relatedreference2)) {\n // Schedule to hide tooltip\n _this7.hide({\n event: event2\n });\n }\n };\n\n if (popoverNode.contains(relatedreference)) {\n // listen to mouseleave on the tooltip element to be able to hide the tooltip\n popoverNode.addEventListener(event.type, callback);\n return true;\n }\n\n return false;\n },\n $_removeEventListeners: function $_removeEventListeners() {\n var reference = this.$refs.trigger;\n this.$_events.forEach(function (_ref4) {\n var func = _ref4.func,\n event = _ref4.event;\n reference.removeEventListener(event, func);\n });\n this.$_events = [];\n },\n $_updatePopper: function $_updatePopper(cb) {\n if (this.popperInstance) {\n cb();\n if (this.isOpen) this.popperInstance.scheduleUpdate();\n }\n },\n $_restartPopper: function $_restartPopper() {\n if (this.popperInstance) {\n var isOpen = this.isOpen;\n this.dispose();\n this.$_isDisposed = false;\n this.$_init();\n\n if (isOpen) {\n this.show({\n skipDelay: true,\n force: true\n });\n }\n }\n },\n $_handleGlobalClose: function $_handleGlobalClose(event) {\n var _this8 = this;\n\n var touch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n if (this.$_beingShowed) return;\n this.hide({\n event: event\n });\n\n if (event.closePopover) {\n this.$emit('close-directive');\n } else {\n this.$emit('auto-hide');\n }\n\n if (touch) {\n this.$_preventOpen = true;\n setTimeout(function () {\n _this8.$_preventOpen = false;\n }, 300);\n }\n },\n $_handleResize: function $_handleResize() {\n if (this.isOpen && this.popperInstance) {\n this.popperInstance.scheduleUpdate();\n this.$emit('resize');\n }\n }\n }\n};\n\nif (typeof document !== 'undefined' && typeof window !== 'undefined') {\n if (isIOS) {\n document.addEventListener('touchend', handleGlobalTouchend, supportsPassive ? {\n passive: true,\n capture: true\n } : true);\n } else {\n window.addEventListener('click', handleGlobalClick, true);\n }\n}\n\nfunction handleGlobalClick(event) {\n handleGlobalClose(event);\n}\n\nfunction handleGlobalTouchend(event) {\n handleGlobalClose(event, true);\n}\n\nfunction handleGlobalClose(event) {\n var touch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var _loop = function _loop(i) {\n var popover = openPopovers[i];\n\n if (popover.$refs.popover) {\n var contains = popover.$refs.popover.contains(event.target);\n requestAnimationFrame(function () {\n if (event.closeAllPopover || event.closePopover && contains || popover.autoHide && !contains) {\n popover.$_handleGlobalClose(event, touch);\n }\n });\n }\n };\n\n // Delay so that close directive has time to set values\n for (var i = 0; i < openPopovers.length; i++) {\n _loop(i);\n }\n}\n\nfunction normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier\n/* server only */\n, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {\n if (typeof shadowMode !== 'boolean') {\n createInjectorSSR = createInjector;\n createInjector = shadowMode;\n shadowMode = false;\n } // Vue.extend constructor export interop.\n\n\n var options = typeof script === 'function' ? script.options : script; // render functions\n\n if (template && template.render) {\n options.render = template.render;\n options.staticRenderFns = template.staticRenderFns;\n options._compiled = true; // functional template\n\n if (isFunctionalTemplate) {\n options.functional = true;\n }\n } // scopedId\n\n\n if (scopeId) {\n options._scopeId = scopeId;\n }\n\n var hook;\n\n if (moduleIdentifier) {\n // server build\n hook = function hook(context) {\n // 2.3 injection\n context = context || // cached call\n this.$vnode && this.$vnode.ssrContext || // stateful\n this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext; // functional\n // 2.2 with runInNewContext: true\n\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__;\n } // inject component styles\n\n\n if (style) {\n style.call(this, createInjectorSSR(context));\n } // register component module identifier for async chunk inference\n\n\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier);\n }\n }; // used by ssr in case component is cached and beforeCreate\n // never gets called\n\n\n options._ssrRegister = hook;\n } else if (style) {\n hook = shadowMode ? function () {\n style.call(this, createInjectorShadow(this.$root.$options.shadowRoot));\n } : function (context) {\n style.call(this, createInjector(context));\n };\n }\n\n if (hook) {\n if (options.functional) {\n // register for functional component in vue file\n var originalRender = options.render;\n\n options.render = function renderWithStyleInjection(h, context) {\n hook.call(context);\n return originalRender(h, context);\n };\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate;\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\n }\n }\n\n return script;\n}\n\nvar normalizeComponent_1 = normalizeComponent;\n\n/* script */\nvar __vue_script__ = script;\n/* template */\n\nvar __vue_render__ = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c(\"div\", {\n staticClass: \"v-popover\",\n class: _vm.cssClass\n }, [_c(\"div\", {\n ref: \"trigger\",\n staticClass: \"trigger\",\n staticStyle: {\n display: \"inline-block\"\n },\n attrs: {\n \"aria-describedby\": _vm.popoverId,\n tabindex: _vm.trigger.indexOf(\"focus\") !== -1 ? 0 : undefined\n }\n }, [_vm._t(\"default\")], 2), _vm._v(\" \"), _c(\"div\", {\n ref: \"popover\",\n class: [_vm.popoverBaseClass, _vm.popoverClass, _vm.cssClass],\n style: {\n visibility: _vm.isOpen ? \"visible\" : \"hidden\"\n },\n attrs: {\n id: _vm.popoverId,\n \"aria-hidden\": _vm.isOpen ? \"false\" : \"true\",\n tabindex: _vm.autoHide ? 0 : undefined\n },\n on: {\n keyup: function keyup($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"esc\", 27, $event.key, [\"Esc\", \"Escape\"])) {\n return null;\n }\n\n _vm.autoHide && _vm.hide();\n }\n }\n }, [_c(\"div\", {\n class: _vm.popoverWrapperClass\n }, [_c(\"div\", {\n ref: \"inner\",\n class: _vm.popoverInnerClass,\n staticStyle: {\n position: \"relative\"\n }\n }, [_c(\"div\", [_vm._t(\"popover\")], 2), _vm._v(\" \"), _vm.handleResize ? _c(\"ResizeObserver\", {\n on: {\n notify: _vm.$_handleResize\n }\n }) : _vm._e()], 1), _vm._v(\" \"), _c(\"div\", {\n ref: \"arrow\",\n class: _vm.popoverArrowClass\n })])])]);\n};\n\nvar __vue_staticRenderFns__ = [];\n__vue_render__._withStripped = true;\n/* style */\n\nvar __vue_inject_styles__ = undefined;\n/* scoped */\n\nvar __vue_scope_id__ = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__ = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__ = false;\n/* style inject */\n\n/* style inject SSR */\n\nvar Popover = normalizeComponent_1({\n render: __vue_render__,\n staticRenderFns: __vue_staticRenderFns__\n}, __vue_inject_styles__, __vue_script__, __vue_scope_id__, __vue_is_functional_template__, __vue_module_identifier__, undefined, undefined);\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nvar _listCacheClear = listCacheClear;\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nvar eq_1 = eq;\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq_1(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nvar _assocIndexOf = assocIndexOf;\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = _assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nvar _listCacheDelete = listCacheDelete;\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = _assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nvar _listCacheGet = listCacheGet;\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return _assocIndexOf(this.__data__, key) > -1;\n}\n\nvar _listCacheHas = listCacheHas;\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = _assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nvar _listCacheSet = listCacheSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = _listCacheClear;\nListCache.prototype['delete'] = _listCacheDelete;\nListCache.prototype.get = _listCacheGet;\nListCache.prototype.has = _listCacheHas;\nListCache.prototype.set = _listCacheSet;\n\nvar _ListCache = ListCache;\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new _ListCache;\n this.size = 0;\n}\n\nvar _stackClear = stackClear;\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nvar _stackDelete = stackDelete;\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nvar _stackGet = stackGet;\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nvar _stackHas = stackHas;\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\nvar _freeGlobal = freeGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = _freeGlobal || freeSelf || Function('return this')();\n\nvar _root = root;\n\n/** Built-in value references. */\nvar Symbol$1 = _root.Symbol;\n\nvar _Symbol = Symbol$1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = _Symbol ? _Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nvar _getRawTag = getRawTag;\n\n/** Used for built-in method references. */\nvar objectProto$1 = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString$1 = objectProto$1.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString$1.call(value);\n}\n\nvar _objectToString = objectToString;\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag$1 = _Symbol ? _Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag$1 && symToStringTag$1 in Object(value))\n ? _getRawTag(value)\n : _objectToString(value);\n}\n\nvar _baseGetTag = baseGetTag;\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nvar isObject_1 = isObject;\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject_1(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = _baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nvar isFunction_1 = isFunction;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = _root['__core-js_shared__'];\n\nvar _coreJsData = coreJsData;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(_coreJsData && _coreJsData.keys && _coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nvar _isMasked = isMasked;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nvar _toSource = toSource;\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto$1 = Function.prototype,\n objectProto$2 = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString$1 = funcProto$1.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$1 = objectProto$2.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString$1.call(hasOwnProperty$1).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject_1(value) || _isMasked(value)) {\n return false;\n }\n var pattern = isFunction_1(value) ? reIsNative : reIsHostCtor;\n return pattern.test(_toSource(value));\n}\n\nvar _baseIsNative = baseIsNative;\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nvar _getValue = getValue;\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = _getValue(object, key);\n return _baseIsNative(value) ? value : undefined;\n}\n\nvar _getNative = getNative;\n\n/* Built-in method references that are verified to be native. */\nvar Map = _getNative(_root, 'Map');\n\nvar _Map = Map;\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = _getNative(Object, 'create');\n\nvar _nativeCreate = nativeCreate;\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = _nativeCreate ? _nativeCreate(null) : {};\n this.size = 0;\n}\n\nvar _hashClear = hashClear;\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nvar _hashDelete = hashDelete;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto$3 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$2 = objectProto$3.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (_nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty$2.call(data, key) ? data[key] : undefined;\n}\n\nvar _hashGet = hashGet;\n\n/** Used for built-in method references. */\nvar objectProto$4 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$3 = objectProto$4.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return _nativeCreate ? (data[key] !== undefined) : hasOwnProperty$3.call(data, key);\n}\n\nvar _hashHas = hashHas;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED$1 = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (_nativeCreate && value === undefined) ? HASH_UNDEFINED$1 : value;\n return this;\n}\n\nvar _hashSet = hashSet;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = _hashClear;\nHash.prototype['delete'] = _hashDelete;\nHash.prototype.get = _hashGet;\nHash.prototype.has = _hashHas;\nHash.prototype.set = _hashSet;\n\nvar _Hash = Hash;\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new _Hash,\n 'map': new (_Map || _ListCache),\n 'string': new _Hash\n };\n}\n\nvar _mapCacheClear = mapCacheClear;\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nvar _isKeyable = isKeyable;\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return _isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nvar _getMapData = getMapData;\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = _getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nvar _mapCacheDelete = mapCacheDelete;\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return _getMapData(this, key).get(key);\n}\n\nvar _mapCacheGet = mapCacheGet;\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return _getMapData(this, key).has(key);\n}\n\nvar _mapCacheHas = mapCacheHas;\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = _getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nvar _mapCacheSet = mapCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = _mapCacheClear;\nMapCache.prototype['delete'] = _mapCacheDelete;\nMapCache.prototype.get = _mapCacheGet;\nMapCache.prototype.has = _mapCacheHas;\nMapCache.prototype.set = _mapCacheSet;\n\nvar _MapCache = MapCache;\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof _ListCache) {\n var pairs = data.__data__;\n if (!_Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new _MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nvar _stackSet = stackSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new _ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = _stackClear;\nStack.prototype['delete'] = _stackDelete;\nStack.prototype.get = _stackGet;\nStack.prototype.has = _stackHas;\nStack.prototype.set = _stackSet;\n\nvar _Stack = Stack;\n\nvar defineProperty = (function() {\n try {\n var func = _getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nvar _defineProperty$1 = defineProperty;\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && _defineProperty$1) {\n _defineProperty$1(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nvar _baseAssignValue = baseAssignValue;\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq_1(object[key], value)) ||\n (value === undefined && !(key in object))) {\n _baseAssignValue(object, key, value);\n }\n}\n\nvar _assignMergeValue = assignMergeValue;\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nvar _createBaseFor = createBaseFor;\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = _createBaseFor();\n\nvar _baseFor = baseFor;\n\nvar _cloneBuffer = createCommonjsModule(function (module, exports) {\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? _root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n});\n\n/** Built-in value references. */\nvar Uint8Array = _root.Uint8Array;\n\nvar _Uint8Array = Uint8Array;\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new _Uint8Array(result).set(new _Uint8Array(arrayBuffer));\n return result;\n}\n\nvar _cloneArrayBuffer = cloneArrayBuffer;\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? _cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nvar _cloneTypedArray = cloneTypedArray;\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nvar _copyArray = copyArray;\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject_1(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nvar _baseCreate = baseCreate;\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nvar _overArg = overArg;\n\n/** Built-in value references. */\nvar getPrototype = _overArg(Object.getPrototypeOf, Object);\n\nvar _getPrototype = getPrototype;\n\n/** Used for built-in method references. */\nvar objectProto$5 = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto$5;\n\n return value === proto;\n}\n\nvar _isPrototype = isPrototype;\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !_isPrototype(object))\n ? _baseCreate(_getPrototype(object))\n : {};\n}\n\nvar _initCloneObject = initCloneObject;\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nvar isObjectLike_1 = isObjectLike;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike_1(value) && _baseGetTag(value) == argsTag;\n}\n\nvar _baseIsArguments = baseIsArguments;\n\n/** Used for built-in method references. */\nvar objectProto$6 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$4 = objectProto$6.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto$6.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = _baseIsArguments(function() { return arguments; }()) ? _baseIsArguments : function(value) {\n return isObjectLike_1(value) && hasOwnProperty$4.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nvar isArguments_1 = isArguments;\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nvar isArray_1 = isArray;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nvar isLength_1 = isLength;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength_1(value.length) && !isFunction_1(value);\n}\n\nvar isArrayLike_1 = isArrayLike;\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike_1(value) && isArrayLike_1(value);\n}\n\nvar isArrayLikeObject_1 = isArrayLikeObject;\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nvar stubFalse_1 = stubFalse;\n\nvar isBuffer_1 = createCommonjsModule(function (module, exports) {\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? _root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse_1;\n\nmodule.exports = isBuffer;\n});\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto$2 = Function.prototype,\n objectProto$7 = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString$2 = funcProto$2.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$5 = objectProto$7.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString$2.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike_1(value) || _baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = _getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty$5.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString$2.call(Ctor) == objectCtorString;\n}\n\nvar isPlainObject_1 = isPlainObject;\n\n/** `Object#toString` result references. */\nvar argsTag$1 = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag$1 = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag$1 = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag$1] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag$1] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag$1] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike_1(value) &&\n isLength_1(value.length) && !!typedArrayTags[_baseGetTag(value)];\n}\n\nvar _baseIsTypedArray = baseIsTypedArray;\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nvar _baseUnary = baseUnary;\n\nvar _nodeUtil = createCommonjsModule(function (module, exports) {\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && _freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n});\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = _nodeUtil && _nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? _baseUnary(nodeIsTypedArray) : _baseIsTypedArray;\n\nvar isTypedArray_1 = isTypedArray;\n\n/**\n * Gets the value at `key`, unless `key` is \"__proto__\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nvar _safeGet = safeGet;\n\n/** Used for built-in method references. */\nvar objectProto$8 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$6 = objectProto$8.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty$6.call(object, key) && eq_1(objValue, value)) ||\n (value === undefined && !(key in object))) {\n _baseAssignValue(object, key, value);\n }\n}\n\nvar _assignValue = assignValue;\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n _baseAssignValue(object, key, newValue);\n } else {\n _assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nvar _copyObject = copyObject;\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nvar _baseTimes = baseTimes;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER$1 = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER$1 : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nvar _isIndex = isIndex;\n\n/** Used for built-in method references. */\nvar objectProto$9 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$7 = objectProto$9.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray_1(value),\n isArg = !isArr && isArguments_1(value),\n isBuff = !isArr && !isArg && isBuffer_1(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray_1(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? _baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty$7.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n _isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nvar _arrayLikeKeys = arrayLikeKeys;\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nvar _nativeKeysIn = nativeKeysIn;\n\n/** Used for built-in method references. */\nvar objectProto$a = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$8 = objectProto$a.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject_1(object)) {\n return _nativeKeysIn(object);\n }\n var isProto = _isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty$8.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nvar _baseKeysIn = baseKeysIn;\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike_1(object) ? _arrayLikeKeys(object, true) : _baseKeysIn(object);\n}\n\nvar keysIn_1 = keysIn;\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return _copyObject(value, keysIn_1(value));\n}\n\nvar toPlainObject_1 = toPlainObject;\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = _safeGet(object, key),\n srcValue = _safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n _assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray_1(srcValue),\n isBuff = !isArr && isBuffer_1(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray_1(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray_1(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject_1(objValue)) {\n newValue = _copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = _cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = _cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject_1(srcValue) || isArguments_1(srcValue)) {\n newValue = objValue;\n if (isArguments_1(objValue)) {\n newValue = toPlainObject_1(objValue);\n }\n else if (!isObject_1(objValue) || isFunction_1(objValue)) {\n newValue = _initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n _assignMergeValue(object, key, newValue);\n}\n\nvar _baseMergeDeep = baseMergeDeep;\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n _baseFor(source, function(srcValue, key) {\n if (isObject_1(srcValue)) {\n stack || (stack = new _Stack);\n _baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(_safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n _assignMergeValue(object, key, newValue);\n }\n }, keysIn_1);\n}\n\nvar _baseMerge = baseMerge;\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nvar identity_1 = identity;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nvar _apply = apply;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return _apply(func, this, otherArgs);\n };\n}\n\nvar _overRest = overRest;\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nvar constant_1 = constant;\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !_defineProperty$1 ? identity_1 : function(func, string) {\n return _defineProperty$1(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant_1(string),\n 'writable': true\n });\n};\n\nvar _baseSetToString = baseSetToString;\n\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nvar _shortOut = shortOut;\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = _shortOut(_baseSetToString);\n\nvar _setToString = setToString;\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return _setToString(_overRest(func, start, identity_1), func + '');\n}\n\nvar _baseRest = baseRest;\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject_1(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike_1(object) && _isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq_1(object[index], value);\n }\n return false;\n}\n\nvar _isIterateeCall = isIterateeCall;\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return _baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && _isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nvar _createAssigner = createAssigner;\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = _createAssigner(function(object, source, srcIndex) {\n _baseMerge(object, source, srcIndex);\n});\n\nvar merge_1 = merge;\n\nfunction styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar css = \".resize-observer[data-v-b329ee4c]{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:transparent;pointer-events:none;display:block;overflow:hidden;opacity:0}.resize-observer[data-v-b329ee4c] object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}\";\nstyleInject(css);\n\nfunction install(Vue) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (install.installed) return;\n install.installed = true;\n var finalOptions = {};\n merge_1(finalOptions, defaultOptions, options);\n plugin.options = finalOptions;\n directive.options = finalOptions;\n Vue.directive('tooltip', directive);\n Vue.directive('close-popover', vclosepopover);\n Vue.component('v-popover', Popover);\n}\nvar VTooltip = directive;\nvar VClosePopover = vclosepopover;\nvar VPopover = Popover;\nvar plugin = {\n install: install,\n\n get enabled() {\n return state.enabled;\n },\n\n set enabled(value) {\n state.enabled = value;\n }\n\n}; // Auto-install\n\nvar GlobalVue = null;\n\nif (typeof window !== 'undefined') {\n GlobalVue = window.Vue;\n} else if (typeof global !== 'undefined') {\n GlobalVue = global.Vue;\n}\n\nif (GlobalVue) {\n GlobalVue.use(plugin);\n}\n\nexport default plugin;\nexport { VClosePopover, VPopover, VTooltip, createTooltip, destroyTooltip, install };\n","function getInternetExplorerVersion() {\n\tvar ua = window.navigator.userAgent;\n\n\tvar msie = ua.indexOf('MSIE ');\n\tif (msie > 0) {\n\t\t// IE 10 or older => return version number\n\t\treturn parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);\n\t}\n\n\tvar trident = ua.indexOf('Trident/');\n\tif (trident > 0) {\n\t\t// IE 11 => return version number\n\t\tvar rv = ua.indexOf('rv:');\n\t\treturn parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);\n\t}\n\n\tvar edge = ua.indexOf('Edge/');\n\tif (edge > 0) {\n\t\t// Edge (IE 12+) => return version number\n\t\treturn parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);\n\t}\n\n\t// other browser\n\treturn -1;\n}\n\nvar isIE = void 0;\n\nfunction initCompat() {\n\tif (!initCompat.init) {\n\t\tinitCompat.init = true;\n\t\tisIE = getInternetExplorerVersion() !== -1;\n\t}\n}\n\nvar ResizeObserver = { render: function render() {\n\t\tvar _vm = this;var _h = _vm.$createElement;var _c = _vm._self._c || _h;return _c('div', { staticClass: \"resize-observer\", attrs: { \"tabindex\": \"-1\" } });\n\t}, staticRenderFns: [], _scopeId: 'data-v-b329ee4c',\n\tname: 'resize-observer',\n\n\tmethods: {\n\t\tcompareAndNotify: function compareAndNotify() {\n\t\t\tif (this._w !== this.$el.offsetWidth || this._h !== this.$el.offsetHeight) {\n\t\t\t\tthis._w = this.$el.offsetWidth;\n\t\t\t\tthis._h = this.$el.offsetHeight;\n\t\t\t\tthis.$emit('notify');\n\t\t\t}\n\t\t},\n\t\taddResizeHandlers: function addResizeHandlers() {\n\t\t\tthis._resizeObject.contentDocument.defaultView.addEventListener('resize', this.compareAndNotify);\n\t\t\tthis.compareAndNotify();\n\t\t},\n\t\tremoveResizeHandlers: function removeResizeHandlers() {\n\t\t\tif (this._resizeObject && this._resizeObject.onload) {\n\t\t\t\tif (!isIE && this._resizeObject.contentDocument) {\n\t\t\t\t\tthis._resizeObject.contentDocument.defaultView.removeEventListener('resize', this.compareAndNotify);\n\t\t\t\t}\n\t\t\t\tdelete this._resizeObject.onload;\n\t\t\t}\n\t\t}\n\t},\n\n\tmounted: function mounted() {\n\t\tvar _this = this;\n\n\t\tinitCompat();\n\t\tthis.$nextTick(function () {\n\t\t\t_this._w = _this.$el.offsetWidth;\n\t\t\t_this._h = _this.$el.offsetHeight;\n\t\t});\n\t\tvar object = document.createElement('object');\n\t\tthis._resizeObject = object;\n\t\tobject.setAttribute('aria-hidden', 'true');\n\t\tobject.setAttribute('tabindex', -1);\n\t\tobject.onload = this.addResizeHandlers;\n\t\tobject.type = 'text/html';\n\t\tif (isIE) {\n\t\t\tthis.$el.appendChild(object);\n\t\t}\n\t\tobject.data = 'about:blank';\n\t\tif (!isIE) {\n\t\t\tthis.$el.appendChild(object);\n\t\t}\n\t},\n\tbeforeDestroy: function beforeDestroy() {\n\t\tthis.removeResizeHandlers();\n\t}\n};\n\n// Install the components\nfunction install(Vue) {\n\tVue.component('resize-observer', ResizeObserver);\n\tVue.component('ResizeObserver', ResizeObserver);\n}\n\n// Plugin\nvar plugin = {\n\t// eslint-disable-next-line no-undef\n\tversion: \"0.4.5\",\n\tinstall: install\n};\n\n// Auto-install\nvar GlobalVue = null;\nif (typeof window !== 'undefined') {\n\tGlobalVue = window.Vue;\n} else if (typeof global !== 'undefined') {\n\tGlobalVue = global.Vue;\n}\nif (GlobalVue) {\n\tGlobalVue.use(plugin);\n}\n\nexport { install, ResizeObserver };\nexport default plugin;\n","var content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthToken.vue?vue&type=style&index=0&id=718a4666&lang=scss&scoped=true&\");\n\nif (typeof content === 'string') {\n content = [[module.id, content, '']];\n}\n\nvar options = {}\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = require(\"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\")(content, options);\n\nif (content.locals) {\n module.exports = content.locals;\n}\n","var content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthTokenList.vue?vue&type=style&index=0&id=184efa25&lang=scss&scoped=true&\");\n\nif (typeof content === 'string') {\n content = [[module.id, content, '']];\n}\n\nvar options = {}\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = require(\"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\")(content, options);\n\nif (content.locals) {\n module.exports = content.locals;\n}\n","var content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthTokenList.vue?vue&type=style&index=1&lang=scss&\");\n\nif (typeof content === 'string') {\n content = [[module.id, content, '']];\n}\n\nvar options = {}\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = require(\"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\")(content, options);\n\nif (content.locals) {\n module.exports = content.locals;\n}\n","var content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthTokenSetupDialogue.vue?vue&type=style&index=0&id=be9cc7be&lang=scss&scoped=true&\");\n\nif (typeof content === 'string') {\n content = [[module.id, content, '']];\n}\n\nvar options = {}\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = require(\"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\")(content, options);\n\nif (content.locals) {\n module.exports = content.locals;\n}\n","var Clipboard = require('clipboard/dist/clipboard.min.js') // FIXME: workaround for browserify\n\nvar VueClipboardConfig = {\n autoSetContainer: false,\n appendToBody: true // This fixes IE, see #50\n}\n\nvar VueClipboard = {\n install: function (Vue) {\n Vue.prototype.$clipboardConfig = VueClipboardConfig\n Vue.prototype.$copyText = function (text, container) {\n return new Promise(function (resolve, reject) {\n var fakeElement = document.createElement('button')\n var clipboard = new Clipboard(fakeElement, {\n text: function () { return text },\n action: function () { return 'copy' },\n container: typeof container === 'object' ? container : document.body\n })\n clipboard.on('success', function (e) {\n clipboard.destroy()\n resolve(e)\n })\n clipboard.on('error', function (e) {\n clipboard.destroy()\n reject(e)\n })\n if (VueClipboardConfig.appendToBody) document.body.appendChild(fakeElement)\n fakeElement.click()\n if (VueClipboardConfig.appendToBody) document.body.removeChild(fakeElement)\n })\n }\n\n Vue.directive('clipboard', {\n bind: function (el, binding, vnode) {\n if (binding.arg === 'success') {\n el._vClipboard_success = binding.value\n } else if (binding.arg === 'error') {\n el._vClipboard_error = binding.value\n } else {\n var clipboard = new Clipboard(el, {\n text: function () { return binding.value },\n action: function () { return binding.arg === 'cut' ? 'cut' : 'copy' },\n container: VueClipboardConfig.autoSetContainer ? el : undefined\n })\n clipboard.on('success', function (e) {\n var callback = el._vClipboard_success\n callback && callback(e)\n })\n clipboard.on('error', function (e) {\n var callback = el._vClipboard_error\n callback && callback(e)\n })\n el._vClipboard = clipboard\n }\n },\n update: function (el, binding) {\n if (binding.arg === 'success') {\n el._vClipboard_success = binding.value\n } else if (binding.arg === 'error') {\n el._vClipboard_error = binding.value\n } else {\n el._vClipboard.text = function () { return binding.value }\n el._vClipboard.action = function () { return binding.arg === 'cut' ? 'cut' : 'copy' }\n }\n },\n unbind: function (el, binding) {\n if (binding.arg === 'success') {\n delete el._vClipboard_success\n } else if (binding.arg === 'error') {\n delete el._vClipboard_error\n } else {\n el._vClipboard.destroy()\n delete el._vClipboard\n }\n }\n })\n },\n config: VueClipboardConfig\n}\n\nif (typeof exports === 'object') {\n module.exports = VueClipboard\n} else if (typeof define === 'function' && define.amd) {\n define([], function () {\n return VueClipboard\n })\n}\n","/*!\n * clipboard.js v2.0.4\n * https://zenorocha.github.io/clipboard.js\n * \n * Licensed MIT © Zeno Rocha\n */\n!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return function(n){var o={};function r(t){if(o[t])return o[t].exports;var e=o[t]={i:t,l:!1,exports:{}};return n[t].call(e.exports,e,e.exports,r),e.l=!0,e.exports}return r.m=n,r.c=o,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,\"a\",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p=\"\",r(r.s=0)}([function(t,e,n){\"use strict\";var r=\"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},i=function(){function o(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(t,e,n){return e&&o(t.prototype,e),n&&o(t,n),t}}(),a=o(n(1)),c=o(n(3)),u=o(n(4));function o(t){return t&&t.__esModule?t:{default:t}}var l=function(t){function o(t,e){!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,o);var n=function(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}(this,(o.__proto__||Object.getPrototypeOf(o)).call(this));return n.resolveOptions(e),n.listenClick(t),n}return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(o,c.default),i(o,[{key:\"resolveOptions\",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};this.action=\"function\"==typeof t.action?t.action:this.defaultAction,this.target=\"function\"==typeof t.target?t.target:this.defaultTarget,this.text=\"function\"==typeof t.text?t.text:this.defaultText,this.container=\"object\"===r(t.container)?t.container:document.body}},{key:\"listenClick\",value:function(t){var e=this;this.listener=(0,u.default)(t,\"click\",function(t){return e.onClick(t)})}},{key:\"onClick\",value:function(t){var e=t.delegateTarget||t.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new a.default({action:this.action(e),target:this.target(e),text:this.text(e),container:this.container,trigger:e,emitter:this})}},{key:\"defaultAction\",value:function(t){return s(\"action\",t)}},{key:\"defaultTarget\",value:function(t){var e=s(\"target\",t);if(e)return document.querySelector(e)}},{key:\"defaultText\",value:function(t){return s(\"text\",t)}},{key:\"destroy\",value:function(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)}}],[{key:\"isSupported\",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[\"copy\",\"cut\"],e=\"string\"==typeof t?[t]:t,n=!!document.queryCommandSupported;return e.forEach(function(t){n=n&&!!document.queryCommandSupported(t)}),n}}]),o}();function s(t,e){var n=\"data-clipboard-\"+t;if(e.hasAttribute(n))return e.getAttribute(n)}t.exports=l},function(t,e,n){\"use strict\";var o,r=\"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},i=function(){function o(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(t,e,n){return e&&o(t.prototype,e),n&&o(t,n),t}}(),a=n(2),c=(o=a)&&o.__esModule?o:{default:o};var u=function(){function e(t){!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,e),this.resolveOptions(t),this.initSelection()}return i(e,[{key:\"resolveOptions\",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};this.action=t.action,this.container=t.container,this.emitter=t.emitter,this.target=t.target,this.text=t.text,this.trigger=t.trigger,this.selectedText=\"\"}},{key:\"initSelection\",value:function(){this.text?this.selectFake():this.target&&this.selectTarget()}},{key:\"selectFake\",value:function(){var t=this,e=\"rtl\"==document.documentElement.getAttribute(\"dir\");this.removeFake(),this.fakeHandlerCallback=function(){return t.removeFake()},this.fakeHandler=this.container.addEventListener(\"click\",this.fakeHandlerCallback)||!0,this.fakeElem=document.createElement(\"textarea\"),this.fakeElem.style.fontSize=\"12pt\",this.fakeElem.style.border=\"0\",this.fakeElem.style.padding=\"0\",this.fakeElem.style.margin=\"0\",this.fakeElem.style.position=\"absolute\",this.fakeElem.style[e?\"right\":\"left\"]=\"-9999px\";var n=window.pageYOffset||document.documentElement.scrollTop;this.fakeElem.style.top=n+\"px\",this.fakeElem.setAttribute(\"readonly\",\"\"),this.fakeElem.value=this.text,this.container.appendChild(this.fakeElem),this.selectedText=(0,c.default)(this.fakeElem),this.copyText()}},{key:\"removeFake\",value:function(){this.fakeHandler&&(this.container.removeEventListener(\"click\",this.fakeHandlerCallback),this.fakeHandler=null,this.fakeHandlerCallback=null),this.fakeElem&&(this.container.removeChild(this.fakeElem),this.fakeElem=null)}},{key:\"selectTarget\",value:function(){this.selectedText=(0,c.default)(this.target),this.copyText()}},{key:\"copyText\",value:function(){var e=void 0;try{e=document.execCommand(this.action)}catch(t){e=!1}this.handleResult(e)}},{key:\"handleResult\",value:function(t){this.emitter.emit(t?\"success\":\"error\",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})}},{key:\"clearSelection\",value:function(){this.trigger&&this.trigger.focus(),window.getSelection().removeAllRanges()}},{key:\"destroy\",value:function(){this.removeFake()}},{key:\"action\",set:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:\"copy\";if(this._action=t,\"copy\"!==this._action&&\"cut\"!==this._action)throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"')},get:function(){return this._action}},{key:\"target\",set:function(t){if(void 0!==t){if(!t||\"object\"!==(void 0===t?\"undefined\":r(t))||1!==t.nodeType)throw new Error('Invalid \"target\" value, use a valid Element');if(\"copy\"===this.action&&t.hasAttribute(\"disabled\"))throw new Error('Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute');if(\"cut\"===this.action&&(t.hasAttribute(\"readonly\")||t.hasAttribute(\"disabled\")))throw new Error('Invalid \"target\" attribute. You can\\'t cut text from elements with \"readonly\" or \"disabled\" attributes');this._target=t}},get:function(){return this._target}}]),e}();t.exports=u},function(t,e){t.exports=function(t){var e;if(\"SELECT\"===t.nodeName)t.focus(),e=t.value;else if(\"INPUT\"===t.nodeName||\"TEXTAREA\"===t.nodeName){var n=t.hasAttribute(\"readonly\");n||t.setAttribute(\"readonly\",\"\"),t.select(),t.setSelectionRange(0,t.value.length),n||t.removeAttribute(\"readonly\"),e=t.value}else{t.hasAttribute(\"contenteditable\")&&t.focus();var o=window.getSelection(),r=document.createRange();r.selectNodeContents(t),o.removeAllRanges(),o.addRange(r),e=o.toString()}return e}},function(t,e){function n(){}n.prototype={on:function(t,e,n){var o=this.e||(this.e={});return(o[t]||(o[t]=[])).push({fn:e,ctx:n}),this},once:function(t,e,n){var o=this;function r(){o.off(t,r),e.apply(n,arguments)}return r._=e,this.on(t,r,n)},emit:function(t){for(var e=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),o=0,r=n.length;o<r;o++)n[o].fn.apply(n[o].ctx,e);return this},off:function(t,e){var n=this.e||(this.e={}),o=n[t],r=[];if(o&&e)for(var i=0,a=o.length;i<a;i++)o[i].fn!==e&&o[i].fn._!==e&&r.push(o[i]);return r.length?n[t]=r:delete n[t],this}},t.exports=n},function(t,e,n){var d=n(5),h=n(6);t.exports=function(t,e,n){if(!t&&!e&&!n)throw new Error(\"Missing required arguments\");if(!d.string(e))throw new TypeError(\"Second argument must be a String\");if(!d.fn(n))throw new TypeError(\"Third argument must be a Function\");if(d.node(t))return s=e,f=n,(l=t).addEventListener(s,f),{destroy:function(){l.removeEventListener(s,f)}};if(d.nodeList(t))return a=t,c=e,u=n,Array.prototype.forEach.call(a,function(t){t.addEventListener(c,u)}),{destroy:function(){Array.prototype.forEach.call(a,function(t){t.removeEventListener(c,u)})}};if(d.string(t))return o=t,r=e,i=n,h(document.body,o,r,i);throw new TypeError(\"First argument must be a String, HTMLElement, HTMLCollection, or NodeList\");var o,r,i,a,c,u,l,s,f}},function(t,n){n.node=function(t){return void 0!==t&&t instanceof HTMLElement&&1===t.nodeType},n.nodeList=function(t){var e=Object.prototype.toString.call(t);return void 0!==t&&(\"[object NodeList]\"===e||\"[object HTMLCollection]\"===e)&&\"length\"in t&&(0===t.length||n.node(t[0]))},n.string=function(t){return\"string\"==typeof t||t instanceof String},n.fn=function(t){return\"[object Function]\"===Object.prototype.toString.call(t)}},function(t,e,n){var a=n(7);function i(t,e,n,o,r){var i=function(e,n,t,o){return function(t){t.delegateTarget=a(t.target,n),t.delegateTarget&&o.call(e,t)}}.apply(this,arguments);return t.addEventListener(n,i,r),{destroy:function(){t.removeEventListener(n,i,r)}}}t.exports=function(t,e,n,o,r){return\"function\"==typeof t.addEventListener?i.apply(null,arguments):\"function\"==typeof n?i.bind(null,document).apply(null,arguments):(\"string\"==typeof t&&(t=document.querySelectorAll(t)),Array.prototype.map.call(t,function(t){return i(t,e,n,o,r)}))}},function(t,e){if(\"undefined\"!=typeof Element&&!Element.prototype.matches){var n=Element.prototype;n.matches=n.matchesSelector||n.mozMatchesSelector||n.msMatchesSelector||n.oMatchesSelector||n.webkitMatchesSelector}t.exports=function(t,e){for(;t&&9!==t.nodeType;){if(\"function\"==typeof t.matches&&t.matches(e))return t;t=t.parentNode}}}])});","import mod from \"-!../../../../node_modules/style-loader/dist/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthToken.vue?vue&type=style&index=0&id=718a4666&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/style-loader/dist/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthToken.vue?vue&type=style&index=0&id=718a4666&lang=scss&scoped=true&\"","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".wiping[data-v-718a4666]{background-color:var(--color-background-darker)}td[data-v-718a4666]{border-top:1px solid var(--color-border);max-width:200px;white-space:normal;vertical-align:middle;position:relative}td.more[data-v-718a4666],td.client[data-v-718a4666]{overflow:visible;position:relative;width:44px;height:44px}td.token-name[data-v-718a4666]{padding:10px 6px}td.token-name.token-rename[data-v-718a4666]{padding:0}td.token-name input[data-v-718a4666]{width:100%;margin:0}td.token-name .wiping-warning[data-v-718a4666]{color:var(--color-text-lighter)}td.more[data-v-718a4666]{padding:0 10px}td.client div[data-v-718a4666]{opacity:0.57;width:44px;height:44px}\\n\", \"\"]);\n","import mod from \"-!../../../../node_modules/style-loader/dist/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthTokenList.vue?vue&type=style&index=0&id=184efa25&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/style-loader/dist/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthTokenList.vue?vue&type=style&index=0&id=184efa25&lang=scss&scoped=true&\"","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \"table[data-v-184efa25]{width:100%;min-height:50px;padding-top:5px;max-width:580px}table th[data-v-184efa25]{opacity:.5;padding:10px 10px 10px 0}.token-list td>a.icon-more[data-v-184efa25]{transition:opacity var(--animation-quick)}.token-list a.icon-more[data-v-184efa25]{padding:14px;display:block;width:44px;height:44px;opacity:.5}.token-list tr:hover td>a.icon[data-v-184efa25],.token-list tr td>a.icon[data-v-184efa25]:focus,.token-list tr.active td>a.icon[data-v-184efa25]{opacity:1}\\n\", \"\"]);\n","import mod from \"-!../../../../node_modules/style-loader/dist/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthTokenList.vue?vue&type=style&index=1&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/style-loader/dist/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthTokenList.vue?vue&type=style&index=1&lang=scss&\"","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \"#app-tokens-table tr>*:nth-child(2){padding-left:6px}#app-tokens-table tr>*:nth-child(3){text-align:right}\\n\", \"\"]);\n","import mod from \"-!../../../../node_modules/style-loader/dist/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthTokenSetupDialogue.vue?vue&type=style&index=0&id=be9cc7be&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/style-loader/dist/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthTokenSetupDialogue.vue?vue&type=style&index=0&id=be9cc7be&lang=scss&scoped=true&\"","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".app-password-row[data-v-be9cc7be]{display:table-row}.app-password-row .icon[data-v-be9cc7be]{background-size:16px 16px;display:inline-block;position:relative;top:3px;margin-left:5px;margin-right:8px}.app-password-label[data-v-be9cc7be]{display:table-cell;padding-right:1em;text-align:right;vertical-align:middle}.monospaced[data-v-be9cc7be]{width:245px;font-family:monospace}\\n\", \"\"]);\n","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -->\n\n<template>\n\t<tr :data-id=\"token.id\"\n\t\t:class=\"wiping\">\n\t\t<td class=\"client\">\n\t\t\t<div :class=\"iconName.icon\"></div>\n\t\t</td>\n\t\t<td class=\"token-name\">\n\t\t\t<input v-if=\"token.canRename && renaming\"\n\t\t\t\t type=\"text\"\n\t\t\t\t ref=\"input\"\n\t\t\t\t v-model=\"newName\"\n\t\t\t\t @keyup.enter=\"rename\"\n\t\t\t\t @blur=\"cancelRename\"\n\t\t\t\t @keyup.esc=\"cancelRename\">\n\t\t\t<span v-else>{{iconName.name}}</span>\n\t\t\t<span v-if=\"wiping\"\n\t\t\t\t class=\"wiping-warning\">({{ t('settings', 'Marked for remote wipe') }})</span>\n\t\t</td>\n\t\t<td>\n\t\t\t<span class=\"last-activity\" v-tooltip=\"lastActivity\">{{lastActivityRelative}}</span>\n\t\t</td>\n\t\t<td class=\"more\">\n\t\t\t<Actions v-if=\"!token.current\"\n\t\t\t\t:actions=\"actions\"\n\t\t\t\t:open.sync=\"actionOpen\"\n\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\tcontent: t('settings', 'Device settings'),\n\t\t\t\t\tcontainer: 'body'\n\t\t\t\t}\">\n\t\t\t\t<ActionCheckbox v-if=\"token.type === 1\"\n\t\t\t\t\t:checked=\"token.scope.filesystem\"\n\t\t\t\t\t@change.stop.prevent=\"$emit('toggleScope', token, 'filesystem', !token.scope.filesystem)\">\n\t\t\t\t\t<!-- TODO: add text/longtext with some description -->\n\t\t\t\t\t{{ t('settings', 'Allow filesystem access') }}\n\t\t\t\t</ActionCheckbox>\n\t\t\t\t<ActionButton v-if=\"token.canRename\"\n\t\t\t\t\ticon=\"icon-rename\"\n\t\t\t\t\t@click.stop.prevent=\"startRename\">\n\t\t\t\t\t<!-- TODO: add text/longtext with some description -->\n\t\t\t\t\t{{ t('settings', 'Rename') }}\n\t\t\t\t</ActionButton>\n\n\t\t\t\t<!-- revoke & wipe -->\n\t\t\t\t<template v-if=\"token.canDelete\">\n\t\t\t\t\t<template v-if=\"token.type !== 2\">\n\t\t\t\t\t\t<ActionButton icon=\"icon-delete\"\n\t\t\t\t\t\t\t@click.stop.prevent=\"revoke\">\n\t\t\t\t\t\t\t<!-- TODO: add text/longtext with some description -->\n\t\t\t\t\t\t\t{{ t('settings', 'Revoke') }}\n\t\t\t\t\t\t</ActionButton>\n\t\t\t\t\t\t<ActionButton icon=\"icon-delete\"\n\t\t\t\t\t\t\t@click.stop.prevent=\"wipe\">\n\t\t\t\t\t\t\t{{ t('settings', 'Wipe device') }}\n\t\t\t\t\t\t</ActionButton>\n\t\t\t\t\t</template>\n\t\t\t\t\t<ActionButton v-else-if=\"token.type === 2\"\n\t\t\t\t\t\ticon=\"icon-delete\"\n\t\t\t\t\t\t:title=\"t('settings', 'Revoke')\"\n\t\t\t\t\t\t@click.stop.prevent=\"revoke\">\n\t\t\t\t\t\t{{ t('settings', 'Revoking this token might prevent the wiping of your device if it hasn\\'t started the wipe yet.') }}\n\t\t\t\t\t</ActionButton>\n\t\t\t\t</template>\n\t\t\t</Actions>\n\t\t</td>\n\t</tr>\n</template>\n\n<script>\nimport {\n\tActions,\n\tActionButton,\n\tActionCheckbox\n} from 'nextcloud-vue';\n\nconst userAgentMap = {\n\tie: /(?:MSIE|Trident|Trident\\/7.0; rv)[ :](\\d+)/,\n\t// Microsoft Edge User Agent from https://msdn.microsoft.com/en-us/library/hh869301(v=vs.85).aspx\n\tedge: /^Mozilla\\/5\\.0 \\([^)]+\\) AppleWebKit\\/[0-9.]+ \\(KHTML, like Gecko\\) Chrome\\/[0-9.]+ (?:Mobile Safari|Safari)\\/[0-9.]+ Edge\\/[0-9.]+$/,\n\t// Firefox User Agent from https://developer.mozilla.org/en-US/docs/Web/HTTP/Gecko_user_agent_string_reference\n\tfirefox: /^Mozilla\\/5\\.0 \\([^)]*(Windows|OS X|Linux)[^)]+\\) Gecko\\/[0-9.]+ Firefox\\/(\\d+)(?:\\.\\d)?$/,\n\t// Chrome User Agent from https://developer.chrome.com/multidevice/user-agent\n\tchrome: /^Mozilla\\/5\\.0 \\([^)]*(Windows|OS X|Linux)[^)]+\\) AppleWebKit\\/[0-9.]+ \\(KHTML, like Gecko\\) Chrome\\/(\\d+)[0-9.]+ (?:Mobile Safari|Safari)\\/[0-9.]+$/,\n\t// Safari User Agent from http://www.useragentstring.com/pages/Safari/\n\tsafari: /^Mozilla\\/5\\.0 \\([^)]*(Windows|OS X)[^)]+\\) AppleWebKit\\/[0-9.]+ \\(KHTML, like Gecko\\)(?: Version\\/([0-9]+)[0-9.]+)? Safari\\/[0-9.A-Z]+$/,\n\t// Android Chrome user agent: https://developers.google.com/chrome/mobile/docs/user-agent\n\tandroidChrome: /Android.*(?:; (.*) Build\\/).*Chrome\\/(\\d+)[0-9.]+/,\n\tiphone: / *CPU +iPhone +OS +([0-9]+)_(?:[0-9_])+ +like +Mac +OS +X */,\n\tipad: /\\(iPad\\; *CPU +OS +([0-9]+)_(?:[0-9_])+ +like +Mac +OS +X */,\n\tiosClient: /^Mozilla\\/5\\.0 \\(iOS\\) (ownCloud|Nextcloud)\\-iOS.*$/,\n\tandroidClient: /^Mozilla\\/5\\.0 \\(Android\\) ownCloud\\-android.*$/,\n\tiosTalkClient: /^Mozilla\\/5\\.0 \\(iOS\\) Nextcloud\\-Talk.*$/,\n\tandroidTalkClient: /^Mozilla\\/5\\.0 \\(Android\\) Nextcloud\\-Talk.*$/,\n\t// DAVdroid/1.2 (2016/07/03; dav4android; okhttp3) Android/6.0.1\n\tdavDroid: /DAV(droid|x5)\\/([0-9.]+)/,\n\t// Mozilla/5.0 (U; Linux; Maemo; Jolla; Sailfish; like Android 4.3) AppleWebKit/538.1 (KHTML, like Gecko) WebPirate/2.0 like Mobile Safari/538.1 (compatible)\n\twebPirate: /(Sailfish).*WebPirate\\/(\\d+)/,\n\t// Mozilla/5.0 (Maemo; Linux; U; Jolla; Sailfish; Mobile; rv:31.0) Gecko/31.0 Firefox/31.0 SailfishBrowser/1.0\n\tsailfishBrowser: /(Sailfish).*SailfishBrowser\\/(\\d+)/\n};\nconst nameMap = {\n\tie: t('setting', 'Internet Explorer'),\n\tedge: t('setting', 'Edge'),\n\tfirefox: t('setting', 'Firefox'),\n\tchrome: t('setting', 'Google Chrome'),\n\tsafari: t('setting', 'Safari'),\n\tandroidChrome: t('setting', 'Google Chrome for Android'),\n\tiphone: t('setting', 'iPhone'),\n\tipad: t('setting', 'iPad'),\n\tiosClient: t('setting', 'Nextcloud iOS app'),\n\tandroidClient: t('setting', 'Nextcloud Android app'),\n\tiosTalkClient: t('setting', 'Nextcloud Talk for iOS'),\n\tandroidTalkClient: t('setting', 'Nextcloud Talk for Android'),\n\tdavDroid: 'DAVdroid',\n\twebPirate: 'WebPirate',\n\tsailfishBrowser: 'SailfishBrowser'\n};\nconst iconMap = {\n\tie: 'icon-desktop',\n\tedge: 'icon-desktop',\n\tfirefox: 'icon-desktop',\n\tchrome: 'icon-desktop',\n\tsafari: 'icon-desktop',\n\tandroidChrome: 'icon-phone',\n\tiphone: 'icon-phone',\n\tipad: 'icon-tablet',\n\tiosClient: 'icon-phone',\n\tandroidClient: 'icon-phone',\n\tiosTalkClient: 'icon-phone',\n\tandroidTalkClient: 'icon-phone',\n\tdavDroid: 'icon-phone',\n\twebPirate: 'icon-link',\n\tsailfishBrowser: 'icon-link'\n};\n\nexport default {\n\tname: \"AuthToken\",\n\tcomponents: {\n\t\tActions,\n\t\tActionButton,\n\t\tActionCheckbox\n\t},\n\tprops: {\n\t\ttoken: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t}\n\t},\n\tcomputed: {\n\t\tlastActivityRelative () {\n\t\t\treturn OC.Util.relativeModifiedDate(this.token.lastActivity * 1000);\n\t\t},\n\t\tlastActivity () {\n\t\t\treturn OC.Util.formatDate(this.token.lastActivity * 1000, 'LLL');\n\t\t},\n\t\ticonName () {\n\t\t\t// pretty format sync client user agent\n\t\t\tlet matches = this.token.name.match(/Mozilla\\/5\\.0 \\((\\w+)\\) (?:mirall|csyncoC)\\/(\\d+\\.\\d+\\.\\d+)/);\n\n\t\t\tlet icon = '';\n\t\t\tif (matches) {\n\t\t\t\tthis.token.name = t('settings', 'Sync client - {os}', {\n\t\t\t\t\tos: matches[1],\n\t\t\t\t\tversion: matches[2]\n\t\t\t\t});\n\t\t\t\ticon = 'icon-desktop';\n\t\t\t}\n\n\t\t\t// preserve title for cases where we format it further\n\t\t\tconst title = this.token.name;\n\t\t\tlet name = this.token.name;\n\t\t\tfor (let client in userAgentMap) {\n\t\t\t\tif (matches = title.match(userAgentMap[client])) {\n\t\t\t\t\tif (matches[2] && matches[1]) { // version number and os\n\t\t\t\t\t\tname = nameMap[client] + ' ' + matches[2] + ' - ' + matches[1];\n\t\t\t\t\t} else if (matches[1]) { // only version number\n\t\t\t\t\t\tname = nameMap[client] + ' ' + matches[1];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tname = nameMap[client];\n\t\t\t\t\t}\n\n\t\t\t\t\ticon = iconMap[client];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.token.current) {\n\t\t\t\tname = t('settings', 'This session');\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\ticon,\n\t\t\t\tname,\n\t\t\t};\n\t\t},\n\t\twiping() {\n\t\t\treturn this.token.type === 2;\n\t\t}\n\t},\n\tdata () {\n\t\treturn {\n\t\t\tshowMore: this.token.canScope || this.token.canDelete,\n\t\t\trenaming: false,\n\t\t\tnewName: '',\n\t\t\tactionOpen: false,\n\t\t};\n\t},\n\tmethods: {\n\t\tstartRename() {\n\t\t\t// Close action (popover menu)\n\t\t\tthis.actionOpen = false;\n\n\t\t\tthis.newName = this.token.name;\n\t\t\tthis.renaming = true;\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.$refs.input.select();\n\t\t\t});\n\t\t},\n\t\tcancelRename() {\n\t\t\tthis.renaming = false;\n\t\t},\n\t\trevoke() {\n\t\t\tthis.actionOpen = false;\n\t\t\tthis.$emit('delete', this.token)\n\t\t},\n\t\trename() {\n\t\t\tthis.renaming = false;\n\t\t\tthis.$emit('rename', this.token, this.newName);\n\t\t},\n\t\twipe() {\n\t\t\tthis.actionOpen = false;\n\t\t\tthis.$emit('wipe', this.token);\n\t\t}\n\t}\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t.wiping {\n\t\tbackground-color: var(--color-background-darker);\n\t}\n\n\ttd {\n\t\tborder-top: 1px solid var(--color-border);\n\t\tmax-width: 200px;\n\t\twhite-space: normal;\n\t\tvertical-align: middle;\n\t\tposition: relative;\n\n\t\t&%icon {\n\t\t\toverflow: visible;\n\t\t\tposition: relative;\n\t\t\twidth: 44px;\n\t\t\theight: 44px;\n\t\t}\n\n\t\t&.token-name {\n\t\t\tpadding: 10px 6px;\n\n\t\t\t&.token-rename {\n\t\t\t\tpadding: 0;\n\t\t\t}\n\n\t\t\tinput {\n\t\t\t\twidth: 100%;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\t\t}\n\t\t&.token-name .wiping-warning {\n\t\t\tcolor: var(--color-text-lighter);\n\t\t}\n\n\t\t&.more {\n\t\t\t@extend %icon;\n\t\t\tpadding: 0 10px;\n\t\t}\n\n\t\t&.client {\n\t\t\t@extend %icon;\n\n\t\t\tdiv {\n\t\t\t\topacity: 0.57;\n\t\t\t\twidth: 44px;\n\t\t\t\theight: 44px;\n\t\t\t}\n\t\t}\n\t}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthToken.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthToken.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthTokenList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthTokenList.vue?vue&type=script&lang=js&\"","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -->\n\n<template>\n\t<table id=\"app-tokens-table\">\n\t\t<thead v-if=\"tokens.length\">\n\t\t<tr>\n\t\t\t<th></th>\n\t\t\t<th>{{ t('settings', 'Device') }}</th>\n\t\t\t<th>{{ t('settings', 'Last activity') }}</th>\n\t\t\t<th></th>\n\t\t</tr>\n\t\t</thead>\n\t\t<tbody class=\"token-list\">\n\t\t<AuthToken v-for=\"token in sortedTokens\"\n\t\t\t\t :key=\"token.id\"\n\t\t\t\t :token=\"token\"\n\t\t\t\t @toggleScope=\"toggleScope\"\n\t\t\t\t @rename=\"rename\"\n\t\t\t\t @delete=\"onDelete\"\n\t\t\t\t @wipe=\"onWipe\" />\n\t\t</tbody>\n\t</table>\n</template>\n\n<script>\n\timport AuthToken from './AuthToken';\n\n\texport default {\n\t\tname: 'AuthTokenList',\n\t\tcomponents: {\n\t\t\tAuthToken\n\t\t},\n\t\tprops: {\n\t\t\ttokens: {\n\t\t\t\ttype: Array,\n\t\t\t\trequired: true,\n\t\t\t}\n\t\t},\n\t\tcomputed: {\n\t\t\tsortedTokens () {\n\t\t\t\treturn this.tokens.sort((t1, t2) => {\n\t\t\t\t\tvar ts1 = parseInt(t1.lastActivity, 10);\n\t\t\t\t\tvar ts2 = parseInt(t2.lastActivity, 10);\n\t\t\t\t\treturn ts2 - ts1;\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\t\tmethods: {\n\t\t\ttoggleScope (token, scope, value) {\n\t\t\t\t// Just pass it on\n\t\t\t\tthis.$emit('toggleScope', token, scope, value);\n\t\t\t},\n\t\t\trename (token, newName) {\n\t\t\t\t// Just pass it on\n\t\t\t\tthis.$emit('rename', token, newName);\n\t\t\t},\n\t\t\tonDelete (token) {\n\t\t\t\t// Just pass it on\n\t\t\t\tthis.$emit('delete', token);\n\t\t\t},\n\t\t\tonWipe(token) {\n\t\t\t\t// Just pass it on\n\t\t\t\tthis.$emit('wipe', token);\n\t\t\t}\n\t\t}\n\t}\n</script>\n\n<style lang=\"scss\" scoped>\n\ttable {\n\t\twidth: 100%;\n\t\tmin-height: 50px;\n\t\tpadding-top: 5px;\n\t\tmax-width: 580px;\n\n\t\tth {\n\t\t\topacity: .5;\n\t\t\tpadding: 10px 10px 10px 0;\n\t\t}\n\t}\n\n\t.token-list {\n\t\ttd > a.icon-more {\n\t\t\ttransition: opacity var(--animation-quick);\n\t\t}\n\n\t\ta.icon-more {\n\t\t\tpadding: 14px;\n\t\t\tdisplay: block;\n\t\t\twidth: 44px;\n\t\t\theight: 44px;\n\t\t\topacity: .5;\n\t\t}\n\n\t\ttr {\n\t\t\t&:hover td > a.icon,\n\t\t\ttd > a.icon:focus,\n\t\t\t&.active td > a.icon {\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\t}\n</style>\n\n<!-- some styles are not scoped to make them work on subcomponents -->\n<style lang=\"scss\">\n\t#app-tokens-table {\n\t\ttr > *:nth-child(2) {\n\t\t\tpadding-left: 6px;\n\t\t}\n\n\t\ttr > *:nth-child(3) {\n\t\t\ttext-align: right;\n\t\t}\n\t}\n</style>\n","import { render, staticRenderFns } from \"./AuthToken.vue?vue&type=template&id=718a4666&scoped=true&\"\nimport script from \"./AuthToken.vue?vue&type=script&lang=js&\"\nexport * from \"./AuthToken.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AuthToken.vue?vue&type=style&index=0&id=718a4666&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"718a4666\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',{class:_vm.wiping,attrs:{\"data-id\":_vm.token.id}},[_c('td',{staticClass:\"client\"},[_c('div',{class:_vm.iconName.icon})]),_vm._v(\" \"),_c('td',{staticClass:\"token-name\"},[(_vm.token.canRename && _vm.renaming)?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newName),expression:\"newName\"}],ref:\"input\",attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.newName)},on:{\"keyup\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.rename($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }return _vm.cancelRename($event)}],\"blur\":_vm.cancelRename,\"input\":function($event){if($event.target.composing){ return; }_vm.newName=$event.target.value}}}):_c('span',[_vm._v(_vm._s(_vm.iconName.name))]),_vm._v(\" \"),(_vm.wiping)?_c('span',{staticClass:\"wiping-warning\"},[_vm._v(\"(\"+_vm._s(_vm.t('settings', 'Marked for remote wipe'))+\")\")]):_vm._e()]),_vm._v(\" \"),_c('td',[_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:(_vm.lastActivity),expression:\"lastActivity\"}],staticClass:\"last-activity\"},[_vm._v(_vm._s(_vm.lastActivityRelative))])]),_vm._v(\" \"),_c('td',{staticClass:\"more\"},[(!_vm.token.current)?_c('Actions',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\tcontent: _vm.t('settings', 'Device settings'),\n\t\t\t\tcontainer: 'body'\n\t\t\t}),expression:\"{\\n\\t\\t\\t\\tcontent: t('settings', 'Device settings'),\\n\\t\\t\\t\\tcontainer: 'body'\\n\\t\\t\\t}\",modifiers:{\"auto\":true}}],attrs:{\"actions\":_vm.actions,\"open\":_vm.actionOpen},on:{\"update:open\":function($event){_vm.actionOpen=$event}}},[(_vm.token.type === 1)?_c('ActionCheckbox',{attrs:{\"checked\":_vm.token.scope.filesystem},on:{\"change\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.$emit('toggleScope', _vm.token, 'filesystem', !_vm.token.scope.filesystem)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Allow filesystem access'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.token.canRename)?_c('ActionButton',{attrs:{\"icon\":\"icon-rename\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.startRename($event)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Rename'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.token.canDelete)?[(_vm.token.type !== 2)?[_c('ActionButton',{attrs:{\"icon\":\"icon-delete\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.revoke($event)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Revoke'))+\"\\n\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionButton',{attrs:{\"icon\":\"icon-delete\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.wipe($event)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Wipe device'))+\"\\n\\t\\t\\t\\t\\t\")])]:(_vm.token.type === 2)?_c('ActionButton',{attrs:{\"icon\":\"icon-delete\",\"title\":_vm.t('settings', 'Revoke')},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.revoke($event)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Revoking this token might prevent the wiping of your device if it hasn\\'t started the wipe yet.'))+\"\\n\\t\\t\\t\\t\")]):_vm._e()]:_vm._e()],2):_vm._e()],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./AuthTokenList.vue?vue&type=template&id=184efa25&scoped=true&\"\nimport script from \"./AuthTokenList.vue?vue&type=script&lang=js&\"\nexport * from \"./AuthTokenList.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AuthTokenList.vue?vue&type=style&index=0&id=184efa25&lang=scss&scoped=true&\"\nimport style1 from \"./AuthTokenList.vue?vue&type=style&index=1&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"184efa25\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('table',{attrs:{\"id\":\"app-tokens-table\"}},[(_vm.tokens.length)?_c('thead',[_c('tr',[_c('th'),_vm._v(\" \"),_c('th',[_vm._v(_vm._s(_vm.t('settings', 'Device')))]),_vm._v(\" \"),_c('th',[_vm._v(_vm._s(_vm.t('settings', 'Last activity')))]),_vm._v(\" \"),_c('th')])]):_vm._e(),_vm._v(\" \"),_c('tbody',{staticClass:\"token-list\"},_vm._l((_vm.sortedTokens),function(token){return _c('AuthToken',{key:token.id,attrs:{\"token\":token},on:{\"toggleScope\":_vm.toggleScope,\"rename\":_vm.rename,\"delete\":_vm.onDelete,\"wipe\":_vm.onWipe}})}),1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*!\n * vue-qrcode v1.0.1\n * https://fengyuanchen.github.io/vue-qrcode\n *\n * Copyright 2018-present Chen Fengyuan\n * Released under the MIT license\n *\n * Date: 2019-06-29T08:20:19.827Z\n */\n\nfunction commonjsRequire () {\n\tthrow new Error('Dynamic requires are not currently supported by rollup-plugin-commonjs');\n}\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar qrcode = createCommonjsModule(function (module, exports) {\n(function(f){{module.exports=f();}})(function(){return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof commonjsRequire&&commonjsRequire;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t);}return n[i].exports}for(var u=\"function\"==typeof commonjsRequire&&commonjsRequire,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){\n// can-promise has a crash in some versions of react native that dont have\n// standard global objects\n// https://github.com/soldair/node-qrcode/issues/157\n\nmodule.exports = function () {\n return typeof Promise === 'function' && Promise.prototype && Promise.prototype.then\n};\n\n},{}],2:[function(require,module,exports){\n/**\n * Alignment pattern are fixed reference pattern in defined positions\n * in a matrix symbology, which enables the decode software to re-synchronise\n * the coordinate mapping of the image modules in the event of moderate amounts\n * of distortion of the image.\n *\n * Alignment patterns are present only in QR Code symbols of version 2 or larger\n * and their number depends on the symbol version.\n */\n\nvar getSymbolSize = require('./utils').getSymbolSize;\n\n/**\n * Calculate the row/column coordinates of the center module of each alignment pattern\n * for the specified QR Code version.\n *\n * The alignment patterns are positioned symmetrically on either side of the diagonal\n * running from the top left corner of the symbol to the bottom right corner.\n *\n * Since positions are simmetrical only half of the coordinates are returned.\n * Each item of the array will represent in turn the x and y coordinate.\n * @see {@link getPositions}\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinate\n */\nexports.getRowColCoords = function getRowColCoords (version) {\n if (version === 1) return []\n\n var posCount = Math.floor(version / 7) + 2;\n var size = getSymbolSize(version);\n var intervals = size === 145 ? 26 : Math.ceil((size - 13) / (2 * posCount - 2)) * 2;\n var positions = [size - 7]; // Last coord is always (size - 7)\n\n for (var i = 1; i < posCount - 1; i++) {\n positions[i] = positions[i - 1] - intervals;\n }\n\n positions.push(6); // First coord is always 6\n\n return positions.reverse()\n};\n\n/**\n * Returns an array containing the positions of each alignment pattern.\n * Each array's element represent the center point of the pattern as (x, y) coordinates\n *\n * Coordinates are calculated expanding the row/column coordinates returned by {@link getRowColCoords}\n * and filtering out the items that overlaps with finder pattern\n *\n * @example\n * For a Version 7 symbol {@link getRowColCoords} returns values 6, 22 and 38.\n * The alignment patterns, therefore, are to be centered on (row, column)\n * positions (6,22), (22,6), (22,22), (22,38), (38,22), (38,38).\n * Note that the coordinates (6,6), (6,38), (38,6) are occupied by finder patterns\n * and are not therefore used for alignment patterns.\n *\n * var pos = getPositions(7)\n * // [[6,22], [22,6], [22,22], [22,38], [38,22], [38,38]]\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinates\n */\nexports.getPositions = function getPositions (version) {\n var coords = [];\n var pos = exports.getRowColCoords(version);\n var posLength = pos.length;\n\n for (var i = 0; i < posLength; i++) {\n for (var j = 0; j < posLength; j++) {\n // Skip if position is occupied by finder patterns\n if ((i === 0 && j === 0) || // top-left\n (i === 0 && j === posLength - 1) || // bottom-left\n (i === posLength - 1 && j === 0)) { // top-right\n continue\n }\n\n coords.push([pos[i], pos[j]]);\n }\n }\n\n return coords\n};\n\n},{\"./utils\":21}],3:[function(require,module,exports){\nvar Mode = require('./mode');\n\n/**\n * Array of characters available in alphanumeric mode\n *\n * As per QR Code specification, to each character\n * is assigned a value from 0 to 44 which in this case coincides\n * with the array index\n *\n * @type {Array}\n */\nvar ALPHA_NUM_CHARS = [\n '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',\n 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',\n 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',\n ' ', '$', '%', '*', '+', '-', '.', '/', ':'\n];\n\nfunction AlphanumericData (data) {\n this.mode = Mode.ALPHANUMERIC;\n this.data = data;\n}\n\nAlphanumericData.getBitsLength = function getBitsLength (length) {\n return 11 * Math.floor(length / 2) + 6 * (length % 2)\n};\n\nAlphanumericData.prototype.getLength = function getLength () {\n return this.data.length\n};\n\nAlphanumericData.prototype.getBitsLength = function getBitsLength () {\n return AlphanumericData.getBitsLength(this.data.length)\n};\n\nAlphanumericData.prototype.write = function write (bitBuffer) {\n var i;\n\n // Input data characters are divided into groups of two characters\n // and encoded as 11-bit binary codes.\n for (i = 0; i + 2 <= this.data.length; i += 2) {\n // The character value of the first character is multiplied by 45\n var value = ALPHA_NUM_CHARS.indexOf(this.data[i]) * 45;\n\n // The character value of the second digit is added to the product\n value += ALPHA_NUM_CHARS.indexOf(this.data[i + 1]);\n\n // The sum is then stored as 11-bit binary number\n bitBuffer.put(value, 11);\n }\n\n // If the number of input data characters is not a multiple of two,\n // the character value of the final character is encoded as a 6-bit binary number.\n if (this.data.length % 2) {\n bitBuffer.put(ALPHA_NUM_CHARS.indexOf(this.data[i]), 6);\n }\n};\n\nmodule.exports = AlphanumericData;\n\n},{\"./mode\":14}],4:[function(require,module,exports){\nfunction BitBuffer () {\n this.buffer = [];\n this.length = 0;\n}\n\nBitBuffer.prototype = {\n\n get: function (index) {\n var bufIndex = Math.floor(index / 8);\n return ((this.buffer[bufIndex] >>> (7 - index % 8)) & 1) === 1\n },\n\n put: function (num, length) {\n for (var i = 0; i < length; i++) {\n this.putBit(((num >>> (length - i - 1)) & 1) === 1);\n }\n },\n\n getLengthInBits: function () {\n return this.length\n },\n\n putBit: function (bit) {\n var bufIndex = Math.floor(this.length / 8);\n if (this.buffer.length <= bufIndex) {\n this.buffer.push(0);\n }\n\n if (bit) {\n this.buffer[bufIndex] |= (0x80 >>> (this.length % 8));\n }\n\n this.length++;\n }\n};\n\nmodule.exports = BitBuffer;\n\n},{}],5:[function(require,module,exports){\nvar Buffer = require('../utils/buffer');\n\n/**\n * Helper class to handle QR Code symbol modules\n *\n * @param {Number} size Symbol size\n */\nfunction BitMatrix (size) {\n if (!size || size < 1) {\n throw new Error('BitMatrix size must be defined and greater than 0')\n }\n\n this.size = size;\n this.data = new Buffer(size * size);\n this.data.fill(0);\n this.reservedBit = new Buffer(size * size);\n this.reservedBit.fill(0);\n}\n\n/**\n * Set bit value at specified location\n * If reserved flag is set, this bit will be ignored during masking process\n *\n * @param {Number} row\n * @param {Number} col\n * @param {Boolean} value\n * @param {Boolean} reserved\n */\nBitMatrix.prototype.set = function (row, col, value, reserved) {\n var index = row * this.size + col;\n this.data[index] = value;\n if (reserved) this.reservedBit[index] = true;\n};\n\n/**\n * Returns bit value at specified location\n *\n * @param {Number} row\n * @param {Number} col\n * @return {Boolean}\n */\nBitMatrix.prototype.get = function (row, col) {\n return this.data[row * this.size + col]\n};\n\n/**\n * Applies xor operator at specified location\n * (used during masking process)\n *\n * @param {Number} row\n * @param {Number} col\n * @param {Boolean} value\n */\nBitMatrix.prototype.xor = function (row, col, value) {\n this.data[row * this.size + col] ^= value;\n};\n\n/**\n * Check if bit at specified location is reserved\n *\n * @param {Number} row\n * @param {Number} col\n * @return {Boolean}\n */\nBitMatrix.prototype.isReserved = function (row, col) {\n return this.reservedBit[row * this.size + col]\n};\n\nmodule.exports = BitMatrix;\n\n},{\"../utils/buffer\":28}],6:[function(require,module,exports){\nvar Buffer = require('../utils/buffer');\nvar Mode = require('./mode');\n\nfunction ByteData (data) {\n this.mode = Mode.BYTE;\n this.data = new Buffer(data);\n}\n\nByteData.getBitsLength = function getBitsLength (length) {\n return length * 8\n};\n\nByteData.prototype.getLength = function getLength () {\n return this.data.length\n};\n\nByteData.prototype.getBitsLength = function getBitsLength () {\n return ByteData.getBitsLength(this.data.length)\n};\n\nByteData.prototype.write = function (bitBuffer) {\n for (var i = 0, l = this.data.length; i < l; i++) {\n bitBuffer.put(this.data[i], 8);\n }\n};\n\nmodule.exports = ByteData;\n\n},{\"../utils/buffer\":28,\"./mode\":14}],7:[function(require,module,exports){\nvar ECLevel = require('./error-correction-level');\r\n\r\nvar EC_BLOCKS_TABLE = [\r\n// L M Q H\r\n 1, 1, 1, 1,\r\n 1, 1, 1, 1,\r\n 1, 1, 2, 2,\r\n 1, 2, 2, 4,\r\n 1, 2, 4, 4,\r\n 2, 4, 4, 4,\r\n 2, 4, 6, 5,\r\n 2, 4, 6, 6,\r\n 2, 5, 8, 8,\r\n 4, 5, 8, 8,\r\n 4, 5, 8, 11,\r\n 4, 8, 10, 11,\r\n 4, 9, 12, 16,\r\n 4, 9, 16, 16,\r\n 6, 10, 12, 18,\r\n 6, 10, 17, 16,\r\n 6, 11, 16, 19,\r\n 6, 13, 18, 21,\r\n 7, 14, 21, 25,\r\n 8, 16, 20, 25,\r\n 8, 17, 23, 25,\r\n 9, 17, 23, 34,\r\n 9, 18, 25, 30,\r\n 10, 20, 27, 32,\r\n 12, 21, 29, 35,\r\n 12, 23, 34, 37,\r\n 12, 25, 34, 40,\r\n 13, 26, 35, 42,\r\n 14, 28, 38, 45,\r\n 15, 29, 40, 48,\r\n 16, 31, 43, 51,\r\n 17, 33, 45, 54,\r\n 18, 35, 48, 57,\r\n 19, 37, 51, 60,\r\n 19, 38, 53, 63,\r\n 20, 40, 56, 66,\r\n 21, 43, 59, 70,\r\n 22, 45, 62, 74,\r\n 24, 47, 65, 77,\r\n 25, 49, 68, 81\r\n];\r\n\r\nvar EC_CODEWORDS_TABLE = [\r\n// L M Q H\r\n 7, 10, 13, 17,\r\n 10, 16, 22, 28,\r\n 15, 26, 36, 44,\r\n 20, 36, 52, 64,\r\n 26, 48, 72, 88,\r\n 36, 64, 96, 112,\r\n 40, 72, 108, 130,\r\n 48, 88, 132, 156,\r\n 60, 110, 160, 192,\r\n 72, 130, 192, 224,\r\n 80, 150, 224, 264,\r\n 96, 176, 260, 308,\r\n 104, 198, 288, 352,\r\n 120, 216, 320, 384,\r\n 132, 240, 360, 432,\r\n 144, 280, 408, 480,\r\n 168, 308, 448, 532,\r\n 180, 338, 504, 588,\r\n 196, 364, 546, 650,\r\n 224, 416, 600, 700,\r\n 224, 442, 644, 750,\r\n 252, 476, 690, 816,\r\n 270, 504, 750, 900,\r\n 300, 560, 810, 960,\r\n 312, 588, 870, 1050,\r\n 336, 644, 952, 1110,\r\n 360, 700, 1020, 1200,\r\n 390, 728, 1050, 1260,\r\n 420, 784, 1140, 1350,\r\n 450, 812, 1200, 1440,\r\n 480, 868, 1290, 1530,\r\n 510, 924, 1350, 1620,\r\n 540, 980, 1440, 1710,\r\n 570, 1036, 1530, 1800,\r\n 570, 1064, 1590, 1890,\r\n 600, 1120, 1680, 1980,\r\n 630, 1204, 1770, 2100,\r\n 660, 1260, 1860, 2220,\r\n 720, 1316, 1950, 2310,\r\n 750, 1372, 2040, 2430\r\n];\r\n\r\n/**\r\n * Returns the number of error correction block that the QR Code should contain\r\n * for the specified version and error correction level.\r\n *\r\n * @param {Number} version QR Code version\r\n * @param {Number} errorCorrectionLevel Error correction level\r\n * @return {Number} Number of error correction blocks\r\n */\r\nexports.getBlocksCount = function getBlocksCount (version, errorCorrectionLevel) {\r\n switch (errorCorrectionLevel) {\r\n case ECLevel.L:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 0]\r\n case ECLevel.M:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 1]\r\n case ECLevel.Q:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 2]\r\n case ECLevel.H:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 3]\r\n default:\r\n return undefined\r\n }\r\n};\r\n\r\n/**\r\n * Returns the number of error correction codewords to use for the specified\r\n * version and error correction level.\r\n *\r\n * @param {Number} version QR Code version\r\n * @param {Number} errorCorrectionLevel Error correction level\r\n * @return {Number} Number of error correction codewords\r\n */\r\nexports.getTotalCodewordsCount = function getTotalCodewordsCount (version, errorCorrectionLevel) {\r\n switch (errorCorrectionLevel) {\r\n case ECLevel.L:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 0]\r\n case ECLevel.M:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 1]\r\n case ECLevel.Q:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 2]\r\n case ECLevel.H:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 3]\r\n default:\r\n return undefined\r\n }\r\n};\r\n\n},{\"./error-correction-level\":8}],8:[function(require,module,exports){\nexports.L = { bit: 1 };\nexports.M = { bit: 0 };\nexports.Q = { bit: 3 };\nexports.H = { bit: 2 };\n\nfunction fromString (string) {\n if (typeof string !== 'string') {\n throw new Error('Param is not a string')\n }\n\n var lcStr = string.toLowerCase();\n\n switch (lcStr) {\n case 'l':\n case 'low':\n return exports.L\n\n case 'm':\n case 'medium':\n return exports.M\n\n case 'q':\n case 'quartile':\n return exports.Q\n\n case 'h':\n case 'high':\n return exports.H\n\n default:\n throw new Error('Unknown EC Level: ' + string)\n }\n}\n\nexports.isValid = function isValid (level) {\n return level && typeof level.bit !== 'undefined' &&\n level.bit >= 0 && level.bit < 4\n};\n\nexports.from = function from (value, defaultValue) {\n if (exports.isValid(value)) {\n return value\n }\n\n try {\n return fromString(value)\n } catch (e) {\n return defaultValue\n }\n};\n\n},{}],9:[function(require,module,exports){\nvar getSymbolSize = require('./utils').getSymbolSize;\nvar FINDER_PATTERN_SIZE = 7;\n\n/**\n * Returns an array containing the positions of each finder pattern.\n * Each array's element represent the top-left point of the pattern as (x, y) coordinates\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinates\n */\nexports.getPositions = function getPositions (version) {\n var size = getSymbolSize(version);\n\n return [\n // top-left\n [0, 0],\n // top-right\n [size - FINDER_PATTERN_SIZE, 0],\n // bottom-left\n [0, size - FINDER_PATTERN_SIZE]\n ]\n};\n\n},{\"./utils\":21}],10:[function(require,module,exports){\nvar Utils = require('./utils');\n\nvar G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0);\nvar G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1);\nvar G15_BCH = Utils.getBCHDigit(G15);\n\n/**\n * Returns format information with relative error correction bits\n *\n * The format information is a 15-bit sequence containing 5 data bits,\n * with 10 error correction bits calculated using the (15, 5) BCH code.\n *\n * @param {Number} errorCorrectionLevel Error correction level\n * @param {Number} mask Mask pattern\n * @return {Number} Encoded format information bits\n */\nexports.getEncodedBits = function getEncodedBits (errorCorrectionLevel, mask) {\n var data = ((errorCorrectionLevel.bit << 3) | mask);\n var d = data << 10;\n\n while (Utils.getBCHDigit(d) - G15_BCH >= 0) {\n d ^= (G15 << (Utils.getBCHDigit(d) - G15_BCH));\n }\n\n // xor final data with mask pattern in order to ensure that\n // no combination of Error Correction Level and data mask pattern\n // will result in an all-zero data string\n return ((data << 10) | d) ^ G15_MASK\n};\n\n},{\"./utils\":21}],11:[function(require,module,exports){\nvar Buffer = require('../utils/buffer');\n\nif(Buffer.alloc) { \n var EXP_TABLE = Buffer.alloc(512);\n var LOG_TABLE = Buffer.alloc(256);\n} else {\n var EXP_TABLE = new Buffer(512);\n var LOG_TABLE = new Buffer(256);\n}\n(function initTables () {\n var x = 1;\n for (var i = 0; i < 255; i++) {\n EXP_TABLE[i] = x;\n LOG_TABLE[x] = i;\n\n x <<= 1; // multiply by 2\n\n // The QR code specification says to use byte-wise modulo 100011101 arithmetic.\n // This means that when a number is 256 or larger, it should be XORed with 0x11D.\n if (x & 0x100) { // similar to x >= 256, but a lot faster (because 0x100 == 256)\n x ^= 0x11D;\n }\n }\n\n // Optimization: double the size of the anti-log table so that we don't need to mod 255 to\n // stay inside the bounds (because we will mainly use this table for the multiplication of\n // two GF numbers, no more).\n // @see {@link mul}\n for (i = 255; i < 512; i++) {\n EXP_TABLE[i] = EXP_TABLE[i - 255];\n }\n}());\n\n/**\n * Returns log value of n inside Galois Field\n *\n * @param {Number} n\n * @return {Number}\n */\nexports.log = function log (n) {\n if (n < 1) throw new Error('log(' + n + ')')\n return LOG_TABLE[n]\n};\n\n/**\n * Returns anti-log value of n inside Galois Field\n *\n * @param {Number} n\n * @return {Number}\n */\nexports.exp = function exp (n) {\n return EXP_TABLE[n]\n};\n\n/**\n * Multiplies two number inside Galois Field\n *\n * @param {Number} x\n * @param {Number} y\n * @return {Number}\n */\nexports.mul = function mul (x, y) {\n if (x === 0 || y === 0) return 0\n\n // should be EXP_TABLE[(LOG_TABLE[x] + LOG_TABLE[y]) % 255] if EXP_TABLE wasn't oversized\n // @see {@link initTables}\n return EXP_TABLE[LOG_TABLE[x] + LOG_TABLE[y]]\n};\n\n},{\"../utils/buffer\":28}],12:[function(require,module,exports){\nvar Mode = require('./mode');\nvar Utils = require('./utils');\n\nfunction KanjiData (data) {\n this.mode = Mode.KANJI;\n this.data = data;\n}\n\nKanjiData.getBitsLength = function getBitsLength (length) {\n return length * 13\n};\n\nKanjiData.prototype.getLength = function getLength () {\n return this.data.length\n};\n\nKanjiData.prototype.getBitsLength = function getBitsLength () {\n return KanjiData.getBitsLength(this.data.length)\n};\n\nKanjiData.prototype.write = function (bitBuffer) {\n var i;\n\n // In the Shift JIS system, Kanji characters are represented by a two byte combination.\n // These byte values are shifted from the JIS X 0208 values.\n // JIS X 0208 gives details of the shift coded representation.\n for (i = 0; i < this.data.length; i++) {\n var value = Utils.toSJIS(this.data[i]);\n\n // For characters with Shift JIS values from 0x8140 to 0x9FFC:\n if (value >= 0x8140 && value <= 0x9FFC) {\n // Subtract 0x8140 from Shift JIS value\n value -= 0x8140;\n\n // For characters with Shift JIS values from 0xE040 to 0xEBBF\n } else if (value >= 0xE040 && value <= 0xEBBF) {\n // Subtract 0xC140 from Shift JIS value\n value -= 0xC140;\n } else {\n throw new Error(\n 'Invalid SJIS character: ' + this.data[i] + '\\n' +\n 'Make sure your charset is UTF-8')\n }\n\n // Multiply most significant byte of result by 0xC0\n // and add least significant byte to product\n value = (((value >>> 8) & 0xff) * 0xC0) + (value & 0xff);\n\n // Convert result to a 13-bit binary string\n bitBuffer.put(value, 13);\n }\n};\n\nmodule.exports = KanjiData;\n\n},{\"./mode\":14,\"./utils\":21}],13:[function(require,module,exports){\n/**\n * Data mask pattern reference\n * @type {Object}\n */\nexports.Patterns = {\n PATTERN000: 0,\n PATTERN001: 1,\n PATTERN010: 2,\n PATTERN011: 3,\n PATTERN100: 4,\n PATTERN101: 5,\n PATTERN110: 6,\n PATTERN111: 7\n};\n\n/**\n * Weighted penalty scores for the undesirable features\n * @type {Object}\n */\nvar PenaltyScores = {\n N1: 3,\n N2: 3,\n N3: 40,\n N4: 10\n};\n\n/**\n * Check if mask pattern value is valid\n *\n * @param {Number} mask Mask pattern\n * @return {Boolean} true if valid, false otherwise\n */\nexports.isValid = function isValid (mask) {\n return mask != null && mask !== '' && !isNaN(mask) && mask >= 0 && mask <= 7\n};\n\n/**\n * Returns mask pattern from a value.\n * If value is not valid, returns undefined\n *\n * @param {Number|String} value Mask pattern value\n * @return {Number} Valid mask pattern or undefined\n */\nexports.from = function from (value) {\n return exports.isValid(value) ? parseInt(value, 10) : undefined\n};\n\n/**\n* Find adjacent modules in row/column with the same color\n* and assign a penalty value.\n*\n* Points: N1 + i\n* i is the amount by which the number of adjacent modules of the same color exceeds 5\n*/\nexports.getPenaltyN1 = function getPenaltyN1 (data) {\n var size = data.size;\n var points = 0;\n var sameCountCol = 0;\n var sameCountRow = 0;\n var lastCol = null;\n var lastRow = null;\n\n for (var row = 0; row < size; row++) {\n sameCountCol = sameCountRow = 0;\n lastCol = lastRow = null;\n\n for (var col = 0; col < size; col++) {\n var module = data.get(row, col);\n if (module === lastCol) {\n sameCountCol++;\n } else {\n if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5);\n lastCol = module;\n sameCountCol = 1;\n }\n\n module = data.get(col, row);\n if (module === lastRow) {\n sameCountRow++;\n } else {\n if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5);\n lastRow = module;\n sameCountRow = 1;\n }\n }\n\n if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5);\n if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5);\n }\n\n return points\n};\n\n/**\n * Find 2x2 blocks with the same color and assign a penalty value\n *\n * Points: N2 * (m - 1) * (n - 1)\n */\nexports.getPenaltyN2 = function getPenaltyN2 (data) {\n var size = data.size;\n var points = 0;\n\n for (var row = 0; row < size - 1; row++) {\n for (var col = 0; col < size - 1; col++) {\n var last = data.get(row, col) +\n data.get(row, col + 1) +\n data.get(row + 1, col) +\n data.get(row + 1, col + 1);\n\n if (last === 4 || last === 0) points++;\n }\n }\n\n return points * PenaltyScores.N2\n};\n\n/**\n * Find 1:1:3:1:1 ratio (dark:light:dark:light:dark) pattern in row/column,\n * preceded or followed by light area 4 modules wide\n *\n * Points: N3 * number of pattern found\n */\nexports.getPenaltyN3 = function getPenaltyN3 (data) {\n var size = data.size;\n var points = 0;\n var bitsCol = 0;\n var bitsRow = 0;\n\n for (var row = 0; row < size; row++) {\n bitsCol = bitsRow = 0;\n for (var col = 0; col < size; col++) {\n bitsCol = ((bitsCol << 1) & 0x7FF) | data.get(row, col);\n if (col >= 10 && (bitsCol === 0x5D0 || bitsCol === 0x05D)) points++;\n\n bitsRow = ((bitsRow << 1) & 0x7FF) | data.get(col, row);\n if (col >= 10 && (bitsRow === 0x5D0 || bitsRow === 0x05D)) points++;\n }\n }\n\n return points * PenaltyScores.N3\n};\n\n/**\n * Calculate proportion of dark modules in entire symbol\n *\n * Points: N4 * k\n *\n * k is the rating of the deviation of the proportion of dark modules\n * in the symbol from 50% in steps of 5%\n */\nexports.getPenaltyN4 = function getPenaltyN4 (data) {\n var darkCount = 0;\n var modulesCount = data.data.length;\n\n for (var i = 0; i < modulesCount; i++) darkCount += data.data[i];\n\n var k = Math.abs(Math.ceil((darkCount * 100 / modulesCount) / 5) - 10);\n\n return k * PenaltyScores.N4\n};\n\n/**\n * Return mask value at given position\n *\n * @param {Number} maskPattern Pattern reference value\n * @param {Number} i Row\n * @param {Number} j Column\n * @return {Boolean} Mask value\n */\nfunction getMaskAt (maskPattern, i, j) {\n switch (maskPattern) {\n case exports.Patterns.PATTERN000: return (i + j) % 2 === 0\n case exports.Patterns.PATTERN001: return i % 2 === 0\n case exports.Patterns.PATTERN010: return j % 3 === 0\n case exports.Patterns.PATTERN011: return (i + j) % 3 === 0\n case exports.Patterns.PATTERN100: return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 === 0\n case exports.Patterns.PATTERN101: return (i * j) % 2 + (i * j) % 3 === 0\n case exports.Patterns.PATTERN110: return ((i * j) % 2 + (i * j) % 3) % 2 === 0\n case exports.Patterns.PATTERN111: return ((i * j) % 3 + (i + j) % 2) % 2 === 0\n\n default: throw new Error('bad maskPattern:' + maskPattern)\n }\n}\n\n/**\n * Apply a mask pattern to a BitMatrix\n *\n * @param {Number} pattern Pattern reference number\n * @param {BitMatrix} data BitMatrix data\n */\nexports.applyMask = function applyMask (pattern, data) {\n var size = data.size;\n\n for (var col = 0; col < size; col++) {\n for (var row = 0; row < size; row++) {\n if (data.isReserved(row, col)) continue\n data.xor(row, col, getMaskAt(pattern, row, col));\n }\n }\n};\n\n/**\n * Returns the best mask pattern for data\n *\n * @param {BitMatrix} data\n * @return {Number} Mask pattern reference number\n */\nexports.getBestMask = function getBestMask (data, setupFormatFunc) {\n var numPatterns = Object.keys(exports.Patterns).length;\n var bestPattern = 0;\n var lowerPenalty = Infinity;\n\n for (var p = 0; p < numPatterns; p++) {\n setupFormatFunc(p);\n exports.applyMask(p, data);\n\n // Calculate penalty\n var penalty =\n exports.getPenaltyN1(data) +\n exports.getPenaltyN2(data) +\n exports.getPenaltyN3(data) +\n exports.getPenaltyN4(data);\n\n // Undo previously applied mask\n exports.applyMask(p, data);\n\n if (penalty < lowerPenalty) {\n lowerPenalty = penalty;\n bestPattern = p;\n }\n }\n\n return bestPattern\n};\n\n},{}],14:[function(require,module,exports){\nvar VersionCheck = require('./version-check');\nvar Regex = require('./regex');\n\n/**\n * Numeric mode encodes data from the decimal digit set (0 - 9)\n * (byte values 30HEX to 39HEX).\n * Normally, 3 data characters are represented by 10 bits.\n *\n * @type {Object}\n */\nexports.NUMERIC = {\n id: 'Numeric',\n bit: 1 << 0,\n ccBits: [10, 12, 14]\n};\n\n/**\n * Alphanumeric mode encodes data from a set of 45 characters,\n * i.e. 10 numeric digits (0 - 9),\n * 26 alphabetic characters (A - Z),\n * and 9 symbols (SP, $, %, *, +, -, ., /, :).\n * Normally, two input characters are represented by 11 bits.\n *\n * @type {Object}\n */\nexports.ALPHANUMERIC = {\n id: 'Alphanumeric',\n bit: 1 << 1,\n ccBits: [9, 11, 13]\n};\n\n/**\n * In byte mode, data is encoded at 8 bits per character.\n *\n * @type {Object}\n */\nexports.BYTE = {\n id: 'Byte',\n bit: 1 << 2,\n ccBits: [8, 16, 16]\n};\n\n/**\n * The Kanji mode efficiently encodes Kanji characters in accordance with\n * the Shift JIS system based on JIS X 0208.\n * The Shift JIS values are shifted from the JIS X 0208 values.\n * JIS X 0208 gives details of the shift coded representation.\n * Each two-byte character value is compacted to a 13-bit binary codeword.\n *\n * @type {Object}\n */\nexports.KANJI = {\n id: 'Kanji',\n bit: 1 << 3,\n ccBits: [8, 10, 12]\n};\n\n/**\n * Mixed mode will contain a sequences of data in a combination of any of\n * the modes described above\n *\n * @type {Object}\n */\nexports.MIXED = {\n bit: -1\n};\n\n/**\n * Returns the number of bits needed to store the data length\n * according to QR Code specifications.\n *\n * @param {Mode} mode Data mode\n * @param {Number} version QR Code version\n * @return {Number} Number of bits\n */\nexports.getCharCountIndicator = function getCharCountIndicator (mode, version) {\n if (!mode.ccBits) throw new Error('Invalid mode: ' + mode)\n\n if (!VersionCheck.isValid(version)) {\n throw new Error('Invalid version: ' + version)\n }\n\n if (version >= 1 && version < 10) return mode.ccBits[0]\n else if (version < 27) return mode.ccBits[1]\n return mode.ccBits[2]\n};\n\n/**\n * Returns the most efficient mode to store the specified data\n *\n * @param {String} dataStr Input data string\n * @return {Mode} Best mode\n */\nexports.getBestModeForData = function getBestModeForData (dataStr) {\n if (Regex.testNumeric(dataStr)) return exports.NUMERIC\n else if (Regex.testAlphanumeric(dataStr)) return exports.ALPHANUMERIC\n else if (Regex.testKanji(dataStr)) return exports.KANJI\n else return exports.BYTE\n};\n\n/**\n * Return mode name as string\n *\n * @param {Mode} mode Mode object\n * @returns {String} Mode name\n */\nexports.toString = function toString (mode) {\n if (mode && mode.id) return mode.id\n throw new Error('Invalid mode')\n};\n\n/**\n * Check if input param is a valid mode object\n *\n * @param {Mode} mode Mode object\n * @returns {Boolean} True if valid mode, false otherwise\n */\nexports.isValid = function isValid (mode) {\n return mode && mode.bit && mode.ccBits\n};\n\n/**\n * Get mode object from its name\n *\n * @param {String} string Mode name\n * @returns {Mode} Mode object\n */\nfunction fromString (string) {\n if (typeof string !== 'string') {\n throw new Error('Param is not a string')\n }\n\n var lcStr = string.toLowerCase();\n\n switch (lcStr) {\n case 'numeric':\n return exports.NUMERIC\n case 'alphanumeric':\n return exports.ALPHANUMERIC\n case 'kanji':\n return exports.KANJI\n case 'byte':\n return exports.BYTE\n default:\n throw new Error('Unknown mode: ' + string)\n }\n}\n\n/**\n * Returns mode from a value.\n * If value is not a valid mode, returns defaultValue\n *\n * @param {Mode|String} value Encoding mode\n * @param {Mode} defaultValue Fallback value\n * @return {Mode} Encoding mode\n */\nexports.from = function from (value, defaultValue) {\n if (exports.isValid(value)) {\n return value\n }\n\n try {\n return fromString(value)\n } catch (e) {\n return defaultValue\n }\n};\n\n},{\"./regex\":19,\"./version-check\":22}],15:[function(require,module,exports){\nvar Mode = require('./mode');\n\nfunction NumericData (data) {\n this.mode = Mode.NUMERIC;\n this.data = data.toString();\n}\n\nNumericData.getBitsLength = function getBitsLength (length) {\n return 10 * Math.floor(length / 3) + ((length % 3) ? ((length % 3) * 3 + 1) : 0)\n};\n\nNumericData.prototype.getLength = function getLength () {\n return this.data.length\n};\n\nNumericData.prototype.getBitsLength = function getBitsLength () {\n return NumericData.getBitsLength(this.data.length)\n};\n\nNumericData.prototype.write = function write (bitBuffer) {\n var i, group, value;\n\n // The input data string is divided into groups of three digits,\n // and each group is converted to its 10-bit binary equivalent.\n for (i = 0; i + 3 <= this.data.length; i += 3) {\n group = this.data.substr(i, 3);\n value = parseInt(group, 10);\n\n bitBuffer.put(value, 10);\n }\n\n // If the number of input digits is not an exact multiple of three,\n // the final one or two digits are converted to 4 or 7 bits respectively.\n var remainingNum = this.data.length - i;\n if (remainingNum > 0) {\n group = this.data.substr(i);\n value = parseInt(group, 10);\n\n bitBuffer.put(value, remainingNum * 3 + 1);\n }\n};\n\nmodule.exports = NumericData;\n\n},{\"./mode\":14}],16:[function(require,module,exports){\nvar Buffer = require('../utils/buffer');\nvar GF = require('./galois-field');\n\n/**\n * Multiplies two polynomials inside Galois Field\n *\n * @param {Buffer} p1 Polynomial\n * @param {Buffer} p2 Polynomial\n * @return {Buffer} Product of p1 and p2\n */\nexports.mul = function mul (p1, p2) {\n var coeff = new Buffer(p1.length + p2.length - 1);\n coeff.fill(0);\n\n for (var i = 0; i < p1.length; i++) {\n for (var j = 0; j < p2.length; j++) {\n coeff[i + j] ^= GF.mul(p1[i], p2[j]);\n }\n }\n\n return coeff\n};\n\n/**\n * Calculate the remainder of polynomials division\n *\n * @param {Buffer} divident Polynomial\n * @param {Buffer} divisor Polynomial\n * @return {Buffer} Remainder\n */\nexports.mod = function mod (divident, divisor) {\n var result = new Buffer(divident);\n\n while ((result.length - divisor.length) >= 0) {\n var coeff = result[0];\n\n for (var i = 0; i < divisor.length; i++) {\n result[i] ^= GF.mul(divisor[i], coeff);\n }\n\n // remove all zeros from buffer head\n var offset = 0;\n while (offset < result.length && result[offset] === 0) offset++;\n result = result.slice(offset);\n }\n\n return result\n};\n\n/**\n * Generate an irreducible generator polynomial of specified degree\n * (used by Reed-Solomon encoder)\n *\n * @param {Number} degree Degree of the generator polynomial\n * @return {Buffer} Buffer containing polynomial coefficients\n */\nexports.generateECPolynomial = function generateECPolynomial (degree) {\n var poly = new Buffer([1]);\n for (var i = 0; i < degree; i++) {\n poly = exports.mul(poly, [1, GF.exp(i)]);\n }\n\n return poly\n};\n\n},{\"../utils/buffer\":28,\"./galois-field\":11}],17:[function(require,module,exports){\nvar Buffer = require('../utils/buffer');\nvar Utils = require('./utils');\nvar ECLevel = require('./error-correction-level');\nvar BitBuffer = require('./bit-buffer');\nvar BitMatrix = require('./bit-matrix');\nvar AlignmentPattern = require('./alignment-pattern');\nvar FinderPattern = require('./finder-pattern');\nvar MaskPattern = require('./mask-pattern');\nvar ECCode = require('./error-correction-code');\nvar ReedSolomonEncoder = require('./reed-solomon-encoder');\nvar Version = require('./version');\nvar FormatInfo = require('./format-info');\nvar Mode = require('./mode');\nvar Segments = require('./segments');\nvar isArray = require('isarray');\n\n/**\n * QRCode for JavaScript\n *\n * modified by Ryan Day for nodejs support\n * Copyright (c) 2011 Ryan Day\n *\n * Licensed under the MIT license:\n * http://www.opensource.org/licenses/mit-license.php\n *\n//---------------------------------------------------------------------\n// QRCode for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word \"QR Code\" is registered trademark of\n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n*/\n\n/**\n * Add finder patterns bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupFinderPattern (matrix, version) {\n var size = matrix.size;\n var pos = FinderPattern.getPositions(version);\n\n for (var i = 0; i < pos.length; i++) {\n var row = pos[i][0];\n var col = pos[i][1];\n\n for (var r = -1; r <= 7; r++) {\n if (row + r <= -1 || size <= row + r) continue\n\n for (var c = -1; c <= 7; c++) {\n if (col + c <= -1 || size <= col + c) continue\n\n if ((r >= 0 && r <= 6 && (c === 0 || c === 6)) ||\n (c >= 0 && c <= 6 && (r === 0 || r === 6)) ||\n (r >= 2 && r <= 4 && c >= 2 && c <= 4)) {\n matrix.set(row + r, col + c, true, true);\n } else {\n matrix.set(row + r, col + c, false, true);\n }\n }\n }\n }\n}\n\n/**\n * Add timing pattern bits to matrix\n *\n * Note: this function must be called before {@link setupAlignmentPattern}\n *\n * @param {BitMatrix} matrix Modules matrix\n */\nfunction setupTimingPattern (matrix) {\n var size = matrix.size;\n\n for (var r = 8; r < size - 8; r++) {\n var value = r % 2 === 0;\n matrix.set(r, 6, value, true);\n matrix.set(6, r, value, true);\n }\n}\n\n/**\n * Add alignment patterns bits to matrix\n *\n * Note: this function must be called after {@link setupTimingPattern}\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupAlignmentPattern (matrix, version) {\n var pos = AlignmentPattern.getPositions(version);\n\n for (var i = 0; i < pos.length; i++) {\n var row = pos[i][0];\n var col = pos[i][1];\n\n for (var r = -2; r <= 2; r++) {\n for (var c = -2; c <= 2; c++) {\n if (r === -2 || r === 2 || c === -2 || c === 2 ||\n (r === 0 && c === 0)) {\n matrix.set(row + r, col + c, true, true);\n } else {\n matrix.set(row + r, col + c, false, true);\n }\n }\n }\n }\n}\n\n/**\n * Add version info bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupVersionInfo (matrix, version) {\n var size = matrix.size;\n var bits = Version.getEncodedBits(version);\n var row, col, mod;\n\n for (var i = 0; i < 18; i++) {\n row = Math.floor(i / 3);\n col = i % 3 + size - 8 - 3;\n mod = ((bits >> i) & 1) === 1;\n\n matrix.set(row, col, mod, true);\n matrix.set(col, row, mod, true);\n }\n}\n\n/**\n * Add format info bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @param {Number} maskPattern Mask pattern reference value\n */\nfunction setupFormatInfo (matrix, errorCorrectionLevel, maskPattern) {\n var size = matrix.size;\n var bits = FormatInfo.getEncodedBits(errorCorrectionLevel, maskPattern);\n var i, mod;\n\n for (i = 0; i < 15; i++) {\n mod = ((bits >> i) & 1) === 1;\n\n // vertical\n if (i < 6) {\n matrix.set(i, 8, mod, true);\n } else if (i < 8) {\n matrix.set(i + 1, 8, mod, true);\n } else {\n matrix.set(size - 15 + i, 8, mod, true);\n }\n\n // horizontal\n if (i < 8) {\n matrix.set(8, size - i - 1, mod, true);\n } else if (i < 9) {\n matrix.set(8, 15 - i - 1 + 1, mod, true);\n } else {\n matrix.set(8, 15 - i - 1, mod, true);\n }\n }\n\n // fixed module\n matrix.set(size - 8, 8, 1, true);\n}\n\n/**\n * Add encoded data bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Buffer} data Data codewords\n */\nfunction setupData (matrix, data) {\n var size = matrix.size;\n var inc = -1;\n var row = size - 1;\n var bitIndex = 7;\n var byteIndex = 0;\n\n for (var col = size - 1; col > 0; col -= 2) {\n if (col === 6) col--;\n\n while (true) {\n for (var c = 0; c < 2; c++) {\n if (!matrix.isReserved(row, col - c)) {\n var dark = false;\n\n if (byteIndex < data.length) {\n dark = (((data[byteIndex] >>> bitIndex) & 1) === 1);\n }\n\n matrix.set(row, col - c, dark);\n bitIndex--;\n\n if (bitIndex === -1) {\n byteIndex++;\n bitIndex = 7;\n }\n }\n }\n\n row += inc;\n\n if (row < 0 || size <= row) {\n row -= inc;\n inc = -inc;\n break\n }\n }\n }\n}\n\n/**\n * Create encoded codewords from data input\n *\n * @param {Number} version QR Code version\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @param {ByteData} data Data input\n * @return {Buffer} Buffer containing encoded codewords\n */\nfunction createData (version, errorCorrectionLevel, segments) {\n // Prepare data buffer\n var buffer = new BitBuffer();\n\n segments.forEach(function (data) {\n // prefix data with mode indicator (4 bits)\n buffer.put(data.mode.bit, 4);\n\n // Prefix data with character count indicator.\n // The character count indicator is a string of bits that represents the\n // number of characters that are being encoded.\n // The character count indicator must be placed after the mode indicator\n // and must be a certain number of bits long, depending on the QR version\n // and data mode\n // @see {@link Mode.getCharCountIndicator}.\n buffer.put(data.getLength(), Mode.getCharCountIndicator(data.mode, version));\n\n // add binary data sequence to buffer\n data.write(buffer);\n });\n\n // Calculate required number of bits\n var totalCodewords = Utils.getSymbolTotalCodewords(version);\n var ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel);\n var dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8;\n\n // Add a terminator.\n // If the bit string is shorter than the total number of required bits,\n // a terminator of up to four 0s must be added to the right side of the string.\n // If the bit string is more than four bits shorter than the required number of bits,\n // add four 0s to the end.\n if (buffer.getLengthInBits() + 4 <= dataTotalCodewordsBits) {\n buffer.put(0, 4);\n }\n\n // If the bit string is fewer than four bits shorter, add only the number of 0s that\n // are needed to reach the required number of bits.\n\n // After adding the terminator, if the number of bits in the string is not a multiple of 8,\n // pad the string on the right with 0s to make the string's length a multiple of 8.\n while (buffer.getLengthInBits() % 8 !== 0) {\n buffer.putBit(0);\n }\n\n // Add pad bytes if the string is still shorter than the total number of required bits.\n // Extend the buffer to fill the data capacity of the symbol corresponding to\n // the Version and Error Correction Level by adding the Pad Codewords 11101100 (0xEC)\n // and 00010001 (0x11) alternately.\n var remainingByte = (dataTotalCodewordsBits - buffer.getLengthInBits()) / 8;\n for (var i = 0; i < remainingByte; i++) {\n buffer.put(i % 2 ? 0x11 : 0xEC, 8);\n }\n\n return createCodewords(buffer, version, errorCorrectionLevel)\n}\n\n/**\n * Encode input data with Reed-Solomon and return codewords with\n * relative error correction bits\n *\n * @param {BitBuffer} bitBuffer Data to encode\n * @param {Number} version QR Code version\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @return {Buffer} Buffer containing encoded codewords\n */\nfunction createCodewords (bitBuffer, version, errorCorrectionLevel) {\n // Total codewords for this QR code version (Data + Error correction)\n var totalCodewords = Utils.getSymbolTotalCodewords(version);\n\n // Total number of error correction codewords\n var ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel);\n\n // Total number of data codewords\n var dataTotalCodewords = totalCodewords - ecTotalCodewords;\n\n // Total number of blocks\n var ecTotalBlocks = ECCode.getBlocksCount(version, errorCorrectionLevel);\n\n // Calculate how many blocks each group should contain\n var blocksInGroup2 = totalCodewords % ecTotalBlocks;\n var blocksInGroup1 = ecTotalBlocks - blocksInGroup2;\n\n var totalCodewordsInGroup1 = Math.floor(totalCodewords / ecTotalBlocks);\n\n var dataCodewordsInGroup1 = Math.floor(dataTotalCodewords / ecTotalBlocks);\n var dataCodewordsInGroup2 = dataCodewordsInGroup1 + 1;\n\n // Number of EC codewords is the same for both groups\n var ecCount = totalCodewordsInGroup1 - dataCodewordsInGroup1;\n\n // Initialize a Reed-Solomon encoder with a generator polynomial of degree ecCount\n var rs = new ReedSolomonEncoder(ecCount);\n\n var offset = 0;\n var dcData = new Array(ecTotalBlocks);\n var ecData = new Array(ecTotalBlocks);\n var maxDataSize = 0;\n var buffer = new Buffer(bitBuffer.buffer);\n\n // Divide the buffer into the required number of blocks\n for (var b = 0; b < ecTotalBlocks; b++) {\n var dataSize = b < blocksInGroup1 ? dataCodewordsInGroup1 : dataCodewordsInGroup2;\n\n // extract a block of data from buffer\n dcData[b] = buffer.slice(offset, offset + dataSize);\n\n // Calculate EC codewords for this data block\n ecData[b] = rs.encode(dcData[b]);\n\n offset += dataSize;\n maxDataSize = Math.max(maxDataSize, dataSize);\n }\n\n // Create final data\n // Interleave the data and error correction codewords from each block\n var data = new Buffer(totalCodewords);\n var index = 0;\n var i, r;\n\n // Add data codewords\n for (i = 0; i < maxDataSize; i++) {\n for (r = 0; r < ecTotalBlocks; r++) {\n if (i < dcData[r].length) {\n data[index++] = dcData[r][i];\n }\n }\n }\n\n // Apped EC codewords\n for (i = 0; i < ecCount; i++) {\n for (r = 0; r < ecTotalBlocks; r++) {\n data[index++] = ecData[r][i];\n }\n }\n\n return data\n}\n\n/**\n * Build QR Code symbol\n *\n * @param {String} data Input string\n * @param {Number} version QR Code version\n * @param {ErrorCorretionLevel} errorCorrectionLevel Error level\n * @param {MaskPattern} maskPattern Mask pattern\n * @return {Object} Object containing symbol data\n */\nfunction createSymbol (data, version, errorCorrectionLevel, maskPattern) {\n var segments;\n\n if (isArray(data)) {\n segments = Segments.fromArray(data);\n } else if (typeof data === 'string') {\n var estimatedVersion = version;\n\n if (!estimatedVersion) {\n var rawSegments = Segments.rawSplit(data);\n\n // Estimate best version that can contain raw splitted segments\n estimatedVersion = Version.getBestVersionForData(rawSegments,\n errorCorrectionLevel);\n }\n\n // Build optimized segments\n // If estimated version is undefined, try with the highest version\n segments = Segments.fromString(data, estimatedVersion || 40);\n } else {\n throw new Error('Invalid data')\n }\n\n // Get the min version that can contain data\n var bestVersion = Version.getBestVersionForData(segments,\n errorCorrectionLevel);\n\n // If no version is found, data cannot be stored\n if (!bestVersion) {\n throw new Error('The amount of data is too big to be stored in a QR Code')\n }\n\n // If not specified, use min version as default\n if (!version) {\n version = bestVersion;\n\n // Check if the specified version can contain the data\n } else if (version < bestVersion) {\n throw new Error('\\n' +\n 'The chosen QR Code version cannot contain this amount of data.\\n' +\n 'Minimum version required to store current data is: ' + bestVersion + '.\\n'\n )\n }\n\n var dataBits = createData(version, errorCorrectionLevel, segments);\n\n // Allocate matrix buffer\n var moduleCount = Utils.getSymbolSize(version);\n var modules = new BitMatrix(moduleCount);\n\n // Add function modules\n setupFinderPattern(modules, version);\n setupTimingPattern(modules);\n setupAlignmentPattern(modules, version);\n\n // Add temporary dummy bits for format info just to set them as reserved.\n // This is needed to prevent these bits from being masked by {@link MaskPattern.applyMask}\n // since the masking operation must be performed only on the encoding region.\n // These blocks will be replaced with correct values later in code.\n setupFormatInfo(modules, errorCorrectionLevel, 0);\n\n if (version >= 7) {\n setupVersionInfo(modules, version);\n }\n\n // Add data codewords\n setupData(modules, dataBits);\n\n if (isNaN(maskPattern)) {\n // Find best mask pattern\n maskPattern = MaskPattern.getBestMask(modules,\n setupFormatInfo.bind(null, modules, errorCorrectionLevel));\n }\n\n // Apply mask pattern\n MaskPattern.applyMask(maskPattern, modules);\n\n // Replace format info bits with correct values\n setupFormatInfo(modules, errorCorrectionLevel, maskPattern);\n\n return {\n modules: modules,\n version: version,\n errorCorrectionLevel: errorCorrectionLevel,\n maskPattern: maskPattern,\n segments: segments\n }\n}\n\n/**\n * QR Code\n *\n * @param {String | Array} data Input data\n * @param {Object} options Optional configurations\n * @param {Number} options.version QR Code version\n * @param {String} options.errorCorrectionLevel Error correction level\n * @param {Function} options.toSJISFunc Helper func to convert utf8 to sjis\n */\nexports.create = function create (data, options) {\n if (typeof data === 'undefined' || data === '') {\n throw new Error('No input text')\n }\n\n var errorCorrectionLevel = ECLevel.M;\n var version;\n var mask;\n\n if (typeof options !== 'undefined') {\n // Use higher error correction level as default\n errorCorrectionLevel = ECLevel.from(options.errorCorrectionLevel, ECLevel.M);\n version = Version.from(options.version);\n mask = MaskPattern.from(options.maskPattern);\n\n if (options.toSJISFunc) {\n Utils.setToSJISFunction(options.toSJISFunc);\n }\n }\n\n return createSymbol(data, version, errorCorrectionLevel, mask)\n};\n\n},{\"../utils/buffer\":28,\"./alignment-pattern\":2,\"./bit-buffer\":4,\"./bit-matrix\":5,\"./error-correction-code\":7,\"./error-correction-level\":8,\"./finder-pattern\":9,\"./format-info\":10,\"./mask-pattern\":13,\"./mode\":14,\"./reed-solomon-encoder\":18,\"./segments\":20,\"./utils\":21,\"./version\":23,\"isarray\":30}],18:[function(require,module,exports){\nvar Buffer = require('../utils/buffer');\nvar Polynomial = require('./polynomial');\n\nfunction ReedSolomonEncoder (degree) {\n this.genPoly = undefined;\n this.degree = degree;\n\n if (this.degree) this.initialize(this.degree);\n}\n\n/**\n * Initialize the encoder.\n * The input param should correspond to the number of error correction codewords.\n *\n * @param {Number} degree\n */\nReedSolomonEncoder.prototype.initialize = function initialize (degree) {\n // create an irreducible generator polynomial\n this.degree = degree;\n this.genPoly = Polynomial.generateECPolynomial(this.degree);\n};\n\n/**\n * Encodes a chunk of data\n *\n * @param {Buffer} data Buffer containing input data\n * @return {Buffer} Buffer containing encoded data\n */\nReedSolomonEncoder.prototype.encode = function encode (data) {\n if (!this.genPoly) {\n throw new Error('Encoder not initialized')\n }\n\n // Calculate EC for this data block\n // extends data size to data+genPoly size\n var pad = new Buffer(this.degree);\n pad.fill(0);\n var paddedData = Buffer.concat([data, pad], data.length + this.degree);\n\n // The error correction codewords are the remainder after dividing the data codewords\n // by a generator polynomial\n var remainder = Polynomial.mod(paddedData, this.genPoly);\n\n // return EC data blocks (last n byte, where n is the degree of genPoly)\n // If coefficients number in remainder are less than genPoly degree,\n // pad with 0s to the left to reach the needed number of coefficients\n var start = this.degree - remainder.length;\n if (start > 0) {\n var buff = new Buffer(this.degree);\n buff.fill(0);\n remainder.copy(buff, start);\n\n return buff\n }\n\n return remainder\n};\n\nmodule.exports = ReedSolomonEncoder;\n\n},{\"../utils/buffer\":28,\"./polynomial\":16}],19:[function(require,module,exports){\nvar numeric = '[0-9]+';\nvar alphanumeric = '[A-Z $%*+\\\\-./:]+';\nvar kanji = '(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|' +\n '[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|' +\n '[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|' +\n '[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+';\nkanji = kanji.replace(/u/g, '\\\\u');\n\nvar byte = '(?:(?![A-Z0-9 $%*+\\\\-./:]|' + kanji + ')(?:.|[\\r\\n]))+';\n\nexports.KANJI = new RegExp(kanji, 'g');\nexports.BYTE_KANJI = new RegExp('[^A-Z0-9 $%*+\\\\-./:]+', 'g');\nexports.BYTE = new RegExp(byte, 'g');\nexports.NUMERIC = new RegExp(numeric, 'g');\nexports.ALPHANUMERIC = new RegExp(alphanumeric, 'g');\n\nvar TEST_KANJI = new RegExp('^' + kanji + '$');\nvar TEST_NUMERIC = new RegExp('^' + numeric + '$');\nvar TEST_ALPHANUMERIC = new RegExp('^[A-Z0-9 $%*+\\\\-./:]+$');\n\nexports.testKanji = function testKanji (str) {\n return TEST_KANJI.test(str)\n};\n\nexports.testNumeric = function testNumeric (str) {\n return TEST_NUMERIC.test(str)\n};\n\nexports.testAlphanumeric = function testAlphanumeric (str) {\n return TEST_ALPHANUMERIC.test(str)\n};\n\n},{}],20:[function(require,module,exports){\nvar Mode = require('./mode');\nvar NumericData = require('./numeric-data');\nvar AlphanumericData = require('./alphanumeric-data');\nvar ByteData = require('./byte-data');\nvar KanjiData = require('./kanji-data');\nvar Regex = require('./regex');\nvar Utils = require('./utils');\nvar dijkstra = require('dijkstrajs');\n\n/**\n * Returns UTF8 byte length\n *\n * @param {String} str Input string\n * @return {Number} Number of byte\n */\nfunction getStringByteLength (str) {\n return unescape(encodeURIComponent(str)).length\n}\n\n/**\n * Get a list of segments of the specified mode\n * from a string\n *\n * @param {Mode} mode Segment mode\n * @param {String} str String to process\n * @return {Array} Array of object with segments data\n */\nfunction getSegments (regex, mode, str) {\n var segments = [];\n var result;\n\n while ((result = regex.exec(str)) !== null) {\n segments.push({\n data: result[0],\n index: result.index,\n mode: mode,\n length: result[0].length\n });\n }\n\n return segments\n}\n\n/**\n * Extracts a series of segments with the appropriate\n * modes from a string\n *\n * @param {String} dataStr Input string\n * @return {Array} Array of object with segments data\n */\nfunction getSegmentsFromString (dataStr) {\n var numSegs = getSegments(Regex.NUMERIC, Mode.NUMERIC, dataStr);\n var alphaNumSegs = getSegments(Regex.ALPHANUMERIC, Mode.ALPHANUMERIC, dataStr);\n var byteSegs;\n var kanjiSegs;\n\n if (Utils.isKanjiModeEnabled()) {\n byteSegs = getSegments(Regex.BYTE, Mode.BYTE, dataStr);\n kanjiSegs = getSegments(Regex.KANJI, Mode.KANJI, dataStr);\n } else {\n byteSegs = getSegments(Regex.BYTE_KANJI, Mode.BYTE, dataStr);\n kanjiSegs = [];\n }\n\n var segs = numSegs.concat(alphaNumSegs, byteSegs, kanjiSegs);\n\n return segs\n .sort(function (s1, s2) {\n return s1.index - s2.index\n })\n .map(function (obj) {\n return {\n data: obj.data,\n mode: obj.mode,\n length: obj.length\n }\n })\n}\n\n/**\n * Returns how many bits are needed to encode a string of\n * specified length with the specified mode\n *\n * @param {Number} length String length\n * @param {Mode} mode Segment mode\n * @return {Number} Bit length\n */\nfunction getSegmentBitsLength (length, mode) {\n switch (mode) {\n case Mode.NUMERIC:\n return NumericData.getBitsLength(length)\n case Mode.ALPHANUMERIC:\n return AlphanumericData.getBitsLength(length)\n case Mode.KANJI:\n return KanjiData.getBitsLength(length)\n case Mode.BYTE:\n return ByteData.getBitsLength(length)\n }\n}\n\n/**\n * Merges adjacent segments which have the same mode\n *\n * @param {Array} segs Array of object with segments data\n * @return {Array} Array of object with segments data\n */\nfunction mergeSegments (segs) {\n return segs.reduce(function (acc, curr) {\n var prevSeg = acc.length - 1 >= 0 ? acc[acc.length - 1] : null;\n if (prevSeg && prevSeg.mode === curr.mode) {\n acc[acc.length - 1].data += curr.data;\n return acc\n }\n\n acc.push(curr);\n return acc\n }, [])\n}\n\n/**\n * Generates a list of all possible nodes combination which\n * will be used to build a segments graph.\n *\n * Nodes are divided by groups. Each group will contain a list of all the modes\n * in which is possible to encode the given text.\n *\n * For example the text '12345' can be encoded as Numeric, Alphanumeric or Byte.\n * The group for '12345' will contain then 3 objects, one for each\n * possible encoding mode.\n *\n * Each node represents a possible segment.\n *\n * @param {Array} segs Array of object with segments data\n * @return {Array} Array of object with segments data\n */\nfunction buildNodes (segs) {\n var nodes = [];\n for (var i = 0; i < segs.length; i++) {\n var seg = segs[i];\n\n switch (seg.mode) {\n case Mode.NUMERIC:\n nodes.push([seg,\n { data: seg.data, mode: Mode.ALPHANUMERIC, length: seg.length },\n { data: seg.data, mode: Mode.BYTE, length: seg.length }\n ]);\n break\n case Mode.ALPHANUMERIC:\n nodes.push([seg,\n { data: seg.data, mode: Mode.BYTE, length: seg.length }\n ]);\n break\n case Mode.KANJI:\n nodes.push([seg,\n { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n ]);\n break\n case Mode.BYTE:\n nodes.push([\n { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n ]);\n }\n }\n\n return nodes\n}\n\n/**\n * Builds a graph from a list of nodes.\n * All segments in each node group will be connected with all the segments of\n * the next group and so on.\n *\n * At each connection will be assigned a weight depending on the\n * segment's byte length.\n *\n * @param {Array} nodes Array of object with segments data\n * @param {Number} version QR Code version\n * @return {Object} Graph of all possible segments\n */\nfunction buildGraph (nodes, version) {\n var table = {};\n var graph = {'start': {}};\n var prevNodeIds = ['start'];\n\n for (var i = 0; i < nodes.length; i++) {\n var nodeGroup = nodes[i];\n var currentNodeIds = [];\n\n for (var j = 0; j < nodeGroup.length; j++) {\n var node = nodeGroup[j];\n var key = '' + i + j;\n\n currentNodeIds.push(key);\n table[key] = { node: node, lastCount: 0 };\n graph[key] = {};\n\n for (var n = 0; n < prevNodeIds.length; n++) {\n var prevNodeId = prevNodeIds[n];\n\n if (table[prevNodeId] && table[prevNodeId].node.mode === node.mode) {\n graph[prevNodeId][key] =\n getSegmentBitsLength(table[prevNodeId].lastCount + node.length, node.mode) -\n getSegmentBitsLength(table[prevNodeId].lastCount, node.mode);\n\n table[prevNodeId].lastCount += node.length;\n } else {\n if (table[prevNodeId]) table[prevNodeId].lastCount = node.length;\n\n graph[prevNodeId][key] = getSegmentBitsLength(node.length, node.mode) +\n 4 + Mode.getCharCountIndicator(node.mode, version); // switch cost\n }\n }\n }\n\n prevNodeIds = currentNodeIds;\n }\n\n for (n = 0; n < prevNodeIds.length; n++) {\n graph[prevNodeIds[n]]['end'] = 0;\n }\n\n return { map: graph, table: table }\n}\n\n/**\n * Builds a segment from a specified data and mode.\n * If a mode is not specified, the more suitable will be used.\n *\n * @param {String} data Input data\n * @param {Mode | String} modesHint Data mode\n * @return {Segment} Segment\n */\nfunction buildSingleSegment (data, modesHint) {\n var mode;\n var bestMode = Mode.getBestModeForData(data);\n\n mode = Mode.from(modesHint, bestMode);\n\n // Make sure data can be encoded\n if (mode !== Mode.BYTE && mode.bit < bestMode.bit) {\n throw new Error('\"' + data + '\"' +\n ' cannot be encoded with mode ' + Mode.toString(mode) +\n '.\\n Suggested mode is: ' + Mode.toString(bestMode))\n }\n\n // Use Mode.BYTE if Kanji support is disabled\n if (mode === Mode.KANJI && !Utils.isKanjiModeEnabled()) {\n mode = Mode.BYTE;\n }\n\n switch (mode) {\n case Mode.NUMERIC:\n return new NumericData(data)\n\n case Mode.ALPHANUMERIC:\n return new AlphanumericData(data)\n\n case Mode.KANJI:\n return new KanjiData(data)\n\n case Mode.BYTE:\n return new ByteData(data)\n }\n}\n\n/**\n * Builds a list of segments from an array.\n * Array can contain Strings or Objects with segment's info.\n *\n * For each item which is a string, will be generated a segment with the given\n * string and the more appropriate encoding mode.\n *\n * For each item which is an object, will be generated a segment with the given\n * data and mode.\n * Objects must contain at least the property \"data\".\n * If property \"mode\" is not present, the more suitable mode will be used.\n *\n * @param {Array} array Array of objects with segments data\n * @return {Array} Array of Segments\n */\nexports.fromArray = function fromArray (array) {\n return array.reduce(function (acc, seg) {\n if (typeof seg === 'string') {\n acc.push(buildSingleSegment(seg, null));\n } else if (seg.data) {\n acc.push(buildSingleSegment(seg.data, seg.mode));\n }\n\n return acc\n }, [])\n};\n\n/**\n * Builds an optimized sequence of segments from a string,\n * which will produce the shortest possible bitstream.\n *\n * @param {String} data Input string\n * @param {Number} version QR Code version\n * @return {Array} Array of segments\n */\nexports.fromString = function fromString (data, version) {\n var segs = getSegmentsFromString(data, Utils.isKanjiModeEnabled());\n\n var nodes = buildNodes(segs);\n var graph = buildGraph(nodes, version);\n var path = dijkstra.find_path(graph.map, 'start', 'end');\n\n var optimizedSegs = [];\n for (var i = 1; i < path.length - 1; i++) {\n optimizedSegs.push(graph.table[path[i]].node);\n }\n\n return exports.fromArray(mergeSegments(optimizedSegs))\n};\n\n/**\n * Splits a string in various segments with the modes which\n * best represent their content.\n * The produced segments are far from being optimized.\n * The output of this function is only used to estimate a QR Code version\n * which may contain the data.\n *\n * @param {string} data Input string\n * @return {Array} Array of segments\n */\nexports.rawSplit = function rawSplit (data) {\n return exports.fromArray(\n getSegmentsFromString(data, Utils.isKanjiModeEnabled())\n )\n};\n\n},{\"./alphanumeric-data\":3,\"./byte-data\":6,\"./kanji-data\":12,\"./mode\":14,\"./numeric-data\":15,\"./regex\":19,\"./utils\":21,\"dijkstrajs\":29}],21:[function(require,module,exports){\nvar toSJISFunction;\nvar CODEWORDS_COUNT = [\n 0, // Not used\n 26, 44, 70, 100, 134, 172, 196, 242, 292, 346,\n 404, 466, 532, 581, 655, 733, 815, 901, 991, 1085,\n 1156, 1258, 1364, 1474, 1588, 1706, 1828, 1921, 2051, 2185,\n 2323, 2465, 2611, 2761, 2876, 3034, 3196, 3362, 3532, 3706\n];\n\n/**\n * Returns the QR Code size for the specified version\n *\n * @param {Number} version QR Code version\n * @return {Number} size of QR code\n */\nexports.getSymbolSize = function getSymbolSize (version) {\n if (!version) throw new Error('\"version\" cannot be null or undefined')\n if (version < 1 || version > 40) throw new Error('\"version\" should be in range from 1 to 40')\n return version * 4 + 17\n};\n\n/**\n * Returns the total number of codewords used to store data and EC information.\n *\n * @param {Number} version QR Code version\n * @return {Number} Data length in bits\n */\nexports.getSymbolTotalCodewords = function getSymbolTotalCodewords (version) {\n return CODEWORDS_COUNT[version]\n};\n\n/**\n * Encode data with Bose-Chaudhuri-Hocquenghem\n *\n * @param {Number} data Value to encode\n * @return {Number} Encoded value\n */\nexports.getBCHDigit = function (data) {\n var digit = 0;\n\n while (data !== 0) {\n digit++;\n data >>>= 1;\n }\n\n return digit\n};\n\nexports.setToSJISFunction = function setToSJISFunction (f) {\n if (typeof f !== 'function') {\n throw new Error('\"toSJISFunc\" is not a valid function.')\n }\n\n toSJISFunction = f;\n};\n\nexports.isKanjiModeEnabled = function () {\n return typeof toSJISFunction !== 'undefined'\n};\n\nexports.toSJIS = function toSJIS (kanji) {\n return toSJISFunction(kanji)\n};\n\n},{}],22:[function(require,module,exports){\n/**\n * Check if QR Code version is valid\n *\n * @param {Number} version QR Code version\n * @return {Boolean} true if valid version, false otherwise\n */\nexports.isValid = function isValid (version) {\n return !isNaN(version) && version >= 1 && version <= 40\n};\n\n},{}],23:[function(require,module,exports){\nvar Utils = require('./utils');\nvar ECCode = require('./error-correction-code');\nvar ECLevel = require('./error-correction-level');\nvar Mode = require('./mode');\nvar VersionCheck = require('./version-check');\nvar isArray = require('isarray');\n\n// Generator polynomial used to encode version information\nvar G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0);\nvar G18_BCH = Utils.getBCHDigit(G18);\n\nfunction getBestVersionForDataLength (mode, length, errorCorrectionLevel) {\n for (var currentVersion = 1; currentVersion <= 40; currentVersion++) {\n if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, mode)) {\n return currentVersion\n }\n }\n\n return undefined\n}\n\nfunction getReservedBitsCount (mode, version) {\n // Character count indicator + mode indicator bits\n return Mode.getCharCountIndicator(mode, version) + 4\n}\n\nfunction getTotalBitsFromDataArray (segments, version) {\n var totalBits = 0;\n\n segments.forEach(function (data) {\n var reservedBits = getReservedBitsCount(data.mode, version);\n totalBits += reservedBits + data.getBitsLength();\n });\n\n return totalBits\n}\n\nfunction getBestVersionForMixedData (segments, errorCorrectionLevel) {\n for (var currentVersion = 1; currentVersion <= 40; currentVersion++) {\n var length = getTotalBitsFromDataArray(segments, currentVersion);\n if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, Mode.MIXED)) {\n return currentVersion\n }\n }\n\n return undefined\n}\n\n/**\n * Returns version number from a value.\n * If value is not a valid version, returns defaultValue\n *\n * @param {Number|String} value QR Code version\n * @param {Number} defaultValue Fallback value\n * @return {Number} QR Code version number\n */\nexports.from = function from (value, defaultValue) {\n if (VersionCheck.isValid(value)) {\n return parseInt(value, 10)\n }\n\n return defaultValue\n};\n\n/**\n * Returns how much data can be stored with the specified QR code version\n * and error correction level\n *\n * @param {Number} version QR Code version (1-40)\n * @param {Number} errorCorrectionLevel Error correction level\n * @param {Mode} mode Data mode\n * @return {Number} Quantity of storable data\n */\nexports.getCapacity = function getCapacity (version, errorCorrectionLevel, mode) {\n if (!VersionCheck.isValid(version)) {\n throw new Error('Invalid QR Code version')\n }\n\n // Use Byte mode as default\n if (typeof mode === 'undefined') mode = Mode.BYTE;\n\n // Total codewords for this QR code version (Data + Error correction)\n var totalCodewords = Utils.getSymbolTotalCodewords(version);\n\n // Total number of error correction codewords\n var ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel);\n\n // Total number of data codewords\n var dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8;\n\n if (mode === Mode.MIXED) return dataTotalCodewordsBits\n\n var usableBits = dataTotalCodewordsBits - getReservedBitsCount(mode, version);\n\n // Return max number of storable codewords\n switch (mode) {\n case Mode.NUMERIC:\n return Math.floor((usableBits / 10) * 3)\n\n case Mode.ALPHANUMERIC:\n return Math.floor((usableBits / 11) * 2)\n\n case Mode.KANJI:\n return Math.floor(usableBits / 13)\n\n case Mode.BYTE:\n default:\n return Math.floor(usableBits / 8)\n }\n};\n\n/**\n * Returns the minimum version needed to contain the amount of data\n *\n * @param {Segment} data Segment of data\n * @param {Number} [errorCorrectionLevel=H] Error correction level\n * @param {Mode} mode Data mode\n * @return {Number} QR Code version\n */\nexports.getBestVersionForData = function getBestVersionForData (data, errorCorrectionLevel) {\n var seg;\n\n var ecl = ECLevel.from(errorCorrectionLevel, ECLevel.M);\n\n if (isArray(data)) {\n if (data.length > 1) {\n return getBestVersionForMixedData(data, ecl)\n }\n\n if (data.length === 0) {\n return 1\n }\n\n seg = data[0];\n } else {\n seg = data;\n }\n\n return getBestVersionForDataLength(seg.mode, seg.getLength(), ecl)\n};\n\n/**\n * Returns version information with relative error correction bits\n *\n * The version information is included in QR Code symbols of version 7 or larger.\n * It consists of an 18-bit sequence containing 6 data bits,\n * with 12 error correction bits calculated using the (18, 6) Golay code.\n *\n * @param {Number} version QR Code version\n * @return {Number} Encoded version info bits\n */\nexports.getEncodedBits = function getEncodedBits (version) {\n if (!VersionCheck.isValid(version) || version < 7) {\n throw new Error('Invalid QR Code version')\n }\n\n var d = version << 12;\n\n while (Utils.getBCHDigit(d) - G18_BCH >= 0) {\n d ^= (G18 << (Utils.getBCHDigit(d) - G18_BCH));\n }\n\n return (version << 12) | d\n};\n\n},{\"./error-correction-code\":7,\"./error-correction-level\":8,\"./mode\":14,\"./utils\":21,\"./version-check\":22,\"isarray\":30}],24:[function(require,module,exports){\n\nvar canPromise = require('./can-promise');\n\nvar QRCode = require('./core/qrcode');\nvar CanvasRenderer = require('./renderer/canvas');\nvar SvgRenderer = require('./renderer/svg-tag.js');\n\nfunction renderCanvas (renderFunc, canvas, text, opts, cb) {\n var args = [].slice.call(arguments, 1);\n var argsNum = args.length;\n var isLastArgCb = typeof args[argsNum - 1] === 'function';\n\n if (!isLastArgCb && !canPromise()) {\n throw new Error('Callback required as last argument')\n }\n\n if (isLastArgCb) {\n if (argsNum < 2) {\n throw new Error('Too few arguments provided')\n }\n\n if (argsNum === 2) {\n cb = text;\n text = canvas;\n canvas = opts = undefined;\n } else if (argsNum === 3) {\n if (canvas.getContext && typeof cb === 'undefined') {\n cb = opts;\n opts = undefined;\n } else {\n cb = opts;\n opts = text;\n text = canvas;\n canvas = undefined;\n }\n }\n } else {\n if (argsNum < 1) {\n throw new Error('Too few arguments provided')\n }\n\n if (argsNum === 1) {\n text = canvas;\n canvas = opts = undefined;\n } else if (argsNum === 2 && !canvas.getContext) {\n opts = text;\n text = canvas;\n canvas = undefined;\n }\n\n return new Promise(function (resolve, reject) {\n try {\n var data = QRCode.create(text, opts);\n resolve(renderFunc(data, canvas, opts));\n } catch (e) {\n reject(e);\n }\n })\n }\n\n try {\n var data = QRCode.create(text, opts);\n cb(null, renderFunc(data, canvas, opts));\n } catch (e) {\n cb(e);\n }\n}\n\nexports.create = QRCode.create;\nexports.toCanvas = renderCanvas.bind(null, CanvasRenderer.render);\nexports.toDataURL = renderCanvas.bind(null, CanvasRenderer.renderToDataURL);\n\n// only svg for now.\nexports.toString = renderCanvas.bind(null, function (data, _, opts) {\n return SvgRenderer.render(data, opts)\n});\n\n},{\"./can-promise\":1,\"./core/qrcode\":17,\"./renderer/canvas\":25,\"./renderer/svg-tag.js\":26}],25:[function(require,module,exports){\nvar Utils = require('./utils');\n\nfunction clearCanvas (ctx, canvas, size) {\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n\n if (!canvas.style) canvas.style = {};\n canvas.height = size;\n canvas.width = size;\n canvas.style.height = size + 'px';\n canvas.style.width = size + 'px';\n}\n\nfunction getCanvasElement () {\n try {\n return document.createElement('canvas')\n } catch (e) {\n throw new Error('You need to specify a canvas element')\n }\n}\n\nexports.render = function render (qrData, canvas, options) {\n var opts = options;\n var canvasEl = canvas;\n\n if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n opts = canvas;\n canvas = undefined;\n }\n\n if (!canvas) {\n canvasEl = getCanvasElement();\n }\n\n opts = Utils.getOptions(opts);\n var size = Utils.getImageWidth(qrData.modules.size, opts);\n\n var ctx = canvasEl.getContext('2d');\n var image = ctx.createImageData(size, size);\n Utils.qrToImageData(image.data, qrData, opts);\n\n clearCanvas(ctx, canvasEl, size);\n ctx.putImageData(image, 0, 0);\n\n return canvasEl\n};\n\nexports.renderToDataURL = function renderToDataURL (qrData, canvas, options) {\n var opts = options;\n\n if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n opts = canvas;\n canvas = undefined;\n }\n\n if (!opts) opts = {};\n\n var canvasEl = exports.render(qrData, canvas, opts);\n\n var type = opts.type || 'image/png';\n var rendererOpts = opts.rendererOpts || {};\n\n return canvasEl.toDataURL(type, rendererOpts.quality)\n};\n\n},{\"./utils\":27}],26:[function(require,module,exports){\nvar Utils = require('./utils');\n\nfunction getColorAttrib (color, attrib) {\n var alpha = color.a / 255;\n var str = attrib + '=\"' + color.hex + '\"';\n\n return alpha < 1\n ? str + ' ' + attrib + '-opacity=\"' + alpha.toFixed(2).slice(1) + '\"'\n : str\n}\n\nfunction svgCmd (cmd, x, y) {\n var str = cmd + x;\n if (typeof y !== 'undefined') str += ' ' + y;\n\n return str\n}\n\nfunction qrToPath (data, size, margin) {\n var path = '';\n var moveBy = 0;\n var newRow = false;\n var lineLength = 0;\n\n for (var i = 0; i < data.length; i++) {\n var col = Math.floor(i % size);\n var row = Math.floor(i / size);\n\n if (!col && !newRow) newRow = true;\n\n if (data[i]) {\n lineLength++;\n\n if (!(i > 0 && col > 0 && data[i - 1])) {\n path += newRow\n ? svgCmd('M', col + margin, 0.5 + row + margin)\n : svgCmd('m', moveBy, 0);\n\n moveBy = 0;\n newRow = false;\n }\n\n if (!(col + 1 < size && data[i + 1])) {\n path += svgCmd('h', lineLength);\n lineLength = 0;\n }\n } else {\n moveBy++;\n }\n }\n\n return path\n}\n\nexports.render = function render (qrData, options, cb) {\n var opts = Utils.getOptions(options);\n var size = qrData.modules.size;\n var data = qrData.modules.data;\n var qrcodesize = size + opts.margin * 2;\n\n var bg = !opts.color.light.a\n ? ''\n : '<path ' + getColorAttrib(opts.color.light, 'fill') +\n ' d=\"M0 0h' + qrcodesize + 'v' + qrcodesize + 'H0z\"/>';\n\n var path =\n '<path ' + getColorAttrib(opts.color.dark, 'stroke') +\n ' d=\"' + qrToPath(data, size, opts.margin) + '\"/>';\n\n var viewBox = 'viewBox=\"' + '0 0 ' + qrcodesize + ' ' + qrcodesize + '\"';\n\n var width = !opts.width ? '' : 'width=\"' + opts.width + '\" height=\"' + opts.width + '\" ';\n\n var svgTag = '<svg xmlns=\"http://www.w3.org/2000/svg\" ' + width + viewBox + ' shape-rendering=\"crispEdges\">' + bg + path + '</svg>\\n';\n\n if (typeof cb === 'function') {\n cb(null, svgTag);\n }\n\n return svgTag\n};\n\n},{\"./utils\":27}],27:[function(require,module,exports){\nfunction hex2rgba (hex) {\n if (typeof hex !== 'string') {\n throw new Error('Color should be defined as hex string')\n }\n\n var hexCode = hex.slice().replace('#', '').split('');\n if (hexCode.length < 3 || hexCode.length === 5 || hexCode.length > 8) {\n throw new Error('Invalid hex color: ' + hex)\n }\n\n // Convert from short to long form (fff -> ffffff)\n if (hexCode.length === 3 || hexCode.length === 4) {\n hexCode = Array.prototype.concat.apply([], hexCode.map(function (c) {\n return [c, c]\n }));\n }\n\n // Add default alpha value\n if (hexCode.length === 6) hexCode.push('F', 'F');\n\n var hexValue = parseInt(hexCode.join(''), 16);\n\n return {\n r: (hexValue >> 24) & 255,\n g: (hexValue >> 16) & 255,\n b: (hexValue >> 8) & 255,\n a: hexValue & 255,\n hex: '#' + hexCode.slice(0, 6).join('')\n }\n}\n\nexports.getOptions = function getOptions (options) {\n if (!options) options = {};\n if (!options.color) options.color = {};\n\n var margin = typeof options.margin === 'undefined' ||\n options.margin === null ||\n options.margin < 0 ? 4 : options.margin;\n\n var width = options.width && options.width >= 21 ? options.width : undefined;\n var scale = options.scale || 4;\n\n return {\n width: width,\n scale: width ? 4 : scale,\n margin: margin,\n color: {\n dark: hex2rgba(options.color.dark || '#000000ff'),\n light: hex2rgba(options.color.light || '#ffffffff')\n },\n type: options.type,\n rendererOpts: options.rendererOpts || {}\n }\n};\n\nexports.getScale = function getScale (qrSize, opts) {\n return opts.width && opts.width >= qrSize + opts.margin * 2\n ? opts.width / (qrSize + opts.margin * 2)\n : opts.scale\n};\n\nexports.getImageWidth = function getImageWidth (qrSize, opts) {\n var scale = exports.getScale(qrSize, opts);\n return Math.floor((qrSize + opts.margin * 2) * scale)\n};\n\nexports.qrToImageData = function qrToImageData (imgData, qr, opts) {\n var size = qr.modules.size;\n var data = qr.modules.data;\n var scale = exports.getScale(size, opts);\n var symbolSize = Math.floor((size + opts.margin * 2) * scale);\n var scaledMargin = opts.margin * scale;\n var palette = [opts.color.light, opts.color.dark];\n\n for (var i = 0; i < symbolSize; i++) {\n for (var j = 0; j < symbolSize; j++) {\n var posDst = (i * symbolSize + j) * 4;\n var pxColor = opts.color.light;\n\n if (i >= scaledMargin && j >= scaledMargin &&\n i < symbolSize - scaledMargin && j < symbolSize - scaledMargin) {\n var iSrc = Math.floor((i - scaledMargin) / scale);\n var jSrc = Math.floor((j - scaledMargin) / scale);\n pxColor = palette[data[iSrc * size + jSrc] ? 1 : 0];\n }\n\n imgData[posDst++] = pxColor.r;\n imgData[posDst++] = pxColor.g;\n imgData[posDst++] = pxColor.b;\n imgData[posDst] = pxColor.a;\n }\n }\n};\n\n},{}],28:[function(require,module,exports){\n\nvar isArray = require('isarray');\n\nfunction typedArraySupport () {\n // Can typed array instances be augmented?\n try {\n var arr = new Uint8Array(1);\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }};\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport();\n\nvar K_MAX_LENGTH = Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff;\n\nfunction Buffer (arg, offset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, offset, length)\n }\n\n if (typeof arg === 'number') {\n return allocUnsafe(this, arg)\n }\n\n return from(this, arg, offset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype;\n Buffer.__proto__ = Uint8Array;\n\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true,\n enumerable: false,\n writable: false\n });\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n\nfunction createBuffer (that, length) {\n var buf;\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n buf = new Uint8Array(length);\n buf.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n buf = that;\n if (buf === null) {\n buf = new Buffer(length);\n }\n buf.length = length;\n }\n\n return buf\n}\n\nfunction allocUnsafe (that, size) {\n var buf = createBuffer(that, size < 0 ? 0 : checked(size) | 0);\n\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n buf[i] = 0;\n }\n }\n\n return buf\n}\n\nfunction fromString (that, string) {\n var length = byteLength(string) | 0;\n var buf = createBuffer(that, length);\n\n var actual = buf.write(string);\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual);\n }\n\n return buf\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0;\n var buf = createBuffer(that, length);\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255;\n }\n return buf\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n var buf;\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array);\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset);\n } else {\n buf = new Uint8Array(array, byteOffset, length);\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n buf.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n buf = fromArrayLike(that, buf);\n }\n\n return buf\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0;\n var buf = createBuffer(that, len);\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len);\n return buf\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity;\n var codePoint;\n var length = string.length;\n var leadSurrogate = null;\n var bytes = [];\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i);\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint;\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n leadSurrogate = codePoint;\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n }\n\n leadSurrogate = null;\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint);\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n );\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n );\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n );\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction byteLength (string) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string;\n }\n\n var len = string.length;\n if (len === 0) return 0\n\n return utf8ToBytes(string).length\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i];\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction from (that, value, offset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, offset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value)\n }\n\n return fromObject(that, value)\n}\n\nBuffer.prototype.write = function write (string, offset, length) {\n // Buffer#write(string)\n if (offset === undefined) {\n length = this.length;\n offset = 0;\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n length = this.length;\n offset = 0;\n // Buffer#write(string, offset[, length])\n } else if (isFinite(offset)) {\n offset = offset | 0;\n if (isFinite(length)) {\n length = length | 0;\n } else {\n length = undefined;\n }\n }\n\n var remaining = this.length - offset;\n if (length === undefined || length > remaining) length = remaining;\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n return utf8Write(this, string, offset, length)\n};\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length;\n start = ~~start;\n end = end === undefined ? len : ~~end;\n\n if (start < 0) {\n start += len;\n if (start < 0) start = 0;\n } else if (start > len) {\n start = len;\n }\n\n if (end < 0) {\n end += len;\n if (end < 0) end = 0;\n } else if (end > len) {\n end = len;\n }\n\n if (end < start) end = start;\n\n var newBuf;\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end);\n // Return an augmented `Uint8Array` instance\n newBuf.__proto__ = Buffer.prototype;\n } else {\n var sliceLen = end - start;\n newBuf = new Buffer(sliceLen, undefined);\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start];\n }\n }\n\n return newBuf\n};\n\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0;\n if (!end && end !== 0) end = this.length;\n if (targetStart >= target.length) targetStart = target.length;\n if (!targetStart) targetStart = 0;\n if (end > 0 && end < start) end = start;\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length;\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start;\n }\n\n var len = end - start;\n var i;\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start];\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start];\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n );\n }\n\n return len\n};\n\nBuffer.prototype.fill = function fill (val, start, end) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n start = 0;\n end = this.length;\n } else if (typeof end === 'string') {\n end = this.length;\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0);\n if (code < 256) {\n val = code;\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255;\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0;\n end = end === undefined ? this.length : end >>> 0;\n\n if (!val) val = 0;\n\n var i;\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val;\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : new Buffer(val);\n var len = bytes.length;\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len];\n }\n }\n\n return this\n};\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return createBuffer(null, 0)\n }\n\n var i;\n if (length === undefined) {\n length = 0;\n for (i = 0; i < list.length; ++i) {\n length += list[i].length;\n }\n }\n\n var buffer = allocUnsafe(null, length);\n var pos = 0;\n for (i = 0; i < list.length; ++i) {\n var buf = list[i];\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos);\n pos += buf.length;\n }\n return buffer\n};\n\nBuffer.byteLength = byteLength;\n\nBuffer.prototype._isBuffer = true;\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n};\n\nmodule.exports = Buffer;\n\n},{\"isarray\":30}],29:[function(require,module,exports){\n\n/******************************************************************************\n * Created 2008-08-19.\n *\n * Dijkstra path-finding functions. Adapted from the Dijkstar Python project.\n *\n * Copyright (C) 2008\n * Wyatt Baldwin <self@wyattbaldwin.com>\n * All rights reserved\n *\n * Licensed under the MIT license.\n *\n * http://www.opensource.org/licenses/mit-license.php\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *****************************************************************************/\nvar dijkstra = {\n single_source_shortest_paths: function(graph, s, d) {\n // Predecessor map for each node that has been encountered.\n // node ID => predecessor node ID\n var predecessors = {};\n\n // Costs of shortest paths from s to all nodes encountered.\n // node ID => cost\n var costs = {};\n costs[s] = 0;\n\n // Costs of shortest paths from s to all nodes encountered; differs from\n // `costs` in that it provides easy access to the node that currently has\n // the known shortest path from s.\n // XXX: Do we actually need both `costs` and `open`?\n var open = dijkstra.PriorityQueue.make();\n open.push(s, 0);\n\n var closest,\n u, v,\n cost_of_s_to_u,\n adjacent_nodes,\n cost_of_e,\n cost_of_s_to_u_plus_cost_of_e,\n cost_of_s_to_v,\n first_visit;\n while (!open.empty()) {\n // In the nodes remaining in graph that have a known cost from s,\n // find the node, u, that currently has the shortest path from s.\n closest = open.pop();\n u = closest.value;\n cost_of_s_to_u = closest.cost;\n\n // Get nodes adjacent to u...\n adjacent_nodes = graph[u] || {};\n\n // ...and explore the edges that connect u to those nodes, updating\n // the cost of the shortest paths to any or all of those nodes as\n // necessary. v is the node across the current edge from u.\n for (v in adjacent_nodes) {\n if (adjacent_nodes.hasOwnProperty(v)) {\n // Get the cost of the edge running from u to v.\n cost_of_e = adjacent_nodes[v];\n\n // Cost of s to u plus the cost of u to v across e--this is *a*\n // cost from s to v that may or may not be less than the current\n // known cost to v.\n cost_of_s_to_u_plus_cost_of_e = cost_of_s_to_u + cost_of_e;\n\n // If we haven't visited v yet OR if the current known cost from s to\n // v is greater than the new cost we just found (cost of s to u plus\n // cost of u to v across e), update v's cost in the cost list and\n // update v's predecessor in the predecessor list (it's now u).\n cost_of_s_to_v = costs[v];\n first_visit = (typeof costs[v] === 'undefined');\n if (first_visit || cost_of_s_to_v > cost_of_s_to_u_plus_cost_of_e) {\n costs[v] = cost_of_s_to_u_plus_cost_of_e;\n open.push(v, cost_of_s_to_u_plus_cost_of_e);\n predecessors[v] = u;\n }\n }\n }\n }\n\n if (typeof d !== 'undefined' && typeof costs[d] === 'undefined') {\n var msg = ['Could not find a path from ', s, ' to ', d, '.'].join('');\n throw new Error(msg);\n }\n\n return predecessors;\n },\n\n extract_shortest_path_from_predecessor_list: function(predecessors, d) {\n var nodes = [];\n var u = d;\n var predecessor;\n while (u) {\n nodes.push(u);\n predecessor = predecessors[u];\n u = predecessors[u];\n }\n nodes.reverse();\n return nodes;\n },\n\n find_path: function(graph, s, d) {\n var predecessors = dijkstra.single_source_shortest_paths(graph, s, d);\n return dijkstra.extract_shortest_path_from_predecessor_list(\n predecessors, d);\n },\n\n /**\n * A very naive priority queue implementation.\n */\n PriorityQueue: {\n make: function (opts) {\n var T = dijkstra.PriorityQueue,\n t = {},\n key;\n opts = opts || {};\n for (key in T) {\n if (T.hasOwnProperty(key)) {\n t[key] = T[key];\n }\n }\n t.queue = [];\n t.sorter = opts.sorter || T.default_sorter;\n return t;\n },\n\n default_sorter: function (a, b) {\n return a.cost - b.cost;\n },\n\n /**\n * Add a new item to the queue and ensure the highest priority element\n * is at the front of the queue.\n */\n push: function (value, cost) {\n var item = {value: value, cost: cost};\n this.queue.push(item);\n this.queue.sort(this.sorter);\n },\n\n /**\n * Return the highest priority element in the queue.\n */\n pop: function () {\n return this.queue.shift();\n },\n\n empty: function () {\n return this.queue.length === 0;\n }\n }\n};\n\n\n// node.js module exports\nif (typeof module !== 'undefined') {\n module.exports = dijkstra;\n}\n\n},{}],30:[function(require,module,exports){\nvar toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n\n},{}]},{},[24])(24)\n});\n\n\n});\n\nvar index = {\n name: 'qrcode',\n props: {\n /**\n * The value of the QR code.\n */\n value: null,\n\n /**\n * The options for the QR code generator.\n * {@link https://github.com/soldair/node-qrcode#qr-code-options}\n */\n options: Object,\n\n /**\n * The tag name of the component's root element.\n */\n tag: {\n type: String,\n default: 'canvas'\n }\n },\n render: function render(createElement) {\n return createElement(this.tag, this.$slots.default);\n },\n watch: {\n $props: {\n deep: true,\n immediate: true,\n\n /**\n * Update the QR code when props changed.\n */\n handler: function handler() {\n if (this.$el) {\n this.generate();\n }\n }\n }\n },\n methods: {\n /**\n * Generate QR code.\n */\n generate: function generate() {\n var _this = this;\n\n var options = this.options,\n tag = this.tag;\n var value = String(this.value);\n\n if (tag === 'canvas') {\n qrcode.toCanvas(this.$el, value, options, function (error) {\n if (error) {\n throw error;\n }\n });\n } else if (tag === 'img') {\n qrcode.toDataURL(value, options, function (error, url) {\n if (error) {\n throw error;\n }\n\n _this.$el.src = url;\n });\n } else {\n qrcode.toString(value, options, function (error, string) {\n if (error) {\n throw error;\n }\n\n _this.$el.innerHTML = string;\n });\n }\n }\n },\n mounted: function mounted() {\n this.generate();\n }\n};\n\nexport default index;\n","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -->\n\n<template>\n\t<div v-if=\"!adding\">\n\t\t<input v-model=\"deviceName\"\n\t\t\t type=\"text\"\n\t\t\t @keydown.enter=\"submit\"\n\t\t\t :disabled=\"loading\"\n\t\t\t :placeholder=\"t('settings', 'App name')\">\n\t\t<button class=\"button\"\n\t\t\t\t:disabled=\"loading\"\n\t\t\t\t@click=\"submit\">{{ t('settings', 'Create new app password')\t}}\n\t\t</button>\n\t</div>\n\t<div v-else>\n\t\t{{ t('settings', 'Use the credentials below to configure your app or device.') }}\n\t\t{{ t('settings', 'For security reasons this password will only be shown once.') }}\n\t\t<div class=\"app-password-row\">\n\t\t\t<span class=\"app-password-label\">{{ t('settings', 'Username') }}</span>\n\t\t\t<input :value=\"loginName\"\n\t\t\t\t type=\"text\"\n\t\t\t\t class=\"monospaced\"\n\t\t\t\t readonly=\"readonly\"\n\t\t\t\t @focus=\"selectInput\"/>\n\t\t</div>\n\t\t<div class=\"app-password-row\">\n\t\t\t<span class=\"app-password-label\">{{ t('settings', 'Password') }}</span>\n\t\t\t<input :value=\"appPassword\"\n\t\t\t\t type=\"text\"\n\t\t\t\t class=\"monospaced\"\n\t\t\t\t ref=\"appPassword\"\n\t\t\t\t readonly=\"readonly\"\n\t\t\t\t @focus=\"selectInput\"/>\n\t\t\t<a class=\"icon icon-clippy\"\n\t\t\t ref=\"clipboardButton\"\n\t\t\t v-tooltip=\"copyTooltipOptions\"\n\t\t\t @mouseover=\"hoveringCopyButton = true\"\n\t\t\t @mouseleave=\"hoveringCopyButton = false\"\n\t\t\t v-clipboard:copy=\"appPassword\"\n\t\t\t v-clipboard:success=\"onCopyPassword\"\n\t\t\t v-clipboard:error=\"onCopyPasswordFailed\"></a>\n\t\t\t<button class=\"button\"\n\t\t\t\t\t@click=\"reset\">\n\t\t\t\t{{ t('settings', 'Done') }}\n\t\t\t</button>\n\t\t</div>\n\t\t<div class=\"app-password-row\">\n\t\t\t<span class=\"app-password-label\"></span>\n\t\t\t<a v-if=\"!showQR\"\n\t\t\t @click=\"showQR = true\">\n\t\t\t\t{{ t('settings', 'Show QR code for mobile apps') }}\n\t\t\t</a>\n\t\t\t<QR v-else\n\t\t\t\t:value=\"qrUrl\"></QR>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\n\timport QR from '@chenfengyuan/vue-qrcode';\n\timport confirmPassword from 'nextcloud-password-confirmation';\n\n\texport default {\n\t\tname: 'AuthTokenSetupDialogue',\n\t\tcomponents: {\n\t\t\tQR,\n\t\t},\n\t\tprops: {\n\t\t\tadd: {\n\t\t\t\ttype: Function,\n\t\t\t\trequired: true,\n\t\t\t}\n\t\t},\n\t\tdata () {\n\t\t\treturn {\n\t\t\t\tadding: false,\n\t\t\t\tloading: false,\n\t\t\t\tdeviceName: '',\n\t\t\t\tappPassword: '',\n\t\t\t\tloginName: '',\n\t\t\t\tpasswordCopied: false,\n\t\t\t\tshowQR: false,\n\t\t\t\tqrUrl: '',\n\t\t\t\thoveringCopyButton: false,\n\t\t\t}\n\t\t},\n\t\tcomputed: {\n\t\t\tcopyTooltipOptions() {\n\t\t\t\tconst base = {\n\t\t\t\t\thideOnTargetClick: false,\n\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t};\n\n\t\t\t\tif (this.passwordCopied) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...base,\n\t\t\t\t\t\tcontent:t('core', 'Copied!'),\n\t\t\t\t\t\tshow: true,\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...base,\n\t\t\t\t\t\tcontent: t('core', 'Copy'),\n\t\t\t\t\t\tshow: this.hoveringCopyButton,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tmethods: {\n\t\t\tselectInput (e) {\n\t\t\t\te.currentTarget.select();\n\t\t\t},\n\t\t\tsubmit: function () {\n\t\t\t\tconfirmPassword()\n\t\t\t\t\t.then(() => {\n\t\t\t\t\t\tthis.loading = true;\n\t\t\t\t\t\treturn this.add(this.deviceName)\n\t\t\t\t\t})\n\t\t\t\t\t.then(token => {\n\t\t\t\t\t\tthis.adding = true;\n\t\t\t\t\t\tthis.loginName = token.loginName;\n\t\t\t\t\t\tthis.appPassword = token.token;\n\n\t\t\t\t\t\tconst server = window.location.protocol + '//' + window.location.host + OC.getRootPath();\n\t\t\t\t\t\tthis.qrUrl = `nc://login/user:${token.loginName}&password:${token.token}&server:${server}`;\n\n\t\t\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\t\t\tthis.$refs.appPassword.select();\n\t\t\t\t\t\t});\n\t\t\t\t\t})\n\t\t\t\t\t.catch(err => {\n\t\t\t\t\t\tconsole.error('could not create a new app password', err);\n\t\t\t\t\t\tOC.Notification.showTemporary(t('core', 'Error while creating device token'));\n\n\t\t\t\t\t\tthis.reset();\n\t\t\t\t\t});\n\t\t\t},\n\t\t\tonCopyPassword() {\n\t\t\t\tthis.passwordCopied = true;\n\t\t\t\tthis.$refs.clipboardButton.blur();\n\t\t\t\tsetTimeout(() => this.passwordCopied = false, 3000);\n\t\t\t},\n\t\t\tonCopyPasswordFailed() {\n\t\t\t\tOC.Notification.showTemporary(t('core', 'Could not copy app password. Please copy it manually.'));\n\t\t\t},\n\t\t\treset () {\n\t\t\t\tthis.adding = false;\n\t\t\t\tthis.loading = false;\n\t\t\t\tthis.showQR = false;\n\t\t\t\tthis.qrUrl = '';\n\t\t\t\tthis.deviceName = '';\n\t\t\t\tthis.appPassword = '';\n\t\t\t\tthis.loginName = '';\n\t\t\t}\n\t\t}\n\t}\n</script>\n\n<style lang=\"scss\" scoped>\n\t.app-password-row {\n\t\tdisplay: table-row;\n\n\t\t.icon {\n\t\t\tbackground-size: 16px 16px;\n\t\t\tdisplay: inline-block;\n\t\t\tposition: relative;\n\t\t\ttop: 3px;\n\t\t\tmargin-left: 5px;\n\t\t\tmargin-right: 8px;\n\t\t}\n\n\t}\n\n\t.app-password-label {\n\t\tdisplay: table-cell;\n\t\tpadding-right: 1em;\n\t\ttext-align: right;\n\t\tvertical-align: middle;\n\t}\n\n\t.monospaced {\n\t\twidth: 245px;\n\t\tfont-family: monospace;\n\t}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthTokenSetupDialogue.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthTokenSetupDialogue.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AuthTokenSetupDialogue.vue?vue&type=template&id=be9cc7be&scoped=true&\"\nimport script from \"./AuthTokenSetupDialogue.vue?vue&type=script&lang=js&\"\nexport * from \"./AuthTokenSetupDialogue.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AuthTokenSetupDialogue.vue?vue&type=style&index=0&id=be9cc7be&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"be9cc7be\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.adding)?_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.deviceName),expression:\"deviceName\"}],attrs:{\"type\":\"text\",\"disabled\":_vm.loading,\"placeholder\":_vm.t('settings', 'App name')},domProps:{\"value\":(_vm.deviceName)},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.submit($event)},\"input\":function($event){if($event.target.composing){ return; }_vm.deviceName=$event.target.value}}}),_vm._v(\" \"),_c('button',{staticClass:\"button\",attrs:{\"disabled\":_vm.loading},on:{\"click\":_vm.submit}},[_vm._v(_vm._s(_vm.t('settings', 'Create new app password'))+\"\\n\\t\")])]):_c('div',[_vm._v(\"\\n\\t\"+_vm._s(_vm.t('settings', 'Use the credentials below to configure your app or device.'))+\"\\n\\t\"+_vm._s(_vm.t('settings', 'For security reasons this password will only be shown once.'))+\"\\n\\t\"),_c('div',{staticClass:\"app-password-row\"},[_c('span',{staticClass:\"app-password-label\"},[_vm._v(_vm._s(_vm.t('settings', 'Username')))]),_vm._v(\" \"),_c('input',{staticClass:\"monospaced\",attrs:{\"type\":\"text\",\"readonly\":\"readonly\"},domProps:{\"value\":_vm.loginName},on:{\"focus\":_vm.selectInput}})]),_vm._v(\" \"),_c('div',{staticClass:\"app-password-row\"},[_c('span',{staticClass:\"app-password-label\"},[_vm._v(_vm._s(_vm.t('settings', 'Password')))]),_vm._v(\" \"),_c('input',{ref:\"appPassword\",staticClass:\"monospaced\",attrs:{\"type\":\"text\",\"readonly\":\"readonly\"},domProps:{\"value\":_vm.appPassword},on:{\"focus\":_vm.selectInput}}),_vm._v(\" \"),_c('a',{directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:(_vm.copyTooltipOptions),expression:\"copyTooltipOptions\"},{name:\"clipboard\",rawName:\"v-clipboard:copy\",value:(_vm.appPassword),expression:\"appPassword\",arg:\"copy\"},{name:\"clipboard\",rawName:\"v-clipboard:success\",value:(_vm.onCopyPassword),expression:\"onCopyPassword\",arg:\"success\"},{name:\"clipboard\",rawName:\"v-clipboard:error\",value:(_vm.onCopyPasswordFailed),expression:\"onCopyPasswordFailed\",arg:\"error\"}],ref:\"clipboardButton\",staticClass:\"icon icon-clippy\",on:{\"mouseover\":function($event){_vm.hoveringCopyButton = true},\"mouseleave\":function($event){_vm.hoveringCopyButton = false}}}),_vm._v(\" \"),_c('button',{staticClass:\"button\",on:{\"click\":_vm.reset}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Done'))+\"\\n\\t\\t\")])]),_vm._v(\" \"),_c('div',{staticClass:\"app-password-row\"},[_c('span',{staticClass:\"app-password-label\"}),_vm._v(\" \"),(!_vm.showQR)?_c('a',{on:{\"click\":function($event){_vm.showQR = true}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Show QR code for mobile apps'))+\"\\n\\t\\t\")]):_c('QR',{attrs:{\"value\":_vm.qrUrl}})],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -->\n\n<template>\n\t<div id=\"security\" class=\"section\">\n\t\t<h2>{{ t('settings', 'Devices & sessions') }}</h2>\n\t\t<p class=\"settings-hint hidden-when-empty\">{{ t('settings', 'Web, desktop and mobile clients currently logged in to your account.') }}</p>\n\t\t<AuthTokenList :tokens=\"tokens\"\n\t\t\t\t\t @toggleScope=\"toggleTokenScope\"\n\t\t\t\t\t @rename=\"rename\"\n\t\t\t\t\t @delete=\"deleteToken\"\n\t\t\t\t\t @wipe=\"wipeToken\" />\n\t\t<AuthTokenSetupDialogue v-if=\"canCreateToken\" :add=\"addNewToken\" />\n\t</div>\n</template>\n\n<script>\n\timport Axios from 'nextcloud-axios';\n\timport confirmPassword from 'nextcloud-password-confirmation';\n\n\timport AuthTokenList from './AuthTokenList';\n\timport AuthTokenSetupDialogue from './AuthTokenSetupDialogue';\n\n\tconst confirm = () => {\n\t\treturn new Promise(res => {\n\t\t\tOC.dialogs.confirm(\n\t\t\t\tt('core', 'Do you really want to wipe your data from this device?'),\n\t\t\t\tt('core', 'Confirm wipe'),\n\t\t\t\tres,\n\t\t\t\ttrue\n\t\t\t)\n\t\t})\n\t}\n\n\t/**\n\t * Tap into a promise without losing the value\n\t */\n\tconst tap = cb => val => {\n\t\tcb(val);\n\t\treturn val;\n\t};\n\n\texport default {\n\t\tname: \"AuthTokenSection\",\n\t\tprops: {\n\t\t\ttokens: {\n\t\t\t\ttype: Array,\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t\tcanCreateToken: {\n\t\t\t\ttype: Boolean,\n\t\t\t\trequired: true\n\t\t\t}\n\t\t},\n\t\tcomponents: {\n\t\t\tAuthTokenSetupDialogue,\n\t\t\tAuthTokenList\n\t\t},\n\t\tdata() {\n\t\t\treturn {\n\t\t\t\tbaseUrl: OC.generateUrl('/settings/personal/authtokens'),\n\t\t\t}\n\t\t},\n\t\tmethods: {\n\t\t\taddNewToken (name) {\n\t\t\t\tconsole.debug('creating a new app token', name);\n\n\t\t\t\tconst data = {\n\t\t\t\t\tname,\n\t\t\t\t};\n\t\t\t\treturn Axios.post(this.baseUrl, data)\n\t\t\t\t\t.then(resp => resp.data)\n\t\t\t\t\t.then(tap(() => console.debug('app token created')))\n\t\t\t\t\t.then(tap(data => this.tokens.push(data.deviceToken)))\n\t\t\t\t\t.catch(err => {\n\t\t\t\t\t\tconsole.error.bind('could not create app password', err);\n\t\t\t\t\t\tOC.Notification.showTemporary(t('core', 'Error while creating device token'));\n\t\t\t\t\t\tthrow err;\n\t\t\t\t\t});\n\t\t\t},\n\t\t\ttoggleTokenScope (token, scope, value) {\n\t\t\t\tconsole.debug('updating app token scope', token.id, scope, value);\n\n\t\t\t\tconst oldVal = token.scope[scope];\n\t\t\t\ttoken.scope[scope] = value;\n\n\t\t\t\treturn this.updateToken(token)\n\t\t\t\t\t.then(tap(() => console.debug('app token scope updated')))\n\t\t\t\t\t.catch(err => {\n\t\t\t\t\t\tconsole.error.bind('could not update app token scope', err);\n\t\t\t\t\t\tOC.Notification.showTemporary(t('core', 'Error while updating device token scope'));\n\n\t\t\t\t\t\t// Restore\n\t\t\t\t\t\ttoken.scope[scope] = oldVal;\n\n\t\t\t\t\t\tthrow err;\n\t\t\t\t\t})\n\t\t\t},\n\t\t\trename (token, newName) {\n\t\t\t\tconsole.debug('renaming app token', token.id, token.name, newName);\n\n\t\t\t\tconst oldName = token.name;\n\t\t\t\ttoken.name = newName;\n\n\t\t\t\treturn this.updateToken(token)\n\t\t\t\t\t.then(tap(() => console.debug('app token name updated')))\n\t\t\t\t\t.catch(err => {\n\t\t\t\t\t\tconsole.error.bind('could not update app token name', err);\n\t\t\t\t\t\tOC.Notification.showTemporary(t('core', 'Error while updating device token name'));\n\n\t\t\t\t\t\t// Restore\n\t\t\t\t\t\ttoken.name = oldName;\n\t\t\t\t\t})\n\t\t\t},\n\t\t\tupdateToken (token) {\n\t\t\t\treturn Axios.put(this.baseUrl + '/' + token.id, token)\n\t\t\t\t\t.then(resp => resp.data)\n\t\t\t},\n\t\t\tdeleteToken (token) {\n\t\t\t\tconsole.debug('deleting app token', token);\n\n\t\t\t\tthis.tokens = this.tokens.filter(t => t !== token);\n\n\t\t\t\treturn Axios.delete(this.baseUrl + '/' + token.id)\n\t\t\t\t\t.then(resp => resp.data)\n\t\t\t\t\t.then(tap(() => console.debug('app token deleted')))\n\t\t\t\t\t.catch(err => {\n\t\t\t\t\t\tconsole.error.bind('could not delete app token', err);\n\t\t\t\t\t\tOC.Notification.showTemporary(t('core', 'Error while deleting the token'));\n\n\t\t\t\t\t\t// Restore\n\t\t\t\t\t\tthis.tokens.push(token);\n\t\t\t\t\t})\n\t\t\t},\n\t\t\tasync wipeToken(token) {\n\t\t\t\tconsole.debug('wiping app token', token);\n\n\t\t\t\ttry {\n\t\t\t\t\tawait confirmPassword()\n\n\t\t\t\t\tif (!(await confirm())) {\n\t\t\t\t\t\tconsole.debug('wipe aborted by user')\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tawait Axios.post(this.baseUrl + '/wipe/' + token.id)\n\t\t\t\t\tconsole.debug('app token marked for wipe')\n\n\t\t\t\t\ttoken.type = 2;\n\t\t\t\t} catch (err) {\n\t\t\t\t\tconsole.error('could not wipe app token', err);\n\t\t\t\t\tOC.Notification.showTemporary(t('core', 'Error while wiping the device with the token'));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n</script>\n\n<style scoped>\n\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthTokenSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthTokenSection.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AuthTokenSection.vue?vue&type=template&id=f0bc4a22&scoped=true&\"\nimport script from \"./AuthTokenSection.vue?vue&type=script&lang=js&\"\nexport * from \"./AuthTokenSection.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f0bc4a22\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"section\",attrs:{\"id\":\"security\"}},[_c('h2',[_vm._v(_vm._s(_vm.t('settings', 'Devices & sessions')))]),_vm._v(\" \"),_c('p',{staticClass:\"settings-hint hidden-when-empty\"},[_vm._v(_vm._s(_vm.t('settings', 'Web, desktop and mobile clients currently logged in to your account.')))]),_vm._v(\" \"),_c('AuthTokenList',{attrs:{\"tokens\":_vm.tokens},on:{\"toggleScope\":_vm.toggleTokenScope,\"rename\":_vm.rename,\"delete\":_vm.deleteToken,\"wipe\":_vm.wipeToken}}),_vm._v(\" \"),(_vm.canCreateToken)?_c('AuthTokenSetupDialogue',{attrs:{\"add\":_vm.addNewToken}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport Vue from 'vue';\nimport VueClipboard from 'vue-clipboard2';\nimport VTooltip from 'v-tooltip';\n\nimport AuthTokenSection from './components/AuthTokenSection';\n\n__webpack_nonce__ = btoa(OC.requestToken);\n\nVue.use(VueClipboard);\nVue.use(VTooltip, { defaultHtml: false });\nVue.prototype.t = t;\n\nconst View = Vue.extend(AuthTokenSection);\nnew View({\n\tpropsData: {\n\t\ttokens: OCP.InitialState.loadState('settings', 'app_tokens'),\n\t\tcanCreateToken: OCP.InitialState.loadState('settings', 'can_create_app_token'),\n\t}\n}).$mount('#security-authtokens');\n"],"sourceRoot":""} \ No newline at end of file diff --git a/apps/settings/l10n/ar.js b/apps/settings/l10n/ar.js new file mode 100644 index 00000000000..64718239908 --- /dev/null +++ b/apps/settings/l10n/ar.js @@ -0,0 +1,241 @@ +OC.L10N.register( + "settings", + { + "{actor} changed your password" : "{actor} قام بتغيير كلمتك السرية", + "You changed your password" : "لقد قمت بتعديل كلمة مرورك", + "Your password was reset by an administrator" : "قام أحد المدراء بإعادة تعيين كلمة مرورك", + "{actor} changed your email address" : "{actor} قام بتغيير عنوان بريدك الإلكتروني", + "You changed your email address" : "لقد قمت بتعديل عنوان بريدك الإلكتروني", + "Your email address was changed by an administrator" : "قام أحد المدراء بتغيير عنوان بريدك الإلكتروني", + "Security" : "الأمان", + "Couldn't remove app." : "لم نتمكّن مِن حذف التطبيق.", + "Couldn't update app." : "تعذر تحديث التطبيق.", + "Wrong password" : "كلمة مرور خاطئة", + "Saved" : "حفظ", + "No user supplied" : "لم يتم توفير مستخدم ", + "Unable to change password" : "لا يمكن تغيير كلمة المرور", + "Authentication error" : "لم يتم التأكد من الشخصية بنجاح", + "Wrong admin recovery password. Please check the password and try again." : "خطا في كلمة مرور المسؤول المستردة, يرجى التاكد من كلمة المرور والمحاولة مرة اخرى.", + "Federated Cloud Sharing" : "المشاركة السحابية الموحّدة", + "Invalid SMTP password." : "كلمة مرور SMTP خاطئة.", + "Email setting test" : "تجريب إعدادات البريد الإلكتروني", + "Well done, %s!" : "حسنًا فعلت، %s !", + "Invalid mail address" : "عنوان البريد الإلكتروني خاطئ", + "Settings saved" : "تم حفظ الإعدادات", + "Unable to change full name" : "لم يتم التمكن من تغيير اسمك الكامل", + "Password changed for %s" : "تم تعديل كلمة سر %s", + "Welcome aboard" : "مرحبًا بكم على متن ناكست كلاود", + "Welcome aboard %s" : "مرحبًا بكم على متن ناكست كلاود يا %s", + "Your username is: %s" : "إسم المستخدم الخاص بك هو : %s", + "Set your password" : "قم بإدخال كلمتك السرية", + "Go to %s" : "الإنتقال إلى %s", + "Install Client" : "تنصيب العميل", + "Delete" : "إلغاء", + "Unlimited" : "غير محدود", + "Verifying …" : "عملية التحقق جارية …", + "Verify" : "تحقق", + "Migration in progress. Please wait until the migration is finished" : "عملية الترحيل جارية. الرجاء الإنتظار حتى تكتمل العملية", + "Migration started …" : "بدأت عملية الترحيل …", + "Not saved" : "لم يتم حفظه", + "Sending…" : "جارٍ الإرسال …", + "Email sent" : "تم ارسال البريد الالكتروني", + "Valid until {date}" : "صالح إلى غاية {date}", + "Local" : "المحلي", + "Private" : "خاص بك", + "Only visible to local users" : "ظاهر فقط للمستخدِمين المحليين", + "Only visible to you" : "ظاهر فقط بالنسبة لك", + "Contacts" : "جهات الإتصال", + "Public" : "عمومي", + "Very weak password" : "كلمة السر ضعيفة جدا", + "Weak password" : "كلمة السر ضعيفة", + "Good password" : "كلمة السر جيدة", + "Strong password" : "كلمة السر قوية", + "Select a profile picture" : "اختر صورة الملف الشخصي ", + "Week starts on {fdow}" : "بداية الأسبوع يوم {fdow}", + "Groups" : "مجموعات", + "Arabic (Algeria)" : "العربية (الجزائر)", + "Arabic (Bahrain)" : "العربية (البحرين)", + "Arabic (Egypt)" : "العربية (مصر)", + "Arabic (Iraq)" : "العربية (العراق)", + "Arabic (Jordan)" : "العربية (الأردن)", + "Arabic (Kuwait)" : "العربية (الكويت)", + "Arabic (Lebanon)" : "العربية (لبنان)", + "Arabic (Libya)" : "العربية (ليبيا)", + "Arabic (Morocco)" : "العربية (المغرب)", + "Arabic (Oman)" : "العربية (عمان)", + "Arabic (Qatar)" : "العربية (قطر)", + "Arabic (Sudan)" : "العربية (السودان)", + "Arabic (Syria)" : "العربية (سوريا)", + "Arabic (Tunisia)" : "العربية (تونس)", + "Arabic (Yemen)" : "العربية (اليمن)", + "Arabic" : "العربية", + "Basque" : "الباسكية", + "Catalan" : "الكتالونية", + "Central Morocco Tamazight (Latin)" : "الأمازيغية لوسط المغرب (لاتينية)", + "Central Morocco Tamazight (Latin, Morocco)" : "الأمازيغية لوسط المغرب (لاتينية، المغرب)", + "Central Morocco Tamazight" : "الأمازيغية لوسط المغرب", + "Chinese" : "الصينية", + "Dutch" : "الهولندية", + "English" : "الإنجليزية", + "French (Benin)" : "الفرنسية (البنين)", + "French (Chad)" : "الفرنسية (تشاد)", + "French (France)" : "الفرنسية (فرنسا)", + "French (Mali)" : "الفرنسية (مالي)", + "French (Niger)" : "الفرنسية (النيجر)", + "French (Senegal)" : "الفرنسية (السنغال)", + "French" : "الفرنسية", + "German (Germany)" : "الألمانية (ألمانيا)", + "German" : "الألمانية", + "Hindi (India)" : "الهندية (الهند)", + "Hindi" : "الهندية", + "Indonesian" : "الأندونيسية", + "Italian (Italy)" : "الإيطالية (إيطاليا)", + "Japanese" : "اليابانية", + "Kabyle (Algeria)" : "القبائلية (الجزائر)", + "Kabyle" : "القبائلية", + "Persian" : "الفارسية", + "Spanish" : "الإسبانية", + "Tachelhit" : "تاشلحيت", + "Zulu" : "الزولو", + "Save changes" : "حفظ التعديلات", + "Device settings" : "إعدادات الجهاز", + "Allow filesystem access" : "السماح بالنفاذ إلى نظام الملفات", + "Rename" : "تعديل الإسم", + "Revoke" : "إلغاء", + "Internet Explorer" : "إنترنت إكسبلورر", + "Edge" : "آدج", + "Firefox" : "فايرفوكس", + "Google Chrome" : "غوغل كروم", + "Safari" : "سفاري", + "Google Chrome for Android" : "غوغل كروم لنظام الأندرويد", + "iPhone" : "الآيفون", + "Nextcloud Android app" : "تطبيق Nextcloud للأندرويد", + "Nextcloud Talk for iOS" : "Nextcloud Talk للآيفون", + "Nextcloud Talk for Android" : "Nextcloud Talk للأندرويد", + "This session" : "هذه الجلسة", + "Device" : "الجهاز", + "Last activity" : "آخر نشاط", + "App name" : "إسم التطبيق", + "Create new app password" : "إنشاء كلمة سرية جديدة للتطبيق", + "Username" : "إسم المستخدم", + "Password" : "كلمة المرور", + "Done" : "تم", + "Copied!" : "تم نسخه !", + "Copy" : "نسخ", + "Official" : "رسمي", + "Remove" : "حذف", + "Disable" : "إيقاف", + "All" : "الكل", + "No results" : "دون أية نتيجة", + "View in store" : "العرض على المتجر", + "Visit website" : "زر الموقع", + "Report a bug" : "الإبلاغ عن عِلّة", + "User documentation" : "دليل المستخدم", + "Admin documentation" : "دليل المدير", + "Developer documentation" : "دليل المُطوّر", + "Results from other categories" : "نتائج عبر الفئات الأخرى", + "Enable all" : "تنشيط الكل", + "Enable" : "تفعيل", + "New password" : "كلمات سر جديدة", + "Delete user" : "احذف المستخدم", + "Welcome mail sent!" : "تم إرسال بريد الترحيب!", + "Display name" : "الاسم المعروض", + "Email" : "البريد الإلكترونى", + "Group admin for" : "فريق المُدراء لـ", + "Quota" : "حصه", + "Language" : "اللغة", + "Storage location" : "مسار التخزين", + "Last login" : "آخِر تسجيل للدخول", + "Default language" : "اللغة الافتراضية", + "Add a new user" : "إضافة مستخدِم جديد", + "All languages" : "كافة اللغات", + "Your apps" : "تطبيقاتك", + "Active apps" : "التطبيقات النشطة", + "Disabled apps" : "التطبيقات المعطلة", + "Updates" : "التحديثات", + "App bundles" : "حُزَم التطبيقات", + "New user" : "مستخدم جديد", + "Default quota:" : "الحصة الافتراضية:", + "Show Languages" : "اعرض اللغات", + "Remove group" : "حذف الفريق", + "Admins" : "المدراء", + "Disabled users" : "المستخدمون المُعطَّلون", + "Everyone" : "الجميع", + "Add group" : "إضافة فريق", + "App update" : "تحديث التطبيق", + "SSL Root Certificates" : "شهادات أمان الـ SSL الجذرية", + "Common Name" : "الإسم الشائع", + "Valid until" : "صالح حتى", + "Issued By" : "سُلّمت مِن طرف", + "Valid until %s" : "صالحة إلى غاية %s", + "Import root certificate" : "إستيراد شهادة جذرية", + "Administrator documentation" : "دليل المدير", + "Documentation" : "الدليل", + "Forum" : "منتدى", + "None" : "لا شيء", + "Login" : "تسجيل الدخول", + "NT LAN Manager" : "مدير الشبكة المحلية LAN NT", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "خادوم البريد", + "Send mode" : "وضعية الإرسال", + "Encryption" : "التشفير", + "mail" : "البريد", + "Authentication method" : "أسلوب التطابق", + "Authentication required" : "المصادقة لازمة", + "Server address" : "عنوان الخادم", + "Port" : "المنفذ", + "SMTP Username" : "إسم مستخدم الـ SMTP", + "SMTP Password" : "كلمة مرور الـ SMTP", + "Test email settings" : "فحص إعدادات البريد الإلكتروني", + "Send email" : "إرسال بريد إلكتروني", + "Security & setup warnings" : "تحذيرات الإعداد و الأمان", + "Version" : "إصدار", + "Server-side encryption" : "التشفير مِن جانب الخادوم", + "Enable server-side encryption" : "تشغيل التشفير مِن جانب الخادوم", + "Enable encryption" : "تنشيط التعمية", + "Start migration" : "إبدأ الترحيل", + "Background jobs" : "الأنشطة في الخلفية", + "Execute one task with each page loaded" : "قم بتنفيذ مهمة واحدة مع كل صفحة تم تحميلها", + "Sharing" : "مشاركة", + "Allow apps to use the Share API" : "السماح للتطبيقات بالمشاركة عن طريق الAPI", + "Allow users to share via link" : "السماح للمستخدم بمشاركة الملف عن طريق رابط", + "Allow public uploads" : "السماح بالرفع للعامة ", + "Always ask for a password" : "أطلب دائما كلمة السر", + "Set default expiration date" : "تعيين تاريخ إنتهاء الصلاحية الإفتراضية", + "Expire after " : "ينتهي بعد", + "days" : "أيام", + "Allow resharing" : "السماح بإعادة المشاركة ", + "Personal" : "شخصي", + "Administration" : "الإدارة", + "Like our Facebook page" : "قم بالإعجاب بصفحتنا على الفايسبوك", + "Follow us on Twitter" : "تابعونا على تويتر", + "Follow us on Mastodon" : "تابعونا على ماستدون", + "Check out our blog" : "إلقي نظرة على مدوّنتنا", + "Profile picture" : "صورة الملف الشخصي", + "Upload new" : "رفع الان", + "Select from Files" : "إختر مِن بين الملفات", + "Remove image" : "إزالة الصورة", + "png or jpg, max. 20 MB" : "نسق png أو jpg و حجم أقصاه 20 م.ب", + "Cancel" : "الغاء", + "Choose as profile picture" : "اختر صورة للملف الشخصي ", + "Details" : "التفاصيل", + "Full name" : "الإسم الكامل", + "No display name set" : "لم يتم إدخال أي إسم", + "Your email address" : "عنوانك البريدي", + "No email address set" : "لم يتم إدخال أي عنوان للبريد الإلكتروني", + "For password reset and notifications" : "لإعادة تعيين كلمة السر و تلقي الإشعارات", + "Phone number" : "رقم الهاتف", + "Your phone number" : "رقم هاتفك", + "Address" : "العنوان", + "Your postal address" : "عنوان البريد العادي", + "Website" : "موقع الويب", + "Link https://…" : "الرابط https://…", + "Twitter" : "تويتر", + "Twitter handle @…" : "حساب تويتر @…", + "Help translate" : "ساعد في الترجمه", + "Current password" : "كلمات السر الحالية", + "Change password" : "عدل كلمة السر", + "Follow us on Google+" : "تابعونا على Google+" +}, +"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;"); diff --git a/apps/settings/l10n/ar.json b/apps/settings/l10n/ar.json new file mode 100644 index 00000000000..30882c0c8de --- /dev/null +++ b/apps/settings/l10n/ar.json @@ -0,0 +1,239 @@ +{ "translations": { + "{actor} changed your password" : "{actor} قام بتغيير كلمتك السرية", + "You changed your password" : "لقد قمت بتعديل كلمة مرورك", + "Your password was reset by an administrator" : "قام أحد المدراء بإعادة تعيين كلمة مرورك", + "{actor} changed your email address" : "{actor} قام بتغيير عنوان بريدك الإلكتروني", + "You changed your email address" : "لقد قمت بتعديل عنوان بريدك الإلكتروني", + "Your email address was changed by an administrator" : "قام أحد المدراء بتغيير عنوان بريدك الإلكتروني", + "Security" : "الأمان", + "Couldn't remove app." : "لم نتمكّن مِن حذف التطبيق.", + "Couldn't update app." : "تعذر تحديث التطبيق.", + "Wrong password" : "كلمة مرور خاطئة", + "Saved" : "حفظ", + "No user supplied" : "لم يتم توفير مستخدم ", + "Unable to change password" : "لا يمكن تغيير كلمة المرور", + "Authentication error" : "لم يتم التأكد من الشخصية بنجاح", + "Wrong admin recovery password. Please check the password and try again." : "خطا في كلمة مرور المسؤول المستردة, يرجى التاكد من كلمة المرور والمحاولة مرة اخرى.", + "Federated Cloud Sharing" : "المشاركة السحابية الموحّدة", + "Invalid SMTP password." : "كلمة مرور SMTP خاطئة.", + "Email setting test" : "تجريب إعدادات البريد الإلكتروني", + "Well done, %s!" : "حسنًا فعلت، %s !", + "Invalid mail address" : "عنوان البريد الإلكتروني خاطئ", + "Settings saved" : "تم حفظ الإعدادات", + "Unable to change full name" : "لم يتم التمكن من تغيير اسمك الكامل", + "Password changed for %s" : "تم تعديل كلمة سر %s", + "Welcome aboard" : "مرحبًا بكم على متن ناكست كلاود", + "Welcome aboard %s" : "مرحبًا بكم على متن ناكست كلاود يا %s", + "Your username is: %s" : "إسم المستخدم الخاص بك هو : %s", + "Set your password" : "قم بإدخال كلمتك السرية", + "Go to %s" : "الإنتقال إلى %s", + "Install Client" : "تنصيب العميل", + "Delete" : "إلغاء", + "Unlimited" : "غير محدود", + "Verifying …" : "عملية التحقق جارية …", + "Verify" : "تحقق", + "Migration in progress. Please wait until the migration is finished" : "عملية الترحيل جارية. الرجاء الإنتظار حتى تكتمل العملية", + "Migration started …" : "بدأت عملية الترحيل …", + "Not saved" : "لم يتم حفظه", + "Sending…" : "جارٍ الإرسال …", + "Email sent" : "تم ارسال البريد الالكتروني", + "Valid until {date}" : "صالح إلى غاية {date}", + "Local" : "المحلي", + "Private" : "خاص بك", + "Only visible to local users" : "ظاهر فقط للمستخدِمين المحليين", + "Only visible to you" : "ظاهر فقط بالنسبة لك", + "Contacts" : "جهات الإتصال", + "Public" : "عمومي", + "Very weak password" : "كلمة السر ضعيفة جدا", + "Weak password" : "كلمة السر ضعيفة", + "Good password" : "كلمة السر جيدة", + "Strong password" : "كلمة السر قوية", + "Select a profile picture" : "اختر صورة الملف الشخصي ", + "Week starts on {fdow}" : "بداية الأسبوع يوم {fdow}", + "Groups" : "مجموعات", + "Arabic (Algeria)" : "العربية (الجزائر)", + "Arabic (Bahrain)" : "العربية (البحرين)", + "Arabic (Egypt)" : "العربية (مصر)", + "Arabic (Iraq)" : "العربية (العراق)", + "Arabic (Jordan)" : "العربية (الأردن)", + "Arabic (Kuwait)" : "العربية (الكويت)", + "Arabic (Lebanon)" : "العربية (لبنان)", + "Arabic (Libya)" : "العربية (ليبيا)", + "Arabic (Morocco)" : "العربية (المغرب)", + "Arabic (Oman)" : "العربية (عمان)", + "Arabic (Qatar)" : "العربية (قطر)", + "Arabic (Sudan)" : "العربية (السودان)", + "Arabic (Syria)" : "العربية (سوريا)", + "Arabic (Tunisia)" : "العربية (تونس)", + "Arabic (Yemen)" : "العربية (اليمن)", + "Arabic" : "العربية", + "Basque" : "الباسكية", + "Catalan" : "الكتالونية", + "Central Morocco Tamazight (Latin)" : "الأمازيغية لوسط المغرب (لاتينية)", + "Central Morocco Tamazight (Latin, Morocco)" : "الأمازيغية لوسط المغرب (لاتينية، المغرب)", + "Central Morocco Tamazight" : "الأمازيغية لوسط المغرب", + "Chinese" : "الصينية", + "Dutch" : "الهولندية", + "English" : "الإنجليزية", + "French (Benin)" : "الفرنسية (البنين)", + "French (Chad)" : "الفرنسية (تشاد)", + "French (France)" : "الفرنسية (فرنسا)", + "French (Mali)" : "الفرنسية (مالي)", + "French (Niger)" : "الفرنسية (النيجر)", + "French (Senegal)" : "الفرنسية (السنغال)", + "French" : "الفرنسية", + "German (Germany)" : "الألمانية (ألمانيا)", + "German" : "الألمانية", + "Hindi (India)" : "الهندية (الهند)", + "Hindi" : "الهندية", + "Indonesian" : "الأندونيسية", + "Italian (Italy)" : "الإيطالية (إيطاليا)", + "Japanese" : "اليابانية", + "Kabyle (Algeria)" : "القبائلية (الجزائر)", + "Kabyle" : "القبائلية", + "Persian" : "الفارسية", + "Spanish" : "الإسبانية", + "Tachelhit" : "تاشلحيت", + "Zulu" : "الزولو", + "Save changes" : "حفظ التعديلات", + "Device settings" : "إعدادات الجهاز", + "Allow filesystem access" : "السماح بالنفاذ إلى نظام الملفات", + "Rename" : "تعديل الإسم", + "Revoke" : "إلغاء", + "Internet Explorer" : "إنترنت إكسبلورر", + "Edge" : "آدج", + "Firefox" : "فايرفوكس", + "Google Chrome" : "غوغل كروم", + "Safari" : "سفاري", + "Google Chrome for Android" : "غوغل كروم لنظام الأندرويد", + "iPhone" : "الآيفون", + "Nextcloud Android app" : "تطبيق Nextcloud للأندرويد", + "Nextcloud Talk for iOS" : "Nextcloud Talk للآيفون", + "Nextcloud Talk for Android" : "Nextcloud Talk للأندرويد", + "This session" : "هذه الجلسة", + "Device" : "الجهاز", + "Last activity" : "آخر نشاط", + "App name" : "إسم التطبيق", + "Create new app password" : "إنشاء كلمة سرية جديدة للتطبيق", + "Username" : "إسم المستخدم", + "Password" : "كلمة المرور", + "Done" : "تم", + "Copied!" : "تم نسخه !", + "Copy" : "نسخ", + "Official" : "رسمي", + "Remove" : "حذف", + "Disable" : "إيقاف", + "All" : "الكل", + "No results" : "دون أية نتيجة", + "View in store" : "العرض على المتجر", + "Visit website" : "زر الموقع", + "Report a bug" : "الإبلاغ عن عِلّة", + "User documentation" : "دليل المستخدم", + "Admin documentation" : "دليل المدير", + "Developer documentation" : "دليل المُطوّر", + "Results from other categories" : "نتائج عبر الفئات الأخرى", + "Enable all" : "تنشيط الكل", + "Enable" : "تفعيل", + "New password" : "كلمات سر جديدة", + "Delete user" : "احذف المستخدم", + "Welcome mail sent!" : "تم إرسال بريد الترحيب!", + "Display name" : "الاسم المعروض", + "Email" : "البريد الإلكترونى", + "Group admin for" : "فريق المُدراء لـ", + "Quota" : "حصه", + "Language" : "اللغة", + "Storage location" : "مسار التخزين", + "Last login" : "آخِر تسجيل للدخول", + "Default language" : "اللغة الافتراضية", + "Add a new user" : "إضافة مستخدِم جديد", + "All languages" : "كافة اللغات", + "Your apps" : "تطبيقاتك", + "Active apps" : "التطبيقات النشطة", + "Disabled apps" : "التطبيقات المعطلة", + "Updates" : "التحديثات", + "App bundles" : "حُزَم التطبيقات", + "New user" : "مستخدم جديد", + "Default quota:" : "الحصة الافتراضية:", + "Show Languages" : "اعرض اللغات", + "Remove group" : "حذف الفريق", + "Admins" : "المدراء", + "Disabled users" : "المستخدمون المُعطَّلون", + "Everyone" : "الجميع", + "Add group" : "إضافة فريق", + "App update" : "تحديث التطبيق", + "SSL Root Certificates" : "شهادات أمان الـ SSL الجذرية", + "Common Name" : "الإسم الشائع", + "Valid until" : "صالح حتى", + "Issued By" : "سُلّمت مِن طرف", + "Valid until %s" : "صالحة إلى غاية %s", + "Import root certificate" : "إستيراد شهادة جذرية", + "Administrator documentation" : "دليل المدير", + "Documentation" : "الدليل", + "Forum" : "منتدى", + "None" : "لا شيء", + "Login" : "تسجيل الدخول", + "NT LAN Manager" : "مدير الشبكة المحلية LAN NT", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "خادوم البريد", + "Send mode" : "وضعية الإرسال", + "Encryption" : "التشفير", + "mail" : "البريد", + "Authentication method" : "أسلوب التطابق", + "Authentication required" : "المصادقة لازمة", + "Server address" : "عنوان الخادم", + "Port" : "المنفذ", + "SMTP Username" : "إسم مستخدم الـ SMTP", + "SMTP Password" : "كلمة مرور الـ SMTP", + "Test email settings" : "فحص إعدادات البريد الإلكتروني", + "Send email" : "إرسال بريد إلكتروني", + "Security & setup warnings" : "تحذيرات الإعداد و الأمان", + "Version" : "إصدار", + "Server-side encryption" : "التشفير مِن جانب الخادوم", + "Enable server-side encryption" : "تشغيل التشفير مِن جانب الخادوم", + "Enable encryption" : "تنشيط التعمية", + "Start migration" : "إبدأ الترحيل", + "Background jobs" : "الأنشطة في الخلفية", + "Execute one task with each page loaded" : "قم بتنفيذ مهمة واحدة مع كل صفحة تم تحميلها", + "Sharing" : "مشاركة", + "Allow apps to use the Share API" : "السماح للتطبيقات بالمشاركة عن طريق الAPI", + "Allow users to share via link" : "السماح للمستخدم بمشاركة الملف عن طريق رابط", + "Allow public uploads" : "السماح بالرفع للعامة ", + "Always ask for a password" : "أطلب دائما كلمة السر", + "Set default expiration date" : "تعيين تاريخ إنتهاء الصلاحية الإفتراضية", + "Expire after " : "ينتهي بعد", + "days" : "أيام", + "Allow resharing" : "السماح بإعادة المشاركة ", + "Personal" : "شخصي", + "Administration" : "الإدارة", + "Like our Facebook page" : "قم بالإعجاب بصفحتنا على الفايسبوك", + "Follow us on Twitter" : "تابعونا على تويتر", + "Follow us on Mastodon" : "تابعونا على ماستدون", + "Check out our blog" : "إلقي نظرة على مدوّنتنا", + "Profile picture" : "صورة الملف الشخصي", + "Upload new" : "رفع الان", + "Select from Files" : "إختر مِن بين الملفات", + "Remove image" : "إزالة الصورة", + "png or jpg, max. 20 MB" : "نسق png أو jpg و حجم أقصاه 20 م.ب", + "Cancel" : "الغاء", + "Choose as profile picture" : "اختر صورة للملف الشخصي ", + "Details" : "التفاصيل", + "Full name" : "الإسم الكامل", + "No display name set" : "لم يتم إدخال أي إسم", + "Your email address" : "عنوانك البريدي", + "No email address set" : "لم يتم إدخال أي عنوان للبريد الإلكتروني", + "For password reset and notifications" : "لإعادة تعيين كلمة السر و تلقي الإشعارات", + "Phone number" : "رقم الهاتف", + "Your phone number" : "رقم هاتفك", + "Address" : "العنوان", + "Your postal address" : "عنوان البريد العادي", + "Website" : "موقع الويب", + "Link https://…" : "الرابط https://…", + "Twitter" : "تويتر", + "Twitter handle @…" : "حساب تويتر @…", + "Help translate" : "ساعد في الترجمه", + "Current password" : "كلمات السر الحالية", + "Change password" : "عدل كلمة السر", + "Follow us on Google+" : "تابعونا على Google+" +},"pluralForm" :"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;" +} \ No newline at end of file diff --git a/apps/settings/l10n/ast.js b/apps/settings/l10n/ast.js new file mode 100644 index 00000000000..f3843c12e2a --- /dev/null +++ b/apps/settings/l10n/ast.js @@ -0,0 +1,221 @@ +OC.L10N.register( + "settings", + { + "{actor} changed your password" : "{actor} camudó la to contraseña", + "You changed your password" : "Camudesti la to contraseña", + "Your password was reset by an administrator" : "La to contraseña reafitóla un alministrador", + "{actor} changed your email address" : "{actor} camudó la to direición de corréu", + "You changed your email address" : "Camudesti la to direición de corréu", + "Your email address was changed by an administrator" : "La to direición de corréu camudóla un alministrador", + "Security" : "Seguranza", + "You successfully logged in using two-factor authentication (%1$s)" : "Aniciesti sesión con ésitu usando l'autenticación en dos pasos (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Falló un intentu d'aniciu de sesión usando l'autenticación en dos pasos (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Modificóse la to <strong>contraseña</strong> o <strong>corréu</strong>", + "Couldn't remove app." : "Nun pudo desaniciase l'aplicación.", + "Couldn't update app." : "Nun pudo anovase l'aplicación.", + "Wrong password" : "Contraseña incorreuta", + "Saved" : "Guardóse", + "No user supplied" : "Nun s'apurrieron usuarios", + "Unable to change password" : "Nun pue camudase la contraseña", + "Authentication error" : "Fallu d'autenticación", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Apurri una contraseña de recuperación d'alministrador, d'otramiente perderánse tolos datos d'usuariu.", + "Wrong admin recovery password. Please check the password and try again." : "Contraseña de recuperación d'alministrador incorreuta. Comprueba la contraseña y volvi tentalo.", + "Backend doesn't support password change, but the user's encryption key was updated." : "El backend nun sofita'l cambéu de contraseña pero anovóse la clave del cifráu d'usuarios", + "installing and updating apps via the app store or Federated Cloud Sharing" : "instalando y anovando aplicaciones pela tienda d'aplicaciones o compartición de ñube federada", + "Federated Cloud Sharing" : "Compartición de ñube federada", + "Invalid SMTP password." : "Contraseña SMTP non válida", + "Well done, %s!" : "¡Bien fecho, %s!", + "If you received this email, the email configuration seems to be correct." : "Si recibes esti corréu, entós la configuración de corréu paez tar bien.", + "Email could not be sent. Check your mail server log" : "Nun pudo unviase'l corréu. Comprueba'l rexistru del to sirvidor de corréu", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Asocedió un problema entrín s'unviaba'l corréu. Revisa los tos axustes por favor. (Fallu: %s)", + "You need to set your user email before being able to send test emails." : "Tienes de configurar la direición de corréu-e enantes de poder unviar mensaxes de prueba.", + "Invalid mail address" : "Direición non válida de corréu", + "Settings saved" : "Axustes guardaos", + "Unable to change full name" : "Nun pue camudase'l nome completu", + "Unable to change email address" : "Nun pue camudase la direición de corréu", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Pa verificar la to cuenta de Twitter, espubliza elllí'l tuit de darré (por favor asegúrate que lu espublices ensin saltos de llinia):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Pa verificar el to sitiu web, atroxa'l conteníu de darréu dientro'l raigañu'l sitiu en «.well-known/CloudIdVerificationCode.txt» (asegúrate que'l testu completu ta nuna llinia):", + "%1$s changed your password on %2$s." : "%1$s camudó la to contraseña en %2$s.", + "Your password on %s was changed." : "Camudóse la to contraseña en %s", + "Your password on %s was reset by an administrator." : "Un alministrador reanició la to contraseña en %s", + "Password for %1$s changed on %2$s" : "La contraseña pa %1$s camudó en %2$s", + "Password changed for %s" : "Camudóse la contraseña de %s", + "If you did not request this, please contact an administrator." : "Si nun solicitesti esto, por favor contautu con un alministrador.", + "Your email address on %s was changed." : "Camudóse la to direición de corréu en %s", + "Your email address on %s was changed by an administrator." : "Un alministrador camudó la to direción de corréu en %s", + "The new email address is %s" : "La nueva direición de corréu ye %s", + "Your %s account was created" : "Creóse la to cuenta %s", + "Welcome aboard" : "Afáyate en barcu", + "Welcome aboard %s" : "Afáyate en barcu %s", + "Your username is: %s" : "El to nome d'usuariu ye: %s", + "Set your password" : "Afita la to contraseña", + "Go to %s" : "Dir a %s", + "Install Client" : "Instalar veceru", + "Delete" : "Desaniciar", + "Unlimited" : "Non llendáu", + "Verifying …" : "Verificando...", + "Verify" : "Verificar", + "Migration in progress. Please wait until the migration is finished" : "Migración en cursu. Espera fasta que la migración fine, por favor.", + "Migration started …" : "Migración aniciada...", + "Not saved" : "Nun se guardó", + "Sending…" : "Unviando...", + "Email sent" : "Corréu-e unviáu", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Asocedió un fallu. Xubi un certificáu PEM con codificación ASCII, por favor.", + "Valid until {date}" : "Válidu fasta {date}", + "Local" : "Llocal", + "Only visible to local users" : "Namái visible pa usuarios llocales", + "Only visible to you" : "Namái visible pa ti", + "Contacts" : "Contautos", + "Visible to local users and to trusted servers" : "Visible pa usuarios llocales y sirvidores d'enfotu", + "Very weak password" : "Contraseña mui feble", + "Weak password" : "Contraseña feble", + "So-so password" : "Contraseña pasable", + "Good password" : "Contraseña bona", + "Strong password" : "Contraseña mui bona", + "Select a profile picture" : "Esbillar una imaxe de perfil", + "Groups" : "Grupos", + "Limit to groups" : "Llendar a grupos", + "Allow filesystem access" : "Permitir accesu al sistema de ficheros", + "Revoke" : "Revocar", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome p'Android", + "This session" : "Esta sesión", + "Device" : "Preséu", + "Last activity" : "Actividá cabera", + "Web, desktop and mobile clients currently logged in to your account." : "Veceros web, d'escritoriu y móviles cola sesión aniciada anguaño na to cuenta.", + "Error while creating device token" : "Fallu entrín se creaba'l pase'l preséu", + "Error while deleting the token" : "Fallu entrín se desaniciaba'l pase", + "App name" : "Nome d'aplicación", + "For security reasons this password will only be shown once." : "Por razones de seguranza, esta contraseña namái s'amosará una vegada.", + "Username" : "Nome d'usuariu", + "Password" : "Contraseña", + "Done" : "Fecho", + "Copied!" : "¡Copióse!", + "Copy" : "Copiar", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Les aplicaciones oficiales desendólquense dientro la comunidá. Ufren funcionalidá central y tán preparaes pal usu en producción.", + "Official" : "Oficial", + "Remove" : "Desaniciar", + "Disable" : "Desactivar", + "All" : "Toos", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Nun pue instalase esta aplicación porque nun se cumplen les dependencies de darréu:", + "View in store" : "Ver na tienda", + "Visit website" : "Visitar sitiu web", + "Report a bug" : "Informar un fallu", + "User documentation" : "Documentación d'usuariu", + "Developer documentation" : "Documentación de desendolcaores", + "No apps found for your version" : "Nun s'alcontraron anovamientos pa la to versión", + "Enable all" : "Habilitar too", + "Enable" : "Activar", + "The app will be downloaded from the app store" : "L'aplicación baxaráse dende la tienda d'aplicaciones", + "New password" : "Contraseña nueva", + "{size} used" : "{size} usaos", + "Email" : "Corréu-e", + "Quota" : "Cuota", + "Language" : "Llingua", + "Storage location" : "Allugamientu d'almacenamientu", + "User backend" : "Backend d'usuarios", + "Last login" : "Aniciu de sesión caberu", + "Default quota" : "Cuota por defeutu", + "Your apps" : "Les tos aplicaciones", + "Disabled apps" : "Aplicaciones deshabilitaes", + "Updates" : "Anovamientos", + "App bundles" : "Llotes d'aplicaciones", + "Show last login" : "Amosar aniciu de sesión caberu", + "Show user backend" : "Amosar backend d'usuarios", + "Admins" : "Almins", + "Everyone" : "Toos", + "Add group" : "Amestar grupu", + "Error: This app can not be enabled because it makes the server unstable" : "Fallu: Esta aplicación nun pue activase porque fai inestable'l sirvidor", + "Common Name" : "Nome común", + "Valid until" : "Válidu hasta", + "Issued By" : "Emitíu por", + "Valid until %s" : "Válidu hasta'l %s", + "Import root certificate" : "Importar certificáu raigañu", + "Administrator documentation" : "Documentación d'alministrador", + "Forum" : "Foru", + "None" : "Dengún", + "Login" : "Entamar sesión", + "Plain" : "Planu", + "NT LAN Manager" : "Xestor de NT LAN", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Sirvidor de corréu", + "Open documentation" : "Abrir documentación", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Nun ye importante configurar esti sirvidor pa que seya a unviar correos, como pa refitaminetos de contraseñes y avisos.", + "Send mode" : "Mou d'unviu", + "Encryption" : "Cifráu", + "From address" : "Dende la direición", + "mail" : "corréu", + "Authentication method" : "Métodu d'autenticación", + "Authentication required" : "Necesítase autenticación", + "Server address" : "Direición del sirvidor", + "Port" : "Puertu", + "Credentials" : "Credenciales", + "SMTP Username" : "Nome d'usuariu SMTP", + "SMTP Password" : "Contraseña SMTP", + "Test email settings" : "Probar configuración de corréu electrónicu", + "Send email" : "Unviar mensaxe", + "Security & setup warnings" : "Alvertancies de seguranza y configuración", + "All checks passed." : "Pasáronse toles comprobaciones.", + "Version" : "Versión", + "Server-side encryption" : "Cifráu del llau del sirvidor", + "Enable server-side encryption" : "Activar cifráu nel sirvidor", + "Please read carefully before activating server-side encryption: " : "Llei con procuru enantes d'activar el cifráu nel sirvidor:", + "Be aware that encryption always increases the file size." : "Decátate que'l cifráu siempres aumenta'l tamañu de los ficheros.", + "This is the final warning: Do you really want to enable encryption?" : "Esta ye l'alvertencia final: ¿De xuru que quies activar el cifráu?", + "Enable encryption" : "Habilitar cifráu", + "No encryption module loaded, please enable an encryption module in the app menu." : "Nun se cargó dengún módulu de cifráu, activa un módulu de cifráu nel menú d'aplicaciones.", + "Select default encryption module:" : "Esbilla'l módulu predetermináu de cifráu:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Precises migrar les claves de cifráu d'un cifráu vieyu (ownCloud <= 8.0) a unu nuevu.", + "Start migration" : "Aniciar migración", + "Background jobs" : "Trabayos de fondu", + "Background job didn’t run yet!" : "¡Entá nun s'executó'l trabayu de fondu!", + "Execute one task with each page loaded" : "Executar una xera con cada páxina cargada", + "The cron.php needs to be executed by the system user \"%s\"." : "cron.php precisa executalu l'usuariu del sistema «%s».", + "Sharing" : "Compartiendo", + "Allow apps to use the Share API" : "Permitir a les aplicaciones usar la API de Compartición", + "Allow users to share via link" : "Permitir a los usuarios compartir vía enllaz", + "Allow public uploads" : "Permitir xubes públiques", + "Always ask for a password" : "Pidir siempres la contraseña", + "Enforce password protection" : "Ameyora la proteición por contraseña.", + "Set default expiration date" : "Afitar la data d'espiración predeterminada", + "Expire after " : "Caduca dempués de", + "days" : "díes", + "Enforce expiration date" : "Facer cumplir la data de caducidá", + "Allow resharing" : "Permitir re-compartición", + "Allow sharing with groups" : "Permiri compartición con grupos", + "Restrict users to only share with users in their groups" : "Restrinxir a los usuarios a compartir namái con otros usuarios nos sos grupos", + "Exclude groups from sharing" : "Esclúi grupos de compartir", + "These groups will still be able to receive shares, but not to initiate them." : "Estos grupos van poder siguir recibiendo conteníos compartíos, pero nun van poder anicialos", + "Like our Facebook page" : "Da-y préstame a la nuesa páxina de Facebook", + "Follow us on Twitter" : "Síguimos en Twitter.", + "Check out our blog" : "Comprueba'l nuesu blogue", + "Subscribe to our newsletter" : "Soscríbite al nuesu boletín", + "Profile picture" : "Semeya de perfil", + "Upload new" : "Xubir otra", + "Remove image" : "Desaniciar imaxe", + "png or jpg, max. 20 MB" : "png o jpg, máximu 20 MB", + "Picture provided by original account" : "Semeya fornida pola cuenta orixinal", + "Cancel" : "Encaboxar", + "Full name" : "Nome completu", + "No display name set" : "Nun s'afitó'l nome p'amosar", + "Your email address" : "Direición de corréu-e", + "No email address set" : "Nun s'afitó denguna direición de corréu", + "For password reset and notifications" : "P'avisos y reaniciu de la contraseña", + "Phone number" : "Númberu de teléfonu", + "Your phone number" : "El to númberu de teléfonu", + "Address" : "Direición", + "Your postal address" : "La to direición postal", + "Website" : "Sitiu web", + "Link https://…" : "Enllaz https://…", + "Twitter" : "Twitter", + "Help translate" : "Ayúdanos nes traducciones", + "Current password" : "Contraseña actual", + "Change password" : "Camudar contraseña", + "Store credentials" : "Atroxar credenciales" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/ast.json b/apps/settings/l10n/ast.json new file mode 100644 index 00000000000..0df9c90e2cc --- /dev/null +++ b/apps/settings/l10n/ast.json @@ -0,0 +1,219 @@ +{ "translations": { + "{actor} changed your password" : "{actor} camudó la to contraseña", + "You changed your password" : "Camudesti la to contraseña", + "Your password was reset by an administrator" : "La to contraseña reafitóla un alministrador", + "{actor} changed your email address" : "{actor} camudó la to direición de corréu", + "You changed your email address" : "Camudesti la to direición de corréu", + "Your email address was changed by an administrator" : "La to direición de corréu camudóla un alministrador", + "Security" : "Seguranza", + "You successfully logged in using two-factor authentication (%1$s)" : "Aniciesti sesión con ésitu usando l'autenticación en dos pasos (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Falló un intentu d'aniciu de sesión usando l'autenticación en dos pasos (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Modificóse la to <strong>contraseña</strong> o <strong>corréu</strong>", + "Couldn't remove app." : "Nun pudo desaniciase l'aplicación.", + "Couldn't update app." : "Nun pudo anovase l'aplicación.", + "Wrong password" : "Contraseña incorreuta", + "Saved" : "Guardóse", + "No user supplied" : "Nun s'apurrieron usuarios", + "Unable to change password" : "Nun pue camudase la contraseña", + "Authentication error" : "Fallu d'autenticación", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Apurri una contraseña de recuperación d'alministrador, d'otramiente perderánse tolos datos d'usuariu.", + "Wrong admin recovery password. Please check the password and try again." : "Contraseña de recuperación d'alministrador incorreuta. Comprueba la contraseña y volvi tentalo.", + "Backend doesn't support password change, but the user's encryption key was updated." : "El backend nun sofita'l cambéu de contraseña pero anovóse la clave del cifráu d'usuarios", + "installing and updating apps via the app store or Federated Cloud Sharing" : "instalando y anovando aplicaciones pela tienda d'aplicaciones o compartición de ñube federada", + "Federated Cloud Sharing" : "Compartición de ñube federada", + "Invalid SMTP password." : "Contraseña SMTP non válida", + "Well done, %s!" : "¡Bien fecho, %s!", + "If you received this email, the email configuration seems to be correct." : "Si recibes esti corréu, entós la configuración de corréu paez tar bien.", + "Email could not be sent. Check your mail server log" : "Nun pudo unviase'l corréu. Comprueba'l rexistru del to sirvidor de corréu", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Asocedió un problema entrín s'unviaba'l corréu. Revisa los tos axustes por favor. (Fallu: %s)", + "You need to set your user email before being able to send test emails." : "Tienes de configurar la direición de corréu-e enantes de poder unviar mensaxes de prueba.", + "Invalid mail address" : "Direición non válida de corréu", + "Settings saved" : "Axustes guardaos", + "Unable to change full name" : "Nun pue camudase'l nome completu", + "Unable to change email address" : "Nun pue camudase la direición de corréu", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Pa verificar la to cuenta de Twitter, espubliza elllí'l tuit de darré (por favor asegúrate que lu espublices ensin saltos de llinia):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Pa verificar el to sitiu web, atroxa'l conteníu de darréu dientro'l raigañu'l sitiu en «.well-known/CloudIdVerificationCode.txt» (asegúrate que'l testu completu ta nuna llinia):", + "%1$s changed your password on %2$s." : "%1$s camudó la to contraseña en %2$s.", + "Your password on %s was changed." : "Camudóse la to contraseña en %s", + "Your password on %s was reset by an administrator." : "Un alministrador reanició la to contraseña en %s", + "Password for %1$s changed on %2$s" : "La contraseña pa %1$s camudó en %2$s", + "Password changed for %s" : "Camudóse la contraseña de %s", + "If you did not request this, please contact an administrator." : "Si nun solicitesti esto, por favor contautu con un alministrador.", + "Your email address on %s was changed." : "Camudóse la to direición de corréu en %s", + "Your email address on %s was changed by an administrator." : "Un alministrador camudó la to direción de corréu en %s", + "The new email address is %s" : "La nueva direición de corréu ye %s", + "Your %s account was created" : "Creóse la to cuenta %s", + "Welcome aboard" : "Afáyate en barcu", + "Welcome aboard %s" : "Afáyate en barcu %s", + "Your username is: %s" : "El to nome d'usuariu ye: %s", + "Set your password" : "Afita la to contraseña", + "Go to %s" : "Dir a %s", + "Install Client" : "Instalar veceru", + "Delete" : "Desaniciar", + "Unlimited" : "Non llendáu", + "Verifying …" : "Verificando...", + "Verify" : "Verificar", + "Migration in progress. Please wait until the migration is finished" : "Migración en cursu. Espera fasta que la migración fine, por favor.", + "Migration started …" : "Migración aniciada...", + "Not saved" : "Nun se guardó", + "Sending…" : "Unviando...", + "Email sent" : "Corréu-e unviáu", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Asocedió un fallu. Xubi un certificáu PEM con codificación ASCII, por favor.", + "Valid until {date}" : "Válidu fasta {date}", + "Local" : "Llocal", + "Only visible to local users" : "Namái visible pa usuarios llocales", + "Only visible to you" : "Namái visible pa ti", + "Contacts" : "Contautos", + "Visible to local users and to trusted servers" : "Visible pa usuarios llocales y sirvidores d'enfotu", + "Very weak password" : "Contraseña mui feble", + "Weak password" : "Contraseña feble", + "So-so password" : "Contraseña pasable", + "Good password" : "Contraseña bona", + "Strong password" : "Contraseña mui bona", + "Select a profile picture" : "Esbillar una imaxe de perfil", + "Groups" : "Grupos", + "Limit to groups" : "Llendar a grupos", + "Allow filesystem access" : "Permitir accesu al sistema de ficheros", + "Revoke" : "Revocar", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome p'Android", + "This session" : "Esta sesión", + "Device" : "Preséu", + "Last activity" : "Actividá cabera", + "Web, desktop and mobile clients currently logged in to your account." : "Veceros web, d'escritoriu y móviles cola sesión aniciada anguaño na to cuenta.", + "Error while creating device token" : "Fallu entrín se creaba'l pase'l preséu", + "Error while deleting the token" : "Fallu entrín se desaniciaba'l pase", + "App name" : "Nome d'aplicación", + "For security reasons this password will only be shown once." : "Por razones de seguranza, esta contraseña namái s'amosará una vegada.", + "Username" : "Nome d'usuariu", + "Password" : "Contraseña", + "Done" : "Fecho", + "Copied!" : "¡Copióse!", + "Copy" : "Copiar", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Les aplicaciones oficiales desendólquense dientro la comunidá. Ufren funcionalidá central y tán preparaes pal usu en producción.", + "Official" : "Oficial", + "Remove" : "Desaniciar", + "Disable" : "Desactivar", + "All" : "Toos", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Nun pue instalase esta aplicación porque nun se cumplen les dependencies de darréu:", + "View in store" : "Ver na tienda", + "Visit website" : "Visitar sitiu web", + "Report a bug" : "Informar un fallu", + "User documentation" : "Documentación d'usuariu", + "Developer documentation" : "Documentación de desendolcaores", + "No apps found for your version" : "Nun s'alcontraron anovamientos pa la to versión", + "Enable all" : "Habilitar too", + "Enable" : "Activar", + "The app will be downloaded from the app store" : "L'aplicación baxaráse dende la tienda d'aplicaciones", + "New password" : "Contraseña nueva", + "{size} used" : "{size} usaos", + "Email" : "Corréu-e", + "Quota" : "Cuota", + "Language" : "Llingua", + "Storage location" : "Allugamientu d'almacenamientu", + "User backend" : "Backend d'usuarios", + "Last login" : "Aniciu de sesión caberu", + "Default quota" : "Cuota por defeutu", + "Your apps" : "Les tos aplicaciones", + "Disabled apps" : "Aplicaciones deshabilitaes", + "Updates" : "Anovamientos", + "App bundles" : "Llotes d'aplicaciones", + "Show last login" : "Amosar aniciu de sesión caberu", + "Show user backend" : "Amosar backend d'usuarios", + "Admins" : "Almins", + "Everyone" : "Toos", + "Add group" : "Amestar grupu", + "Error: This app can not be enabled because it makes the server unstable" : "Fallu: Esta aplicación nun pue activase porque fai inestable'l sirvidor", + "Common Name" : "Nome común", + "Valid until" : "Válidu hasta", + "Issued By" : "Emitíu por", + "Valid until %s" : "Válidu hasta'l %s", + "Import root certificate" : "Importar certificáu raigañu", + "Administrator documentation" : "Documentación d'alministrador", + "Forum" : "Foru", + "None" : "Dengún", + "Login" : "Entamar sesión", + "Plain" : "Planu", + "NT LAN Manager" : "Xestor de NT LAN", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Sirvidor de corréu", + "Open documentation" : "Abrir documentación", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Nun ye importante configurar esti sirvidor pa que seya a unviar correos, como pa refitaminetos de contraseñes y avisos.", + "Send mode" : "Mou d'unviu", + "Encryption" : "Cifráu", + "From address" : "Dende la direición", + "mail" : "corréu", + "Authentication method" : "Métodu d'autenticación", + "Authentication required" : "Necesítase autenticación", + "Server address" : "Direición del sirvidor", + "Port" : "Puertu", + "Credentials" : "Credenciales", + "SMTP Username" : "Nome d'usuariu SMTP", + "SMTP Password" : "Contraseña SMTP", + "Test email settings" : "Probar configuración de corréu electrónicu", + "Send email" : "Unviar mensaxe", + "Security & setup warnings" : "Alvertancies de seguranza y configuración", + "All checks passed." : "Pasáronse toles comprobaciones.", + "Version" : "Versión", + "Server-side encryption" : "Cifráu del llau del sirvidor", + "Enable server-side encryption" : "Activar cifráu nel sirvidor", + "Please read carefully before activating server-side encryption: " : "Llei con procuru enantes d'activar el cifráu nel sirvidor:", + "Be aware that encryption always increases the file size." : "Decátate que'l cifráu siempres aumenta'l tamañu de los ficheros.", + "This is the final warning: Do you really want to enable encryption?" : "Esta ye l'alvertencia final: ¿De xuru que quies activar el cifráu?", + "Enable encryption" : "Habilitar cifráu", + "No encryption module loaded, please enable an encryption module in the app menu." : "Nun se cargó dengún módulu de cifráu, activa un módulu de cifráu nel menú d'aplicaciones.", + "Select default encryption module:" : "Esbilla'l módulu predetermináu de cifráu:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Precises migrar les claves de cifráu d'un cifráu vieyu (ownCloud <= 8.0) a unu nuevu.", + "Start migration" : "Aniciar migración", + "Background jobs" : "Trabayos de fondu", + "Background job didn’t run yet!" : "¡Entá nun s'executó'l trabayu de fondu!", + "Execute one task with each page loaded" : "Executar una xera con cada páxina cargada", + "The cron.php needs to be executed by the system user \"%s\"." : "cron.php precisa executalu l'usuariu del sistema «%s».", + "Sharing" : "Compartiendo", + "Allow apps to use the Share API" : "Permitir a les aplicaciones usar la API de Compartición", + "Allow users to share via link" : "Permitir a los usuarios compartir vía enllaz", + "Allow public uploads" : "Permitir xubes públiques", + "Always ask for a password" : "Pidir siempres la contraseña", + "Enforce password protection" : "Ameyora la proteición por contraseña.", + "Set default expiration date" : "Afitar la data d'espiración predeterminada", + "Expire after " : "Caduca dempués de", + "days" : "díes", + "Enforce expiration date" : "Facer cumplir la data de caducidá", + "Allow resharing" : "Permitir re-compartición", + "Allow sharing with groups" : "Permiri compartición con grupos", + "Restrict users to only share with users in their groups" : "Restrinxir a los usuarios a compartir namái con otros usuarios nos sos grupos", + "Exclude groups from sharing" : "Esclúi grupos de compartir", + "These groups will still be able to receive shares, but not to initiate them." : "Estos grupos van poder siguir recibiendo conteníos compartíos, pero nun van poder anicialos", + "Like our Facebook page" : "Da-y préstame a la nuesa páxina de Facebook", + "Follow us on Twitter" : "Síguimos en Twitter.", + "Check out our blog" : "Comprueba'l nuesu blogue", + "Subscribe to our newsletter" : "Soscríbite al nuesu boletín", + "Profile picture" : "Semeya de perfil", + "Upload new" : "Xubir otra", + "Remove image" : "Desaniciar imaxe", + "png or jpg, max. 20 MB" : "png o jpg, máximu 20 MB", + "Picture provided by original account" : "Semeya fornida pola cuenta orixinal", + "Cancel" : "Encaboxar", + "Full name" : "Nome completu", + "No display name set" : "Nun s'afitó'l nome p'amosar", + "Your email address" : "Direición de corréu-e", + "No email address set" : "Nun s'afitó denguna direición de corréu", + "For password reset and notifications" : "P'avisos y reaniciu de la contraseña", + "Phone number" : "Númberu de teléfonu", + "Your phone number" : "El to númberu de teléfonu", + "Address" : "Direición", + "Your postal address" : "La to direición postal", + "Website" : "Sitiu web", + "Link https://…" : "Enllaz https://…", + "Twitter" : "Twitter", + "Help translate" : "Ayúdanos nes traducciones", + "Current password" : "Contraseña actual", + "Change password" : "Camudar contraseña", + "Store credentials" : "Atroxar credenciales" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} \ No newline at end of file diff --git a/apps/settings/l10n/bg.js b/apps/settings/l10n/bg.js new file mode 100644 index 00000000000..d0a64dae280 --- /dev/null +++ b/apps/settings/l10n/bg.js @@ -0,0 +1,231 @@ +OC.L10N.register( + "settings", + { + "{actor} changed your password" : "{actor} промени паролата ви", + "You changed your password" : "Променихте паролата си", + "Your password was reset by an administrator" : "Паролата ви е променена от администратора", + "{actor} changed your email address" : "{actor} промени имейл адреса ви", + "You changed your email address" : "Променихте имейл адреса си", + "Your email address was changed by an administrator" : "Имейл адреса ви е променена от администратора", + "Security" : "Сигурност", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Вашата <strong>парола</strong> или <strong>имейл адрес</strong> е променен", + "Couldn't remove app." : "Приложението не бе премахнато.", + "Couldn't update app." : "Приложението не бе актуализирано.", + "Wrong password" : "Грешна парола", + "Saved" : "Запаметяване", + "No user supplied" : "Липсва потребител", + "Unable to change password" : "Неуспешна смяна на паролата.", + "Authentication error" : "Възникна проблем с удостоверяването", + "Wrong admin recovery password. Please check the password and try again." : "Грешна администраторска парола за възстановяване. Моля, проверете паролата и опитайте отново.", + "Invalid SMTP password." : "Невалидна SMTP парола.", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Възникна проблем при изпращането на имейла. Моля, провери настройките. (Грешка: %s)", + "You need to set your user email before being able to send test emails." : "Трябва да зададете своя имейл за да можете да изпращате тестови имейли.", + "Invalid mail address" : "невалиден адрес на електронна поща", + "Settings saved" : "Настройките са запазени", + "Unable to change full name" : "Неуспешна промяна на име.", + "Unable to change email address" : "Неуспешна промяна на адрес на електронна поща", + "%1$s changed your password on %2$s." : "%1$s промени вашата парола за %2$s.", + "Your password on %s was changed." : "Вашата парола за %s беше променена.", + "Password changed for %s" : "Паролата на %s е променена", + "If you did not request this, please contact an administrator." : "Моля, свържете се с администратор ако промяната не е извършена от вас.", + "Your %s account was created" : "Вашия %s профил бе създаден", + "Welcome aboard" : "Добре дошли", + "Welcome aboard %s" : "Добре дошли %s", + "Your username is: %s" : "Потребителско име: %s", + "Set your password" : "Задайте парола", + "Delete" : "Изтриване", + "Unlimited" : "Неограничено", + "Email sent" : "Имейлът е изпратен", + "Valid until {date}" : "Далидна до {date}", + "Local" : "Локално", + "Only visible to local users" : "Видима само за локални потребители", + "Only visible to you" : "Видима само за вас", + "Contacts" : "Контакти", + "Visible to local users and to trusted servers" : "Видима за локални потребители и от доверени сървъри", + "Public" : "Публичен", + "Very weak password" : "Много проста парола", + "Weak password" : "Проста парола", + "So-so password" : "Не особено добра парола", + "Good password" : "Добра парола", + "Strong password" : "Сложна парола", + "Select a profile picture" : "Избор на снимка за профила", + "Week starts on {fdow}" : "Първи ден от седмицата е {fdow}", + "Groups" : "Групи", + "Afrikaans" : "африкаанс (бурски)", + "Armenian" : "арменски", + "English" : "английски", + "Hungarian" : "унгарски", + "Japanese" : "японски", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Ползването на двустепенното удостоверяване може да бъде наложено на всички\tпотребители или определени групи. Ако потребител не е настроил втората стъпка - няма да може да се впише.", + "Limit to groups" : "Ограничен достъп", + "Device settings" : "Настройки за устройството", + "Allow filesystem access" : "Разрешен достъп до файловете", + "Revoke" : "Отнемане", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome за Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "This session" : "Текущата сесия", + "Device" : "Устройство", + "Last activity" : "Последна активност", + "Devices & sessions" : "Устройства и сесии", + "Web, desktop and mobile clients currently logged in to your account." : "Уеб, настолни и мобилни клиенти, които в момента са вписани чрез вашия акаунт.", + "App name" : "Име на приложението", + "Create new app password" : "Създай парола за приложението", + "Use the credentials below to configure your app or device." : "Ползвайте данните по-долу за да настроите вашето приложение или устройство.", + "Username" : "Потребител", + "Password" : "Парола", + "Done" : "Готово", + "Copied!" : "Копирано!", + "Copy" : "Копиране", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Официалните приложения са разработени от общността. ", + "Official" : "Официално", + "Update to {version}" : "Актуализирай до {version}", + "Disable" : "Изключване", + "All" : "Всички", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Приложението не може да бъде инсталирано, защото следните зависимости не са удовлетворени:", + "View in store" : "Страница в магазина", + "Visit website" : "Уеб страницата", + "Report a bug" : "Докладване на грешка", + "User documentation" : "Документация за потребители", + "Admin documentation" : "Документация за администратори", + "Developer documentation" : "Документация за разработчици", + "Update to {update}" : "Актуализирай до {update}", + "No apps found for your version" : "Няма намерени приложения за версията, която ползвате", + "Download and enable" : "Сваляне и включване", + "Enable" : "Включване", + "Enable untested app" : "Включване (нетествано приложение)", + "The app will be downloaded from the app store" : "Приложението ще бъде свалено от магазина за приложения.", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Приложението не е маркирано като съвместимо с вашата версия на Nextcloud. Можете да инсталирате приложението, но е вероятно да не работи безпроблемно.", + "New password" : "Нова парола", + "Add user in group" : "Добавяне към група", + "Delete user" : "Изтриване", + "Disable user" : "Деактивирай", + "Enable user" : "Активиране", + "{size} used" : "{size} използвани", + "Email" : "Имейл", + "Group admin for" : "Групов администратор за", + "Quota" : "Квота", + "Language" : "Език", + "Storage location" : "Дисково пространство", + "Last login" : "Последно вписване", + "Default language" : "Стандартен език", + "Add a new user" : "Добавяне на новия потребител", + "Default quota" : "Стандартна квота", + "All languages" : "Всички езици", + "Your apps" : "Вашите приложения", + "Active apps" : "Включени приложения", + "Disabled apps" : "Изключени приложения", + "Updates" : "Актуализации", + "New user" : "Нов потребител", + "Default quota:" : "Стандартна квота:", + "Select default quota" : "Изберете стандартна квота", + "Show Languages" : "Показвай ползвания език", + "Show last login" : "Показвай последното вписване", + "Admins" : "Администратори", + "Disabled users" : "Деактивирани потребители", + "Everyone" : "Всички", + "Add group" : "Нова група", + "Common Name" : "Познато Име", + "Valid until" : "Валиден до", + "Issued By" : "Издаден от", + "Valid until %s" : "Валиден до %s", + "Import root certificate" : "Внасяне на основен сертификат", + "Administrator documentation" : "Документация за администратори", + "Documentation" : "Документация", + "Forum" : "Форум", + "None" : "Няма", + "Login" : "Вписване", + "Plain" : "Обикновен", + "NT LAN Manager" : "NT LAN Manager", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Имейл сървър", + "Open documentation" : "Отвори документацията", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "След като настроите сървъра Nextcloud ще може да изпраща имейли за възстановяване на забравени пароли и известия.", + "Send mode" : "Режим на изпращане", + "Encryption" : "Криптиране", + "From address" : "От адрес", + "mail" : "поща", + "Authentication method" : "Метод за удостоверяване", + "Authentication required" : "Нужно е удостоверяване", + "Server address" : "Адрес на сървъра", + "Port" : "Порт", + "Credentials" : "Потребител и парола", + "SMTP Username" : "SMTP потребител", + "SMTP Password" : "SMTP парола", + "Test email settings" : "Проверка на имейл настройките", + "Send email" : "Изпрати имейл", + "Security & setup warnings" : "Предупреждения за сигурността и настройките", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Важно е, от гледна точка на сигурност и производителност, всичко да бъде настроено коректно. За тази цел са създадени автоматични проверки. Прегледайте връзките, към документацията (по-долу), за допълнителна информация.", + "There are some errors regarding your setup." : "Открити са грешки, в инсталацията на Nextcloud.", + "There are some warnings regarding your setup." : "Предупреждения относно текущата инсталация.", + "Checking for system and security issues." : "Проверка за проблеми със системата и сигурността.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Прегледайте <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">ръководството за инсталиране ↗</a>, и проверете <a href=\"%2$s\">журналите</a>за предупреждения и грешки. ", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Проверете сигурността на Nextcloud <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">като заявите сканиране ↗</a>.", + "Version" : "Версия", + "Two-Factor Authentication" : "Двустепенно удостоверяване", + "Enable encryption" : "Включване на криптиране", + "Select default encryption module:" : "Избор на модул за криптиране по подразбиране:", + "Start migration" : "Начало на миграцията", + "Last job ran %s." : "За последно cron задача е стартирала %s.", + "Last job execution ran %s. Something seems wrong." : "За последно cron задача е стартирала %s. Изглежда, че има проблем.", + "Execute one task with each page loaded" : "Изпълнява една задача с всяка заредена страница.", + "The cron.php needs to be executed by the system user \"%s\"." : "Необходимо е cron.php да се стартира от системния потребител \"%s\".", + "Sharing" : "Споделяне", + "Allow apps to use the Share API" : "Разреши приложенията да използват Share API", + "Allow users to share via link" : "Разреши потребителите да споделят с връзка", + "Allow public uploads" : "Разреши общодостъпно качване", + "Enforce password protection" : "Изискай защита с парола.", + "Set default expiration date" : "Задайте стандартен срок на валидност", + "Expire after " : "Изтечи след", + "days" : "дена", + "Enforce expiration date" : "Изисквай дата на изтичане", + "Allow resharing" : "Може да споделя повторно", + "Restrict users to only share with users in their groups" : "Ограничи потребителите, така че да могат да споделят само с други потребители в своите групи.", + "Exclude groups from sharing" : "Забрани групи да споделят", + "These groups will still be able to receive shares, but not to initiate them." : "Тези групи ще могат да получават споделения, но няма да могат самите те да споделят.", + "Personal" : "Лични", + "Administration" : "Административни", + "Follow us on Twitter" : "Следвайте ни в Twitter", + "Follow us on Mastodon" : "Следвайте ни в Mastodon", + "Check out our blog" : "Посетете блога ни", + "Subscribe to our newsletter" : "Абонирайте се за нашия имейл бюлетин", + "Profile picture" : "Снимка за профила", + "Upload new" : "Качи нова", + "Select from Files" : "Избери от файловете", + "Remove image" : "Премахни изображението", + "png or jpg, max. 20 MB" : "png или jpg, макс. 20 MB", + "Cancel" : "Отказ", + "Choose as profile picture" : "Избор на профилна снимка", + "Details" : "Подробности", + "You are a member of the following groups:" : "Членувате в следните групи:", + "You are using <strong>%s</strong>" : "Ползвате <strong>%s</strong>", + "Full name" : "Име", + "No display name set" : "Няма настроено екранно име", + "Your email address" : "Вашият имейл адрес", + "No email address set" : "Не е въведен имейл адрес", + "For password reset and notifications" : "За възстановяване на забравена парола и известия", + "Phone number" : "Тел. номер", + "Your phone number" : "Вашият тел. номер", + "Address" : "Адрес", + "Your postal address" : "Вашият пощенски код", + "Website" : "Уеб страница", + "Twitter" : "Twitter", + "Help translate" : "Помогнете с превода", + "Current password" : "Текуща парола", + "Change password" : "Промени паролата", + "Use a second factor besides your password to increase security for your account." : "Ползвайте двустепенно удостоверяване за да повишите сигурността на профила си.", + "Not supported!" : "Не се поддържа!", + "Press ⌘-C to copy." : "За копиране натиснете ⌘-C.", + "Press Ctrl-C to copy." : "За копиране натиснете Ctrl-C.", + "Store credentials" : "Запиши", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "Услугата webcron стартира cron.php всеки 15 минути по HTTP.", + "Use system cron service to call the cron.php file every 15 minutes." : "Ползва услугата cron на сървъра за да стартира cron.php всеки 15 минути.", + "Follow us on Google+" : "Следвайте ни в Google+" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/bg.json b/apps/settings/l10n/bg.json new file mode 100644 index 00000000000..037b62ab308 --- /dev/null +++ b/apps/settings/l10n/bg.json @@ -0,0 +1,229 @@ +{ "translations": { + "{actor} changed your password" : "{actor} промени паролата ви", + "You changed your password" : "Променихте паролата си", + "Your password was reset by an administrator" : "Паролата ви е променена от администратора", + "{actor} changed your email address" : "{actor} промени имейл адреса ви", + "You changed your email address" : "Променихте имейл адреса си", + "Your email address was changed by an administrator" : "Имейл адреса ви е променена от администратора", + "Security" : "Сигурност", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Вашата <strong>парола</strong> или <strong>имейл адрес</strong> е променен", + "Couldn't remove app." : "Приложението не бе премахнато.", + "Couldn't update app." : "Приложението не бе актуализирано.", + "Wrong password" : "Грешна парола", + "Saved" : "Запаметяване", + "No user supplied" : "Липсва потребител", + "Unable to change password" : "Неуспешна смяна на паролата.", + "Authentication error" : "Възникна проблем с удостоверяването", + "Wrong admin recovery password. Please check the password and try again." : "Грешна администраторска парола за възстановяване. Моля, проверете паролата и опитайте отново.", + "Invalid SMTP password." : "Невалидна SMTP парола.", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Възникна проблем при изпращането на имейла. Моля, провери настройките. (Грешка: %s)", + "You need to set your user email before being able to send test emails." : "Трябва да зададете своя имейл за да можете да изпращате тестови имейли.", + "Invalid mail address" : "невалиден адрес на електронна поща", + "Settings saved" : "Настройките са запазени", + "Unable to change full name" : "Неуспешна промяна на име.", + "Unable to change email address" : "Неуспешна промяна на адрес на електронна поща", + "%1$s changed your password on %2$s." : "%1$s промени вашата парола за %2$s.", + "Your password on %s was changed." : "Вашата парола за %s беше променена.", + "Password changed for %s" : "Паролата на %s е променена", + "If you did not request this, please contact an administrator." : "Моля, свържете се с администратор ако промяната не е извършена от вас.", + "Your %s account was created" : "Вашия %s профил бе създаден", + "Welcome aboard" : "Добре дошли", + "Welcome aboard %s" : "Добре дошли %s", + "Your username is: %s" : "Потребителско име: %s", + "Set your password" : "Задайте парола", + "Delete" : "Изтриване", + "Unlimited" : "Неограничено", + "Email sent" : "Имейлът е изпратен", + "Valid until {date}" : "Далидна до {date}", + "Local" : "Локално", + "Only visible to local users" : "Видима само за локални потребители", + "Only visible to you" : "Видима само за вас", + "Contacts" : "Контакти", + "Visible to local users and to trusted servers" : "Видима за локални потребители и от доверени сървъри", + "Public" : "Публичен", + "Very weak password" : "Много проста парола", + "Weak password" : "Проста парола", + "So-so password" : "Не особено добра парола", + "Good password" : "Добра парола", + "Strong password" : "Сложна парола", + "Select a profile picture" : "Избор на снимка за профила", + "Week starts on {fdow}" : "Първи ден от седмицата е {fdow}", + "Groups" : "Групи", + "Afrikaans" : "африкаанс (бурски)", + "Armenian" : "арменски", + "English" : "английски", + "Hungarian" : "унгарски", + "Japanese" : "японски", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Ползването на двустепенното удостоверяване може да бъде наложено на всички\tпотребители или определени групи. Ако потребител не е настроил втората стъпка - няма да може да се впише.", + "Limit to groups" : "Ограничен достъп", + "Device settings" : "Настройки за устройството", + "Allow filesystem access" : "Разрешен достъп до файловете", + "Revoke" : "Отнемане", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome за Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "This session" : "Текущата сесия", + "Device" : "Устройство", + "Last activity" : "Последна активност", + "Devices & sessions" : "Устройства и сесии", + "Web, desktop and mobile clients currently logged in to your account." : "Уеб, настолни и мобилни клиенти, които в момента са вписани чрез вашия акаунт.", + "App name" : "Име на приложението", + "Create new app password" : "Създай парола за приложението", + "Use the credentials below to configure your app or device." : "Ползвайте данните по-долу за да настроите вашето приложение или устройство.", + "Username" : "Потребител", + "Password" : "Парола", + "Done" : "Готово", + "Copied!" : "Копирано!", + "Copy" : "Копиране", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Официалните приложения са разработени от общността. ", + "Official" : "Официално", + "Update to {version}" : "Актуализирай до {version}", + "Disable" : "Изключване", + "All" : "Всички", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Приложението не може да бъде инсталирано, защото следните зависимости не са удовлетворени:", + "View in store" : "Страница в магазина", + "Visit website" : "Уеб страницата", + "Report a bug" : "Докладване на грешка", + "User documentation" : "Документация за потребители", + "Admin documentation" : "Документация за администратори", + "Developer documentation" : "Документация за разработчици", + "Update to {update}" : "Актуализирай до {update}", + "No apps found for your version" : "Няма намерени приложения за версията, която ползвате", + "Download and enable" : "Сваляне и включване", + "Enable" : "Включване", + "Enable untested app" : "Включване (нетествано приложение)", + "The app will be downloaded from the app store" : "Приложението ще бъде свалено от магазина за приложения.", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Приложението не е маркирано като съвместимо с вашата версия на Nextcloud. Можете да инсталирате приложението, но е вероятно да не работи безпроблемно.", + "New password" : "Нова парола", + "Add user in group" : "Добавяне към група", + "Delete user" : "Изтриване", + "Disable user" : "Деактивирай", + "Enable user" : "Активиране", + "{size} used" : "{size} използвани", + "Email" : "Имейл", + "Group admin for" : "Групов администратор за", + "Quota" : "Квота", + "Language" : "Език", + "Storage location" : "Дисково пространство", + "Last login" : "Последно вписване", + "Default language" : "Стандартен език", + "Add a new user" : "Добавяне на новия потребител", + "Default quota" : "Стандартна квота", + "All languages" : "Всички езици", + "Your apps" : "Вашите приложения", + "Active apps" : "Включени приложения", + "Disabled apps" : "Изключени приложения", + "Updates" : "Актуализации", + "New user" : "Нов потребител", + "Default quota:" : "Стандартна квота:", + "Select default quota" : "Изберете стандартна квота", + "Show Languages" : "Показвай ползвания език", + "Show last login" : "Показвай последното вписване", + "Admins" : "Администратори", + "Disabled users" : "Деактивирани потребители", + "Everyone" : "Всички", + "Add group" : "Нова група", + "Common Name" : "Познато Име", + "Valid until" : "Валиден до", + "Issued By" : "Издаден от", + "Valid until %s" : "Валиден до %s", + "Import root certificate" : "Внасяне на основен сертификат", + "Administrator documentation" : "Документация за администратори", + "Documentation" : "Документация", + "Forum" : "Форум", + "None" : "Няма", + "Login" : "Вписване", + "Plain" : "Обикновен", + "NT LAN Manager" : "NT LAN Manager", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Имейл сървър", + "Open documentation" : "Отвори документацията", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "След като настроите сървъра Nextcloud ще може да изпраща имейли за възстановяване на забравени пароли и известия.", + "Send mode" : "Режим на изпращане", + "Encryption" : "Криптиране", + "From address" : "От адрес", + "mail" : "поща", + "Authentication method" : "Метод за удостоверяване", + "Authentication required" : "Нужно е удостоверяване", + "Server address" : "Адрес на сървъра", + "Port" : "Порт", + "Credentials" : "Потребител и парола", + "SMTP Username" : "SMTP потребител", + "SMTP Password" : "SMTP парола", + "Test email settings" : "Проверка на имейл настройките", + "Send email" : "Изпрати имейл", + "Security & setup warnings" : "Предупреждения за сигурността и настройките", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Важно е, от гледна точка на сигурност и производителност, всичко да бъде настроено коректно. За тази цел са създадени автоматични проверки. Прегледайте връзките, към документацията (по-долу), за допълнителна информация.", + "There are some errors regarding your setup." : "Открити са грешки, в инсталацията на Nextcloud.", + "There are some warnings regarding your setup." : "Предупреждения относно текущата инсталация.", + "Checking for system and security issues." : "Проверка за проблеми със системата и сигурността.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Прегледайте <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">ръководството за инсталиране ↗</a>, и проверете <a href=\"%2$s\">журналите</a>за предупреждения и грешки. ", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Проверете сигурността на Nextcloud <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">като заявите сканиране ↗</a>.", + "Version" : "Версия", + "Two-Factor Authentication" : "Двустепенно удостоверяване", + "Enable encryption" : "Включване на криптиране", + "Select default encryption module:" : "Избор на модул за криптиране по подразбиране:", + "Start migration" : "Начало на миграцията", + "Last job ran %s." : "За последно cron задача е стартирала %s.", + "Last job execution ran %s. Something seems wrong." : "За последно cron задача е стартирала %s. Изглежда, че има проблем.", + "Execute one task with each page loaded" : "Изпълнява една задача с всяка заредена страница.", + "The cron.php needs to be executed by the system user \"%s\"." : "Необходимо е cron.php да се стартира от системния потребител \"%s\".", + "Sharing" : "Споделяне", + "Allow apps to use the Share API" : "Разреши приложенията да използват Share API", + "Allow users to share via link" : "Разреши потребителите да споделят с връзка", + "Allow public uploads" : "Разреши общодостъпно качване", + "Enforce password protection" : "Изискай защита с парола.", + "Set default expiration date" : "Задайте стандартен срок на валидност", + "Expire after " : "Изтечи след", + "days" : "дена", + "Enforce expiration date" : "Изисквай дата на изтичане", + "Allow resharing" : "Може да споделя повторно", + "Restrict users to only share with users in their groups" : "Ограничи потребителите, така че да могат да споделят само с други потребители в своите групи.", + "Exclude groups from sharing" : "Забрани групи да споделят", + "These groups will still be able to receive shares, but not to initiate them." : "Тези групи ще могат да получават споделения, но няма да могат самите те да споделят.", + "Personal" : "Лични", + "Administration" : "Административни", + "Follow us on Twitter" : "Следвайте ни в Twitter", + "Follow us on Mastodon" : "Следвайте ни в Mastodon", + "Check out our blog" : "Посетете блога ни", + "Subscribe to our newsletter" : "Абонирайте се за нашия имейл бюлетин", + "Profile picture" : "Снимка за профила", + "Upload new" : "Качи нова", + "Select from Files" : "Избери от файловете", + "Remove image" : "Премахни изображението", + "png or jpg, max. 20 MB" : "png или jpg, макс. 20 MB", + "Cancel" : "Отказ", + "Choose as profile picture" : "Избор на профилна снимка", + "Details" : "Подробности", + "You are a member of the following groups:" : "Членувате в следните групи:", + "You are using <strong>%s</strong>" : "Ползвате <strong>%s</strong>", + "Full name" : "Име", + "No display name set" : "Няма настроено екранно име", + "Your email address" : "Вашият имейл адрес", + "No email address set" : "Не е въведен имейл адрес", + "For password reset and notifications" : "За възстановяване на забравена парола и известия", + "Phone number" : "Тел. номер", + "Your phone number" : "Вашият тел. номер", + "Address" : "Адрес", + "Your postal address" : "Вашият пощенски код", + "Website" : "Уеб страница", + "Twitter" : "Twitter", + "Help translate" : "Помогнете с превода", + "Current password" : "Текуща парола", + "Change password" : "Промени паролата", + "Use a second factor besides your password to increase security for your account." : "Ползвайте двустепенно удостоверяване за да повишите сигурността на профила си.", + "Not supported!" : "Не се поддържа!", + "Press ⌘-C to copy." : "За копиране натиснете ⌘-C.", + "Press Ctrl-C to copy." : "За копиране натиснете Ctrl-C.", + "Store credentials" : "Запиши", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "Услугата webcron стартира cron.php всеки 15 минути по HTTP.", + "Use system cron service to call the cron.php file every 15 minutes." : "Ползва услугата cron на сървъра за да стартира cron.php всеки 15 минути.", + "Follow us on Google+" : "Следвайте ни в Google+" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} \ No newline at end of file diff --git a/apps/settings/l10n/ca.js b/apps/settings/l10n/ca.js new file mode 100644 index 00000000000..522546a0288 --- /dev/null +++ b/apps/settings/l10n/ca.js @@ -0,0 +1,823 @@ +OC.L10N.register( + "settings", + { + "{actor} added you to group {group}" : "{actor} us ha afegit al grup {group}", + "You added {user} to group {group}" : "Heu afegit {user} al grup {group}", + "{actor} added {user} to group {group}" : "{actor} ha afegit {user} al grup {group}", + "An administrator added you to group {group}" : "Un administrador us ha afegit al grup {group}", + "An administrator added {user} to group {group}" : "Un administrador ha afegit {user} al grup {group}", + "{actor} removed you from group {group}" : "{actor} us ha tret del grup {group}", + "You removed {user} from group {group}" : "Heu tret {user} del grup {group}", + "{actor} removed {user} from group {group}" : "{actor} ha tret {user} del grup {group}", + "An administrator removed you from group {group}" : "Un administrador us ha tret del grup {group}", + "An administrator removed {user} from group {group}" : "Un administrador ha tret {user} del grup {group}", + "Your <strong>group memberships</strong> were modified" : "La vostra <strong>pertinença al grup</strong> ha estat modificada", + "{actor} changed your password" : "{actor} ha canviat la vostra contrasenya", + "You changed your password" : "Heu canviat la vostra contrasenya", + "Your password was reset by an administrator" : "Un administrador ha restablert la vostra contrasenya", + "{actor} changed your email address" : "{actor} ha canviat la vostra adreça de correu electrònic", + "You changed your email address" : "Heu canviat la vostra adreça de correu electrònic", + "Your email address was changed by an administrator" : "Un administrador ha canviat la vostra adreça de correu electrònic", + "You created app password \"{token}\"" : "Heu creat \"{token}\" a l’aplicació de contrasenyes", + "You deleted app password \"{token}\"" : "Heu suprimit \"{token}\" de l’aplicació de contrasenyes", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Heu reanomenat \"{token}\" a \"{newToken} a l'aplicació de contrasenyes", + "You granted filesystem access to app password \"{token}\"" : "Heu donat accés al sistema de fitxers a l'aplicació de contrasenyes \"{token}\"", + "You revoked filesystem access from app password \"{token}\"" : "Heu tret l'accés al sistema de fitxers a l'aplicació de contrasenyes \"{token}\"", + "Security" : "Seguretat", + "You successfully logged in using two-factor authentication (%1$s)" : "Us heu identificat correctament amb l'autenticació en dues passes (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Ha fallat l'inici de sessió mitjançant l'autenticació en dues passes (%1$s)", + "Remote wipe was started on %1$s" : "S'ha engegat la neteja remota a %1$s", + "Remote wipe has finished on %1$s" : "Ha finalitzat la neteja remota a %1$s", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "S'ha modificat la vostra <strong>contrasenya</strong> o <strong>correu electrònic</strong>", + "Couldn't remove app." : "No s'ha pogut suprimit l'aplicació.", + "Couldn't update app." : "No s'ha pogut actualitzar l'aplicació.", + "Wrong password" : "Contrasenya incorrecta", + "Saved" : "S'ha desat", + "No user supplied" : "No heu proporcionat cap usuari", + "Unable to change password" : "No s'ha pogut canviar la contrasenya", + "Authentication error" : "Error d'autenticació", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Si us plau, proporcioneu una contrasenya d'administrador de recuperació; en cas contrari, es perdran totes les dades.", + "Wrong admin recovery password. Please check the password and try again." : "La contrasenya d'administrador de recuperació és incorrecta. Si us plau, comproveu-la i torneu-ho a provar.", + "Backend doesn't support password change, but the user's encryption key was updated." : "El rere fons no admet canvis de contrasenya, però la clau de xifrat de l'usuari ha estat actualitzada satisfactòriament.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "S'està instal·lant i actualitzant aplicacions mitjançant la botiga d'aplicacions o la compartició de núvols federats", + "Federated Cloud Sharing" : "Compartició de Núvols Federats", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL està fent servir una versió %1$s antiquada (%2$s). Si us plau, actualitzeu el vostre sistema operatiu o característiques com %3$s no funcionaran amb fiabilitat.", + "Invalid SMTP password." : "Contrasenya SMTP no vàlida.", + "Email setting test" : "Prova de configuració del correu electrònic", + "Well done, %s!" : "Ben fet, %s!", + "If you received this email, the email configuration seems to be correct." : "Si heu rebut aquest correu electrònic, sembla que la configuració del correu electrònic és correcta.", + "Email could not be sent. Check your mail server log" : "No s'ha pogut enviar el correu electrònic. Comproveu el registre del servidor de correu", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Hi ha hagut un problema mentre s'enviava el correu electrònic. Reviseu els paràmetres. (Error: %s)", + "You need to set your user email before being able to send test emails." : "Heu d'establir un nom d'usuari abans de poder enviar correus de prova.", + "Invalid mail address" : "Adreça de correu electrònic no vàlida", + "Settings saved" : "S'han desat els paràmetres", + "Unable to change full name" : "No s'ha pogut canviar el nom complet", + "Unable to change email address" : "No s'ha pogut canviar l'adreça de correu electrònic", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Per tal de verificar el vostre compte de Twitter, publiqueu el següent tweet a Twitter (assegureu-vos de publicar-lo sense cap salt de línia):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Per tal de verificar el vostre lloc web, emmagatzemeu el següent contingut a l’arrel web a '.well-known/CloudIdVerificationCode.txt' (assegureu-vos que el text complet és en una línia):", + "%1$s changed your password on %2$s." : "%1$s ha canviat la vostra contrasenya a %2$s.", + "Your password on %s was changed." : "La vostra contrasenya a %s ha canviat.", + "Your password on %s was reset by an administrator." : "La vostra contrasenya a %s ha estat restablerta per un administrador.", + "Password for %1$s changed on %2$s" : "Contrasenya per %1$s canviada a %2$s", + "Password changed for %s" : "Contrasenya canviada per %s", + "If you did not request this, please contact an administrator." : "Si no ho heu sol·licitat, poseu-vos en contacte amb un administrador.", + "Your email address on %s was changed." : "La vostra adreça de correu electrònic a %s ha canviat.", + "Your email address on %s was changed by an administrator." : "La vostra adreça de correu electrònic a %s ha estat canviada per un administrador.", + "Email address for %1$s changed on %2$s" : "Adreça de correu electrònic per %1$s canviada a %2$s", + "Email address changed for %s" : "Adreça de correu electrònic canviada per %s", + "The new email address is %s" : "La nova adreça de correu electrònic és %s", + "Your %s account was created" : "S'ha creat el vostre compte %s", + "Welcome aboard" : "Benvingut a bord", + "Welcome aboard %s" : "Benvingut a bord %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Benvingut al compte %s, podeu afegir, protegir i compartir les vostres dades.", + "Your username is: %s" : "El vostre usuari és: %s", + "Set your password" : "Establiu la vostra contrasenya", + "Go to %s" : "Vés a %s", + "Install Client" : "S'està instal·lant el Client", + "Logged in user must be a subadmin" : "L’usuari que ha iniciat la sessió ha de ser un subadministrador", + "Create" : "Crea", + "Change" : "Canvia", + "Delete" : "Suprimeix", + "Share" : "Comparteix", + "Unlimited" : "Il·limitat", + "Verifying" : "S'està verificant", + "Verifying …" : "S'està verificant...", + "Verify" : "Verifica", + "Migration in progress. Please wait until the migration is finished" : "Migració en procés. Si us plau, espereu fins que finalitzi la migració", + "Migration started …" : "S'ha iniciat la migració …", + "Not saved" : "No s'ha desat", + "Sending…" : "S'està enviant…", + "Email sent" : "S'ha enviat el correu electrònic", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "S'ha produït un error. Si us plau, carregueu un certificat PEM codificat en ASCII.", + "Valid until {date}" : "Vàlid fins {date}", + "Local" : "Local", + "Private" : "Privat", + "Only visible to local users" : "Només visible per a usuaris locals", + "Only visible to you" : "Només visible per mi", + "Contacts" : "Contactes", + "Visible to local users and to trusted servers" : "Visible per als usuaris locals i servidors de confiança", + "Public" : "Públic", + "Will be synced to a global and public address book" : "Se sincronitzarà amb una llibreta d'adreces global i pública", + "Very weak password" : "Contrasenya molt feble", + "Weak password" : "Contrasenya feble", + "So-so password" : "Contrasenya passable", + "Good password" : "Contrasenya bona", + "Strong password" : "Contrasenya forta", + "An error occurred while changing your language. Please reload the page and try again." : "S'ha produït un error mentre es canviava el vostre idioma. Si us plau, recarregueu la pàgina i torneu-ho a provar.", + "An error occurred while changing your locale. Please reload the page and try again." : "S'ha produït un error mentre es canviava la vostra configuració regional. Si us plau, recarregueu la pàgina i torneu-ho a provar.", + "Select a profile picture" : "Seleccioneu una imatge de perfil", + "Week starts on {fdow}" : "La setmana comença en {fdow}", + "Groups" : "Grups", + "Group list is empty" : "La llista de grups és buida", + "Unable to retrieve the group list" : "No s’ha pogut recuperar la llista del grups", + "Afrikaans (Namibia)" : "Afrikaans (Namíbia)", + "Afrikaans (South Africa)" : "Afrikaans (Sud-àfrica)", + "Afrikaans" : "Afrikaans", + "Akan (Ghana)" : "Àkan (Ghana)", + "Akan" : "Àkan", + "Albanian (Albania)" : "Albanès (Albània)", + "Albanian" : "Albanès", + "Amharic (Ethiopia)" : "Amhàric (Etiòpia)", + "Amharic" : "Amhàric", + "Arabic (Algeria)" : "Àrab (Algèria)", + "Arabic (Bahrain)" : "Àrab (Bahrain)", + "Arabic (Egypt)" : "Àrab (Egipte)", + "Arabic (Iraq)" : "Àrab (Iraq)", + "Arabic (Jordan)" : "Àrab (Jordània)", + "Arabic (Kuwait)" : "Àrab (Kuwait)", + "Arabic (Lebanon)" : "Àrab (Líban)", + "Arabic (Libya)" : "Àrab (Líbia)", + "Arabic (Morocco)" : "Àrab (Marroc)", + "Arabic (Oman)" : "Àrab (Oman)", + "Arabic (Qatar)" : "Àrab (Qatar)", + "Arabic (Saudi Arabia)" : "Àrab (Aràbia Saudita)", + "Arabic (Sudan)" : "Àrab (Sudan)", + "Arabic (Syria)" : "Àrab (Síria)", + "Arabic (Tunisia)" : "Àrab (Tunísia)", + "Arabic (United Arab Emirates)" : "Àrab (Emirats Àrabs Units)", + "Arabic (Yemen)" : "Àrab (Iemen)", + "Arabic" : "Àrab", + "Armenian (Armenia)" : "Armeni (Armènia)", + "Armenian" : "Armeni", + "Assamese (India)" : "Assamès (Índia)", + "Assamese" : "Assamès", + "Asu (Tanzania)" : "Asu (Tanzània)", + "Asu" : "Asu", + "Azerbaijani (Cyrillic)" : "Àzeri (alfabet ciríl·lic)", + "Azerbaijani (Cyrillic, Azerbaijan)" : "Àzeri (alfabet ciríl·lic, Azerbaidjan)", + "Azerbaijani (Latin)" : "Àzeri (alfabet llatí)", + "Azerbaijani (Latin, Azerbaijan)" : "Àzeri (alfabet llatí, Azerbaidjan)", + "Azerbaijani" : "Àzeri", + "Bambara (Mali)" : "Bambara (Mali)", + "Bambara" : "Bambara", + "Basque (Spain)" : "Basc (Espanya)", + "Basque" : "Basc", + "Belarusian (Belarus)" : "Bielorús (Belarús)", + "Belarusian" : "Bielorús", + "Bemba (Zambia)" : "Bemba (Zàmbia)", + "Bemba" : "Bemba", + "Bena (Tanzania)" : "Bena (Tanzània)", + "Bena" : "Bena", + "Bengali (Bangladesh)" : "Bengalí (Bangladesh)", + "Bengali (India)" : "Bengalí (Índia)", + "Bengali" : "Bengalí", + "Bosnian (Bosnia and Herzegovina)" : "Bosnià (Bòsnia i Hercegovina)", + "Bosnian" : "Bosnià", + "Bulgarian (Bulgaria)" : "Búlgar (Bulgària)", + "Bulgarian" : "Bulgària", + "Burmese (Myanmar [Burma])" : "Birmà (Myanma [Birmània])", + "Burmese" : "Birmà", + "Catalan (Spain)" : "Català (Espanya)", + "Catalan" : "Català", + "Central Morocco Tamazight (Latin)" : "Amazic del Marroc Central (alfabet llatí)", + "Central Morocco Tamazight (Latin, Morocco)" : "Amazic del Marroc Central (alfabet llatí, Marroc)", + "Central Morocco Tamazight" : "Amazic del Marroc Central", + "Cherokee (United States)" : "Cherokee (Estats Units d'Amèrica)", + "Cherokee" : "Cherokee", + "Chiga (Uganda)" : "Chiga (Uganda)", + "Chiga" : "Chiga", + "Chinese (Simplified Han)" : "Xinès (simplificat)", + "Chinese (Simplified Han, China)" : "Xinès (simplificat, Xina)", + "Chinese (Simplified Han, Hong Kong SAR China)" : "Xinès (simplificat, Hong Kong RAE Xina)", + "Chinese (Simplified Han, Macau SAR China)" : "Xinès (simplificat, Macau RAE Xina)", + "Chinese (Simplified Han, Singapore)" : "Xinès (simplificat, Singapur)", + "Chinese (Traditional Han)" : "Xinès (tradicional)", + "Chinese (Traditional Han, Hong Kong SAR China)" : "Xinès (tradicional, Hong Kong RAE Xina)", + "Chinese (Traditional Han, Macau SAR China)" : "Xinès (tradicional, Macau RAE Xina)", + "Chinese (Traditional Han, Taiwan)" : "Xinès (tradicional, Taiwan)", + "Chinese" : "Xinès", + "Cornish (United Kingdom)" : "Còrnic (Regne Unit)", + "Cornish" : "Còrnic", + "Croatian (Croatia)" : "Croat (Croàcia)", + "Croatian" : "Croat", + "Czech (Czech Republic)" : "Txec (República Txeca)", + "Czech" : "Txec", + "Danish (Denmark)" : "Danès (Dinamarca)", + "Danish" : "Danès", + "Dutch (Belgium)" : "Neerlandès (Bèlgica)", + "Dutch (Netherlands)" : "Neerlandès (Països Baixos)", + "Dutch" : "Neerlandès", + "Embu (Kenya)" : "Embu (Kenya)", + "Embu" : "Embu", + "English (American Samoa)" : "Anglès (Samoa Nord-americana)", + "English (Australia)" : "Anglès (Austràlia)", + "English (Belgium)" : "Anglès (Bèlgica)", + "English (Belize)" : "Anglès (Belize)", + "English (Botswana)" : "Anglès (Botswana)", + "English (Canada)" : "Anglès (Canadà)", + "English (Guam)" : "Anglès (Guam)", + "English (Hong Kong SAR China)" : "Anglès (Hong Kong RAE Xina)", + "English (India)" : "Anglès (Índia)", + "English (Ireland)" : "Anglès (Irlanda)", + "English (Jamaica)" : "Anglès (Jamaica)", + "English (Malta)" : "Anglès (Malta)", + "English (Marshall Islands)" : "Anglès (Illes Marshall)", + "English (Mauritius)" : "Anglès (Maurici)", + "English (Namibia)" : "Anglès (Namíbia)", + "English (New Zealand)" : "Anglès (Nova Zelanda)", + "English (Northern Mariana Islands)" : "Anglès (Illes Mariannes Septentrionals)", + "English (Pakistan)" : "Anglès (Pakistan)", + "English (Philippines)" : "Anglès (Filipines)", + "English (Singapore)" : "Anglès (Singapur)", + "English (South Africa)" : "Anglès (Sud-àfrica)", + "English (Trinidad and Tobago)" : "Anglès (Trinitat i Tobago)", + "English (U.S. Minor Outlying Islands)" : "Anglès (Illes Perifèriques Menors dels EUA)", + "English (U.S. Virgin Islands)" : "Anglès (Illes Verges Nord-americanes)", + "English (United Kingdom)" : "Anglès (Regne Unit)", + "English (United States)" : "Anglès (Estats Units)", + "English (Zimbabwe)" : "Anglès (Zimbàbue)", + "English" : "Anglès", + "Esperanto" : "Esperanto", + "Estonian (Estonia)" : "Estonià (Estònia)", + "Estonian" : "Estonià", + "Ewe (Ghana)" : "Ewe (Ghana)", + "Ewe (Togo)" : "Ewe (Togo)", + "Ewe" : "Ewe", + "Faroese (Faroe Islands)" : "Feroès (Illes Fèroe)", + "Faroese" : "Feroès", + "Filipino (Philippines)" : "Filipí (Filipines)", + "Filipino" : "Filipí", + "Finnish (Finland)" : "Finès (Finlàndia)", + "Finnish" : "Finès", + "French (Belgium)" : "Francès (Bèlgica)", + "French (Benin)" : "Francès (Benín)", + "French (Burkina Faso)" : "Francès (Burkina Faso)", + "French (Burundi)" : "Francès (Burundi)", + "French (Cameroon)" : "Francès (Camerun)", + "French (Canada)" : "Francès (Canadà)", + "French (Central African Republic)" : "Francès (República Centreafricana)", + "French (Chad)" : "Francès (Txad)", + "French (Comoros)" : "Francès (Comores)", + "French (Congo - Brazzaville)" : "Francès (Congo - Brazzaville)", + "French (Congo - Kinshasa)" : "Francès (Congo - Kinshasa)", + "French (Côte d’Ivoire)" : "Francès (Costa d'Ivori)", + "French (Djibouti)" : "Francès (Djibouti)", + "French (Equatorial Guinea)" : "Francès (Guinea Equatorial)", + "French (France)" : "Francès (França)", + "French (Gabon)" : "Francès (Gabon)", + "French (Guadeloupe)" : "Francès (Guadalupe)", + "French (Guinea)" : "Francès (Guinea)", + "French (Luxembourg)" : "Francès (Luxemburg)", + "French (Madagascar)" : "Francès (Madagascar)", + "French (Mali)" : "Francès (Mali)", + "French (Martinique)" : "Francès (Martinica)", + "French (Monaco)" : "Francès (Mònaco)", + "French (Niger)" : "Francès (Níger)", + "French (Rwanda)" : "Francès (Ruanda)", + "French (Réunion)" : "Francès (Illa de la Reunió)", + "French (Saint Barthélemy)" : "Francès (Saint-Barthélemy)", + "French (Saint Martin)" : "Francès (Illa de Sant Martí)", + "French (Senegal)" : "Francès (Senegal)", + "French (Switzerland)" : "Francès (Suïssa)", + "French (Togo)" : "Francès (Togo)", + "French" : "Francès", + "Fulah (Senegal)" : "Ful (Senegal)", + "Fulah" : "Ful", + "Galician (Spain)" : "Gallec (Espanya)", + "Galician" : "Gallec", + "Ganda (Uganda)" : "Ganda (Uganda)", + "Ganda" : "Ganda", + "Georgian (Georgia)" : "Georgià (Geòrgia)", + "Georgian" : "Georgià", + "German (Austria)" : "Alemany (Àustria)", + "German (Belgium)" : "Alemany (Bèlgica)", + "German (Germany)" : "Alemany (Alemanya)", + "German (Liechtenstein)" : "Alemany (Liechtenstein)", + "German (Luxembourg)" : "Alemany (Luxemburg)", + "German (Switzerland)" : "Alemany (Suïssa)", + "German" : "Alemany", + "Greek (Cyprus)" : "Grec (Xipre)", + "Greek (Greece)" : "Grec (Grècia)", + "Greek" : "Grec", + "Gujarati (India)" : "Gujarati (Índia)", + "Gujarati" : "Gujarati", + "Gusii (Kenya)" : "Gusí (Kenya)", + "Gusii" : "Gusí", + "Hausa (Latin)" : "Haussa (alfabet llatí)", + "Hausa (Latin, Ghana)" : "Haussa (alfabet llatí, Ghana)", + "Hausa (Latin, Niger)" : "Haussa (alfabet llatí, Níger)", + "Hausa (Latin, Nigeria)" : "Haussa (alfabet llatí, Nigèria)", + "Hausa" : "Haussa", + "Hawaiian (United States)" : "Hawaià (Estats Units)", + "Hawaiian" : "Hawaià", + "Hebrew (Israel)" : "Hebreu (Israel)", + "Hebrew" : "Hebreu", + "Hindi (India)" : "Hindi (Índia)", + "Hindi" : "Hindi", + "Hungarian (Hungary)" : "Hongarès (Hongria)", + "Hungarian" : "Hongarès", + "Icelandic (Iceland)" : "Islandès (Islàndia)", + "Icelandic" : "Islandès", + "Igbo (Nigeria)" : "Igbo (Nigèria)", + "Igbo" : "Igbo", + "Indonesian (Indonesia)" : "Indonesi (Indonèsia)", + "Indonesian" : "Indonesi", + "Irish (Ireland)" : "Irlandès (Irlanda)", + "Irish" : "Irlandès", + "Italian (Italy)" : "Italià (Itàlia)", + "Italian (Switzerland)" : "Italià (Suïssa)", + "Italian" : "Italià", + "Japanese (Japan)" : "Japonès (Japó)", + "Japanese" : "Japonès", + "Kabuverdianu (Cape Verde)" : "Crioll capverdià (Cap Verd)", + "Kabuverdianu" : "Crioll capverdià", + "Kabyle (Algeria)" : "Cabilenc (Algèria)", + "Kabyle" : "Cabilenc", + "Kalaallisut (Greenland)" : "Groenlandès (Groenlàndia)", + "Kalaallisut" : "Groenlandès", + "Kalenjin (Kenya)" : "Kalenjin (Kenya)", + "Kalenjin" : "Kalenjin", + "Kamba (Kenya)" : "Kamba (Kenya)", + "Kamba" : "Kamba", + "Kannada (India)" : "Kanarès (Índia)", + "Kannada" : "Kanarès", + "Kazakh (Cyrillic)" : "Kazakh (alfabet ciríl·lic)", + "Kazakh (Cyrillic, Kazakhstan)" : "Kazakh (alfabet ciríl·lic, Kazakhstan)", + "Kazakh" : "Kazakh", + "Khmer (Cambodia)" : "Khmer (Cambodja)", + "Khmer" : "Khmer", + "Kikuyu (Kenya)" : "Kikuiu (Kenya)", + "Kikuyu" : "Kikuiu", + "Kinyarwanda (Rwanda)" : "Ruandès (Ruanda)", + "Kinyarwanda" : "Ruandès", + "Konkani (India)" : "Konkani (Índia)", + "Konkani" : "Konkani", + "Korean (South Korea)" : "Coreà (Corea del Sud)", + "Korean" : "Coreà", + "Koyra Chiini (Mali)" : "Songhai occidental (Mali)", + "Koyra Chiini" : "Songhai occidental", + "Koyraboro Senni (Mali)" : "Songhai oriental (Mali)", + "Koyraboro Senni" : "Songhai oriental", + "Langi (Tanzania)" : "Langi (Tanzània)", + "Langi" : "Langi", + "Latvian (Latvia)" : "Letó (Letònia)", + "Latvian" : "Letó", + "Lithuanian (Lithuania)" : "Lituà (Lituània)", + "Lithuanian" : "Lituà", + "Luo (Kenya)" : "Luo (Kenya)", + "Luo" : "Luo", + "Luyia (Kenya)" : "Luyia (Kenya)", + "Luyia" : "Luyia", + "Macedonian (Macedonia)" : "Macedoni (Macedònia del Nord)", + "Macedonian" : "Macedoni", + "Machame (Tanzania)" : "Machame (Tanzània)", + "Machame" : "Machame", + "Makonde (Tanzania)" : "Makonde (Tanzània)", + "Makonde" : "Makonde", + "Malagasy (Madagascar)" : "Malgaix (Madagascar)", + "Malagasy" : "Malgaix", + "Malay (Brunei)" : "Malai (Brunei)", + "Malay (Malaysia)" : "Malai (Malàisia)", + "Malay" : "Malai", + "Malayalam (India)" : "Malaiàlam (Índia)", + "Malayalam" : "Malaiàlam", + "Maltese (Malta)" : "Maltès (Malta)", + "Maltese" : "Maltès", + "Manx (United Kingdom)" : "Manx (Regne Unit)", + "Manx" : "Manx", + "Marathi (India)" : "Marathi (Índia)", + "Marathi" : "Marathi", + "Masai (Kenya)" : "Massai (Kenya)", + "Masai (Tanzania)" : "Massai (Kenya)", + "Masai" : "Massai", + "Meru (Kenya)" : "Meru (Kenya)", + "Meru" : "Meru", + "Morisyen (Mauritius)" : "Crioll mauricià (Maurici)", + "Morisyen" : "Crioll mauricià", + "Nama (Namibia)" : "Nama (Namíbia)", + "Nama" : "Nama", + "Nepali (India)" : "Nepalès (Índia)", + "Nepali (Nepal)" : "Nepalès (Nepal)", + "Nepali" : "Nepalès", + "North Ndebele (Zimbabwe)" : "Ndebele del Nord (Zimbàbue)", + "North Ndebele" : "Ndebele del Nord", + "Norwegian Bokmål (Norway)" : "Noruec bokmål (Noruega)", + "Norwegian Bokmål" : "Noruec bokmål", + "Norwegian Nynorsk (Norway)" : "Noruec nynorsk (Noruega)", + "Norwegian Nynorsk" : "Noruec nynorsk", + "Nyankole (Uganda)" : "Nyankole (Uganda)", + "Nyankole" : "Nyankole", + "Oriya (India)" : "Oriya (Índia)", + "Oriya" : "Oriya", + "Oromo (Ethiopia)" : "Oromo (Etiòpia)", + "Oromo (Kenya)" : "Oromo (Kenya)", + "Oromo" : "Oromo", + "Pashto (Afghanistan)" : "Paixtu (Afganistan)", + "Pashto" : "Paixtu", + "Persian (Afghanistan)" : "Persa (Afganistan)", + "Persian (Iran)" : "Persa (Iran)", + "Persian" : "Persa", + "Polish (Poland)" : "Polonès (Polònia)", + "Polish" : "Polonès", + "Portuguese (Brazil)" : "Portuguès (Brasil)", + "Portuguese (Guinea-Bissau)" : "Portuguès (Guinea Bissau)", + "Portuguese (Mozambique)" : "Portuguès (Moçambic)", + "Portuguese (Portugal)" : "Portuguès (Portugal)", + "Portuguese" : "Portuguès", + "Punjabi (Arabic)" : "Panjabi (Àrab)", + "Punjabi (Arabic, Pakistan)" : "Panjabi (Àrab, Pakistan)", + "Punjabi (Gurmukhi)" : "Panjabi (Gurmukhi)", + "Punjabi (Gurmukhi, India)" : "Panjabi (Gurmukhi, Índia)", + "Punjabi" : "Panjabi", + "Romanian (Moldova)" : "Romanès (Moldàvia)", + "Romanian (Romania)" : "Romanès (Romania)", + "Romanian" : "Romanès", + "Romansh (Switzerland)" : "Romanx (Suïssa)", + "Romansh" : "Romanx", + "Rombo (Tanzania)" : "Rombo (Tanzània)", + "Rombo" : "Rombo", + "Russian (Moldova)" : "Rus (Moldàvia)", + "Russian (Russia)" : "Rus (Rússia)", + "Russian (Ukraine)" : "Rus (Ucraïna)", + "Russian" : "Rus", + "Rwa (Tanzania)" : "Rwo (Tanzània)", + "Rwa" : "Rwo", + "Samburu (Kenya)" : "Samburu (Kenya)", + "Samburu" : "Samburu", + "Sango (Central African Republic)" : "Sango (República Centreafricana)", + "Sango" : "Sango", + "Sena (Mozambique)" : "Sena (Moçambic)", + "Sena" : "Sena", + "Serbian (Cyrillic)" : "Serbi (alfabet ciríl·lic)", + "Serbian (Cyrillic, Bosnia and Herzegovina)" : "Serbi (alfabet ciríl·lic, Bòsnia i Hercegovina)", + "Serbian (Cyrillic, Montenegro)" : "Serbi (alfabet ciríl·lic, Montenegro)", + "Serbian (Cyrillic, Serbia)" : "Serbi (alfabet ciríl·lic, Sèrbia)", + "Serbian (Latin)" : "Serbi (alfabet llatí)", + "Serbian (Latin, Bosnia and Herzegovina)" : "Serbi (alfabet llatí, Bòsnia i Hercegovina)", + "Serbian (Latin, Montenegro)" : "Serbi (alfabet llatí, Montenegro)", + "Serbian (Latin, Serbia)" : "Serbi (alfabet llatí, Sèrbia)", + "Serbian" : "Serbi", + "Shona (Zimbabwe)" : "Xona (Zimbàbue)", + "Shona" : "Xona", + "Sichuan Yi (China)" : "Sichuan Yi (Xina)", + "Sichuan Yi" : "Sichuan Yi", + "Sinhala (Sri Lanka)" : "Singalès (Sri Lanka)", + "Sinhala" : "Singalès", + "Slovak (Slovakia)" : "Eslovac (Eslovàquia)", + "Slovak" : "Eslovac", + "Slovenian (Slovenia)" : "Eslovè (Eslovènia)", + "Slovenian" : "Eslovè", + "Soga (Uganda)" : "Soga (Uganda)", + "Soga" : "Soga", + "Somali (Djibouti)" : "Somali (Djibouti)", + "Somali (Ethiopia)" : "Somali (Etiòpia)", + "Somali (Kenya)" : "Somali (Kenya)", + "Somali (Somalia)" : "Somali (Somàlia)", + "Somali" : "Somali", + "Spanish (Argentina)" : "Castellà (Argentina)", + "Spanish (Bolivia)" : "Castellà (Bolívia)", + "Spanish (Chile)" : "Castellà (Xile)", + "Spanish (Colombia)" : "Castellà (Colòmbia)", + "Spanish (Costa Rica)" : "Castellà (Costa Rica)", + "Spanish (Dominican Republic)" : "Castellà (República Dominicana)", + "Spanish (Ecuador)" : "Castellà (Equador)", + "Spanish (El Salvador)" : "Castellà (El Salvador)", + "Spanish (Equatorial Guinea)" : "Castellà (Guinea Equatorial)", + "Spanish (Guatemala)" : "Castellà (Guatemala)", + "Spanish (Honduras)" : "Castellà (Hondures)", + "Spanish (Latin America)" : "Castellà (Amèrica Llatina)", + "Spanish (Mexico)" : "Castellà (Mèxic)", + "Spanish (Nicaragua)" : "Castellà (Nicaragua)", + "Spanish (Panama)" : "Castellà (Panamà)", + "Spanish (Paraguay)" : "Castellà (Paraguai)", + "Spanish (Peru)" : "Castellà (Perú)", + "Spanish (Puerto Rico)" : "Castellà (Puerto Rico)", + "Spanish (Spain)" : "Castellà (Espanya)", + "Spanish (United States)" : "Castellà (Estats Units)", + "Spanish (Uruguay)" : "Castellà (Uruguai)", + "Spanish (Venezuela)" : "Castellà (Veneçuela)", + "Spanish" : "Castellà", + "Swahili (Kenya)" : "Suahili (Kenya)", + "Swahili (Tanzania)" : "Suahili (Tanzània)", + "Swahili" : "Suahili", + "Swedish (Finland)" : "Suec (Finlàndia)", + "Swedish (Sweden)" : "Suec (Suècia)", + "Swedish" : "Suec", + "Swiss German (Switzerland)" : "Alemany suís (Suïssa)", + "Swiss German" : "Alemany suís", + "Tachelhit (Latin)" : "Taixelhit (alfabet llatí)", + "Tachelhit (Latin, Morocco)" : "Taixelhit (alfabet llatí, Marroc)", + "Tachelhit (Tifinagh)" : "Taixelhit (Tifinag)", + "Tachelhit (Tifinagh, Morocco)" : "Taixelhit (Tifinag, Marroc)", + "Tachelhit" : "Taixelhit", + "Taita (Kenya)" : "Taita (Kenya)", + "Taita" : "Taita", + "Tamil (India)" : "Tàmil (Índia)", + "Tamil (Sri Lanka)" : "Tàmil (Sri Lanka)", + "Tamil" : "Tàmil", + "Telugu (India)" : "Telugu (Índia)", + "Telugu" : "Telugu", + "Teso (Kenya)" : "Teso (Kenya)", + "Teso (Uganda)" : "Teso (Uganda)", + "Teso" : "Teso", + "Thai (Thailand)" : "Tailandès (Tailàndia)", + "Thai" : "Tailandès", + "Tibetan (China)" : "Tibetà (Xina)", + "Tibetan (India)" : "Tibetà (Índia)", + "Tibetan" : "Tibetà", + "Tigrinya (Eritrea)" : "Tigrinya (Eritrea)", + "Tigrinya (Ethiopia)" : "Tigrinya (Etiòpia)", + "Tigrinya" : "Tigrinya", + "Tonga (Tonga)" : "Tongalès (Tonga)", + "Tonga" : "Tonga", + "Turkish (Turkey)" : "Turc (Turquia)", + "Turkish" : "Turc", + "Ukrainian (Ukraine)" : "Ucraïnes (Ucraïna)", + "Ukrainian" : "Ucraïnès", + "Urdu (India)" : "Urdú (Índia)", + "Urdu (Pakistan)" : "Urdú (Pakistan)", + "Urdu" : "Urdú", + "Uzbek (Arabic)" : "Uzbek (Àrab)", + "Uzbek (Arabic, Afghanistan)" : "Uzbek (Àrab, Afganistan)", + "Uzbek (Cyrillic)" : "Uzbek (alfabet ciríl·lic)", + "Uzbek (Cyrillic, Uzbekistan)" : "Uzbek (alfabet ciríl·lic, Uzbekistan)", + "Uzbek (Latin)" : "Uzbek (alfabet llatí, Uzbekistan)", + "Uzbek (Latin, Uzbekistan)" : "Uzbek (alfabet llatí, Uzbekistan)", + "Uzbek" : "Uzbek", + "Vietnamese (Vietnam)" : "Vietnamita (Vietnam)", + "Vietnamese" : "Vietnamita", + "Vunjo (Tanzania)" : "Vunjo (Tanzània)", + "Vunjo" : "Vunjo", + "Welsh (United Kingdom)" : "Gal·lès (Regne Unit)", + "Welsh" : "Gal·lès", + "Yoruba (Nigeria)" : "Ioruba (Nigèria)", + "Yoruba" : "Ioruba", + "Zulu (South Africa)" : "Zulú (Sud-àfrica)", + "Zulu" : "Zulú", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "L’autenticació de dos factors pot ser forçada per a tots\tels usuaris i grups específics. Si no tenen un proveïdor de dos factors configurat, no podran accedir en el sistema.", + "Enforce two-factor authentication" : "Força l'autenticació de dos factors", + "Limit to groups" : "Limita per grups", + "Enforcement of two-factor authentication can be set for certain groups only." : "L’obligació d'autenticació amb dos factors es pot definir només per a certs grups.", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "L’autenticació de dos factors està obligada per a tots\tels membres dels següents grups.", + "Enforced groups" : "Grups obligats", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "Autenticació de dos factors no està obligada per\tals membres dels següents grups.", + "Excluded groups" : "Grups exclosos", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "Quan es seleccionen/exclouen grups, es fa servir la lògica següent per determinar si un usuari té 2FA (Autentificació de 2 Factors) obligada: si no hi ha grups seleccionats, 2FA està activada per a tothom, a excepció de membres dels grups exclosos. Si els grups estan seleccionats, 2FA està activada per a tots els membres d'aquests. Si un usuari està tant en un grup seleccionat com exclòs, els seleccionats tenen prioritat i 2FA s'imposa.", + "Save changes" : "Desa els canvis", + "Marked for remote wipe" : "Marcat per netejar remotament", + "Device settings" : "Paràmetres del dispositiu", + "Allow filesystem access" : "Permet l'accés al sistema de fitxers", + "Rename" : "Canvia el nom", + "Revoke" : "Revoca", + "Wipe device" : "Neteja dispositiu", + "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Revocant aquest token impedirà la neteja del vostre dispositiu is encara no ha començat.", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome per a Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Aplicació de Nextcloud per a iOS", + "Nextcloud Android app" : "Aplicació de Nextcloud per a Android", + "Nextcloud Talk for iOS" : "Nextcloud Talk per a iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk per a Android", + "Sync client - {os}" : "Client de sincronització - {os}", + "This session" : "Aquesta sessió", + "Device" : "Dispositiu", + "Last activity" : "Darrera activitat", + "Devices & sessions" : "Dispositius i sessions", + "Web, desktop and mobile clients currently logged in to your account." : "Clients Web, d'escriptori i mòbils connectats actualment al vostre compte.", + "Do you really want to wipe your data from this device?" : "Esteu segurs de que voleu netejar les vostres dades d'aquest dispositiu?", + "Confirm wipe" : "Confirma neteja", + "Error while creating device token" : "S'ha produït un error mentre es creava el testimoni del dispositiu", + "Error while updating device token scope" : "S'ha produït un error mentre s'actualitzava l’abast de testimonis del dispositiu", + "Error while updating device token name" : "S'ha produït un error mentre s'actualitzava el nom del testimoni del dispositiu", + "Error while deleting the token" : "S'ha produït un error mentre se suprimia el testimoni", + "Error while wiping the device with the token" : "S'ha produït un error mentre es netejava el dispositiu amb el token", + "App name" : "Nom de l'aplicació", + "Create new app password" : "Crea una nova contrasenya d'aplicació", + "Use the credentials below to configure your app or device." : "Utilitzeu les credencials de sota per configurar la vostra aplicació o dispositiu.", + "For security reasons this password will only be shown once." : "Per raons de seguretat aquesta contrasenya només es mostrarà una vegada.", + "Username" : "Nom d'usuari", + "Password" : "Contrasenya", + "Done" : "Fet", + "Show QR code for mobile apps" : "Mostra el codi QR per aplicacions mòbils", + "Copied!" : "S'ha copiat!", + "Copy" : "Copia", + "Could not copy app password. Please copy it manually." : "No s’ha pogut copiar la contrasenya de l’aplicació. Copieu-la manualment.", + "This app is supported via your current Nextcloud subscription." : "Aquesta aplicació és compatible amb la vostra actual subscripció a Nextcloud.", + "Supported" : "Compatible", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Les aplicacions oficials són desenvolupades per i dins de la comunitat. Ofereixen funcionalitats centrals i estan preparades per ser emprades en producció.", + "Official" : "Oficial", + "by" : "per", + "Update to {version}" : "Actualitza a {version}", + "Remove" : "Suprimeix", + "Disable" : "Desactiva", + "All" : "Tots", + "Limit app usage to groups" : "Limita l’ús de l’aplicació als grups", + "No results" : "No hi ha resultats", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Aquesta aplicació no té cap versió mínima de Nextcloud assignada. Això serà un error en el futur.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Aquesta aplicació no té cap versió màxima de Nextcloud assignada. Això serà un error en el futur.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Aquesta aplicació no es pot instal·lar perquè les següents dependències no es compleixen:", + "View in store" : "Mostra-ho al magatzem", + "Visit website" : "Visita el lloc web", + "Report a bug" : "Informa d'un error", + "User documentation" : "Documentació per a usuaris", + "Admin documentation" : "Documentació per a administradors", + "Developer documentation" : "Documentació per a desenvolupadors", + "Update to {update}" : "Actualitza a {update}", + "Results from other categories" : "Resultats d'altres categories", + "No apps found for your version" : "No s'han trobat aplicacions per la vostra versió", + "Disable all" : "Desactiva-ho tot", + "Enable all" : "Activa-ho tot", + "Download and enable" : "Descarrega i activa", + "Enable" : "Activa", + "Enable untested app" : "Activa aplicacions no provades", + "The app will be downloaded from the app store" : "L'aplicació es descarregarà des de la botiga d'aplicacions", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Aquesta aplicació no està marcada com a compatible amb la vostra versió de Nextcloud. Si continueu, encara podreu instal·lar l’aplicació. Tingueu en compte que pot ser que l’aplicació no funcioni correctament.", + "You do not have permissions to see the details of this user" : "No teniu els permisos necessaris per veure els detalls d'aquest usuari", + "The backend does not support changing the display name" : "El rerefons no està preparat per canviar el nom visualitzat", + "New password" : "Contrasenya nova", + "Add user in group" : "Afegeix l'usuari al grup", + "Set user as admin for" : "Posa l'usuari com a administrador per", + "Select user quota" : "Selecciona la quota d'usuari", + "No language set" : "No s'ha establert cap idioma", + "Never" : "Mai", + "Delete user" : "Suprimeix usuari", + "Wipe all devices" : "Neteja tots els dispositius", + "Disable user" : "Desactiva l'usuari", + "Enable user" : "Activa l'usuari", + "Resend welcome email" : "Tornar a enviar el correu electrònic de benvinguda", + "{size} used" : "{size} en ús", + "Welcome mail sent!" : "S'ha enviat el correu electrònic de benvinguda!", + "Display name" : "Mostra nom", + "Email" : "Correu electrònic", + "Group admin for" : "Administrador de grup per", + "Quota" : "Quota", + "Language" : "Idioma", + "Storage location" : "Ubicació de l'emmagatzematge", + "User backend" : "Rerefons d'usuari", + "Last login" : "Darrer accés", + "Will be autogenerated" : "Serà auto-generat", + "Default language" : "Idioma per defecte", + "Add a new user" : "Afegeix un nou usuari", + "No users in here" : "No hi ha usuaris aquí dins", + "Default quota" : "Quota per defecte", + "Password change is disabled because the master key is disabled" : "El canvi de contrasenya està desactivat perquè la clau mestra està desactivada", + "Common languages" : "Idiomes freqüents", + "All languages" : "Tots els idiomes", + "Your apps" : "Les vostres aplicacions", + "Active apps" : "Aplicacions actives", + "Disabled apps" : "Aplicacions desactivades", + "Updates" : "Actualitzacions", + "App bundles" : "Paquets d'aplicacions", + "{license}-licensed" : "sota la llicència - {license}", + "New user" : "Nou usuari", + "Default quota:" : "Quota per defecte:", + "Select default quota" : "Seleccioneu la quota per defecte", + "Show Languages" : "Mostra els idiomes", + "Show last login" : "Mostra el darrer inici de sessió", + "Show user backend" : "Mostra el rerefons d'usuari", + "Show storage path" : "Mostra la ubicació del magatzem", + "You are about to remove the group {group}. The users will NOT be deleted." : "Esteu a punt de suprimir el grup {group}. Els usuaris NO seran suprimits.", + "Please confirm the group removal " : "Confirmeu la supressió del grup ", + "Remove group" : "Suprimeix grup", + "Admins" : "Administradors", + "Disabled users" : "Usuaris desactivats", + "Everyone" : "Tothom", + "Add group" : "Afegeix un grup", + "An error occured during the request. Unable to proceed." : "S'ha produït un error durant la sol·licitud. No es pot continuar.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "L'aplicació s'ha activat però ha de ser actualitzada. Sereu redirigits a la pàgina d’actualització d'aquí 5 segons.", + "App update" : "Actualització de l'aplicació", + "Error: This app can not be enabled because it makes the server unstable" : "Error: aquesta aplicació no es pot activar perquè fa que el servidor sigui inestable", + "SSL Root Certificates" : "Certificats Arrel SSL", + "Common Name" : "Nom comú", + "Valid until" : "Valid fins", + "Issued By" : "Emès Per", + "Valid until %s" : "Vàlid fins %s", + "Import root certificate" : "Importa certificat arrel", + "Administrator documentation" : "Documentació d'administrador", + "Documentation" : "Documentació", + "Forum" : "Fòrum", + "None" : "Cap", + "Login" : "Inici de sessió", + "Plain" : "Pla", + "NT LAN Manager" : "Gestor NT LAN", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Servidor de correu electrònic", + "Open documentation" : "Obre la documentació", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "És important configurar aquest servidor per poder enviar correus electrònics, com ara per poder restablir la contrasenya i notificacions.", + "Send mode" : "Mode d'enviament", + "Encryption" : "Xifratge", + "Sendmail mode" : "Mode sendmail", + "From address" : "Des de l'adreça", + "mail" : "correu electrònic", + "Authentication method" : "Mètode d'autenticació", + "Authentication required" : "Es requereix autenticació", + "Server address" : "Adreça del servidor", + "Port" : "Port", + "Credentials" : "Credencials", + "SMTP Username" : "Nom d'usuari SMTP", + "SMTP Password" : "Contrasenya SMTP", + "Save" : "Desa", + "Test email settings" : "Prova els paràmetres de correu electrònic", + "Send email" : "Envia el correu electrònic", + "Security & setup warnings" : "Avisos de seguretat i configuració", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "És important per a la seguretat i el rendiment de la vostra instància que tot estigui configurat correctament. Per ajudar-vos, fem algunes comprovacions automàtiques. Si us plau, consulteu la documentació enllaçada per obtenir més informació.", + "All checks passed." : "Totes les comprovacions correctes.", + "There are some errors regarding your setup." : "Hi ha alguns errors pel que fa a la vostra configuració.", + "There are some warnings regarding your setup." : "Hi ha algunes advertències pel que fa a la vostra configuració.", + "Checking for system and security issues." : "S'estan comprovant incidències del sistema i de seguretat.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Si us plau reviseu les <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">guies d’instal·lació ↗</a>, i comproveu si hi ha errors o advertències en el <a href=\"%2$s\">registre</a>.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Reviseu la seguretat del vostre Nextcloud mitjançant la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">nostra verificació de seguretat ↗</a>.", + "Version" : "Versió", + "Two-Factor Authentication" : "Autenticació amb dos factors", + "Server-side encryption" : "Xifrat del costat del servidor", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "El xifrat per part del servidor permet xifrar els fitxers que s'hi carreguen. Això afecta al rendiment, així que activeu-ho només si és necessari.", + "Enable server-side encryption" : "Activa el xifrat al servidor", + "Please read carefully before activating server-side encryption: " : "Si us plau, llegiu atentament abans d'activar l'encriptació en el servidor: ", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Un cop s’activi el xifratge, tots els fitxers carregats al servidor des d'aquest punt cap endavant quedaran xifrats al servidor. Només serà possible desactivar el xifratge posteriorment si el mòdul criptogràfic actiu té aquesta funció, i es compleixen totes les pre-condicions (p. ex. definir una clau de recuperació).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "El xifratge per si mateix no garanteix la seguretat del sistema. Consulteu la documentació per a més informació sobre com funciona l'aplicació de xifratge i els casos d'ús suportats.", + "Be aware that encryption always increases the file size." : "Tingueu en compte que el xifratge sempre augmenta la mida del fitxer.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Sempre és bó crear còpies de seguretat de les vostres dades amb regularitat, en el cas de xifratge assegureu-vos de desar les claus de xifratge juntament amb les vostres dades a la còpia de seguretat.", + "This is the final warning: Do you really want to enable encryption?" : "Avís final: Realment voleu activar el xifratge?", + "Enable encryption" : "Activa el xifratge", + "No encryption module loaded, please enable an encryption module in the app menu." : "No s'ha carregat cap mòdul de xifratge, si us plau activeu un mòdul de xifratge al menú d'aplicacions.", + "Select default encryption module:" : "Seleccioneu el mòdul criptogràfic per defecte:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Heu de migrar les claus de xifratge del xifrat antic (ownCloud <= 8.0) al nou. Si us plau activeu el “Mòdul criptogràfic per defecte\" i executeu ‘occ encryption:migrate’", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Heu de migrar les claus de xifratge del xifrat antic (ownCloud <= 8.0) al nou.", + "Start migration" : "Inicia la migració", + "Background jobs" : "Tasques en segon pla", + "Last job ran %s." : "La darrera tasca es va executar %s.", + "Last job execution ran %s. Something seems wrong." : "La darrera tasca es va executar %s. Alguna cosa sembla malament.", + "Background job didn’t run yet!" : "La tasca en segon pla encara no s'ha executat!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Per a un rendiment òptim és important configurar correctament les tasques de fons. Per a instàncies més grans ‘Cron’ és el paràmetre recomanat. Si us plau, per a més informació vegeu la documentació.", + "Pick background job setting" : "Trieu la configuració de la tasca en segon pla", + "Execute one task with each page loaded" : "Executa una tasca per cada pàgina carregada", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php està registrat en un servei webcron per cridar cron.php cada 15 minuts per HTTP.", + "Use system cron service to call the cron.php file every 5 minutes." : "Utilitza el servei cron del sistema per cridar el fitxer cron.php cada 5 minuts.", + "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php ha de ser executat per l'usuari del sistema \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Per executar això es necessita l'extensió POSIX de PHP. Per més detalls, vegeu {linkstart}PHP documentació{linkend}.", + "Sharing" : "S'està compartint", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Com a administrador, podeu afinar els ajustaments per compartir fitxers. Si us plau, per més informació llegiu la documentació.", + "Allow apps to use the Share API" : "Permet que les aplicacions utilitzin l'API de compartir", + "Allow users to share via link" : "Permet als usuaris compartir mitjançant enllaços", + "Allow public uploads" : "Permet càrregues públiques", + "Always ask for a password" : "Demana sempre una contrasenya", + "Enforce password protection" : "Força la protecció amb contrasenya", + "Set default expiration date" : "Estableix la data de caducitat per defecte", + "Expire after " : "Caduca després de ", + "days" : "dies", + "Enforce expiration date" : "Força la data de caducitat", + "Allow resharing" : "Permet compartir de nou", + "Allow sharing with groups" : "Permetre compartir amb grups", + "Restrict users to only share with users in their groups" : "Restringeix als usuaris a compartir només amb usuaris del seu grup", + "Exclude groups from sharing" : "Exclou grups de compartició", + "These groups will still be able to receive shares, but not to initiate them." : "Aquests grups encara podran rebre compartits, però no en podran iniciar.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Permet la compleció automàtica del nom d’usuari en el diàleg de compartició. Si es desactiva, cal que s'introdueixi el nom d’usuari complet o l’adreça de correu electrònic.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Mostra el text de renúncia a la pàgina de càrrega d’enllaços públics. (Només es mostra quan la llista de fitxers està oculta).", + "This text will be shown on the public link upload page when the file list is hidden." : "Aquest text es mostrarà a la pàgina de càrrega d’enllaç públic quan la llista de fitxers estigui amagada.", + "Default share permissions" : "Permisos de compatició per defecte", + "Personal" : "Personal", + "Administration" : "Administració", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Desenvolupat per la {communityopen}comunitat Nextcloud{linkclose}, el {githubopen}codi font{linkclose} es troba sota la llicència {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Poseu un m’agrada a la nostra pàgina de Facebook", + "Follow us on Twitter" : "Seguiu-nos a Twitter", + "Follow us on Mastodon" : "Seguiu-nos a Mastodon", + "Check out our blog" : "Consulteu el nostre bloc", + "Subscribe to our newsletter" : "Subscriviu-vos al nostre butlletí", + "Profile picture" : "Foto de perfil", + "Upload new" : "Carrega'n una de nova", + "Select from Files" : "Selecciona dels Fitxers", + "Remove image" : "Suprimeix imatge", + "png or jpg, max. 20 MB" : "png o jpg, màx. 20 MB", + "Picture provided by original account" : "Imatge proporcionada pel compte original", + "Cancel" : "Cancel·la", + "Choose as profile picture" : "Tria una imatge de perfil", + "Details" : "Detalls", + "You are a member of the following groups:" : "Sou membre dels grups següents:", + "You are using <strong>%s</strong>" : "Esteu utilitzant <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Esteu utilitzant <strong>%1$s</strong> de <strong>%2$s</strong> (<strong>%3$s %%</strong>)", + "Full name" : "Nom complet", + "No display name set" : "No s'ha establert cap nom para mostrar", + "Your email address" : "El vostre correu electrònic", + "No email address set" : "No s'ha establert cap adreça de correu electrònic", + "For password reset and notifications" : "Per restablir la contrasenya i notificacions", + "Phone number" : "Número de telèfon", + "Your phone number" : "El vostre número de telèfon", + "Address" : "Adreça", + "Your postal address" : "La vostra adreça postal", + "Website" : "Lloc web", + "It can take up to 24 hours before the account is displayed as verified." : "Pot trigar fins a 24 hores abans que el compte es mostri com a verificat.", + "Link https://…" : "Enllaç https://…", + "Twitter" : "Twitter", + "Twitter handle @…" : "Twitter @…", + "Help translate" : "Ajudeu-nos amb la traducció", + "Locale" : "Configuració regional", + "Current password" : "Contrasenya actual", + "Change password" : "Canvia la contrasenya", + "Use a second factor besides your password to increase security for your account." : "Feu servir un segon factor a més de la vostra contrasenya per augmentar la seguretat del vostre compte.", + "Disconnect" : "Desconnecta", + "Not supported!" : "No suportat!", + "Press ⌘-C to copy." : "Premeu ⌘-C per copiar.", + "Press Ctrl-C to copy." : "Premeu Ctrl-C per copiar.", + "Error while loading browser sessions and device tokens" : "S'ha produït un error mentre es carregaven les sessions del navegador i els testimonis del dispositiu", + "Store credentials" : "Emmagatzema les credencials", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php està registrat en un servei webcron per cridar cron.php cada 15 minuts mitjançant HTTP.", + "Use system cron service to call the cron.php file every 15 minutes." : "Utilitza el servei del sistema cron per cridar al fitxer cron.php cada 15 minuts.", + "Follow us on Google+" : "Seguiu-nos a Google+" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/ca.json b/apps/settings/l10n/ca.json new file mode 100644 index 00000000000..514c39a2814 --- /dev/null +++ b/apps/settings/l10n/ca.json @@ -0,0 +1,821 @@ +{ "translations": { + "{actor} added you to group {group}" : "{actor} us ha afegit al grup {group}", + "You added {user} to group {group}" : "Heu afegit {user} al grup {group}", + "{actor} added {user} to group {group}" : "{actor} ha afegit {user} al grup {group}", + "An administrator added you to group {group}" : "Un administrador us ha afegit al grup {group}", + "An administrator added {user} to group {group}" : "Un administrador ha afegit {user} al grup {group}", + "{actor} removed you from group {group}" : "{actor} us ha tret del grup {group}", + "You removed {user} from group {group}" : "Heu tret {user} del grup {group}", + "{actor} removed {user} from group {group}" : "{actor} ha tret {user} del grup {group}", + "An administrator removed you from group {group}" : "Un administrador us ha tret del grup {group}", + "An administrator removed {user} from group {group}" : "Un administrador ha tret {user} del grup {group}", + "Your <strong>group memberships</strong> were modified" : "La vostra <strong>pertinença al grup</strong> ha estat modificada", + "{actor} changed your password" : "{actor} ha canviat la vostra contrasenya", + "You changed your password" : "Heu canviat la vostra contrasenya", + "Your password was reset by an administrator" : "Un administrador ha restablert la vostra contrasenya", + "{actor} changed your email address" : "{actor} ha canviat la vostra adreça de correu electrònic", + "You changed your email address" : "Heu canviat la vostra adreça de correu electrònic", + "Your email address was changed by an administrator" : "Un administrador ha canviat la vostra adreça de correu electrònic", + "You created app password \"{token}\"" : "Heu creat \"{token}\" a l’aplicació de contrasenyes", + "You deleted app password \"{token}\"" : "Heu suprimit \"{token}\" de l’aplicació de contrasenyes", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Heu reanomenat \"{token}\" a \"{newToken} a l'aplicació de contrasenyes", + "You granted filesystem access to app password \"{token}\"" : "Heu donat accés al sistema de fitxers a l'aplicació de contrasenyes \"{token}\"", + "You revoked filesystem access from app password \"{token}\"" : "Heu tret l'accés al sistema de fitxers a l'aplicació de contrasenyes \"{token}\"", + "Security" : "Seguretat", + "You successfully logged in using two-factor authentication (%1$s)" : "Us heu identificat correctament amb l'autenticació en dues passes (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Ha fallat l'inici de sessió mitjançant l'autenticació en dues passes (%1$s)", + "Remote wipe was started on %1$s" : "S'ha engegat la neteja remota a %1$s", + "Remote wipe has finished on %1$s" : "Ha finalitzat la neteja remota a %1$s", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "S'ha modificat la vostra <strong>contrasenya</strong> o <strong>correu electrònic</strong>", + "Couldn't remove app." : "No s'ha pogut suprimit l'aplicació.", + "Couldn't update app." : "No s'ha pogut actualitzar l'aplicació.", + "Wrong password" : "Contrasenya incorrecta", + "Saved" : "S'ha desat", + "No user supplied" : "No heu proporcionat cap usuari", + "Unable to change password" : "No s'ha pogut canviar la contrasenya", + "Authentication error" : "Error d'autenticació", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Si us plau, proporcioneu una contrasenya d'administrador de recuperació; en cas contrari, es perdran totes les dades.", + "Wrong admin recovery password. Please check the password and try again." : "La contrasenya d'administrador de recuperació és incorrecta. Si us plau, comproveu-la i torneu-ho a provar.", + "Backend doesn't support password change, but the user's encryption key was updated." : "El rere fons no admet canvis de contrasenya, però la clau de xifrat de l'usuari ha estat actualitzada satisfactòriament.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "S'està instal·lant i actualitzant aplicacions mitjançant la botiga d'aplicacions o la compartició de núvols federats", + "Federated Cloud Sharing" : "Compartició de Núvols Federats", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL està fent servir una versió %1$s antiquada (%2$s). Si us plau, actualitzeu el vostre sistema operatiu o característiques com %3$s no funcionaran amb fiabilitat.", + "Invalid SMTP password." : "Contrasenya SMTP no vàlida.", + "Email setting test" : "Prova de configuració del correu electrònic", + "Well done, %s!" : "Ben fet, %s!", + "If you received this email, the email configuration seems to be correct." : "Si heu rebut aquest correu electrònic, sembla que la configuració del correu electrònic és correcta.", + "Email could not be sent. Check your mail server log" : "No s'ha pogut enviar el correu electrònic. Comproveu el registre del servidor de correu", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Hi ha hagut un problema mentre s'enviava el correu electrònic. Reviseu els paràmetres. (Error: %s)", + "You need to set your user email before being able to send test emails." : "Heu d'establir un nom d'usuari abans de poder enviar correus de prova.", + "Invalid mail address" : "Adreça de correu electrònic no vàlida", + "Settings saved" : "S'han desat els paràmetres", + "Unable to change full name" : "No s'ha pogut canviar el nom complet", + "Unable to change email address" : "No s'ha pogut canviar l'adreça de correu electrònic", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Per tal de verificar el vostre compte de Twitter, publiqueu el següent tweet a Twitter (assegureu-vos de publicar-lo sense cap salt de línia):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Per tal de verificar el vostre lloc web, emmagatzemeu el següent contingut a l’arrel web a '.well-known/CloudIdVerificationCode.txt' (assegureu-vos que el text complet és en una línia):", + "%1$s changed your password on %2$s." : "%1$s ha canviat la vostra contrasenya a %2$s.", + "Your password on %s was changed." : "La vostra contrasenya a %s ha canviat.", + "Your password on %s was reset by an administrator." : "La vostra contrasenya a %s ha estat restablerta per un administrador.", + "Password for %1$s changed on %2$s" : "Contrasenya per %1$s canviada a %2$s", + "Password changed for %s" : "Contrasenya canviada per %s", + "If you did not request this, please contact an administrator." : "Si no ho heu sol·licitat, poseu-vos en contacte amb un administrador.", + "Your email address on %s was changed." : "La vostra adreça de correu electrònic a %s ha canviat.", + "Your email address on %s was changed by an administrator." : "La vostra adreça de correu electrònic a %s ha estat canviada per un administrador.", + "Email address for %1$s changed on %2$s" : "Adreça de correu electrònic per %1$s canviada a %2$s", + "Email address changed for %s" : "Adreça de correu electrònic canviada per %s", + "The new email address is %s" : "La nova adreça de correu electrònic és %s", + "Your %s account was created" : "S'ha creat el vostre compte %s", + "Welcome aboard" : "Benvingut a bord", + "Welcome aboard %s" : "Benvingut a bord %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Benvingut al compte %s, podeu afegir, protegir i compartir les vostres dades.", + "Your username is: %s" : "El vostre usuari és: %s", + "Set your password" : "Establiu la vostra contrasenya", + "Go to %s" : "Vés a %s", + "Install Client" : "S'està instal·lant el Client", + "Logged in user must be a subadmin" : "L’usuari que ha iniciat la sessió ha de ser un subadministrador", + "Create" : "Crea", + "Change" : "Canvia", + "Delete" : "Suprimeix", + "Share" : "Comparteix", + "Unlimited" : "Il·limitat", + "Verifying" : "S'està verificant", + "Verifying …" : "S'està verificant...", + "Verify" : "Verifica", + "Migration in progress. Please wait until the migration is finished" : "Migració en procés. Si us plau, espereu fins que finalitzi la migració", + "Migration started …" : "S'ha iniciat la migració …", + "Not saved" : "No s'ha desat", + "Sending…" : "S'està enviant…", + "Email sent" : "S'ha enviat el correu electrònic", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "S'ha produït un error. Si us plau, carregueu un certificat PEM codificat en ASCII.", + "Valid until {date}" : "Vàlid fins {date}", + "Local" : "Local", + "Private" : "Privat", + "Only visible to local users" : "Només visible per a usuaris locals", + "Only visible to you" : "Només visible per mi", + "Contacts" : "Contactes", + "Visible to local users and to trusted servers" : "Visible per als usuaris locals i servidors de confiança", + "Public" : "Públic", + "Will be synced to a global and public address book" : "Se sincronitzarà amb una llibreta d'adreces global i pública", + "Very weak password" : "Contrasenya molt feble", + "Weak password" : "Contrasenya feble", + "So-so password" : "Contrasenya passable", + "Good password" : "Contrasenya bona", + "Strong password" : "Contrasenya forta", + "An error occurred while changing your language. Please reload the page and try again." : "S'ha produït un error mentre es canviava el vostre idioma. Si us plau, recarregueu la pàgina i torneu-ho a provar.", + "An error occurred while changing your locale. Please reload the page and try again." : "S'ha produït un error mentre es canviava la vostra configuració regional. Si us plau, recarregueu la pàgina i torneu-ho a provar.", + "Select a profile picture" : "Seleccioneu una imatge de perfil", + "Week starts on {fdow}" : "La setmana comença en {fdow}", + "Groups" : "Grups", + "Group list is empty" : "La llista de grups és buida", + "Unable to retrieve the group list" : "No s’ha pogut recuperar la llista del grups", + "Afrikaans (Namibia)" : "Afrikaans (Namíbia)", + "Afrikaans (South Africa)" : "Afrikaans (Sud-àfrica)", + "Afrikaans" : "Afrikaans", + "Akan (Ghana)" : "Àkan (Ghana)", + "Akan" : "Àkan", + "Albanian (Albania)" : "Albanès (Albània)", + "Albanian" : "Albanès", + "Amharic (Ethiopia)" : "Amhàric (Etiòpia)", + "Amharic" : "Amhàric", + "Arabic (Algeria)" : "Àrab (Algèria)", + "Arabic (Bahrain)" : "Àrab (Bahrain)", + "Arabic (Egypt)" : "Àrab (Egipte)", + "Arabic (Iraq)" : "Àrab (Iraq)", + "Arabic (Jordan)" : "Àrab (Jordània)", + "Arabic (Kuwait)" : "Àrab (Kuwait)", + "Arabic (Lebanon)" : "Àrab (Líban)", + "Arabic (Libya)" : "Àrab (Líbia)", + "Arabic (Morocco)" : "Àrab (Marroc)", + "Arabic (Oman)" : "Àrab (Oman)", + "Arabic (Qatar)" : "Àrab (Qatar)", + "Arabic (Saudi Arabia)" : "Àrab (Aràbia Saudita)", + "Arabic (Sudan)" : "Àrab (Sudan)", + "Arabic (Syria)" : "Àrab (Síria)", + "Arabic (Tunisia)" : "Àrab (Tunísia)", + "Arabic (United Arab Emirates)" : "Àrab (Emirats Àrabs Units)", + "Arabic (Yemen)" : "Àrab (Iemen)", + "Arabic" : "Àrab", + "Armenian (Armenia)" : "Armeni (Armènia)", + "Armenian" : "Armeni", + "Assamese (India)" : "Assamès (Índia)", + "Assamese" : "Assamès", + "Asu (Tanzania)" : "Asu (Tanzània)", + "Asu" : "Asu", + "Azerbaijani (Cyrillic)" : "Àzeri (alfabet ciríl·lic)", + "Azerbaijani (Cyrillic, Azerbaijan)" : "Àzeri (alfabet ciríl·lic, Azerbaidjan)", + "Azerbaijani (Latin)" : "Àzeri (alfabet llatí)", + "Azerbaijani (Latin, Azerbaijan)" : "Àzeri (alfabet llatí, Azerbaidjan)", + "Azerbaijani" : "Àzeri", + "Bambara (Mali)" : "Bambara (Mali)", + "Bambara" : "Bambara", + "Basque (Spain)" : "Basc (Espanya)", + "Basque" : "Basc", + "Belarusian (Belarus)" : "Bielorús (Belarús)", + "Belarusian" : "Bielorús", + "Bemba (Zambia)" : "Bemba (Zàmbia)", + "Bemba" : "Bemba", + "Bena (Tanzania)" : "Bena (Tanzània)", + "Bena" : "Bena", + "Bengali (Bangladesh)" : "Bengalí (Bangladesh)", + "Bengali (India)" : "Bengalí (Índia)", + "Bengali" : "Bengalí", + "Bosnian (Bosnia and Herzegovina)" : "Bosnià (Bòsnia i Hercegovina)", + "Bosnian" : "Bosnià", + "Bulgarian (Bulgaria)" : "Búlgar (Bulgària)", + "Bulgarian" : "Bulgària", + "Burmese (Myanmar [Burma])" : "Birmà (Myanma [Birmània])", + "Burmese" : "Birmà", + "Catalan (Spain)" : "Català (Espanya)", + "Catalan" : "Català", + "Central Morocco Tamazight (Latin)" : "Amazic del Marroc Central (alfabet llatí)", + "Central Morocco Tamazight (Latin, Morocco)" : "Amazic del Marroc Central (alfabet llatí, Marroc)", + "Central Morocco Tamazight" : "Amazic del Marroc Central", + "Cherokee (United States)" : "Cherokee (Estats Units d'Amèrica)", + "Cherokee" : "Cherokee", + "Chiga (Uganda)" : "Chiga (Uganda)", + "Chiga" : "Chiga", + "Chinese (Simplified Han)" : "Xinès (simplificat)", + "Chinese (Simplified Han, China)" : "Xinès (simplificat, Xina)", + "Chinese (Simplified Han, Hong Kong SAR China)" : "Xinès (simplificat, Hong Kong RAE Xina)", + "Chinese (Simplified Han, Macau SAR China)" : "Xinès (simplificat, Macau RAE Xina)", + "Chinese (Simplified Han, Singapore)" : "Xinès (simplificat, Singapur)", + "Chinese (Traditional Han)" : "Xinès (tradicional)", + "Chinese (Traditional Han, Hong Kong SAR China)" : "Xinès (tradicional, Hong Kong RAE Xina)", + "Chinese (Traditional Han, Macau SAR China)" : "Xinès (tradicional, Macau RAE Xina)", + "Chinese (Traditional Han, Taiwan)" : "Xinès (tradicional, Taiwan)", + "Chinese" : "Xinès", + "Cornish (United Kingdom)" : "Còrnic (Regne Unit)", + "Cornish" : "Còrnic", + "Croatian (Croatia)" : "Croat (Croàcia)", + "Croatian" : "Croat", + "Czech (Czech Republic)" : "Txec (República Txeca)", + "Czech" : "Txec", + "Danish (Denmark)" : "Danès (Dinamarca)", + "Danish" : "Danès", + "Dutch (Belgium)" : "Neerlandès (Bèlgica)", + "Dutch (Netherlands)" : "Neerlandès (Països Baixos)", + "Dutch" : "Neerlandès", + "Embu (Kenya)" : "Embu (Kenya)", + "Embu" : "Embu", + "English (American Samoa)" : "Anglès (Samoa Nord-americana)", + "English (Australia)" : "Anglès (Austràlia)", + "English (Belgium)" : "Anglès (Bèlgica)", + "English (Belize)" : "Anglès (Belize)", + "English (Botswana)" : "Anglès (Botswana)", + "English (Canada)" : "Anglès (Canadà)", + "English (Guam)" : "Anglès (Guam)", + "English (Hong Kong SAR China)" : "Anglès (Hong Kong RAE Xina)", + "English (India)" : "Anglès (Índia)", + "English (Ireland)" : "Anglès (Irlanda)", + "English (Jamaica)" : "Anglès (Jamaica)", + "English (Malta)" : "Anglès (Malta)", + "English (Marshall Islands)" : "Anglès (Illes Marshall)", + "English (Mauritius)" : "Anglès (Maurici)", + "English (Namibia)" : "Anglès (Namíbia)", + "English (New Zealand)" : "Anglès (Nova Zelanda)", + "English (Northern Mariana Islands)" : "Anglès (Illes Mariannes Septentrionals)", + "English (Pakistan)" : "Anglès (Pakistan)", + "English (Philippines)" : "Anglès (Filipines)", + "English (Singapore)" : "Anglès (Singapur)", + "English (South Africa)" : "Anglès (Sud-àfrica)", + "English (Trinidad and Tobago)" : "Anglès (Trinitat i Tobago)", + "English (U.S. Minor Outlying Islands)" : "Anglès (Illes Perifèriques Menors dels EUA)", + "English (U.S. Virgin Islands)" : "Anglès (Illes Verges Nord-americanes)", + "English (United Kingdom)" : "Anglès (Regne Unit)", + "English (United States)" : "Anglès (Estats Units)", + "English (Zimbabwe)" : "Anglès (Zimbàbue)", + "English" : "Anglès", + "Esperanto" : "Esperanto", + "Estonian (Estonia)" : "Estonià (Estònia)", + "Estonian" : "Estonià", + "Ewe (Ghana)" : "Ewe (Ghana)", + "Ewe (Togo)" : "Ewe (Togo)", + "Ewe" : "Ewe", + "Faroese (Faroe Islands)" : "Feroès (Illes Fèroe)", + "Faroese" : "Feroès", + "Filipino (Philippines)" : "Filipí (Filipines)", + "Filipino" : "Filipí", + "Finnish (Finland)" : "Finès (Finlàndia)", + "Finnish" : "Finès", + "French (Belgium)" : "Francès (Bèlgica)", + "French (Benin)" : "Francès (Benín)", + "French (Burkina Faso)" : "Francès (Burkina Faso)", + "French (Burundi)" : "Francès (Burundi)", + "French (Cameroon)" : "Francès (Camerun)", + "French (Canada)" : "Francès (Canadà)", + "French (Central African Republic)" : "Francès (República Centreafricana)", + "French (Chad)" : "Francès (Txad)", + "French (Comoros)" : "Francès (Comores)", + "French (Congo - Brazzaville)" : "Francès (Congo - Brazzaville)", + "French (Congo - Kinshasa)" : "Francès (Congo - Kinshasa)", + "French (Côte d’Ivoire)" : "Francès (Costa d'Ivori)", + "French (Djibouti)" : "Francès (Djibouti)", + "French (Equatorial Guinea)" : "Francès (Guinea Equatorial)", + "French (France)" : "Francès (França)", + "French (Gabon)" : "Francès (Gabon)", + "French (Guadeloupe)" : "Francès (Guadalupe)", + "French (Guinea)" : "Francès (Guinea)", + "French (Luxembourg)" : "Francès (Luxemburg)", + "French (Madagascar)" : "Francès (Madagascar)", + "French (Mali)" : "Francès (Mali)", + "French (Martinique)" : "Francès (Martinica)", + "French (Monaco)" : "Francès (Mònaco)", + "French (Niger)" : "Francès (Níger)", + "French (Rwanda)" : "Francès (Ruanda)", + "French (Réunion)" : "Francès (Illa de la Reunió)", + "French (Saint Barthélemy)" : "Francès (Saint-Barthélemy)", + "French (Saint Martin)" : "Francès (Illa de Sant Martí)", + "French (Senegal)" : "Francès (Senegal)", + "French (Switzerland)" : "Francès (Suïssa)", + "French (Togo)" : "Francès (Togo)", + "French" : "Francès", + "Fulah (Senegal)" : "Ful (Senegal)", + "Fulah" : "Ful", + "Galician (Spain)" : "Gallec (Espanya)", + "Galician" : "Gallec", + "Ganda (Uganda)" : "Ganda (Uganda)", + "Ganda" : "Ganda", + "Georgian (Georgia)" : "Georgià (Geòrgia)", + "Georgian" : "Georgià", + "German (Austria)" : "Alemany (Àustria)", + "German (Belgium)" : "Alemany (Bèlgica)", + "German (Germany)" : "Alemany (Alemanya)", + "German (Liechtenstein)" : "Alemany (Liechtenstein)", + "German (Luxembourg)" : "Alemany (Luxemburg)", + "German (Switzerland)" : "Alemany (Suïssa)", + "German" : "Alemany", + "Greek (Cyprus)" : "Grec (Xipre)", + "Greek (Greece)" : "Grec (Grècia)", + "Greek" : "Grec", + "Gujarati (India)" : "Gujarati (Índia)", + "Gujarati" : "Gujarati", + "Gusii (Kenya)" : "Gusí (Kenya)", + "Gusii" : "Gusí", + "Hausa (Latin)" : "Haussa (alfabet llatí)", + "Hausa (Latin, Ghana)" : "Haussa (alfabet llatí, Ghana)", + "Hausa (Latin, Niger)" : "Haussa (alfabet llatí, Níger)", + "Hausa (Latin, Nigeria)" : "Haussa (alfabet llatí, Nigèria)", + "Hausa" : "Haussa", + "Hawaiian (United States)" : "Hawaià (Estats Units)", + "Hawaiian" : "Hawaià", + "Hebrew (Israel)" : "Hebreu (Israel)", + "Hebrew" : "Hebreu", + "Hindi (India)" : "Hindi (Índia)", + "Hindi" : "Hindi", + "Hungarian (Hungary)" : "Hongarès (Hongria)", + "Hungarian" : "Hongarès", + "Icelandic (Iceland)" : "Islandès (Islàndia)", + "Icelandic" : "Islandès", + "Igbo (Nigeria)" : "Igbo (Nigèria)", + "Igbo" : "Igbo", + "Indonesian (Indonesia)" : "Indonesi (Indonèsia)", + "Indonesian" : "Indonesi", + "Irish (Ireland)" : "Irlandès (Irlanda)", + "Irish" : "Irlandès", + "Italian (Italy)" : "Italià (Itàlia)", + "Italian (Switzerland)" : "Italià (Suïssa)", + "Italian" : "Italià", + "Japanese (Japan)" : "Japonès (Japó)", + "Japanese" : "Japonès", + "Kabuverdianu (Cape Verde)" : "Crioll capverdià (Cap Verd)", + "Kabuverdianu" : "Crioll capverdià", + "Kabyle (Algeria)" : "Cabilenc (Algèria)", + "Kabyle" : "Cabilenc", + "Kalaallisut (Greenland)" : "Groenlandès (Groenlàndia)", + "Kalaallisut" : "Groenlandès", + "Kalenjin (Kenya)" : "Kalenjin (Kenya)", + "Kalenjin" : "Kalenjin", + "Kamba (Kenya)" : "Kamba (Kenya)", + "Kamba" : "Kamba", + "Kannada (India)" : "Kanarès (Índia)", + "Kannada" : "Kanarès", + "Kazakh (Cyrillic)" : "Kazakh (alfabet ciríl·lic)", + "Kazakh (Cyrillic, Kazakhstan)" : "Kazakh (alfabet ciríl·lic, Kazakhstan)", + "Kazakh" : "Kazakh", + "Khmer (Cambodia)" : "Khmer (Cambodja)", + "Khmer" : "Khmer", + "Kikuyu (Kenya)" : "Kikuiu (Kenya)", + "Kikuyu" : "Kikuiu", + "Kinyarwanda (Rwanda)" : "Ruandès (Ruanda)", + "Kinyarwanda" : "Ruandès", + "Konkani (India)" : "Konkani (Índia)", + "Konkani" : "Konkani", + "Korean (South Korea)" : "Coreà (Corea del Sud)", + "Korean" : "Coreà", + "Koyra Chiini (Mali)" : "Songhai occidental (Mali)", + "Koyra Chiini" : "Songhai occidental", + "Koyraboro Senni (Mali)" : "Songhai oriental (Mali)", + "Koyraboro Senni" : "Songhai oriental", + "Langi (Tanzania)" : "Langi (Tanzània)", + "Langi" : "Langi", + "Latvian (Latvia)" : "Letó (Letònia)", + "Latvian" : "Letó", + "Lithuanian (Lithuania)" : "Lituà (Lituània)", + "Lithuanian" : "Lituà", + "Luo (Kenya)" : "Luo (Kenya)", + "Luo" : "Luo", + "Luyia (Kenya)" : "Luyia (Kenya)", + "Luyia" : "Luyia", + "Macedonian (Macedonia)" : "Macedoni (Macedònia del Nord)", + "Macedonian" : "Macedoni", + "Machame (Tanzania)" : "Machame (Tanzània)", + "Machame" : "Machame", + "Makonde (Tanzania)" : "Makonde (Tanzània)", + "Makonde" : "Makonde", + "Malagasy (Madagascar)" : "Malgaix (Madagascar)", + "Malagasy" : "Malgaix", + "Malay (Brunei)" : "Malai (Brunei)", + "Malay (Malaysia)" : "Malai (Malàisia)", + "Malay" : "Malai", + "Malayalam (India)" : "Malaiàlam (Índia)", + "Malayalam" : "Malaiàlam", + "Maltese (Malta)" : "Maltès (Malta)", + "Maltese" : "Maltès", + "Manx (United Kingdom)" : "Manx (Regne Unit)", + "Manx" : "Manx", + "Marathi (India)" : "Marathi (Índia)", + "Marathi" : "Marathi", + "Masai (Kenya)" : "Massai (Kenya)", + "Masai (Tanzania)" : "Massai (Kenya)", + "Masai" : "Massai", + "Meru (Kenya)" : "Meru (Kenya)", + "Meru" : "Meru", + "Morisyen (Mauritius)" : "Crioll mauricià (Maurici)", + "Morisyen" : "Crioll mauricià", + "Nama (Namibia)" : "Nama (Namíbia)", + "Nama" : "Nama", + "Nepali (India)" : "Nepalès (Índia)", + "Nepali (Nepal)" : "Nepalès (Nepal)", + "Nepali" : "Nepalès", + "North Ndebele (Zimbabwe)" : "Ndebele del Nord (Zimbàbue)", + "North Ndebele" : "Ndebele del Nord", + "Norwegian Bokmål (Norway)" : "Noruec bokmål (Noruega)", + "Norwegian Bokmål" : "Noruec bokmål", + "Norwegian Nynorsk (Norway)" : "Noruec nynorsk (Noruega)", + "Norwegian Nynorsk" : "Noruec nynorsk", + "Nyankole (Uganda)" : "Nyankole (Uganda)", + "Nyankole" : "Nyankole", + "Oriya (India)" : "Oriya (Índia)", + "Oriya" : "Oriya", + "Oromo (Ethiopia)" : "Oromo (Etiòpia)", + "Oromo (Kenya)" : "Oromo (Kenya)", + "Oromo" : "Oromo", + "Pashto (Afghanistan)" : "Paixtu (Afganistan)", + "Pashto" : "Paixtu", + "Persian (Afghanistan)" : "Persa (Afganistan)", + "Persian (Iran)" : "Persa (Iran)", + "Persian" : "Persa", + "Polish (Poland)" : "Polonès (Polònia)", + "Polish" : "Polonès", + "Portuguese (Brazil)" : "Portuguès (Brasil)", + "Portuguese (Guinea-Bissau)" : "Portuguès (Guinea Bissau)", + "Portuguese (Mozambique)" : "Portuguès (Moçambic)", + "Portuguese (Portugal)" : "Portuguès (Portugal)", + "Portuguese" : "Portuguès", + "Punjabi (Arabic)" : "Panjabi (Àrab)", + "Punjabi (Arabic, Pakistan)" : "Panjabi (Àrab, Pakistan)", + "Punjabi (Gurmukhi)" : "Panjabi (Gurmukhi)", + "Punjabi (Gurmukhi, India)" : "Panjabi (Gurmukhi, Índia)", + "Punjabi" : "Panjabi", + "Romanian (Moldova)" : "Romanès (Moldàvia)", + "Romanian (Romania)" : "Romanès (Romania)", + "Romanian" : "Romanès", + "Romansh (Switzerland)" : "Romanx (Suïssa)", + "Romansh" : "Romanx", + "Rombo (Tanzania)" : "Rombo (Tanzània)", + "Rombo" : "Rombo", + "Russian (Moldova)" : "Rus (Moldàvia)", + "Russian (Russia)" : "Rus (Rússia)", + "Russian (Ukraine)" : "Rus (Ucraïna)", + "Russian" : "Rus", + "Rwa (Tanzania)" : "Rwo (Tanzània)", + "Rwa" : "Rwo", + "Samburu (Kenya)" : "Samburu (Kenya)", + "Samburu" : "Samburu", + "Sango (Central African Republic)" : "Sango (República Centreafricana)", + "Sango" : "Sango", + "Sena (Mozambique)" : "Sena (Moçambic)", + "Sena" : "Sena", + "Serbian (Cyrillic)" : "Serbi (alfabet ciríl·lic)", + "Serbian (Cyrillic, Bosnia and Herzegovina)" : "Serbi (alfabet ciríl·lic, Bòsnia i Hercegovina)", + "Serbian (Cyrillic, Montenegro)" : "Serbi (alfabet ciríl·lic, Montenegro)", + "Serbian (Cyrillic, Serbia)" : "Serbi (alfabet ciríl·lic, Sèrbia)", + "Serbian (Latin)" : "Serbi (alfabet llatí)", + "Serbian (Latin, Bosnia and Herzegovina)" : "Serbi (alfabet llatí, Bòsnia i Hercegovina)", + "Serbian (Latin, Montenegro)" : "Serbi (alfabet llatí, Montenegro)", + "Serbian (Latin, Serbia)" : "Serbi (alfabet llatí, Sèrbia)", + "Serbian" : "Serbi", + "Shona (Zimbabwe)" : "Xona (Zimbàbue)", + "Shona" : "Xona", + "Sichuan Yi (China)" : "Sichuan Yi (Xina)", + "Sichuan Yi" : "Sichuan Yi", + "Sinhala (Sri Lanka)" : "Singalès (Sri Lanka)", + "Sinhala" : "Singalès", + "Slovak (Slovakia)" : "Eslovac (Eslovàquia)", + "Slovak" : "Eslovac", + "Slovenian (Slovenia)" : "Eslovè (Eslovènia)", + "Slovenian" : "Eslovè", + "Soga (Uganda)" : "Soga (Uganda)", + "Soga" : "Soga", + "Somali (Djibouti)" : "Somali (Djibouti)", + "Somali (Ethiopia)" : "Somali (Etiòpia)", + "Somali (Kenya)" : "Somali (Kenya)", + "Somali (Somalia)" : "Somali (Somàlia)", + "Somali" : "Somali", + "Spanish (Argentina)" : "Castellà (Argentina)", + "Spanish (Bolivia)" : "Castellà (Bolívia)", + "Spanish (Chile)" : "Castellà (Xile)", + "Spanish (Colombia)" : "Castellà (Colòmbia)", + "Spanish (Costa Rica)" : "Castellà (Costa Rica)", + "Spanish (Dominican Republic)" : "Castellà (República Dominicana)", + "Spanish (Ecuador)" : "Castellà (Equador)", + "Spanish (El Salvador)" : "Castellà (El Salvador)", + "Spanish (Equatorial Guinea)" : "Castellà (Guinea Equatorial)", + "Spanish (Guatemala)" : "Castellà (Guatemala)", + "Spanish (Honduras)" : "Castellà (Hondures)", + "Spanish (Latin America)" : "Castellà (Amèrica Llatina)", + "Spanish (Mexico)" : "Castellà (Mèxic)", + "Spanish (Nicaragua)" : "Castellà (Nicaragua)", + "Spanish (Panama)" : "Castellà (Panamà)", + "Spanish (Paraguay)" : "Castellà (Paraguai)", + "Spanish (Peru)" : "Castellà (Perú)", + "Spanish (Puerto Rico)" : "Castellà (Puerto Rico)", + "Spanish (Spain)" : "Castellà (Espanya)", + "Spanish (United States)" : "Castellà (Estats Units)", + "Spanish (Uruguay)" : "Castellà (Uruguai)", + "Spanish (Venezuela)" : "Castellà (Veneçuela)", + "Spanish" : "Castellà", + "Swahili (Kenya)" : "Suahili (Kenya)", + "Swahili (Tanzania)" : "Suahili (Tanzània)", + "Swahili" : "Suahili", + "Swedish (Finland)" : "Suec (Finlàndia)", + "Swedish (Sweden)" : "Suec (Suècia)", + "Swedish" : "Suec", + "Swiss German (Switzerland)" : "Alemany suís (Suïssa)", + "Swiss German" : "Alemany suís", + "Tachelhit (Latin)" : "Taixelhit (alfabet llatí)", + "Tachelhit (Latin, Morocco)" : "Taixelhit (alfabet llatí, Marroc)", + "Tachelhit (Tifinagh)" : "Taixelhit (Tifinag)", + "Tachelhit (Tifinagh, Morocco)" : "Taixelhit (Tifinag, Marroc)", + "Tachelhit" : "Taixelhit", + "Taita (Kenya)" : "Taita (Kenya)", + "Taita" : "Taita", + "Tamil (India)" : "Tàmil (Índia)", + "Tamil (Sri Lanka)" : "Tàmil (Sri Lanka)", + "Tamil" : "Tàmil", + "Telugu (India)" : "Telugu (Índia)", + "Telugu" : "Telugu", + "Teso (Kenya)" : "Teso (Kenya)", + "Teso (Uganda)" : "Teso (Uganda)", + "Teso" : "Teso", + "Thai (Thailand)" : "Tailandès (Tailàndia)", + "Thai" : "Tailandès", + "Tibetan (China)" : "Tibetà (Xina)", + "Tibetan (India)" : "Tibetà (Índia)", + "Tibetan" : "Tibetà", + "Tigrinya (Eritrea)" : "Tigrinya (Eritrea)", + "Tigrinya (Ethiopia)" : "Tigrinya (Etiòpia)", + "Tigrinya" : "Tigrinya", + "Tonga (Tonga)" : "Tongalès (Tonga)", + "Tonga" : "Tonga", + "Turkish (Turkey)" : "Turc (Turquia)", + "Turkish" : "Turc", + "Ukrainian (Ukraine)" : "Ucraïnes (Ucraïna)", + "Ukrainian" : "Ucraïnès", + "Urdu (India)" : "Urdú (Índia)", + "Urdu (Pakistan)" : "Urdú (Pakistan)", + "Urdu" : "Urdú", + "Uzbek (Arabic)" : "Uzbek (Àrab)", + "Uzbek (Arabic, Afghanistan)" : "Uzbek (Àrab, Afganistan)", + "Uzbek (Cyrillic)" : "Uzbek (alfabet ciríl·lic)", + "Uzbek (Cyrillic, Uzbekistan)" : "Uzbek (alfabet ciríl·lic, Uzbekistan)", + "Uzbek (Latin)" : "Uzbek (alfabet llatí, Uzbekistan)", + "Uzbek (Latin, Uzbekistan)" : "Uzbek (alfabet llatí, Uzbekistan)", + "Uzbek" : "Uzbek", + "Vietnamese (Vietnam)" : "Vietnamita (Vietnam)", + "Vietnamese" : "Vietnamita", + "Vunjo (Tanzania)" : "Vunjo (Tanzània)", + "Vunjo" : "Vunjo", + "Welsh (United Kingdom)" : "Gal·lès (Regne Unit)", + "Welsh" : "Gal·lès", + "Yoruba (Nigeria)" : "Ioruba (Nigèria)", + "Yoruba" : "Ioruba", + "Zulu (South Africa)" : "Zulú (Sud-àfrica)", + "Zulu" : "Zulú", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "L’autenticació de dos factors pot ser forçada per a tots\tels usuaris i grups específics. Si no tenen un proveïdor de dos factors configurat, no podran accedir en el sistema.", + "Enforce two-factor authentication" : "Força l'autenticació de dos factors", + "Limit to groups" : "Limita per grups", + "Enforcement of two-factor authentication can be set for certain groups only." : "L’obligació d'autenticació amb dos factors es pot definir només per a certs grups.", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "L’autenticació de dos factors està obligada per a tots\tels membres dels següents grups.", + "Enforced groups" : "Grups obligats", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "Autenticació de dos factors no està obligada per\tals membres dels següents grups.", + "Excluded groups" : "Grups exclosos", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "Quan es seleccionen/exclouen grups, es fa servir la lògica següent per determinar si un usuari té 2FA (Autentificació de 2 Factors) obligada: si no hi ha grups seleccionats, 2FA està activada per a tothom, a excepció de membres dels grups exclosos. Si els grups estan seleccionats, 2FA està activada per a tots els membres d'aquests. Si un usuari està tant en un grup seleccionat com exclòs, els seleccionats tenen prioritat i 2FA s'imposa.", + "Save changes" : "Desa els canvis", + "Marked for remote wipe" : "Marcat per netejar remotament", + "Device settings" : "Paràmetres del dispositiu", + "Allow filesystem access" : "Permet l'accés al sistema de fitxers", + "Rename" : "Canvia el nom", + "Revoke" : "Revoca", + "Wipe device" : "Neteja dispositiu", + "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Revocant aquest token impedirà la neteja del vostre dispositiu is encara no ha començat.", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome per a Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Aplicació de Nextcloud per a iOS", + "Nextcloud Android app" : "Aplicació de Nextcloud per a Android", + "Nextcloud Talk for iOS" : "Nextcloud Talk per a iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk per a Android", + "Sync client - {os}" : "Client de sincronització - {os}", + "This session" : "Aquesta sessió", + "Device" : "Dispositiu", + "Last activity" : "Darrera activitat", + "Devices & sessions" : "Dispositius i sessions", + "Web, desktop and mobile clients currently logged in to your account." : "Clients Web, d'escriptori i mòbils connectats actualment al vostre compte.", + "Do you really want to wipe your data from this device?" : "Esteu segurs de que voleu netejar les vostres dades d'aquest dispositiu?", + "Confirm wipe" : "Confirma neteja", + "Error while creating device token" : "S'ha produït un error mentre es creava el testimoni del dispositiu", + "Error while updating device token scope" : "S'ha produït un error mentre s'actualitzava l’abast de testimonis del dispositiu", + "Error while updating device token name" : "S'ha produït un error mentre s'actualitzava el nom del testimoni del dispositiu", + "Error while deleting the token" : "S'ha produït un error mentre se suprimia el testimoni", + "Error while wiping the device with the token" : "S'ha produït un error mentre es netejava el dispositiu amb el token", + "App name" : "Nom de l'aplicació", + "Create new app password" : "Crea una nova contrasenya d'aplicació", + "Use the credentials below to configure your app or device." : "Utilitzeu les credencials de sota per configurar la vostra aplicació o dispositiu.", + "For security reasons this password will only be shown once." : "Per raons de seguretat aquesta contrasenya només es mostrarà una vegada.", + "Username" : "Nom d'usuari", + "Password" : "Contrasenya", + "Done" : "Fet", + "Show QR code for mobile apps" : "Mostra el codi QR per aplicacions mòbils", + "Copied!" : "S'ha copiat!", + "Copy" : "Copia", + "Could not copy app password. Please copy it manually." : "No s’ha pogut copiar la contrasenya de l’aplicació. Copieu-la manualment.", + "This app is supported via your current Nextcloud subscription." : "Aquesta aplicació és compatible amb la vostra actual subscripció a Nextcloud.", + "Supported" : "Compatible", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Les aplicacions oficials són desenvolupades per i dins de la comunitat. Ofereixen funcionalitats centrals i estan preparades per ser emprades en producció.", + "Official" : "Oficial", + "by" : "per", + "Update to {version}" : "Actualitza a {version}", + "Remove" : "Suprimeix", + "Disable" : "Desactiva", + "All" : "Tots", + "Limit app usage to groups" : "Limita l’ús de l’aplicació als grups", + "No results" : "No hi ha resultats", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Aquesta aplicació no té cap versió mínima de Nextcloud assignada. Això serà un error en el futur.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Aquesta aplicació no té cap versió màxima de Nextcloud assignada. Això serà un error en el futur.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Aquesta aplicació no es pot instal·lar perquè les següents dependències no es compleixen:", + "View in store" : "Mostra-ho al magatzem", + "Visit website" : "Visita el lloc web", + "Report a bug" : "Informa d'un error", + "User documentation" : "Documentació per a usuaris", + "Admin documentation" : "Documentació per a administradors", + "Developer documentation" : "Documentació per a desenvolupadors", + "Update to {update}" : "Actualitza a {update}", + "Results from other categories" : "Resultats d'altres categories", + "No apps found for your version" : "No s'han trobat aplicacions per la vostra versió", + "Disable all" : "Desactiva-ho tot", + "Enable all" : "Activa-ho tot", + "Download and enable" : "Descarrega i activa", + "Enable" : "Activa", + "Enable untested app" : "Activa aplicacions no provades", + "The app will be downloaded from the app store" : "L'aplicació es descarregarà des de la botiga d'aplicacions", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Aquesta aplicació no està marcada com a compatible amb la vostra versió de Nextcloud. Si continueu, encara podreu instal·lar l’aplicació. Tingueu en compte que pot ser que l’aplicació no funcioni correctament.", + "You do not have permissions to see the details of this user" : "No teniu els permisos necessaris per veure els detalls d'aquest usuari", + "The backend does not support changing the display name" : "El rerefons no està preparat per canviar el nom visualitzat", + "New password" : "Contrasenya nova", + "Add user in group" : "Afegeix l'usuari al grup", + "Set user as admin for" : "Posa l'usuari com a administrador per", + "Select user quota" : "Selecciona la quota d'usuari", + "No language set" : "No s'ha establert cap idioma", + "Never" : "Mai", + "Delete user" : "Suprimeix usuari", + "Wipe all devices" : "Neteja tots els dispositius", + "Disable user" : "Desactiva l'usuari", + "Enable user" : "Activa l'usuari", + "Resend welcome email" : "Tornar a enviar el correu electrònic de benvinguda", + "{size} used" : "{size} en ús", + "Welcome mail sent!" : "S'ha enviat el correu electrònic de benvinguda!", + "Display name" : "Mostra nom", + "Email" : "Correu electrònic", + "Group admin for" : "Administrador de grup per", + "Quota" : "Quota", + "Language" : "Idioma", + "Storage location" : "Ubicació de l'emmagatzematge", + "User backend" : "Rerefons d'usuari", + "Last login" : "Darrer accés", + "Will be autogenerated" : "Serà auto-generat", + "Default language" : "Idioma per defecte", + "Add a new user" : "Afegeix un nou usuari", + "No users in here" : "No hi ha usuaris aquí dins", + "Default quota" : "Quota per defecte", + "Password change is disabled because the master key is disabled" : "El canvi de contrasenya està desactivat perquè la clau mestra està desactivada", + "Common languages" : "Idiomes freqüents", + "All languages" : "Tots els idiomes", + "Your apps" : "Les vostres aplicacions", + "Active apps" : "Aplicacions actives", + "Disabled apps" : "Aplicacions desactivades", + "Updates" : "Actualitzacions", + "App bundles" : "Paquets d'aplicacions", + "{license}-licensed" : "sota la llicència - {license}", + "New user" : "Nou usuari", + "Default quota:" : "Quota per defecte:", + "Select default quota" : "Seleccioneu la quota per defecte", + "Show Languages" : "Mostra els idiomes", + "Show last login" : "Mostra el darrer inici de sessió", + "Show user backend" : "Mostra el rerefons d'usuari", + "Show storage path" : "Mostra la ubicació del magatzem", + "You are about to remove the group {group}. The users will NOT be deleted." : "Esteu a punt de suprimir el grup {group}. Els usuaris NO seran suprimits.", + "Please confirm the group removal " : "Confirmeu la supressió del grup ", + "Remove group" : "Suprimeix grup", + "Admins" : "Administradors", + "Disabled users" : "Usuaris desactivats", + "Everyone" : "Tothom", + "Add group" : "Afegeix un grup", + "An error occured during the request. Unable to proceed." : "S'ha produït un error durant la sol·licitud. No es pot continuar.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "L'aplicació s'ha activat però ha de ser actualitzada. Sereu redirigits a la pàgina d’actualització d'aquí 5 segons.", + "App update" : "Actualització de l'aplicació", + "Error: This app can not be enabled because it makes the server unstable" : "Error: aquesta aplicació no es pot activar perquè fa que el servidor sigui inestable", + "SSL Root Certificates" : "Certificats Arrel SSL", + "Common Name" : "Nom comú", + "Valid until" : "Valid fins", + "Issued By" : "Emès Per", + "Valid until %s" : "Vàlid fins %s", + "Import root certificate" : "Importa certificat arrel", + "Administrator documentation" : "Documentació d'administrador", + "Documentation" : "Documentació", + "Forum" : "Fòrum", + "None" : "Cap", + "Login" : "Inici de sessió", + "Plain" : "Pla", + "NT LAN Manager" : "Gestor NT LAN", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Servidor de correu electrònic", + "Open documentation" : "Obre la documentació", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "És important configurar aquest servidor per poder enviar correus electrònics, com ara per poder restablir la contrasenya i notificacions.", + "Send mode" : "Mode d'enviament", + "Encryption" : "Xifratge", + "Sendmail mode" : "Mode sendmail", + "From address" : "Des de l'adreça", + "mail" : "correu electrònic", + "Authentication method" : "Mètode d'autenticació", + "Authentication required" : "Es requereix autenticació", + "Server address" : "Adreça del servidor", + "Port" : "Port", + "Credentials" : "Credencials", + "SMTP Username" : "Nom d'usuari SMTP", + "SMTP Password" : "Contrasenya SMTP", + "Save" : "Desa", + "Test email settings" : "Prova els paràmetres de correu electrònic", + "Send email" : "Envia el correu electrònic", + "Security & setup warnings" : "Avisos de seguretat i configuració", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "És important per a la seguretat i el rendiment de la vostra instància que tot estigui configurat correctament. Per ajudar-vos, fem algunes comprovacions automàtiques. Si us plau, consulteu la documentació enllaçada per obtenir més informació.", + "All checks passed." : "Totes les comprovacions correctes.", + "There are some errors regarding your setup." : "Hi ha alguns errors pel que fa a la vostra configuració.", + "There are some warnings regarding your setup." : "Hi ha algunes advertències pel que fa a la vostra configuració.", + "Checking for system and security issues." : "S'estan comprovant incidències del sistema i de seguretat.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Si us plau reviseu les <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">guies d’instal·lació ↗</a>, i comproveu si hi ha errors o advertències en el <a href=\"%2$s\">registre</a>.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Reviseu la seguretat del vostre Nextcloud mitjançant la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">nostra verificació de seguretat ↗</a>.", + "Version" : "Versió", + "Two-Factor Authentication" : "Autenticació amb dos factors", + "Server-side encryption" : "Xifrat del costat del servidor", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "El xifrat per part del servidor permet xifrar els fitxers que s'hi carreguen. Això afecta al rendiment, així que activeu-ho només si és necessari.", + "Enable server-side encryption" : "Activa el xifrat al servidor", + "Please read carefully before activating server-side encryption: " : "Si us plau, llegiu atentament abans d'activar l'encriptació en el servidor: ", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Un cop s’activi el xifratge, tots els fitxers carregats al servidor des d'aquest punt cap endavant quedaran xifrats al servidor. Només serà possible desactivar el xifratge posteriorment si el mòdul criptogràfic actiu té aquesta funció, i es compleixen totes les pre-condicions (p. ex. definir una clau de recuperació).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "El xifratge per si mateix no garanteix la seguretat del sistema. Consulteu la documentació per a més informació sobre com funciona l'aplicació de xifratge i els casos d'ús suportats.", + "Be aware that encryption always increases the file size." : "Tingueu en compte que el xifratge sempre augmenta la mida del fitxer.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Sempre és bó crear còpies de seguretat de les vostres dades amb regularitat, en el cas de xifratge assegureu-vos de desar les claus de xifratge juntament amb les vostres dades a la còpia de seguretat.", + "This is the final warning: Do you really want to enable encryption?" : "Avís final: Realment voleu activar el xifratge?", + "Enable encryption" : "Activa el xifratge", + "No encryption module loaded, please enable an encryption module in the app menu." : "No s'ha carregat cap mòdul de xifratge, si us plau activeu un mòdul de xifratge al menú d'aplicacions.", + "Select default encryption module:" : "Seleccioneu el mòdul criptogràfic per defecte:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Heu de migrar les claus de xifratge del xifrat antic (ownCloud <= 8.0) al nou. Si us plau activeu el “Mòdul criptogràfic per defecte\" i executeu ‘occ encryption:migrate’", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Heu de migrar les claus de xifratge del xifrat antic (ownCloud <= 8.0) al nou.", + "Start migration" : "Inicia la migració", + "Background jobs" : "Tasques en segon pla", + "Last job ran %s." : "La darrera tasca es va executar %s.", + "Last job execution ran %s. Something seems wrong." : "La darrera tasca es va executar %s. Alguna cosa sembla malament.", + "Background job didn’t run yet!" : "La tasca en segon pla encara no s'ha executat!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Per a un rendiment òptim és important configurar correctament les tasques de fons. Per a instàncies més grans ‘Cron’ és el paràmetre recomanat. Si us plau, per a més informació vegeu la documentació.", + "Pick background job setting" : "Trieu la configuració de la tasca en segon pla", + "Execute one task with each page loaded" : "Executa una tasca per cada pàgina carregada", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php està registrat en un servei webcron per cridar cron.php cada 15 minuts per HTTP.", + "Use system cron service to call the cron.php file every 5 minutes." : "Utilitza el servei cron del sistema per cridar el fitxer cron.php cada 5 minuts.", + "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php ha de ser executat per l'usuari del sistema \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Per executar això es necessita l'extensió POSIX de PHP. Per més detalls, vegeu {linkstart}PHP documentació{linkend}.", + "Sharing" : "S'està compartint", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Com a administrador, podeu afinar els ajustaments per compartir fitxers. Si us plau, per més informació llegiu la documentació.", + "Allow apps to use the Share API" : "Permet que les aplicacions utilitzin l'API de compartir", + "Allow users to share via link" : "Permet als usuaris compartir mitjançant enllaços", + "Allow public uploads" : "Permet càrregues públiques", + "Always ask for a password" : "Demana sempre una contrasenya", + "Enforce password protection" : "Força la protecció amb contrasenya", + "Set default expiration date" : "Estableix la data de caducitat per defecte", + "Expire after " : "Caduca després de ", + "days" : "dies", + "Enforce expiration date" : "Força la data de caducitat", + "Allow resharing" : "Permet compartir de nou", + "Allow sharing with groups" : "Permetre compartir amb grups", + "Restrict users to only share with users in their groups" : "Restringeix als usuaris a compartir només amb usuaris del seu grup", + "Exclude groups from sharing" : "Exclou grups de compartició", + "These groups will still be able to receive shares, but not to initiate them." : "Aquests grups encara podran rebre compartits, però no en podran iniciar.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Permet la compleció automàtica del nom d’usuari en el diàleg de compartició. Si es desactiva, cal que s'introdueixi el nom d’usuari complet o l’adreça de correu electrònic.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Mostra el text de renúncia a la pàgina de càrrega d’enllaços públics. (Només es mostra quan la llista de fitxers està oculta).", + "This text will be shown on the public link upload page when the file list is hidden." : "Aquest text es mostrarà a la pàgina de càrrega d’enllaç públic quan la llista de fitxers estigui amagada.", + "Default share permissions" : "Permisos de compatició per defecte", + "Personal" : "Personal", + "Administration" : "Administració", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Desenvolupat per la {communityopen}comunitat Nextcloud{linkclose}, el {githubopen}codi font{linkclose} es troba sota la llicència {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Poseu un m’agrada a la nostra pàgina de Facebook", + "Follow us on Twitter" : "Seguiu-nos a Twitter", + "Follow us on Mastodon" : "Seguiu-nos a Mastodon", + "Check out our blog" : "Consulteu el nostre bloc", + "Subscribe to our newsletter" : "Subscriviu-vos al nostre butlletí", + "Profile picture" : "Foto de perfil", + "Upload new" : "Carrega'n una de nova", + "Select from Files" : "Selecciona dels Fitxers", + "Remove image" : "Suprimeix imatge", + "png or jpg, max. 20 MB" : "png o jpg, màx. 20 MB", + "Picture provided by original account" : "Imatge proporcionada pel compte original", + "Cancel" : "Cancel·la", + "Choose as profile picture" : "Tria una imatge de perfil", + "Details" : "Detalls", + "You are a member of the following groups:" : "Sou membre dels grups següents:", + "You are using <strong>%s</strong>" : "Esteu utilitzant <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Esteu utilitzant <strong>%1$s</strong> de <strong>%2$s</strong> (<strong>%3$s %%</strong>)", + "Full name" : "Nom complet", + "No display name set" : "No s'ha establert cap nom para mostrar", + "Your email address" : "El vostre correu electrònic", + "No email address set" : "No s'ha establert cap adreça de correu electrònic", + "For password reset and notifications" : "Per restablir la contrasenya i notificacions", + "Phone number" : "Número de telèfon", + "Your phone number" : "El vostre número de telèfon", + "Address" : "Adreça", + "Your postal address" : "La vostra adreça postal", + "Website" : "Lloc web", + "It can take up to 24 hours before the account is displayed as verified." : "Pot trigar fins a 24 hores abans que el compte es mostri com a verificat.", + "Link https://…" : "Enllaç https://…", + "Twitter" : "Twitter", + "Twitter handle @…" : "Twitter @…", + "Help translate" : "Ajudeu-nos amb la traducció", + "Locale" : "Configuració regional", + "Current password" : "Contrasenya actual", + "Change password" : "Canvia la contrasenya", + "Use a second factor besides your password to increase security for your account." : "Feu servir un segon factor a més de la vostra contrasenya per augmentar la seguretat del vostre compte.", + "Disconnect" : "Desconnecta", + "Not supported!" : "No suportat!", + "Press ⌘-C to copy." : "Premeu ⌘-C per copiar.", + "Press Ctrl-C to copy." : "Premeu Ctrl-C per copiar.", + "Error while loading browser sessions and device tokens" : "S'ha produït un error mentre es carregaven les sessions del navegador i els testimonis del dispositiu", + "Store credentials" : "Emmagatzema les credencials", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php està registrat en un servei webcron per cridar cron.php cada 15 minuts mitjançant HTTP.", + "Use system cron service to call the cron.php file every 15 minutes." : "Utilitza el servei del sistema cron per cridar al fitxer cron.php cada 15 minuts.", + "Follow us on Google+" : "Seguiu-nos a Google+" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} \ No newline at end of file diff --git a/apps/settings/l10n/cs.js b/apps/settings/l10n/cs.js new file mode 100644 index 00000000000..c8745c7e016 --- /dev/null +++ b/apps/settings/l10n/cs.js @@ -0,0 +1,522 @@ +OC.L10N.register( + "settings", + { + "{actor} added you to group {group}" : "{actor} vás přidal(a) do skupiny {group}", + "You added {user} to group {group}" : "Přidali jste {user} do skupiny {group}", + "{actor} added {user} to group {group}" : "{actor} přidal(a) {user} do skupiny {group}", + "An administrator added you to group {group}" : "Správce vás přidal do skupiny {group}", + "An administrator added {user} to group {group}" : "Správce přidal {user} do skupiny {group}", + "{actor} removed you from group {group}" : "{actor} vás odebral(a) ze skupiny {group}", + "You removed {user} from group {group}" : "Odebrali jste {user} ze skupiny {group}", + "{actor} removed {user} from group {group}" : "{actor} odebral(a) {user} ze skupiny {group}", + "An administrator removed you from group {group}" : "Správce vás odebral ze skupiny {group}", + "An administrator removed {user} from group {group}" : "Správce odebral {user} ze skupiny {group}", + "Your <strong>group memberships</strong> were modified" : "Vaše <strong>členství ve skupinách</strong> bylo upraveno", + "{actor} changed your password" : "{actor} změnil(a) vaše heslo", + "You changed your password" : "Změnili jste své heslo", + "Your password was reset by an administrator" : "Vaše heslo bylo resetováno správcem", + "{actor} changed your email address" : "{actor} změnil(a) vaši emailovou adresu", + "You changed your email address" : "Změnili jste svou emailovou adresu", + "Your email address was changed by an administrator" : "Vaše emailová adresa byla změněna správcem", + "You created app password \"{token}\"" : "Vytvořili jste heslo pro aplikaci „{token}“", + "You deleted app password \"{token}\"" : "Smazali jste heslo pro aplikaci „{token}“", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Přejmenovali jste heslo aplikace „{token}“ na „{newToken}“", + "You granted filesystem access to app password \"{token}\"" : "Udělili jste přístup k souborovému systému aplikaci, používající heslo „{token}“", + "You revoked filesystem access from app password \"{token}\"" : "Zrušili jste přístup k souborovému systému pro aplikaci, využívající heslo „{token}“", + "Security" : "Zabezpečení", + "You successfully logged in using two-factor authentication (%1$s)" : "Úspěšně jste se přihlásili pomocí dvoufázového ověření (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Pokus o přihlášení s použitím dvoufázové autentizace se nezdařil (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Vaše <strong>heslo</strong> nebo <strong>email</strong> bylo změněno", + "Couldn't remove app." : "Nepodařilo se odebrat aplikaci.", + "Couldn't update app." : "Nelze aktualizovat aplikaci.", + "Wrong password" : "Nesprávné heslo", + "Saved" : "Uloženo", + "No user supplied" : "Nebyl uveden uživatel", + "Unable to change password" : "Změna hesla se nezdařila", + "Authentication error" : "Chyba přihlášení", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Zadejte správcovské heslo pro obnovu, jinak budou všechna uživatelská data ztracena.", + "Wrong admin recovery password. Please check the password and try again." : "Chybné správcovské heslo pro obnovu. Překontrolujte správnost hesla a zkuste to znovu.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Podpůrná vrstva nepodporuje změnu hesla, ale uživatelův šifrovací klíč byl aktualizován.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Instalovat a aktualizovat aplikace pomocí obchodu nebo Sdíleného Cloudového Úložiště", + "Federated Cloud Sharing" : "Propojené cloudové sdílení", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL používá zastaralou verzi %1$s (%2$s). Aktualizujte operační systém jinak funkce jako například %3$s nebudou fungovat spolehlivě.", + "Invalid SMTP password." : "Neplatné heslo SMTP.", + "Email setting test" : "Zkouška nastavení e-mailu", + "Well done, %s!" : "Úspěšně nastaveno, %s!", + "If you received this email, the email configuration seems to be correct." : "Pokud přišel tento email, konfigurace pro odesílání emailů se zdá být v pořádku.", + "Email could not be sent. Check your mail server log" : "Email se nepodařilo odeslat. Podívejte se do záznamu událostí (log) svého emailového serveru.", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Při odesílání e-mailu nastala chyba. Překontrolujte prosím svá nastavení. (Error: %s)", + "You need to set your user email before being able to send test emails." : "Pro možnost odeslání zkušebních emailů musíte nejprve nastavit svou emailovou adresu.", + "Invalid mail address" : "Neplatná emailová adresa", + "Settings saved" : "Nastavení uloženo", + "Unable to change full name" : "Nelze změnit celé jméno", + "Unable to change email address" : "Nepodařilo se změnit emailovou adresu", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Pokud chcete ověřit váš Twitter účet, napište následující tweet (ujistěte se, že ho zasíláte bez zalomení řádků):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Pro ověřování vašich webových stránek uložte následující obsah v kořenovém adresáři webové prezentace v umístění '.well-known/CloudIdVerificationCode.txt' (ujistěte se, že byl text vložen jako jediný řádek)", + "%1$s changed your password on %2$s." : "%1$s změnil(a) vaše heslo na %2$s.", + "Your password on %s was changed." : "Vaše heslo na %s bylo změněno.", + "Your password on %s was reset by an administrator." : "Vaše heslo na %s bylo resetováno správcem.", + "Password for %1$s changed on %2$s" : "Heslo pro %1$s na %2$s změněno ", + "Password changed for %s" : "Změna hesla pro %s", + "If you did not request this, please contact an administrator." : "Pokud jste o toto nežádali, obraťte se na správce.", + "Your email address on %s was changed." : "Vaše emailová adresa na %s byla změněna.", + "Your email address on %s was changed by an administrator." : "Vaše emailová adresa na %s byla změněna správcem.", + "Email address for %1$s changed on %2$s" : "Emailová adresa pro %1$s se na %2$s změnila", + "Email address changed for %s" : "Emailová adresa pro %s byla změněna", + "The new email address is %s" : "Nová emailová adresa je %s", + "Your %s account was created" : "Účet %s byl vytvořen", + "Welcome aboard" : "Vítejte na palubě", + "Welcome aboard %s" : "Vítej na palubě, %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Vítejte ve svém %s účtu, můžete vkládat, chránit a sdílet svoje data.", + "Your username is: %s" : "Vaše uživatelské jméno je: %s", + "Set your password" : "Nastavte vaše heslo", + "Go to %s" : "Jít na %s", + "Install Client" : "Nainstalovat klienta", + "Logged in user must be a subadmin" : "Je třeba, aby přihlášený uživatel byl dílčím správcem", + "Create" : "Vytvořit", + "Change" : "Změnit", + "Delete" : "Smazat", + "Share" : "Sdílet", + "Unlimited" : "Neomezeně", + "Verifying" : "Ověřuje se", + "Verifying …" : "Ověřování…", + "Verify" : "Ověřit", + "Migration in progress. Please wait until the migration is finished" : "Migrace probíhá. Počkejte než bude dokončena", + "Migration started …" : "Migrace spuštěna…", + "Not saved" : "Neuloženo", + "Sending…" : "Odesílání…", + "Email sent" : "Email odeslán", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Došlo k chybě. Nahrajte ASCII-kódovaný PEM certifikát.", + "Valid until {date}" : "Platný do {date}", + "Local" : "Místní", + "Private" : "Soukromý", + "Only visible to local users" : "Viditelný pouze pro místní uživatele", + "Only visible to you" : "Viditelný pouze pro vás", + "Contacts" : "Kontakty", + "Visible to local users and to trusted servers" : "Viditelné pro místní uživatele a důvěryhodné servery", + "Public" : "Veřejný", + "Will be synced to a global and public address book" : "Bude synchronizováno do globálního a veřejného adresáře", + "Very weak password" : "Velmi slabé heslo", + "Weak password" : "Slabé heslo", + "So-so password" : "Středně silné heslo", + "Good password" : "Dobré heslo", + "Strong password" : "Odolné heslo", + "An error occurred while changing your language. Please reload the page and try again." : "Při změně jazyka došlo k chybě. Znovu načtěte stránku a zkuste to ještě jednou.", + "An error occurred while changing your locale. Please reload the page and try again." : "Došlo k chybě při změně místních a jazykových nastavení. Načtěte stránku znovu a zopakujte pokus.", + "Select a profile picture" : "Vyberte profilový obrázek", + "Week starts on {fdow}" : "Týden začíná v {fdow}", + "Groups" : "Skupiny", + "Group list is empty" : "Seznam skupin je prázdný.", + "Unable to retrieve the group list" : "Nedaří se získat seznam skupiny", + "Afrikaans (South Africa)" : "afrikánština (Jihoafrická republika)", + "Afrikaans" : "Afrikánština", + "Albanian (Albania)" : "albánština (Albánie)", + "Albanian" : "Albánština", + "Arabic (Algeria)" : "arabština (Alžír)", + "Arabic (Egypt)" : "Arabština (Egypt)", + "Arabic (Iraq)" : "Arabština (Irák)", + "Arabic (Jordan)" : "Arabština (Jordán)", + "Arabic (Kuwait)" : "Arabština (Kuvajt)", + "Arabic (Lebanon)" : "Arabština (Libanon)", + "Arabic (Libya)" : "Arabština (Libye)", + "Arabic (Qatar)" : "arabština (Katar)", + "Arabic" : "arabština", + "Armenian" : "arménština", + "Assamese" : "Ásámština", + "Basque" : "baskičtina", + "Belarusian" : "Běloruština", + "Bulgarian (Bulgaria)" : "bulharština (Bulharsko)", + "Bulgarian" : "bulharština", + "Catalan (Spain)" : "katalánština (Španělsko)", + "Catalan" : "Katalánština", + "Chinese" : "Čínština", + "Croatian (Croatia)" : "Chorvatština (Chorvatsko)", + "Croatian" : "chorvatština", + "Czech (Czech Republic)" : "Čeština (Česko)", + "Czech" : "Čeština", + "Danish" : "Dánština", + "Embu" : "Embu", + "English (Australia)" : "angličtina (Austrálie)", + "English (Canada)" : "angličtina (Kanada)", + "English (India)" : "angličtina (Indie)", + "English (Ireland)" : "angličtina (Irsko)", + "English (Jamaica)" : "angličtina (Jamajka)", + "English (Malta)" : "angličtina (Malta)", + "English (Mauritius)" : "Angličtina (Maurícius)", + "English (New Zealand)" : "angličtina (Nový Zéland)", + "English (Philippines)" : "angličtina (Filipíny)", + "English (South Africa)" : "Angličtina (Jihoafrická republika)", + "English (United Kingdom)" : "Angličtina (Spojené království)", + "English (United States)" : "angličtina (Spojené Státy)", + "English" : "Angličtina", + "Esperanto" : "Esperanto", + "Estonian (Estonia)" : "estonština (Estonsko)", + "Estonian" : "Estonština", + "Finnish (Finland)" : "Finština (Finsko)", + "Finnish" : "Finština", + "French (Belgium)" : "francouzština (Belgie)", + "French (Burkina Faso)" : "Francouzština (Burkina Faso)", + "French (Canada)" : "Francouzština (Kanada)", + "French (France)" : "francouzština (Francie)", + "French (Mali)" : "francouzština (Mali)", + "French (Rwanda)" : "francouzština (Rwanda)", + "French (Senegal)" : "francouzština (Senegal)", + "French (Switzerland)" : "francouzština (Švýcarsko)", + "French" : "Francouzština", + "Galician" : "galicijština", + "Georgian" : "gruzínština", + "German (Austria)" : "němčina (Rakousko)", + "German (Belgium)" : "němčina (Belgie)", + "German (Germany)" : "němčina (Německo)", + "German (Luxembourg)" : "němčina (Lucembursko)", + "German (Switzerland)" : "němčina (Švýcarsko)", + "German" : "Němčina", + "Greek (Cyprus)" : "řečtina (Kypr)", + "Greek (Greece)" : "řečtina (Řecko)", + "Greek" : "Řečtina", + "Hausa" : "hauština", + "Hawaiian" : "havajština", + "Hebrew (Israel)" : "hebrejština (Izrael)", + "Hebrew" : "Hebrejština", + "Hungarian (Hungary)" : "Maďarština (Maďarsko)", + "Hungarian" : "Maďarština", + "Icelandic" : "Islandština", + "Irish (Ireland)" : "irština (Irsko)", + "Irish" : "Irština", + "Italian (Italy)" : "italština (Itálie)", + "Italian" : "Italština", + "Japanese (Japan)" : "japonština (Japonsko)", + "Japanese" : "Japonština", + "Kalaallisut" : "grónština", + "Kannada" : "kannadština", + "Kinyarwanda" : "rwandština", + "Korean (South Korea)" : "Korejština (Severní Korea)", + "Korean" : "korejština", + "Latvian (Latvia)" : "lotyština (Lotyšsko)", + "Latvian" : "Lotyština", + "Lithuanian (Lithuania)" : "litevština (Litva)", + "Lithuanian" : "Litevština", + "Macedonian (Macedonia)" : "makedonština (Makedonie)", + "Macedonian" : "makedonština", + "Malayalam" : "malajálamština", + "Nepali" : "nepálština", + "Norwegian Bokmål" : "Norština (Bokmål)", + "Persian (Iran)" : "perština (Írán)", + "Persian" : "perština", + "Polish (Poland)" : "polština (Polsko)", + "Polish" : "Polština", + "Portuguese (Brazil)" : "portugalština (Brazílie)", + "Portuguese (Portugal)" : "portugalština (Portugalsko)", + "Portuguese" : "Portugalština", + "Romanian (Moldova)" : "rumunština (Moldávie)", + "Romanian" : "Rumunština", + "Russian (Russia)" : "ruština (Rusko)", + "Russian (Ukraine)" : "ruština (Ukrajina)", + "Russian" : "Ruština", + "Serbian" : "Srbština", + "Slovak (Slovakia)" : "slovenština (Slovensko)", + "Slovak" : "Slovenština", + "Slovenian (Slovenia)" : "slovinština (Slovensko)", + "Slovenian" : "Slovinština", + "Somali (Djibouti)" : "somálština (Džibutsko)", + "Spanish (Argentina)" : "španělština (Argentina)", + "Spanish (Colombia)" : "španělština (Kolumbie)", + "Spanish (Ecuador)" : "španělština (Ekvádor)", + "Spanish (Latin America)" : "španělština (latinská Amerika)", + "Spanish (Mexico)" : "španělština (Mexiko)", + "Spanish (Panama)" : "španělština (Panama)", + "Spanish (Peru)" : "španělština (Peru)", + "Spanish (United States)" : "španělština (Spojené Státy)", + "Spanish" : "Španělština", + "Swahili" : "Svahilština", + "Swedish (Finland)" : "švédština (Finsko)", + "Swedish (Sweden)" : "švédština (Švédsko)", + "Swedish" : "Švédština", + "Swiss German (Switzerland)" : "švýcarská němčina (Švýcarsko)", + "Swiss German" : "Švýcarská němčina", + "Thai" : "Thajština", + "Tibetan (India)" : "tibetština (Indie)", + "Tibetan" : "tibetština", + "Turkish (Turkey)" : "turečtina (Turecko)", + "Turkish" : "Turečtina", + "Ukrainian (Ukraine)" : "ukrajinština (Ukrajina)", + "Ukrainian" : "Ukrajinština", + "Uzbek" : "Uzbečtina", + "Vietnamese" : "Vietnamština", + "Welsh" : "Velština", + "Zulu" : "zuluština", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Dvoufázové ověřování je možné vynutit pro všechny\tuživatele a konkrétní skupiny. Pokud nemají nastaveného poskytovatele dvoufázového ověřování, nebudou se moci přihlásit do systému.", + "Enforce two-factor authentication" : "Vynutit dvoufázové ověřování", + "Limit to groups" : "Omezit na skupiny", + "Enforcement of two-factor authentication can be set for certain groups only." : "Vynucení dvoufázového ověřování je možné nastavit pouze pro určité skupiny.", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "Dvoufázové ověřování je vynucováno pro všechny\tčleny následujících skupin.", + "Enforced groups" : "Vynucené skupiny", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "Dvoufázové ověřování není vynucováno pro\tčleny následujících skupin.", + "Excluded groups" : "Vynechané skupiny", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "Když jsou skupiny vybrány/vynechány, je pro zjišťování zda je uživateli vynuceno dvoufázové (2FA) ověřování použita následující logika: Pokud nejsou vybrány žádné skupiny, je 2FA zapnuto pro všechny kromě členů vynechaných skupin. Pokud jsou nějaké skupiny vybrány, je 2FA zapnuto pro všechny jejich členy. Pokud je uživatel členem jak vybrané, tak vynechané skupiny, pak má ta vybraná přednost a 2FA je vynuceno.", + "Save changes" : "Uložit změny", + "Marked for remote wipe" : "Označeno k vymazání na dálku", + "Device settings" : "Nastavení zařízení", + "Allow filesystem access" : "Umožnit přístup k souborovému systému", + "Rename" : "Přejmenovat", + "Revoke" : "Odvolat", + "Wipe device" : "Vymazat zařízení", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome pro Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Aplikace Nextcloud pro iOS", + "Nextcloud Android app" : "Aplikace Nextcloud pro Android", + "Nextcloud Talk for iOS" : "Nextcloud Talk pro iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk pro Android", + "Sync client - {os}" : "Synchronizační klient – {os}", + "This session" : "Toto sezení", + "Device" : "Přístroj", + "Last activity" : "Poslední aktivita", + "Devices & sessions" : "Zařízení a sezení", + "Web, desktop and mobile clients currently logged in to your account." : "Weboví, desktopoví a mobilní klienti aktuálně přihlášení k vašemu účtu.", + "Do you really want to wipe your data from this device?" : "Opravdu chcete vymazat svá data z tohoto zařízení?", + "Confirm wipe" : "Potvrdit vymazání", + "Error while creating device token" : "Chyba při vytváření tokenů přístroje", + "Error while updating device token scope" : "Chyba při aktualizaci rozsahu tokenu zařízení", + "Error while updating device token name" : "Chyba při aktualizaci názvu tokenu zařízení", + "Error while deleting the token" : "Chyba při mazání tokenu", + "App name" : "Název aplikace", + "Create new app password" : "Vytvořit nové heslo aplikace", + "Use the credentials below to configure your app or device." : "Pro nastavení aplikace nebo zařízení použijte níže uvedené údaje.", + "For security reasons this password will only be shown once." : "Toto heslo bude z bezpečnostních důvodů zobrazeno pouze jedenkrát.", + "Username" : "Uživatelské jméno", + "Password" : "Heslo", + "Done" : "Dokončeno", + "Show QR code for mobile apps" : "Zobrazit QR kód pro mobilní aplikace", + "Copied!" : "Zkopírováno!", + "Copy" : "Zkopírovat", + "Could not copy app password. Please copy it manually." : "Nedaří se zkopírovat heslo pro aplikaci. Zkopírujte ho ručně.", + "This app is supported via your current Nextcloud subscription." : "Tato aplikace je podporována prostřednictvím vašeho stávajícího předplatného Nextcloud.", + "Supported" : "Podporováno", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Oficiální aplikace jsou vyvíjeny komunitou. Poskytují klíčové funkce a jsou připravené na produkční nasazení.", + "Official" : "Oficiální", + "by" : "od", + "Update to {version}" : "Aktualizovat na {version}", + "Remove" : "Odstranit", + "Disable" : "Zakázat", + "All" : "Vše", + "Limit app usage to groups" : "Omezit používání skupin na skupiny", + "No results" : "Žádné výsledky", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Tato aplikace nemá nastavenou žádnou minimální verzi Nextcloudu. To se v budoucnu projeví jako chyba.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Tato aplikace nemá nastavenou žádnou maximální verzi Nextcloudu. To se v budoucnu projeví jako chyba.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Tuto aplikaci nelze nainstalovat, protože nejsou splněny následující závislosti:", + "View in store" : "Zobrazit v obchodě", + "Visit website" : "Navštívit webovou stránku", + "Report a bug" : "Nahlásit chybu", + "User documentation" : "Dokumentace pro uživatele", + "Admin documentation" : "Dokumentace pro administrátory", + "Developer documentation" : "Vývojářská dokumentace", + "Update to {update}" : "Aktualizovat na {update}", + "Results from other categories" : "Výsledky z ostatních kategorií", + "No apps found for your version" : "Nebyly nalezeny aplikace pro vaši verzi", + "Disable all" : "Zakázat vše", + "Enable all" : "Zapnout vše", + "Download and enable" : "Stáhnout a zapnout", + "Enable" : "Povolit", + "Enable untested app" : "Zapnout nevyzkoušenou aplikaci", + "The app will be downloaded from the app store" : "Aplikace bude stažena z obchodu aplikací", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Tato aplikace není označena jako kompatibilní s vámi používanou verzí Nexcloud. Pokud budete pokračovat, pořád budete moci aplikaci nainstalovat. Uvědomte si ale, že aplikace nemusí fungovat, jak je očekáváno.", + "You do not have permissions to see the details of this user" : "Nemáte oprávnění k zobrazení podrobností o tomto uživateli", + "The backend does not support changing the display name" : "Podpůrná vrstva nepodporuje změnu zobrazovaného názvu", + "New password" : "Nové heslo", + "Add user in group" : "Přidat uživatele do skupiny", + "Set user as admin for" : "Nastavit uživatele jako správce pro", + "Select user quota" : "Vybrat kvótu uživatele", + "No language set" : "Není nastaven jazyk", + "Never" : "Nikdy", + "Delete user" : "Smazat uživatele", + "Wipe all devices" : "Vymazat všechna zařízení", + "Disable user" : "Znepřístupnit uživatelský účet", + "Enable user" : "Zpřístupnit uživatelský účet", + "Resend welcome email" : "Znovu poslat uvítací email", + "{size} used" : "{size} použito", + "Welcome mail sent!" : "Uvítací email odeslán!", + "Display name" : "Zobrazované jméno", + "Email" : "Email", + "Group admin for" : "Správce skupiny", + "Quota" : "Kvóta", + "Language" : "Jazyk", + "Storage location" : "Úložiště dat", + "User backend" : "Backend uživatelů", + "Last login" : "Poslední přihlášení", + "Will be autogenerated" : "Bude automaticky vytvořeno", + "Default language" : "Výchozí jazyk", + "Add a new user" : "Přidat nového uživatele", + "No users in here" : "Nejsou zde žádní uživatelé", + "Default quota" : "Výchozí kvóta", + "Password change is disabled because the master key is disabled" : "Změna hesla je vypnutá protože je vypnutý hlavní klíč", + "Common languages" : "Běžné jazyky", + "All languages" : "Všechny jazyky", + "Your apps" : "Vaše aplikace", + "Active apps" : "Aktivní aplikace", + "Disabled apps" : "Vypnuté aplikace", + "Updates" : "Aktualizace", + "App bundles" : "Sady aplikací", + "{license}-licensed" : "licencováno pod {license}", + "New user" : "Nový uživatel", + "Default quota:" : "Výchozí kvóta:", + "Select default quota" : "Vybrat výchozí kvótu", + "Show Languages" : "Zobrazit jazyky", + "Show last login" : "Zobrazit poslední přihlášení", + "Show user backend" : "Zobrazit vedení uživatelů", + "Show storage path" : "Zobrazit cestu k úložišti", + "You are about to remove the group {group}. The users will NOT be deleted." : "Chystáte se smazat skupinu {group}. Uživatelé NEbudou smazáni.", + "Please confirm the group removal " : "Potvrďte odstranění skupiny", + "Remove group" : "Odebrat skupinu", + "Admins" : "Správci", + "Disabled users" : "Zakázaní uživatelé", + "Everyone" : "Všichni", + "Add group" : "Přidat skupinu", + "An error occured during the request. Unable to proceed." : "Během požadavku došlo k chybě. Nelze pokračovat.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Aplikace byla povolena ale je třeba ji aktualizovat. Za 5 sekund budete přesměrování na stránku pro aktualizaci.", + "App update" : "Aktualizace aplikace", + "Error: This app can not be enabled because it makes the server unstable" : "Chyba: tuto aplikaci nelze zapnout, protože způsobuje nestabilitu serveru", + "SSL Root Certificates" : "Kořenové certifikáty SSL", + "Common Name" : "Common Name", + "Valid until" : "Platný do", + "Issued By" : "Vydal", + "Valid until %s" : "Platný do %s", + "Import root certificate" : "Import kořenového certifikátu", + "Administrator documentation" : "Dokumentace pro správu", + "Documentation" : "Dokumentace", + "Forum" : "Diskuzní fórum", + "None" : "Žádné", + "Login" : "Přihlásit", + "Plain" : "Čistý text", + "NT LAN Manager" : "Správce NT LAN", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Emailový server", + "Open documentation" : "Otevřít dokumentaci", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Je důležité tento server nastavit, aby mohly být odesílány emaily, jako jsou např. resety hesla a upozornění.", + "Send mode" : "Mód odesílání", + "Encryption" : "Šifrování", + "Sendmail mode" : "Režim sendmail", + "From address" : "Adresa odesílatele", + "mail" : "email", + "Authentication method" : "Metoda ověření", + "Authentication required" : "Vyžadováno ověření", + "Server address" : "Adresa serveru", + "Port" : "Port", + "Credentials" : "Přihlašovací údaje", + "SMTP Username" : "SMTP uživatelské jméno ", + "SMTP Password" : "SMTP heslo", + "Save" : "Uložit", + "Test email settings" : "Test nastavení e-mailu", + "Send email" : "Odeslat email", + "Security & setup warnings" : "Upozornění zabezpečení a nastavení", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Pro zabezpečení a optimální výkon instance Nextcloud je důležitě, aby vše bylo správně nastaveno. Jako pomoc, instance samotná automaticky ověřuje některá nastavení. Více informací je k nalezení v dokumentaci, sekci Tipy a Triky.", + "All checks passed." : "Všechny testy proběhly úspěšně.", + "There are some errors regarding your setup." : "Jsou zde nějaké chyby ohledně vašeho nastavení.", + "There are some warnings regarding your setup." : "Jsou zde nějaká varování ohledně vašeho nastavení.", + "Checking for system and security issues." : "Kontrola systému a problémů se zabezpečením.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Důkladně si přečtěte <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">průvodce instalací ↗</a> a zkontrolujte, že v <a href=\"%2$s\">záznamu událostí</a> nejsou žádné chyby ani varování.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Zkontrolujte zabezpečení svého Nextcloud přes <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">náš skener zabezpečení ↗</a>.", + "Version" : "Verze", + "Two-Factor Authentication" : "Dvoufázové ověření", + "Server-side encryption" : "Šifrování na straně serveru", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Šifrování na straně serveru umožňuje zašifrovat soubory, které jsou na tento server nahrávány. To přináší omezení jako třeba výkonnostní omezení, takže to povolte jen pokud je třeba.", + "Enable server-side encryption" : "Povolit šifrování na straně serveru", + "Please read carefully before activating server-side encryption: " : "Pročtěte důkladně před zapnutím šifrování dat na serveru:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Poté co je zapnuto šifrování, jsou od toho bodu všechny nahrávané soubory šifrovány serverem. Vypnout šifrování bude možné pouze později, až bude šifrovací modul tuto možnost podporovat a po splnění všech nutných podmínek (tzn. nastavení klíčů pro obnovení).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Šifrování samotné ještě negarantuje bezpečnost systému. Přečtěte si prosím dokumentaci, chcete-li se dozvědět více informací o tom, jak aplikace pro šifrování funguje a jaké jsou podporované případy použití.", + "Be aware that encryption always increases the file size." : "Mějte na paměti, že šifrování vždy navýší velikost souboru.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Je vždy dobré vytvářet pravidelné zálohy svých dat, v případě zapnutého šifrování také zajistěte zálohu šifrovacích klíčů společně se zálohou dat.", + "This is the final warning: Do you really want to enable encryption?" : "Toto je poslední varování: Opravdu si přejete zapnout šifrování?", + "Enable encryption" : "Povolit šifrování", + "No encryption module loaded, please enable an encryption module in the app menu." : "Není načten žádný šifrovací modul, povolte ho v nabídce aplikace.", + "Select default encryption module:" : "Vybrat výchozí šifrovací modul:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Je třeba přenést své šifrovací klíče ze staré verze šifrování (ownCloud <= 8.0) na novou. Povolte prosím „Default encryption module“ a spusťte příkaz 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Je třeba přenést své šifrovací klíče ze staré verze šifrování (ownCloud <= 8.0) na novou.", + "Start migration" : "Spustit migraci", + "Background jobs" : "Úkoly na pozadí", + "Last job ran %s." : "Poslední úloha byla vykonána: %s.", + "Last job execution ran %s. Something seems wrong." : "Minulá úloha byla vykonána: %s. Zdá se, že něco není v pořádku.", + "Background job didn’t run yet!" : "Úloha na pozadí ještě nebyla spuštěná!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Pro optimální výkon je důležité správně nastavit úlohy spouštěné na pozadí. Pro větší instance je doporučenou metodou použití systémového plánovače (cron). Více informací naleznete v dokumentaci.", + "Pick background job setting" : "Vybrat nastavení úlohy na pozadí", + "Execute one task with each page loaded" : "Spustit jednu úlohu s načtením každé stránky", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php je zaregistrován na službě webcron a bude přes HTTP volán každých 5 minut.", + "Use system cron service to call the cron.php file every 5 minutes." : "Použít systémový plánovač (cron) pro volání souboru cron.php každých 5 minut.", + "The cron.php needs to be executed by the system user \"%s\"." : "Je třeba, aby cron.php bylo spouštěno s právy systémového uživatele „%s“.", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Pro spuštění je potřeba PHP POSIX rozšíření. Více informací lze nalézt v {linkstart}dokumentaci k PHP{linkend}.", + "Sharing" : "Sdílení", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Jako správce můžete upravit chování sdílení. Více informací naleznete v dokumentaci.", + "Allow apps to use the Share API" : "Umožnit aplikacím používat API sdílení", + "Allow users to share via link" : "Umožnit uživatelům sdílet pomocí odkazů", + "Allow public uploads" : "Umožnit veřejné nahrávání souborů", + "Always ask for a password" : "Vždy se zeptat na heslo", + "Enforce password protection" : "Vynutit ochranu heslem", + "Set default expiration date" : "Nastavit výchozí datum skončení platnosti", + "Expire after " : "Platnost skončí po", + "days" : "dnech", + "Enforce expiration date" : "Vynutit datum skončení platnosti", + "Allow resharing" : "Povolit znovu-sdílení", + "Allow sharing with groups" : "Povolit sdílení se skupinami", + "Restrict users to only share with users in their groups" : "Povolit sdílení pouze mezi uživateli v rámci skupiny", + "Exclude groups from sharing" : "Vyjmout skupiny ze sdílení", + "These groups will still be able to receive shares, but not to initiate them." : "Těmto skupinám bude stále možno sdílet, nemohou ale sami sdílet ostatním.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Povolit automatické dokončení uživatelského jména v dialogovém okně sdílení. Pokud je tato volba zakázána, je třeba zadat úplné uživatelské jméno nebo emailovou adresu.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Zobrazit text upozornění na stránce pro nahrání veřejného odkazu. (Zobrazit pouze pokud je seznam souborů skrytý.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Tento text bude zobrazen on stránce pro nahrání veřejného odkazu, pokud bude seznam souborů skrytý.", + "Default share permissions" : "Výchozí oprávnění sdílení", + "Personal" : "Osobní", + "Administration" : "Správa", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Vyvíjeno {communityopen}komunitou Nextcloud{linkclose}, {githubopen}zdrojové kódy{linkclose} jsou licencovány pod {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Lajkujte naše stránky na Facebooku", + "Follow us on Twitter" : "Sledujte nás na Twitteru", + "Follow us on Mastodon" : "Sledujte nás na Mastodon", + "Check out our blog" : "Podívejte se na náš blog", + "Subscribe to our newsletter" : "Odebírejte náš zpravodaj", + "Profile picture" : "Profilový obrázek", + "Upload new" : "Nahrát nový", + "Select from Files" : "Vybrat ze Souborů", + "Remove image" : "Odebrat obrázek", + "png or jpg, max. 20 MB" : "png nebo jpg, max. 20 MB", + "Picture provided by original account" : "Obrázek je poskytován původním účtem", + "Cancel" : "Zrušit", + "Choose as profile picture" : "Vybrat jako profilový obrázek", + "Details" : "Podrobnosti", + "You are a member of the following groups:" : "Jste členem následujících skupin:", + "You are using <strong>%s</strong>" : "Používáte <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Používáte <strong>%1$s</strong> z <strong>%2$s</strong> (<strong>%3$s %%</strong>)", + "Full name" : "Celé jméno", + "No display name set" : "Jméno pro zobrazení nenastaveno", + "Your email address" : "Vaše emailová adresa", + "No email address set" : "Emailová adresa není nastavena", + "For password reset and notifications" : "Pro obnovení hesla a upozornění", + "Phone number" : "Telefonní číslo", + "Your phone number" : "Vlastní telefonní číslo", + "Address" : "Adresa", + "Your postal address" : "Vlastní poštovní adresa", + "Website" : "Webová stránka", + "It can take up to 24 hours before the account is displayed as verified." : "Může trvat až 24 hodin, než se účet zobrazí jako ověřený.", + "Link https://…" : "Odkaz https://…", + "Twitter" : "Twitter", + "Twitter handle @…" : "Přezdívka na Twitteru @…", + "Help translate" : "Pomoci s překladem", + "Locale" : "Místní a jazyková nastavení", + "Current password" : "stávající heslo", + "Change password" : "Změnit heslo", + "Use a second factor besides your password to increase security for your account." : "Pro zlepšení zabezpečení vašeho účtu použijte vedle hesla také druhý faktor.", + "Disconnect" : "Odpojit", + "Not supported!" : "Nepodporováno!", + "Press ⌘-C to copy." : "Zkopírujete stisknutím ⌘-C.", + "Press Ctrl-C to copy." : "Zkopírujete stisknutím Ctrl-C.", + "Error while loading browser sessions and device tokens" : "Chyba při načítání sezení prohlížeče a tokenů přístroje", + "Store credentials" : "Ukládat přihlašovací údaje", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php je registrován u služby webcron, aby volal cron.php jednou za 15 minut přes HTTP.", + "Use system cron service to call the cron.php file every 15 minutes." : "Použít systémovou službu cron pro volání cron.php každých 15 minut.", + "Follow us on Google+" : "Následujte nás na Google+" +}, +"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"); diff --git a/apps/settings/l10n/cs.json b/apps/settings/l10n/cs.json new file mode 100644 index 00000000000..49c2eb4877a --- /dev/null +++ b/apps/settings/l10n/cs.json @@ -0,0 +1,520 @@ +{ "translations": { + "{actor} added you to group {group}" : "{actor} vás přidal(a) do skupiny {group}", + "You added {user} to group {group}" : "Přidali jste {user} do skupiny {group}", + "{actor} added {user} to group {group}" : "{actor} přidal(a) {user} do skupiny {group}", + "An administrator added you to group {group}" : "Správce vás přidal do skupiny {group}", + "An administrator added {user} to group {group}" : "Správce přidal {user} do skupiny {group}", + "{actor} removed you from group {group}" : "{actor} vás odebral(a) ze skupiny {group}", + "You removed {user} from group {group}" : "Odebrali jste {user} ze skupiny {group}", + "{actor} removed {user} from group {group}" : "{actor} odebral(a) {user} ze skupiny {group}", + "An administrator removed you from group {group}" : "Správce vás odebral ze skupiny {group}", + "An administrator removed {user} from group {group}" : "Správce odebral {user} ze skupiny {group}", + "Your <strong>group memberships</strong> were modified" : "Vaše <strong>členství ve skupinách</strong> bylo upraveno", + "{actor} changed your password" : "{actor} změnil(a) vaše heslo", + "You changed your password" : "Změnili jste své heslo", + "Your password was reset by an administrator" : "Vaše heslo bylo resetováno správcem", + "{actor} changed your email address" : "{actor} změnil(a) vaši emailovou adresu", + "You changed your email address" : "Změnili jste svou emailovou adresu", + "Your email address was changed by an administrator" : "Vaše emailová adresa byla změněna správcem", + "You created app password \"{token}\"" : "Vytvořili jste heslo pro aplikaci „{token}“", + "You deleted app password \"{token}\"" : "Smazali jste heslo pro aplikaci „{token}“", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Přejmenovali jste heslo aplikace „{token}“ na „{newToken}“", + "You granted filesystem access to app password \"{token}\"" : "Udělili jste přístup k souborovému systému aplikaci, používající heslo „{token}“", + "You revoked filesystem access from app password \"{token}\"" : "Zrušili jste přístup k souborovému systému pro aplikaci, využívající heslo „{token}“", + "Security" : "Zabezpečení", + "You successfully logged in using two-factor authentication (%1$s)" : "Úspěšně jste se přihlásili pomocí dvoufázového ověření (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Pokus o přihlášení s použitím dvoufázové autentizace se nezdařil (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Vaše <strong>heslo</strong> nebo <strong>email</strong> bylo změněno", + "Couldn't remove app." : "Nepodařilo se odebrat aplikaci.", + "Couldn't update app." : "Nelze aktualizovat aplikaci.", + "Wrong password" : "Nesprávné heslo", + "Saved" : "Uloženo", + "No user supplied" : "Nebyl uveden uživatel", + "Unable to change password" : "Změna hesla se nezdařila", + "Authentication error" : "Chyba přihlášení", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Zadejte správcovské heslo pro obnovu, jinak budou všechna uživatelská data ztracena.", + "Wrong admin recovery password. Please check the password and try again." : "Chybné správcovské heslo pro obnovu. Překontrolujte správnost hesla a zkuste to znovu.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Podpůrná vrstva nepodporuje změnu hesla, ale uživatelův šifrovací klíč byl aktualizován.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Instalovat a aktualizovat aplikace pomocí obchodu nebo Sdíleného Cloudového Úložiště", + "Federated Cloud Sharing" : "Propojené cloudové sdílení", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL používá zastaralou verzi %1$s (%2$s). Aktualizujte operační systém jinak funkce jako například %3$s nebudou fungovat spolehlivě.", + "Invalid SMTP password." : "Neplatné heslo SMTP.", + "Email setting test" : "Zkouška nastavení e-mailu", + "Well done, %s!" : "Úspěšně nastaveno, %s!", + "If you received this email, the email configuration seems to be correct." : "Pokud přišel tento email, konfigurace pro odesílání emailů se zdá být v pořádku.", + "Email could not be sent. Check your mail server log" : "Email se nepodařilo odeslat. Podívejte se do záznamu událostí (log) svého emailového serveru.", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Při odesílání e-mailu nastala chyba. Překontrolujte prosím svá nastavení. (Error: %s)", + "You need to set your user email before being able to send test emails." : "Pro možnost odeslání zkušebních emailů musíte nejprve nastavit svou emailovou adresu.", + "Invalid mail address" : "Neplatná emailová adresa", + "Settings saved" : "Nastavení uloženo", + "Unable to change full name" : "Nelze změnit celé jméno", + "Unable to change email address" : "Nepodařilo se změnit emailovou adresu", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Pokud chcete ověřit váš Twitter účet, napište následující tweet (ujistěte se, že ho zasíláte bez zalomení řádků):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Pro ověřování vašich webových stránek uložte následující obsah v kořenovém adresáři webové prezentace v umístění '.well-known/CloudIdVerificationCode.txt' (ujistěte se, že byl text vložen jako jediný řádek)", + "%1$s changed your password on %2$s." : "%1$s změnil(a) vaše heslo na %2$s.", + "Your password on %s was changed." : "Vaše heslo na %s bylo změněno.", + "Your password on %s was reset by an administrator." : "Vaše heslo na %s bylo resetováno správcem.", + "Password for %1$s changed on %2$s" : "Heslo pro %1$s na %2$s změněno ", + "Password changed for %s" : "Změna hesla pro %s", + "If you did not request this, please contact an administrator." : "Pokud jste o toto nežádali, obraťte se na správce.", + "Your email address on %s was changed." : "Vaše emailová adresa na %s byla změněna.", + "Your email address on %s was changed by an administrator." : "Vaše emailová adresa na %s byla změněna správcem.", + "Email address for %1$s changed on %2$s" : "Emailová adresa pro %1$s se na %2$s změnila", + "Email address changed for %s" : "Emailová adresa pro %s byla změněna", + "The new email address is %s" : "Nová emailová adresa je %s", + "Your %s account was created" : "Účet %s byl vytvořen", + "Welcome aboard" : "Vítejte na palubě", + "Welcome aboard %s" : "Vítej na palubě, %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Vítejte ve svém %s účtu, můžete vkládat, chránit a sdílet svoje data.", + "Your username is: %s" : "Vaše uživatelské jméno je: %s", + "Set your password" : "Nastavte vaše heslo", + "Go to %s" : "Jít na %s", + "Install Client" : "Nainstalovat klienta", + "Logged in user must be a subadmin" : "Je třeba, aby přihlášený uživatel byl dílčím správcem", + "Create" : "Vytvořit", + "Change" : "Změnit", + "Delete" : "Smazat", + "Share" : "Sdílet", + "Unlimited" : "Neomezeně", + "Verifying" : "Ověřuje se", + "Verifying …" : "Ověřování…", + "Verify" : "Ověřit", + "Migration in progress. Please wait until the migration is finished" : "Migrace probíhá. Počkejte než bude dokončena", + "Migration started …" : "Migrace spuštěna…", + "Not saved" : "Neuloženo", + "Sending…" : "Odesílání…", + "Email sent" : "Email odeslán", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Došlo k chybě. Nahrajte ASCII-kódovaný PEM certifikát.", + "Valid until {date}" : "Platný do {date}", + "Local" : "Místní", + "Private" : "Soukromý", + "Only visible to local users" : "Viditelný pouze pro místní uživatele", + "Only visible to you" : "Viditelný pouze pro vás", + "Contacts" : "Kontakty", + "Visible to local users and to trusted servers" : "Viditelné pro místní uživatele a důvěryhodné servery", + "Public" : "Veřejný", + "Will be synced to a global and public address book" : "Bude synchronizováno do globálního a veřejného adresáře", + "Very weak password" : "Velmi slabé heslo", + "Weak password" : "Slabé heslo", + "So-so password" : "Středně silné heslo", + "Good password" : "Dobré heslo", + "Strong password" : "Odolné heslo", + "An error occurred while changing your language. Please reload the page and try again." : "Při změně jazyka došlo k chybě. Znovu načtěte stránku a zkuste to ještě jednou.", + "An error occurred while changing your locale. Please reload the page and try again." : "Došlo k chybě při změně místních a jazykových nastavení. Načtěte stránku znovu a zopakujte pokus.", + "Select a profile picture" : "Vyberte profilový obrázek", + "Week starts on {fdow}" : "Týden začíná v {fdow}", + "Groups" : "Skupiny", + "Group list is empty" : "Seznam skupin je prázdný.", + "Unable to retrieve the group list" : "Nedaří se získat seznam skupiny", + "Afrikaans (South Africa)" : "afrikánština (Jihoafrická republika)", + "Afrikaans" : "Afrikánština", + "Albanian (Albania)" : "albánština (Albánie)", + "Albanian" : "Albánština", + "Arabic (Algeria)" : "arabština (Alžír)", + "Arabic (Egypt)" : "Arabština (Egypt)", + "Arabic (Iraq)" : "Arabština (Irák)", + "Arabic (Jordan)" : "Arabština (Jordán)", + "Arabic (Kuwait)" : "Arabština (Kuvajt)", + "Arabic (Lebanon)" : "Arabština (Libanon)", + "Arabic (Libya)" : "Arabština (Libye)", + "Arabic (Qatar)" : "arabština (Katar)", + "Arabic" : "arabština", + "Armenian" : "arménština", + "Assamese" : "Ásámština", + "Basque" : "baskičtina", + "Belarusian" : "Běloruština", + "Bulgarian (Bulgaria)" : "bulharština (Bulharsko)", + "Bulgarian" : "bulharština", + "Catalan (Spain)" : "katalánština (Španělsko)", + "Catalan" : "Katalánština", + "Chinese" : "Čínština", + "Croatian (Croatia)" : "Chorvatština (Chorvatsko)", + "Croatian" : "chorvatština", + "Czech (Czech Republic)" : "Čeština (Česko)", + "Czech" : "Čeština", + "Danish" : "Dánština", + "Embu" : "Embu", + "English (Australia)" : "angličtina (Austrálie)", + "English (Canada)" : "angličtina (Kanada)", + "English (India)" : "angličtina (Indie)", + "English (Ireland)" : "angličtina (Irsko)", + "English (Jamaica)" : "angličtina (Jamajka)", + "English (Malta)" : "angličtina (Malta)", + "English (Mauritius)" : "Angličtina (Maurícius)", + "English (New Zealand)" : "angličtina (Nový Zéland)", + "English (Philippines)" : "angličtina (Filipíny)", + "English (South Africa)" : "Angličtina (Jihoafrická republika)", + "English (United Kingdom)" : "Angličtina (Spojené království)", + "English (United States)" : "angličtina (Spojené Státy)", + "English" : "Angličtina", + "Esperanto" : "Esperanto", + "Estonian (Estonia)" : "estonština (Estonsko)", + "Estonian" : "Estonština", + "Finnish (Finland)" : "Finština (Finsko)", + "Finnish" : "Finština", + "French (Belgium)" : "francouzština (Belgie)", + "French (Burkina Faso)" : "Francouzština (Burkina Faso)", + "French (Canada)" : "Francouzština (Kanada)", + "French (France)" : "francouzština (Francie)", + "French (Mali)" : "francouzština (Mali)", + "French (Rwanda)" : "francouzština (Rwanda)", + "French (Senegal)" : "francouzština (Senegal)", + "French (Switzerland)" : "francouzština (Švýcarsko)", + "French" : "Francouzština", + "Galician" : "galicijština", + "Georgian" : "gruzínština", + "German (Austria)" : "němčina (Rakousko)", + "German (Belgium)" : "němčina (Belgie)", + "German (Germany)" : "němčina (Německo)", + "German (Luxembourg)" : "němčina (Lucembursko)", + "German (Switzerland)" : "němčina (Švýcarsko)", + "German" : "Němčina", + "Greek (Cyprus)" : "řečtina (Kypr)", + "Greek (Greece)" : "řečtina (Řecko)", + "Greek" : "Řečtina", + "Hausa" : "hauština", + "Hawaiian" : "havajština", + "Hebrew (Israel)" : "hebrejština (Izrael)", + "Hebrew" : "Hebrejština", + "Hungarian (Hungary)" : "Maďarština (Maďarsko)", + "Hungarian" : "Maďarština", + "Icelandic" : "Islandština", + "Irish (Ireland)" : "irština (Irsko)", + "Irish" : "Irština", + "Italian (Italy)" : "italština (Itálie)", + "Italian" : "Italština", + "Japanese (Japan)" : "japonština (Japonsko)", + "Japanese" : "Japonština", + "Kalaallisut" : "grónština", + "Kannada" : "kannadština", + "Kinyarwanda" : "rwandština", + "Korean (South Korea)" : "Korejština (Severní Korea)", + "Korean" : "korejština", + "Latvian (Latvia)" : "lotyština (Lotyšsko)", + "Latvian" : "Lotyština", + "Lithuanian (Lithuania)" : "litevština (Litva)", + "Lithuanian" : "Litevština", + "Macedonian (Macedonia)" : "makedonština (Makedonie)", + "Macedonian" : "makedonština", + "Malayalam" : "malajálamština", + "Nepali" : "nepálština", + "Norwegian Bokmål" : "Norština (Bokmål)", + "Persian (Iran)" : "perština (Írán)", + "Persian" : "perština", + "Polish (Poland)" : "polština (Polsko)", + "Polish" : "Polština", + "Portuguese (Brazil)" : "portugalština (Brazílie)", + "Portuguese (Portugal)" : "portugalština (Portugalsko)", + "Portuguese" : "Portugalština", + "Romanian (Moldova)" : "rumunština (Moldávie)", + "Romanian" : "Rumunština", + "Russian (Russia)" : "ruština (Rusko)", + "Russian (Ukraine)" : "ruština (Ukrajina)", + "Russian" : "Ruština", + "Serbian" : "Srbština", + "Slovak (Slovakia)" : "slovenština (Slovensko)", + "Slovak" : "Slovenština", + "Slovenian (Slovenia)" : "slovinština (Slovensko)", + "Slovenian" : "Slovinština", + "Somali (Djibouti)" : "somálština (Džibutsko)", + "Spanish (Argentina)" : "španělština (Argentina)", + "Spanish (Colombia)" : "španělština (Kolumbie)", + "Spanish (Ecuador)" : "španělština (Ekvádor)", + "Spanish (Latin America)" : "španělština (latinská Amerika)", + "Spanish (Mexico)" : "španělština (Mexiko)", + "Spanish (Panama)" : "španělština (Panama)", + "Spanish (Peru)" : "španělština (Peru)", + "Spanish (United States)" : "španělština (Spojené Státy)", + "Spanish" : "Španělština", + "Swahili" : "Svahilština", + "Swedish (Finland)" : "švédština (Finsko)", + "Swedish (Sweden)" : "švédština (Švédsko)", + "Swedish" : "Švédština", + "Swiss German (Switzerland)" : "švýcarská němčina (Švýcarsko)", + "Swiss German" : "Švýcarská němčina", + "Thai" : "Thajština", + "Tibetan (India)" : "tibetština (Indie)", + "Tibetan" : "tibetština", + "Turkish (Turkey)" : "turečtina (Turecko)", + "Turkish" : "Turečtina", + "Ukrainian (Ukraine)" : "ukrajinština (Ukrajina)", + "Ukrainian" : "Ukrajinština", + "Uzbek" : "Uzbečtina", + "Vietnamese" : "Vietnamština", + "Welsh" : "Velština", + "Zulu" : "zuluština", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Dvoufázové ověřování je možné vynutit pro všechny\tuživatele a konkrétní skupiny. Pokud nemají nastaveného poskytovatele dvoufázového ověřování, nebudou se moci přihlásit do systému.", + "Enforce two-factor authentication" : "Vynutit dvoufázové ověřování", + "Limit to groups" : "Omezit na skupiny", + "Enforcement of two-factor authentication can be set for certain groups only." : "Vynucení dvoufázového ověřování je možné nastavit pouze pro určité skupiny.", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "Dvoufázové ověřování je vynucováno pro všechny\tčleny následujících skupin.", + "Enforced groups" : "Vynucené skupiny", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "Dvoufázové ověřování není vynucováno pro\tčleny následujících skupin.", + "Excluded groups" : "Vynechané skupiny", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "Když jsou skupiny vybrány/vynechány, je pro zjišťování zda je uživateli vynuceno dvoufázové (2FA) ověřování použita následující logika: Pokud nejsou vybrány žádné skupiny, je 2FA zapnuto pro všechny kromě členů vynechaných skupin. Pokud jsou nějaké skupiny vybrány, je 2FA zapnuto pro všechny jejich členy. Pokud je uživatel členem jak vybrané, tak vynechané skupiny, pak má ta vybraná přednost a 2FA je vynuceno.", + "Save changes" : "Uložit změny", + "Marked for remote wipe" : "Označeno k vymazání na dálku", + "Device settings" : "Nastavení zařízení", + "Allow filesystem access" : "Umožnit přístup k souborovému systému", + "Rename" : "Přejmenovat", + "Revoke" : "Odvolat", + "Wipe device" : "Vymazat zařízení", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome pro Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Aplikace Nextcloud pro iOS", + "Nextcloud Android app" : "Aplikace Nextcloud pro Android", + "Nextcloud Talk for iOS" : "Nextcloud Talk pro iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk pro Android", + "Sync client - {os}" : "Synchronizační klient – {os}", + "This session" : "Toto sezení", + "Device" : "Přístroj", + "Last activity" : "Poslední aktivita", + "Devices & sessions" : "Zařízení a sezení", + "Web, desktop and mobile clients currently logged in to your account." : "Weboví, desktopoví a mobilní klienti aktuálně přihlášení k vašemu účtu.", + "Do you really want to wipe your data from this device?" : "Opravdu chcete vymazat svá data z tohoto zařízení?", + "Confirm wipe" : "Potvrdit vymazání", + "Error while creating device token" : "Chyba při vytváření tokenů přístroje", + "Error while updating device token scope" : "Chyba při aktualizaci rozsahu tokenu zařízení", + "Error while updating device token name" : "Chyba při aktualizaci názvu tokenu zařízení", + "Error while deleting the token" : "Chyba při mazání tokenu", + "App name" : "Název aplikace", + "Create new app password" : "Vytvořit nové heslo aplikace", + "Use the credentials below to configure your app or device." : "Pro nastavení aplikace nebo zařízení použijte níže uvedené údaje.", + "For security reasons this password will only be shown once." : "Toto heslo bude z bezpečnostních důvodů zobrazeno pouze jedenkrát.", + "Username" : "Uživatelské jméno", + "Password" : "Heslo", + "Done" : "Dokončeno", + "Show QR code for mobile apps" : "Zobrazit QR kód pro mobilní aplikace", + "Copied!" : "Zkopírováno!", + "Copy" : "Zkopírovat", + "Could not copy app password. Please copy it manually." : "Nedaří se zkopírovat heslo pro aplikaci. Zkopírujte ho ručně.", + "This app is supported via your current Nextcloud subscription." : "Tato aplikace je podporována prostřednictvím vašeho stávajícího předplatného Nextcloud.", + "Supported" : "Podporováno", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Oficiální aplikace jsou vyvíjeny komunitou. Poskytují klíčové funkce a jsou připravené na produkční nasazení.", + "Official" : "Oficiální", + "by" : "od", + "Update to {version}" : "Aktualizovat na {version}", + "Remove" : "Odstranit", + "Disable" : "Zakázat", + "All" : "Vše", + "Limit app usage to groups" : "Omezit používání skupin na skupiny", + "No results" : "Žádné výsledky", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Tato aplikace nemá nastavenou žádnou minimální verzi Nextcloudu. To se v budoucnu projeví jako chyba.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Tato aplikace nemá nastavenou žádnou maximální verzi Nextcloudu. To se v budoucnu projeví jako chyba.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Tuto aplikaci nelze nainstalovat, protože nejsou splněny následující závislosti:", + "View in store" : "Zobrazit v obchodě", + "Visit website" : "Navštívit webovou stránku", + "Report a bug" : "Nahlásit chybu", + "User documentation" : "Dokumentace pro uživatele", + "Admin documentation" : "Dokumentace pro administrátory", + "Developer documentation" : "Vývojářská dokumentace", + "Update to {update}" : "Aktualizovat na {update}", + "Results from other categories" : "Výsledky z ostatních kategorií", + "No apps found for your version" : "Nebyly nalezeny aplikace pro vaši verzi", + "Disable all" : "Zakázat vše", + "Enable all" : "Zapnout vše", + "Download and enable" : "Stáhnout a zapnout", + "Enable" : "Povolit", + "Enable untested app" : "Zapnout nevyzkoušenou aplikaci", + "The app will be downloaded from the app store" : "Aplikace bude stažena z obchodu aplikací", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Tato aplikace není označena jako kompatibilní s vámi používanou verzí Nexcloud. Pokud budete pokračovat, pořád budete moci aplikaci nainstalovat. Uvědomte si ale, že aplikace nemusí fungovat, jak je očekáváno.", + "You do not have permissions to see the details of this user" : "Nemáte oprávnění k zobrazení podrobností o tomto uživateli", + "The backend does not support changing the display name" : "Podpůrná vrstva nepodporuje změnu zobrazovaného názvu", + "New password" : "Nové heslo", + "Add user in group" : "Přidat uživatele do skupiny", + "Set user as admin for" : "Nastavit uživatele jako správce pro", + "Select user quota" : "Vybrat kvótu uživatele", + "No language set" : "Není nastaven jazyk", + "Never" : "Nikdy", + "Delete user" : "Smazat uživatele", + "Wipe all devices" : "Vymazat všechna zařízení", + "Disable user" : "Znepřístupnit uživatelský účet", + "Enable user" : "Zpřístupnit uživatelský účet", + "Resend welcome email" : "Znovu poslat uvítací email", + "{size} used" : "{size} použito", + "Welcome mail sent!" : "Uvítací email odeslán!", + "Display name" : "Zobrazované jméno", + "Email" : "Email", + "Group admin for" : "Správce skupiny", + "Quota" : "Kvóta", + "Language" : "Jazyk", + "Storage location" : "Úložiště dat", + "User backend" : "Backend uživatelů", + "Last login" : "Poslední přihlášení", + "Will be autogenerated" : "Bude automaticky vytvořeno", + "Default language" : "Výchozí jazyk", + "Add a new user" : "Přidat nového uživatele", + "No users in here" : "Nejsou zde žádní uživatelé", + "Default quota" : "Výchozí kvóta", + "Password change is disabled because the master key is disabled" : "Změna hesla je vypnutá protože je vypnutý hlavní klíč", + "Common languages" : "Běžné jazyky", + "All languages" : "Všechny jazyky", + "Your apps" : "Vaše aplikace", + "Active apps" : "Aktivní aplikace", + "Disabled apps" : "Vypnuté aplikace", + "Updates" : "Aktualizace", + "App bundles" : "Sady aplikací", + "{license}-licensed" : "licencováno pod {license}", + "New user" : "Nový uživatel", + "Default quota:" : "Výchozí kvóta:", + "Select default quota" : "Vybrat výchozí kvótu", + "Show Languages" : "Zobrazit jazyky", + "Show last login" : "Zobrazit poslední přihlášení", + "Show user backend" : "Zobrazit vedení uživatelů", + "Show storage path" : "Zobrazit cestu k úložišti", + "You are about to remove the group {group}. The users will NOT be deleted." : "Chystáte se smazat skupinu {group}. Uživatelé NEbudou smazáni.", + "Please confirm the group removal " : "Potvrďte odstranění skupiny", + "Remove group" : "Odebrat skupinu", + "Admins" : "Správci", + "Disabled users" : "Zakázaní uživatelé", + "Everyone" : "Všichni", + "Add group" : "Přidat skupinu", + "An error occured during the request. Unable to proceed." : "Během požadavku došlo k chybě. Nelze pokračovat.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Aplikace byla povolena ale je třeba ji aktualizovat. Za 5 sekund budete přesměrování na stránku pro aktualizaci.", + "App update" : "Aktualizace aplikace", + "Error: This app can not be enabled because it makes the server unstable" : "Chyba: tuto aplikaci nelze zapnout, protože způsobuje nestabilitu serveru", + "SSL Root Certificates" : "Kořenové certifikáty SSL", + "Common Name" : "Common Name", + "Valid until" : "Platný do", + "Issued By" : "Vydal", + "Valid until %s" : "Platný do %s", + "Import root certificate" : "Import kořenového certifikátu", + "Administrator documentation" : "Dokumentace pro správu", + "Documentation" : "Dokumentace", + "Forum" : "Diskuzní fórum", + "None" : "Žádné", + "Login" : "Přihlásit", + "Plain" : "Čistý text", + "NT LAN Manager" : "Správce NT LAN", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Emailový server", + "Open documentation" : "Otevřít dokumentaci", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Je důležité tento server nastavit, aby mohly být odesílány emaily, jako jsou např. resety hesla a upozornění.", + "Send mode" : "Mód odesílání", + "Encryption" : "Šifrování", + "Sendmail mode" : "Režim sendmail", + "From address" : "Adresa odesílatele", + "mail" : "email", + "Authentication method" : "Metoda ověření", + "Authentication required" : "Vyžadováno ověření", + "Server address" : "Adresa serveru", + "Port" : "Port", + "Credentials" : "Přihlašovací údaje", + "SMTP Username" : "SMTP uživatelské jméno ", + "SMTP Password" : "SMTP heslo", + "Save" : "Uložit", + "Test email settings" : "Test nastavení e-mailu", + "Send email" : "Odeslat email", + "Security & setup warnings" : "Upozornění zabezpečení a nastavení", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Pro zabezpečení a optimální výkon instance Nextcloud je důležitě, aby vše bylo správně nastaveno. Jako pomoc, instance samotná automaticky ověřuje některá nastavení. Více informací je k nalezení v dokumentaci, sekci Tipy a Triky.", + "All checks passed." : "Všechny testy proběhly úspěšně.", + "There are some errors regarding your setup." : "Jsou zde nějaké chyby ohledně vašeho nastavení.", + "There are some warnings regarding your setup." : "Jsou zde nějaká varování ohledně vašeho nastavení.", + "Checking for system and security issues." : "Kontrola systému a problémů se zabezpečením.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Důkladně si přečtěte <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">průvodce instalací ↗</a> a zkontrolujte, že v <a href=\"%2$s\">záznamu událostí</a> nejsou žádné chyby ani varování.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Zkontrolujte zabezpečení svého Nextcloud přes <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">náš skener zabezpečení ↗</a>.", + "Version" : "Verze", + "Two-Factor Authentication" : "Dvoufázové ověření", + "Server-side encryption" : "Šifrování na straně serveru", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Šifrování na straně serveru umožňuje zašifrovat soubory, které jsou na tento server nahrávány. To přináší omezení jako třeba výkonnostní omezení, takže to povolte jen pokud je třeba.", + "Enable server-side encryption" : "Povolit šifrování na straně serveru", + "Please read carefully before activating server-side encryption: " : "Pročtěte důkladně před zapnutím šifrování dat na serveru:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Poté co je zapnuto šifrování, jsou od toho bodu všechny nahrávané soubory šifrovány serverem. Vypnout šifrování bude možné pouze později, až bude šifrovací modul tuto možnost podporovat a po splnění všech nutných podmínek (tzn. nastavení klíčů pro obnovení).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Šifrování samotné ještě negarantuje bezpečnost systému. Přečtěte si prosím dokumentaci, chcete-li se dozvědět více informací o tom, jak aplikace pro šifrování funguje a jaké jsou podporované případy použití.", + "Be aware that encryption always increases the file size." : "Mějte na paměti, že šifrování vždy navýší velikost souboru.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Je vždy dobré vytvářet pravidelné zálohy svých dat, v případě zapnutého šifrování také zajistěte zálohu šifrovacích klíčů společně se zálohou dat.", + "This is the final warning: Do you really want to enable encryption?" : "Toto je poslední varování: Opravdu si přejete zapnout šifrování?", + "Enable encryption" : "Povolit šifrování", + "No encryption module loaded, please enable an encryption module in the app menu." : "Není načten žádný šifrovací modul, povolte ho v nabídce aplikace.", + "Select default encryption module:" : "Vybrat výchozí šifrovací modul:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Je třeba přenést své šifrovací klíče ze staré verze šifrování (ownCloud <= 8.0) na novou. Povolte prosím „Default encryption module“ a spusťte příkaz 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Je třeba přenést své šifrovací klíče ze staré verze šifrování (ownCloud <= 8.0) na novou.", + "Start migration" : "Spustit migraci", + "Background jobs" : "Úkoly na pozadí", + "Last job ran %s." : "Poslední úloha byla vykonána: %s.", + "Last job execution ran %s. Something seems wrong." : "Minulá úloha byla vykonána: %s. Zdá se, že něco není v pořádku.", + "Background job didn’t run yet!" : "Úloha na pozadí ještě nebyla spuštěná!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Pro optimální výkon je důležité správně nastavit úlohy spouštěné na pozadí. Pro větší instance je doporučenou metodou použití systémového plánovače (cron). Více informací naleznete v dokumentaci.", + "Pick background job setting" : "Vybrat nastavení úlohy na pozadí", + "Execute one task with each page loaded" : "Spustit jednu úlohu s načtením každé stránky", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php je zaregistrován na službě webcron a bude přes HTTP volán každých 5 minut.", + "Use system cron service to call the cron.php file every 5 minutes." : "Použít systémový plánovač (cron) pro volání souboru cron.php každých 5 minut.", + "The cron.php needs to be executed by the system user \"%s\"." : "Je třeba, aby cron.php bylo spouštěno s právy systémového uživatele „%s“.", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Pro spuštění je potřeba PHP POSIX rozšíření. Více informací lze nalézt v {linkstart}dokumentaci k PHP{linkend}.", + "Sharing" : "Sdílení", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Jako správce můžete upravit chování sdílení. Více informací naleznete v dokumentaci.", + "Allow apps to use the Share API" : "Umožnit aplikacím používat API sdílení", + "Allow users to share via link" : "Umožnit uživatelům sdílet pomocí odkazů", + "Allow public uploads" : "Umožnit veřejné nahrávání souborů", + "Always ask for a password" : "Vždy se zeptat na heslo", + "Enforce password protection" : "Vynutit ochranu heslem", + "Set default expiration date" : "Nastavit výchozí datum skončení platnosti", + "Expire after " : "Platnost skončí po", + "days" : "dnech", + "Enforce expiration date" : "Vynutit datum skončení platnosti", + "Allow resharing" : "Povolit znovu-sdílení", + "Allow sharing with groups" : "Povolit sdílení se skupinami", + "Restrict users to only share with users in their groups" : "Povolit sdílení pouze mezi uživateli v rámci skupiny", + "Exclude groups from sharing" : "Vyjmout skupiny ze sdílení", + "These groups will still be able to receive shares, but not to initiate them." : "Těmto skupinám bude stále možno sdílet, nemohou ale sami sdílet ostatním.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Povolit automatické dokončení uživatelského jména v dialogovém okně sdílení. Pokud je tato volba zakázána, je třeba zadat úplné uživatelské jméno nebo emailovou adresu.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Zobrazit text upozornění na stránce pro nahrání veřejného odkazu. (Zobrazit pouze pokud je seznam souborů skrytý.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Tento text bude zobrazen on stránce pro nahrání veřejného odkazu, pokud bude seznam souborů skrytý.", + "Default share permissions" : "Výchozí oprávnění sdílení", + "Personal" : "Osobní", + "Administration" : "Správa", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Vyvíjeno {communityopen}komunitou Nextcloud{linkclose}, {githubopen}zdrojové kódy{linkclose} jsou licencovány pod {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Lajkujte naše stránky na Facebooku", + "Follow us on Twitter" : "Sledujte nás na Twitteru", + "Follow us on Mastodon" : "Sledujte nás na Mastodon", + "Check out our blog" : "Podívejte se na náš blog", + "Subscribe to our newsletter" : "Odebírejte náš zpravodaj", + "Profile picture" : "Profilový obrázek", + "Upload new" : "Nahrát nový", + "Select from Files" : "Vybrat ze Souborů", + "Remove image" : "Odebrat obrázek", + "png or jpg, max. 20 MB" : "png nebo jpg, max. 20 MB", + "Picture provided by original account" : "Obrázek je poskytován původním účtem", + "Cancel" : "Zrušit", + "Choose as profile picture" : "Vybrat jako profilový obrázek", + "Details" : "Podrobnosti", + "You are a member of the following groups:" : "Jste členem následujících skupin:", + "You are using <strong>%s</strong>" : "Používáte <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Používáte <strong>%1$s</strong> z <strong>%2$s</strong> (<strong>%3$s %%</strong>)", + "Full name" : "Celé jméno", + "No display name set" : "Jméno pro zobrazení nenastaveno", + "Your email address" : "Vaše emailová adresa", + "No email address set" : "Emailová adresa není nastavena", + "For password reset and notifications" : "Pro obnovení hesla a upozornění", + "Phone number" : "Telefonní číslo", + "Your phone number" : "Vlastní telefonní číslo", + "Address" : "Adresa", + "Your postal address" : "Vlastní poštovní adresa", + "Website" : "Webová stránka", + "It can take up to 24 hours before the account is displayed as verified." : "Může trvat až 24 hodin, než se účet zobrazí jako ověřený.", + "Link https://…" : "Odkaz https://…", + "Twitter" : "Twitter", + "Twitter handle @…" : "Přezdívka na Twitteru @…", + "Help translate" : "Pomoci s překladem", + "Locale" : "Místní a jazyková nastavení", + "Current password" : "stávající heslo", + "Change password" : "Změnit heslo", + "Use a second factor besides your password to increase security for your account." : "Pro zlepšení zabezpečení vašeho účtu použijte vedle hesla také druhý faktor.", + "Disconnect" : "Odpojit", + "Not supported!" : "Nepodporováno!", + "Press ⌘-C to copy." : "Zkopírujete stisknutím ⌘-C.", + "Press Ctrl-C to copy." : "Zkopírujete stisknutím Ctrl-C.", + "Error while loading browser sessions and device tokens" : "Chyba při načítání sezení prohlížeče a tokenů přístroje", + "Store credentials" : "Ukládat přihlašovací údaje", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php je registrován u služby webcron, aby volal cron.php jednou za 15 minut přes HTTP.", + "Use system cron service to call the cron.php file every 15 minutes." : "Použít systémovou službu cron pro volání cron.php každých 15 minut.", + "Follow us on Google+" : "Následujte nás na Google+" +},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;" +} \ No newline at end of file diff --git a/apps/settings/l10n/da.js b/apps/settings/l10n/da.js new file mode 100644 index 00000000000..3472063ae18 --- /dev/null +++ b/apps/settings/l10n/da.js @@ -0,0 +1,298 @@ +OC.L10N.register( + "settings", + { + "{actor} added you to group {group}" : "{actor} tilføjede dig til gruppe {group}", + "You added {user} to group {group}" : "Tilføjede {user} til gruppen {group}", + "{actor} added {user} to group {group}" : "{actor} tilføjede {user} til gruppe {group}", + "An administrator added you to group {group}" : "En administrator tilføjede dig til gruppen {group}", + "An administrator added {user} to group {group}" : "En administrator tilføjede {user} til gruppen {group}", + "{actor} removed you from group {group}" : "{actor} fjernede dig fra gruppen {group}", + "You removed {user} from group {group}" : "Fjernede {user} fra gruppen {group}", + "{actor} removed {user} from group {group}" : "{actor} fjernede {user}fra gruppen {group}", + "An administrator removed you from group {group}" : "En administrator fjernede dig fra gruppen {group}", + "An administrator removed {user} from group {group}" : "En administrator fjernede {user} fra gruppen {group}", + "Your <strong>group memberships</strong> were modified" : "Dine <strong>gruppemedlemsskaber</strong> blev ændret", + "{actor} changed your password" : "{actor} ændrede din adgangskode", + "You changed your password" : "Du ændrede din kode", + "Your password was reset by an administrator" : "Din adgangskode er blevet resat af en administrator", + "{actor} changed your email address" : "{actor} skiftede din e-mail adresse", + "You changed your email address" : "Du har ændret din email adresse", + "Your email address was changed by an administrator" : "Din email adresse er blevet ændret af en administrator", + "Security" : "Sikkerhed", + "You successfully logged in using two-factor authentication (%1$s)" : "Du loggede in ved at bruge two-factor authentication (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Et login forsøg mislykkedes med two-factor authentication (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Dit <strong>password</strong> eller <strong>email</strong> blev ændret", + "Couldn't remove app." : "Kunne ikke fjerne app'en.", + "Couldn't update app." : "Kunne ikke opdatere app'en.", + "Wrong password" : "Forkert kodeord", + "Saved" : "Gemt", + "No user supplied" : "Intet brugernavn givet", + "Unable to change password" : "Kunne ikke ændre kodeord", + "Authentication error" : "Adgangsfejl", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Angiv venligst en administrator gendannelseskode, ellers vil alt brugerdata gå tabt", + "Wrong admin recovery password. Please check the password and try again." : "Forkert admin gendannelseskode. Se venligst koden efter og prøv igen.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Backend'en understøtter ikke skift af kodeord, men opdateringen af brugerens krypteringsnøgle blev gennemført.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "installation og opdatering af apps via app-butikken eller sammensluttet Cloud deling", + "Federated Cloud Sharing" : "Sammensluttet Cloud deling", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL bruger en forældet %1$s version (%2$s). Du skal opdatere dit styresystem for at funktioner som %3$s virker pålideligt.", + "Invalid SMTP password." : "Ikke gyldigt SMTP password", + "Email setting test" : "Test email-indstillinger", + "Well done, %s!" : "Godt gået, %s!", + "If you received this email, the email configuration seems to be correct." : "Hvis du har modtaget denne email, så er email konfigureret rigtigt.", + "Email could not be sent. Check your mail server log" : "Email kunne ikke sendes. Tjek din mail server log", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Der opstod et problem under afsendelse af e-mailen. Gennemse venligst dine indstillinger. (Fejl: %s)", + "You need to set your user email before being able to send test emails." : "Du skal angive din bruger-e-mail før der kan sendes test-e-mail.", + "Invalid mail address" : "Ugyldig mailadresse", + "Settings saved" : "Indstillinger gemt", + "Unable to change full name" : "Ikke i stand til at ændre dit fulde navn", + "Unable to change email address" : "Kan ikke ændre emailadressen", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "For at verificerer din Twitter konto, post den følgende tweet på Twitter (Sørg for at poste det uden linjeskift)", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "For at bekræfte din hjemmeside, opbevare følgende indhold i din web-roden '.well-known/CloudIdVerificationCode.txt' \n(vær sikker på, at den fulde tekst er på en linje):", + "%1$s changed your password on %2$s." : "%1$s ændrede dit password på %2$s.", + "Your password on %s was changed." : "Dit password på %s blev ændret.", + "Your password on %s was reset by an administrator." : "Dit password på %s er blevet nulstillet af en administrator.", + "Password for %1$s changed on %2$s" : "Password for %1$s er ændret på %2$s", + "Password changed for %s" : "Password ændret for %s", + "If you did not request this, please contact an administrator." : "Kontakt en administrator, hvis du ikke har bedt om dette.", + "Your email address on %s was changed." : "Din email på %s blev ændret.", + "Your email address on %s was changed by an administrator." : "Din email adresse på %s er blevet ændret af en administrator", + "Email address for %1$s changed on %2$s" : "Email adresse for %1$s ændret på %2$s", + "Email address changed for %s" : "Email adresse ændret for %s", + "The new email address is %s" : "Den nye email adresse er %s", + "Your %s account was created" : "Din %s-konto blev oprettet", + "Welcome aboard" : "Velkommen ombord", + "Welcome aboard %s" : "velkommen ombord %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Velkommen til din %s konto, du kan tilføje, beskytte og dele dine data.", + "Your username is: %s" : "Dit brugernavn er: %s", + "Set your password" : "Sæt dit password", + "Go to %s" : "Gå til %s", + "Install Client" : "Installer client", + "Create" : "Opret", + "Delete" : "Slet", + "Unlimited" : "Ubegrænset", + "Verifying …" : "Bekræfter.....", + "Verify" : "Bekræft", + "Migration in progress. Please wait until the migration is finished" : "Immigration er i gang. Vent venligst indtil overflytningen er afsluttet", + "Migration started …" : "Migrering er påbegyndt...", + "Not saved" : "Ikke gemt", + "Sending…" : "Sender...", + "Email sent" : "E-mail afsendt", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Der opstod en fejl. Upload venligst et ASCII-indkodet PEM-certifikat.", + "Valid until {date}" : "Gyldig indtil {date}", + "Local" : "Lokal", + "Private" : "Privat", + "Only visible to local users" : "Kun synlig for lokale brugere", + "Only visible to you" : "Kun synlig for dig", + "Contacts" : "Kontakter", + "Public" : "Offentlig", + "Very weak password" : "Meget svagt kodeord", + "Weak password" : "Svagt kodeord", + "So-so password" : "Jævnt kodeord", + "Good password" : "Godt kodeord", + "Strong password" : "Stærkt kodeord", + "Select a profile picture" : "Vælg et profilbillede", + "Week starts on {fdow}" : "Ugen starter {fdow}", + "Groups" : "Grupper", + "Group list is empty" : "Tom gruppeliste", + "Limit to groups" : "Begræns til grupper", + "Excluded groups" : "Ekskluderede grupper", + "Save changes" : "Gem ændringer", + "Device settings" : "Enhedsindstillinger", + "Allow filesystem access" : "Tillad filsystem adgang", + "Revoke" : "Tilbagekald", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome til Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Nextcloud iOS app", + "Nextcloud Android app" : "Nextcloud Android app", + "Nextcloud Talk for iOS" : "Nextcloud Talk til iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk til Android", + "Sync client - {os}" : "Synk klient - {os}", + "This session" : "Sessionen", + "Device" : "Enhed", + "Last activity" : "Sidste aktivitet", + "Devices & sessions" : "Enheder og sessioner", + "Web, desktop and mobile clients currently logged in to your account." : "Web, stationære og mobile klienter, der er logget ind på din konto.", + "Error while creating device token" : "Fejl ved oprettelse af enhedsnøgle", + "Error while deleting the token" : "Fejl ved sletning af enhedsnøgle", + "App name" : "App navn", + "Create new app password" : "Opret nyt app kodeord", + "Username" : "Brugernavn", + "Password" : "Kodeord", + "Done" : "Færdig", + "Copied!" : "Kopieret", + "Copy" : "Kopier", + "Official" : "Officiel", + "by" : "af", + "Update to {version}" : "Opdateret til {version}", + "Remove" : "Fjern", + "Disable" : "Deaktiver", + "All" : "Alle", + "No results" : "Ingen resultater", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Denne app har ikke angivet en mindste understøttede version af Nextcloud. I fremtiden vil det være en fejl.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Denne app har ikke angivet en højeste understøttede version af Nextcloud. I fremtiden vil det være en fejl.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Dette program kan ikke installeres, da følgende afhængigheder ikke imødekommes:", + "View in store" : "Se i butik", + "Visit website" : "Besøg hjemmeside", + "Report a bug" : "Rapporter en fejl", + "User documentation" : "Brugerdokumentation", + "Admin documentation" : "Admin-dokumentation", + "Developer documentation" : "Dokumentation for udviklere", + "Update to {update}" : "Opdater til {update}", + "No apps found for your version" : "Ingen apps fundet til din verion", + "Enable all" : "Aktiver alle", + "Download and enable" : "Download og aktiver", + "Enable" : "Aktiver", + "The app will be downloaded from the app store" : "Appen vil blive downloaded fra app storen.", + "New password" : "Nyt kodeord", + "Add user in group" : "Tilføj bruger i gruppe", + "Set user as admin for" : "Gør bruger til administrator for", + "Select user quota" : "Vælg brugerkvote", + "Never" : "Aldrig", + "Delete user" : "Slet bruger", + "Disable user" : "Deaktiver bruger", + "Enable user" : "Aktiver bruger", + "Resend welcome email" : "Send velkomstemail igen", + "{size} used" : "{size} brugt", + "Welcome mail sent!" : "Velkomstemail sendt!", + "Display name" : "Vist navn", + "Email" : "E-mail", + "Group admin for" : "Gruppeadministrator for", + "Quota" : "Kvote", + "Language" : "Sprog", + "Storage location" : "Placering af lageret", + "User backend" : "Bruger-backend", + "Last login" : "Seneste login", + "Default language" : "Standardsprog", + "Add a new user" : "Tilføj en bruger", + "No users in here" : "Ingen brugere her", + "Default quota" : "Standard kvote", + "Common languages" : "Hyppigt brugte sprog", + "All languages" : "Alle sprog", + "Your apps" : "Dine apps", + "Active apps" : "Aktive apps", + "Disabled apps" : "Deaktiverede apps", + "Updates" : "Opdateringer", + "App bundles" : "App bundles", + "New user" : "Ny bruger", + "Default quota:" : "Standardkvote:", + "Select default quota" : "Vælg standardkvote", + "Show Languages" : "Vis sprog", + "Show last login" : "Vis seneste login", + "Show user backend" : "Vis bruger-backend", + "You are about to remove the group {group}. The users will NOT be deleted." : "Du er ved at fjerne gruppen {group}. Brugerne bliver IKKE slettet.", + "Please confirm the group removal " : "Bekræft at gruppen skal fjernes", + "Remove group" : "Fjern gruppe", + "Admins" : "Administratore", + "Disabled users" : "Deaktiverede brugere", + "Everyone" : "Alle", + "Add group" : "Tilføj gruppe", + "App update" : "App opdatering", + "Error: This app can not be enabled because it makes the server unstable" : "Fejl: Denne app kan ikke aktiveres fordi den gør serveren ustabil", + "SSL Root Certificates" : "SSL rodcertifikater", + "Common Name" : "Almindeligt navn", + "Valid until" : "Gyldig indtil", + "Issued By" : "Udstedt af", + "Valid until %s" : "Gyldig indtil %s", + "Import root certificate" : "Importer rodcertifikat", + "Administrator documentation" : "Administratordokumentation", + "Documentation" : "Dokumentation", + "Forum" : "Forum", + "None" : "Ingen", + "Login" : "Login", + "Plain" : "Klartekst", + "NT LAN Manager" : "NT LAN Manager", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "E-mailserver", + "Open documentation" : "Åbn dokumentation", + "Send mode" : "Tilstand for afsendelse", + "Encryption" : "Kryptering", + "From address" : "Fra adresse", + "mail" : "mail", + "Authentication method" : "Godkendelsesmetode", + "Authentication required" : "Godkendelse påkrævet", + "Server address" : "Serveradresse", + "Port" : "Port", + "Credentials" : "Brugeroplysninger", + "SMTP Username" : "SMTP Brugernavn", + "SMTP Password" : "SMTP Kodeord", + "Test email settings" : "Test e-mail-indstillinger", + "Send email" : "Send e-mail", + "Security & setup warnings" : "Advarsler om sikkerhed og opsætning", + "All checks passed." : "Alle tjek blev bestået.", + "Version" : "Version", + "Two-Factor Authentication" : "To-faktor godkendelse", + "Server-side encryption" : "Kryptering på serversiden", + "Enable server-side encryption" : "Slå kryptering til på serversiden", + "Please read carefully before activating server-side encryption: " : "Læs venligst dette omhyggeligt, før der aktivere kryptering på serversiden:", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Kryptering alene garanterer ikke systemets sikkerhed. I dokumentationen er der mere information om hvordan krypteringsappen virker, og kan bruges.", + "Be aware that encryption always increases the file size." : "Vær opmærksom på at kryptering altid øger filstørrelsen.", + "This is the final warning: Do you really want to enable encryption?" : "Dette er den sidste advarsel: Sikker på at du vil slå kryptering til?", + "Enable encryption" : "Slå kryptering til", + "No encryption module loaded, please enable an encryption module in the app menu." : "Der er ikke indlæst et krypteringsmodul - slå venligst et krypteringsmodul til i app-menuen.", + "Select default encryption module:" : "Vælg standardmodulet til kryptering:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Du skal immigrere dine krypteringsnøgler fra den gamle kryptering (ownCloud <= 8.0) til den nye af slagsen. Slå venligst \"Standardmodul til kryptering\" til, og kør \"occ encryption:migrate\"", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Du skal immigrere dine krypteringsnøgler fra den gamle kryptering (ownCloud <= 8.0) til den nye af slagsen.", + "Start migration" : "Påbegynd immigrering", + "Execute one task with each page loaded" : "Udføre en opgave med hver side indlæsning", + "Sharing" : "Deling", + "Allow apps to use the Share API" : "Tillad apps til at bruge Share API", + "Allow users to share via link" : "Tillad brugere at dele via link", + "Allow public uploads" : "Tillad offentlig upload", + "Always ask for a password" : "Spørg altid efter kodeord", + "Enforce password protection" : "Gennemtving beskyttelse med kodeord", + "Set default expiration date" : "Vælg standard udløbsdato", + "Expire after " : "Udløber efter", + "days" : "dage", + "Enforce expiration date" : "Påtving udløbsdato", + "Allow resharing" : "Tillad videredeling", + "Allow sharing with groups" : "Tillad deling med grupper", + "Restrict users to only share with users in their groups" : "Begræns brugere til kun at dele med brugere i deres egen gruppe", + "Exclude groups from sharing" : "Ekskluder grupper fra at dele", + "These groups will still be able to receive shares, but not to initiate them." : "Disse grupper vil stadig kunne modtage delefiler, men ikke skabe dem.", + "Personal" : "Personligt", + "Administration" : "Administration", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Udviklet af {communityopen}Nextcloud fællesskabet{linkclose}, {githubopen}kildekoden{linkclose} er udgivet med {licenseopen}AGPL{linkclose} licensen.", + "Like our Facebook page" : "Følg os på Facebook", + "Follow us on Twitter" : "Følg os på Twitter", + "Follow us on Mastodon" : "Følg os på Mastodon", + "Check out our blog" : "Besøg vores blog", + "Subscribe to our newsletter" : "Abonner på vores nyhedsbrev", + "Profile picture" : "Profilbillede", + "Upload new" : "Upload nyt", + "Select from Files" : "Vælg fra filer", + "Remove image" : "Fjern billede", + "png or jpg, max. 20 MB" : "png eller jpg, max. 20 MB", + "Picture provided by original account" : "Billede leveret af den oprindelige konto", + "Cancel" : "Annuller", + "Choose as profile picture" : "Vælg et profilbillede", + "Details" : "Detaljer", + "You are a member of the following groups:" : "Du er medlem af følgende grupper:", + "You are using <strong>%s</strong>" : "Du bruger <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Du bruger <strong>%1$s</strong> af <strong>%2$s</strong> (<strong>%3$s %%</strong>)", + "Full name" : "Fulde navn", + "No display name set" : "Der er ikke angivet skærmnavn", + "Your email address" : "Din e-mailadresse", + "No email address set" : "Der er ikke angivet e-mailadresse", + "For password reset and notifications" : "Til nulstilling af adgangskoder og meddelelser", + "Phone number" : "Telefon nummer", + "Your phone number" : "Dit telefon nummer", + "Address" : "Adresse", + "Your postal address" : "Dit Postnummer", + "Website" : "Hjemmeside", + "It can take up to 24 hours before the account is displayed as verified." : "Det kan tage op til 24 timer, før kontoen vises som verificeret.", + "Link https://…" : "Link https://…", + "Twitter" : "Twitter", + "Twitter handle @…" : "Twitter handle @…", + "Help translate" : "Hjælp med oversættelsen", + "Current password" : "Nuværende adgangskode", + "Change password" : "Skift kodeord", + "Store credentials" : "Gem brugeroplysninger" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/da.json b/apps/settings/l10n/da.json new file mode 100644 index 00000000000..ee186819a17 --- /dev/null +++ b/apps/settings/l10n/da.json @@ -0,0 +1,296 @@ +{ "translations": { + "{actor} added you to group {group}" : "{actor} tilføjede dig til gruppe {group}", + "You added {user} to group {group}" : "Tilføjede {user} til gruppen {group}", + "{actor} added {user} to group {group}" : "{actor} tilføjede {user} til gruppe {group}", + "An administrator added you to group {group}" : "En administrator tilføjede dig til gruppen {group}", + "An administrator added {user} to group {group}" : "En administrator tilføjede {user} til gruppen {group}", + "{actor} removed you from group {group}" : "{actor} fjernede dig fra gruppen {group}", + "You removed {user} from group {group}" : "Fjernede {user} fra gruppen {group}", + "{actor} removed {user} from group {group}" : "{actor} fjernede {user}fra gruppen {group}", + "An administrator removed you from group {group}" : "En administrator fjernede dig fra gruppen {group}", + "An administrator removed {user} from group {group}" : "En administrator fjernede {user} fra gruppen {group}", + "Your <strong>group memberships</strong> were modified" : "Dine <strong>gruppemedlemsskaber</strong> blev ændret", + "{actor} changed your password" : "{actor} ændrede din adgangskode", + "You changed your password" : "Du ændrede din kode", + "Your password was reset by an administrator" : "Din adgangskode er blevet resat af en administrator", + "{actor} changed your email address" : "{actor} skiftede din e-mail adresse", + "You changed your email address" : "Du har ændret din email adresse", + "Your email address was changed by an administrator" : "Din email adresse er blevet ændret af en administrator", + "Security" : "Sikkerhed", + "You successfully logged in using two-factor authentication (%1$s)" : "Du loggede in ved at bruge two-factor authentication (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Et login forsøg mislykkedes med two-factor authentication (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Dit <strong>password</strong> eller <strong>email</strong> blev ændret", + "Couldn't remove app." : "Kunne ikke fjerne app'en.", + "Couldn't update app." : "Kunne ikke opdatere app'en.", + "Wrong password" : "Forkert kodeord", + "Saved" : "Gemt", + "No user supplied" : "Intet brugernavn givet", + "Unable to change password" : "Kunne ikke ændre kodeord", + "Authentication error" : "Adgangsfejl", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Angiv venligst en administrator gendannelseskode, ellers vil alt brugerdata gå tabt", + "Wrong admin recovery password. Please check the password and try again." : "Forkert admin gendannelseskode. Se venligst koden efter og prøv igen.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Backend'en understøtter ikke skift af kodeord, men opdateringen af brugerens krypteringsnøgle blev gennemført.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "installation og opdatering af apps via app-butikken eller sammensluttet Cloud deling", + "Federated Cloud Sharing" : "Sammensluttet Cloud deling", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL bruger en forældet %1$s version (%2$s). Du skal opdatere dit styresystem for at funktioner som %3$s virker pålideligt.", + "Invalid SMTP password." : "Ikke gyldigt SMTP password", + "Email setting test" : "Test email-indstillinger", + "Well done, %s!" : "Godt gået, %s!", + "If you received this email, the email configuration seems to be correct." : "Hvis du har modtaget denne email, så er email konfigureret rigtigt.", + "Email could not be sent. Check your mail server log" : "Email kunne ikke sendes. Tjek din mail server log", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Der opstod et problem under afsendelse af e-mailen. Gennemse venligst dine indstillinger. (Fejl: %s)", + "You need to set your user email before being able to send test emails." : "Du skal angive din bruger-e-mail før der kan sendes test-e-mail.", + "Invalid mail address" : "Ugyldig mailadresse", + "Settings saved" : "Indstillinger gemt", + "Unable to change full name" : "Ikke i stand til at ændre dit fulde navn", + "Unable to change email address" : "Kan ikke ændre emailadressen", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "For at verificerer din Twitter konto, post den følgende tweet på Twitter (Sørg for at poste det uden linjeskift)", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "For at bekræfte din hjemmeside, opbevare følgende indhold i din web-roden '.well-known/CloudIdVerificationCode.txt' \n(vær sikker på, at den fulde tekst er på en linje):", + "%1$s changed your password on %2$s." : "%1$s ændrede dit password på %2$s.", + "Your password on %s was changed." : "Dit password på %s blev ændret.", + "Your password on %s was reset by an administrator." : "Dit password på %s er blevet nulstillet af en administrator.", + "Password for %1$s changed on %2$s" : "Password for %1$s er ændret på %2$s", + "Password changed for %s" : "Password ændret for %s", + "If you did not request this, please contact an administrator." : "Kontakt en administrator, hvis du ikke har bedt om dette.", + "Your email address on %s was changed." : "Din email på %s blev ændret.", + "Your email address on %s was changed by an administrator." : "Din email adresse på %s er blevet ændret af en administrator", + "Email address for %1$s changed on %2$s" : "Email adresse for %1$s ændret på %2$s", + "Email address changed for %s" : "Email adresse ændret for %s", + "The new email address is %s" : "Den nye email adresse er %s", + "Your %s account was created" : "Din %s-konto blev oprettet", + "Welcome aboard" : "Velkommen ombord", + "Welcome aboard %s" : "velkommen ombord %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Velkommen til din %s konto, du kan tilføje, beskytte og dele dine data.", + "Your username is: %s" : "Dit brugernavn er: %s", + "Set your password" : "Sæt dit password", + "Go to %s" : "Gå til %s", + "Install Client" : "Installer client", + "Create" : "Opret", + "Delete" : "Slet", + "Unlimited" : "Ubegrænset", + "Verifying …" : "Bekræfter.....", + "Verify" : "Bekræft", + "Migration in progress. Please wait until the migration is finished" : "Immigration er i gang. Vent venligst indtil overflytningen er afsluttet", + "Migration started …" : "Migrering er påbegyndt...", + "Not saved" : "Ikke gemt", + "Sending…" : "Sender...", + "Email sent" : "E-mail afsendt", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Der opstod en fejl. Upload venligst et ASCII-indkodet PEM-certifikat.", + "Valid until {date}" : "Gyldig indtil {date}", + "Local" : "Lokal", + "Private" : "Privat", + "Only visible to local users" : "Kun synlig for lokale brugere", + "Only visible to you" : "Kun synlig for dig", + "Contacts" : "Kontakter", + "Public" : "Offentlig", + "Very weak password" : "Meget svagt kodeord", + "Weak password" : "Svagt kodeord", + "So-so password" : "Jævnt kodeord", + "Good password" : "Godt kodeord", + "Strong password" : "Stærkt kodeord", + "Select a profile picture" : "Vælg et profilbillede", + "Week starts on {fdow}" : "Ugen starter {fdow}", + "Groups" : "Grupper", + "Group list is empty" : "Tom gruppeliste", + "Limit to groups" : "Begræns til grupper", + "Excluded groups" : "Ekskluderede grupper", + "Save changes" : "Gem ændringer", + "Device settings" : "Enhedsindstillinger", + "Allow filesystem access" : "Tillad filsystem adgang", + "Revoke" : "Tilbagekald", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome til Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Nextcloud iOS app", + "Nextcloud Android app" : "Nextcloud Android app", + "Nextcloud Talk for iOS" : "Nextcloud Talk til iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk til Android", + "Sync client - {os}" : "Synk klient - {os}", + "This session" : "Sessionen", + "Device" : "Enhed", + "Last activity" : "Sidste aktivitet", + "Devices & sessions" : "Enheder og sessioner", + "Web, desktop and mobile clients currently logged in to your account." : "Web, stationære og mobile klienter, der er logget ind på din konto.", + "Error while creating device token" : "Fejl ved oprettelse af enhedsnøgle", + "Error while deleting the token" : "Fejl ved sletning af enhedsnøgle", + "App name" : "App navn", + "Create new app password" : "Opret nyt app kodeord", + "Username" : "Brugernavn", + "Password" : "Kodeord", + "Done" : "Færdig", + "Copied!" : "Kopieret", + "Copy" : "Kopier", + "Official" : "Officiel", + "by" : "af", + "Update to {version}" : "Opdateret til {version}", + "Remove" : "Fjern", + "Disable" : "Deaktiver", + "All" : "Alle", + "No results" : "Ingen resultater", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Denne app har ikke angivet en mindste understøttede version af Nextcloud. I fremtiden vil det være en fejl.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Denne app har ikke angivet en højeste understøttede version af Nextcloud. I fremtiden vil det være en fejl.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Dette program kan ikke installeres, da følgende afhængigheder ikke imødekommes:", + "View in store" : "Se i butik", + "Visit website" : "Besøg hjemmeside", + "Report a bug" : "Rapporter en fejl", + "User documentation" : "Brugerdokumentation", + "Admin documentation" : "Admin-dokumentation", + "Developer documentation" : "Dokumentation for udviklere", + "Update to {update}" : "Opdater til {update}", + "No apps found for your version" : "Ingen apps fundet til din verion", + "Enable all" : "Aktiver alle", + "Download and enable" : "Download og aktiver", + "Enable" : "Aktiver", + "The app will be downloaded from the app store" : "Appen vil blive downloaded fra app storen.", + "New password" : "Nyt kodeord", + "Add user in group" : "Tilføj bruger i gruppe", + "Set user as admin for" : "Gør bruger til administrator for", + "Select user quota" : "Vælg brugerkvote", + "Never" : "Aldrig", + "Delete user" : "Slet bruger", + "Disable user" : "Deaktiver bruger", + "Enable user" : "Aktiver bruger", + "Resend welcome email" : "Send velkomstemail igen", + "{size} used" : "{size} brugt", + "Welcome mail sent!" : "Velkomstemail sendt!", + "Display name" : "Vist navn", + "Email" : "E-mail", + "Group admin for" : "Gruppeadministrator for", + "Quota" : "Kvote", + "Language" : "Sprog", + "Storage location" : "Placering af lageret", + "User backend" : "Bruger-backend", + "Last login" : "Seneste login", + "Default language" : "Standardsprog", + "Add a new user" : "Tilføj en bruger", + "No users in here" : "Ingen brugere her", + "Default quota" : "Standard kvote", + "Common languages" : "Hyppigt brugte sprog", + "All languages" : "Alle sprog", + "Your apps" : "Dine apps", + "Active apps" : "Aktive apps", + "Disabled apps" : "Deaktiverede apps", + "Updates" : "Opdateringer", + "App bundles" : "App bundles", + "New user" : "Ny bruger", + "Default quota:" : "Standardkvote:", + "Select default quota" : "Vælg standardkvote", + "Show Languages" : "Vis sprog", + "Show last login" : "Vis seneste login", + "Show user backend" : "Vis bruger-backend", + "You are about to remove the group {group}. The users will NOT be deleted." : "Du er ved at fjerne gruppen {group}. Brugerne bliver IKKE slettet.", + "Please confirm the group removal " : "Bekræft at gruppen skal fjernes", + "Remove group" : "Fjern gruppe", + "Admins" : "Administratore", + "Disabled users" : "Deaktiverede brugere", + "Everyone" : "Alle", + "Add group" : "Tilføj gruppe", + "App update" : "App opdatering", + "Error: This app can not be enabled because it makes the server unstable" : "Fejl: Denne app kan ikke aktiveres fordi den gør serveren ustabil", + "SSL Root Certificates" : "SSL rodcertifikater", + "Common Name" : "Almindeligt navn", + "Valid until" : "Gyldig indtil", + "Issued By" : "Udstedt af", + "Valid until %s" : "Gyldig indtil %s", + "Import root certificate" : "Importer rodcertifikat", + "Administrator documentation" : "Administratordokumentation", + "Documentation" : "Dokumentation", + "Forum" : "Forum", + "None" : "Ingen", + "Login" : "Login", + "Plain" : "Klartekst", + "NT LAN Manager" : "NT LAN Manager", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "E-mailserver", + "Open documentation" : "Åbn dokumentation", + "Send mode" : "Tilstand for afsendelse", + "Encryption" : "Kryptering", + "From address" : "Fra adresse", + "mail" : "mail", + "Authentication method" : "Godkendelsesmetode", + "Authentication required" : "Godkendelse påkrævet", + "Server address" : "Serveradresse", + "Port" : "Port", + "Credentials" : "Brugeroplysninger", + "SMTP Username" : "SMTP Brugernavn", + "SMTP Password" : "SMTP Kodeord", + "Test email settings" : "Test e-mail-indstillinger", + "Send email" : "Send e-mail", + "Security & setup warnings" : "Advarsler om sikkerhed og opsætning", + "All checks passed." : "Alle tjek blev bestået.", + "Version" : "Version", + "Two-Factor Authentication" : "To-faktor godkendelse", + "Server-side encryption" : "Kryptering på serversiden", + "Enable server-side encryption" : "Slå kryptering til på serversiden", + "Please read carefully before activating server-side encryption: " : "Læs venligst dette omhyggeligt, før der aktivere kryptering på serversiden:", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Kryptering alene garanterer ikke systemets sikkerhed. I dokumentationen er der mere information om hvordan krypteringsappen virker, og kan bruges.", + "Be aware that encryption always increases the file size." : "Vær opmærksom på at kryptering altid øger filstørrelsen.", + "This is the final warning: Do you really want to enable encryption?" : "Dette er den sidste advarsel: Sikker på at du vil slå kryptering til?", + "Enable encryption" : "Slå kryptering til", + "No encryption module loaded, please enable an encryption module in the app menu." : "Der er ikke indlæst et krypteringsmodul - slå venligst et krypteringsmodul til i app-menuen.", + "Select default encryption module:" : "Vælg standardmodulet til kryptering:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Du skal immigrere dine krypteringsnøgler fra den gamle kryptering (ownCloud <= 8.0) til den nye af slagsen. Slå venligst \"Standardmodul til kryptering\" til, og kør \"occ encryption:migrate\"", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Du skal immigrere dine krypteringsnøgler fra den gamle kryptering (ownCloud <= 8.0) til den nye af slagsen.", + "Start migration" : "Påbegynd immigrering", + "Execute one task with each page loaded" : "Udføre en opgave med hver side indlæsning", + "Sharing" : "Deling", + "Allow apps to use the Share API" : "Tillad apps til at bruge Share API", + "Allow users to share via link" : "Tillad brugere at dele via link", + "Allow public uploads" : "Tillad offentlig upload", + "Always ask for a password" : "Spørg altid efter kodeord", + "Enforce password protection" : "Gennemtving beskyttelse med kodeord", + "Set default expiration date" : "Vælg standard udløbsdato", + "Expire after " : "Udløber efter", + "days" : "dage", + "Enforce expiration date" : "Påtving udløbsdato", + "Allow resharing" : "Tillad videredeling", + "Allow sharing with groups" : "Tillad deling med grupper", + "Restrict users to only share with users in their groups" : "Begræns brugere til kun at dele med brugere i deres egen gruppe", + "Exclude groups from sharing" : "Ekskluder grupper fra at dele", + "These groups will still be able to receive shares, but not to initiate them." : "Disse grupper vil stadig kunne modtage delefiler, men ikke skabe dem.", + "Personal" : "Personligt", + "Administration" : "Administration", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Udviklet af {communityopen}Nextcloud fællesskabet{linkclose}, {githubopen}kildekoden{linkclose} er udgivet med {licenseopen}AGPL{linkclose} licensen.", + "Like our Facebook page" : "Følg os på Facebook", + "Follow us on Twitter" : "Følg os på Twitter", + "Follow us on Mastodon" : "Følg os på Mastodon", + "Check out our blog" : "Besøg vores blog", + "Subscribe to our newsletter" : "Abonner på vores nyhedsbrev", + "Profile picture" : "Profilbillede", + "Upload new" : "Upload nyt", + "Select from Files" : "Vælg fra filer", + "Remove image" : "Fjern billede", + "png or jpg, max. 20 MB" : "png eller jpg, max. 20 MB", + "Picture provided by original account" : "Billede leveret af den oprindelige konto", + "Cancel" : "Annuller", + "Choose as profile picture" : "Vælg et profilbillede", + "Details" : "Detaljer", + "You are a member of the following groups:" : "Du er medlem af følgende grupper:", + "You are using <strong>%s</strong>" : "Du bruger <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Du bruger <strong>%1$s</strong> af <strong>%2$s</strong> (<strong>%3$s %%</strong>)", + "Full name" : "Fulde navn", + "No display name set" : "Der er ikke angivet skærmnavn", + "Your email address" : "Din e-mailadresse", + "No email address set" : "Der er ikke angivet e-mailadresse", + "For password reset and notifications" : "Til nulstilling af adgangskoder og meddelelser", + "Phone number" : "Telefon nummer", + "Your phone number" : "Dit telefon nummer", + "Address" : "Adresse", + "Your postal address" : "Dit Postnummer", + "Website" : "Hjemmeside", + "It can take up to 24 hours before the account is displayed as verified." : "Det kan tage op til 24 timer, før kontoen vises som verificeret.", + "Link https://…" : "Link https://…", + "Twitter" : "Twitter", + "Twitter handle @…" : "Twitter handle @…", + "Help translate" : "Hjælp med oversættelsen", + "Current password" : "Nuværende adgangskode", + "Change password" : "Skift kodeord", + "Store credentials" : "Gem brugeroplysninger" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} \ No newline at end of file diff --git a/apps/settings/l10n/de.js b/apps/settings/l10n/de.js new file mode 100644 index 00000000000..e01eb7a3697 --- /dev/null +++ b/apps/settings/l10n/de.js @@ -0,0 +1,823 @@ +OC.L10N.register( + "settings", + { + "{actor} added you to group {group}" : "{actor} hat Dich zur Gruppe {group} hinzugefügt", + "You added {user} to group {group}" : "Du hast {user} zur Gruppe {group} hinzugefügt", + "{actor} added {user} to group {group}" : "{actor} hat {user} zur Gruppe {group} hinzugefügt", + "An administrator added you to group {group}" : "Ein Administrator hat Dich zur Gruppe {group} hinzugefügt", + "An administrator added {user} to group {group}" : "Ein Administrator hat {user} zur Gruppe {group} hinzugefügt", + "{actor} removed you from group {group}" : "{actor} hat Dich von der Gruppe {group} entfernt", + "You removed {user} from group {group}" : "Du hast {user} von der Gruppe {group} entfernt", + "{actor} removed {user} from group {group}" : "{actor} hat {user} von der Gruppe {group} entfernt", + "An administrator removed you from group {group}" : "Ein Administrator hat Dich von der Gruppe {group} entfernt", + "An administrator removed {user} from group {group}" : "Ein Administrator hat {user} von der Gruppe {group} entfernt", + "Your <strong>group memberships</strong> were modified" : "Deine <strong>Gruppenmitgliedschaft</strong> wurde geändert", + "{actor} changed your password" : "{actor} hat Dein Passwort geändert", + "You changed your password" : "Du hast Dein Passwort geändert", + "Your password was reset by an administrator" : "Dein Passwort wurde vom Administrator zurückgesetzt", + "{actor} changed your email address" : "{actor} hat Deine E-Mail-Adresse geändert", + "You changed your email address" : "Du hast Deine E-Mail-Adresse geändert", + "Your email address was changed by an administrator" : "Deine E-Mail-Adresse wurde von einem Administrator geändert", + "You created app password \"{token}\"" : "Du hast ein App-Passwort erstellt \"{token}\"", + "You deleted app password \"{token}\"" : "Du hast ein App-Passwort entfernt \"{token}\"", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Du hast App-Passwort \"{token}\" in \"{newToken}\" umbenannt", + "You granted filesystem access to app password \"{token}\"" : "Du hast Dateisystemzugriff für App-Passwort \"{token}\" erlaubt", + "You revoked filesystem access from app password \"{token}\"" : "Du hast Dateisystemzugriff für App-Passwort \"{token}\" widerrufen", + "Security" : "Sicherheit", + "You successfully logged in using two-factor authentication (%1$s)" : "Du hast Dich erfolgreich mittels Zwei-Faktor-Authentifizierung angemeldet (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Ein Anmeldeversuch mittels Zwei-Faktor-Authentifizierung schlug fehl (%1$s)", + "Remote wipe was started on %1$s" : "Fernlöschung wurde am %1$s gestartet", + "Remote wipe has finished on %1$s" : "Fernlöschung wurde am %1$s abgeschlossen", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Dein <strong>Passwort</strong> oder Deine <strong>E-Mail-Adresse</strong> wurde geändert", + "Couldn't remove app." : "Die App konnte nicht entfernt werden.", + "Couldn't update app." : "Die App konnte nicht aktualisiert werden.", + "Wrong password" : "Falsches Passwort", + "Saved" : "Gespeichert", + "No user supplied" : "Kein Benutzer angegeben", + "Unable to change password" : "Passwort konnte nicht geändert werden", + "Authentication error" : "Authentifizierungsfehler", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Bitte gib ein Wiederherstellungspasswort für das Administratorkonto an, da sonst alle Benutzerdaten verlorengehen.", + "Wrong admin recovery password. Please check the password and try again." : "Falsches Wiederherstellungspasswort für das Admin-Konto. Bitte überprüfe das Passwort und versuche es erneut.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Das Backend unterstützt die Passwortänderung nicht, aber das Verschlüsselungspasswort des Benutzers wurde aktualisiert.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Das Installieren und Aktualisieren von Apps durch den App-Store oder durch Federated Cloud Sharing", + "Federated Cloud Sharing" : "Federated-Cloud-Sharing", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL verwendet eine veraltete %1$s Version (%2$s). Bitte aktualisiere dein Betriebssystem, da ansonsten Funktionen, wie z.B. %3$s, nicht zuverlässig funktionieren.", + "Invalid SMTP password." : "Ungültiges SMTP-Passwort", + "Email setting test" : "Test der E-Mail-Einstellungen", + "Well done, %s!" : "Gut gemacht, %s!", + "If you received this email, the email configuration seems to be correct." : "Wenn Du diese E-Mail empfangen hast, sind die E-Mail-Einstellungen korrekt.", + "Email could not be sent. Check your mail server log" : "E-Mail konnte nicht versandt werden. Prüfe Dein E-Mail-Server-Protokoll", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Beim Senden der E-Mail ist ein Problem aufgetreten. Bitte überprüfe Deine Einstellungen. (Fehler: %s)", + "You need to set your user email before being able to send test emails." : "Du musst Deine Benutzer-E-Mail-Adresse angeben, bevor Du Test-E-Mails versenden kannst.", + "Invalid mail address" : "Ungültige E-Mail-Adresse", + "Settings saved" : "Einstellungen gespeichert", + "Unable to change full name" : "Der vollständige Name konnte nicht geändert werden", + "Unable to change email address" : "E-Mail-Adresse konnte nicht geändert werden", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Um Dein Twitter-Konto zu überprüfen, veröffentliche bitte den folgenden Tweet auf Twitter (Bitte stelle sicher, dass der Tweet keinen Zeilenumbruch enthält):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Um Deine Webseite zu überprüfen, speichere bitte den folgenden Inhalt im Web-Wurzelverzeichnist in der Datei '.well-known/CloudIdVerificationCode.txt' (bitte stelle sicher, das sich der gesamte Text in einer Zeile befindet):", + "%1$s changed your password on %2$s." : "%1$s hat Dein Passwort auf %2$s geändert.", + "Your password on %s was changed." : "Dein Passwort auf %s wurde geändert.", + "Your password on %s was reset by an administrator." : "Dein Passwort auf %s wurde vom Administrator zurückgesetzt.", + "Password for %1$s changed on %2$s" : "Passwort für %1$s geändert auf %2$s", + "Password changed for %s" : "Passwort geändert für %s", + "If you did not request this, please contact an administrator." : "Wenn Du das nicht angefordert haben solltest, wende Dich bitte an den Administrator.", + "Your email address on %s was changed." : "Deine E-Mail-Adresse auf %s wurde geändert.", + "Your email address on %s was changed by an administrator." : "Deine E-Mail-Adresse auf %s wurde von einem Administrator geändert.", + "Email address for %1$s changed on %2$s" : "E-Mail-Adresse für %1$s geändert auf %2$s", + "Email address changed for %s" : "E-Mail-Adresse geändert für %s", + "The new email address is %s" : "Die neue E-Mail-Adresse lautet %s", + "Your %s account was created" : "Dein %s-Konto wurde erstellt", + "Welcome aboard" : "Willkommen an Bord", + "Welcome aboard %s" : "Willkommen an Bord %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Willkommen zu Deinem %s-Konto. Du kannst Deine Daten hinzufügen, schützen und teilen.", + "Your username is: %s" : "Dein Benutzername lautet: %s", + "Set your password" : "Setze Dein Kennwort", + "Go to %s" : "%s aufrufen", + "Install Client" : "Installiere den Client", + "Logged in user must be a subadmin" : "Der angemeldete Benutzer muss ein Administrator sein", + "Create" : "Erstellen", + "Change" : "Ändern", + "Delete" : "Löschen", + "Share" : "Teilen", + "Unlimited" : "Unbegrenzt", + "Verifying" : "Überprüfe", + "Verifying …" : "Überprüfe…", + "Verify" : "Überprüfen", + "Migration in progress. Please wait until the migration is finished" : "Migration läuft. Bitte warte, bis die Migration abgeschlossen ist", + "Migration started …" : "Migration begonnen…", + "Not saved" : "Nicht gespeichert", + "Sending…" : "Senden…", + "Email sent" : "E-Mail gesendet", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Es ist ein Fehler aufgetreten. Bitte lade ein ASCII-kodiertes PEM-Zertifikat hoch.", + "Valid until {date}" : "Gültig bis {date}", + "Local" : "Lokal", + "Private" : "Privat", + "Only visible to local users" : "Nur für lokale Benutzer sichtbar", + "Only visible to you" : "Nur für Dich sichtbar", + "Contacts" : "Kontakte", + "Visible to local users and to trusted servers" : "Sichtbar für lokale Benutzer und vertrauenswürdige Server", + "Public" : "Öffentlich", + "Will be synced to a global and public address book" : "Wird mit einem globalen und einem öffentlichen Adressbuch synchronisiert", + "Very weak password" : "Sehr schwaches Passwort", + "Weak password" : "Schwaches Passwort", + "So-so password" : "Akzeptables Passwort", + "Good password" : "Gutes Passwort", + "Strong password" : "Starkes Passwort", + "An error occurred while changing your language. Please reload the page and try again." : "Es ist ein Fehler beim Wechseln der Sprache aufgetreten. Bitte lade die Seite neu und versuchen es noch einmal.", + "An error occurred while changing your locale. Please reload the page and try again." : "Es ist ein Fehler beim Wechseln des Gebietsschemas aufgetreten. Bitte lade die Seite neu und versuche es noch einmal.", + "Select a profile picture" : "Wähle ein Profilbild", + "Week starts on {fdow}" : "Die Woche startet am {fdow}", + "Groups" : "Gruppen", + "Group list is empty" : "Gruppenliste ist leer", + "Unable to retrieve the group list" : "Gruppenliste konnte nicht abgerufen werden", + "Afrikaans (Namibia)" : "Afrikanisch (Namibia)", + "Afrikaans (South Africa)" : "Afrikanisch (Südafrika)", + "Afrikaans" : "Afrikanisch", + "Akan (Ghana)" : "Akanisch (Ghana)", + "Akan" : "Akanisch", + "Albanian (Albania)" : "Albanisch (Albanien)", + "Albanian" : "Albanisch", + "Amharic (Ethiopia)" : "Amharisch (Äthiopien)", + "Amharic" : "Amharisch", + "Arabic (Algeria)" : "Arabisch (Algerien)", + "Arabic (Bahrain)" : "Arabisch (Bahrain)", + "Arabic (Egypt)" : "Arabisch (Ägypten)", + "Arabic (Iraq)" : "Arabisch (Irak)", + "Arabic (Jordan)" : "Arabisch (Jordanien)", + "Arabic (Kuwait)" : "Arabisch (Kuwait)", + "Arabic (Lebanon)" : "Arabisch (Libanon)", + "Arabic (Libya)" : "Arabisch (Lybien)", + "Arabic (Morocco)" : "Arabisch (Marokko)", + "Arabic (Oman)" : "Arabisch (Oman)", + "Arabic (Qatar)" : "Arabisch (Katar)", + "Arabic (Saudi Arabia)" : "Arabisch (Saudiarabien)", + "Arabic (Sudan)" : "Arabisch (Sudan)", + "Arabic (Syria)" : "Arabisch (Syrien)", + "Arabic (Tunisia)" : "Arabisch (Tunesien)", + "Arabic (United Arab Emirates)" : "Arabisch (Vereinigte Arabische Emirate)", + "Arabic (Yemen)" : "Arabisch (Jemen)", + "Arabic" : "Arabisch", + "Armenian (Armenia)" : "Armenisch (Armenien)", + "Armenian" : "Armenisch", + "Assamese (India)" : "Assamesisch (Indien)", + "Assamese" : "Assamesisch", + "Asu (Tanzania)" : "Asu (Tansania)", + "Asu" : "Asu", + "Azerbaijani (Cyrillic)" : "Aserbaidschanisch (Kyrillisch)", + "Azerbaijani (Cyrillic, Azerbaijan)" : "Aserbaidschanisch (Kyrillisch, Aserbaidschan)", + "Azerbaijani (Latin)" : "Aserbaidschanisch (Latein)", + "Azerbaijani (Latin, Azerbaijan)" : "Aserbaidschanisch (Latein, Aserbaidschan)", + "Azerbaijani" : "Aserbaidschanisch", + "Bambara (Mali)" : "Bambara (Mali)", + "Bambara" : "Bambara", + "Basque (Spain)" : "Baskisch (Spanien)", + "Basque" : "Baskisch", + "Belarusian (Belarus)" : "Weissrussisch (Weissrussland)", + "Belarusian" : "Weissrussisch", + "Bemba (Zambia)" : "Bemba (Sambia)", + "Bemba" : "Bemba", + "Bena (Tanzania)" : "Bena (Tansania)", + "Bena" : "Bena", + "Bengali (Bangladesh)" : "Bengali (Bangladesch)", + "Bengali (India)" : "Bengalisch (Indien)", + "Bengali" : "Bengalisch", + "Bosnian (Bosnia and Herzegovina)" : "Bosnisch (Bosnien und Herzegowina)", + "Bosnian" : "Bosnisch", + "Bulgarian (Bulgaria)" : "Bulgarisch (Bulgarien)", + "Bulgarian" : "Bulgarisch", + "Burmese (Myanmar [Burma])" : "Burmesisch (Myanmar [Burma])", + "Burmese" : "Burmesisch", + "Catalan (Spain)" : "Katalanisch (Spanien)", + "Catalan" : "Katalanisch", + "Central Morocco Tamazight (Latin)" : "Zentralatlas-Tamazight (Latein)", + "Central Morocco Tamazight (Latin, Morocco)" : "Zentralatlas-Tamazight (Latein, Marokko)", + "Central Morocco Tamazight" : "Zentralatlas-Tamazight", + "Cherokee (United States)" : "Cherokee (USA)", + "Cherokee" : "Cherokee", + "Chiga (Uganda)" : "Chiga (Uganda)", + "Chiga" : "Chiga", + "Chinese (Simplified Han)" : "Chinesisch (Vereinfachtes Han)", + "Chinese (Simplified Han, China)" : "Chinesisch (Vereinfachtes Han, China)", + "Chinese (Simplified Han, Hong Kong SAR China)" : "Chinesisch (Vereinfachtes Han, Hongkong SAR China)", + "Chinese (Simplified Han, Macau SAR China)" : "Chinesisch (Vereinfachtes Han, Macau SAR China)", + "Chinese (Simplified Han, Singapore)" : "Chinesisch (Vereinfachtes Han, Singapur)", + "Chinese (Traditional Han)" : "Chinesisch (Traditionelles Han)", + "Chinese (Traditional Han, Hong Kong SAR China)" : "Chinesisch (Traditionelles Han, Hongkong SAR China)", + "Chinese (Traditional Han, Macau SAR China)" : "Chinesisch (Traditionelles Han, Macau SAR China)", + "Chinese (Traditional Han, Taiwan)" : "Chinesisch (Traditionelles Han, Taiwan)", + "Chinese" : "Chinesisch", + "Cornish (United Kingdom)" : "Kornisch (Vereinigtes Königreich)", + "Cornish" : "Kornisch", + "Croatian (Croatia)" : "Kroatisch (Kroatien)", + "Croatian" : "Kroatisch", + "Czech (Czech Republic)" : "Tschechisch (Tschechische Republik)", + "Czech" : "Tschechisch", + "Danish (Denmark)" : "Dänisch (Dänemark)", + "Danish" : "Dänisch", + "Dutch (Belgium)" : "Holländisch (Belgien)", + "Dutch (Netherlands)" : "Holländisch (Niederlande)", + "Dutch" : "Niederländisch", + "Embu (Kenya)" : "Embu (Kenia)", + "Embu" : "Embu", + "English (American Samoa)" : "Englisch (Amerikanisch-Samoa)", + "English (Australia)" : "Englisch (Australien)", + "English (Belgium)" : "Englisch (Belgien)", + "English (Belize)" : "Englisch (Belize)", + "English (Botswana)" : "Englisch (Botswana)", + "English (Canada)" : "Englisch (Kanada)", + "English (Guam)" : "Englisch (Guam)", + "English (Hong Kong SAR China)" : "Englisch (Hongkong SAR China)", + "English (India)" : "Englisch (Indien)", + "English (Ireland)" : "Englisch (Irland)", + "English (Jamaica)" : "Englisch (Jamaika)", + "English (Malta)" : "Englisch (Malta)", + "English (Marshall Islands)" : "Englisch (Marshallinseln)", + "English (Mauritius)" : "Englisch (Mauritius)", + "English (Namibia)" : "Englisch (Namibia)", + "English (New Zealand)" : "Englisch (Neuseeland)", + "English (Northern Mariana Islands)" : "Englisch (Nördliche Marianen)", + "English (Pakistan)" : "Englisch (Pakistan)", + "English (Philippines)" : "Englisch (Philippinen)", + "English (Singapore)" : "Englisch (Singapur)", + "English (South Africa)" : "Englisch (Südafrika)", + "English (Trinidad and Tobago)" : "Englisch (Trinidad und Tobago)", + "English (U.S. Minor Outlying Islands)" : "Englisch (US Minor Outlying Islands)", + "English (U.S. Virgin Islands)" : "Englisch (US Jungferninseln)", + "English (United Kingdom)" : "Englisch (UK)", + "English (United States)" : "Englisch (USA)", + "English (Zimbabwe)" : "Englisch (Simbabwe)", + "English" : "Englisch", + "Esperanto" : "Esperanto", + "Estonian (Estonia)" : "Estnisch (Estland)", + "Estonian" : "Estnisch", + "Ewe (Ghana)" : "Ewe (Ghana)", + "Ewe (Togo)" : "Ewe (Togo)", + "Ewe" : "Ewe", + "Faroese (Faroe Islands)" : "Färöisch (Färöer-Inseln)", + "Faroese" : "Färöisch", + "Filipino (Philippines)" : "Filipino (Philippinen)", + "Filipino" : "Filipino", + "Finnish (Finland)" : "Finnisch (Finnland)", + "Finnish" : "Finnisch", + "French (Belgium)" : "Französisch (Belgien)", + "French (Benin)" : "Französisch (Benin)", + "French (Burkina Faso)" : "Französisch (Burkina Faso)", + "French (Burundi)" : "Französisch (Burundi)", + "French (Cameroon)" : "Französisch (Kamerun)", + "French (Canada)" : "Französisch (Kanada)", + "French (Central African Republic)" : "Französisch (Zentralafrikanische Republik)", + "French (Chad)" : "Französisch (Tschad)", + "French (Comoros)" : "Französisch (Komoren)", + "French (Congo - Brazzaville)" : "Französisch (Kongo - Brazzaville)", + "French (Congo - Kinshasa)" : "Französisch (Kongo - Kinshasa)", + "French (Côte d’Ivoire)" : "Französisch (Elfenbeinküste)", + "French (Djibouti)" : "Französisch (Dschibuti)", + "French (Equatorial Guinea)" : "Französisch (Äquatorialguinea)", + "French (France)" : "Französisch (Frankreich)", + "French (Gabon)" : "Französisch (Gabon)", + "French (Guadeloupe)" : "Französisch (Guadeloupe)", + "French (Guinea)" : "Französisch (Guinea)", + "French (Luxembourg)" : "Französisch (Luxemburg)", + "French (Madagascar)" : "Französisch (Madagaskar)", + "French (Mali)" : "Französisch (Mali)", + "French (Martinique)" : "Französisch (Martinique)", + "French (Monaco)" : "Französisch (Monaco)", + "French (Niger)" : "Französisch (Niger)", + "French (Rwanda)" : "Französisch (Ruanda)", + "French (Réunion)" : "Französisch (Réunion)", + "French (Saint Barthélemy)" : "Französisch (Saint Barthélemy)", + "French (Saint Martin)" : "Französisch (Saint Martin)", + "French (Senegal)" : "Französisch (Senegal)", + "French (Switzerland)" : "Französisch (Schweiz)", + "French (Togo)" : "Französisch (Togo)", + "French" : "Französisch", + "Fulah (Senegal)" : "Fulfulde (Senegal)", + "Fulah" : "Fulfulde", + "Galician (Spain)" : "Galicisch (Spanien)", + "Galician" : "Galicisch", + "Ganda (Uganda)" : "Ganda (Uganda)", + "Ganda" : "Ganda", + "Georgian (Georgia)" : "Georgisch (Gerorgien)", + "Georgian" : "Georgisch", + "German (Austria)" : "Deutsch (Österreich)", + "German (Belgium)" : "Deutsch (Belgien)", + "German (Germany)" : "Deutsch (Deutschland)", + "German (Liechtenstein)" : "Deutsch (Liechtenstein)", + "German (Luxembourg)" : "Deutsch (Luxemburg)", + "German (Switzerland)" : "Deutsch (Schweiz)", + "German" : "Deutsch", + "Greek (Cyprus)" : "Griechisch (Zypern)", + "Greek (Greece)" : "Grieschisch (Griechenland)", + "Greek" : "Griechisch", + "Gujarati (India)" : "Gujarati (Indien)", + "Gujarati" : "Gujarati", + "Gusii (Kenya)" : "Gusii (Kenia)", + "Gusii" : "Gusii", + "Hausa (Latin)" : "Hausa (Latein)", + "Hausa (Latin, Ghana)" : "Hausa (Latein, Ghana)", + "Hausa (Latin, Niger)" : "Hausa (Latein, Nigeria)", + "Hausa (Latin, Nigeria)" : "Hausa (Latein, Nigeria)", + "Hausa" : "Hausa", + "Hawaiian (United States)" : "Hawaianisch (US)", + "Hawaiian" : "Hawaianisch", + "Hebrew (Israel)" : "Hebräisch (Israel)", + "Hebrew" : "Hebräisch", + "Hindi (India)" : "Hindi (Indien)", + "Hindi" : "Hindi", + "Hungarian (Hungary)" : "Ungarisch (Ungarn)", + "Hungarian" : "Ungarisch", + "Icelandic (Iceland)" : "Isländisch (Island)", + "Icelandic" : "Isländisch", + "Igbo (Nigeria)" : "Igbo (Nigeria)", + "Igbo" : "Igbo", + "Indonesian (Indonesia)" : "Indonesisch (Indonesien)", + "Indonesian" : "Indonesisch", + "Irish (Ireland)" : "Irisch (Irland)", + "Irish" : "Irisch", + "Italian (Italy)" : "Italienisch (Italien)", + "Italian (Switzerland)" : "Italienisch (Schweiz)", + "Italian" : "Italienisch", + "Japanese (Japan)" : "Japanisch (Japan)", + "Japanese" : "Japanisch", + "Kabuverdianu (Cape Verde)" : "Kabuverdianu (Kap Verde)", + "Kabuverdianu" : "Kapverdisch", + "Kabyle (Algeria)" : "Kabyle (Algerien)", + "Kabyle" : "Kabyle", + "Kalaallisut (Greenland)" : "Kalaallisut (Grönland)", + "Kalaallisut" : "Kalaallisut", + "Kalenjin (Kenya)" : "Kalenjin (Kenia)", + "Kalenjin" : "Kalenjin", + "Kamba (Kenya)" : "Kamba (Kenia)", + "Kamba" : "Kamba", + "Kannada (India)" : "Kanaresisch (Indien)", + "Kannada" : "Kanaresisch", + "Kazakh (Cyrillic)" : "Kasachisch (Kyrillisch)", + "Kazakh (Cyrillic, Kazakhstan)" : "Kasachisch (Kyrillisch, Kasachstan)", + "Kazakh" : "Kasachisch", + "Khmer (Cambodia)" : "Khmer (Kambodscha)", + "Khmer" : "Khmer", + "Kikuyu (Kenya)" : "Kikuyu (Kenia)", + "Kikuyu" : "Kikuyu", + "Kinyarwanda (Rwanda)" : "Kinyarwanda (Ruanda)", + "Kinyarwanda" : "Kinyarwanda", + "Konkani (India)" : "Konkani (Indien)", + "Konkani" : "Konkani", + "Korean (South Korea)" : "Koreanisch (Süd Korea)", + "Korean" : "Koreanisch", + "Koyra Chiini (Mali)" : "Koyra Chiini (Mali)", + "Koyra Chiini" : "Koyra Chiini", + "Koyraboro Senni (Mali)" : "Koyraboro Senni (Mali)", + "Koyraboro Senni" : "Koyraboro Senni", + "Langi (Tanzania)" : "Langi (Tansania)", + "Langi" : "Langi", + "Latvian (Latvia)" : "Lettisch (Lettland)", + "Latvian" : "Lettisch", + "Lithuanian (Lithuania)" : "Litauisch (Litauen)", + "Lithuanian" : "Litauisch", + "Luo (Kenya)" : "Luo (Kenia)", + "Luo" : "Luo", + "Luyia (Kenya)" : "Luyia (Kenia)", + "Luyia" : "Luyia", + "Macedonian (Macedonia)" : "Mazedonisch (Mazedonien)", + "Macedonian" : "Mazedonisch", + "Machame (Tanzania)" : "Machame (Tansania)", + "Machame" : "Machame", + "Makonde (Tanzania)" : "Makonde (Tansania)", + "Makonde" : "Makonde", + "Malagasy (Madagascar)" : "Sichuan Yi (China)", + "Malagasy" : "Malagassi", + "Malay (Brunei)" : "Malaiisch (Brunei)", + "Malay (Malaysia)" : "Malaysisch (Malaysia)", + "Malay" : "Malaiisch", + "Malayalam (India)" : "Malayalam (Indien)", + "Malayalam" : "Malayalam", + "Maltese (Malta)" : "Maltesisch (Malta)", + "Maltese" : "Maltesisch", + "Manx (United Kingdom)" : "Manx-Gälisch (UK)", + "Manx" : "Manx-Gälisch", + "Marathi (India)" : "Marathi (Indien)", + "Marathi" : "Marathi", + "Masai (Kenya)" : "Masai (Kenia)", + "Masai (Tanzania)" : "Masai (Tansania)", + "Masai" : "Masai", + "Meru (Kenya)" : "Meru (Kenia)", + "Meru" : "Meru", + "Morisyen (Mauritius)" : "Morisyen (Mauritius)", + "Morisyen" : "Morisyen", + "Nama (Namibia)" : "Nama (Namibia)", + "Nama" : "Nama", + "Nepali (India)" : "Nepalesisch (Indien)", + "Nepali (Nepal)" : "Nepalesisch (Indien)", + "Nepali" : "Nepali", + "North Ndebele (Zimbabwe)" : "Nord-Ndebele (Simbabwe)", + "North Ndebele" : "Nord-Ndebele", + "Norwegian Bokmål (Norway)" : "Norwegisch Bokmål (Norwegen)", + "Norwegian Bokmål" : "Norwegisch Bokmål", + "Norwegian Nynorsk (Norway)" : "Neunorwegisch (Norwegen)", + "Norwegian Nynorsk" : "Neunorwegisch", + "Nyankole (Uganda)" : "Nyankole (Uganda)", + "Nyankole" : "Nyankole", + "Oriya (India)" : "Oriya (Indien)", + "Oriya" : "Oriya", + "Oromo (Ethiopia)" : "Oromo (Äthiopien)", + "Oromo (Kenya)" : "Oromo (Kenia)", + "Oromo" : "Oromo", + "Pashto (Afghanistan)" : "Pashto (Afghanistan)", + "Pashto" : "Pashto", + "Persian (Afghanistan)" : "Persisch (Afghanistan)", + "Persian (Iran)" : "Persisch (Iran)", + "Persian" : "Persisch", + "Polish (Poland)" : "Polnisch (Polen)", + "Polish" : "Polnisch", + "Portuguese (Brazil)" : "Portugisisch (Brasilien)", + "Portuguese (Guinea-Bissau)" : "Protugisisch (Guinea-Bissau)", + "Portuguese (Mozambique)" : "Portuguisisch (Mosambik)", + "Portuguese (Portugal)" : "Portugiesisch (Portugal)", + "Portuguese" : "Portugiesisch", + "Punjabi (Arabic)" : "Punjabi (Arabisch)", + "Punjabi (Arabic, Pakistan)" : "Punjabi (Arabisch, Pakistan)", + "Punjabi (Gurmukhi)" : "Punjabi (Gurmukhi)", + "Punjabi (Gurmukhi, India)" : "Punjabi (Gurmukhi, Indien)", + "Punjabi" : "Punjabi", + "Romanian (Moldova)" : "Rumänisch (Modavien)", + "Romanian (Romania)" : "Rumänisch (Rumänien)", + "Romanian" : "Rumänisch", + "Romansh (Switzerland)" : "Romanisch (Schweiz)", + "Romansh" : "Romanisch", + "Rombo (Tanzania)" : "Rombo (Tansania)", + "Rombo" : "Rombo", + "Russian (Moldova)" : "Russich (Moldavien)", + "Russian (Russia)" : "Russisch (Russland)", + "Russian (Ukraine)" : "Russisch (Ukraine)", + "Russian" : "Russisch", + "Rwa (Tanzania)" : "Rwa (Tansania)", + "Rwa" : "Rwa", + "Samburu (Kenya)" : "Samburu (Kenia)", + "Samburu" : "Samburu", + "Sango (Central African Republic)" : "Sango (Zentralafrikanische Republik)", + "Sango" : "Sango", + "Sena (Mozambique)" : "Sena (Mosambik)", + "Sena" : "Sena", + "Serbian (Cyrillic)" : "Serbisch (Kyrillisch)", + "Serbian (Cyrillic, Bosnia and Herzegovina)" : "Serbisch (Kyrillisch, Bosnien und Herzogovina)", + "Serbian (Cyrillic, Montenegro)" : "Serbisch (Kyrillisch, Montenegro)", + "Serbian (Cyrillic, Serbia)" : "Serbisch (Kyrillisch, Serbien)", + "Serbian (Latin)" : "Serbisch (Latein)", + "Serbian (Latin, Bosnia and Herzegovina)" : "Serbisch (Latein, Bosnien und Herzegovina)", + "Serbian (Latin, Montenegro)" : "Serbisch (Latein, Montenegro)", + "Serbian (Latin, Serbia)" : "Serbisch (Latein, Serbien)", + "Serbian" : "Serbisch", + "Shona (Zimbabwe)" : "Shona (Simbabwe)", + "Shona" : "Shona", + "Sichuan Yi (China)" : "Sichuan Yi (China)", + "Sichuan Yi" : "Sichuan Yi", + "Sinhala (Sri Lanka)" : "Singhalesisch (Sri Lanka)", + "Sinhala" : "Sinhala", + "Slovak (Slovakia)" : "Slowakisch (Slowakei)", + "Slovak" : "Slowakisch", + "Slovenian (Slovenia)" : "Slowenisch (Slowenien)", + "Slovenian" : "Slowenisch", + "Soga (Uganda)" : "Soga (Uganda)", + "Soga" : "Soga", + "Somali (Djibouti)" : "Somalisch (Dschibuti)", + "Somali (Ethiopia)" : "Somalisch (Äthiopien)", + "Somali (Kenya)" : "Somalisch (Kenia)", + "Somali (Somalia)" : "Somalisch (Somalia)", + "Somali" : "Samalisch", + "Spanish (Argentina)" : "Spanisch (Argentinien)", + "Spanish (Bolivia)" : "Spanisch (Bolivien)", + "Spanish (Chile)" : "Spanisch (Chile)", + "Spanish (Colombia)" : "Spanisch (Kolumbien)", + "Spanish (Costa Rica)" : "Spanisch (Costa Rica)", + "Spanish (Dominican Republic)" : "Spanisch (Dominikanische Republik)", + "Spanish (Ecuador)" : "Spanisch (Equador)", + "Spanish (El Salvador)" : "Spanisch (El Salvador)", + "Spanish (Equatorial Guinea)" : "Spanisch (Äquatorialguinea)", + "Spanish (Guatemala)" : "Spanisch (Guatemala)", + "Spanish (Honduras)" : "Spanisch (Honduras)", + "Spanish (Latin America)" : "Spanisch (Lateinamerika)", + "Spanish (Mexico)" : "Spanisch (Mexiko)", + "Spanish (Nicaragua)" : "Spanisch (Nikaragua)", + "Spanish (Panama)" : "Spanisch (Panama)", + "Spanish (Paraguay)" : "Spanisch (Paraguay)", + "Spanish (Peru)" : "Spanisch (Peru)", + "Spanish (Puerto Rico)" : "Spanisch (Puerto Rico)", + "Spanish (Spain)" : "Spanisch (Spanien)", + "Spanish (United States)" : "Spanisch (USA)", + "Spanish (Uruguay)" : "Spanisch (Uruquai)", + "Spanish (Venezuela)" : "Spanisch (Venezuela)", + "Spanish" : "Spanisch", + "Swahili (Kenya)" : "Suaheli (Kenia)", + "Swahili (Tanzania)" : "Swahili (Tansania)", + "Swahili" : "Swahili", + "Swedish (Finland)" : "Schwedisch (Finnland)", + "Swedish (Sweden)" : "Schwedisch (Schweden)", + "Swedish" : "Schwedisch", + "Swiss German (Switzerland)" : "Schweizerdeutsch (Schweiz)", + "Swiss German" : "Schweizerdeutsch", + "Tachelhit (Latin)" : "Tachelhit (Latein)", + "Tachelhit (Latin, Morocco)" : "Tachelhit (Latein, Marokko)", + "Tachelhit (Tifinagh)" : "Tachelhit (Tifinagh)", + "Tachelhit (Tifinagh, Morocco)" : "Tachelhit (Tifinagh, Marokko)", + "Tachelhit" : "Tachelhit", + "Taita (Kenya)" : "Taita (Kenia)", + "Taita" : "Taita", + "Tamil (India)" : "Tamil (Indien)", + "Tamil (Sri Lanka)" : "Tamil (Sri Lanka)", + "Tamil" : "Tamilisch", + "Telugu (India)" : "Telugu (Indien)", + "Telugu" : "Telugu", + "Teso (Kenya)" : "Teso (Kenia)", + "Teso (Uganda)" : "Teso (Uganda)", + "Teso" : "Teso", + "Thai (Thailand)" : "Thailändisch (Thailand)", + "Thai" : "Thai", + "Tibetan (China)" : "Tibetisch (China)", + "Tibetan (India)" : "Tibetisch (Indien)", + "Tibetan" : "Tibetisch", + "Tigrinya (Eritrea)" : "Tigrinya (Eritrea)", + "Tigrinya (Ethiopia)" : "Tigrinya (Äthiopien)", + "Tigrinya" : "Tigrinisch", + "Tonga (Tonga)" : "Tongaisch (Tonga)", + "Tonga" : "Tonga", + "Turkish (Turkey)" : "Türkisch (Türkei)", + "Turkish" : "Türkisch", + "Ukrainian (Ukraine)" : "Ukrainisch (Ukraine)", + "Ukrainian" : "Ukrainisch", + "Urdu (India)" : "Urdu (Indien)", + "Urdu (Pakistan)" : "Urdu (Pakistan)", + "Urdu" : "Urdu", + "Uzbek (Arabic)" : "Usbekisch (Arabisch)", + "Uzbek (Arabic, Afghanistan)" : "Usbekisch (Arabisch, Afghanistan)", + "Uzbek (Cyrillic)" : "Usbekisch (Kyrillisch)", + "Uzbek (Cyrillic, Uzbekistan)" : "Usbekisch (Kyrillisch, Usbekistan)", + "Uzbek (Latin)" : "Usbekisch (Latein)", + "Uzbek (Latin, Uzbekistan)" : "Usbekisch (Latein, Usbekistan)", + "Uzbek" : "Usbekisch", + "Vietnamese (Vietnam)" : "Vietnamesisch (Vietnam)", + "Vietnamese" : "Vietnamesisch", + "Vunjo (Tanzania)" : "Vunjo (Tansania)", + "Vunjo" : "Vunjo", + "Welsh (United Kingdom)" : "Walisisch (Vereinigtes Königreich)", + "Welsh" : "Walisisch", + "Yoruba (Nigeria)" : "Yoruba (Nigeria)", + "Yoruba" : "Yoruba", + "Zulu (South Africa)" : "Zulu (Südafrika)", + "Zulu" : "Zulu", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Zwei-Faktor-Authentifizierung kann für alle \nBenutzer und Gruppen erzwungen werden. Wenn kein Anbieter für Zwei-Faktor-Authentifizierung für sie eingerichtet ist, so können sie sich nicht am System anmelden.", + "Enforce two-factor authentication" : "Zwei-Faktor-Authentifizierung erzwingen", + "Limit to groups" : "Auf Gruppen beschränken", + "Enforcement of two-factor authentication can be set for certain groups only." : "Erzwingen der Zwei-Faktor-Authentifizierung kann nur für bestimmte Gruppen eingestellt werden.", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "Zwei-Faktor-Authentifizierung wird für alle\tMitglieder der folgenden Gruppen erzwungen.", + "Enforced groups" : "Erzwungene Gruppen", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "Zwei-Faktor-Authentifizierung wird nicht für\tMitglieder der folgenden Gruppen erzwungen.", + "Excluded groups" : "Ausgeschlossene Gruppen", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "Bei der Auswahl/Abwahl von Gruppen wird folgende Logik verwendet, um Festzustellen ob ein Benutzer 2FA verwenden muss: Wenn keine Gruppe ausgewählt ist, dann wird 2FA für alle Benutzer aktiviert, außer für Mitglieder der ausgenommenen Gruppen. Sind Gruppen ausgewählt, so wird 2FA für alle Mitglieder dieser Gruppen aktiviert. Ist ein Benutzer Mitglieder der ausgewählten und ausgenommenen Gruppe, so hat die Auswahl Vorrang und 2FA wird aktiviert. ", + "Save changes" : "Änderungen speichern", + "Marked for remote wipe" : "Für Fernlöschung markiert", + "Device settings" : "Geräteeinstellungen", + "Allow filesystem access" : "Erlaube Dateisystem-Zugriff", + "Rename" : "Umbenennen", + "Revoke" : "Widerrufen", + "Wipe device" : "Gerät löschen", + "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Zurückziehen dieses Tokens könnte das Löschen von Deinem Gerät verhindern, wenn die Löschung noch nicht gestartet wurde.", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome für Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Nextcloud iOS-App", + "Nextcloud Android app" : "Nextcloud Android-App", + "Nextcloud Talk for iOS" : "Nextcloud Talk für iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk für Android", + "Sync client - {os}" : "Sync-Client - {os}", + "This session" : "Diese Sitzung", + "Device" : "Gerät", + "Last activity" : "Letzte Aktivität", + "Devices & sessions" : "Geräte & Sitzungen", + "Web, desktop and mobile clients currently logged in to your account." : "Aktuell in Deinem Konto angemeldete Web-, Desktop- und Mobil-Clients.", + "Do you really want to wipe your data from this device?" : "Möchtest Du wirklich alle Daten von diesem Gerät löschen?", + "Confirm wipe" : "Löschen bestätigen", + "Error while creating device token" : "Fehler beim Erstellen des Geräte-Tokens", + "Error while updating device token scope" : "Fehler bei der Aktualisierung des Geräte-Token-Scope", + "Error while updating device token name" : "Fehler bei der Aktualisierung des Geräte-Token-Namens", + "Error while deleting the token" : "Fehler beim Löschen des Geräte-Tokens", + "Error while wiping the device with the token" : "Fehler während des Löschens des Geräts mit dem Token", + "App name" : "App-Name", + "Create new app password" : "Neues App-Passwort erstellen", + "Use the credentials below to configure your app or device." : "Nutze die unten angebenen Anmeldeinformationen, um Deine App oder Dein Gerät zu konfigurieren.", + "For security reasons this password will only be shown once." : "Aus Sicherheitsgründen wird das Passwort nur einmal angezeigt.", + "Username" : "Benutzername", + "Password" : "Passwort", + "Done" : "Erledigt", + "Show QR code for mobile apps" : "QR-Code für mobile Apps anzeigen", + "Copied!" : "Kopiert!", + "Copy" : "Kopieren", + "Could not copy app password. Please copy it manually." : "Das Passwort für die App konnte nicht kopiert werden. Bitte kopiere es manuell.", + "This app is supported via your current Nextcloud subscription." : "Diese App wird von Deinem aktuellen Nextcloud-Abonnement unterstützt.", + "Supported" : "Unterstützt", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Offizielle Apps werden von und innerhalb der Community entwickelt. Sie stellen die zentralen Funktionen bereit und sind für den produktiven Einsatz geeignet.", + "Official" : "Offiziell", + "by" : "von", + "Update to {version}" : "Aktualisieren auf {version}", + "Remove" : "Entfernen", + "Disable" : "Deaktivieren", + "All" : "Alle", + "Limit app usage to groups" : "App-Verwendung auf Gruppen beschränken", + "No results" : "Keine Ergebnisse", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Für diese App wurde keine untere Versionsgrenze für Nextcloud gesetzt. Dies wird zukünftig als Fehler behandelt.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Für diese App wurde keine obere Versionsgrenze für Nextcloud gesetzt. Dies wird zukünftig als Fehler behandelt.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Diese App kann nicht installiert werden, weil die folgenden Abhängigkeiten nicht erfüllt sind:", + "View in store" : "Im Store anzeigen", + "Visit website" : "Webseite besuchen", + "Report a bug" : "Melde einen technischen Fehler", + "User documentation" : "Dokumentation für Benutzer", + "Admin documentation" : "Dokumentation für Administratoren", + "Developer documentation" : "Dokumentation für Entwickler", + "Update to {update}" : "Aktualisieren auf {update}", + "Results from other categories" : "Ergebnisse aus anderen Kategorien", + "No apps found for your version" : "Es wurden keine Apps für Deine Version gefunden", + "Disable all" : "Alle deaktivieren", + "Enable all" : "Alle aktivieren", + "Download and enable" : "Herunterladen und aktivieren", + "Enable" : "Aktivieren", + "Enable untested app" : "Ungetestete App aktivieren", + "The app will be downloaded from the app store" : "Die App wird aus dem App-Store heruntergeladen", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Diese App ist als nicht-kompatibel mit Deiner Nextcloud-Version markiert. Wenn Du fortfährst, so kannst Du die App installieren. Bitte beachte, dass die App nicht wie erwartet funktionieren könnte.", + "You do not have permissions to see the details of this user" : "Du hast keine Berechtigung, um auf die Details dieses Benutzers zu sehen", + "The backend does not support changing the display name" : "Das Backend unterstützt keine Änderung des Anzeigenamens", + "New password" : "Neues Passwort", + "Add user in group" : "Nutzer zur Gruppe hinzufügen", + "Set user as admin for" : "Benutzer als Administrator setzen für", + "Select user quota" : "Speicherkontigent wählen", + "No language set" : "Keine Sprache eingestellt.", + "Never" : "Niemals", + "Delete user" : "Benutzer löschen", + "Wipe all devices" : "Alle Geräte löschen", + "Disable user" : "Benutzer deaktivieren", + "Enable user" : "Benutzer aktivieren", + "Resend welcome email" : "Willkommens-E-Mail erneut senden", + "{size} used" : "{size} verwendet", + "Welcome mail sent!" : "Willkommens-E-Mail gesendet!", + "Display name" : "Anzeigename", + "Email" : "E-Mail", + "Group admin for" : "Gruppenadministrator für", + "Quota" : "Kontingent", + "Language" : "Sprache", + "Storage location" : "Speicherort", + "User backend" : "Benutzer-Backend", + "Last login" : "Letzte Anmeldung", + "Will be autogenerated" : "Wird automatisch erzeugt", + "Default language" : "Standard-Sprache", + "Add a new user" : "Neuen Nutzer hinzufügen", + "No users in here" : "Kein Nutzer vorhanden", + "Default quota" : "Standard Speicherkontingent ", + "Password change is disabled because the master key is disabled" : "Das Ändern des Passwortes ist deaktiviert, da der Master-Schlüssel deaktiviert ist", + "Common languages" : "Gängige Sprachen", + "All languages" : "Alle Sprachen", + "Your apps" : "Deine Apps", + "Active apps" : "Aktive Apps", + "Disabled apps" : "Deaktivierte Apps", + "Updates" : "Aktualisierungen", + "App bundles" : "App-Pakete", + "{license}-licensed" : "{license}-Lizensiert", + "New user" : "Neuer Benutzer", + "Default quota:" : "Standard Speicherkontingent:", + "Select default quota" : "Standard Speicherkontingent wählen", + "Show Languages" : "Sprachen anzeigen", + "Show last login" : "Letzte Anmeldung anzeigen", + "Show user backend" : "Benutzer-Backend anzeigen", + "Show storage path" : "Zeige Speicherpfad", + "You are about to remove the group {group}. The users will NOT be deleted." : "Du bist dabei die Gruppe {group} zu löschen. Die Benutzer werden NICHT gelöscht.", + "Please confirm the group removal " : "Bitte die Löschung der Gruppe bestätigen", + "Remove group" : "Gruppe entfernen", + "Admins" : "Administratoren", + "Disabled users" : "Deaktivierte Benutzer", + "Everyone" : "Jeder", + "Add group" : "Gruppe hinzufügen", + "An error occured during the request. Unable to proceed." : "Es ist ein Fehler bei der Anfrage aufgetreten. Es kann nicht fortgefahren werden.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Die App wurde aktiviert, muss aber aktualisiert werden. Du wirst in 5 Sekunden zur Aktualisierungsseite weitergeleitet.", + "App update" : "App-Aktualisierung", + "Error: This app can not be enabled because it makes the server unstable" : "Fehler: Diese App kann nicht aktiviert werden, da sie den Server instabil macht. ", + "SSL Root Certificates" : "SSL-Root-Zertifikate", + "Common Name" : "Allgemeiner Name", + "Valid until" : "Gültig bis", + "Issued By" : "Ausgestellt von:", + "Valid until %s" : "Gültig bis %s", + "Import root certificate" : "Root-Zertifikat importieren", + "Administrator documentation" : "Dokumentation für Administratoren", + "Documentation" : "Dokumentation", + "Forum" : "Forum", + "None" : "Keine", + "Login" : "Anmelden", + "Plain" : "Klartext", + "NT LAN Manager" : "NT-LAN-Manager", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "E-Mail-Server", + "Open documentation" : "Dokumentation öffnen", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Es ist wichtig diesen Server so zu konfigurieren, dass E-Mails versandt werden können, z.B. für den Passwort-Reset und Benachrichtigungen.", + "Send mode" : "Sendemodus", + "Encryption" : "Verschlüsselung", + "Sendmail mode" : "Sendmail-Modus", + "From address" : "Absenderadresse", + "mail" : "E-Mail", + "Authentication method" : "Authentifizierungsmethode", + "Authentication required" : "Authentifizierung benötigt", + "Server address" : "Serveradresse", + "Port" : "Port", + "Credentials" : "Zugangsdaten", + "SMTP Username" : "SMTP-Benutzername", + "SMTP Password" : "SMTP-Passwort", + "Save" : "Speichern", + "Test email settings" : "E-Mail-Einstellungen testen", + "Send email" : "E-Mail senden", + "Security & setup warnings" : "Sicherheits- & Einrichtungswarnungen", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Für die Sicherheit und Performance Deiner Instanz ist es wichtig, dass alles richtig konfiguriert ist. Um Dir dabei zu helfen, führen wir einige automatische Prüfungen durch. Weitere Informationen kannst Du der verlinkten Dokumentation entnehmen.", + "All checks passed." : "Alle Überprüfungen bestanden.", + "There are some errors regarding your setup." : "Es gibt einige Fehler bei Deiner Systemkonfiguration.", + "There are some warnings regarding your setup." : "Es gibt einige Warnungen bei Deiner Systemkonfiguration.", + "Checking for system and security issues." : "Prüfung auf System- und Sicherheitsthemen.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Bitte überprüfe noch einmal die <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">Installationsanleitungen ↗</a> und kontrolliere das <a href=\"%2$s\">Protokoll</a> auf mögliche Fehler oder Warnungen.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Überprüfe die Sicherheit Deiner Nextcloud über <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">unseren Sicherheitsscanner ↗</a>.", + "Version" : "Version", + "Two-Factor Authentication" : "Zwei-Faktor-Authentifizierung", + "Server-side encryption" : "Serverseitige Verschlüsselung", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Serverseitige Verschlüsselung ermöglicht es die auf diesen Server hochgeladenen Dateien zu verschlüsseln. Dies führt allerdings auch zu Nachteilen, wie z.B. einem Geschwindigkeitsverlust. Sie sollte deshalb nur eingeschaltet werden, wenn sie wirklich benötigt wird.", + "Enable server-side encryption" : "Serverseitige Verschlüsselung aktivieren", + "Please read carefully before activating server-side encryption: " : "Bitte sorgfältig lesen, bevor die serverseitige Verschlüsselung aktiviert wird:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Wird die Verschlüsselung einmal aktiviert, so werden alle ab diesem Zeitpunkt hochgeladene Dateien verschlüsselt. Sie kann nur wieder deaktiviert werden, wenn das Verschlüsselungsmodul dies unterstützt und alle Voraussetzungen (wie das Setzen eines Wiederherstellungsschlüssels) im Vorhinein erfüllt wurden.", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Verschlüsselung alleine garantiert nicht die Systemsicherheit. Bitte lese in der Dokumentation nach, wie die Verschlüsselungs-app funktioniert und welche Anwendungsfälle unterstützt werden.", + "Be aware that encryption always increases the file size." : "Bedenke, dass durch die Verschlüsselung die Dateigröße zunimmt. ", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Es ist immer gut, regelmäßig Sicherungskopien von Deinen Daten zu erstellen. Falls Du die Verschlüsselung nutzt, sollte auch eine Sicherung der Verschlüsselungsschlüssel zusammen mit Deinen Daten durchgeführt werden.", + "This is the final warning: Do you really want to enable encryption?" : "Dies ist die letzte Warnung: Verschlüsselung wirklich aktivieren?", + "Enable encryption" : "Verschlüsselung aktivieren", + "No encryption module loaded, please enable an encryption module in the app menu." : "Es wurde kein Verschlüsselungs-Modul geladen, bitte ein Verschlüsselungs-Modul im Anwendungs-Menü aktivieren.", + "Select default encryption module:" : "Standard-Verschlüsselungs-Modul auswählen:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Die Kodierungsschlüssel der alten Verschlüsselung müssen zur neuen Version migriert werden (ownCloud <= 8.0). Bitte »Default Encryption Module« aktivieren und »occ encryption:migrate« aufrufen.", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Du musst Deinen Verschlüsselungsschlüssel von der alten Verschlüsselung (ownCloud <= 8.0) zur Neuen migrieren.", + "Start migration" : "Migration beginnen", + "Background jobs" : "Hintergrund-Aufgaben", + "Last job ran %s." : "Letzte Aufgabe ausgeführt %s", + "Last job execution ran %s. Something seems wrong." : "Letzte Aufgaben-Ausführung lief %s. Etwas scheint falsch zu sein.", + "Background job didn’t run yet!" : "Hintergrund-Aufgabe wurde bislang nicht ausgeführt!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Um die optimale Geschwindigkeit zu erreichen ist es wichtig, dass die Hintergrund-Aktivitäten richtig konfiguriert sind. Für größere Installationen ist 'Cron' die empfohlene Einstellung. Weitere Informationen findest Du in der Dokumentation.", + "Pick background job setting" : "Wähle eine Hintergrund-Aufgabeneinstellung aus", + "Execute one task with each page loaded" : "Eine Aufgabe bei jedem Laden einer Seite ausführen", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php ist bei einem Webcron-Dienst angemeldet, der cron.php alle 5 Minuten über HTTP aufruft.", + "Use system cron service to call the cron.php file every 5 minutes." : "Den System-Cron-Dienst verwenden, um die Datei cron.php alle 5 Minuten aufzurufen.", + "The cron.php needs to be executed by the system user \"%s\"." : "Die cron.php muss durch den Systemnutzer \"%s\" ausgeführt werden.", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Um dies auszuführen, wird die PHP-Posix Erweiterung benötigt. Weitere Informationen in der {linkstart}PHP-Dokumentation{linkend}. ", + "Sharing" : "Teilen", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Als Administrator kannst Du das Teilen-Verhalten feinabstimmen. Weitere Informationen findest Du in der Dokumentation.", + "Allow apps to use the Share API" : "Apps die Benutzung der Share-API erlauben", + "Allow users to share via link" : "Benutzern erlauben, Inhalte über Links zu teilen", + "Allow public uploads" : "Öffentliches Hochladen erlauben", + "Always ask for a password" : "Immer nach einem Passwort fragen", + "Enforce password protection" : "Passwortschutz erzwingen", + "Set default expiration date" : "Standardmäßiges Ablaufdatum setzen", + "Expire after " : "Ablauf nach ", + "days" : "Tagen", + "Enforce expiration date" : "Ablaufdatum erzwingen", + "Allow resharing" : "Weiterverteilen erlauben", + "Allow sharing with groups" : "Teilen mit Gruppen erlauben", + "Restrict users to only share with users in their groups" : "Benutzer auf das Teilen innerhalb ihrer Gruppen beschränken", + "Exclude groups from sharing" : "Gruppen von Freigaben ausschließen", + "These groups will still be able to receive shares, but not to initiate them." : "Diese Gruppen können weiterhin Freigaben empfangen, aber selbst keine mehr initiieren.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Die Auto-Vervollständigung von Benutzernamen im Teilen-Dialog erlauben. Wenn dies deaktiviert ist, muss der vollständige Benutzername oder E-Mail-Adresse eingegeben werden.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Zeige Haftungsausschluss auf der öffentlichen Upload-Seite. (Wird nur gezeigt wenn die Dateiliste nicht angezeigt wird.) ", + "This text will be shown on the public link upload page when the file list is hidden." : "Dieser Text wird auf der öffentlichen Upload-Seite angezeigt wenn die Dateiliste nicht angezeigt wird.", + "Default share permissions" : "Standardberechtigungen für das Teilen", + "Personal" : "Persönlich", + "Administration" : "Verwaltung", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Entwickelt von der {communityopen}Nextcloud Community{linkclose}, der {githubopen}Quellcode{linkclose} ist lizensiert unter {licenseopen}AGPL{linkclose}-Lizenz.", + "Like our Facebook page" : "Like uns auf unserer Facebook-Seite", + "Follow us on Twitter" : "Folge uns auf Twitter", + "Follow us on Mastodon" : " Folge uns auf Mastodon", + "Check out our blog" : "Sieh Dir unseren Blog an", + "Subscribe to our newsletter" : "Abonniere unseren Newsletter", + "Profile picture" : "Profilbild", + "Upload new" : "Neues hochladen", + "Select from Files" : "Aus Dateien wählen", + "Remove image" : "Bild entfernen", + "png or jpg, max. 20 MB" : "png oder jpg, max. 20 MB", + "Picture provided by original account" : "Bild von Original-Konto zur Verfügung gestellt", + "Cancel" : "Abbrechen", + "Choose as profile picture" : "Als Profilbild auswählen", + "Details" : "Details", + "You are a member of the following groups:" : "Du bist Mitglied folgender Gruppen:", + "You are using <strong>%s</strong>" : "Du benutzt <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Du verwendest <strong>%1$s</strong> von <strong>%2$s</strong> (<strong>%3$s %%</strong>)", + "Full name" : "Vollständiger Name", + "No display name set" : "Kein Anzeigename angegeben", + "Your email address" : "Deine E-Mail-Adresse", + "No email address set" : "Keine E-Mail-Adresse angegeben", + "For password reset and notifications" : "Für Passwort-Wiederherstellung und Benachrichtigungen", + "Phone number" : "Telefonnummer", + "Your phone number" : "Deine Telefonnummer", + "Address" : "Adresse", + "Your postal address" : "Deine Postadresse", + "Website" : "Webseite", + "It can take up to 24 hours before the account is displayed as verified." : "Es kann bis zu 24 Stunden dauern, bis das Konto als überprüt angezeigt wird.", + "Link https://…" : "Link https://…", + "Twitter" : "Twitter", + "Twitter handle @…" : "Twitter-Handle @…", + "Help translate" : "Hilf bei der Übersetzung", + "Locale" : "Gebietsschema", + "Current password" : "Aktuelles Passwort", + "Change password" : "Passwort ändern", + "Use a second factor besides your password to increase security for your account." : "Verwende neben Deinem Passwort einen zweiten Faktor, um die Sicherheit für Dein Konto zu erhöhen.", + "Disconnect" : "Trennen", + "Not supported!" : "Nicht unterstützt!", + "Press ⌘-C to copy." : "Drücke ⌘-C zum Kopieren.", + "Press Ctrl-C to copy." : "Zum Kopieren Strg-C drücken.", + "Error while loading browser sessions and device tokens" : "Fehler beim Laden der Browser-Sitzungen und Geräte-Token", + "Store credentials" : "Anmeldeinformationen speichern", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php ist als Webcron-Dienst registriert, der die cron.php alle 15 Minuten per HTTP aufruft. ", + "Use system cron service to call the cron.php file every 15 minutes." : "Nutze den System-Cron-Service um cron.php alle 15 Minuten aufzurufen.", + "Follow us on Google+" : " Folge uns auf Google+" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/de.json b/apps/settings/l10n/de.json new file mode 100644 index 00000000000..f3e1fb18369 --- /dev/null +++ b/apps/settings/l10n/de.json @@ -0,0 +1,821 @@ +{ "translations": { + "{actor} added you to group {group}" : "{actor} hat Dich zur Gruppe {group} hinzugefügt", + "You added {user} to group {group}" : "Du hast {user} zur Gruppe {group} hinzugefügt", + "{actor} added {user} to group {group}" : "{actor} hat {user} zur Gruppe {group} hinzugefügt", + "An administrator added you to group {group}" : "Ein Administrator hat Dich zur Gruppe {group} hinzugefügt", + "An administrator added {user} to group {group}" : "Ein Administrator hat {user} zur Gruppe {group} hinzugefügt", + "{actor} removed you from group {group}" : "{actor} hat Dich von der Gruppe {group} entfernt", + "You removed {user} from group {group}" : "Du hast {user} von der Gruppe {group} entfernt", + "{actor} removed {user} from group {group}" : "{actor} hat {user} von der Gruppe {group} entfernt", + "An administrator removed you from group {group}" : "Ein Administrator hat Dich von der Gruppe {group} entfernt", + "An administrator removed {user} from group {group}" : "Ein Administrator hat {user} von der Gruppe {group} entfernt", + "Your <strong>group memberships</strong> were modified" : "Deine <strong>Gruppenmitgliedschaft</strong> wurde geändert", + "{actor} changed your password" : "{actor} hat Dein Passwort geändert", + "You changed your password" : "Du hast Dein Passwort geändert", + "Your password was reset by an administrator" : "Dein Passwort wurde vom Administrator zurückgesetzt", + "{actor} changed your email address" : "{actor} hat Deine E-Mail-Adresse geändert", + "You changed your email address" : "Du hast Deine E-Mail-Adresse geändert", + "Your email address was changed by an administrator" : "Deine E-Mail-Adresse wurde von einem Administrator geändert", + "You created app password \"{token}\"" : "Du hast ein App-Passwort erstellt \"{token}\"", + "You deleted app password \"{token}\"" : "Du hast ein App-Passwort entfernt \"{token}\"", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Du hast App-Passwort \"{token}\" in \"{newToken}\" umbenannt", + "You granted filesystem access to app password \"{token}\"" : "Du hast Dateisystemzugriff für App-Passwort \"{token}\" erlaubt", + "You revoked filesystem access from app password \"{token}\"" : "Du hast Dateisystemzugriff für App-Passwort \"{token}\" widerrufen", + "Security" : "Sicherheit", + "You successfully logged in using two-factor authentication (%1$s)" : "Du hast Dich erfolgreich mittels Zwei-Faktor-Authentifizierung angemeldet (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Ein Anmeldeversuch mittels Zwei-Faktor-Authentifizierung schlug fehl (%1$s)", + "Remote wipe was started on %1$s" : "Fernlöschung wurde am %1$s gestartet", + "Remote wipe has finished on %1$s" : "Fernlöschung wurde am %1$s abgeschlossen", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Dein <strong>Passwort</strong> oder Deine <strong>E-Mail-Adresse</strong> wurde geändert", + "Couldn't remove app." : "Die App konnte nicht entfernt werden.", + "Couldn't update app." : "Die App konnte nicht aktualisiert werden.", + "Wrong password" : "Falsches Passwort", + "Saved" : "Gespeichert", + "No user supplied" : "Kein Benutzer angegeben", + "Unable to change password" : "Passwort konnte nicht geändert werden", + "Authentication error" : "Authentifizierungsfehler", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Bitte gib ein Wiederherstellungspasswort für das Administratorkonto an, da sonst alle Benutzerdaten verlorengehen.", + "Wrong admin recovery password. Please check the password and try again." : "Falsches Wiederherstellungspasswort für das Admin-Konto. Bitte überprüfe das Passwort und versuche es erneut.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Das Backend unterstützt die Passwortänderung nicht, aber das Verschlüsselungspasswort des Benutzers wurde aktualisiert.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Das Installieren und Aktualisieren von Apps durch den App-Store oder durch Federated Cloud Sharing", + "Federated Cloud Sharing" : "Federated-Cloud-Sharing", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL verwendet eine veraltete %1$s Version (%2$s). Bitte aktualisiere dein Betriebssystem, da ansonsten Funktionen, wie z.B. %3$s, nicht zuverlässig funktionieren.", + "Invalid SMTP password." : "Ungültiges SMTP-Passwort", + "Email setting test" : "Test der E-Mail-Einstellungen", + "Well done, %s!" : "Gut gemacht, %s!", + "If you received this email, the email configuration seems to be correct." : "Wenn Du diese E-Mail empfangen hast, sind die E-Mail-Einstellungen korrekt.", + "Email could not be sent. Check your mail server log" : "E-Mail konnte nicht versandt werden. Prüfe Dein E-Mail-Server-Protokoll", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Beim Senden der E-Mail ist ein Problem aufgetreten. Bitte überprüfe Deine Einstellungen. (Fehler: %s)", + "You need to set your user email before being able to send test emails." : "Du musst Deine Benutzer-E-Mail-Adresse angeben, bevor Du Test-E-Mails versenden kannst.", + "Invalid mail address" : "Ungültige E-Mail-Adresse", + "Settings saved" : "Einstellungen gespeichert", + "Unable to change full name" : "Der vollständige Name konnte nicht geändert werden", + "Unable to change email address" : "E-Mail-Adresse konnte nicht geändert werden", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Um Dein Twitter-Konto zu überprüfen, veröffentliche bitte den folgenden Tweet auf Twitter (Bitte stelle sicher, dass der Tweet keinen Zeilenumbruch enthält):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Um Deine Webseite zu überprüfen, speichere bitte den folgenden Inhalt im Web-Wurzelverzeichnist in der Datei '.well-known/CloudIdVerificationCode.txt' (bitte stelle sicher, das sich der gesamte Text in einer Zeile befindet):", + "%1$s changed your password on %2$s." : "%1$s hat Dein Passwort auf %2$s geändert.", + "Your password on %s was changed." : "Dein Passwort auf %s wurde geändert.", + "Your password on %s was reset by an administrator." : "Dein Passwort auf %s wurde vom Administrator zurückgesetzt.", + "Password for %1$s changed on %2$s" : "Passwort für %1$s geändert auf %2$s", + "Password changed for %s" : "Passwort geändert für %s", + "If you did not request this, please contact an administrator." : "Wenn Du das nicht angefordert haben solltest, wende Dich bitte an den Administrator.", + "Your email address on %s was changed." : "Deine E-Mail-Adresse auf %s wurde geändert.", + "Your email address on %s was changed by an administrator." : "Deine E-Mail-Adresse auf %s wurde von einem Administrator geändert.", + "Email address for %1$s changed on %2$s" : "E-Mail-Adresse für %1$s geändert auf %2$s", + "Email address changed for %s" : "E-Mail-Adresse geändert für %s", + "The new email address is %s" : "Die neue E-Mail-Adresse lautet %s", + "Your %s account was created" : "Dein %s-Konto wurde erstellt", + "Welcome aboard" : "Willkommen an Bord", + "Welcome aboard %s" : "Willkommen an Bord %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Willkommen zu Deinem %s-Konto. Du kannst Deine Daten hinzufügen, schützen und teilen.", + "Your username is: %s" : "Dein Benutzername lautet: %s", + "Set your password" : "Setze Dein Kennwort", + "Go to %s" : "%s aufrufen", + "Install Client" : "Installiere den Client", + "Logged in user must be a subadmin" : "Der angemeldete Benutzer muss ein Administrator sein", + "Create" : "Erstellen", + "Change" : "Ändern", + "Delete" : "Löschen", + "Share" : "Teilen", + "Unlimited" : "Unbegrenzt", + "Verifying" : "Überprüfe", + "Verifying …" : "Überprüfe…", + "Verify" : "Überprüfen", + "Migration in progress. Please wait until the migration is finished" : "Migration läuft. Bitte warte, bis die Migration abgeschlossen ist", + "Migration started …" : "Migration begonnen…", + "Not saved" : "Nicht gespeichert", + "Sending…" : "Senden…", + "Email sent" : "E-Mail gesendet", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Es ist ein Fehler aufgetreten. Bitte lade ein ASCII-kodiertes PEM-Zertifikat hoch.", + "Valid until {date}" : "Gültig bis {date}", + "Local" : "Lokal", + "Private" : "Privat", + "Only visible to local users" : "Nur für lokale Benutzer sichtbar", + "Only visible to you" : "Nur für Dich sichtbar", + "Contacts" : "Kontakte", + "Visible to local users and to trusted servers" : "Sichtbar für lokale Benutzer und vertrauenswürdige Server", + "Public" : "Öffentlich", + "Will be synced to a global and public address book" : "Wird mit einem globalen und einem öffentlichen Adressbuch synchronisiert", + "Very weak password" : "Sehr schwaches Passwort", + "Weak password" : "Schwaches Passwort", + "So-so password" : "Akzeptables Passwort", + "Good password" : "Gutes Passwort", + "Strong password" : "Starkes Passwort", + "An error occurred while changing your language. Please reload the page and try again." : "Es ist ein Fehler beim Wechseln der Sprache aufgetreten. Bitte lade die Seite neu und versuchen es noch einmal.", + "An error occurred while changing your locale. Please reload the page and try again." : "Es ist ein Fehler beim Wechseln des Gebietsschemas aufgetreten. Bitte lade die Seite neu und versuche es noch einmal.", + "Select a profile picture" : "Wähle ein Profilbild", + "Week starts on {fdow}" : "Die Woche startet am {fdow}", + "Groups" : "Gruppen", + "Group list is empty" : "Gruppenliste ist leer", + "Unable to retrieve the group list" : "Gruppenliste konnte nicht abgerufen werden", + "Afrikaans (Namibia)" : "Afrikanisch (Namibia)", + "Afrikaans (South Africa)" : "Afrikanisch (Südafrika)", + "Afrikaans" : "Afrikanisch", + "Akan (Ghana)" : "Akanisch (Ghana)", + "Akan" : "Akanisch", + "Albanian (Albania)" : "Albanisch (Albanien)", + "Albanian" : "Albanisch", + "Amharic (Ethiopia)" : "Amharisch (Äthiopien)", + "Amharic" : "Amharisch", + "Arabic (Algeria)" : "Arabisch (Algerien)", + "Arabic (Bahrain)" : "Arabisch (Bahrain)", + "Arabic (Egypt)" : "Arabisch (Ägypten)", + "Arabic (Iraq)" : "Arabisch (Irak)", + "Arabic (Jordan)" : "Arabisch (Jordanien)", + "Arabic (Kuwait)" : "Arabisch (Kuwait)", + "Arabic (Lebanon)" : "Arabisch (Libanon)", + "Arabic (Libya)" : "Arabisch (Lybien)", + "Arabic (Morocco)" : "Arabisch (Marokko)", + "Arabic (Oman)" : "Arabisch (Oman)", + "Arabic (Qatar)" : "Arabisch (Katar)", + "Arabic (Saudi Arabia)" : "Arabisch (Saudiarabien)", + "Arabic (Sudan)" : "Arabisch (Sudan)", + "Arabic (Syria)" : "Arabisch (Syrien)", + "Arabic (Tunisia)" : "Arabisch (Tunesien)", + "Arabic (United Arab Emirates)" : "Arabisch (Vereinigte Arabische Emirate)", + "Arabic (Yemen)" : "Arabisch (Jemen)", + "Arabic" : "Arabisch", + "Armenian (Armenia)" : "Armenisch (Armenien)", + "Armenian" : "Armenisch", + "Assamese (India)" : "Assamesisch (Indien)", + "Assamese" : "Assamesisch", + "Asu (Tanzania)" : "Asu (Tansania)", + "Asu" : "Asu", + "Azerbaijani (Cyrillic)" : "Aserbaidschanisch (Kyrillisch)", + "Azerbaijani (Cyrillic, Azerbaijan)" : "Aserbaidschanisch (Kyrillisch, Aserbaidschan)", + "Azerbaijani (Latin)" : "Aserbaidschanisch (Latein)", + "Azerbaijani (Latin, Azerbaijan)" : "Aserbaidschanisch (Latein, Aserbaidschan)", + "Azerbaijani" : "Aserbaidschanisch", + "Bambara (Mali)" : "Bambara (Mali)", + "Bambara" : "Bambara", + "Basque (Spain)" : "Baskisch (Spanien)", + "Basque" : "Baskisch", + "Belarusian (Belarus)" : "Weissrussisch (Weissrussland)", + "Belarusian" : "Weissrussisch", + "Bemba (Zambia)" : "Bemba (Sambia)", + "Bemba" : "Bemba", + "Bena (Tanzania)" : "Bena (Tansania)", + "Bena" : "Bena", + "Bengali (Bangladesh)" : "Bengali (Bangladesch)", + "Bengali (India)" : "Bengalisch (Indien)", + "Bengali" : "Bengalisch", + "Bosnian (Bosnia and Herzegovina)" : "Bosnisch (Bosnien und Herzegowina)", + "Bosnian" : "Bosnisch", + "Bulgarian (Bulgaria)" : "Bulgarisch (Bulgarien)", + "Bulgarian" : "Bulgarisch", + "Burmese (Myanmar [Burma])" : "Burmesisch (Myanmar [Burma])", + "Burmese" : "Burmesisch", + "Catalan (Spain)" : "Katalanisch (Spanien)", + "Catalan" : "Katalanisch", + "Central Morocco Tamazight (Latin)" : "Zentralatlas-Tamazight (Latein)", + "Central Morocco Tamazight (Latin, Morocco)" : "Zentralatlas-Tamazight (Latein, Marokko)", + "Central Morocco Tamazight" : "Zentralatlas-Tamazight", + "Cherokee (United States)" : "Cherokee (USA)", + "Cherokee" : "Cherokee", + "Chiga (Uganda)" : "Chiga (Uganda)", + "Chiga" : "Chiga", + "Chinese (Simplified Han)" : "Chinesisch (Vereinfachtes Han)", + "Chinese (Simplified Han, China)" : "Chinesisch (Vereinfachtes Han, China)", + "Chinese (Simplified Han, Hong Kong SAR China)" : "Chinesisch (Vereinfachtes Han, Hongkong SAR China)", + "Chinese (Simplified Han, Macau SAR China)" : "Chinesisch (Vereinfachtes Han, Macau SAR China)", + "Chinese (Simplified Han, Singapore)" : "Chinesisch (Vereinfachtes Han, Singapur)", + "Chinese (Traditional Han)" : "Chinesisch (Traditionelles Han)", + "Chinese (Traditional Han, Hong Kong SAR China)" : "Chinesisch (Traditionelles Han, Hongkong SAR China)", + "Chinese (Traditional Han, Macau SAR China)" : "Chinesisch (Traditionelles Han, Macau SAR China)", + "Chinese (Traditional Han, Taiwan)" : "Chinesisch (Traditionelles Han, Taiwan)", + "Chinese" : "Chinesisch", + "Cornish (United Kingdom)" : "Kornisch (Vereinigtes Königreich)", + "Cornish" : "Kornisch", + "Croatian (Croatia)" : "Kroatisch (Kroatien)", + "Croatian" : "Kroatisch", + "Czech (Czech Republic)" : "Tschechisch (Tschechische Republik)", + "Czech" : "Tschechisch", + "Danish (Denmark)" : "Dänisch (Dänemark)", + "Danish" : "Dänisch", + "Dutch (Belgium)" : "Holländisch (Belgien)", + "Dutch (Netherlands)" : "Holländisch (Niederlande)", + "Dutch" : "Niederländisch", + "Embu (Kenya)" : "Embu (Kenia)", + "Embu" : "Embu", + "English (American Samoa)" : "Englisch (Amerikanisch-Samoa)", + "English (Australia)" : "Englisch (Australien)", + "English (Belgium)" : "Englisch (Belgien)", + "English (Belize)" : "Englisch (Belize)", + "English (Botswana)" : "Englisch (Botswana)", + "English (Canada)" : "Englisch (Kanada)", + "English (Guam)" : "Englisch (Guam)", + "English (Hong Kong SAR China)" : "Englisch (Hongkong SAR China)", + "English (India)" : "Englisch (Indien)", + "English (Ireland)" : "Englisch (Irland)", + "English (Jamaica)" : "Englisch (Jamaika)", + "English (Malta)" : "Englisch (Malta)", + "English (Marshall Islands)" : "Englisch (Marshallinseln)", + "English (Mauritius)" : "Englisch (Mauritius)", + "English (Namibia)" : "Englisch (Namibia)", + "English (New Zealand)" : "Englisch (Neuseeland)", + "English (Northern Mariana Islands)" : "Englisch (Nördliche Marianen)", + "English (Pakistan)" : "Englisch (Pakistan)", + "English (Philippines)" : "Englisch (Philippinen)", + "English (Singapore)" : "Englisch (Singapur)", + "English (South Africa)" : "Englisch (Südafrika)", + "English (Trinidad and Tobago)" : "Englisch (Trinidad und Tobago)", + "English (U.S. Minor Outlying Islands)" : "Englisch (US Minor Outlying Islands)", + "English (U.S. Virgin Islands)" : "Englisch (US Jungferninseln)", + "English (United Kingdom)" : "Englisch (UK)", + "English (United States)" : "Englisch (USA)", + "English (Zimbabwe)" : "Englisch (Simbabwe)", + "English" : "Englisch", + "Esperanto" : "Esperanto", + "Estonian (Estonia)" : "Estnisch (Estland)", + "Estonian" : "Estnisch", + "Ewe (Ghana)" : "Ewe (Ghana)", + "Ewe (Togo)" : "Ewe (Togo)", + "Ewe" : "Ewe", + "Faroese (Faroe Islands)" : "Färöisch (Färöer-Inseln)", + "Faroese" : "Färöisch", + "Filipino (Philippines)" : "Filipino (Philippinen)", + "Filipino" : "Filipino", + "Finnish (Finland)" : "Finnisch (Finnland)", + "Finnish" : "Finnisch", + "French (Belgium)" : "Französisch (Belgien)", + "French (Benin)" : "Französisch (Benin)", + "French (Burkina Faso)" : "Französisch (Burkina Faso)", + "French (Burundi)" : "Französisch (Burundi)", + "French (Cameroon)" : "Französisch (Kamerun)", + "French (Canada)" : "Französisch (Kanada)", + "French (Central African Republic)" : "Französisch (Zentralafrikanische Republik)", + "French (Chad)" : "Französisch (Tschad)", + "French (Comoros)" : "Französisch (Komoren)", + "French (Congo - Brazzaville)" : "Französisch (Kongo - Brazzaville)", + "French (Congo - Kinshasa)" : "Französisch (Kongo - Kinshasa)", + "French (Côte d’Ivoire)" : "Französisch (Elfenbeinküste)", + "French (Djibouti)" : "Französisch (Dschibuti)", + "French (Equatorial Guinea)" : "Französisch (Äquatorialguinea)", + "French (France)" : "Französisch (Frankreich)", + "French (Gabon)" : "Französisch (Gabon)", + "French (Guadeloupe)" : "Französisch (Guadeloupe)", + "French (Guinea)" : "Französisch (Guinea)", + "French (Luxembourg)" : "Französisch (Luxemburg)", + "French (Madagascar)" : "Französisch (Madagaskar)", + "French (Mali)" : "Französisch (Mali)", + "French (Martinique)" : "Französisch (Martinique)", + "French (Monaco)" : "Französisch (Monaco)", + "French (Niger)" : "Französisch (Niger)", + "French (Rwanda)" : "Französisch (Ruanda)", + "French (Réunion)" : "Französisch (Réunion)", + "French (Saint Barthélemy)" : "Französisch (Saint Barthélemy)", + "French (Saint Martin)" : "Französisch (Saint Martin)", + "French (Senegal)" : "Französisch (Senegal)", + "French (Switzerland)" : "Französisch (Schweiz)", + "French (Togo)" : "Französisch (Togo)", + "French" : "Französisch", + "Fulah (Senegal)" : "Fulfulde (Senegal)", + "Fulah" : "Fulfulde", + "Galician (Spain)" : "Galicisch (Spanien)", + "Galician" : "Galicisch", + "Ganda (Uganda)" : "Ganda (Uganda)", + "Ganda" : "Ganda", + "Georgian (Georgia)" : "Georgisch (Gerorgien)", + "Georgian" : "Georgisch", + "German (Austria)" : "Deutsch (Österreich)", + "German (Belgium)" : "Deutsch (Belgien)", + "German (Germany)" : "Deutsch (Deutschland)", + "German (Liechtenstein)" : "Deutsch (Liechtenstein)", + "German (Luxembourg)" : "Deutsch (Luxemburg)", + "German (Switzerland)" : "Deutsch (Schweiz)", + "German" : "Deutsch", + "Greek (Cyprus)" : "Griechisch (Zypern)", + "Greek (Greece)" : "Grieschisch (Griechenland)", + "Greek" : "Griechisch", + "Gujarati (India)" : "Gujarati (Indien)", + "Gujarati" : "Gujarati", + "Gusii (Kenya)" : "Gusii (Kenia)", + "Gusii" : "Gusii", + "Hausa (Latin)" : "Hausa (Latein)", + "Hausa (Latin, Ghana)" : "Hausa (Latein, Ghana)", + "Hausa (Latin, Niger)" : "Hausa (Latein, Nigeria)", + "Hausa (Latin, Nigeria)" : "Hausa (Latein, Nigeria)", + "Hausa" : "Hausa", + "Hawaiian (United States)" : "Hawaianisch (US)", + "Hawaiian" : "Hawaianisch", + "Hebrew (Israel)" : "Hebräisch (Israel)", + "Hebrew" : "Hebräisch", + "Hindi (India)" : "Hindi (Indien)", + "Hindi" : "Hindi", + "Hungarian (Hungary)" : "Ungarisch (Ungarn)", + "Hungarian" : "Ungarisch", + "Icelandic (Iceland)" : "Isländisch (Island)", + "Icelandic" : "Isländisch", + "Igbo (Nigeria)" : "Igbo (Nigeria)", + "Igbo" : "Igbo", + "Indonesian (Indonesia)" : "Indonesisch (Indonesien)", + "Indonesian" : "Indonesisch", + "Irish (Ireland)" : "Irisch (Irland)", + "Irish" : "Irisch", + "Italian (Italy)" : "Italienisch (Italien)", + "Italian (Switzerland)" : "Italienisch (Schweiz)", + "Italian" : "Italienisch", + "Japanese (Japan)" : "Japanisch (Japan)", + "Japanese" : "Japanisch", + "Kabuverdianu (Cape Verde)" : "Kabuverdianu (Kap Verde)", + "Kabuverdianu" : "Kapverdisch", + "Kabyle (Algeria)" : "Kabyle (Algerien)", + "Kabyle" : "Kabyle", + "Kalaallisut (Greenland)" : "Kalaallisut (Grönland)", + "Kalaallisut" : "Kalaallisut", + "Kalenjin (Kenya)" : "Kalenjin (Kenia)", + "Kalenjin" : "Kalenjin", + "Kamba (Kenya)" : "Kamba (Kenia)", + "Kamba" : "Kamba", + "Kannada (India)" : "Kanaresisch (Indien)", + "Kannada" : "Kanaresisch", + "Kazakh (Cyrillic)" : "Kasachisch (Kyrillisch)", + "Kazakh (Cyrillic, Kazakhstan)" : "Kasachisch (Kyrillisch, Kasachstan)", + "Kazakh" : "Kasachisch", + "Khmer (Cambodia)" : "Khmer (Kambodscha)", + "Khmer" : "Khmer", + "Kikuyu (Kenya)" : "Kikuyu (Kenia)", + "Kikuyu" : "Kikuyu", + "Kinyarwanda (Rwanda)" : "Kinyarwanda (Ruanda)", + "Kinyarwanda" : "Kinyarwanda", + "Konkani (India)" : "Konkani (Indien)", + "Konkani" : "Konkani", + "Korean (South Korea)" : "Koreanisch (Süd Korea)", + "Korean" : "Koreanisch", + "Koyra Chiini (Mali)" : "Koyra Chiini (Mali)", + "Koyra Chiini" : "Koyra Chiini", + "Koyraboro Senni (Mali)" : "Koyraboro Senni (Mali)", + "Koyraboro Senni" : "Koyraboro Senni", + "Langi (Tanzania)" : "Langi (Tansania)", + "Langi" : "Langi", + "Latvian (Latvia)" : "Lettisch (Lettland)", + "Latvian" : "Lettisch", + "Lithuanian (Lithuania)" : "Litauisch (Litauen)", + "Lithuanian" : "Litauisch", + "Luo (Kenya)" : "Luo (Kenia)", + "Luo" : "Luo", + "Luyia (Kenya)" : "Luyia (Kenia)", + "Luyia" : "Luyia", + "Macedonian (Macedonia)" : "Mazedonisch (Mazedonien)", + "Macedonian" : "Mazedonisch", + "Machame (Tanzania)" : "Machame (Tansania)", + "Machame" : "Machame", + "Makonde (Tanzania)" : "Makonde (Tansania)", + "Makonde" : "Makonde", + "Malagasy (Madagascar)" : "Sichuan Yi (China)", + "Malagasy" : "Malagassi", + "Malay (Brunei)" : "Malaiisch (Brunei)", + "Malay (Malaysia)" : "Malaysisch (Malaysia)", + "Malay" : "Malaiisch", + "Malayalam (India)" : "Malayalam (Indien)", + "Malayalam" : "Malayalam", + "Maltese (Malta)" : "Maltesisch (Malta)", + "Maltese" : "Maltesisch", + "Manx (United Kingdom)" : "Manx-Gälisch (UK)", + "Manx" : "Manx-Gälisch", + "Marathi (India)" : "Marathi (Indien)", + "Marathi" : "Marathi", + "Masai (Kenya)" : "Masai (Kenia)", + "Masai (Tanzania)" : "Masai (Tansania)", + "Masai" : "Masai", + "Meru (Kenya)" : "Meru (Kenia)", + "Meru" : "Meru", + "Morisyen (Mauritius)" : "Morisyen (Mauritius)", + "Morisyen" : "Morisyen", + "Nama (Namibia)" : "Nama (Namibia)", + "Nama" : "Nama", + "Nepali (India)" : "Nepalesisch (Indien)", + "Nepali (Nepal)" : "Nepalesisch (Indien)", + "Nepali" : "Nepali", + "North Ndebele (Zimbabwe)" : "Nord-Ndebele (Simbabwe)", + "North Ndebele" : "Nord-Ndebele", + "Norwegian Bokmål (Norway)" : "Norwegisch Bokmål (Norwegen)", + "Norwegian Bokmål" : "Norwegisch Bokmål", + "Norwegian Nynorsk (Norway)" : "Neunorwegisch (Norwegen)", + "Norwegian Nynorsk" : "Neunorwegisch", + "Nyankole (Uganda)" : "Nyankole (Uganda)", + "Nyankole" : "Nyankole", + "Oriya (India)" : "Oriya (Indien)", + "Oriya" : "Oriya", + "Oromo (Ethiopia)" : "Oromo (Äthiopien)", + "Oromo (Kenya)" : "Oromo (Kenia)", + "Oromo" : "Oromo", + "Pashto (Afghanistan)" : "Pashto (Afghanistan)", + "Pashto" : "Pashto", + "Persian (Afghanistan)" : "Persisch (Afghanistan)", + "Persian (Iran)" : "Persisch (Iran)", + "Persian" : "Persisch", + "Polish (Poland)" : "Polnisch (Polen)", + "Polish" : "Polnisch", + "Portuguese (Brazil)" : "Portugisisch (Brasilien)", + "Portuguese (Guinea-Bissau)" : "Protugisisch (Guinea-Bissau)", + "Portuguese (Mozambique)" : "Portuguisisch (Mosambik)", + "Portuguese (Portugal)" : "Portugiesisch (Portugal)", + "Portuguese" : "Portugiesisch", + "Punjabi (Arabic)" : "Punjabi (Arabisch)", + "Punjabi (Arabic, Pakistan)" : "Punjabi (Arabisch, Pakistan)", + "Punjabi (Gurmukhi)" : "Punjabi (Gurmukhi)", + "Punjabi (Gurmukhi, India)" : "Punjabi (Gurmukhi, Indien)", + "Punjabi" : "Punjabi", + "Romanian (Moldova)" : "Rumänisch (Modavien)", + "Romanian (Romania)" : "Rumänisch (Rumänien)", + "Romanian" : "Rumänisch", + "Romansh (Switzerland)" : "Romanisch (Schweiz)", + "Romansh" : "Romanisch", + "Rombo (Tanzania)" : "Rombo (Tansania)", + "Rombo" : "Rombo", + "Russian (Moldova)" : "Russich (Moldavien)", + "Russian (Russia)" : "Russisch (Russland)", + "Russian (Ukraine)" : "Russisch (Ukraine)", + "Russian" : "Russisch", + "Rwa (Tanzania)" : "Rwa (Tansania)", + "Rwa" : "Rwa", + "Samburu (Kenya)" : "Samburu (Kenia)", + "Samburu" : "Samburu", + "Sango (Central African Republic)" : "Sango (Zentralafrikanische Republik)", + "Sango" : "Sango", + "Sena (Mozambique)" : "Sena (Mosambik)", + "Sena" : "Sena", + "Serbian (Cyrillic)" : "Serbisch (Kyrillisch)", + "Serbian (Cyrillic, Bosnia and Herzegovina)" : "Serbisch (Kyrillisch, Bosnien und Herzogovina)", + "Serbian (Cyrillic, Montenegro)" : "Serbisch (Kyrillisch, Montenegro)", + "Serbian (Cyrillic, Serbia)" : "Serbisch (Kyrillisch, Serbien)", + "Serbian (Latin)" : "Serbisch (Latein)", + "Serbian (Latin, Bosnia and Herzegovina)" : "Serbisch (Latein, Bosnien und Herzegovina)", + "Serbian (Latin, Montenegro)" : "Serbisch (Latein, Montenegro)", + "Serbian (Latin, Serbia)" : "Serbisch (Latein, Serbien)", + "Serbian" : "Serbisch", + "Shona (Zimbabwe)" : "Shona (Simbabwe)", + "Shona" : "Shona", + "Sichuan Yi (China)" : "Sichuan Yi (China)", + "Sichuan Yi" : "Sichuan Yi", + "Sinhala (Sri Lanka)" : "Singhalesisch (Sri Lanka)", + "Sinhala" : "Sinhala", + "Slovak (Slovakia)" : "Slowakisch (Slowakei)", + "Slovak" : "Slowakisch", + "Slovenian (Slovenia)" : "Slowenisch (Slowenien)", + "Slovenian" : "Slowenisch", + "Soga (Uganda)" : "Soga (Uganda)", + "Soga" : "Soga", + "Somali (Djibouti)" : "Somalisch (Dschibuti)", + "Somali (Ethiopia)" : "Somalisch (Äthiopien)", + "Somali (Kenya)" : "Somalisch (Kenia)", + "Somali (Somalia)" : "Somalisch (Somalia)", + "Somali" : "Samalisch", + "Spanish (Argentina)" : "Spanisch (Argentinien)", + "Spanish (Bolivia)" : "Spanisch (Bolivien)", + "Spanish (Chile)" : "Spanisch (Chile)", + "Spanish (Colombia)" : "Spanisch (Kolumbien)", + "Spanish (Costa Rica)" : "Spanisch (Costa Rica)", + "Spanish (Dominican Republic)" : "Spanisch (Dominikanische Republik)", + "Spanish (Ecuador)" : "Spanisch (Equador)", + "Spanish (El Salvador)" : "Spanisch (El Salvador)", + "Spanish (Equatorial Guinea)" : "Spanisch (Äquatorialguinea)", + "Spanish (Guatemala)" : "Spanisch (Guatemala)", + "Spanish (Honduras)" : "Spanisch (Honduras)", + "Spanish (Latin America)" : "Spanisch (Lateinamerika)", + "Spanish (Mexico)" : "Spanisch (Mexiko)", + "Spanish (Nicaragua)" : "Spanisch (Nikaragua)", + "Spanish (Panama)" : "Spanisch (Panama)", + "Spanish (Paraguay)" : "Spanisch (Paraguay)", + "Spanish (Peru)" : "Spanisch (Peru)", + "Spanish (Puerto Rico)" : "Spanisch (Puerto Rico)", + "Spanish (Spain)" : "Spanisch (Spanien)", + "Spanish (United States)" : "Spanisch (USA)", + "Spanish (Uruguay)" : "Spanisch (Uruquai)", + "Spanish (Venezuela)" : "Spanisch (Venezuela)", + "Spanish" : "Spanisch", + "Swahili (Kenya)" : "Suaheli (Kenia)", + "Swahili (Tanzania)" : "Swahili (Tansania)", + "Swahili" : "Swahili", + "Swedish (Finland)" : "Schwedisch (Finnland)", + "Swedish (Sweden)" : "Schwedisch (Schweden)", + "Swedish" : "Schwedisch", + "Swiss German (Switzerland)" : "Schweizerdeutsch (Schweiz)", + "Swiss German" : "Schweizerdeutsch", + "Tachelhit (Latin)" : "Tachelhit (Latein)", + "Tachelhit (Latin, Morocco)" : "Tachelhit (Latein, Marokko)", + "Tachelhit (Tifinagh)" : "Tachelhit (Tifinagh)", + "Tachelhit (Tifinagh, Morocco)" : "Tachelhit (Tifinagh, Marokko)", + "Tachelhit" : "Tachelhit", + "Taita (Kenya)" : "Taita (Kenia)", + "Taita" : "Taita", + "Tamil (India)" : "Tamil (Indien)", + "Tamil (Sri Lanka)" : "Tamil (Sri Lanka)", + "Tamil" : "Tamilisch", + "Telugu (India)" : "Telugu (Indien)", + "Telugu" : "Telugu", + "Teso (Kenya)" : "Teso (Kenia)", + "Teso (Uganda)" : "Teso (Uganda)", + "Teso" : "Teso", + "Thai (Thailand)" : "Thailändisch (Thailand)", + "Thai" : "Thai", + "Tibetan (China)" : "Tibetisch (China)", + "Tibetan (India)" : "Tibetisch (Indien)", + "Tibetan" : "Tibetisch", + "Tigrinya (Eritrea)" : "Tigrinya (Eritrea)", + "Tigrinya (Ethiopia)" : "Tigrinya (Äthiopien)", + "Tigrinya" : "Tigrinisch", + "Tonga (Tonga)" : "Tongaisch (Tonga)", + "Tonga" : "Tonga", + "Turkish (Turkey)" : "Türkisch (Türkei)", + "Turkish" : "Türkisch", + "Ukrainian (Ukraine)" : "Ukrainisch (Ukraine)", + "Ukrainian" : "Ukrainisch", + "Urdu (India)" : "Urdu (Indien)", + "Urdu (Pakistan)" : "Urdu (Pakistan)", + "Urdu" : "Urdu", + "Uzbek (Arabic)" : "Usbekisch (Arabisch)", + "Uzbek (Arabic, Afghanistan)" : "Usbekisch (Arabisch, Afghanistan)", + "Uzbek (Cyrillic)" : "Usbekisch (Kyrillisch)", + "Uzbek (Cyrillic, Uzbekistan)" : "Usbekisch (Kyrillisch, Usbekistan)", + "Uzbek (Latin)" : "Usbekisch (Latein)", + "Uzbek (Latin, Uzbekistan)" : "Usbekisch (Latein, Usbekistan)", + "Uzbek" : "Usbekisch", + "Vietnamese (Vietnam)" : "Vietnamesisch (Vietnam)", + "Vietnamese" : "Vietnamesisch", + "Vunjo (Tanzania)" : "Vunjo (Tansania)", + "Vunjo" : "Vunjo", + "Welsh (United Kingdom)" : "Walisisch (Vereinigtes Königreich)", + "Welsh" : "Walisisch", + "Yoruba (Nigeria)" : "Yoruba (Nigeria)", + "Yoruba" : "Yoruba", + "Zulu (South Africa)" : "Zulu (Südafrika)", + "Zulu" : "Zulu", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Zwei-Faktor-Authentifizierung kann für alle \nBenutzer und Gruppen erzwungen werden. Wenn kein Anbieter für Zwei-Faktor-Authentifizierung für sie eingerichtet ist, so können sie sich nicht am System anmelden.", + "Enforce two-factor authentication" : "Zwei-Faktor-Authentifizierung erzwingen", + "Limit to groups" : "Auf Gruppen beschränken", + "Enforcement of two-factor authentication can be set for certain groups only." : "Erzwingen der Zwei-Faktor-Authentifizierung kann nur für bestimmte Gruppen eingestellt werden.", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "Zwei-Faktor-Authentifizierung wird für alle\tMitglieder der folgenden Gruppen erzwungen.", + "Enforced groups" : "Erzwungene Gruppen", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "Zwei-Faktor-Authentifizierung wird nicht für\tMitglieder der folgenden Gruppen erzwungen.", + "Excluded groups" : "Ausgeschlossene Gruppen", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "Bei der Auswahl/Abwahl von Gruppen wird folgende Logik verwendet, um Festzustellen ob ein Benutzer 2FA verwenden muss: Wenn keine Gruppe ausgewählt ist, dann wird 2FA für alle Benutzer aktiviert, außer für Mitglieder der ausgenommenen Gruppen. Sind Gruppen ausgewählt, so wird 2FA für alle Mitglieder dieser Gruppen aktiviert. Ist ein Benutzer Mitglieder der ausgewählten und ausgenommenen Gruppe, so hat die Auswahl Vorrang und 2FA wird aktiviert. ", + "Save changes" : "Änderungen speichern", + "Marked for remote wipe" : "Für Fernlöschung markiert", + "Device settings" : "Geräteeinstellungen", + "Allow filesystem access" : "Erlaube Dateisystem-Zugriff", + "Rename" : "Umbenennen", + "Revoke" : "Widerrufen", + "Wipe device" : "Gerät löschen", + "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Zurückziehen dieses Tokens könnte das Löschen von Deinem Gerät verhindern, wenn die Löschung noch nicht gestartet wurde.", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome für Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Nextcloud iOS-App", + "Nextcloud Android app" : "Nextcloud Android-App", + "Nextcloud Talk for iOS" : "Nextcloud Talk für iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk für Android", + "Sync client - {os}" : "Sync-Client - {os}", + "This session" : "Diese Sitzung", + "Device" : "Gerät", + "Last activity" : "Letzte Aktivität", + "Devices & sessions" : "Geräte & Sitzungen", + "Web, desktop and mobile clients currently logged in to your account." : "Aktuell in Deinem Konto angemeldete Web-, Desktop- und Mobil-Clients.", + "Do you really want to wipe your data from this device?" : "Möchtest Du wirklich alle Daten von diesem Gerät löschen?", + "Confirm wipe" : "Löschen bestätigen", + "Error while creating device token" : "Fehler beim Erstellen des Geräte-Tokens", + "Error while updating device token scope" : "Fehler bei der Aktualisierung des Geräte-Token-Scope", + "Error while updating device token name" : "Fehler bei der Aktualisierung des Geräte-Token-Namens", + "Error while deleting the token" : "Fehler beim Löschen des Geräte-Tokens", + "Error while wiping the device with the token" : "Fehler während des Löschens des Geräts mit dem Token", + "App name" : "App-Name", + "Create new app password" : "Neues App-Passwort erstellen", + "Use the credentials below to configure your app or device." : "Nutze die unten angebenen Anmeldeinformationen, um Deine App oder Dein Gerät zu konfigurieren.", + "For security reasons this password will only be shown once." : "Aus Sicherheitsgründen wird das Passwort nur einmal angezeigt.", + "Username" : "Benutzername", + "Password" : "Passwort", + "Done" : "Erledigt", + "Show QR code for mobile apps" : "QR-Code für mobile Apps anzeigen", + "Copied!" : "Kopiert!", + "Copy" : "Kopieren", + "Could not copy app password. Please copy it manually." : "Das Passwort für die App konnte nicht kopiert werden. Bitte kopiere es manuell.", + "This app is supported via your current Nextcloud subscription." : "Diese App wird von Deinem aktuellen Nextcloud-Abonnement unterstützt.", + "Supported" : "Unterstützt", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Offizielle Apps werden von und innerhalb der Community entwickelt. Sie stellen die zentralen Funktionen bereit und sind für den produktiven Einsatz geeignet.", + "Official" : "Offiziell", + "by" : "von", + "Update to {version}" : "Aktualisieren auf {version}", + "Remove" : "Entfernen", + "Disable" : "Deaktivieren", + "All" : "Alle", + "Limit app usage to groups" : "App-Verwendung auf Gruppen beschränken", + "No results" : "Keine Ergebnisse", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Für diese App wurde keine untere Versionsgrenze für Nextcloud gesetzt. Dies wird zukünftig als Fehler behandelt.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Für diese App wurde keine obere Versionsgrenze für Nextcloud gesetzt. Dies wird zukünftig als Fehler behandelt.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Diese App kann nicht installiert werden, weil die folgenden Abhängigkeiten nicht erfüllt sind:", + "View in store" : "Im Store anzeigen", + "Visit website" : "Webseite besuchen", + "Report a bug" : "Melde einen technischen Fehler", + "User documentation" : "Dokumentation für Benutzer", + "Admin documentation" : "Dokumentation für Administratoren", + "Developer documentation" : "Dokumentation für Entwickler", + "Update to {update}" : "Aktualisieren auf {update}", + "Results from other categories" : "Ergebnisse aus anderen Kategorien", + "No apps found for your version" : "Es wurden keine Apps für Deine Version gefunden", + "Disable all" : "Alle deaktivieren", + "Enable all" : "Alle aktivieren", + "Download and enable" : "Herunterladen und aktivieren", + "Enable" : "Aktivieren", + "Enable untested app" : "Ungetestete App aktivieren", + "The app will be downloaded from the app store" : "Die App wird aus dem App-Store heruntergeladen", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Diese App ist als nicht-kompatibel mit Deiner Nextcloud-Version markiert. Wenn Du fortfährst, so kannst Du die App installieren. Bitte beachte, dass die App nicht wie erwartet funktionieren könnte.", + "You do not have permissions to see the details of this user" : "Du hast keine Berechtigung, um auf die Details dieses Benutzers zu sehen", + "The backend does not support changing the display name" : "Das Backend unterstützt keine Änderung des Anzeigenamens", + "New password" : "Neues Passwort", + "Add user in group" : "Nutzer zur Gruppe hinzufügen", + "Set user as admin for" : "Benutzer als Administrator setzen für", + "Select user quota" : "Speicherkontigent wählen", + "No language set" : "Keine Sprache eingestellt.", + "Never" : "Niemals", + "Delete user" : "Benutzer löschen", + "Wipe all devices" : "Alle Geräte löschen", + "Disable user" : "Benutzer deaktivieren", + "Enable user" : "Benutzer aktivieren", + "Resend welcome email" : "Willkommens-E-Mail erneut senden", + "{size} used" : "{size} verwendet", + "Welcome mail sent!" : "Willkommens-E-Mail gesendet!", + "Display name" : "Anzeigename", + "Email" : "E-Mail", + "Group admin for" : "Gruppenadministrator für", + "Quota" : "Kontingent", + "Language" : "Sprache", + "Storage location" : "Speicherort", + "User backend" : "Benutzer-Backend", + "Last login" : "Letzte Anmeldung", + "Will be autogenerated" : "Wird automatisch erzeugt", + "Default language" : "Standard-Sprache", + "Add a new user" : "Neuen Nutzer hinzufügen", + "No users in here" : "Kein Nutzer vorhanden", + "Default quota" : "Standard Speicherkontingent ", + "Password change is disabled because the master key is disabled" : "Das Ändern des Passwortes ist deaktiviert, da der Master-Schlüssel deaktiviert ist", + "Common languages" : "Gängige Sprachen", + "All languages" : "Alle Sprachen", + "Your apps" : "Deine Apps", + "Active apps" : "Aktive Apps", + "Disabled apps" : "Deaktivierte Apps", + "Updates" : "Aktualisierungen", + "App bundles" : "App-Pakete", + "{license}-licensed" : "{license}-Lizensiert", + "New user" : "Neuer Benutzer", + "Default quota:" : "Standard Speicherkontingent:", + "Select default quota" : "Standard Speicherkontingent wählen", + "Show Languages" : "Sprachen anzeigen", + "Show last login" : "Letzte Anmeldung anzeigen", + "Show user backend" : "Benutzer-Backend anzeigen", + "Show storage path" : "Zeige Speicherpfad", + "You are about to remove the group {group}. The users will NOT be deleted." : "Du bist dabei die Gruppe {group} zu löschen. Die Benutzer werden NICHT gelöscht.", + "Please confirm the group removal " : "Bitte die Löschung der Gruppe bestätigen", + "Remove group" : "Gruppe entfernen", + "Admins" : "Administratoren", + "Disabled users" : "Deaktivierte Benutzer", + "Everyone" : "Jeder", + "Add group" : "Gruppe hinzufügen", + "An error occured during the request. Unable to proceed." : "Es ist ein Fehler bei der Anfrage aufgetreten. Es kann nicht fortgefahren werden.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Die App wurde aktiviert, muss aber aktualisiert werden. Du wirst in 5 Sekunden zur Aktualisierungsseite weitergeleitet.", + "App update" : "App-Aktualisierung", + "Error: This app can not be enabled because it makes the server unstable" : "Fehler: Diese App kann nicht aktiviert werden, da sie den Server instabil macht. ", + "SSL Root Certificates" : "SSL-Root-Zertifikate", + "Common Name" : "Allgemeiner Name", + "Valid until" : "Gültig bis", + "Issued By" : "Ausgestellt von:", + "Valid until %s" : "Gültig bis %s", + "Import root certificate" : "Root-Zertifikat importieren", + "Administrator documentation" : "Dokumentation für Administratoren", + "Documentation" : "Dokumentation", + "Forum" : "Forum", + "None" : "Keine", + "Login" : "Anmelden", + "Plain" : "Klartext", + "NT LAN Manager" : "NT-LAN-Manager", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "E-Mail-Server", + "Open documentation" : "Dokumentation öffnen", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Es ist wichtig diesen Server so zu konfigurieren, dass E-Mails versandt werden können, z.B. für den Passwort-Reset und Benachrichtigungen.", + "Send mode" : "Sendemodus", + "Encryption" : "Verschlüsselung", + "Sendmail mode" : "Sendmail-Modus", + "From address" : "Absenderadresse", + "mail" : "E-Mail", + "Authentication method" : "Authentifizierungsmethode", + "Authentication required" : "Authentifizierung benötigt", + "Server address" : "Serveradresse", + "Port" : "Port", + "Credentials" : "Zugangsdaten", + "SMTP Username" : "SMTP-Benutzername", + "SMTP Password" : "SMTP-Passwort", + "Save" : "Speichern", + "Test email settings" : "E-Mail-Einstellungen testen", + "Send email" : "E-Mail senden", + "Security & setup warnings" : "Sicherheits- & Einrichtungswarnungen", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Für die Sicherheit und Performance Deiner Instanz ist es wichtig, dass alles richtig konfiguriert ist. Um Dir dabei zu helfen, führen wir einige automatische Prüfungen durch. Weitere Informationen kannst Du der verlinkten Dokumentation entnehmen.", + "All checks passed." : "Alle Überprüfungen bestanden.", + "There are some errors regarding your setup." : "Es gibt einige Fehler bei Deiner Systemkonfiguration.", + "There are some warnings regarding your setup." : "Es gibt einige Warnungen bei Deiner Systemkonfiguration.", + "Checking for system and security issues." : "Prüfung auf System- und Sicherheitsthemen.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Bitte überprüfe noch einmal die <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">Installationsanleitungen ↗</a> und kontrolliere das <a href=\"%2$s\">Protokoll</a> auf mögliche Fehler oder Warnungen.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Überprüfe die Sicherheit Deiner Nextcloud über <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">unseren Sicherheitsscanner ↗</a>.", + "Version" : "Version", + "Two-Factor Authentication" : "Zwei-Faktor-Authentifizierung", + "Server-side encryption" : "Serverseitige Verschlüsselung", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Serverseitige Verschlüsselung ermöglicht es die auf diesen Server hochgeladenen Dateien zu verschlüsseln. Dies führt allerdings auch zu Nachteilen, wie z.B. einem Geschwindigkeitsverlust. Sie sollte deshalb nur eingeschaltet werden, wenn sie wirklich benötigt wird.", + "Enable server-side encryption" : "Serverseitige Verschlüsselung aktivieren", + "Please read carefully before activating server-side encryption: " : "Bitte sorgfältig lesen, bevor die serverseitige Verschlüsselung aktiviert wird:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Wird die Verschlüsselung einmal aktiviert, so werden alle ab diesem Zeitpunkt hochgeladene Dateien verschlüsselt. Sie kann nur wieder deaktiviert werden, wenn das Verschlüsselungsmodul dies unterstützt und alle Voraussetzungen (wie das Setzen eines Wiederherstellungsschlüssels) im Vorhinein erfüllt wurden.", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Verschlüsselung alleine garantiert nicht die Systemsicherheit. Bitte lese in der Dokumentation nach, wie die Verschlüsselungs-app funktioniert und welche Anwendungsfälle unterstützt werden.", + "Be aware that encryption always increases the file size." : "Bedenke, dass durch die Verschlüsselung die Dateigröße zunimmt. ", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Es ist immer gut, regelmäßig Sicherungskopien von Deinen Daten zu erstellen. Falls Du die Verschlüsselung nutzt, sollte auch eine Sicherung der Verschlüsselungsschlüssel zusammen mit Deinen Daten durchgeführt werden.", + "This is the final warning: Do you really want to enable encryption?" : "Dies ist die letzte Warnung: Verschlüsselung wirklich aktivieren?", + "Enable encryption" : "Verschlüsselung aktivieren", + "No encryption module loaded, please enable an encryption module in the app menu." : "Es wurde kein Verschlüsselungs-Modul geladen, bitte ein Verschlüsselungs-Modul im Anwendungs-Menü aktivieren.", + "Select default encryption module:" : "Standard-Verschlüsselungs-Modul auswählen:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Die Kodierungsschlüssel der alten Verschlüsselung müssen zur neuen Version migriert werden (ownCloud <= 8.0). Bitte »Default Encryption Module« aktivieren und »occ encryption:migrate« aufrufen.", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Du musst Deinen Verschlüsselungsschlüssel von der alten Verschlüsselung (ownCloud <= 8.0) zur Neuen migrieren.", + "Start migration" : "Migration beginnen", + "Background jobs" : "Hintergrund-Aufgaben", + "Last job ran %s." : "Letzte Aufgabe ausgeführt %s", + "Last job execution ran %s. Something seems wrong." : "Letzte Aufgaben-Ausführung lief %s. Etwas scheint falsch zu sein.", + "Background job didn’t run yet!" : "Hintergrund-Aufgabe wurde bislang nicht ausgeführt!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Um die optimale Geschwindigkeit zu erreichen ist es wichtig, dass die Hintergrund-Aktivitäten richtig konfiguriert sind. Für größere Installationen ist 'Cron' die empfohlene Einstellung. Weitere Informationen findest Du in der Dokumentation.", + "Pick background job setting" : "Wähle eine Hintergrund-Aufgabeneinstellung aus", + "Execute one task with each page loaded" : "Eine Aufgabe bei jedem Laden einer Seite ausführen", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php ist bei einem Webcron-Dienst angemeldet, der cron.php alle 5 Minuten über HTTP aufruft.", + "Use system cron service to call the cron.php file every 5 minutes." : "Den System-Cron-Dienst verwenden, um die Datei cron.php alle 5 Minuten aufzurufen.", + "The cron.php needs to be executed by the system user \"%s\"." : "Die cron.php muss durch den Systemnutzer \"%s\" ausgeführt werden.", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Um dies auszuführen, wird die PHP-Posix Erweiterung benötigt. Weitere Informationen in der {linkstart}PHP-Dokumentation{linkend}. ", + "Sharing" : "Teilen", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Als Administrator kannst Du das Teilen-Verhalten feinabstimmen. Weitere Informationen findest Du in der Dokumentation.", + "Allow apps to use the Share API" : "Apps die Benutzung der Share-API erlauben", + "Allow users to share via link" : "Benutzern erlauben, Inhalte über Links zu teilen", + "Allow public uploads" : "Öffentliches Hochladen erlauben", + "Always ask for a password" : "Immer nach einem Passwort fragen", + "Enforce password protection" : "Passwortschutz erzwingen", + "Set default expiration date" : "Standardmäßiges Ablaufdatum setzen", + "Expire after " : "Ablauf nach ", + "days" : "Tagen", + "Enforce expiration date" : "Ablaufdatum erzwingen", + "Allow resharing" : "Weiterverteilen erlauben", + "Allow sharing with groups" : "Teilen mit Gruppen erlauben", + "Restrict users to only share with users in their groups" : "Benutzer auf das Teilen innerhalb ihrer Gruppen beschränken", + "Exclude groups from sharing" : "Gruppen von Freigaben ausschließen", + "These groups will still be able to receive shares, but not to initiate them." : "Diese Gruppen können weiterhin Freigaben empfangen, aber selbst keine mehr initiieren.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Die Auto-Vervollständigung von Benutzernamen im Teilen-Dialog erlauben. Wenn dies deaktiviert ist, muss der vollständige Benutzername oder E-Mail-Adresse eingegeben werden.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Zeige Haftungsausschluss auf der öffentlichen Upload-Seite. (Wird nur gezeigt wenn die Dateiliste nicht angezeigt wird.) ", + "This text will be shown on the public link upload page when the file list is hidden." : "Dieser Text wird auf der öffentlichen Upload-Seite angezeigt wenn die Dateiliste nicht angezeigt wird.", + "Default share permissions" : "Standardberechtigungen für das Teilen", + "Personal" : "Persönlich", + "Administration" : "Verwaltung", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Entwickelt von der {communityopen}Nextcloud Community{linkclose}, der {githubopen}Quellcode{linkclose} ist lizensiert unter {licenseopen}AGPL{linkclose}-Lizenz.", + "Like our Facebook page" : "Like uns auf unserer Facebook-Seite", + "Follow us on Twitter" : "Folge uns auf Twitter", + "Follow us on Mastodon" : " Folge uns auf Mastodon", + "Check out our blog" : "Sieh Dir unseren Blog an", + "Subscribe to our newsletter" : "Abonniere unseren Newsletter", + "Profile picture" : "Profilbild", + "Upload new" : "Neues hochladen", + "Select from Files" : "Aus Dateien wählen", + "Remove image" : "Bild entfernen", + "png or jpg, max. 20 MB" : "png oder jpg, max. 20 MB", + "Picture provided by original account" : "Bild von Original-Konto zur Verfügung gestellt", + "Cancel" : "Abbrechen", + "Choose as profile picture" : "Als Profilbild auswählen", + "Details" : "Details", + "You are a member of the following groups:" : "Du bist Mitglied folgender Gruppen:", + "You are using <strong>%s</strong>" : "Du benutzt <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Du verwendest <strong>%1$s</strong> von <strong>%2$s</strong> (<strong>%3$s %%</strong>)", + "Full name" : "Vollständiger Name", + "No display name set" : "Kein Anzeigename angegeben", + "Your email address" : "Deine E-Mail-Adresse", + "No email address set" : "Keine E-Mail-Adresse angegeben", + "For password reset and notifications" : "Für Passwort-Wiederherstellung und Benachrichtigungen", + "Phone number" : "Telefonnummer", + "Your phone number" : "Deine Telefonnummer", + "Address" : "Adresse", + "Your postal address" : "Deine Postadresse", + "Website" : "Webseite", + "It can take up to 24 hours before the account is displayed as verified." : "Es kann bis zu 24 Stunden dauern, bis das Konto als überprüt angezeigt wird.", + "Link https://…" : "Link https://…", + "Twitter" : "Twitter", + "Twitter handle @…" : "Twitter-Handle @…", + "Help translate" : "Hilf bei der Übersetzung", + "Locale" : "Gebietsschema", + "Current password" : "Aktuelles Passwort", + "Change password" : "Passwort ändern", + "Use a second factor besides your password to increase security for your account." : "Verwende neben Deinem Passwort einen zweiten Faktor, um die Sicherheit für Dein Konto zu erhöhen.", + "Disconnect" : "Trennen", + "Not supported!" : "Nicht unterstützt!", + "Press ⌘-C to copy." : "Drücke ⌘-C zum Kopieren.", + "Press Ctrl-C to copy." : "Zum Kopieren Strg-C drücken.", + "Error while loading browser sessions and device tokens" : "Fehler beim Laden der Browser-Sitzungen und Geräte-Token", + "Store credentials" : "Anmeldeinformationen speichern", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php ist als Webcron-Dienst registriert, der die cron.php alle 15 Minuten per HTTP aufruft. ", + "Use system cron service to call the cron.php file every 15 minutes." : "Nutze den System-Cron-Service um cron.php alle 15 Minuten aufzurufen.", + "Follow us on Google+" : " Folge uns auf Google+" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} \ No newline at end of file diff --git a/apps/settings/l10n/de_DE.js b/apps/settings/l10n/de_DE.js new file mode 100644 index 00000000000..fb03e8a7014 --- /dev/null +++ b/apps/settings/l10n/de_DE.js @@ -0,0 +1,823 @@ +OC.L10N.register( + "settings", + { + "{actor} added you to group {group}" : "{actor} hat Sie zur Gruppe {group} hinzugefügt", + "You added {user} to group {group}" : "Sie haben {user} zur Gruppe {group} hinzugefügt", + "{actor} added {user} to group {group}" : "{actor} hat {user} zur Gruppe {group} hinzugefügt", + "An administrator added you to group {group}" : "Ein Administrator hat Sie zur Gruppe {group} hinzugefügt", + "An administrator added {user} to group {group}" : "Ein Administrator hat {user} zur Gruppe {group} hinzugefügt", + "{actor} removed you from group {group}" : "{actor} hat Sie von der Gruppe {group} entfernt", + "You removed {user} from group {group}" : "Sie haben {user} von der Gruppe {group} entfernt", + "{actor} removed {user} from group {group}" : "{actor} hat {user} von der Gruppe {group} entfernt", + "An administrator removed you from group {group}" : "Ein Administrator hat Sie von der Gruppe {group} entfernt", + "An administrator removed {user} from group {group}" : "Ein Administrator hat {user} von der Gruppe {group} entfernt", + "Your <strong>group memberships</strong> were modified" : "Ihre <strong>Gruppenmitgliedschaft</strong> wurde geändert", + "{actor} changed your password" : "{actor} hat Ihr Passwort geändert", + "You changed your password" : "Sie haben Ihr Passwort geändert", + "Your password was reset by an administrator" : "Ihr Passwort wurde vom Administrator zurückgesetzt", + "{actor} changed your email address" : "{actor} hat Ihre E-Mail-Adresse geändert", + "You changed your email address" : "Sie haben Ihre E-Mail-Adresse geändert", + "Your email address was changed by an administrator" : "Ihre E-Mail-Adresse wurde von einem Administrator geändert", + "You created app password \"{token}\"" : "Sie haben ein App-Passwort erstellt \"{token}\"", + "You deleted app password \"{token}\"" : "Sie haben ein App-Passwort entfernt \"{token}\"", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Sie haben App-Passwort \"{token}\" in \"{newToken}\" umbenannt", + "You granted filesystem access to app password \"{token}\"" : "Sie haben Dateisystemzugriff für App-Passwort \"{token}\" erlaubt", + "You revoked filesystem access from app password \"{token}\"" : "Sie haben Dateisystemzugriff für App-Passwort \"{token}\" widerrufen", + "Security" : "Sicherheit", + "You successfully logged in using two-factor authentication (%1$s)" : "Sie haben sich erfolgreich mittels Zwei-Faktor-Authentifizierung angemeldet (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Ein Anmeldeversuch mittels Zwei-Faktor-Authentifizierung schlug fehl (%1$s)", + "Remote wipe was started on %1$s" : "Fernlöschung wurde am %1$s gestartet", + "Remote wipe has finished on %1$s" : "Fernlöschung wurde am %1$s abgeschlossen", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Ihr <strong>Passwort</strong> oder Ihre <strong>E-Mail-Adresse</strong> wurde geändert", + "Couldn't remove app." : "Die App konnte nicht entfernt werden.", + "Couldn't update app." : "Die App konnte nicht aktualisiert werden.", + "Wrong password" : "Falsches Passwort", + "Saved" : "Gespeichert", + "No user supplied" : "Kein Benutzer angegeben", + "Unable to change password" : "Passwort konnte nicht geändert werden", + "Authentication error" : "Authentifizierungsfehler", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Bitte geben Sie ein Wiederherstellungspasswort für das Administratorkonto an, da sonst alle Benutzerdaten verlorengehen.", + "Wrong admin recovery password. Please check the password and try again." : "Falsches Wiederherstellungspasswort für das Admin-Konto. Bitte überprüfen Sie das Passwort und versuchen Sie es erneut.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Das Backend unterstützt die Passwortänderung nicht, aber das Verschlüsselungspasswort des Benutzers wurde aktualisiert.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Das Installieren und Aktualisieren von Apps durch den App-Store oder durch Federated Cloud Sharing", + "Federated Cloud Sharing" : "Federated-Cloud-Sharing", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL verwendet eine veraltete %1$s Version (%2$s). Bitte aktualisieren Sie ihr Betriebssystem, da ansonsten Funktionen, wie z.B. %3$s, nicht zuverlässig funktionieren.", + "Invalid SMTP password." : "Ungültiges SMTP-Passwort.", + "Email setting test" : "Test der E-Mail-Einstellungen", + "Well done, %s!" : "Gut gemacht, %s!", + "If you received this email, the email configuration seems to be correct." : "Wenn Sie diese E-Mail empfangen haben, sind die E-Mail-Einstellungen korrekt.", + "Email could not be sent. Check your mail server log" : "E-Mail konnte nicht versandt werden. Prüfen Sie Ihr E-Mail-Server-Protokoll", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Beim Senden der E-Mail ist ein Problem aufgetreten. Bitte überprüfen Sie Ihre Einstellungen. (Fehler: %s)", + "You need to set your user email before being able to send test emails." : "Sie müssen Ihre Benutzer-E-Mail-Adresse angeben, bevor Sie Test-E-Mails versenden können.", + "Invalid mail address" : "Ungültige E-Mail-Adresse", + "Settings saved" : "Einstellungen gespeichert", + "Unable to change full name" : "Der vollständige Name konnte nicht geändert werden", + "Unable to change email address" : "E-Mail-Adresse konnte nicht geändert werden", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Um Ihr Twitter-Konto zu überprüfen, veröffentlichen Sie bitte den folgenden Tweet auf Twitter (Bitte stellen Sie sicher, dass der Tweet keinen Zeilenumbruch enthält):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Um Ihre Webseite zu überprüfen, speichern Sie bitte den folgenden Inhalt im Web-Wurzelverzeichnist in der Datei '.well-known/CloudIdVerificationCode.txt' (bitte stellen Sie sicher, das sich der gesamte Text in einer Zeile befindet):", + "%1$s changed your password on %2$s." : "%1$s hat Ihr Passwort auf %2$s geändert.", + "Your password on %s was changed." : "Ihr Passwort auf %s wurde geändert.", + "Your password on %s was reset by an administrator." : "Ihr Passwort auf %s wurde vom Administrator zurückgesetzt.", + "Password for %1$s changed on %2$s" : "Passwort für %1$s geändert auf %2$s", + "Password changed for %s" : "Passwort geändert für %s ", + "If you did not request this, please contact an administrator." : "Wenn Sie das nicht angefordert haben sollten, wenden Sie sich bitte an den Administrator.", + "Your email address on %s was changed." : "Ihre E-Mail-Adresse auf %s wurde geändert.", + "Your email address on %s was changed by an administrator." : "Ihre E-Mail-Adresse auf %s wurde von einem Administrator geändert.", + "Email address for %1$s changed on %2$s" : "E-Mail-Adresse für %1$s geändert auf %2$s", + "Email address changed for %s" : "E-Mail-Adresse geändert für %s", + "The new email address is %s" : "Die neue E-Mail-Adresse lautet %s", + "Your %s account was created" : "Ihr %s-Konto wurde erstellt", + "Welcome aboard" : "Willkommen an Bord", + "Welcome aboard %s" : "Willkommen an Bord %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Willkommen zu Ihrem %s-Konto. Sie können Ihre Daten hinzufügen, schützen und teilen.", + "Your username is: %s" : "Ihr Benutzername lautet: %s", + "Set your password" : "Setzen Sie Ihr Passwort", + "Go to %s" : "%s aufrufen", + "Install Client" : "Installiere den Client", + "Logged in user must be a subadmin" : "Der angemeldete Benutzer muss ein Administrator sein", + "Create" : "Erstellen", + "Change" : "Ändern", + "Delete" : "Löschen", + "Share" : "Teilen", + "Unlimited" : "Unbegrenzt", + "Verifying" : "Überprüfe", + "Verifying …" : "Überprüfe…", + "Verify" : "Überprüfen", + "Migration in progress. Please wait until the migration is finished" : "Migration läuft. Bitte warte, bis die Migration abgeschlossen ist", + "Migration started …" : "Migration begonnen…", + "Not saved" : "Nicht gespeichert", + "Sending…" : "Senden…", + "Email sent" : "E-Mail gesendet", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Es ist ein Fehler aufgetreten. Bitte laden Sie ein ASCII-kodiertes PEM-Zertifikat hoch.", + "Valid until {date}" : "Gültig bis {date}", + "Local" : "Lokal", + "Private" : "Privat", + "Only visible to local users" : "Nur für lokale Benutzer sichtbar", + "Only visible to you" : "Nur für Sie sichtbar", + "Contacts" : "Kontakte", + "Visible to local users and to trusted servers" : "Sichtbar für lokale Benutzer und vertrauenswürdige Server", + "Public" : "Öffentlich", + "Will be synced to a global and public address book" : "Wird mit einem globalen und einem öffentlichen Adressbuch synchronisiert", + "Very weak password" : "Sehr schwaches Passwort", + "Weak password" : "Schwaches Passwort", + "So-so password" : "Akzeptables Passwort", + "Good password" : "Gutes Passwort", + "Strong password" : "Starkes Passwort", + "An error occurred while changing your language. Please reload the page and try again." : "Es ist ein Fehler beim Wechseln der Sprache aufgetreten. Bitte laden Sie die Seite neu und versuchen es noch einmal.", + "An error occurred while changing your locale. Please reload the page and try again." : "Es ist ein Fehler beim Wechseln des Gebietsschemas aufgetreten. Bitte laden Sie die Seite neu und versuchen es noch einmal.", + "Select a profile picture" : "Wählen Sie ein Profilbild", + "Week starts on {fdow}" : "Die Woche startet am {fdow}", + "Groups" : "Gruppen", + "Group list is empty" : "Gruppenliste ist leer", + "Unable to retrieve the group list" : "Gruppenliste konnte nicht abgerufen werden", + "Afrikaans (Namibia)" : "Afrikanisch (Namibia)", + "Afrikaans (South Africa)" : "Afrikanisch (Südafrika)", + "Afrikaans" : "Afrikanisch", + "Akan (Ghana)" : "Akanisch (Ghana)", + "Akan" : "Akanisch", + "Albanian (Albania)" : "Albanisch (Albanien)", + "Albanian" : "Albanisch", + "Amharic (Ethiopia)" : "Amharisch (Äthiopien)", + "Amharic" : "Amharisch", + "Arabic (Algeria)" : "Arabisch (Algerien)", + "Arabic (Bahrain)" : "Arabisch (Bahrain)", + "Arabic (Egypt)" : "Arabisch (Ägypten)", + "Arabic (Iraq)" : "Arabisch (Irak)", + "Arabic (Jordan)" : "Arabisch (Jordanien)", + "Arabic (Kuwait)" : "Arabisch (Kuwait)", + "Arabic (Lebanon)" : "Arabisch (Libanon)", + "Arabic (Libya)" : "Arabisch (Lybien)", + "Arabic (Morocco)" : "Arabisch (Marokko)", + "Arabic (Oman)" : "Arabisch (Oman)", + "Arabic (Qatar)" : "Arabisch (Katar)", + "Arabic (Saudi Arabia)" : "Arabisch (Saudiarabien)", + "Arabic (Sudan)" : "Arabisch (Sudan)", + "Arabic (Syria)" : "Arabisch (Syrien)", + "Arabic (Tunisia)" : "Arabisch (Tunesien)", + "Arabic (United Arab Emirates)" : "Arabisch (Vereinigte Arabische Emirate)", + "Arabic (Yemen)" : "Arabisch (Jemen)", + "Arabic" : "Arabisch", + "Armenian (Armenia)" : "Armenisch (Armenien)", + "Armenian" : "Armenisch", + "Assamese (India)" : "Assamesisch (Indien)", + "Assamese" : "Assamesisch", + "Asu (Tanzania)" : "Asu (Tansania)", + "Asu" : "Asu", + "Azerbaijani (Cyrillic)" : "Aserbaidschanisch (Kyrillisch)", + "Azerbaijani (Cyrillic, Azerbaijan)" : "Aserbaidschanisch (Kyrillisch, Aserbaidschan)", + "Azerbaijani (Latin)" : "Aserbaidschanisch (Latein)", + "Azerbaijani (Latin, Azerbaijan)" : "Aserbaidschanisch (Latein, Aserbaidschan)", + "Azerbaijani" : "Aserbaidschanisch", + "Bambara (Mali)" : "Bambara (Mali)", + "Bambara" : "Bambara", + "Basque (Spain)" : "Baskisch (Spanien)", + "Basque" : "Baskisch", + "Belarusian (Belarus)" : "Weissrussisch (Weissrussland)", + "Belarusian" : "Weissrussisch", + "Bemba (Zambia)" : "Bemba (Sambia)", + "Bemba" : "Bemba", + "Bena (Tanzania)" : "Bena (Tansania)", + "Bena" : "Bena", + "Bengali (Bangladesh)" : "Bengali (Bangladesch)", + "Bengali (India)" : "Bengali (Indien)", + "Bengali" : "Bengalisch", + "Bosnian (Bosnia and Herzegovina)" : "Bosnisch (Bosnien und Herzegowina)", + "Bosnian" : "Bosnisch", + "Bulgarian (Bulgaria)" : "Bulgarisch (Bulgarien)", + "Bulgarian" : "Bulgarisch", + "Burmese (Myanmar [Burma])" : "Burmesisch (Myanmar [Burma])", + "Burmese" : "Burmesisch", + "Catalan (Spain)" : "Katalanisch (Spanien)", + "Catalan" : "Katalanisch", + "Central Morocco Tamazight (Latin)" : "Zentralatlas-Tamazight (Latein)", + "Central Morocco Tamazight (Latin, Morocco)" : "Zentralatlas-Tamazight (Latein, Marokko)", + "Central Morocco Tamazight" : "Zentralatlas-Tamazight", + "Cherokee (United States)" : "Cherokee (USA)", + "Cherokee" : "Cherokee", + "Chiga (Uganda)" : "Chiga (Uganda)", + "Chiga" : "Chiga", + "Chinese (Simplified Han)" : "Chinesisch (Vereinfachtes Han)", + "Chinese (Simplified Han, China)" : "Chinesisch (Vereinfachtes Han, China)", + "Chinese (Simplified Han, Hong Kong SAR China)" : "Chinesisch (Vereinfachtes Han, Hongkong SAR China)", + "Chinese (Simplified Han, Macau SAR China)" : "Chinesisch (Vereinfachtes Han, Macau SAR China)", + "Chinese (Simplified Han, Singapore)" : "Chinesisch (Vereinfachtes Han, Singapur)", + "Chinese (Traditional Han)" : "Chinesisch (Traditionelles Han)", + "Chinese (Traditional Han, Hong Kong SAR China)" : "Chinesisch (Traditionelles Han, Hongkong SAR China)", + "Chinese (Traditional Han, Macau SAR China)" : "Chinesisch (Traditionelles Han, Macau SAR China)", + "Chinese (Traditional Han, Taiwan)" : "Chinesisch (Traditionelles Han, Taiwan)", + "Chinese" : "Chinesisch", + "Cornish (United Kingdom)" : "Kornisch (Vereinigtes Königreich)", + "Cornish" : "Kornisch", + "Croatian (Croatia)" : "Kroatisch (Kroatien)", + "Croatian" : "Kroatisch", + "Czech (Czech Republic)" : "Tschechisch (Tschechische Republik)", + "Czech" : "Tschechisch", + "Danish (Denmark)" : "Dänisch (Dänemark)", + "Danish" : "Dänisch", + "Dutch (Belgium)" : "Holländisch (Belgien)", + "Dutch (Netherlands)" : "Holländisch (Niederlande)", + "Dutch" : "Niederländisch", + "Embu (Kenya)" : "Embu (Kenia)", + "Embu" : "Embu", + "English (American Samoa)" : "Englisch (Amerikanisch-Samoa)", + "English (Australia)" : "Englisch (Australien)", + "English (Belgium)" : "Englisch (Belgien)", + "English (Belize)" : "Englisch (Belize)", + "English (Botswana)" : "Englisch (Botswana)", + "English (Canada)" : "Englisch (Kanada)", + "English (Guam)" : "Englisch (Guam)", + "English (Hong Kong SAR China)" : "Englisch (Hongkong SAR China)", + "English (India)" : "Englisch (Indien)", + "English (Ireland)" : "Englisch (Irland)", + "English (Jamaica)" : "Englisch (Jamaika)", + "English (Malta)" : "Englisch (Malta)", + "English (Marshall Islands)" : "Englisch (Marshallinseln)", + "English (Mauritius)" : "Englisch (Mauritius)", + "English (Namibia)" : "Englisch (Namibia)", + "English (New Zealand)" : "Englisch (Neuseeland)", + "English (Northern Mariana Islands)" : "Englisch (Nördliche Marianen)", + "English (Pakistan)" : "Englisch (Pakistan)", + "English (Philippines)" : "Englisch (Philippinen)", + "English (Singapore)" : "Englisch (Singapur)", + "English (South Africa)" : "Englisch (Südafrika)", + "English (Trinidad and Tobago)" : "Englisch (Trinidad und Tobago)", + "English (U.S. Minor Outlying Islands)" : "Englisch (United States Minor Outlying Islands)", + "English (U.S. Virgin Islands)" : "Englisch (U.S. Jungferninseln)", + "English (United Kingdom)" : "Englisch (UK)", + "English (United States)" : "Englisch (USA)", + "English (Zimbabwe)" : "Englisch (Simbabwe)", + "English" : "Englisch", + "Esperanto" : "Esperanto", + "Estonian (Estonia)" : "Estnisch (Estland)", + "Estonian" : "Estnisch", + "Ewe (Ghana)" : "Ewe (Ghana)", + "Ewe (Togo)" : "Ewe (Togo)", + "Ewe" : "Ewe", + "Faroese (Faroe Islands)" : "Färöisch (Färöer-Inseln)", + "Faroese" : "Färöisch", + "Filipino (Philippines)" : "Filipino (Philippinen)", + "Filipino" : "Filipino", + "Finnish (Finland)" : "Finnisch (Finnland)", + "Finnish" : "Finnisch", + "French (Belgium)" : "Französisch (Belgien)", + "French (Benin)" : "Französisch (Benin)", + "French (Burkina Faso)" : "Französisch (Burkina Faso)", + "French (Burundi)" : "Französisch (Burundi)", + "French (Cameroon)" : "Französisch (Kamerun)", + "French (Canada)" : "Französisch (Kanada)", + "French (Central African Republic)" : "Französisch (Zentralafrikanische Republik)", + "French (Chad)" : "French (Tschad)", + "French (Comoros)" : "Französisch (Komoren)", + "French (Congo - Brazzaville)" : "Französisch (Kongo - Brazzaville)", + "French (Congo - Kinshasa)" : "Französisch (Kongo - Kinschasa)", + "French (Côte d’Ivoire)" : "Französisch (Elfenbeinküste)", + "French (Djibouti)" : "Französisch (Dschibuti)", + "French (Equatorial Guinea)" : "Französisch (Äquatorialguinea)", + "French (France)" : "Französisch (Frankreich)", + "French (Gabon)" : "Französisch (Gabun)", + "French (Guadeloupe)" : "Französisch (Guadeloupe)", + "French (Guinea)" : "Französisch (Guinea)", + "French (Luxembourg)" : "Französisch (Luxemburg)", + "French (Madagascar)" : "Französisch (Madagaskar)", + "French (Mali)" : "Französisch (Mali)", + "French (Martinique)" : "Französisch (Martinique)", + "French (Monaco)" : "Französisch (Monaco)", + "French (Niger)" : "Französisch (Niger)", + "French (Rwanda)" : "Französisch (Ruanda)", + "French (Réunion)" : "Französisch (Réunion)", + "French (Saint Barthélemy)" : "Französisch (Saint Barthélemy)", + "French (Saint Martin)" : "Französisch (Saint Martin)", + "French (Senegal)" : "Französisch (Senegal)", + "French (Switzerland)" : "Französisch (Schweiz)", + "French (Togo)" : "Französisch (Togo)", + "French" : "Französisch", + "Fulah (Senegal)" : "Fulfulde (Senegal)", + "Fulah" : "Fulfulde", + "Galician (Spain)" : "Galicisch (Spanien)", + "Galician" : "Galicisch", + "Ganda (Uganda)" : "Ganda (Uganda)", + "Ganda" : "Ganda", + "Georgian (Georgia)" : "Georgisch (Gerorgien)", + "Georgian" : "Georgisch", + "German (Austria)" : "Deutsch (Österreich)", + "German (Belgium)" : "Deutsch (Belgien)", + "German (Germany)" : "Deutsch (Deutschland)", + "German (Liechtenstein)" : "Deutsch (Liechtenstein)", + "German (Luxembourg)" : "Deutsch (Luxemburg)", + "German (Switzerland)" : "Deutsch (Schweiz)", + "German" : "Deutsch", + "Greek (Cyprus)" : "Grieschisch (Zypern)", + "Greek (Greece)" : "Grieschisch (Griechenland)", + "Greek" : "Griechisch", + "Gujarati (India)" : "Gujarati (Indien)", + "Gujarati" : "Gujarati", + "Gusii (Kenya)" : "Gusii (Kenia)", + "Gusii" : "Gusii", + "Hausa (Latin)" : "Hausa (Latein)", + "Hausa (Latin, Ghana)" : "Hausa (Latein, Ghana)", + "Hausa (Latin, Niger)" : "Hausa (Latein, Niger)", + "Hausa (Latin, Nigeria)" : "Hausa (Latein, Nigeria)", + "Hausa" : "Hausa", + "Hawaiian (United States)" : "Hawaianisch (US)", + "Hawaiian" : "Hawaianisch", + "Hebrew (Israel)" : "Hebräisch (Israel)", + "Hebrew" : "Hebräisch", + "Hindi (India)" : "Hindi (Indien)", + "Hindi" : "Hindi", + "Hungarian (Hungary)" : "Ungarisch (Ungarn)", + "Hungarian" : "Ungarisch", + "Icelandic (Iceland)" : "Isländisch (Island)", + "Icelandic" : "Isländisch", + "Igbo (Nigeria)" : "Igbo (Nigeria)", + "Igbo" : "Igbo", + "Indonesian (Indonesia)" : "Indonesisch (Indonesien)", + "Indonesian" : "Indonesisch", + "Irish (Ireland)" : "Irisch (Irland)", + "Irish" : "Irisch", + "Italian (Italy)" : "Italienisch (Italien)", + "Italian (Switzerland)" : "Italienisch ( Schweiz)", + "Italian" : "Italienisch", + "Japanese (Japan)" : "Japanisch (Japan)", + "Japanese" : "Japanisch", + "Kabuverdianu (Cape Verde)" : "Kabuverdianu (Kap Verde)", + "Kabuverdianu" : "Kapverdiscsh", + "Kabyle (Algeria)" : "Kabyle (Algerien)", + "Kabyle" : "Kabyle", + "Kalaallisut (Greenland)" : "Kalaallisut (Grönland)", + "Kalaallisut" : "Kalaallisut", + "Kalenjin (Kenya)" : "Kalenjin (Kenia)", + "Kalenjin" : "Kalenjin", + "Kamba (Kenya)" : "Kamba (Kenia)", + "Kamba" : "Kamba", + "Kannada (India)" : "Kanaresisch (Indien)", + "Kannada" : "Kanaresisch", + "Kazakh (Cyrillic)" : "Kasachisch (Kyrillisch)", + "Kazakh (Cyrillic, Kazakhstan)" : "Kasachisch (Kyrillisch Kasachstan)", + "Kazakh" : "Kasachisch", + "Khmer (Cambodia)" : "Khmer (Kambodscha)", + "Khmer" : "Khmer", + "Kikuyu (Kenya)" : "Kikuyu (Kenia)", + "Kikuyu" : "Kikuyu", + "Kinyarwanda (Rwanda)" : "Kinyarwanda (Ruanda)", + "Kinyarwanda" : "Kinyarwanda", + "Konkani (India)" : "Konkani (Indien)", + "Konkani" : "Konkani", + "Korean (South Korea)" : "Koreanisch (Süd Korea)", + "Korean" : "Koreanisch", + "Koyra Chiini (Mali)" : "Koyra Chiini (Mali)", + "Koyra Chiini" : "Koyra Chiini", + "Koyraboro Senni (Mali)" : "Koyraboro Senni (Mali)", + "Koyraboro Senni" : "Koyraboro Senni", + "Langi (Tanzania)" : "Langi (Tansania)", + "Langi" : "Langi", + "Latvian (Latvia)" : "Lettisch (Lettland)", + "Latvian" : "Lettisch", + "Lithuanian (Lithuania)" : "Litauisch (Litauen)", + "Lithuanian" : "Litauisch", + "Luo (Kenya)" : "Luo (Kenia)", + "Luo" : "Luo", + "Luyia (Kenya)" : "Luyia (Kenia)", + "Luyia" : "Luyia", + "Macedonian (Macedonia)" : "Mazedonisch (Mazedonien)", + "Macedonian" : "Mazedonisch", + "Machame (Tanzania)" : "Machame (Tansania)", + "Machame" : "Machame", + "Makonde (Tanzania)" : "Makonde (Tansania)", + "Makonde" : "Makonde", + "Malagasy (Madagascar)" : "Malagasy (Madagaskar)", + "Malagasy" : "Malagassi", + "Malay (Brunei)" : "Malaiisch (Brunei)", + "Malay (Malaysia)" : "Malaysisch (Malaysia)", + "Malay" : "Malaiisch", + "Malayalam (India)" : "Malayalam (Indien)", + "Malayalam" : "Malayalam", + "Maltese (Malta)" : "Maltesisch (Malta)", + "Maltese" : "Maltesisch", + "Manx (United Kingdom)" : "Manx-Gälisch (UK)", + "Manx" : "Manx-Gälisch", + "Marathi (India)" : "Marathi (Indien)", + "Marathi" : "Marathi", + "Masai (Kenya)" : "Masai (Kenia)", + "Masai (Tanzania)" : "Masai (Tansania)", + "Masai" : "Masai", + "Meru (Kenya)" : "Meru (Kenia)", + "Meru" : "Meru", + "Morisyen (Mauritius)" : "Morisyen (Mauritius)", + "Morisyen" : "Morisyen", + "Nama (Namibia)" : "Nama (Namibia)", + "Nama" : "Nama", + "Nepali (India)" : "Nepalesisch (Indien)", + "Nepali (Nepal)" : "Nepalesisch (Nepal)", + "Nepali" : "Nepali", + "North Ndebele (Zimbabwe)" : "Nord-Ndebele (Simbabwe)", + "North Ndebele" : "Nord-Ndebele", + "Norwegian Bokmål (Norway)" : "Norwegisch Bokmål (Norwegen)", + "Norwegian Bokmål" : "Norwegisch Bokmål", + "Norwegian Nynorsk (Norway)" : "Neunorwegisch (Norwegen)", + "Norwegian Nynorsk" : "Neunorwegisch", + "Nyankole (Uganda)" : "Nyankole (Uganda)", + "Nyankole" : "Nyankole", + "Oriya (India)" : "Oriya (Indien)", + "Oriya" : "Oriya", + "Oromo (Ethiopia)" : "Oromo (Äthiopien)", + "Oromo (Kenya)" : "Oromo (Kenia)", + "Oromo" : "Oromo", + "Pashto (Afghanistan)" : "Pashto (Afghanistan)", + "Pashto" : "Pashto", + "Persian (Afghanistan)" : "Persisch (Afghanistan)", + "Persian (Iran)" : "Persisch (Iran)", + "Persian" : "Persisch", + "Polish (Poland)" : "Polnisch (Polen)", + "Polish" : "Polnisch", + "Portuguese (Brazil)" : "Portugisisch (Brasilien)", + "Portuguese (Guinea-Bissau)" : "Portugisisch (Guinea-Bissau)", + "Portuguese (Mozambique)" : "Portugisisch (Mosambik)", + "Portuguese (Portugal)" : "Portugisisch (Portugal)", + "Portuguese" : "Portugiesisch", + "Punjabi (Arabic)" : "Punjabi (Arabisch)", + "Punjabi (Arabic, Pakistan)" : "Punjabi (Arabisch, Pakistan)", + "Punjabi (Gurmukhi)" : "Punjabi (Gurmukhi)", + "Punjabi (Gurmukhi, India)" : "Punjabi (Gurmukhi, Indien)", + "Punjabi" : "Punjabi", + "Romanian (Moldova)" : "Rumänisch (Moldavien)", + "Romanian (Romania)" : "Rumänisch (Rumänien)", + "Romanian" : "Rumänisch", + "Romansh (Switzerland)" : "Romanisch (Schweiz)", + "Romansh" : "Romanisch", + "Rombo (Tanzania)" : "Rombo (Tansania)", + "Rombo" : "Rombo", + "Russian (Moldova)" : "Russisch (Moldavien)", + "Russian (Russia)" : "Russisch (Russland)", + "Russian (Ukraine)" : "Russisch (Ukraine)", + "Russian" : "Russisch", + "Rwa (Tanzania)" : "Rwa (Tansania)", + "Rwa" : "Rwa", + "Samburu (Kenya)" : "Samburu (Kenia)", + "Samburu" : "Samburu", + "Sango (Central African Republic)" : "Sango (Zentralafrikanische Republik)", + "Sango" : "Sango", + "Sena (Mozambique)" : "Sena (Mosambik)", + "Sena" : "Sena", + "Serbian (Cyrillic)" : "Serbisch (Kyrillisch)", + "Serbian (Cyrillic, Bosnia and Herzegovina)" : "Serbisch (Kyrillisch, Bosnien und Herzogovina)", + "Serbian (Cyrillic, Montenegro)" : "Serbisch (Kyrillisch, Montenegro)", + "Serbian (Cyrillic, Serbia)" : "Serbisch (Kyrillisch, Serbien)", + "Serbian (Latin)" : "Serbisch (Latein)", + "Serbian (Latin, Bosnia and Herzegovina)" : "Serbisch (Latein, Bosnien und Herzegovina)", + "Serbian (Latin, Montenegro)" : "Serbisch (Latein, Montenegro)", + "Serbian (Latin, Serbia)" : "Serbisch (Latein, Serbien)", + "Serbian" : "Serbisch", + "Shona (Zimbabwe)" : "Shona (Simbabwe)", + "Shona" : "Shona", + "Sichuan Yi (China)" : "Sichuan Yi (China)", + "Sichuan Yi" : "Sichuan Yi", + "Sinhala (Sri Lanka)" : "Sinhala (Sri Lanka)", + "Sinhala" : "Sinhala", + "Slovak (Slovakia)" : "Slowakisch (Slowakei)", + "Slovak" : "Slowakisch", + "Slovenian (Slovenia)" : "Slowenisch (Slowenien)", + "Slovenian" : "Slowenisch", + "Soga (Uganda)" : "Soga (Uganda)", + "Soga" : "Soga", + "Somali (Djibouti)" : "Somali (Dschibouti)", + "Somali (Ethiopia)" : "Somalisch (Äthiopien)", + "Somali (Kenya)" : "Somalisch (Kenia)", + "Somali (Somalia)" : "Somalisch (Somalia)", + "Somali" : "Somalisch", + "Spanish (Argentina)" : "Spanisch (Argentinien)", + "Spanish (Bolivia)" : "Spanisch (Bolivien)", + "Spanish (Chile)" : "Spanisch (Chile)", + "Spanish (Colombia)" : "Spanisch (Kolumbien)", + "Spanish (Costa Rica)" : "Spanisch (Costa Rica)", + "Spanish (Dominican Republic)" : "Spanisch (Dominikanische Republik)", + "Spanish (Ecuador)" : "Spanisch (Equador)", + "Spanish (El Salvador)" : "Spanisch (El Salvador)", + "Spanish (Equatorial Guinea)" : "Spanisch (Äquatorialguinea)", + "Spanish (Guatemala)" : "Spanisch (Guatemala)", + "Spanish (Honduras)" : "Spanisch (Honduras)", + "Spanish (Latin America)" : "Spanisch (Lateinamerika)", + "Spanish (Mexico)" : "Spanisch (Mexiko)", + "Spanish (Nicaragua)" : "Spanisch (Nikaragua)", + "Spanish (Panama)" : "Spanisch (Panama)", + "Spanish (Paraguay)" : "Spanisch (Paraguay)", + "Spanish (Peru)" : "Spanisch (Peru)", + "Spanish (Puerto Rico)" : "Spanisch (Puerto Rico)", + "Spanish (Spain)" : "Spanisch (Spanien)", + "Spanish (United States)" : "Spanisch (USA)", + "Spanish (Uruguay)" : "Spanisch (Uruquai)", + "Spanish (Venezuela)" : "Spanisch (Venezuela)", + "Spanish" : "Spanisch", + "Swahili (Kenya)" : "Suaheli (Kenia)", + "Swahili (Tanzania)" : "Swahili (Tansania)", + "Swahili" : "Swahili", + "Swedish (Finland)" : "Schwedisch (Finnland)", + "Swedish (Sweden)" : "Schwedisch (Schweden)", + "Swedish" : "Schwedisch", + "Swiss German (Switzerland)" : "Schweizerdeutsch (Schweiz)", + "Swiss German" : "Schweizerdeutsch", + "Tachelhit (Latin)" : "Tachelhit (Latein)", + "Tachelhit (Latin, Morocco)" : "Tachelhit (Latein, Marokko)", + "Tachelhit (Tifinagh)" : "Tachelhit (Tifinagh)", + "Tachelhit (Tifinagh, Morocco)" : "Tachelhit (Tifinagh, Marokko)", + "Tachelhit" : "Tachelhit", + "Taita (Kenya)" : "Taita (Kenia)", + "Taita" : "Taita", + "Tamil (India)" : "Tamil (Indien)", + "Tamil (Sri Lanka)" : "Tamilisch (Sri Lanka)", + "Tamil" : "Tamilisch", + "Telugu (India)" : "Telugu (Inien)", + "Telugu" : "Telugu", + "Teso (Kenya)" : "Teso (Kenia)", + "Teso (Uganda)" : "Teso (Uganda)", + "Teso" : "Teso", + "Thai (Thailand)" : "Thailändisch (Thailand)", + "Thai" : "Thai", + "Tibetan (China)" : "Tibetisch (China)", + "Tibetan (India)" : "Tibetisch (Indien)", + "Tibetan" : "Tibetisch", + "Tigrinya (Eritrea)" : "Tigrinya (Eritrea)", + "Tigrinya (Ethiopia)" : "Tigrinya (Äthiopien)", + "Tigrinya" : "Tigrinya", + "Tonga (Tonga)" : "Tongaisch (Tonga)", + "Tonga" : "Tonga", + "Turkish (Turkey)" : "Türkisch (Türkei)", + "Turkish" : "Türkisch", + "Ukrainian (Ukraine)" : "Ukrainisch (Ukraine)", + "Ukrainian" : "Ukrainisch", + "Urdu (India)" : "Urdu (Indien)", + "Urdu (Pakistan)" : "Urdu (Pakistan)", + "Urdu" : "Urdu", + "Uzbek (Arabic)" : "Usbekisch (Arabisch)", + "Uzbek (Arabic, Afghanistan)" : "Usbekisch (Arabisch, Afghanistan)", + "Uzbek (Cyrillic)" : "Usbekisch (Kyrillisch)", + "Uzbek (Cyrillic, Uzbekistan)" : "Usbekisch (Kyrillisch, Usbekistan)", + "Uzbek (Latin)" : "Usbekisch (Latein)", + "Uzbek (Latin, Uzbekistan)" : "Usbekisch (Latein, Usbekistan)", + "Uzbek" : "Usbekisch", + "Vietnamese (Vietnam)" : "Vietnamesisch (Vietnam)", + "Vietnamese" : "Vietnamesisch", + "Vunjo (Tanzania)" : "Vunjo (Tansania)", + "Vunjo" : "Vunjo", + "Welsh (United Kingdom)" : "Walisisch (Vereinigtes Königreich)", + "Welsh" : "Walisisch", + "Yoruba (Nigeria)" : "Yoruba (Nigeria)", + "Yoruba" : "Yoruba", + "Zulu (South Africa)" : "Zulu (Südafrika)", + "Zulu" : "Zulu", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Zwei-Faktor-Authentifizierung kann für alle\tBenutzer und Gruppen erzwungen werden. Wenn kein Anbieter für Zwei-Faktor-Authentifizierung für Sie eingerichtet ist, so können Sie sich nicht am System anmelden.", + "Enforce two-factor authentication" : "Zwei-Faktor-Authentifizierung erzwingen", + "Limit to groups" : "Auf Gruppen beschränken", + "Enforcement of two-factor authentication can be set for certain groups only." : "Erzwingen der Zwei-Faktor-Authentifizierung kann nur für bestimmte Gruppen eingestellt werden.", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "Zwei-Faktor-Authentifizierung wird \tfür alle Mitglieder der folgenden Gruppen.", + "Enforced groups" : "Erzwungene Gruppen", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "Zwei-Faktor-Authentifizierung wird nicht\tfür Mitglieder der folgenden Gruppen erzwungen.", + "Excluded groups" : "Ausgeschlossene Gruppen", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "Bei der Auswahl/Abwahl von Gruppen wird folgende Logik verwendet, um Festzustellen ob ein Benutzer 2FA verwenden muss: Wenn keine Gruppe ausgewählt ist, dann wird 2FA für alle Benutzer aktiviert, außer für Mitglieder der ausgenommenen Gruppen. Sind Gruppen ausgewählt, so wird 2FA für alle Mitglieder dieser Gruppen aktiviert. Ist ein Benutzer Mitglieder der ausgewählten und ausgenommenen Gruppe, so hat die Auswahl Vorrang und 2FA wird aktiviert. ", + "Save changes" : "Änderungen speichern ", + "Marked for remote wipe" : "Für Fernlöschung markiert", + "Device settings" : "Geräteeinstellungen", + "Allow filesystem access" : "Erlaube Dateisystem-Zugriff", + "Rename" : "Umbennen", + "Revoke" : "Widerrufen", + "Wipe device" : "Gerät löschen", + "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Zurückziehen dieses Tokens könnte das Löschen von Ihrem Gerät verhindern, wenn die Löschung noch nicht gestartet wurde.", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome für Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Nextcloud iOS-App", + "Nextcloud Android app" : "Nextcloud Android-App", + "Nextcloud Talk for iOS" : "Nextcloud Talk für iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk für Android", + "Sync client - {os}" : "Sync-Client - {os}", + "This session" : "Diese Sitzung", + "Device" : "Gerät", + "Last activity" : "Letzte Aktivität", + "Devices & sessions" : "Geräte & Sitzungen", + "Web, desktop and mobile clients currently logged in to your account." : "Aktuell in Ihrem Konto angemeldete Web-, Desktop- und Mobil-Clients.", + "Do you really want to wipe your data from this device?" : "Möchten Sie wirklich alle Daten von diesem Gerät löschen?", + "Confirm wipe" : "Löschen bestätigen", + "Error while creating device token" : "Fehler beim Erstellen des Geräte-Tokens", + "Error while updating device token scope" : "Fehler bei der Aktualisierung des Geräte-Token-Scope", + "Error while updating device token name" : "Fehler bei der Aktualisierung des Geräte-Token-Namens", + "Error while deleting the token" : "Fehler beim Löschen des Geräte-Tokens", + "Error while wiping the device with the token" : "Fehler während des Löschens des Geräts mit dem Token", + "App name" : "App-Name", + "Create new app password" : "Neues App-Passwort erstellen", + "Use the credentials below to configure your app or device." : "Nutzen Sie die unten angebenen Anmeldeinformationen, um ihre App oder ihr Gerät zu konfigurieren.", + "For security reasons this password will only be shown once." : "Aus Sicherheitsgründen wird das Passwort nur einmal angezeigt.", + "Username" : "Benutzername", + "Password" : "Passwort", + "Done" : "Erledigt", + "Show QR code for mobile apps" : "QR-Code für mobile Apps anzeigen", + "Copied!" : "Kopiert!", + "Copy" : "Kopieren", + "Could not copy app password. Please copy it manually." : "Das Passwort für die App konnte nicht kopiert werden. Bitte kopieren Sie es manuell.", + "This app is supported via your current Nextcloud subscription." : "Diese App wird von Ihrem aktuellen Nextcloud-Abonnement unterstützt.", + "Supported" : "Unterstützt", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Offizielle Apps werden von und innerhalb der Community entwickelt. Sie stellen die zentralen Funktionen bereit und sind für den produktiven Einsatz geeignet.", + "Official" : "Offiziell", + "by" : "von", + "Update to {version}" : "Aktualisieren auf {version}", + "Remove" : "Entfernen", + "Disable" : "Deaktivieren", + "All" : "Alle", + "Limit app usage to groups" : "App-Verwendung auf Gruppen beschränken", + "No results" : "Keine Ergebnisse", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Für diese App wurde keine untere Versionsgrenze für Nextcloud gesetzt. Dies wird zukünftig als Fehler behandelt.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Für diese App wurde keine obere Versionsgrenze für Nextcloud gesetzt. Dies wird zukünftig als Fehler behandelt.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Diese App kann nicht installiert werden, weil die folgenden Abhängigkeiten nicht erfüllt sind:", + "View in store" : "Im Store anzeigen", + "Visit website" : "Webseite besuchen", + "Report a bug" : "Melden Sie einen technischen Fehler", + "User documentation" : "Dokumentation für Benutzer", + "Admin documentation" : "Dokumentation für Administratoren", + "Developer documentation" : "Dokumentation für Entwickler", + "Update to {update}" : "Aktualisieren auf {update}", + "Results from other categories" : "Ergebnisse aus anderen Kategorien", + "No apps found for your version" : "Es wurden keine Apps für Ihre Version gefunden", + "Disable all" : "Alle deaktivieren", + "Enable all" : "Alle aktivieren", + "Download and enable" : "Herunterladen und aktivieren", + "Enable" : "Aktivieren", + "Enable untested app" : "Ungetestete App aktivieren", + "The app will be downloaded from the app store" : "Die App wird aus dem App-Store heruntergeladen", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Diese App ist als nicht-kompatibel mit Ihrer Nextcloud-Version markiert. Wenn Sie fortfahren, so können Sie die App installieren. Bitte beachten Sie, dass die App nicht wie erwartet funktionieren könnte.", + "You do not have permissions to see the details of this user" : "Sie haben keine Berechtigung, um auf die Details dieses Benutzers zu sehen", + "The backend does not support changing the display name" : "Das Backend unterstützt keine Änderung des Anzeigenamens", + "New password" : "Neues Passwort", + "Add user in group" : "Nutzer zur Gruppe hinzufügen", + "Set user as admin for" : "Benutzer als Administrator setzen für", + "Select user quota" : "Speicherkontigent wählen", + "No language set" : "Keine Sprache eingestellt.", + "Never" : "Niemals", + "Delete user" : "Benutzer löschen", + "Wipe all devices" : "Alle Geräte löschen", + "Disable user" : "Benutzer deaktivieren", + "Enable user" : "Benutzer aktivieren", + "Resend welcome email" : "Willkommens-E-Mail erneut senden", + "{size} used" : "{size} verwendet", + "Welcome mail sent!" : "Willkommens-E-Mail gesendet!", + "Display name" : "Anzeigename", + "Email" : "E-Mail", + "Group admin for" : "Gruppenadministrator für", + "Quota" : "Kontingent", + "Language" : "Sprache", + "Storage location" : "Speicherort", + "User backend" : "Benutzer-Backend", + "Last login" : "Letzte Anmeldung", + "Will be autogenerated" : "Wird automatisch erzeugt", + "Default language" : "Standard-Sprache", + "Add a new user" : "Neuen Nutzer hinzufügen", + "No users in here" : "Kein Nutzer vorhanden", + "Default quota" : "Standard Speicherkontingent ", + "Password change is disabled because the master key is disabled" : "Das Ändern des Passwortes ist deaktiviert, da der Master-Schlüssel deaktiviert ist", + "Common languages" : "Gängige Sprachen", + "All languages" : "Alle Sprachen", + "Your apps" : "Ihre Apps", + "Active apps" : "Aktive Apps", + "Disabled apps" : "Deaktivierte Apps", + "Updates" : "Aktualisierungen", + "App bundles" : "App-Pakete", + "{license}-licensed" : "{license}-Lizensiert", + "New user" : "Neuer Benutzer", + "Default quota:" : "Standard Speicherkontingent:", + "Select default quota" : "Standard Speicherkontingent wählen", + "Show Languages" : "Sprachen anzeigen", + "Show last login" : "Letzte Anmeldung anzeigen", + "Show user backend" : "Benutzer-Backend anzeigen", + "Show storage path" : "Zeige Speicherpfad", + "You are about to remove the group {group}. The users will NOT be deleted." : "Sie sind dabei die Gruppe {group} zu löschen. Die Benutzer werden NICHT gelöscht.", + "Please confirm the group removal " : "Bitte die Löschung der Gruppe bestätigen", + "Remove group" : "Gruppe entfernen", + "Admins" : "Administratoren", + "Disabled users" : "Deaktivierte Benutzer", + "Everyone" : "Jeder", + "Add group" : "Gruppe hinzufügen", + "An error occured during the request. Unable to proceed." : "Es ist ein Fehler bei der Anfrage aufgetreten. Es kann nicht fortgefahren werden.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Die App wurde aktiviert, muss aber aktualisiert werden. Sie werden in 5 Sekunden zur Aktualisierungsseite weitergeleitet.", + "App update" : "App-Aktualisierung", + "Error: This app can not be enabled because it makes the server unstable" : "Fehler: Diese App kann nicht aktiviert werden, da sie den Server instabil macht. ", + "SSL Root Certificates" : "SSL-Root-Zertifikate", + "Common Name" : "Allgemeiner Name", + "Valid until" : "Gültig bis", + "Issued By" : "Ausgestellt von:", + "Valid until %s" : "Gültig bis %s", + "Import root certificate" : "Root-Zertifikat importieren", + "Administrator documentation" : "Dokumentation für Administratoren", + "Documentation" : "Dokumentation", + "Forum" : "Forum", + "None" : "Keine", + "Login" : "Anmelden", + "Plain" : "Klartext", + "NT LAN Manager" : "NT-LAN-Manager", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "E-Mail-Server", + "Open documentation" : "Dokumentation öffnen", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Es ist wichtig diesen Server so zu konfigurieren, dass E-Mails versandt werden können, z.B. für den Passwort-Reset und Benachrichtigungen.", + "Send mode" : "Sendemodus", + "Encryption" : "Verschlüsselung", + "Sendmail mode" : "Sendmail-Modus", + "From address" : "Absenderadresse", + "mail" : "E-Mail", + "Authentication method" : "Authentifizierungsmethode", + "Authentication required" : "Authentifizierung benötigt", + "Server address" : "Serveradresse", + "Port" : "Port", + "Credentials" : "Zugangsdaten", + "SMTP Username" : "SMTP-Benutzername", + "SMTP Password" : "SMTP-Passwort", + "Save" : "Speichern", + "Test email settings" : "E-Mail-Einstellungen testen", + "Send email" : "E-Mail senden", + "Security & setup warnings" : "Sicherheits- & Einrichtungswarnungen", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Für die Sicherheit und Geschwindigkeit Ihrer Installation ist es von großer Bedeutung, dass sie richtig konfiguriert ist. Um Ihnen hierbei zu helfen werden einige automatische Tests durchgeführt. Weitere Informationen finden Sie im Tipps & Tricks- Abschnitt und in der Dokumentation.", + "All checks passed." : "Alle Überprüfungen bestanden.", + "There are some errors regarding your setup." : "Es gibt einige Fehler in Ihrer Systemkonfiguration.", + "There are some warnings regarding your setup." : "Es gibt einige Warnungen zu Ihrer Systemkonfiguration.", + "Checking for system and security issues." : "Prüfung auf System- und Sicherheitsthemen.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Bitte überprüfen Sie noch einmal die <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">Installationsanleitungen ↗</a> und kontrollieren Sie das <a href=\"%2$s\">Protokoll</a> auf mögliche Fehler oder Warnungen.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Überprüfen Sie die Sicherheit Ihrer Nextcloud mit unserem <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">Sicherheits-Scan ↗</a>.", + "Version" : "Version", + "Two-Factor Authentication" : "Zwei-Faktor-Authentifizierung", + "Server-side encryption" : "Serverseitige Verschlüsselung", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Serverseitige Verschlüsselung ermöglicht es die auf diesen Server hochgeladenen Dateien zu verschlüsseln. Dies führt allerdings auch zu Nachteilen, wie z.B. einem Geschwindigkeitsverlust. Sie sollte deshalb nur eingeschaltet werden, wenn sie wirklich benötigt wird.", + "Enable server-side encryption" : "Serverseitige Verschlüsselung aktivieren", + "Please read carefully before activating server-side encryption: " : "Bitte sorgfältig lesen, bevor die serverseitige Verschlüsselung aktiviert wird:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Wird die Verschlüsselung einmal aktiviert, so werden alle ab diesem Zeitpunkt hochgeladene Dateien verschlüsselt. Sie kann nur wieder deaktiviert werden, wenn das Verschlüsselungsmodul dies unterstützt und alle Voraussetzungen (wie das Setzen eines Wiederherstellungsschlüssels) im Vorhinein erfüllt wurden.", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Verschlüsselung alleine garantiert nicht die Systemsicherheit. Bitte lese in der Dokumentation nach, wie die Verschlüsselungs-app funktioniert und welche Anwendungsfälle unterstützt werden.", + "Be aware that encryption always increases the file size." : "Bedenken Sie, dass durch die Verschlüsselung die Dateigröße zunimmt. ", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Es ist immer gut, regelmäßig Sicherungskopien von ihren Daten zu machen. Falls Sie die Verschlüsselung nutzen, sollten Sie auch eine Sicherung der Verschlüsselungsschlüssel zusammen mit Ihren Daten machen.", + "This is the final warning: Do you really want to enable encryption?" : "Dies ist die letzte Warnung: Verschlüsselung wirklich aktivieren?", + "Enable encryption" : "Verschlüsselung aktivieren", + "No encryption module loaded, please enable an encryption module in the app menu." : "Es wurde kein Verschlüsselungs-Modul geladen, bitte ein Verschlüsselungs-Modul im Anwendungs-Menü aktivieren.", + "Select default encryption module:" : "Standard-Verschlüsselungs-Modul auswählen:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Sie müssen Ihre Verschlüsselungsschlüssel von der alten Verschlüsselung (ownCloud <= 8.0) zur Neuen migrieren. Bitte aktivieren Sie das \"Default Encryption Module\" und rufen Sie 'occ encryption:migrate' auf.", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Sie müssen Ihre Verschlüsselungsschlüssel von der alten Verschlüsselung (ownCloud <= 8.0) zur Neuen migrieren.", + "Start migration" : "Migration beginnen", + "Background jobs" : "Hintergrund-Aufgaben", + "Last job ran %s." : "Letzte Aufgabe ausgeführt %s", + "Last job execution ran %s. Something seems wrong." : "Letzte Aufgaben-Ausführung lief %s. Etwas scheint falsch zu sein.", + "Background job didn’t run yet!" : "Hintergrund-Aufgabe wurde bislang nicht ausgeführt!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Um die optimale Geschwindigkeit zu erreichen ist es wichtig, dass die Hintergrund-Aktivitäten richtig konfiguriert sind. Für größere Installationen ist 'Cron' die empfohlene Einstellung. Weitere Informationen finden Sie in der Dokumentation.", + "Pick background job setting" : "Wähle eine Hintergrund-Aufgabeneinstellung aus", + "Execute one task with each page loaded" : "Eine Aufgabe bei jedem Laden einer Seite ausführen", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php ist bei einem Webcron-Dienst angemeldet, der cron.php alle 5 Minuten über HTTP aufruft.", + "Use system cron service to call the cron.php file every 5 minutes." : "Den System-Cron-Dienst verwenden, um die Datei cron.php alle 5 Minuten aufzurufen.", + "The cron.php needs to be executed by the system user \"%s\"." : "Die cron.php muss durch den Systemnutzer \"%s\" ausgeführt werden.", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Um dies auszuführen, wird die PHP-Posix Erweiterung benötigt. Weitere Informationen in der {linkstart}PHP-Dokumentation{linkend}. ", + "Sharing" : "Teilen", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Als Administrator können sie das Teilen-Verhalten feinabstimmen. Weitere Informationen finden Sie in der Dokumentation.", + "Allow apps to use the Share API" : "Apps die Benutzung der Share-API erlauben", + "Allow users to share via link" : "Benutzern erlauben, Inhalte über Links zu teilen", + "Allow public uploads" : "Öffentliches Hochladen erlauben", + "Always ask for a password" : "Immer nach einem Passwort fragen", + "Enforce password protection" : "Passwortschutz erzwingen", + "Set default expiration date" : "Standardmäßiges Ablaufdatum setzen", + "Expire after " : "Ablauf nach ", + "days" : "Tagen", + "Enforce expiration date" : "Ablaufdatum erzwingen", + "Allow resharing" : "Weiterteilen erlauben", + "Allow sharing with groups" : "Teilen mit Gruppen erlauben", + "Restrict users to only share with users in their groups" : "Benutzer auf das Teilen innerhalb ihrer Gruppen beschränken", + "Exclude groups from sharing" : "Gruppen von Freigaben ausschließen", + "These groups will still be able to receive shares, but not to initiate them." : "Diese Gruppen können weiterhin Freigaben empfangen, aber selbst keine mehr initiieren.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Die Auto-Vervollständigung von Benutzernamen im Teilen-Dialog erlauben. Wenn dies deaktiviert ist, muss der vollständige Benutzername oder E-Mail-Adresse eingegeben werden.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Zeige Haftungsausschluss auf der öffentlichen Upload-Seite. (Wird nur gezeigt wenn die Dateiliste nicht angezeigt wird.) ", + "This text will be shown on the public link upload page when the file list is hidden." : "Dieser Text wird auf der öffentlichen Upload-Seite angezeigt wenn die Dateiliste nicht angezeigt wird.", + "Default share permissions" : "Standardberechtigungen für das Teilen", + "Personal" : "Persönlich", + "Administration" : "Verwaltung", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Entwickelt von der {communityopen}Nextcloud Community{linkclose}, der {githubopen}Quellcode{linkclose} ist lizensiert unter {licenseopen}AGPL{linkclose}-Lizenz.", + "Like our Facebook page" : "Liken Sie uns auf unserer Facebook-Seite", + "Follow us on Twitter" : "Folgen Sie uns auf Twitter", + "Follow us on Mastodon" : "Folgen Sie uns auf Mastodon", + "Check out our blog" : "Sehen Sie sich unseren Blog an", + "Subscribe to our newsletter" : "Abonnieren Sie unseren Newsletter", + "Profile picture" : "Profilbild", + "Upload new" : "Neues hochladen", + "Select from Files" : "Aus Dateien wählen", + "Remove image" : "Bild entfernen", + "png or jpg, max. 20 MB" : "png oder jpg, max. 20 MB", + "Picture provided by original account" : "Bild von Original-Konto zur Verfügung gestellt", + "Cancel" : "Abbrechen", + "Choose as profile picture" : "Als Profilbild auswählen", + "Details" : "Details", + "You are a member of the following groups:" : "Sie sind Mitglied folgender Gruppen:", + "You are using <strong>%s</strong>" : "Sie benutzen <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Sie verwenden <strong>%1$s</strong> von <strong>%2$s</strong> (<strong>%3$s %%</strong>)", + "Full name" : "Vollständiger Name", + "No display name set" : "Kein Anzeigename angegeben", + "Your email address" : "Ihre E-Mail-Adresse", + "No email address set" : "Keine E-Mail-Adresse angegeben", + "For password reset and notifications" : "Für Passwort-Wiederherstellung und Benachrichtigungen", + "Phone number" : "Telefonnummer", + "Your phone number" : "Ihre Telefonnummer", + "Address" : "Adresse", + "Your postal address" : "Ihre Postadresse", + "Website" : "Webseite", + "It can take up to 24 hours before the account is displayed as verified." : "Es kann bis zu 24 Stunden dauern, bis das Konto als überprüt angezeigt wird.", + "Link https://…" : "Link https://…", + "Twitter" : "Twitter", + "Twitter handle @…" : "Twitter-Handle @…", + "Help translate" : "Helfen Sie bei der Übersetzung", + "Locale" : "Gebietsschema", + "Current password" : "Aktuelles Passwort", + "Change password" : "Passwort ändern", + "Use a second factor besides your password to increase security for your account." : "Verwenden Sie neben Ihrem Passwort einen zweiten Faktor, um die Sicherheit für Ihr Konto zu erhöhen.", + "Disconnect" : "Trennen", + "Not supported!" : "Nicht unterstützt!", + "Press ⌘-C to copy." : "Drücken Sie ⌘-C zum Kopieren.", + "Press Ctrl-C to copy." : "Zum Kopieren Strg-C drücken.", + "Error while loading browser sessions and device tokens" : "Fehler beim Laden der Browser-Sitzungen und Geräte-Token", + "Store credentials" : "Anmeldeinformationen speichern", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php ist als Webcron-Dienst registriert, der die cron.php alle 15 Minuten per HTTP aufruft. ", + "Use system cron service to call the cron.php file every 15 minutes." : "Nutzen Sie den System-Cron-Service um cron.php alle 15 Minuten aufzurufen.", + "Follow us on Google+" : "Folgen Sie uns auf Google+" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/de_DE.json b/apps/settings/l10n/de_DE.json new file mode 100644 index 00000000000..bb0d9f73fb6 --- /dev/null +++ b/apps/settings/l10n/de_DE.json @@ -0,0 +1,821 @@ +{ "translations": { + "{actor} added you to group {group}" : "{actor} hat Sie zur Gruppe {group} hinzugefügt", + "You added {user} to group {group}" : "Sie haben {user} zur Gruppe {group} hinzugefügt", + "{actor} added {user} to group {group}" : "{actor} hat {user} zur Gruppe {group} hinzugefügt", + "An administrator added you to group {group}" : "Ein Administrator hat Sie zur Gruppe {group} hinzugefügt", + "An administrator added {user} to group {group}" : "Ein Administrator hat {user} zur Gruppe {group} hinzugefügt", + "{actor} removed you from group {group}" : "{actor} hat Sie von der Gruppe {group} entfernt", + "You removed {user} from group {group}" : "Sie haben {user} von der Gruppe {group} entfernt", + "{actor} removed {user} from group {group}" : "{actor} hat {user} von der Gruppe {group} entfernt", + "An administrator removed you from group {group}" : "Ein Administrator hat Sie von der Gruppe {group} entfernt", + "An administrator removed {user} from group {group}" : "Ein Administrator hat {user} von der Gruppe {group} entfernt", + "Your <strong>group memberships</strong> were modified" : "Ihre <strong>Gruppenmitgliedschaft</strong> wurde geändert", + "{actor} changed your password" : "{actor} hat Ihr Passwort geändert", + "You changed your password" : "Sie haben Ihr Passwort geändert", + "Your password was reset by an administrator" : "Ihr Passwort wurde vom Administrator zurückgesetzt", + "{actor} changed your email address" : "{actor} hat Ihre E-Mail-Adresse geändert", + "You changed your email address" : "Sie haben Ihre E-Mail-Adresse geändert", + "Your email address was changed by an administrator" : "Ihre E-Mail-Adresse wurde von einem Administrator geändert", + "You created app password \"{token}\"" : "Sie haben ein App-Passwort erstellt \"{token}\"", + "You deleted app password \"{token}\"" : "Sie haben ein App-Passwort entfernt \"{token}\"", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Sie haben App-Passwort \"{token}\" in \"{newToken}\" umbenannt", + "You granted filesystem access to app password \"{token}\"" : "Sie haben Dateisystemzugriff für App-Passwort \"{token}\" erlaubt", + "You revoked filesystem access from app password \"{token}\"" : "Sie haben Dateisystemzugriff für App-Passwort \"{token}\" widerrufen", + "Security" : "Sicherheit", + "You successfully logged in using two-factor authentication (%1$s)" : "Sie haben sich erfolgreich mittels Zwei-Faktor-Authentifizierung angemeldet (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Ein Anmeldeversuch mittels Zwei-Faktor-Authentifizierung schlug fehl (%1$s)", + "Remote wipe was started on %1$s" : "Fernlöschung wurde am %1$s gestartet", + "Remote wipe has finished on %1$s" : "Fernlöschung wurde am %1$s abgeschlossen", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Ihr <strong>Passwort</strong> oder Ihre <strong>E-Mail-Adresse</strong> wurde geändert", + "Couldn't remove app." : "Die App konnte nicht entfernt werden.", + "Couldn't update app." : "Die App konnte nicht aktualisiert werden.", + "Wrong password" : "Falsches Passwort", + "Saved" : "Gespeichert", + "No user supplied" : "Kein Benutzer angegeben", + "Unable to change password" : "Passwort konnte nicht geändert werden", + "Authentication error" : "Authentifizierungsfehler", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Bitte geben Sie ein Wiederherstellungspasswort für das Administratorkonto an, da sonst alle Benutzerdaten verlorengehen.", + "Wrong admin recovery password. Please check the password and try again." : "Falsches Wiederherstellungspasswort für das Admin-Konto. Bitte überprüfen Sie das Passwort und versuchen Sie es erneut.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Das Backend unterstützt die Passwortänderung nicht, aber das Verschlüsselungspasswort des Benutzers wurde aktualisiert.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Das Installieren und Aktualisieren von Apps durch den App-Store oder durch Federated Cloud Sharing", + "Federated Cloud Sharing" : "Federated-Cloud-Sharing", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL verwendet eine veraltete %1$s Version (%2$s). Bitte aktualisieren Sie ihr Betriebssystem, da ansonsten Funktionen, wie z.B. %3$s, nicht zuverlässig funktionieren.", + "Invalid SMTP password." : "Ungültiges SMTP-Passwort.", + "Email setting test" : "Test der E-Mail-Einstellungen", + "Well done, %s!" : "Gut gemacht, %s!", + "If you received this email, the email configuration seems to be correct." : "Wenn Sie diese E-Mail empfangen haben, sind die E-Mail-Einstellungen korrekt.", + "Email could not be sent. Check your mail server log" : "E-Mail konnte nicht versandt werden. Prüfen Sie Ihr E-Mail-Server-Protokoll", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Beim Senden der E-Mail ist ein Problem aufgetreten. Bitte überprüfen Sie Ihre Einstellungen. (Fehler: %s)", + "You need to set your user email before being able to send test emails." : "Sie müssen Ihre Benutzer-E-Mail-Adresse angeben, bevor Sie Test-E-Mails versenden können.", + "Invalid mail address" : "Ungültige E-Mail-Adresse", + "Settings saved" : "Einstellungen gespeichert", + "Unable to change full name" : "Der vollständige Name konnte nicht geändert werden", + "Unable to change email address" : "E-Mail-Adresse konnte nicht geändert werden", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Um Ihr Twitter-Konto zu überprüfen, veröffentlichen Sie bitte den folgenden Tweet auf Twitter (Bitte stellen Sie sicher, dass der Tweet keinen Zeilenumbruch enthält):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Um Ihre Webseite zu überprüfen, speichern Sie bitte den folgenden Inhalt im Web-Wurzelverzeichnist in der Datei '.well-known/CloudIdVerificationCode.txt' (bitte stellen Sie sicher, das sich der gesamte Text in einer Zeile befindet):", + "%1$s changed your password on %2$s." : "%1$s hat Ihr Passwort auf %2$s geändert.", + "Your password on %s was changed." : "Ihr Passwort auf %s wurde geändert.", + "Your password on %s was reset by an administrator." : "Ihr Passwort auf %s wurde vom Administrator zurückgesetzt.", + "Password for %1$s changed on %2$s" : "Passwort für %1$s geändert auf %2$s", + "Password changed for %s" : "Passwort geändert für %s ", + "If you did not request this, please contact an administrator." : "Wenn Sie das nicht angefordert haben sollten, wenden Sie sich bitte an den Administrator.", + "Your email address on %s was changed." : "Ihre E-Mail-Adresse auf %s wurde geändert.", + "Your email address on %s was changed by an administrator." : "Ihre E-Mail-Adresse auf %s wurde von einem Administrator geändert.", + "Email address for %1$s changed on %2$s" : "E-Mail-Adresse für %1$s geändert auf %2$s", + "Email address changed for %s" : "E-Mail-Adresse geändert für %s", + "The new email address is %s" : "Die neue E-Mail-Adresse lautet %s", + "Your %s account was created" : "Ihr %s-Konto wurde erstellt", + "Welcome aboard" : "Willkommen an Bord", + "Welcome aboard %s" : "Willkommen an Bord %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Willkommen zu Ihrem %s-Konto. Sie können Ihre Daten hinzufügen, schützen und teilen.", + "Your username is: %s" : "Ihr Benutzername lautet: %s", + "Set your password" : "Setzen Sie Ihr Passwort", + "Go to %s" : "%s aufrufen", + "Install Client" : "Installiere den Client", + "Logged in user must be a subadmin" : "Der angemeldete Benutzer muss ein Administrator sein", + "Create" : "Erstellen", + "Change" : "Ändern", + "Delete" : "Löschen", + "Share" : "Teilen", + "Unlimited" : "Unbegrenzt", + "Verifying" : "Überprüfe", + "Verifying …" : "Überprüfe…", + "Verify" : "Überprüfen", + "Migration in progress. Please wait until the migration is finished" : "Migration läuft. Bitte warte, bis die Migration abgeschlossen ist", + "Migration started …" : "Migration begonnen…", + "Not saved" : "Nicht gespeichert", + "Sending…" : "Senden…", + "Email sent" : "E-Mail gesendet", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Es ist ein Fehler aufgetreten. Bitte laden Sie ein ASCII-kodiertes PEM-Zertifikat hoch.", + "Valid until {date}" : "Gültig bis {date}", + "Local" : "Lokal", + "Private" : "Privat", + "Only visible to local users" : "Nur für lokale Benutzer sichtbar", + "Only visible to you" : "Nur für Sie sichtbar", + "Contacts" : "Kontakte", + "Visible to local users and to trusted servers" : "Sichtbar für lokale Benutzer und vertrauenswürdige Server", + "Public" : "Öffentlich", + "Will be synced to a global and public address book" : "Wird mit einem globalen und einem öffentlichen Adressbuch synchronisiert", + "Very weak password" : "Sehr schwaches Passwort", + "Weak password" : "Schwaches Passwort", + "So-so password" : "Akzeptables Passwort", + "Good password" : "Gutes Passwort", + "Strong password" : "Starkes Passwort", + "An error occurred while changing your language. Please reload the page and try again." : "Es ist ein Fehler beim Wechseln der Sprache aufgetreten. Bitte laden Sie die Seite neu und versuchen es noch einmal.", + "An error occurred while changing your locale. Please reload the page and try again." : "Es ist ein Fehler beim Wechseln des Gebietsschemas aufgetreten. Bitte laden Sie die Seite neu und versuchen es noch einmal.", + "Select a profile picture" : "Wählen Sie ein Profilbild", + "Week starts on {fdow}" : "Die Woche startet am {fdow}", + "Groups" : "Gruppen", + "Group list is empty" : "Gruppenliste ist leer", + "Unable to retrieve the group list" : "Gruppenliste konnte nicht abgerufen werden", + "Afrikaans (Namibia)" : "Afrikanisch (Namibia)", + "Afrikaans (South Africa)" : "Afrikanisch (Südafrika)", + "Afrikaans" : "Afrikanisch", + "Akan (Ghana)" : "Akanisch (Ghana)", + "Akan" : "Akanisch", + "Albanian (Albania)" : "Albanisch (Albanien)", + "Albanian" : "Albanisch", + "Amharic (Ethiopia)" : "Amharisch (Äthiopien)", + "Amharic" : "Amharisch", + "Arabic (Algeria)" : "Arabisch (Algerien)", + "Arabic (Bahrain)" : "Arabisch (Bahrain)", + "Arabic (Egypt)" : "Arabisch (Ägypten)", + "Arabic (Iraq)" : "Arabisch (Irak)", + "Arabic (Jordan)" : "Arabisch (Jordanien)", + "Arabic (Kuwait)" : "Arabisch (Kuwait)", + "Arabic (Lebanon)" : "Arabisch (Libanon)", + "Arabic (Libya)" : "Arabisch (Lybien)", + "Arabic (Morocco)" : "Arabisch (Marokko)", + "Arabic (Oman)" : "Arabisch (Oman)", + "Arabic (Qatar)" : "Arabisch (Katar)", + "Arabic (Saudi Arabia)" : "Arabisch (Saudiarabien)", + "Arabic (Sudan)" : "Arabisch (Sudan)", + "Arabic (Syria)" : "Arabisch (Syrien)", + "Arabic (Tunisia)" : "Arabisch (Tunesien)", + "Arabic (United Arab Emirates)" : "Arabisch (Vereinigte Arabische Emirate)", + "Arabic (Yemen)" : "Arabisch (Jemen)", + "Arabic" : "Arabisch", + "Armenian (Armenia)" : "Armenisch (Armenien)", + "Armenian" : "Armenisch", + "Assamese (India)" : "Assamesisch (Indien)", + "Assamese" : "Assamesisch", + "Asu (Tanzania)" : "Asu (Tansania)", + "Asu" : "Asu", + "Azerbaijani (Cyrillic)" : "Aserbaidschanisch (Kyrillisch)", + "Azerbaijani (Cyrillic, Azerbaijan)" : "Aserbaidschanisch (Kyrillisch, Aserbaidschan)", + "Azerbaijani (Latin)" : "Aserbaidschanisch (Latein)", + "Azerbaijani (Latin, Azerbaijan)" : "Aserbaidschanisch (Latein, Aserbaidschan)", + "Azerbaijani" : "Aserbaidschanisch", + "Bambara (Mali)" : "Bambara (Mali)", + "Bambara" : "Bambara", + "Basque (Spain)" : "Baskisch (Spanien)", + "Basque" : "Baskisch", + "Belarusian (Belarus)" : "Weissrussisch (Weissrussland)", + "Belarusian" : "Weissrussisch", + "Bemba (Zambia)" : "Bemba (Sambia)", + "Bemba" : "Bemba", + "Bena (Tanzania)" : "Bena (Tansania)", + "Bena" : "Bena", + "Bengali (Bangladesh)" : "Bengali (Bangladesch)", + "Bengali (India)" : "Bengali (Indien)", + "Bengali" : "Bengalisch", + "Bosnian (Bosnia and Herzegovina)" : "Bosnisch (Bosnien und Herzegowina)", + "Bosnian" : "Bosnisch", + "Bulgarian (Bulgaria)" : "Bulgarisch (Bulgarien)", + "Bulgarian" : "Bulgarisch", + "Burmese (Myanmar [Burma])" : "Burmesisch (Myanmar [Burma])", + "Burmese" : "Burmesisch", + "Catalan (Spain)" : "Katalanisch (Spanien)", + "Catalan" : "Katalanisch", + "Central Morocco Tamazight (Latin)" : "Zentralatlas-Tamazight (Latein)", + "Central Morocco Tamazight (Latin, Morocco)" : "Zentralatlas-Tamazight (Latein, Marokko)", + "Central Morocco Tamazight" : "Zentralatlas-Tamazight", + "Cherokee (United States)" : "Cherokee (USA)", + "Cherokee" : "Cherokee", + "Chiga (Uganda)" : "Chiga (Uganda)", + "Chiga" : "Chiga", + "Chinese (Simplified Han)" : "Chinesisch (Vereinfachtes Han)", + "Chinese (Simplified Han, China)" : "Chinesisch (Vereinfachtes Han, China)", + "Chinese (Simplified Han, Hong Kong SAR China)" : "Chinesisch (Vereinfachtes Han, Hongkong SAR China)", + "Chinese (Simplified Han, Macau SAR China)" : "Chinesisch (Vereinfachtes Han, Macau SAR China)", + "Chinese (Simplified Han, Singapore)" : "Chinesisch (Vereinfachtes Han, Singapur)", + "Chinese (Traditional Han)" : "Chinesisch (Traditionelles Han)", + "Chinese (Traditional Han, Hong Kong SAR China)" : "Chinesisch (Traditionelles Han, Hongkong SAR China)", + "Chinese (Traditional Han, Macau SAR China)" : "Chinesisch (Traditionelles Han, Macau SAR China)", + "Chinese (Traditional Han, Taiwan)" : "Chinesisch (Traditionelles Han, Taiwan)", + "Chinese" : "Chinesisch", + "Cornish (United Kingdom)" : "Kornisch (Vereinigtes Königreich)", + "Cornish" : "Kornisch", + "Croatian (Croatia)" : "Kroatisch (Kroatien)", + "Croatian" : "Kroatisch", + "Czech (Czech Republic)" : "Tschechisch (Tschechische Republik)", + "Czech" : "Tschechisch", + "Danish (Denmark)" : "Dänisch (Dänemark)", + "Danish" : "Dänisch", + "Dutch (Belgium)" : "Holländisch (Belgien)", + "Dutch (Netherlands)" : "Holländisch (Niederlande)", + "Dutch" : "Niederländisch", + "Embu (Kenya)" : "Embu (Kenia)", + "Embu" : "Embu", + "English (American Samoa)" : "Englisch (Amerikanisch-Samoa)", + "English (Australia)" : "Englisch (Australien)", + "English (Belgium)" : "Englisch (Belgien)", + "English (Belize)" : "Englisch (Belize)", + "English (Botswana)" : "Englisch (Botswana)", + "English (Canada)" : "Englisch (Kanada)", + "English (Guam)" : "Englisch (Guam)", + "English (Hong Kong SAR China)" : "Englisch (Hongkong SAR China)", + "English (India)" : "Englisch (Indien)", + "English (Ireland)" : "Englisch (Irland)", + "English (Jamaica)" : "Englisch (Jamaika)", + "English (Malta)" : "Englisch (Malta)", + "English (Marshall Islands)" : "Englisch (Marshallinseln)", + "English (Mauritius)" : "Englisch (Mauritius)", + "English (Namibia)" : "Englisch (Namibia)", + "English (New Zealand)" : "Englisch (Neuseeland)", + "English (Northern Mariana Islands)" : "Englisch (Nördliche Marianen)", + "English (Pakistan)" : "Englisch (Pakistan)", + "English (Philippines)" : "Englisch (Philippinen)", + "English (Singapore)" : "Englisch (Singapur)", + "English (South Africa)" : "Englisch (Südafrika)", + "English (Trinidad and Tobago)" : "Englisch (Trinidad und Tobago)", + "English (U.S. Minor Outlying Islands)" : "Englisch (United States Minor Outlying Islands)", + "English (U.S. Virgin Islands)" : "Englisch (U.S. Jungferninseln)", + "English (United Kingdom)" : "Englisch (UK)", + "English (United States)" : "Englisch (USA)", + "English (Zimbabwe)" : "Englisch (Simbabwe)", + "English" : "Englisch", + "Esperanto" : "Esperanto", + "Estonian (Estonia)" : "Estnisch (Estland)", + "Estonian" : "Estnisch", + "Ewe (Ghana)" : "Ewe (Ghana)", + "Ewe (Togo)" : "Ewe (Togo)", + "Ewe" : "Ewe", + "Faroese (Faroe Islands)" : "Färöisch (Färöer-Inseln)", + "Faroese" : "Färöisch", + "Filipino (Philippines)" : "Filipino (Philippinen)", + "Filipino" : "Filipino", + "Finnish (Finland)" : "Finnisch (Finnland)", + "Finnish" : "Finnisch", + "French (Belgium)" : "Französisch (Belgien)", + "French (Benin)" : "Französisch (Benin)", + "French (Burkina Faso)" : "Französisch (Burkina Faso)", + "French (Burundi)" : "Französisch (Burundi)", + "French (Cameroon)" : "Französisch (Kamerun)", + "French (Canada)" : "Französisch (Kanada)", + "French (Central African Republic)" : "Französisch (Zentralafrikanische Republik)", + "French (Chad)" : "French (Tschad)", + "French (Comoros)" : "Französisch (Komoren)", + "French (Congo - Brazzaville)" : "Französisch (Kongo - Brazzaville)", + "French (Congo - Kinshasa)" : "Französisch (Kongo - Kinschasa)", + "French (Côte d’Ivoire)" : "Französisch (Elfenbeinküste)", + "French (Djibouti)" : "Französisch (Dschibuti)", + "French (Equatorial Guinea)" : "Französisch (Äquatorialguinea)", + "French (France)" : "Französisch (Frankreich)", + "French (Gabon)" : "Französisch (Gabun)", + "French (Guadeloupe)" : "Französisch (Guadeloupe)", + "French (Guinea)" : "Französisch (Guinea)", + "French (Luxembourg)" : "Französisch (Luxemburg)", + "French (Madagascar)" : "Französisch (Madagaskar)", + "French (Mali)" : "Französisch (Mali)", + "French (Martinique)" : "Französisch (Martinique)", + "French (Monaco)" : "Französisch (Monaco)", + "French (Niger)" : "Französisch (Niger)", + "French (Rwanda)" : "Französisch (Ruanda)", + "French (Réunion)" : "Französisch (Réunion)", + "French (Saint Barthélemy)" : "Französisch (Saint Barthélemy)", + "French (Saint Martin)" : "Französisch (Saint Martin)", + "French (Senegal)" : "Französisch (Senegal)", + "French (Switzerland)" : "Französisch (Schweiz)", + "French (Togo)" : "Französisch (Togo)", + "French" : "Französisch", + "Fulah (Senegal)" : "Fulfulde (Senegal)", + "Fulah" : "Fulfulde", + "Galician (Spain)" : "Galicisch (Spanien)", + "Galician" : "Galicisch", + "Ganda (Uganda)" : "Ganda (Uganda)", + "Ganda" : "Ganda", + "Georgian (Georgia)" : "Georgisch (Gerorgien)", + "Georgian" : "Georgisch", + "German (Austria)" : "Deutsch (Österreich)", + "German (Belgium)" : "Deutsch (Belgien)", + "German (Germany)" : "Deutsch (Deutschland)", + "German (Liechtenstein)" : "Deutsch (Liechtenstein)", + "German (Luxembourg)" : "Deutsch (Luxemburg)", + "German (Switzerland)" : "Deutsch (Schweiz)", + "German" : "Deutsch", + "Greek (Cyprus)" : "Grieschisch (Zypern)", + "Greek (Greece)" : "Grieschisch (Griechenland)", + "Greek" : "Griechisch", + "Gujarati (India)" : "Gujarati (Indien)", + "Gujarati" : "Gujarati", + "Gusii (Kenya)" : "Gusii (Kenia)", + "Gusii" : "Gusii", + "Hausa (Latin)" : "Hausa (Latein)", + "Hausa (Latin, Ghana)" : "Hausa (Latein, Ghana)", + "Hausa (Latin, Niger)" : "Hausa (Latein, Niger)", + "Hausa (Latin, Nigeria)" : "Hausa (Latein, Nigeria)", + "Hausa" : "Hausa", + "Hawaiian (United States)" : "Hawaianisch (US)", + "Hawaiian" : "Hawaianisch", + "Hebrew (Israel)" : "Hebräisch (Israel)", + "Hebrew" : "Hebräisch", + "Hindi (India)" : "Hindi (Indien)", + "Hindi" : "Hindi", + "Hungarian (Hungary)" : "Ungarisch (Ungarn)", + "Hungarian" : "Ungarisch", + "Icelandic (Iceland)" : "Isländisch (Island)", + "Icelandic" : "Isländisch", + "Igbo (Nigeria)" : "Igbo (Nigeria)", + "Igbo" : "Igbo", + "Indonesian (Indonesia)" : "Indonesisch (Indonesien)", + "Indonesian" : "Indonesisch", + "Irish (Ireland)" : "Irisch (Irland)", + "Irish" : "Irisch", + "Italian (Italy)" : "Italienisch (Italien)", + "Italian (Switzerland)" : "Italienisch ( Schweiz)", + "Italian" : "Italienisch", + "Japanese (Japan)" : "Japanisch (Japan)", + "Japanese" : "Japanisch", + "Kabuverdianu (Cape Verde)" : "Kabuverdianu (Kap Verde)", + "Kabuverdianu" : "Kapverdiscsh", + "Kabyle (Algeria)" : "Kabyle (Algerien)", + "Kabyle" : "Kabyle", + "Kalaallisut (Greenland)" : "Kalaallisut (Grönland)", + "Kalaallisut" : "Kalaallisut", + "Kalenjin (Kenya)" : "Kalenjin (Kenia)", + "Kalenjin" : "Kalenjin", + "Kamba (Kenya)" : "Kamba (Kenia)", + "Kamba" : "Kamba", + "Kannada (India)" : "Kanaresisch (Indien)", + "Kannada" : "Kanaresisch", + "Kazakh (Cyrillic)" : "Kasachisch (Kyrillisch)", + "Kazakh (Cyrillic, Kazakhstan)" : "Kasachisch (Kyrillisch Kasachstan)", + "Kazakh" : "Kasachisch", + "Khmer (Cambodia)" : "Khmer (Kambodscha)", + "Khmer" : "Khmer", + "Kikuyu (Kenya)" : "Kikuyu (Kenia)", + "Kikuyu" : "Kikuyu", + "Kinyarwanda (Rwanda)" : "Kinyarwanda (Ruanda)", + "Kinyarwanda" : "Kinyarwanda", + "Konkani (India)" : "Konkani (Indien)", + "Konkani" : "Konkani", + "Korean (South Korea)" : "Koreanisch (Süd Korea)", + "Korean" : "Koreanisch", + "Koyra Chiini (Mali)" : "Koyra Chiini (Mali)", + "Koyra Chiini" : "Koyra Chiini", + "Koyraboro Senni (Mali)" : "Koyraboro Senni (Mali)", + "Koyraboro Senni" : "Koyraboro Senni", + "Langi (Tanzania)" : "Langi (Tansania)", + "Langi" : "Langi", + "Latvian (Latvia)" : "Lettisch (Lettland)", + "Latvian" : "Lettisch", + "Lithuanian (Lithuania)" : "Litauisch (Litauen)", + "Lithuanian" : "Litauisch", + "Luo (Kenya)" : "Luo (Kenia)", + "Luo" : "Luo", + "Luyia (Kenya)" : "Luyia (Kenia)", + "Luyia" : "Luyia", + "Macedonian (Macedonia)" : "Mazedonisch (Mazedonien)", + "Macedonian" : "Mazedonisch", + "Machame (Tanzania)" : "Machame (Tansania)", + "Machame" : "Machame", + "Makonde (Tanzania)" : "Makonde (Tansania)", + "Makonde" : "Makonde", + "Malagasy (Madagascar)" : "Malagasy (Madagaskar)", + "Malagasy" : "Malagassi", + "Malay (Brunei)" : "Malaiisch (Brunei)", + "Malay (Malaysia)" : "Malaysisch (Malaysia)", + "Malay" : "Malaiisch", + "Malayalam (India)" : "Malayalam (Indien)", + "Malayalam" : "Malayalam", + "Maltese (Malta)" : "Maltesisch (Malta)", + "Maltese" : "Maltesisch", + "Manx (United Kingdom)" : "Manx-Gälisch (UK)", + "Manx" : "Manx-Gälisch", + "Marathi (India)" : "Marathi (Indien)", + "Marathi" : "Marathi", + "Masai (Kenya)" : "Masai (Kenia)", + "Masai (Tanzania)" : "Masai (Tansania)", + "Masai" : "Masai", + "Meru (Kenya)" : "Meru (Kenia)", + "Meru" : "Meru", + "Morisyen (Mauritius)" : "Morisyen (Mauritius)", + "Morisyen" : "Morisyen", + "Nama (Namibia)" : "Nama (Namibia)", + "Nama" : "Nama", + "Nepali (India)" : "Nepalesisch (Indien)", + "Nepali (Nepal)" : "Nepalesisch (Nepal)", + "Nepali" : "Nepali", + "North Ndebele (Zimbabwe)" : "Nord-Ndebele (Simbabwe)", + "North Ndebele" : "Nord-Ndebele", + "Norwegian Bokmål (Norway)" : "Norwegisch Bokmål (Norwegen)", + "Norwegian Bokmål" : "Norwegisch Bokmål", + "Norwegian Nynorsk (Norway)" : "Neunorwegisch (Norwegen)", + "Norwegian Nynorsk" : "Neunorwegisch", + "Nyankole (Uganda)" : "Nyankole (Uganda)", + "Nyankole" : "Nyankole", + "Oriya (India)" : "Oriya (Indien)", + "Oriya" : "Oriya", + "Oromo (Ethiopia)" : "Oromo (Äthiopien)", + "Oromo (Kenya)" : "Oromo (Kenia)", + "Oromo" : "Oromo", + "Pashto (Afghanistan)" : "Pashto (Afghanistan)", + "Pashto" : "Pashto", + "Persian (Afghanistan)" : "Persisch (Afghanistan)", + "Persian (Iran)" : "Persisch (Iran)", + "Persian" : "Persisch", + "Polish (Poland)" : "Polnisch (Polen)", + "Polish" : "Polnisch", + "Portuguese (Brazil)" : "Portugisisch (Brasilien)", + "Portuguese (Guinea-Bissau)" : "Portugisisch (Guinea-Bissau)", + "Portuguese (Mozambique)" : "Portugisisch (Mosambik)", + "Portuguese (Portugal)" : "Portugisisch (Portugal)", + "Portuguese" : "Portugiesisch", + "Punjabi (Arabic)" : "Punjabi (Arabisch)", + "Punjabi (Arabic, Pakistan)" : "Punjabi (Arabisch, Pakistan)", + "Punjabi (Gurmukhi)" : "Punjabi (Gurmukhi)", + "Punjabi (Gurmukhi, India)" : "Punjabi (Gurmukhi, Indien)", + "Punjabi" : "Punjabi", + "Romanian (Moldova)" : "Rumänisch (Moldavien)", + "Romanian (Romania)" : "Rumänisch (Rumänien)", + "Romanian" : "Rumänisch", + "Romansh (Switzerland)" : "Romanisch (Schweiz)", + "Romansh" : "Romanisch", + "Rombo (Tanzania)" : "Rombo (Tansania)", + "Rombo" : "Rombo", + "Russian (Moldova)" : "Russisch (Moldavien)", + "Russian (Russia)" : "Russisch (Russland)", + "Russian (Ukraine)" : "Russisch (Ukraine)", + "Russian" : "Russisch", + "Rwa (Tanzania)" : "Rwa (Tansania)", + "Rwa" : "Rwa", + "Samburu (Kenya)" : "Samburu (Kenia)", + "Samburu" : "Samburu", + "Sango (Central African Republic)" : "Sango (Zentralafrikanische Republik)", + "Sango" : "Sango", + "Sena (Mozambique)" : "Sena (Mosambik)", + "Sena" : "Sena", + "Serbian (Cyrillic)" : "Serbisch (Kyrillisch)", + "Serbian (Cyrillic, Bosnia and Herzegovina)" : "Serbisch (Kyrillisch, Bosnien und Herzogovina)", + "Serbian (Cyrillic, Montenegro)" : "Serbisch (Kyrillisch, Montenegro)", + "Serbian (Cyrillic, Serbia)" : "Serbisch (Kyrillisch, Serbien)", + "Serbian (Latin)" : "Serbisch (Latein)", + "Serbian (Latin, Bosnia and Herzegovina)" : "Serbisch (Latein, Bosnien und Herzegovina)", + "Serbian (Latin, Montenegro)" : "Serbisch (Latein, Montenegro)", + "Serbian (Latin, Serbia)" : "Serbisch (Latein, Serbien)", + "Serbian" : "Serbisch", + "Shona (Zimbabwe)" : "Shona (Simbabwe)", + "Shona" : "Shona", + "Sichuan Yi (China)" : "Sichuan Yi (China)", + "Sichuan Yi" : "Sichuan Yi", + "Sinhala (Sri Lanka)" : "Sinhala (Sri Lanka)", + "Sinhala" : "Sinhala", + "Slovak (Slovakia)" : "Slowakisch (Slowakei)", + "Slovak" : "Slowakisch", + "Slovenian (Slovenia)" : "Slowenisch (Slowenien)", + "Slovenian" : "Slowenisch", + "Soga (Uganda)" : "Soga (Uganda)", + "Soga" : "Soga", + "Somali (Djibouti)" : "Somali (Dschibouti)", + "Somali (Ethiopia)" : "Somalisch (Äthiopien)", + "Somali (Kenya)" : "Somalisch (Kenia)", + "Somali (Somalia)" : "Somalisch (Somalia)", + "Somali" : "Somalisch", + "Spanish (Argentina)" : "Spanisch (Argentinien)", + "Spanish (Bolivia)" : "Spanisch (Bolivien)", + "Spanish (Chile)" : "Spanisch (Chile)", + "Spanish (Colombia)" : "Spanisch (Kolumbien)", + "Spanish (Costa Rica)" : "Spanisch (Costa Rica)", + "Spanish (Dominican Republic)" : "Spanisch (Dominikanische Republik)", + "Spanish (Ecuador)" : "Spanisch (Equador)", + "Spanish (El Salvador)" : "Spanisch (El Salvador)", + "Spanish (Equatorial Guinea)" : "Spanisch (Äquatorialguinea)", + "Spanish (Guatemala)" : "Spanisch (Guatemala)", + "Spanish (Honduras)" : "Spanisch (Honduras)", + "Spanish (Latin America)" : "Spanisch (Lateinamerika)", + "Spanish (Mexico)" : "Spanisch (Mexiko)", + "Spanish (Nicaragua)" : "Spanisch (Nikaragua)", + "Spanish (Panama)" : "Spanisch (Panama)", + "Spanish (Paraguay)" : "Spanisch (Paraguay)", + "Spanish (Peru)" : "Spanisch (Peru)", + "Spanish (Puerto Rico)" : "Spanisch (Puerto Rico)", + "Spanish (Spain)" : "Spanisch (Spanien)", + "Spanish (United States)" : "Spanisch (USA)", + "Spanish (Uruguay)" : "Spanisch (Uruquai)", + "Spanish (Venezuela)" : "Spanisch (Venezuela)", + "Spanish" : "Spanisch", + "Swahili (Kenya)" : "Suaheli (Kenia)", + "Swahili (Tanzania)" : "Swahili (Tansania)", + "Swahili" : "Swahili", + "Swedish (Finland)" : "Schwedisch (Finnland)", + "Swedish (Sweden)" : "Schwedisch (Schweden)", + "Swedish" : "Schwedisch", + "Swiss German (Switzerland)" : "Schweizerdeutsch (Schweiz)", + "Swiss German" : "Schweizerdeutsch", + "Tachelhit (Latin)" : "Tachelhit (Latein)", + "Tachelhit (Latin, Morocco)" : "Tachelhit (Latein, Marokko)", + "Tachelhit (Tifinagh)" : "Tachelhit (Tifinagh)", + "Tachelhit (Tifinagh, Morocco)" : "Tachelhit (Tifinagh, Marokko)", + "Tachelhit" : "Tachelhit", + "Taita (Kenya)" : "Taita (Kenia)", + "Taita" : "Taita", + "Tamil (India)" : "Tamil (Indien)", + "Tamil (Sri Lanka)" : "Tamilisch (Sri Lanka)", + "Tamil" : "Tamilisch", + "Telugu (India)" : "Telugu (Inien)", + "Telugu" : "Telugu", + "Teso (Kenya)" : "Teso (Kenia)", + "Teso (Uganda)" : "Teso (Uganda)", + "Teso" : "Teso", + "Thai (Thailand)" : "Thailändisch (Thailand)", + "Thai" : "Thai", + "Tibetan (China)" : "Tibetisch (China)", + "Tibetan (India)" : "Tibetisch (Indien)", + "Tibetan" : "Tibetisch", + "Tigrinya (Eritrea)" : "Tigrinya (Eritrea)", + "Tigrinya (Ethiopia)" : "Tigrinya (Äthiopien)", + "Tigrinya" : "Tigrinya", + "Tonga (Tonga)" : "Tongaisch (Tonga)", + "Tonga" : "Tonga", + "Turkish (Turkey)" : "Türkisch (Türkei)", + "Turkish" : "Türkisch", + "Ukrainian (Ukraine)" : "Ukrainisch (Ukraine)", + "Ukrainian" : "Ukrainisch", + "Urdu (India)" : "Urdu (Indien)", + "Urdu (Pakistan)" : "Urdu (Pakistan)", + "Urdu" : "Urdu", + "Uzbek (Arabic)" : "Usbekisch (Arabisch)", + "Uzbek (Arabic, Afghanistan)" : "Usbekisch (Arabisch, Afghanistan)", + "Uzbek (Cyrillic)" : "Usbekisch (Kyrillisch)", + "Uzbek (Cyrillic, Uzbekistan)" : "Usbekisch (Kyrillisch, Usbekistan)", + "Uzbek (Latin)" : "Usbekisch (Latein)", + "Uzbek (Latin, Uzbekistan)" : "Usbekisch (Latein, Usbekistan)", + "Uzbek" : "Usbekisch", + "Vietnamese (Vietnam)" : "Vietnamesisch (Vietnam)", + "Vietnamese" : "Vietnamesisch", + "Vunjo (Tanzania)" : "Vunjo (Tansania)", + "Vunjo" : "Vunjo", + "Welsh (United Kingdom)" : "Walisisch (Vereinigtes Königreich)", + "Welsh" : "Walisisch", + "Yoruba (Nigeria)" : "Yoruba (Nigeria)", + "Yoruba" : "Yoruba", + "Zulu (South Africa)" : "Zulu (Südafrika)", + "Zulu" : "Zulu", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Zwei-Faktor-Authentifizierung kann für alle\tBenutzer und Gruppen erzwungen werden. Wenn kein Anbieter für Zwei-Faktor-Authentifizierung für Sie eingerichtet ist, so können Sie sich nicht am System anmelden.", + "Enforce two-factor authentication" : "Zwei-Faktor-Authentifizierung erzwingen", + "Limit to groups" : "Auf Gruppen beschränken", + "Enforcement of two-factor authentication can be set for certain groups only." : "Erzwingen der Zwei-Faktor-Authentifizierung kann nur für bestimmte Gruppen eingestellt werden.", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "Zwei-Faktor-Authentifizierung wird \tfür alle Mitglieder der folgenden Gruppen.", + "Enforced groups" : "Erzwungene Gruppen", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "Zwei-Faktor-Authentifizierung wird nicht\tfür Mitglieder der folgenden Gruppen erzwungen.", + "Excluded groups" : "Ausgeschlossene Gruppen", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "Bei der Auswahl/Abwahl von Gruppen wird folgende Logik verwendet, um Festzustellen ob ein Benutzer 2FA verwenden muss: Wenn keine Gruppe ausgewählt ist, dann wird 2FA für alle Benutzer aktiviert, außer für Mitglieder der ausgenommenen Gruppen. Sind Gruppen ausgewählt, so wird 2FA für alle Mitglieder dieser Gruppen aktiviert. Ist ein Benutzer Mitglieder der ausgewählten und ausgenommenen Gruppe, so hat die Auswahl Vorrang und 2FA wird aktiviert. ", + "Save changes" : "Änderungen speichern ", + "Marked for remote wipe" : "Für Fernlöschung markiert", + "Device settings" : "Geräteeinstellungen", + "Allow filesystem access" : "Erlaube Dateisystem-Zugriff", + "Rename" : "Umbennen", + "Revoke" : "Widerrufen", + "Wipe device" : "Gerät löschen", + "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Zurückziehen dieses Tokens könnte das Löschen von Ihrem Gerät verhindern, wenn die Löschung noch nicht gestartet wurde.", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome für Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Nextcloud iOS-App", + "Nextcloud Android app" : "Nextcloud Android-App", + "Nextcloud Talk for iOS" : "Nextcloud Talk für iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk für Android", + "Sync client - {os}" : "Sync-Client - {os}", + "This session" : "Diese Sitzung", + "Device" : "Gerät", + "Last activity" : "Letzte Aktivität", + "Devices & sessions" : "Geräte & Sitzungen", + "Web, desktop and mobile clients currently logged in to your account." : "Aktuell in Ihrem Konto angemeldete Web-, Desktop- und Mobil-Clients.", + "Do you really want to wipe your data from this device?" : "Möchten Sie wirklich alle Daten von diesem Gerät löschen?", + "Confirm wipe" : "Löschen bestätigen", + "Error while creating device token" : "Fehler beim Erstellen des Geräte-Tokens", + "Error while updating device token scope" : "Fehler bei der Aktualisierung des Geräte-Token-Scope", + "Error while updating device token name" : "Fehler bei der Aktualisierung des Geräte-Token-Namens", + "Error while deleting the token" : "Fehler beim Löschen des Geräte-Tokens", + "Error while wiping the device with the token" : "Fehler während des Löschens des Geräts mit dem Token", + "App name" : "App-Name", + "Create new app password" : "Neues App-Passwort erstellen", + "Use the credentials below to configure your app or device." : "Nutzen Sie die unten angebenen Anmeldeinformationen, um ihre App oder ihr Gerät zu konfigurieren.", + "For security reasons this password will only be shown once." : "Aus Sicherheitsgründen wird das Passwort nur einmal angezeigt.", + "Username" : "Benutzername", + "Password" : "Passwort", + "Done" : "Erledigt", + "Show QR code for mobile apps" : "QR-Code für mobile Apps anzeigen", + "Copied!" : "Kopiert!", + "Copy" : "Kopieren", + "Could not copy app password. Please copy it manually." : "Das Passwort für die App konnte nicht kopiert werden. Bitte kopieren Sie es manuell.", + "This app is supported via your current Nextcloud subscription." : "Diese App wird von Ihrem aktuellen Nextcloud-Abonnement unterstützt.", + "Supported" : "Unterstützt", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Offizielle Apps werden von und innerhalb der Community entwickelt. Sie stellen die zentralen Funktionen bereit und sind für den produktiven Einsatz geeignet.", + "Official" : "Offiziell", + "by" : "von", + "Update to {version}" : "Aktualisieren auf {version}", + "Remove" : "Entfernen", + "Disable" : "Deaktivieren", + "All" : "Alle", + "Limit app usage to groups" : "App-Verwendung auf Gruppen beschränken", + "No results" : "Keine Ergebnisse", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Für diese App wurde keine untere Versionsgrenze für Nextcloud gesetzt. Dies wird zukünftig als Fehler behandelt.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Für diese App wurde keine obere Versionsgrenze für Nextcloud gesetzt. Dies wird zukünftig als Fehler behandelt.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Diese App kann nicht installiert werden, weil die folgenden Abhängigkeiten nicht erfüllt sind:", + "View in store" : "Im Store anzeigen", + "Visit website" : "Webseite besuchen", + "Report a bug" : "Melden Sie einen technischen Fehler", + "User documentation" : "Dokumentation für Benutzer", + "Admin documentation" : "Dokumentation für Administratoren", + "Developer documentation" : "Dokumentation für Entwickler", + "Update to {update}" : "Aktualisieren auf {update}", + "Results from other categories" : "Ergebnisse aus anderen Kategorien", + "No apps found for your version" : "Es wurden keine Apps für Ihre Version gefunden", + "Disable all" : "Alle deaktivieren", + "Enable all" : "Alle aktivieren", + "Download and enable" : "Herunterladen und aktivieren", + "Enable" : "Aktivieren", + "Enable untested app" : "Ungetestete App aktivieren", + "The app will be downloaded from the app store" : "Die App wird aus dem App-Store heruntergeladen", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Diese App ist als nicht-kompatibel mit Ihrer Nextcloud-Version markiert. Wenn Sie fortfahren, so können Sie die App installieren. Bitte beachten Sie, dass die App nicht wie erwartet funktionieren könnte.", + "You do not have permissions to see the details of this user" : "Sie haben keine Berechtigung, um auf die Details dieses Benutzers zu sehen", + "The backend does not support changing the display name" : "Das Backend unterstützt keine Änderung des Anzeigenamens", + "New password" : "Neues Passwort", + "Add user in group" : "Nutzer zur Gruppe hinzufügen", + "Set user as admin for" : "Benutzer als Administrator setzen für", + "Select user quota" : "Speicherkontigent wählen", + "No language set" : "Keine Sprache eingestellt.", + "Never" : "Niemals", + "Delete user" : "Benutzer löschen", + "Wipe all devices" : "Alle Geräte löschen", + "Disable user" : "Benutzer deaktivieren", + "Enable user" : "Benutzer aktivieren", + "Resend welcome email" : "Willkommens-E-Mail erneut senden", + "{size} used" : "{size} verwendet", + "Welcome mail sent!" : "Willkommens-E-Mail gesendet!", + "Display name" : "Anzeigename", + "Email" : "E-Mail", + "Group admin for" : "Gruppenadministrator für", + "Quota" : "Kontingent", + "Language" : "Sprache", + "Storage location" : "Speicherort", + "User backend" : "Benutzer-Backend", + "Last login" : "Letzte Anmeldung", + "Will be autogenerated" : "Wird automatisch erzeugt", + "Default language" : "Standard-Sprache", + "Add a new user" : "Neuen Nutzer hinzufügen", + "No users in here" : "Kein Nutzer vorhanden", + "Default quota" : "Standard Speicherkontingent ", + "Password change is disabled because the master key is disabled" : "Das Ändern des Passwortes ist deaktiviert, da der Master-Schlüssel deaktiviert ist", + "Common languages" : "Gängige Sprachen", + "All languages" : "Alle Sprachen", + "Your apps" : "Ihre Apps", + "Active apps" : "Aktive Apps", + "Disabled apps" : "Deaktivierte Apps", + "Updates" : "Aktualisierungen", + "App bundles" : "App-Pakete", + "{license}-licensed" : "{license}-Lizensiert", + "New user" : "Neuer Benutzer", + "Default quota:" : "Standard Speicherkontingent:", + "Select default quota" : "Standard Speicherkontingent wählen", + "Show Languages" : "Sprachen anzeigen", + "Show last login" : "Letzte Anmeldung anzeigen", + "Show user backend" : "Benutzer-Backend anzeigen", + "Show storage path" : "Zeige Speicherpfad", + "You are about to remove the group {group}. The users will NOT be deleted." : "Sie sind dabei die Gruppe {group} zu löschen. Die Benutzer werden NICHT gelöscht.", + "Please confirm the group removal " : "Bitte die Löschung der Gruppe bestätigen", + "Remove group" : "Gruppe entfernen", + "Admins" : "Administratoren", + "Disabled users" : "Deaktivierte Benutzer", + "Everyone" : "Jeder", + "Add group" : "Gruppe hinzufügen", + "An error occured during the request. Unable to proceed." : "Es ist ein Fehler bei der Anfrage aufgetreten. Es kann nicht fortgefahren werden.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Die App wurde aktiviert, muss aber aktualisiert werden. Sie werden in 5 Sekunden zur Aktualisierungsseite weitergeleitet.", + "App update" : "App-Aktualisierung", + "Error: This app can not be enabled because it makes the server unstable" : "Fehler: Diese App kann nicht aktiviert werden, da sie den Server instabil macht. ", + "SSL Root Certificates" : "SSL-Root-Zertifikate", + "Common Name" : "Allgemeiner Name", + "Valid until" : "Gültig bis", + "Issued By" : "Ausgestellt von:", + "Valid until %s" : "Gültig bis %s", + "Import root certificate" : "Root-Zertifikat importieren", + "Administrator documentation" : "Dokumentation für Administratoren", + "Documentation" : "Dokumentation", + "Forum" : "Forum", + "None" : "Keine", + "Login" : "Anmelden", + "Plain" : "Klartext", + "NT LAN Manager" : "NT-LAN-Manager", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "E-Mail-Server", + "Open documentation" : "Dokumentation öffnen", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Es ist wichtig diesen Server so zu konfigurieren, dass E-Mails versandt werden können, z.B. für den Passwort-Reset und Benachrichtigungen.", + "Send mode" : "Sendemodus", + "Encryption" : "Verschlüsselung", + "Sendmail mode" : "Sendmail-Modus", + "From address" : "Absenderadresse", + "mail" : "E-Mail", + "Authentication method" : "Authentifizierungsmethode", + "Authentication required" : "Authentifizierung benötigt", + "Server address" : "Serveradresse", + "Port" : "Port", + "Credentials" : "Zugangsdaten", + "SMTP Username" : "SMTP-Benutzername", + "SMTP Password" : "SMTP-Passwort", + "Save" : "Speichern", + "Test email settings" : "E-Mail-Einstellungen testen", + "Send email" : "E-Mail senden", + "Security & setup warnings" : "Sicherheits- & Einrichtungswarnungen", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Für die Sicherheit und Geschwindigkeit Ihrer Installation ist es von großer Bedeutung, dass sie richtig konfiguriert ist. Um Ihnen hierbei zu helfen werden einige automatische Tests durchgeführt. Weitere Informationen finden Sie im Tipps & Tricks- Abschnitt und in der Dokumentation.", + "All checks passed." : "Alle Überprüfungen bestanden.", + "There are some errors regarding your setup." : "Es gibt einige Fehler in Ihrer Systemkonfiguration.", + "There are some warnings regarding your setup." : "Es gibt einige Warnungen zu Ihrer Systemkonfiguration.", + "Checking for system and security issues." : "Prüfung auf System- und Sicherheitsthemen.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Bitte überprüfen Sie noch einmal die <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">Installationsanleitungen ↗</a> und kontrollieren Sie das <a href=\"%2$s\">Protokoll</a> auf mögliche Fehler oder Warnungen.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Überprüfen Sie die Sicherheit Ihrer Nextcloud mit unserem <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">Sicherheits-Scan ↗</a>.", + "Version" : "Version", + "Two-Factor Authentication" : "Zwei-Faktor-Authentifizierung", + "Server-side encryption" : "Serverseitige Verschlüsselung", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Serverseitige Verschlüsselung ermöglicht es die auf diesen Server hochgeladenen Dateien zu verschlüsseln. Dies führt allerdings auch zu Nachteilen, wie z.B. einem Geschwindigkeitsverlust. Sie sollte deshalb nur eingeschaltet werden, wenn sie wirklich benötigt wird.", + "Enable server-side encryption" : "Serverseitige Verschlüsselung aktivieren", + "Please read carefully before activating server-side encryption: " : "Bitte sorgfältig lesen, bevor die serverseitige Verschlüsselung aktiviert wird:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Wird die Verschlüsselung einmal aktiviert, so werden alle ab diesem Zeitpunkt hochgeladene Dateien verschlüsselt. Sie kann nur wieder deaktiviert werden, wenn das Verschlüsselungsmodul dies unterstützt und alle Voraussetzungen (wie das Setzen eines Wiederherstellungsschlüssels) im Vorhinein erfüllt wurden.", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Verschlüsselung alleine garantiert nicht die Systemsicherheit. Bitte lese in der Dokumentation nach, wie die Verschlüsselungs-app funktioniert und welche Anwendungsfälle unterstützt werden.", + "Be aware that encryption always increases the file size." : "Bedenken Sie, dass durch die Verschlüsselung die Dateigröße zunimmt. ", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Es ist immer gut, regelmäßig Sicherungskopien von ihren Daten zu machen. Falls Sie die Verschlüsselung nutzen, sollten Sie auch eine Sicherung der Verschlüsselungsschlüssel zusammen mit Ihren Daten machen.", + "This is the final warning: Do you really want to enable encryption?" : "Dies ist die letzte Warnung: Verschlüsselung wirklich aktivieren?", + "Enable encryption" : "Verschlüsselung aktivieren", + "No encryption module loaded, please enable an encryption module in the app menu." : "Es wurde kein Verschlüsselungs-Modul geladen, bitte ein Verschlüsselungs-Modul im Anwendungs-Menü aktivieren.", + "Select default encryption module:" : "Standard-Verschlüsselungs-Modul auswählen:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Sie müssen Ihre Verschlüsselungsschlüssel von der alten Verschlüsselung (ownCloud <= 8.0) zur Neuen migrieren. Bitte aktivieren Sie das \"Default Encryption Module\" und rufen Sie 'occ encryption:migrate' auf.", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Sie müssen Ihre Verschlüsselungsschlüssel von der alten Verschlüsselung (ownCloud <= 8.0) zur Neuen migrieren.", + "Start migration" : "Migration beginnen", + "Background jobs" : "Hintergrund-Aufgaben", + "Last job ran %s." : "Letzte Aufgabe ausgeführt %s", + "Last job execution ran %s. Something seems wrong." : "Letzte Aufgaben-Ausführung lief %s. Etwas scheint falsch zu sein.", + "Background job didn’t run yet!" : "Hintergrund-Aufgabe wurde bislang nicht ausgeführt!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Um die optimale Geschwindigkeit zu erreichen ist es wichtig, dass die Hintergrund-Aktivitäten richtig konfiguriert sind. Für größere Installationen ist 'Cron' die empfohlene Einstellung. Weitere Informationen finden Sie in der Dokumentation.", + "Pick background job setting" : "Wähle eine Hintergrund-Aufgabeneinstellung aus", + "Execute one task with each page loaded" : "Eine Aufgabe bei jedem Laden einer Seite ausführen", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php ist bei einem Webcron-Dienst angemeldet, der cron.php alle 5 Minuten über HTTP aufruft.", + "Use system cron service to call the cron.php file every 5 minutes." : "Den System-Cron-Dienst verwenden, um die Datei cron.php alle 5 Minuten aufzurufen.", + "The cron.php needs to be executed by the system user \"%s\"." : "Die cron.php muss durch den Systemnutzer \"%s\" ausgeführt werden.", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Um dies auszuführen, wird die PHP-Posix Erweiterung benötigt. Weitere Informationen in der {linkstart}PHP-Dokumentation{linkend}. ", + "Sharing" : "Teilen", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Als Administrator können sie das Teilen-Verhalten feinabstimmen. Weitere Informationen finden Sie in der Dokumentation.", + "Allow apps to use the Share API" : "Apps die Benutzung der Share-API erlauben", + "Allow users to share via link" : "Benutzern erlauben, Inhalte über Links zu teilen", + "Allow public uploads" : "Öffentliches Hochladen erlauben", + "Always ask for a password" : "Immer nach einem Passwort fragen", + "Enforce password protection" : "Passwortschutz erzwingen", + "Set default expiration date" : "Standardmäßiges Ablaufdatum setzen", + "Expire after " : "Ablauf nach ", + "days" : "Tagen", + "Enforce expiration date" : "Ablaufdatum erzwingen", + "Allow resharing" : "Weiterteilen erlauben", + "Allow sharing with groups" : "Teilen mit Gruppen erlauben", + "Restrict users to only share with users in their groups" : "Benutzer auf das Teilen innerhalb ihrer Gruppen beschränken", + "Exclude groups from sharing" : "Gruppen von Freigaben ausschließen", + "These groups will still be able to receive shares, but not to initiate them." : "Diese Gruppen können weiterhin Freigaben empfangen, aber selbst keine mehr initiieren.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Die Auto-Vervollständigung von Benutzernamen im Teilen-Dialog erlauben. Wenn dies deaktiviert ist, muss der vollständige Benutzername oder E-Mail-Adresse eingegeben werden.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Zeige Haftungsausschluss auf der öffentlichen Upload-Seite. (Wird nur gezeigt wenn die Dateiliste nicht angezeigt wird.) ", + "This text will be shown on the public link upload page when the file list is hidden." : "Dieser Text wird auf der öffentlichen Upload-Seite angezeigt wenn die Dateiliste nicht angezeigt wird.", + "Default share permissions" : "Standardberechtigungen für das Teilen", + "Personal" : "Persönlich", + "Administration" : "Verwaltung", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Entwickelt von der {communityopen}Nextcloud Community{linkclose}, der {githubopen}Quellcode{linkclose} ist lizensiert unter {licenseopen}AGPL{linkclose}-Lizenz.", + "Like our Facebook page" : "Liken Sie uns auf unserer Facebook-Seite", + "Follow us on Twitter" : "Folgen Sie uns auf Twitter", + "Follow us on Mastodon" : "Folgen Sie uns auf Mastodon", + "Check out our blog" : "Sehen Sie sich unseren Blog an", + "Subscribe to our newsletter" : "Abonnieren Sie unseren Newsletter", + "Profile picture" : "Profilbild", + "Upload new" : "Neues hochladen", + "Select from Files" : "Aus Dateien wählen", + "Remove image" : "Bild entfernen", + "png or jpg, max. 20 MB" : "png oder jpg, max. 20 MB", + "Picture provided by original account" : "Bild von Original-Konto zur Verfügung gestellt", + "Cancel" : "Abbrechen", + "Choose as profile picture" : "Als Profilbild auswählen", + "Details" : "Details", + "You are a member of the following groups:" : "Sie sind Mitglied folgender Gruppen:", + "You are using <strong>%s</strong>" : "Sie benutzen <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Sie verwenden <strong>%1$s</strong> von <strong>%2$s</strong> (<strong>%3$s %%</strong>)", + "Full name" : "Vollständiger Name", + "No display name set" : "Kein Anzeigename angegeben", + "Your email address" : "Ihre E-Mail-Adresse", + "No email address set" : "Keine E-Mail-Adresse angegeben", + "For password reset and notifications" : "Für Passwort-Wiederherstellung und Benachrichtigungen", + "Phone number" : "Telefonnummer", + "Your phone number" : "Ihre Telefonnummer", + "Address" : "Adresse", + "Your postal address" : "Ihre Postadresse", + "Website" : "Webseite", + "It can take up to 24 hours before the account is displayed as verified." : "Es kann bis zu 24 Stunden dauern, bis das Konto als überprüt angezeigt wird.", + "Link https://…" : "Link https://…", + "Twitter" : "Twitter", + "Twitter handle @…" : "Twitter-Handle @…", + "Help translate" : "Helfen Sie bei der Übersetzung", + "Locale" : "Gebietsschema", + "Current password" : "Aktuelles Passwort", + "Change password" : "Passwort ändern", + "Use a second factor besides your password to increase security for your account." : "Verwenden Sie neben Ihrem Passwort einen zweiten Faktor, um die Sicherheit für Ihr Konto zu erhöhen.", + "Disconnect" : "Trennen", + "Not supported!" : "Nicht unterstützt!", + "Press ⌘-C to copy." : "Drücken Sie ⌘-C zum Kopieren.", + "Press Ctrl-C to copy." : "Zum Kopieren Strg-C drücken.", + "Error while loading browser sessions and device tokens" : "Fehler beim Laden der Browser-Sitzungen und Geräte-Token", + "Store credentials" : "Anmeldeinformationen speichern", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php ist als Webcron-Dienst registriert, der die cron.php alle 15 Minuten per HTTP aufruft. ", + "Use system cron service to call the cron.php file every 15 minutes." : "Nutzen Sie den System-Cron-Service um cron.php alle 15 Minuten aufzurufen.", + "Follow us on Google+" : "Folgen Sie uns auf Google+" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} \ No newline at end of file diff --git a/apps/settings/l10n/el.js b/apps/settings/l10n/el.js new file mode 100644 index 00000000000..edd03f9bdd1 --- /dev/null +++ b/apps/settings/l10n/el.js @@ -0,0 +1,314 @@ +OC.L10N.register( + "settings", + { + "{actor} added you to group {group}" : "{actor} σας πρόσθεσε στην ομάδα {group}", + "You added {user} to group {group}" : "Προσθέσατε τον χρήστη {user} στην ομάδα {group}", + "{actor} added {user} to group {group}" : "{actor} πρόσθεσε τον χρήστη {user} στην ομάδα {group}", + "An administrator added you to group {group}" : "Ένας διαχειριστής σάς πρόσθεσε στην ομάδα {group}", + "An administrator added {user} to group {group}" : "Ένας διαχειριστής πρόσθεσε τον χρήστη {user} στην ομάδα {group}", + "{actor} removed you from group {group}" : "{actor} σάς αφαίρεσε από την ομάδα {group}", + "You removed {user} from group {group}" : "Αφαιρέσατε τον χρήστη {user} από την ομάδα {group}", + "{actor} removed {user} from group {group}" : "{actor} αφαίρεσε τον χρήστη {user} από την ομάδα {group}", + "An administrator removed you from group {group}" : "Ένας διαχειριστής σάς αφαίρεσε από την ομάδα {group}", + "An administrator removed {user} from group {group}" : "Ένας διαχειριστής αφαίρεσε τον χρήστη {user} από την ομάδα {group}", + "{actor} changed your password" : "{actor} το συθηματικό σας άλλαξε", + "You changed your password" : "Αλλάξατε το συνθηματικό σας", + "Your password was reset by an administrator" : "Έχει γίνει επαναφορά του συνθηματικού σας από τον διαχειριστή", + "{actor} changed your email address" : "{actor} άλλαξε τη διεύθυνσή του ηλεκτρονικού ταχυδρομείου σας", + "You changed your email address" : "Έχετε αλλάξει τη διεύθυνση ηλεκτρονικού ταχυδρομείου σας", + "Your email address was changed by an administrator" : "Η διεύθυνση ηλεκτρονικής αλληλογραφίας άλλαξε από τον διαχειριστή", + "Security" : "Ασφάλεια", + "You successfully logged in using two-factor authentication (%1$s)" : "Έχετε συνδεθεί επιτυχώς με τη χρήση ελέγχου ταυτότητας δύο-παραγόντων (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Μία προσπάθεια σύνδεσης με τη χρήση ελέγχου ταυτότητας δύο-παραγόντων απέτυχε (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Ο δικός σας <ισχυρός>κωδικός πρόσβασης</ισχυρός>ή<ισχυρός>αλληλογραφίας</ισχυρός>τροποποιήθηκε", + "Couldn't remove app." : "Αδυναμία αφαίρεσης εφαρμογής.", + "Couldn't update app." : "Αδυναμία ενημέρωσης εφαρμογής", + "Wrong password" : "Εσφαλμένο συνθηματικό", + "Saved" : "Αποθηκεύτηκαν", + "No user supplied" : "Δεν εισήχθη χρήστης", + "Unable to change password" : "Αδυναμία αλλαγής συνθηματικού", + "Authentication error" : "Σφάλμα πιστοποίησης", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Παρακαλώ παρέχετε έναν κωδικό ανάκτησης διαχειριστή, διαφορετικά όλα τα δεδομένα χρήστη θα χαθούν.", + "Wrong admin recovery password. Please check the password and try again." : "Λάθος κωδικός ανάκτησης διαχειριστή. Παρακαλώ ελέγξτε τον κωδικό και δοκιμάστε ξανά.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Το σύστημα δεν υποστηρίζει αλλαγή κωδικού, αλλά το κλειδί κρυπτογράφησης του χρήστη ενημερώθηκε επιτυχώς.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "εγκατάσταση και ενημέρωση εφαρμογών μέσω του καταστήματος εφαρμογών ή του ", + "Federated Cloud Sharing" : "Διαμοιρασμός σε ομόσπονδα σύννεφα ", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "Το cURL χρησιμοποιεί μια παρωχημένη %1$s έκδοση (%2$s). Παρακαλούμε αναβαθμίστε το λειτουργικό σας σύστημα αλλιώς δυνατότητες όπως %3$s δεν θα δουλέψουν αξιόπιστα.", + "Invalid SMTP password." : "Μη έγκυρο συνθηματικό SMTP.", + "Email setting test" : "Δοκιμή ρυθμίσεων email", + "Well done, %s!" : "Συγχαρητήρια, %s!", + "If you received this email, the email configuration seems to be correct." : "Εάν λάβατε αυτό το μήνυμα ηλεκτρονικού ταχυδρομείου, ", + "Email could not be sent. Check your mail server log" : "Το μήνυμα ηλεκτρονικού ταχυδρομείου δεν εστάλη. Ελέγξτε το αρχείο καταγραφής.", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Παρουσιάστηκε σφάλμα κατά την αποστολή e-mail. Παρακαλώ ελέγξτε τις ρυθμίσεις σας.(Error: %s)", + "You need to set your user email before being able to send test emails." : "Πρέπει να ορίσετε το email του χρήστη πριν να είστε σε θέση να στείλετε δοκιμαστικά emails.", + "Invalid mail address" : "Μη έγκυρη διεύθυνση ταχυδρομείου.", + "Settings saved" : "Οι ρυθμίσεις αποθηκεύτηκαν", + "Unable to change full name" : "Δεν ήταν δυνατή η αλλαγή του πλήρους ονόματός σας", + "Unable to change email address" : "Αδυναμία αλλαγής διεύθυνσης ηλεκτρονικής αλληλογραφίας", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Για να επιβεβαιώσετε τον λογαριασμό σας στο Twitter, δημοσιεύστε την παρακάτω δημοσίευση στο Twitter (σιγουρευτείτε ότι την δημοσιεύετε χωρίς χαρακτήρες αλλαγής γραμμής)", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Για να επιβεβαιώσουμε τον ιστότοπό σας, αποθηκεύστε το κάτωθι περιεχόμενο , στον κατάλογο '.well-known/CloudIdVerificationCode.txt' (παρακαλώ βεβαιωθείτε ότι ολόκληρο το κείμενο υπάρχει σε μια γραμμή):", + "%1$s changed your password on %2$s." : "%1$sάλλαξε το συνθηματικό σε %2$s.", + "Your password on %s was changed." : "Ο κωδικός πρόσβασης στο %s έχει αλλάξει.", + "Your password on %s was reset by an administrator." : "Έχει γίνει επαναφορά του κωδικού πρόσβασης στο %s από τον διαχειριστή.", + "Password for %1$s changed on %2$s" : "Ο κωδικός πρόσβασης για το %1$s άλλαξε σε %2$s", + "Password changed for %s" : "Το συνθηματικό άλλαξε για τον %s", + "If you did not request this, please contact an administrator." : "Εάν δεν το αιτηθήκατε, παρακαλούμε επικοινωνήστε με τον διαχειριστή.", + "Your email address on %s was changed." : "Η ηλεκτρονική σας διεύθυνση στο %s έχει αλλάξει.", + "Your email address on %s was changed by an administrator." : "Η διεύθυνση ηλεκτρονικής αλληλογραφίας στο %s άλλαξε από τον διαχειριστή.", + "Email address for %1$s changed on %2$s" : "Η διεύθυνση ηλεκτρονικού ταχυδρομείου για το %1$s άλλαξε σε %2$s", + "Email address changed for %s" : "Το συνθηματικό άλλαξε για τον %s", + "The new email address is %s" : "Η νέα διεύθυνση ηλεκτρονικής αλληλογραφίας είναι %s", + "Your %s account was created" : "Ο λογαριασμός %s δημιουργήθηκε", + "Welcome aboard" : "Καλώς ήλθατε", + "Welcome aboard %s" : "Καλώς ήλθατε %s", + "Your username is: %s" : "Το όνομα χρήστη σας είναι: %s", + "Set your password" : "Καθορισμός συνθηματικού", + "Go to %s" : "Πηγαίνετε στο %s", + "Install Client" : "Εγκατάσταση πελάτη", + "Create" : "Δημιουργία", + "Delete" : "Διαγραφή", + "Unlimited" : "Απεριόριστο", + "Verifying …" : "Γίνεται επαλήθευση ...", + "Verify" : "Επαλήθευση", + "Migration in progress. Please wait until the migration is finished" : "Μετάβαση σε εξέλιξη. Παρακαλούμε περιμένετε μέχρι να ολοκληρωθεί η μετάβαση", + "Migration started …" : "Η μετάβαση ξεκίνησε ...", + "Not saved" : "Δεν αποθηκεύτηκε", + "Sending…" : "Γινεται αποστολή...", + "Email sent" : "Το Email απεστάλη ", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Προέκυψε σφάλμα. Παρακαλούμε μεταφορτώστε ένα πιστοποιητικό PEM κωδικοποιημένο κατά ASCII.", + "Valid until {date}" : "Έγκυρο έως {date}", + "Local" : "Τοπικά", + "Private" : "Ιδιωτικά", + "Only visible to local users" : "Εμφανές μόνο σε τοπικούς χρήστες", + "Only visible to you" : "Εμφανές μόνο σε εσάς", + "Contacts" : "Επαφές", + "Visible to local users and to trusted servers" : "Προσθήκη στη λίστα των έμπιστων διακομιστών", + "Public" : "Δημόσιο", + "Will be synced to a global and public address book" : "Θα συγχρονιστεί με παγκόσμιο και δημόσιο βιβλίο διευθύνσεων", + "Very weak password" : "Πολύ αδύναμο συνθηματικό", + "Weak password" : "Αδύναμο συνθηματικό", + "So-so password" : "Μέτριο συνθηματικό", + "Good password" : "Καλό συνθηματικό", + "Strong password" : "Δυνατό συνθηματικό", + "Select a profile picture" : "Επιλογή εικόνας προφίλ", + "Week starts on {fdow}" : "Η εβδομάδα ξεκινά την {fdow}", + "Groups" : "Ομάδες", + "Group list is empty" : "Η λίστα της ομάδας είναι κενή", + "Unable to retrieve the group list" : "Αδύνατη η ανάκτηση λίστας της ομάδας", + "Afrikaans (Namibia)" : "Αφρικανικά (Ναμίμπια)", + "Afrikaans (South Africa)" : "Αφρικανικά (Νότια Αφρική)", + "Afrikaans" : "Αφρικανικά", + "Akan (Ghana)" : "Ακάν (Γκάνα)", + "Akan" : "Ακάν", + "Albanian (Albania)" : "Αλβανικά (Αλβανία)", + "Albanian" : "Αλβανικά", + "Amharic (Ethiopia)" : "Αμχαρικά (Αιθιοπία)", + "Amharic" : "Αμχαρικά", + "Arabic (Algeria)" : "Αραβικά (Αλγερία)", + "Arabic (Bahrain)" : "Αραβικά (Μπαχρέιν)", + "Arabic (Egypt)" : "Αραβικά (Αίγυπτος)", + "Arabic (Iraq)" : "Αραβικά (Ιράκ)", + "Arabic (Jordan)" : "Αραβικά (Ιορδανία)", + "Arabic (Kuwait)" : "Αραβικά (Κουβέιτ)", + "Arabic (Lebanon)" : "Αραβικά (Λίβανο)", + "Arabic (Libya)" : "Αραβικά (Λιβύη)", + "Arabic (Morocco)" : "Αραβικά (Μαρόκο)", + "Arabic (Oman)" : "Αραβικά (Ομάν)", + "Arabic (Qatar)" : "Αραβικά (Κατάρ)", + "Arabic (Saudi Arabia)" : "Αραβικά (Σαουδική Αραβία)", + "Arabic (Sudan)" : "Αραβικά (Σουδάν)", + "Arabic (Syria)" : "Αραβικά (Συρία)", + "Arabic (Tunisia)" : "Αραβικά (Τυνησία)", + "English (United Kingdom)" : "Αγγλικά (Ηνωμένο Βασίλειο)", + "English (United States)" : "Αγγλικά (Η.Π.Α.)", + "German (Austria)" : "Γερμανικά (Αυστρία)", + "German (Belgium)" : "Γερμανικά (Βέλγιο)", + "German (Germany)" : "Γερμανικά (Γερμανία)", + "German (Liechtenstein)" : "Γερμανικά (Λιχτενστάιν)", + "German (Luxembourg)" : "Γερμανικά (Λουξεμβούργο)", + "German (Switzerland)" : "Γερμανικά (Ελβετία)", + "German" : "Γερμανικά", + "Limit to groups" : "Όριο στις ομάδες", + "Save changes" : "Αποθήκευση αλλαγών", + "Device settings" : "Ρυθμίσεις συσκευής", + "Rename" : "Μετονομασία", + "Revoke" : "Ανάκληση", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome για Android", + "Sync client - {os}" : "Συγχρονισμός πελατών - {os}", + "This session" : "Αυτή η συνεδρία", + "Device" : "Συσκευή", + "Last activity" : "Τελευταία δραστηριότητα", + "Web, desktop and mobile clients currently logged in to your account." : " ", + "Error while creating device token" : "Σφάλμα κατά τη δημιουργία διακριτικού συσκευής", + "Error while deleting the token" : "Σφάλμα κατά την διαγραφή του διακριτικού", + "App name" : "Όνομα εφαρμογής", + "Create new app password" : "Δημιουργία νέου συνθηματικού εφαρμογής", + "Use the credentials below to configure your app or device." : "Χρησιμοποιήστε τα παρακάτω διαπιστευτήρια για να ρυθμίσετε την εφαρμογή ή την συσκευή σας.", + "For security reasons this password will only be shown once." : "Για λόγους ασφαλείας αυτό το συνθηματικό θα εμφανιστεί μόνο μια φορά.", + "Username" : "Όνομα χρήστη", + "Password" : "Συνθηματικό", + "Done" : "Ολοκληρώθηκε", + "Copied!" : "Αντιγράφτηκε!", + "Copy" : "Αντιγραφή", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Οι επίσημες εφαρμογές αναπτύσσονται μέσα από την κοινότητα. Προσφέρουν κεντρική λειτουργικότητα και είναι έτοιμες για παραγωγική χρήση. ", + "Official" : "Επίσημο", + "by" : "από", + "Remove" : "Αφαίρεση", + "Disable" : "Απενεργοποίηση", + "All" : "Όλες", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Αυτή η εφαρμογή δεν έχει ελάχιστη έκδοση του Nextcloud ανατεθειμένη. Αυτό θα αποτελεί σφάλμα στο μέλλον.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Αυτή η εφαρμογή δεν έχει μέγιστη έκδοση του Nextcloud ανατεθειμένη. Αυτό θα αποτελεί σφάλμα στο μέλλον.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Αυτή η εφαρμογή δεν μπορεί να εγκατασταθεί διότι δεν εκπληρώνονται οι ακόλουθες εξαρτήσεις:", + "View in store" : "Προβολή στο κέντρο εφαρμογών", + "Visit website" : "Επισκεφθείτε την ιστοσελίδα", + "Report a bug" : "Αναφέρετε σφάλμα", + "User documentation" : "Τεκμηρίωση Χρήστη", + "Admin documentation" : "Τεκμηρίωση Διαχειριστή", + "Developer documentation" : "Τεκμηρίωση προγραμματιστή", + "No apps found for your version" : "Δεν βρέθηκαν εφαρμογές για αυτή την έκδοση", + "Enable all" : "Ενεργοποίηση όλων", + "Enable" : "Ενεργοποίηση", + "The app will be downloaded from the app store" : "Αυτή η εφαρμογή θα ", + "New password" : "Νέο συνθηματικό", + "Add user in group" : "Προσθήκη χρήστη στην ομάδα", + "Set user as admin for" : "Ορισμός χρήστη ως διαχειριστή για", + "Select user quota" : "Επιλογή χωρητικότητας χρήστη", + "No language set" : "Δεν ορίστηκε γλώσσα", + "Never" : "Ποτέ", + "Delete user" : "Διαγραφή χρήστη", + "Enable user" : "Ενεργοποίηση χρήστη", + "{size} used" : "{μέγεθος} που χρησιμοποιείται", + "Welcome mail sent!" : "Απεστάλη το μήνυμα καλωσορίσματος!", + "Email" : "Ηλεκτρονικό ταχυδρομείο", + "Group admin for" : "Ομαδα διαχειριστή για", + "Quota" : "Σύνολο Χώρου", + "Language" : "Γλώσσα", + "Storage location" : "Τοποθεσία αποθηκευτικού χώρου", + "User backend" : "Σύστημα υποστήριξης χρήστη", + "Last login" : "Τελευταία είσοδος", + "Add a new user" : "Προσθήκη νέου χρήστη", + "Default quota" : "Προεπιλέγμενη χωρητικότητα", + "Your apps" : "Οι εφαρμογές σας", + "Disabled apps" : "Απενεργοποιημένες εφαρμογές", + "Updates" : "Ενημερώσεις", + "App bundles" : "Πακέτα εφαρμογών", + "Select default quota" : "Επιλογή προεπιλεγμένης χωρητικότητας", + "Show Languages" : "Εμφάνιση γλωσσών", + "Show last login" : "Εμφάνιση τελευταιας σύνδεσης", + "Show user backend" : "Εμφάνιση χρήστη συστήματος υποστήριξης", + "Admins" : "Διαχειριστές", + "Everyone" : "Όλοι", + "Add group" : "Προσθήκη ομάδας", + "App update" : "Ενημέρωση εφαρμογής", + "SSL Root Certificates" : "Πιστοποιητικά SSL του Root", + "Common Name" : "Κοινό Όνομα", + "Valid until" : "Έγκυρο έως", + "Issued By" : "Έκδόθηκε από", + "Valid until %s" : "Έγκυρο έως %s", + "Import root certificate" : "Εισαγωγή Πιστοποιητικού Root", + "Administrator documentation" : "Τεκμηρίωση Διαχειριστή", + "Forum" : "Φόρουμ", + "None" : "Τίποτα", + "Login" : "Σύνδεση", + "Plain" : "Απλό", + "NT LAN Manager" : "Διαχειριστης NT LAN", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Διακομιστής Email", + "Open documentation" : "Άνοιγμα τεκμηρίωσης.", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Είναι σημαντικό ", + "Send mode" : "Κατάσταση αποστολής", + "Encryption" : "Κρυπτογράφηση", + "From address" : "Από τη διεύθυνση", + "mail" : "ταχυδρομείο", + "Authentication method" : "Μέθοδος πιστοποίησης", + "Authentication required" : "Απαιτείται πιστοποίηση", + "Server address" : "Διεύθυνση διακομιστή", + "Port" : "Θύρα", + "Credentials" : "Πιστοποιητικά", + "SMTP Username" : "Όνομα χρήστη SMTP", + "SMTP Password" : "Συνθηματικό SMTP", + "Test email settings" : "Δοκιμή ρυθμίσεων email", + "Send email" : "Αποστολή email", + "Security & setup warnings" : "Προειδοποιήσεις ασφάλειας & ρυθμίσεων", + "All checks passed." : "Όλοι οι έλεγχοι επιτυχείς.", + "There are some errors regarding your setup." : "Υπάρχουν μερικά σφάλματα σχετικά με τις ρυθμίσεις σας.", + "Version" : "Έκδοση", + "Server-side encryption" : "Κρυπτογράφηση από τον Διακομιστή", + "Enable server-side encryption" : "Ενεργοποίηση κρυπτογράφησης από το διακομιστή", + "Please read carefully before activating server-side encryption: " : "Παρακαλούμε διαβάστε προσεκτικά πριν ενεργοποιήσετε την κρυπτογράφηση στο διακομιστή:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Μόλις ενεργοποιηθεί η κρυπτογράφηση, όλα τα αρχεία που θα μεταφορτωθούν από αυτό το σημείο και μετά θα κρυπτογραφηθούν στο διακομιστή. Η κρυπτογράφηση είναι δυνατόν να απενεργοποιηθεί αργότερα μόνο αν το ενεργό άρθρωμα κρυπτογράφησης υποστηρίζει αυτή τη λειτουργία και εκπληρούνται όλες οι προϋποθέσεις (πχ ορισμός κλειδιού ανάκτησης).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Η κρυπτογράφηση από μόνη της δεν εγγυάται την ασφάλεια του συστήματος. Για περισσότερες πληροφορίες σχετικά με τον τρόπο λειτουργίας της εφαρμογής κρυπτογράφησης και τις υποστηριζόμενες περιπτώσεις χρήσης, ανατρέξτε στην τεκμηρίωση.", + "Be aware that encryption always increases the file size." : "Έχετε στο νου σας πως η κρυπτογράφηση πάντα αυξάνει το μέγεθος του αρχείου", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Είναι πάντοτε καλό να δημιουργείτε τακτικά αντίγραφα ασφαλείας των δεδομένων σας, στην περίπτωση της κρυπτογράφησης βεβαιωθείτε ότι έχετε λάβει αντίγραφο ασφαλείας των κλειδιών κρυπτογράφησης παράλληλα με τα δεδομένα σας.", + "This is the final warning: Do you really want to enable encryption?" : "Αυτή είναι η τελευταία προειδοποίηση: Θέλετε πραγματικά να ενεργοποιήσετε την κρυπτογράφηση;", + "Enable encryption" : "Ενεργοποίηση κρυπτογράφησης", + "No encryption module loaded, please enable an encryption module in the app menu." : "Δεν έχει φορτωθεί μονάδα κρυπτογράφησης, παρακαλούμε φορτώστε μια μονάδα κρυπτογράφησης από το μενού εφαρμογών.", + "Select default encryption module:" : "Επιλογή προεπιλεγμένης μονάδας κρυπτογράφησης:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Πρέπει να μεταφέρετε τα κλειδιά κρυπτογράφησής σας από την παλιά κρυπτογράφηση (ownCloud <= 8.0) στην καινούρια. Παρακαλούμε ενεργοποιήστε την \"Προεπιλεγμένη Μονάδα Κρυπτογράφησης\" και εκτελέστε την εντολή 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Πρέπει να μεταφέρετε τα κλειδιά σας κρυπτογράφησης από την παλιά κρυπτογράφηση (ownCloud <= 8.0) στην καινούρια.", + "Start migration" : "Έναρξη μετάβασης", + "Background jobs" : "Εργασίες παρασκηνίου", + "Pick background job setting" : "Επιλέξτε τη ρύθμιση εργασίας φόντου", + "Execute one task with each page loaded" : "Εκτελεί μια διεργασία κάθε φορά που φορτώνεται μια σελίδα", + "The cron.php needs to be executed by the system user \"%s\"." : "Το cron.php πρέπει να εκτελεστεί από τον χρήστη του συστήματος \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Για να τρέξετε αυτό χρειάζεστε την επέκταση PHP POSIX. Δείτε {linkstart} PHP τεκμηρίωση {linked} για περισσότερες λεπτομέρειες.", + "Sharing" : "Διαμοιρασμός", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Ως διαχειριστής μπορείτε να ρυθμίσετε λεπτομερώς την συμπεριφορά διαμοιρασμού.\nΠαρακαλούμε ανατρέξτε στην τεκμηρίωση για περισσότερες πληροφορίες.", + "Allow apps to use the Share API" : "Επιτρέπει την χρήση του API διαμοιρασμού σε εφαρμογές ", + "Allow users to share via link" : "Να επιτρέπεται σε χρήστες ο διαμοιρασμός μέσω συνδέσμου", + "Allow public uploads" : "Επιτρέπεται το κοινόχρηστο ανέβασμα", + "Always ask for a password" : "Ερώτηση συνθηματικού πάντα", + "Enforce password protection" : "Επιβολή προστασίας με κωδικό", + "Set default expiration date" : "Ορισμός ερήμην ημερομηνίας λήξης", + "Expire after " : "Λήξη μετά από", + "days" : "ημέρες", + "Enforce expiration date" : "Επιβολή της ημερομηνίας λήξης", + "Allow resharing" : "Επιτρέπεται ο επαναδιαμοιρασμός", + "Allow sharing with groups" : "Να επιτρέπεται ο διαμοιρασμός με ομάδες", + "Restrict users to only share with users in their groups" : "Να επιτρέπεται σε χρήστες ο διαμοιρασμός μόνο με χρήστες που ανήκουν στις ομάδες τους", + "Exclude groups from sharing" : "Εξαίρεση ομάδων από τον διαμοιρασμό", + "These groups will still be able to receive shares, but not to initiate them." : "Αυτές οι ομάδες θα συνεχίσουν να λαμβάνουν διαμοιρασμούς, αλλά δεν θα είναι δυνατό να τους δημιουργήσουν.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Να επιτρέπεται η χρήση αυτόματης συμπλήρωσης του ονόματος χρήστη στο πεδίο διαμοιρασμού. Αν η ρύθμιση αυτή είναι απενεργοποιημένη θα πρέπει να εισαχθεί το πλήρες όνομα χρήστη ή το email του. ", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Εμφάνιση κειμένου αποποίησης ευθυνών στη σελίδα δημοσίευσης συνδέσμων. (Εμφανίζεται μόνο όταν η λίστα αρχείων είναι κρυφή.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Αυτό το κείμενο θα ", + "Like our Facebook page" : "Ακολουθήστε μας στην σελίδα μας στο facebook!", + "Follow us on Twitter" : "Ακολουθήστε μας στο Twitter", + "Check out our blog" : "Επισκεφθείτε το ιστολόγιό μας!", + "Subscribe to our newsletter" : "Εγγραφείτε στο ενημερωτικό δελτίο μας!", + "Profile picture" : "Φωτογραφία προφίλ", + "Upload new" : "Μεταφόρτωση νέου", + "Select from Files" : "Επιλογή από τα Αρχεία", + "Remove image" : "Αφαίρεση εικόνας", + "png or jpg, max. 20 MB" : "png ή jpg, μεγ. 20 MB", + "Picture provided by original account" : "Φωτογραφία που παρέχεται από τον πρωτότυπο λογαριασμό", + "Cancel" : "Άκυρο", + "Choose as profile picture" : "Επιλέξτε εικόνα προφίλ", + "Details" : "Λεπτομέρειες", + "Full name" : "Πλήρες όνομα", + "No display name set" : "Δεν ορίστηκε όνομα", + "Your email address" : "Η διεύθυνση ηλ. ταχυδρομείου σας", + "No email address set" : "Δεν ορίστηκε διεύθυνση email", + "For password reset and notifications" : "Για ανάκτηση συνθηματικού και ειδοποιήσεις", + "Phone number" : "Αριθμός τηλεφώνου", + "Your phone number" : "Ο αριθμός τηλεφώνου σας", + "Address" : "Διεύθυνση", + "Your postal address" : "Ο ταχυδρομικός σας κώδικας", + "Website" : "Ιστοσελίδα", + "It can take up to 24 hours before the account is displayed as verified." : "Η επαλήθευση του λογαριασμού μπορεί να διαρκέσει έως και 24 ώρες.", + "Link https://…" : "Σύνδεσμος https://…", + "Twitter" : "Twitter", + "Help translate" : "Βοηθήστε στη μετάφραση", + "Current password" : "Τρέχων συνθηματικό", + "Change password" : "Αλλαγή συνθηματικού", + "Use a second factor besides your password to increase security for your account." : "Χρησιμοποιείστε έναν δεύτερο παράγοντα εκτός του κωδικού πρόσβασης για να αυξήσετε την ασφάλεια του λογαριαμού σας.", + "Store credentials" : "Διαπιστευτήρια αποθήκευσης", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "Το cron.php είναι καταχωρημένο σε μια υπηρεσία webcron ώστε να καλεί το cron.php κάθε 15 λεπτά μέσω HTTP.", + "Use system cron service to call the cron.php file every 15 minutes." : "Χρησιμοποιήστε την cron υπηρεσία του συστήματος για να καλέσετε το cron.php αρχείο κάθε 15 λεπτά." +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/el.json b/apps/settings/l10n/el.json new file mode 100644 index 00000000000..0e8ee74a43d --- /dev/null +++ b/apps/settings/l10n/el.json @@ -0,0 +1,312 @@ +{ "translations": { + "{actor} added you to group {group}" : "{actor} σας πρόσθεσε στην ομάδα {group}", + "You added {user} to group {group}" : "Προσθέσατε τον χρήστη {user} στην ομάδα {group}", + "{actor} added {user} to group {group}" : "{actor} πρόσθεσε τον χρήστη {user} στην ομάδα {group}", + "An administrator added you to group {group}" : "Ένας διαχειριστής σάς πρόσθεσε στην ομάδα {group}", + "An administrator added {user} to group {group}" : "Ένας διαχειριστής πρόσθεσε τον χρήστη {user} στην ομάδα {group}", + "{actor} removed you from group {group}" : "{actor} σάς αφαίρεσε από την ομάδα {group}", + "You removed {user} from group {group}" : "Αφαιρέσατε τον χρήστη {user} από την ομάδα {group}", + "{actor} removed {user} from group {group}" : "{actor} αφαίρεσε τον χρήστη {user} από την ομάδα {group}", + "An administrator removed you from group {group}" : "Ένας διαχειριστής σάς αφαίρεσε από την ομάδα {group}", + "An administrator removed {user} from group {group}" : "Ένας διαχειριστής αφαίρεσε τον χρήστη {user} από την ομάδα {group}", + "{actor} changed your password" : "{actor} το συθηματικό σας άλλαξε", + "You changed your password" : "Αλλάξατε το συνθηματικό σας", + "Your password was reset by an administrator" : "Έχει γίνει επαναφορά του συνθηματικού σας από τον διαχειριστή", + "{actor} changed your email address" : "{actor} άλλαξε τη διεύθυνσή του ηλεκτρονικού ταχυδρομείου σας", + "You changed your email address" : "Έχετε αλλάξει τη διεύθυνση ηλεκτρονικού ταχυδρομείου σας", + "Your email address was changed by an administrator" : "Η διεύθυνση ηλεκτρονικής αλληλογραφίας άλλαξε από τον διαχειριστή", + "Security" : "Ασφάλεια", + "You successfully logged in using two-factor authentication (%1$s)" : "Έχετε συνδεθεί επιτυχώς με τη χρήση ελέγχου ταυτότητας δύο-παραγόντων (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Μία προσπάθεια σύνδεσης με τη χρήση ελέγχου ταυτότητας δύο-παραγόντων απέτυχε (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Ο δικός σας <ισχυρός>κωδικός πρόσβασης</ισχυρός>ή<ισχυρός>αλληλογραφίας</ισχυρός>τροποποιήθηκε", + "Couldn't remove app." : "Αδυναμία αφαίρεσης εφαρμογής.", + "Couldn't update app." : "Αδυναμία ενημέρωσης εφαρμογής", + "Wrong password" : "Εσφαλμένο συνθηματικό", + "Saved" : "Αποθηκεύτηκαν", + "No user supplied" : "Δεν εισήχθη χρήστης", + "Unable to change password" : "Αδυναμία αλλαγής συνθηματικού", + "Authentication error" : "Σφάλμα πιστοποίησης", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Παρακαλώ παρέχετε έναν κωδικό ανάκτησης διαχειριστή, διαφορετικά όλα τα δεδομένα χρήστη θα χαθούν.", + "Wrong admin recovery password. Please check the password and try again." : "Λάθος κωδικός ανάκτησης διαχειριστή. Παρακαλώ ελέγξτε τον κωδικό και δοκιμάστε ξανά.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Το σύστημα δεν υποστηρίζει αλλαγή κωδικού, αλλά το κλειδί κρυπτογράφησης του χρήστη ενημερώθηκε επιτυχώς.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "εγκατάσταση και ενημέρωση εφαρμογών μέσω του καταστήματος εφαρμογών ή του ", + "Federated Cloud Sharing" : "Διαμοιρασμός σε ομόσπονδα σύννεφα ", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "Το cURL χρησιμοποιεί μια παρωχημένη %1$s έκδοση (%2$s). Παρακαλούμε αναβαθμίστε το λειτουργικό σας σύστημα αλλιώς δυνατότητες όπως %3$s δεν θα δουλέψουν αξιόπιστα.", + "Invalid SMTP password." : "Μη έγκυρο συνθηματικό SMTP.", + "Email setting test" : "Δοκιμή ρυθμίσεων email", + "Well done, %s!" : "Συγχαρητήρια, %s!", + "If you received this email, the email configuration seems to be correct." : "Εάν λάβατε αυτό το μήνυμα ηλεκτρονικού ταχυδρομείου, ", + "Email could not be sent. Check your mail server log" : "Το μήνυμα ηλεκτρονικού ταχυδρομείου δεν εστάλη. Ελέγξτε το αρχείο καταγραφής.", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Παρουσιάστηκε σφάλμα κατά την αποστολή e-mail. Παρακαλώ ελέγξτε τις ρυθμίσεις σας.(Error: %s)", + "You need to set your user email before being able to send test emails." : "Πρέπει να ορίσετε το email του χρήστη πριν να είστε σε θέση να στείλετε δοκιμαστικά emails.", + "Invalid mail address" : "Μη έγκυρη διεύθυνση ταχυδρομείου.", + "Settings saved" : "Οι ρυθμίσεις αποθηκεύτηκαν", + "Unable to change full name" : "Δεν ήταν δυνατή η αλλαγή του πλήρους ονόματός σας", + "Unable to change email address" : "Αδυναμία αλλαγής διεύθυνσης ηλεκτρονικής αλληλογραφίας", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Για να επιβεβαιώσετε τον λογαριασμό σας στο Twitter, δημοσιεύστε την παρακάτω δημοσίευση στο Twitter (σιγουρευτείτε ότι την δημοσιεύετε χωρίς χαρακτήρες αλλαγής γραμμής)", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Για να επιβεβαιώσουμε τον ιστότοπό σας, αποθηκεύστε το κάτωθι περιεχόμενο , στον κατάλογο '.well-known/CloudIdVerificationCode.txt' (παρακαλώ βεβαιωθείτε ότι ολόκληρο το κείμενο υπάρχει σε μια γραμμή):", + "%1$s changed your password on %2$s." : "%1$sάλλαξε το συνθηματικό σε %2$s.", + "Your password on %s was changed." : "Ο κωδικός πρόσβασης στο %s έχει αλλάξει.", + "Your password on %s was reset by an administrator." : "Έχει γίνει επαναφορά του κωδικού πρόσβασης στο %s από τον διαχειριστή.", + "Password for %1$s changed on %2$s" : "Ο κωδικός πρόσβασης για το %1$s άλλαξε σε %2$s", + "Password changed for %s" : "Το συνθηματικό άλλαξε για τον %s", + "If you did not request this, please contact an administrator." : "Εάν δεν το αιτηθήκατε, παρακαλούμε επικοινωνήστε με τον διαχειριστή.", + "Your email address on %s was changed." : "Η ηλεκτρονική σας διεύθυνση στο %s έχει αλλάξει.", + "Your email address on %s was changed by an administrator." : "Η διεύθυνση ηλεκτρονικής αλληλογραφίας στο %s άλλαξε από τον διαχειριστή.", + "Email address for %1$s changed on %2$s" : "Η διεύθυνση ηλεκτρονικού ταχυδρομείου για το %1$s άλλαξε σε %2$s", + "Email address changed for %s" : "Το συνθηματικό άλλαξε για τον %s", + "The new email address is %s" : "Η νέα διεύθυνση ηλεκτρονικής αλληλογραφίας είναι %s", + "Your %s account was created" : "Ο λογαριασμός %s δημιουργήθηκε", + "Welcome aboard" : "Καλώς ήλθατε", + "Welcome aboard %s" : "Καλώς ήλθατε %s", + "Your username is: %s" : "Το όνομα χρήστη σας είναι: %s", + "Set your password" : "Καθορισμός συνθηματικού", + "Go to %s" : "Πηγαίνετε στο %s", + "Install Client" : "Εγκατάσταση πελάτη", + "Create" : "Δημιουργία", + "Delete" : "Διαγραφή", + "Unlimited" : "Απεριόριστο", + "Verifying …" : "Γίνεται επαλήθευση ...", + "Verify" : "Επαλήθευση", + "Migration in progress. Please wait until the migration is finished" : "Μετάβαση σε εξέλιξη. Παρακαλούμε περιμένετε μέχρι να ολοκληρωθεί η μετάβαση", + "Migration started …" : "Η μετάβαση ξεκίνησε ...", + "Not saved" : "Δεν αποθηκεύτηκε", + "Sending…" : "Γινεται αποστολή...", + "Email sent" : "Το Email απεστάλη ", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Προέκυψε σφάλμα. Παρακαλούμε μεταφορτώστε ένα πιστοποιητικό PEM κωδικοποιημένο κατά ASCII.", + "Valid until {date}" : "Έγκυρο έως {date}", + "Local" : "Τοπικά", + "Private" : "Ιδιωτικά", + "Only visible to local users" : "Εμφανές μόνο σε τοπικούς χρήστες", + "Only visible to you" : "Εμφανές μόνο σε εσάς", + "Contacts" : "Επαφές", + "Visible to local users and to trusted servers" : "Προσθήκη στη λίστα των έμπιστων διακομιστών", + "Public" : "Δημόσιο", + "Will be synced to a global and public address book" : "Θα συγχρονιστεί με παγκόσμιο και δημόσιο βιβλίο διευθύνσεων", + "Very weak password" : "Πολύ αδύναμο συνθηματικό", + "Weak password" : "Αδύναμο συνθηματικό", + "So-so password" : "Μέτριο συνθηματικό", + "Good password" : "Καλό συνθηματικό", + "Strong password" : "Δυνατό συνθηματικό", + "Select a profile picture" : "Επιλογή εικόνας προφίλ", + "Week starts on {fdow}" : "Η εβδομάδα ξεκινά την {fdow}", + "Groups" : "Ομάδες", + "Group list is empty" : "Η λίστα της ομάδας είναι κενή", + "Unable to retrieve the group list" : "Αδύνατη η ανάκτηση λίστας της ομάδας", + "Afrikaans (Namibia)" : "Αφρικανικά (Ναμίμπια)", + "Afrikaans (South Africa)" : "Αφρικανικά (Νότια Αφρική)", + "Afrikaans" : "Αφρικανικά", + "Akan (Ghana)" : "Ακάν (Γκάνα)", + "Akan" : "Ακάν", + "Albanian (Albania)" : "Αλβανικά (Αλβανία)", + "Albanian" : "Αλβανικά", + "Amharic (Ethiopia)" : "Αμχαρικά (Αιθιοπία)", + "Amharic" : "Αμχαρικά", + "Arabic (Algeria)" : "Αραβικά (Αλγερία)", + "Arabic (Bahrain)" : "Αραβικά (Μπαχρέιν)", + "Arabic (Egypt)" : "Αραβικά (Αίγυπτος)", + "Arabic (Iraq)" : "Αραβικά (Ιράκ)", + "Arabic (Jordan)" : "Αραβικά (Ιορδανία)", + "Arabic (Kuwait)" : "Αραβικά (Κουβέιτ)", + "Arabic (Lebanon)" : "Αραβικά (Λίβανο)", + "Arabic (Libya)" : "Αραβικά (Λιβύη)", + "Arabic (Morocco)" : "Αραβικά (Μαρόκο)", + "Arabic (Oman)" : "Αραβικά (Ομάν)", + "Arabic (Qatar)" : "Αραβικά (Κατάρ)", + "Arabic (Saudi Arabia)" : "Αραβικά (Σαουδική Αραβία)", + "Arabic (Sudan)" : "Αραβικά (Σουδάν)", + "Arabic (Syria)" : "Αραβικά (Συρία)", + "Arabic (Tunisia)" : "Αραβικά (Τυνησία)", + "English (United Kingdom)" : "Αγγλικά (Ηνωμένο Βασίλειο)", + "English (United States)" : "Αγγλικά (Η.Π.Α.)", + "German (Austria)" : "Γερμανικά (Αυστρία)", + "German (Belgium)" : "Γερμανικά (Βέλγιο)", + "German (Germany)" : "Γερμανικά (Γερμανία)", + "German (Liechtenstein)" : "Γερμανικά (Λιχτενστάιν)", + "German (Luxembourg)" : "Γερμανικά (Λουξεμβούργο)", + "German (Switzerland)" : "Γερμανικά (Ελβετία)", + "German" : "Γερμανικά", + "Limit to groups" : "Όριο στις ομάδες", + "Save changes" : "Αποθήκευση αλλαγών", + "Device settings" : "Ρυθμίσεις συσκευής", + "Rename" : "Μετονομασία", + "Revoke" : "Ανάκληση", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome για Android", + "Sync client - {os}" : "Συγχρονισμός πελατών - {os}", + "This session" : "Αυτή η συνεδρία", + "Device" : "Συσκευή", + "Last activity" : "Τελευταία δραστηριότητα", + "Web, desktop and mobile clients currently logged in to your account." : " ", + "Error while creating device token" : "Σφάλμα κατά τη δημιουργία διακριτικού συσκευής", + "Error while deleting the token" : "Σφάλμα κατά την διαγραφή του διακριτικού", + "App name" : "Όνομα εφαρμογής", + "Create new app password" : "Δημιουργία νέου συνθηματικού εφαρμογής", + "Use the credentials below to configure your app or device." : "Χρησιμοποιήστε τα παρακάτω διαπιστευτήρια για να ρυθμίσετε την εφαρμογή ή την συσκευή σας.", + "For security reasons this password will only be shown once." : "Για λόγους ασφαλείας αυτό το συνθηματικό θα εμφανιστεί μόνο μια φορά.", + "Username" : "Όνομα χρήστη", + "Password" : "Συνθηματικό", + "Done" : "Ολοκληρώθηκε", + "Copied!" : "Αντιγράφτηκε!", + "Copy" : "Αντιγραφή", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Οι επίσημες εφαρμογές αναπτύσσονται μέσα από την κοινότητα. Προσφέρουν κεντρική λειτουργικότητα και είναι έτοιμες για παραγωγική χρήση. ", + "Official" : "Επίσημο", + "by" : "από", + "Remove" : "Αφαίρεση", + "Disable" : "Απενεργοποίηση", + "All" : "Όλες", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Αυτή η εφαρμογή δεν έχει ελάχιστη έκδοση του Nextcloud ανατεθειμένη. Αυτό θα αποτελεί σφάλμα στο μέλλον.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Αυτή η εφαρμογή δεν έχει μέγιστη έκδοση του Nextcloud ανατεθειμένη. Αυτό θα αποτελεί σφάλμα στο μέλλον.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Αυτή η εφαρμογή δεν μπορεί να εγκατασταθεί διότι δεν εκπληρώνονται οι ακόλουθες εξαρτήσεις:", + "View in store" : "Προβολή στο κέντρο εφαρμογών", + "Visit website" : "Επισκεφθείτε την ιστοσελίδα", + "Report a bug" : "Αναφέρετε σφάλμα", + "User documentation" : "Τεκμηρίωση Χρήστη", + "Admin documentation" : "Τεκμηρίωση Διαχειριστή", + "Developer documentation" : "Τεκμηρίωση προγραμματιστή", + "No apps found for your version" : "Δεν βρέθηκαν εφαρμογές για αυτή την έκδοση", + "Enable all" : "Ενεργοποίηση όλων", + "Enable" : "Ενεργοποίηση", + "The app will be downloaded from the app store" : "Αυτή η εφαρμογή θα ", + "New password" : "Νέο συνθηματικό", + "Add user in group" : "Προσθήκη χρήστη στην ομάδα", + "Set user as admin for" : "Ορισμός χρήστη ως διαχειριστή για", + "Select user quota" : "Επιλογή χωρητικότητας χρήστη", + "No language set" : "Δεν ορίστηκε γλώσσα", + "Never" : "Ποτέ", + "Delete user" : "Διαγραφή χρήστη", + "Enable user" : "Ενεργοποίηση χρήστη", + "{size} used" : "{μέγεθος} που χρησιμοποιείται", + "Welcome mail sent!" : "Απεστάλη το μήνυμα καλωσορίσματος!", + "Email" : "Ηλεκτρονικό ταχυδρομείο", + "Group admin for" : "Ομαδα διαχειριστή για", + "Quota" : "Σύνολο Χώρου", + "Language" : "Γλώσσα", + "Storage location" : "Τοποθεσία αποθηκευτικού χώρου", + "User backend" : "Σύστημα υποστήριξης χρήστη", + "Last login" : "Τελευταία είσοδος", + "Add a new user" : "Προσθήκη νέου χρήστη", + "Default quota" : "Προεπιλέγμενη χωρητικότητα", + "Your apps" : "Οι εφαρμογές σας", + "Disabled apps" : "Απενεργοποιημένες εφαρμογές", + "Updates" : "Ενημερώσεις", + "App bundles" : "Πακέτα εφαρμογών", + "Select default quota" : "Επιλογή προεπιλεγμένης χωρητικότητας", + "Show Languages" : "Εμφάνιση γλωσσών", + "Show last login" : "Εμφάνιση τελευταιας σύνδεσης", + "Show user backend" : "Εμφάνιση χρήστη συστήματος υποστήριξης", + "Admins" : "Διαχειριστές", + "Everyone" : "Όλοι", + "Add group" : "Προσθήκη ομάδας", + "App update" : "Ενημέρωση εφαρμογής", + "SSL Root Certificates" : "Πιστοποιητικά SSL του Root", + "Common Name" : "Κοινό Όνομα", + "Valid until" : "Έγκυρο έως", + "Issued By" : "Έκδόθηκε από", + "Valid until %s" : "Έγκυρο έως %s", + "Import root certificate" : "Εισαγωγή Πιστοποιητικού Root", + "Administrator documentation" : "Τεκμηρίωση Διαχειριστή", + "Forum" : "Φόρουμ", + "None" : "Τίποτα", + "Login" : "Σύνδεση", + "Plain" : "Απλό", + "NT LAN Manager" : "Διαχειριστης NT LAN", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Διακομιστής Email", + "Open documentation" : "Άνοιγμα τεκμηρίωσης.", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Είναι σημαντικό ", + "Send mode" : "Κατάσταση αποστολής", + "Encryption" : "Κρυπτογράφηση", + "From address" : "Από τη διεύθυνση", + "mail" : "ταχυδρομείο", + "Authentication method" : "Μέθοδος πιστοποίησης", + "Authentication required" : "Απαιτείται πιστοποίηση", + "Server address" : "Διεύθυνση διακομιστή", + "Port" : "Θύρα", + "Credentials" : "Πιστοποιητικά", + "SMTP Username" : "Όνομα χρήστη SMTP", + "SMTP Password" : "Συνθηματικό SMTP", + "Test email settings" : "Δοκιμή ρυθμίσεων email", + "Send email" : "Αποστολή email", + "Security & setup warnings" : "Προειδοποιήσεις ασφάλειας & ρυθμίσεων", + "All checks passed." : "Όλοι οι έλεγχοι επιτυχείς.", + "There are some errors regarding your setup." : "Υπάρχουν μερικά σφάλματα σχετικά με τις ρυθμίσεις σας.", + "Version" : "Έκδοση", + "Server-side encryption" : "Κρυπτογράφηση από τον Διακομιστή", + "Enable server-side encryption" : "Ενεργοποίηση κρυπτογράφησης από το διακομιστή", + "Please read carefully before activating server-side encryption: " : "Παρακαλούμε διαβάστε προσεκτικά πριν ενεργοποιήσετε την κρυπτογράφηση στο διακομιστή:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Μόλις ενεργοποιηθεί η κρυπτογράφηση, όλα τα αρχεία που θα μεταφορτωθούν από αυτό το σημείο και μετά θα κρυπτογραφηθούν στο διακομιστή. Η κρυπτογράφηση είναι δυνατόν να απενεργοποιηθεί αργότερα μόνο αν το ενεργό άρθρωμα κρυπτογράφησης υποστηρίζει αυτή τη λειτουργία και εκπληρούνται όλες οι προϋποθέσεις (πχ ορισμός κλειδιού ανάκτησης).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Η κρυπτογράφηση από μόνη της δεν εγγυάται την ασφάλεια του συστήματος. Για περισσότερες πληροφορίες σχετικά με τον τρόπο λειτουργίας της εφαρμογής κρυπτογράφησης και τις υποστηριζόμενες περιπτώσεις χρήσης, ανατρέξτε στην τεκμηρίωση.", + "Be aware that encryption always increases the file size." : "Έχετε στο νου σας πως η κρυπτογράφηση πάντα αυξάνει το μέγεθος του αρχείου", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Είναι πάντοτε καλό να δημιουργείτε τακτικά αντίγραφα ασφαλείας των δεδομένων σας, στην περίπτωση της κρυπτογράφησης βεβαιωθείτε ότι έχετε λάβει αντίγραφο ασφαλείας των κλειδιών κρυπτογράφησης παράλληλα με τα δεδομένα σας.", + "This is the final warning: Do you really want to enable encryption?" : "Αυτή είναι η τελευταία προειδοποίηση: Θέλετε πραγματικά να ενεργοποιήσετε την κρυπτογράφηση;", + "Enable encryption" : "Ενεργοποίηση κρυπτογράφησης", + "No encryption module loaded, please enable an encryption module in the app menu." : "Δεν έχει φορτωθεί μονάδα κρυπτογράφησης, παρακαλούμε φορτώστε μια μονάδα κρυπτογράφησης από το μενού εφαρμογών.", + "Select default encryption module:" : "Επιλογή προεπιλεγμένης μονάδας κρυπτογράφησης:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Πρέπει να μεταφέρετε τα κλειδιά κρυπτογράφησής σας από την παλιά κρυπτογράφηση (ownCloud <= 8.0) στην καινούρια. Παρακαλούμε ενεργοποιήστε την \"Προεπιλεγμένη Μονάδα Κρυπτογράφησης\" και εκτελέστε την εντολή 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Πρέπει να μεταφέρετε τα κλειδιά σας κρυπτογράφησης από την παλιά κρυπτογράφηση (ownCloud <= 8.0) στην καινούρια.", + "Start migration" : "Έναρξη μετάβασης", + "Background jobs" : "Εργασίες παρασκηνίου", + "Pick background job setting" : "Επιλέξτε τη ρύθμιση εργασίας φόντου", + "Execute one task with each page loaded" : "Εκτελεί μια διεργασία κάθε φορά που φορτώνεται μια σελίδα", + "The cron.php needs to be executed by the system user \"%s\"." : "Το cron.php πρέπει να εκτελεστεί από τον χρήστη του συστήματος \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Για να τρέξετε αυτό χρειάζεστε την επέκταση PHP POSIX. Δείτε {linkstart} PHP τεκμηρίωση {linked} για περισσότερες λεπτομέρειες.", + "Sharing" : "Διαμοιρασμός", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Ως διαχειριστής μπορείτε να ρυθμίσετε λεπτομερώς την συμπεριφορά διαμοιρασμού.\nΠαρακαλούμε ανατρέξτε στην τεκμηρίωση για περισσότερες πληροφορίες.", + "Allow apps to use the Share API" : "Επιτρέπει την χρήση του API διαμοιρασμού σε εφαρμογές ", + "Allow users to share via link" : "Να επιτρέπεται σε χρήστες ο διαμοιρασμός μέσω συνδέσμου", + "Allow public uploads" : "Επιτρέπεται το κοινόχρηστο ανέβασμα", + "Always ask for a password" : "Ερώτηση συνθηματικού πάντα", + "Enforce password protection" : "Επιβολή προστασίας με κωδικό", + "Set default expiration date" : "Ορισμός ερήμην ημερομηνίας λήξης", + "Expire after " : "Λήξη μετά από", + "days" : "ημέρες", + "Enforce expiration date" : "Επιβολή της ημερομηνίας λήξης", + "Allow resharing" : "Επιτρέπεται ο επαναδιαμοιρασμός", + "Allow sharing with groups" : "Να επιτρέπεται ο διαμοιρασμός με ομάδες", + "Restrict users to only share with users in their groups" : "Να επιτρέπεται σε χρήστες ο διαμοιρασμός μόνο με χρήστες που ανήκουν στις ομάδες τους", + "Exclude groups from sharing" : "Εξαίρεση ομάδων από τον διαμοιρασμό", + "These groups will still be able to receive shares, but not to initiate them." : "Αυτές οι ομάδες θα συνεχίσουν να λαμβάνουν διαμοιρασμούς, αλλά δεν θα είναι δυνατό να τους δημιουργήσουν.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Να επιτρέπεται η χρήση αυτόματης συμπλήρωσης του ονόματος χρήστη στο πεδίο διαμοιρασμού. Αν η ρύθμιση αυτή είναι απενεργοποιημένη θα πρέπει να εισαχθεί το πλήρες όνομα χρήστη ή το email του. ", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Εμφάνιση κειμένου αποποίησης ευθυνών στη σελίδα δημοσίευσης συνδέσμων. (Εμφανίζεται μόνο όταν η λίστα αρχείων είναι κρυφή.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Αυτό το κείμενο θα ", + "Like our Facebook page" : "Ακολουθήστε μας στην σελίδα μας στο facebook!", + "Follow us on Twitter" : "Ακολουθήστε μας στο Twitter", + "Check out our blog" : "Επισκεφθείτε το ιστολόγιό μας!", + "Subscribe to our newsletter" : "Εγγραφείτε στο ενημερωτικό δελτίο μας!", + "Profile picture" : "Φωτογραφία προφίλ", + "Upload new" : "Μεταφόρτωση νέου", + "Select from Files" : "Επιλογή από τα Αρχεία", + "Remove image" : "Αφαίρεση εικόνας", + "png or jpg, max. 20 MB" : "png ή jpg, μεγ. 20 MB", + "Picture provided by original account" : "Φωτογραφία που παρέχεται από τον πρωτότυπο λογαριασμό", + "Cancel" : "Άκυρο", + "Choose as profile picture" : "Επιλέξτε εικόνα προφίλ", + "Details" : "Λεπτομέρειες", + "Full name" : "Πλήρες όνομα", + "No display name set" : "Δεν ορίστηκε όνομα", + "Your email address" : "Η διεύθυνση ηλ. ταχυδρομείου σας", + "No email address set" : "Δεν ορίστηκε διεύθυνση email", + "For password reset and notifications" : "Για ανάκτηση συνθηματικού και ειδοποιήσεις", + "Phone number" : "Αριθμός τηλεφώνου", + "Your phone number" : "Ο αριθμός τηλεφώνου σας", + "Address" : "Διεύθυνση", + "Your postal address" : "Ο ταχυδρομικός σας κώδικας", + "Website" : "Ιστοσελίδα", + "It can take up to 24 hours before the account is displayed as verified." : "Η επαλήθευση του λογαριασμού μπορεί να διαρκέσει έως και 24 ώρες.", + "Link https://…" : "Σύνδεσμος https://…", + "Twitter" : "Twitter", + "Help translate" : "Βοηθήστε στη μετάφραση", + "Current password" : "Τρέχων συνθηματικό", + "Change password" : "Αλλαγή συνθηματικού", + "Use a second factor besides your password to increase security for your account." : "Χρησιμοποιείστε έναν δεύτερο παράγοντα εκτός του κωδικού πρόσβασης για να αυξήσετε την ασφάλεια του λογαριαμού σας.", + "Store credentials" : "Διαπιστευτήρια αποθήκευσης", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "Το cron.php είναι καταχωρημένο σε μια υπηρεσία webcron ώστε να καλεί το cron.php κάθε 15 λεπτά μέσω HTTP.", + "Use system cron service to call the cron.php file every 15 minutes." : "Χρησιμοποιήστε την cron υπηρεσία του συστήματος για να καλέσετε το cron.php αρχείο κάθε 15 λεπτά." +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} \ No newline at end of file diff --git a/apps/settings/l10n/en_GB.js b/apps/settings/l10n/en_GB.js new file mode 100644 index 00000000000..62b72685b8c --- /dev/null +++ b/apps/settings/l10n/en_GB.js @@ -0,0 +1,270 @@ +OC.L10N.register( + "settings", + { + "{actor} changed your password" : "{actor} changed your password", + "You changed your password" : "You changed your password", + "Your password was reset by an administrator" : "Your password was reset by an administrator", + "{actor} changed your email address" : "{actor} changed your email address", + "You changed your email address" : "You changed your email address", + "Your email address was changed by an administrator" : "Your email address was changed by an administrator", + "Security" : "Security", + "You successfully logged in using two-factor authentication (%1$s)" : "You successfully logged in using two-factor authentication (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "A login attempt using two-factor authentication failed (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Your <strong>password</strong> or <strong>email</strong> was modified", + "Couldn't remove app." : "Couldn't remove app.", + "Couldn't update app." : "Couldn't update app.", + "Wrong password" : "Incorrect password", + "Saved" : "Saved", + "No user supplied" : "No user supplied", + "Unable to change password" : "Unable to change password", + "Authentication error" : "Authentication error", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Please provide an admin recovery password; otherwise, all user data will be lost.", + "Wrong admin recovery password. Please check the password and try again." : "Incorrect admin recovery password. Please check the password and try again.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Backend doesn't support password change, but the user's encryption key was updated.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "installing and updating apps via the app store or Federated Cloud Sharing", + "Federated Cloud Sharing" : "Federated Cloud Sharing", + "Invalid SMTP password." : "Invalid SMTP password.", + "Email setting test" : "Email setting test", + "Well done, %s!" : "Well done, %s!", + "If you received this email, the email configuration seems to be correct." : "If you received this email, the email configuration seems to be correct.", + "Email could not be sent. Check your mail server log" : "Email could not be sent. Check your mail server log", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "A problem occurred while sending the email. Please revise your settings. (Error: %s)", + "You need to set your user email before being able to send test emails." : "You need to set your user email before being able to send test emails.", + "Invalid mail address" : "Invalid mail address", + "Settings saved" : "Settings saved", + "Unable to change full name" : "Unable to change full name", + "Unable to change email address" : "Unable to change email address", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):", + "%1$s changed your password on %2$s." : "%1$s changed your password on %2$s.", + "Your password on %s was changed." : "Your password on %s was changed.", + "Your password on %s was reset by an administrator." : "Your password on %s was reset by an administrator.", + "Password for %1$s changed on %2$s" : "Password for %1$s changed on %2$s", + "Password changed for %s" : "Password changed for %s", + "If you did not request this, please contact an administrator." : "If you did not request this, please contact an administrator.", + "Your email address on %s was changed." : "Your email address on %s was changed.", + "Your email address on %s was changed by an administrator." : "Your email address on %s was changed by an administrator.", + "Email address for %1$s changed on %2$s" : "Email address for %1$s changed on %2$s", + "Email address changed for %s" : "Email address changed for %s", + "The new email address is %s" : "The new email address is %s", + "Your %s account was created" : "Your %s account was created", + "Welcome aboard" : "Welcome aboard", + "Welcome aboard %s" : "Welcome aboard %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Welcome to your %s account, you can add, protect, and share your data.", + "Your username is: %s" : "Your username is: %s", + "Set your password" : "Set your password", + "Go to %s" : "Go to %s", + "Install Client" : "Install Client", + "Delete" : "Delete", + "Unlimited" : "Unlimited", + "Verifying …" : "Verifying …", + "Verify" : "Verify", + "Migration in progress. Please wait until the migration is finished" : "Migration in progress. Please wait until the migration is finished", + "Migration started …" : "Migration started …", + "Not saved" : "Not saved", + "Sending…" : "Sending…", + "Email sent" : "Email sent", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "An error occurred. Please upload an ASCII-encoded PEM certificate.", + "Valid until {date}" : "Valid until {date}", + "Local" : "Local", + "Private" : "Private", + "Only visible to local users" : "Only visible to local users", + "Only visible to you" : "Only visible to you", + "Contacts" : "Contacts", + "Visible to local users and to trusted servers" : "Visible to local users and to trusted servers", + "Public" : "Public", + "Will be synced to a global and public address book" : "Will be synced to a global and public address book", + "Very weak password" : "Very weak password", + "Weak password" : "Weak password", + "So-so password" : "So-so password", + "Good password" : "Good password", + "Strong password" : "Strong password", + "Select a profile picture" : "Select a profile picture", + "Groups" : "Groups", + "Limit to groups" : "Limit to groups", + "Allow filesystem access" : "Allow filesystem access", + "Revoke" : "Revoke", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome for Android", + "Nextcloud Talk for iOS" : "Nextcloud Talk for iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk for Android", + "Sync client - {os}" : "Sync client - {os}", + "This session" : "This session", + "Device" : "Device", + "Last activity" : "Last activity", + "Devices & sessions" : "Devices & sessions", + "Web, desktop and mobile clients currently logged in to your account." : "Web, desktop and mobile clients currently logged in to your account.", + "Error while creating device token" : "Error while creating device token", + "Error while deleting the token" : "Error while deleting the token", + "App name" : "App name", + "Create new app password" : "Create new app password", + "Use the credentials below to configure your app or device." : "Use the credentials below to configure your app or device.", + "For security reasons this password will only be shown once." : "For security reasons this password will only be shown once.", + "Username" : "Username", + "Password" : "Password", + "Done" : "Done", + "Copied!" : "Copied!", + "Copy" : "Copy", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Official apps are developed by the community. They offer additional functionality and are ready for production use.", + "Official" : "Official", + "Remove" : "Remove", + "Disable" : "Disable", + "All" : "All", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "This app has no minimum Nextcloud version assigned. This will cause an error in the future.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "This app has no maximum Nextcloud version assigned. This will cause an error in the future.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "This app cannot be installed because the following dependencies are not fulfilled:", + "View in store" : "View in store", + "Visit website" : "Visit website", + "Report a bug" : "Report a bug", + "User documentation" : "User documentation", + "Admin documentation" : "Admin documentation", + "Developer documentation" : "Developer documentation", + "No apps found for your version" : "No apps found for your version", + "Enable all" : "Enable all", + "Enable" : "Enable", + "The app will be downloaded from the app store" : "The app will be downloaded from the app store", + "New password" : "New password", + "{size} used" : "{size} used", + "Email" : "Email", + "Group admin for" : "Group admin for", + "Quota" : "Quota", + "Language" : "Language", + "Storage location" : "Storage location", + "User backend" : "User backend", + "Last login" : "Last login", + "Default quota" : "Default quota", + "Your apps" : "Your apps", + "Disabled apps" : "Disabled apps", + "Updates" : "Updates", + "App bundles" : "App bundles", + "Show last login" : "Show last login", + "Show user backend" : "Show user backend", + "Admins" : "Admins", + "Everyone" : "Everyone", + "Add group" : "Add group", + "An error occured during the request. Unable to proceed." : "An error occured during the request. Unable to proceed.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds.", + "App update" : "App update", + "Error: This app can not be enabled because it makes the server unstable" : "Error: This app can not be enabled because it makes the server unstable", + "SSL Root Certificates" : "SSL Root Certificates", + "Common Name" : "Common Name", + "Valid until" : "Valid until", + "Issued By" : "Issued By", + "Valid until %s" : "Valid until %s", + "Import root certificate" : "Import root certificate", + "Administrator documentation" : "Administrator documentation", + "Forum" : "Forum", + "None" : "None", + "Login" : "Login", + "Plain" : "Plain", + "NT LAN Manager" : "NT LAN Manager", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Email server", + "Open documentation" : "Open documentation", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "It is important to set up this server to be able to send emails, like for password reset and notifications.", + "Send mode" : "Send mode", + "Encryption" : "Encryption", + "From address" : "From address", + "mail" : "mail", + "Authentication method" : "Authentication method", + "Authentication required" : "Authentication required", + "Server address" : "Server address", + "Port" : "Port", + "Credentials" : "Credentials", + "SMTP Username" : "SMTP Username", + "SMTP Password" : "SMTP Password", + "Test email settings" : "Test email settings", + "Send email" : "Send email", + "Security & setup warnings" : "Security & setup warnings", + "All checks passed." : "All checks passed.", + "There are some errors regarding your setup." : "There are some errors regarding your setup.", + "There are some warnings regarding your setup." : "There are some warnings regarding your setup.", + "Checking for system and security issues." : "Checking for system and security issues.", + "Version" : "Version", + "Server-side encryption" : "Server-side encryption", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed.", + "Enable server-side encryption" : "Enable server-side encryption", + "Please read carefully before activating server-side encryption: " : "Please read carefully before activating server-side encryption: ", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met.", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Encryption alone does not guarantee complete security. Please read the documentation for information on how the encryption app works, and supported use cases.", + "Be aware that encryption always increases the file size." : "Be aware that encryption always increases the file size.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data.", + "This is the final warning: Do you really want to enable encryption?" : "This is the final warning: Do you really want to enable encryption?", + "Enable encryption" : "Enable encryption", + "No encryption module loaded, please enable an encryption module in the app menu." : "No encryption module loaded, please enable an encryption module in the app menu.", + "Select default encryption module:" : "Select default encryption module:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one.", + "Start migration" : "Start migration", + "Background jobs" : "Background jobs", + "Last job ran %s." : "Last job ran %s.", + "Last job execution ran %s. Something seems wrong." : "Last job execution ran %s. Something seems wrong.", + "Background job didn’t run yet!" : "Background job didn’t run yet!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information.", + "Execute one task with each page loaded" : "Execute one task with each page loaded", + "The cron.php needs to be executed by the system user \"%s\"." : "The cron.php needs to be executed by the system user \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details.", + "Sharing" : "Sharing", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "As admin you can fine-tune the sharing behavior. Please see the documentation for more information.", + "Allow apps to use the Share API" : "Allow apps to use the Share API", + "Allow users to share via link" : "Allow users to share via link", + "Allow public uploads" : "Allow public uploads", + "Always ask for a password" : "Always ask for a password", + "Enforce password protection" : "Enforce password protection", + "Set default expiration date" : "Set default expiry date", + "Expire after " : "Expire after ", + "days" : "days", + "Enforce expiration date" : "Enforce expiry date", + "Allow resharing" : "Allow resharing", + "Allow sharing with groups" : "Allow sharing with groups", + "Restrict users to only share with users in their groups" : "Restrict users to only share with users in their groups", + "Exclude groups from sharing" : "Exclude groups from sharing", + "These groups will still be able to receive shares, but not to initiate them." : "These groups will still be able to receive shares, but not to initiate them.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)", + "This text will be shown on the public link upload page when the file list is hidden." : "This text will be shown on the public link upload page when the file list is hidden.", + "Default share permissions" : "Default share permissions", + "Personal" : "Personal", + "Administration" : "Administration", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Like our Facebook page", + "Follow us on Twitter" : "Follow us on Twitter", + "Check out our blog" : "Check out our blog", + "Subscribe to our newsletter" : "Subscribe to our newsletter", + "Profile picture" : "Profile picture", + "Upload new" : "Upload new", + "Select from Files" : "Select from Files", + "Remove image" : "Remove image", + "png or jpg, max. 20 MB" : "png or jpg, max. 20 MB", + "Picture provided by original account" : "Picture provided by original account", + "Cancel" : "Cancel", + "Choose as profile picture" : "Choose as profile picture", + "Details" : "Details", + "You are using <strong>%s</strong>" : "You are using <strong>%s</strong>", + "Full name" : "Full name", + "No display name set" : "No display name set", + "Your email address" : "Your email address", + "No email address set" : "No email address set", + "For password reset and notifications" : "For password reset and notifications", + "Phone number" : "Phone number", + "Your phone number" : "Your phone number", + "Address" : "Address", + "Your postal address" : "Your postal address", + "Website" : "Website", + "It can take up to 24 hours before the account is displayed as verified." : "It can take up to 24 hours before the account is displayed as verified.", + "Link https://…" : "Link https://…", + "Twitter" : "Twitter", + "Twitter handle @…" : "Twitter handle @…", + "Help translate" : "Help translate", + "Current password" : "Current password", + "Change password" : "Change password", + "Store credentials" : "Store credentials", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP.", + "Use system cron service to call the cron.php file every 15 minutes." : "Use system cron service to call the cron.php file every 15 minutes." +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/en_GB.json b/apps/settings/l10n/en_GB.json new file mode 100644 index 00000000000..27063baf2e4 --- /dev/null +++ b/apps/settings/l10n/en_GB.json @@ -0,0 +1,268 @@ +{ "translations": { + "{actor} changed your password" : "{actor} changed your password", + "You changed your password" : "You changed your password", + "Your password was reset by an administrator" : "Your password was reset by an administrator", + "{actor} changed your email address" : "{actor} changed your email address", + "You changed your email address" : "You changed your email address", + "Your email address was changed by an administrator" : "Your email address was changed by an administrator", + "Security" : "Security", + "You successfully logged in using two-factor authentication (%1$s)" : "You successfully logged in using two-factor authentication (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "A login attempt using two-factor authentication failed (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Your <strong>password</strong> or <strong>email</strong> was modified", + "Couldn't remove app." : "Couldn't remove app.", + "Couldn't update app." : "Couldn't update app.", + "Wrong password" : "Incorrect password", + "Saved" : "Saved", + "No user supplied" : "No user supplied", + "Unable to change password" : "Unable to change password", + "Authentication error" : "Authentication error", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Please provide an admin recovery password; otherwise, all user data will be lost.", + "Wrong admin recovery password. Please check the password and try again." : "Incorrect admin recovery password. Please check the password and try again.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Backend doesn't support password change, but the user's encryption key was updated.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "installing and updating apps via the app store or Federated Cloud Sharing", + "Federated Cloud Sharing" : "Federated Cloud Sharing", + "Invalid SMTP password." : "Invalid SMTP password.", + "Email setting test" : "Email setting test", + "Well done, %s!" : "Well done, %s!", + "If you received this email, the email configuration seems to be correct." : "If you received this email, the email configuration seems to be correct.", + "Email could not be sent. Check your mail server log" : "Email could not be sent. Check your mail server log", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "A problem occurred while sending the email. Please revise your settings. (Error: %s)", + "You need to set your user email before being able to send test emails." : "You need to set your user email before being able to send test emails.", + "Invalid mail address" : "Invalid mail address", + "Settings saved" : "Settings saved", + "Unable to change full name" : "Unable to change full name", + "Unable to change email address" : "Unable to change email address", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):", + "%1$s changed your password on %2$s." : "%1$s changed your password on %2$s.", + "Your password on %s was changed." : "Your password on %s was changed.", + "Your password on %s was reset by an administrator." : "Your password on %s was reset by an administrator.", + "Password for %1$s changed on %2$s" : "Password for %1$s changed on %2$s", + "Password changed for %s" : "Password changed for %s", + "If you did not request this, please contact an administrator." : "If you did not request this, please contact an administrator.", + "Your email address on %s was changed." : "Your email address on %s was changed.", + "Your email address on %s was changed by an administrator." : "Your email address on %s was changed by an administrator.", + "Email address for %1$s changed on %2$s" : "Email address for %1$s changed on %2$s", + "Email address changed for %s" : "Email address changed for %s", + "The new email address is %s" : "The new email address is %s", + "Your %s account was created" : "Your %s account was created", + "Welcome aboard" : "Welcome aboard", + "Welcome aboard %s" : "Welcome aboard %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Welcome to your %s account, you can add, protect, and share your data.", + "Your username is: %s" : "Your username is: %s", + "Set your password" : "Set your password", + "Go to %s" : "Go to %s", + "Install Client" : "Install Client", + "Delete" : "Delete", + "Unlimited" : "Unlimited", + "Verifying …" : "Verifying …", + "Verify" : "Verify", + "Migration in progress. Please wait until the migration is finished" : "Migration in progress. Please wait until the migration is finished", + "Migration started …" : "Migration started …", + "Not saved" : "Not saved", + "Sending…" : "Sending…", + "Email sent" : "Email sent", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "An error occurred. Please upload an ASCII-encoded PEM certificate.", + "Valid until {date}" : "Valid until {date}", + "Local" : "Local", + "Private" : "Private", + "Only visible to local users" : "Only visible to local users", + "Only visible to you" : "Only visible to you", + "Contacts" : "Contacts", + "Visible to local users and to trusted servers" : "Visible to local users and to trusted servers", + "Public" : "Public", + "Will be synced to a global and public address book" : "Will be synced to a global and public address book", + "Very weak password" : "Very weak password", + "Weak password" : "Weak password", + "So-so password" : "So-so password", + "Good password" : "Good password", + "Strong password" : "Strong password", + "Select a profile picture" : "Select a profile picture", + "Groups" : "Groups", + "Limit to groups" : "Limit to groups", + "Allow filesystem access" : "Allow filesystem access", + "Revoke" : "Revoke", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome for Android", + "Nextcloud Talk for iOS" : "Nextcloud Talk for iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk for Android", + "Sync client - {os}" : "Sync client - {os}", + "This session" : "This session", + "Device" : "Device", + "Last activity" : "Last activity", + "Devices & sessions" : "Devices & sessions", + "Web, desktop and mobile clients currently logged in to your account." : "Web, desktop and mobile clients currently logged in to your account.", + "Error while creating device token" : "Error while creating device token", + "Error while deleting the token" : "Error while deleting the token", + "App name" : "App name", + "Create new app password" : "Create new app password", + "Use the credentials below to configure your app or device." : "Use the credentials below to configure your app or device.", + "For security reasons this password will only be shown once." : "For security reasons this password will only be shown once.", + "Username" : "Username", + "Password" : "Password", + "Done" : "Done", + "Copied!" : "Copied!", + "Copy" : "Copy", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Official apps are developed by the community. They offer additional functionality and are ready for production use.", + "Official" : "Official", + "Remove" : "Remove", + "Disable" : "Disable", + "All" : "All", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "This app has no minimum Nextcloud version assigned. This will cause an error in the future.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "This app has no maximum Nextcloud version assigned. This will cause an error in the future.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "This app cannot be installed because the following dependencies are not fulfilled:", + "View in store" : "View in store", + "Visit website" : "Visit website", + "Report a bug" : "Report a bug", + "User documentation" : "User documentation", + "Admin documentation" : "Admin documentation", + "Developer documentation" : "Developer documentation", + "No apps found for your version" : "No apps found for your version", + "Enable all" : "Enable all", + "Enable" : "Enable", + "The app will be downloaded from the app store" : "The app will be downloaded from the app store", + "New password" : "New password", + "{size} used" : "{size} used", + "Email" : "Email", + "Group admin for" : "Group admin for", + "Quota" : "Quota", + "Language" : "Language", + "Storage location" : "Storage location", + "User backend" : "User backend", + "Last login" : "Last login", + "Default quota" : "Default quota", + "Your apps" : "Your apps", + "Disabled apps" : "Disabled apps", + "Updates" : "Updates", + "App bundles" : "App bundles", + "Show last login" : "Show last login", + "Show user backend" : "Show user backend", + "Admins" : "Admins", + "Everyone" : "Everyone", + "Add group" : "Add group", + "An error occured during the request. Unable to proceed." : "An error occured during the request. Unable to proceed.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds.", + "App update" : "App update", + "Error: This app can not be enabled because it makes the server unstable" : "Error: This app can not be enabled because it makes the server unstable", + "SSL Root Certificates" : "SSL Root Certificates", + "Common Name" : "Common Name", + "Valid until" : "Valid until", + "Issued By" : "Issued By", + "Valid until %s" : "Valid until %s", + "Import root certificate" : "Import root certificate", + "Administrator documentation" : "Administrator documentation", + "Forum" : "Forum", + "None" : "None", + "Login" : "Login", + "Plain" : "Plain", + "NT LAN Manager" : "NT LAN Manager", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Email server", + "Open documentation" : "Open documentation", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "It is important to set up this server to be able to send emails, like for password reset and notifications.", + "Send mode" : "Send mode", + "Encryption" : "Encryption", + "From address" : "From address", + "mail" : "mail", + "Authentication method" : "Authentication method", + "Authentication required" : "Authentication required", + "Server address" : "Server address", + "Port" : "Port", + "Credentials" : "Credentials", + "SMTP Username" : "SMTP Username", + "SMTP Password" : "SMTP Password", + "Test email settings" : "Test email settings", + "Send email" : "Send email", + "Security & setup warnings" : "Security & setup warnings", + "All checks passed." : "All checks passed.", + "There are some errors regarding your setup." : "There are some errors regarding your setup.", + "There are some warnings regarding your setup." : "There are some warnings regarding your setup.", + "Checking for system and security issues." : "Checking for system and security issues.", + "Version" : "Version", + "Server-side encryption" : "Server-side encryption", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed.", + "Enable server-side encryption" : "Enable server-side encryption", + "Please read carefully before activating server-side encryption: " : "Please read carefully before activating server-side encryption: ", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met.", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Encryption alone does not guarantee complete security. Please read the documentation for information on how the encryption app works, and supported use cases.", + "Be aware that encryption always increases the file size." : "Be aware that encryption always increases the file size.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data.", + "This is the final warning: Do you really want to enable encryption?" : "This is the final warning: Do you really want to enable encryption?", + "Enable encryption" : "Enable encryption", + "No encryption module loaded, please enable an encryption module in the app menu." : "No encryption module loaded, please enable an encryption module in the app menu.", + "Select default encryption module:" : "Select default encryption module:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one.", + "Start migration" : "Start migration", + "Background jobs" : "Background jobs", + "Last job ran %s." : "Last job ran %s.", + "Last job execution ran %s. Something seems wrong." : "Last job execution ran %s. Something seems wrong.", + "Background job didn’t run yet!" : "Background job didn’t run yet!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information.", + "Execute one task with each page loaded" : "Execute one task with each page loaded", + "The cron.php needs to be executed by the system user \"%s\"." : "The cron.php needs to be executed by the system user \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details.", + "Sharing" : "Sharing", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "As admin you can fine-tune the sharing behavior. Please see the documentation for more information.", + "Allow apps to use the Share API" : "Allow apps to use the Share API", + "Allow users to share via link" : "Allow users to share via link", + "Allow public uploads" : "Allow public uploads", + "Always ask for a password" : "Always ask for a password", + "Enforce password protection" : "Enforce password protection", + "Set default expiration date" : "Set default expiry date", + "Expire after " : "Expire after ", + "days" : "days", + "Enforce expiration date" : "Enforce expiry date", + "Allow resharing" : "Allow resharing", + "Allow sharing with groups" : "Allow sharing with groups", + "Restrict users to only share with users in their groups" : "Restrict users to only share with users in their groups", + "Exclude groups from sharing" : "Exclude groups from sharing", + "These groups will still be able to receive shares, but not to initiate them." : "These groups will still be able to receive shares, but not to initiate them.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)", + "This text will be shown on the public link upload page when the file list is hidden." : "This text will be shown on the public link upload page when the file list is hidden.", + "Default share permissions" : "Default share permissions", + "Personal" : "Personal", + "Administration" : "Administration", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Like our Facebook page", + "Follow us on Twitter" : "Follow us on Twitter", + "Check out our blog" : "Check out our blog", + "Subscribe to our newsletter" : "Subscribe to our newsletter", + "Profile picture" : "Profile picture", + "Upload new" : "Upload new", + "Select from Files" : "Select from Files", + "Remove image" : "Remove image", + "png or jpg, max. 20 MB" : "png or jpg, max. 20 MB", + "Picture provided by original account" : "Picture provided by original account", + "Cancel" : "Cancel", + "Choose as profile picture" : "Choose as profile picture", + "Details" : "Details", + "You are using <strong>%s</strong>" : "You are using <strong>%s</strong>", + "Full name" : "Full name", + "No display name set" : "No display name set", + "Your email address" : "Your email address", + "No email address set" : "No email address set", + "For password reset and notifications" : "For password reset and notifications", + "Phone number" : "Phone number", + "Your phone number" : "Your phone number", + "Address" : "Address", + "Your postal address" : "Your postal address", + "Website" : "Website", + "It can take up to 24 hours before the account is displayed as verified." : "It can take up to 24 hours before the account is displayed as verified.", + "Link https://…" : "Link https://…", + "Twitter" : "Twitter", + "Twitter handle @…" : "Twitter handle @…", + "Help translate" : "Help translate", + "Current password" : "Current password", + "Change password" : "Change password", + "Store credentials" : "Store credentials", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP.", + "Use system cron service to call the cron.php file every 15 minutes." : "Use system cron service to call the cron.php file every 15 minutes." +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} \ No newline at end of file diff --git a/apps/settings/l10n/eo.js b/apps/settings/l10n/eo.js new file mode 100644 index 00000000000..56834e695af --- /dev/null +++ b/apps/settings/l10n/eo.js @@ -0,0 +1,701 @@ +OC.L10N.register( + "settings", + { + "{actor} added you to group {group}" : "{actor} aldonis vin al grupo {group}", + "You added {user} to group {group}" : "Vi aldonis uzanton {user} al grupo {group}", + "{actor} added {user} to group {group}" : "{actor} aldonis uzanton {user} al grupo {group}", + "An administrator added you to group {group}" : "Administranto aldonis vin al grupo {group}", + "An administrator added {user} to group {group}" : "Administranto aldonis uzanton {user} al grupo {group}", + "{actor} removed you from group {group}" : "{actor} forigis vin el grupo {group}", + "You removed {user} from group {group}" : "Vi forigis uzanton {user} el grupo {group}", + "{actor} removed {user} from group {group}" : "{actor} forigi uzanton {user} el grupo {group}", + "An administrator removed you from group {group}" : "Administranto forigis vin el grupo {group}", + "An administrator removed {user} from group {group}" : "Administranto forigis uzanton {user} el grupo {group}", + "Your <strong>group memberships</strong> were modified" : "Viaj <strong>grupaj membrecoj</strong> modifiĝis", + "{actor} changed your password" : "{actor} ŝanĝis vian pasvorton", + "You changed your password" : "Vi ŝanĝis vian pasvorton", + "Your password was reset by an administrator" : "Vian pasvorton restarigis administranton", + "{actor} changed your email address" : "{actor} ŝanĝis vian retpoŝtadreson", + "You changed your email address" : "Vi ŝanĝis vian retpoŝtadreson", + "Your email address was changed by an administrator" : "Administranto ŝanĝis vian retpoŝtadreson", + "You created app password \"{token}\"" : "Vi kreis aplikaĵan pasvorton „{token}“", + "You deleted app password \"{token}\"" : "Vi forigis aplikaĵan pasvorton „{token}“", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Vi alinomis aplikaĵan pasvorton „{token}“ al „{newToken}“", + "You granted filesystem access to app password \"{token}\"" : "Vi permesis aliron al dosiersistemo al aplikaĵa pasvorton „{token}“", + "You revoked filesystem access from app password \"{token}\"" : "Vi senvalidigis aliron al dosiersistemo el aplikaĵa pasvorton „{token}“", + "Security" : "Sekurigo", + "You successfully logged in using two-factor authentication (%1$s)" : "Vi sukcese ensalutis uzante dufazan aŭtentigon (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Ensaluta provo uzante dufazan aŭtentigo malsukcesis (%1$s)", + "Remote wipe was started on %1$s" : "Defora forviŝado komenciĝis ĉe %1$s", + "Remote wipe has finished on %1$s" : "Defora forviŝado finis ĉe %1$s", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Via <strong>pasvorto</strong> aŭ <strong>retpoŝtadreso</strong> estis modifita", + "Couldn't remove app." : "Ne eblis forigi la aplikaĵon.", + "Couldn't update app." : "Ne eblis ĝisdatigi la aplikaĵon.", + "Wrong password" : "Neĝusta pasvorto", + "Saved" : "Konservita", + "No user supplied" : "Neniu uzanto provizita", + "Unable to change password" : "Ne eblis ŝanĝi la pasvorton", + "Authentication error" : "Aŭtentiga eraro", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Bonvolu doni reekhava pasvorton de administranto; aliokaze, ĉiuj uzanto-datumoj perdiĝos.", + "Wrong admin recovery password. Please check the password and try again." : "Neĝusta reekhava pasvorto de administranto. Bv. kontroli la pasvorton kaj reprovi.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Servilo ne subtenas pasvorto-ŝanĝon, tamen ĉifroŝlosilo de la uzanto estis ĝisdatigita.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "instalado kaj ĝisdatigo de aplikaĵoj per aplikaĵejo aŭ Federnuba Kunhavado", + "Federated Cloud Sharing" : "Federnuba kunhavado", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL uzas neĝisdatan version %1$s (%2$s). Bv. ĝisdatigi vian operaciumon aŭ programon, aŭ trajtoj kiel %3$s ne plu funkcios fidinde.", + "Invalid SMTP password." : "Nevalida SMTP-pasvorto.", + "Email setting test" : "Provo de retpoŝtagordo", + "Well done, %s!" : "Bonege, %s!", + "If you received this email, the email configuration seems to be correct." : "Se vi ricevis tiun ĉi retmesaĝon, retpoŝta agordo estas ĝusta, espereble.", + "Email could not be sent. Check your mail server log" : "Retmesaĝo ne eblis esti sendita. Kontrolu vian servil-protokolon.", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Problem dum sendado de la retmesaĝo. Bv. ekzameni viajn agordojn. (Eraro: %s)", + "You need to set your user email before being able to send test emails." : "Vi bezonas agordi vian retpoŝtadreso, antaŭ ol povi sendi provan retmesaĝon.", + "Invalid mail address" : "Nevalida retpoŝtadreso", + "Settings saved" : "Agordoj konservitaj", + "Unable to change full name" : "Ne eblis ŝanĝi la plenan nomon", + "Unable to change email address" : "Ne eblis ŝanĝi retpoŝtadreson", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Por kontroli vian Twitter-konton, bv. afiŝi la jenan pepaĵon („tweet“) (certigu afiŝi ĝin sen iu linisalto):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Por kontroli vian retejon, metu la jenan enhavon en la radikon de via retejo en „.well-known/CloudIdVerificationCode.txt“ (certigu, ke la tuta teksto estas unulinia):", + "%1$s changed your password on %2$s." : "%1$s ŝanĝis vian pasvorton ĉe %2$s.", + "Your password on %s was changed." : "Via pasvorto ĉe %s estis ŝanĝita.", + "Your password on %s was reset by an administrator." : "Via pasvorto ĉe %s estis restartigita de administranto.", + "Password for %1$s changed on %2$s" : "Pasvorto por %1$s ŝanĝita ĉe %2$s", + "Password changed for %s" : "Pasvorto ŝanĝita por %s", + "If you did not request this, please contact an administrator." : "Se vi mem ne petis tion, bv. kontakti vian administranton.", + "Your email address on %s was changed." : "Via retpoŝtadreso ĉe %s estis ŝanĝita.", + "Your email address on %s was changed by an administrator." : "Via retpoŝtadreso ĉe %s estis ŝanĝita de administranto.", + "Email address for %1$s changed on %2$s" : "Retpoŝtadreso de %1$s estis ŝanĝita. ĉe %2$s", + "Email address changed for %s" : "Retpoŝtadreso ŝanĝita por %s", + "The new email address is %s" : "La nova retpoŝtadreso estas %s", + "Your %s account was created" : "Via konto %s kreiĝis", + "Welcome aboard" : "Bonvenon", + "Welcome aboard %s" : "Bonvenon %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Bonvenon ĉe via konto %s; vi povas aldoni, protekti kaj kunhavigi viajn datumojn.", + "Your username is: %s" : "Via uzantnomo estas: %s", + "Set your password" : "Agordi vian pasvorton", + "Go to %s" : "Iri al %s", + "Install Client" : "Instali kienton", + "Logged in user must be a subadmin" : "La konektita uzanto estu subadministranto.", + "Create" : "Krei", + "Change" : "Ŝanĝi", + "Delete" : "Forigi", + "Share" : "Kunhavigi", + "Unlimited" : "Senlima", + "Verifying" : "Kontrolado", + "Verifying …" : "Kontrolante...", + "Verify" : "Kontroli", + "Migration in progress. Please wait until the migration is finished" : "Transmeto faranta. Bv. atendi ĝis la fino de la transmeto.", + "Migration started …" : "Ektransmetante...", + "Not saved" : "Ne konservita", + "Sending…" : "Sendante...", + "Email sent" : "La retpoŝtaĵo sendiĝis", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Eraro okazis. Bv. alŝuti askian PEM-atestilon.", + "Valid until {date}" : "Valida ĝis {date}", + "Local" : "Loka", + "Private" : "Privata", + "Only visible to local users" : "Nur videbla de lokaj uzantoj", + "Only visible to you" : "Nur videbla de vi", + "Contacts" : "Kontaktoj", + "Visible to local users and to trusted servers" : "Videbla de lokaj uzantoj kaj de fidindaj serviloj", + "Public" : "Publika", + "Will be synced to a global and public address book" : "Sinkroniĝos al malloka kaj publika adresaro", + "Very weak password" : "Tre malforta pasvorto", + "Weak password" : "Malforta pasvorto", + "So-so password" : "Mezbona pasvorto", + "Good password" : "Bona pasvorto", + "Strong password" : "Forta pasvorto", + "An error occurred while changing your language. Please reload the page and try again." : "Eraro okazis dum ŝanĝo de lingvo. Bv. reŝargi la paĝon kaj provi ree.", + "An error occurred while changing your locale. Please reload the page and try again." : "Eraro okazis dum ŝanĝo de lokaĵaro. Bv. reŝargi la paĝon kaj provi ree.", + "Select a profile picture" : "Elekti profilan bildon", + "Week starts on {fdow}" : "Semajno komencas je {fdow}", + "Groups" : "Grupoj", + "Group list is empty" : "Gruplisto malpenas", + "Unable to retrieve the group list" : "Ne eblis ricevi grupliston", + "Afrikaans (Namibia)" : "Afrikansa (Namibio)", + "Afrikaans (South Africa)" : "Afrikansa (Sud-Afriko)", + "Afrikaans" : "Afrikansa", + "Akan (Ghana)" : "Akana (Ganao)", + "Akan" : "Akana", + "Albanian (Albania)" : "Albana (Albanujo)", + "Albanian" : "Albana", + "Amharic (Ethiopia)" : "Amhara (Etiopujo)", + "Amharic" : "Amhara", + "Arabic (Algeria)" : "Araba (Alĝerio)", + "Arabic (Bahrain)" : "Araba (Barejno)", + "Arabic (Egypt)" : "Araba (Egiptujo)", + "Arabic (Iraq)" : "Araba (Irako)", + "Arabic (Jordan)" : "Araba (Jordanio)", + "Arabic (Kuwait)" : "Araba (Kuvajto)", + "Arabic (Lebanon)" : "Araba (Libano)", + "Arabic (Libya)" : "Araba (Libio)", + "Arabic (Morocco)" : "Araba (Maroko)", + "Arabic (Oman)" : "Araba (Omano)", + "Arabic (Qatar)" : "Araba (Kataro)", + "Arabic (Saudi Arabia)" : "Araba (Sauda Arabujo)", + "Arabic (Sudan)" : "Araba (Sudano)", + "Arabic (Syria)" : "Araba (Sirio)", + "Arabic (Tunisia)" : "Araba (Tunizio)", + "Arabic (United Arab Emirates)" : "Araba (Unuiĝintaj Arabaj Emirlandoj)", + "Arabic (Yemen)" : "Araba (Jemeno)", + "Arabic" : "Araba", + "Armenian (Armenia)" : "Armena (Armenujo)", + "Armenian" : "Armena", + "Assamese (India)" : "Asama (Barato)", + "Assamese" : "Asama", + "Asu (Tanzania)" : "Parea (Tanzanio)", + "Asu" : "Parea", + "Azerbaijani (Cyrillic)" : "Azerbajĝana (cirila)", + "Azerbaijani (Cyrillic, Azerbaijan)" : "Azerbajĝana (cirila, Azerbajĝano)", + "Azerbaijani (Latin)" : "Azerbajĝana (latino)", + "Azerbaijani (Latin, Azerbaijan)" : "Azerbajĝana (latino, Azerbajĝano)", + "Azerbaijani" : "Azerbajĝana", + "Bambara (Mali)" : "Bambara (Malio)", + "Bambara" : "Bambara", + "Basque (Spain)" : "Eŭska (Hispanujo)", + "Basque" : "Eŭska", + "Belarusian (Belarus)" : "Belorusa (Belorusujo)", + "Belarusian" : "Belorusa", + "Bemba (Zambia)" : "Bemba (Zambio)", + "Bemba" : "Bemba", + "Bena (Tanzania)" : "Bena (Tanzanio)", + "Bena" : "Bena", + "Bengali (Bangladesh)" : "Bengala (Bangladeŝo)", + "Bengali (India)" : "Bengala (Barato)", + "Bengali" : "Bengala", + "Bosnian (Bosnia and Herzegovina)" : "Bosna (Bosnujo kaj Hercegovino)", + "Bosnian" : "Bosna", + "Bulgarian (Bulgaria)" : "Bulgara (Bulgarujo)", + "Bulgarian" : "Bulgara", + "Burmese (Myanmar [Burma])" : "Birma (Birmo)", + "Burmese" : "Birma", + "Catalan (Spain)" : "Kataluna (Hispanujo)", + "Catalan" : "Kataluna", + "Central Morocco Tamazight (Latin)" : "Berbera de centra Maroko (latina)", + "Central Morocco Tamazight (Latin, Morocco)" : "Berbera de centra Maroko (latina, Maroko)", + "Central Morocco Tamazight" : "Berbera de centra Maroko", + "Cherokee (United States)" : "Ĉeroka (Usono)", + "Cherokee" : "Ĉeroka", + "Chiga (Uganda)" : "Kigaa (Ugando)", + "Chiga" : "Kigaa", + "Chinese (Simplified Han)" : "Ĉina (simpligita ĉina skribo)", + "Chinese (Simplified Han, China)" : "Ĉina (simpligita ĉina skribo, Ĉinujo)", + "Chinese (Simplified Han, Hong Kong SAR China)" : "Ĉina (simpligita ĉina skribo, speciala administra regiono Honkongo, Ĉinujo)", + "Chinese (Simplified Han, Macau SAR China)" : "Ĉina (simpligita ĉina skribo, speciala administra regiono Makao, Ĉinujo)", + "Chinese (Simplified Han, Singapore)" : "Ĉina (simpligita ĉina skribo, Singapuro)", + "Chinese (Traditional Han)" : "Ĉina (tradicia ĉina skribo)", + "Chinese (Traditional Han, Hong Kong SAR China)" : "Ĉina (tradicia ĉina skribo, speciala administra regiono Honkongo, Ĉinujo)", + "Chinese (Traditional Han, Macau SAR China)" : "Ĉina (tradicia ĉina skribo, speciala administra regiono Makao, Ĉinujo)", + "Chinese (Traditional Han, Taiwan)" : "Ĉina (tradicia ĉina skribo, Tajvano)", + "Chinese" : "Ĉina", + "Cornish (United Kingdom)" : "Kornvala (Unuiĝinta Reĝlando)", + "Cornish" : "Kornvala", + "Croatian (Croatia)" : "Kroata (Kroatujo)", + "Croatian" : "Kroata", + "Czech (Czech Republic)" : "Ĉeĥa (Ĉeĥujo)", + "Czech" : "Ĉeĥa", + "Danish (Denmark)" : "Dana (Danujo)", + "Danish" : "Dana", + "Dutch (Belgium)" : "Nederlanda (Belgujo)", + "Dutch (Netherlands)" : "Nederlando (Nederlando)", + "Dutch" : "Nederlanda", + "Embu (Kenya)" : "Embua (Kenjo)", + "Embu" : "Embua", + "English (American Samoa)" : "Angla (Usona Samoo)", + "English (Australia)" : "Angla (Aŭstralio)", + "English (Belgium)" : "Angla (Belgujo)", + "English (Belize)" : "Angla (Belizo)", + "English (Botswana)" : "Angla (Bocvano)", + "English (Canada)" : "Angla (Kanado)", + "English (Guam)" : "Angla (Gvamo)", + "English (Hong Kong SAR China)" : "Angla (speciala administra regiono Honkongo, Ĉinujo)", + "English (India)" : "Angla (Barato)", + "English (Ireland)" : "Angla (Irlando)", + "English (Jamaica)" : "Angla (Jamajko)", + "English (Malta)" : "Angla (Malto)", + "English (Marshall Islands)" : "Angla (Marŝala Insularo)", + "English (Mauritius)" : "Angla (Maŭricio)", + "English (Namibia)" : "Angla (Namibio)", + "English (New Zealand)" : "Angla (Novzelando)", + "English (Northern Mariana Islands)" : "Angla (Nord-Marianoj)", + "English (Pakistan)" : "Angla (Pakistano)", + "English (Philippines)" : "Angla (Filipinoj)", + "English (Singapore)" : "Angla (Singapuro)", + "English (South Africa)" : "Angla (Sudafriko)", + "English (Trinidad and Tobago)" : "Angla (Trinidado kaj Tobago)", + "English (U.S. Minor Outlying Islands)" : "Angla (Usonaj Malgrandaj Insuloj)", + "English (U.S. Virgin Islands)" : "Angla (Usonaj Virgulinsuloj)", + "English (United Kingdom)" : "Angla (Unuiĝinta Reĝlando)", + "English (United States)" : "Angla (Usono)", + "English (Zimbabwe)" : "Angla (Zimbabvo)", + "English" : "Angla", + "Esperanto" : "Esperanto", + "Estonian (Estonia)" : "Estona (Estonujo)", + "Estonian" : "Estona", + "Ewe (Ghana)" : "Evea (Ganao)", + "Ewe (Togo)" : "Evea (Togolando)", + "Ewe" : "Evea", + "Faroese (Faroe Islands)" : "Feroa (Ferooj)", + "Faroese" : "Feroa", + "Filipino (Philippines)" : "Filipina (Filipinoj)", + "Filipino" : "Filipina", + "Finnish (Finland)" : "Finna (Finnlando)", + "Finnish" : "Finna", + "French (Belgium)" : "Franca (Belgujo)", + "French (Benin)" : "Franca (Benino)", + "French (Burkina Faso)" : "Franca (Burkino)", + "French (Burundi)" : "Franca (Burundo)", + "French (Cameroon)" : "Franca (Kameruno)", + "French (Canada)" : "Franca (Kanado)", + "French (Central African Republic)" : "Franca (Centr-Afriko)", + "French (Chad)" : "Franca (Ĉado)", + "French (Comoros)" : "Franca (Komoroj)", + "French (Congo - Brazzaville)" : "Franca (Kongo Brazavila)", + "French (Congo - Kinshasa)" : "France (Kongo Kinŝasa)", + "French (Côte d’Ivoire)" : "Franca (Ebur-Bordo)", + "French (Djibouti)" : "Franca (Ĝibutio)", + "French (Equatorial Guinea)" : "Franca (Ekvatora Gvineo)", + "French (France)" : "Franca (Francujo)", + "French (Gabon)" : "Franca (Gabono)", + "French (Guadeloupe)" : "Franca (Gvadelupo)", + "French (Guinea)" : "Franca (Gviano)", + "French (Luxembourg)" : "Franca (Luksemburgo)", + "French (Madagascar)" : "Franca (Madagaskaro)", + "French (Mali)" : "Franca (Malio)", + "French (Martinique)" : "Franca (Martiniko)", + "French (Monaco)" : "Franca (Monako)", + "French (Niger)" : "Franca (Niĝero)", + "French (Rwanda)" : "Franca (Ruando)", + "French (Réunion)" : "Franca (Reunio)", + "French (Saint Barthélemy)" : "Franca (Sankta Bartolomeo)", + "French (Saint Martin)" : "Franca (Sankta Marteno)", + "French (Senegal)" : "Franca (Senegalo)", + "French (Switzerland)" : "Franca (Svislando)", + "French (Togo)" : "Franca (Togolando)", + "French" : "Franca", + "Fulah (Senegal)" : "Fula (Senegalo)", + "Fulah" : "Fula", + "Galician (Spain)" : "Galega (Hispanujo)", + "Galician" : "Galega", + "Ganda (Uganda)" : "Ganda (Ugando)", + "Ganda" : "Ganda", + "Georgian (Georgia)" : "Kartvela (Kvartelujo)", + "Georgian" : "Kartvela", + "German (Austria)" : "Germana (Aŭstrujo)", + "German (Belgium)" : "Germana (Belgujo)", + "German (Germany)" : "Germana (Germanujo)", + "German (Liechtenstein)" : "Germana (Liĥtenŝtejno)", + "German (Luxembourg)" : "Germana (Luksemburgo)", + "German (Switzerland)" : "Germana (Svislando)", + "German" : "Germana", + "Greek (Cyprus)" : "Greka (Kipro)", + "Greek (Greece)" : "Greka (Grekujo)", + "Greek" : "Greka", + "Gujarati (India)" : "Guĝarata (Barato)", + "Gujarati" : "Guĝarata", + "Gusii (Kenya)" : "Gusia (Kenjo)", + "Gusii" : "Gusia", + "Hausa (Latin)" : "Haŭsa (latina)", + "Hausa (Latin, Ghana)" : "Haŭsa (latina, Ganao)", + "Hausa (Latin, Niger)" : "Haŭsa (latina, Niĝero)", + "Hausa (Latin, Nigeria)" : "Haŭsa (latina, Niĝerio)", + "Hausa" : "Haŭsa", + "Hawaiian (United States)" : "Havaja (Usono)", + "Hawaiian" : "Havaja", + "Hebrew (Israel)" : "Hebrea (Israelo)", + "Hebrew" : "Hebrea", + "Hindi (India)" : "Hindia (Barato)", + "Hindi" : "Hinda", + "Hungarian (Hungary)" : "Hungara (Hungarujo)", + "Hungarian" : "Hungara", + "Icelandic (Iceland)" : "Islanda (Islando)", + "Icelandic" : "Islanda", + "Igbo (Nigeria)" : "Igba (Niĝerio)", + "Igbo" : "Igba", + "Indonesian (Indonesia)" : "Indonezia (Indonezio)", + "Indonesian" : "Indonezia", + "Irish (Ireland)" : "Irlanda (Irlando)", + "Irish" : "Irlanda", + "Italian (Italy)" : "Itala (Italujo)", + "Italian (Switzerland)" : "Itala (Svislando)", + "Italian" : "Itala", + "Japanese (Japan)" : "Japana (Japanujo)", + "Japanese" : "Japana", + "Kabuverdianu (Cape Verde)" : "Koboverda (Kaboverdo)", + "Kabuverdianu" : "Kaboverda", + "Kabyle (Algeria)" : "Kabila (Alĝerio)", + "Kabyle" : "Kabila", + "Kalaallisut (Greenland)" : "Okcidentgronlanda (Gronlando)", + "Kalaallisut" : "Okcidentgronlanda", + "Kalenjin (Kenya)" : "Kalenjin (Kenjo)", + "Kalenjin" : "Kalenjin", + "Kamba (Kenya)" : "Kambaa (Kenjo)", + "Kamba" : "Kambaa", + "Kannada (India)" : "Kanara (Barato)", + "Kannada" : "Kannada", + "Kazakh (Cyrillic)" : "Kazaĥa (cirila)", + "Kazakh (Cyrillic, Kazakhstan)" : "Kazaĥa (cirila, Kazaĥujo)", + "Kazakh" : "Kazaĥa", + "Khmer (Cambodia)" : "Kmera (Kamboĝo)", + "Khmer" : "Kmera", + "Kikuyu (Kenya)" : "Kikuja (Kenjo)", + "Kikuyu" : "Kikuja", + "Kinyarwanda (Rwanda)" : "Ruanda (Ruando)", + "Kinyarwanda" : "Ruanda", + "Konkani (India)" : "Konkana (Barato)", + "Konkani" : "Konkana", + "Korean (South Korea)" : "Korea (Sud-Koreujo)", + "Korean" : "Korea", + "Koyra Chiini (Mali)" : "Okcidenta songhaja (Malio)", + "Koyra Chiini" : "Okcidenta songhaja", + "Koyraboro Senni (Mali)" : "Orienta songhaja (Malio)", + "Koyraboro Senni" : "Orienta songhaja", + "Langi (Tanzania)" : "Rangia (Tanzanio)", + "Langi" : "Rangia", + "Latvian (Latvia)" : "Latva (Latvujo)", + "Latvian" : "Latva", + "Lithuanian (Lithuania)" : "Litova (Litovujo)", + "Lithuanian" : "Litova", + "Luo (Kenya)" : "Lua (Kenjo)", + "Luo" : "Lua", + "Luyia (Kenya)" : "Luhja (Kenjo)", + "Luyia" : "Luhja", + "Macedonian (Macedonia)" : "Makedona (Makedonujo)", + "Macedonian" : "Makedona", + "Machame (Tanzania)" : "Machame (Tanzanio)", + "Machame" : "Machame", + "Makonde (Tanzania)" : "Makonda (Tanzanio)", + "Makonde" : "Makonda", + "Malagasy (Madagascar)" : "Malagasa (Madagaskaro)", + "Malagasy" : "Malagasa", + "Malay (Brunei)" : "Malaja (Brunejo)", + "Malay (Malaysia)" : "Malaja (Malajzio)", + "Malay" : "Malaja", + "Malayalam (India)" : "Malajalama (Barato)", + "Malayalam" : "Malajalama", + "Maltese (Malta)" : "Malta (Malto)", + "Maltese" : "Malta", + "Manx (United Kingdom)" : "Manksa (Unuiĝinta Reĝlando)", + "Manx" : "Manksa", + "Marathi (India)" : "Marata (Barato)", + "Marathi" : "Marata", + "Masai (Kenya)" : "Masaja (Kenjo)", + "Masai (Tanzania)" : "Masaja (Tanzanio)", + "Masai" : "Masaja", + "Meru (Kenya)" : "Merua (Kenjo)", + "Meru" : "Merua", + "Morisyen (Mauritius)" : "Maŭrica (Maŭricio)", + "Morisyen" : "Maŭrica", + "Nama (Namibia)" : "Nama (Namibio)", + "Nama" : "Nama", + "Nepali (India)" : "Nepala (Barato)", + "Nepali (Nepal)" : "Nepala (Nepalo)", + "Nepali" : "Nepala", + "North Ndebele (Zimbabwe)" : "Norda ndebela (Zimbabvo)", + "North Ndebele" : "Ndebela norda", + "Norwegian Bokmål (Norway)" : "Norvega bukmolo (Norvegujo)", + "Norwegian Bokmål" : "Norvega bukmolo", + "Norwegian Nynorsk (Norway)" : "Norvega njunoŝko (Norvegujo)", + "Norwegian Nynorsk" : "Norvega njunoŝko", + "Oriya" : "Orijo", + "Oromo" : "Oroma", + "Persian" : "Persa", + "Polish" : "Pola", + "Portuguese" : "Portugala", + "Punjabi" : "Panĝaba", + "Romansh" : "Romanĉa", + "Russian" : "Rusa", + "Sango" : "Sangoa", + "Shona" : "Ŝona", + "Sichuan Yi" : "Siĉua jia", + "Slovak" : "Slovaka", + "Slovenian" : "Slovena", + "Somali" : "Somala", + "Spanish" : "Hispana", + "Swahili" : "Svahila", + "Swedish" : "Sveda", + "Tamil" : "Tamila", + "Telugu" : "Telugua", + "Thai" : "Taja", + "Tibetan" : "Tibeta", + "Tigrinya" : "Tigraja", + "Tonga" : "Tonga", + "Turkish" : "Turka", + "Ukrainian" : "Ukraina", + "Urdu" : "Urduo", + "Uzbek" : "Uzbeka", + "Vietnamese" : "Vjetnama", + "Welsh" : "Kimra", + "Yoruba" : "Joruba", + "Zulu" : "Zulua", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Dufaza aŭtentigo povas esti devigata al ĉiuj\tuzantoj kaj certaj grupoj. Se ili ne havas dufazan provizanton agorditan, ili ne povos ensaluti.", + "Enforce two-factor authentication" : "Devigi dufazan aŭtentigon", + "Limit to groups" : "Limigi al grupoj", + "Enforcement of two-factor authentication can be set for certain groups only." : "Devigo de dufaza aŭtentigo povas ekzisti nur por certaj grupoj.", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "Dufaza aŭtentigo estas devigata por ĉiuj\tmembroj de la jenaj grupoj.", + "Enforced groups" : "Devigataj grupoj", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "Dufaza aŭtentigo ne estas devigata por ĉiuj\tmembroj de la jenaj grupoj.", + "Excluded groups" : "Nedevigataj grupoj", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "Kiam grupoj estas aŭ elektitaj aŭ nedevigataj, ili sekvas la jenan logikon por decidi, ĉu uzanto estas devigata uzi dufazan aŭtentigon (2FA). Se neniu grupo estas elektita, 2FA estas devigata por ĉiuj escepte membrojn de la nedevigataj grupoj. Se uzanto estas samtempe en elektita kaj nedevigata grupo, la elektita ekprioritatas kaj 2FA estas devigata.", + "Save changes" : "Konservi modifojn", + "Marked for remote wipe" : "Elektita por fora forviŝado", + "Device settings" : "Aparataj agordoj", + "Allow filesystem access" : "Permesi aliron al dosiersistemo", + "Rename" : "Alinomi", + "Revoke" : "Senvalidigi", + "Wipe device" : "Forviŝi aparaton", + "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Senvalido de tiu ĉi ĵetono eble malhelpos forviŝadon de via aparato, se ĝi ankoraŭ ne komencis forviŝadon.", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome por Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "iOS_aplikaĵo Nextcloud", + "Nextcloud Android app" : "Android-aplikaĵo Nextcloud", + "Nextcloud Talk for iOS" : "Nextcloud Talk por iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk por Android", + "Sync client - {os}" : "Sinkroniga kliento — {os}", + "This session" : "Tiu ĉi seanco", + "Device" : "Aparato", + "Last activity" : "Lasta aktivaĵo", + "Devices & sessions" : "Aparatoj kaj seancoj", + "Web, desktop and mobile clients currently logged in to your account." : "Reta, surtabla kaj portebla klientoj nun konektitaj al via konto.", + "Do you really want to wipe your data from this device?" : "Ĉu vi vere volas forviŝi viajn datumojn el tiu ĉi aparato?", + "Confirm wipe" : "Konfirmi forviŝadon", + "Error while creating device token" : "Eraro dum kreo de aparata ĵetono", + "Error while updating device token scope" : "Eraro dum ĝisdatigo de la amplekso de la aparataj ĵetonoj", + "Error while updating device token name" : "Eraro dum ĝisdatigo de la nomo de la aparataj ĵetonoj", + "Error while deleting the token" : "Eraro dum forigado de la ĵetono", + "Error while wiping the device with the token" : "Eraro dum forviŝado de la aparato kun la ĵetono", + "App name" : "Aplikaĵa nomo", + "Create new app password" : "Krei novan aplikaĵan pasvorton", + "Use the credentials below to configure your app or device." : "Uzu la ĉi-subajn akreditilojn por agordi vian aplikaĵon aŭ aparaton.", + "For security reasons this password will only be shown once." : "Pro sekurigaj kialoj, tiu ĉi pasvorto montriĝos nur unufoje.", + "Username" : "Uzantonomo", + "Password" : "Pasvorto", + "Done" : "Farita", + "Show QR code for mobile apps" : "Montri rapidrespondan (QR) kodon por porteblaj aplikaĵoj", + "Copied!" : "Kopiita!", + "Copy" : "Kopii", + "Could not copy app password. Please copy it manually." : "Ne eblis kopii la aplikaĵan pasvorton. Bv. kopii ĝin permane.", + "This app is supported via your current Nextcloud subscription." : "Tiu aplikaĵo estas subtenita per via nuna Nextcloud-abono.", + "Supported" : "Subtenite", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Oficialaj aplikaĵoj estas programataj de kaj ene de la komunumo. Ili alportas kernajn trajtojn kaj ili povas tuj uziĝi.", + "Official" : "Oficiala", + "by" : "de", + "Update to {version}" : "Ĝisdatigi al {version}", + "Remove" : "Forigi", + "Disable" : "Malŝalti", + "All" : "Ĉio", + "Limit app usage to groups" : "Limigi aplikaĵan uzon al grupoj", + "No results" : "Neniu rezulto", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Tiu aplikaĵo ne postulas minimuman Nextcloud-version. Tio estos eraro en la estonteco.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Tiu aplikaĵo ne postulas maksimuman Nextcloud-version. Tio estos eraro en la estonteco.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Tiu aplikaĵo ne instaliĝas, ĉar la jenaj dependecoj ne plenumiĝas:", + "View in store" : "Vidi en butiko", + "Visit website" : "Viziti retejon", + "Report a bug" : "Raporti problemon", + "User documentation" : "Dokumentaro por uzanto", + "Admin documentation" : "Dokumentaro por administranto", + "Developer documentation" : "Dokumentaro por programisto", + "Update to {update}" : "Ĝisdatigi al {update}", + "Results from other categories" : "Rezultoj el aliaj kategorioj", + "No apps found for your version" : "Neniu aplikaĵo trovita por via versio", + "Disable all" : "Malŝalti ĉiujn", + "Enable all" : "Ŝalti ĉiujn", + "Download and enable" : "Elŝuti kaj ŝalti", + "Enable" : "Ŝalti", + "Enable untested app" : "Ŝalti netestitan aplikaĵon", + "The app will be downloaded from the app store" : "La aplikaĵo elŝutiĝos el la aplikaĵejo", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Tiu aplikaĵo ne kongruas kun via Nextcloud-versio. Se vi daŭrigas, vi tamen povos instali ĝin, sed eble tiu aplikaĵo ne funkcios bone.", + "You do not have permissions to see the details of this user" : "Vi ne rajtas vidi detalojn pri tiu ĉu uzanto", + "The backend does not support changing the display name" : "La servilo ne subtenas ŝanĝi la vidigan nomon", + "New password" : "Nova pasvorto", + "Add user in group" : "Aldoni uzanton al grupo", + "Set user as admin for" : "Agordi uzanton kiel administranto por", + "Select user quota" : "Elekti uzant-kvoton", + "No language set" : "Neniu lingvo agordita", + "Never" : "Neniam", + "Delete user" : "Forigi uzanton", + "Disable user" : "Malebligi uzanton", + "Enable user" : "Ebligi uzanton", + "Resend welcome email" : "Resendi bonvenan retpoŝtmesaĝon", + "{size} used" : "{size} uzataj", + "Welcome mail sent!" : "Bonvena retpoŝtmesaĝo sendita!", + "Display name" : "Vidiga nomo", + "Email" : "Retpoŝtadreso", + "Group admin for" : "Grupadministranto por", + "Quota" : "Kvoto", + "Language" : "Lingvo", + "Storage location" : "Konserveja loko", + "User backend" : "Uzanto-loko", + "Last login" : "Lasta ensaluto", + "Will be autogenerated" : "Estos memgenerita", + "Default language" : "Defaŭlta lingvo", + "Add a new user" : "Aldoni novan uzanton", + "No users in here" : "Neniu uzanto ĉi tie", + "Default quota" : "Defaŭlta kvoto", + "Password change is disabled because the master key is disabled" : "Pasvorta ŝanĝo ne eblas, ĉar la ĉefa ŝlosilo estas neebligita", + "Common languages" : "Ordinaraj lingvoj", + "All languages" : "Ĉiuj lingvoj", + "Your apps" : "Viaj aplikaĵoj", + "Active apps" : "Aktivaj aplikaĵoj", + "Disabled apps" : "Malŝaltitaj aplikaĵoj", + "Updates" : "Ĝisdatigoj", + "App bundles" : "Aplikaĵaj kuniĝoj", + "{license}-licensed" : "Permesilo: {license}", + "New user" : "Nova uzanto", + "Default quota:" : "Defaŭlta kvoto:", + "Select default quota" : "Elekti defaŭltan kvoton", + "Show Languages" : "Montri lingvojn", + "Show last login" : "Montri lastan ensaluton", + "Show user backend" : "Montri uzantolokon", + "Show storage path" : "Montri vojon al konservejo", + "You are about to remove the group {group}. The users will NOT be deleted." : "Vi tuj forigos grupon {group}. La uzantoj NE estos forigitaj.", + "Please confirm the group removal " : "Bv. konfirmi forigadon de la grupo", + "Remove group" : "Forigi grupon", + "Admins" : "Administrantoj", + "Disabled users" : "Malebligitaj uzantoj", + "Everyone" : "Ĉiuj", + "Add group" : "Aldoni grupon", + "An error occured during the request. Unable to proceed." : "Eraro okazis dum peto. Ne eblas plui.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "La aplikaĵo estis ŝaltita, sed ĝi bezonas ĝisdatiĝi. Vi estos direktita al ĝisdatiga paĝon post 5 sekundoj.", + "App update" : "Aplikaĵa ĝisdatigo", + "Error: This app can not be enabled because it makes the server unstable" : "Eraro: tiu ĉi aplikaĵo ne povas esti ŝaltita, ĉar ĝi malstabiligus la servilon.", + "SSL Root Certificates" : "Radikaj SSL-atestiloj", + "Common Name" : "Komuna nomo", + "Valid until" : "Valida ĝis", + "Issued By" : "Eldonita de", + "Valid until %s" : "Valida ĝis %s", + "Import root certificate" : "Importi radikan atestilon", + "Administrator documentation" : "Dokumentaro por administranto", + "Documentation" : "Dokumentaro", + "Forum" : "Forumo", + "None" : "Nenio", + "Login" : "Ensaluti", + "Plain" : "Plena", + "NT LAN Manager" : "NT LAN Manager", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Retpoŝtoservilo", + "Open documentation" : "Malfermi la dokumentaron", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Gravas agordi tiun ĉi servilon por povi sendi retpoŝtmesaĝojn, ekz. por restarigo de pasvorto aŭ sciigoj.", + "Send mode" : "Kiel sendi", + "Encryption" : "Ĉifrado", + "Sendmail mode" : "Sendmail-reĝimo", + "From address" : "El adreso", + "mail" : "retpoŝtadreso", + "Authentication method" : "Aŭtentiga metodo", + "Authentication required" : "Aŭtentiĝo nepras", + "Server address" : "Servila adreso", + "Port" : "Pordo", + "Credentials" : "Aŭtentigiloj", + "SMTP Username" : "SMTP-uzantonomo", + "SMTP Password" : "SMTP-pasvorto", + "Test email settings" : "Provi retpoŝtagordon", + "Send email" : "Sendi retpoŝtmesaĝon", + "Security & setup warnings" : "Avertoj pri sekureco kaj agordoj", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Gravas por sekureco kaj rapideco de via servilo, ke ĉio estu agordita bone. Por helpi vin pri tio, ni faras kelkajn aŭtomatajn testojn. Bv. vidi la dokumentaron por pli da informoj.", + "All checks passed." : "Ĉiuj testoj sukcese trapasitaj.", + "There are some errors regarding your setup." : "Estas kelkaj eraroj pri via instalaĵo.", + "There are some warnings regarding your setup." : "Estas kelkaj avertoj pri via instalaĵo.", + "Checking for system and security issues." : "Kontrolado de problemoj pri sistemo kaj sekurigo.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Bv. zorgeme kontroli la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">manlibroj pri instalaĵo ↗</a>, kaj kontroli avertojn kaj erarojn en la <a href=\"%2$s\">protokolo</a>.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Kontrolu sekurecon de via servilo Nextcloud pere de <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">nia sekureca ekzameno ↗</a>.", + "Version" : "Versio", + "Two-Factor Authentication" : "Dufaza aŭtentigo", + "Server-side encryption" : "Ĉeservila ĉifrado", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Ĉeservila ĉifrado elbigas ĉifri ĉiujn alŝutitajn dosierojn al la servilo. Tio havas kelkajn limigojn kiel pli malbonan rendimenton, do ŝaltu tion nur se necese.", + "Enable server-side encryption" : "Ŝalti ĉeservilan ĉifradon", + "Please read carefully before activating server-side encryption: " : "Atente legu antaŭ ol ŝalti ĉeservilan ĉifradon:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Kiam ĉeservila ĉifrado estas ŝaltita, ĉiuj dosieroj alŝutitaj al la servilo ekde nun estos ĉifritaj ĉe la servilo. Malebligi ĉifradon povos esti farite poste nur se la uzata ĉifrado-modulo subtenas tion kaj ĉiuj kondiĉoj (ekz. difini restaŭran ŝlisilon) estos kunigitaj.", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Ĉifrado sola ne garantias sekurigon de la sistemo. Bv. vidi la dokumentaron por pli da informoj pri kiel funkcias la ĉifrado kaj pri subtenata scenaro.", + "Be aware that encryption always increases the file size." : "Atentu, ke ĉifrado ĉiam pligrandigas dosierojn.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Ĉiam estas bone krei savkopiojn de viaj datumoj. Se tiuj ĉi lastaj estas ĉifritaj, certigu, ke vi savkopias ankaŭ la ĉifroŝlosilon kune kun la datumoj.", + "This is the final warning: Do you really want to enable encryption?" : "Jen la fina averto: ĉu vi certe volas ŝalti ĉifradon?", + "Enable encryption" : "Ŝalti ĉifradon", + "No encryption module loaded, please enable an encryption module in the app menu." : "Neniu ĉifrado-modulo ŝargita. Bv. ebligi iun ĉifrado-modulon en la aplikaĵa menuo.", + "Select default encryption module:" : "Elekti defaŭltan ĉifrado-modulon:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Vi bezonas transigi vian ĉifroŝlosilon el malnova instalaĵo (ownCloud ⩽ 8.0) al la nova. Bv. ebligi la „defaŭltan ĉifrado-modulon“ kaj ruli komandlinie „occ encryption:migrate“", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Vi bezonas transigi vian ĉifroŝlosilon el malnova instalaĵo (ownCloud ⩽ 8.0) al la nova.", + "Start migration" : "Komenci transigon", + "Background jobs" : "Fonaj taskoj", + "Last job ran %s." : "Lasta tasko okazis %s.", + "Last job execution ran %s. Something seems wrong." : "Lastataska plenumo ruliĝis %s. Io ŝajne misfunkciis.", + "Background job didn’t run yet!" : "Fona tasko ankoraŭ ne ruliĝis!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Por optimuma rendimento, gravas bone agordi fonajn taskojn. Por serviloj kun multe da uzantoj kaj datumoj, „Cron“ estas rekomendita. Bv. vidi la dokumentaron por pli da informoj.", + "Pick background job setting" : "Elekti agordon pri fona tasko", + "Execute one task with each page loaded" : "Ruli unu taskon kun ĉiu ŝargo de paĝo", + "The cron.php needs to be executed by the system user \"%s\"." : "cron.php bezonas esti rulita de la sistema uzanto „%s“.", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Por ruli iton, vi bezonas la PHP-modulon pri POSIX. Vidu la {linkstart}PHP-dokumentaron{linkend} pro pli da detaloj.", + "Sharing" : "Kunhavigo", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Kiel administranto, vi povas agordi plidetale la kunhavigon. Bv. vidi la dokumentaron pri tio.", + "Allow apps to use the Share API" : "Ebligi aplikaĵojn uzi la API-on pri kunhavigo", + "Allow users to share via link" : "Permesi uzantojn kunhavigi ligile", + "Allow public uploads" : "Permesi publikajn alŝutojn", + "Always ask for a password" : "Ĉiam peti pasvorton", + "Enforce password protection" : "Devigi pasvortan protekton ", + "Set default expiration date" : "Agordi defaŭltan limdaton", + "Expire after " : "Senvalidigita post", + "days" : "tagoj", + "Enforce expiration date" : "Devigi limdaton", + "Allow resharing" : "Permesi rekunhavigon", + "Allow sharing with groups" : "Permesi kunhavigon kun grupoj", + "Restrict users to only share with users in their groups" : "Limigi uzantojn al kunhavigado kun uzantoj en iiajn grupojn", + "Exclude groups from sharing" : "Malhelpi, ke grupoj kunhavigas", + "These groups will still be able to receive shares, but not to initiate them." : "Tiu ĉi grupoj povos ricevi kunhavojn, sed ne ekigi ilin.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Permesi aŭtomatan kompletigon de uzantnomo en kunhaviga dialogo. Se tio estas malŝatita, plenaj uzantnomo aŭ retpoŝtadreso bezonos esti entajpitaj.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Montri malgarantian tekston en la publika paĝo de alŝutado (nur montrita, kiam la dosierlisto estas kaŝita).", + "This text will be shown on the public link upload page when the file list is hidden." : "Tiu ĉi teksto montriĝos en la publika paĝo de alŝutado, kiam la dosierlisto estas kaŝita.", + "Default share permissions" : "Defaŭltaj kunhavigaj permesoj", + "Personal" : "Persona", + "Administration" : "Administrado", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Programita de la {communityopen}Nextcloud-komunumo{linkclose}, la {githubopen}fontkodo{linkclose} havas {licenseopen}AGPL{linkclose}-permesilon.", + "Like our Facebook page" : "Ŝatu nian Facebook-paĝon", + "Follow us on Twitter" : "Sekvu nin per Twitter", + "Follow us on Mastodon" : "Sekvu nin per Mastodon", + "Check out our blog" : "Vizitu nian blogon", + "Subscribe to our newsletter" : "Aboni nian retan bultenon", + "Profile picture" : "Profila bildo", + "Upload new" : "Alŝuti novan", + "Select from Files" : "Elekti el dosieroj", + "Remove image" : "Forigi bildon", + "png or jpg, max. 20 MB" : "png aŭ jpg, maksimume 20 MB", + "Picture provided by original account" : "Bildo el la origina konto", + "Cancel" : "Nuligi", + "Choose as profile picture" : "Elekti kiel profilan bildon", + "Details" : "Detaloj", + "You are a member of the following groups:" : "Vi estas membro el la jenaj grupoj:", + "You are using <strong>%s</strong>" : "Vi uzas <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Vi uzas <strong>%1$s</strong> el <strong>%2$s</strong> (<strong>%3$s %%</strong>)", + "Full name" : "Plena nomo", + "No display name set" : "Neniui vidiga nomo agordita", + "Your email address" : "Via retpoŝta adreso", + "No email address set" : "Neniu retpoŝta adreso agordita", + "For password reset and notifications" : "Por pasvorta restarigo kaj sciigoj", + "Phone number" : "Telefonnumero", + "Your phone number" : "Via telefonnumero", + "Address" : "Adreso", + "Your postal address" : "Via poŝta adreso", + "Website" : "Retejo", + "It can take up to 24 hours before the account is displayed as verified." : "Ĝis 24 horoj estas kelkfoje bezonataj, antaŭ ol la konto estas markita kiel kontrolita.", + "Link https://…" : "Ligilo https://…", + "Twitter" : "Twitter", + "Twitter handle @…" : "Twitter-kontonomo @…", + "Help translate" : "Helpu traduki", + "Locale" : "Lokaĵaro", + "Current password" : "Nuna pasvorto", + "Change password" : "Ŝanĝi la pasvorton", + "Use a second factor besides your password to increase security for your account." : "Uzu duan fazon krom via pasvorto por plisekurigi vian konton.", + "Disconnect" : "Malkonekti", + "Not supported!" : "Ne subtenite!", + "Press ⌘-C to copy." : "Premu ⌘-C por kopii.", + "Press Ctrl-C to copy." : "Premu Ctrl-C por kopii.", + "Error while loading browser sessions and device tokens" : "Erara dum ŝargo de returmilaj seancoj kaj aparataj ĵetonoj", + "Store credentials" : "Memorigi akreditilojn", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php estas registrita ĉe perreta „cron“-servo por esti vokita ĉiujn 15 minutojn per HTTP.", + "Use system cron service to call the cron.php file every 15 minutes." : "Uzu la sisteman „cron“-servon por voki cron.php ĉiujn 15 minutojn.", + "Follow us on Google+" : "Sekvu nin per Google+" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/eo.json b/apps/settings/l10n/eo.json new file mode 100644 index 00000000000..4c3eb35e830 --- /dev/null +++ b/apps/settings/l10n/eo.json @@ -0,0 +1,699 @@ +{ "translations": { + "{actor} added you to group {group}" : "{actor} aldonis vin al grupo {group}", + "You added {user} to group {group}" : "Vi aldonis uzanton {user} al grupo {group}", + "{actor} added {user} to group {group}" : "{actor} aldonis uzanton {user} al grupo {group}", + "An administrator added you to group {group}" : "Administranto aldonis vin al grupo {group}", + "An administrator added {user} to group {group}" : "Administranto aldonis uzanton {user} al grupo {group}", + "{actor} removed you from group {group}" : "{actor} forigis vin el grupo {group}", + "You removed {user} from group {group}" : "Vi forigis uzanton {user} el grupo {group}", + "{actor} removed {user} from group {group}" : "{actor} forigi uzanton {user} el grupo {group}", + "An administrator removed you from group {group}" : "Administranto forigis vin el grupo {group}", + "An administrator removed {user} from group {group}" : "Administranto forigis uzanton {user} el grupo {group}", + "Your <strong>group memberships</strong> were modified" : "Viaj <strong>grupaj membrecoj</strong> modifiĝis", + "{actor} changed your password" : "{actor} ŝanĝis vian pasvorton", + "You changed your password" : "Vi ŝanĝis vian pasvorton", + "Your password was reset by an administrator" : "Vian pasvorton restarigis administranton", + "{actor} changed your email address" : "{actor} ŝanĝis vian retpoŝtadreson", + "You changed your email address" : "Vi ŝanĝis vian retpoŝtadreson", + "Your email address was changed by an administrator" : "Administranto ŝanĝis vian retpoŝtadreson", + "You created app password \"{token}\"" : "Vi kreis aplikaĵan pasvorton „{token}“", + "You deleted app password \"{token}\"" : "Vi forigis aplikaĵan pasvorton „{token}“", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Vi alinomis aplikaĵan pasvorton „{token}“ al „{newToken}“", + "You granted filesystem access to app password \"{token}\"" : "Vi permesis aliron al dosiersistemo al aplikaĵa pasvorton „{token}“", + "You revoked filesystem access from app password \"{token}\"" : "Vi senvalidigis aliron al dosiersistemo el aplikaĵa pasvorton „{token}“", + "Security" : "Sekurigo", + "You successfully logged in using two-factor authentication (%1$s)" : "Vi sukcese ensalutis uzante dufazan aŭtentigon (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Ensaluta provo uzante dufazan aŭtentigo malsukcesis (%1$s)", + "Remote wipe was started on %1$s" : "Defora forviŝado komenciĝis ĉe %1$s", + "Remote wipe has finished on %1$s" : "Defora forviŝado finis ĉe %1$s", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Via <strong>pasvorto</strong> aŭ <strong>retpoŝtadreso</strong> estis modifita", + "Couldn't remove app." : "Ne eblis forigi la aplikaĵon.", + "Couldn't update app." : "Ne eblis ĝisdatigi la aplikaĵon.", + "Wrong password" : "Neĝusta pasvorto", + "Saved" : "Konservita", + "No user supplied" : "Neniu uzanto provizita", + "Unable to change password" : "Ne eblis ŝanĝi la pasvorton", + "Authentication error" : "Aŭtentiga eraro", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Bonvolu doni reekhava pasvorton de administranto; aliokaze, ĉiuj uzanto-datumoj perdiĝos.", + "Wrong admin recovery password. Please check the password and try again." : "Neĝusta reekhava pasvorto de administranto. Bv. kontroli la pasvorton kaj reprovi.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Servilo ne subtenas pasvorto-ŝanĝon, tamen ĉifroŝlosilo de la uzanto estis ĝisdatigita.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "instalado kaj ĝisdatigo de aplikaĵoj per aplikaĵejo aŭ Federnuba Kunhavado", + "Federated Cloud Sharing" : "Federnuba kunhavado", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL uzas neĝisdatan version %1$s (%2$s). Bv. ĝisdatigi vian operaciumon aŭ programon, aŭ trajtoj kiel %3$s ne plu funkcios fidinde.", + "Invalid SMTP password." : "Nevalida SMTP-pasvorto.", + "Email setting test" : "Provo de retpoŝtagordo", + "Well done, %s!" : "Bonege, %s!", + "If you received this email, the email configuration seems to be correct." : "Se vi ricevis tiun ĉi retmesaĝon, retpoŝta agordo estas ĝusta, espereble.", + "Email could not be sent. Check your mail server log" : "Retmesaĝo ne eblis esti sendita. Kontrolu vian servil-protokolon.", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Problem dum sendado de la retmesaĝo. Bv. ekzameni viajn agordojn. (Eraro: %s)", + "You need to set your user email before being able to send test emails." : "Vi bezonas agordi vian retpoŝtadreso, antaŭ ol povi sendi provan retmesaĝon.", + "Invalid mail address" : "Nevalida retpoŝtadreso", + "Settings saved" : "Agordoj konservitaj", + "Unable to change full name" : "Ne eblis ŝanĝi la plenan nomon", + "Unable to change email address" : "Ne eblis ŝanĝi retpoŝtadreson", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Por kontroli vian Twitter-konton, bv. afiŝi la jenan pepaĵon („tweet“) (certigu afiŝi ĝin sen iu linisalto):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Por kontroli vian retejon, metu la jenan enhavon en la radikon de via retejo en „.well-known/CloudIdVerificationCode.txt“ (certigu, ke la tuta teksto estas unulinia):", + "%1$s changed your password on %2$s." : "%1$s ŝanĝis vian pasvorton ĉe %2$s.", + "Your password on %s was changed." : "Via pasvorto ĉe %s estis ŝanĝita.", + "Your password on %s was reset by an administrator." : "Via pasvorto ĉe %s estis restartigita de administranto.", + "Password for %1$s changed on %2$s" : "Pasvorto por %1$s ŝanĝita ĉe %2$s", + "Password changed for %s" : "Pasvorto ŝanĝita por %s", + "If you did not request this, please contact an administrator." : "Se vi mem ne petis tion, bv. kontakti vian administranton.", + "Your email address on %s was changed." : "Via retpoŝtadreso ĉe %s estis ŝanĝita.", + "Your email address on %s was changed by an administrator." : "Via retpoŝtadreso ĉe %s estis ŝanĝita de administranto.", + "Email address for %1$s changed on %2$s" : "Retpoŝtadreso de %1$s estis ŝanĝita. ĉe %2$s", + "Email address changed for %s" : "Retpoŝtadreso ŝanĝita por %s", + "The new email address is %s" : "La nova retpoŝtadreso estas %s", + "Your %s account was created" : "Via konto %s kreiĝis", + "Welcome aboard" : "Bonvenon", + "Welcome aboard %s" : "Bonvenon %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Bonvenon ĉe via konto %s; vi povas aldoni, protekti kaj kunhavigi viajn datumojn.", + "Your username is: %s" : "Via uzantnomo estas: %s", + "Set your password" : "Agordi vian pasvorton", + "Go to %s" : "Iri al %s", + "Install Client" : "Instali kienton", + "Logged in user must be a subadmin" : "La konektita uzanto estu subadministranto.", + "Create" : "Krei", + "Change" : "Ŝanĝi", + "Delete" : "Forigi", + "Share" : "Kunhavigi", + "Unlimited" : "Senlima", + "Verifying" : "Kontrolado", + "Verifying …" : "Kontrolante...", + "Verify" : "Kontroli", + "Migration in progress. Please wait until the migration is finished" : "Transmeto faranta. Bv. atendi ĝis la fino de la transmeto.", + "Migration started …" : "Ektransmetante...", + "Not saved" : "Ne konservita", + "Sending…" : "Sendante...", + "Email sent" : "La retpoŝtaĵo sendiĝis", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Eraro okazis. Bv. alŝuti askian PEM-atestilon.", + "Valid until {date}" : "Valida ĝis {date}", + "Local" : "Loka", + "Private" : "Privata", + "Only visible to local users" : "Nur videbla de lokaj uzantoj", + "Only visible to you" : "Nur videbla de vi", + "Contacts" : "Kontaktoj", + "Visible to local users and to trusted servers" : "Videbla de lokaj uzantoj kaj de fidindaj serviloj", + "Public" : "Publika", + "Will be synced to a global and public address book" : "Sinkroniĝos al malloka kaj publika adresaro", + "Very weak password" : "Tre malforta pasvorto", + "Weak password" : "Malforta pasvorto", + "So-so password" : "Mezbona pasvorto", + "Good password" : "Bona pasvorto", + "Strong password" : "Forta pasvorto", + "An error occurred while changing your language. Please reload the page and try again." : "Eraro okazis dum ŝanĝo de lingvo. Bv. reŝargi la paĝon kaj provi ree.", + "An error occurred while changing your locale. Please reload the page and try again." : "Eraro okazis dum ŝanĝo de lokaĵaro. Bv. reŝargi la paĝon kaj provi ree.", + "Select a profile picture" : "Elekti profilan bildon", + "Week starts on {fdow}" : "Semajno komencas je {fdow}", + "Groups" : "Grupoj", + "Group list is empty" : "Gruplisto malpenas", + "Unable to retrieve the group list" : "Ne eblis ricevi grupliston", + "Afrikaans (Namibia)" : "Afrikansa (Namibio)", + "Afrikaans (South Africa)" : "Afrikansa (Sud-Afriko)", + "Afrikaans" : "Afrikansa", + "Akan (Ghana)" : "Akana (Ganao)", + "Akan" : "Akana", + "Albanian (Albania)" : "Albana (Albanujo)", + "Albanian" : "Albana", + "Amharic (Ethiopia)" : "Amhara (Etiopujo)", + "Amharic" : "Amhara", + "Arabic (Algeria)" : "Araba (Alĝerio)", + "Arabic (Bahrain)" : "Araba (Barejno)", + "Arabic (Egypt)" : "Araba (Egiptujo)", + "Arabic (Iraq)" : "Araba (Irako)", + "Arabic (Jordan)" : "Araba (Jordanio)", + "Arabic (Kuwait)" : "Araba (Kuvajto)", + "Arabic (Lebanon)" : "Araba (Libano)", + "Arabic (Libya)" : "Araba (Libio)", + "Arabic (Morocco)" : "Araba (Maroko)", + "Arabic (Oman)" : "Araba (Omano)", + "Arabic (Qatar)" : "Araba (Kataro)", + "Arabic (Saudi Arabia)" : "Araba (Sauda Arabujo)", + "Arabic (Sudan)" : "Araba (Sudano)", + "Arabic (Syria)" : "Araba (Sirio)", + "Arabic (Tunisia)" : "Araba (Tunizio)", + "Arabic (United Arab Emirates)" : "Araba (Unuiĝintaj Arabaj Emirlandoj)", + "Arabic (Yemen)" : "Araba (Jemeno)", + "Arabic" : "Araba", + "Armenian (Armenia)" : "Armena (Armenujo)", + "Armenian" : "Armena", + "Assamese (India)" : "Asama (Barato)", + "Assamese" : "Asama", + "Asu (Tanzania)" : "Parea (Tanzanio)", + "Asu" : "Parea", + "Azerbaijani (Cyrillic)" : "Azerbajĝana (cirila)", + "Azerbaijani (Cyrillic, Azerbaijan)" : "Azerbajĝana (cirila, Azerbajĝano)", + "Azerbaijani (Latin)" : "Azerbajĝana (latino)", + "Azerbaijani (Latin, Azerbaijan)" : "Azerbajĝana (latino, Azerbajĝano)", + "Azerbaijani" : "Azerbajĝana", + "Bambara (Mali)" : "Bambara (Malio)", + "Bambara" : "Bambara", + "Basque (Spain)" : "Eŭska (Hispanujo)", + "Basque" : "Eŭska", + "Belarusian (Belarus)" : "Belorusa (Belorusujo)", + "Belarusian" : "Belorusa", + "Bemba (Zambia)" : "Bemba (Zambio)", + "Bemba" : "Bemba", + "Bena (Tanzania)" : "Bena (Tanzanio)", + "Bena" : "Bena", + "Bengali (Bangladesh)" : "Bengala (Bangladeŝo)", + "Bengali (India)" : "Bengala (Barato)", + "Bengali" : "Bengala", + "Bosnian (Bosnia and Herzegovina)" : "Bosna (Bosnujo kaj Hercegovino)", + "Bosnian" : "Bosna", + "Bulgarian (Bulgaria)" : "Bulgara (Bulgarujo)", + "Bulgarian" : "Bulgara", + "Burmese (Myanmar [Burma])" : "Birma (Birmo)", + "Burmese" : "Birma", + "Catalan (Spain)" : "Kataluna (Hispanujo)", + "Catalan" : "Kataluna", + "Central Morocco Tamazight (Latin)" : "Berbera de centra Maroko (latina)", + "Central Morocco Tamazight (Latin, Morocco)" : "Berbera de centra Maroko (latina, Maroko)", + "Central Morocco Tamazight" : "Berbera de centra Maroko", + "Cherokee (United States)" : "Ĉeroka (Usono)", + "Cherokee" : "Ĉeroka", + "Chiga (Uganda)" : "Kigaa (Ugando)", + "Chiga" : "Kigaa", + "Chinese (Simplified Han)" : "Ĉina (simpligita ĉina skribo)", + "Chinese (Simplified Han, China)" : "Ĉina (simpligita ĉina skribo, Ĉinujo)", + "Chinese (Simplified Han, Hong Kong SAR China)" : "Ĉina (simpligita ĉina skribo, speciala administra regiono Honkongo, Ĉinujo)", + "Chinese (Simplified Han, Macau SAR China)" : "Ĉina (simpligita ĉina skribo, speciala administra regiono Makao, Ĉinujo)", + "Chinese (Simplified Han, Singapore)" : "Ĉina (simpligita ĉina skribo, Singapuro)", + "Chinese (Traditional Han)" : "Ĉina (tradicia ĉina skribo)", + "Chinese (Traditional Han, Hong Kong SAR China)" : "Ĉina (tradicia ĉina skribo, speciala administra regiono Honkongo, Ĉinujo)", + "Chinese (Traditional Han, Macau SAR China)" : "Ĉina (tradicia ĉina skribo, speciala administra regiono Makao, Ĉinujo)", + "Chinese (Traditional Han, Taiwan)" : "Ĉina (tradicia ĉina skribo, Tajvano)", + "Chinese" : "Ĉina", + "Cornish (United Kingdom)" : "Kornvala (Unuiĝinta Reĝlando)", + "Cornish" : "Kornvala", + "Croatian (Croatia)" : "Kroata (Kroatujo)", + "Croatian" : "Kroata", + "Czech (Czech Republic)" : "Ĉeĥa (Ĉeĥujo)", + "Czech" : "Ĉeĥa", + "Danish (Denmark)" : "Dana (Danujo)", + "Danish" : "Dana", + "Dutch (Belgium)" : "Nederlanda (Belgujo)", + "Dutch (Netherlands)" : "Nederlando (Nederlando)", + "Dutch" : "Nederlanda", + "Embu (Kenya)" : "Embua (Kenjo)", + "Embu" : "Embua", + "English (American Samoa)" : "Angla (Usona Samoo)", + "English (Australia)" : "Angla (Aŭstralio)", + "English (Belgium)" : "Angla (Belgujo)", + "English (Belize)" : "Angla (Belizo)", + "English (Botswana)" : "Angla (Bocvano)", + "English (Canada)" : "Angla (Kanado)", + "English (Guam)" : "Angla (Gvamo)", + "English (Hong Kong SAR China)" : "Angla (speciala administra regiono Honkongo, Ĉinujo)", + "English (India)" : "Angla (Barato)", + "English (Ireland)" : "Angla (Irlando)", + "English (Jamaica)" : "Angla (Jamajko)", + "English (Malta)" : "Angla (Malto)", + "English (Marshall Islands)" : "Angla (Marŝala Insularo)", + "English (Mauritius)" : "Angla (Maŭricio)", + "English (Namibia)" : "Angla (Namibio)", + "English (New Zealand)" : "Angla (Novzelando)", + "English (Northern Mariana Islands)" : "Angla (Nord-Marianoj)", + "English (Pakistan)" : "Angla (Pakistano)", + "English (Philippines)" : "Angla (Filipinoj)", + "English (Singapore)" : "Angla (Singapuro)", + "English (South Africa)" : "Angla (Sudafriko)", + "English (Trinidad and Tobago)" : "Angla (Trinidado kaj Tobago)", + "English (U.S. Minor Outlying Islands)" : "Angla (Usonaj Malgrandaj Insuloj)", + "English (U.S. Virgin Islands)" : "Angla (Usonaj Virgulinsuloj)", + "English (United Kingdom)" : "Angla (Unuiĝinta Reĝlando)", + "English (United States)" : "Angla (Usono)", + "English (Zimbabwe)" : "Angla (Zimbabvo)", + "English" : "Angla", + "Esperanto" : "Esperanto", + "Estonian (Estonia)" : "Estona (Estonujo)", + "Estonian" : "Estona", + "Ewe (Ghana)" : "Evea (Ganao)", + "Ewe (Togo)" : "Evea (Togolando)", + "Ewe" : "Evea", + "Faroese (Faroe Islands)" : "Feroa (Ferooj)", + "Faroese" : "Feroa", + "Filipino (Philippines)" : "Filipina (Filipinoj)", + "Filipino" : "Filipina", + "Finnish (Finland)" : "Finna (Finnlando)", + "Finnish" : "Finna", + "French (Belgium)" : "Franca (Belgujo)", + "French (Benin)" : "Franca (Benino)", + "French (Burkina Faso)" : "Franca (Burkino)", + "French (Burundi)" : "Franca (Burundo)", + "French (Cameroon)" : "Franca (Kameruno)", + "French (Canada)" : "Franca (Kanado)", + "French (Central African Republic)" : "Franca (Centr-Afriko)", + "French (Chad)" : "Franca (Ĉado)", + "French (Comoros)" : "Franca (Komoroj)", + "French (Congo - Brazzaville)" : "Franca (Kongo Brazavila)", + "French (Congo - Kinshasa)" : "France (Kongo Kinŝasa)", + "French (Côte d’Ivoire)" : "Franca (Ebur-Bordo)", + "French (Djibouti)" : "Franca (Ĝibutio)", + "French (Equatorial Guinea)" : "Franca (Ekvatora Gvineo)", + "French (France)" : "Franca (Francujo)", + "French (Gabon)" : "Franca (Gabono)", + "French (Guadeloupe)" : "Franca (Gvadelupo)", + "French (Guinea)" : "Franca (Gviano)", + "French (Luxembourg)" : "Franca (Luksemburgo)", + "French (Madagascar)" : "Franca (Madagaskaro)", + "French (Mali)" : "Franca (Malio)", + "French (Martinique)" : "Franca (Martiniko)", + "French (Monaco)" : "Franca (Monako)", + "French (Niger)" : "Franca (Niĝero)", + "French (Rwanda)" : "Franca (Ruando)", + "French (Réunion)" : "Franca (Reunio)", + "French (Saint Barthélemy)" : "Franca (Sankta Bartolomeo)", + "French (Saint Martin)" : "Franca (Sankta Marteno)", + "French (Senegal)" : "Franca (Senegalo)", + "French (Switzerland)" : "Franca (Svislando)", + "French (Togo)" : "Franca (Togolando)", + "French" : "Franca", + "Fulah (Senegal)" : "Fula (Senegalo)", + "Fulah" : "Fula", + "Galician (Spain)" : "Galega (Hispanujo)", + "Galician" : "Galega", + "Ganda (Uganda)" : "Ganda (Ugando)", + "Ganda" : "Ganda", + "Georgian (Georgia)" : "Kartvela (Kvartelujo)", + "Georgian" : "Kartvela", + "German (Austria)" : "Germana (Aŭstrujo)", + "German (Belgium)" : "Germana (Belgujo)", + "German (Germany)" : "Germana (Germanujo)", + "German (Liechtenstein)" : "Germana (Liĥtenŝtejno)", + "German (Luxembourg)" : "Germana (Luksemburgo)", + "German (Switzerland)" : "Germana (Svislando)", + "German" : "Germana", + "Greek (Cyprus)" : "Greka (Kipro)", + "Greek (Greece)" : "Greka (Grekujo)", + "Greek" : "Greka", + "Gujarati (India)" : "Guĝarata (Barato)", + "Gujarati" : "Guĝarata", + "Gusii (Kenya)" : "Gusia (Kenjo)", + "Gusii" : "Gusia", + "Hausa (Latin)" : "Haŭsa (latina)", + "Hausa (Latin, Ghana)" : "Haŭsa (latina, Ganao)", + "Hausa (Latin, Niger)" : "Haŭsa (latina, Niĝero)", + "Hausa (Latin, Nigeria)" : "Haŭsa (latina, Niĝerio)", + "Hausa" : "Haŭsa", + "Hawaiian (United States)" : "Havaja (Usono)", + "Hawaiian" : "Havaja", + "Hebrew (Israel)" : "Hebrea (Israelo)", + "Hebrew" : "Hebrea", + "Hindi (India)" : "Hindia (Barato)", + "Hindi" : "Hinda", + "Hungarian (Hungary)" : "Hungara (Hungarujo)", + "Hungarian" : "Hungara", + "Icelandic (Iceland)" : "Islanda (Islando)", + "Icelandic" : "Islanda", + "Igbo (Nigeria)" : "Igba (Niĝerio)", + "Igbo" : "Igba", + "Indonesian (Indonesia)" : "Indonezia (Indonezio)", + "Indonesian" : "Indonezia", + "Irish (Ireland)" : "Irlanda (Irlando)", + "Irish" : "Irlanda", + "Italian (Italy)" : "Itala (Italujo)", + "Italian (Switzerland)" : "Itala (Svislando)", + "Italian" : "Itala", + "Japanese (Japan)" : "Japana (Japanujo)", + "Japanese" : "Japana", + "Kabuverdianu (Cape Verde)" : "Koboverda (Kaboverdo)", + "Kabuverdianu" : "Kaboverda", + "Kabyle (Algeria)" : "Kabila (Alĝerio)", + "Kabyle" : "Kabila", + "Kalaallisut (Greenland)" : "Okcidentgronlanda (Gronlando)", + "Kalaallisut" : "Okcidentgronlanda", + "Kalenjin (Kenya)" : "Kalenjin (Kenjo)", + "Kalenjin" : "Kalenjin", + "Kamba (Kenya)" : "Kambaa (Kenjo)", + "Kamba" : "Kambaa", + "Kannada (India)" : "Kanara (Barato)", + "Kannada" : "Kannada", + "Kazakh (Cyrillic)" : "Kazaĥa (cirila)", + "Kazakh (Cyrillic, Kazakhstan)" : "Kazaĥa (cirila, Kazaĥujo)", + "Kazakh" : "Kazaĥa", + "Khmer (Cambodia)" : "Kmera (Kamboĝo)", + "Khmer" : "Kmera", + "Kikuyu (Kenya)" : "Kikuja (Kenjo)", + "Kikuyu" : "Kikuja", + "Kinyarwanda (Rwanda)" : "Ruanda (Ruando)", + "Kinyarwanda" : "Ruanda", + "Konkani (India)" : "Konkana (Barato)", + "Konkani" : "Konkana", + "Korean (South Korea)" : "Korea (Sud-Koreujo)", + "Korean" : "Korea", + "Koyra Chiini (Mali)" : "Okcidenta songhaja (Malio)", + "Koyra Chiini" : "Okcidenta songhaja", + "Koyraboro Senni (Mali)" : "Orienta songhaja (Malio)", + "Koyraboro Senni" : "Orienta songhaja", + "Langi (Tanzania)" : "Rangia (Tanzanio)", + "Langi" : "Rangia", + "Latvian (Latvia)" : "Latva (Latvujo)", + "Latvian" : "Latva", + "Lithuanian (Lithuania)" : "Litova (Litovujo)", + "Lithuanian" : "Litova", + "Luo (Kenya)" : "Lua (Kenjo)", + "Luo" : "Lua", + "Luyia (Kenya)" : "Luhja (Kenjo)", + "Luyia" : "Luhja", + "Macedonian (Macedonia)" : "Makedona (Makedonujo)", + "Macedonian" : "Makedona", + "Machame (Tanzania)" : "Machame (Tanzanio)", + "Machame" : "Machame", + "Makonde (Tanzania)" : "Makonda (Tanzanio)", + "Makonde" : "Makonda", + "Malagasy (Madagascar)" : "Malagasa (Madagaskaro)", + "Malagasy" : "Malagasa", + "Malay (Brunei)" : "Malaja (Brunejo)", + "Malay (Malaysia)" : "Malaja (Malajzio)", + "Malay" : "Malaja", + "Malayalam (India)" : "Malajalama (Barato)", + "Malayalam" : "Malajalama", + "Maltese (Malta)" : "Malta (Malto)", + "Maltese" : "Malta", + "Manx (United Kingdom)" : "Manksa (Unuiĝinta Reĝlando)", + "Manx" : "Manksa", + "Marathi (India)" : "Marata (Barato)", + "Marathi" : "Marata", + "Masai (Kenya)" : "Masaja (Kenjo)", + "Masai (Tanzania)" : "Masaja (Tanzanio)", + "Masai" : "Masaja", + "Meru (Kenya)" : "Merua (Kenjo)", + "Meru" : "Merua", + "Morisyen (Mauritius)" : "Maŭrica (Maŭricio)", + "Morisyen" : "Maŭrica", + "Nama (Namibia)" : "Nama (Namibio)", + "Nama" : "Nama", + "Nepali (India)" : "Nepala (Barato)", + "Nepali (Nepal)" : "Nepala (Nepalo)", + "Nepali" : "Nepala", + "North Ndebele (Zimbabwe)" : "Norda ndebela (Zimbabvo)", + "North Ndebele" : "Ndebela norda", + "Norwegian Bokmål (Norway)" : "Norvega bukmolo (Norvegujo)", + "Norwegian Bokmål" : "Norvega bukmolo", + "Norwegian Nynorsk (Norway)" : "Norvega njunoŝko (Norvegujo)", + "Norwegian Nynorsk" : "Norvega njunoŝko", + "Oriya" : "Orijo", + "Oromo" : "Oroma", + "Persian" : "Persa", + "Polish" : "Pola", + "Portuguese" : "Portugala", + "Punjabi" : "Panĝaba", + "Romansh" : "Romanĉa", + "Russian" : "Rusa", + "Sango" : "Sangoa", + "Shona" : "Ŝona", + "Sichuan Yi" : "Siĉua jia", + "Slovak" : "Slovaka", + "Slovenian" : "Slovena", + "Somali" : "Somala", + "Spanish" : "Hispana", + "Swahili" : "Svahila", + "Swedish" : "Sveda", + "Tamil" : "Tamila", + "Telugu" : "Telugua", + "Thai" : "Taja", + "Tibetan" : "Tibeta", + "Tigrinya" : "Tigraja", + "Tonga" : "Tonga", + "Turkish" : "Turka", + "Ukrainian" : "Ukraina", + "Urdu" : "Urduo", + "Uzbek" : "Uzbeka", + "Vietnamese" : "Vjetnama", + "Welsh" : "Kimra", + "Yoruba" : "Joruba", + "Zulu" : "Zulua", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Dufaza aŭtentigo povas esti devigata al ĉiuj\tuzantoj kaj certaj grupoj. Se ili ne havas dufazan provizanton agorditan, ili ne povos ensaluti.", + "Enforce two-factor authentication" : "Devigi dufazan aŭtentigon", + "Limit to groups" : "Limigi al grupoj", + "Enforcement of two-factor authentication can be set for certain groups only." : "Devigo de dufaza aŭtentigo povas ekzisti nur por certaj grupoj.", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "Dufaza aŭtentigo estas devigata por ĉiuj\tmembroj de la jenaj grupoj.", + "Enforced groups" : "Devigataj grupoj", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "Dufaza aŭtentigo ne estas devigata por ĉiuj\tmembroj de la jenaj grupoj.", + "Excluded groups" : "Nedevigataj grupoj", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "Kiam grupoj estas aŭ elektitaj aŭ nedevigataj, ili sekvas la jenan logikon por decidi, ĉu uzanto estas devigata uzi dufazan aŭtentigon (2FA). Se neniu grupo estas elektita, 2FA estas devigata por ĉiuj escepte membrojn de la nedevigataj grupoj. Se uzanto estas samtempe en elektita kaj nedevigata grupo, la elektita ekprioritatas kaj 2FA estas devigata.", + "Save changes" : "Konservi modifojn", + "Marked for remote wipe" : "Elektita por fora forviŝado", + "Device settings" : "Aparataj agordoj", + "Allow filesystem access" : "Permesi aliron al dosiersistemo", + "Rename" : "Alinomi", + "Revoke" : "Senvalidigi", + "Wipe device" : "Forviŝi aparaton", + "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Senvalido de tiu ĉi ĵetono eble malhelpos forviŝadon de via aparato, se ĝi ankoraŭ ne komencis forviŝadon.", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome por Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "iOS_aplikaĵo Nextcloud", + "Nextcloud Android app" : "Android-aplikaĵo Nextcloud", + "Nextcloud Talk for iOS" : "Nextcloud Talk por iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk por Android", + "Sync client - {os}" : "Sinkroniga kliento — {os}", + "This session" : "Tiu ĉi seanco", + "Device" : "Aparato", + "Last activity" : "Lasta aktivaĵo", + "Devices & sessions" : "Aparatoj kaj seancoj", + "Web, desktop and mobile clients currently logged in to your account." : "Reta, surtabla kaj portebla klientoj nun konektitaj al via konto.", + "Do you really want to wipe your data from this device?" : "Ĉu vi vere volas forviŝi viajn datumojn el tiu ĉi aparato?", + "Confirm wipe" : "Konfirmi forviŝadon", + "Error while creating device token" : "Eraro dum kreo de aparata ĵetono", + "Error while updating device token scope" : "Eraro dum ĝisdatigo de la amplekso de la aparataj ĵetonoj", + "Error while updating device token name" : "Eraro dum ĝisdatigo de la nomo de la aparataj ĵetonoj", + "Error while deleting the token" : "Eraro dum forigado de la ĵetono", + "Error while wiping the device with the token" : "Eraro dum forviŝado de la aparato kun la ĵetono", + "App name" : "Aplikaĵa nomo", + "Create new app password" : "Krei novan aplikaĵan pasvorton", + "Use the credentials below to configure your app or device." : "Uzu la ĉi-subajn akreditilojn por agordi vian aplikaĵon aŭ aparaton.", + "For security reasons this password will only be shown once." : "Pro sekurigaj kialoj, tiu ĉi pasvorto montriĝos nur unufoje.", + "Username" : "Uzantonomo", + "Password" : "Pasvorto", + "Done" : "Farita", + "Show QR code for mobile apps" : "Montri rapidrespondan (QR) kodon por porteblaj aplikaĵoj", + "Copied!" : "Kopiita!", + "Copy" : "Kopii", + "Could not copy app password. Please copy it manually." : "Ne eblis kopii la aplikaĵan pasvorton. Bv. kopii ĝin permane.", + "This app is supported via your current Nextcloud subscription." : "Tiu aplikaĵo estas subtenita per via nuna Nextcloud-abono.", + "Supported" : "Subtenite", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Oficialaj aplikaĵoj estas programataj de kaj ene de la komunumo. Ili alportas kernajn trajtojn kaj ili povas tuj uziĝi.", + "Official" : "Oficiala", + "by" : "de", + "Update to {version}" : "Ĝisdatigi al {version}", + "Remove" : "Forigi", + "Disable" : "Malŝalti", + "All" : "Ĉio", + "Limit app usage to groups" : "Limigi aplikaĵan uzon al grupoj", + "No results" : "Neniu rezulto", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Tiu aplikaĵo ne postulas minimuman Nextcloud-version. Tio estos eraro en la estonteco.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Tiu aplikaĵo ne postulas maksimuman Nextcloud-version. Tio estos eraro en la estonteco.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Tiu aplikaĵo ne instaliĝas, ĉar la jenaj dependecoj ne plenumiĝas:", + "View in store" : "Vidi en butiko", + "Visit website" : "Viziti retejon", + "Report a bug" : "Raporti problemon", + "User documentation" : "Dokumentaro por uzanto", + "Admin documentation" : "Dokumentaro por administranto", + "Developer documentation" : "Dokumentaro por programisto", + "Update to {update}" : "Ĝisdatigi al {update}", + "Results from other categories" : "Rezultoj el aliaj kategorioj", + "No apps found for your version" : "Neniu aplikaĵo trovita por via versio", + "Disable all" : "Malŝalti ĉiujn", + "Enable all" : "Ŝalti ĉiujn", + "Download and enable" : "Elŝuti kaj ŝalti", + "Enable" : "Ŝalti", + "Enable untested app" : "Ŝalti netestitan aplikaĵon", + "The app will be downloaded from the app store" : "La aplikaĵo elŝutiĝos el la aplikaĵejo", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Tiu aplikaĵo ne kongruas kun via Nextcloud-versio. Se vi daŭrigas, vi tamen povos instali ĝin, sed eble tiu aplikaĵo ne funkcios bone.", + "You do not have permissions to see the details of this user" : "Vi ne rajtas vidi detalojn pri tiu ĉu uzanto", + "The backend does not support changing the display name" : "La servilo ne subtenas ŝanĝi la vidigan nomon", + "New password" : "Nova pasvorto", + "Add user in group" : "Aldoni uzanton al grupo", + "Set user as admin for" : "Agordi uzanton kiel administranto por", + "Select user quota" : "Elekti uzant-kvoton", + "No language set" : "Neniu lingvo agordita", + "Never" : "Neniam", + "Delete user" : "Forigi uzanton", + "Disable user" : "Malebligi uzanton", + "Enable user" : "Ebligi uzanton", + "Resend welcome email" : "Resendi bonvenan retpoŝtmesaĝon", + "{size} used" : "{size} uzataj", + "Welcome mail sent!" : "Bonvena retpoŝtmesaĝo sendita!", + "Display name" : "Vidiga nomo", + "Email" : "Retpoŝtadreso", + "Group admin for" : "Grupadministranto por", + "Quota" : "Kvoto", + "Language" : "Lingvo", + "Storage location" : "Konserveja loko", + "User backend" : "Uzanto-loko", + "Last login" : "Lasta ensaluto", + "Will be autogenerated" : "Estos memgenerita", + "Default language" : "Defaŭlta lingvo", + "Add a new user" : "Aldoni novan uzanton", + "No users in here" : "Neniu uzanto ĉi tie", + "Default quota" : "Defaŭlta kvoto", + "Password change is disabled because the master key is disabled" : "Pasvorta ŝanĝo ne eblas, ĉar la ĉefa ŝlosilo estas neebligita", + "Common languages" : "Ordinaraj lingvoj", + "All languages" : "Ĉiuj lingvoj", + "Your apps" : "Viaj aplikaĵoj", + "Active apps" : "Aktivaj aplikaĵoj", + "Disabled apps" : "Malŝaltitaj aplikaĵoj", + "Updates" : "Ĝisdatigoj", + "App bundles" : "Aplikaĵaj kuniĝoj", + "{license}-licensed" : "Permesilo: {license}", + "New user" : "Nova uzanto", + "Default quota:" : "Defaŭlta kvoto:", + "Select default quota" : "Elekti defaŭltan kvoton", + "Show Languages" : "Montri lingvojn", + "Show last login" : "Montri lastan ensaluton", + "Show user backend" : "Montri uzantolokon", + "Show storage path" : "Montri vojon al konservejo", + "You are about to remove the group {group}. The users will NOT be deleted." : "Vi tuj forigos grupon {group}. La uzantoj NE estos forigitaj.", + "Please confirm the group removal " : "Bv. konfirmi forigadon de la grupo", + "Remove group" : "Forigi grupon", + "Admins" : "Administrantoj", + "Disabled users" : "Malebligitaj uzantoj", + "Everyone" : "Ĉiuj", + "Add group" : "Aldoni grupon", + "An error occured during the request. Unable to proceed." : "Eraro okazis dum peto. Ne eblas plui.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "La aplikaĵo estis ŝaltita, sed ĝi bezonas ĝisdatiĝi. Vi estos direktita al ĝisdatiga paĝon post 5 sekundoj.", + "App update" : "Aplikaĵa ĝisdatigo", + "Error: This app can not be enabled because it makes the server unstable" : "Eraro: tiu ĉi aplikaĵo ne povas esti ŝaltita, ĉar ĝi malstabiligus la servilon.", + "SSL Root Certificates" : "Radikaj SSL-atestiloj", + "Common Name" : "Komuna nomo", + "Valid until" : "Valida ĝis", + "Issued By" : "Eldonita de", + "Valid until %s" : "Valida ĝis %s", + "Import root certificate" : "Importi radikan atestilon", + "Administrator documentation" : "Dokumentaro por administranto", + "Documentation" : "Dokumentaro", + "Forum" : "Forumo", + "None" : "Nenio", + "Login" : "Ensaluti", + "Plain" : "Plena", + "NT LAN Manager" : "NT LAN Manager", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Retpoŝtoservilo", + "Open documentation" : "Malfermi la dokumentaron", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Gravas agordi tiun ĉi servilon por povi sendi retpoŝtmesaĝojn, ekz. por restarigo de pasvorto aŭ sciigoj.", + "Send mode" : "Kiel sendi", + "Encryption" : "Ĉifrado", + "Sendmail mode" : "Sendmail-reĝimo", + "From address" : "El adreso", + "mail" : "retpoŝtadreso", + "Authentication method" : "Aŭtentiga metodo", + "Authentication required" : "Aŭtentiĝo nepras", + "Server address" : "Servila adreso", + "Port" : "Pordo", + "Credentials" : "Aŭtentigiloj", + "SMTP Username" : "SMTP-uzantonomo", + "SMTP Password" : "SMTP-pasvorto", + "Test email settings" : "Provi retpoŝtagordon", + "Send email" : "Sendi retpoŝtmesaĝon", + "Security & setup warnings" : "Avertoj pri sekureco kaj agordoj", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Gravas por sekureco kaj rapideco de via servilo, ke ĉio estu agordita bone. Por helpi vin pri tio, ni faras kelkajn aŭtomatajn testojn. Bv. vidi la dokumentaron por pli da informoj.", + "All checks passed." : "Ĉiuj testoj sukcese trapasitaj.", + "There are some errors regarding your setup." : "Estas kelkaj eraroj pri via instalaĵo.", + "There are some warnings regarding your setup." : "Estas kelkaj avertoj pri via instalaĵo.", + "Checking for system and security issues." : "Kontrolado de problemoj pri sistemo kaj sekurigo.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Bv. zorgeme kontroli la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">manlibroj pri instalaĵo ↗</a>, kaj kontroli avertojn kaj erarojn en la <a href=\"%2$s\">protokolo</a>.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Kontrolu sekurecon de via servilo Nextcloud pere de <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">nia sekureca ekzameno ↗</a>.", + "Version" : "Versio", + "Two-Factor Authentication" : "Dufaza aŭtentigo", + "Server-side encryption" : "Ĉeservila ĉifrado", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Ĉeservila ĉifrado elbigas ĉifri ĉiujn alŝutitajn dosierojn al la servilo. Tio havas kelkajn limigojn kiel pli malbonan rendimenton, do ŝaltu tion nur se necese.", + "Enable server-side encryption" : "Ŝalti ĉeservilan ĉifradon", + "Please read carefully before activating server-side encryption: " : "Atente legu antaŭ ol ŝalti ĉeservilan ĉifradon:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Kiam ĉeservila ĉifrado estas ŝaltita, ĉiuj dosieroj alŝutitaj al la servilo ekde nun estos ĉifritaj ĉe la servilo. Malebligi ĉifradon povos esti farite poste nur se la uzata ĉifrado-modulo subtenas tion kaj ĉiuj kondiĉoj (ekz. difini restaŭran ŝlisilon) estos kunigitaj.", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Ĉifrado sola ne garantias sekurigon de la sistemo. Bv. vidi la dokumentaron por pli da informoj pri kiel funkcias la ĉifrado kaj pri subtenata scenaro.", + "Be aware that encryption always increases the file size." : "Atentu, ke ĉifrado ĉiam pligrandigas dosierojn.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Ĉiam estas bone krei savkopiojn de viaj datumoj. Se tiuj ĉi lastaj estas ĉifritaj, certigu, ke vi savkopias ankaŭ la ĉifroŝlosilon kune kun la datumoj.", + "This is the final warning: Do you really want to enable encryption?" : "Jen la fina averto: ĉu vi certe volas ŝalti ĉifradon?", + "Enable encryption" : "Ŝalti ĉifradon", + "No encryption module loaded, please enable an encryption module in the app menu." : "Neniu ĉifrado-modulo ŝargita. Bv. ebligi iun ĉifrado-modulon en la aplikaĵa menuo.", + "Select default encryption module:" : "Elekti defaŭltan ĉifrado-modulon:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Vi bezonas transigi vian ĉifroŝlosilon el malnova instalaĵo (ownCloud ⩽ 8.0) al la nova. Bv. ebligi la „defaŭltan ĉifrado-modulon“ kaj ruli komandlinie „occ encryption:migrate“", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Vi bezonas transigi vian ĉifroŝlosilon el malnova instalaĵo (ownCloud ⩽ 8.0) al la nova.", + "Start migration" : "Komenci transigon", + "Background jobs" : "Fonaj taskoj", + "Last job ran %s." : "Lasta tasko okazis %s.", + "Last job execution ran %s. Something seems wrong." : "Lastataska plenumo ruliĝis %s. Io ŝajne misfunkciis.", + "Background job didn’t run yet!" : "Fona tasko ankoraŭ ne ruliĝis!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Por optimuma rendimento, gravas bone agordi fonajn taskojn. Por serviloj kun multe da uzantoj kaj datumoj, „Cron“ estas rekomendita. Bv. vidi la dokumentaron por pli da informoj.", + "Pick background job setting" : "Elekti agordon pri fona tasko", + "Execute one task with each page loaded" : "Ruli unu taskon kun ĉiu ŝargo de paĝo", + "The cron.php needs to be executed by the system user \"%s\"." : "cron.php bezonas esti rulita de la sistema uzanto „%s“.", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Por ruli iton, vi bezonas la PHP-modulon pri POSIX. Vidu la {linkstart}PHP-dokumentaron{linkend} pro pli da detaloj.", + "Sharing" : "Kunhavigo", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Kiel administranto, vi povas agordi plidetale la kunhavigon. Bv. vidi la dokumentaron pri tio.", + "Allow apps to use the Share API" : "Ebligi aplikaĵojn uzi la API-on pri kunhavigo", + "Allow users to share via link" : "Permesi uzantojn kunhavigi ligile", + "Allow public uploads" : "Permesi publikajn alŝutojn", + "Always ask for a password" : "Ĉiam peti pasvorton", + "Enforce password protection" : "Devigi pasvortan protekton ", + "Set default expiration date" : "Agordi defaŭltan limdaton", + "Expire after " : "Senvalidigita post", + "days" : "tagoj", + "Enforce expiration date" : "Devigi limdaton", + "Allow resharing" : "Permesi rekunhavigon", + "Allow sharing with groups" : "Permesi kunhavigon kun grupoj", + "Restrict users to only share with users in their groups" : "Limigi uzantojn al kunhavigado kun uzantoj en iiajn grupojn", + "Exclude groups from sharing" : "Malhelpi, ke grupoj kunhavigas", + "These groups will still be able to receive shares, but not to initiate them." : "Tiu ĉi grupoj povos ricevi kunhavojn, sed ne ekigi ilin.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Permesi aŭtomatan kompletigon de uzantnomo en kunhaviga dialogo. Se tio estas malŝatita, plenaj uzantnomo aŭ retpoŝtadreso bezonos esti entajpitaj.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Montri malgarantian tekston en la publika paĝo de alŝutado (nur montrita, kiam la dosierlisto estas kaŝita).", + "This text will be shown on the public link upload page when the file list is hidden." : "Tiu ĉi teksto montriĝos en la publika paĝo de alŝutado, kiam la dosierlisto estas kaŝita.", + "Default share permissions" : "Defaŭltaj kunhavigaj permesoj", + "Personal" : "Persona", + "Administration" : "Administrado", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Programita de la {communityopen}Nextcloud-komunumo{linkclose}, la {githubopen}fontkodo{linkclose} havas {licenseopen}AGPL{linkclose}-permesilon.", + "Like our Facebook page" : "Ŝatu nian Facebook-paĝon", + "Follow us on Twitter" : "Sekvu nin per Twitter", + "Follow us on Mastodon" : "Sekvu nin per Mastodon", + "Check out our blog" : "Vizitu nian blogon", + "Subscribe to our newsletter" : "Aboni nian retan bultenon", + "Profile picture" : "Profila bildo", + "Upload new" : "Alŝuti novan", + "Select from Files" : "Elekti el dosieroj", + "Remove image" : "Forigi bildon", + "png or jpg, max. 20 MB" : "png aŭ jpg, maksimume 20 MB", + "Picture provided by original account" : "Bildo el la origina konto", + "Cancel" : "Nuligi", + "Choose as profile picture" : "Elekti kiel profilan bildon", + "Details" : "Detaloj", + "You are a member of the following groups:" : "Vi estas membro el la jenaj grupoj:", + "You are using <strong>%s</strong>" : "Vi uzas <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Vi uzas <strong>%1$s</strong> el <strong>%2$s</strong> (<strong>%3$s %%</strong>)", + "Full name" : "Plena nomo", + "No display name set" : "Neniui vidiga nomo agordita", + "Your email address" : "Via retpoŝta adreso", + "No email address set" : "Neniu retpoŝta adreso agordita", + "For password reset and notifications" : "Por pasvorta restarigo kaj sciigoj", + "Phone number" : "Telefonnumero", + "Your phone number" : "Via telefonnumero", + "Address" : "Adreso", + "Your postal address" : "Via poŝta adreso", + "Website" : "Retejo", + "It can take up to 24 hours before the account is displayed as verified." : "Ĝis 24 horoj estas kelkfoje bezonataj, antaŭ ol la konto estas markita kiel kontrolita.", + "Link https://…" : "Ligilo https://…", + "Twitter" : "Twitter", + "Twitter handle @…" : "Twitter-kontonomo @…", + "Help translate" : "Helpu traduki", + "Locale" : "Lokaĵaro", + "Current password" : "Nuna pasvorto", + "Change password" : "Ŝanĝi la pasvorton", + "Use a second factor besides your password to increase security for your account." : "Uzu duan fazon krom via pasvorto por plisekurigi vian konton.", + "Disconnect" : "Malkonekti", + "Not supported!" : "Ne subtenite!", + "Press ⌘-C to copy." : "Premu ⌘-C por kopii.", + "Press Ctrl-C to copy." : "Premu Ctrl-C por kopii.", + "Error while loading browser sessions and device tokens" : "Erara dum ŝargo de returmilaj seancoj kaj aparataj ĵetonoj", + "Store credentials" : "Memorigi akreditilojn", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php estas registrita ĉe perreta „cron“-servo por esti vokita ĉiujn 15 minutojn per HTTP.", + "Use system cron service to call the cron.php file every 15 minutes." : "Uzu la sisteman „cron“-servon por voki cron.php ĉiujn 15 minutojn.", + "Follow us on Google+" : "Sekvu nin per Google+" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} \ No newline at end of file diff --git a/apps/settings/l10n/es.js b/apps/settings/l10n/es.js new file mode 100644 index 00000000000..e4918d04170 --- /dev/null +++ b/apps/settings/l10n/es.js @@ -0,0 +1,823 @@ +OC.L10N.register( + "settings", + { + "{actor} added you to group {group}" : "{actor} te ha añadido al grupo {group}", + "You added {user} to group {group}" : "Has añadido a {user} al grupo {group}", + "{actor} added {user} to group {group}" : "{actor} ha añadido a {user} al grupo {group}", + "An administrator added you to group {group}" : "Un administrador te ha añadido al grupo {group}", + "An administrator added {user} to group {group}" : "Un administrador ha añadido a {user} al grupo {group}", + "{actor} removed you from group {group}" : "{actor} te ha eliminado del grupo {group}", + "You removed {user} from group {group}" : "Has eliminado a {user} del grupo {group}", + "{actor} removed {user} from group {group}" : "{actor} ha eliminado a {user} del grupo {group}", + "An administrator removed you from group {group}" : "Un administrador te ha eliminado del grupo {group}", + "An administrator removed {user} from group {group}" : "Un administrador ha eliminado a {user} del grupo {group}", + "Your <strong>group memberships</strong> were modified" : "Se han modificado tus <strong>pertenencias a grupos</strong>.", + "{actor} changed your password" : "{actor} cambió tu contraseña", + "You changed your password" : "Has cambiado tu contraseña", + "Your password was reset by an administrator" : "Tu contraseña ha sido restablecida por un administrador", + "{actor} changed your email address" : "{actor} cambió tu dirección de correo electrónico", + "You changed your email address" : "Has cambiado tu cuenta de correo", + "Your email address was changed by an administrator" : "Tu cuenta de correo ha sido cambiada por un administrador", + "You created app password \"{token}\"" : "Has creado la contraseña de app \"{token}\"", + "You deleted app password \"{token}\"" : "Has eliminado la contrasña de app \"{token}\"", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Has renombrado la contrasena de app \"{token}\" a \"{newToken}\"", + "You granted filesystem access to app password \"{token}\"" : "Has concedido acceso al sistema de archivos a la contraseña de app \"{token}\"", + "You revoked filesystem access from app password \"{token}\"" : "Has revocado el acceso al sistema de archivos a la contraseña de app \"{token}\"", + "Security" : "Seguridad", + "You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión usando la verificación en dos pasos (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "El intento de inicio de sesión usando la autenticación en dos pasos (%1$s) ha fallado", + "Remote wipe was started on %1$s" : "El borrado remoto se inició en %1$s", + "Remote wipe has finished on %1$s" : "El borrado remoto finalizó en %1$s", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>dirección de correo</strong> fue modificada", + "Couldn't remove app." : "No se ha podido eliminar la aplicación.", + "Couldn't update app." : "No se ha podido actualizar la aplicación.", + "Wrong password" : "Contraseña incorrecta", + "Saved" : "Guardado", + "No user supplied" : "No se especificó un usuario", + "Unable to change password" : "No se ha podido cambiar la contraseña", + "Authentication error" : "Error de autenticación", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Por favor, asigna una contraseña de recuperación del administrador; si no lo haces, se perderán todos los datos de los usuarios.", + "Wrong admin recovery password. Please check the password and try again." : "Contraseña de recuperación de administrador incorrecta. Por favor comprueba la contraseña e inténtalo de nuevo.", + "Backend doesn't support password change, but the user's encryption key was updated." : "El sistema no permite cambiar la contraseña, pero la clave de cifrado ha sido actualizada.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "instalando y actualizando aplicaciones a través de la tienda de aplicaciones o de la nube compartida federada", + "Federated Cloud Sharing" : "Compartido en Nube Federada", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL está usando una versión desactualizada %1$s (%2$s). Por favor, actualiza tu sistema operativo o funciones como %3$s no funcionarán de forma fiable.", + "Invalid SMTP password." : "Contraseña SMTP inválida", + "Email setting test" : "Prueba de configuración de correo", + "Well done, %s!" : "¡Bien hecho, %s!", + "If you received this email, the email configuration seems to be correct." : "Si recibes este correo, la configuración de correo parece ser correcta.", + "Email could not be sent. Check your mail server log" : "No se ha podido enviar el correo. Compruebe el registro del servidor de correo", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Ha ocurrido un problema al enviar el mensaje de correo electrónico. Revisa tu configuración. (Error: %s)", + "You need to set your user email before being able to send test emails." : "Tienes que configurar tu dirección de correo electrónico antes de poder enviar mensajes de prueba.", + "Invalid mail address" : "Dirección de correo inválida", + "Settings saved" : "Ajustes guardados", + "Unable to change full name" : "No se puede cambiar el nombre completo", + "Unable to change email address" : "No se pudo cambiar la dirección de correo", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Para verificar tu cuenta de Twitter, escribe el siguiente tuit en Twitter (por favor, asegúrate de escribirlo sin saltos de línea):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Para verificar tu sitio web, guarda el siguiente contenido en la raíz de la web en '.well-known/CloudIdVerificationCode.txt' (por favor, asegúrate de que el texto completo está en una línea):", + "%1$s changed your password on %2$s." : "%1$s cambió su contraseña en %2$s.", + "Your password on %s was changed." : "Su contraseña en %s fue cambiada.", + "Your password on %s was reset by an administrator." : "Su contraseña en %s fue restaurada por un administrador.", + "Password for %1$s changed on %2$s" : "Contraseña para %1$s cambiada en %2$s", + "Password changed for %s" : "Contraseña cambiada por %s", + "If you did not request this, please contact an administrator." : "Si no has solicitado esto, por favor, ponte en contacto con el administrador.", + "Your email address on %s was changed." : "Su dirección de correo electrónico en %s fue cambiada.", + "Your email address on %s was changed by an administrator." : "Su dirección de correo electrónico en %s fue cambiada por un administrador.", + "Email address for %1$s changed on %2$s" : "Dirección de correo electrónico para %1$s cambiada en %2$s", + "Email address changed for %s" : "Dirección de correo eletrónico cambiada para %s", + "The new email address is %s" : "La nueva direción de correo eletrónica es %s", + "Your %s account was created" : "Se ha creado su cuenta de %s", + "Welcome aboard" : "Bienvenido a bordo", + "Welcome aboard %s" : "Bienvenido a bordo %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Bienvenido a tu cuenta de %s, puedes añadir, proteger y compartir tus datos.", + "Your username is: %s" : "Su nombre de usuario es: %s", + "Set your password" : "Establezca su contraseña", + "Go to %s" : "Vaya a %s", + "Install Client" : "Instalar cliente", + "Logged in user must be a subadmin" : "El usuario registrado debe ser un subadministrador", + "Create" : "Crear", + "Change" : "Cambiar", + "Delete" : "Eliminar", + "Share" : "Compartir", + "Unlimited" : "Ilimitado", + "Verifying" : "Verificar", + "Verifying …" : "Verificando...", + "Verify" : "Verificar", + "Migration in progress. Please wait until the migration is finished" : "Migración en curso. Por favor, espere hasta que la migración esté finalizada.", + "Migration started …" : "Migración iniciada...", + "Not saved" : "No guardado", + "Sending…" : "Enviando...", + "Email sent" : "Correo electrónico enviado", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Ha ocurrido un error. Por favor, cargue un certificado PEM codificado en ASCII.", + "Valid until {date}" : "Válido hasta {date}", + "Local" : "Local", + "Private" : "Privado", + "Only visible to local users" : "Visible solo a usuarios locales", + "Only visible to you" : "Visible sólo para ti", + "Contacts" : "Contactos", + "Visible to local users and to trusted servers" : "Visible a usuarios locales y servidores de confianza", + "Public" : "Público", + "Will be synced to a global and public address book" : "Se sincronizará a una libreta de direcciones pública y global", + "Very weak password" : "Contraseña muy débil", + "Weak password" : "Contraseña débil", + "So-so password" : "Contraseña normal", + "Good password" : "Contraseña buena", + "Strong password" : "Contraseña muy buena", + "An error occurred while changing your language. Please reload the page and try again." : "Ha ocurrido un error al cambiar tu idioma. Por favor, refresca la página y vuelve a intentarlo.", + "An error occurred while changing your locale. Please reload the page and try again." : "Ha ocurrido un error al cambiar tu local. Por favor, refresca la página y vuelve a intentarlo.", + "Select a profile picture" : "Seleccionar una imagen de perfil", + "Week starts on {fdow}" : "La semana empieza el {fdow}", + "Groups" : "Grupos", + "Group list is empty" : "La lista de grupos está vacía", + "Unable to retrieve the group list" : "No se ha podido recuperar la lista de grupos.", + "Afrikaans (Namibia)" : "Afrikáans (Namibia)", + "Afrikaans (South Africa)" : "Afrikáans (Sudáfrica)", + "Afrikaans" : "Afrikáans", + "Akan (Ghana)" : "Akan (Ghana)", + "Akan" : "Akan", + "Albanian (Albania)" : "Albanés (Albania)", + "Albanian" : "Albanés", + "Amharic (Ethiopia)" : "Amhárico (Etiopía)", + "Amharic" : "amhárico", + "Arabic (Algeria)" : "árabe (Argelia)", + "Arabic (Bahrain)" : "árabe (Baréin)", + "Arabic (Egypt)" : "árabe (Egipto)", + "Arabic (Iraq)" : "árabe (Iraq)", + "Arabic (Jordan)" : "árabe (Jordania)", + "Arabic (Kuwait)" : "árabe (Kuwait)", + "Arabic (Lebanon)" : "árabe (Líbano)", + "Arabic (Libya)" : "árabe (Libia)", + "Arabic (Morocco)" : "árabe (Marruecos)", + "Arabic (Oman)" : "árabe (Omán)", + "Arabic (Qatar)" : "árabe (Catar)", + "Arabic (Saudi Arabia)" : "árabe (Arabia Saudí)", + "Arabic (Sudan)" : "árabe (Sudán)", + "Arabic (Syria)" : "árabe (Siria)", + "Arabic (Tunisia)" : "árabe (Túnez)", + "Arabic (United Arab Emirates)" : "árabe (Emiratos Árabes Unidos)", + "Arabic (Yemen)" : "árabe (Yemen)", + "Arabic" : "árabe ", + "Armenian (Armenia)" : "armenio (Armenia)", + "Armenian" : "armenio", + "Assamese (India)" : "asamés (India)", + "Assamese" : "asamés", + "Asu (Tanzania)" : "asu (Tanzania)", + "Asu" : "asu", + "Azerbaijani (Cyrillic)" : "azerí (cirílico)", + "Azerbaijani (Cyrillic, Azerbaijan)" : "azerí (cirílico, Azerbaiyán)", + "Azerbaijani (Latin)" : "azerí (latino)", + "Azerbaijani (Latin, Azerbaijan)" : "azerí (latino, Azerbaiyán)", + "Azerbaijani" : "azerí", + "Bambara (Mali)" : "bambara (Mali)", + "Bambara" : "bambara", + "Basque (Spain)" : "vasco (España)", + "Basque" : "vasco", + "Belarusian (Belarus)" : "bielorruso (Bielorrusia)", + "Belarusian" : "bielorruso", + "Bemba (Zambia)" : "bemba (Zambia)", + "Bemba" : "bemba", + "Bena (Tanzania)" : "bena (Tanzania)", + "Bena" : "bena", + "Bengali (Bangladesh)" : "bengalí (Bangladesh)", + "Bengali (India)" : "bengalí (India)", + "Bengali" : "bengalí", + "Bosnian (Bosnia and Herzegovina)" : "bosnio (Bosnia y Herzegovina)", + "Bosnian" : "bosnio", + "Bulgarian (Bulgaria)" : "búlgaro (bulgaria)", + "Bulgarian" : "búlgaro", + "Burmese (Myanmar [Burma])" : "burmés (Myanmar [Burma])", + "Burmese" : "burmés", + "Catalan (Spain)" : "catalán (España)", + "Catalan" : "catalán", + "Central Morocco Tamazight (Latin)" : "tamazigh de Marruecos central (latino)", + "Central Morocco Tamazight (Latin, Morocco)" : "tamazigh de Marruecos central (latino, Marruecos)", + "Central Morocco Tamazight" : "tamazigh de Marruecos central", + "Cherokee (United States)" : "cheroki (Estados Unidos)", + "Cherokee" : "cheroki", + "Chiga (Uganda)" : "chiga (Uganda)", + "Chiga" : "chiga", + "Chinese (Simplified Han)" : "chino (Han simplificado)", + "Chinese (Simplified Han, China)" : "chino (Han simplificado, China)", + "Chinese (Simplified Han, Hong Kong SAR China)" : "chino (Han simplificado, Hong Kong RAE de China)", + "Chinese (Simplified Han, Macau SAR China)" : "chino (Han simplificado, Macao RAE de China)", + "Chinese (Simplified Han, Singapore)" : "chino (Han simplificado, Singapur)", + "Chinese (Traditional Han)" : "chino (Han tradicional)", + "Chinese (Traditional Han, Hong Kong SAR China)" : "chino (Han tradicional, Hong Kong RAE de China)", + "Chinese (Traditional Han, Macau SAR China)" : "chino (Han tradicional, Macao RAE de China)", + "Chinese (Traditional Han, Taiwan)" : "chino (Han tradicional, Taiwán)", + "Chinese" : "chino", + "Cornish (United Kingdom)" : "córnico (Reino Unido)", + "Cornish" : "córnico", + "Croatian (Croatia)" : "croata (Croacia)", + "Croatian" : "croata", + "Czech (Czech Republic)" : "checo (República Checa)", + "Czech" : "checo", + "Danish (Denmark)" : "danés (Dinamarca)", + "Danish" : "danés", + "Dutch (Belgium)" : "neerlandés (Bélgica)", + "Dutch (Netherlands)" : "neerlandés (Países Bajos)", + "Dutch" : "neerlandés", + "Embu (Kenya)" : "embu (Kenia)", + "Embu" : "embu", + "English (American Samoa)" : "inglés (Samoa Americana)", + "English (Australia)" : "inglés (Australia)", + "English (Belgium)" : "ingles (Bélgica)", + "English (Belize)" : "inglés (Belice)", + "English (Botswana)" : "inglés (Botsuana)", + "English (Canada)" : "inglés (Canadá)", + "English (Guam)" : "inglés (Guam)", + "English (Hong Kong SAR China)" : "inglés (Hong Kong RAE de China)", + "English (India)" : "inglés (India)", + "English (Ireland)" : "inglés (Irlanda)", + "English (Jamaica)" : "inglés (Jamaica)", + "English (Malta)" : "inglés (Malta)", + "English (Marshall Islands)" : "inglés (Islas Marshall)", + "English (Mauritius)" : "inglés (Mauricio)", + "English (Namibia)" : "inglés (Namibia)", + "English (New Zealand)" : "inglés (Nueva Zelanda)", + "English (Northern Mariana Islands)" : "inglés (Islas Marianas Septentrionales)", + "English (Pakistan)" : "inglés (Pakistán)", + "English (Philippines)" : "inglés (Filipinas)", + "English (Singapore)" : "inglés (Singapur)", + "English (South Africa)" : "inglés (Sudáfrica)", + "English (Trinidad and Tobago)" : "inglés (Trinidad y Tobago)", + "English (U.S. Minor Outlying Islands)" : "inglés (Islas Ultramarinas Menores Estadounidenses)", + "English (U.S. Virgin Islands)" : "inglés (Islas Vírgenes Estadounidenses)", + "English (United Kingdom)" : "inglés (Reino Unido)", + "English (United States)" : "inglés (Estados Unidos)", + "English (Zimbabwe)" : "inglés (Zimbabue)", + "English" : "inglés", + "Esperanto" : "esperanto", + "Estonian (Estonia)" : "estonio (Estonia)", + "Estonian" : "estonio", + "Ewe (Ghana)" : "ewe (Gana)", + "Ewe (Togo)" : "ewe (Togo)", + "Ewe" : "ewe", + "Faroese (Faroe Islands)" : "feroés (Islas Faroe)", + "Faroese" : "feroés", + "Filipino (Philippines)" : "filipino (Filipinas)", + "Filipino" : "filipino", + "Finnish (Finland)" : "finés (Finlandia)", + "Finnish" : "finés", + "French (Belgium)" : "francés (Bélgica)", + "French (Benin)" : "francés (Benín)", + "French (Burkina Faso)" : "francés (Burkina Faso)", + "French (Burundi)" : "francés (Burundi)", + "French (Cameroon)" : "francés (Camerún)", + "French (Canada)" : "francés (Canadá)", + "French (Central African Republic)" : "francés (República Centroafricana)", + "French (Chad)" : "francés (Chad)", + "French (Comoros)" : "francés (Comoras)", + "French (Congo - Brazzaville)" : "francés (Congo Brazzaville)", + "French (Congo - Kinshasa)" : "francés (Congo Kinshasha)", + "French (Côte d’Ivoire)" : "francés (Costa de Marfil)", + "French (Djibouti)" : "francés (Yibuti)", + "French (Equatorial Guinea)" : "francés (Guinea Ecuatorial)", + "French (France)" : "francés (Francia)", + "French (Gabon)" : "francés (Gabón)", + "French (Guadeloupe)" : "francés (Guadalupe)", + "French (Guinea)" : "francés (Guinea)", + "French (Luxembourg)" : "francés (Luxemburgo)", + "French (Madagascar)" : "francés (Madagascar)", + "French (Mali)" : "francés (Mali)", + "French (Martinique)" : "francés (Martinica)", + "French (Monaco)" : "francés (Mónaco)", + "French (Niger)" : "francés (Níger)", + "French (Rwanda)" : "francés (Ruanda)", + "French (Réunion)" : "francés (Reunión)", + "French (Saint Barthélemy)" : "francés (San Bartolomé)", + "French (Saint Martin)" : "francés (San Martín)", + "French (Senegal)" : "francés (Senegal)", + "French (Switzerland)" : "francés (Suiza)", + "French (Togo)" : "francés (Togo)", + "French" : "francés", + "Fulah (Senegal)" : "fula (Senegal)", + "Fulah" : "fula", + "Galician (Spain)" : "gallego (España)", + "Galician" : "gallego", + "Ganda (Uganda)" : "ganda (Uganda)", + "Ganda" : "ganda", + "Georgian (Georgia)" : "georgiano (Georgia)", + "Georgian" : "georgiano", + "German (Austria)" : "alemán (Austria)", + "German (Belgium)" : "alemán (Bélgica)", + "German (Germany)" : "alemán (Alemania)", + "German (Liechtenstein)" : "alemán (Liechtenstein)", + "German (Luxembourg)" : "alemán (Luxemburgo)", + "German (Switzerland)" : "alemán (Suiza)", + "German" : "alemán", + "Greek (Cyprus)" : "griego (Chipre)", + "Greek (Greece)" : "griego (Grecia)", + "Greek" : "griego", + "Gujarati (India)" : "gujarati (India)", + "Gujarati" : "gujarati", + "Gusii (Kenya)" : "gusi (Kenia)", + "Gusii" : "gusi", + "Hausa (Latin)" : "hausa (latino)", + "Hausa (Latin, Ghana)" : "hausa, (latino, Gana)", + "Hausa (Latin, Niger)" : "hausa (latino, Níger)", + "Hausa (Latin, Nigeria)" : "hausa (latino, Nigeria)", + "Hausa" : "hausa", + "Hawaiian (United States)" : "hawaiano (Estados Unidos)", + "Hawaiian" : "hawaiano", + "Hebrew (Israel)" : "hebreo (Israel)", + "Hebrew" : "hebreo", + "Hindi (India)" : "hindi (India)", + "Hindi" : "hindi", + "Hungarian (Hungary)" : "húngaro (Hungría)", + "Hungarian" : "húngaro", + "Icelandic (Iceland)" : "islandés (Islandia)", + "Icelandic" : "islandés", + "Igbo (Nigeria)" : "igbo (Nigeria)", + "Igbo" : "igbo", + "Indonesian (Indonesia)" : "indonesio (Indonesia)", + "Indonesian" : "indonesio", + "Irish (Ireland)" : "irlandés (Irlanda)", + "Irish" : "irlandés", + "Italian (Italy)" : "italiano (Italia)", + "Italian (Switzerland)" : "italiano (Suiza)", + "Italian" : "italiano", + "Japanese (Japan)" : "japonés (Japón)", + "Japanese" : "japonés", + "Kabuverdianu (Cape Verde)" : "caboverdiano (Cabo Verde)", + "Kabuverdianu" : "caboverdiano", + "Kabyle (Algeria)" : "cabilio (Argelia)", + "Kabyle" : "cabilio", + "Kalaallisut (Greenland)" : "kalaallisut (Groenlandia)", + "Kalaallisut" : "kalaallisut", + "Kalenjin (Kenya)" : "kalenjin (Kenia)", + "Kalenjin" : "kalenjin", + "Kamba (Kenya)" : "kamba (Kenia)", + "Kamba" : "kamba", + "Kannada (India)" : "kanada (India)", + "Kannada" : "kanada", + "Kazakh (Cyrillic)" : "kazajo (cirílico)", + "Kazakh (Cyrillic, Kazakhstan)" : "kazajo (cirílico, Kazajistán)", + "Kazakh" : "kazajo", + "Khmer (Cambodia)" : "camboyano (Camboya)", + "Khmer" : "camboyano", + "Kikuyu (Kenya)" : "kikuyu (Kenia)", + "Kikuyu" : "kikuyu", + "Kinyarwanda (Rwanda)" : "kinyaruanda (Ruanda)", + "Kinyarwanda" : "kinyaruanda", + "Konkani (India)" : "konkani (India)", + "Konkani" : "konkani", + "Korean (South Korea)" : "coreano (Corea del Sur)", + "Korean" : "coreano", + "Koyra Chiini (Mali)" : "koyra chiini (Mali)", + "Koyra Chiini" : "koyra chiini", + "Koyraboro Senni (Mali)" : "koyraboro senni (Mali)", + "Koyraboro Senni" : "koyraboro senni", + "Langi (Tanzania)" : "langi (Tanzania)", + "Langi" : "langi", + "Latvian (Latvia)" : "letón (Letonia)", + "Latvian" : "letón", + "Lithuanian (Lithuania)" : "lituano (Lituania)", + "Lithuanian" : "lituano", + "Luo (Kenya)" : "luo (Kenia)", + "Luo" : "luo", + "Luyia (Kenya)" : "luyia (Kenia)", + "Luyia" : "luyia", + "Macedonian (Macedonia)" : "macedonio (Macedonia del Norte)", + "Macedonian" : "macedonio", + "Machame (Tanzania)" : "machame (Tanzania)", + "Machame" : "machame", + "Makonde (Tanzania)" : "makonde (Tanzania)", + "Makonde" : "makonde", + "Malagasy (Madagascar)" : "malgache (Madagascar)", + "Malagasy" : "malgache", + "Malay (Brunei)" : "malayo (Brunéi)", + "Malay (Malaysia)" : "malayo (Malasia)", + "Malay" : "malayo", + "Malayalam (India)" : "malayalam (India)", + "Malayalam" : "malayalam", + "Maltese (Malta)" : "maltés (Malta)", + "Maltese" : "maltés", + "Manx (United Kingdom)" : "manés (Reino Unido)", + "Manx" : "manés", + "Marathi (India)" : "marati (India)", + "Marathi" : "marati", + "Masai (Kenya)" : "masái (Kenia)", + "Masai (Tanzania)" : "masái (Tanzania)", + "Masai" : "masái", + "Meru (Kenya)" : "meru (Kenia)", + "Meru" : "meru", + "Morisyen (Mauritius)" : "mauricio (Mauricio)", + "Morisyen" : "mauricio", + "Nama (Namibia)" : "nama (Namibia)", + "Nama" : "nama", + "Nepali (India)" : "nepalí (India)", + "Nepali (Nepal)" : "nepalí (Nepal)", + "Nepali" : "nepalí", + "North Ndebele (Zimbabwe)" : "ndebele del norte (Zimbabue)", + "North Ndebele" : "ndebele del norte", + "Norwegian Bokmål (Norway)" : "bokmål noruego (Noruega)", + "Norwegian Bokmål" : "bokmål noruego", + "Norwegian Nynorsk (Norway)" : "nynorsk noruego (Noruega)", + "Norwegian Nynorsk" : "nynorsk noruego", + "Nyankole (Uganda)" : "nyankole (Uganda)", + "Nyankole" : "nyankole", + "Oriya (India)" : "oriya (India)", + "Oriya" : "oriya", + "Oromo (Ethiopia)" : "oromo (Etiopía)", + "Oromo (Kenya)" : "oromo (Kenia)", + "Oromo" : "oromo", + "Pashto (Afghanistan)" : "pastún (Afganistán)", + "Pashto" : "pastún", + "Persian (Afghanistan)" : "persa (Afganistán)", + "Persian (Iran)" : "persa (Irán)", + "Persian" : "persa", + "Polish (Poland)" : "polaco (Polonia)", + "Polish" : "polaco", + "Portuguese (Brazil)" : "portugués (Brasil)", + "Portuguese (Guinea-Bissau)" : "portugués (Guinea-Bisau)", + "Portuguese (Mozambique)" : "portugués (Mozambique)", + "Portuguese (Portugal)" : "portugués (Portugal)", + "Portuguese" : "portugués", + "Punjabi (Arabic)" : "punyabí (arábigo)", + "Punjabi (Arabic, Pakistan)" : "punyabí (arábigo, Pakistán)", + "Punjabi (Gurmukhi)" : "punyabí (gurmukhi)", + "Punjabi (Gurmukhi, India)" : "punyabí (gurmukhi, India)", + "Punjabi" : "punyabí", + "Romanian (Moldova)" : "rumano (Moldavia)", + "Romanian (Romania)" : "rumano (Rumanía)", + "Romanian" : "rumano", + "Romansh (Switzerland)" : "romanche (Suiza)", + "Romansh" : "romanche", + "Rombo (Tanzania)" : "rombo (Tanzania)", + "Rombo" : "rombo", + "Russian (Moldova)" : "ruso (Moldavia)", + "Russian (Russia)" : "ruso (Rusia)", + "Russian (Ukraine)" : "ruso (Ucrania)", + "Russian" : "ruso", + "Rwa (Tanzania)" : "rwa (Tanzania)", + "Rwa" : "rwa", + "Samburu (Kenya)" : "samburu (Kenia)", + "Samburu" : "samburu", + "Sango (Central African Republic)" : "sango (República Centroafricana)", + "Sango" : "sango", + "Sena (Mozambique)" : "sena (Mozambique)", + "Sena" : "sena", + "Serbian (Cyrillic)" : "serbio (cirílico)", + "Serbian (Cyrillic, Bosnia and Herzegovina)" : "serbio (cirílico, Bosnia y Herzegovina)", + "Serbian (Cyrillic, Montenegro)" : "sergbio (cirílico, Montenegro)", + "Serbian (Cyrillic, Serbia)" : "serbio (cirílico, Serbia)", + "Serbian (Latin)" : "serbio (latino)", + "Serbian (Latin, Bosnia and Herzegovina)" : "serbio (latino, Bosnia y Herzegovina)", + "Serbian (Latin, Montenegro)" : "serbio (latino, Montenegro)", + "Serbian (Latin, Serbia)" : "serbio (latino, Serbia)", + "Serbian" : "serbio", + "Shona (Zimbabwe)" : "shona (Zimbabue)", + "Shona" : "shona", + "Sichuan Yi (China)" : "sichuan yi (China)", + "Sichuan Yi" : "sichuan yi", + "Sinhala (Sri Lanka)" : "sinhala (Sri Lanka)", + "Sinhala" : "sinhala", + "Slovak (Slovakia)" : "eslovaco (Eslovaquia)", + "Slovak" : "eslovaco", + "Slovenian (Slovenia)" : "eslovenio (Eslovenia)", + "Slovenian" : "esloveno", + "Soga (Uganda)" : "soga (uganda)", + "Soga" : "soga", + "Somali (Djibouti)" : "somalí (Yibuti)", + "Somali (Ethiopia)" : "somalí (Etiopía)", + "Somali (Kenya)" : "somalí (Kenia)", + "Somali (Somalia)" : "somalí (Somalia)", + "Somali" : "somalí", + "Spanish (Argentina)" : "español (Argentina)", + "Spanish (Bolivia)" : "español (Bolivia)", + "Spanish (Chile)" : "español (Chile)", + "Spanish (Colombia)" : "español (Colombia)", + "Spanish (Costa Rica)" : "español (Costa Rica)", + "Spanish (Dominican Republic)" : "español (República Dominicana)", + "Spanish (Ecuador)" : "español (Ecuador)", + "Spanish (El Salvador)" : "español (El Salvador)", + "Spanish (Equatorial Guinea)" : "español (Guinea Ecuatorial)", + "Spanish (Guatemala)" : "español (Guatemala)", + "Spanish (Honduras)" : "español (Honduras)", + "Spanish (Latin America)" : "español (latinoamericano)", + "Spanish (Mexico)" : "español (México)", + "Spanish (Nicaragua)" : "español (Nicaragua)", + "Spanish (Panama)" : "español (Panamá)", + "Spanish (Paraguay)" : "español (Paraguay)", + "Spanish (Peru)" : "español (Perú)", + "Spanish (Puerto Rico)" : "español (Puerto Rico)", + "Spanish (Spain)" : "español (España)", + "Spanish (United States)" : "español (Estados Unidos)", + "Spanish (Uruguay)" : "español (Uruguay)", + "Spanish (Venezuela)" : "español (Venezuela)", + "Spanish" : "español", + "Swahili (Kenya)" : "suajili (Kenia)", + "Swahili (Tanzania)" : "suajili (Tanzania)", + "Swahili" : "suajili", + "Swedish (Finland)" : "sueco (Finlandia)", + "Swedish (Sweden)" : "sueco (Suecia)", + "Swedish" : "sueco", + "Swiss German (Switzerland)" : "alemán suizo (Suiza) ", + "Swiss German" : "alemán suizo", + "Tachelhit (Latin)" : "tachelhit (latino)", + "Tachelhit (Latin, Morocco)" : "tachelhit (latino, Marruecos)", + "Tachelhit (Tifinagh)" : "tachelhit (tifinagh)", + "Tachelhit (Tifinagh, Morocco)" : "tachelhit (tifinagh, Marruecos)", + "Tachelhit" : "tachelhit", + "Taita (Kenya)" : "taita (Kenia)", + "Taita" : "taita", + "Tamil (India)" : "tamil (India)", + "Tamil (Sri Lanka)" : "tamil (Sri Lanka)", + "Tamil" : "tamil", + "Telugu (India)" : "telugu (India)", + "Telugu" : "telugu", + "Teso (Kenya)" : "teso (Kenia)", + "Teso (Uganda)" : "teso (Uganda)", + "Teso" : "teso", + "Thai (Thailand)" : "tailandés (Tailandia)", + "Thai" : "tailandés", + "Tibetan (China)" : "tibetano (China)", + "Tibetan (India)" : "tibetano (India)", + "Tibetan" : "tibetano", + "Tigrinya (Eritrea)" : "tingrinya (Eritrea)", + "Tigrinya (Ethiopia)" : "tigrinya (Etiopía)", + "Tigrinya" : "tigrinya", + "Tonga (Tonga)" : "tonga (Tonga)", + "Tonga" : "tonga", + "Turkish (Turkey)" : "turco (Turquía)", + "Turkish" : "turco", + "Ukrainian (Ukraine)" : "ucraniano (Ucrania)", + "Ukrainian" : "ucraniano", + "Urdu (India)" : "urdu (India)", + "Urdu (Pakistan)" : "urdu (Pakistán)", + "Urdu" : "urdu", + "Uzbek (Arabic)" : "uzbeco (arábigo)", + "Uzbek (Arabic, Afghanistan)" : "uzbeco (arábigo, Afganistán)", + "Uzbek (Cyrillic)" : "uzbeco (cirílico)", + "Uzbek (Cyrillic, Uzbekistan)" : "uzbeco (cirílico, Uzbekistán)", + "Uzbek (Latin)" : "uzbeco (latino)", + "Uzbek (Latin, Uzbekistan)" : "uzbeco (latino, Uzbekistán)", + "Uzbek" : "uzbeco", + "Vietnamese (Vietnam)" : "vietnamita (Vietnam)", + "Vietnamese" : "vietnamita", + "Vunjo (Tanzania)" : "vunjo (Tanzania)", + "Vunjo" : "vunjo", + "Welsh (United Kingdom)" : "galés (Reino Unido)", + "Welsh" : "galés", + "Yoruba (Nigeria)" : "yoruba (Nigeria)", + "Yoruba" : "yoruba", + "Zulu (South Africa)" : "zulú (Sudáfrica)", + "Zulu" : "zulú", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "La verificación en dos pasos se puede aplicar para todos\tlos usuarios y grupos específicos. Si no tienen configurado un proveedor de dos pasos, no podrán iniciar sesión en el sistema.", + "Enforce two-factor authentication" : "Imponer verificación en dos pasos", + "Limit to groups" : "Límite para grupos", + "Enforcement of two-factor authentication can be set for certain groups only." : "La obligatoriedad de la autenticación de dos factores puede establecerse solo para ciertos grupos.", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "La autenticación de dos factores es obligatoria para todos los \tmiembros de los siguientes grupos.", + "Enforced groups" : "Grupos obligados", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "La verificación en dos pasos no está impuesta a\tmiembros de los siguientes grupos.", + "Excluded groups" : "Grupos excluidos", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "Cuando los grupos se seleccionan/excluyen, usan la siguiente lógica para determinar si un usuario tiene obligada la 2FA: si no hay grupos seleccionados, 2FA está activa para todos excepto los miembros de los grupos excluidos. Si hay grupos seleccionados, 2FA está activa para todos los miembros de estos. Si un usuaro está a la vez en un grupo seleccionado y otro excluido, el seleccionado tiene preferencia y se obliga la 2FA.", + "Save changes" : "Guardar cambios", + "Marked for remote wipe" : "Marcado para borrado remoto", + "Device settings" : "Configuración del dispositivo", + "Allow filesystem access" : "Permitir acceso al sistema de archivos", + "Rename" : "Renombrar", + "Revoke" : "Revocar", + "Wipe device" : "Borrar dispositivo", + "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Revocar este token puede evitar el borrado de tu dispositivo si no se ha iniciado aún el borrado.", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome para Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "App Nextcloud para iOS", + "Nextcloud Android app" : "App Nextcloud para Android", + "Nextcloud Talk for iOS" : "Nextcloud Talk para iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk para Android", + "Sync client - {os}" : "Cliente de sincronización - {os}", + "This session" : "Esta sesión", + "Device" : "Dispositivo", + "Last activity" : "Última actividad", + "Devices & sessions" : "Dispositivos y sesiones", + "Web, desktop and mobile clients currently logged in to your account." : "Clientes web, móviles y de escritorio actualmente conectados a tu cuenta.", + "Do you really want to wipe your data from this device?" : "¿Estás seguro de querer borrar tus datos de este dispositivo?", + "Confirm wipe" : "Confirmar borrado", + "Error while creating device token" : "Error al crear \"token\" de dispositivo", + "Error while updating device token scope" : "Error al actualizar el alcance del token de dispositivo", + "Error while updating device token name" : "Error al actualizar el nombre del token de dispositivo", + "Error while deleting the token" : "Error al eliminar el \"token\"", + "Error while wiping the device with the token" : "Error al borrar el dispositivo con el token", + "App name" : "Nombre de la app", + "Create new app password" : "Crear nueva contraseña de app", + "Use the credentials below to configure your app or device." : "Use las siguientes credenciales para configurar su app o dispositivo.", + "For security reasons this password will only be shown once." : "Para seguridad, esta contraseña será mostrado solamente una vez.", + "Username" : "Nombre de usuario", + "Password" : "Contraseña", + "Done" : "Hecho", + "Show QR code for mobile apps" : "Mostrar código QR para apps móviles", + "Copied!" : "¡Copiado!", + "Copy" : "Copiar", + "Could not copy app password. Please copy it manually." : "No se ha podido copiar la contraseña de app. Por favor, cópiala manualmente.", + "This app is supported via your current Nextcloud subscription." : "Esta App está soportada a través de su suscripción actual de Nexcloud.", + "Supported" : "Soportada", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Las apps oficiales están desarrolladas por y dentro de la comunidad. Ofrecen una funcionalidad central y están preparadas para su uso en producción.", + "Official" : "Oficial", + "by" : "por", + "Update to {version}" : "Actualizar a {version}", + "Remove" : "Eliminar", + "Disable" : "Desactivar", + "All" : "Todos", + "Limit app usage to groups" : "Limitar uso de apps a grupos", + "No results" : "No hay resultados", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Esta app no tiene una versión mínima de Nextcloud asignada. Esto será un error en el futuro.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Esta app no tiene una versión máxima de Nextcloud asignada. Esto será un error en el futuro.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Esta aplicación no puede instalarse porque las siguientes dependencias no están cumplimentadas:", + "View in store" : "Ver en la tienda", + "Visit website" : "Visite nuestro sitio web", + "Report a bug" : "Notificar un error", + "User documentation" : "Documentación de usuario", + "Admin documentation" : "Documentación de administrador", + "Developer documentation" : "Documentación de desarrollador", + "Update to {update}" : "Actualizar a {update}", + "Results from other categories" : "Resultados de otras categorías", + "No apps found for your version" : "No se han encontrado aplicaciones para su versión", + "Disable all" : "Deshabilitar todos", + "Enable all" : "Activar todas", + "Download and enable" : "Descargar y activar", + "Enable" : "Activar", + "Enable untested app" : "Activar app no testada", + "The app will be downloaded from the app store" : "La app va a ser descargada de una tienda de aplicaciones", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Esta app no está marcada como compatible con tu versión de Nextcloud. Si continúas, todavía serás capaz de instalar la app. Nota que la app puede no funcionar según lo esperado.", + "You do not have permissions to see the details of this user" : "No tienes permisos para ver los detalles de este usuario", + "The backend does not support changing the display name" : "El backend no soporta cambiar el nombre de pantalla", + "New password" : "Nueva contraseña", + "Add user in group" : "Añadir usuario en grupo", + "Set user as admin for" : "Marcar usuario como administrador para", + "Select user quota" : "Seleccionar cuota de usuario", + "No language set" : "No se ha marcado idioma", + "Never" : "Nunca", + "Delete user" : "Eliminar usuario", + "Wipe all devices" : "Borrar todos los dispositivos", + "Disable user" : "Inhabilitar usuario", + "Enable user" : "Habilitar usuario", + "Resend welcome email" : "Volver a enviar correo de bienvenida", + "{size} used" : "{size} usados", + "Welcome mail sent!" : "¡Correo de bienvenida enviado!", + "Display name" : "Nombre para mostrar", + "Email" : "Correo electrónico", + "Group admin for" : "Administrador de grupo para", + "Quota" : "Espacio", + "Language" : "Idioma", + "Storage location" : "Ubicación de los datos", + "User backend" : "Motor de usuario", + "Last login" : "Último inicio de sesión", + "Will be autogenerated" : "Se generará de forma automática", + "Default language" : "Idioma predeterminado", + "Add a new user" : "Añadir un usuario nuevo", + "No users in here" : "No hay usuarios aquí", + "Default quota" : "Espacio predeterminado", + "Password change is disabled because the master key is disabled" : "El cambio de contraseña está desactivado porque la clave maestra está desactivada", + "Common languages" : "Idiomas habituales", + "All languages" : "Todos los idiomas", + "Your apps" : "Tus apps", + "Active apps" : "Apps activas", + "Disabled apps" : "Apps deshabilitadas", + "Updates" : "Actualizaciones", + "App bundles" : "Lotes de apps", + "{license}-licensed" : "licenciado bajo {license}", + "New user" : "Nuevo usuario", + "Default quota:" : "Espacio predeterminado:", + "Select default quota" : "Seleccionar cuota por defecto", + "Show Languages" : "Mostrar idiomas", + "Show last login" : "Mostrar último inicio de sesión", + "Show user backend" : "Mostrar motor de usuario", + "Show storage path" : "Mostrar ruta de almacenamiento", + "You are about to remove the group {group}. The users will NOT be deleted." : "Vas a eliminar el grupo {group}. Los usuarios NO serán eliminados.", + "Please confirm the group removal " : "Por favor, confirma la eliminación del grupo", + "Remove group" : "Eliminar grupo", + "Admins" : "Administradores", + "Disabled users" : "Usuarios inhabilitados", + "Everyone" : "Todos", + "Add group" : "Añadir grupo", + "An error occured during the request. Unable to proceed." : "Ha ocurrido un error durante la petición. No se puede continuar.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "La app ha sido activada pero tiene que actualizarse. Serás redirigido a la página de actualización en 5 segundos.", + "App update" : "Actualización de la aplicación", + "Error: This app can not be enabled because it makes the server unstable" : "Error: Esta app no se puede activar porque desestabiliza el servidor", + "SSL Root Certificates" : "Certificados raíz SSL ", + "Common Name" : "Nombre común", + "Valid until" : "Válido hasta", + "Issued By" : "Emitido por", + "Valid until %s" : "Válido hasta %s", + "Import root certificate" : "Importar certificado raíz", + "Administrator documentation" : "Documentación del adminsitrador", + "Documentation" : "Documentación", + "Forum" : "Foro", + "None" : "Ninguno", + "Login" : "Iniciar sesión", + "Plain" : "Plano", + "NT LAN Manager" : "Gestor de NT LAN", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Servidor de correo electrónico", + "Open documentation" : "Abrir documentación", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Es importante configurar este servidor para que pueda enviar correos, por ejemplo para cambios de contraseñas y notificaciones.", + "Send mode" : "Modo de envío", + "Encryption" : "Cifrado", + "Sendmail mode" : "Modo Sendmail", + "From address" : "Desde la dirección", + "mail" : "correo electrónico", + "Authentication method" : "Método de autenticación", + "Authentication required" : "Se necesita autenticación", + "Server address" : "Dirección del servidor", + "Port" : "Puerto", + "Credentials" : "Credenciales", + "SMTP Username" : "Nombre de usuario SMTP", + "SMTP Password" : "Contraseña SMTP", + "Save" : "Guardar", + "Test email settings" : "Probar configuración de correo electrónico", + "Send email" : "Enviar mensaje", + "Security & setup warnings" : "Avisos de seguridad y configuración", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Es importante para la seguridad y desempeño de tu instancia que todo esté correctamente configurado. Para ayudarte vamos a realizar algunas comprobaciones automáticas. Por favor, comprueba la documentación enlazada para más información.", + "All checks passed." : "Ha pasado todos los controles", + "There are some errors regarding your setup." : "Hay varios errores relativos a su configuración.", + "There are some warnings regarding your setup." : "Hay varios avisos relativos a su configuración.", + "Checking for system and security issues." : "Comprobando problemas del sistema y de seguridad.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Por favor, vuelve a consultar las <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">guías de instalación ↗</a>, y comprueba posibles errores y advertencias en el <a href=\"%2$s\">registro</a>.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Compruebe la seguridad de su Nextcloud mediante <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">nuestro escaneo de seguridad ↗</a>.", + "Version" : "Versión", + "Two-Factor Authentication" : "Verificación en dos pasos", + "Server-side encryption" : "Cifrado en el servidor", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "El cifrado en el lado del servidor hace posible cifrar archivos que se suben a este servidor. Esto trae consigo limitaciones como una ralentización en su funcionamiento, así que activa esto solo si es necesario.", + "Enable server-side encryption" : "Habilitar cifrado en el servidor", + "Please read carefully before activating server-side encryption: " : "Por favor lea cuidadosamente antes de activar el cifrado del lado del servidor.", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Una vez que el cifrado está habilitado, todos los archivos subidos al servidor desde ese punto en adelante se cifrarán en reposo en el servidor. Sólo será posible desactivar el cifrado en una fecha posterior si el módulo de cifrado activado soporta esa función, y todas las condiciones previas (por ejemplo, el establecimiento de una clave de recuperación) se cumplan.", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "El cifrado no garantiza por sí solo la seguridad del sistema. Por favor, vea la documentación para más información sobre cómo funciona la app de cifrado y los casos de uso soportados.", + "Be aware that encryption always increases the file size." : "Tenga presente que la encripción siempre incrementa el tamaño del archivo.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Siempre es bueno crear copias de seguridad de sus datos, en el caso del cifrado, asegúrese de tener una copia de seguridad de las claves de cifrado junto con sus datos.", + "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final. ¿Realmente quiere activar el cifrado?", + "Enable encryption" : "Habilitar cifrado", + "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado el modulo de cifrado. Por favor habilite un modulo de cifrado en el menú de aplicaciones.", + "Select default encryption module:" : "Seleccione el módulo de cifrado por defecto:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Necesita migrar sus claves de cifrado provenientes del antiguo sistema (ownCloud <= 8.0) al nuevo. Por favor habilite el \"Módulo de cifrado por defecto\" y ejecute 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Se necesita migrar las claves de cifrado del antiguo sistema (ownCloud <= 8.0) al nuevo sistema.", + "Start migration" : "Iniciar migración", + "Background jobs" : "Trabajos en segundo plano", + "Last job ran %s." : "El último trabajo se ejecutó %s.", + "Last job execution ran %s. Something seems wrong." : "La última ejecución de un trabajo corrió %s. Algo parece ir mal.", + "Background job didn’t run yet!" : "¡El trabajo en segundo plano no se ha ejecutado todavía!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un rendimiento óptimo es importante configurar correctamente los procesos en segundo plano. Para las instancias más grandes la configuración recomendad es 'cron'a. Por favor, lea la documentación para más información.", + "Pick background job setting" : "Escoge la configuración de las tareas en segundo plano", + "Execute one task with each page loaded" : "Ejecutar una tarea con cada página cargada", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php está registrado en un servicio de web cron para llamar a cron.php cada 5 minutos por HTTP.", + "Use system cron service to call the cron.php file every 5 minutes." : "Usa el servicio cron del sistema para llamar al archivo cron.php cada 5 minutos.", + "The cron.php needs to be executed by the system user \"%s\"." : "El archivo cron.php debe ser ejecutado por el usuario de sistema \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Necesitas la extensión PHP POSIX para lanzar esto. Mira la {linkstart}documentación de PHP{linkend} para más detalles.", + "Sharing" : "Compartir", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador puedes ajustar el comportameiento de compartir. Por favor, lee la documentación para más información.", + "Allow apps to use the Share API" : "Permitir a las aplicaciones utilizar la API de Compartición", + "Allow users to share via link" : "Permite a los usuarios compartir por medio de enlaces", + "Allow public uploads" : "Permitir subidas públicas", + "Always ask for a password" : "Pedir siempre la contraseña", + "Enforce password protection" : "Forzar la protección por contraseña.", + "Set default expiration date" : "Establecer fecha de caducidad predeterminada", + "Expire after " : "Caduca después de", + "days" : "días", + "Enforce expiration date" : "Imponer fecha de caducidad", + "Allow resharing" : "Permitir recompartición", + "Allow sharing with groups" : "Permitir compartir con grupos", + "Restrict users to only share with users in their groups" : "Restringe a los usuarios a compartir solo con otros usuarios en sus grupos", + "Exclude groups from sharing" : "Excluye grupos de compartir", + "These groups will still be able to receive shares, but not to initiate them." : "Estos grupos aún podrán recibir contenidos compartidos, pero no podrán, pero no podrán iniciarlos.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Permitir autocompletado del nombre de usuario en el diálogo de compartir. Si se desactiva, se necesita introducir el nombre de usuario completo o la dirección de correo electrónico", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Mostrar texto de renuncia de responsabilidad en la página de subida con el enlace público. (Sólo se muestra cuando la lista de archivos está oculta.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Este texto se mostrará en la página de subida de enlace público cuando la lista de archivos esté oculta.", + "Default share permissions" : "Permisos para compartir por defecto", + "Personal" : "Personal", + "Administration" : "Administración", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Desarrollado por la {communityopen}comunidad Nextcloud{linkclose}, el {githubopen}código fuente{linkclose} está bajo la licencia {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Da a Me gusta en nuestra página de Facebook", + "Follow us on Twitter" : "Síguenos en Twitter", + "Follow us on Mastodon" : "Síguenos en Mastodon", + "Check out our blog" : "Lee nuestro blog", + "Subscribe to our newsletter" : "Suscríbete a nuestro boletín", + "Profile picture" : "Foto de perfil", + "Upload new" : "Subir otra", + "Select from Files" : "Seleccionar desde Archivos", + "Remove image" : "Borrar imagen", + "png or jpg, max. 20 MB" : "png o jpg, max. 20 MB", + "Picture provided by original account" : "Imagen provista por la cuenta original", + "Cancel" : "Cancelar", + "Choose as profile picture" : "Seleccionar como imagen de perfil", + "Details" : "Detalles", + "You are a member of the following groups:" : "Eres miembro de los siguientes grupos:", + "You are using <strong>%s</strong>" : "Estás usando <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Estás usando <strong>%1$s</strong> de <strong>%2$s</strong> (<strong>%3$s%%</strong>)", + "Full name" : "Nombre completo", + "No display name set" : "No se ha establecido ningún nombre para mostrar", + "Your email address" : "Su dirección de correo", + "No email address set" : "No hay establecida ninguna dirección de correo", + "For password reset and notifications" : "Para notificaciones y cambio de contraseña", + "Phone number" : "Número de teléfono", + "Your phone number" : "Su número de teléfono", + "Address" : "Dirección", + "Your postal address" : "Su dirección física", + "Website" : "Sitio web", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tardar hasta 24 horas que la cuenta aparezca como verificada.", + "Link https://…" : "Enlace https://...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Usuario de Twitter @...", + "Help translate" : "Ayúdanos a traducir", + "Locale" : "Región", + "Current password" : "Contraseña actual", + "Change password" : "Cambiar contraseña", + "Use a second factor besides your password to increase security for your account." : "Usa un segundo factor además de tu contraseña para incrementar la seguridad de tu cuenta. ", + "Disconnect" : "Desconectar", + "Not supported!" : "No está soportado!", + "Press ⌘-C to copy." : "Pulsa ⌘-C para copiar.", + "Press Ctrl-C to copy." : "Pulsa Ctrl-C para copiar.", + "Error while loading browser sessions and device tokens" : "Error al cargar la sesión del navegador y los tokens del dispositivo", + "Store credentials" : "Almacenar credenciales", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php se registra en un servicio webcron para llamar a cron.php cada 15 minutos a través de HTTP.", + "Use system cron service to call the cron.php file every 15 minutes." : "Usar el cron del sistema para ejecutar el archivo cron.php cada 15 minutos.", + "Follow us on Google+" : "Síguenos en Google+" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/es.json b/apps/settings/l10n/es.json new file mode 100644 index 00000000000..d2b71744643 --- /dev/null +++ b/apps/settings/l10n/es.json @@ -0,0 +1,821 @@ +{ "translations": { + "{actor} added you to group {group}" : "{actor} te ha añadido al grupo {group}", + "You added {user} to group {group}" : "Has añadido a {user} al grupo {group}", + "{actor} added {user} to group {group}" : "{actor} ha añadido a {user} al grupo {group}", + "An administrator added you to group {group}" : "Un administrador te ha añadido al grupo {group}", + "An administrator added {user} to group {group}" : "Un administrador ha añadido a {user} al grupo {group}", + "{actor} removed you from group {group}" : "{actor} te ha eliminado del grupo {group}", + "You removed {user} from group {group}" : "Has eliminado a {user} del grupo {group}", + "{actor} removed {user} from group {group}" : "{actor} ha eliminado a {user} del grupo {group}", + "An administrator removed you from group {group}" : "Un administrador te ha eliminado del grupo {group}", + "An administrator removed {user} from group {group}" : "Un administrador ha eliminado a {user} del grupo {group}", + "Your <strong>group memberships</strong> were modified" : "Se han modificado tus <strong>pertenencias a grupos</strong>.", + "{actor} changed your password" : "{actor} cambió tu contraseña", + "You changed your password" : "Has cambiado tu contraseña", + "Your password was reset by an administrator" : "Tu contraseña ha sido restablecida por un administrador", + "{actor} changed your email address" : "{actor} cambió tu dirección de correo electrónico", + "You changed your email address" : "Has cambiado tu cuenta de correo", + "Your email address was changed by an administrator" : "Tu cuenta de correo ha sido cambiada por un administrador", + "You created app password \"{token}\"" : "Has creado la contraseña de app \"{token}\"", + "You deleted app password \"{token}\"" : "Has eliminado la contrasña de app \"{token}\"", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Has renombrado la contrasena de app \"{token}\" a \"{newToken}\"", + "You granted filesystem access to app password \"{token}\"" : "Has concedido acceso al sistema de archivos a la contraseña de app \"{token}\"", + "You revoked filesystem access from app password \"{token}\"" : "Has revocado el acceso al sistema de archivos a la contraseña de app \"{token}\"", + "Security" : "Seguridad", + "You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión usando la verificación en dos pasos (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "El intento de inicio de sesión usando la autenticación en dos pasos (%1$s) ha fallado", + "Remote wipe was started on %1$s" : "El borrado remoto se inició en %1$s", + "Remote wipe has finished on %1$s" : "El borrado remoto finalizó en %1$s", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>dirección de correo</strong> fue modificada", + "Couldn't remove app." : "No se ha podido eliminar la aplicación.", + "Couldn't update app." : "No se ha podido actualizar la aplicación.", + "Wrong password" : "Contraseña incorrecta", + "Saved" : "Guardado", + "No user supplied" : "No se especificó un usuario", + "Unable to change password" : "No se ha podido cambiar la contraseña", + "Authentication error" : "Error de autenticación", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Por favor, asigna una contraseña de recuperación del administrador; si no lo haces, se perderán todos los datos de los usuarios.", + "Wrong admin recovery password. Please check the password and try again." : "Contraseña de recuperación de administrador incorrecta. Por favor comprueba la contraseña e inténtalo de nuevo.", + "Backend doesn't support password change, but the user's encryption key was updated." : "El sistema no permite cambiar la contraseña, pero la clave de cifrado ha sido actualizada.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "instalando y actualizando aplicaciones a través de la tienda de aplicaciones o de la nube compartida federada", + "Federated Cloud Sharing" : "Compartido en Nube Federada", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL está usando una versión desactualizada %1$s (%2$s). Por favor, actualiza tu sistema operativo o funciones como %3$s no funcionarán de forma fiable.", + "Invalid SMTP password." : "Contraseña SMTP inválida", + "Email setting test" : "Prueba de configuración de correo", + "Well done, %s!" : "¡Bien hecho, %s!", + "If you received this email, the email configuration seems to be correct." : "Si recibes este correo, la configuración de correo parece ser correcta.", + "Email could not be sent. Check your mail server log" : "No se ha podido enviar el correo. Compruebe el registro del servidor de correo", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Ha ocurrido un problema al enviar el mensaje de correo electrónico. Revisa tu configuración. (Error: %s)", + "You need to set your user email before being able to send test emails." : "Tienes que configurar tu dirección de correo electrónico antes de poder enviar mensajes de prueba.", + "Invalid mail address" : "Dirección de correo inválida", + "Settings saved" : "Ajustes guardados", + "Unable to change full name" : "No se puede cambiar el nombre completo", + "Unable to change email address" : "No se pudo cambiar la dirección de correo", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Para verificar tu cuenta de Twitter, escribe el siguiente tuit en Twitter (por favor, asegúrate de escribirlo sin saltos de línea):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Para verificar tu sitio web, guarda el siguiente contenido en la raíz de la web en '.well-known/CloudIdVerificationCode.txt' (por favor, asegúrate de que el texto completo está en una línea):", + "%1$s changed your password on %2$s." : "%1$s cambió su contraseña en %2$s.", + "Your password on %s was changed." : "Su contraseña en %s fue cambiada.", + "Your password on %s was reset by an administrator." : "Su contraseña en %s fue restaurada por un administrador.", + "Password for %1$s changed on %2$s" : "Contraseña para %1$s cambiada en %2$s", + "Password changed for %s" : "Contraseña cambiada por %s", + "If you did not request this, please contact an administrator." : "Si no has solicitado esto, por favor, ponte en contacto con el administrador.", + "Your email address on %s was changed." : "Su dirección de correo electrónico en %s fue cambiada.", + "Your email address on %s was changed by an administrator." : "Su dirección de correo electrónico en %s fue cambiada por un administrador.", + "Email address for %1$s changed on %2$s" : "Dirección de correo electrónico para %1$s cambiada en %2$s", + "Email address changed for %s" : "Dirección de correo eletrónico cambiada para %s", + "The new email address is %s" : "La nueva direción de correo eletrónica es %s", + "Your %s account was created" : "Se ha creado su cuenta de %s", + "Welcome aboard" : "Bienvenido a bordo", + "Welcome aboard %s" : "Bienvenido a bordo %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Bienvenido a tu cuenta de %s, puedes añadir, proteger y compartir tus datos.", + "Your username is: %s" : "Su nombre de usuario es: %s", + "Set your password" : "Establezca su contraseña", + "Go to %s" : "Vaya a %s", + "Install Client" : "Instalar cliente", + "Logged in user must be a subadmin" : "El usuario registrado debe ser un subadministrador", + "Create" : "Crear", + "Change" : "Cambiar", + "Delete" : "Eliminar", + "Share" : "Compartir", + "Unlimited" : "Ilimitado", + "Verifying" : "Verificar", + "Verifying …" : "Verificando...", + "Verify" : "Verificar", + "Migration in progress. Please wait until the migration is finished" : "Migración en curso. Por favor, espere hasta que la migración esté finalizada.", + "Migration started …" : "Migración iniciada...", + "Not saved" : "No guardado", + "Sending…" : "Enviando...", + "Email sent" : "Correo electrónico enviado", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Ha ocurrido un error. Por favor, cargue un certificado PEM codificado en ASCII.", + "Valid until {date}" : "Válido hasta {date}", + "Local" : "Local", + "Private" : "Privado", + "Only visible to local users" : "Visible solo a usuarios locales", + "Only visible to you" : "Visible sólo para ti", + "Contacts" : "Contactos", + "Visible to local users and to trusted servers" : "Visible a usuarios locales y servidores de confianza", + "Public" : "Público", + "Will be synced to a global and public address book" : "Se sincronizará a una libreta de direcciones pública y global", + "Very weak password" : "Contraseña muy débil", + "Weak password" : "Contraseña débil", + "So-so password" : "Contraseña normal", + "Good password" : "Contraseña buena", + "Strong password" : "Contraseña muy buena", + "An error occurred while changing your language. Please reload the page and try again." : "Ha ocurrido un error al cambiar tu idioma. Por favor, refresca la página y vuelve a intentarlo.", + "An error occurred while changing your locale. Please reload the page and try again." : "Ha ocurrido un error al cambiar tu local. Por favor, refresca la página y vuelve a intentarlo.", + "Select a profile picture" : "Seleccionar una imagen de perfil", + "Week starts on {fdow}" : "La semana empieza el {fdow}", + "Groups" : "Grupos", + "Group list is empty" : "La lista de grupos está vacía", + "Unable to retrieve the group list" : "No se ha podido recuperar la lista de grupos.", + "Afrikaans (Namibia)" : "Afrikáans (Namibia)", + "Afrikaans (South Africa)" : "Afrikáans (Sudáfrica)", + "Afrikaans" : "Afrikáans", + "Akan (Ghana)" : "Akan (Ghana)", + "Akan" : "Akan", + "Albanian (Albania)" : "Albanés (Albania)", + "Albanian" : "Albanés", + "Amharic (Ethiopia)" : "Amhárico (Etiopía)", + "Amharic" : "amhárico", + "Arabic (Algeria)" : "árabe (Argelia)", + "Arabic (Bahrain)" : "árabe (Baréin)", + "Arabic (Egypt)" : "árabe (Egipto)", + "Arabic (Iraq)" : "árabe (Iraq)", + "Arabic (Jordan)" : "árabe (Jordania)", + "Arabic (Kuwait)" : "árabe (Kuwait)", + "Arabic (Lebanon)" : "árabe (Líbano)", + "Arabic (Libya)" : "árabe (Libia)", + "Arabic (Morocco)" : "árabe (Marruecos)", + "Arabic (Oman)" : "árabe (Omán)", + "Arabic (Qatar)" : "árabe (Catar)", + "Arabic (Saudi Arabia)" : "árabe (Arabia Saudí)", + "Arabic (Sudan)" : "árabe (Sudán)", + "Arabic (Syria)" : "árabe (Siria)", + "Arabic (Tunisia)" : "árabe (Túnez)", + "Arabic (United Arab Emirates)" : "árabe (Emiratos Árabes Unidos)", + "Arabic (Yemen)" : "árabe (Yemen)", + "Arabic" : "árabe ", + "Armenian (Armenia)" : "armenio (Armenia)", + "Armenian" : "armenio", + "Assamese (India)" : "asamés (India)", + "Assamese" : "asamés", + "Asu (Tanzania)" : "asu (Tanzania)", + "Asu" : "asu", + "Azerbaijani (Cyrillic)" : "azerí (cirílico)", + "Azerbaijani (Cyrillic, Azerbaijan)" : "azerí (cirílico, Azerbaiyán)", + "Azerbaijani (Latin)" : "azerí (latino)", + "Azerbaijani (Latin, Azerbaijan)" : "azerí (latino, Azerbaiyán)", + "Azerbaijani" : "azerí", + "Bambara (Mali)" : "bambara (Mali)", + "Bambara" : "bambara", + "Basque (Spain)" : "vasco (España)", + "Basque" : "vasco", + "Belarusian (Belarus)" : "bielorruso (Bielorrusia)", + "Belarusian" : "bielorruso", + "Bemba (Zambia)" : "bemba (Zambia)", + "Bemba" : "bemba", + "Bena (Tanzania)" : "bena (Tanzania)", + "Bena" : "bena", + "Bengali (Bangladesh)" : "bengalí (Bangladesh)", + "Bengali (India)" : "bengalí (India)", + "Bengali" : "bengalí", + "Bosnian (Bosnia and Herzegovina)" : "bosnio (Bosnia y Herzegovina)", + "Bosnian" : "bosnio", + "Bulgarian (Bulgaria)" : "búlgaro (bulgaria)", + "Bulgarian" : "búlgaro", + "Burmese (Myanmar [Burma])" : "burmés (Myanmar [Burma])", + "Burmese" : "burmés", + "Catalan (Spain)" : "catalán (España)", + "Catalan" : "catalán", + "Central Morocco Tamazight (Latin)" : "tamazigh de Marruecos central (latino)", + "Central Morocco Tamazight (Latin, Morocco)" : "tamazigh de Marruecos central (latino, Marruecos)", + "Central Morocco Tamazight" : "tamazigh de Marruecos central", + "Cherokee (United States)" : "cheroki (Estados Unidos)", + "Cherokee" : "cheroki", + "Chiga (Uganda)" : "chiga (Uganda)", + "Chiga" : "chiga", + "Chinese (Simplified Han)" : "chino (Han simplificado)", + "Chinese (Simplified Han, China)" : "chino (Han simplificado, China)", + "Chinese (Simplified Han, Hong Kong SAR China)" : "chino (Han simplificado, Hong Kong RAE de China)", + "Chinese (Simplified Han, Macau SAR China)" : "chino (Han simplificado, Macao RAE de China)", + "Chinese (Simplified Han, Singapore)" : "chino (Han simplificado, Singapur)", + "Chinese (Traditional Han)" : "chino (Han tradicional)", + "Chinese (Traditional Han, Hong Kong SAR China)" : "chino (Han tradicional, Hong Kong RAE de China)", + "Chinese (Traditional Han, Macau SAR China)" : "chino (Han tradicional, Macao RAE de China)", + "Chinese (Traditional Han, Taiwan)" : "chino (Han tradicional, Taiwán)", + "Chinese" : "chino", + "Cornish (United Kingdom)" : "córnico (Reino Unido)", + "Cornish" : "córnico", + "Croatian (Croatia)" : "croata (Croacia)", + "Croatian" : "croata", + "Czech (Czech Republic)" : "checo (República Checa)", + "Czech" : "checo", + "Danish (Denmark)" : "danés (Dinamarca)", + "Danish" : "danés", + "Dutch (Belgium)" : "neerlandés (Bélgica)", + "Dutch (Netherlands)" : "neerlandés (Países Bajos)", + "Dutch" : "neerlandés", + "Embu (Kenya)" : "embu (Kenia)", + "Embu" : "embu", + "English (American Samoa)" : "inglés (Samoa Americana)", + "English (Australia)" : "inglés (Australia)", + "English (Belgium)" : "ingles (Bélgica)", + "English (Belize)" : "inglés (Belice)", + "English (Botswana)" : "inglés (Botsuana)", + "English (Canada)" : "inglés (Canadá)", + "English (Guam)" : "inglés (Guam)", + "English (Hong Kong SAR China)" : "inglés (Hong Kong RAE de China)", + "English (India)" : "inglés (India)", + "English (Ireland)" : "inglés (Irlanda)", + "English (Jamaica)" : "inglés (Jamaica)", + "English (Malta)" : "inglés (Malta)", + "English (Marshall Islands)" : "inglés (Islas Marshall)", + "English (Mauritius)" : "inglés (Mauricio)", + "English (Namibia)" : "inglés (Namibia)", + "English (New Zealand)" : "inglés (Nueva Zelanda)", + "English (Northern Mariana Islands)" : "inglés (Islas Marianas Septentrionales)", + "English (Pakistan)" : "inglés (Pakistán)", + "English (Philippines)" : "inglés (Filipinas)", + "English (Singapore)" : "inglés (Singapur)", + "English (South Africa)" : "inglés (Sudáfrica)", + "English (Trinidad and Tobago)" : "inglés (Trinidad y Tobago)", + "English (U.S. Minor Outlying Islands)" : "inglés (Islas Ultramarinas Menores Estadounidenses)", + "English (U.S. Virgin Islands)" : "inglés (Islas Vírgenes Estadounidenses)", + "English (United Kingdom)" : "inglés (Reino Unido)", + "English (United States)" : "inglés (Estados Unidos)", + "English (Zimbabwe)" : "inglés (Zimbabue)", + "English" : "inglés", + "Esperanto" : "esperanto", + "Estonian (Estonia)" : "estonio (Estonia)", + "Estonian" : "estonio", + "Ewe (Ghana)" : "ewe (Gana)", + "Ewe (Togo)" : "ewe (Togo)", + "Ewe" : "ewe", + "Faroese (Faroe Islands)" : "feroés (Islas Faroe)", + "Faroese" : "feroés", + "Filipino (Philippines)" : "filipino (Filipinas)", + "Filipino" : "filipino", + "Finnish (Finland)" : "finés (Finlandia)", + "Finnish" : "finés", + "French (Belgium)" : "francés (Bélgica)", + "French (Benin)" : "francés (Benín)", + "French (Burkina Faso)" : "francés (Burkina Faso)", + "French (Burundi)" : "francés (Burundi)", + "French (Cameroon)" : "francés (Camerún)", + "French (Canada)" : "francés (Canadá)", + "French (Central African Republic)" : "francés (República Centroafricana)", + "French (Chad)" : "francés (Chad)", + "French (Comoros)" : "francés (Comoras)", + "French (Congo - Brazzaville)" : "francés (Congo Brazzaville)", + "French (Congo - Kinshasa)" : "francés (Congo Kinshasha)", + "French (Côte d’Ivoire)" : "francés (Costa de Marfil)", + "French (Djibouti)" : "francés (Yibuti)", + "French (Equatorial Guinea)" : "francés (Guinea Ecuatorial)", + "French (France)" : "francés (Francia)", + "French (Gabon)" : "francés (Gabón)", + "French (Guadeloupe)" : "francés (Guadalupe)", + "French (Guinea)" : "francés (Guinea)", + "French (Luxembourg)" : "francés (Luxemburgo)", + "French (Madagascar)" : "francés (Madagascar)", + "French (Mali)" : "francés (Mali)", + "French (Martinique)" : "francés (Martinica)", + "French (Monaco)" : "francés (Mónaco)", + "French (Niger)" : "francés (Níger)", + "French (Rwanda)" : "francés (Ruanda)", + "French (Réunion)" : "francés (Reunión)", + "French (Saint Barthélemy)" : "francés (San Bartolomé)", + "French (Saint Martin)" : "francés (San Martín)", + "French (Senegal)" : "francés (Senegal)", + "French (Switzerland)" : "francés (Suiza)", + "French (Togo)" : "francés (Togo)", + "French" : "francés", + "Fulah (Senegal)" : "fula (Senegal)", + "Fulah" : "fula", + "Galician (Spain)" : "gallego (España)", + "Galician" : "gallego", + "Ganda (Uganda)" : "ganda (Uganda)", + "Ganda" : "ganda", + "Georgian (Georgia)" : "georgiano (Georgia)", + "Georgian" : "georgiano", + "German (Austria)" : "alemán (Austria)", + "German (Belgium)" : "alemán (Bélgica)", + "German (Germany)" : "alemán (Alemania)", + "German (Liechtenstein)" : "alemán (Liechtenstein)", + "German (Luxembourg)" : "alemán (Luxemburgo)", + "German (Switzerland)" : "alemán (Suiza)", + "German" : "alemán", + "Greek (Cyprus)" : "griego (Chipre)", + "Greek (Greece)" : "griego (Grecia)", + "Greek" : "griego", + "Gujarati (India)" : "gujarati (India)", + "Gujarati" : "gujarati", + "Gusii (Kenya)" : "gusi (Kenia)", + "Gusii" : "gusi", + "Hausa (Latin)" : "hausa (latino)", + "Hausa (Latin, Ghana)" : "hausa, (latino, Gana)", + "Hausa (Latin, Niger)" : "hausa (latino, Níger)", + "Hausa (Latin, Nigeria)" : "hausa (latino, Nigeria)", + "Hausa" : "hausa", + "Hawaiian (United States)" : "hawaiano (Estados Unidos)", + "Hawaiian" : "hawaiano", + "Hebrew (Israel)" : "hebreo (Israel)", + "Hebrew" : "hebreo", + "Hindi (India)" : "hindi (India)", + "Hindi" : "hindi", + "Hungarian (Hungary)" : "húngaro (Hungría)", + "Hungarian" : "húngaro", + "Icelandic (Iceland)" : "islandés (Islandia)", + "Icelandic" : "islandés", + "Igbo (Nigeria)" : "igbo (Nigeria)", + "Igbo" : "igbo", + "Indonesian (Indonesia)" : "indonesio (Indonesia)", + "Indonesian" : "indonesio", + "Irish (Ireland)" : "irlandés (Irlanda)", + "Irish" : "irlandés", + "Italian (Italy)" : "italiano (Italia)", + "Italian (Switzerland)" : "italiano (Suiza)", + "Italian" : "italiano", + "Japanese (Japan)" : "japonés (Japón)", + "Japanese" : "japonés", + "Kabuverdianu (Cape Verde)" : "caboverdiano (Cabo Verde)", + "Kabuverdianu" : "caboverdiano", + "Kabyle (Algeria)" : "cabilio (Argelia)", + "Kabyle" : "cabilio", + "Kalaallisut (Greenland)" : "kalaallisut (Groenlandia)", + "Kalaallisut" : "kalaallisut", + "Kalenjin (Kenya)" : "kalenjin (Kenia)", + "Kalenjin" : "kalenjin", + "Kamba (Kenya)" : "kamba (Kenia)", + "Kamba" : "kamba", + "Kannada (India)" : "kanada (India)", + "Kannada" : "kanada", + "Kazakh (Cyrillic)" : "kazajo (cirílico)", + "Kazakh (Cyrillic, Kazakhstan)" : "kazajo (cirílico, Kazajistán)", + "Kazakh" : "kazajo", + "Khmer (Cambodia)" : "camboyano (Camboya)", + "Khmer" : "camboyano", + "Kikuyu (Kenya)" : "kikuyu (Kenia)", + "Kikuyu" : "kikuyu", + "Kinyarwanda (Rwanda)" : "kinyaruanda (Ruanda)", + "Kinyarwanda" : "kinyaruanda", + "Konkani (India)" : "konkani (India)", + "Konkani" : "konkani", + "Korean (South Korea)" : "coreano (Corea del Sur)", + "Korean" : "coreano", + "Koyra Chiini (Mali)" : "koyra chiini (Mali)", + "Koyra Chiini" : "koyra chiini", + "Koyraboro Senni (Mali)" : "koyraboro senni (Mali)", + "Koyraboro Senni" : "koyraboro senni", + "Langi (Tanzania)" : "langi (Tanzania)", + "Langi" : "langi", + "Latvian (Latvia)" : "letón (Letonia)", + "Latvian" : "letón", + "Lithuanian (Lithuania)" : "lituano (Lituania)", + "Lithuanian" : "lituano", + "Luo (Kenya)" : "luo (Kenia)", + "Luo" : "luo", + "Luyia (Kenya)" : "luyia (Kenia)", + "Luyia" : "luyia", + "Macedonian (Macedonia)" : "macedonio (Macedonia del Norte)", + "Macedonian" : "macedonio", + "Machame (Tanzania)" : "machame (Tanzania)", + "Machame" : "machame", + "Makonde (Tanzania)" : "makonde (Tanzania)", + "Makonde" : "makonde", + "Malagasy (Madagascar)" : "malgache (Madagascar)", + "Malagasy" : "malgache", + "Malay (Brunei)" : "malayo (Brunéi)", + "Malay (Malaysia)" : "malayo (Malasia)", + "Malay" : "malayo", + "Malayalam (India)" : "malayalam (India)", + "Malayalam" : "malayalam", + "Maltese (Malta)" : "maltés (Malta)", + "Maltese" : "maltés", + "Manx (United Kingdom)" : "manés (Reino Unido)", + "Manx" : "manés", + "Marathi (India)" : "marati (India)", + "Marathi" : "marati", + "Masai (Kenya)" : "masái (Kenia)", + "Masai (Tanzania)" : "masái (Tanzania)", + "Masai" : "masái", + "Meru (Kenya)" : "meru (Kenia)", + "Meru" : "meru", + "Morisyen (Mauritius)" : "mauricio (Mauricio)", + "Morisyen" : "mauricio", + "Nama (Namibia)" : "nama (Namibia)", + "Nama" : "nama", + "Nepali (India)" : "nepalí (India)", + "Nepali (Nepal)" : "nepalí (Nepal)", + "Nepali" : "nepalí", + "North Ndebele (Zimbabwe)" : "ndebele del norte (Zimbabue)", + "North Ndebele" : "ndebele del norte", + "Norwegian Bokmål (Norway)" : "bokmål noruego (Noruega)", + "Norwegian Bokmål" : "bokmål noruego", + "Norwegian Nynorsk (Norway)" : "nynorsk noruego (Noruega)", + "Norwegian Nynorsk" : "nynorsk noruego", + "Nyankole (Uganda)" : "nyankole (Uganda)", + "Nyankole" : "nyankole", + "Oriya (India)" : "oriya (India)", + "Oriya" : "oriya", + "Oromo (Ethiopia)" : "oromo (Etiopía)", + "Oromo (Kenya)" : "oromo (Kenia)", + "Oromo" : "oromo", + "Pashto (Afghanistan)" : "pastún (Afganistán)", + "Pashto" : "pastún", + "Persian (Afghanistan)" : "persa (Afganistán)", + "Persian (Iran)" : "persa (Irán)", + "Persian" : "persa", + "Polish (Poland)" : "polaco (Polonia)", + "Polish" : "polaco", + "Portuguese (Brazil)" : "portugués (Brasil)", + "Portuguese (Guinea-Bissau)" : "portugués (Guinea-Bisau)", + "Portuguese (Mozambique)" : "portugués (Mozambique)", + "Portuguese (Portugal)" : "portugués (Portugal)", + "Portuguese" : "portugués", + "Punjabi (Arabic)" : "punyabí (arábigo)", + "Punjabi (Arabic, Pakistan)" : "punyabí (arábigo, Pakistán)", + "Punjabi (Gurmukhi)" : "punyabí (gurmukhi)", + "Punjabi (Gurmukhi, India)" : "punyabí (gurmukhi, India)", + "Punjabi" : "punyabí", + "Romanian (Moldova)" : "rumano (Moldavia)", + "Romanian (Romania)" : "rumano (Rumanía)", + "Romanian" : "rumano", + "Romansh (Switzerland)" : "romanche (Suiza)", + "Romansh" : "romanche", + "Rombo (Tanzania)" : "rombo (Tanzania)", + "Rombo" : "rombo", + "Russian (Moldova)" : "ruso (Moldavia)", + "Russian (Russia)" : "ruso (Rusia)", + "Russian (Ukraine)" : "ruso (Ucrania)", + "Russian" : "ruso", + "Rwa (Tanzania)" : "rwa (Tanzania)", + "Rwa" : "rwa", + "Samburu (Kenya)" : "samburu (Kenia)", + "Samburu" : "samburu", + "Sango (Central African Republic)" : "sango (República Centroafricana)", + "Sango" : "sango", + "Sena (Mozambique)" : "sena (Mozambique)", + "Sena" : "sena", + "Serbian (Cyrillic)" : "serbio (cirílico)", + "Serbian (Cyrillic, Bosnia and Herzegovina)" : "serbio (cirílico, Bosnia y Herzegovina)", + "Serbian (Cyrillic, Montenegro)" : "sergbio (cirílico, Montenegro)", + "Serbian (Cyrillic, Serbia)" : "serbio (cirílico, Serbia)", + "Serbian (Latin)" : "serbio (latino)", + "Serbian (Latin, Bosnia and Herzegovina)" : "serbio (latino, Bosnia y Herzegovina)", + "Serbian (Latin, Montenegro)" : "serbio (latino, Montenegro)", + "Serbian (Latin, Serbia)" : "serbio (latino, Serbia)", + "Serbian" : "serbio", + "Shona (Zimbabwe)" : "shona (Zimbabue)", + "Shona" : "shona", + "Sichuan Yi (China)" : "sichuan yi (China)", + "Sichuan Yi" : "sichuan yi", + "Sinhala (Sri Lanka)" : "sinhala (Sri Lanka)", + "Sinhala" : "sinhala", + "Slovak (Slovakia)" : "eslovaco (Eslovaquia)", + "Slovak" : "eslovaco", + "Slovenian (Slovenia)" : "eslovenio (Eslovenia)", + "Slovenian" : "esloveno", + "Soga (Uganda)" : "soga (uganda)", + "Soga" : "soga", + "Somali (Djibouti)" : "somalí (Yibuti)", + "Somali (Ethiopia)" : "somalí (Etiopía)", + "Somali (Kenya)" : "somalí (Kenia)", + "Somali (Somalia)" : "somalí (Somalia)", + "Somali" : "somalí", + "Spanish (Argentina)" : "español (Argentina)", + "Spanish (Bolivia)" : "español (Bolivia)", + "Spanish (Chile)" : "español (Chile)", + "Spanish (Colombia)" : "español (Colombia)", + "Spanish (Costa Rica)" : "español (Costa Rica)", + "Spanish (Dominican Republic)" : "español (República Dominicana)", + "Spanish (Ecuador)" : "español (Ecuador)", + "Spanish (El Salvador)" : "español (El Salvador)", + "Spanish (Equatorial Guinea)" : "español (Guinea Ecuatorial)", + "Spanish (Guatemala)" : "español (Guatemala)", + "Spanish (Honduras)" : "español (Honduras)", + "Spanish (Latin America)" : "español (latinoamericano)", + "Spanish (Mexico)" : "español (México)", + "Spanish (Nicaragua)" : "español (Nicaragua)", + "Spanish (Panama)" : "español (Panamá)", + "Spanish (Paraguay)" : "español (Paraguay)", + "Spanish (Peru)" : "español (Perú)", + "Spanish (Puerto Rico)" : "español (Puerto Rico)", + "Spanish (Spain)" : "español (España)", + "Spanish (United States)" : "español (Estados Unidos)", + "Spanish (Uruguay)" : "español (Uruguay)", + "Spanish (Venezuela)" : "español (Venezuela)", + "Spanish" : "español", + "Swahili (Kenya)" : "suajili (Kenia)", + "Swahili (Tanzania)" : "suajili (Tanzania)", + "Swahili" : "suajili", + "Swedish (Finland)" : "sueco (Finlandia)", + "Swedish (Sweden)" : "sueco (Suecia)", + "Swedish" : "sueco", + "Swiss German (Switzerland)" : "alemán suizo (Suiza) ", + "Swiss German" : "alemán suizo", + "Tachelhit (Latin)" : "tachelhit (latino)", + "Tachelhit (Latin, Morocco)" : "tachelhit (latino, Marruecos)", + "Tachelhit (Tifinagh)" : "tachelhit (tifinagh)", + "Tachelhit (Tifinagh, Morocco)" : "tachelhit (tifinagh, Marruecos)", + "Tachelhit" : "tachelhit", + "Taita (Kenya)" : "taita (Kenia)", + "Taita" : "taita", + "Tamil (India)" : "tamil (India)", + "Tamil (Sri Lanka)" : "tamil (Sri Lanka)", + "Tamil" : "tamil", + "Telugu (India)" : "telugu (India)", + "Telugu" : "telugu", + "Teso (Kenya)" : "teso (Kenia)", + "Teso (Uganda)" : "teso (Uganda)", + "Teso" : "teso", + "Thai (Thailand)" : "tailandés (Tailandia)", + "Thai" : "tailandés", + "Tibetan (China)" : "tibetano (China)", + "Tibetan (India)" : "tibetano (India)", + "Tibetan" : "tibetano", + "Tigrinya (Eritrea)" : "tingrinya (Eritrea)", + "Tigrinya (Ethiopia)" : "tigrinya (Etiopía)", + "Tigrinya" : "tigrinya", + "Tonga (Tonga)" : "tonga (Tonga)", + "Tonga" : "tonga", + "Turkish (Turkey)" : "turco (Turquía)", + "Turkish" : "turco", + "Ukrainian (Ukraine)" : "ucraniano (Ucrania)", + "Ukrainian" : "ucraniano", + "Urdu (India)" : "urdu (India)", + "Urdu (Pakistan)" : "urdu (Pakistán)", + "Urdu" : "urdu", + "Uzbek (Arabic)" : "uzbeco (arábigo)", + "Uzbek (Arabic, Afghanistan)" : "uzbeco (arábigo, Afganistán)", + "Uzbek (Cyrillic)" : "uzbeco (cirílico)", + "Uzbek (Cyrillic, Uzbekistan)" : "uzbeco (cirílico, Uzbekistán)", + "Uzbek (Latin)" : "uzbeco (latino)", + "Uzbek (Latin, Uzbekistan)" : "uzbeco (latino, Uzbekistán)", + "Uzbek" : "uzbeco", + "Vietnamese (Vietnam)" : "vietnamita (Vietnam)", + "Vietnamese" : "vietnamita", + "Vunjo (Tanzania)" : "vunjo (Tanzania)", + "Vunjo" : "vunjo", + "Welsh (United Kingdom)" : "galés (Reino Unido)", + "Welsh" : "galés", + "Yoruba (Nigeria)" : "yoruba (Nigeria)", + "Yoruba" : "yoruba", + "Zulu (South Africa)" : "zulú (Sudáfrica)", + "Zulu" : "zulú", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "La verificación en dos pasos se puede aplicar para todos\tlos usuarios y grupos específicos. Si no tienen configurado un proveedor de dos pasos, no podrán iniciar sesión en el sistema.", + "Enforce two-factor authentication" : "Imponer verificación en dos pasos", + "Limit to groups" : "Límite para grupos", + "Enforcement of two-factor authentication can be set for certain groups only." : "La obligatoriedad de la autenticación de dos factores puede establecerse solo para ciertos grupos.", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "La autenticación de dos factores es obligatoria para todos los \tmiembros de los siguientes grupos.", + "Enforced groups" : "Grupos obligados", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "La verificación en dos pasos no está impuesta a\tmiembros de los siguientes grupos.", + "Excluded groups" : "Grupos excluidos", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "Cuando los grupos se seleccionan/excluyen, usan la siguiente lógica para determinar si un usuario tiene obligada la 2FA: si no hay grupos seleccionados, 2FA está activa para todos excepto los miembros de los grupos excluidos. Si hay grupos seleccionados, 2FA está activa para todos los miembros de estos. Si un usuaro está a la vez en un grupo seleccionado y otro excluido, el seleccionado tiene preferencia y se obliga la 2FA.", + "Save changes" : "Guardar cambios", + "Marked for remote wipe" : "Marcado para borrado remoto", + "Device settings" : "Configuración del dispositivo", + "Allow filesystem access" : "Permitir acceso al sistema de archivos", + "Rename" : "Renombrar", + "Revoke" : "Revocar", + "Wipe device" : "Borrar dispositivo", + "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Revocar este token puede evitar el borrado de tu dispositivo si no se ha iniciado aún el borrado.", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome para Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "App Nextcloud para iOS", + "Nextcloud Android app" : "App Nextcloud para Android", + "Nextcloud Talk for iOS" : "Nextcloud Talk para iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk para Android", + "Sync client - {os}" : "Cliente de sincronización - {os}", + "This session" : "Esta sesión", + "Device" : "Dispositivo", + "Last activity" : "Última actividad", + "Devices & sessions" : "Dispositivos y sesiones", + "Web, desktop and mobile clients currently logged in to your account." : "Clientes web, móviles y de escritorio actualmente conectados a tu cuenta.", + "Do you really want to wipe your data from this device?" : "¿Estás seguro de querer borrar tus datos de este dispositivo?", + "Confirm wipe" : "Confirmar borrado", + "Error while creating device token" : "Error al crear \"token\" de dispositivo", + "Error while updating device token scope" : "Error al actualizar el alcance del token de dispositivo", + "Error while updating device token name" : "Error al actualizar el nombre del token de dispositivo", + "Error while deleting the token" : "Error al eliminar el \"token\"", + "Error while wiping the device with the token" : "Error al borrar el dispositivo con el token", + "App name" : "Nombre de la app", + "Create new app password" : "Crear nueva contraseña de app", + "Use the credentials below to configure your app or device." : "Use las siguientes credenciales para configurar su app o dispositivo.", + "For security reasons this password will only be shown once." : "Para seguridad, esta contraseña será mostrado solamente una vez.", + "Username" : "Nombre de usuario", + "Password" : "Contraseña", + "Done" : "Hecho", + "Show QR code for mobile apps" : "Mostrar código QR para apps móviles", + "Copied!" : "¡Copiado!", + "Copy" : "Copiar", + "Could not copy app password. Please copy it manually." : "No se ha podido copiar la contraseña de app. Por favor, cópiala manualmente.", + "This app is supported via your current Nextcloud subscription." : "Esta App está soportada a través de su suscripción actual de Nexcloud.", + "Supported" : "Soportada", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Las apps oficiales están desarrolladas por y dentro de la comunidad. Ofrecen una funcionalidad central y están preparadas para su uso en producción.", + "Official" : "Oficial", + "by" : "por", + "Update to {version}" : "Actualizar a {version}", + "Remove" : "Eliminar", + "Disable" : "Desactivar", + "All" : "Todos", + "Limit app usage to groups" : "Limitar uso de apps a grupos", + "No results" : "No hay resultados", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Esta app no tiene una versión mínima de Nextcloud asignada. Esto será un error en el futuro.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Esta app no tiene una versión máxima de Nextcloud asignada. Esto será un error en el futuro.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Esta aplicación no puede instalarse porque las siguientes dependencias no están cumplimentadas:", + "View in store" : "Ver en la tienda", + "Visit website" : "Visite nuestro sitio web", + "Report a bug" : "Notificar un error", + "User documentation" : "Documentación de usuario", + "Admin documentation" : "Documentación de administrador", + "Developer documentation" : "Documentación de desarrollador", + "Update to {update}" : "Actualizar a {update}", + "Results from other categories" : "Resultados de otras categorías", + "No apps found for your version" : "No se han encontrado aplicaciones para su versión", + "Disable all" : "Deshabilitar todos", + "Enable all" : "Activar todas", + "Download and enable" : "Descargar y activar", + "Enable" : "Activar", + "Enable untested app" : "Activar app no testada", + "The app will be downloaded from the app store" : "La app va a ser descargada de una tienda de aplicaciones", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Esta app no está marcada como compatible con tu versión de Nextcloud. Si continúas, todavía serás capaz de instalar la app. Nota que la app puede no funcionar según lo esperado.", + "You do not have permissions to see the details of this user" : "No tienes permisos para ver los detalles de este usuario", + "The backend does not support changing the display name" : "El backend no soporta cambiar el nombre de pantalla", + "New password" : "Nueva contraseña", + "Add user in group" : "Añadir usuario en grupo", + "Set user as admin for" : "Marcar usuario como administrador para", + "Select user quota" : "Seleccionar cuota de usuario", + "No language set" : "No se ha marcado idioma", + "Never" : "Nunca", + "Delete user" : "Eliminar usuario", + "Wipe all devices" : "Borrar todos los dispositivos", + "Disable user" : "Inhabilitar usuario", + "Enable user" : "Habilitar usuario", + "Resend welcome email" : "Volver a enviar correo de bienvenida", + "{size} used" : "{size} usados", + "Welcome mail sent!" : "¡Correo de bienvenida enviado!", + "Display name" : "Nombre para mostrar", + "Email" : "Correo electrónico", + "Group admin for" : "Administrador de grupo para", + "Quota" : "Espacio", + "Language" : "Idioma", + "Storage location" : "Ubicación de los datos", + "User backend" : "Motor de usuario", + "Last login" : "Último inicio de sesión", + "Will be autogenerated" : "Se generará de forma automática", + "Default language" : "Idioma predeterminado", + "Add a new user" : "Añadir un usuario nuevo", + "No users in here" : "No hay usuarios aquí", + "Default quota" : "Espacio predeterminado", + "Password change is disabled because the master key is disabled" : "El cambio de contraseña está desactivado porque la clave maestra está desactivada", + "Common languages" : "Idiomas habituales", + "All languages" : "Todos los idiomas", + "Your apps" : "Tus apps", + "Active apps" : "Apps activas", + "Disabled apps" : "Apps deshabilitadas", + "Updates" : "Actualizaciones", + "App bundles" : "Lotes de apps", + "{license}-licensed" : "licenciado bajo {license}", + "New user" : "Nuevo usuario", + "Default quota:" : "Espacio predeterminado:", + "Select default quota" : "Seleccionar cuota por defecto", + "Show Languages" : "Mostrar idiomas", + "Show last login" : "Mostrar último inicio de sesión", + "Show user backend" : "Mostrar motor de usuario", + "Show storage path" : "Mostrar ruta de almacenamiento", + "You are about to remove the group {group}. The users will NOT be deleted." : "Vas a eliminar el grupo {group}. Los usuarios NO serán eliminados.", + "Please confirm the group removal " : "Por favor, confirma la eliminación del grupo", + "Remove group" : "Eliminar grupo", + "Admins" : "Administradores", + "Disabled users" : "Usuarios inhabilitados", + "Everyone" : "Todos", + "Add group" : "Añadir grupo", + "An error occured during the request. Unable to proceed." : "Ha ocurrido un error durante la petición. No se puede continuar.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "La app ha sido activada pero tiene que actualizarse. Serás redirigido a la página de actualización en 5 segundos.", + "App update" : "Actualización de la aplicación", + "Error: This app can not be enabled because it makes the server unstable" : "Error: Esta app no se puede activar porque desestabiliza el servidor", + "SSL Root Certificates" : "Certificados raíz SSL ", + "Common Name" : "Nombre común", + "Valid until" : "Válido hasta", + "Issued By" : "Emitido por", + "Valid until %s" : "Válido hasta %s", + "Import root certificate" : "Importar certificado raíz", + "Administrator documentation" : "Documentación del adminsitrador", + "Documentation" : "Documentación", + "Forum" : "Foro", + "None" : "Ninguno", + "Login" : "Iniciar sesión", + "Plain" : "Plano", + "NT LAN Manager" : "Gestor de NT LAN", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Servidor de correo electrónico", + "Open documentation" : "Abrir documentación", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Es importante configurar este servidor para que pueda enviar correos, por ejemplo para cambios de contraseñas y notificaciones.", + "Send mode" : "Modo de envío", + "Encryption" : "Cifrado", + "Sendmail mode" : "Modo Sendmail", + "From address" : "Desde la dirección", + "mail" : "correo electrónico", + "Authentication method" : "Método de autenticación", + "Authentication required" : "Se necesita autenticación", + "Server address" : "Dirección del servidor", + "Port" : "Puerto", + "Credentials" : "Credenciales", + "SMTP Username" : "Nombre de usuario SMTP", + "SMTP Password" : "Contraseña SMTP", + "Save" : "Guardar", + "Test email settings" : "Probar configuración de correo electrónico", + "Send email" : "Enviar mensaje", + "Security & setup warnings" : "Avisos de seguridad y configuración", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Es importante para la seguridad y desempeño de tu instancia que todo esté correctamente configurado. Para ayudarte vamos a realizar algunas comprobaciones automáticas. Por favor, comprueba la documentación enlazada para más información.", + "All checks passed." : "Ha pasado todos los controles", + "There are some errors regarding your setup." : "Hay varios errores relativos a su configuración.", + "There are some warnings regarding your setup." : "Hay varios avisos relativos a su configuración.", + "Checking for system and security issues." : "Comprobando problemas del sistema y de seguridad.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Por favor, vuelve a consultar las <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">guías de instalación ↗</a>, y comprueba posibles errores y advertencias en el <a href=\"%2$s\">registro</a>.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Compruebe la seguridad de su Nextcloud mediante <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">nuestro escaneo de seguridad ↗</a>.", + "Version" : "Versión", + "Two-Factor Authentication" : "Verificación en dos pasos", + "Server-side encryption" : "Cifrado en el servidor", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "El cifrado en el lado del servidor hace posible cifrar archivos que se suben a este servidor. Esto trae consigo limitaciones como una ralentización en su funcionamiento, así que activa esto solo si es necesario.", + "Enable server-side encryption" : "Habilitar cifrado en el servidor", + "Please read carefully before activating server-side encryption: " : "Por favor lea cuidadosamente antes de activar el cifrado del lado del servidor.", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Una vez que el cifrado está habilitado, todos los archivos subidos al servidor desde ese punto en adelante se cifrarán en reposo en el servidor. Sólo será posible desactivar el cifrado en una fecha posterior si el módulo de cifrado activado soporta esa función, y todas las condiciones previas (por ejemplo, el establecimiento de una clave de recuperación) se cumplan.", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "El cifrado no garantiza por sí solo la seguridad del sistema. Por favor, vea la documentación para más información sobre cómo funciona la app de cifrado y los casos de uso soportados.", + "Be aware that encryption always increases the file size." : "Tenga presente que la encripción siempre incrementa el tamaño del archivo.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Siempre es bueno crear copias de seguridad de sus datos, en el caso del cifrado, asegúrese de tener una copia de seguridad de las claves de cifrado junto con sus datos.", + "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final. ¿Realmente quiere activar el cifrado?", + "Enable encryption" : "Habilitar cifrado", + "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado el modulo de cifrado. Por favor habilite un modulo de cifrado en el menú de aplicaciones.", + "Select default encryption module:" : "Seleccione el módulo de cifrado por defecto:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Necesita migrar sus claves de cifrado provenientes del antiguo sistema (ownCloud <= 8.0) al nuevo. Por favor habilite el \"Módulo de cifrado por defecto\" y ejecute 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Se necesita migrar las claves de cifrado del antiguo sistema (ownCloud <= 8.0) al nuevo sistema.", + "Start migration" : "Iniciar migración", + "Background jobs" : "Trabajos en segundo plano", + "Last job ran %s." : "El último trabajo se ejecutó %s.", + "Last job execution ran %s. Something seems wrong." : "La última ejecución de un trabajo corrió %s. Algo parece ir mal.", + "Background job didn’t run yet!" : "¡El trabajo en segundo plano no se ha ejecutado todavía!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un rendimiento óptimo es importante configurar correctamente los procesos en segundo plano. Para las instancias más grandes la configuración recomendad es 'cron'a. Por favor, lea la documentación para más información.", + "Pick background job setting" : "Escoge la configuración de las tareas en segundo plano", + "Execute one task with each page loaded" : "Ejecutar una tarea con cada página cargada", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php está registrado en un servicio de web cron para llamar a cron.php cada 5 minutos por HTTP.", + "Use system cron service to call the cron.php file every 5 minutes." : "Usa el servicio cron del sistema para llamar al archivo cron.php cada 5 minutos.", + "The cron.php needs to be executed by the system user \"%s\"." : "El archivo cron.php debe ser ejecutado por el usuario de sistema \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Necesitas la extensión PHP POSIX para lanzar esto. Mira la {linkstart}documentación de PHP{linkend} para más detalles.", + "Sharing" : "Compartir", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador puedes ajustar el comportameiento de compartir. Por favor, lee la documentación para más información.", + "Allow apps to use the Share API" : "Permitir a las aplicaciones utilizar la API de Compartición", + "Allow users to share via link" : "Permite a los usuarios compartir por medio de enlaces", + "Allow public uploads" : "Permitir subidas públicas", + "Always ask for a password" : "Pedir siempre la contraseña", + "Enforce password protection" : "Forzar la protección por contraseña.", + "Set default expiration date" : "Establecer fecha de caducidad predeterminada", + "Expire after " : "Caduca después de", + "days" : "días", + "Enforce expiration date" : "Imponer fecha de caducidad", + "Allow resharing" : "Permitir recompartición", + "Allow sharing with groups" : "Permitir compartir con grupos", + "Restrict users to only share with users in their groups" : "Restringe a los usuarios a compartir solo con otros usuarios en sus grupos", + "Exclude groups from sharing" : "Excluye grupos de compartir", + "These groups will still be able to receive shares, but not to initiate them." : "Estos grupos aún podrán recibir contenidos compartidos, pero no podrán, pero no podrán iniciarlos.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Permitir autocompletado del nombre de usuario en el diálogo de compartir. Si se desactiva, se necesita introducir el nombre de usuario completo o la dirección de correo electrónico", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Mostrar texto de renuncia de responsabilidad en la página de subida con el enlace público. (Sólo se muestra cuando la lista de archivos está oculta.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Este texto se mostrará en la página de subida de enlace público cuando la lista de archivos esté oculta.", + "Default share permissions" : "Permisos para compartir por defecto", + "Personal" : "Personal", + "Administration" : "Administración", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Desarrollado por la {communityopen}comunidad Nextcloud{linkclose}, el {githubopen}código fuente{linkclose} está bajo la licencia {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Da a Me gusta en nuestra página de Facebook", + "Follow us on Twitter" : "Síguenos en Twitter", + "Follow us on Mastodon" : "Síguenos en Mastodon", + "Check out our blog" : "Lee nuestro blog", + "Subscribe to our newsletter" : "Suscríbete a nuestro boletín", + "Profile picture" : "Foto de perfil", + "Upload new" : "Subir otra", + "Select from Files" : "Seleccionar desde Archivos", + "Remove image" : "Borrar imagen", + "png or jpg, max. 20 MB" : "png o jpg, max. 20 MB", + "Picture provided by original account" : "Imagen provista por la cuenta original", + "Cancel" : "Cancelar", + "Choose as profile picture" : "Seleccionar como imagen de perfil", + "Details" : "Detalles", + "You are a member of the following groups:" : "Eres miembro de los siguientes grupos:", + "You are using <strong>%s</strong>" : "Estás usando <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Estás usando <strong>%1$s</strong> de <strong>%2$s</strong> (<strong>%3$s%%</strong>)", + "Full name" : "Nombre completo", + "No display name set" : "No se ha establecido ningún nombre para mostrar", + "Your email address" : "Su dirección de correo", + "No email address set" : "No hay establecida ninguna dirección de correo", + "For password reset and notifications" : "Para notificaciones y cambio de contraseña", + "Phone number" : "Número de teléfono", + "Your phone number" : "Su número de teléfono", + "Address" : "Dirección", + "Your postal address" : "Su dirección física", + "Website" : "Sitio web", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tardar hasta 24 horas que la cuenta aparezca como verificada.", + "Link https://…" : "Enlace https://...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Usuario de Twitter @...", + "Help translate" : "Ayúdanos a traducir", + "Locale" : "Región", + "Current password" : "Contraseña actual", + "Change password" : "Cambiar contraseña", + "Use a second factor besides your password to increase security for your account." : "Usa un segundo factor además de tu contraseña para incrementar la seguridad de tu cuenta. ", + "Disconnect" : "Desconectar", + "Not supported!" : "No está soportado!", + "Press ⌘-C to copy." : "Pulsa ⌘-C para copiar.", + "Press Ctrl-C to copy." : "Pulsa Ctrl-C para copiar.", + "Error while loading browser sessions and device tokens" : "Error al cargar la sesión del navegador y los tokens del dispositivo", + "Store credentials" : "Almacenar credenciales", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php se registra en un servicio webcron para llamar a cron.php cada 15 minutos a través de HTTP.", + "Use system cron service to call the cron.php file every 15 minutes." : "Usar el cron del sistema para ejecutar el archivo cron.php cada 15 minutos.", + "Follow us on Google+" : "Síguenos en Google+" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} \ No newline at end of file diff --git a/apps/settings/l10n/es_419.js b/apps/settings/l10n/es_419.js new file mode 100644 index 00000000000..555eaa7fea4 --- /dev/null +++ b/apps/settings/l10n/es_419.js @@ -0,0 +1,269 @@ +OC.L10N.register( + "settings", + { + "{actor} changed your password" : "{actor} ha cambiado tu contraseña", + "You changed your password" : "Cambiaste tu contraseña", + "Your password was reset by an administrator" : "Tu contraseña ha sido restablecida por un adminsitrador", + "{actor} changed your email address" : "{actor} ha cambiado tu dirección de correo electrónico", + "You changed your email address" : "Cambiaste tu dirección de correo electrónico", + "Your email address was changed by an administrator" : "Tu dirección de correo electrónico ha sido cambiada por un administrador", + "Security" : "Seguridad", + "You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado", + "Couldn't remove app." : "No fue posible eliminar la aplicación. ", + "Couldn't update app." : "No fue posible actualizar la aplicación.", + "Wrong password" : "Contraseña incorrecta", + "Saved" : "Guardado", + "No user supplied" : "No se proporcionó usuario alguno", + "Unable to change password" : "No fue posible cambiar la contraseña", + "Authentication error" : "Error de autenticación", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Por favor proporciona una contraseña de recuperación de administrador; de lo contrario toda la información del usuario se perderá. ", + "Wrong admin recovery password. Please check the password and try again." : "Contraseña de recuperación de administrador incorrecta. Por favor verificala e inténtalo de nuevo.", + "Backend doesn't support password change, but the user's encryption key was updated." : "El backend no soporta el cambio de contraseñas, pero la llave de encripción del usuario fue actualizada.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Instalando y actualizando aplicaciones por la tienda de aplicaciones o Compartido la Nube Federada", + "Federated Cloud Sharing" : "Compartir en la Nube Federada", + "Invalid SMTP password." : "Constraseña SMTP inválida. ", + "Email setting test" : "Prueba de ajustes de correo", + "Well done, %s!" : "¡Bien hecho, %s!", + "If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ", + "Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)", + "You need to set your user email before being able to send test emails." : "Requieres establecer tu correo electrónico antes de poder enviar correos electrónicos de prueba. ", + "Invalid mail address" : "Dirección de correo inválida", + "Settings saved" : "Se han guardado las configuraciones ", + "Unable to change full name" : "No fue posible cambiar el nombre completo", + "Unable to change email address" : "No fue posible cambiar la dirección de correo electrónico", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Para poder verificar tu cuenta de Twitter, publica el siguiente tweet en Twitter (por favor asegúrarte de publicar sin ninguna línea en blanco):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Para poder verificar tu sitio Web, agrega el siguiente contendio a tu web-root en '.well-known/CloudIdVerificationCode.txt' (por favor asegurate de que el texto completo este en una sóla línea):", + "%1$s changed your password on %2$s." : "%1$s cambió tu contraseña el %2$s.", + "Your password on %s was changed." : "Tu contraseña de %s fue cambiada. ", + "Your password on %s was reset by an administrator." : "Tu contraseña de %s fue restablecida por un administrador.", + "Password for %1$s changed on %2$s" : "La contraseña para %1$s fue cambiada el %2$s", + "Password changed for %s" : "La contraseña fue cambiada para %s", + "If you did not request this, please contact an administrator." : "Si no lo solicitaste, por favor contacta a un administrador. ", + "Your email address on %s was changed." : "Tu dirección de correo electrónico en %s fue cambiada. ", + "Your email address on %s was changed by an administrator." : "Tu dirección de correo electrónico en %s fue cambiada por un adminsitrador. ", + "Email address for %1$s changed on %2$s" : "La dirección de correo electrónico para %1$s fue cambiada el %2$s", + "Email address changed for %s" : "La dirección de correo electrónico fue cambiada para %s", + "The new email address is %s" : "La nueva dirección de correo electrónico es %s", + "Your %s account was created" : "Tu cuenta %s ha sido creada", + "Welcome aboard" : "Bienvenido a bordo", + "Welcome aboard %s" : "Bienvenido a bordo %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Bienvenido a tu cuenta %s, puedes agregar, proteger y compartir tus datos.", + "Your username is: %s" : "Tu Usuario es: %s", + "Set your password" : "Establece tu contraseña", + "Go to %s" : "Ir a %s", + "Install Client" : "Instalar el cliente", + "Delete" : "Borrar", + "Unlimited" : "Ilimitado", + "Verifying …" : "Verificando ...", + "Verify" : "Verificar", + "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", + "Migration started …" : "La migración ha comenzado ...", + "Not saved" : "No guardado", + "Sending…" : "Enviando...", + "Email sent" : "Correo electrónico enviado", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Se presentó un error. Por favor carga un certificado PEM con codificación ASCII", + "Valid until {date}" : "Válido hasta {date}", + "Local" : "Local", + "Private" : "Privado", + "Only visible to local users" : "Visible sólo para usuarios locales", + "Only visible to you" : "Sólo visible para ti", + "Contacts" : "Contactos", + "Visible to local users and to trusted servers" : "Visible para usuarios locales y para servidores de confianza", + "Public" : "Público", + "Will be synced to a global and public address book" : "Será sincronizado a una libreta de direcciones global y pública", + "Very weak password" : "Contraseña muy débil", + "Weak password" : "Contraseña débil", + "So-so password" : "Contraseña aceptable", + "Good password" : "Buena contraseña", + "Strong password" : "Contraseña fuerte", + "An error occurred while changing your locale. Please reload the page and try again." : "Ocurrió un error al cambiar tu región", + "Select a profile picture" : "Selecciona una imagen de perfil", + "Groups" : "Grupos", + "Enforce two-factor authentication" : "Forzar autenticación de dos factores", + "Limit to groups" : "Limitar a grupos", + "Save changes" : "Guardar cambios", + "Allow filesystem access" : "Permitir acceso al sistema de archivos", + "Revoke" : "Revocar", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome para Android", + "Sync client - {os}" : "Sync client - {os}", + "This session" : "Esta sesión", + "Device" : "Dispositivo", + "Last activity" : "Última actividad", + "Devices & sessions" : "Dispositivos y sesiones", + "Web, desktop and mobile clients currently logged in to your account." : "Clientes web, de escritorio y móviles han iniciado sesión en tu cuenta. ", + "Error while creating device token" : "Se presentó un error al crear la ficha en el dispositivo", + "Error while deleting the token" : "Se presentó un error al borrar la ficha", + "App name" : "Nombre de la aplicación", + "Create new app password" : "Crear una nueva contraseña de aplicación", + "Use the credentials below to configure your app or device." : "Usa las siguientes credenciales para configurar tu aplicación o dispositivo. ", + "For security reasons this password will only be shown once." : "Por razones de seguridad esta contraseña sólo se mostrará una vez. ", + "Username" : "Usuario", + "Password" : "Contraseña", + "Done" : "Terminado", + "Copied!" : "¡Copiado!", + "Copy" : "Copiar", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Las aplicaciones oficiales son desarrolladas por y dentro de la comunidad. Ofrecen una funcionalidad centralizada y se encuentran listas para ser usadas en producción. ", + "Official" : "Oficial", + "Remove" : "Eliminar", + "Disable" : "Deshabilitar", + "All" : "Todos", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión mínima de Nextcloud asignada. Esto será un error en el futuro.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión máxima de Nextcloud asignada. Esto será un error en el futuro.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Esta aplicación no puede ser instalada porque las siguientes dependencias no están satisfechas:", + "View in store" : "Ver en la tienda", + "Visit website" : "Visita el sitio web", + "Report a bug" : "Reporta un detalle", + "User documentation" : "Documentación del usuario", + "Admin documentation" : "Documentación del administrador", + "Developer documentation" : "Documentación del desarrollador", + "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Enable all" : "Habilitar todo", + "Enable" : "Habilitar", + "The app will be downloaded from the app store" : "La aplicación será descargada de la tienda de aplicaciones <app store>", + "New password" : "Nueva contraseña", + "{size} used" : "{size} usado", + "Email" : "Correo electrónico", + "Group admin for" : "Administrador del grupo para", + "Quota" : "Cuota", + "Language" : "Idioma", + "Storage location" : "Úbicación del almacenamiento", + "User backend" : "Backend del usuario", + "Last login" : "Último inicio de sesión", + "Default quota" : "Cuota predeterminada", + "Your apps" : "Tus aplicaciones", + "Disabled apps" : "Aplicaciones deshabilitadas", + "Updates" : "Actualizaciones", + "App bundles" : "Paquetes de aplicación", + "Show last login" : "Mostrar último inicio de sesión", + "Show user backend" : "Mostrar backend del usuario", + "Admins" : "Administradores", + "Everyone" : "Todos", + "Add group" : "Agregar grupo", + "Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor", + "SSL Root Certificates" : "Certificado SSL Raíz", + "Common Name" : "Nombre común", + "Valid until" : "Válido hasta", + "Issued By" : "Levantado Por", + "Valid until %s" : "Válido hasta %s", + "Import root certificate" : "Importar certificado raíz", + "Administrator documentation" : "Documentación del adminsitrador", + "Forum" : "Foro", + "None" : "Ninguno", + "Login" : "Iniciar sesión", + "Plain" : "Plano", + "NT LAN Manager" : "Administrador de LAN NT", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Servidor de correo electrónico", + "Open documentation" : "Abrir documentación", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Es importante preparar este servidor para poder enviar correos electrónicos, como para restablecer contraseñas y notificaciones. ", + "Send mode" : "Modo de envío", + "Encryption" : "Encripción", + "From address" : "De la dirección", + "mail" : "correo", + "Authentication method" : "Método de autenticación", + "Authentication required" : "Autenticación requerida", + "Server address" : "Dirección del servidor", + "Port" : "Puerto", + "Credentials" : "Credenciales", + "SMTP Username" : "Usuario SMTP", + "SMTP Password" : "Contraseña SMTP", + "Test email settings" : "Probar las configuraciones de correo electrónico", + "Send email" : "Enviar correo electrónico", + "Security & setup warnings" : "Advertencias de seguridad y configuración", + "All checks passed." : "Pasaron todas las verificaciones. ", + "There are some warnings regarding your setup." : "Hay advertencias respecto de la configuración.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Revise la seguridad de su Nextcloud usando <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">el escáner de seguridad ↗</a>.", + "Version" : "Versión", + "Two-Factor Authentication" : "Autenticación de dos factores", + "Server-side encryption" : "Encripción del lado del servidor", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "La encripción del lado del servidor hace posible encriptar archivos que serán cargados a este servidor. Esto trae consigo algunas limitaciónes como penalizaciones en el desemeño, asi que habilítalo sólo si es necesario. ", + "Enable server-side encryption" : "Habilitar encripción del lado del servidor", + "Please read carefully before activating server-side encryption: " : "Por favor lee detenidamente antes de activar la encripción del lado de servidor:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Una vez que la encripción se encuentre habilitada, todos lo archivos cargados al servidor desde ese momento en tiempo, se encriptarán en el servidor. Sólo será posible deshabilitar la encripción en una fecha posterior si el modulo de encripción activo soporta esa funcionalidad y si todas las preciondiciones están satisfechas (ejem. establecer una llave de recuperación).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "La encripción por sí sola no garantiza la seguridad del sistema. Por favor consulta la documentación para mayores informes de cómo funciona la aplicación de encripción y de los casos de uso soportados. ", + "Be aware that encryption always increases the file size." : "Por favor considera que la encripción siempre aumenta el tamaño de los archivos. ", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Siempre es una buena idea generar respaldos de tus datos, en caso de tener encripción asegúrate de respaldar las llaves de encripción junto con tus datos. ", + "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", + "Enable encryption" : "Habilitar encripción", + "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", + "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Necesitas migrar tus llaves de encripción de la encripción anterior (ownCloud <= 8.0) a la actual. Por favor habilita el \"Módulo de encripción predeterminado\" y ejecuta el comando 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Necesitas migar tus llaves de encripción de la encripción anterior (ownCloud <=8.0) a la actual. ", + "Start migration" : "Iniciar migración", + "Background jobs" : "Trabajos en segundo plano", + "Last job ran %s." : "El último trabajo corrió %s.", + "Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ", + "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ", + "Execute one task with each page loaded" : "Ejecutar una tarea con cada página cargada", + "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ", + "Sharing" : "Compartiendo", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", + "Allow apps to use the Share API" : "Permitir que las aplicaciones usen el API para Compartir", + "Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas", + "Allow public uploads" : "Permitir cargas públicas", + "Always ask for a password" : "Siempre pedir una contraseña", + "Enforce password protection" : "Forzar protección de contraseñas", + "Set default expiration date" : "Establecer la fecha de expiración predeterminada", + "Expire after " : "Expirar después de", + "days" : "días", + "Enforce expiration date" : "Forzar fecha de expiración", + "Allow resharing" : "Permitir volver a compartir", + "Allow sharing with groups" : "Permitir compartir con grupos", + "Restrict users to only share with users in their groups" : "Limitar a los usuarios a sólo compartir con otros usuarios en sus grupos", + "Exclude groups from sharing" : "Evitar que los grupos compartan", + "These groups will still be able to receive shares, but not to initiate them." : "Estos grupos aún podrán recibir elementos compartidos, pero no los podrán iniciar.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Permitir el autocompletado de usuarios en la ventana de diálogo de compartir. Si esto está deshabilitado, se deberá ingresar el correo electrónico o nombre completo. ", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Mostrar el texto de exención de responsabilidad legal en la página de carga de ligas públicas. (Sólo se muestra cuando la lista de archivos está oculta.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Este texto se mostrará en la página de carga de la liga pública cuando la lista de archivos esté oculta. ", + "Personal" : "Personal", + "Administration" : "Administración", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Desarrollado por la {communityopen}comunidad Nextcloud {linkclose}, el {githubopen}código fuente {linkclose} está licenciado bajo {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Da un Like a nuestra página de Facebook", + "Follow us on Twitter" : "Síguenos en Twitter", + "Check out our blog" : "Visita nuestro blog", + "Subscribe to our newsletter" : "Suscribete a nuestro boletín", + "Profile picture" : "Foto de perfil", + "Upload new" : "Cargar nuevo", + "Select from Files" : "Seleccionar desde Archivos", + "Remove image" : "Eliminar imagen", + "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", + "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", + "Cancel" : "Cancelar", + "Choose as profile picture" : "Seleccionar como foto del perfil", + "You are a member of the following groups:" : "Eres miembro de los siguientes grupos:", + "You are using <strong>%s</strong>" : "Estas usando <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Estas usando <strong>%1$s</strong> de <strong>%2$s</strong> (<strong>%3$s%%</strong>)", + "Full name" : "Nombre completo", + "No display name set" : "No se ha establecido el nombre a desplegar", + "Your email address" : "Tu dirección de correo electrónico", + "No email address set" : "No se ha establecido la dirección de correo electrónico", + "For password reset and notifications" : "Para restablecer contraseña y notificaciones", + "Phone number" : "Número de teléfono", + "Your phone number" : "Su número telefónico", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "Website" : "Sitio web", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Enlace https:// ...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Cuenta de twitter @...", + "Help translate" : "Ayuda a traducir", + "Locale" : "Región", + "Current password" : "Contraseña actual", + "Change password" : "Cambiar contraseña", + "Store credentials" : "Almacenar credenciales", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php está registrado en un servicio webcron para llamar a cron.php cada 15 minutos a través de HTTP. ", + "Use system cron service to call the cron.php file every 15 minutes." : "Usar el servicio cron del sistema para llamar al archivo cron.php cada 15 minutos. " +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/es_419.json b/apps/settings/l10n/es_419.json new file mode 100644 index 00000000000..f3a44c01248 --- /dev/null +++ b/apps/settings/l10n/es_419.json @@ -0,0 +1,267 @@ +{ "translations": { + "{actor} changed your password" : "{actor} ha cambiado tu contraseña", + "You changed your password" : "Cambiaste tu contraseña", + "Your password was reset by an administrator" : "Tu contraseña ha sido restablecida por un adminsitrador", + "{actor} changed your email address" : "{actor} ha cambiado tu dirección de correo electrónico", + "You changed your email address" : "Cambiaste tu dirección de correo electrónico", + "Your email address was changed by an administrator" : "Tu dirección de correo electrónico ha sido cambiada por un administrador", + "Security" : "Seguridad", + "You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado", + "Couldn't remove app." : "No fue posible eliminar la aplicación. ", + "Couldn't update app." : "No fue posible actualizar la aplicación.", + "Wrong password" : "Contraseña incorrecta", + "Saved" : "Guardado", + "No user supplied" : "No se proporcionó usuario alguno", + "Unable to change password" : "No fue posible cambiar la contraseña", + "Authentication error" : "Error de autenticación", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Por favor proporciona una contraseña de recuperación de administrador; de lo contrario toda la información del usuario se perderá. ", + "Wrong admin recovery password. Please check the password and try again." : "Contraseña de recuperación de administrador incorrecta. Por favor verificala e inténtalo de nuevo.", + "Backend doesn't support password change, but the user's encryption key was updated." : "El backend no soporta el cambio de contraseñas, pero la llave de encripción del usuario fue actualizada.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Instalando y actualizando aplicaciones por la tienda de aplicaciones o Compartido la Nube Federada", + "Federated Cloud Sharing" : "Compartir en la Nube Federada", + "Invalid SMTP password." : "Constraseña SMTP inválida. ", + "Email setting test" : "Prueba de ajustes de correo", + "Well done, %s!" : "¡Bien hecho, %s!", + "If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ", + "Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)", + "You need to set your user email before being able to send test emails." : "Requieres establecer tu correo electrónico antes de poder enviar correos electrónicos de prueba. ", + "Invalid mail address" : "Dirección de correo inválida", + "Settings saved" : "Se han guardado las configuraciones ", + "Unable to change full name" : "No fue posible cambiar el nombre completo", + "Unable to change email address" : "No fue posible cambiar la dirección de correo electrónico", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Para poder verificar tu cuenta de Twitter, publica el siguiente tweet en Twitter (por favor asegúrarte de publicar sin ninguna línea en blanco):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Para poder verificar tu sitio Web, agrega el siguiente contendio a tu web-root en '.well-known/CloudIdVerificationCode.txt' (por favor asegurate de que el texto completo este en una sóla línea):", + "%1$s changed your password on %2$s." : "%1$s cambió tu contraseña el %2$s.", + "Your password on %s was changed." : "Tu contraseña de %s fue cambiada. ", + "Your password on %s was reset by an administrator." : "Tu contraseña de %s fue restablecida por un administrador.", + "Password for %1$s changed on %2$s" : "La contraseña para %1$s fue cambiada el %2$s", + "Password changed for %s" : "La contraseña fue cambiada para %s", + "If you did not request this, please contact an administrator." : "Si no lo solicitaste, por favor contacta a un administrador. ", + "Your email address on %s was changed." : "Tu dirección de correo electrónico en %s fue cambiada. ", + "Your email address on %s was changed by an administrator." : "Tu dirección de correo electrónico en %s fue cambiada por un adminsitrador. ", + "Email address for %1$s changed on %2$s" : "La dirección de correo electrónico para %1$s fue cambiada el %2$s", + "Email address changed for %s" : "La dirección de correo electrónico fue cambiada para %s", + "The new email address is %s" : "La nueva dirección de correo electrónico es %s", + "Your %s account was created" : "Tu cuenta %s ha sido creada", + "Welcome aboard" : "Bienvenido a bordo", + "Welcome aboard %s" : "Bienvenido a bordo %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Bienvenido a tu cuenta %s, puedes agregar, proteger y compartir tus datos.", + "Your username is: %s" : "Tu Usuario es: %s", + "Set your password" : "Establece tu contraseña", + "Go to %s" : "Ir a %s", + "Install Client" : "Instalar el cliente", + "Delete" : "Borrar", + "Unlimited" : "Ilimitado", + "Verifying …" : "Verificando ...", + "Verify" : "Verificar", + "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", + "Migration started …" : "La migración ha comenzado ...", + "Not saved" : "No guardado", + "Sending…" : "Enviando...", + "Email sent" : "Correo electrónico enviado", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Se presentó un error. Por favor carga un certificado PEM con codificación ASCII", + "Valid until {date}" : "Válido hasta {date}", + "Local" : "Local", + "Private" : "Privado", + "Only visible to local users" : "Visible sólo para usuarios locales", + "Only visible to you" : "Sólo visible para ti", + "Contacts" : "Contactos", + "Visible to local users and to trusted servers" : "Visible para usuarios locales y para servidores de confianza", + "Public" : "Público", + "Will be synced to a global and public address book" : "Será sincronizado a una libreta de direcciones global y pública", + "Very weak password" : "Contraseña muy débil", + "Weak password" : "Contraseña débil", + "So-so password" : "Contraseña aceptable", + "Good password" : "Buena contraseña", + "Strong password" : "Contraseña fuerte", + "An error occurred while changing your locale. Please reload the page and try again." : "Ocurrió un error al cambiar tu región", + "Select a profile picture" : "Selecciona una imagen de perfil", + "Groups" : "Grupos", + "Enforce two-factor authentication" : "Forzar autenticación de dos factores", + "Limit to groups" : "Limitar a grupos", + "Save changes" : "Guardar cambios", + "Allow filesystem access" : "Permitir acceso al sistema de archivos", + "Revoke" : "Revocar", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome para Android", + "Sync client - {os}" : "Sync client - {os}", + "This session" : "Esta sesión", + "Device" : "Dispositivo", + "Last activity" : "Última actividad", + "Devices & sessions" : "Dispositivos y sesiones", + "Web, desktop and mobile clients currently logged in to your account." : "Clientes web, de escritorio y móviles han iniciado sesión en tu cuenta. ", + "Error while creating device token" : "Se presentó un error al crear la ficha en el dispositivo", + "Error while deleting the token" : "Se presentó un error al borrar la ficha", + "App name" : "Nombre de la aplicación", + "Create new app password" : "Crear una nueva contraseña de aplicación", + "Use the credentials below to configure your app or device." : "Usa las siguientes credenciales para configurar tu aplicación o dispositivo. ", + "For security reasons this password will only be shown once." : "Por razones de seguridad esta contraseña sólo se mostrará una vez. ", + "Username" : "Usuario", + "Password" : "Contraseña", + "Done" : "Terminado", + "Copied!" : "¡Copiado!", + "Copy" : "Copiar", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Las aplicaciones oficiales son desarrolladas por y dentro de la comunidad. Ofrecen una funcionalidad centralizada y se encuentran listas para ser usadas en producción. ", + "Official" : "Oficial", + "Remove" : "Eliminar", + "Disable" : "Deshabilitar", + "All" : "Todos", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión mínima de Nextcloud asignada. Esto será un error en el futuro.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión máxima de Nextcloud asignada. Esto será un error en el futuro.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Esta aplicación no puede ser instalada porque las siguientes dependencias no están satisfechas:", + "View in store" : "Ver en la tienda", + "Visit website" : "Visita el sitio web", + "Report a bug" : "Reporta un detalle", + "User documentation" : "Documentación del usuario", + "Admin documentation" : "Documentación del administrador", + "Developer documentation" : "Documentación del desarrollador", + "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Enable all" : "Habilitar todo", + "Enable" : "Habilitar", + "The app will be downloaded from the app store" : "La aplicación será descargada de la tienda de aplicaciones <app store>", + "New password" : "Nueva contraseña", + "{size} used" : "{size} usado", + "Email" : "Correo electrónico", + "Group admin for" : "Administrador del grupo para", + "Quota" : "Cuota", + "Language" : "Idioma", + "Storage location" : "Úbicación del almacenamiento", + "User backend" : "Backend del usuario", + "Last login" : "Último inicio de sesión", + "Default quota" : "Cuota predeterminada", + "Your apps" : "Tus aplicaciones", + "Disabled apps" : "Aplicaciones deshabilitadas", + "Updates" : "Actualizaciones", + "App bundles" : "Paquetes de aplicación", + "Show last login" : "Mostrar último inicio de sesión", + "Show user backend" : "Mostrar backend del usuario", + "Admins" : "Administradores", + "Everyone" : "Todos", + "Add group" : "Agregar grupo", + "Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor", + "SSL Root Certificates" : "Certificado SSL Raíz", + "Common Name" : "Nombre común", + "Valid until" : "Válido hasta", + "Issued By" : "Levantado Por", + "Valid until %s" : "Válido hasta %s", + "Import root certificate" : "Importar certificado raíz", + "Administrator documentation" : "Documentación del adminsitrador", + "Forum" : "Foro", + "None" : "Ninguno", + "Login" : "Iniciar sesión", + "Plain" : "Plano", + "NT LAN Manager" : "Administrador de LAN NT", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Servidor de correo electrónico", + "Open documentation" : "Abrir documentación", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Es importante preparar este servidor para poder enviar correos electrónicos, como para restablecer contraseñas y notificaciones. ", + "Send mode" : "Modo de envío", + "Encryption" : "Encripción", + "From address" : "De la dirección", + "mail" : "correo", + "Authentication method" : "Método de autenticación", + "Authentication required" : "Autenticación requerida", + "Server address" : "Dirección del servidor", + "Port" : "Puerto", + "Credentials" : "Credenciales", + "SMTP Username" : "Usuario SMTP", + "SMTP Password" : "Contraseña SMTP", + "Test email settings" : "Probar las configuraciones de correo electrónico", + "Send email" : "Enviar correo electrónico", + "Security & setup warnings" : "Advertencias de seguridad y configuración", + "All checks passed." : "Pasaron todas las verificaciones. ", + "There are some warnings regarding your setup." : "Hay advertencias respecto de la configuración.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Revise la seguridad de su Nextcloud usando <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">el escáner de seguridad ↗</a>.", + "Version" : "Versión", + "Two-Factor Authentication" : "Autenticación de dos factores", + "Server-side encryption" : "Encripción del lado del servidor", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "La encripción del lado del servidor hace posible encriptar archivos que serán cargados a este servidor. Esto trae consigo algunas limitaciónes como penalizaciones en el desemeño, asi que habilítalo sólo si es necesario. ", + "Enable server-side encryption" : "Habilitar encripción del lado del servidor", + "Please read carefully before activating server-side encryption: " : "Por favor lee detenidamente antes de activar la encripción del lado de servidor:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Una vez que la encripción se encuentre habilitada, todos lo archivos cargados al servidor desde ese momento en tiempo, se encriptarán en el servidor. Sólo será posible deshabilitar la encripción en una fecha posterior si el modulo de encripción activo soporta esa funcionalidad y si todas las preciondiciones están satisfechas (ejem. establecer una llave de recuperación).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "La encripción por sí sola no garantiza la seguridad del sistema. Por favor consulta la documentación para mayores informes de cómo funciona la aplicación de encripción y de los casos de uso soportados. ", + "Be aware that encryption always increases the file size." : "Por favor considera que la encripción siempre aumenta el tamaño de los archivos. ", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Siempre es una buena idea generar respaldos de tus datos, en caso de tener encripción asegúrate de respaldar las llaves de encripción junto con tus datos. ", + "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", + "Enable encryption" : "Habilitar encripción", + "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", + "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Necesitas migrar tus llaves de encripción de la encripción anterior (ownCloud <= 8.0) a la actual. Por favor habilita el \"Módulo de encripción predeterminado\" y ejecuta el comando 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Necesitas migar tus llaves de encripción de la encripción anterior (ownCloud <=8.0) a la actual. ", + "Start migration" : "Iniciar migración", + "Background jobs" : "Trabajos en segundo plano", + "Last job ran %s." : "El último trabajo corrió %s.", + "Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ", + "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ", + "Execute one task with each page loaded" : "Ejecutar una tarea con cada página cargada", + "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ", + "Sharing" : "Compartiendo", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", + "Allow apps to use the Share API" : "Permitir que las aplicaciones usen el API para Compartir", + "Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas", + "Allow public uploads" : "Permitir cargas públicas", + "Always ask for a password" : "Siempre pedir una contraseña", + "Enforce password protection" : "Forzar protección de contraseñas", + "Set default expiration date" : "Establecer la fecha de expiración predeterminada", + "Expire after " : "Expirar después de", + "days" : "días", + "Enforce expiration date" : "Forzar fecha de expiración", + "Allow resharing" : "Permitir volver a compartir", + "Allow sharing with groups" : "Permitir compartir con grupos", + "Restrict users to only share with users in their groups" : "Limitar a los usuarios a sólo compartir con otros usuarios en sus grupos", + "Exclude groups from sharing" : "Evitar que los grupos compartan", + "These groups will still be able to receive shares, but not to initiate them." : "Estos grupos aún podrán recibir elementos compartidos, pero no los podrán iniciar.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Permitir el autocompletado de usuarios en la ventana de diálogo de compartir. Si esto está deshabilitado, se deberá ingresar el correo electrónico o nombre completo. ", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Mostrar el texto de exención de responsabilidad legal en la página de carga de ligas públicas. (Sólo se muestra cuando la lista de archivos está oculta.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Este texto se mostrará en la página de carga de la liga pública cuando la lista de archivos esté oculta. ", + "Personal" : "Personal", + "Administration" : "Administración", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Desarrollado por la {communityopen}comunidad Nextcloud {linkclose}, el {githubopen}código fuente {linkclose} está licenciado bajo {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Da un Like a nuestra página de Facebook", + "Follow us on Twitter" : "Síguenos en Twitter", + "Check out our blog" : "Visita nuestro blog", + "Subscribe to our newsletter" : "Suscribete a nuestro boletín", + "Profile picture" : "Foto de perfil", + "Upload new" : "Cargar nuevo", + "Select from Files" : "Seleccionar desde Archivos", + "Remove image" : "Eliminar imagen", + "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", + "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", + "Cancel" : "Cancelar", + "Choose as profile picture" : "Seleccionar como foto del perfil", + "You are a member of the following groups:" : "Eres miembro de los siguientes grupos:", + "You are using <strong>%s</strong>" : "Estas usando <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Estas usando <strong>%1$s</strong> de <strong>%2$s</strong> (<strong>%3$s%%</strong>)", + "Full name" : "Nombre completo", + "No display name set" : "No se ha establecido el nombre a desplegar", + "Your email address" : "Tu dirección de correo electrónico", + "No email address set" : "No se ha establecido la dirección de correo electrónico", + "For password reset and notifications" : "Para restablecer contraseña y notificaciones", + "Phone number" : "Número de teléfono", + "Your phone number" : "Su número telefónico", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "Website" : "Sitio web", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Enlace https:// ...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Cuenta de twitter @...", + "Help translate" : "Ayuda a traducir", + "Locale" : "Región", + "Current password" : "Contraseña actual", + "Change password" : "Cambiar contraseña", + "Store credentials" : "Almacenar credenciales", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php está registrado en un servicio webcron para llamar a cron.php cada 15 minutos a través de HTTP. ", + "Use system cron service to call the cron.php file every 15 minutes." : "Usar el servicio cron del sistema para llamar al archivo cron.php cada 15 minutos. " +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} \ No newline at end of file diff --git a/apps/settings/l10n/es_AR.js b/apps/settings/l10n/es_AR.js new file mode 100644 index 00000000000..efc7b4b4d7a --- /dev/null +++ b/apps/settings/l10n/es_AR.js @@ -0,0 +1,245 @@ +OC.L10N.register( + "settings", + { + "{actor} changed your password" : "{actor} ha cambiado su contraseña", + "You changed your password" : "Usted ha cambiado su contraseña", + "Your password was reset by an administrator" : "Su contraseña ha sido restablecida por un adminsitrador", + "{actor} changed your email address" : "{actor} ha cambiado su dirección de correo electrónico", + "You changed your email address" : "Usted ha cambiado su dirección de correo electrónico", + "Your email address was changed by an administrator" : "Su dirección de correo electrónico ha sido cambiada por un administrador", + "Security" : "Seguridad", + "You successfully logged in using two-factor authentication (%1$s)" : "Ha iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autienticación de dos-factores ha fallado (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Su <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado", + "Couldn't remove app." : "No fue posible eliminar la aplicación. ", + "Couldn't update app." : "No fue posible actualizar la aplicación.", + "Wrong password" : "Contraseña incorrecta", + "Saved" : "Guardado", + "No user supplied" : "No se proporcionó un usuario", + "Unable to change password" : "No fue posible cambiar la contraseña", + "Authentication error" : "Error de autenticación", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Favor de proporcionar una contraseña de recuperación de administrador; de lo contrario toda la información del usuario se perderá. ", + "Wrong admin recovery password. Please check the password and try again." : "Contraseña de recuperación de administrador incorrecta. Favor de verificarla e inténtelo de nuevo.", + "Backend doesn't support password change, but the user's encryption key was updated." : "El backend no soporta el cambio de contraseñas, pero la llave de encripción del usuario fue actualizada.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Instalando y actualizando aplicaciones por la tienda de aplicaciones o Compartido la Nube Federada", + "Federated Cloud Sharing" : "Compartir en la Nube Federada", + "Invalid SMTP password." : "Constraseña SMTP inválida. ", + "Email setting test" : "Prueba de ajustes de correo", + "Well done, %s!" : "¡Bien hecho, %s!", + "If you received this email, the email configuration seems to be correct." : "Si usted ha recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ", + "Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Favor de verficiar la bitácora de su servidor de correo", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Favor de revisar sus configuraciones (Error: %s)", + "You need to set your user email before being able to send test emails." : "Requiere establecer su correo electrónico andes de poder enviar correos electrónicos de prueba. ", + "Invalid mail address" : "Dirección de correo inválida", + "Settings saved" : "Se han guardado las configuraciones ", + "Unable to change full name" : "No fue posible cambiar el nombre completo", + "Unable to change email address" : "No fue posible cambiar la dirección de correo electrónico", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Para poder verificar su cuenta de Twitter, publique el siguiente tweet en Twitter (favor de asegurarse de publicar sin ninguna línea en blanco):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Para poder verficiar si sitio Web, agrege el siguiente contendio a su web-root en '.well-known/CloudIdVerificationCode.txt' (favor de asegurarse de que el texto completo este en una sóla línea):", + "%1$s changed your password on %2$s." : "%1$s cambió su contraseña el %2$s.", + "Your password on %s was changed." : "Su contraseña de %s fue cambiada. ", + "Your password on %s was reset by an administrator." : "Su contraseña de %s fue restablecida por un administrador.", + "Password for %1$s changed on %2$s" : "La contraseña para %1$s fue cambiada el %2$s", + "Password changed for %s" : "La contraseña fue cambiada para %s", + "If you did not request this, please contact an administrator." : "Si no lo solicitó, favor de contactar a un administrador. ", + "Your email address on %s was changed." : "Su dirección de correo electrónico en %s fue cambiada. ", + "Your email address on %s was changed by an administrator." : "Su dirección de correo electrónico en %s fue cambiada por un adminsitrador. ", + "Email address for %1$s changed on %2$s" : "La dirección de correo electrónico para %1$s fue cambiada el %2$s", + "Email address changed for %s" : "La dirección de correo electrónico fue cambiada para %s", + "The new email address is %s" : "La nueva dirección de correo electrónico es %s", + "Your %s account was created" : "Su %s cuenta ha sido creada", + "Welcome aboard" : "Bienvenido a bordo", + "Welcome aboard %s" : "Bienvenido a bordo %s", + "Your username is: %s" : "Su nombre de usuario es: %s", + "Set your password" : "Establezca su contraseña", + "Go to %s" : "Ir a %s", + "Install Client" : "Instalar el cliente", + "Delete" : "Borrar", + "Unlimited" : "Ilimitado", + "Verifying …" : "Verificando ...", + "Verify" : "Verificar", + "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Favor de aguardar hasta que termine", + "Migration started …" : "La migración ha comenzado ...", + "Not saved" : "No guardado", + "Sending…" : "Enviando...", + "Email sent" : "Correo electrónico enviado", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Se presentó un error. Favor de cargar un certificado PEM con codificación ASCII", + "Valid until {date}" : "Válido hasta {date}", + "Local" : "Local", + "Private" : "Privado", + "Only visible to local users" : "Visible sólo para usuarios locales", + "Only visible to you" : "Sólo visible para usted", + "Contacts" : "Contactos", + "Visible to local users and to trusted servers" : "Visible para usuarios locales y para servidores de confianza", + "Public" : "Público", + "Will be synced to a global and public address book" : "Será sincronizado a una libreta de direcciones global y pública", + "Very weak password" : "Contraseña muy débil", + "Weak password" : "Contraseña débil", + "So-so password" : "Contraseña aceptable", + "Good password" : "Buena contraseña", + "Strong password" : "Contraseña fuerte", + "Select a profile picture" : "Seleccionar una imagen de perfil", + "Groups" : "Grupos", + "Limit to groups" : "Limitar a grupos", + "Allow filesystem access" : "Permitir acceso al sistema de archivos", + "Revoke" : "Revocar", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome para Android", + "Sync client - {os}" : "Sync client - {os}", + "This session" : "Esta sesión", + "Device" : "Dispositivo", + "Last activity" : "Última actividad", + "Web, desktop and mobile clients currently logged in to your account." : "Clientes web, de escritorio y móviles han iniciado sesión en su cuenta. ", + "Error while creating device token" : "Se presentó un error al crear la ficha en el dispositivo", + "Error while deleting the token" : "Se presentó un error al borrar la ficha", + "App name" : "Nombre de la aplicación", + "Create new app password" : "Crear una nueva contraseña de aplicación", + "Use the credentials below to configure your app or device." : "Use las siguientes credenciales para configurar su aplicación o dispositivo. ", + "For security reasons this password will only be shown once." : "Por razones de seguridad esta contraseña sólo se mostrará una vez. ", + "Username" : "Nombre de usuario", + "Password" : "Contraseña", + "Done" : "Terminado", + "Copied!" : "¡Credenciales!", + "Copy" : "Copiar", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Las aplicaciones oficiales son desarrolladas por y dentro de la comunidad. Ofrecen una funcionalidad centralizada y se encuentran listas para ser usadas en producción. ", + "Official" : "Oficial", + "Remove" : "Eliminar", + "Disable" : "Deshabilitar", + "All" : "Todos", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión mínima de Nextcloud asignada. Esto será un error en el futuro.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión máxima de Nextcloud asignada. Esto será un error en el futuro.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Esta aplicación no puede ser instalada porque las siguientes dependencias no están satisfechas:", + "View in store" : "Ver en la tienda", + "Visit website" : "Visite el sitio web", + "Report a bug" : "Reporte un tema", + "User documentation" : "Documentación del usuario", + "Admin documentation" : "Documentación del administrador", + "Developer documentation" : "Documentación del desarrollador", + "No apps found for your version" : "No se encontraron aplicaciones para su versión", + "Enable all" : "Habilitar todo", + "Enable" : "Habilitar", + "The app will be downloaded from the app store" : "La aplicación será descargada de la tienda de aplicaciones <app store>", + "New password" : "Nueva contraseña", + "Email" : "Correo electrónico", + "Group admin for" : "Administrador del grupo para", + "Quota" : "Cuota", + "Language" : "Idioma", + "Storage location" : "Úbicación del almacenamiento", + "User backend" : "Backend del usuario", + "Last login" : "Último inicio de sesión", + "Default quota" : "Cuota predeterminada", + "Your apps" : "Sus aplicaciones", + "Disabled apps" : "Aplicaciones deshabilitadas", + "App bundles" : "Paquetes de aplicacion", + "Show last login" : "Mostrar último inicio de sesión", + "Show user backend" : "Mostrar backend del usuario", + "Admins" : "Administradores", + "Everyone" : "Todos", + "Add group" : "Agregar grupo", + "SSL Root Certificates" : "Certificado SSL Raíz", + "Common Name" : "Nombre común", + "Valid until" : "Válido hasta", + "Issued By" : "Levantado Por", + "Valid until %s" : "Válido hasta %s", + "Import root certificate" : "Importar certificado raíz", + "Administrator documentation" : "Documentación de adminsitrador", + "Forum" : "Foro", + "None" : "Ninguno", + "Login" : "Inicio de sesión", + "Plain" : "Plano", + "NT LAN Manager" : "Administrador de LAN NT", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Servidor de correo electrónico", + "Open documentation" : "Abrir documentación", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Es importante preparar este servidor para poder enviar correos electrónicos, como para restablecer contraseñas y notificaciones. ", + "Send mode" : "Modo de envío", + "Encryption" : "Encripción", + "From address" : "De la dirección", + "mail" : "correo", + "Authentication method" : "Método de autenticación", + "Authentication required" : "Autenticación requerida", + "Server address" : "Dirección del servidor", + "Port" : "Puerto", + "Credentials" : "Credenciales", + "SMTP Username" : "nombre de usuario SMTP", + "SMTP Password" : "Contraseña SMTP", + "Test email settings" : "Probar las configuraciones de correo electrónico", + "Send email" : "Enviar correo electrónico", + "Security & setup warnings" : "Advertencias de seguridad y configuración", + "All checks passed." : "Pasaron todas las verificaciones. ", + "Version" : "Versión", + "Server-side encryption" : "Encripción del lado del servidor", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "La encripción del lado del servidor hace posible encriptar archivos que serán cargados a este servidor. Esto trae consigo algunas limitaciónes como penalizaciones en el desemeño, asi que sólo habilítelo si es necesario. ", + "Enable server-side encryption" : "Habilitar encripción del lado del servidor", + "Please read carefully before activating server-side encryption: " : "Favor de leer detenidamente antes de activar la encripción del lado de servidor:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Una vez que la encripción se encuentre habilitada, todos lo archivos cargados al servidor desde ese momento en tiempo, se encriptarán en el servidor. Sólo será posible deshabilitar la encripción en una fecha posterior si el modulo de encripción activo soporta esa funcionalidad y si todas las preciondiciones están satisfechas (ejem. establecer una llave de recuperación).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "La encripción por sí sola no garantiza la seguridad del sistema. Favor de consultar la documentación para mayores informes de cómo funciona la aplicación de encripción y de los casos de uso soportados. ", + "Be aware that encryption always increases the file size." : "Favor de considerar que la encripción siempre aumenta el tamaño de los archivos. ", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Siempre es una buena idea generar respaldos de sus datos, en caso de tener encripción asegúrese de respaldar las llaves de encripción junto con sus datos. ", + "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente desea habilitar la encripción?", + "Enable encryption" : "Habilitar encripción", + "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, favor de habilitar un módulo de encripción en el menú de la aplicación. ", + "Select default encryption module:" : "Seleccionar modulo de encripción predeterminado:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Usted necesita migrar sus llaves de encripción de la encripción anterior (ownCloud <= 8.0) a la actual. Favor de habilitar el \"Módulo de encripción predeterminado\" y ejecute el comando 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Usted necesita migar sus llaves de encripción de la encripción anterior (ownCloud <=8.0) a la actual. ", + "Start migration" : "Comenzar migración", + "Background jobs" : "Trabajos en segundo plano", + "Last job ran %s." : "El último trabajo corrió %s.", + "Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ", + "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctametne. Para instancias más grandes 'Cron' es el ajuste recomendado. Favor de consultar la documentación para más información. ", + "Execute one task with each page loaded" : "Ejecutar una tarea con cada página cargada", + "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario del sistema \"%s\".", + "Sharing" : "Compartiendo", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, usted puede hacer ajustes finos al comportamiento de compartir. Favor de consultar la documentación para más información. ", + "Allow apps to use the Share API" : "Permitir que las aplicaciones usen el API para Compartir", + "Allow users to share via link" : "Permitir a los usuarios compartir mediante links", + "Allow public uploads" : "Permitir cargas públicas", + "Always ask for a password" : "Siempre pedir una contraseña", + "Enforce password protection" : "Forzar protección de contraseñas", + "Set default expiration date" : "Establecer la fecha de expiración predeterminada", + "Expire after " : "Expirar después de", + "days" : "días", + "Enforce expiration date" : "Forzar fecha de expiración", + "Allow resharing" : "Permitir volver a compartir", + "Allow sharing with groups" : "Permitir compartir con grupos", + "Restrict users to only share with users in their groups" : "Limitar a los usuarios a sólo compartir con otros usuarios en sus grupos", + "Exclude groups from sharing" : "Evitar que los grupos compartan", + "These groups will still be able to receive shares, but not to initiate them." : "Estos grupos áun podrán recibir elementos compartidos, pero no los podrán iniciar.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Mostrar el texto de exención de responsabilidad legal en la página de carga de links públicos. (Sólo se muestra cuando la lista de archivos está oculta.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Este texto se mostrará en la página de carga de el link público cuando la lista de archivos esté oculta. ", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Desarrollado por la {communityopen}comunidad Nextcloud {linkclose}, el {githubopen}código fuente {linkclose} está licenciado bajo {licenseopen}AGPL{linkclose}.", + "Profile picture" : "Foto de perfil", + "Upload new" : "Cargar nuevo", + "Select from Files" : "Seleccionar desde Archivos", + "Remove image" : "Eliminar imagen", + "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", + "Picture provided by original account" : "Imagen proporcionadoa por la cuenta original ", + "Cancel" : "Cancelar", + "Choose as profile picture" : "Seleccionar como foto del perfil", + "Full name" : "Nombre completo", + "No display name set" : "No se ha establecido el nombre a desplegar", + "Your email address" : "Su dirección de correo electrónico", + "No email address set" : "No se ha establecido la dirección de correo electrónico", + "For password reset and notifications" : "Para reestablecer contraseña y notificaciones", + "Phone number" : "Número de teléfono", + "Your phone number" : "Su número telefónico", + "Address" : "Dirección", + "Your postal address" : "Su dirección postal", + "Website" : "Sitio web", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Link https:// ...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Cuenta de twitter @...", + "Help translate" : "Ayude a traducir", + "Current password" : "Contraseña actual", + "Change password" : "Cambiar contraseña", + "Store credentials" : "Almacenar credenciales", + "Use system cron service to call the cron.php file every 15 minutes." : "Usar el servicio cron del sistema para llamar al archivo cron.php cada 15 minutos. " +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/es_AR.json b/apps/settings/l10n/es_AR.json new file mode 100644 index 00000000000..1994692692e --- /dev/null +++ b/apps/settings/l10n/es_AR.json @@ -0,0 +1,243 @@ +{ "translations": { + "{actor} changed your password" : "{actor} ha cambiado su contraseña", + "You changed your password" : "Usted ha cambiado su contraseña", + "Your password was reset by an administrator" : "Su contraseña ha sido restablecida por un adminsitrador", + "{actor} changed your email address" : "{actor} ha cambiado su dirección de correo electrónico", + "You changed your email address" : "Usted ha cambiado su dirección de correo electrónico", + "Your email address was changed by an administrator" : "Su dirección de correo electrónico ha sido cambiada por un administrador", + "Security" : "Seguridad", + "You successfully logged in using two-factor authentication (%1$s)" : "Ha iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autienticación de dos-factores ha fallado (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Su <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado", + "Couldn't remove app." : "No fue posible eliminar la aplicación. ", + "Couldn't update app." : "No fue posible actualizar la aplicación.", + "Wrong password" : "Contraseña incorrecta", + "Saved" : "Guardado", + "No user supplied" : "No se proporcionó un usuario", + "Unable to change password" : "No fue posible cambiar la contraseña", + "Authentication error" : "Error de autenticación", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Favor de proporcionar una contraseña de recuperación de administrador; de lo contrario toda la información del usuario se perderá. ", + "Wrong admin recovery password. Please check the password and try again." : "Contraseña de recuperación de administrador incorrecta. Favor de verificarla e inténtelo de nuevo.", + "Backend doesn't support password change, but the user's encryption key was updated." : "El backend no soporta el cambio de contraseñas, pero la llave de encripción del usuario fue actualizada.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Instalando y actualizando aplicaciones por la tienda de aplicaciones o Compartido la Nube Federada", + "Federated Cloud Sharing" : "Compartir en la Nube Federada", + "Invalid SMTP password." : "Constraseña SMTP inválida. ", + "Email setting test" : "Prueba de ajustes de correo", + "Well done, %s!" : "¡Bien hecho, %s!", + "If you received this email, the email configuration seems to be correct." : "Si usted ha recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ", + "Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Favor de verficiar la bitácora de su servidor de correo", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Favor de revisar sus configuraciones (Error: %s)", + "You need to set your user email before being able to send test emails." : "Requiere establecer su correo electrónico andes de poder enviar correos electrónicos de prueba. ", + "Invalid mail address" : "Dirección de correo inválida", + "Settings saved" : "Se han guardado las configuraciones ", + "Unable to change full name" : "No fue posible cambiar el nombre completo", + "Unable to change email address" : "No fue posible cambiar la dirección de correo electrónico", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Para poder verificar su cuenta de Twitter, publique el siguiente tweet en Twitter (favor de asegurarse de publicar sin ninguna línea en blanco):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Para poder verficiar si sitio Web, agrege el siguiente contendio a su web-root en '.well-known/CloudIdVerificationCode.txt' (favor de asegurarse de que el texto completo este en una sóla línea):", + "%1$s changed your password on %2$s." : "%1$s cambió su contraseña el %2$s.", + "Your password on %s was changed." : "Su contraseña de %s fue cambiada. ", + "Your password on %s was reset by an administrator." : "Su contraseña de %s fue restablecida por un administrador.", + "Password for %1$s changed on %2$s" : "La contraseña para %1$s fue cambiada el %2$s", + "Password changed for %s" : "La contraseña fue cambiada para %s", + "If you did not request this, please contact an administrator." : "Si no lo solicitó, favor de contactar a un administrador. ", + "Your email address on %s was changed." : "Su dirección de correo electrónico en %s fue cambiada. ", + "Your email address on %s was changed by an administrator." : "Su dirección de correo electrónico en %s fue cambiada por un adminsitrador. ", + "Email address for %1$s changed on %2$s" : "La dirección de correo electrónico para %1$s fue cambiada el %2$s", + "Email address changed for %s" : "La dirección de correo electrónico fue cambiada para %s", + "The new email address is %s" : "La nueva dirección de correo electrónico es %s", + "Your %s account was created" : "Su %s cuenta ha sido creada", + "Welcome aboard" : "Bienvenido a bordo", + "Welcome aboard %s" : "Bienvenido a bordo %s", + "Your username is: %s" : "Su nombre de usuario es: %s", + "Set your password" : "Establezca su contraseña", + "Go to %s" : "Ir a %s", + "Install Client" : "Instalar el cliente", + "Delete" : "Borrar", + "Unlimited" : "Ilimitado", + "Verifying …" : "Verificando ...", + "Verify" : "Verificar", + "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Favor de aguardar hasta que termine", + "Migration started …" : "La migración ha comenzado ...", + "Not saved" : "No guardado", + "Sending…" : "Enviando...", + "Email sent" : "Correo electrónico enviado", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Se presentó un error. Favor de cargar un certificado PEM con codificación ASCII", + "Valid until {date}" : "Válido hasta {date}", + "Local" : "Local", + "Private" : "Privado", + "Only visible to local users" : "Visible sólo para usuarios locales", + "Only visible to you" : "Sólo visible para usted", + "Contacts" : "Contactos", + "Visible to local users and to trusted servers" : "Visible para usuarios locales y para servidores de confianza", + "Public" : "Público", + "Will be synced to a global and public address book" : "Será sincronizado a una libreta de direcciones global y pública", + "Very weak password" : "Contraseña muy débil", + "Weak password" : "Contraseña débil", + "So-so password" : "Contraseña aceptable", + "Good password" : "Buena contraseña", + "Strong password" : "Contraseña fuerte", + "Select a profile picture" : "Seleccionar una imagen de perfil", + "Groups" : "Grupos", + "Limit to groups" : "Limitar a grupos", + "Allow filesystem access" : "Permitir acceso al sistema de archivos", + "Revoke" : "Revocar", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome para Android", + "Sync client - {os}" : "Sync client - {os}", + "This session" : "Esta sesión", + "Device" : "Dispositivo", + "Last activity" : "Última actividad", + "Web, desktop and mobile clients currently logged in to your account." : "Clientes web, de escritorio y móviles han iniciado sesión en su cuenta. ", + "Error while creating device token" : "Se presentó un error al crear la ficha en el dispositivo", + "Error while deleting the token" : "Se presentó un error al borrar la ficha", + "App name" : "Nombre de la aplicación", + "Create new app password" : "Crear una nueva contraseña de aplicación", + "Use the credentials below to configure your app or device." : "Use las siguientes credenciales para configurar su aplicación o dispositivo. ", + "For security reasons this password will only be shown once." : "Por razones de seguridad esta contraseña sólo se mostrará una vez. ", + "Username" : "Nombre de usuario", + "Password" : "Contraseña", + "Done" : "Terminado", + "Copied!" : "¡Credenciales!", + "Copy" : "Copiar", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Las aplicaciones oficiales son desarrolladas por y dentro de la comunidad. Ofrecen una funcionalidad centralizada y se encuentran listas para ser usadas en producción. ", + "Official" : "Oficial", + "Remove" : "Eliminar", + "Disable" : "Deshabilitar", + "All" : "Todos", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión mínima de Nextcloud asignada. Esto será un error en el futuro.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión máxima de Nextcloud asignada. Esto será un error en el futuro.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Esta aplicación no puede ser instalada porque las siguientes dependencias no están satisfechas:", + "View in store" : "Ver en la tienda", + "Visit website" : "Visite el sitio web", + "Report a bug" : "Reporte un tema", + "User documentation" : "Documentación del usuario", + "Admin documentation" : "Documentación del administrador", + "Developer documentation" : "Documentación del desarrollador", + "No apps found for your version" : "No se encontraron aplicaciones para su versión", + "Enable all" : "Habilitar todo", + "Enable" : "Habilitar", + "The app will be downloaded from the app store" : "La aplicación será descargada de la tienda de aplicaciones <app store>", + "New password" : "Nueva contraseña", + "Email" : "Correo electrónico", + "Group admin for" : "Administrador del grupo para", + "Quota" : "Cuota", + "Language" : "Idioma", + "Storage location" : "Úbicación del almacenamiento", + "User backend" : "Backend del usuario", + "Last login" : "Último inicio de sesión", + "Default quota" : "Cuota predeterminada", + "Your apps" : "Sus aplicaciones", + "Disabled apps" : "Aplicaciones deshabilitadas", + "App bundles" : "Paquetes de aplicacion", + "Show last login" : "Mostrar último inicio de sesión", + "Show user backend" : "Mostrar backend del usuario", + "Admins" : "Administradores", + "Everyone" : "Todos", + "Add group" : "Agregar grupo", + "SSL Root Certificates" : "Certificado SSL Raíz", + "Common Name" : "Nombre común", + "Valid until" : "Válido hasta", + "Issued By" : "Levantado Por", + "Valid until %s" : "Válido hasta %s", + "Import root certificate" : "Importar certificado raíz", + "Administrator documentation" : "Documentación de adminsitrador", + "Forum" : "Foro", + "None" : "Ninguno", + "Login" : "Inicio de sesión", + "Plain" : "Plano", + "NT LAN Manager" : "Administrador de LAN NT", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Servidor de correo electrónico", + "Open documentation" : "Abrir documentación", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Es importante preparar este servidor para poder enviar correos electrónicos, como para restablecer contraseñas y notificaciones. ", + "Send mode" : "Modo de envío", + "Encryption" : "Encripción", + "From address" : "De la dirección", + "mail" : "correo", + "Authentication method" : "Método de autenticación", + "Authentication required" : "Autenticación requerida", + "Server address" : "Dirección del servidor", + "Port" : "Puerto", + "Credentials" : "Credenciales", + "SMTP Username" : "nombre de usuario SMTP", + "SMTP Password" : "Contraseña SMTP", + "Test email settings" : "Probar las configuraciones de correo electrónico", + "Send email" : "Enviar correo electrónico", + "Security & setup warnings" : "Advertencias de seguridad y configuración", + "All checks passed." : "Pasaron todas las verificaciones. ", + "Version" : "Versión", + "Server-side encryption" : "Encripción del lado del servidor", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "La encripción del lado del servidor hace posible encriptar archivos que serán cargados a este servidor. Esto trae consigo algunas limitaciónes como penalizaciones en el desemeño, asi que sólo habilítelo si es necesario. ", + "Enable server-side encryption" : "Habilitar encripción del lado del servidor", + "Please read carefully before activating server-side encryption: " : "Favor de leer detenidamente antes de activar la encripción del lado de servidor:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Una vez que la encripción se encuentre habilitada, todos lo archivos cargados al servidor desde ese momento en tiempo, se encriptarán en el servidor. Sólo será posible deshabilitar la encripción en una fecha posterior si el modulo de encripción activo soporta esa funcionalidad y si todas las preciondiciones están satisfechas (ejem. establecer una llave de recuperación).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "La encripción por sí sola no garantiza la seguridad del sistema. Favor de consultar la documentación para mayores informes de cómo funciona la aplicación de encripción y de los casos de uso soportados. ", + "Be aware that encryption always increases the file size." : "Favor de considerar que la encripción siempre aumenta el tamaño de los archivos. ", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Siempre es una buena idea generar respaldos de sus datos, en caso de tener encripción asegúrese de respaldar las llaves de encripción junto con sus datos. ", + "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente desea habilitar la encripción?", + "Enable encryption" : "Habilitar encripción", + "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, favor de habilitar un módulo de encripción en el menú de la aplicación. ", + "Select default encryption module:" : "Seleccionar modulo de encripción predeterminado:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Usted necesita migrar sus llaves de encripción de la encripción anterior (ownCloud <= 8.0) a la actual. Favor de habilitar el \"Módulo de encripción predeterminado\" y ejecute el comando 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Usted necesita migar sus llaves de encripción de la encripción anterior (ownCloud <=8.0) a la actual. ", + "Start migration" : "Comenzar migración", + "Background jobs" : "Trabajos en segundo plano", + "Last job ran %s." : "El último trabajo corrió %s.", + "Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ", + "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctametne. Para instancias más grandes 'Cron' es el ajuste recomendado. Favor de consultar la documentación para más información. ", + "Execute one task with each page loaded" : "Ejecutar una tarea con cada página cargada", + "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario del sistema \"%s\".", + "Sharing" : "Compartiendo", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, usted puede hacer ajustes finos al comportamiento de compartir. Favor de consultar la documentación para más información. ", + "Allow apps to use the Share API" : "Permitir que las aplicaciones usen el API para Compartir", + "Allow users to share via link" : "Permitir a los usuarios compartir mediante links", + "Allow public uploads" : "Permitir cargas públicas", + "Always ask for a password" : "Siempre pedir una contraseña", + "Enforce password protection" : "Forzar protección de contraseñas", + "Set default expiration date" : "Establecer la fecha de expiración predeterminada", + "Expire after " : "Expirar después de", + "days" : "días", + "Enforce expiration date" : "Forzar fecha de expiración", + "Allow resharing" : "Permitir volver a compartir", + "Allow sharing with groups" : "Permitir compartir con grupos", + "Restrict users to only share with users in their groups" : "Limitar a los usuarios a sólo compartir con otros usuarios en sus grupos", + "Exclude groups from sharing" : "Evitar que los grupos compartan", + "These groups will still be able to receive shares, but not to initiate them." : "Estos grupos áun podrán recibir elementos compartidos, pero no los podrán iniciar.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Mostrar el texto de exención de responsabilidad legal en la página de carga de links públicos. (Sólo se muestra cuando la lista de archivos está oculta.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Este texto se mostrará en la página de carga de el link público cuando la lista de archivos esté oculta. ", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Desarrollado por la {communityopen}comunidad Nextcloud {linkclose}, el {githubopen}código fuente {linkclose} está licenciado bajo {licenseopen}AGPL{linkclose}.", + "Profile picture" : "Foto de perfil", + "Upload new" : "Cargar nuevo", + "Select from Files" : "Seleccionar desde Archivos", + "Remove image" : "Eliminar imagen", + "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", + "Picture provided by original account" : "Imagen proporcionadoa por la cuenta original ", + "Cancel" : "Cancelar", + "Choose as profile picture" : "Seleccionar como foto del perfil", + "Full name" : "Nombre completo", + "No display name set" : "No se ha establecido el nombre a desplegar", + "Your email address" : "Su dirección de correo electrónico", + "No email address set" : "No se ha establecido la dirección de correo electrónico", + "For password reset and notifications" : "Para reestablecer contraseña y notificaciones", + "Phone number" : "Número de teléfono", + "Your phone number" : "Su número telefónico", + "Address" : "Dirección", + "Your postal address" : "Su dirección postal", + "Website" : "Sitio web", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Link https:// ...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Cuenta de twitter @...", + "Help translate" : "Ayude a traducir", + "Current password" : "Contraseña actual", + "Change password" : "Cambiar contraseña", + "Store credentials" : "Almacenar credenciales", + "Use system cron service to call the cron.php file every 15 minutes." : "Usar el servicio cron del sistema para llamar al archivo cron.php cada 15 minutos. " +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} \ No newline at end of file diff --git a/apps/settings/l10n/es_CL.js b/apps/settings/l10n/es_CL.js new file mode 100644 index 00000000000..93c7e4f0944 --- /dev/null +++ b/apps/settings/l10n/es_CL.js @@ -0,0 +1,264 @@ +OC.L10N.register( + "settings", + { + "{actor} changed your password" : "{actor} ha cambiado tu contraseña", + "You changed your password" : "Cambiaste tu contraseña", + "Your password was reset by an administrator" : "Tu contraseña ha sido restablecida por un adminsitrador", + "{actor} changed your email address" : "{actor} ha cambiado tu dirección de correo electrónico", + "You changed your email address" : "Cambiaste tu dirección de correo electrónico", + "Your email address was changed by an administrator" : "Tu dirección de correo electrónico ha sido cambiada por un administrador", + "Security" : "Seguridad", + "You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado", + "Couldn't remove app." : "No fue posible eliminar la aplicación. ", + "Couldn't update app." : "No fue posible actualizar la aplicación.", + "Wrong password" : "Contraseña incorrecta", + "Saved" : "Guardado", + "No user supplied" : "No se proporcionó usuario alguno", + "Unable to change password" : "No fue posible cambiar la contraseña", + "Authentication error" : "Error de autenticación", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Por favor proporciona una contraseña de recuperación de administrador; de lo contrario toda la información del usuario se perderá. ", + "Wrong admin recovery password. Please check the password and try again." : "Contraseña de recuperación de administrador incorrecta. Por favor verificala e inténtalo de nuevo.", + "Backend doesn't support password change, but the user's encryption key was updated." : "El backend no soporta el cambio de contraseñas, pero la llave de encripción del usuario fue actualizada.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Instalando y actualizando aplicaciones por la tienda de aplicaciones o Compartido la Nube Federada", + "Federated Cloud Sharing" : "Compartir en la Nube Federada", + "Invalid SMTP password." : "Constraseña SMTP inválida. ", + "Email setting test" : "Prueba de ajustes de correo", + "Well done, %s!" : "¡Bien hecho, %s!", + "If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ", + "Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)", + "You need to set your user email before being able to send test emails." : "Requieres establecer tu correo electrónico antes de poder enviar correos electrónicos de prueba. ", + "Invalid mail address" : "Dirección de correo inválida", + "Settings saved" : "Se han guardado las configuraciones ", + "Unable to change full name" : "No fue posible cambiar el nombre completo", + "Unable to change email address" : "No fue posible cambiar la dirección de correo electrónico", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Para poder verificar tu cuenta de Twitter, publica el siguiente tweet en Twitter (por favor asegúrarte de publicar sin ninguna línea en blanco):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Para poder verificar tu sitio Web, agrega el siguiente contendio a tu web-root en '.well-known/CloudIdVerificationCode.txt' (por favor asegurate de que el texto completo este en una sóla línea):", + "%1$s changed your password on %2$s." : "%1$s cambió tu contraseña el %2$s.", + "Your password on %s was changed." : "Tu contraseña de %s fue cambiada. ", + "Your password on %s was reset by an administrator." : "Tu contraseña de %s fue restablecida por un administrador.", + "Password for %1$s changed on %2$s" : "La contraseña de %1$s fue cambiada en %2$s", + "Password changed for %s" : "La contraseña fue cambiada para %s", + "If you did not request this, please contact an administrator." : "Si no lo solicitaste, por favor contacta a un administrador. ", + "Your email address on %s was changed." : "Tu dirección de correo electrónico en %s fue cambiada. ", + "Your email address on %s was changed by an administrator." : "Tu dirección de correo electrónico en %s fue cambiada por un adminsitrador. ", + "Email address for %1$s changed on %2$s" : "La dirección de correo electrónico de %1$s ha cambiado en %2$s", + "Email address changed for %s" : "La dirección de correo electrónico fue cambiada para %s", + "The new email address is %s" : "La nueva dirección de correo electrónico es %s", + "Your %s account was created" : "Tu cuenta %s ha sido creada", + "Welcome aboard" : "Bienvenido a bordo", + "Welcome aboard %s" : "Bienvenido a bordo %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Bienvenido a tu cuenta %s, puedes agregar, proteger y compartir tus datos.", + "Your username is: %s" : "Tu Usuario es: %s", + "Set your password" : "Establece tu contraseña", + "Go to %s" : "Ir a %s", + "Install Client" : "Instalar el cliente", + "Delete" : "Borrar", + "Unlimited" : "Ilimitado", + "Verifying …" : "Verificando ...", + "Verify" : "Verificar", + "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", + "Migration started …" : "La migración ha comenzado ...", + "Not saved" : "No guardado", + "Sending…" : "Enviando...", + "Email sent" : "Correo electrónico enviado", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Se presentó un error. Por favor carga un certificado PEM con codificación ASCII", + "Valid until {date}" : "Válido hasta {date}", + "Local" : "Local", + "Private" : "Privado", + "Only visible to local users" : "Visible sólo para usuarios locales", + "Only visible to you" : "Sólo visible para ti", + "Contacts" : "Contactos", + "Visible to local users and to trusted servers" : "Visible para usuarios locales y para servidores de confianza", + "Public" : "Público", + "Will be synced to a global and public address book" : "Será sincronizado a una libreta de direcciones global y pública", + "Very weak password" : "Contraseña muy débil", + "Weak password" : "Contraseña débil", + "So-so password" : "Contraseña aceptable", + "Good password" : "Buena contraseña", + "Strong password" : "Contraseña fuerte", + "Select a profile picture" : "Selecciona una imagen de perfil", + "Groups" : "Grupos", + "Limit to groups" : "Limitar a grupos", + "Allow filesystem access" : "Permitir acceso al sistema de archivos", + "Revoke" : "Revocar", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome para Android", + "Sync client - {os}" : "Sync client - {os}", + "This session" : "Esta sesión", + "Device" : "Dispositivo", + "Last activity" : "Última actividad", + "Devices & sessions" : "Dispositivos y sesiones", + "Web, desktop and mobile clients currently logged in to your account." : "Clientes web, de escritorio y móviles han iniciado sesión en tu cuenta. ", + "Error while creating device token" : "Se presentó un error al crear la ficha en el dispositivo", + "Error while deleting the token" : "Se presentó un error al borrar la ficha", + "App name" : "Nombre de la aplicación", + "Create new app password" : "Crear una nueva contraseña de aplicación", + "Use the credentials below to configure your app or device." : "Usa las siguientes credenciales para configurar tu aplicación o dispositivo. ", + "For security reasons this password will only be shown once." : "Por razones de seguridad esta contraseña sólo se mostrará una vez. ", + "Username" : "Usuario", + "Password" : "Contraseña", + "Done" : "Terminado", + "Copied!" : "¡Copiado!", + "Copy" : "Copiar", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Las aplicaciones oficiales son desarrolladas por y dentro de la comunidad. Ofrecen una funcionalidad centralizada y se encuentran listas para ser usadas en producción. ", + "Official" : "Oficial", + "Remove" : "Eliminar", + "Disable" : "Deshabilitar", + "All" : "Todos", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión mínima de Nextcloud asignada. Esto será un error en el futuro.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión máxima de Nextcloud asignada. Esto será un error en el futuro.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Esta aplicación no puede ser instalada porque las siguientes dependencias no están satisfechas:", + "View in store" : "Ver en la tienda", + "Visit website" : "Visita el sitio web", + "Report a bug" : "Reporta un detalle", + "User documentation" : "Documentación del usuario", + "Admin documentation" : "Documentación del administrador", + "Developer documentation" : "Documentación del desarrollador", + "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Enable all" : "Habilitar todo", + "Enable" : "Habilitar", + "The app will be downloaded from the app store" : "La aplicación será descargada de la tienda de aplicaciones <app store>", + "New password" : "Nueva contraseña", + "{size} used" : "{size} usado", + "Email" : "Correo electrónico", + "Group admin for" : "Administrador del grupo para", + "Quota" : "Cuota", + "Language" : "Idioma", + "Storage location" : "Úbicación del almacenamiento", + "User backend" : "Backend del usuario", + "Last login" : "Último inicio de sesión", + "Default quota" : "Cuota predeterminada", + "Your apps" : "Tus aplicaciones", + "Disabled apps" : "Aplicaciones deshabilitadas", + "Updates" : "Actualizaciones", + "App bundles" : "Paquetes de aplicación", + "Show last login" : "Mostrar último inicio de sesión", + "Show user backend" : "Mostrar backend del usuario", + "Admins" : "Administradores", + "Everyone" : "Todos", + "Add group" : "Agregar grupo", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "La aplicación ha sido habilitada pero necesita ser actualizada. Serás redireccionado a la página de actualización en 5 segundos. ", + "App update" : "Actualización de la aplicación", + "Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor", + "SSL Root Certificates" : "Certificado SSL Raíz", + "Common Name" : "Nombre común", + "Valid until" : "Válido hasta", + "Issued By" : "Levantado Por", + "Valid until %s" : "Válido hasta %s", + "Import root certificate" : "Importar certificado raíz", + "Administrator documentation" : "Documentación del adminsitrador", + "Forum" : "Foro", + "None" : "Ninguno", + "Login" : "Iniciar sesión", + "Plain" : "Plano", + "NT LAN Manager" : "Administrador de LAN NT", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Servidor de correo electrónico", + "Open documentation" : "Abrir documentación", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Es importante preparar este servidor para poder enviar correos electrónicos, como para restablecer contraseñas y notificaciones. ", + "Send mode" : "Modo de envío", + "Encryption" : "Encripción", + "From address" : "De la dirección", + "mail" : "correo", + "Authentication method" : "Método de autenticación", + "Authentication required" : "Autenticación requerida", + "Server address" : "Dirección del servidor", + "Port" : "Puerto", + "Credentials" : "Credenciales", + "SMTP Username" : "Usuario SMTP", + "SMTP Password" : "Contraseña SMTP", + "Test email settings" : "Probar las configuraciones de correo electrónico", + "Send email" : "Enviar correo electrónico", + "Security & setup warnings" : "Advertencias de seguridad y configuración", + "All checks passed." : "Pasaron todas las verificaciones. ", + "Version" : "Versión", + "Server-side encryption" : "Encripción del lado del servidor", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "La encripción del lado del servidor hace posible encriptar archivos que serán cargados a este servidor. Esto trae consigo algunas limitaciónes como penalizaciones en el desemeño, asi que habilítalo sólo si es necesario. ", + "Enable server-side encryption" : "Habilitar encripción del lado del servidor", + "Please read carefully before activating server-side encryption: " : "Por favor lee detenidamente antes de activar la encripción del lado de servidor:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Una vez que la encripción se encuentre habilitada, todos lo archivos cargados al servidor desde ese momento en tiempo, se encriptarán en el servidor. Sólo será posible deshabilitar la encripción en una fecha posterior si el modulo de encripción activo soporta esa funcionalidad y si todas las preciondiciones están satisfechas (ejem. establecer una llave de recuperación).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "La encripción por sí sola no garantiza la seguridad del sistema. Por favor consulta la documentación para mayores informes de cómo funciona la aplicación de encripción y de los casos de uso soportados. ", + "Be aware that encryption always increases the file size." : "Por favor considera que la encripción siempre aumenta el tamaño de los archivos. ", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Siempre es una buena idea generar respaldos de tus datos, en caso de tener encripción asegúrate de respaldar las llaves de encripción junto con tus datos. ", + "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", + "Enable encryption" : "Habilitar encripción", + "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", + "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Necesitas migrar tus llaves de encripción de la encripción anterior (ownCloud <= 8.0) a la actual. Por favor habilita el \"Módulo de encripción predeterminado\" y ejecuta el comando 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Necesitas migar tus llaves de encripción de la encripción anterior (ownCloud <=8.0) a la actual. ", + "Start migration" : "Iniciar migración", + "Background jobs" : "Trabajos en segundo plano", + "Last job ran %s." : "El último trabajo corrió %s.", + "Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ", + "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ", + "Execute one task with each page loaded" : "Ejecutar una tarea con cada página cargada", + "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ", + "Sharing" : "Compartiendo", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", + "Allow apps to use the Share API" : "Permitir que las aplicaciones usen el API para Compartir", + "Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas", + "Allow public uploads" : "Permitir cargas públicas", + "Always ask for a password" : "Siempre pedir una contraseña", + "Enforce password protection" : "Forzar protección de contraseñas", + "Set default expiration date" : "Establecer la fecha de expiración predeterminada", + "Expire after " : "Expirar después de", + "days" : "días", + "Enforce expiration date" : "Forzar fecha de expiración", + "Allow resharing" : "Permitir volver a compartir", + "Allow sharing with groups" : "Permitir compartir con grupos", + "Restrict users to only share with users in their groups" : "Limitar a los usuarios a sólo compartir con otros usuarios en sus grupos", + "Exclude groups from sharing" : "Evitar que los grupos compartan", + "These groups will still be able to receive shares, but not to initiate them." : "Estos grupos aún podrán recibir elementos compartidos, pero no los podrán iniciar.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Permitir el autocompletado de usuarios en la ventana de diálogo de compartir. Si esto está deshabilitado, se deberá ingresar el correo electrónico o nombre completo. ", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Mostrar el texto de exención de responsabilidad legal en la página de carga de ligas públicas. (Sólo se muestra cuando la lista de archivos está oculta.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Este texto se mostrará en la página de carga de la liga pública cuando la lista de archivos esté oculta. ", + "Default share permissions" : "Permisos predeterminados para compartir", + "Personal" : "Personal", + "Administration" : "Administración", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Desarrollado por la {communityopen}comunidad Nextcloud {linkclose}, el {githubopen}código fuente {linkclose} está licenciado bajo {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Da un Like a nuestra página de Facebook", + "Follow us on Twitter" : "Síguenos en Twitter", + "Check out our blog" : "Visita nuestro blog", + "Subscribe to our newsletter" : "Suscribete a nuestro boletín", + "Profile picture" : "Foto de perfil", + "Upload new" : "Cargar nuevo", + "Select from Files" : "Seleccionar desde Archivos", + "Remove image" : "Eliminar imagen", + "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", + "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", + "Cancel" : "Cancelar", + "Choose as profile picture" : "Seleccionar como foto del perfil", + "Details" : "Detalles", + "You are using <strong>%s</strong>" : "Estás usando<strong>%s</strong>", + "Full name" : "Nombre completo", + "No display name set" : "No se ha establecido el nombre a desplegar", + "Your email address" : "Tu dirección de correo electrónico", + "No email address set" : "No se ha establecido la dirección de correo electrónico", + "For password reset and notifications" : "Para restablecer contraseña y notificaciones", + "Phone number" : "Número de teléfono", + "Your phone number" : "Su número telefónico", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "Website" : "Sitio web", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Cuenta de twitter @...", + "Help translate" : "Ayuda a traducir", + "Current password" : "Contraseña actual", + "Change password" : "Cambiar contraseña", + "Store credentials" : "Almacenar credenciales", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php está registrado en un servicio webcron para llamar a cron.php cada 15 minutos a través de HTTP. ", + "Use system cron service to call the cron.php file every 15 minutes." : "Usar el servicio cron del sistema para llamar al archivo cron.php cada 15 minutos. " +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/es_CL.json b/apps/settings/l10n/es_CL.json new file mode 100644 index 00000000000..eda48a73a1c --- /dev/null +++ b/apps/settings/l10n/es_CL.json @@ -0,0 +1,262 @@ +{ "translations": { + "{actor} changed your password" : "{actor} ha cambiado tu contraseña", + "You changed your password" : "Cambiaste tu contraseña", + "Your password was reset by an administrator" : "Tu contraseña ha sido restablecida por un adminsitrador", + "{actor} changed your email address" : "{actor} ha cambiado tu dirección de correo electrónico", + "You changed your email address" : "Cambiaste tu dirección de correo electrónico", + "Your email address was changed by an administrator" : "Tu dirección de correo electrónico ha sido cambiada por un administrador", + "Security" : "Seguridad", + "You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado", + "Couldn't remove app." : "No fue posible eliminar la aplicación. ", + "Couldn't update app." : "No fue posible actualizar la aplicación.", + "Wrong password" : "Contraseña incorrecta", + "Saved" : "Guardado", + "No user supplied" : "No se proporcionó usuario alguno", + "Unable to change password" : "No fue posible cambiar la contraseña", + "Authentication error" : "Error de autenticación", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Por favor proporciona una contraseña de recuperación de administrador; de lo contrario toda la información del usuario se perderá. ", + "Wrong admin recovery password. Please check the password and try again." : "Contraseña de recuperación de administrador incorrecta. Por favor verificala e inténtalo de nuevo.", + "Backend doesn't support password change, but the user's encryption key was updated." : "El backend no soporta el cambio de contraseñas, pero la llave de encripción del usuario fue actualizada.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Instalando y actualizando aplicaciones por la tienda de aplicaciones o Compartido la Nube Federada", + "Federated Cloud Sharing" : "Compartir en la Nube Federada", + "Invalid SMTP password." : "Constraseña SMTP inválida. ", + "Email setting test" : "Prueba de ajustes de correo", + "Well done, %s!" : "¡Bien hecho, %s!", + "If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ", + "Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)", + "You need to set your user email before being able to send test emails." : "Requieres establecer tu correo electrónico antes de poder enviar correos electrónicos de prueba. ", + "Invalid mail address" : "Dirección de correo inválida", + "Settings saved" : "Se han guardado las configuraciones ", + "Unable to change full name" : "No fue posible cambiar el nombre completo", + "Unable to change email address" : "No fue posible cambiar la dirección de correo electrónico", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Para poder verificar tu cuenta de Twitter, publica el siguiente tweet en Twitter (por favor asegúrarte de publicar sin ninguna línea en blanco):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Para poder verificar tu sitio Web, agrega el siguiente contendio a tu web-root en '.well-known/CloudIdVerificationCode.txt' (por favor asegurate de que el texto completo este en una sóla línea):", + "%1$s changed your password on %2$s." : "%1$s cambió tu contraseña el %2$s.", + "Your password on %s was changed." : "Tu contraseña de %s fue cambiada. ", + "Your password on %s was reset by an administrator." : "Tu contraseña de %s fue restablecida por un administrador.", + "Password for %1$s changed on %2$s" : "La contraseña de %1$s fue cambiada en %2$s", + "Password changed for %s" : "La contraseña fue cambiada para %s", + "If you did not request this, please contact an administrator." : "Si no lo solicitaste, por favor contacta a un administrador. ", + "Your email address on %s was changed." : "Tu dirección de correo electrónico en %s fue cambiada. ", + "Your email address on %s was changed by an administrator." : "Tu dirección de correo electrónico en %s fue cambiada por un adminsitrador. ", + "Email address for %1$s changed on %2$s" : "La dirección de correo electrónico de %1$s ha cambiado en %2$s", + "Email address changed for %s" : "La dirección de correo electrónico fue cambiada para %s", + "The new email address is %s" : "La nueva dirección de correo electrónico es %s", + "Your %s account was created" : "Tu cuenta %s ha sido creada", + "Welcome aboard" : "Bienvenido a bordo", + "Welcome aboard %s" : "Bienvenido a bordo %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Bienvenido a tu cuenta %s, puedes agregar, proteger y compartir tus datos.", + "Your username is: %s" : "Tu Usuario es: %s", + "Set your password" : "Establece tu contraseña", + "Go to %s" : "Ir a %s", + "Install Client" : "Instalar el cliente", + "Delete" : "Borrar", + "Unlimited" : "Ilimitado", + "Verifying …" : "Verificando ...", + "Verify" : "Verificar", + "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", + "Migration started …" : "La migración ha comenzado ...", + "Not saved" : "No guardado", + "Sending…" : "Enviando...", + "Email sent" : "Correo electrónico enviado", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Se presentó un error. Por favor carga un certificado PEM con codificación ASCII", + "Valid until {date}" : "Válido hasta {date}", + "Local" : "Local", + "Private" : "Privado", + "Only visible to local users" : "Visible sólo para usuarios locales", + "Only visible to you" : "Sólo visible para ti", + "Contacts" : "Contactos", + "Visible to local users and to trusted servers" : "Visible para usuarios locales y para servidores de confianza", + "Public" : "Público", + "Will be synced to a global and public address book" : "Será sincronizado a una libreta de direcciones global y pública", + "Very weak password" : "Contraseña muy débil", + "Weak password" : "Contraseña débil", + "So-so password" : "Contraseña aceptable", + "Good password" : "Buena contraseña", + "Strong password" : "Contraseña fuerte", + "Select a profile picture" : "Selecciona una imagen de perfil", + "Groups" : "Grupos", + "Limit to groups" : "Limitar a grupos", + "Allow filesystem access" : "Permitir acceso al sistema de archivos", + "Revoke" : "Revocar", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome para Android", + "Sync client - {os}" : "Sync client - {os}", + "This session" : "Esta sesión", + "Device" : "Dispositivo", + "Last activity" : "Última actividad", + "Devices & sessions" : "Dispositivos y sesiones", + "Web, desktop and mobile clients currently logged in to your account." : "Clientes web, de escritorio y móviles han iniciado sesión en tu cuenta. ", + "Error while creating device token" : "Se presentó un error al crear la ficha en el dispositivo", + "Error while deleting the token" : "Se presentó un error al borrar la ficha", + "App name" : "Nombre de la aplicación", + "Create new app password" : "Crear una nueva contraseña de aplicación", + "Use the credentials below to configure your app or device." : "Usa las siguientes credenciales para configurar tu aplicación o dispositivo. ", + "For security reasons this password will only be shown once." : "Por razones de seguridad esta contraseña sólo se mostrará una vez. ", + "Username" : "Usuario", + "Password" : "Contraseña", + "Done" : "Terminado", + "Copied!" : "¡Copiado!", + "Copy" : "Copiar", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Las aplicaciones oficiales son desarrolladas por y dentro de la comunidad. Ofrecen una funcionalidad centralizada y se encuentran listas para ser usadas en producción. ", + "Official" : "Oficial", + "Remove" : "Eliminar", + "Disable" : "Deshabilitar", + "All" : "Todos", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión mínima de Nextcloud asignada. Esto será un error en el futuro.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión máxima de Nextcloud asignada. Esto será un error en el futuro.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Esta aplicación no puede ser instalada porque las siguientes dependencias no están satisfechas:", + "View in store" : "Ver en la tienda", + "Visit website" : "Visita el sitio web", + "Report a bug" : "Reporta un detalle", + "User documentation" : "Documentación del usuario", + "Admin documentation" : "Documentación del administrador", + "Developer documentation" : "Documentación del desarrollador", + "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Enable all" : "Habilitar todo", + "Enable" : "Habilitar", + "The app will be downloaded from the app store" : "La aplicación será descargada de la tienda de aplicaciones <app store>", + "New password" : "Nueva contraseña", + "{size} used" : "{size} usado", + "Email" : "Correo electrónico", + "Group admin for" : "Administrador del grupo para", + "Quota" : "Cuota", + "Language" : "Idioma", + "Storage location" : "Úbicación del almacenamiento", + "User backend" : "Backend del usuario", + "Last login" : "Último inicio de sesión", + "Default quota" : "Cuota predeterminada", + "Your apps" : "Tus aplicaciones", + "Disabled apps" : "Aplicaciones deshabilitadas", + "Updates" : "Actualizaciones", + "App bundles" : "Paquetes de aplicación", + "Show last login" : "Mostrar último inicio de sesión", + "Show user backend" : "Mostrar backend del usuario", + "Admins" : "Administradores", + "Everyone" : "Todos", + "Add group" : "Agregar grupo", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "La aplicación ha sido habilitada pero necesita ser actualizada. Serás redireccionado a la página de actualización en 5 segundos. ", + "App update" : "Actualización de la aplicación", + "Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor", + "SSL Root Certificates" : "Certificado SSL Raíz", + "Common Name" : "Nombre común", + "Valid until" : "Válido hasta", + "Issued By" : "Levantado Por", + "Valid until %s" : "Válido hasta %s", + "Import root certificate" : "Importar certificado raíz", + "Administrator documentation" : "Documentación del adminsitrador", + "Forum" : "Foro", + "None" : "Ninguno", + "Login" : "Iniciar sesión", + "Plain" : "Plano", + "NT LAN Manager" : "Administrador de LAN NT", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Servidor de correo electrónico", + "Open documentation" : "Abrir documentación", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Es importante preparar este servidor para poder enviar correos electrónicos, como para restablecer contraseñas y notificaciones. ", + "Send mode" : "Modo de envío", + "Encryption" : "Encripción", + "From address" : "De la dirección", + "mail" : "correo", + "Authentication method" : "Método de autenticación", + "Authentication required" : "Autenticación requerida", + "Server address" : "Dirección del servidor", + "Port" : "Puerto", + "Credentials" : "Credenciales", + "SMTP Username" : "Usuario SMTP", + "SMTP Password" : "Contraseña SMTP", + "Test email settings" : "Probar las configuraciones de correo electrónico", + "Send email" : "Enviar correo electrónico", + "Security & setup warnings" : "Advertencias de seguridad y configuración", + "All checks passed." : "Pasaron todas las verificaciones. ", + "Version" : "Versión", + "Server-side encryption" : "Encripción del lado del servidor", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "La encripción del lado del servidor hace posible encriptar archivos que serán cargados a este servidor. Esto trae consigo algunas limitaciónes como penalizaciones en el desemeño, asi que habilítalo sólo si es necesario. ", + "Enable server-side encryption" : "Habilitar encripción del lado del servidor", + "Please read carefully before activating server-side encryption: " : "Por favor lee detenidamente antes de activar la encripción del lado de servidor:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Una vez que la encripción se encuentre habilitada, todos lo archivos cargados al servidor desde ese momento en tiempo, se encriptarán en el servidor. Sólo será posible deshabilitar la encripción en una fecha posterior si el modulo de encripción activo soporta esa funcionalidad y si todas las preciondiciones están satisfechas (ejem. establecer una llave de recuperación).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "La encripción por sí sola no garantiza la seguridad del sistema. Por favor consulta la documentación para mayores informes de cómo funciona la aplicación de encripción y de los casos de uso soportados. ", + "Be aware that encryption always increases the file size." : "Por favor considera que la encripción siempre aumenta el tamaño de los archivos. ", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Siempre es una buena idea generar respaldos de tus datos, en caso de tener encripción asegúrate de respaldar las llaves de encripción junto con tus datos. ", + "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", + "Enable encryption" : "Habilitar encripción", + "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", + "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Necesitas migrar tus llaves de encripción de la encripción anterior (ownCloud <= 8.0) a la actual. Por favor habilita el \"Módulo de encripción predeterminado\" y ejecuta el comando 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Necesitas migar tus llaves de encripción de la encripción anterior (ownCloud <=8.0) a la actual. ", + "Start migration" : "Iniciar migración", + "Background jobs" : "Trabajos en segundo plano", + "Last job ran %s." : "El último trabajo corrió %s.", + "Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ", + "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ", + "Execute one task with each page loaded" : "Ejecutar una tarea con cada página cargada", + "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ", + "Sharing" : "Compartiendo", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", + "Allow apps to use the Share API" : "Permitir que las aplicaciones usen el API para Compartir", + "Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas", + "Allow public uploads" : "Permitir cargas públicas", + "Always ask for a password" : "Siempre pedir una contraseña", + "Enforce password protection" : "Forzar protección de contraseñas", + "Set default expiration date" : "Establecer la fecha de expiración predeterminada", + "Expire after " : "Expirar después de", + "days" : "días", + "Enforce expiration date" : "Forzar fecha de expiración", + "Allow resharing" : "Permitir volver a compartir", + "Allow sharing with groups" : "Permitir compartir con grupos", + "Restrict users to only share with users in their groups" : "Limitar a los usuarios a sólo compartir con otros usuarios en sus grupos", + "Exclude groups from sharing" : "Evitar que los grupos compartan", + "These groups will still be able to receive shares, but not to initiate them." : "Estos grupos aún podrán recibir elementos compartidos, pero no los podrán iniciar.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Permitir el autocompletado de usuarios en la ventana de diálogo de compartir. Si esto está deshabilitado, se deberá ingresar el correo electrónico o nombre completo. ", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Mostrar el texto de exención de responsabilidad legal en la página de carga de ligas públicas. (Sólo se muestra cuando la lista de archivos está oculta.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Este texto se mostrará en la página de carga de la liga pública cuando la lista de archivos esté oculta. ", + "Default share permissions" : "Permisos predeterminados para compartir", + "Personal" : "Personal", + "Administration" : "Administración", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Desarrollado por la {communityopen}comunidad Nextcloud {linkclose}, el {githubopen}código fuente {linkclose} está licenciado bajo {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Da un Like a nuestra página de Facebook", + "Follow us on Twitter" : "Síguenos en Twitter", + "Check out our blog" : "Visita nuestro blog", + "Subscribe to our newsletter" : "Suscribete a nuestro boletín", + "Profile picture" : "Foto de perfil", + "Upload new" : "Cargar nuevo", + "Select from Files" : "Seleccionar desde Archivos", + "Remove image" : "Eliminar imagen", + "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", + "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", + "Cancel" : "Cancelar", + "Choose as profile picture" : "Seleccionar como foto del perfil", + "Details" : "Detalles", + "You are using <strong>%s</strong>" : "Estás usando<strong>%s</strong>", + "Full name" : "Nombre completo", + "No display name set" : "No se ha establecido el nombre a desplegar", + "Your email address" : "Tu dirección de correo electrónico", + "No email address set" : "No se ha establecido la dirección de correo electrónico", + "For password reset and notifications" : "Para restablecer contraseña y notificaciones", + "Phone number" : "Número de teléfono", + "Your phone number" : "Su número telefónico", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "Website" : "Sitio web", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Cuenta de twitter @...", + "Help translate" : "Ayuda a traducir", + "Current password" : "Contraseña actual", + "Change password" : "Cambiar contraseña", + "Store credentials" : "Almacenar credenciales", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php está registrado en un servicio webcron para llamar a cron.php cada 15 minutos a través de HTTP. ", + "Use system cron service to call the cron.php file every 15 minutes." : "Usar el servicio cron del sistema para llamar al archivo cron.php cada 15 minutos. " +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} \ No newline at end of file diff --git a/apps/settings/l10n/es_CO.js b/apps/settings/l10n/es_CO.js new file mode 100644 index 00000000000..93c7e4f0944 --- /dev/null +++ b/apps/settings/l10n/es_CO.js @@ -0,0 +1,264 @@ +OC.L10N.register( + "settings", + { + "{actor} changed your password" : "{actor} ha cambiado tu contraseña", + "You changed your password" : "Cambiaste tu contraseña", + "Your password was reset by an administrator" : "Tu contraseña ha sido restablecida por un adminsitrador", + "{actor} changed your email address" : "{actor} ha cambiado tu dirección de correo electrónico", + "You changed your email address" : "Cambiaste tu dirección de correo electrónico", + "Your email address was changed by an administrator" : "Tu dirección de correo electrónico ha sido cambiada por un administrador", + "Security" : "Seguridad", + "You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado", + "Couldn't remove app." : "No fue posible eliminar la aplicación. ", + "Couldn't update app." : "No fue posible actualizar la aplicación.", + "Wrong password" : "Contraseña incorrecta", + "Saved" : "Guardado", + "No user supplied" : "No se proporcionó usuario alguno", + "Unable to change password" : "No fue posible cambiar la contraseña", + "Authentication error" : "Error de autenticación", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Por favor proporciona una contraseña de recuperación de administrador; de lo contrario toda la información del usuario se perderá. ", + "Wrong admin recovery password. Please check the password and try again." : "Contraseña de recuperación de administrador incorrecta. Por favor verificala e inténtalo de nuevo.", + "Backend doesn't support password change, but the user's encryption key was updated." : "El backend no soporta el cambio de contraseñas, pero la llave de encripción del usuario fue actualizada.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Instalando y actualizando aplicaciones por la tienda de aplicaciones o Compartido la Nube Federada", + "Federated Cloud Sharing" : "Compartir en la Nube Federada", + "Invalid SMTP password." : "Constraseña SMTP inválida. ", + "Email setting test" : "Prueba de ajustes de correo", + "Well done, %s!" : "¡Bien hecho, %s!", + "If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ", + "Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)", + "You need to set your user email before being able to send test emails." : "Requieres establecer tu correo electrónico antes de poder enviar correos electrónicos de prueba. ", + "Invalid mail address" : "Dirección de correo inválida", + "Settings saved" : "Se han guardado las configuraciones ", + "Unable to change full name" : "No fue posible cambiar el nombre completo", + "Unable to change email address" : "No fue posible cambiar la dirección de correo electrónico", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Para poder verificar tu cuenta de Twitter, publica el siguiente tweet en Twitter (por favor asegúrarte de publicar sin ninguna línea en blanco):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Para poder verificar tu sitio Web, agrega el siguiente contendio a tu web-root en '.well-known/CloudIdVerificationCode.txt' (por favor asegurate de que el texto completo este en una sóla línea):", + "%1$s changed your password on %2$s." : "%1$s cambió tu contraseña el %2$s.", + "Your password on %s was changed." : "Tu contraseña de %s fue cambiada. ", + "Your password on %s was reset by an administrator." : "Tu contraseña de %s fue restablecida por un administrador.", + "Password for %1$s changed on %2$s" : "La contraseña de %1$s fue cambiada en %2$s", + "Password changed for %s" : "La contraseña fue cambiada para %s", + "If you did not request this, please contact an administrator." : "Si no lo solicitaste, por favor contacta a un administrador. ", + "Your email address on %s was changed." : "Tu dirección de correo electrónico en %s fue cambiada. ", + "Your email address on %s was changed by an administrator." : "Tu dirección de correo electrónico en %s fue cambiada por un adminsitrador. ", + "Email address for %1$s changed on %2$s" : "La dirección de correo electrónico de %1$s ha cambiado en %2$s", + "Email address changed for %s" : "La dirección de correo electrónico fue cambiada para %s", + "The new email address is %s" : "La nueva dirección de correo electrónico es %s", + "Your %s account was created" : "Tu cuenta %s ha sido creada", + "Welcome aboard" : "Bienvenido a bordo", + "Welcome aboard %s" : "Bienvenido a bordo %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Bienvenido a tu cuenta %s, puedes agregar, proteger y compartir tus datos.", + "Your username is: %s" : "Tu Usuario es: %s", + "Set your password" : "Establece tu contraseña", + "Go to %s" : "Ir a %s", + "Install Client" : "Instalar el cliente", + "Delete" : "Borrar", + "Unlimited" : "Ilimitado", + "Verifying …" : "Verificando ...", + "Verify" : "Verificar", + "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", + "Migration started …" : "La migración ha comenzado ...", + "Not saved" : "No guardado", + "Sending…" : "Enviando...", + "Email sent" : "Correo electrónico enviado", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Se presentó un error. Por favor carga un certificado PEM con codificación ASCII", + "Valid until {date}" : "Válido hasta {date}", + "Local" : "Local", + "Private" : "Privado", + "Only visible to local users" : "Visible sólo para usuarios locales", + "Only visible to you" : "Sólo visible para ti", + "Contacts" : "Contactos", + "Visible to local users and to trusted servers" : "Visible para usuarios locales y para servidores de confianza", + "Public" : "Público", + "Will be synced to a global and public address book" : "Será sincronizado a una libreta de direcciones global y pública", + "Very weak password" : "Contraseña muy débil", + "Weak password" : "Contraseña débil", + "So-so password" : "Contraseña aceptable", + "Good password" : "Buena contraseña", + "Strong password" : "Contraseña fuerte", + "Select a profile picture" : "Selecciona una imagen de perfil", + "Groups" : "Grupos", + "Limit to groups" : "Limitar a grupos", + "Allow filesystem access" : "Permitir acceso al sistema de archivos", + "Revoke" : "Revocar", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome para Android", + "Sync client - {os}" : "Sync client - {os}", + "This session" : "Esta sesión", + "Device" : "Dispositivo", + "Last activity" : "Última actividad", + "Devices & sessions" : "Dispositivos y sesiones", + "Web, desktop and mobile clients currently logged in to your account." : "Clientes web, de escritorio y móviles han iniciado sesión en tu cuenta. ", + "Error while creating device token" : "Se presentó un error al crear la ficha en el dispositivo", + "Error while deleting the token" : "Se presentó un error al borrar la ficha", + "App name" : "Nombre de la aplicación", + "Create new app password" : "Crear una nueva contraseña de aplicación", + "Use the credentials below to configure your app or device." : "Usa las siguientes credenciales para configurar tu aplicación o dispositivo. ", + "For security reasons this password will only be shown once." : "Por razones de seguridad esta contraseña sólo se mostrará una vez. ", + "Username" : "Usuario", + "Password" : "Contraseña", + "Done" : "Terminado", + "Copied!" : "¡Copiado!", + "Copy" : "Copiar", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Las aplicaciones oficiales son desarrolladas por y dentro de la comunidad. Ofrecen una funcionalidad centralizada y se encuentran listas para ser usadas en producción. ", + "Official" : "Oficial", + "Remove" : "Eliminar", + "Disable" : "Deshabilitar", + "All" : "Todos", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión mínima de Nextcloud asignada. Esto será un error en el futuro.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión máxima de Nextcloud asignada. Esto será un error en el futuro.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Esta aplicación no puede ser instalada porque las siguientes dependencias no están satisfechas:", + "View in store" : "Ver en la tienda", + "Visit website" : "Visita el sitio web", + "Report a bug" : "Reporta un detalle", + "User documentation" : "Documentación del usuario", + "Admin documentation" : "Documentación del administrador", + "Developer documentation" : "Documentación del desarrollador", + "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Enable all" : "Habilitar todo", + "Enable" : "Habilitar", + "The app will be downloaded from the app store" : "La aplicación será descargada de la tienda de aplicaciones <app store>", + "New password" : "Nueva contraseña", + "{size} used" : "{size} usado", + "Email" : "Correo electrónico", + "Group admin for" : "Administrador del grupo para", + "Quota" : "Cuota", + "Language" : "Idioma", + "Storage location" : "Úbicación del almacenamiento", + "User backend" : "Backend del usuario", + "Last login" : "Último inicio de sesión", + "Default quota" : "Cuota predeterminada", + "Your apps" : "Tus aplicaciones", + "Disabled apps" : "Aplicaciones deshabilitadas", + "Updates" : "Actualizaciones", + "App bundles" : "Paquetes de aplicación", + "Show last login" : "Mostrar último inicio de sesión", + "Show user backend" : "Mostrar backend del usuario", + "Admins" : "Administradores", + "Everyone" : "Todos", + "Add group" : "Agregar grupo", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "La aplicación ha sido habilitada pero necesita ser actualizada. Serás redireccionado a la página de actualización en 5 segundos. ", + "App update" : "Actualización de la aplicación", + "Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor", + "SSL Root Certificates" : "Certificado SSL Raíz", + "Common Name" : "Nombre común", + "Valid until" : "Válido hasta", + "Issued By" : "Levantado Por", + "Valid until %s" : "Válido hasta %s", + "Import root certificate" : "Importar certificado raíz", + "Administrator documentation" : "Documentación del adminsitrador", + "Forum" : "Foro", + "None" : "Ninguno", + "Login" : "Iniciar sesión", + "Plain" : "Plano", + "NT LAN Manager" : "Administrador de LAN NT", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Servidor de correo electrónico", + "Open documentation" : "Abrir documentación", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Es importante preparar este servidor para poder enviar correos electrónicos, como para restablecer contraseñas y notificaciones. ", + "Send mode" : "Modo de envío", + "Encryption" : "Encripción", + "From address" : "De la dirección", + "mail" : "correo", + "Authentication method" : "Método de autenticación", + "Authentication required" : "Autenticación requerida", + "Server address" : "Dirección del servidor", + "Port" : "Puerto", + "Credentials" : "Credenciales", + "SMTP Username" : "Usuario SMTP", + "SMTP Password" : "Contraseña SMTP", + "Test email settings" : "Probar las configuraciones de correo electrónico", + "Send email" : "Enviar correo electrónico", + "Security & setup warnings" : "Advertencias de seguridad y configuración", + "All checks passed." : "Pasaron todas las verificaciones. ", + "Version" : "Versión", + "Server-side encryption" : "Encripción del lado del servidor", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "La encripción del lado del servidor hace posible encriptar archivos que serán cargados a este servidor. Esto trae consigo algunas limitaciónes como penalizaciones en el desemeño, asi que habilítalo sólo si es necesario. ", + "Enable server-side encryption" : "Habilitar encripción del lado del servidor", + "Please read carefully before activating server-side encryption: " : "Por favor lee detenidamente antes de activar la encripción del lado de servidor:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Una vez que la encripción se encuentre habilitada, todos lo archivos cargados al servidor desde ese momento en tiempo, se encriptarán en el servidor. Sólo será posible deshabilitar la encripción en una fecha posterior si el modulo de encripción activo soporta esa funcionalidad y si todas las preciondiciones están satisfechas (ejem. establecer una llave de recuperación).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "La encripción por sí sola no garantiza la seguridad del sistema. Por favor consulta la documentación para mayores informes de cómo funciona la aplicación de encripción y de los casos de uso soportados. ", + "Be aware that encryption always increases the file size." : "Por favor considera que la encripción siempre aumenta el tamaño de los archivos. ", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Siempre es una buena idea generar respaldos de tus datos, en caso de tener encripción asegúrate de respaldar las llaves de encripción junto con tus datos. ", + "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", + "Enable encryption" : "Habilitar encripción", + "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", + "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Necesitas migrar tus llaves de encripción de la encripción anterior (ownCloud <= 8.0) a la actual. Por favor habilita el \"Módulo de encripción predeterminado\" y ejecuta el comando 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Necesitas migar tus llaves de encripción de la encripción anterior (ownCloud <=8.0) a la actual. ", + "Start migration" : "Iniciar migración", + "Background jobs" : "Trabajos en segundo plano", + "Last job ran %s." : "El último trabajo corrió %s.", + "Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ", + "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ", + "Execute one task with each page loaded" : "Ejecutar una tarea con cada página cargada", + "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ", + "Sharing" : "Compartiendo", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", + "Allow apps to use the Share API" : "Permitir que las aplicaciones usen el API para Compartir", + "Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas", + "Allow public uploads" : "Permitir cargas públicas", + "Always ask for a password" : "Siempre pedir una contraseña", + "Enforce password protection" : "Forzar protección de contraseñas", + "Set default expiration date" : "Establecer la fecha de expiración predeterminada", + "Expire after " : "Expirar después de", + "days" : "días", + "Enforce expiration date" : "Forzar fecha de expiración", + "Allow resharing" : "Permitir volver a compartir", + "Allow sharing with groups" : "Permitir compartir con grupos", + "Restrict users to only share with users in their groups" : "Limitar a los usuarios a sólo compartir con otros usuarios en sus grupos", + "Exclude groups from sharing" : "Evitar que los grupos compartan", + "These groups will still be able to receive shares, but not to initiate them." : "Estos grupos aún podrán recibir elementos compartidos, pero no los podrán iniciar.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Permitir el autocompletado de usuarios en la ventana de diálogo de compartir. Si esto está deshabilitado, se deberá ingresar el correo electrónico o nombre completo. ", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Mostrar el texto de exención de responsabilidad legal en la página de carga de ligas públicas. (Sólo se muestra cuando la lista de archivos está oculta.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Este texto se mostrará en la página de carga de la liga pública cuando la lista de archivos esté oculta. ", + "Default share permissions" : "Permisos predeterminados para compartir", + "Personal" : "Personal", + "Administration" : "Administración", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Desarrollado por la {communityopen}comunidad Nextcloud {linkclose}, el {githubopen}código fuente {linkclose} está licenciado bajo {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Da un Like a nuestra página de Facebook", + "Follow us on Twitter" : "Síguenos en Twitter", + "Check out our blog" : "Visita nuestro blog", + "Subscribe to our newsletter" : "Suscribete a nuestro boletín", + "Profile picture" : "Foto de perfil", + "Upload new" : "Cargar nuevo", + "Select from Files" : "Seleccionar desde Archivos", + "Remove image" : "Eliminar imagen", + "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", + "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", + "Cancel" : "Cancelar", + "Choose as profile picture" : "Seleccionar como foto del perfil", + "Details" : "Detalles", + "You are using <strong>%s</strong>" : "Estás usando<strong>%s</strong>", + "Full name" : "Nombre completo", + "No display name set" : "No se ha establecido el nombre a desplegar", + "Your email address" : "Tu dirección de correo electrónico", + "No email address set" : "No se ha establecido la dirección de correo electrónico", + "For password reset and notifications" : "Para restablecer contraseña y notificaciones", + "Phone number" : "Número de teléfono", + "Your phone number" : "Su número telefónico", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "Website" : "Sitio web", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Cuenta de twitter @...", + "Help translate" : "Ayuda a traducir", + "Current password" : "Contraseña actual", + "Change password" : "Cambiar contraseña", + "Store credentials" : "Almacenar credenciales", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php está registrado en un servicio webcron para llamar a cron.php cada 15 minutos a través de HTTP. ", + "Use system cron service to call the cron.php file every 15 minutes." : "Usar el servicio cron del sistema para llamar al archivo cron.php cada 15 minutos. " +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/es_CO.json b/apps/settings/l10n/es_CO.json new file mode 100644 index 00000000000..eda48a73a1c --- /dev/null +++ b/apps/settings/l10n/es_CO.json @@ -0,0 +1,262 @@ +{ "translations": { + "{actor} changed your password" : "{actor} ha cambiado tu contraseña", + "You changed your password" : "Cambiaste tu contraseña", + "Your password was reset by an administrator" : "Tu contraseña ha sido restablecida por un adminsitrador", + "{actor} changed your email address" : "{actor} ha cambiado tu dirección de correo electrónico", + "You changed your email address" : "Cambiaste tu dirección de correo electrónico", + "Your email address was changed by an administrator" : "Tu dirección de correo electrónico ha sido cambiada por un administrador", + "Security" : "Seguridad", + "You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado", + "Couldn't remove app." : "No fue posible eliminar la aplicación. ", + "Couldn't update app." : "No fue posible actualizar la aplicación.", + "Wrong password" : "Contraseña incorrecta", + "Saved" : "Guardado", + "No user supplied" : "No se proporcionó usuario alguno", + "Unable to change password" : "No fue posible cambiar la contraseña", + "Authentication error" : "Error de autenticación", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Por favor proporciona una contraseña de recuperación de administrador; de lo contrario toda la información del usuario se perderá. ", + "Wrong admin recovery password. Please check the password and try again." : "Contraseña de recuperación de administrador incorrecta. Por favor verificala e inténtalo de nuevo.", + "Backend doesn't support password change, but the user's encryption key was updated." : "El backend no soporta el cambio de contraseñas, pero la llave de encripción del usuario fue actualizada.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Instalando y actualizando aplicaciones por la tienda de aplicaciones o Compartido la Nube Federada", + "Federated Cloud Sharing" : "Compartir en la Nube Federada", + "Invalid SMTP password." : "Constraseña SMTP inválida. ", + "Email setting test" : "Prueba de ajustes de correo", + "Well done, %s!" : "¡Bien hecho, %s!", + "If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ", + "Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)", + "You need to set your user email before being able to send test emails." : "Requieres establecer tu correo electrónico antes de poder enviar correos electrónicos de prueba. ", + "Invalid mail address" : "Dirección de correo inválida", + "Settings saved" : "Se han guardado las configuraciones ", + "Unable to change full name" : "No fue posible cambiar el nombre completo", + "Unable to change email address" : "No fue posible cambiar la dirección de correo electrónico", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Para poder verificar tu cuenta de Twitter, publica el siguiente tweet en Twitter (por favor asegúrarte de publicar sin ninguna línea en blanco):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Para poder verificar tu sitio Web, agrega el siguiente contendio a tu web-root en '.well-known/CloudIdVerificationCode.txt' (por favor asegurate de que el texto completo este en una sóla línea):", + "%1$s changed your password on %2$s." : "%1$s cambió tu contraseña el %2$s.", + "Your password on %s was changed." : "Tu contraseña de %s fue cambiada. ", + "Your password on %s was reset by an administrator." : "Tu contraseña de %s fue restablecida por un administrador.", + "Password for %1$s changed on %2$s" : "La contraseña de %1$s fue cambiada en %2$s", + "Password changed for %s" : "La contraseña fue cambiada para %s", + "If you did not request this, please contact an administrator." : "Si no lo solicitaste, por favor contacta a un administrador. ", + "Your email address on %s was changed." : "Tu dirección de correo electrónico en %s fue cambiada. ", + "Your email address on %s was changed by an administrator." : "Tu dirección de correo electrónico en %s fue cambiada por un adminsitrador. ", + "Email address for %1$s changed on %2$s" : "La dirección de correo electrónico de %1$s ha cambiado en %2$s", + "Email address changed for %s" : "La dirección de correo electrónico fue cambiada para %s", + "The new email address is %s" : "La nueva dirección de correo electrónico es %s", + "Your %s account was created" : "Tu cuenta %s ha sido creada", + "Welcome aboard" : "Bienvenido a bordo", + "Welcome aboard %s" : "Bienvenido a bordo %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Bienvenido a tu cuenta %s, puedes agregar, proteger y compartir tus datos.", + "Your username is: %s" : "Tu Usuario es: %s", + "Set your password" : "Establece tu contraseña", + "Go to %s" : "Ir a %s", + "Install Client" : "Instalar el cliente", + "Delete" : "Borrar", + "Unlimited" : "Ilimitado", + "Verifying …" : "Verificando ...", + "Verify" : "Verificar", + "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", + "Migration started …" : "La migración ha comenzado ...", + "Not saved" : "No guardado", + "Sending…" : "Enviando...", + "Email sent" : "Correo electrónico enviado", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Se presentó un error. Por favor carga un certificado PEM con codificación ASCII", + "Valid until {date}" : "Válido hasta {date}", + "Local" : "Local", + "Private" : "Privado", + "Only visible to local users" : "Visible sólo para usuarios locales", + "Only visible to you" : "Sólo visible para ti", + "Contacts" : "Contactos", + "Visible to local users and to trusted servers" : "Visible para usuarios locales y para servidores de confianza", + "Public" : "Público", + "Will be synced to a global and public address book" : "Será sincronizado a una libreta de direcciones global y pública", + "Very weak password" : "Contraseña muy débil", + "Weak password" : "Contraseña débil", + "So-so password" : "Contraseña aceptable", + "Good password" : "Buena contraseña", + "Strong password" : "Contraseña fuerte", + "Select a profile picture" : "Selecciona una imagen de perfil", + "Groups" : "Grupos", + "Limit to groups" : "Limitar a grupos", + "Allow filesystem access" : "Permitir acceso al sistema de archivos", + "Revoke" : "Revocar", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome para Android", + "Sync client - {os}" : "Sync client - {os}", + "This session" : "Esta sesión", + "Device" : "Dispositivo", + "Last activity" : "Última actividad", + "Devices & sessions" : "Dispositivos y sesiones", + "Web, desktop and mobile clients currently logged in to your account." : "Clientes web, de escritorio y móviles han iniciado sesión en tu cuenta. ", + "Error while creating device token" : "Se presentó un error al crear la ficha en el dispositivo", + "Error while deleting the token" : "Se presentó un error al borrar la ficha", + "App name" : "Nombre de la aplicación", + "Create new app password" : "Crear una nueva contraseña de aplicación", + "Use the credentials below to configure your app or device." : "Usa las siguientes credenciales para configurar tu aplicación o dispositivo. ", + "For security reasons this password will only be shown once." : "Por razones de seguridad esta contraseña sólo se mostrará una vez. ", + "Username" : "Usuario", + "Password" : "Contraseña", + "Done" : "Terminado", + "Copied!" : "¡Copiado!", + "Copy" : "Copiar", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Las aplicaciones oficiales son desarrolladas por y dentro de la comunidad. Ofrecen una funcionalidad centralizada y se encuentran listas para ser usadas en producción. ", + "Official" : "Oficial", + "Remove" : "Eliminar", + "Disable" : "Deshabilitar", + "All" : "Todos", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión mínima de Nextcloud asignada. Esto será un error en el futuro.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión máxima de Nextcloud asignada. Esto será un error en el futuro.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Esta aplicación no puede ser instalada porque las siguientes dependencias no están satisfechas:", + "View in store" : "Ver en la tienda", + "Visit website" : "Visita el sitio web", + "Report a bug" : "Reporta un detalle", + "User documentation" : "Documentación del usuario", + "Admin documentation" : "Documentación del administrador", + "Developer documentation" : "Documentación del desarrollador", + "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Enable all" : "Habilitar todo", + "Enable" : "Habilitar", + "The app will be downloaded from the app store" : "La aplicación será descargada de la tienda de aplicaciones <app store>", + "New password" : "Nueva contraseña", + "{size} used" : "{size} usado", + "Email" : "Correo electrónico", + "Group admin for" : "Administrador del grupo para", + "Quota" : "Cuota", + "Language" : "Idioma", + "Storage location" : "Úbicación del almacenamiento", + "User backend" : "Backend del usuario", + "Last login" : "Último inicio de sesión", + "Default quota" : "Cuota predeterminada", + "Your apps" : "Tus aplicaciones", + "Disabled apps" : "Aplicaciones deshabilitadas", + "Updates" : "Actualizaciones", + "App bundles" : "Paquetes de aplicación", + "Show last login" : "Mostrar último inicio de sesión", + "Show user backend" : "Mostrar backend del usuario", + "Admins" : "Administradores", + "Everyone" : "Todos", + "Add group" : "Agregar grupo", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "La aplicación ha sido habilitada pero necesita ser actualizada. Serás redireccionado a la página de actualización en 5 segundos. ", + "App update" : "Actualización de la aplicación", + "Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor", + "SSL Root Certificates" : "Certificado SSL Raíz", + "Common Name" : "Nombre común", + "Valid until" : "Válido hasta", + "Issued By" : "Levantado Por", + "Valid until %s" : "Válido hasta %s", + "Import root certificate" : "Importar certificado raíz", + "Administrator documentation" : "Documentación del adminsitrador", + "Forum" : "Foro", + "None" : "Ninguno", + "Login" : "Iniciar sesión", + "Plain" : "Plano", + "NT LAN Manager" : "Administrador de LAN NT", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Servidor de correo electrónico", + "Open documentation" : "Abrir documentación", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Es importante preparar este servidor para poder enviar correos electrónicos, como para restablecer contraseñas y notificaciones. ", + "Send mode" : "Modo de envío", + "Encryption" : "Encripción", + "From address" : "De la dirección", + "mail" : "correo", + "Authentication method" : "Método de autenticación", + "Authentication required" : "Autenticación requerida", + "Server address" : "Dirección del servidor", + "Port" : "Puerto", + "Credentials" : "Credenciales", + "SMTP Username" : "Usuario SMTP", + "SMTP Password" : "Contraseña SMTP", + "Test email settings" : "Probar las configuraciones de correo electrónico", + "Send email" : "Enviar correo electrónico", + "Security & setup warnings" : "Advertencias de seguridad y configuración", + "All checks passed." : "Pasaron todas las verificaciones. ", + "Version" : "Versión", + "Server-side encryption" : "Encripción del lado del servidor", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "La encripción del lado del servidor hace posible encriptar archivos que serán cargados a este servidor. Esto trae consigo algunas limitaciónes como penalizaciones en el desemeño, asi que habilítalo sólo si es necesario. ", + "Enable server-side encryption" : "Habilitar encripción del lado del servidor", + "Please read carefully before activating server-side encryption: " : "Por favor lee detenidamente antes de activar la encripción del lado de servidor:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Una vez que la encripción se encuentre habilitada, todos lo archivos cargados al servidor desde ese momento en tiempo, se encriptarán en el servidor. Sólo será posible deshabilitar la encripción en una fecha posterior si el modulo de encripción activo soporta esa funcionalidad y si todas las preciondiciones están satisfechas (ejem. establecer una llave de recuperación).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "La encripción por sí sola no garantiza la seguridad del sistema. Por favor consulta la documentación para mayores informes de cómo funciona la aplicación de encripción y de los casos de uso soportados. ", + "Be aware that encryption always increases the file size." : "Por favor considera que la encripción siempre aumenta el tamaño de los archivos. ", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Siempre es una buena idea generar respaldos de tus datos, en caso de tener encripción asegúrate de respaldar las llaves de encripción junto con tus datos. ", + "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", + "Enable encryption" : "Habilitar encripción", + "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", + "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Necesitas migrar tus llaves de encripción de la encripción anterior (ownCloud <= 8.0) a la actual. Por favor habilita el \"Módulo de encripción predeterminado\" y ejecuta el comando 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Necesitas migar tus llaves de encripción de la encripción anterior (ownCloud <=8.0) a la actual. ", + "Start migration" : "Iniciar migración", + "Background jobs" : "Trabajos en segundo plano", + "Last job ran %s." : "El último trabajo corrió %s.", + "Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ", + "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ", + "Execute one task with each page loaded" : "Ejecutar una tarea con cada página cargada", + "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ", + "Sharing" : "Compartiendo", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", + "Allow apps to use the Share API" : "Permitir que las aplicaciones usen el API para Compartir", + "Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas", + "Allow public uploads" : "Permitir cargas públicas", + "Always ask for a password" : "Siempre pedir una contraseña", + "Enforce password protection" : "Forzar protección de contraseñas", + "Set default expiration date" : "Establecer la fecha de expiración predeterminada", + "Expire after " : "Expirar después de", + "days" : "días", + "Enforce expiration date" : "Forzar fecha de expiración", + "Allow resharing" : "Permitir volver a compartir", + "Allow sharing with groups" : "Permitir compartir con grupos", + "Restrict users to only share with users in their groups" : "Limitar a los usuarios a sólo compartir con otros usuarios en sus grupos", + "Exclude groups from sharing" : "Evitar que los grupos compartan", + "These groups will still be able to receive shares, but not to initiate them." : "Estos grupos aún podrán recibir elementos compartidos, pero no los podrán iniciar.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Permitir el autocompletado de usuarios en la ventana de diálogo de compartir. Si esto está deshabilitado, se deberá ingresar el correo electrónico o nombre completo. ", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Mostrar el texto de exención de responsabilidad legal en la página de carga de ligas públicas. (Sólo se muestra cuando la lista de archivos está oculta.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Este texto se mostrará en la página de carga de la liga pública cuando la lista de archivos esté oculta. ", + "Default share permissions" : "Permisos predeterminados para compartir", + "Personal" : "Personal", + "Administration" : "Administración", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Desarrollado por la {communityopen}comunidad Nextcloud {linkclose}, el {githubopen}código fuente {linkclose} está licenciado bajo {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Da un Like a nuestra página de Facebook", + "Follow us on Twitter" : "Síguenos en Twitter", + "Check out our blog" : "Visita nuestro blog", + "Subscribe to our newsletter" : "Suscribete a nuestro boletín", + "Profile picture" : "Foto de perfil", + "Upload new" : "Cargar nuevo", + "Select from Files" : "Seleccionar desde Archivos", + "Remove image" : "Eliminar imagen", + "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", + "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", + "Cancel" : "Cancelar", + "Choose as profile picture" : "Seleccionar como foto del perfil", + "Details" : "Detalles", + "You are using <strong>%s</strong>" : "Estás usando<strong>%s</strong>", + "Full name" : "Nombre completo", + "No display name set" : "No se ha establecido el nombre a desplegar", + "Your email address" : "Tu dirección de correo electrónico", + "No email address set" : "No se ha establecido la dirección de correo electrónico", + "For password reset and notifications" : "Para restablecer contraseña y notificaciones", + "Phone number" : "Número de teléfono", + "Your phone number" : "Su número telefónico", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "Website" : "Sitio web", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Cuenta de twitter @...", + "Help translate" : "Ayuda a traducir", + "Current password" : "Contraseña actual", + "Change password" : "Cambiar contraseña", + "Store credentials" : "Almacenar credenciales", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php está registrado en un servicio webcron para llamar a cron.php cada 15 minutos a través de HTTP. ", + "Use system cron service to call the cron.php file every 15 minutes." : "Usar el servicio cron del sistema para llamar al archivo cron.php cada 15 minutos. " +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} \ No newline at end of file diff --git a/apps/settings/l10n/es_CR.js b/apps/settings/l10n/es_CR.js new file mode 100644 index 00000000000..93c7e4f0944 --- /dev/null +++ b/apps/settings/l10n/es_CR.js @@ -0,0 +1,264 @@ +OC.L10N.register( + "settings", + { + "{actor} changed your password" : "{actor} ha cambiado tu contraseña", + "You changed your password" : "Cambiaste tu contraseña", + "Your password was reset by an administrator" : "Tu contraseña ha sido restablecida por un adminsitrador", + "{actor} changed your email address" : "{actor} ha cambiado tu dirección de correo electrónico", + "You changed your email address" : "Cambiaste tu dirección de correo electrónico", + "Your email address was changed by an administrator" : "Tu dirección de correo electrónico ha sido cambiada por un administrador", + "Security" : "Seguridad", + "You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado", + "Couldn't remove app." : "No fue posible eliminar la aplicación. ", + "Couldn't update app." : "No fue posible actualizar la aplicación.", + "Wrong password" : "Contraseña incorrecta", + "Saved" : "Guardado", + "No user supplied" : "No se proporcionó usuario alguno", + "Unable to change password" : "No fue posible cambiar la contraseña", + "Authentication error" : "Error de autenticación", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Por favor proporciona una contraseña de recuperación de administrador; de lo contrario toda la información del usuario se perderá. ", + "Wrong admin recovery password. Please check the password and try again." : "Contraseña de recuperación de administrador incorrecta. Por favor verificala e inténtalo de nuevo.", + "Backend doesn't support password change, but the user's encryption key was updated." : "El backend no soporta el cambio de contraseñas, pero la llave de encripción del usuario fue actualizada.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Instalando y actualizando aplicaciones por la tienda de aplicaciones o Compartido la Nube Federada", + "Federated Cloud Sharing" : "Compartir en la Nube Federada", + "Invalid SMTP password." : "Constraseña SMTP inválida. ", + "Email setting test" : "Prueba de ajustes de correo", + "Well done, %s!" : "¡Bien hecho, %s!", + "If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ", + "Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)", + "You need to set your user email before being able to send test emails." : "Requieres establecer tu correo electrónico antes de poder enviar correos electrónicos de prueba. ", + "Invalid mail address" : "Dirección de correo inválida", + "Settings saved" : "Se han guardado las configuraciones ", + "Unable to change full name" : "No fue posible cambiar el nombre completo", + "Unable to change email address" : "No fue posible cambiar la dirección de correo electrónico", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Para poder verificar tu cuenta de Twitter, publica el siguiente tweet en Twitter (por favor asegúrarte de publicar sin ninguna línea en blanco):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Para poder verificar tu sitio Web, agrega el siguiente contendio a tu web-root en '.well-known/CloudIdVerificationCode.txt' (por favor asegurate de que el texto completo este en una sóla línea):", + "%1$s changed your password on %2$s." : "%1$s cambió tu contraseña el %2$s.", + "Your password on %s was changed." : "Tu contraseña de %s fue cambiada. ", + "Your password on %s was reset by an administrator." : "Tu contraseña de %s fue restablecida por un administrador.", + "Password for %1$s changed on %2$s" : "La contraseña de %1$s fue cambiada en %2$s", + "Password changed for %s" : "La contraseña fue cambiada para %s", + "If you did not request this, please contact an administrator." : "Si no lo solicitaste, por favor contacta a un administrador. ", + "Your email address on %s was changed." : "Tu dirección de correo electrónico en %s fue cambiada. ", + "Your email address on %s was changed by an administrator." : "Tu dirección de correo electrónico en %s fue cambiada por un adminsitrador. ", + "Email address for %1$s changed on %2$s" : "La dirección de correo electrónico de %1$s ha cambiado en %2$s", + "Email address changed for %s" : "La dirección de correo electrónico fue cambiada para %s", + "The new email address is %s" : "La nueva dirección de correo electrónico es %s", + "Your %s account was created" : "Tu cuenta %s ha sido creada", + "Welcome aboard" : "Bienvenido a bordo", + "Welcome aboard %s" : "Bienvenido a bordo %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Bienvenido a tu cuenta %s, puedes agregar, proteger y compartir tus datos.", + "Your username is: %s" : "Tu Usuario es: %s", + "Set your password" : "Establece tu contraseña", + "Go to %s" : "Ir a %s", + "Install Client" : "Instalar el cliente", + "Delete" : "Borrar", + "Unlimited" : "Ilimitado", + "Verifying …" : "Verificando ...", + "Verify" : "Verificar", + "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", + "Migration started …" : "La migración ha comenzado ...", + "Not saved" : "No guardado", + "Sending…" : "Enviando...", + "Email sent" : "Correo electrónico enviado", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Se presentó un error. Por favor carga un certificado PEM con codificación ASCII", + "Valid until {date}" : "Válido hasta {date}", + "Local" : "Local", + "Private" : "Privado", + "Only visible to local users" : "Visible sólo para usuarios locales", + "Only visible to you" : "Sólo visible para ti", + "Contacts" : "Contactos", + "Visible to local users and to trusted servers" : "Visible para usuarios locales y para servidores de confianza", + "Public" : "Público", + "Will be synced to a global and public address book" : "Será sincronizado a una libreta de direcciones global y pública", + "Very weak password" : "Contraseña muy débil", + "Weak password" : "Contraseña débil", + "So-so password" : "Contraseña aceptable", + "Good password" : "Buena contraseña", + "Strong password" : "Contraseña fuerte", + "Select a profile picture" : "Selecciona una imagen de perfil", + "Groups" : "Grupos", + "Limit to groups" : "Limitar a grupos", + "Allow filesystem access" : "Permitir acceso al sistema de archivos", + "Revoke" : "Revocar", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome para Android", + "Sync client - {os}" : "Sync client - {os}", + "This session" : "Esta sesión", + "Device" : "Dispositivo", + "Last activity" : "Última actividad", + "Devices & sessions" : "Dispositivos y sesiones", + "Web, desktop and mobile clients currently logged in to your account." : "Clientes web, de escritorio y móviles han iniciado sesión en tu cuenta. ", + "Error while creating device token" : "Se presentó un error al crear la ficha en el dispositivo", + "Error while deleting the token" : "Se presentó un error al borrar la ficha", + "App name" : "Nombre de la aplicación", + "Create new app password" : "Crear una nueva contraseña de aplicación", + "Use the credentials below to configure your app or device." : "Usa las siguientes credenciales para configurar tu aplicación o dispositivo. ", + "For security reasons this password will only be shown once." : "Por razones de seguridad esta contraseña sólo se mostrará una vez. ", + "Username" : "Usuario", + "Password" : "Contraseña", + "Done" : "Terminado", + "Copied!" : "¡Copiado!", + "Copy" : "Copiar", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Las aplicaciones oficiales son desarrolladas por y dentro de la comunidad. Ofrecen una funcionalidad centralizada y se encuentran listas para ser usadas en producción. ", + "Official" : "Oficial", + "Remove" : "Eliminar", + "Disable" : "Deshabilitar", + "All" : "Todos", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión mínima de Nextcloud asignada. Esto será un error en el futuro.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión máxima de Nextcloud asignada. Esto será un error en el futuro.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Esta aplicación no puede ser instalada porque las siguientes dependencias no están satisfechas:", + "View in store" : "Ver en la tienda", + "Visit website" : "Visita el sitio web", + "Report a bug" : "Reporta un detalle", + "User documentation" : "Documentación del usuario", + "Admin documentation" : "Documentación del administrador", + "Developer documentation" : "Documentación del desarrollador", + "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Enable all" : "Habilitar todo", + "Enable" : "Habilitar", + "The app will be downloaded from the app store" : "La aplicación será descargada de la tienda de aplicaciones <app store>", + "New password" : "Nueva contraseña", + "{size} used" : "{size} usado", + "Email" : "Correo electrónico", + "Group admin for" : "Administrador del grupo para", + "Quota" : "Cuota", + "Language" : "Idioma", + "Storage location" : "Úbicación del almacenamiento", + "User backend" : "Backend del usuario", + "Last login" : "Último inicio de sesión", + "Default quota" : "Cuota predeterminada", + "Your apps" : "Tus aplicaciones", + "Disabled apps" : "Aplicaciones deshabilitadas", + "Updates" : "Actualizaciones", + "App bundles" : "Paquetes de aplicación", + "Show last login" : "Mostrar último inicio de sesión", + "Show user backend" : "Mostrar backend del usuario", + "Admins" : "Administradores", + "Everyone" : "Todos", + "Add group" : "Agregar grupo", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "La aplicación ha sido habilitada pero necesita ser actualizada. Serás redireccionado a la página de actualización en 5 segundos. ", + "App update" : "Actualización de la aplicación", + "Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor", + "SSL Root Certificates" : "Certificado SSL Raíz", + "Common Name" : "Nombre común", + "Valid until" : "Válido hasta", + "Issued By" : "Levantado Por", + "Valid until %s" : "Válido hasta %s", + "Import root certificate" : "Importar certificado raíz", + "Administrator documentation" : "Documentación del adminsitrador", + "Forum" : "Foro", + "None" : "Ninguno", + "Login" : "Iniciar sesión", + "Plain" : "Plano", + "NT LAN Manager" : "Administrador de LAN NT", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Servidor de correo electrónico", + "Open documentation" : "Abrir documentación", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Es importante preparar este servidor para poder enviar correos electrónicos, como para restablecer contraseñas y notificaciones. ", + "Send mode" : "Modo de envío", + "Encryption" : "Encripción", + "From address" : "De la dirección", + "mail" : "correo", + "Authentication method" : "Método de autenticación", + "Authentication required" : "Autenticación requerida", + "Server address" : "Dirección del servidor", + "Port" : "Puerto", + "Credentials" : "Credenciales", + "SMTP Username" : "Usuario SMTP", + "SMTP Password" : "Contraseña SMTP", + "Test email settings" : "Probar las configuraciones de correo electrónico", + "Send email" : "Enviar correo electrónico", + "Security & setup warnings" : "Advertencias de seguridad y configuración", + "All checks passed." : "Pasaron todas las verificaciones. ", + "Version" : "Versión", + "Server-side encryption" : "Encripción del lado del servidor", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "La encripción del lado del servidor hace posible encriptar archivos que serán cargados a este servidor. Esto trae consigo algunas limitaciónes como penalizaciones en el desemeño, asi que habilítalo sólo si es necesario. ", + "Enable server-side encryption" : "Habilitar encripción del lado del servidor", + "Please read carefully before activating server-side encryption: " : "Por favor lee detenidamente antes de activar la encripción del lado de servidor:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Una vez que la encripción se encuentre habilitada, todos lo archivos cargados al servidor desde ese momento en tiempo, se encriptarán en el servidor. Sólo será posible deshabilitar la encripción en una fecha posterior si el modulo de encripción activo soporta esa funcionalidad y si todas las preciondiciones están satisfechas (ejem. establecer una llave de recuperación).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "La encripción por sí sola no garantiza la seguridad del sistema. Por favor consulta la documentación para mayores informes de cómo funciona la aplicación de encripción y de los casos de uso soportados. ", + "Be aware that encryption always increases the file size." : "Por favor considera que la encripción siempre aumenta el tamaño de los archivos. ", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Siempre es una buena idea generar respaldos de tus datos, en caso de tener encripción asegúrate de respaldar las llaves de encripción junto con tus datos. ", + "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", + "Enable encryption" : "Habilitar encripción", + "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", + "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Necesitas migrar tus llaves de encripción de la encripción anterior (ownCloud <= 8.0) a la actual. Por favor habilita el \"Módulo de encripción predeterminado\" y ejecuta el comando 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Necesitas migar tus llaves de encripción de la encripción anterior (ownCloud <=8.0) a la actual. ", + "Start migration" : "Iniciar migración", + "Background jobs" : "Trabajos en segundo plano", + "Last job ran %s." : "El último trabajo corrió %s.", + "Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ", + "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ", + "Execute one task with each page loaded" : "Ejecutar una tarea con cada página cargada", + "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ", + "Sharing" : "Compartiendo", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", + "Allow apps to use the Share API" : "Permitir que las aplicaciones usen el API para Compartir", + "Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas", + "Allow public uploads" : "Permitir cargas públicas", + "Always ask for a password" : "Siempre pedir una contraseña", + "Enforce password protection" : "Forzar protección de contraseñas", + "Set default expiration date" : "Establecer la fecha de expiración predeterminada", + "Expire after " : "Expirar después de", + "days" : "días", + "Enforce expiration date" : "Forzar fecha de expiración", + "Allow resharing" : "Permitir volver a compartir", + "Allow sharing with groups" : "Permitir compartir con grupos", + "Restrict users to only share with users in their groups" : "Limitar a los usuarios a sólo compartir con otros usuarios en sus grupos", + "Exclude groups from sharing" : "Evitar que los grupos compartan", + "These groups will still be able to receive shares, but not to initiate them." : "Estos grupos aún podrán recibir elementos compartidos, pero no los podrán iniciar.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Permitir el autocompletado de usuarios en la ventana de diálogo de compartir. Si esto está deshabilitado, se deberá ingresar el correo electrónico o nombre completo. ", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Mostrar el texto de exención de responsabilidad legal en la página de carga de ligas públicas. (Sólo se muestra cuando la lista de archivos está oculta.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Este texto se mostrará en la página de carga de la liga pública cuando la lista de archivos esté oculta. ", + "Default share permissions" : "Permisos predeterminados para compartir", + "Personal" : "Personal", + "Administration" : "Administración", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Desarrollado por la {communityopen}comunidad Nextcloud {linkclose}, el {githubopen}código fuente {linkclose} está licenciado bajo {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Da un Like a nuestra página de Facebook", + "Follow us on Twitter" : "Síguenos en Twitter", + "Check out our blog" : "Visita nuestro blog", + "Subscribe to our newsletter" : "Suscribete a nuestro boletín", + "Profile picture" : "Foto de perfil", + "Upload new" : "Cargar nuevo", + "Select from Files" : "Seleccionar desde Archivos", + "Remove image" : "Eliminar imagen", + "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", + "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", + "Cancel" : "Cancelar", + "Choose as profile picture" : "Seleccionar como foto del perfil", + "Details" : "Detalles", + "You are using <strong>%s</strong>" : "Estás usando<strong>%s</strong>", + "Full name" : "Nombre completo", + "No display name set" : "No se ha establecido el nombre a desplegar", + "Your email address" : "Tu dirección de correo electrónico", + "No email address set" : "No se ha establecido la dirección de correo electrónico", + "For password reset and notifications" : "Para restablecer contraseña y notificaciones", + "Phone number" : "Número de teléfono", + "Your phone number" : "Su número telefónico", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "Website" : "Sitio web", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Cuenta de twitter @...", + "Help translate" : "Ayuda a traducir", + "Current password" : "Contraseña actual", + "Change password" : "Cambiar contraseña", + "Store credentials" : "Almacenar credenciales", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php está registrado en un servicio webcron para llamar a cron.php cada 15 minutos a través de HTTP. ", + "Use system cron service to call the cron.php file every 15 minutes." : "Usar el servicio cron del sistema para llamar al archivo cron.php cada 15 minutos. " +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/es_CR.json b/apps/settings/l10n/es_CR.json new file mode 100644 index 00000000000..eda48a73a1c --- /dev/null +++ b/apps/settings/l10n/es_CR.json @@ -0,0 +1,262 @@ +{ "translations": { + "{actor} changed your password" : "{actor} ha cambiado tu contraseña", + "You changed your password" : "Cambiaste tu contraseña", + "Your password was reset by an administrator" : "Tu contraseña ha sido restablecida por un adminsitrador", + "{actor} changed your email address" : "{actor} ha cambiado tu dirección de correo electrónico", + "You changed your email address" : "Cambiaste tu dirección de correo electrónico", + "Your email address was changed by an administrator" : "Tu dirección de correo electrónico ha sido cambiada por un administrador", + "Security" : "Seguridad", + "You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado", + "Couldn't remove app." : "No fue posible eliminar la aplicación. ", + "Couldn't update app." : "No fue posible actualizar la aplicación.", + "Wrong password" : "Contraseña incorrecta", + "Saved" : "Guardado", + "No user supplied" : "No se proporcionó usuario alguno", + "Unable to change password" : "No fue posible cambiar la contraseña", + "Authentication error" : "Error de autenticación", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Por favor proporciona una contraseña de recuperación de administrador; de lo contrario toda la información del usuario se perderá. ", + "Wrong admin recovery password. Please check the password and try again." : "Contraseña de recuperación de administrador incorrecta. Por favor verificala e inténtalo de nuevo.", + "Backend doesn't support password change, but the user's encryption key was updated." : "El backend no soporta el cambio de contraseñas, pero la llave de encripción del usuario fue actualizada.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Instalando y actualizando aplicaciones por la tienda de aplicaciones o Compartido la Nube Federada", + "Federated Cloud Sharing" : "Compartir en la Nube Federada", + "Invalid SMTP password." : "Constraseña SMTP inválida. ", + "Email setting test" : "Prueba de ajustes de correo", + "Well done, %s!" : "¡Bien hecho, %s!", + "If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ", + "Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)", + "You need to set your user email before being able to send test emails." : "Requieres establecer tu correo electrónico antes de poder enviar correos electrónicos de prueba. ", + "Invalid mail address" : "Dirección de correo inválida", + "Settings saved" : "Se han guardado las configuraciones ", + "Unable to change full name" : "No fue posible cambiar el nombre completo", + "Unable to change email address" : "No fue posible cambiar la dirección de correo electrónico", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Para poder verificar tu cuenta de Twitter, publica el siguiente tweet en Twitter (por favor asegúrarte de publicar sin ninguna línea en blanco):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Para poder verificar tu sitio Web, agrega el siguiente contendio a tu web-root en '.well-known/CloudIdVerificationCode.txt' (por favor asegurate de que el texto completo este en una sóla línea):", + "%1$s changed your password on %2$s." : "%1$s cambió tu contraseña el %2$s.", + "Your password on %s was changed." : "Tu contraseña de %s fue cambiada. ", + "Your password on %s was reset by an administrator." : "Tu contraseña de %s fue restablecida por un administrador.", + "Password for %1$s changed on %2$s" : "La contraseña de %1$s fue cambiada en %2$s", + "Password changed for %s" : "La contraseña fue cambiada para %s", + "If you did not request this, please contact an administrator." : "Si no lo solicitaste, por favor contacta a un administrador. ", + "Your email address on %s was changed." : "Tu dirección de correo electrónico en %s fue cambiada. ", + "Your email address on %s was changed by an administrator." : "Tu dirección de correo electrónico en %s fue cambiada por un adminsitrador. ", + "Email address for %1$s changed on %2$s" : "La dirección de correo electrónico de %1$s ha cambiado en %2$s", + "Email address changed for %s" : "La dirección de correo electrónico fue cambiada para %s", + "The new email address is %s" : "La nueva dirección de correo electrónico es %s", + "Your %s account was created" : "Tu cuenta %s ha sido creada", + "Welcome aboard" : "Bienvenido a bordo", + "Welcome aboard %s" : "Bienvenido a bordo %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Bienvenido a tu cuenta %s, puedes agregar, proteger y compartir tus datos.", + "Your username is: %s" : "Tu Usuario es: %s", + "Set your password" : "Establece tu contraseña", + "Go to %s" : "Ir a %s", + "Install Client" : "Instalar el cliente", + "Delete" : "Borrar", + "Unlimited" : "Ilimitado", + "Verifying …" : "Verificando ...", + "Verify" : "Verificar", + "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", + "Migration started …" : "La migración ha comenzado ...", + "Not saved" : "No guardado", + "Sending…" : "Enviando...", + "Email sent" : "Correo electrónico enviado", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Se presentó un error. Por favor carga un certificado PEM con codificación ASCII", + "Valid until {date}" : "Válido hasta {date}", + "Local" : "Local", + "Private" : "Privado", + "Only visible to local users" : "Visible sólo para usuarios locales", + "Only visible to you" : "Sólo visible para ti", + "Contacts" : "Contactos", + "Visible to local users and to trusted servers" : "Visible para usuarios locales y para servidores de confianza", + "Public" : "Público", + "Will be synced to a global and public address book" : "Será sincronizado a una libreta de direcciones global y pública", + "Very weak password" : "Contraseña muy débil", + "Weak password" : "Contraseña débil", + "So-so password" : "Contraseña aceptable", + "Good password" : "Buena contraseña", + "Strong password" : "Contraseña fuerte", + "Select a profile picture" : "Selecciona una imagen de perfil", + "Groups" : "Grupos", + "Limit to groups" : "Limitar a grupos", + "Allow filesystem access" : "Permitir acceso al sistema de archivos", + "Revoke" : "Revocar", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome para Android", + "Sync client - {os}" : "Sync client - {os}", + "This session" : "Esta sesión", + "Device" : "Dispositivo", + "Last activity" : "Última actividad", + "Devices & sessions" : "Dispositivos y sesiones", + "Web, desktop and mobile clients currently logged in to your account." : "Clientes web, de escritorio y móviles han iniciado sesión en tu cuenta. ", + "Error while creating device token" : "Se presentó un error al crear la ficha en el dispositivo", + "Error while deleting the token" : "Se presentó un error al borrar la ficha", + "App name" : "Nombre de la aplicación", + "Create new app password" : "Crear una nueva contraseña de aplicación", + "Use the credentials below to configure your app or device." : "Usa las siguientes credenciales para configurar tu aplicación o dispositivo. ", + "For security reasons this password will only be shown once." : "Por razones de seguridad esta contraseña sólo se mostrará una vez. ", + "Username" : "Usuario", + "Password" : "Contraseña", + "Done" : "Terminado", + "Copied!" : "¡Copiado!", + "Copy" : "Copiar", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Las aplicaciones oficiales son desarrolladas por y dentro de la comunidad. Ofrecen una funcionalidad centralizada y se encuentran listas para ser usadas en producción. ", + "Official" : "Oficial", + "Remove" : "Eliminar", + "Disable" : "Deshabilitar", + "All" : "Todos", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión mínima de Nextcloud asignada. Esto será un error en el futuro.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión máxima de Nextcloud asignada. Esto será un error en el futuro.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Esta aplicación no puede ser instalada porque las siguientes dependencias no están satisfechas:", + "View in store" : "Ver en la tienda", + "Visit website" : "Visita el sitio web", + "Report a bug" : "Reporta un detalle", + "User documentation" : "Documentación del usuario", + "Admin documentation" : "Documentación del administrador", + "Developer documentation" : "Documentación del desarrollador", + "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Enable all" : "Habilitar todo", + "Enable" : "Habilitar", + "The app will be downloaded from the app store" : "La aplicación será descargada de la tienda de aplicaciones <app store>", + "New password" : "Nueva contraseña", + "{size} used" : "{size} usado", + "Email" : "Correo electrónico", + "Group admin for" : "Administrador del grupo para", + "Quota" : "Cuota", + "Language" : "Idioma", + "Storage location" : "Úbicación del almacenamiento", + "User backend" : "Backend del usuario", + "Last login" : "Último inicio de sesión", + "Default quota" : "Cuota predeterminada", + "Your apps" : "Tus aplicaciones", + "Disabled apps" : "Aplicaciones deshabilitadas", + "Updates" : "Actualizaciones", + "App bundles" : "Paquetes de aplicación", + "Show last login" : "Mostrar último inicio de sesión", + "Show user backend" : "Mostrar backend del usuario", + "Admins" : "Administradores", + "Everyone" : "Todos", + "Add group" : "Agregar grupo", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "La aplicación ha sido habilitada pero necesita ser actualizada. Serás redireccionado a la página de actualización en 5 segundos. ", + "App update" : "Actualización de la aplicación", + "Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor", + "SSL Root Certificates" : "Certificado SSL Raíz", + "Common Name" : "Nombre común", + "Valid until" : "Válido hasta", + "Issued By" : "Levantado Por", + "Valid until %s" : "Válido hasta %s", + "Import root certificate" : "Importar certificado raíz", + "Administrator documentation" : "Documentación del adminsitrador", + "Forum" : "Foro", + "None" : "Ninguno", + "Login" : "Iniciar sesión", + "Plain" : "Plano", + "NT LAN Manager" : "Administrador de LAN NT", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Servidor de correo electrónico", + "Open documentation" : "Abrir documentación", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Es importante preparar este servidor para poder enviar correos electrónicos, como para restablecer contraseñas y notificaciones. ", + "Send mode" : "Modo de envío", + "Encryption" : "Encripción", + "From address" : "De la dirección", + "mail" : "correo", + "Authentication method" : "Método de autenticación", + "Authentication required" : "Autenticación requerida", + "Server address" : "Dirección del servidor", + "Port" : "Puerto", + "Credentials" : "Credenciales", + "SMTP Username" : "Usuario SMTP", + "SMTP Password" : "Contraseña SMTP", + "Test email settings" : "Probar las configuraciones de correo electrónico", + "Send email" : "Enviar correo electrónico", + "Security & setup warnings" : "Advertencias de seguridad y configuración", + "All checks passed." : "Pasaron todas las verificaciones. ", + "Version" : "Versión", + "Server-side encryption" : "Encripción del lado del servidor", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "La encripción del lado del servidor hace posible encriptar archivos que serán cargados a este servidor. Esto trae consigo algunas limitaciónes como penalizaciones en el desemeño, asi que habilítalo sólo si es necesario. ", + "Enable server-side encryption" : "Habilitar encripción del lado del servidor", + "Please read carefully before activating server-side encryption: " : "Por favor lee detenidamente antes de activar la encripción del lado de servidor:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Una vez que la encripción se encuentre habilitada, todos lo archivos cargados al servidor desde ese momento en tiempo, se encriptarán en el servidor. Sólo será posible deshabilitar la encripción en una fecha posterior si el modulo de encripción activo soporta esa funcionalidad y si todas las preciondiciones están satisfechas (ejem. establecer una llave de recuperación).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "La encripción por sí sola no garantiza la seguridad del sistema. Por favor consulta la documentación para mayores informes de cómo funciona la aplicación de encripción y de los casos de uso soportados. ", + "Be aware that encryption always increases the file size." : "Por favor considera que la encripción siempre aumenta el tamaño de los archivos. ", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Siempre es una buena idea generar respaldos de tus datos, en caso de tener encripción asegúrate de respaldar las llaves de encripción junto con tus datos. ", + "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", + "Enable encryption" : "Habilitar encripción", + "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", + "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Necesitas migrar tus llaves de encripción de la encripción anterior (ownCloud <= 8.0) a la actual. Por favor habilita el \"Módulo de encripción predeterminado\" y ejecuta el comando 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Necesitas migar tus llaves de encripción de la encripción anterior (ownCloud <=8.0) a la actual. ", + "Start migration" : "Iniciar migración", + "Background jobs" : "Trabajos en segundo plano", + "Last job ran %s." : "El último trabajo corrió %s.", + "Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ", + "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ", + "Execute one task with each page loaded" : "Ejecutar una tarea con cada página cargada", + "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ", + "Sharing" : "Compartiendo", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", + "Allow apps to use the Share API" : "Permitir que las aplicaciones usen el API para Compartir", + "Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas", + "Allow public uploads" : "Permitir cargas públicas", + "Always ask for a password" : "Siempre pedir una contraseña", + "Enforce password protection" : "Forzar protección de contraseñas", + "Set default expiration date" : "Establecer la fecha de expiración predeterminada", + "Expire after " : "Expirar después de", + "days" : "días", + "Enforce expiration date" : "Forzar fecha de expiración", + "Allow resharing" : "Permitir volver a compartir", + "Allow sharing with groups" : "Permitir compartir con grupos", + "Restrict users to only share with users in their groups" : "Limitar a los usuarios a sólo compartir con otros usuarios en sus grupos", + "Exclude groups from sharing" : "Evitar que los grupos compartan", + "These groups will still be able to receive shares, but not to initiate them." : "Estos grupos aún podrán recibir elementos compartidos, pero no los podrán iniciar.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Permitir el autocompletado de usuarios en la ventana de diálogo de compartir. Si esto está deshabilitado, se deberá ingresar el correo electrónico o nombre completo. ", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Mostrar el texto de exención de responsabilidad legal en la página de carga de ligas públicas. (Sólo se muestra cuando la lista de archivos está oculta.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Este texto se mostrará en la página de carga de la liga pública cuando la lista de archivos esté oculta. ", + "Default share permissions" : "Permisos predeterminados para compartir", + "Personal" : "Personal", + "Administration" : "Administración", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Desarrollado por la {communityopen}comunidad Nextcloud {linkclose}, el {githubopen}código fuente {linkclose} está licenciado bajo {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Da un Like a nuestra página de Facebook", + "Follow us on Twitter" : "Síguenos en Twitter", + "Check out our blog" : "Visita nuestro blog", + "Subscribe to our newsletter" : "Suscribete a nuestro boletín", + "Profile picture" : "Foto de perfil", + "Upload new" : "Cargar nuevo", + "Select from Files" : "Seleccionar desde Archivos", + "Remove image" : "Eliminar imagen", + "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", + "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", + "Cancel" : "Cancelar", + "Choose as profile picture" : "Seleccionar como foto del perfil", + "Details" : "Detalles", + "You are using <strong>%s</strong>" : "Estás usando<strong>%s</strong>", + "Full name" : "Nombre completo", + "No display name set" : "No se ha establecido el nombre a desplegar", + "Your email address" : "Tu dirección de correo electrónico", + "No email address set" : "No se ha establecido la dirección de correo electrónico", + "For password reset and notifications" : "Para restablecer contraseña y notificaciones", + "Phone number" : "Número de teléfono", + "Your phone number" : "Su número telefónico", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "Website" : "Sitio web", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Cuenta de twitter @...", + "Help translate" : "Ayuda a traducir", + "Current password" : "Contraseña actual", + "Change password" : "Cambiar contraseña", + "Store credentials" : "Almacenar credenciales", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php está registrado en un servicio webcron para llamar a cron.php cada 15 minutos a través de HTTP. ", + "Use system cron service to call the cron.php file every 15 minutes." : "Usar el servicio cron del sistema para llamar al archivo cron.php cada 15 minutos. " +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} \ No newline at end of file diff --git a/apps/settings/l10n/es_DO.js b/apps/settings/l10n/es_DO.js new file mode 100644 index 00000000000..93c7e4f0944 --- /dev/null +++ b/apps/settings/l10n/es_DO.js @@ -0,0 +1,264 @@ +OC.L10N.register( + "settings", + { + "{actor} changed your password" : "{actor} ha cambiado tu contraseña", + "You changed your password" : "Cambiaste tu contraseña", + "Your password was reset by an administrator" : "Tu contraseña ha sido restablecida por un adminsitrador", + "{actor} changed your email address" : "{actor} ha cambiado tu dirección de correo electrónico", + "You changed your email address" : "Cambiaste tu dirección de correo electrónico", + "Your email address was changed by an administrator" : "Tu dirección de correo electrónico ha sido cambiada por un administrador", + "Security" : "Seguridad", + "You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado", + "Couldn't remove app." : "No fue posible eliminar la aplicación. ", + "Couldn't update app." : "No fue posible actualizar la aplicación.", + "Wrong password" : "Contraseña incorrecta", + "Saved" : "Guardado", + "No user supplied" : "No se proporcionó usuario alguno", + "Unable to change password" : "No fue posible cambiar la contraseña", + "Authentication error" : "Error de autenticación", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Por favor proporciona una contraseña de recuperación de administrador; de lo contrario toda la información del usuario se perderá. ", + "Wrong admin recovery password. Please check the password and try again." : "Contraseña de recuperación de administrador incorrecta. Por favor verificala e inténtalo de nuevo.", + "Backend doesn't support password change, but the user's encryption key was updated." : "El backend no soporta el cambio de contraseñas, pero la llave de encripción del usuario fue actualizada.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Instalando y actualizando aplicaciones por la tienda de aplicaciones o Compartido la Nube Federada", + "Federated Cloud Sharing" : "Compartir en la Nube Federada", + "Invalid SMTP password." : "Constraseña SMTP inválida. ", + "Email setting test" : "Prueba de ajustes de correo", + "Well done, %s!" : "¡Bien hecho, %s!", + "If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ", + "Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)", + "You need to set your user email before being able to send test emails." : "Requieres establecer tu correo electrónico antes de poder enviar correos electrónicos de prueba. ", + "Invalid mail address" : "Dirección de correo inválida", + "Settings saved" : "Se han guardado las configuraciones ", + "Unable to change full name" : "No fue posible cambiar el nombre completo", + "Unable to change email address" : "No fue posible cambiar la dirección de correo electrónico", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Para poder verificar tu cuenta de Twitter, publica el siguiente tweet en Twitter (por favor asegúrarte de publicar sin ninguna línea en blanco):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Para poder verificar tu sitio Web, agrega el siguiente contendio a tu web-root en '.well-known/CloudIdVerificationCode.txt' (por favor asegurate de que el texto completo este en una sóla línea):", + "%1$s changed your password on %2$s." : "%1$s cambió tu contraseña el %2$s.", + "Your password on %s was changed." : "Tu contraseña de %s fue cambiada. ", + "Your password on %s was reset by an administrator." : "Tu contraseña de %s fue restablecida por un administrador.", + "Password for %1$s changed on %2$s" : "La contraseña de %1$s fue cambiada en %2$s", + "Password changed for %s" : "La contraseña fue cambiada para %s", + "If you did not request this, please contact an administrator." : "Si no lo solicitaste, por favor contacta a un administrador. ", + "Your email address on %s was changed." : "Tu dirección de correo electrónico en %s fue cambiada. ", + "Your email address on %s was changed by an administrator." : "Tu dirección de correo electrónico en %s fue cambiada por un adminsitrador. ", + "Email address for %1$s changed on %2$s" : "La dirección de correo electrónico de %1$s ha cambiado en %2$s", + "Email address changed for %s" : "La dirección de correo electrónico fue cambiada para %s", + "The new email address is %s" : "La nueva dirección de correo electrónico es %s", + "Your %s account was created" : "Tu cuenta %s ha sido creada", + "Welcome aboard" : "Bienvenido a bordo", + "Welcome aboard %s" : "Bienvenido a bordo %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Bienvenido a tu cuenta %s, puedes agregar, proteger y compartir tus datos.", + "Your username is: %s" : "Tu Usuario es: %s", + "Set your password" : "Establece tu contraseña", + "Go to %s" : "Ir a %s", + "Install Client" : "Instalar el cliente", + "Delete" : "Borrar", + "Unlimited" : "Ilimitado", + "Verifying …" : "Verificando ...", + "Verify" : "Verificar", + "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", + "Migration started …" : "La migración ha comenzado ...", + "Not saved" : "No guardado", + "Sending…" : "Enviando...", + "Email sent" : "Correo electrónico enviado", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Se presentó un error. Por favor carga un certificado PEM con codificación ASCII", + "Valid until {date}" : "Válido hasta {date}", + "Local" : "Local", + "Private" : "Privado", + "Only visible to local users" : "Visible sólo para usuarios locales", + "Only visible to you" : "Sólo visible para ti", + "Contacts" : "Contactos", + "Visible to local users and to trusted servers" : "Visible para usuarios locales y para servidores de confianza", + "Public" : "Público", + "Will be synced to a global and public address book" : "Será sincronizado a una libreta de direcciones global y pública", + "Very weak password" : "Contraseña muy débil", + "Weak password" : "Contraseña débil", + "So-so password" : "Contraseña aceptable", + "Good password" : "Buena contraseña", + "Strong password" : "Contraseña fuerte", + "Select a profile picture" : "Selecciona una imagen de perfil", + "Groups" : "Grupos", + "Limit to groups" : "Limitar a grupos", + "Allow filesystem access" : "Permitir acceso al sistema de archivos", + "Revoke" : "Revocar", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome para Android", + "Sync client - {os}" : "Sync client - {os}", + "This session" : "Esta sesión", + "Device" : "Dispositivo", + "Last activity" : "Última actividad", + "Devices & sessions" : "Dispositivos y sesiones", + "Web, desktop and mobile clients currently logged in to your account." : "Clientes web, de escritorio y móviles han iniciado sesión en tu cuenta. ", + "Error while creating device token" : "Se presentó un error al crear la ficha en el dispositivo", + "Error while deleting the token" : "Se presentó un error al borrar la ficha", + "App name" : "Nombre de la aplicación", + "Create new app password" : "Crear una nueva contraseña de aplicación", + "Use the credentials below to configure your app or device." : "Usa las siguientes credenciales para configurar tu aplicación o dispositivo. ", + "For security reasons this password will only be shown once." : "Por razones de seguridad esta contraseña sólo se mostrará una vez. ", + "Username" : "Usuario", + "Password" : "Contraseña", + "Done" : "Terminado", + "Copied!" : "¡Copiado!", + "Copy" : "Copiar", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Las aplicaciones oficiales son desarrolladas por y dentro de la comunidad. Ofrecen una funcionalidad centralizada y se encuentran listas para ser usadas en producción. ", + "Official" : "Oficial", + "Remove" : "Eliminar", + "Disable" : "Deshabilitar", + "All" : "Todos", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión mínima de Nextcloud asignada. Esto será un error en el futuro.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión máxima de Nextcloud asignada. Esto será un error en el futuro.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Esta aplicación no puede ser instalada porque las siguientes dependencias no están satisfechas:", + "View in store" : "Ver en la tienda", + "Visit website" : "Visita el sitio web", + "Report a bug" : "Reporta un detalle", + "User documentation" : "Documentación del usuario", + "Admin documentation" : "Documentación del administrador", + "Developer documentation" : "Documentación del desarrollador", + "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Enable all" : "Habilitar todo", + "Enable" : "Habilitar", + "The app will be downloaded from the app store" : "La aplicación será descargada de la tienda de aplicaciones <app store>", + "New password" : "Nueva contraseña", + "{size} used" : "{size} usado", + "Email" : "Correo electrónico", + "Group admin for" : "Administrador del grupo para", + "Quota" : "Cuota", + "Language" : "Idioma", + "Storage location" : "Úbicación del almacenamiento", + "User backend" : "Backend del usuario", + "Last login" : "Último inicio de sesión", + "Default quota" : "Cuota predeterminada", + "Your apps" : "Tus aplicaciones", + "Disabled apps" : "Aplicaciones deshabilitadas", + "Updates" : "Actualizaciones", + "App bundles" : "Paquetes de aplicación", + "Show last login" : "Mostrar último inicio de sesión", + "Show user backend" : "Mostrar backend del usuario", + "Admins" : "Administradores", + "Everyone" : "Todos", + "Add group" : "Agregar grupo", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "La aplicación ha sido habilitada pero necesita ser actualizada. Serás redireccionado a la página de actualización en 5 segundos. ", + "App update" : "Actualización de la aplicación", + "Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor", + "SSL Root Certificates" : "Certificado SSL Raíz", + "Common Name" : "Nombre común", + "Valid until" : "Válido hasta", + "Issued By" : "Levantado Por", + "Valid until %s" : "Válido hasta %s", + "Import root certificate" : "Importar certificado raíz", + "Administrator documentation" : "Documentación del adminsitrador", + "Forum" : "Foro", + "None" : "Ninguno", + "Login" : "Iniciar sesión", + "Plain" : "Plano", + "NT LAN Manager" : "Administrador de LAN NT", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Servidor de correo electrónico", + "Open documentation" : "Abrir documentación", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Es importante preparar este servidor para poder enviar correos electrónicos, como para restablecer contraseñas y notificaciones. ", + "Send mode" : "Modo de envío", + "Encryption" : "Encripción", + "From address" : "De la dirección", + "mail" : "correo", + "Authentication method" : "Método de autenticación", + "Authentication required" : "Autenticación requerida", + "Server address" : "Dirección del servidor", + "Port" : "Puerto", + "Credentials" : "Credenciales", + "SMTP Username" : "Usuario SMTP", + "SMTP Password" : "Contraseña SMTP", + "Test email settings" : "Probar las configuraciones de correo electrónico", + "Send email" : "Enviar correo electrónico", + "Security & setup warnings" : "Advertencias de seguridad y configuración", + "All checks passed." : "Pasaron todas las verificaciones. ", + "Version" : "Versión", + "Server-side encryption" : "Encripción del lado del servidor", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "La encripción del lado del servidor hace posible encriptar archivos que serán cargados a este servidor. Esto trae consigo algunas limitaciónes como penalizaciones en el desemeño, asi que habilítalo sólo si es necesario. ", + "Enable server-side encryption" : "Habilitar encripción del lado del servidor", + "Please read carefully before activating server-side encryption: " : "Por favor lee detenidamente antes de activar la encripción del lado de servidor:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Una vez que la encripción se encuentre habilitada, todos lo archivos cargados al servidor desde ese momento en tiempo, se encriptarán en el servidor. Sólo será posible deshabilitar la encripción en una fecha posterior si el modulo de encripción activo soporta esa funcionalidad y si todas las preciondiciones están satisfechas (ejem. establecer una llave de recuperación).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "La encripción por sí sola no garantiza la seguridad del sistema. Por favor consulta la documentación para mayores informes de cómo funciona la aplicación de encripción y de los casos de uso soportados. ", + "Be aware that encryption always increases the file size." : "Por favor considera que la encripción siempre aumenta el tamaño de los archivos. ", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Siempre es una buena idea generar respaldos de tus datos, en caso de tener encripción asegúrate de respaldar las llaves de encripción junto con tus datos. ", + "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", + "Enable encryption" : "Habilitar encripción", + "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", + "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Necesitas migrar tus llaves de encripción de la encripción anterior (ownCloud <= 8.0) a la actual. Por favor habilita el \"Módulo de encripción predeterminado\" y ejecuta el comando 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Necesitas migar tus llaves de encripción de la encripción anterior (ownCloud <=8.0) a la actual. ", + "Start migration" : "Iniciar migración", + "Background jobs" : "Trabajos en segundo plano", + "Last job ran %s." : "El último trabajo corrió %s.", + "Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ", + "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ", + "Execute one task with each page loaded" : "Ejecutar una tarea con cada página cargada", + "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ", + "Sharing" : "Compartiendo", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", + "Allow apps to use the Share API" : "Permitir que las aplicaciones usen el API para Compartir", + "Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas", + "Allow public uploads" : "Permitir cargas públicas", + "Always ask for a password" : "Siempre pedir una contraseña", + "Enforce password protection" : "Forzar protección de contraseñas", + "Set default expiration date" : "Establecer la fecha de expiración predeterminada", + "Expire after " : "Expirar después de", + "days" : "días", + "Enforce expiration date" : "Forzar fecha de expiración", + "Allow resharing" : "Permitir volver a compartir", + "Allow sharing with groups" : "Permitir compartir con grupos", + "Restrict users to only share with users in their groups" : "Limitar a los usuarios a sólo compartir con otros usuarios en sus grupos", + "Exclude groups from sharing" : "Evitar que los grupos compartan", + "These groups will still be able to receive shares, but not to initiate them." : "Estos grupos aún podrán recibir elementos compartidos, pero no los podrán iniciar.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Permitir el autocompletado de usuarios en la ventana de diálogo de compartir. Si esto está deshabilitado, se deberá ingresar el correo electrónico o nombre completo. ", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Mostrar el texto de exención de responsabilidad legal en la página de carga de ligas públicas. (Sólo se muestra cuando la lista de archivos está oculta.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Este texto se mostrará en la página de carga de la liga pública cuando la lista de archivos esté oculta. ", + "Default share permissions" : "Permisos predeterminados para compartir", + "Personal" : "Personal", + "Administration" : "Administración", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Desarrollado por la {communityopen}comunidad Nextcloud {linkclose}, el {githubopen}código fuente {linkclose} está licenciado bajo {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Da un Like a nuestra página de Facebook", + "Follow us on Twitter" : "Síguenos en Twitter", + "Check out our blog" : "Visita nuestro blog", + "Subscribe to our newsletter" : "Suscribete a nuestro boletín", + "Profile picture" : "Foto de perfil", + "Upload new" : "Cargar nuevo", + "Select from Files" : "Seleccionar desde Archivos", + "Remove image" : "Eliminar imagen", + "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", + "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", + "Cancel" : "Cancelar", + "Choose as profile picture" : "Seleccionar como foto del perfil", + "Details" : "Detalles", + "You are using <strong>%s</strong>" : "Estás usando<strong>%s</strong>", + "Full name" : "Nombre completo", + "No display name set" : "No se ha establecido el nombre a desplegar", + "Your email address" : "Tu dirección de correo electrónico", + "No email address set" : "No se ha establecido la dirección de correo electrónico", + "For password reset and notifications" : "Para restablecer contraseña y notificaciones", + "Phone number" : "Número de teléfono", + "Your phone number" : "Su número telefónico", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "Website" : "Sitio web", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Cuenta de twitter @...", + "Help translate" : "Ayuda a traducir", + "Current password" : "Contraseña actual", + "Change password" : "Cambiar contraseña", + "Store credentials" : "Almacenar credenciales", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php está registrado en un servicio webcron para llamar a cron.php cada 15 minutos a través de HTTP. ", + "Use system cron service to call the cron.php file every 15 minutes." : "Usar el servicio cron del sistema para llamar al archivo cron.php cada 15 minutos. " +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/es_DO.json b/apps/settings/l10n/es_DO.json new file mode 100644 index 00000000000..eda48a73a1c --- /dev/null +++ b/apps/settings/l10n/es_DO.json @@ -0,0 +1,262 @@ +{ "translations": { + "{actor} changed your password" : "{actor} ha cambiado tu contraseña", + "You changed your password" : "Cambiaste tu contraseña", + "Your password was reset by an administrator" : "Tu contraseña ha sido restablecida por un adminsitrador", + "{actor} changed your email address" : "{actor} ha cambiado tu dirección de correo electrónico", + "You changed your email address" : "Cambiaste tu dirección de correo electrónico", + "Your email address was changed by an administrator" : "Tu dirección de correo electrónico ha sido cambiada por un administrador", + "Security" : "Seguridad", + "You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado", + "Couldn't remove app." : "No fue posible eliminar la aplicación. ", + "Couldn't update app." : "No fue posible actualizar la aplicación.", + "Wrong password" : "Contraseña incorrecta", + "Saved" : "Guardado", + "No user supplied" : "No se proporcionó usuario alguno", + "Unable to change password" : "No fue posible cambiar la contraseña", + "Authentication error" : "Error de autenticación", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Por favor proporciona una contraseña de recuperación de administrador; de lo contrario toda la información del usuario se perderá. ", + "Wrong admin recovery password. Please check the password and try again." : "Contraseña de recuperación de administrador incorrecta. Por favor verificala e inténtalo de nuevo.", + "Backend doesn't support password change, but the user's encryption key was updated." : "El backend no soporta el cambio de contraseñas, pero la llave de encripción del usuario fue actualizada.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Instalando y actualizando aplicaciones por la tienda de aplicaciones o Compartido la Nube Federada", + "Federated Cloud Sharing" : "Compartir en la Nube Federada", + "Invalid SMTP password." : "Constraseña SMTP inválida. ", + "Email setting test" : "Prueba de ajustes de correo", + "Well done, %s!" : "¡Bien hecho, %s!", + "If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ", + "Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)", + "You need to set your user email before being able to send test emails." : "Requieres establecer tu correo electrónico antes de poder enviar correos electrónicos de prueba. ", + "Invalid mail address" : "Dirección de correo inválida", + "Settings saved" : "Se han guardado las configuraciones ", + "Unable to change full name" : "No fue posible cambiar el nombre completo", + "Unable to change email address" : "No fue posible cambiar la dirección de correo electrónico", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Para poder verificar tu cuenta de Twitter, publica el siguiente tweet en Twitter (por favor asegúrarte de publicar sin ninguna línea en blanco):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Para poder verificar tu sitio Web, agrega el siguiente contendio a tu web-root en '.well-known/CloudIdVerificationCode.txt' (por favor asegurate de que el texto completo este en una sóla línea):", + "%1$s changed your password on %2$s." : "%1$s cambió tu contraseña el %2$s.", + "Your password on %s was changed." : "Tu contraseña de %s fue cambiada. ", + "Your password on %s was reset by an administrator." : "Tu contraseña de %s fue restablecida por un administrador.", + "Password for %1$s changed on %2$s" : "La contraseña de %1$s fue cambiada en %2$s", + "Password changed for %s" : "La contraseña fue cambiada para %s", + "If you did not request this, please contact an administrator." : "Si no lo solicitaste, por favor contacta a un administrador. ", + "Your email address on %s was changed." : "Tu dirección de correo electrónico en %s fue cambiada. ", + "Your email address on %s was changed by an administrator." : "Tu dirección de correo electrónico en %s fue cambiada por un adminsitrador. ", + "Email address for %1$s changed on %2$s" : "La dirección de correo electrónico de %1$s ha cambiado en %2$s", + "Email address changed for %s" : "La dirección de correo electrónico fue cambiada para %s", + "The new email address is %s" : "La nueva dirección de correo electrónico es %s", + "Your %s account was created" : "Tu cuenta %s ha sido creada", + "Welcome aboard" : "Bienvenido a bordo", + "Welcome aboard %s" : "Bienvenido a bordo %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Bienvenido a tu cuenta %s, puedes agregar, proteger y compartir tus datos.", + "Your username is: %s" : "Tu Usuario es: %s", + "Set your password" : "Establece tu contraseña", + "Go to %s" : "Ir a %s", + "Install Client" : "Instalar el cliente", + "Delete" : "Borrar", + "Unlimited" : "Ilimitado", + "Verifying …" : "Verificando ...", + "Verify" : "Verificar", + "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", + "Migration started …" : "La migración ha comenzado ...", + "Not saved" : "No guardado", + "Sending…" : "Enviando...", + "Email sent" : "Correo electrónico enviado", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Se presentó un error. Por favor carga un certificado PEM con codificación ASCII", + "Valid until {date}" : "Válido hasta {date}", + "Local" : "Local", + "Private" : "Privado", + "Only visible to local users" : "Visible sólo para usuarios locales", + "Only visible to you" : "Sólo visible para ti", + "Contacts" : "Contactos", + "Visible to local users and to trusted servers" : "Visible para usuarios locales y para servidores de confianza", + "Public" : "Público", + "Will be synced to a global and public address book" : "Será sincronizado a una libreta de direcciones global y pública", + "Very weak password" : "Contraseña muy débil", + "Weak password" : "Contraseña débil", + "So-so password" : "Contraseña aceptable", + "Good password" : "Buena contraseña", + "Strong password" : "Contraseña fuerte", + "Select a profile picture" : "Selecciona una imagen de perfil", + "Groups" : "Grupos", + "Limit to groups" : "Limitar a grupos", + "Allow filesystem access" : "Permitir acceso al sistema de archivos", + "Revoke" : "Revocar", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome para Android", + "Sync client - {os}" : "Sync client - {os}", + "This session" : "Esta sesión", + "Device" : "Dispositivo", + "Last activity" : "Última actividad", + "Devices & sessions" : "Dispositivos y sesiones", + "Web, desktop and mobile clients currently logged in to your account." : "Clientes web, de escritorio y móviles han iniciado sesión en tu cuenta. ", + "Error while creating device token" : "Se presentó un error al crear la ficha en el dispositivo", + "Error while deleting the token" : "Se presentó un error al borrar la ficha", + "App name" : "Nombre de la aplicación", + "Create new app password" : "Crear una nueva contraseña de aplicación", + "Use the credentials below to configure your app or device." : "Usa las siguientes credenciales para configurar tu aplicación o dispositivo. ", + "For security reasons this password will only be shown once." : "Por razones de seguridad esta contraseña sólo se mostrará una vez. ", + "Username" : "Usuario", + "Password" : "Contraseña", + "Done" : "Terminado", + "Copied!" : "¡Copiado!", + "Copy" : "Copiar", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Las aplicaciones oficiales son desarrolladas por y dentro de la comunidad. Ofrecen una funcionalidad centralizada y se encuentran listas para ser usadas en producción. ", + "Official" : "Oficial", + "Remove" : "Eliminar", + "Disable" : "Deshabilitar", + "All" : "Todos", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión mínima de Nextcloud asignada. Esto será un error en el futuro.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión máxima de Nextcloud asignada. Esto será un error en el futuro.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Esta aplicación no puede ser instalada porque las siguientes dependencias no están satisfechas:", + "View in store" : "Ver en la tienda", + "Visit website" : "Visita el sitio web", + "Report a bug" : "Reporta un detalle", + "User documentation" : "Documentación del usuario", + "Admin documentation" : "Documentación del administrador", + "Developer documentation" : "Documentación del desarrollador", + "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Enable all" : "Habilitar todo", + "Enable" : "Habilitar", + "The app will be downloaded from the app store" : "La aplicación será descargada de la tienda de aplicaciones <app store>", + "New password" : "Nueva contraseña", + "{size} used" : "{size} usado", + "Email" : "Correo electrónico", + "Group admin for" : "Administrador del grupo para", + "Quota" : "Cuota", + "Language" : "Idioma", + "Storage location" : "Úbicación del almacenamiento", + "User backend" : "Backend del usuario", + "Last login" : "Último inicio de sesión", + "Default quota" : "Cuota predeterminada", + "Your apps" : "Tus aplicaciones", + "Disabled apps" : "Aplicaciones deshabilitadas", + "Updates" : "Actualizaciones", + "App bundles" : "Paquetes de aplicación", + "Show last login" : "Mostrar último inicio de sesión", + "Show user backend" : "Mostrar backend del usuario", + "Admins" : "Administradores", + "Everyone" : "Todos", + "Add group" : "Agregar grupo", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "La aplicación ha sido habilitada pero necesita ser actualizada. Serás redireccionado a la página de actualización en 5 segundos. ", + "App update" : "Actualización de la aplicación", + "Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor", + "SSL Root Certificates" : "Certificado SSL Raíz", + "Common Name" : "Nombre común", + "Valid until" : "Válido hasta", + "Issued By" : "Levantado Por", + "Valid until %s" : "Válido hasta %s", + "Import root certificate" : "Importar certificado raíz", + "Administrator documentation" : "Documentación del adminsitrador", + "Forum" : "Foro", + "None" : "Ninguno", + "Login" : "Iniciar sesión", + "Plain" : "Plano", + "NT LAN Manager" : "Administrador de LAN NT", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Servidor de correo electrónico", + "Open documentation" : "Abrir documentación", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Es importante preparar este servidor para poder enviar correos electrónicos, como para restablecer contraseñas y notificaciones. ", + "Send mode" : "Modo de envío", + "Encryption" : "Encripción", + "From address" : "De la dirección", + "mail" : "correo", + "Authentication method" : "Método de autenticación", + "Authentication required" : "Autenticación requerida", + "Server address" : "Dirección del servidor", + "Port" : "Puerto", + "Credentials" : "Credenciales", + "SMTP Username" : "Usuario SMTP", + "SMTP Password" : "Contraseña SMTP", + "Test email settings" : "Probar las configuraciones de correo electrónico", + "Send email" : "Enviar correo electrónico", + "Security & setup warnings" : "Advertencias de seguridad y configuración", + "All checks passed." : "Pasaron todas las verificaciones. ", + "Version" : "Versión", + "Server-side encryption" : "Encripción del lado del servidor", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "La encripción del lado del servidor hace posible encriptar archivos que serán cargados a este servidor. Esto trae consigo algunas limitaciónes como penalizaciones en el desemeño, asi que habilítalo sólo si es necesario. ", + "Enable server-side encryption" : "Habilitar encripción del lado del servidor", + "Please read carefully before activating server-side encryption: " : "Por favor lee detenidamente antes de activar la encripción del lado de servidor:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Una vez que la encripción se encuentre habilitada, todos lo archivos cargados al servidor desde ese momento en tiempo, se encriptarán en el servidor. Sólo será posible deshabilitar la encripción en una fecha posterior si el modulo de encripción activo soporta esa funcionalidad y si todas las preciondiciones están satisfechas (ejem. establecer una llave de recuperación).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "La encripción por sí sola no garantiza la seguridad del sistema. Por favor consulta la documentación para mayores informes de cómo funciona la aplicación de encripción y de los casos de uso soportados. ", + "Be aware that encryption always increases the file size." : "Por favor considera que la encripción siempre aumenta el tamaño de los archivos. ", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Siempre es una buena idea generar respaldos de tus datos, en caso de tener encripción asegúrate de respaldar las llaves de encripción junto con tus datos. ", + "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", + "Enable encryption" : "Habilitar encripción", + "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", + "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Necesitas migrar tus llaves de encripción de la encripción anterior (ownCloud <= 8.0) a la actual. Por favor habilita el \"Módulo de encripción predeterminado\" y ejecuta el comando 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Necesitas migar tus llaves de encripción de la encripción anterior (ownCloud <=8.0) a la actual. ", + "Start migration" : "Iniciar migración", + "Background jobs" : "Trabajos en segundo plano", + "Last job ran %s." : "El último trabajo corrió %s.", + "Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ", + "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ", + "Execute one task with each page loaded" : "Ejecutar una tarea con cada página cargada", + "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ", + "Sharing" : "Compartiendo", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", + "Allow apps to use the Share API" : "Permitir que las aplicaciones usen el API para Compartir", + "Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas", + "Allow public uploads" : "Permitir cargas públicas", + "Always ask for a password" : "Siempre pedir una contraseña", + "Enforce password protection" : "Forzar protección de contraseñas", + "Set default expiration date" : "Establecer la fecha de expiración predeterminada", + "Expire after " : "Expirar después de", + "days" : "días", + "Enforce expiration date" : "Forzar fecha de expiración", + "Allow resharing" : "Permitir volver a compartir", + "Allow sharing with groups" : "Permitir compartir con grupos", + "Restrict users to only share with users in their groups" : "Limitar a los usuarios a sólo compartir con otros usuarios en sus grupos", + "Exclude groups from sharing" : "Evitar que los grupos compartan", + "These groups will still be able to receive shares, but not to initiate them." : "Estos grupos aún podrán recibir elementos compartidos, pero no los podrán iniciar.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Permitir el autocompletado de usuarios en la ventana de diálogo de compartir. Si esto está deshabilitado, se deberá ingresar el correo electrónico o nombre completo. ", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Mostrar el texto de exención de responsabilidad legal en la página de carga de ligas públicas. (Sólo se muestra cuando la lista de archivos está oculta.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Este texto se mostrará en la página de carga de la liga pública cuando la lista de archivos esté oculta. ", + "Default share permissions" : "Permisos predeterminados para compartir", + "Personal" : "Personal", + "Administration" : "Administración", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Desarrollado por la {communityopen}comunidad Nextcloud {linkclose}, el {githubopen}código fuente {linkclose} está licenciado bajo {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Da un Like a nuestra página de Facebook", + "Follow us on Twitter" : "Síguenos en Twitter", + "Check out our blog" : "Visita nuestro blog", + "Subscribe to our newsletter" : "Suscribete a nuestro boletín", + "Profile picture" : "Foto de perfil", + "Upload new" : "Cargar nuevo", + "Select from Files" : "Seleccionar desde Archivos", + "Remove image" : "Eliminar imagen", + "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", + "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", + "Cancel" : "Cancelar", + "Choose as profile picture" : "Seleccionar como foto del perfil", + "Details" : "Detalles", + "You are using <strong>%s</strong>" : "Estás usando<strong>%s</strong>", + "Full name" : "Nombre completo", + "No display name set" : "No se ha establecido el nombre a desplegar", + "Your email address" : "Tu dirección de correo electrónico", + "No email address set" : "No se ha establecido la dirección de correo electrónico", + "For password reset and notifications" : "Para restablecer contraseña y notificaciones", + "Phone number" : "Número de teléfono", + "Your phone number" : "Su número telefónico", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "Website" : "Sitio web", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Cuenta de twitter @...", + "Help translate" : "Ayuda a traducir", + "Current password" : "Contraseña actual", + "Change password" : "Cambiar contraseña", + "Store credentials" : "Almacenar credenciales", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php está registrado en un servicio webcron para llamar a cron.php cada 15 minutos a través de HTTP. ", + "Use system cron service to call the cron.php file every 15 minutes." : "Usar el servicio cron del sistema para llamar al archivo cron.php cada 15 minutos. " +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} \ No newline at end of file diff --git a/apps/settings/l10n/es_EC.js b/apps/settings/l10n/es_EC.js new file mode 100644 index 00000000000..93c7e4f0944 --- /dev/null +++ b/apps/settings/l10n/es_EC.js @@ -0,0 +1,264 @@ +OC.L10N.register( + "settings", + { + "{actor} changed your password" : "{actor} ha cambiado tu contraseña", + "You changed your password" : "Cambiaste tu contraseña", + "Your password was reset by an administrator" : "Tu contraseña ha sido restablecida por un adminsitrador", + "{actor} changed your email address" : "{actor} ha cambiado tu dirección de correo electrónico", + "You changed your email address" : "Cambiaste tu dirección de correo electrónico", + "Your email address was changed by an administrator" : "Tu dirección de correo electrónico ha sido cambiada por un administrador", + "Security" : "Seguridad", + "You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado", + "Couldn't remove app." : "No fue posible eliminar la aplicación. ", + "Couldn't update app." : "No fue posible actualizar la aplicación.", + "Wrong password" : "Contraseña incorrecta", + "Saved" : "Guardado", + "No user supplied" : "No se proporcionó usuario alguno", + "Unable to change password" : "No fue posible cambiar la contraseña", + "Authentication error" : "Error de autenticación", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Por favor proporciona una contraseña de recuperación de administrador; de lo contrario toda la información del usuario se perderá. ", + "Wrong admin recovery password. Please check the password and try again." : "Contraseña de recuperación de administrador incorrecta. Por favor verificala e inténtalo de nuevo.", + "Backend doesn't support password change, but the user's encryption key was updated." : "El backend no soporta el cambio de contraseñas, pero la llave de encripción del usuario fue actualizada.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Instalando y actualizando aplicaciones por la tienda de aplicaciones o Compartido la Nube Federada", + "Federated Cloud Sharing" : "Compartir en la Nube Federada", + "Invalid SMTP password." : "Constraseña SMTP inválida. ", + "Email setting test" : "Prueba de ajustes de correo", + "Well done, %s!" : "¡Bien hecho, %s!", + "If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ", + "Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)", + "You need to set your user email before being able to send test emails." : "Requieres establecer tu correo electrónico antes de poder enviar correos electrónicos de prueba. ", + "Invalid mail address" : "Dirección de correo inválida", + "Settings saved" : "Se han guardado las configuraciones ", + "Unable to change full name" : "No fue posible cambiar el nombre completo", + "Unable to change email address" : "No fue posible cambiar la dirección de correo electrónico", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Para poder verificar tu cuenta de Twitter, publica el siguiente tweet en Twitter (por favor asegúrarte de publicar sin ninguna línea en blanco):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Para poder verificar tu sitio Web, agrega el siguiente contendio a tu web-root en '.well-known/CloudIdVerificationCode.txt' (por favor asegurate de que el texto completo este en una sóla línea):", + "%1$s changed your password on %2$s." : "%1$s cambió tu contraseña el %2$s.", + "Your password on %s was changed." : "Tu contraseña de %s fue cambiada. ", + "Your password on %s was reset by an administrator." : "Tu contraseña de %s fue restablecida por un administrador.", + "Password for %1$s changed on %2$s" : "La contraseña de %1$s fue cambiada en %2$s", + "Password changed for %s" : "La contraseña fue cambiada para %s", + "If you did not request this, please contact an administrator." : "Si no lo solicitaste, por favor contacta a un administrador. ", + "Your email address on %s was changed." : "Tu dirección de correo electrónico en %s fue cambiada. ", + "Your email address on %s was changed by an administrator." : "Tu dirección de correo electrónico en %s fue cambiada por un adminsitrador. ", + "Email address for %1$s changed on %2$s" : "La dirección de correo electrónico de %1$s ha cambiado en %2$s", + "Email address changed for %s" : "La dirección de correo electrónico fue cambiada para %s", + "The new email address is %s" : "La nueva dirección de correo electrónico es %s", + "Your %s account was created" : "Tu cuenta %s ha sido creada", + "Welcome aboard" : "Bienvenido a bordo", + "Welcome aboard %s" : "Bienvenido a bordo %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Bienvenido a tu cuenta %s, puedes agregar, proteger y compartir tus datos.", + "Your username is: %s" : "Tu Usuario es: %s", + "Set your password" : "Establece tu contraseña", + "Go to %s" : "Ir a %s", + "Install Client" : "Instalar el cliente", + "Delete" : "Borrar", + "Unlimited" : "Ilimitado", + "Verifying …" : "Verificando ...", + "Verify" : "Verificar", + "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", + "Migration started …" : "La migración ha comenzado ...", + "Not saved" : "No guardado", + "Sending…" : "Enviando...", + "Email sent" : "Correo electrónico enviado", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Se presentó un error. Por favor carga un certificado PEM con codificación ASCII", + "Valid until {date}" : "Válido hasta {date}", + "Local" : "Local", + "Private" : "Privado", + "Only visible to local users" : "Visible sólo para usuarios locales", + "Only visible to you" : "Sólo visible para ti", + "Contacts" : "Contactos", + "Visible to local users and to trusted servers" : "Visible para usuarios locales y para servidores de confianza", + "Public" : "Público", + "Will be synced to a global and public address book" : "Será sincronizado a una libreta de direcciones global y pública", + "Very weak password" : "Contraseña muy débil", + "Weak password" : "Contraseña débil", + "So-so password" : "Contraseña aceptable", + "Good password" : "Buena contraseña", + "Strong password" : "Contraseña fuerte", + "Select a profile picture" : "Selecciona una imagen de perfil", + "Groups" : "Grupos", + "Limit to groups" : "Limitar a grupos", + "Allow filesystem access" : "Permitir acceso al sistema de archivos", + "Revoke" : "Revocar", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome para Android", + "Sync client - {os}" : "Sync client - {os}", + "This session" : "Esta sesión", + "Device" : "Dispositivo", + "Last activity" : "Última actividad", + "Devices & sessions" : "Dispositivos y sesiones", + "Web, desktop and mobile clients currently logged in to your account." : "Clientes web, de escritorio y móviles han iniciado sesión en tu cuenta. ", + "Error while creating device token" : "Se presentó un error al crear la ficha en el dispositivo", + "Error while deleting the token" : "Se presentó un error al borrar la ficha", + "App name" : "Nombre de la aplicación", + "Create new app password" : "Crear una nueva contraseña de aplicación", + "Use the credentials below to configure your app or device." : "Usa las siguientes credenciales para configurar tu aplicación o dispositivo. ", + "For security reasons this password will only be shown once." : "Por razones de seguridad esta contraseña sólo se mostrará una vez. ", + "Username" : "Usuario", + "Password" : "Contraseña", + "Done" : "Terminado", + "Copied!" : "¡Copiado!", + "Copy" : "Copiar", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Las aplicaciones oficiales son desarrolladas por y dentro de la comunidad. Ofrecen una funcionalidad centralizada y se encuentran listas para ser usadas en producción. ", + "Official" : "Oficial", + "Remove" : "Eliminar", + "Disable" : "Deshabilitar", + "All" : "Todos", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión mínima de Nextcloud asignada. Esto será un error en el futuro.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión máxima de Nextcloud asignada. Esto será un error en el futuro.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Esta aplicación no puede ser instalada porque las siguientes dependencias no están satisfechas:", + "View in store" : "Ver en la tienda", + "Visit website" : "Visita el sitio web", + "Report a bug" : "Reporta un detalle", + "User documentation" : "Documentación del usuario", + "Admin documentation" : "Documentación del administrador", + "Developer documentation" : "Documentación del desarrollador", + "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Enable all" : "Habilitar todo", + "Enable" : "Habilitar", + "The app will be downloaded from the app store" : "La aplicación será descargada de la tienda de aplicaciones <app store>", + "New password" : "Nueva contraseña", + "{size} used" : "{size} usado", + "Email" : "Correo electrónico", + "Group admin for" : "Administrador del grupo para", + "Quota" : "Cuota", + "Language" : "Idioma", + "Storage location" : "Úbicación del almacenamiento", + "User backend" : "Backend del usuario", + "Last login" : "Último inicio de sesión", + "Default quota" : "Cuota predeterminada", + "Your apps" : "Tus aplicaciones", + "Disabled apps" : "Aplicaciones deshabilitadas", + "Updates" : "Actualizaciones", + "App bundles" : "Paquetes de aplicación", + "Show last login" : "Mostrar último inicio de sesión", + "Show user backend" : "Mostrar backend del usuario", + "Admins" : "Administradores", + "Everyone" : "Todos", + "Add group" : "Agregar grupo", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "La aplicación ha sido habilitada pero necesita ser actualizada. Serás redireccionado a la página de actualización en 5 segundos. ", + "App update" : "Actualización de la aplicación", + "Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor", + "SSL Root Certificates" : "Certificado SSL Raíz", + "Common Name" : "Nombre común", + "Valid until" : "Válido hasta", + "Issued By" : "Levantado Por", + "Valid until %s" : "Válido hasta %s", + "Import root certificate" : "Importar certificado raíz", + "Administrator documentation" : "Documentación del adminsitrador", + "Forum" : "Foro", + "None" : "Ninguno", + "Login" : "Iniciar sesión", + "Plain" : "Plano", + "NT LAN Manager" : "Administrador de LAN NT", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Servidor de correo electrónico", + "Open documentation" : "Abrir documentación", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Es importante preparar este servidor para poder enviar correos electrónicos, como para restablecer contraseñas y notificaciones. ", + "Send mode" : "Modo de envío", + "Encryption" : "Encripción", + "From address" : "De la dirección", + "mail" : "correo", + "Authentication method" : "Método de autenticación", + "Authentication required" : "Autenticación requerida", + "Server address" : "Dirección del servidor", + "Port" : "Puerto", + "Credentials" : "Credenciales", + "SMTP Username" : "Usuario SMTP", + "SMTP Password" : "Contraseña SMTP", + "Test email settings" : "Probar las configuraciones de correo electrónico", + "Send email" : "Enviar correo electrónico", + "Security & setup warnings" : "Advertencias de seguridad y configuración", + "All checks passed." : "Pasaron todas las verificaciones. ", + "Version" : "Versión", + "Server-side encryption" : "Encripción del lado del servidor", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "La encripción del lado del servidor hace posible encriptar archivos que serán cargados a este servidor. Esto trae consigo algunas limitaciónes como penalizaciones en el desemeño, asi que habilítalo sólo si es necesario. ", + "Enable server-side encryption" : "Habilitar encripción del lado del servidor", + "Please read carefully before activating server-side encryption: " : "Por favor lee detenidamente antes de activar la encripción del lado de servidor:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Una vez que la encripción se encuentre habilitada, todos lo archivos cargados al servidor desde ese momento en tiempo, se encriptarán en el servidor. Sólo será posible deshabilitar la encripción en una fecha posterior si el modulo de encripción activo soporta esa funcionalidad y si todas las preciondiciones están satisfechas (ejem. establecer una llave de recuperación).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "La encripción por sí sola no garantiza la seguridad del sistema. Por favor consulta la documentación para mayores informes de cómo funciona la aplicación de encripción y de los casos de uso soportados. ", + "Be aware that encryption always increases the file size." : "Por favor considera que la encripción siempre aumenta el tamaño de los archivos. ", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Siempre es una buena idea generar respaldos de tus datos, en caso de tener encripción asegúrate de respaldar las llaves de encripción junto con tus datos. ", + "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", + "Enable encryption" : "Habilitar encripción", + "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", + "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Necesitas migrar tus llaves de encripción de la encripción anterior (ownCloud <= 8.0) a la actual. Por favor habilita el \"Módulo de encripción predeterminado\" y ejecuta el comando 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Necesitas migar tus llaves de encripción de la encripción anterior (ownCloud <=8.0) a la actual. ", + "Start migration" : "Iniciar migración", + "Background jobs" : "Trabajos en segundo plano", + "Last job ran %s." : "El último trabajo corrió %s.", + "Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ", + "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ", + "Execute one task with each page loaded" : "Ejecutar una tarea con cada página cargada", + "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ", + "Sharing" : "Compartiendo", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", + "Allow apps to use the Share API" : "Permitir que las aplicaciones usen el API para Compartir", + "Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas", + "Allow public uploads" : "Permitir cargas públicas", + "Always ask for a password" : "Siempre pedir una contraseña", + "Enforce password protection" : "Forzar protección de contraseñas", + "Set default expiration date" : "Establecer la fecha de expiración predeterminada", + "Expire after " : "Expirar después de", + "days" : "días", + "Enforce expiration date" : "Forzar fecha de expiración", + "Allow resharing" : "Permitir volver a compartir", + "Allow sharing with groups" : "Permitir compartir con grupos", + "Restrict users to only share with users in their groups" : "Limitar a los usuarios a sólo compartir con otros usuarios en sus grupos", + "Exclude groups from sharing" : "Evitar que los grupos compartan", + "These groups will still be able to receive shares, but not to initiate them." : "Estos grupos aún podrán recibir elementos compartidos, pero no los podrán iniciar.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Permitir el autocompletado de usuarios en la ventana de diálogo de compartir. Si esto está deshabilitado, se deberá ingresar el correo electrónico o nombre completo. ", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Mostrar el texto de exención de responsabilidad legal en la página de carga de ligas públicas. (Sólo se muestra cuando la lista de archivos está oculta.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Este texto se mostrará en la página de carga de la liga pública cuando la lista de archivos esté oculta. ", + "Default share permissions" : "Permisos predeterminados para compartir", + "Personal" : "Personal", + "Administration" : "Administración", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Desarrollado por la {communityopen}comunidad Nextcloud {linkclose}, el {githubopen}código fuente {linkclose} está licenciado bajo {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Da un Like a nuestra página de Facebook", + "Follow us on Twitter" : "Síguenos en Twitter", + "Check out our blog" : "Visita nuestro blog", + "Subscribe to our newsletter" : "Suscribete a nuestro boletín", + "Profile picture" : "Foto de perfil", + "Upload new" : "Cargar nuevo", + "Select from Files" : "Seleccionar desde Archivos", + "Remove image" : "Eliminar imagen", + "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", + "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", + "Cancel" : "Cancelar", + "Choose as profile picture" : "Seleccionar como foto del perfil", + "Details" : "Detalles", + "You are using <strong>%s</strong>" : "Estás usando<strong>%s</strong>", + "Full name" : "Nombre completo", + "No display name set" : "No se ha establecido el nombre a desplegar", + "Your email address" : "Tu dirección de correo electrónico", + "No email address set" : "No se ha establecido la dirección de correo electrónico", + "For password reset and notifications" : "Para restablecer contraseña y notificaciones", + "Phone number" : "Número de teléfono", + "Your phone number" : "Su número telefónico", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "Website" : "Sitio web", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Cuenta de twitter @...", + "Help translate" : "Ayuda a traducir", + "Current password" : "Contraseña actual", + "Change password" : "Cambiar contraseña", + "Store credentials" : "Almacenar credenciales", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php está registrado en un servicio webcron para llamar a cron.php cada 15 minutos a través de HTTP. ", + "Use system cron service to call the cron.php file every 15 minutes." : "Usar el servicio cron del sistema para llamar al archivo cron.php cada 15 minutos. " +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/es_EC.json b/apps/settings/l10n/es_EC.json new file mode 100644 index 00000000000..eda48a73a1c --- /dev/null +++ b/apps/settings/l10n/es_EC.json @@ -0,0 +1,262 @@ +{ "translations": { + "{actor} changed your password" : "{actor} ha cambiado tu contraseña", + "You changed your password" : "Cambiaste tu contraseña", + "Your password was reset by an administrator" : "Tu contraseña ha sido restablecida por un adminsitrador", + "{actor} changed your email address" : "{actor} ha cambiado tu dirección de correo electrónico", + "You changed your email address" : "Cambiaste tu dirección de correo electrónico", + "Your email address was changed by an administrator" : "Tu dirección de correo electrónico ha sido cambiada por un administrador", + "Security" : "Seguridad", + "You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado", + "Couldn't remove app." : "No fue posible eliminar la aplicación. ", + "Couldn't update app." : "No fue posible actualizar la aplicación.", + "Wrong password" : "Contraseña incorrecta", + "Saved" : "Guardado", + "No user supplied" : "No se proporcionó usuario alguno", + "Unable to change password" : "No fue posible cambiar la contraseña", + "Authentication error" : "Error de autenticación", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Por favor proporciona una contraseña de recuperación de administrador; de lo contrario toda la información del usuario se perderá. ", + "Wrong admin recovery password. Please check the password and try again." : "Contraseña de recuperación de administrador incorrecta. Por favor verificala e inténtalo de nuevo.", + "Backend doesn't support password change, but the user's encryption key was updated." : "El backend no soporta el cambio de contraseñas, pero la llave de encripción del usuario fue actualizada.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Instalando y actualizando aplicaciones por la tienda de aplicaciones o Compartido la Nube Federada", + "Federated Cloud Sharing" : "Compartir en la Nube Federada", + "Invalid SMTP password." : "Constraseña SMTP inválida. ", + "Email setting test" : "Prueba de ajustes de correo", + "Well done, %s!" : "¡Bien hecho, %s!", + "If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ", + "Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)", + "You need to set your user email before being able to send test emails." : "Requieres establecer tu correo electrónico antes de poder enviar correos electrónicos de prueba. ", + "Invalid mail address" : "Dirección de correo inválida", + "Settings saved" : "Se han guardado las configuraciones ", + "Unable to change full name" : "No fue posible cambiar el nombre completo", + "Unable to change email address" : "No fue posible cambiar la dirección de correo electrónico", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Para poder verificar tu cuenta de Twitter, publica el siguiente tweet en Twitter (por favor asegúrarte de publicar sin ninguna línea en blanco):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Para poder verificar tu sitio Web, agrega el siguiente contendio a tu web-root en '.well-known/CloudIdVerificationCode.txt' (por favor asegurate de que el texto completo este en una sóla línea):", + "%1$s changed your password on %2$s." : "%1$s cambió tu contraseña el %2$s.", + "Your password on %s was changed." : "Tu contraseña de %s fue cambiada. ", + "Your password on %s was reset by an administrator." : "Tu contraseña de %s fue restablecida por un administrador.", + "Password for %1$s changed on %2$s" : "La contraseña de %1$s fue cambiada en %2$s", + "Password changed for %s" : "La contraseña fue cambiada para %s", + "If you did not request this, please contact an administrator." : "Si no lo solicitaste, por favor contacta a un administrador. ", + "Your email address on %s was changed." : "Tu dirección de correo electrónico en %s fue cambiada. ", + "Your email address on %s was changed by an administrator." : "Tu dirección de correo electrónico en %s fue cambiada por un adminsitrador. ", + "Email address for %1$s changed on %2$s" : "La dirección de correo electrónico de %1$s ha cambiado en %2$s", + "Email address changed for %s" : "La dirección de correo electrónico fue cambiada para %s", + "The new email address is %s" : "La nueva dirección de correo electrónico es %s", + "Your %s account was created" : "Tu cuenta %s ha sido creada", + "Welcome aboard" : "Bienvenido a bordo", + "Welcome aboard %s" : "Bienvenido a bordo %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Bienvenido a tu cuenta %s, puedes agregar, proteger y compartir tus datos.", + "Your username is: %s" : "Tu Usuario es: %s", + "Set your password" : "Establece tu contraseña", + "Go to %s" : "Ir a %s", + "Install Client" : "Instalar el cliente", + "Delete" : "Borrar", + "Unlimited" : "Ilimitado", + "Verifying …" : "Verificando ...", + "Verify" : "Verificar", + "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", + "Migration started …" : "La migración ha comenzado ...", + "Not saved" : "No guardado", + "Sending…" : "Enviando...", + "Email sent" : "Correo electrónico enviado", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Se presentó un error. Por favor carga un certificado PEM con codificación ASCII", + "Valid until {date}" : "Válido hasta {date}", + "Local" : "Local", + "Private" : "Privado", + "Only visible to local users" : "Visible sólo para usuarios locales", + "Only visible to you" : "Sólo visible para ti", + "Contacts" : "Contactos", + "Visible to local users and to trusted servers" : "Visible para usuarios locales y para servidores de confianza", + "Public" : "Público", + "Will be synced to a global and public address book" : "Será sincronizado a una libreta de direcciones global y pública", + "Very weak password" : "Contraseña muy débil", + "Weak password" : "Contraseña débil", + "So-so password" : "Contraseña aceptable", + "Good password" : "Buena contraseña", + "Strong password" : "Contraseña fuerte", + "Select a profile picture" : "Selecciona una imagen de perfil", + "Groups" : "Grupos", + "Limit to groups" : "Limitar a grupos", + "Allow filesystem access" : "Permitir acceso al sistema de archivos", + "Revoke" : "Revocar", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome para Android", + "Sync client - {os}" : "Sync client - {os}", + "This session" : "Esta sesión", + "Device" : "Dispositivo", + "Last activity" : "Última actividad", + "Devices & sessions" : "Dispositivos y sesiones", + "Web, desktop and mobile clients currently logged in to your account." : "Clientes web, de escritorio y móviles han iniciado sesión en tu cuenta. ", + "Error while creating device token" : "Se presentó un error al crear la ficha en el dispositivo", + "Error while deleting the token" : "Se presentó un error al borrar la ficha", + "App name" : "Nombre de la aplicación", + "Create new app password" : "Crear una nueva contraseña de aplicación", + "Use the credentials below to configure your app or device." : "Usa las siguientes credenciales para configurar tu aplicación o dispositivo. ", + "For security reasons this password will only be shown once." : "Por razones de seguridad esta contraseña sólo se mostrará una vez. ", + "Username" : "Usuario", + "Password" : "Contraseña", + "Done" : "Terminado", + "Copied!" : "¡Copiado!", + "Copy" : "Copiar", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Las aplicaciones oficiales son desarrolladas por y dentro de la comunidad. Ofrecen una funcionalidad centralizada y se encuentran listas para ser usadas en producción. ", + "Official" : "Oficial", + "Remove" : "Eliminar", + "Disable" : "Deshabilitar", + "All" : "Todos", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión mínima de Nextcloud asignada. Esto será un error en el futuro.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión máxima de Nextcloud asignada. Esto será un error en el futuro.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Esta aplicación no puede ser instalada porque las siguientes dependencias no están satisfechas:", + "View in store" : "Ver en la tienda", + "Visit website" : "Visita el sitio web", + "Report a bug" : "Reporta un detalle", + "User documentation" : "Documentación del usuario", + "Admin documentation" : "Documentación del administrador", + "Developer documentation" : "Documentación del desarrollador", + "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Enable all" : "Habilitar todo", + "Enable" : "Habilitar", + "The app will be downloaded from the app store" : "La aplicación será descargada de la tienda de aplicaciones <app store>", + "New password" : "Nueva contraseña", + "{size} used" : "{size} usado", + "Email" : "Correo electrónico", + "Group admin for" : "Administrador del grupo para", + "Quota" : "Cuota", + "Language" : "Idioma", + "Storage location" : "Úbicación del almacenamiento", + "User backend" : "Backend del usuario", + "Last login" : "Último inicio de sesión", + "Default quota" : "Cuota predeterminada", + "Your apps" : "Tus aplicaciones", + "Disabled apps" : "Aplicaciones deshabilitadas", + "Updates" : "Actualizaciones", + "App bundles" : "Paquetes de aplicación", + "Show last login" : "Mostrar último inicio de sesión", + "Show user backend" : "Mostrar backend del usuario", + "Admins" : "Administradores", + "Everyone" : "Todos", + "Add group" : "Agregar grupo", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "La aplicación ha sido habilitada pero necesita ser actualizada. Serás redireccionado a la página de actualización en 5 segundos. ", + "App update" : "Actualización de la aplicación", + "Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor", + "SSL Root Certificates" : "Certificado SSL Raíz", + "Common Name" : "Nombre común", + "Valid until" : "Válido hasta", + "Issued By" : "Levantado Por", + "Valid until %s" : "Válido hasta %s", + "Import root certificate" : "Importar certificado raíz", + "Administrator documentation" : "Documentación del adminsitrador", + "Forum" : "Foro", + "None" : "Ninguno", + "Login" : "Iniciar sesión", + "Plain" : "Plano", + "NT LAN Manager" : "Administrador de LAN NT", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Servidor de correo electrónico", + "Open documentation" : "Abrir documentación", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Es importante preparar este servidor para poder enviar correos electrónicos, como para restablecer contraseñas y notificaciones. ", + "Send mode" : "Modo de envío", + "Encryption" : "Encripción", + "From address" : "De la dirección", + "mail" : "correo", + "Authentication method" : "Método de autenticación", + "Authentication required" : "Autenticación requerida", + "Server address" : "Dirección del servidor", + "Port" : "Puerto", + "Credentials" : "Credenciales", + "SMTP Username" : "Usuario SMTP", + "SMTP Password" : "Contraseña SMTP", + "Test email settings" : "Probar las configuraciones de correo electrónico", + "Send email" : "Enviar correo electrónico", + "Security & setup warnings" : "Advertencias de seguridad y configuración", + "All checks passed." : "Pasaron todas las verificaciones. ", + "Version" : "Versión", + "Server-side encryption" : "Encripción del lado del servidor", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "La encripción del lado del servidor hace posible encriptar archivos que serán cargados a este servidor. Esto trae consigo algunas limitaciónes como penalizaciones en el desemeño, asi que habilítalo sólo si es necesario. ", + "Enable server-side encryption" : "Habilitar encripción del lado del servidor", + "Please read carefully before activating server-side encryption: " : "Por favor lee detenidamente antes de activar la encripción del lado de servidor:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Una vez que la encripción se encuentre habilitada, todos lo archivos cargados al servidor desde ese momento en tiempo, se encriptarán en el servidor. Sólo será posible deshabilitar la encripción en una fecha posterior si el modulo de encripción activo soporta esa funcionalidad y si todas las preciondiciones están satisfechas (ejem. establecer una llave de recuperación).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "La encripción por sí sola no garantiza la seguridad del sistema. Por favor consulta la documentación para mayores informes de cómo funciona la aplicación de encripción y de los casos de uso soportados. ", + "Be aware that encryption always increases the file size." : "Por favor considera que la encripción siempre aumenta el tamaño de los archivos. ", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Siempre es una buena idea generar respaldos de tus datos, en caso de tener encripción asegúrate de respaldar las llaves de encripción junto con tus datos. ", + "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", + "Enable encryption" : "Habilitar encripción", + "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", + "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Necesitas migrar tus llaves de encripción de la encripción anterior (ownCloud <= 8.0) a la actual. Por favor habilita el \"Módulo de encripción predeterminado\" y ejecuta el comando 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Necesitas migar tus llaves de encripción de la encripción anterior (ownCloud <=8.0) a la actual. ", + "Start migration" : "Iniciar migración", + "Background jobs" : "Trabajos en segundo plano", + "Last job ran %s." : "El último trabajo corrió %s.", + "Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ", + "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ", + "Execute one task with each page loaded" : "Ejecutar una tarea con cada página cargada", + "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ", + "Sharing" : "Compartiendo", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", + "Allow apps to use the Share API" : "Permitir que las aplicaciones usen el API para Compartir", + "Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas", + "Allow public uploads" : "Permitir cargas públicas", + "Always ask for a password" : "Siempre pedir una contraseña", + "Enforce password protection" : "Forzar protección de contraseñas", + "Set default expiration date" : "Establecer la fecha de expiración predeterminada", + "Expire after " : "Expirar después de", + "days" : "días", + "Enforce expiration date" : "Forzar fecha de expiración", + "Allow resharing" : "Permitir volver a compartir", + "Allow sharing with groups" : "Permitir compartir con grupos", + "Restrict users to only share with users in their groups" : "Limitar a los usuarios a sólo compartir con otros usuarios en sus grupos", + "Exclude groups from sharing" : "Evitar que los grupos compartan", + "These groups will still be able to receive shares, but not to initiate them." : "Estos grupos aún podrán recibir elementos compartidos, pero no los podrán iniciar.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Permitir el autocompletado de usuarios en la ventana de diálogo de compartir. Si esto está deshabilitado, se deberá ingresar el correo electrónico o nombre completo. ", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Mostrar el texto de exención de responsabilidad legal en la página de carga de ligas públicas. (Sólo se muestra cuando la lista de archivos está oculta.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Este texto se mostrará en la página de carga de la liga pública cuando la lista de archivos esté oculta. ", + "Default share permissions" : "Permisos predeterminados para compartir", + "Personal" : "Personal", + "Administration" : "Administración", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Desarrollado por la {communityopen}comunidad Nextcloud {linkclose}, el {githubopen}código fuente {linkclose} está licenciado bajo {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Da un Like a nuestra página de Facebook", + "Follow us on Twitter" : "Síguenos en Twitter", + "Check out our blog" : "Visita nuestro blog", + "Subscribe to our newsletter" : "Suscribete a nuestro boletín", + "Profile picture" : "Foto de perfil", + "Upload new" : "Cargar nuevo", + "Select from Files" : "Seleccionar desde Archivos", + "Remove image" : "Eliminar imagen", + "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", + "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", + "Cancel" : "Cancelar", + "Choose as profile picture" : "Seleccionar como foto del perfil", + "Details" : "Detalles", + "You are using <strong>%s</strong>" : "Estás usando<strong>%s</strong>", + "Full name" : "Nombre completo", + "No display name set" : "No se ha establecido el nombre a desplegar", + "Your email address" : "Tu dirección de correo electrónico", + "No email address set" : "No se ha establecido la dirección de correo electrónico", + "For password reset and notifications" : "Para restablecer contraseña y notificaciones", + "Phone number" : "Número de teléfono", + "Your phone number" : "Su número telefónico", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "Website" : "Sitio web", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Cuenta de twitter @...", + "Help translate" : "Ayuda a traducir", + "Current password" : "Contraseña actual", + "Change password" : "Cambiar contraseña", + "Store credentials" : "Almacenar credenciales", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php está registrado en un servicio webcron para llamar a cron.php cada 15 minutos a través de HTTP. ", + "Use system cron service to call the cron.php file every 15 minutes." : "Usar el servicio cron del sistema para llamar al archivo cron.php cada 15 minutos. " +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} \ No newline at end of file diff --git a/apps/settings/l10n/es_GT.js b/apps/settings/l10n/es_GT.js new file mode 100644 index 00000000000..93c7e4f0944 --- /dev/null +++ b/apps/settings/l10n/es_GT.js @@ -0,0 +1,264 @@ +OC.L10N.register( + "settings", + { + "{actor} changed your password" : "{actor} ha cambiado tu contraseña", + "You changed your password" : "Cambiaste tu contraseña", + "Your password was reset by an administrator" : "Tu contraseña ha sido restablecida por un adminsitrador", + "{actor} changed your email address" : "{actor} ha cambiado tu dirección de correo electrónico", + "You changed your email address" : "Cambiaste tu dirección de correo electrónico", + "Your email address was changed by an administrator" : "Tu dirección de correo electrónico ha sido cambiada por un administrador", + "Security" : "Seguridad", + "You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado", + "Couldn't remove app." : "No fue posible eliminar la aplicación. ", + "Couldn't update app." : "No fue posible actualizar la aplicación.", + "Wrong password" : "Contraseña incorrecta", + "Saved" : "Guardado", + "No user supplied" : "No se proporcionó usuario alguno", + "Unable to change password" : "No fue posible cambiar la contraseña", + "Authentication error" : "Error de autenticación", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Por favor proporciona una contraseña de recuperación de administrador; de lo contrario toda la información del usuario se perderá. ", + "Wrong admin recovery password. Please check the password and try again." : "Contraseña de recuperación de administrador incorrecta. Por favor verificala e inténtalo de nuevo.", + "Backend doesn't support password change, but the user's encryption key was updated." : "El backend no soporta el cambio de contraseñas, pero la llave de encripción del usuario fue actualizada.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Instalando y actualizando aplicaciones por la tienda de aplicaciones o Compartido la Nube Federada", + "Federated Cloud Sharing" : "Compartir en la Nube Federada", + "Invalid SMTP password." : "Constraseña SMTP inválida. ", + "Email setting test" : "Prueba de ajustes de correo", + "Well done, %s!" : "¡Bien hecho, %s!", + "If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ", + "Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)", + "You need to set your user email before being able to send test emails." : "Requieres establecer tu correo electrónico antes de poder enviar correos electrónicos de prueba. ", + "Invalid mail address" : "Dirección de correo inválida", + "Settings saved" : "Se han guardado las configuraciones ", + "Unable to change full name" : "No fue posible cambiar el nombre completo", + "Unable to change email address" : "No fue posible cambiar la dirección de correo electrónico", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Para poder verificar tu cuenta de Twitter, publica el siguiente tweet en Twitter (por favor asegúrarte de publicar sin ninguna línea en blanco):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Para poder verificar tu sitio Web, agrega el siguiente contendio a tu web-root en '.well-known/CloudIdVerificationCode.txt' (por favor asegurate de que el texto completo este en una sóla línea):", + "%1$s changed your password on %2$s." : "%1$s cambió tu contraseña el %2$s.", + "Your password on %s was changed." : "Tu contraseña de %s fue cambiada. ", + "Your password on %s was reset by an administrator." : "Tu contraseña de %s fue restablecida por un administrador.", + "Password for %1$s changed on %2$s" : "La contraseña de %1$s fue cambiada en %2$s", + "Password changed for %s" : "La contraseña fue cambiada para %s", + "If you did not request this, please contact an administrator." : "Si no lo solicitaste, por favor contacta a un administrador. ", + "Your email address on %s was changed." : "Tu dirección de correo electrónico en %s fue cambiada. ", + "Your email address on %s was changed by an administrator." : "Tu dirección de correo electrónico en %s fue cambiada por un adminsitrador. ", + "Email address for %1$s changed on %2$s" : "La dirección de correo electrónico de %1$s ha cambiado en %2$s", + "Email address changed for %s" : "La dirección de correo electrónico fue cambiada para %s", + "The new email address is %s" : "La nueva dirección de correo electrónico es %s", + "Your %s account was created" : "Tu cuenta %s ha sido creada", + "Welcome aboard" : "Bienvenido a bordo", + "Welcome aboard %s" : "Bienvenido a bordo %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Bienvenido a tu cuenta %s, puedes agregar, proteger y compartir tus datos.", + "Your username is: %s" : "Tu Usuario es: %s", + "Set your password" : "Establece tu contraseña", + "Go to %s" : "Ir a %s", + "Install Client" : "Instalar el cliente", + "Delete" : "Borrar", + "Unlimited" : "Ilimitado", + "Verifying …" : "Verificando ...", + "Verify" : "Verificar", + "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", + "Migration started …" : "La migración ha comenzado ...", + "Not saved" : "No guardado", + "Sending…" : "Enviando...", + "Email sent" : "Correo electrónico enviado", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Se presentó un error. Por favor carga un certificado PEM con codificación ASCII", + "Valid until {date}" : "Válido hasta {date}", + "Local" : "Local", + "Private" : "Privado", + "Only visible to local users" : "Visible sólo para usuarios locales", + "Only visible to you" : "Sólo visible para ti", + "Contacts" : "Contactos", + "Visible to local users and to trusted servers" : "Visible para usuarios locales y para servidores de confianza", + "Public" : "Público", + "Will be synced to a global and public address book" : "Será sincronizado a una libreta de direcciones global y pública", + "Very weak password" : "Contraseña muy débil", + "Weak password" : "Contraseña débil", + "So-so password" : "Contraseña aceptable", + "Good password" : "Buena contraseña", + "Strong password" : "Contraseña fuerte", + "Select a profile picture" : "Selecciona una imagen de perfil", + "Groups" : "Grupos", + "Limit to groups" : "Limitar a grupos", + "Allow filesystem access" : "Permitir acceso al sistema de archivos", + "Revoke" : "Revocar", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome para Android", + "Sync client - {os}" : "Sync client - {os}", + "This session" : "Esta sesión", + "Device" : "Dispositivo", + "Last activity" : "Última actividad", + "Devices & sessions" : "Dispositivos y sesiones", + "Web, desktop and mobile clients currently logged in to your account." : "Clientes web, de escritorio y móviles han iniciado sesión en tu cuenta. ", + "Error while creating device token" : "Se presentó un error al crear la ficha en el dispositivo", + "Error while deleting the token" : "Se presentó un error al borrar la ficha", + "App name" : "Nombre de la aplicación", + "Create new app password" : "Crear una nueva contraseña de aplicación", + "Use the credentials below to configure your app or device." : "Usa las siguientes credenciales para configurar tu aplicación o dispositivo. ", + "For security reasons this password will only be shown once." : "Por razones de seguridad esta contraseña sólo se mostrará una vez. ", + "Username" : "Usuario", + "Password" : "Contraseña", + "Done" : "Terminado", + "Copied!" : "¡Copiado!", + "Copy" : "Copiar", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Las aplicaciones oficiales son desarrolladas por y dentro de la comunidad. Ofrecen una funcionalidad centralizada y se encuentran listas para ser usadas en producción. ", + "Official" : "Oficial", + "Remove" : "Eliminar", + "Disable" : "Deshabilitar", + "All" : "Todos", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión mínima de Nextcloud asignada. Esto será un error en el futuro.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión máxima de Nextcloud asignada. Esto será un error en el futuro.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Esta aplicación no puede ser instalada porque las siguientes dependencias no están satisfechas:", + "View in store" : "Ver en la tienda", + "Visit website" : "Visita el sitio web", + "Report a bug" : "Reporta un detalle", + "User documentation" : "Documentación del usuario", + "Admin documentation" : "Documentación del administrador", + "Developer documentation" : "Documentación del desarrollador", + "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Enable all" : "Habilitar todo", + "Enable" : "Habilitar", + "The app will be downloaded from the app store" : "La aplicación será descargada de la tienda de aplicaciones <app store>", + "New password" : "Nueva contraseña", + "{size} used" : "{size} usado", + "Email" : "Correo electrónico", + "Group admin for" : "Administrador del grupo para", + "Quota" : "Cuota", + "Language" : "Idioma", + "Storage location" : "Úbicación del almacenamiento", + "User backend" : "Backend del usuario", + "Last login" : "Último inicio de sesión", + "Default quota" : "Cuota predeterminada", + "Your apps" : "Tus aplicaciones", + "Disabled apps" : "Aplicaciones deshabilitadas", + "Updates" : "Actualizaciones", + "App bundles" : "Paquetes de aplicación", + "Show last login" : "Mostrar último inicio de sesión", + "Show user backend" : "Mostrar backend del usuario", + "Admins" : "Administradores", + "Everyone" : "Todos", + "Add group" : "Agregar grupo", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "La aplicación ha sido habilitada pero necesita ser actualizada. Serás redireccionado a la página de actualización en 5 segundos. ", + "App update" : "Actualización de la aplicación", + "Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor", + "SSL Root Certificates" : "Certificado SSL Raíz", + "Common Name" : "Nombre común", + "Valid until" : "Válido hasta", + "Issued By" : "Levantado Por", + "Valid until %s" : "Válido hasta %s", + "Import root certificate" : "Importar certificado raíz", + "Administrator documentation" : "Documentación del adminsitrador", + "Forum" : "Foro", + "None" : "Ninguno", + "Login" : "Iniciar sesión", + "Plain" : "Plano", + "NT LAN Manager" : "Administrador de LAN NT", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Servidor de correo electrónico", + "Open documentation" : "Abrir documentación", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Es importante preparar este servidor para poder enviar correos electrónicos, como para restablecer contraseñas y notificaciones. ", + "Send mode" : "Modo de envío", + "Encryption" : "Encripción", + "From address" : "De la dirección", + "mail" : "correo", + "Authentication method" : "Método de autenticación", + "Authentication required" : "Autenticación requerida", + "Server address" : "Dirección del servidor", + "Port" : "Puerto", + "Credentials" : "Credenciales", + "SMTP Username" : "Usuario SMTP", + "SMTP Password" : "Contraseña SMTP", + "Test email settings" : "Probar las configuraciones de correo electrónico", + "Send email" : "Enviar correo electrónico", + "Security & setup warnings" : "Advertencias de seguridad y configuración", + "All checks passed." : "Pasaron todas las verificaciones. ", + "Version" : "Versión", + "Server-side encryption" : "Encripción del lado del servidor", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "La encripción del lado del servidor hace posible encriptar archivos que serán cargados a este servidor. Esto trae consigo algunas limitaciónes como penalizaciones en el desemeño, asi que habilítalo sólo si es necesario. ", + "Enable server-side encryption" : "Habilitar encripción del lado del servidor", + "Please read carefully before activating server-side encryption: " : "Por favor lee detenidamente antes de activar la encripción del lado de servidor:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Una vez que la encripción se encuentre habilitada, todos lo archivos cargados al servidor desde ese momento en tiempo, se encriptarán en el servidor. Sólo será posible deshabilitar la encripción en una fecha posterior si el modulo de encripción activo soporta esa funcionalidad y si todas las preciondiciones están satisfechas (ejem. establecer una llave de recuperación).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "La encripción por sí sola no garantiza la seguridad del sistema. Por favor consulta la documentación para mayores informes de cómo funciona la aplicación de encripción y de los casos de uso soportados. ", + "Be aware that encryption always increases the file size." : "Por favor considera que la encripción siempre aumenta el tamaño de los archivos. ", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Siempre es una buena idea generar respaldos de tus datos, en caso de tener encripción asegúrate de respaldar las llaves de encripción junto con tus datos. ", + "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", + "Enable encryption" : "Habilitar encripción", + "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", + "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Necesitas migrar tus llaves de encripción de la encripción anterior (ownCloud <= 8.0) a la actual. Por favor habilita el \"Módulo de encripción predeterminado\" y ejecuta el comando 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Necesitas migar tus llaves de encripción de la encripción anterior (ownCloud <=8.0) a la actual. ", + "Start migration" : "Iniciar migración", + "Background jobs" : "Trabajos en segundo plano", + "Last job ran %s." : "El último trabajo corrió %s.", + "Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ", + "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ", + "Execute one task with each page loaded" : "Ejecutar una tarea con cada página cargada", + "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ", + "Sharing" : "Compartiendo", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", + "Allow apps to use the Share API" : "Permitir que las aplicaciones usen el API para Compartir", + "Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas", + "Allow public uploads" : "Permitir cargas públicas", + "Always ask for a password" : "Siempre pedir una contraseña", + "Enforce password protection" : "Forzar protección de contraseñas", + "Set default expiration date" : "Establecer la fecha de expiración predeterminada", + "Expire after " : "Expirar después de", + "days" : "días", + "Enforce expiration date" : "Forzar fecha de expiración", + "Allow resharing" : "Permitir volver a compartir", + "Allow sharing with groups" : "Permitir compartir con grupos", + "Restrict users to only share with users in their groups" : "Limitar a los usuarios a sólo compartir con otros usuarios en sus grupos", + "Exclude groups from sharing" : "Evitar que los grupos compartan", + "These groups will still be able to receive shares, but not to initiate them." : "Estos grupos aún podrán recibir elementos compartidos, pero no los podrán iniciar.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Permitir el autocompletado de usuarios en la ventana de diálogo de compartir. Si esto está deshabilitado, se deberá ingresar el correo electrónico o nombre completo. ", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Mostrar el texto de exención de responsabilidad legal en la página de carga de ligas públicas. (Sólo se muestra cuando la lista de archivos está oculta.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Este texto se mostrará en la página de carga de la liga pública cuando la lista de archivos esté oculta. ", + "Default share permissions" : "Permisos predeterminados para compartir", + "Personal" : "Personal", + "Administration" : "Administración", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Desarrollado por la {communityopen}comunidad Nextcloud {linkclose}, el {githubopen}código fuente {linkclose} está licenciado bajo {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Da un Like a nuestra página de Facebook", + "Follow us on Twitter" : "Síguenos en Twitter", + "Check out our blog" : "Visita nuestro blog", + "Subscribe to our newsletter" : "Suscribete a nuestro boletín", + "Profile picture" : "Foto de perfil", + "Upload new" : "Cargar nuevo", + "Select from Files" : "Seleccionar desde Archivos", + "Remove image" : "Eliminar imagen", + "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", + "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", + "Cancel" : "Cancelar", + "Choose as profile picture" : "Seleccionar como foto del perfil", + "Details" : "Detalles", + "You are using <strong>%s</strong>" : "Estás usando<strong>%s</strong>", + "Full name" : "Nombre completo", + "No display name set" : "No se ha establecido el nombre a desplegar", + "Your email address" : "Tu dirección de correo electrónico", + "No email address set" : "No se ha establecido la dirección de correo electrónico", + "For password reset and notifications" : "Para restablecer contraseña y notificaciones", + "Phone number" : "Número de teléfono", + "Your phone number" : "Su número telefónico", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "Website" : "Sitio web", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Cuenta de twitter @...", + "Help translate" : "Ayuda a traducir", + "Current password" : "Contraseña actual", + "Change password" : "Cambiar contraseña", + "Store credentials" : "Almacenar credenciales", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php está registrado en un servicio webcron para llamar a cron.php cada 15 minutos a través de HTTP. ", + "Use system cron service to call the cron.php file every 15 minutes." : "Usar el servicio cron del sistema para llamar al archivo cron.php cada 15 minutos. " +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/es_GT.json b/apps/settings/l10n/es_GT.json new file mode 100644 index 00000000000..eda48a73a1c --- /dev/null +++ b/apps/settings/l10n/es_GT.json @@ -0,0 +1,262 @@ +{ "translations": { + "{actor} changed your password" : "{actor} ha cambiado tu contraseña", + "You changed your password" : "Cambiaste tu contraseña", + "Your password was reset by an administrator" : "Tu contraseña ha sido restablecida por un adminsitrador", + "{actor} changed your email address" : "{actor} ha cambiado tu dirección de correo electrónico", + "You changed your email address" : "Cambiaste tu dirección de correo electrónico", + "Your email address was changed by an administrator" : "Tu dirección de correo electrónico ha sido cambiada por un administrador", + "Security" : "Seguridad", + "You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado", + "Couldn't remove app." : "No fue posible eliminar la aplicación. ", + "Couldn't update app." : "No fue posible actualizar la aplicación.", + "Wrong password" : "Contraseña incorrecta", + "Saved" : "Guardado", + "No user supplied" : "No se proporcionó usuario alguno", + "Unable to change password" : "No fue posible cambiar la contraseña", + "Authentication error" : "Error de autenticación", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Por favor proporciona una contraseña de recuperación de administrador; de lo contrario toda la información del usuario se perderá. ", + "Wrong admin recovery password. Please check the password and try again." : "Contraseña de recuperación de administrador incorrecta. Por favor verificala e inténtalo de nuevo.", + "Backend doesn't support password change, but the user's encryption key was updated." : "El backend no soporta el cambio de contraseñas, pero la llave de encripción del usuario fue actualizada.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Instalando y actualizando aplicaciones por la tienda de aplicaciones o Compartido la Nube Federada", + "Federated Cloud Sharing" : "Compartir en la Nube Federada", + "Invalid SMTP password." : "Constraseña SMTP inválida. ", + "Email setting test" : "Prueba de ajustes de correo", + "Well done, %s!" : "¡Bien hecho, %s!", + "If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ", + "Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)", + "You need to set your user email before being able to send test emails." : "Requieres establecer tu correo electrónico antes de poder enviar correos electrónicos de prueba. ", + "Invalid mail address" : "Dirección de correo inválida", + "Settings saved" : "Se han guardado las configuraciones ", + "Unable to change full name" : "No fue posible cambiar el nombre completo", + "Unable to change email address" : "No fue posible cambiar la dirección de correo electrónico", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Para poder verificar tu cuenta de Twitter, publica el siguiente tweet en Twitter (por favor asegúrarte de publicar sin ninguna línea en blanco):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Para poder verificar tu sitio Web, agrega el siguiente contendio a tu web-root en '.well-known/CloudIdVerificationCode.txt' (por favor asegurate de que el texto completo este en una sóla línea):", + "%1$s changed your password on %2$s." : "%1$s cambió tu contraseña el %2$s.", + "Your password on %s was changed." : "Tu contraseña de %s fue cambiada. ", + "Your password on %s was reset by an administrator." : "Tu contraseña de %s fue restablecida por un administrador.", + "Password for %1$s changed on %2$s" : "La contraseña de %1$s fue cambiada en %2$s", + "Password changed for %s" : "La contraseña fue cambiada para %s", + "If you did not request this, please contact an administrator." : "Si no lo solicitaste, por favor contacta a un administrador. ", + "Your email address on %s was changed." : "Tu dirección de correo electrónico en %s fue cambiada. ", + "Your email address on %s was changed by an administrator." : "Tu dirección de correo electrónico en %s fue cambiada por un adminsitrador. ", + "Email address for %1$s changed on %2$s" : "La dirección de correo electrónico de %1$s ha cambiado en %2$s", + "Email address changed for %s" : "La dirección de correo electrónico fue cambiada para %s", + "The new email address is %s" : "La nueva dirección de correo electrónico es %s", + "Your %s account was created" : "Tu cuenta %s ha sido creada", + "Welcome aboard" : "Bienvenido a bordo", + "Welcome aboard %s" : "Bienvenido a bordo %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Bienvenido a tu cuenta %s, puedes agregar, proteger y compartir tus datos.", + "Your username is: %s" : "Tu Usuario es: %s", + "Set your password" : "Establece tu contraseña", + "Go to %s" : "Ir a %s", + "Install Client" : "Instalar el cliente", + "Delete" : "Borrar", + "Unlimited" : "Ilimitado", + "Verifying …" : "Verificando ...", + "Verify" : "Verificar", + "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", + "Migration started …" : "La migración ha comenzado ...", + "Not saved" : "No guardado", + "Sending…" : "Enviando...", + "Email sent" : "Correo electrónico enviado", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Se presentó un error. Por favor carga un certificado PEM con codificación ASCII", + "Valid until {date}" : "Válido hasta {date}", + "Local" : "Local", + "Private" : "Privado", + "Only visible to local users" : "Visible sólo para usuarios locales", + "Only visible to you" : "Sólo visible para ti", + "Contacts" : "Contactos", + "Visible to local users and to trusted servers" : "Visible para usuarios locales y para servidores de confianza", + "Public" : "Público", + "Will be synced to a global and public address book" : "Será sincronizado a una libreta de direcciones global y pública", + "Very weak password" : "Contraseña muy débil", + "Weak password" : "Contraseña débil", + "So-so password" : "Contraseña aceptable", + "Good password" : "Buena contraseña", + "Strong password" : "Contraseña fuerte", + "Select a profile picture" : "Selecciona una imagen de perfil", + "Groups" : "Grupos", + "Limit to groups" : "Limitar a grupos", + "Allow filesystem access" : "Permitir acceso al sistema de archivos", + "Revoke" : "Revocar", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome para Android", + "Sync client - {os}" : "Sync client - {os}", + "This session" : "Esta sesión", + "Device" : "Dispositivo", + "Last activity" : "Última actividad", + "Devices & sessions" : "Dispositivos y sesiones", + "Web, desktop and mobile clients currently logged in to your account." : "Clientes web, de escritorio y móviles han iniciado sesión en tu cuenta. ", + "Error while creating device token" : "Se presentó un error al crear la ficha en el dispositivo", + "Error while deleting the token" : "Se presentó un error al borrar la ficha", + "App name" : "Nombre de la aplicación", + "Create new app password" : "Crear una nueva contraseña de aplicación", + "Use the credentials below to configure your app or device." : "Usa las siguientes credenciales para configurar tu aplicación o dispositivo. ", + "For security reasons this password will only be shown once." : "Por razones de seguridad esta contraseña sólo se mostrará una vez. ", + "Username" : "Usuario", + "Password" : "Contraseña", + "Done" : "Terminado", + "Copied!" : "¡Copiado!", + "Copy" : "Copiar", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Las aplicaciones oficiales son desarrolladas por y dentro de la comunidad. Ofrecen una funcionalidad centralizada y se encuentran listas para ser usadas en producción. ", + "Official" : "Oficial", + "Remove" : "Eliminar", + "Disable" : "Deshabilitar", + "All" : "Todos", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión mínima de Nextcloud asignada. Esto será un error en el futuro.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión máxima de Nextcloud asignada. Esto será un error en el futuro.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Esta aplicación no puede ser instalada porque las siguientes dependencias no están satisfechas:", + "View in store" : "Ver en la tienda", + "Visit website" : "Visita el sitio web", + "Report a bug" : "Reporta un detalle", + "User documentation" : "Documentación del usuario", + "Admin documentation" : "Documentación del administrador", + "Developer documentation" : "Documentación del desarrollador", + "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Enable all" : "Habilitar todo", + "Enable" : "Habilitar", + "The app will be downloaded from the app store" : "La aplicación será descargada de la tienda de aplicaciones <app store>", + "New password" : "Nueva contraseña", + "{size} used" : "{size} usado", + "Email" : "Correo electrónico", + "Group admin for" : "Administrador del grupo para", + "Quota" : "Cuota", + "Language" : "Idioma", + "Storage location" : "Úbicación del almacenamiento", + "User backend" : "Backend del usuario", + "Last login" : "Último inicio de sesión", + "Default quota" : "Cuota predeterminada", + "Your apps" : "Tus aplicaciones", + "Disabled apps" : "Aplicaciones deshabilitadas", + "Updates" : "Actualizaciones", + "App bundles" : "Paquetes de aplicación", + "Show last login" : "Mostrar último inicio de sesión", + "Show user backend" : "Mostrar backend del usuario", + "Admins" : "Administradores", + "Everyone" : "Todos", + "Add group" : "Agregar grupo", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "La aplicación ha sido habilitada pero necesita ser actualizada. Serás redireccionado a la página de actualización en 5 segundos. ", + "App update" : "Actualización de la aplicación", + "Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor", + "SSL Root Certificates" : "Certificado SSL Raíz", + "Common Name" : "Nombre común", + "Valid until" : "Válido hasta", + "Issued By" : "Levantado Por", + "Valid until %s" : "Válido hasta %s", + "Import root certificate" : "Importar certificado raíz", + "Administrator documentation" : "Documentación del adminsitrador", + "Forum" : "Foro", + "None" : "Ninguno", + "Login" : "Iniciar sesión", + "Plain" : "Plano", + "NT LAN Manager" : "Administrador de LAN NT", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Servidor de correo electrónico", + "Open documentation" : "Abrir documentación", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Es importante preparar este servidor para poder enviar correos electrónicos, como para restablecer contraseñas y notificaciones. ", + "Send mode" : "Modo de envío", + "Encryption" : "Encripción", + "From address" : "De la dirección", + "mail" : "correo", + "Authentication method" : "Método de autenticación", + "Authentication required" : "Autenticación requerida", + "Server address" : "Dirección del servidor", + "Port" : "Puerto", + "Credentials" : "Credenciales", + "SMTP Username" : "Usuario SMTP", + "SMTP Password" : "Contraseña SMTP", + "Test email settings" : "Probar las configuraciones de correo electrónico", + "Send email" : "Enviar correo electrónico", + "Security & setup warnings" : "Advertencias de seguridad y configuración", + "All checks passed." : "Pasaron todas las verificaciones. ", + "Version" : "Versión", + "Server-side encryption" : "Encripción del lado del servidor", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "La encripción del lado del servidor hace posible encriptar archivos que serán cargados a este servidor. Esto trae consigo algunas limitaciónes como penalizaciones en el desemeño, asi que habilítalo sólo si es necesario. ", + "Enable server-side encryption" : "Habilitar encripción del lado del servidor", + "Please read carefully before activating server-side encryption: " : "Por favor lee detenidamente antes de activar la encripción del lado de servidor:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Una vez que la encripción se encuentre habilitada, todos lo archivos cargados al servidor desde ese momento en tiempo, se encriptarán en el servidor. Sólo será posible deshabilitar la encripción en una fecha posterior si el modulo de encripción activo soporta esa funcionalidad y si todas las preciondiciones están satisfechas (ejem. establecer una llave de recuperación).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "La encripción por sí sola no garantiza la seguridad del sistema. Por favor consulta la documentación para mayores informes de cómo funciona la aplicación de encripción y de los casos de uso soportados. ", + "Be aware that encryption always increases the file size." : "Por favor considera que la encripción siempre aumenta el tamaño de los archivos. ", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Siempre es una buena idea generar respaldos de tus datos, en caso de tener encripción asegúrate de respaldar las llaves de encripción junto con tus datos. ", + "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", + "Enable encryption" : "Habilitar encripción", + "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", + "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Necesitas migrar tus llaves de encripción de la encripción anterior (ownCloud <= 8.0) a la actual. Por favor habilita el \"Módulo de encripción predeterminado\" y ejecuta el comando 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Necesitas migar tus llaves de encripción de la encripción anterior (ownCloud <=8.0) a la actual. ", + "Start migration" : "Iniciar migración", + "Background jobs" : "Trabajos en segundo plano", + "Last job ran %s." : "El último trabajo corrió %s.", + "Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ", + "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ", + "Execute one task with each page loaded" : "Ejecutar una tarea con cada página cargada", + "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ", + "Sharing" : "Compartiendo", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", + "Allow apps to use the Share API" : "Permitir que las aplicaciones usen el API para Compartir", + "Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas", + "Allow public uploads" : "Permitir cargas públicas", + "Always ask for a password" : "Siempre pedir una contraseña", + "Enforce password protection" : "Forzar protección de contraseñas", + "Set default expiration date" : "Establecer la fecha de expiración predeterminada", + "Expire after " : "Expirar después de", + "days" : "días", + "Enforce expiration date" : "Forzar fecha de expiración", + "Allow resharing" : "Permitir volver a compartir", + "Allow sharing with groups" : "Permitir compartir con grupos", + "Restrict users to only share with users in their groups" : "Limitar a los usuarios a sólo compartir con otros usuarios en sus grupos", + "Exclude groups from sharing" : "Evitar que los grupos compartan", + "These groups will still be able to receive shares, but not to initiate them." : "Estos grupos aún podrán recibir elementos compartidos, pero no los podrán iniciar.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Permitir el autocompletado de usuarios en la ventana de diálogo de compartir. Si esto está deshabilitado, se deberá ingresar el correo electrónico o nombre completo. ", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Mostrar el texto de exención de responsabilidad legal en la página de carga de ligas públicas. (Sólo se muestra cuando la lista de archivos está oculta.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Este texto se mostrará en la página de carga de la liga pública cuando la lista de archivos esté oculta. ", + "Default share permissions" : "Permisos predeterminados para compartir", + "Personal" : "Personal", + "Administration" : "Administración", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Desarrollado por la {communityopen}comunidad Nextcloud {linkclose}, el {githubopen}código fuente {linkclose} está licenciado bajo {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Da un Like a nuestra página de Facebook", + "Follow us on Twitter" : "Síguenos en Twitter", + "Check out our blog" : "Visita nuestro blog", + "Subscribe to our newsletter" : "Suscribete a nuestro boletín", + "Profile picture" : "Foto de perfil", + "Upload new" : "Cargar nuevo", + "Select from Files" : "Seleccionar desde Archivos", + "Remove image" : "Eliminar imagen", + "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", + "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", + "Cancel" : "Cancelar", + "Choose as profile picture" : "Seleccionar como foto del perfil", + "Details" : "Detalles", + "You are using <strong>%s</strong>" : "Estás usando<strong>%s</strong>", + "Full name" : "Nombre completo", + "No display name set" : "No se ha establecido el nombre a desplegar", + "Your email address" : "Tu dirección de correo electrónico", + "No email address set" : "No se ha establecido la dirección de correo electrónico", + "For password reset and notifications" : "Para restablecer contraseña y notificaciones", + "Phone number" : "Número de teléfono", + "Your phone number" : "Su número telefónico", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "Website" : "Sitio web", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Cuenta de twitter @...", + "Help translate" : "Ayuda a traducir", + "Current password" : "Contraseña actual", + "Change password" : "Cambiar contraseña", + "Store credentials" : "Almacenar credenciales", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php está registrado en un servicio webcron para llamar a cron.php cada 15 minutos a través de HTTP. ", + "Use system cron service to call the cron.php file every 15 minutes." : "Usar el servicio cron del sistema para llamar al archivo cron.php cada 15 minutos. " +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} \ No newline at end of file diff --git a/apps/settings/l10n/es_HN.js b/apps/settings/l10n/es_HN.js new file mode 100644 index 00000000000..3d9fadb1a06 --- /dev/null +++ b/apps/settings/l10n/es_HN.js @@ -0,0 +1,258 @@ +OC.L10N.register( + "settings", + { + "{actor} changed your password" : "{actor} ha cambiado tu contraseña", + "You changed your password" : "Cambiaste tu contraseña", + "Your password was reset by an administrator" : "Tu contraseña ha sido restablecida por un adminsitrador", + "{actor} changed your email address" : "{actor} ha cambiado tu dirección de correo electrónico", + "You changed your email address" : "Cambiaste tu dirección de correo electrónico", + "Your email address was changed by an administrator" : "Tu dirección de correo electrónico ha sido cambiada por un administrador", + "Security" : "Seguridad", + "You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado", + "Couldn't remove app." : "No fue posible eliminar la aplicación. ", + "Couldn't update app." : "No fue posible actualizar la aplicación.", + "Wrong password" : "Contraseña incorrecta", + "Saved" : "Guardado", + "No user supplied" : "No se proporcionó usuario alguno", + "Unable to change password" : "No fue posible cambiar la contraseña", + "Authentication error" : "Error de autenticación", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Por favor proporciona una contraseña de recuperación de administrador; de lo contrario toda la información del usuario se perderá. ", + "Wrong admin recovery password. Please check the password and try again." : "Contraseña de recuperación de administrador incorrecta. Por favor verificala e inténtalo de nuevo.", + "Backend doesn't support password change, but the user's encryption key was updated." : "El backend no soporta el cambio de contraseñas, pero la llave de encripción del usuario fue actualizada.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Instalando y actualizando aplicaciones por la tienda de aplicaciones o Compartido la Nube Federada", + "Federated Cloud Sharing" : "Compartir en la Nube Federada", + "Invalid SMTP password." : "Constraseña SMTP inválida. ", + "Email setting test" : "Prueba de ajustes de correo", + "Well done, %s!" : "¡Bien hecho, %s!", + "If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ", + "Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)", + "You need to set your user email before being able to send test emails." : "Requieres establecer tu correo electrónico antes de poder enviar correos electrónicos de prueba. ", + "Invalid mail address" : "Dirección de correo inválida", + "Settings saved" : "Se han guardado las configuraciones ", + "Unable to change full name" : "No fue posible cambiar el nombre completo", + "Unable to change email address" : "No fue posible cambiar la dirección de correo electrónico", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Para poder verificar tu cuenta de Twitter, publica el siguiente tweet en Twitter (por favor asegúrarte de publicar sin ninguna línea en blanco):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Para poder verificar tu sitio Web, agrega el siguiente contendio a tu web-root en '.well-known/CloudIdVerificationCode.txt' (por favor asegurate de que el texto completo este en una sóla línea):", + "%1$s changed your password on %2$s." : "%1$s cambió tu contraseña el %2$s.", + "Your password on %s was changed." : "Tu contraseña de %s fue cambiada. ", + "Your password on %s was reset by an administrator." : "Tu contraseña de %s fue restablecida por un administrador.", + "Password for %1$s changed on %2$s" : "La contraseña para %1$s fue cambiada el %2$s", + "Password changed for %s" : "La contraseña fue cambiada para %s", + "If you did not request this, please contact an administrator." : "Si no lo solicitaste, por favor contacta a un administrador. ", + "Your email address on %s was changed." : "Tu dirección de correo electrónico en %s fue cambiada. ", + "Your email address on %s was changed by an administrator." : "Tu dirección de correo electrónico en %s fue cambiada por un adminsitrador. ", + "Email address for %1$s changed on %2$s" : "La dirección de correo electrónico para %1$s fue cambiada el %2$s", + "Email address changed for %s" : "La dirección de correo electrónico fue cambiada para %s", + "The new email address is %s" : "La nueva dirección de correo electrónico es %s", + "Your %s account was created" : "Tu cuenta %s ha sido creada", + "Welcome aboard" : "Bienvenido a bordo", + "Welcome aboard %s" : "Bienvenido a bordo %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Bienvenido a tu cuenta %s, puedes agregar, proteger y compartir tus datos.", + "Your username is: %s" : "Tu Usuario es: %s", + "Set your password" : "Establece tu contraseña", + "Go to %s" : "Ir a %s", + "Install Client" : "Instalar el cliente", + "Delete" : "Borrar", + "Unlimited" : "Ilimitado", + "Verifying …" : "Verificando ...", + "Verify" : "Verificar", + "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración", + "Migration started …" : "La migración ha comenzado ...", + "Not saved" : "No guardado", + "Sending…" : "Enviando...", + "Email sent" : "Correo electrónico enviado", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Se presentó un error. Por favor carga un certificado PEM con codificación ASCII", + "Valid until {date}" : "Válido hasta {date}", + "Local" : "Local", + "Private" : "Privado", + "Only visible to local users" : "Visible sólo para usuarios locales", + "Only visible to you" : "Sólo visible para ti", + "Contacts" : "Contactos", + "Visible to local users and to trusted servers" : "Visible para usuarios locales y para servidores de confianza", + "Public" : "Público", + "Will be synced to a global and public address book" : "Será sincronizado a una libreta de direcciones global y pública", + "Very weak password" : "Contraseña muy débil", + "Weak password" : "Contraseña débil", + "So-so password" : "Contraseña aceptable", + "Good password" : "Buena contraseña", + "Strong password" : "Contraseña fuerte", + "Select a profile picture" : "Selecciona una imagen de perfil", + "Groups" : "Grupos", + "Limit to groups" : "Limitar a grupos", + "Allow filesystem access" : "Permitir acceso al sistema de archivos", + "Revoke" : "Revocar", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome para Android", + "Sync client - {os}" : "Sync client - {os}", + "This session" : "Esta sesión", + "Device" : "Dispositivo", + "Last activity" : "Última actividad", + "Web, desktop and mobile clients currently logged in to your account." : "Clientes web, de escritorio y móviles han iniciado sesión en tu cuenta. ", + "Error while creating device token" : "Se presentó un error al crear la ficha en el dispositivo", + "Error while deleting the token" : "Se presentó un error al borrar la ficha", + "App name" : "Nombre de la aplicación", + "Create new app password" : "Crear una nueva contraseña de aplicación", + "Use the credentials below to configure your app or device." : "Usa las siguientes credenciales para configurar tu aplicación o dispositivo. ", + "For security reasons this password will only be shown once." : "Por razones de seguridad esta contraseña sólo se mostrará una vez. ", + "Username" : "Usuario", + "Password" : "Contraseña", + "Done" : "Terminado", + "Copied!" : "¡Copiado!", + "Copy" : "Copiar", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Las aplicaciones oficiales son desarrolladas por y dentro de la comunidad. Ofrecen una funcionalidad centralizada y se encuentran listas para ser usadas en producción. ", + "Official" : "Oficial", + "Remove" : "Eliminar", + "Disable" : "Deshabilitar", + "All" : "Todos", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión mínima de Nextcloud asignada. Esto será un error en el futuro.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión máxima de Nextcloud asignada. Esto será un error en el futuro.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Esta aplicación no puede ser instalada porque las siguientes dependencias no están satisfechas:", + "View in store" : "Ver en la tienda", + "Visit website" : "Visita el sitio web", + "Report a bug" : "Reporta un detalle", + "User documentation" : "Documentación del usuario", + "Admin documentation" : "Documentación del administrador", + "Developer documentation" : "Documentación del desarrollador", + "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Enable all" : "Habilitar todo", + "Enable" : "Habilitar", + "The app will be downloaded from the app store" : "La aplicación será descargada de la tienda de aplicaciones <app store>", + "New password" : "Nueva contraseña", + "{size} used" : "{size} usado", + "Email" : "Correo electrónico", + "Group admin for" : "Administrador del grupo para", + "Quota" : "Cuota", + "Language" : "Idioma", + "Storage location" : "Úbicación del almacenamiento", + "User backend" : "Backend del usuario", + "Last login" : "Último inicio de sesión", + "Default quota" : "Cuota predeterminada", + "Your apps" : "Tus aplicaciones", + "Disabled apps" : "Aplicaciones deshabilitadas", + "Updates" : "Actualizaciones", + "App bundles" : "Paquetes de aplicación", + "Show last login" : "Mostrar último inicio de sesión", + "Show user backend" : "Mostrar backend del usuario", + "Admins" : "Administradores", + "Everyone" : "Todos", + "Add group" : "Agregar grupo", + "Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor", + "SSL Root Certificates" : "Certificado SSL Raíz", + "Common Name" : "Nombre común", + "Valid until" : "Válido hasta", + "Issued By" : "Levantado Por", + "Valid until %s" : "Válido hasta %s", + "Import root certificate" : "Importar certificado raíz", + "Administrator documentation" : "Documentación del adminsitrador", + "Forum" : "Foro", + "None" : "Ninguno", + "Login" : "Iniciar sesión", + "Plain" : "Plano", + "NT LAN Manager" : "Administrador de LAN NT", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Servidor de correo electrónico", + "Open documentation" : "Abrir documentación", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Es importante preparar este servidor para poder enviar correos electrónicos, como para restablecer contraseñas y notificaciones. ", + "Send mode" : "Modo de envío", + "Encryption" : "Encripción", + "From address" : "De la dirección", + "mail" : "correo", + "Authentication method" : "Método de autenticación", + "Authentication required" : "Autenticación requerida", + "Server address" : "Dirección del servidor", + "Port" : "Puerto", + "Credentials" : "Credenciales", + "SMTP Username" : "Usuario SMTP", + "SMTP Password" : "Contraseña SMTP", + "Test email settings" : "Probar las configuraciones de correo electrónico", + "Send email" : "Enviar correo electrónico", + "Security & setup warnings" : "Advertencias de seguridad y configuración", + "All checks passed." : "Pasaron todas las verificaciones. ", + "Version" : "Versión", + "Server-side encryption" : "Encripción del lado del servidor", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "La encripción del lado del servidor hace posible encriptar archivos que serán cargados a este servidor. Esto trae consigo algunas limitaciónes como penalizaciones en el desemeño, asi que habilítalo sólo si es necesario. ", + "Enable server-side encryption" : "Habilitar encripción del lado del servidor", + "Please read carefully before activating server-side encryption: " : "Por favor lee detenidamente antes de activar la encripción del lado de servidor:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Una vez que la encripción se encuentre habilitada, todos lo archivos cargados al servidor desde ese momento en tiempo, se encriptarán en el servidor. Sólo será posible deshabilitar la encripción en una fecha posterior si el modulo de encripción activo soporta esa funcionalidad y si todas las preciondiciones están satisfechas (ejem. establecer una llave de recuperación).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "La encripción por sí sola no garantiza la seguridad del sistema. Por favor consulta la documentación para mayores informes de cómo funciona la aplicación de encripción y de los casos de uso soportados. ", + "Be aware that encryption always increases the file size." : "Por favor considera que la encripción siempre aumenta el tamaño de los archivos. ", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Siempre es una buena idea generar respaldos de tus datos, en caso de tener encripción asegúrate de respaldar las llaves de encripción junto con tus datos. ", + "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", + "Enable encryption" : "Habilitar encripción", + "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", + "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Necesitas migrar tus llaves de encripción de la encripción anterior (ownCloud <= 8.0) a la actual. Por favor habilita el \"Módulo de encripción predeterminado\" y ejecuta el comando 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Necesitas migar tus llaves de encripción de la encripción anterior (ownCloud <=8.0) a la actual. ", + "Start migration" : "Iniciar migración", + "Background jobs" : "Trabajos en segundo plano", + "Last job ran %s." : "El último trabajo corrió %s.", + "Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ", + "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ", + "Execute one task with each page loaded" : "Ejecutar una tarea con cada página cargada", + "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ", + "Sharing" : "Compartiendo", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", + "Allow apps to use the Share API" : "Permitir que las aplicaciones usen el API para Compartir", + "Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas", + "Allow public uploads" : "Permitir cargas públicas", + "Always ask for a password" : "Siempre pedir una contraseña", + "Enforce password protection" : "Forzar protección de contraseñas", + "Set default expiration date" : "Establecer la fecha de expiración predeterminada", + "Expire after " : "Expirar después de", + "days" : "días", + "Enforce expiration date" : "Forzar fecha de expiración", + "Allow resharing" : "Permitir volver a compartir", + "Allow sharing with groups" : "Permitir compartir con grupos", + "Restrict users to only share with users in their groups" : "Limitar a los usuarios a sólo compartir con otros usuarios en sus grupos", + "Exclude groups from sharing" : "Evitar que los grupos compartan", + "These groups will still be able to receive shares, but not to initiate them." : "Estos grupos aún podrán recibir elementos compartidos, pero no los podrán iniciar.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Permitir el autocompletado de usuarios en la ventana de diálogo de compartir. Si esto está deshabilitado, se deberá ingresar el correo electrónico o nombre completo. ", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Mostrar el texto de exención de responsabilidad legal en la página de carga de ligas públicas. (Sólo se muestra cuando la lista de archivos está oculta.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Este texto se mostrará en la página de carga de la liga pública cuando la lista de archivos esté oculta. ", + "Personal" : "Personal", + "Administration" : "Administración", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Desarrollado por la {communityopen}comunidad Nextcloud {linkclose}, el {githubopen}código fuente {linkclose} está licenciado bajo {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Da un Like a nuestra página de Facebook", + "Follow us on Twitter" : "Síguenos en Twitter", + "Check out our blog" : "Visita nuestro blog", + "Subscribe to our newsletter" : "Suscribete a nuestro boletín", + "Profile picture" : "Foto de perfil", + "Upload new" : "Cargar nuevo", + "Select from Files" : "Seleccionar desde Archivos", + "Remove image" : "Eliminar imagen", + "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", + "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", + "Cancel" : "Cancelar", + "Choose as profile picture" : "Seleccionar como foto del perfil", + "Full name" : "Nombre completo", + "No display name set" : "No se ha establecido el nombre a desplegar", + "Your email address" : "Tu dirección de correo electrónico", + "No email address set" : "No se ha establecido la dirección de correo electrónico", + "For password reset and notifications" : "Para restablecer contraseña y notificaciones", + "Phone number" : "Número de teléfono", + "Your phone number" : "Su número telefónico", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "Website" : "Sitio web", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Cuenta de twitter @...", + "Help translate" : "Ayuda a traducir", + "Current password" : "Contraseña actual", + "Change password" : "Cambiar contraseña", + "Store credentials" : "Almacenar credenciales", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php está registrado en un servicio webcron para llamar a cron.php cada 15 minutos a través de HTTP. ", + "Use system cron service to call the cron.php file every 15 minutes." : "Usar el servicio cron del sistema para llamar al archivo cron.php cada 15 minutos. " +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/es_HN.json b/apps/settings/l10n/es_HN.json new file mode 100644 index 00000000000..072220b24af --- /dev/null +++ b/apps/settings/l10n/es_HN.json @@ -0,0 +1,256 @@ +{ "translations": { + "{actor} changed your password" : "{actor} ha cambiado tu contraseña", + "You changed your password" : "Cambiaste tu contraseña", + "Your password was reset by an administrator" : "Tu contraseña ha sido restablecida por un adminsitrador", + "{actor} changed your email address" : "{actor} ha cambiado tu dirección de correo electrónico", + "You changed your email address" : "Cambiaste tu dirección de correo electrónico", + "Your email address was changed by an administrator" : "Tu dirección de correo electrónico ha sido cambiada por un administrador", + "Security" : "Seguridad", + "You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado", + "Couldn't remove app." : "No fue posible eliminar la aplicación. ", + "Couldn't update app." : "No fue posible actualizar la aplicación.", + "Wrong password" : "Contraseña incorrecta", + "Saved" : "Guardado", + "No user supplied" : "No se proporcionó usuario alguno", + "Unable to change password" : "No fue posible cambiar la contraseña", + "Authentication error" : "Error de autenticación", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Por favor proporciona una contraseña de recuperación de administrador; de lo contrario toda la información del usuario se perderá. ", + "Wrong admin recovery password. Please check the password and try again." : "Contraseña de recuperación de administrador incorrecta. Por favor verificala e inténtalo de nuevo.", + "Backend doesn't support password change, but the user's encryption key was updated." : "El backend no soporta el cambio de contraseñas, pero la llave de encripción del usuario fue actualizada.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Instalando y actualizando aplicaciones por la tienda de aplicaciones o Compartido la Nube Federada", + "Federated Cloud Sharing" : "Compartir en la Nube Federada", + "Invalid SMTP password." : "Constraseña SMTP inválida. ", + "Email setting test" : "Prueba de ajustes de correo", + "Well done, %s!" : "¡Bien hecho, %s!", + "If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ", + "Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)", + "You need to set your user email before being able to send test emails." : "Requieres establecer tu correo electrónico antes de poder enviar correos electrónicos de prueba. ", + "Invalid mail address" : "Dirección de correo inválida", + "Settings saved" : "Se han guardado las configuraciones ", + "Unable to change full name" : "No fue posible cambiar el nombre completo", + "Unable to change email address" : "No fue posible cambiar la dirección de correo electrónico", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Para poder verificar tu cuenta de Twitter, publica el siguiente tweet en Twitter (por favor asegúrarte de publicar sin ninguna línea en blanco):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Para poder verificar tu sitio Web, agrega el siguiente contendio a tu web-root en '.well-known/CloudIdVerificationCode.txt' (por favor asegurate de que el texto completo este en una sóla línea):", + "%1$s changed your password on %2$s." : "%1$s cambió tu contraseña el %2$s.", + "Your password on %s was changed." : "Tu contraseña de %s fue cambiada. ", + "Your password on %s was reset by an administrator." : "Tu contraseña de %s fue restablecida por un administrador.", + "Password for %1$s changed on %2$s" : "La contraseña para %1$s fue cambiada el %2$s", + "Password changed for %s" : "La contraseña fue cambiada para %s", + "If you did not request this, please contact an administrator." : "Si no lo solicitaste, por favor contacta a un administrador. ", + "Your email address on %s was changed." : "Tu dirección de correo electrónico en %s fue cambiada. ", + "Your email address on %s was changed by an administrator." : "Tu dirección de correo electrónico en %s fue cambiada por un adminsitrador. ", + "Email address for %1$s changed on %2$s" : "La dirección de correo electrónico para %1$s fue cambiada el %2$s", + "Email address changed for %s" : "La dirección de correo electrónico fue cambiada para %s", + "The new email address is %s" : "La nueva dirección de correo electrónico es %s", + "Your %s account was created" : "Tu cuenta %s ha sido creada", + "Welcome aboard" : "Bienvenido a bordo", + "Welcome aboard %s" : "Bienvenido a bordo %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Bienvenido a tu cuenta %s, puedes agregar, proteger y compartir tus datos.", + "Your username is: %s" : "Tu Usuario es: %s", + "Set your password" : "Establece tu contraseña", + "Go to %s" : "Ir a %s", + "Install Client" : "Instalar el cliente", + "Delete" : "Borrar", + "Unlimited" : "Ilimitado", + "Verifying …" : "Verificando ...", + "Verify" : "Verificar", + "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración", + "Migration started …" : "La migración ha comenzado ...", + "Not saved" : "No guardado", + "Sending…" : "Enviando...", + "Email sent" : "Correo electrónico enviado", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Se presentó un error. Por favor carga un certificado PEM con codificación ASCII", + "Valid until {date}" : "Válido hasta {date}", + "Local" : "Local", + "Private" : "Privado", + "Only visible to local users" : "Visible sólo para usuarios locales", + "Only visible to you" : "Sólo visible para ti", + "Contacts" : "Contactos", + "Visible to local users and to trusted servers" : "Visible para usuarios locales y para servidores de confianza", + "Public" : "Público", + "Will be synced to a global and public address book" : "Será sincronizado a una libreta de direcciones global y pública", + "Very weak password" : "Contraseña muy débil", + "Weak password" : "Contraseña débil", + "So-so password" : "Contraseña aceptable", + "Good password" : "Buena contraseña", + "Strong password" : "Contraseña fuerte", + "Select a profile picture" : "Selecciona una imagen de perfil", + "Groups" : "Grupos", + "Limit to groups" : "Limitar a grupos", + "Allow filesystem access" : "Permitir acceso al sistema de archivos", + "Revoke" : "Revocar", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome para Android", + "Sync client - {os}" : "Sync client - {os}", + "This session" : "Esta sesión", + "Device" : "Dispositivo", + "Last activity" : "Última actividad", + "Web, desktop and mobile clients currently logged in to your account." : "Clientes web, de escritorio y móviles han iniciado sesión en tu cuenta. ", + "Error while creating device token" : "Se presentó un error al crear la ficha en el dispositivo", + "Error while deleting the token" : "Se presentó un error al borrar la ficha", + "App name" : "Nombre de la aplicación", + "Create new app password" : "Crear una nueva contraseña de aplicación", + "Use the credentials below to configure your app or device." : "Usa las siguientes credenciales para configurar tu aplicación o dispositivo. ", + "For security reasons this password will only be shown once." : "Por razones de seguridad esta contraseña sólo se mostrará una vez. ", + "Username" : "Usuario", + "Password" : "Contraseña", + "Done" : "Terminado", + "Copied!" : "¡Copiado!", + "Copy" : "Copiar", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Las aplicaciones oficiales son desarrolladas por y dentro de la comunidad. Ofrecen una funcionalidad centralizada y se encuentran listas para ser usadas en producción. ", + "Official" : "Oficial", + "Remove" : "Eliminar", + "Disable" : "Deshabilitar", + "All" : "Todos", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión mínima de Nextcloud asignada. Esto será un error en el futuro.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión máxima de Nextcloud asignada. Esto será un error en el futuro.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Esta aplicación no puede ser instalada porque las siguientes dependencias no están satisfechas:", + "View in store" : "Ver en la tienda", + "Visit website" : "Visita el sitio web", + "Report a bug" : "Reporta un detalle", + "User documentation" : "Documentación del usuario", + "Admin documentation" : "Documentación del administrador", + "Developer documentation" : "Documentación del desarrollador", + "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Enable all" : "Habilitar todo", + "Enable" : "Habilitar", + "The app will be downloaded from the app store" : "La aplicación será descargada de la tienda de aplicaciones <app store>", + "New password" : "Nueva contraseña", + "{size} used" : "{size} usado", + "Email" : "Correo electrónico", + "Group admin for" : "Administrador del grupo para", + "Quota" : "Cuota", + "Language" : "Idioma", + "Storage location" : "Úbicación del almacenamiento", + "User backend" : "Backend del usuario", + "Last login" : "Último inicio de sesión", + "Default quota" : "Cuota predeterminada", + "Your apps" : "Tus aplicaciones", + "Disabled apps" : "Aplicaciones deshabilitadas", + "Updates" : "Actualizaciones", + "App bundles" : "Paquetes de aplicación", + "Show last login" : "Mostrar último inicio de sesión", + "Show user backend" : "Mostrar backend del usuario", + "Admins" : "Administradores", + "Everyone" : "Todos", + "Add group" : "Agregar grupo", + "Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor", + "SSL Root Certificates" : "Certificado SSL Raíz", + "Common Name" : "Nombre común", + "Valid until" : "Válido hasta", + "Issued By" : "Levantado Por", + "Valid until %s" : "Válido hasta %s", + "Import root certificate" : "Importar certificado raíz", + "Administrator documentation" : "Documentación del adminsitrador", + "Forum" : "Foro", + "None" : "Ninguno", + "Login" : "Iniciar sesión", + "Plain" : "Plano", + "NT LAN Manager" : "Administrador de LAN NT", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Servidor de correo electrónico", + "Open documentation" : "Abrir documentación", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Es importante preparar este servidor para poder enviar correos electrónicos, como para restablecer contraseñas y notificaciones. ", + "Send mode" : "Modo de envío", + "Encryption" : "Encripción", + "From address" : "De la dirección", + "mail" : "correo", + "Authentication method" : "Método de autenticación", + "Authentication required" : "Autenticación requerida", + "Server address" : "Dirección del servidor", + "Port" : "Puerto", + "Credentials" : "Credenciales", + "SMTP Username" : "Usuario SMTP", + "SMTP Password" : "Contraseña SMTP", + "Test email settings" : "Probar las configuraciones de correo electrónico", + "Send email" : "Enviar correo electrónico", + "Security & setup warnings" : "Advertencias de seguridad y configuración", + "All checks passed." : "Pasaron todas las verificaciones. ", + "Version" : "Versión", + "Server-side encryption" : "Encripción del lado del servidor", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "La encripción del lado del servidor hace posible encriptar archivos que serán cargados a este servidor. Esto trae consigo algunas limitaciónes como penalizaciones en el desemeño, asi que habilítalo sólo si es necesario. ", + "Enable server-side encryption" : "Habilitar encripción del lado del servidor", + "Please read carefully before activating server-side encryption: " : "Por favor lee detenidamente antes de activar la encripción del lado de servidor:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Una vez que la encripción se encuentre habilitada, todos lo archivos cargados al servidor desde ese momento en tiempo, se encriptarán en el servidor. Sólo será posible deshabilitar la encripción en una fecha posterior si el modulo de encripción activo soporta esa funcionalidad y si todas las preciondiciones están satisfechas (ejem. establecer una llave de recuperación).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "La encripción por sí sola no garantiza la seguridad del sistema. Por favor consulta la documentación para mayores informes de cómo funciona la aplicación de encripción y de los casos de uso soportados. ", + "Be aware that encryption always increases the file size." : "Por favor considera que la encripción siempre aumenta el tamaño de los archivos. ", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Siempre es una buena idea generar respaldos de tus datos, en caso de tener encripción asegúrate de respaldar las llaves de encripción junto con tus datos. ", + "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", + "Enable encryption" : "Habilitar encripción", + "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", + "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Necesitas migrar tus llaves de encripción de la encripción anterior (ownCloud <= 8.0) a la actual. Por favor habilita el \"Módulo de encripción predeterminado\" y ejecuta el comando 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Necesitas migar tus llaves de encripción de la encripción anterior (ownCloud <=8.0) a la actual. ", + "Start migration" : "Iniciar migración", + "Background jobs" : "Trabajos en segundo plano", + "Last job ran %s." : "El último trabajo corrió %s.", + "Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ", + "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ", + "Execute one task with each page loaded" : "Ejecutar una tarea con cada página cargada", + "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ", + "Sharing" : "Compartiendo", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", + "Allow apps to use the Share API" : "Permitir que las aplicaciones usen el API para Compartir", + "Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas", + "Allow public uploads" : "Permitir cargas públicas", + "Always ask for a password" : "Siempre pedir una contraseña", + "Enforce password protection" : "Forzar protección de contraseñas", + "Set default expiration date" : "Establecer la fecha de expiración predeterminada", + "Expire after " : "Expirar después de", + "days" : "días", + "Enforce expiration date" : "Forzar fecha de expiración", + "Allow resharing" : "Permitir volver a compartir", + "Allow sharing with groups" : "Permitir compartir con grupos", + "Restrict users to only share with users in their groups" : "Limitar a los usuarios a sólo compartir con otros usuarios en sus grupos", + "Exclude groups from sharing" : "Evitar que los grupos compartan", + "These groups will still be able to receive shares, but not to initiate them." : "Estos grupos aún podrán recibir elementos compartidos, pero no los podrán iniciar.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Permitir el autocompletado de usuarios en la ventana de diálogo de compartir. Si esto está deshabilitado, se deberá ingresar el correo electrónico o nombre completo. ", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Mostrar el texto de exención de responsabilidad legal en la página de carga de ligas públicas. (Sólo se muestra cuando la lista de archivos está oculta.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Este texto se mostrará en la página de carga de la liga pública cuando la lista de archivos esté oculta. ", + "Personal" : "Personal", + "Administration" : "Administración", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Desarrollado por la {communityopen}comunidad Nextcloud {linkclose}, el {githubopen}código fuente {linkclose} está licenciado bajo {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Da un Like a nuestra página de Facebook", + "Follow us on Twitter" : "Síguenos en Twitter", + "Check out our blog" : "Visita nuestro blog", + "Subscribe to our newsletter" : "Suscribete a nuestro boletín", + "Profile picture" : "Foto de perfil", + "Upload new" : "Cargar nuevo", + "Select from Files" : "Seleccionar desde Archivos", + "Remove image" : "Eliminar imagen", + "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", + "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", + "Cancel" : "Cancelar", + "Choose as profile picture" : "Seleccionar como foto del perfil", + "Full name" : "Nombre completo", + "No display name set" : "No se ha establecido el nombre a desplegar", + "Your email address" : "Tu dirección de correo electrónico", + "No email address set" : "No se ha establecido la dirección de correo electrónico", + "For password reset and notifications" : "Para restablecer contraseña y notificaciones", + "Phone number" : "Número de teléfono", + "Your phone number" : "Su número telefónico", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "Website" : "Sitio web", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Cuenta de twitter @...", + "Help translate" : "Ayuda a traducir", + "Current password" : "Contraseña actual", + "Change password" : "Cambiar contraseña", + "Store credentials" : "Almacenar credenciales", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php está registrado en un servicio webcron para llamar a cron.php cada 15 minutos a través de HTTP. ", + "Use system cron service to call the cron.php file every 15 minutes." : "Usar el servicio cron del sistema para llamar al archivo cron.php cada 15 minutos. " +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} \ No newline at end of file diff --git a/apps/settings/l10n/es_MX.js b/apps/settings/l10n/es_MX.js new file mode 100644 index 00000000000..6bd3eb7a892 --- /dev/null +++ b/apps/settings/l10n/es_MX.js @@ -0,0 +1,275 @@ +OC.L10N.register( + "settings", + { + "{actor} added you to group {group}" : "{actor} te ha añadido al grupo {group}", + "You added {user} to group {group}" : "Tú has añadido a {user} al grupo {group}", + "{actor} added {user} to group {group}" : "{actor} ha añadido a {user} al grupo {group}", + "An administrator added you to group {group}" : "Un administrador te ha añadido al grupo {group}", + "An administrator added {user} to group {group}" : "Un administrador ha añadido a {user} al grupo {group}", + "{actor} removed you from group {group}" : "{actor} te ha eliminado del grupo {group}", + "You removed {user} from group {group}" : "Tú has eliminado a {user} del grupo {group}", + "{actor} removed {user} from group {group}" : "{actor} ha eliminado a {user} del grupo {group}", + "An administrator removed you from group {group}" : "Un administrador te ha eliminado del grupo {group}", + "An administrator removed {user} from group {group}" : "Un administrador ha eliminado a {user} del grupo {group}", + "{actor} changed your password" : "{actor} ha cambiado tu contraseña", + "You changed your password" : "Cambiaste tu contraseña", + "Your password was reset by an administrator" : "Tu contraseña ha sido restablecida por un adminsitrador", + "{actor} changed your email address" : "{actor} ha cambiado tu dirección de correo electrónico", + "You changed your email address" : "Cambiaste tu dirección de correo electrónico", + "Your email address was changed by an administrator" : "Tu dirección de correo electrónico ha sido cambiada por un administrador", + "Security" : "Seguridad", + "You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado", + "Couldn't remove app." : "No fue posible eliminar la aplicación. ", + "Couldn't update app." : "No fue posible actualizar la aplicación.", + "Wrong password" : "Contraseña incorrecta", + "Saved" : "Guardado", + "No user supplied" : "No se proporcionó usuario alguno", + "Unable to change password" : "No fue posible cambiar la contraseña", + "Authentication error" : "Error de autenticación", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Por favor proporciona una contraseña de recuperación de administrador; de lo contrario toda la información del usuario se perderá. ", + "Wrong admin recovery password. Please check the password and try again." : "Contraseña de recuperación de administrador incorrecta. Por favor verificala e inténtalo de nuevo.", + "Backend doesn't support password change, but the user's encryption key was updated." : "El backend no soporta el cambio de contraseñas, pero la llave de encripción del usuario fue actualizada.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Instalando y actualizando aplicaciones por la tienda de aplicaciones o Compartido la Nube Federada", + "Federated Cloud Sharing" : "Compartir en la Nube Federada", + "Invalid SMTP password." : "Constraseña SMTP inválida. ", + "Email setting test" : "Prueba de ajustes de correo", + "Well done, %s!" : "¡Bien hecho, %s!", + "If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ", + "Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)", + "You need to set your user email before being able to send test emails." : "Requieres establecer tu correo electrónico antes de poder enviar correos electrónicos de prueba. ", + "Invalid mail address" : "Dirección de correo inválida", + "Settings saved" : "Se han guardado las configuraciones ", + "Unable to change full name" : "No fue posible cambiar el nombre completo", + "Unable to change email address" : "No fue posible cambiar la dirección de correo electrónico", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Para poder verificar tu cuenta de Twitter, publica el siguiente tweet en Twitter (por favor asegúrarte de publicar sin ninguna línea en blanco):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Para poder verificar tu sitio Web, agrega el siguiente contendio a tu web-root en '.well-known/CloudIdVerificationCode.txt' (por favor asegurate de que el texto completo este en una sóla línea):", + "%1$s changed your password on %2$s." : "%1$s cambió tu contraseña el %2$s.", + "Your password on %s was changed." : "Tu contraseña de %s fue cambiada. ", + "Your password on %s was reset by an administrator." : "Tu contraseña de %s fue restablecida por un administrador.", + "Password for %1$s changed on %2$s" : "La contraseña de %1$s fue cambiada en %2$s", + "Password changed for %s" : "La contraseña fue cambiada para %s", + "If you did not request this, please contact an administrator." : "Si no lo solicitaste, por favor contacta a un administrador. ", + "Your email address on %s was changed." : "Tu dirección de correo electrónico en %s fue cambiada. ", + "Your email address on %s was changed by an administrator." : "Tu dirección de correo electrónico en %s fue cambiada por un adminsitrador. ", + "Email address for %1$s changed on %2$s" : "La dirección de correo electrónico de %1$s ha cambiado en %2$s", + "Email address changed for %s" : "La dirección de correo electrónico fue cambiada para %s", + "The new email address is %s" : "La nueva dirección de correo electrónico es %s", + "Your %s account was created" : "Tu cuenta %s ha sido creada", + "Welcome aboard" : "Bienvenido a bordo", + "Welcome aboard %s" : "Bienvenido a bordo %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Bienvenido a tu cuenta %s, puedes agregar, proteger y compartir tus datos.", + "Your username is: %s" : "Tu Usuario es: %s", + "Set your password" : "Establece tu contraseña", + "Go to %s" : "Ir a %s", + "Install Client" : "Instalar el cliente", + "Delete" : "Borrar", + "Unlimited" : "Ilimitado", + "Verifying …" : "Verificando ...", + "Verify" : "Verificar", + "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", + "Migration started …" : "La migración ha comenzado ...", + "Not saved" : "No guardado", + "Sending…" : "Enviando...", + "Email sent" : "Correo electrónico enviado", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Se presentó un error. Por favor carga un certificado PEM con codificación ASCII", + "Valid until {date}" : "Válido hasta {date}", + "Local" : "Local", + "Private" : "Privado", + "Only visible to local users" : "Visible sólo para usuarios locales", + "Only visible to you" : "Sólo visible para ti", + "Contacts" : "Contactos", + "Visible to local users and to trusted servers" : "Visible para usuarios locales y para servidores de confianza", + "Public" : "Público", + "Will be synced to a global and public address book" : "Será sincronizado a una libreta de direcciones global y pública", + "Very weak password" : "Contraseña muy débil", + "Weak password" : "Contraseña débil", + "So-so password" : "Contraseña aceptable", + "Good password" : "Buena contraseña", + "Strong password" : "Contraseña fuerte", + "Select a profile picture" : "Selecciona una imagen de perfil", + "Groups" : "Grupos", + "Limit to groups" : "Limitar a grupos", + "Allow filesystem access" : "Permitir acceso al sistema de archivos", + "Revoke" : "Revocar", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome para Android", + "Sync client - {os}" : "Sync client - {os}", + "This session" : "Esta sesión", + "Device" : "Dispositivo", + "Last activity" : "Última actividad", + "Devices & sessions" : "Dispositivos y sesiones", + "Web, desktop and mobile clients currently logged in to your account." : "Clientes web, de escritorio y móviles han iniciado sesión en tu cuenta. ", + "Error while creating device token" : "Se presentó un error al crear la ficha en el dispositivo", + "Error while deleting the token" : "Se presentó un error al borrar la ficha", + "App name" : "Nombre de la aplicación", + "Create new app password" : "Crear una nueva contraseña de aplicación", + "Use the credentials below to configure your app or device." : "Usa las siguientes credenciales para configurar tu aplicación o dispositivo. ", + "For security reasons this password will only be shown once." : "Por razones de seguridad esta contraseña sólo se mostrará una vez. ", + "Username" : "Usuario", + "Password" : "Contraseña", + "Done" : "Terminado", + "Copied!" : "¡Copiado!", + "Copy" : "Copiar", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Las aplicaciones oficiales son desarrolladas por y dentro de la comunidad. Ofrecen una funcionalidad centralizada y se encuentran listas para ser usadas en producción. ", + "Official" : "Oficial", + "Remove" : "Eliminar", + "Disable" : "Deshabilitar", + "All" : "Todos", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión mínima de Nextcloud asignada. Esto será un error en el futuro.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión máxima de Nextcloud asignada. Esto será un error en el futuro.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Esta aplicación no puede ser instalada porque las siguientes dependencias no están satisfechas:", + "View in store" : "Ver en la tienda", + "Visit website" : "Visita el sitio web", + "Report a bug" : "Reporta un detalle", + "User documentation" : "Documentación del usuario", + "Admin documentation" : "Documentación del administrador", + "Developer documentation" : "Documentación del desarrollador", + "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Enable all" : "Habilitar todo", + "Enable" : "Habilitar", + "The app will be downloaded from the app store" : "La aplicación será descargada de la tienda de aplicaciones <app store>", + "New password" : "Nueva contraseña", + "{size} used" : "{size} usado", + "Email" : "Correo electrónico", + "Group admin for" : "Administrador del grupo para", + "Quota" : "Cuota", + "Language" : "Idioma", + "Storage location" : "Úbicación del almacenamiento", + "User backend" : "Backend del usuario", + "Last login" : "Último inicio de sesión", + "Default quota" : "Cuota predeterminada", + "Your apps" : "Tus aplicaciones", + "Disabled apps" : "Aplicaciones deshabilitadas", + "Updates" : "Actualizaciones", + "App bundles" : "Paquetes de aplicación", + "Show last login" : "Mostrar último inicio de sesión", + "Show user backend" : "Mostrar backend del usuario", + "Admins" : "Administradores", + "Everyone" : "Todos", + "Add group" : "Agregar grupo", + "An error occured during the request. Unable to proceed." : "Se presentó un error durante la solicitud. No es posible proceder.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "La aplicación ha sido habilitada pero necesita ser actualizada. Serás redireccionado a la página de actualización en 5 segundos. ", + "App update" : "Actualización de la aplicación", + "Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor", + "SSL Root Certificates" : "Certificado SSL Raíz", + "Common Name" : "Nombre común", + "Valid until" : "Válido hasta", + "Issued By" : "Levantado Por", + "Valid until %s" : "Válido hasta %s", + "Import root certificate" : "Importar certificado raíz", + "Administrator documentation" : "Documentación del adminsitrador", + "Forum" : "Foro", + "None" : "Ninguno", + "Login" : "Iniciar sesión", + "Plain" : "Plano", + "NT LAN Manager" : "Administrador de LAN NT", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Servidor de correo electrónico", + "Open documentation" : "Abrir documentación", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Es importante preparar este servidor para poder enviar correos electrónicos, como para restablecer contraseñas y notificaciones. ", + "Send mode" : "Modo de envío", + "Encryption" : "Encripción", + "From address" : "De la dirección", + "mail" : "correo", + "Authentication method" : "Método de autenticación", + "Authentication required" : "Autenticación requerida", + "Server address" : "Dirección del servidor", + "Port" : "Puerto", + "Credentials" : "Credenciales", + "SMTP Username" : "Usuario SMTP", + "SMTP Password" : "Contraseña SMTP", + "Test email settings" : "Probar las configuraciones de correo electrónico", + "Send email" : "Enviar correo electrónico", + "Security & setup warnings" : "Advertencias de seguridad y configuración", + "All checks passed." : "Pasaron todas las verificaciones. ", + "Version" : "Versión", + "Server-side encryption" : "Encripción del lado del servidor", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "La encripción del lado del servidor hace posible encriptar archivos que serán cargados a este servidor. Esto trae consigo algunas limitaciónes como penalizaciones en el desemeño, asi que habilítalo sólo si es necesario. ", + "Enable server-side encryption" : "Habilitar encripción del lado del servidor", + "Please read carefully before activating server-side encryption: " : "Por favor lee detenidamente antes de activar la encripción del lado de servidor:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Una vez que la encripción se encuentre habilitada, todos lo archivos cargados al servidor desde ese momento en tiempo, se encriptarán en el servidor. Sólo será posible deshabilitar la encripción en una fecha posterior si el modulo de encripción activo soporta esa funcionalidad y si todas las preciondiciones están satisfechas (ejem. establecer una llave de recuperación).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "La encripción por sí sola no garantiza la seguridad del sistema. Por favor consulta la documentación para mayores informes de cómo funciona la aplicación de encripción y de los casos de uso soportados. ", + "Be aware that encryption always increases the file size." : "Por favor considera que la encripción siempre aumenta el tamaño de los archivos. ", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Siempre es una buena idea generar respaldos de tus datos, en caso de tener encripción asegúrate de respaldar las llaves de encripción junto con tus datos. ", + "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", + "Enable encryption" : "Habilitar encripción", + "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", + "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Necesitas migrar tus llaves de encripción de la encripción anterior (ownCloud <= 8.0) a la actual. Por favor habilita el \"Módulo de encripción predeterminado\" y ejecuta el comando 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Necesitas migar tus llaves de encripción de la encripción anterior (ownCloud <=8.0) a la actual. ", + "Start migration" : "Iniciar migración", + "Background jobs" : "Trabajos en segundo plano", + "Last job ran %s." : "El último trabajo corrió %s.", + "Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ", + "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ", + "Execute one task with each page loaded" : "Ejecutar una tarea con cada página cargada", + "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ", + "Sharing" : "Compartiendo", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", + "Allow apps to use the Share API" : "Permitir que las aplicaciones usen el API para Compartir", + "Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas", + "Allow public uploads" : "Permitir cargas públicas", + "Always ask for a password" : "Siempre pedir una contraseña", + "Enforce password protection" : "Forzar protección de contraseñas", + "Set default expiration date" : "Establecer la fecha de expiración predeterminada", + "Expire after " : "Expirar después de", + "days" : "días", + "Enforce expiration date" : "Forzar fecha de expiración", + "Allow resharing" : "Permitir volver a compartir", + "Allow sharing with groups" : "Permitir compartir con grupos", + "Restrict users to only share with users in their groups" : "Limitar a los usuarios a sólo compartir con otros usuarios en sus grupos", + "Exclude groups from sharing" : "Evitar que los grupos compartan", + "These groups will still be able to receive shares, but not to initiate them." : "Estos grupos aún podrán recibir elementos compartidos, pero no los podrán iniciar.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Permitir el autocompletado de usuarios en la ventana de diálogo de compartir. Si esto está deshabilitado, se deberá ingresar el correo electrónico o nombre completo. ", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Mostrar el texto de exención de responsabilidad legal en la página de carga de ligas públicas. (Sólo se muestra cuando la lista de archivos está oculta.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Este texto se mostrará en la página de carga de la liga pública cuando la lista de archivos esté oculta. ", + "Default share permissions" : "Permisos predeterminados para compartir", + "Personal" : "Personal", + "Administration" : "Administración", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Desarrollado por la {communityopen}comunidad Nextcloud {linkclose}, el {githubopen}código fuente {linkclose} está licenciado bajo {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Da un Like a nuestra página de Facebook", + "Follow us on Twitter" : "Síguenos en Twitter", + "Check out our blog" : "Visita nuestro blog", + "Subscribe to our newsletter" : "Suscribete a nuestro boletín", + "Profile picture" : "Foto de perfil", + "Upload new" : "Cargar nuevo", + "Select from Files" : "Seleccionar desde Archivos", + "Remove image" : "Eliminar imagen", + "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", + "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", + "Cancel" : "Cancelar", + "Choose as profile picture" : "Seleccionar como foto del perfil", + "Details" : "Detalles", + "You are using <strong>%s</strong>" : "Estás usando<strong>%s</strong>", + "Full name" : "Nombre completo", + "No display name set" : "No se ha establecido el nombre a desplegar", + "Your email address" : "Tu dirección de correo electrónico", + "No email address set" : "No se ha establecido la dirección de correo electrónico", + "For password reset and notifications" : "Para restablecer contraseña y notificaciones", + "Phone number" : "Número de teléfono", + "Your phone number" : "Su número telefónico", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "Website" : "Sitio web", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Cuenta de twitter @...", + "Help translate" : "Ayuda a traducir", + "Current password" : "Contraseña actual", + "Change password" : "Cambiar contraseña", + "Store credentials" : "Almacenar credenciales", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php está registrado en un servicio webcron para llamar a cron.php cada 15 minutos a través de HTTP. ", + "Use system cron service to call the cron.php file every 15 minutes." : "Usar el servicio cron del sistema para llamar al archivo cron.php cada 15 minutos. " +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/es_MX.json b/apps/settings/l10n/es_MX.json new file mode 100644 index 00000000000..942d82b75ff --- /dev/null +++ b/apps/settings/l10n/es_MX.json @@ -0,0 +1,273 @@ +{ "translations": { + "{actor} added you to group {group}" : "{actor} te ha añadido al grupo {group}", + "You added {user} to group {group}" : "Tú has añadido a {user} al grupo {group}", + "{actor} added {user} to group {group}" : "{actor} ha añadido a {user} al grupo {group}", + "An administrator added you to group {group}" : "Un administrador te ha añadido al grupo {group}", + "An administrator added {user} to group {group}" : "Un administrador ha añadido a {user} al grupo {group}", + "{actor} removed you from group {group}" : "{actor} te ha eliminado del grupo {group}", + "You removed {user} from group {group}" : "Tú has eliminado a {user} del grupo {group}", + "{actor} removed {user} from group {group}" : "{actor} ha eliminado a {user} del grupo {group}", + "An administrator removed you from group {group}" : "Un administrador te ha eliminado del grupo {group}", + "An administrator removed {user} from group {group}" : "Un administrador ha eliminado a {user} del grupo {group}", + "{actor} changed your password" : "{actor} ha cambiado tu contraseña", + "You changed your password" : "Cambiaste tu contraseña", + "Your password was reset by an administrator" : "Tu contraseña ha sido restablecida por un adminsitrador", + "{actor} changed your email address" : "{actor} ha cambiado tu dirección de correo electrónico", + "You changed your email address" : "Cambiaste tu dirección de correo electrónico", + "Your email address was changed by an administrator" : "Tu dirección de correo electrónico ha sido cambiada por un administrador", + "Security" : "Seguridad", + "You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado", + "Couldn't remove app." : "No fue posible eliminar la aplicación. ", + "Couldn't update app." : "No fue posible actualizar la aplicación.", + "Wrong password" : "Contraseña incorrecta", + "Saved" : "Guardado", + "No user supplied" : "No se proporcionó usuario alguno", + "Unable to change password" : "No fue posible cambiar la contraseña", + "Authentication error" : "Error de autenticación", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Por favor proporciona una contraseña de recuperación de administrador; de lo contrario toda la información del usuario se perderá. ", + "Wrong admin recovery password. Please check the password and try again." : "Contraseña de recuperación de administrador incorrecta. Por favor verificala e inténtalo de nuevo.", + "Backend doesn't support password change, but the user's encryption key was updated." : "El backend no soporta el cambio de contraseñas, pero la llave de encripción del usuario fue actualizada.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Instalando y actualizando aplicaciones por la tienda de aplicaciones o Compartido la Nube Federada", + "Federated Cloud Sharing" : "Compartir en la Nube Federada", + "Invalid SMTP password." : "Constraseña SMTP inválida. ", + "Email setting test" : "Prueba de ajustes de correo", + "Well done, %s!" : "¡Bien hecho, %s!", + "If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ", + "Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)", + "You need to set your user email before being able to send test emails." : "Requieres establecer tu correo electrónico antes de poder enviar correos electrónicos de prueba. ", + "Invalid mail address" : "Dirección de correo inválida", + "Settings saved" : "Se han guardado las configuraciones ", + "Unable to change full name" : "No fue posible cambiar el nombre completo", + "Unable to change email address" : "No fue posible cambiar la dirección de correo electrónico", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Para poder verificar tu cuenta de Twitter, publica el siguiente tweet en Twitter (por favor asegúrarte de publicar sin ninguna línea en blanco):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Para poder verificar tu sitio Web, agrega el siguiente contendio a tu web-root en '.well-known/CloudIdVerificationCode.txt' (por favor asegurate de que el texto completo este en una sóla línea):", + "%1$s changed your password on %2$s." : "%1$s cambió tu contraseña el %2$s.", + "Your password on %s was changed." : "Tu contraseña de %s fue cambiada. ", + "Your password on %s was reset by an administrator." : "Tu contraseña de %s fue restablecida por un administrador.", + "Password for %1$s changed on %2$s" : "La contraseña de %1$s fue cambiada en %2$s", + "Password changed for %s" : "La contraseña fue cambiada para %s", + "If you did not request this, please contact an administrator." : "Si no lo solicitaste, por favor contacta a un administrador. ", + "Your email address on %s was changed." : "Tu dirección de correo electrónico en %s fue cambiada. ", + "Your email address on %s was changed by an administrator." : "Tu dirección de correo electrónico en %s fue cambiada por un adminsitrador. ", + "Email address for %1$s changed on %2$s" : "La dirección de correo electrónico de %1$s ha cambiado en %2$s", + "Email address changed for %s" : "La dirección de correo electrónico fue cambiada para %s", + "The new email address is %s" : "La nueva dirección de correo electrónico es %s", + "Your %s account was created" : "Tu cuenta %s ha sido creada", + "Welcome aboard" : "Bienvenido a bordo", + "Welcome aboard %s" : "Bienvenido a bordo %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Bienvenido a tu cuenta %s, puedes agregar, proteger y compartir tus datos.", + "Your username is: %s" : "Tu Usuario es: %s", + "Set your password" : "Establece tu contraseña", + "Go to %s" : "Ir a %s", + "Install Client" : "Instalar el cliente", + "Delete" : "Borrar", + "Unlimited" : "Ilimitado", + "Verifying …" : "Verificando ...", + "Verify" : "Verificar", + "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", + "Migration started …" : "La migración ha comenzado ...", + "Not saved" : "No guardado", + "Sending…" : "Enviando...", + "Email sent" : "Correo electrónico enviado", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Se presentó un error. Por favor carga un certificado PEM con codificación ASCII", + "Valid until {date}" : "Válido hasta {date}", + "Local" : "Local", + "Private" : "Privado", + "Only visible to local users" : "Visible sólo para usuarios locales", + "Only visible to you" : "Sólo visible para ti", + "Contacts" : "Contactos", + "Visible to local users and to trusted servers" : "Visible para usuarios locales y para servidores de confianza", + "Public" : "Público", + "Will be synced to a global and public address book" : "Será sincronizado a una libreta de direcciones global y pública", + "Very weak password" : "Contraseña muy débil", + "Weak password" : "Contraseña débil", + "So-so password" : "Contraseña aceptable", + "Good password" : "Buena contraseña", + "Strong password" : "Contraseña fuerte", + "Select a profile picture" : "Selecciona una imagen de perfil", + "Groups" : "Grupos", + "Limit to groups" : "Limitar a grupos", + "Allow filesystem access" : "Permitir acceso al sistema de archivos", + "Revoke" : "Revocar", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome para Android", + "Sync client - {os}" : "Sync client - {os}", + "This session" : "Esta sesión", + "Device" : "Dispositivo", + "Last activity" : "Última actividad", + "Devices & sessions" : "Dispositivos y sesiones", + "Web, desktop and mobile clients currently logged in to your account." : "Clientes web, de escritorio y móviles han iniciado sesión en tu cuenta. ", + "Error while creating device token" : "Se presentó un error al crear la ficha en el dispositivo", + "Error while deleting the token" : "Se presentó un error al borrar la ficha", + "App name" : "Nombre de la aplicación", + "Create new app password" : "Crear una nueva contraseña de aplicación", + "Use the credentials below to configure your app or device." : "Usa las siguientes credenciales para configurar tu aplicación o dispositivo. ", + "For security reasons this password will only be shown once." : "Por razones de seguridad esta contraseña sólo se mostrará una vez. ", + "Username" : "Usuario", + "Password" : "Contraseña", + "Done" : "Terminado", + "Copied!" : "¡Copiado!", + "Copy" : "Copiar", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Las aplicaciones oficiales son desarrolladas por y dentro de la comunidad. Ofrecen una funcionalidad centralizada y se encuentran listas para ser usadas en producción. ", + "Official" : "Oficial", + "Remove" : "Eliminar", + "Disable" : "Deshabilitar", + "All" : "Todos", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión mínima de Nextcloud asignada. Esto será un error en el futuro.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión máxima de Nextcloud asignada. Esto será un error en el futuro.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Esta aplicación no puede ser instalada porque las siguientes dependencias no están satisfechas:", + "View in store" : "Ver en la tienda", + "Visit website" : "Visita el sitio web", + "Report a bug" : "Reporta un detalle", + "User documentation" : "Documentación del usuario", + "Admin documentation" : "Documentación del administrador", + "Developer documentation" : "Documentación del desarrollador", + "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Enable all" : "Habilitar todo", + "Enable" : "Habilitar", + "The app will be downloaded from the app store" : "La aplicación será descargada de la tienda de aplicaciones <app store>", + "New password" : "Nueva contraseña", + "{size} used" : "{size} usado", + "Email" : "Correo electrónico", + "Group admin for" : "Administrador del grupo para", + "Quota" : "Cuota", + "Language" : "Idioma", + "Storage location" : "Úbicación del almacenamiento", + "User backend" : "Backend del usuario", + "Last login" : "Último inicio de sesión", + "Default quota" : "Cuota predeterminada", + "Your apps" : "Tus aplicaciones", + "Disabled apps" : "Aplicaciones deshabilitadas", + "Updates" : "Actualizaciones", + "App bundles" : "Paquetes de aplicación", + "Show last login" : "Mostrar último inicio de sesión", + "Show user backend" : "Mostrar backend del usuario", + "Admins" : "Administradores", + "Everyone" : "Todos", + "Add group" : "Agregar grupo", + "An error occured during the request. Unable to proceed." : "Se presentó un error durante la solicitud. No es posible proceder.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "La aplicación ha sido habilitada pero necesita ser actualizada. Serás redireccionado a la página de actualización en 5 segundos. ", + "App update" : "Actualización de la aplicación", + "Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor", + "SSL Root Certificates" : "Certificado SSL Raíz", + "Common Name" : "Nombre común", + "Valid until" : "Válido hasta", + "Issued By" : "Levantado Por", + "Valid until %s" : "Válido hasta %s", + "Import root certificate" : "Importar certificado raíz", + "Administrator documentation" : "Documentación del adminsitrador", + "Forum" : "Foro", + "None" : "Ninguno", + "Login" : "Iniciar sesión", + "Plain" : "Plano", + "NT LAN Manager" : "Administrador de LAN NT", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Servidor de correo electrónico", + "Open documentation" : "Abrir documentación", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Es importante preparar este servidor para poder enviar correos electrónicos, como para restablecer contraseñas y notificaciones. ", + "Send mode" : "Modo de envío", + "Encryption" : "Encripción", + "From address" : "De la dirección", + "mail" : "correo", + "Authentication method" : "Método de autenticación", + "Authentication required" : "Autenticación requerida", + "Server address" : "Dirección del servidor", + "Port" : "Puerto", + "Credentials" : "Credenciales", + "SMTP Username" : "Usuario SMTP", + "SMTP Password" : "Contraseña SMTP", + "Test email settings" : "Probar las configuraciones de correo electrónico", + "Send email" : "Enviar correo electrónico", + "Security & setup warnings" : "Advertencias de seguridad y configuración", + "All checks passed." : "Pasaron todas las verificaciones. ", + "Version" : "Versión", + "Server-side encryption" : "Encripción del lado del servidor", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "La encripción del lado del servidor hace posible encriptar archivos que serán cargados a este servidor. Esto trae consigo algunas limitaciónes como penalizaciones en el desemeño, asi que habilítalo sólo si es necesario. ", + "Enable server-side encryption" : "Habilitar encripción del lado del servidor", + "Please read carefully before activating server-side encryption: " : "Por favor lee detenidamente antes de activar la encripción del lado de servidor:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Una vez que la encripción se encuentre habilitada, todos lo archivos cargados al servidor desde ese momento en tiempo, se encriptarán en el servidor. Sólo será posible deshabilitar la encripción en una fecha posterior si el modulo de encripción activo soporta esa funcionalidad y si todas las preciondiciones están satisfechas (ejem. establecer una llave de recuperación).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "La encripción por sí sola no garantiza la seguridad del sistema. Por favor consulta la documentación para mayores informes de cómo funciona la aplicación de encripción y de los casos de uso soportados. ", + "Be aware that encryption always increases the file size." : "Por favor considera que la encripción siempre aumenta el tamaño de los archivos. ", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Siempre es una buena idea generar respaldos de tus datos, en caso de tener encripción asegúrate de respaldar las llaves de encripción junto con tus datos. ", + "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", + "Enable encryption" : "Habilitar encripción", + "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", + "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Necesitas migrar tus llaves de encripción de la encripción anterior (ownCloud <= 8.0) a la actual. Por favor habilita el \"Módulo de encripción predeterminado\" y ejecuta el comando 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Necesitas migar tus llaves de encripción de la encripción anterior (ownCloud <=8.0) a la actual. ", + "Start migration" : "Iniciar migración", + "Background jobs" : "Trabajos en segundo plano", + "Last job ran %s." : "El último trabajo corrió %s.", + "Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ", + "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ", + "Execute one task with each page loaded" : "Ejecutar una tarea con cada página cargada", + "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ", + "Sharing" : "Compartiendo", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", + "Allow apps to use the Share API" : "Permitir que las aplicaciones usen el API para Compartir", + "Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas", + "Allow public uploads" : "Permitir cargas públicas", + "Always ask for a password" : "Siempre pedir una contraseña", + "Enforce password protection" : "Forzar protección de contraseñas", + "Set default expiration date" : "Establecer la fecha de expiración predeterminada", + "Expire after " : "Expirar después de", + "days" : "días", + "Enforce expiration date" : "Forzar fecha de expiración", + "Allow resharing" : "Permitir volver a compartir", + "Allow sharing with groups" : "Permitir compartir con grupos", + "Restrict users to only share with users in their groups" : "Limitar a los usuarios a sólo compartir con otros usuarios en sus grupos", + "Exclude groups from sharing" : "Evitar que los grupos compartan", + "These groups will still be able to receive shares, but not to initiate them." : "Estos grupos aún podrán recibir elementos compartidos, pero no los podrán iniciar.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Permitir el autocompletado de usuarios en la ventana de diálogo de compartir. Si esto está deshabilitado, se deberá ingresar el correo electrónico o nombre completo. ", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Mostrar el texto de exención de responsabilidad legal en la página de carga de ligas públicas. (Sólo se muestra cuando la lista de archivos está oculta.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Este texto se mostrará en la página de carga de la liga pública cuando la lista de archivos esté oculta. ", + "Default share permissions" : "Permisos predeterminados para compartir", + "Personal" : "Personal", + "Administration" : "Administración", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Desarrollado por la {communityopen}comunidad Nextcloud {linkclose}, el {githubopen}código fuente {linkclose} está licenciado bajo {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Da un Like a nuestra página de Facebook", + "Follow us on Twitter" : "Síguenos en Twitter", + "Check out our blog" : "Visita nuestro blog", + "Subscribe to our newsletter" : "Suscribete a nuestro boletín", + "Profile picture" : "Foto de perfil", + "Upload new" : "Cargar nuevo", + "Select from Files" : "Seleccionar desde Archivos", + "Remove image" : "Eliminar imagen", + "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", + "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", + "Cancel" : "Cancelar", + "Choose as profile picture" : "Seleccionar como foto del perfil", + "Details" : "Detalles", + "You are using <strong>%s</strong>" : "Estás usando<strong>%s</strong>", + "Full name" : "Nombre completo", + "No display name set" : "No se ha establecido el nombre a desplegar", + "Your email address" : "Tu dirección de correo electrónico", + "No email address set" : "No se ha establecido la dirección de correo electrónico", + "For password reset and notifications" : "Para restablecer contraseña y notificaciones", + "Phone number" : "Número de teléfono", + "Your phone number" : "Su número telefónico", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "Website" : "Sitio web", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Cuenta de twitter @...", + "Help translate" : "Ayuda a traducir", + "Current password" : "Contraseña actual", + "Change password" : "Cambiar contraseña", + "Store credentials" : "Almacenar credenciales", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php está registrado en un servicio webcron para llamar a cron.php cada 15 minutos a través de HTTP. ", + "Use system cron service to call the cron.php file every 15 minutes." : "Usar el servicio cron del sistema para llamar al archivo cron.php cada 15 minutos. " +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} \ No newline at end of file diff --git a/apps/settings/l10n/es_NI.js b/apps/settings/l10n/es_NI.js new file mode 100644 index 00000000000..3d9fadb1a06 --- /dev/null +++ b/apps/settings/l10n/es_NI.js @@ -0,0 +1,258 @@ +OC.L10N.register( + "settings", + { + "{actor} changed your password" : "{actor} ha cambiado tu contraseña", + "You changed your password" : "Cambiaste tu contraseña", + "Your password was reset by an administrator" : "Tu contraseña ha sido restablecida por un adminsitrador", + "{actor} changed your email address" : "{actor} ha cambiado tu dirección de correo electrónico", + "You changed your email address" : "Cambiaste tu dirección de correo electrónico", + "Your email address was changed by an administrator" : "Tu dirección de correo electrónico ha sido cambiada por un administrador", + "Security" : "Seguridad", + "You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado", + "Couldn't remove app." : "No fue posible eliminar la aplicación. ", + "Couldn't update app." : "No fue posible actualizar la aplicación.", + "Wrong password" : "Contraseña incorrecta", + "Saved" : "Guardado", + "No user supplied" : "No se proporcionó usuario alguno", + "Unable to change password" : "No fue posible cambiar la contraseña", + "Authentication error" : "Error de autenticación", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Por favor proporciona una contraseña de recuperación de administrador; de lo contrario toda la información del usuario se perderá. ", + "Wrong admin recovery password. Please check the password and try again." : "Contraseña de recuperación de administrador incorrecta. Por favor verificala e inténtalo de nuevo.", + "Backend doesn't support password change, but the user's encryption key was updated." : "El backend no soporta el cambio de contraseñas, pero la llave de encripción del usuario fue actualizada.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Instalando y actualizando aplicaciones por la tienda de aplicaciones o Compartido la Nube Federada", + "Federated Cloud Sharing" : "Compartir en la Nube Federada", + "Invalid SMTP password." : "Constraseña SMTP inválida. ", + "Email setting test" : "Prueba de ajustes de correo", + "Well done, %s!" : "¡Bien hecho, %s!", + "If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ", + "Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)", + "You need to set your user email before being able to send test emails." : "Requieres establecer tu correo electrónico antes de poder enviar correos electrónicos de prueba. ", + "Invalid mail address" : "Dirección de correo inválida", + "Settings saved" : "Se han guardado las configuraciones ", + "Unable to change full name" : "No fue posible cambiar el nombre completo", + "Unable to change email address" : "No fue posible cambiar la dirección de correo electrónico", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Para poder verificar tu cuenta de Twitter, publica el siguiente tweet en Twitter (por favor asegúrarte de publicar sin ninguna línea en blanco):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Para poder verificar tu sitio Web, agrega el siguiente contendio a tu web-root en '.well-known/CloudIdVerificationCode.txt' (por favor asegurate de que el texto completo este en una sóla línea):", + "%1$s changed your password on %2$s." : "%1$s cambió tu contraseña el %2$s.", + "Your password on %s was changed." : "Tu contraseña de %s fue cambiada. ", + "Your password on %s was reset by an administrator." : "Tu contraseña de %s fue restablecida por un administrador.", + "Password for %1$s changed on %2$s" : "La contraseña para %1$s fue cambiada el %2$s", + "Password changed for %s" : "La contraseña fue cambiada para %s", + "If you did not request this, please contact an administrator." : "Si no lo solicitaste, por favor contacta a un administrador. ", + "Your email address on %s was changed." : "Tu dirección de correo electrónico en %s fue cambiada. ", + "Your email address on %s was changed by an administrator." : "Tu dirección de correo electrónico en %s fue cambiada por un adminsitrador. ", + "Email address for %1$s changed on %2$s" : "La dirección de correo electrónico para %1$s fue cambiada el %2$s", + "Email address changed for %s" : "La dirección de correo electrónico fue cambiada para %s", + "The new email address is %s" : "La nueva dirección de correo electrónico es %s", + "Your %s account was created" : "Tu cuenta %s ha sido creada", + "Welcome aboard" : "Bienvenido a bordo", + "Welcome aboard %s" : "Bienvenido a bordo %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Bienvenido a tu cuenta %s, puedes agregar, proteger y compartir tus datos.", + "Your username is: %s" : "Tu Usuario es: %s", + "Set your password" : "Establece tu contraseña", + "Go to %s" : "Ir a %s", + "Install Client" : "Instalar el cliente", + "Delete" : "Borrar", + "Unlimited" : "Ilimitado", + "Verifying …" : "Verificando ...", + "Verify" : "Verificar", + "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración", + "Migration started …" : "La migración ha comenzado ...", + "Not saved" : "No guardado", + "Sending…" : "Enviando...", + "Email sent" : "Correo electrónico enviado", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Se presentó un error. Por favor carga un certificado PEM con codificación ASCII", + "Valid until {date}" : "Válido hasta {date}", + "Local" : "Local", + "Private" : "Privado", + "Only visible to local users" : "Visible sólo para usuarios locales", + "Only visible to you" : "Sólo visible para ti", + "Contacts" : "Contactos", + "Visible to local users and to trusted servers" : "Visible para usuarios locales y para servidores de confianza", + "Public" : "Público", + "Will be synced to a global and public address book" : "Será sincronizado a una libreta de direcciones global y pública", + "Very weak password" : "Contraseña muy débil", + "Weak password" : "Contraseña débil", + "So-so password" : "Contraseña aceptable", + "Good password" : "Buena contraseña", + "Strong password" : "Contraseña fuerte", + "Select a profile picture" : "Selecciona una imagen de perfil", + "Groups" : "Grupos", + "Limit to groups" : "Limitar a grupos", + "Allow filesystem access" : "Permitir acceso al sistema de archivos", + "Revoke" : "Revocar", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome para Android", + "Sync client - {os}" : "Sync client - {os}", + "This session" : "Esta sesión", + "Device" : "Dispositivo", + "Last activity" : "Última actividad", + "Web, desktop and mobile clients currently logged in to your account." : "Clientes web, de escritorio y móviles han iniciado sesión en tu cuenta. ", + "Error while creating device token" : "Se presentó un error al crear la ficha en el dispositivo", + "Error while deleting the token" : "Se presentó un error al borrar la ficha", + "App name" : "Nombre de la aplicación", + "Create new app password" : "Crear una nueva contraseña de aplicación", + "Use the credentials below to configure your app or device." : "Usa las siguientes credenciales para configurar tu aplicación o dispositivo. ", + "For security reasons this password will only be shown once." : "Por razones de seguridad esta contraseña sólo se mostrará una vez. ", + "Username" : "Usuario", + "Password" : "Contraseña", + "Done" : "Terminado", + "Copied!" : "¡Copiado!", + "Copy" : "Copiar", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Las aplicaciones oficiales son desarrolladas por y dentro de la comunidad. Ofrecen una funcionalidad centralizada y se encuentran listas para ser usadas en producción. ", + "Official" : "Oficial", + "Remove" : "Eliminar", + "Disable" : "Deshabilitar", + "All" : "Todos", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión mínima de Nextcloud asignada. Esto será un error en el futuro.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión máxima de Nextcloud asignada. Esto será un error en el futuro.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Esta aplicación no puede ser instalada porque las siguientes dependencias no están satisfechas:", + "View in store" : "Ver en la tienda", + "Visit website" : "Visita el sitio web", + "Report a bug" : "Reporta un detalle", + "User documentation" : "Documentación del usuario", + "Admin documentation" : "Documentación del administrador", + "Developer documentation" : "Documentación del desarrollador", + "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Enable all" : "Habilitar todo", + "Enable" : "Habilitar", + "The app will be downloaded from the app store" : "La aplicación será descargada de la tienda de aplicaciones <app store>", + "New password" : "Nueva contraseña", + "{size} used" : "{size} usado", + "Email" : "Correo electrónico", + "Group admin for" : "Administrador del grupo para", + "Quota" : "Cuota", + "Language" : "Idioma", + "Storage location" : "Úbicación del almacenamiento", + "User backend" : "Backend del usuario", + "Last login" : "Último inicio de sesión", + "Default quota" : "Cuota predeterminada", + "Your apps" : "Tus aplicaciones", + "Disabled apps" : "Aplicaciones deshabilitadas", + "Updates" : "Actualizaciones", + "App bundles" : "Paquetes de aplicación", + "Show last login" : "Mostrar último inicio de sesión", + "Show user backend" : "Mostrar backend del usuario", + "Admins" : "Administradores", + "Everyone" : "Todos", + "Add group" : "Agregar grupo", + "Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor", + "SSL Root Certificates" : "Certificado SSL Raíz", + "Common Name" : "Nombre común", + "Valid until" : "Válido hasta", + "Issued By" : "Levantado Por", + "Valid until %s" : "Válido hasta %s", + "Import root certificate" : "Importar certificado raíz", + "Administrator documentation" : "Documentación del adminsitrador", + "Forum" : "Foro", + "None" : "Ninguno", + "Login" : "Iniciar sesión", + "Plain" : "Plano", + "NT LAN Manager" : "Administrador de LAN NT", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Servidor de correo electrónico", + "Open documentation" : "Abrir documentación", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Es importante preparar este servidor para poder enviar correos electrónicos, como para restablecer contraseñas y notificaciones. ", + "Send mode" : "Modo de envío", + "Encryption" : "Encripción", + "From address" : "De la dirección", + "mail" : "correo", + "Authentication method" : "Método de autenticación", + "Authentication required" : "Autenticación requerida", + "Server address" : "Dirección del servidor", + "Port" : "Puerto", + "Credentials" : "Credenciales", + "SMTP Username" : "Usuario SMTP", + "SMTP Password" : "Contraseña SMTP", + "Test email settings" : "Probar las configuraciones de correo electrónico", + "Send email" : "Enviar correo electrónico", + "Security & setup warnings" : "Advertencias de seguridad y configuración", + "All checks passed." : "Pasaron todas las verificaciones. ", + "Version" : "Versión", + "Server-side encryption" : "Encripción del lado del servidor", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "La encripción del lado del servidor hace posible encriptar archivos que serán cargados a este servidor. Esto trae consigo algunas limitaciónes como penalizaciones en el desemeño, asi que habilítalo sólo si es necesario. ", + "Enable server-side encryption" : "Habilitar encripción del lado del servidor", + "Please read carefully before activating server-side encryption: " : "Por favor lee detenidamente antes de activar la encripción del lado de servidor:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Una vez que la encripción se encuentre habilitada, todos lo archivos cargados al servidor desde ese momento en tiempo, se encriptarán en el servidor. Sólo será posible deshabilitar la encripción en una fecha posterior si el modulo de encripción activo soporta esa funcionalidad y si todas las preciondiciones están satisfechas (ejem. establecer una llave de recuperación).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "La encripción por sí sola no garantiza la seguridad del sistema. Por favor consulta la documentación para mayores informes de cómo funciona la aplicación de encripción y de los casos de uso soportados. ", + "Be aware that encryption always increases the file size." : "Por favor considera que la encripción siempre aumenta el tamaño de los archivos. ", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Siempre es una buena idea generar respaldos de tus datos, en caso de tener encripción asegúrate de respaldar las llaves de encripción junto con tus datos. ", + "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", + "Enable encryption" : "Habilitar encripción", + "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", + "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Necesitas migrar tus llaves de encripción de la encripción anterior (ownCloud <= 8.0) a la actual. Por favor habilita el \"Módulo de encripción predeterminado\" y ejecuta el comando 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Necesitas migar tus llaves de encripción de la encripción anterior (ownCloud <=8.0) a la actual. ", + "Start migration" : "Iniciar migración", + "Background jobs" : "Trabajos en segundo plano", + "Last job ran %s." : "El último trabajo corrió %s.", + "Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ", + "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ", + "Execute one task with each page loaded" : "Ejecutar una tarea con cada página cargada", + "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ", + "Sharing" : "Compartiendo", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", + "Allow apps to use the Share API" : "Permitir que las aplicaciones usen el API para Compartir", + "Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas", + "Allow public uploads" : "Permitir cargas públicas", + "Always ask for a password" : "Siempre pedir una contraseña", + "Enforce password protection" : "Forzar protección de contraseñas", + "Set default expiration date" : "Establecer la fecha de expiración predeterminada", + "Expire after " : "Expirar después de", + "days" : "días", + "Enforce expiration date" : "Forzar fecha de expiración", + "Allow resharing" : "Permitir volver a compartir", + "Allow sharing with groups" : "Permitir compartir con grupos", + "Restrict users to only share with users in their groups" : "Limitar a los usuarios a sólo compartir con otros usuarios en sus grupos", + "Exclude groups from sharing" : "Evitar que los grupos compartan", + "These groups will still be able to receive shares, but not to initiate them." : "Estos grupos aún podrán recibir elementos compartidos, pero no los podrán iniciar.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Permitir el autocompletado de usuarios en la ventana de diálogo de compartir. Si esto está deshabilitado, se deberá ingresar el correo electrónico o nombre completo. ", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Mostrar el texto de exención de responsabilidad legal en la página de carga de ligas públicas. (Sólo se muestra cuando la lista de archivos está oculta.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Este texto se mostrará en la página de carga de la liga pública cuando la lista de archivos esté oculta. ", + "Personal" : "Personal", + "Administration" : "Administración", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Desarrollado por la {communityopen}comunidad Nextcloud {linkclose}, el {githubopen}código fuente {linkclose} está licenciado bajo {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Da un Like a nuestra página de Facebook", + "Follow us on Twitter" : "Síguenos en Twitter", + "Check out our blog" : "Visita nuestro blog", + "Subscribe to our newsletter" : "Suscribete a nuestro boletín", + "Profile picture" : "Foto de perfil", + "Upload new" : "Cargar nuevo", + "Select from Files" : "Seleccionar desde Archivos", + "Remove image" : "Eliminar imagen", + "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", + "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", + "Cancel" : "Cancelar", + "Choose as profile picture" : "Seleccionar como foto del perfil", + "Full name" : "Nombre completo", + "No display name set" : "No se ha establecido el nombre a desplegar", + "Your email address" : "Tu dirección de correo electrónico", + "No email address set" : "No se ha establecido la dirección de correo electrónico", + "For password reset and notifications" : "Para restablecer contraseña y notificaciones", + "Phone number" : "Número de teléfono", + "Your phone number" : "Su número telefónico", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "Website" : "Sitio web", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Cuenta de twitter @...", + "Help translate" : "Ayuda a traducir", + "Current password" : "Contraseña actual", + "Change password" : "Cambiar contraseña", + "Store credentials" : "Almacenar credenciales", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php está registrado en un servicio webcron para llamar a cron.php cada 15 minutos a través de HTTP. ", + "Use system cron service to call the cron.php file every 15 minutes." : "Usar el servicio cron del sistema para llamar al archivo cron.php cada 15 minutos. " +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/es_NI.json b/apps/settings/l10n/es_NI.json new file mode 100644 index 00000000000..072220b24af --- /dev/null +++ b/apps/settings/l10n/es_NI.json @@ -0,0 +1,256 @@ +{ "translations": { + "{actor} changed your password" : "{actor} ha cambiado tu contraseña", + "You changed your password" : "Cambiaste tu contraseña", + "Your password was reset by an administrator" : "Tu contraseña ha sido restablecida por un adminsitrador", + "{actor} changed your email address" : "{actor} ha cambiado tu dirección de correo electrónico", + "You changed your email address" : "Cambiaste tu dirección de correo electrónico", + "Your email address was changed by an administrator" : "Tu dirección de correo electrónico ha sido cambiada por un administrador", + "Security" : "Seguridad", + "You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado", + "Couldn't remove app." : "No fue posible eliminar la aplicación. ", + "Couldn't update app." : "No fue posible actualizar la aplicación.", + "Wrong password" : "Contraseña incorrecta", + "Saved" : "Guardado", + "No user supplied" : "No se proporcionó usuario alguno", + "Unable to change password" : "No fue posible cambiar la contraseña", + "Authentication error" : "Error de autenticación", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Por favor proporciona una contraseña de recuperación de administrador; de lo contrario toda la información del usuario se perderá. ", + "Wrong admin recovery password. Please check the password and try again." : "Contraseña de recuperación de administrador incorrecta. Por favor verificala e inténtalo de nuevo.", + "Backend doesn't support password change, but the user's encryption key was updated." : "El backend no soporta el cambio de contraseñas, pero la llave de encripción del usuario fue actualizada.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Instalando y actualizando aplicaciones por la tienda de aplicaciones o Compartido la Nube Federada", + "Federated Cloud Sharing" : "Compartir en la Nube Federada", + "Invalid SMTP password." : "Constraseña SMTP inválida. ", + "Email setting test" : "Prueba de ajustes de correo", + "Well done, %s!" : "¡Bien hecho, %s!", + "If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ", + "Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)", + "You need to set your user email before being able to send test emails." : "Requieres establecer tu correo electrónico antes de poder enviar correos electrónicos de prueba. ", + "Invalid mail address" : "Dirección de correo inválida", + "Settings saved" : "Se han guardado las configuraciones ", + "Unable to change full name" : "No fue posible cambiar el nombre completo", + "Unable to change email address" : "No fue posible cambiar la dirección de correo electrónico", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Para poder verificar tu cuenta de Twitter, publica el siguiente tweet en Twitter (por favor asegúrarte de publicar sin ninguna línea en blanco):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Para poder verificar tu sitio Web, agrega el siguiente contendio a tu web-root en '.well-known/CloudIdVerificationCode.txt' (por favor asegurate de que el texto completo este en una sóla línea):", + "%1$s changed your password on %2$s." : "%1$s cambió tu contraseña el %2$s.", + "Your password on %s was changed." : "Tu contraseña de %s fue cambiada. ", + "Your password on %s was reset by an administrator." : "Tu contraseña de %s fue restablecida por un administrador.", + "Password for %1$s changed on %2$s" : "La contraseña para %1$s fue cambiada el %2$s", + "Password changed for %s" : "La contraseña fue cambiada para %s", + "If you did not request this, please contact an administrator." : "Si no lo solicitaste, por favor contacta a un administrador. ", + "Your email address on %s was changed." : "Tu dirección de correo electrónico en %s fue cambiada. ", + "Your email address on %s was changed by an administrator." : "Tu dirección de correo electrónico en %s fue cambiada por un adminsitrador. ", + "Email address for %1$s changed on %2$s" : "La dirección de correo electrónico para %1$s fue cambiada el %2$s", + "Email address changed for %s" : "La dirección de correo electrónico fue cambiada para %s", + "The new email address is %s" : "La nueva dirección de correo electrónico es %s", + "Your %s account was created" : "Tu cuenta %s ha sido creada", + "Welcome aboard" : "Bienvenido a bordo", + "Welcome aboard %s" : "Bienvenido a bordo %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Bienvenido a tu cuenta %s, puedes agregar, proteger y compartir tus datos.", + "Your username is: %s" : "Tu Usuario es: %s", + "Set your password" : "Establece tu contraseña", + "Go to %s" : "Ir a %s", + "Install Client" : "Instalar el cliente", + "Delete" : "Borrar", + "Unlimited" : "Ilimitado", + "Verifying …" : "Verificando ...", + "Verify" : "Verificar", + "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración", + "Migration started …" : "La migración ha comenzado ...", + "Not saved" : "No guardado", + "Sending…" : "Enviando...", + "Email sent" : "Correo electrónico enviado", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Se presentó un error. Por favor carga un certificado PEM con codificación ASCII", + "Valid until {date}" : "Válido hasta {date}", + "Local" : "Local", + "Private" : "Privado", + "Only visible to local users" : "Visible sólo para usuarios locales", + "Only visible to you" : "Sólo visible para ti", + "Contacts" : "Contactos", + "Visible to local users and to trusted servers" : "Visible para usuarios locales y para servidores de confianza", + "Public" : "Público", + "Will be synced to a global and public address book" : "Será sincronizado a una libreta de direcciones global y pública", + "Very weak password" : "Contraseña muy débil", + "Weak password" : "Contraseña débil", + "So-so password" : "Contraseña aceptable", + "Good password" : "Buena contraseña", + "Strong password" : "Contraseña fuerte", + "Select a profile picture" : "Selecciona una imagen de perfil", + "Groups" : "Grupos", + "Limit to groups" : "Limitar a grupos", + "Allow filesystem access" : "Permitir acceso al sistema de archivos", + "Revoke" : "Revocar", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome para Android", + "Sync client - {os}" : "Sync client - {os}", + "This session" : "Esta sesión", + "Device" : "Dispositivo", + "Last activity" : "Última actividad", + "Web, desktop and mobile clients currently logged in to your account." : "Clientes web, de escritorio y móviles han iniciado sesión en tu cuenta. ", + "Error while creating device token" : "Se presentó un error al crear la ficha en el dispositivo", + "Error while deleting the token" : "Se presentó un error al borrar la ficha", + "App name" : "Nombre de la aplicación", + "Create new app password" : "Crear una nueva contraseña de aplicación", + "Use the credentials below to configure your app or device." : "Usa las siguientes credenciales para configurar tu aplicación o dispositivo. ", + "For security reasons this password will only be shown once." : "Por razones de seguridad esta contraseña sólo se mostrará una vez. ", + "Username" : "Usuario", + "Password" : "Contraseña", + "Done" : "Terminado", + "Copied!" : "¡Copiado!", + "Copy" : "Copiar", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Las aplicaciones oficiales son desarrolladas por y dentro de la comunidad. Ofrecen una funcionalidad centralizada y se encuentran listas para ser usadas en producción. ", + "Official" : "Oficial", + "Remove" : "Eliminar", + "Disable" : "Deshabilitar", + "All" : "Todos", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión mínima de Nextcloud asignada. Esto será un error en el futuro.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión máxima de Nextcloud asignada. Esto será un error en el futuro.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Esta aplicación no puede ser instalada porque las siguientes dependencias no están satisfechas:", + "View in store" : "Ver en la tienda", + "Visit website" : "Visita el sitio web", + "Report a bug" : "Reporta un detalle", + "User documentation" : "Documentación del usuario", + "Admin documentation" : "Documentación del administrador", + "Developer documentation" : "Documentación del desarrollador", + "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Enable all" : "Habilitar todo", + "Enable" : "Habilitar", + "The app will be downloaded from the app store" : "La aplicación será descargada de la tienda de aplicaciones <app store>", + "New password" : "Nueva contraseña", + "{size} used" : "{size} usado", + "Email" : "Correo electrónico", + "Group admin for" : "Administrador del grupo para", + "Quota" : "Cuota", + "Language" : "Idioma", + "Storage location" : "Úbicación del almacenamiento", + "User backend" : "Backend del usuario", + "Last login" : "Último inicio de sesión", + "Default quota" : "Cuota predeterminada", + "Your apps" : "Tus aplicaciones", + "Disabled apps" : "Aplicaciones deshabilitadas", + "Updates" : "Actualizaciones", + "App bundles" : "Paquetes de aplicación", + "Show last login" : "Mostrar último inicio de sesión", + "Show user backend" : "Mostrar backend del usuario", + "Admins" : "Administradores", + "Everyone" : "Todos", + "Add group" : "Agregar grupo", + "Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor", + "SSL Root Certificates" : "Certificado SSL Raíz", + "Common Name" : "Nombre común", + "Valid until" : "Válido hasta", + "Issued By" : "Levantado Por", + "Valid until %s" : "Válido hasta %s", + "Import root certificate" : "Importar certificado raíz", + "Administrator documentation" : "Documentación del adminsitrador", + "Forum" : "Foro", + "None" : "Ninguno", + "Login" : "Iniciar sesión", + "Plain" : "Plano", + "NT LAN Manager" : "Administrador de LAN NT", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Servidor de correo electrónico", + "Open documentation" : "Abrir documentación", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Es importante preparar este servidor para poder enviar correos electrónicos, como para restablecer contraseñas y notificaciones. ", + "Send mode" : "Modo de envío", + "Encryption" : "Encripción", + "From address" : "De la dirección", + "mail" : "correo", + "Authentication method" : "Método de autenticación", + "Authentication required" : "Autenticación requerida", + "Server address" : "Dirección del servidor", + "Port" : "Puerto", + "Credentials" : "Credenciales", + "SMTP Username" : "Usuario SMTP", + "SMTP Password" : "Contraseña SMTP", + "Test email settings" : "Probar las configuraciones de correo electrónico", + "Send email" : "Enviar correo electrónico", + "Security & setup warnings" : "Advertencias de seguridad y configuración", + "All checks passed." : "Pasaron todas las verificaciones. ", + "Version" : "Versión", + "Server-side encryption" : "Encripción del lado del servidor", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "La encripción del lado del servidor hace posible encriptar archivos que serán cargados a este servidor. Esto trae consigo algunas limitaciónes como penalizaciones en el desemeño, asi que habilítalo sólo si es necesario. ", + "Enable server-side encryption" : "Habilitar encripción del lado del servidor", + "Please read carefully before activating server-side encryption: " : "Por favor lee detenidamente antes de activar la encripción del lado de servidor:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Una vez que la encripción se encuentre habilitada, todos lo archivos cargados al servidor desde ese momento en tiempo, se encriptarán en el servidor. Sólo será posible deshabilitar la encripción en una fecha posterior si el modulo de encripción activo soporta esa funcionalidad y si todas las preciondiciones están satisfechas (ejem. establecer una llave de recuperación).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "La encripción por sí sola no garantiza la seguridad del sistema. Por favor consulta la documentación para mayores informes de cómo funciona la aplicación de encripción y de los casos de uso soportados. ", + "Be aware that encryption always increases the file size." : "Por favor considera que la encripción siempre aumenta el tamaño de los archivos. ", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Siempre es una buena idea generar respaldos de tus datos, en caso de tener encripción asegúrate de respaldar las llaves de encripción junto con tus datos. ", + "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", + "Enable encryption" : "Habilitar encripción", + "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", + "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Necesitas migrar tus llaves de encripción de la encripción anterior (ownCloud <= 8.0) a la actual. Por favor habilita el \"Módulo de encripción predeterminado\" y ejecuta el comando 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Necesitas migar tus llaves de encripción de la encripción anterior (ownCloud <=8.0) a la actual. ", + "Start migration" : "Iniciar migración", + "Background jobs" : "Trabajos en segundo plano", + "Last job ran %s." : "El último trabajo corrió %s.", + "Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ", + "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ", + "Execute one task with each page loaded" : "Ejecutar una tarea con cada página cargada", + "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ", + "Sharing" : "Compartiendo", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", + "Allow apps to use the Share API" : "Permitir que las aplicaciones usen el API para Compartir", + "Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas", + "Allow public uploads" : "Permitir cargas públicas", + "Always ask for a password" : "Siempre pedir una contraseña", + "Enforce password protection" : "Forzar protección de contraseñas", + "Set default expiration date" : "Establecer la fecha de expiración predeterminada", + "Expire after " : "Expirar después de", + "days" : "días", + "Enforce expiration date" : "Forzar fecha de expiración", + "Allow resharing" : "Permitir volver a compartir", + "Allow sharing with groups" : "Permitir compartir con grupos", + "Restrict users to only share with users in their groups" : "Limitar a los usuarios a sólo compartir con otros usuarios en sus grupos", + "Exclude groups from sharing" : "Evitar que los grupos compartan", + "These groups will still be able to receive shares, but not to initiate them." : "Estos grupos aún podrán recibir elementos compartidos, pero no los podrán iniciar.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Permitir el autocompletado de usuarios en la ventana de diálogo de compartir. Si esto está deshabilitado, se deberá ingresar el correo electrónico o nombre completo. ", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Mostrar el texto de exención de responsabilidad legal en la página de carga de ligas públicas. (Sólo se muestra cuando la lista de archivos está oculta.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Este texto se mostrará en la página de carga de la liga pública cuando la lista de archivos esté oculta. ", + "Personal" : "Personal", + "Administration" : "Administración", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Desarrollado por la {communityopen}comunidad Nextcloud {linkclose}, el {githubopen}código fuente {linkclose} está licenciado bajo {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Da un Like a nuestra página de Facebook", + "Follow us on Twitter" : "Síguenos en Twitter", + "Check out our blog" : "Visita nuestro blog", + "Subscribe to our newsletter" : "Suscribete a nuestro boletín", + "Profile picture" : "Foto de perfil", + "Upload new" : "Cargar nuevo", + "Select from Files" : "Seleccionar desde Archivos", + "Remove image" : "Eliminar imagen", + "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", + "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", + "Cancel" : "Cancelar", + "Choose as profile picture" : "Seleccionar como foto del perfil", + "Full name" : "Nombre completo", + "No display name set" : "No se ha establecido el nombre a desplegar", + "Your email address" : "Tu dirección de correo electrónico", + "No email address set" : "No se ha establecido la dirección de correo electrónico", + "For password reset and notifications" : "Para restablecer contraseña y notificaciones", + "Phone number" : "Número de teléfono", + "Your phone number" : "Su número telefónico", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "Website" : "Sitio web", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Cuenta de twitter @...", + "Help translate" : "Ayuda a traducir", + "Current password" : "Contraseña actual", + "Change password" : "Cambiar contraseña", + "Store credentials" : "Almacenar credenciales", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php está registrado en un servicio webcron para llamar a cron.php cada 15 minutos a través de HTTP. ", + "Use system cron service to call the cron.php file every 15 minutes." : "Usar el servicio cron del sistema para llamar al archivo cron.php cada 15 minutos. " +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} \ No newline at end of file diff --git a/apps/settings/l10n/es_PA.js b/apps/settings/l10n/es_PA.js new file mode 100644 index 00000000000..3d9fadb1a06 --- /dev/null +++ b/apps/settings/l10n/es_PA.js @@ -0,0 +1,258 @@ +OC.L10N.register( + "settings", + { + "{actor} changed your password" : "{actor} ha cambiado tu contraseña", + "You changed your password" : "Cambiaste tu contraseña", + "Your password was reset by an administrator" : "Tu contraseña ha sido restablecida por un adminsitrador", + "{actor} changed your email address" : "{actor} ha cambiado tu dirección de correo electrónico", + "You changed your email address" : "Cambiaste tu dirección de correo electrónico", + "Your email address was changed by an administrator" : "Tu dirección de correo electrónico ha sido cambiada por un administrador", + "Security" : "Seguridad", + "You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado", + "Couldn't remove app." : "No fue posible eliminar la aplicación. ", + "Couldn't update app." : "No fue posible actualizar la aplicación.", + "Wrong password" : "Contraseña incorrecta", + "Saved" : "Guardado", + "No user supplied" : "No se proporcionó usuario alguno", + "Unable to change password" : "No fue posible cambiar la contraseña", + "Authentication error" : "Error de autenticación", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Por favor proporciona una contraseña de recuperación de administrador; de lo contrario toda la información del usuario se perderá. ", + "Wrong admin recovery password. Please check the password and try again." : "Contraseña de recuperación de administrador incorrecta. Por favor verificala e inténtalo de nuevo.", + "Backend doesn't support password change, but the user's encryption key was updated." : "El backend no soporta el cambio de contraseñas, pero la llave de encripción del usuario fue actualizada.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Instalando y actualizando aplicaciones por la tienda de aplicaciones o Compartido la Nube Federada", + "Federated Cloud Sharing" : "Compartir en la Nube Federada", + "Invalid SMTP password." : "Constraseña SMTP inválida. ", + "Email setting test" : "Prueba de ajustes de correo", + "Well done, %s!" : "¡Bien hecho, %s!", + "If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ", + "Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)", + "You need to set your user email before being able to send test emails." : "Requieres establecer tu correo electrónico antes de poder enviar correos electrónicos de prueba. ", + "Invalid mail address" : "Dirección de correo inválida", + "Settings saved" : "Se han guardado las configuraciones ", + "Unable to change full name" : "No fue posible cambiar el nombre completo", + "Unable to change email address" : "No fue posible cambiar la dirección de correo electrónico", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Para poder verificar tu cuenta de Twitter, publica el siguiente tweet en Twitter (por favor asegúrarte de publicar sin ninguna línea en blanco):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Para poder verificar tu sitio Web, agrega el siguiente contendio a tu web-root en '.well-known/CloudIdVerificationCode.txt' (por favor asegurate de que el texto completo este en una sóla línea):", + "%1$s changed your password on %2$s." : "%1$s cambió tu contraseña el %2$s.", + "Your password on %s was changed." : "Tu contraseña de %s fue cambiada. ", + "Your password on %s was reset by an administrator." : "Tu contraseña de %s fue restablecida por un administrador.", + "Password for %1$s changed on %2$s" : "La contraseña para %1$s fue cambiada el %2$s", + "Password changed for %s" : "La contraseña fue cambiada para %s", + "If you did not request this, please contact an administrator." : "Si no lo solicitaste, por favor contacta a un administrador. ", + "Your email address on %s was changed." : "Tu dirección de correo electrónico en %s fue cambiada. ", + "Your email address on %s was changed by an administrator." : "Tu dirección de correo electrónico en %s fue cambiada por un adminsitrador. ", + "Email address for %1$s changed on %2$s" : "La dirección de correo electrónico para %1$s fue cambiada el %2$s", + "Email address changed for %s" : "La dirección de correo electrónico fue cambiada para %s", + "The new email address is %s" : "La nueva dirección de correo electrónico es %s", + "Your %s account was created" : "Tu cuenta %s ha sido creada", + "Welcome aboard" : "Bienvenido a bordo", + "Welcome aboard %s" : "Bienvenido a bordo %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Bienvenido a tu cuenta %s, puedes agregar, proteger y compartir tus datos.", + "Your username is: %s" : "Tu Usuario es: %s", + "Set your password" : "Establece tu contraseña", + "Go to %s" : "Ir a %s", + "Install Client" : "Instalar el cliente", + "Delete" : "Borrar", + "Unlimited" : "Ilimitado", + "Verifying …" : "Verificando ...", + "Verify" : "Verificar", + "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración", + "Migration started …" : "La migración ha comenzado ...", + "Not saved" : "No guardado", + "Sending…" : "Enviando...", + "Email sent" : "Correo electrónico enviado", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Se presentó un error. Por favor carga un certificado PEM con codificación ASCII", + "Valid until {date}" : "Válido hasta {date}", + "Local" : "Local", + "Private" : "Privado", + "Only visible to local users" : "Visible sólo para usuarios locales", + "Only visible to you" : "Sólo visible para ti", + "Contacts" : "Contactos", + "Visible to local users and to trusted servers" : "Visible para usuarios locales y para servidores de confianza", + "Public" : "Público", + "Will be synced to a global and public address book" : "Será sincronizado a una libreta de direcciones global y pública", + "Very weak password" : "Contraseña muy débil", + "Weak password" : "Contraseña débil", + "So-so password" : "Contraseña aceptable", + "Good password" : "Buena contraseña", + "Strong password" : "Contraseña fuerte", + "Select a profile picture" : "Selecciona una imagen de perfil", + "Groups" : "Grupos", + "Limit to groups" : "Limitar a grupos", + "Allow filesystem access" : "Permitir acceso al sistema de archivos", + "Revoke" : "Revocar", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome para Android", + "Sync client - {os}" : "Sync client - {os}", + "This session" : "Esta sesión", + "Device" : "Dispositivo", + "Last activity" : "Última actividad", + "Web, desktop and mobile clients currently logged in to your account." : "Clientes web, de escritorio y móviles han iniciado sesión en tu cuenta. ", + "Error while creating device token" : "Se presentó un error al crear la ficha en el dispositivo", + "Error while deleting the token" : "Se presentó un error al borrar la ficha", + "App name" : "Nombre de la aplicación", + "Create new app password" : "Crear una nueva contraseña de aplicación", + "Use the credentials below to configure your app or device." : "Usa las siguientes credenciales para configurar tu aplicación o dispositivo. ", + "For security reasons this password will only be shown once." : "Por razones de seguridad esta contraseña sólo se mostrará una vez. ", + "Username" : "Usuario", + "Password" : "Contraseña", + "Done" : "Terminado", + "Copied!" : "¡Copiado!", + "Copy" : "Copiar", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Las aplicaciones oficiales son desarrolladas por y dentro de la comunidad. Ofrecen una funcionalidad centralizada y se encuentran listas para ser usadas en producción. ", + "Official" : "Oficial", + "Remove" : "Eliminar", + "Disable" : "Deshabilitar", + "All" : "Todos", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión mínima de Nextcloud asignada. Esto será un error en el futuro.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión máxima de Nextcloud asignada. Esto será un error en el futuro.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Esta aplicación no puede ser instalada porque las siguientes dependencias no están satisfechas:", + "View in store" : "Ver en la tienda", + "Visit website" : "Visita el sitio web", + "Report a bug" : "Reporta un detalle", + "User documentation" : "Documentación del usuario", + "Admin documentation" : "Documentación del administrador", + "Developer documentation" : "Documentación del desarrollador", + "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Enable all" : "Habilitar todo", + "Enable" : "Habilitar", + "The app will be downloaded from the app store" : "La aplicación será descargada de la tienda de aplicaciones <app store>", + "New password" : "Nueva contraseña", + "{size} used" : "{size} usado", + "Email" : "Correo electrónico", + "Group admin for" : "Administrador del grupo para", + "Quota" : "Cuota", + "Language" : "Idioma", + "Storage location" : "Úbicación del almacenamiento", + "User backend" : "Backend del usuario", + "Last login" : "Último inicio de sesión", + "Default quota" : "Cuota predeterminada", + "Your apps" : "Tus aplicaciones", + "Disabled apps" : "Aplicaciones deshabilitadas", + "Updates" : "Actualizaciones", + "App bundles" : "Paquetes de aplicación", + "Show last login" : "Mostrar último inicio de sesión", + "Show user backend" : "Mostrar backend del usuario", + "Admins" : "Administradores", + "Everyone" : "Todos", + "Add group" : "Agregar grupo", + "Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor", + "SSL Root Certificates" : "Certificado SSL Raíz", + "Common Name" : "Nombre común", + "Valid until" : "Válido hasta", + "Issued By" : "Levantado Por", + "Valid until %s" : "Válido hasta %s", + "Import root certificate" : "Importar certificado raíz", + "Administrator documentation" : "Documentación del adminsitrador", + "Forum" : "Foro", + "None" : "Ninguno", + "Login" : "Iniciar sesión", + "Plain" : "Plano", + "NT LAN Manager" : "Administrador de LAN NT", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Servidor de correo electrónico", + "Open documentation" : "Abrir documentación", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Es importante preparar este servidor para poder enviar correos electrónicos, como para restablecer contraseñas y notificaciones. ", + "Send mode" : "Modo de envío", + "Encryption" : "Encripción", + "From address" : "De la dirección", + "mail" : "correo", + "Authentication method" : "Método de autenticación", + "Authentication required" : "Autenticación requerida", + "Server address" : "Dirección del servidor", + "Port" : "Puerto", + "Credentials" : "Credenciales", + "SMTP Username" : "Usuario SMTP", + "SMTP Password" : "Contraseña SMTP", + "Test email settings" : "Probar las configuraciones de correo electrónico", + "Send email" : "Enviar correo electrónico", + "Security & setup warnings" : "Advertencias de seguridad y configuración", + "All checks passed." : "Pasaron todas las verificaciones. ", + "Version" : "Versión", + "Server-side encryption" : "Encripción del lado del servidor", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "La encripción del lado del servidor hace posible encriptar archivos que serán cargados a este servidor. Esto trae consigo algunas limitaciónes como penalizaciones en el desemeño, asi que habilítalo sólo si es necesario. ", + "Enable server-side encryption" : "Habilitar encripción del lado del servidor", + "Please read carefully before activating server-side encryption: " : "Por favor lee detenidamente antes de activar la encripción del lado de servidor:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Una vez que la encripción se encuentre habilitada, todos lo archivos cargados al servidor desde ese momento en tiempo, se encriptarán en el servidor. Sólo será posible deshabilitar la encripción en una fecha posterior si el modulo de encripción activo soporta esa funcionalidad y si todas las preciondiciones están satisfechas (ejem. establecer una llave de recuperación).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "La encripción por sí sola no garantiza la seguridad del sistema. Por favor consulta la documentación para mayores informes de cómo funciona la aplicación de encripción y de los casos de uso soportados. ", + "Be aware that encryption always increases the file size." : "Por favor considera que la encripción siempre aumenta el tamaño de los archivos. ", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Siempre es una buena idea generar respaldos de tus datos, en caso de tener encripción asegúrate de respaldar las llaves de encripción junto con tus datos. ", + "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", + "Enable encryption" : "Habilitar encripción", + "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", + "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Necesitas migrar tus llaves de encripción de la encripción anterior (ownCloud <= 8.0) a la actual. Por favor habilita el \"Módulo de encripción predeterminado\" y ejecuta el comando 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Necesitas migar tus llaves de encripción de la encripción anterior (ownCloud <=8.0) a la actual. ", + "Start migration" : "Iniciar migración", + "Background jobs" : "Trabajos en segundo plano", + "Last job ran %s." : "El último trabajo corrió %s.", + "Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ", + "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ", + "Execute one task with each page loaded" : "Ejecutar una tarea con cada página cargada", + "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ", + "Sharing" : "Compartiendo", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", + "Allow apps to use the Share API" : "Permitir que las aplicaciones usen el API para Compartir", + "Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas", + "Allow public uploads" : "Permitir cargas públicas", + "Always ask for a password" : "Siempre pedir una contraseña", + "Enforce password protection" : "Forzar protección de contraseñas", + "Set default expiration date" : "Establecer la fecha de expiración predeterminada", + "Expire after " : "Expirar después de", + "days" : "días", + "Enforce expiration date" : "Forzar fecha de expiración", + "Allow resharing" : "Permitir volver a compartir", + "Allow sharing with groups" : "Permitir compartir con grupos", + "Restrict users to only share with users in their groups" : "Limitar a los usuarios a sólo compartir con otros usuarios en sus grupos", + "Exclude groups from sharing" : "Evitar que los grupos compartan", + "These groups will still be able to receive shares, but not to initiate them." : "Estos grupos aún podrán recibir elementos compartidos, pero no los podrán iniciar.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Permitir el autocompletado de usuarios en la ventana de diálogo de compartir. Si esto está deshabilitado, se deberá ingresar el correo electrónico o nombre completo. ", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Mostrar el texto de exención de responsabilidad legal en la página de carga de ligas públicas. (Sólo se muestra cuando la lista de archivos está oculta.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Este texto se mostrará en la página de carga de la liga pública cuando la lista de archivos esté oculta. ", + "Personal" : "Personal", + "Administration" : "Administración", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Desarrollado por la {communityopen}comunidad Nextcloud {linkclose}, el {githubopen}código fuente {linkclose} está licenciado bajo {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Da un Like a nuestra página de Facebook", + "Follow us on Twitter" : "Síguenos en Twitter", + "Check out our blog" : "Visita nuestro blog", + "Subscribe to our newsletter" : "Suscribete a nuestro boletín", + "Profile picture" : "Foto de perfil", + "Upload new" : "Cargar nuevo", + "Select from Files" : "Seleccionar desde Archivos", + "Remove image" : "Eliminar imagen", + "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", + "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", + "Cancel" : "Cancelar", + "Choose as profile picture" : "Seleccionar como foto del perfil", + "Full name" : "Nombre completo", + "No display name set" : "No se ha establecido el nombre a desplegar", + "Your email address" : "Tu dirección de correo electrónico", + "No email address set" : "No se ha establecido la dirección de correo electrónico", + "For password reset and notifications" : "Para restablecer contraseña y notificaciones", + "Phone number" : "Número de teléfono", + "Your phone number" : "Su número telefónico", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "Website" : "Sitio web", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Cuenta de twitter @...", + "Help translate" : "Ayuda a traducir", + "Current password" : "Contraseña actual", + "Change password" : "Cambiar contraseña", + "Store credentials" : "Almacenar credenciales", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php está registrado en un servicio webcron para llamar a cron.php cada 15 minutos a través de HTTP. ", + "Use system cron service to call the cron.php file every 15 minutes." : "Usar el servicio cron del sistema para llamar al archivo cron.php cada 15 minutos. " +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/es_PA.json b/apps/settings/l10n/es_PA.json new file mode 100644 index 00000000000..072220b24af --- /dev/null +++ b/apps/settings/l10n/es_PA.json @@ -0,0 +1,256 @@ +{ "translations": { + "{actor} changed your password" : "{actor} ha cambiado tu contraseña", + "You changed your password" : "Cambiaste tu contraseña", + "Your password was reset by an administrator" : "Tu contraseña ha sido restablecida por un adminsitrador", + "{actor} changed your email address" : "{actor} ha cambiado tu dirección de correo electrónico", + "You changed your email address" : "Cambiaste tu dirección de correo electrónico", + "Your email address was changed by an administrator" : "Tu dirección de correo electrónico ha sido cambiada por un administrador", + "Security" : "Seguridad", + "You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado", + "Couldn't remove app." : "No fue posible eliminar la aplicación. ", + "Couldn't update app." : "No fue posible actualizar la aplicación.", + "Wrong password" : "Contraseña incorrecta", + "Saved" : "Guardado", + "No user supplied" : "No se proporcionó usuario alguno", + "Unable to change password" : "No fue posible cambiar la contraseña", + "Authentication error" : "Error de autenticación", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Por favor proporciona una contraseña de recuperación de administrador; de lo contrario toda la información del usuario se perderá. ", + "Wrong admin recovery password. Please check the password and try again." : "Contraseña de recuperación de administrador incorrecta. Por favor verificala e inténtalo de nuevo.", + "Backend doesn't support password change, but the user's encryption key was updated." : "El backend no soporta el cambio de contraseñas, pero la llave de encripción del usuario fue actualizada.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Instalando y actualizando aplicaciones por la tienda de aplicaciones o Compartido la Nube Federada", + "Federated Cloud Sharing" : "Compartir en la Nube Federada", + "Invalid SMTP password." : "Constraseña SMTP inválida. ", + "Email setting test" : "Prueba de ajustes de correo", + "Well done, %s!" : "¡Bien hecho, %s!", + "If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ", + "Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)", + "You need to set your user email before being able to send test emails." : "Requieres establecer tu correo electrónico antes de poder enviar correos electrónicos de prueba. ", + "Invalid mail address" : "Dirección de correo inválida", + "Settings saved" : "Se han guardado las configuraciones ", + "Unable to change full name" : "No fue posible cambiar el nombre completo", + "Unable to change email address" : "No fue posible cambiar la dirección de correo electrónico", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Para poder verificar tu cuenta de Twitter, publica el siguiente tweet en Twitter (por favor asegúrarte de publicar sin ninguna línea en blanco):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Para poder verificar tu sitio Web, agrega el siguiente contendio a tu web-root en '.well-known/CloudIdVerificationCode.txt' (por favor asegurate de que el texto completo este en una sóla línea):", + "%1$s changed your password on %2$s." : "%1$s cambió tu contraseña el %2$s.", + "Your password on %s was changed." : "Tu contraseña de %s fue cambiada. ", + "Your password on %s was reset by an administrator." : "Tu contraseña de %s fue restablecida por un administrador.", + "Password for %1$s changed on %2$s" : "La contraseña para %1$s fue cambiada el %2$s", + "Password changed for %s" : "La contraseña fue cambiada para %s", + "If you did not request this, please contact an administrator." : "Si no lo solicitaste, por favor contacta a un administrador. ", + "Your email address on %s was changed." : "Tu dirección de correo electrónico en %s fue cambiada. ", + "Your email address on %s was changed by an administrator." : "Tu dirección de correo electrónico en %s fue cambiada por un adminsitrador. ", + "Email address for %1$s changed on %2$s" : "La dirección de correo electrónico para %1$s fue cambiada el %2$s", + "Email address changed for %s" : "La dirección de correo electrónico fue cambiada para %s", + "The new email address is %s" : "La nueva dirección de correo electrónico es %s", + "Your %s account was created" : "Tu cuenta %s ha sido creada", + "Welcome aboard" : "Bienvenido a bordo", + "Welcome aboard %s" : "Bienvenido a bordo %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Bienvenido a tu cuenta %s, puedes agregar, proteger y compartir tus datos.", + "Your username is: %s" : "Tu Usuario es: %s", + "Set your password" : "Establece tu contraseña", + "Go to %s" : "Ir a %s", + "Install Client" : "Instalar el cliente", + "Delete" : "Borrar", + "Unlimited" : "Ilimitado", + "Verifying …" : "Verificando ...", + "Verify" : "Verificar", + "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración", + "Migration started …" : "La migración ha comenzado ...", + "Not saved" : "No guardado", + "Sending…" : "Enviando...", + "Email sent" : "Correo electrónico enviado", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Se presentó un error. Por favor carga un certificado PEM con codificación ASCII", + "Valid until {date}" : "Válido hasta {date}", + "Local" : "Local", + "Private" : "Privado", + "Only visible to local users" : "Visible sólo para usuarios locales", + "Only visible to you" : "Sólo visible para ti", + "Contacts" : "Contactos", + "Visible to local users and to trusted servers" : "Visible para usuarios locales y para servidores de confianza", + "Public" : "Público", + "Will be synced to a global and public address book" : "Será sincronizado a una libreta de direcciones global y pública", + "Very weak password" : "Contraseña muy débil", + "Weak password" : "Contraseña débil", + "So-so password" : "Contraseña aceptable", + "Good password" : "Buena contraseña", + "Strong password" : "Contraseña fuerte", + "Select a profile picture" : "Selecciona una imagen de perfil", + "Groups" : "Grupos", + "Limit to groups" : "Limitar a grupos", + "Allow filesystem access" : "Permitir acceso al sistema de archivos", + "Revoke" : "Revocar", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome para Android", + "Sync client - {os}" : "Sync client - {os}", + "This session" : "Esta sesión", + "Device" : "Dispositivo", + "Last activity" : "Última actividad", + "Web, desktop and mobile clients currently logged in to your account." : "Clientes web, de escritorio y móviles han iniciado sesión en tu cuenta. ", + "Error while creating device token" : "Se presentó un error al crear la ficha en el dispositivo", + "Error while deleting the token" : "Se presentó un error al borrar la ficha", + "App name" : "Nombre de la aplicación", + "Create new app password" : "Crear una nueva contraseña de aplicación", + "Use the credentials below to configure your app or device." : "Usa las siguientes credenciales para configurar tu aplicación o dispositivo. ", + "For security reasons this password will only be shown once." : "Por razones de seguridad esta contraseña sólo se mostrará una vez. ", + "Username" : "Usuario", + "Password" : "Contraseña", + "Done" : "Terminado", + "Copied!" : "¡Copiado!", + "Copy" : "Copiar", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Las aplicaciones oficiales son desarrolladas por y dentro de la comunidad. Ofrecen una funcionalidad centralizada y se encuentran listas para ser usadas en producción. ", + "Official" : "Oficial", + "Remove" : "Eliminar", + "Disable" : "Deshabilitar", + "All" : "Todos", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión mínima de Nextcloud asignada. Esto será un error en el futuro.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión máxima de Nextcloud asignada. Esto será un error en el futuro.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Esta aplicación no puede ser instalada porque las siguientes dependencias no están satisfechas:", + "View in store" : "Ver en la tienda", + "Visit website" : "Visita el sitio web", + "Report a bug" : "Reporta un detalle", + "User documentation" : "Documentación del usuario", + "Admin documentation" : "Documentación del administrador", + "Developer documentation" : "Documentación del desarrollador", + "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Enable all" : "Habilitar todo", + "Enable" : "Habilitar", + "The app will be downloaded from the app store" : "La aplicación será descargada de la tienda de aplicaciones <app store>", + "New password" : "Nueva contraseña", + "{size} used" : "{size} usado", + "Email" : "Correo electrónico", + "Group admin for" : "Administrador del grupo para", + "Quota" : "Cuota", + "Language" : "Idioma", + "Storage location" : "Úbicación del almacenamiento", + "User backend" : "Backend del usuario", + "Last login" : "Último inicio de sesión", + "Default quota" : "Cuota predeterminada", + "Your apps" : "Tus aplicaciones", + "Disabled apps" : "Aplicaciones deshabilitadas", + "Updates" : "Actualizaciones", + "App bundles" : "Paquetes de aplicación", + "Show last login" : "Mostrar último inicio de sesión", + "Show user backend" : "Mostrar backend del usuario", + "Admins" : "Administradores", + "Everyone" : "Todos", + "Add group" : "Agregar grupo", + "Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor", + "SSL Root Certificates" : "Certificado SSL Raíz", + "Common Name" : "Nombre común", + "Valid until" : "Válido hasta", + "Issued By" : "Levantado Por", + "Valid until %s" : "Válido hasta %s", + "Import root certificate" : "Importar certificado raíz", + "Administrator documentation" : "Documentación del adminsitrador", + "Forum" : "Foro", + "None" : "Ninguno", + "Login" : "Iniciar sesión", + "Plain" : "Plano", + "NT LAN Manager" : "Administrador de LAN NT", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Servidor de correo electrónico", + "Open documentation" : "Abrir documentación", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Es importante preparar este servidor para poder enviar correos electrónicos, como para restablecer contraseñas y notificaciones. ", + "Send mode" : "Modo de envío", + "Encryption" : "Encripción", + "From address" : "De la dirección", + "mail" : "correo", + "Authentication method" : "Método de autenticación", + "Authentication required" : "Autenticación requerida", + "Server address" : "Dirección del servidor", + "Port" : "Puerto", + "Credentials" : "Credenciales", + "SMTP Username" : "Usuario SMTP", + "SMTP Password" : "Contraseña SMTP", + "Test email settings" : "Probar las configuraciones de correo electrónico", + "Send email" : "Enviar correo electrónico", + "Security & setup warnings" : "Advertencias de seguridad y configuración", + "All checks passed." : "Pasaron todas las verificaciones. ", + "Version" : "Versión", + "Server-side encryption" : "Encripción del lado del servidor", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "La encripción del lado del servidor hace posible encriptar archivos que serán cargados a este servidor. Esto trae consigo algunas limitaciónes como penalizaciones en el desemeño, asi que habilítalo sólo si es necesario. ", + "Enable server-side encryption" : "Habilitar encripción del lado del servidor", + "Please read carefully before activating server-side encryption: " : "Por favor lee detenidamente antes de activar la encripción del lado de servidor:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Una vez que la encripción se encuentre habilitada, todos lo archivos cargados al servidor desde ese momento en tiempo, se encriptarán en el servidor. Sólo será posible deshabilitar la encripción en una fecha posterior si el modulo de encripción activo soporta esa funcionalidad y si todas las preciondiciones están satisfechas (ejem. establecer una llave de recuperación).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "La encripción por sí sola no garantiza la seguridad del sistema. Por favor consulta la documentación para mayores informes de cómo funciona la aplicación de encripción y de los casos de uso soportados. ", + "Be aware that encryption always increases the file size." : "Por favor considera que la encripción siempre aumenta el tamaño de los archivos. ", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Siempre es una buena idea generar respaldos de tus datos, en caso de tener encripción asegúrate de respaldar las llaves de encripción junto con tus datos. ", + "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", + "Enable encryption" : "Habilitar encripción", + "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", + "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Necesitas migrar tus llaves de encripción de la encripción anterior (ownCloud <= 8.0) a la actual. Por favor habilita el \"Módulo de encripción predeterminado\" y ejecuta el comando 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Necesitas migar tus llaves de encripción de la encripción anterior (ownCloud <=8.0) a la actual. ", + "Start migration" : "Iniciar migración", + "Background jobs" : "Trabajos en segundo plano", + "Last job ran %s." : "El último trabajo corrió %s.", + "Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ", + "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ", + "Execute one task with each page loaded" : "Ejecutar una tarea con cada página cargada", + "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ", + "Sharing" : "Compartiendo", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", + "Allow apps to use the Share API" : "Permitir que las aplicaciones usen el API para Compartir", + "Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas", + "Allow public uploads" : "Permitir cargas públicas", + "Always ask for a password" : "Siempre pedir una contraseña", + "Enforce password protection" : "Forzar protección de contraseñas", + "Set default expiration date" : "Establecer la fecha de expiración predeterminada", + "Expire after " : "Expirar después de", + "days" : "días", + "Enforce expiration date" : "Forzar fecha de expiración", + "Allow resharing" : "Permitir volver a compartir", + "Allow sharing with groups" : "Permitir compartir con grupos", + "Restrict users to only share with users in their groups" : "Limitar a los usuarios a sólo compartir con otros usuarios en sus grupos", + "Exclude groups from sharing" : "Evitar que los grupos compartan", + "These groups will still be able to receive shares, but not to initiate them." : "Estos grupos aún podrán recibir elementos compartidos, pero no los podrán iniciar.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Permitir el autocompletado de usuarios en la ventana de diálogo de compartir. Si esto está deshabilitado, se deberá ingresar el correo electrónico o nombre completo. ", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Mostrar el texto de exención de responsabilidad legal en la página de carga de ligas públicas. (Sólo se muestra cuando la lista de archivos está oculta.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Este texto se mostrará en la página de carga de la liga pública cuando la lista de archivos esté oculta. ", + "Personal" : "Personal", + "Administration" : "Administración", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Desarrollado por la {communityopen}comunidad Nextcloud {linkclose}, el {githubopen}código fuente {linkclose} está licenciado bajo {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Da un Like a nuestra página de Facebook", + "Follow us on Twitter" : "Síguenos en Twitter", + "Check out our blog" : "Visita nuestro blog", + "Subscribe to our newsletter" : "Suscribete a nuestro boletín", + "Profile picture" : "Foto de perfil", + "Upload new" : "Cargar nuevo", + "Select from Files" : "Seleccionar desde Archivos", + "Remove image" : "Eliminar imagen", + "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", + "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", + "Cancel" : "Cancelar", + "Choose as profile picture" : "Seleccionar como foto del perfil", + "Full name" : "Nombre completo", + "No display name set" : "No se ha establecido el nombre a desplegar", + "Your email address" : "Tu dirección de correo electrónico", + "No email address set" : "No se ha establecido la dirección de correo electrónico", + "For password reset and notifications" : "Para restablecer contraseña y notificaciones", + "Phone number" : "Número de teléfono", + "Your phone number" : "Su número telefónico", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "Website" : "Sitio web", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Cuenta de twitter @...", + "Help translate" : "Ayuda a traducir", + "Current password" : "Contraseña actual", + "Change password" : "Cambiar contraseña", + "Store credentials" : "Almacenar credenciales", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php está registrado en un servicio webcron para llamar a cron.php cada 15 minutos a través de HTTP. ", + "Use system cron service to call the cron.php file every 15 minutes." : "Usar el servicio cron del sistema para llamar al archivo cron.php cada 15 minutos. " +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} \ No newline at end of file diff --git a/apps/settings/l10n/es_PE.js b/apps/settings/l10n/es_PE.js new file mode 100644 index 00000000000..3d9fadb1a06 --- /dev/null +++ b/apps/settings/l10n/es_PE.js @@ -0,0 +1,258 @@ +OC.L10N.register( + "settings", + { + "{actor} changed your password" : "{actor} ha cambiado tu contraseña", + "You changed your password" : "Cambiaste tu contraseña", + "Your password was reset by an administrator" : "Tu contraseña ha sido restablecida por un adminsitrador", + "{actor} changed your email address" : "{actor} ha cambiado tu dirección de correo electrónico", + "You changed your email address" : "Cambiaste tu dirección de correo electrónico", + "Your email address was changed by an administrator" : "Tu dirección de correo electrónico ha sido cambiada por un administrador", + "Security" : "Seguridad", + "You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado", + "Couldn't remove app." : "No fue posible eliminar la aplicación. ", + "Couldn't update app." : "No fue posible actualizar la aplicación.", + "Wrong password" : "Contraseña incorrecta", + "Saved" : "Guardado", + "No user supplied" : "No se proporcionó usuario alguno", + "Unable to change password" : "No fue posible cambiar la contraseña", + "Authentication error" : "Error de autenticación", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Por favor proporciona una contraseña de recuperación de administrador; de lo contrario toda la información del usuario se perderá. ", + "Wrong admin recovery password. Please check the password and try again." : "Contraseña de recuperación de administrador incorrecta. Por favor verificala e inténtalo de nuevo.", + "Backend doesn't support password change, but the user's encryption key was updated." : "El backend no soporta el cambio de contraseñas, pero la llave de encripción del usuario fue actualizada.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Instalando y actualizando aplicaciones por la tienda de aplicaciones o Compartido la Nube Federada", + "Federated Cloud Sharing" : "Compartir en la Nube Federada", + "Invalid SMTP password." : "Constraseña SMTP inválida. ", + "Email setting test" : "Prueba de ajustes de correo", + "Well done, %s!" : "¡Bien hecho, %s!", + "If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ", + "Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)", + "You need to set your user email before being able to send test emails." : "Requieres establecer tu correo electrónico antes de poder enviar correos electrónicos de prueba. ", + "Invalid mail address" : "Dirección de correo inválida", + "Settings saved" : "Se han guardado las configuraciones ", + "Unable to change full name" : "No fue posible cambiar el nombre completo", + "Unable to change email address" : "No fue posible cambiar la dirección de correo electrónico", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Para poder verificar tu cuenta de Twitter, publica el siguiente tweet en Twitter (por favor asegúrarte de publicar sin ninguna línea en blanco):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Para poder verificar tu sitio Web, agrega el siguiente contendio a tu web-root en '.well-known/CloudIdVerificationCode.txt' (por favor asegurate de que el texto completo este en una sóla línea):", + "%1$s changed your password on %2$s." : "%1$s cambió tu contraseña el %2$s.", + "Your password on %s was changed." : "Tu contraseña de %s fue cambiada. ", + "Your password on %s was reset by an administrator." : "Tu contraseña de %s fue restablecida por un administrador.", + "Password for %1$s changed on %2$s" : "La contraseña para %1$s fue cambiada el %2$s", + "Password changed for %s" : "La contraseña fue cambiada para %s", + "If you did not request this, please contact an administrator." : "Si no lo solicitaste, por favor contacta a un administrador. ", + "Your email address on %s was changed." : "Tu dirección de correo electrónico en %s fue cambiada. ", + "Your email address on %s was changed by an administrator." : "Tu dirección de correo electrónico en %s fue cambiada por un adminsitrador. ", + "Email address for %1$s changed on %2$s" : "La dirección de correo electrónico para %1$s fue cambiada el %2$s", + "Email address changed for %s" : "La dirección de correo electrónico fue cambiada para %s", + "The new email address is %s" : "La nueva dirección de correo electrónico es %s", + "Your %s account was created" : "Tu cuenta %s ha sido creada", + "Welcome aboard" : "Bienvenido a bordo", + "Welcome aboard %s" : "Bienvenido a bordo %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Bienvenido a tu cuenta %s, puedes agregar, proteger y compartir tus datos.", + "Your username is: %s" : "Tu Usuario es: %s", + "Set your password" : "Establece tu contraseña", + "Go to %s" : "Ir a %s", + "Install Client" : "Instalar el cliente", + "Delete" : "Borrar", + "Unlimited" : "Ilimitado", + "Verifying …" : "Verificando ...", + "Verify" : "Verificar", + "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración", + "Migration started …" : "La migración ha comenzado ...", + "Not saved" : "No guardado", + "Sending…" : "Enviando...", + "Email sent" : "Correo electrónico enviado", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Se presentó un error. Por favor carga un certificado PEM con codificación ASCII", + "Valid until {date}" : "Válido hasta {date}", + "Local" : "Local", + "Private" : "Privado", + "Only visible to local users" : "Visible sólo para usuarios locales", + "Only visible to you" : "Sólo visible para ti", + "Contacts" : "Contactos", + "Visible to local users and to trusted servers" : "Visible para usuarios locales y para servidores de confianza", + "Public" : "Público", + "Will be synced to a global and public address book" : "Será sincronizado a una libreta de direcciones global y pública", + "Very weak password" : "Contraseña muy débil", + "Weak password" : "Contraseña débil", + "So-so password" : "Contraseña aceptable", + "Good password" : "Buena contraseña", + "Strong password" : "Contraseña fuerte", + "Select a profile picture" : "Selecciona una imagen de perfil", + "Groups" : "Grupos", + "Limit to groups" : "Limitar a grupos", + "Allow filesystem access" : "Permitir acceso al sistema de archivos", + "Revoke" : "Revocar", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome para Android", + "Sync client - {os}" : "Sync client - {os}", + "This session" : "Esta sesión", + "Device" : "Dispositivo", + "Last activity" : "Última actividad", + "Web, desktop and mobile clients currently logged in to your account." : "Clientes web, de escritorio y móviles han iniciado sesión en tu cuenta. ", + "Error while creating device token" : "Se presentó un error al crear la ficha en el dispositivo", + "Error while deleting the token" : "Se presentó un error al borrar la ficha", + "App name" : "Nombre de la aplicación", + "Create new app password" : "Crear una nueva contraseña de aplicación", + "Use the credentials below to configure your app or device." : "Usa las siguientes credenciales para configurar tu aplicación o dispositivo. ", + "For security reasons this password will only be shown once." : "Por razones de seguridad esta contraseña sólo se mostrará una vez. ", + "Username" : "Usuario", + "Password" : "Contraseña", + "Done" : "Terminado", + "Copied!" : "¡Copiado!", + "Copy" : "Copiar", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Las aplicaciones oficiales son desarrolladas por y dentro de la comunidad. Ofrecen una funcionalidad centralizada y se encuentran listas para ser usadas en producción. ", + "Official" : "Oficial", + "Remove" : "Eliminar", + "Disable" : "Deshabilitar", + "All" : "Todos", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión mínima de Nextcloud asignada. Esto será un error en el futuro.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión máxima de Nextcloud asignada. Esto será un error en el futuro.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Esta aplicación no puede ser instalada porque las siguientes dependencias no están satisfechas:", + "View in store" : "Ver en la tienda", + "Visit website" : "Visita el sitio web", + "Report a bug" : "Reporta un detalle", + "User documentation" : "Documentación del usuario", + "Admin documentation" : "Documentación del administrador", + "Developer documentation" : "Documentación del desarrollador", + "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Enable all" : "Habilitar todo", + "Enable" : "Habilitar", + "The app will be downloaded from the app store" : "La aplicación será descargada de la tienda de aplicaciones <app store>", + "New password" : "Nueva contraseña", + "{size} used" : "{size} usado", + "Email" : "Correo electrónico", + "Group admin for" : "Administrador del grupo para", + "Quota" : "Cuota", + "Language" : "Idioma", + "Storage location" : "Úbicación del almacenamiento", + "User backend" : "Backend del usuario", + "Last login" : "Último inicio de sesión", + "Default quota" : "Cuota predeterminada", + "Your apps" : "Tus aplicaciones", + "Disabled apps" : "Aplicaciones deshabilitadas", + "Updates" : "Actualizaciones", + "App bundles" : "Paquetes de aplicación", + "Show last login" : "Mostrar último inicio de sesión", + "Show user backend" : "Mostrar backend del usuario", + "Admins" : "Administradores", + "Everyone" : "Todos", + "Add group" : "Agregar grupo", + "Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor", + "SSL Root Certificates" : "Certificado SSL Raíz", + "Common Name" : "Nombre común", + "Valid until" : "Válido hasta", + "Issued By" : "Levantado Por", + "Valid until %s" : "Válido hasta %s", + "Import root certificate" : "Importar certificado raíz", + "Administrator documentation" : "Documentación del adminsitrador", + "Forum" : "Foro", + "None" : "Ninguno", + "Login" : "Iniciar sesión", + "Plain" : "Plano", + "NT LAN Manager" : "Administrador de LAN NT", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Servidor de correo electrónico", + "Open documentation" : "Abrir documentación", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Es importante preparar este servidor para poder enviar correos electrónicos, como para restablecer contraseñas y notificaciones. ", + "Send mode" : "Modo de envío", + "Encryption" : "Encripción", + "From address" : "De la dirección", + "mail" : "correo", + "Authentication method" : "Método de autenticación", + "Authentication required" : "Autenticación requerida", + "Server address" : "Dirección del servidor", + "Port" : "Puerto", + "Credentials" : "Credenciales", + "SMTP Username" : "Usuario SMTP", + "SMTP Password" : "Contraseña SMTP", + "Test email settings" : "Probar las configuraciones de correo electrónico", + "Send email" : "Enviar correo electrónico", + "Security & setup warnings" : "Advertencias de seguridad y configuración", + "All checks passed." : "Pasaron todas las verificaciones. ", + "Version" : "Versión", + "Server-side encryption" : "Encripción del lado del servidor", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "La encripción del lado del servidor hace posible encriptar archivos que serán cargados a este servidor. Esto trae consigo algunas limitaciónes como penalizaciones en el desemeño, asi que habilítalo sólo si es necesario. ", + "Enable server-side encryption" : "Habilitar encripción del lado del servidor", + "Please read carefully before activating server-side encryption: " : "Por favor lee detenidamente antes de activar la encripción del lado de servidor:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Una vez que la encripción se encuentre habilitada, todos lo archivos cargados al servidor desde ese momento en tiempo, se encriptarán en el servidor. Sólo será posible deshabilitar la encripción en una fecha posterior si el modulo de encripción activo soporta esa funcionalidad y si todas las preciondiciones están satisfechas (ejem. establecer una llave de recuperación).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "La encripción por sí sola no garantiza la seguridad del sistema. Por favor consulta la documentación para mayores informes de cómo funciona la aplicación de encripción y de los casos de uso soportados. ", + "Be aware that encryption always increases the file size." : "Por favor considera que la encripción siempre aumenta el tamaño de los archivos. ", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Siempre es una buena idea generar respaldos de tus datos, en caso de tener encripción asegúrate de respaldar las llaves de encripción junto con tus datos. ", + "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", + "Enable encryption" : "Habilitar encripción", + "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", + "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Necesitas migrar tus llaves de encripción de la encripción anterior (ownCloud <= 8.0) a la actual. Por favor habilita el \"Módulo de encripción predeterminado\" y ejecuta el comando 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Necesitas migar tus llaves de encripción de la encripción anterior (ownCloud <=8.0) a la actual. ", + "Start migration" : "Iniciar migración", + "Background jobs" : "Trabajos en segundo plano", + "Last job ran %s." : "El último trabajo corrió %s.", + "Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ", + "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ", + "Execute one task with each page loaded" : "Ejecutar una tarea con cada página cargada", + "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ", + "Sharing" : "Compartiendo", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", + "Allow apps to use the Share API" : "Permitir que las aplicaciones usen el API para Compartir", + "Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas", + "Allow public uploads" : "Permitir cargas públicas", + "Always ask for a password" : "Siempre pedir una contraseña", + "Enforce password protection" : "Forzar protección de contraseñas", + "Set default expiration date" : "Establecer la fecha de expiración predeterminada", + "Expire after " : "Expirar después de", + "days" : "días", + "Enforce expiration date" : "Forzar fecha de expiración", + "Allow resharing" : "Permitir volver a compartir", + "Allow sharing with groups" : "Permitir compartir con grupos", + "Restrict users to only share with users in their groups" : "Limitar a los usuarios a sólo compartir con otros usuarios en sus grupos", + "Exclude groups from sharing" : "Evitar que los grupos compartan", + "These groups will still be able to receive shares, but not to initiate them." : "Estos grupos aún podrán recibir elementos compartidos, pero no los podrán iniciar.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Permitir el autocompletado de usuarios en la ventana de diálogo de compartir. Si esto está deshabilitado, se deberá ingresar el correo electrónico o nombre completo. ", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Mostrar el texto de exención de responsabilidad legal en la página de carga de ligas públicas. (Sólo se muestra cuando la lista de archivos está oculta.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Este texto se mostrará en la página de carga de la liga pública cuando la lista de archivos esté oculta. ", + "Personal" : "Personal", + "Administration" : "Administración", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Desarrollado por la {communityopen}comunidad Nextcloud {linkclose}, el {githubopen}código fuente {linkclose} está licenciado bajo {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Da un Like a nuestra página de Facebook", + "Follow us on Twitter" : "Síguenos en Twitter", + "Check out our blog" : "Visita nuestro blog", + "Subscribe to our newsletter" : "Suscribete a nuestro boletín", + "Profile picture" : "Foto de perfil", + "Upload new" : "Cargar nuevo", + "Select from Files" : "Seleccionar desde Archivos", + "Remove image" : "Eliminar imagen", + "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", + "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", + "Cancel" : "Cancelar", + "Choose as profile picture" : "Seleccionar como foto del perfil", + "Full name" : "Nombre completo", + "No display name set" : "No se ha establecido el nombre a desplegar", + "Your email address" : "Tu dirección de correo electrónico", + "No email address set" : "No se ha establecido la dirección de correo electrónico", + "For password reset and notifications" : "Para restablecer contraseña y notificaciones", + "Phone number" : "Número de teléfono", + "Your phone number" : "Su número telefónico", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "Website" : "Sitio web", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Cuenta de twitter @...", + "Help translate" : "Ayuda a traducir", + "Current password" : "Contraseña actual", + "Change password" : "Cambiar contraseña", + "Store credentials" : "Almacenar credenciales", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php está registrado en un servicio webcron para llamar a cron.php cada 15 minutos a través de HTTP. ", + "Use system cron service to call the cron.php file every 15 minutes." : "Usar el servicio cron del sistema para llamar al archivo cron.php cada 15 minutos. " +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/es_PE.json b/apps/settings/l10n/es_PE.json new file mode 100644 index 00000000000..072220b24af --- /dev/null +++ b/apps/settings/l10n/es_PE.json @@ -0,0 +1,256 @@ +{ "translations": { + "{actor} changed your password" : "{actor} ha cambiado tu contraseña", + "You changed your password" : "Cambiaste tu contraseña", + "Your password was reset by an administrator" : "Tu contraseña ha sido restablecida por un adminsitrador", + "{actor} changed your email address" : "{actor} ha cambiado tu dirección de correo electrónico", + "You changed your email address" : "Cambiaste tu dirección de correo electrónico", + "Your email address was changed by an administrator" : "Tu dirección de correo electrónico ha sido cambiada por un administrador", + "Security" : "Seguridad", + "You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado", + "Couldn't remove app." : "No fue posible eliminar la aplicación. ", + "Couldn't update app." : "No fue posible actualizar la aplicación.", + "Wrong password" : "Contraseña incorrecta", + "Saved" : "Guardado", + "No user supplied" : "No se proporcionó usuario alguno", + "Unable to change password" : "No fue posible cambiar la contraseña", + "Authentication error" : "Error de autenticación", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Por favor proporciona una contraseña de recuperación de administrador; de lo contrario toda la información del usuario se perderá. ", + "Wrong admin recovery password. Please check the password and try again." : "Contraseña de recuperación de administrador incorrecta. Por favor verificala e inténtalo de nuevo.", + "Backend doesn't support password change, but the user's encryption key was updated." : "El backend no soporta el cambio de contraseñas, pero la llave de encripción del usuario fue actualizada.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Instalando y actualizando aplicaciones por la tienda de aplicaciones o Compartido la Nube Federada", + "Federated Cloud Sharing" : "Compartir en la Nube Federada", + "Invalid SMTP password." : "Constraseña SMTP inválida. ", + "Email setting test" : "Prueba de ajustes de correo", + "Well done, %s!" : "¡Bien hecho, %s!", + "If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ", + "Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)", + "You need to set your user email before being able to send test emails." : "Requieres establecer tu correo electrónico antes de poder enviar correos electrónicos de prueba. ", + "Invalid mail address" : "Dirección de correo inválida", + "Settings saved" : "Se han guardado las configuraciones ", + "Unable to change full name" : "No fue posible cambiar el nombre completo", + "Unable to change email address" : "No fue posible cambiar la dirección de correo electrónico", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Para poder verificar tu cuenta de Twitter, publica el siguiente tweet en Twitter (por favor asegúrarte de publicar sin ninguna línea en blanco):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Para poder verificar tu sitio Web, agrega el siguiente contendio a tu web-root en '.well-known/CloudIdVerificationCode.txt' (por favor asegurate de que el texto completo este en una sóla línea):", + "%1$s changed your password on %2$s." : "%1$s cambió tu contraseña el %2$s.", + "Your password on %s was changed." : "Tu contraseña de %s fue cambiada. ", + "Your password on %s was reset by an administrator." : "Tu contraseña de %s fue restablecida por un administrador.", + "Password for %1$s changed on %2$s" : "La contraseña para %1$s fue cambiada el %2$s", + "Password changed for %s" : "La contraseña fue cambiada para %s", + "If you did not request this, please contact an administrator." : "Si no lo solicitaste, por favor contacta a un administrador. ", + "Your email address on %s was changed." : "Tu dirección de correo electrónico en %s fue cambiada. ", + "Your email address on %s was changed by an administrator." : "Tu dirección de correo electrónico en %s fue cambiada por un adminsitrador. ", + "Email address for %1$s changed on %2$s" : "La dirección de correo electrónico para %1$s fue cambiada el %2$s", + "Email address changed for %s" : "La dirección de correo electrónico fue cambiada para %s", + "The new email address is %s" : "La nueva dirección de correo electrónico es %s", + "Your %s account was created" : "Tu cuenta %s ha sido creada", + "Welcome aboard" : "Bienvenido a bordo", + "Welcome aboard %s" : "Bienvenido a bordo %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Bienvenido a tu cuenta %s, puedes agregar, proteger y compartir tus datos.", + "Your username is: %s" : "Tu Usuario es: %s", + "Set your password" : "Establece tu contraseña", + "Go to %s" : "Ir a %s", + "Install Client" : "Instalar el cliente", + "Delete" : "Borrar", + "Unlimited" : "Ilimitado", + "Verifying …" : "Verificando ...", + "Verify" : "Verificar", + "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración", + "Migration started …" : "La migración ha comenzado ...", + "Not saved" : "No guardado", + "Sending…" : "Enviando...", + "Email sent" : "Correo electrónico enviado", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Se presentó un error. Por favor carga un certificado PEM con codificación ASCII", + "Valid until {date}" : "Válido hasta {date}", + "Local" : "Local", + "Private" : "Privado", + "Only visible to local users" : "Visible sólo para usuarios locales", + "Only visible to you" : "Sólo visible para ti", + "Contacts" : "Contactos", + "Visible to local users and to trusted servers" : "Visible para usuarios locales y para servidores de confianza", + "Public" : "Público", + "Will be synced to a global and public address book" : "Será sincronizado a una libreta de direcciones global y pública", + "Very weak password" : "Contraseña muy débil", + "Weak password" : "Contraseña débil", + "So-so password" : "Contraseña aceptable", + "Good password" : "Buena contraseña", + "Strong password" : "Contraseña fuerte", + "Select a profile picture" : "Selecciona una imagen de perfil", + "Groups" : "Grupos", + "Limit to groups" : "Limitar a grupos", + "Allow filesystem access" : "Permitir acceso al sistema de archivos", + "Revoke" : "Revocar", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome para Android", + "Sync client - {os}" : "Sync client - {os}", + "This session" : "Esta sesión", + "Device" : "Dispositivo", + "Last activity" : "Última actividad", + "Web, desktop and mobile clients currently logged in to your account." : "Clientes web, de escritorio y móviles han iniciado sesión en tu cuenta. ", + "Error while creating device token" : "Se presentó un error al crear la ficha en el dispositivo", + "Error while deleting the token" : "Se presentó un error al borrar la ficha", + "App name" : "Nombre de la aplicación", + "Create new app password" : "Crear una nueva contraseña de aplicación", + "Use the credentials below to configure your app or device." : "Usa las siguientes credenciales para configurar tu aplicación o dispositivo. ", + "For security reasons this password will only be shown once." : "Por razones de seguridad esta contraseña sólo se mostrará una vez. ", + "Username" : "Usuario", + "Password" : "Contraseña", + "Done" : "Terminado", + "Copied!" : "¡Copiado!", + "Copy" : "Copiar", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Las aplicaciones oficiales son desarrolladas por y dentro de la comunidad. Ofrecen una funcionalidad centralizada y se encuentran listas para ser usadas en producción. ", + "Official" : "Oficial", + "Remove" : "Eliminar", + "Disable" : "Deshabilitar", + "All" : "Todos", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión mínima de Nextcloud asignada. Esto será un error en el futuro.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión máxima de Nextcloud asignada. Esto será un error en el futuro.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Esta aplicación no puede ser instalada porque las siguientes dependencias no están satisfechas:", + "View in store" : "Ver en la tienda", + "Visit website" : "Visita el sitio web", + "Report a bug" : "Reporta un detalle", + "User documentation" : "Documentación del usuario", + "Admin documentation" : "Documentación del administrador", + "Developer documentation" : "Documentación del desarrollador", + "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Enable all" : "Habilitar todo", + "Enable" : "Habilitar", + "The app will be downloaded from the app store" : "La aplicación será descargada de la tienda de aplicaciones <app store>", + "New password" : "Nueva contraseña", + "{size} used" : "{size} usado", + "Email" : "Correo electrónico", + "Group admin for" : "Administrador del grupo para", + "Quota" : "Cuota", + "Language" : "Idioma", + "Storage location" : "Úbicación del almacenamiento", + "User backend" : "Backend del usuario", + "Last login" : "Último inicio de sesión", + "Default quota" : "Cuota predeterminada", + "Your apps" : "Tus aplicaciones", + "Disabled apps" : "Aplicaciones deshabilitadas", + "Updates" : "Actualizaciones", + "App bundles" : "Paquetes de aplicación", + "Show last login" : "Mostrar último inicio de sesión", + "Show user backend" : "Mostrar backend del usuario", + "Admins" : "Administradores", + "Everyone" : "Todos", + "Add group" : "Agregar grupo", + "Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor", + "SSL Root Certificates" : "Certificado SSL Raíz", + "Common Name" : "Nombre común", + "Valid until" : "Válido hasta", + "Issued By" : "Levantado Por", + "Valid until %s" : "Válido hasta %s", + "Import root certificate" : "Importar certificado raíz", + "Administrator documentation" : "Documentación del adminsitrador", + "Forum" : "Foro", + "None" : "Ninguno", + "Login" : "Iniciar sesión", + "Plain" : "Plano", + "NT LAN Manager" : "Administrador de LAN NT", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Servidor de correo electrónico", + "Open documentation" : "Abrir documentación", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Es importante preparar este servidor para poder enviar correos electrónicos, como para restablecer contraseñas y notificaciones. ", + "Send mode" : "Modo de envío", + "Encryption" : "Encripción", + "From address" : "De la dirección", + "mail" : "correo", + "Authentication method" : "Método de autenticación", + "Authentication required" : "Autenticación requerida", + "Server address" : "Dirección del servidor", + "Port" : "Puerto", + "Credentials" : "Credenciales", + "SMTP Username" : "Usuario SMTP", + "SMTP Password" : "Contraseña SMTP", + "Test email settings" : "Probar las configuraciones de correo electrónico", + "Send email" : "Enviar correo electrónico", + "Security & setup warnings" : "Advertencias de seguridad y configuración", + "All checks passed." : "Pasaron todas las verificaciones. ", + "Version" : "Versión", + "Server-side encryption" : "Encripción del lado del servidor", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "La encripción del lado del servidor hace posible encriptar archivos que serán cargados a este servidor. Esto trae consigo algunas limitaciónes como penalizaciones en el desemeño, asi que habilítalo sólo si es necesario. ", + "Enable server-side encryption" : "Habilitar encripción del lado del servidor", + "Please read carefully before activating server-side encryption: " : "Por favor lee detenidamente antes de activar la encripción del lado de servidor:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Una vez que la encripción se encuentre habilitada, todos lo archivos cargados al servidor desde ese momento en tiempo, se encriptarán en el servidor. Sólo será posible deshabilitar la encripción en una fecha posterior si el modulo de encripción activo soporta esa funcionalidad y si todas las preciondiciones están satisfechas (ejem. establecer una llave de recuperación).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "La encripción por sí sola no garantiza la seguridad del sistema. Por favor consulta la documentación para mayores informes de cómo funciona la aplicación de encripción y de los casos de uso soportados. ", + "Be aware that encryption always increases the file size." : "Por favor considera que la encripción siempre aumenta el tamaño de los archivos. ", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Siempre es una buena idea generar respaldos de tus datos, en caso de tener encripción asegúrate de respaldar las llaves de encripción junto con tus datos. ", + "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", + "Enable encryption" : "Habilitar encripción", + "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", + "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Necesitas migrar tus llaves de encripción de la encripción anterior (ownCloud <= 8.0) a la actual. Por favor habilita el \"Módulo de encripción predeterminado\" y ejecuta el comando 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Necesitas migar tus llaves de encripción de la encripción anterior (ownCloud <=8.0) a la actual. ", + "Start migration" : "Iniciar migración", + "Background jobs" : "Trabajos en segundo plano", + "Last job ran %s." : "El último trabajo corrió %s.", + "Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ", + "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ", + "Execute one task with each page loaded" : "Ejecutar una tarea con cada página cargada", + "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ", + "Sharing" : "Compartiendo", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", + "Allow apps to use the Share API" : "Permitir que las aplicaciones usen el API para Compartir", + "Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas", + "Allow public uploads" : "Permitir cargas públicas", + "Always ask for a password" : "Siempre pedir una contraseña", + "Enforce password protection" : "Forzar protección de contraseñas", + "Set default expiration date" : "Establecer la fecha de expiración predeterminada", + "Expire after " : "Expirar después de", + "days" : "días", + "Enforce expiration date" : "Forzar fecha de expiración", + "Allow resharing" : "Permitir volver a compartir", + "Allow sharing with groups" : "Permitir compartir con grupos", + "Restrict users to only share with users in their groups" : "Limitar a los usuarios a sólo compartir con otros usuarios en sus grupos", + "Exclude groups from sharing" : "Evitar que los grupos compartan", + "These groups will still be able to receive shares, but not to initiate them." : "Estos grupos aún podrán recibir elementos compartidos, pero no los podrán iniciar.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Permitir el autocompletado de usuarios en la ventana de diálogo de compartir. Si esto está deshabilitado, se deberá ingresar el correo electrónico o nombre completo. ", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Mostrar el texto de exención de responsabilidad legal en la página de carga de ligas públicas. (Sólo se muestra cuando la lista de archivos está oculta.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Este texto se mostrará en la página de carga de la liga pública cuando la lista de archivos esté oculta. ", + "Personal" : "Personal", + "Administration" : "Administración", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Desarrollado por la {communityopen}comunidad Nextcloud {linkclose}, el {githubopen}código fuente {linkclose} está licenciado bajo {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Da un Like a nuestra página de Facebook", + "Follow us on Twitter" : "Síguenos en Twitter", + "Check out our blog" : "Visita nuestro blog", + "Subscribe to our newsletter" : "Suscribete a nuestro boletín", + "Profile picture" : "Foto de perfil", + "Upload new" : "Cargar nuevo", + "Select from Files" : "Seleccionar desde Archivos", + "Remove image" : "Eliminar imagen", + "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", + "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", + "Cancel" : "Cancelar", + "Choose as profile picture" : "Seleccionar como foto del perfil", + "Full name" : "Nombre completo", + "No display name set" : "No se ha establecido el nombre a desplegar", + "Your email address" : "Tu dirección de correo electrónico", + "No email address set" : "No se ha establecido la dirección de correo electrónico", + "For password reset and notifications" : "Para restablecer contraseña y notificaciones", + "Phone number" : "Número de teléfono", + "Your phone number" : "Su número telefónico", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "Website" : "Sitio web", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Cuenta de twitter @...", + "Help translate" : "Ayuda a traducir", + "Current password" : "Contraseña actual", + "Change password" : "Cambiar contraseña", + "Store credentials" : "Almacenar credenciales", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php está registrado en un servicio webcron para llamar a cron.php cada 15 minutos a través de HTTP. ", + "Use system cron service to call the cron.php file every 15 minutes." : "Usar el servicio cron del sistema para llamar al archivo cron.php cada 15 minutos. " +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} \ No newline at end of file diff --git a/apps/settings/l10n/es_PR.js b/apps/settings/l10n/es_PR.js new file mode 100644 index 00000000000..3d9fadb1a06 --- /dev/null +++ b/apps/settings/l10n/es_PR.js @@ -0,0 +1,258 @@ +OC.L10N.register( + "settings", + { + "{actor} changed your password" : "{actor} ha cambiado tu contraseña", + "You changed your password" : "Cambiaste tu contraseña", + "Your password was reset by an administrator" : "Tu contraseña ha sido restablecida por un adminsitrador", + "{actor} changed your email address" : "{actor} ha cambiado tu dirección de correo electrónico", + "You changed your email address" : "Cambiaste tu dirección de correo electrónico", + "Your email address was changed by an administrator" : "Tu dirección de correo electrónico ha sido cambiada por un administrador", + "Security" : "Seguridad", + "You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado", + "Couldn't remove app." : "No fue posible eliminar la aplicación. ", + "Couldn't update app." : "No fue posible actualizar la aplicación.", + "Wrong password" : "Contraseña incorrecta", + "Saved" : "Guardado", + "No user supplied" : "No se proporcionó usuario alguno", + "Unable to change password" : "No fue posible cambiar la contraseña", + "Authentication error" : "Error de autenticación", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Por favor proporciona una contraseña de recuperación de administrador; de lo contrario toda la información del usuario se perderá. ", + "Wrong admin recovery password. Please check the password and try again." : "Contraseña de recuperación de administrador incorrecta. Por favor verificala e inténtalo de nuevo.", + "Backend doesn't support password change, but the user's encryption key was updated." : "El backend no soporta el cambio de contraseñas, pero la llave de encripción del usuario fue actualizada.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Instalando y actualizando aplicaciones por la tienda de aplicaciones o Compartido la Nube Federada", + "Federated Cloud Sharing" : "Compartir en la Nube Federada", + "Invalid SMTP password." : "Constraseña SMTP inválida. ", + "Email setting test" : "Prueba de ajustes de correo", + "Well done, %s!" : "¡Bien hecho, %s!", + "If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ", + "Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)", + "You need to set your user email before being able to send test emails." : "Requieres establecer tu correo electrónico antes de poder enviar correos electrónicos de prueba. ", + "Invalid mail address" : "Dirección de correo inválida", + "Settings saved" : "Se han guardado las configuraciones ", + "Unable to change full name" : "No fue posible cambiar el nombre completo", + "Unable to change email address" : "No fue posible cambiar la dirección de correo electrónico", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Para poder verificar tu cuenta de Twitter, publica el siguiente tweet en Twitter (por favor asegúrarte de publicar sin ninguna línea en blanco):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Para poder verificar tu sitio Web, agrega el siguiente contendio a tu web-root en '.well-known/CloudIdVerificationCode.txt' (por favor asegurate de que el texto completo este en una sóla línea):", + "%1$s changed your password on %2$s." : "%1$s cambió tu contraseña el %2$s.", + "Your password on %s was changed." : "Tu contraseña de %s fue cambiada. ", + "Your password on %s was reset by an administrator." : "Tu contraseña de %s fue restablecida por un administrador.", + "Password for %1$s changed on %2$s" : "La contraseña para %1$s fue cambiada el %2$s", + "Password changed for %s" : "La contraseña fue cambiada para %s", + "If you did not request this, please contact an administrator." : "Si no lo solicitaste, por favor contacta a un administrador. ", + "Your email address on %s was changed." : "Tu dirección de correo electrónico en %s fue cambiada. ", + "Your email address on %s was changed by an administrator." : "Tu dirección de correo electrónico en %s fue cambiada por un adminsitrador. ", + "Email address for %1$s changed on %2$s" : "La dirección de correo electrónico para %1$s fue cambiada el %2$s", + "Email address changed for %s" : "La dirección de correo electrónico fue cambiada para %s", + "The new email address is %s" : "La nueva dirección de correo electrónico es %s", + "Your %s account was created" : "Tu cuenta %s ha sido creada", + "Welcome aboard" : "Bienvenido a bordo", + "Welcome aboard %s" : "Bienvenido a bordo %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Bienvenido a tu cuenta %s, puedes agregar, proteger y compartir tus datos.", + "Your username is: %s" : "Tu Usuario es: %s", + "Set your password" : "Establece tu contraseña", + "Go to %s" : "Ir a %s", + "Install Client" : "Instalar el cliente", + "Delete" : "Borrar", + "Unlimited" : "Ilimitado", + "Verifying …" : "Verificando ...", + "Verify" : "Verificar", + "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración", + "Migration started …" : "La migración ha comenzado ...", + "Not saved" : "No guardado", + "Sending…" : "Enviando...", + "Email sent" : "Correo electrónico enviado", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Se presentó un error. Por favor carga un certificado PEM con codificación ASCII", + "Valid until {date}" : "Válido hasta {date}", + "Local" : "Local", + "Private" : "Privado", + "Only visible to local users" : "Visible sólo para usuarios locales", + "Only visible to you" : "Sólo visible para ti", + "Contacts" : "Contactos", + "Visible to local users and to trusted servers" : "Visible para usuarios locales y para servidores de confianza", + "Public" : "Público", + "Will be synced to a global and public address book" : "Será sincronizado a una libreta de direcciones global y pública", + "Very weak password" : "Contraseña muy débil", + "Weak password" : "Contraseña débil", + "So-so password" : "Contraseña aceptable", + "Good password" : "Buena contraseña", + "Strong password" : "Contraseña fuerte", + "Select a profile picture" : "Selecciona una imagen de perfil", + "Groups" : "Grupos", + "Limit to groups" : "Limitar a grupos", + "Allow filesystem access" : "Permitir acceso al sistema de archivos", + "Revoke" : "Revocar", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome para Android", + "Sync client - {os}" : "Sync client - {os}", + "This session" : "Esta sesión", + "Device" : "Dispositivo", + "Last activity" : "Última actividad", + "Web, desktop and mobile clients currently logged in to your account." : "Clientes web, de escritorio y móviles han iniciado sesión en tu cuenta. ", + "Error while creating device token" : "Se presentó un error al crear la ficha en el dispositivo", + "Error while deleting the token" : "Se presentó un error al borrar la ficha", + "App name" : "Nombre de la aplicación", + "Create new app password" : "Crear una nueva contraseña de aplicación", + "Use the credentials below to configure your app or device." : "Usa las siguientes credenciales para configurar tu aplicación o dispositivo. ", + "For security reasons this password will only be shown once." : "Por razones de seguridad esta contraseña sólo se mostrará una vez. ", + "Username" : "Usuario", + "Password" : "Contraseña", + "Done" : "Terminado", + "Copied!" : "¡Copiado!", + "Copy" : "Copiar", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Las aplicaciones oficiales son desarrolladas por y dentro de la comunidad. Ofrecen una funcionalidad centralizada y se encuentran listas para ser usadas en producción. ", + "Official" : "Oficial", + "Remove" : "Eliminar", + "Disable" : "Deshabilitar", + "All" : "Todos", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión mínima de Nextcloud asignada. Esto será un error en el futuro.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión máxima de Nextcloud asignada. Esto será un error en el futuro.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Esta aplicación no puede ser instalada porque las siguientes dependencias no están satisfechas:", + "View in store" : "Ver en la tienda", + "Visit website" : "Visita el sitio web", + "Report a bug" : "Reporta un detalle", + "User documentation" : "Documentación del usuario", + "Admin documentation" : "Documentación del administrador", + "Developer documentation" : "Documentación del desarrollador", + "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Enable all" : "Habilitar todo", + "Enable" : "Habilitar", + "The app will be downloaded from the app store" : "La aplicación será descargada de la tienda de aplicaciones <app store>", + "New password" : "Nueva contraseña", + "{size} used" : "{size} usado", + "Email" : "Correo electrónico", + "Group admin for" : "Administrador del grupo para", + "Quota" : "Cuota", + "Language" : "Idioma", + "Storage location" : "Úbicación del almacenamiento", + "User backend" : "Backend del usuario", + "Last login" : "Último inicio de sesión", + "Default quota" : "Cuota predeterminada", + "Your apps" : "Tus aplicaciones", + "Disabled apps" : "Aplicaciones deshabilitadas", + "Updates" : "Actualizaciones", + "App bundles" : "Paquetes de aplicación", + "Show last login" : "Mostrar último inicio de sesión", + "Show user backend" : "Mostrar backend del usuario", + "Admins" : "Administradores", + "Everyone" : "Todos", + "Add group" : "Agregar grupo", + "Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor", + "SSL Root Certificates" : "Certificado SSL Raíz", + "Common Name" : "Nombre común", + "Valid until" : "Válido hasta", + "Issued By" : "Levantado Por", + "Valid until %s" : "Válido hasta %s", + "Import root certificate" : "Importar certificado raíz", + "Administrator documentation" : "Documentación del adminsitrador", + "Forum" : "Foro", + "None" : "Ninguno", + "Login" : "Iniciar sesión", + "Plain" : "Plano", + "NT LAN Manager" : "Administrador de LAN NT", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Servidor de correo electrónico", + "Open documentation" : "Abrir documentación", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Es importante preparar este servidor para poder enviar correos electrónicos, como para restablecer contraseñas y notificaciones. ", + "Send mode" : "Modo de envío", + "Encryption" : "Encripción", + "From address" : "De la dirección", + "mail" : "correo", + "Authentication method" : "Método de autenticación", + "Authentication required" : "Autenticación requerida", + "Server address" : "Dirección del servidor", + "Port" : "Puerto", + "Credentials" : "Credenciales", + "SMTP Username" : "Usuario SMTP", + "SMTP Password" : "Contraseña SMTP", + "Test email settings" : "Probar las configuraciones de correo electrónico", + "Send email" : "Enviar correo electrónico", + "Security & setup warnings" : "Advertencias de seguridad y configuración", + "All checks passed." : "Pasaron todas las verificaciones. ", + "Version" : "Versión", + "Server-side encryption" : "Encripción del lado del servidor", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "La encripción del lado del servidor hace posible encriptar archivos que serán cargados a este servidor. Esto trae consigo algunas limitaciónes como penalizaciones en el desemeño, asi que habilítalo sólo si es necesario. ", + "Enable server-side encryption" : "Habilitar encripción del lado del servidor", + "Please read carefully before activating server-side encryption: " : "Por favor lee detenidamente antes de activar la encripción del lado de servidor:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Una vez que la encripción se encuentre habilitada, todos lo archivos cargados al servidor desde ese momento en tiempo, se encriptarán en el servidor. Sólo será posible deshabilitar la encripción en una fecha posterior si el modulo de encripción activo soporta esa funcionalidad y si todas las preciondiciones están satisfechas (ejem. establecer una llave de recuperación).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "La encripción por sí sola no garantiza la seguridad del sistema. Por favor consulta la documentación para mayores informes de cómo funciona la aplicación de encripción y de los casos de uso soportados. ", + "Be aware that encryption always increases the file size." : "Por favor considera que la encripción siempre aumenta el tamaño de los archivos. ", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Siempre es una buena idea generar respaldos de tus datos, en caso de tener encripción asegúrate de respaldar las llaves de encripción junto con tus datos. ", + "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", + "Enable encryption" : "Habilitar encripción", + "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", + "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Necesitas migrar tus llaves de encripción de la encripción anterior (ownCloud <= 8.0) a la actual. Por favor habilita el \"Módulo de encripción predeterminado\" y ejecuta el comando 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Necesitas migar tus llaves de encripción de la encripción anterior (ownCloud <=8.0) a la actual. ", + "Start migration" : "Iniciar migración", + "Background jobs" : "Trabajos en segundo plano", + "Last job ran %s." : "El último trabajo corrió %s.", + "Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ", + "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ", + "Execute one task with each page loaded" : "Ejecutar una tarea con cada página cargada", + "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ", + "Sharing" : "Compartiendo", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", + "Allow apps to use the Share API" : "Permitir que las aplicaciones usen el API para Compartir", + "Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas", + "Allow public uploads" : "Permitir cargas públicas", + "Always ask for a password" : "Siempre pedir una contraseña", + "Enforce password protection" : "Forzar protección de contraseñas", + "Set default expiration date" : "Establecer la fecha de expiración predeterminada", + "Expire after " : "Expirar después de", + "days" : "días", + "Enforce expiration date" : "Forzar fecha de expiración", + "Allow resharing" : "Permitir volver a compartir", + "Allow sharing with groups" : "Permitir compartir con grupos", + "Restrict users to only share with users in their groups" : "Limitar a los usuarios a sólo compartir con otros usuarios en sus grupos", + "Exclude groups from sharing" : "Evitar que los grupos compartan", + "These groups will still be able to receive shares, but not to initiate them." : "Estos grupos aún podrán recibir elementos compartidos, pero no los podrán iniciar.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Permitir el autocompletado de usuarios en la ventana de diálogo de compartir. Si esto está deshabilitado, se deberá ingresar el correo electrónico o nombre completo. ", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Mostrar el texto de exención de responsabilidad legal en la página de carga de ligas públicas. (Sólo se muestra cuando la lista de archivos está oculta.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Este texto se mostrará en la página de carga de la liga pública cuando la lista de archivos esté oculta. ", + "Personal" : "Personal", + "Administration" : "Administración", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Desarrollado por la {communityopen}comunidad Nextcloud {linkclose}, el {githubopen}código fuente {linkclose} está licenciado bajo {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Da un Like a nuestra página de Facebook", + "Follow us on Twitter" : "Síguenos en Twitter", + "Check out our blog" : "Visita nuestro blog", + "Subscribe to our newsletter" : "Suscribete a nuestro boletín", + "Profile picture" : "Foto de perfil", + "Upload new" : "Cargar nuevo", + "Select from Files" : "Seleccionar desde Archivos", + "Remove image" : "Eliminar imagen", + "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", + "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", + "Cancel" : "Cancelar", + "Choose as profile picture" : "Seleccionar como foto del perfil", + "Full name" : "Nombre completo", + "No display name set" : "No se ha establecido el nombre a desplegar", + "Your email address" : "Tu dirección de correo electrónico", + "No email address set" : "No se ha establecido la dirección de correo electrónico", + "For password reset and notifications" : "Para restablecer contraseña y notificaciones", + "Phone number" : "Número de teléfono", + "Your phone number" : "Su número telefónico", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "Website" : "Sitio web", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Cuenta de twitter @...", + "Help translate" : "Ayuda a traducir", + "Current password" : "Contraseña actual", + "Change password" : "Cambiar contraseña", + "Store credentials" : "Almacenar credenciales", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php está registrado en un servicio webcron para llamar a cron.php cada 15 minutos a través de HTTP. ", + "Use system cron service to call the cron.php file every 15 minutes." : "Usar el servicio cron del sistema para llamar al archivo cron.php cada 15 minutos. " +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/es_PR.json b/apps/settings/l10n/es_PR.json new file mode 100644 index 00000000000..072220b24af --- /dev/null +++ b/apps/settings/l10n/es_PR.json @@ -0,0 +1,256 @@ +{ "translations": { + "{actor} changed your password" : "{actor} ha cambiado tu contraseña", + "You changed your password" : "Cambiaste tu contraseña", + "Your password was reset by an administrator" : "Tu contraseña ha sido restablecida por un adminsitrador", + "{actor} changed your email address" : "{actor} ha cambiado tu dirección de correo electrónico", + "You changed your email address" : "Cambiaste tu dirección de correo electrónico", + "Your email address was changed by an administrator" : "Tu dirección de correo electrónico ha sido cambiada por un administrador", + "Security" : "Seguridad", + "You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado", + "Couldn't remove app." : "No fue posible eliminar la aplicación. ", + "Couldn't update app." : "No fue posible actualizar la aplicación.", + "Wrong password" : "Contraseña incorrecta", + "Saved" : "Guardado", + "No user supplied" : "No se proporcionó usuario alguno", + "Unable to change password" : "No fue posible cambiar la contraseña", + "Authentication error" : "Error de autenticación", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Por favor proporciona una contraseña de recuperación de administrador; de lo contrario toda la información del usuario se perderá. ", + "Wrong admin recovery password. Please check the password and try again." : "Contraseña de recuperación de administrador incorrecta. Por favor verificala e inténtalo de nuevo.", + "Backend doesn't support password change, but the user's encryption key was updated." : "El backend no soporta el cambio de contraseñas, pero la llave de encripción del usuario fue actualizada.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Instalando y actualizando aplicaciones por la tienda de aplicaciones o Compartido la Nube Federada", + "Federated Cloud Sharing" : "Compartir en la Nube Federada", + "Invalid SMTP password." : "Constraseña SMTP inválida. ", + "Email setting test" : "Prueba de ajustes de correo", + "Well done, %s!" : "¡Bien hecho, %s!", + "If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ", + "Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)", + "You need to set your user email before being able to send test emails." : "Requieres establecer tu correo electrónico antes de poder enviar correos electrónicos de prueba. ", + "Invalid mail address" : "Dirección de correo inválida", + "Settings saved" : "Se han guardado las configuraciones ", + "Unable to change full name" : "No fue posible cambiar el nombre completo", + "Unable to change email address" : "No fue posible cambiar la dirección de correo electrónico", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Para poder verificar tu cuenta de Twitter, publica el siguiente tweet en Twitter (por favor asegúrarte de publicar sin ninguna línea en blanco):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Para poder verificar tu sitio Web, agrega el siguiente contendio a tu web-root en '.well-known/CloudIdVerificationCode.txt' (por favor asegurate de que el texto completo este en una sóla línea):", + "%1$s changed your password on %2$s." : "%1$s cambió tu contraseña el %2$s.", + "Your password on %s was changed." : "Tu contraseña de %s fue cambiada. ", + "Your password on %s was reset by an administrator." : "Tu contraseña de %s fue restablecida por un administrador.", + "Password for %1$s changed on %2$s" : "La contraseña para %1$s fue cambiada el %2$s", + "Password changed for %s" : "La contraseña fue cambiada para %s", + "If you did not request this, please contact an administrator." : "Si no lo solicitaste, por favor contacta a un administrador. ", + "Your email address on %s was changed." : "Tu dirección de correo electrónico en %s fue cambiada. ", + "Your email address on %s was changed by an administrator." : "Tu dirección de correo electrónico en %s fue cambiada por un adminsitrador. ", + "Email address for %1$s changed on %2$s" : "La dirección de correo electrónico para %1$s fue cambiada el %2$s", + "Email address changed for %s" : "La dirección de correo electrónico fue cambiada para %s", + "The new email address is %s" : "La nueva dirección de correo electrónico es %s", + "Your %s account was created" : "Tu cuenta %s ha sido creada", + "Welcome aboard" : "Bienvenido a bordo", + "Welcome aboard %s" : "Bienvenido a bordo %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Bienvenido a tu cuenta %s, puedes agregar, proteger y compartir tus datos.", + "Your username is: %s" : "Tu Usuario es: %s", + "Set your password" : "Establece tu contraseña", + "Go to %s" : "Ir a %s", + "Install Client" : "Instalar el cliente", + "Delete" : "Borrar", + "Unlimited" : "Ilimitado", + "Verifying …" : "Verificando ...", + "Verify" : "Verificar", + "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración", + "Migration started …" : "La migración ha comenzado ...", + "Not saved" : "No guardado", + "Sending…" : "Enviando...", + "Email sent" : "Correo electrónico enviado", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Se presentó un error. Por favor carga un certificado PEM con codificación ASCII", + "Valid until {date}" : "Válido hasta {date}", + "Local" : "Local", + "Private" : "Privado", + "Only visible to local users" : "Visible sólo para usuarios locales", + "Only visible to you" : "Sólo visible para ti", + "Contacts" : "Contactos", + "Visible to local users and to trusted servers" : "Visible para usuarios locales y para servidores de confianza", + "Public" : "Público", + "Will be synced to a global and public address book" : "Será sincronizado a una libreta de direcciones global y pública", + "Very weak password" : "Contraseña muy débil", + "Weak password" : "Contraseña débil", + "So-so password" : "Contraseña aceptable", + "Good password" : "Buena contraseña", + "Strong password" : "Contraseña fuerte", + "Select a profile picture" : "Selecciona una imagen de perfil", + "Groups" : "Grupos", + "Limit to groups" : "Limitar a grupos", + "Allow filesystem access" : "Permitir acceso al sistema de archivos", + "Revoke" : "Revocar", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome para Android", + "Sync client - {os}" : "Sync client - {os}", + "This session" : "Esta sesión", + "Device" : "Dispositivo", + "Last activity" : "Última actividad", + "Web, desktop and mobile clients currently logged in to your account." : "Clientes web, de escritorio y móviles han iniciado sesión en tu cuenta. ", + "Error while creating device token" : "Se presentó un error al crear la ficha en el dispositivo", + "Error while deleting the token" : "Se presentó un error al borrar la ficha", + "App name" : "Nombre de la aplicación", + "Create new app password" : "Crear una nueva contraseña de aplicación", + "Use the credentials below to configure your app or device." : "Usa las siguientes credenciales para configurar tu aplicación o dispositivo. ", + "For security reasons this password will only be shown once." : "Por razones de seguridad esta contraseña sólo se mostrará una vez. ", + "Username" : "Usuario", + "Password" : "Contraseña", + "Done" : "Terminado", + "Copied!" : "¡Copiado!", + "Copy" : "Copiar", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Las aplicaciones oficiales son desarrolladas por y dentro de la comunidad. Ofrecen una funcionalidad centralizada y se encuentran listas para ser usadas en producción. ", + "Official" : "Oficial", + "Remove" : "Eliminar", + "Disable" : "Deshabilitar", + "All" : "Todos", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión mínima de Nextcloud asignada. Esto será un error en el futuro.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión máxima de Nextcloud asignada. Esto será un error en el futuro.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Esta aplicación no puede ser instalada porque las siguientes dependencias no están satisfechas:", + "View in store" : "Ver en la tienda", + "Visit website" : "Visita el sitio web", + "Report a bug" : "Reporta un detalle", + "User documentation" : "Documentación del usuario", + "Admin documentation" : "Documentación del administrador", + "Developer documentation" : "Documentación del desarrollador", + "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Enable all" : "Habilitar todo", + "Enable" : "Habilitar", + "The app will be downloaded from the app store" : "La aplicación será descargada de la tienda de aplicaciones <app store>", + "New password" : "Nueva contraseña", + "{size} used" : "{size} usado", + "Email" : "Correo electrónico", + "Group admin for" : "Administrador del grupo para", + "Quota" : "Cuota", + "Language" : "Idioma", + "Storage location" : "Úbicación del almacenamiento", + "User backend" : "Backend del usuario", + "Last login" : "Último inicio de sesión", + "Default quota" : "Cuota predeterminada", + "Your apps" : "Tus aplicaciones", + "Disabled apps" : "Aplicaciones deshabilitadas", + "Updates" : "Actualizaciones", + "App bundles" : "Paquetes de aplicación", + "Show last login" : "Mostrar último inicio de sesión", + "Show user backend" : "Mostrar backend del usuario", + "Admins" : "Administradores", + "Everyone" : "Todos", + "Add group" : "Agregar grupo", + "Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor", + "SSL Root Certificates" : "Certificado SSL Raíz", + "Common Name" : "Nombre común", + "Valid until" : "Válido hasta", + "Issued By" : "Levantado Por", + "Valid until %s" : "Válido hasta %s", + "Import root certificate" : "Importar certificado raíz", + "Administrator documentation" : "Documentación del adminsitrador", + "Forum" : "Foro", + "None" : "Ninguno", + "Login" : "Iniciar sesión", + "Plain" : "Plano", + "NT LAN Manager" : "Administrador de LAN NT", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Servidor de correo electrónico", + "Open documentation" : "Abrir documentación", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Es importante preparar este servidor para poder enviar correos electrónicos, como para restablecer contraseñas y notificaciones. ", + "Send mode" : "Modo de envío", + "Encryption" : "Encripción", + "From address" : "De la dirección", + "mail" : "correo", + "Authentication method" : "Método de autenticación", + "Authentication required" : "Autenticación requerida", + "Server address" : "Dirección del servidor", + "Port" : "Puerto", + "Credentials" : "Credenciales", + "SMTP Username" : "Usuario SMTP", + "SMTP Password" : "Contraseña SMTP", + "Test email settings" : "Probar las configuraciones de correo electrónico", + "Send email" : "Enviar correo electrónico", + "Security & setup warnings" : "Advertencias de seguridad y configuración", + "All checks passed." : "Pasaron todas las verificaciones. ", + "Version" : "Versión", + "Server-side encryption" : "Encripción del lado del servidor", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "La encripción del lado del servidor hace posible encriptar archivos que serán cargados a este servidor. Esto trae consigo algunas limitaciónes como penalizaciones en el desemeño, asi que habilítalo sólo si es necesario. ", + "Enable server-side encryption" : "Habilitar encripción del lado del servidor", + "Please read carefully before activating server-side encryption: " : "Por favor lee detenidamente antes de activar la encripción del lado de servidor:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Una vez que la encripción se encuentre habilitada, todos lo archivos cargados al servidor desde ese momento en tiempo, se encriptarán en el servidor. Sólo será posible deshabilitar la encripción en una fecha posterior si el modulo de encripción activo soporta esa funcionalidad y si todas las preciondiciones están satisfechas (ejem. establecer una llave de recuperación).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "La encripción por sí sola no garantiza la seguridad del sistema. Por favor consulta la documentación para mayores informes de cómo funciona la aplicación de encripción y de los casos de uso soportados. ", + "Be aware that encryption always increases the file size." : "Por favor considera que la encripción siempre aumenta el tamaño de los archivos. ", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Siempre es una buena idea generar respaldos de tus datos, en caso de tener encripción asegúrate de respaldar las llaves de encripción junto con tus datos. ", + "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", + "Enable encryption" : "Habilitar encripción", + "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", + "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Necesitas migrar tus llaves de encripción de la encripción anterior (ownCloud <= 8.0) a la actual. Por favor habilita el \"Módulo de encripción predeterminado\" y ejecuta el comando 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Necesitas migar tus llaves de encripción de la encripción anterior (ownCloud <=8.0) a la actual. ", + "Start migration" : "Iniciar migración", + "Background jobs" : "Trabajos en segundo plano", + "Last job ran %s." : "El último trabajo corrió %s.", + "Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ", + "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ", + "Execute one task with each page loaded" : "Ejecutar una tarea con cada página cargada", + "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ", + "Sharing" : "Compartiendo", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", + "Allow apps to use the Share API" : "Permitir que las aplicaciones usen el API para Compartir", + "Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas", + "Allow public uploads" : "Permitir cargas públicas", + "Always ask for a password" : "Siempre pedir una contraseña", + "Enforce password protection" : "Forzar protección de contraseñas", + "Set default expiration date" : "Establecer la fecha de expiración predeterminada", + "Expire after " : "Expirar después de", + "days" : "días", + "Enforce expiration date" : "Forzar fecha de expiración", + "Allow resharing" : "Permitir volver a compartir", + "Allow sharing with groups" : "Permitir compartir con grupos", + "Restrict users to only share with users in their groups" : "Limitar a los usuarios a sólo compartir con otros usuarios en sus grupos", + "Exclude groups from sharing" : "Evitar que los grupos compartan", + "These groups will still be able to receive shares, but not to initiate them." : "Estos grupos aún podrán recibir elementos compartidos, pero no los podrán iniciar.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Permitir el autocompletado de usuarios en la ventana de diálogo de compartir. Si esto está deshabilitado, se deberá ingresar el correo electrónico o nombre completo. ", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Mostrar el texto de exención de responsabilidad legal en la página de carga de ligas públicas. (Sólo se muestra cuando la lista de archivos está oculta.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Este texto se mostrará en la página de carga de la liga pública cuando la lista de archivos esté oculta. ", + "Personal" : "Personal", + "Administration" : "Administración", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Desarrollado por la {communityopen}comunidad Nextcloud {linkclose}, el {githubopen}código fuente {linkclose} está licenciado bajo {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Da un Like a nuestra página de Facebook", + "Follow us on Twitter" : "Síguenos en Twitter", + "Check out our blog" : "Visita nuestro blog", + "Subscribe to our newsletter" : "Suscribete a nuestro boletín", + "Profile picture" : "Foto de perfil", + "Upload new" : "Cargar nuevo", + "Select from Files" : "Seleccionar desde Archivos", + "Remove image" : "Eliminar imagen", + "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", + "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", + "Cancel" : "Cancelar", + "Choose as profile picture" : "Seleccionar como foto del perfil", + "Full name" : "Nombre completo", + "No display name set" : "No se ha establecido el nombre a desplegar", + "Your email address" : "Tu dirección de correo electrónico", + "No email address set" : "No se ha establecido la dirección de correo electrónico", + "For password reset and notifications" : "Para restablecer contraseña y notificaciones", + "Phone number" : "Número de teléfono", + "Your phone number" : "Su número telefónico", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "Website" : "Sitio web", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Cuenta de twitter @...", + "Help translate" : "Ayuda a traducir", + "Current password" : "Contraseña actual", + "Change password" : "Cambiar contraseña", + "Store credentials" : "Almacenar credenciales", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php está registrado en un servicio webcron para llamar a cron.php cada 15 minutos a través de HTTP. ", + "Use system cron service to call the cron.php file every 15 minutes." : "Usar el servicio cron del sistema para llamar al archivo cron.php cada 15 minutos. " +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} \ No newline at end of file diff --git a/apps/settings/l10n/es_PY.js b/apps/settings/l10n/es_PY.js new file mode 100644 index 00000000000..3d9fadb1a06 --- /dev/null +++ b/apps/settings/l10n/es_PY.js @@ -0,0 +1,258 @@ +OC.L10N.register( + "settings", + { + "{actor} changed your password" : "{actor} ha cambiado tu contraseña", + "You changed your password" : "Cambiaste tu contraseña", + "Your password was reset by an administrator" : "Tu contraseña ha sido restablecida por un adminsitrador", + "{actor} changed your email address" : "{actor} ha cambiado tu dirección de correo electrónico", + "You changed your email address" : "Cambiaste tu dirección de correo electrónico", + "Your email address was changed by an administrator" : "Tu dirección de correo electrónico ha sido cambiada por un administrador", + "Security" : "Seguridad", + "You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado", + "Couldn't remove app." : "No fue posible eliminar la aplicación. ", + "Couldn't update app." : "No fue posible actualizar la aplicación.", + "Wrong password" : "Contraseña incorrecta", + "Saved" : "Guardado", + "No user supplied" : "No se proporcionó usuario alguno", + "Unable to change password" : "No fue posible cambiar la contraseña", + "Authentication error" : "Error de autenticación", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Por favor proporciona una contraseña de recuperación de administrador; de lo contrario toda la información del usuario se perderá. ", + "Wrong admin recovery password. Please check the password and try again." : "Contraseña de recuperación de administrador incorrecta. Por favor verificala e inténtalo de nuevo.", + "Backend doesn't support password change, but the user's encryption key was updated." : "El backend no soporta el cambio de contraseñas, pero la llave de encripción del usuario fue actualizada.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Instalando y actualizando aplicaciones por la tienda de aplicaciones o Compartido la Nube Federada", + "Federated Cloud Sharing" : "Compartir en la Nube Federada", + "Invalid SMTP password." : "Constraseña SMTP inválida. ", + "Email setting test" : "Prueba de ajustes de correo", + "Well done, %s!" : "¡Bien hecho, %s!", + "If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ", + "Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)", + "You need to set your user email before being able to send test emails." : "Requieres establecer tu correo electrónico antes de poder enviar correos electrónicos de prueba. ", + "Invalid mail address" : "Dirección de correo inválida", + "Settings saved" : "Se han guardado las configuraciones ", + "Unable to change full name" : "No fue posible cambiar el nombre completo", + "Unable to change email address" : "No fue posible cambiar la dirección de correo electrónico", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Para poder verificar tu cuenta de Twitter, publica el siguiente tweet en Twitter (por favor asegúrarte de publicar sin ninguna línea en blanco):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Para poder verificar tu sitio Web, agrega el siguiente contendio a tu web-root en '.well-known/CloudIdVerificationCode.txt' (por favor asegurate de que el texto completo este en una sóla línea):", + "%1$s changed your password on %2$s." : "%1$s cambió tu contraseña el %2$s.", + "Your password on %s was changed." : "Tu contraseña de %s fue cambiada. ", + "Your password on %s was reset by an administrator." : "Tu contraseña de %s fue restablecida por un administrador.", + "Password for %1$s changed on %2$s" : "La contraseña para %1$s fue cambiada el %2$s", + "Password changed for %s" : "La contraseña fue cambiada para %s", + "If you did not request this, please contact an administrator." : "Si no lo solicitaste, por favor contacta a un administrador. ", + "Your email address on %s was changed." : "Tu dirección de correo electrónico en %s fue cambiada. ", + "Your email address on %s was changed by an administrator." : "Tu dirección de correo electrónico en %s fue cambiada por un adminsitrador. ", + "Email address for %1$s changed on %2$s" : "La dirección de correo electrónico para %1$s fue cambiada el %2$s", + "Email address changed for %s" : "La dirección de correo electrónico fue cambiada para %s", + "The new email address is %s" : "La nueva dirección de correo electrónico es %s", + "Your %s account was created" : "Tu cuenta %s ha sido creada", + "Welcome aboard" : "Bienvenido a bordo", + "Welcome aboard %s" : "Bienvenido a bordo %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Bienvenido a tu cuenta %s, puedes agregar, proteger y compartir tus datos.", + "Your username is: %s" : "Tu Usuario es: %s", + "Set your password" : "Establece tu contraseña", + "Go to %s" : "Ir a %s", + "Install Client" : "Instalar el cliente", + "Delete" : "Borrar", + "Unlimited" : "Ilimitado", + "Verifying …" : "Verificando ...", + "Verify" : "Verificar", + "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración", + "Migration started …" : "La migración ha comenzado ...", + "Not saved" : "No guardado", + "Sending…" : "Enviando...", + "Email sent" : "Correo electrónico enviado", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Se presentó un error. Por favor carga un certificado PEM con codificación ASCII", + "Valid until {date}" : "Válido hasta {date}", + "Local" : "Local", + "Private" : "Privado", + "Only visible to local users" : "Visible sólo para usuarios locales", + "Only visible to you" : "Sólo visible para ti", + "Contacts" : "Contactos", + "Visible to local users and to trusted servers" : "Visible para usuarios locales y para servidores de confianza", + "Public" : "Público", + "Will be synced to a global and public address book" : "Será sincronizado a una libreta de direcciones global y pública", + "Very weak password" : "Contraseña muy débil", + "Weak password" : "Contraseña débil", + "So-so password" : "Contraseña aceptable", + "Good password" : "Buena contraseña", + "Strong password" : "Contraseña fuerte", + "Select a profile picture" : "Selecciona una imagen de perfil", + "Groups" : "Grupos", + "Limit to groups" : "Limitar a grupos", + "Allow filesystem access" : "Permitir acceso al sistema de archivos", + "Revoke" : "Revocar", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome para Android", + "Sync client - {os}" : "Sync client - {os}", + "This session" : "Esta sesión", + "Device" : "Dispositivo", + "Last activity" : "Última actividad", + "Web, desktop and mobile clients currently logged in to your account." : "Clientes web, de escritorio y móviles han iniciado sesión en tu cuenta. ", + "Error while creating device token" : "Se presentó un error al crear la ficha en el dispositivo", + "Error while deleting the token" : "Se presentó un error al borrar la ficha", + "App name" : "Nombre de la aplicación", + "Create new app password" : "Crear una nueva contraseña de aplicación", + "Use the credentials below to configure your app or device." : "Usa las siguientes credenciales para configurar tu aplicación o dispositivo. ", + "For security reasons this password will only be shown once." : "Por razones de seguridad esta contraseña sólo se mostrará una vez. ", + "Username" : "Usuario", + "Password" : "Contraseña", + "Done" : "Terminado", + "Copied!" : "¡Copiado!", + "Copy" : "Copiar", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Las aplicaciones oficiales son desarrolladas por y dentro de la comunidad. Ofrecen una funcionalidad centralizada y se encuentran listas para ser usadas en producción. ", + "Official" : "Oficial", + "Remove" : "Eliminar", + "Disable" : "Deshabilitar", + "All" : "Todos", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión mínima de Nextcloud asignada. Esto será un error en el futuro.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión máxima de Nextcloud asignada. Esto será un error en el futuro.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Esta aplicación no puede ser instalada porque las siguientes dependencias no están satisfechas:", + "View in store" : "Ver en la tienda", + "Visit website" : "Visita el sitio web", + "Report a bug" : "Reporta un detalle", + "User documentation" : "Documentación del usuario", + "Admin documentation" : "Documentación del administrador", + "Developer documentation" : "Documentación del desarrollador", + "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Enable all" : "Habilitar todo", + "Enable" : "Habilitar", + "The app will be downloaded from the app store" : "La aplicación será descargada de la tienda de aplicaciones <app store>", + "New password" : "Nueva contraseña", + "{size} used" : "{size} usado", + "Email" : "Correo electrónico", + "Group admin for" : "Administrador del grupo para", + "Quota" : "Cuota", + "Language" : "Idioma", + "Storage location" : "Úbicación del almacenamiento", + "User backend" : "Backend del usuario", + "Last login" : "Último inicio de sesión", + "Default quota" : "Cuota predeterminada", + "Your apps" : "Tus aplicaciones", + "Disabled apps" : "Aplicaciones deshabilitadas", + "Updates" : "Actualizaciones", + "App bundles" : "Paquetes de aplicación", + "Show last login" : "Mostrar último inicio de sesión", + "Show user backend" : "Mostrar backend del usuario", + "Admins" : "Administradores", + "Everyone" : "Todos", + "Add group" : "Agregar grupo", + "Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor", + "SSL Root Certificates" : "Certificado SSL Raíz", + "Common Name" : "Nombre común", + "Valid until" : "Válido hasta", + "Issued By" : "Levantado Por", + "Valid until %s" : "Válido hasta %s", + "Import root certificate" : "Importar certificado raíz", + "Administrator documentation" : "Documentación del adminsitrador", + "Forum" : "Foro", + "None" : "Ninguno", + "Login" : "Iniciar sesión", + "Plain" : "Plano", + "NT LAN Manager" : "Administrador de LAN NT", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Servidor de correo electrónico", + "Open documentation" : "Abrir documentación", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Es importante preparar este servidor para poder enviar correos electrónicos, como para restablecer contraseñas y notificaciones. ", + "Send mode" : "Modo de envío", + "Encryption" : "Encripción", + "From address" : "De la dirección", + "mail" : "correo", + "Authentication method" : "Método de autenticación", + "Authentication required" : "Autenticación requerida", + "Server address" : "Dirección del servidor", + "Port" : "Puerto", + "Credentials" : "Credenciales", + "SMTP Username" : "Usuario SMTP", + "SMTP Password" : "Contraseña SMTP", + "Test email settings" : "Probar las configuraciones de correo electrónico", + "Send email" : "Enviar correo electrónico", + "Security & setup warnings" : "Advertencias de seguridad y configuración", + "All checks passed." : "Pasaron todas las verificaciones. ", + "Version" : "Versión", + "Server-side encryption" : "Encripción del lado del servidor", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "La encripción del lado del servidor hace posible encriptar archivos que serán cargados a este servidor. Esto trae consigo algunas limitaciónes como penalizaciones en el desemeño, asi que habilítalo sólo si es necesario. ", + "Enable server-side encryption" : "Habilitar encripción del lado del servidor", + "Please read carefully before activating server-side encryption: " : "Por favor lee detenidamente antes de activar la encripción del lado de servidor:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Una vez que la encripción se encuentre habilitada, todos lo archivos cargados al servidor desde ese momento en tiempo, se encriptarán en el servidor. Sólo será posible deshabilitar la encripción en una fecha posterior si el modulo de encripción activo soporta esa funcionalidad y si todas las preciondiciones están satisfechas (ejem. establecer una llave de recuperación).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "La encripción por sí sola no garantiza la seguridad del sistema. Por favor consulta la documentación para mayores informes de cómo funciona la aplicación de encripción y de los casos de uso soportados. ", + "Be aware that encryption always increases the file size." : "Por favor considera que la encripción siempre aumenta el tamaño de los archivos. ", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Siempre es una buena idea generar respaldos de tus datos, en caso de tener encripción asegúrate de respaldar las llaves de encripción junto con tus datos. ", + "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", + "Enable encryption" : "Habilitar encripción", + "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", + "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Necesitas migrar tus llaves de encripción de la encripción anterior (ownCloud <= 8.0) a la actual. Por favor habilita el \"Módulo de encripción predeterminado\" y ejecuta el comando 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Necesitas migar tus llaves de encripción de la encripción anterior (ownCloud <=8.0) a la actual. ", + "Start migration" : "Iniciar migración", + "Background jobs" : "Trabajos en segundo plano", + "Last job ran %s." : "El último trabajo corrió %s.", + "Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ", + "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ", + "Execute one task with each page loaded" : "Ejecutar una tarea con cada página cargada", + "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ", + "Sharing" : "Compartiendo", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", + "Allow apps to use the Share API" : "Permitir que las aplicaciones usen el API para Compartir", + "Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas", + "Allow public uploads" : "Permitir cargas públicas", + "Always ask for a password" : "Siempre pedir una contraseña", + "Enforce password protection" : "Forzar protección de contraseñas", + "Set default expiration date" : "Establecer la fecha de expiración predeterminada", + "Expire after " : "Expirar después de", + "days" : "días", + "Enforce expiration date" : "Forzar fecha de expiración", + "Allow resharing" : "Permitir volver a compartir", + "Allow sharing with groups" : "Permitir compartir con grupos", + "Restrict users to only share with users in their groups" : "Limitar a los usuarios a sólo compartir con otros usuarios en sus grupos", + "Exclude groups from sharing" : "Evitar que los grupos compartan", + "These groups will still be able to receive shares, but not to initiate them." : "Estos grupos aún podrán recibir elementos compartidos, pero no los podrán iniciar.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Permitir el autocompletado de usuarios en la ventana de diálogo de compartir. Si esto está deshabilitado, se deberá ingresar el correo electrónico o nombre completo. ", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Mostrar el texto de exención de responsabilidad legal en la página de carga de ligas públicas. (Sólo se muestra cuando la lista de archivos está oculta.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Este texto se mostrará en la página de carga de la liga pública cuando la lista de archivos esté oculta. ", + "Personal" : "Personal", + "Administration" : "Administración", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Desarrollado por la {communityopen}comunidad Nextcloud {linkclose}, el {githubopen}código fuente {linkclose} está licenciado bajo {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Da un Like a nuestra página de Facebook", + "Follow us on Twitter" : "Síguenos en Twitter", + "Check out our blog" : "Visita nuestro blog", + "Subscribe to our newsletter" : "Suscribete a nuestro boletín", + "Profile picture" : "Foto de perfil", + "Upload new" : "Cargar nuevo", + "Select from Files" : "Seleccionar desde Archivos", + "Remove image" : "Eliminar imagen", + "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", + "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", + "Cancel" : "Cancelar", + "Choose as profile picture" : "Seleccionar como foto del perfil", + "Full name" : "Nombre completo", + "No display name set" : "No se ha establecido el nombre a desplegar", + "Your email address" : "Tu dirección de correo electrónico", + "No email address set" : "No se ha establecido la dirección de correo electrónico", + "For password reset and notifications" : "Para restablecer contraseña y notificaciones", + "Phone number" : "Número de teléfono", + "Your phone number" : "Su número telefónico", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "Website" : "Sitio web", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Cuenta de twitter @...", + "Help translate" : "Ayuda a traducir", + "Current password" : "Contraseña actual", + "Change password" : "Cambiar contraseña", + "Store credentials" : "Almacenar credenciales", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php está registrado en un servicio webcron para llamar a cron.php cada 15 minutos a través de HTTP. ", + "Use system cron service to call the cron.php file every 15 minutes." : "Usar el servicio cron del sistema para llamar al archivo cron.php cada 15 minutos. " +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/es_PY.json b/apps/settings/l10n/es_PY.json new file mode 100644 index 00000000000..072220b24af --- /dev/null +++ b/apps/settings/l10n/es_PY.json @@ -0,0 +1,256 @@ +{ "translations": { + "{actor} changed your password" : "{actor} ha cambiado tu contraseña", + "You changed your password" : "Cambiaste tu contraseña", + "Your password was reset by an administrator" : "Tu contraseña ha sido restablecida por un adminsitrador", + "{actor} changed your email address" : "{actor} ha cambiado tu dirección de correo electrónico", + "You changed your email address" : "Cambiaste tu dirección de correo electrónico", + "Your email address was changed by an administrator" : "Tu dirección de correo electrónico ha sido cambiada por un administrador", + "Security" : "Seguridad", + "You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado", + "Couldn't remove app." : "No fue posible eliminar la aplicación. ", + "Couldn't update app." : "No fue posible actualizar la aplicación.", + "Wrong password" : "Contraseña incorrecta", + "Saved" : "Guardado", + "No user supplied" : "No se proporcionó usuario alguno", + "Unable to change password" : "No fue posible cambiar la contraseña", + "Authentication error" : "Error de autenticación", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Por favor proporciona una contraseña de recuperación de administrador; de lo contrario toda la información del usuario se perderá. ", + "Wrong admin recovery password. Please check the password and try again." : "Contraseña de recuperación de administrador incorrecta. Por favor verificala e inténtalo de nuevo.", + "Backend doesn't support password change, but the user's encryption key was updated." : "El backend no soporta el cambio de contraseñas, pero la llave de encripción del usuario fue actualizada.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Instalando y actualizando aplicaciones por la tienda de aplicaciones o Compartido la Nube Federada", + "Federated Cloud Sharing" : "Compartir en la Nube Federada", + "Invalid SMTP password." : "Constraseña SMTP inválida. ", + "Email setting test" : "Prueba de ajustes de correo", + "Well done, %s!" : "¡Bien hecho, %s!", + "If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ", + "Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)", + "You need to set your user email before being able to send test emails." : "Requieres establecer tu correo electrónico antes de poder enviar correos electrónicos de prueba. ", + "Invalid mail address" : "Dirección de correo inválida", + "Settings saved" : "Se han guardado las configuraciones ", + "Unable to change full name" : "No fue posible cambiar el nombre completo", + "Unable to change email address" : "No fue posible cambiar la dirección de correo electrónico", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Para poder verificar tu cuenta de Twitter, publica el siguiente tweet en Twitter (por favor asegúrarte de publicar sin ninguna línea en blanco):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Para poder verificar tu sitio Web, agrega el siguiente contendio a tu web-root en '.well-known/CloudIdVerificationCode.txt' (por favor asegurate de que el texto completo este en una sóla línea):", + "%1$s changed your password on %2$s." : "%1$s cambió tu contraseña el %2$s.", + "Your password on %s was changed." : "Tu contraseña de %s fue cambiada. ", + "Your password on %s was reset by an administrator." : "Tu contraseña de %s fue restablecida por un administrador.", + "Password for %1$s changed on %2$s" : "La contraseña para %1$s fue cambiada el %2$s", + "Password changed for %s" : "La contraseña fue cambiada para %s", + "If you did not request this, please contact an administrator." : "Si no lo solicitaste, por favor contacta a un administrador. ", + "Your email address on %s was changed." : "Tu dirección de correo electrónico en %s fue cambiada. ", + "Your email address on %s was changed by an administrator." : "Tu dirección de correo electrónico en %s fue cambiada por un adminsitrador. ", + "Email address for %1$s changed on %2$s" : "La dirección de correo electrónico para %1$s fue cambiada el %2$s", + "Email address changed for %s" : "La dirección de correo electrónico fue cambiada para %s", + "The new email address is %s" : "La nueva dirección de correo electrónico es %s", + "Your %s account was created" : "Tu cuenta %s ha sido creada", + "Welcome aboard" : "Bienvenido a bordo", + "Welcome aboard %s" : "Bienvenido a bordo %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Bienvenido a tu cuenta %s, puedes agregar, proteger y compartir tus datos.", + "Your username is: %s" : "Tu Usuario es: %s", + "Set your password" : "Establece tu contraseña", + "Go to %s" : "Ir a %s", + "Install Client" : "Instalar el cliente", + "Delete" : "Borrar", + "Unlimited" : "Ilimitado", + "Verifying …" : "Verificando ...", + "Verify" : "Verificar", + "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración", + "Migration started …" : "La migración ha comenzado ...", + "Not saved" : "No guardado", + "Sending…" : "Enviando...", + "Email sent" : "Correo electrónico enviado", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Se presentó un error. Por favor carga un certificado PEM con codificación ASCII", + "Valid until {date}" : "Válido hasta {date}", + "Local" : "Local", + "Private" : "Privado", + "Only visible to local users" : "Visible sólo para usuarios locales", + "Only visible to you" : "Sólo visible para ti", + "Contacts" : "Contactos", + "Visible to local users and to trusted servers" : "Visible para usuarios locales y para servidores de confianza", + "Public" : "Público", + "Will be synced to a global and public address book" : "Será sincronizado a una libreta de direcciones global y pública", + "Very weak password" : "Contraseña muy débil", + "Weak password" : "Contraseña débil", + "So-so password" : "Contraseña aceptable", + "Good password" : "Buena contraseña", + "Strong password" : "Contraseña fuerte", + "Select a profile picture" : "Selecciona una imagen de perfil", + "Groups" : "Grupos", + "Limit to groups" : "Limitar a grupos", + "Allow filesystem access" : "Permitir acceso al sistema de archivos", + "Revoke" : "Revocar", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome para Android", + "Sync client - {os}" : "Sync client - {os}", + "This session" : "Esta sesión", + "Device" : "Dispositivo", + "Last activity" : "Última actividad", + "Web, desktop and mobile clients currently logged in to your account." : "Clientes web, de escritorio y móviles han iniciado sesión en tu cuenta. ", + "Error while creating device token" : "Se presentó un error al crear la ficha en el dispositivo", + "Error while deleting the token" : "Se presentó un error al borrar la ficha", + "App name" : "Nombre de la aplicación", + "Create new app password" : "Crear una nueva contraseña de aplicación", + "Use the credentials below to configure your app or device." : "Usa las siguientes credenciales para configurar tu aplicación o dispositivo. ", + "For security reasons this password will only be shown once." : "Por razones de seguridad esta contraseña sólo se mostrará una vez. ", + "Username" : "Usuario", + "Password" : "Contraseña", + "Done" : "Terminado", + "Copied!" : "¡Copiado!", + "Copy" : "Copiar", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Las aplicaciones oficiales son desarrolladas por y dentro de la comunidad. Ofrecen una funcionalidad centralizada y se encuentran listas para ser usadas en producción. ", + "Official" : "Oficial", + "Remove" : "Eliminar", + "Disable" : "Deshabilitar", + "All" : "Todos", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión mínima de Nextcloud asignada. Esto será un error en el futuro.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión máxima de Nextcloud asignada. Esto será un error en el futuro.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Esta aplicación no puede ser instalada porque las siguientes dependencias no están satisfechas:", + "View in store" : "Ver en la tienda", + "Visit website" : "Visita el sitio web", + "Report a bug" : "Reporta un detalle", + "User documentation" : "Documentación del usuario", + "Admin documentation" : "Documentación del administrador", + "Developer documentation" : "Documentación del desarrollador", + "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Enable all" : "Habilitar todo", + "Enable" : "Habilitar", + "The app will be downloaded from the app store" : "La aplicación será descargada de la tienda de aplicaciones <app store>", + "New password" : "Nueva contraseña", + "{size} used" : "{size} usado", + "Email" : "Correo electrónico", + "Group admin for" : "Administrador del grupo para", + "Quota" : "Cuota", + "Language" : "Idioma", + "Storage location" : "Úbicación del almacenamiento", + "User backend" : "Backend del usuario", + "Last login" : "Último inicio de sesión", + "Default quota" : "Cuota predeterminada", + "Your apps" : "Tus aplicaciones", + "Disabled apps" : "Aplicaciones deshabilitadas", + "Updates" : "Actualizaciones", + "App bundles" : "Paquetes de aplicación", + "Show last login" : "Mostrar último inicio de sesión", + "Show user backend" : "Mostrar backend del usuario", + "Admins" : "Administradores", + "Everyone" : "Todos", + "Add group" : "Agregar grupo", + "Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor", + "SSL Root Certificates" : "Certificado SSL Raíz", + "Common Name" : "Nombre común", + "Valid until" : "Válido hasta", + "Issued By" : "Levantado Por", + "Valid until %s" : "Válido hasta %s", + "Import root certificate" : "Importar certificado raíz", + "Administrator documentation" : "Documentación del adminsitrador", + "Forum" : "Foro", + "None" : "Ninguno", + "Login" : "Iniciar sesión", + "Plain" : "Plano", + "NT LAN Manager" : "Administrador de LAN NT", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Servidor de correo electrónico", + "Open documentation" : "Abrir documentación", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Es importante preparar este servidor para poder enviar correos electrónicos, como para restablecer contraseñas y notificaciones. ", + "Send mode" : "Modo de envío", + "Encryption" : "Encripción", + "From address" : "De la dirección", + "mail" : "correo", + "Authentication method" : "Método de autenticación", + "Authentication required" : "Autenticación requerida", + "Server address" : "Dirección del servidor", + "Port" : "Puerto", + "Credentials" : "Credenciales", + "SMTP Username" : "Usuario SMTP", + "SMTP Password" : "Contraseña SMTP", + "Test email settings" : "Probar las configuraciones de correo electrónico", + "Send email" : "Enviar correo electrónico", + "Security & setup warnings" : "Advertencias de seguridad y configuración", + "All checks passed." : "Pasaron todas las verificaciones. ", + "Version" : "Versión", + "Server-side encryption" : "Encripción del lado del servidor", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "La encripción del lado del servidor hace posible encriptar archivos que serán cargados a este servidor. Esto trae consigo algunas limitaciónes como penalizaciones en el desemeño, asi que habilítalo sólo si es necesario. ", + "Enable server-side encryption" : "Habilitar encripción del lado del servidor", + "Please read carefully before activating server-side encryption: " : "Por favor lee detenidamente antes de activar la encripción del lado de servidor:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Una vez que la encripción se encuentre habilitada, todos lo archivos cargados al servidor desde ese momento en tiempo, se encriptarán en el servidor. Sólo será posible deshabilitar la encripción en una fecha posterior si el modulo de encripción activo soporta esa funcionalidad y si todas las preciondiciones están satisfechas (ejem. establecer una llave de recuperación).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "La encripción por sí sola no garantiza la seguridad del sistema. Por favor consulta la documentación para mayores informes de cómo funciona la aplicación de encripción y de los casos de uso soportados. ", + "Be aware that encryption always increases the file size." : "Por favor considera que la encripción siempre aumenta el tamaño de los archivos. ", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Siempre es una buena idea generar respaldos de tus datos, en caso de tener encripción asegúrate de respaldar las llaves de encripción junto con tus datos. ", + "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", + "Enable encryption" : "Habilitar encripción", + "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", + "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Necesitas migrar tus llaves de encripción de la encripción anterior (ownCloud <= 8.0) a la actual. Por favor habilita el \"Módulo de encripción predeterminado\" y ejecuta el comando 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Necesitas migar tus llaves de encripción de la encripción anterior (ownCloud <=8.0) a la actual. ", + "Start migration" : "Iniciar migración", + "Background jobs" : "Trabajos en segundo plano", + "Last job ran %s." : "El último trabajo corrió %s.", + "Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ", + "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ", + "Execute one task with each page loaded" : "Ejecutar una tarea con cada página cargada", + "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ", + "Sharing" : "Compartiendo", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", + "Allow apps to use the Share API" : "Permitir que las aplicaciones usen el API para Compartir", + "Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas", + "Allow public uploads" : "Permitir cargas públicas", + "Always ask for a password" : "Siempre pedir una contraseña", + "Enforce password protection" : "Forzar protección de contraseñas", + "Set default expiration date" : "Establecer la fecha de expiración predeterminada", + "Expire after " : "Expirar después de", + "days" : "días", + "Enforce expiration date" : "Forzar fecha de expiración", + "Allow resharing" : "Permitir volver a compartir", + "Allow sharing with groups" : "Permitir compartir con grupos", + "Restrict users to only share with users in their groups" : "Limitar a los usuarios a sólo compartir con otros usuarios en sus grupos", + "Exclude groups from sharing" : "Evitar que los grupos compartan", + "These groups will still be able to receive shares, but not to initiate them." : "Estos grupos aún podrán recibir elementos compartidos, pero no los podrán iniciar.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Permitir el autocompletado de usuarios en la ventana de diálogo de compartir. Si esto está deshabilitado, se deberá ingresar el correo electrónico o nombre completo. ", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Mostrar el texto de exención de responsabilidad legal en la página de carga de ligas públicas. (Sólo se muestra cuando la lista de archivos está oculta.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Este texto se mostrará en la página de carga de la liga pública cuando la lista de archivos esté oculta. ", + "Personal" : "Personal", + "Administration" : "Administración", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Desarrollado por la {communityopen}comunidad Nextcloud {linkclose}, el {githubopen}código fuente {linkclose} está licenciado bajo {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Da un Like a nuestra página de Facebook", + "Follow us on Twitter" : "Síguenos en Twitter", + "Check out our blog" : "Visita nuestro blog", + "Subscribe to our newsletter" : "Suscribete a nuestro boletín", + "Profile picture" : "Foto de perfil", + "Upload new" : "Cargar nuevo", + "Select from Files" : "Seleccionar desde Archivos", + "Remove image" : "Eliminar imagen", + "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", + "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", + "Cancel" : "Cancelar", + "Choose as profile picture" : "Seleccionar como foto del perfil", + "Full name" : "Nombre completo", + "No display name set" : "No se ha establecido el nombre a desplegar", + "Your email address" : "Tu dirección de correo electrónico", + "No email address set" : "No se ha establecido la dirección de correo electrónico", + "For password reset and notifications" : "Para restablecer contraseña y notificaciones", + "Phone number" : "Número de teléfono", + "Your phone number" : "Su número telefónico", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "Website" : "Sitio web", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Cuenta de twitter @...", + "Help translate" : "Ayuda a traducir", + "Current password" : "Contraseña actual", + "Change password" : "Cambiar contraseña", + "Store credentials" : "Almacenar credenciales", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php está registrado en un servicio webcron para llamar a cron.php cada 15 minutos a través de HTTP. ", + "Use system cron service to call the cron.php file every 15 minutes." : "Usar el servicio cron del sistema para llamar al archivo cron.php cada 15 minutos. " +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} \ No newline at end of file diff --git a/apps/settings/l10n/es_SV.js b/apps/settings/l10n/es_SV.js new file mode 100644 index 00000000000..93c7e4f0944 --- /dev/null +++ b/apps/settings/l10n/es_SV.js @@ -0,0 +1,264 @@ +OC.L10N.register( + "settings", + { + "{actor} changed your password" : "{actor} ha cambiado tu contraseña", + "You changed your password" : "Cambiaste tu contraseña", + "Your password was reset by an administrator" : "Tu contraseña ha sido restablecida por un adminsitrador", + "{actor} changed your email address" : "{actor} ha cambiado tu dirección de correo electrónico", + "You changed your email address" : "Cambiaste tu dirección de correo electrónico", + "Your email address was changed by an administrator" : "Tu dirección de correo electrónico ha sido cambiada por un administrador", + "Security" : "Seguridad", + "You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado", + "Couldn't remove app." : "No fue posible eliminar la aplicación. ", + "Couldn't update app." : "No fue posible actualizar la aplicación.", + "Wrong password" : "Contraseña incorrecta", + "Saved" : "Guardado", + "No user supplied" : "No se proporcionó usuario alguno", + "Unable to change password" : "No fue posible cambiar la contraseña", + "Authentication error" : "Error de autenticación", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Por favor proporciona una contraseña de recuperación de administrador; de lo contrario toda la información del usuario se perderá. ", + "Wrong admin recovery password. Please check the password and try again." : "Contraseña de recuperación de administrador incorrecta. Por favor verificala e inténtalo de nuevo.", + "Backend doesn't support password change, but the user's encryption key was updated." : "El backend no soporta el cambio de contraseñas, pero la llave de encripción del usuario fue actualizada.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Instalando y actualizando aplicaciones por la tienda de aplicaciones o Compartido la Nube Federada", + "Federated Cloud Sharing" : "Compartir en la Nube Federada", + "Invalid SMTP password." : "Constraseña SMTP inválida. ", + "Email setting test" : "Prueba de ajustes de correo", + "Well done, %s!" : "¡Bien hecho, %s!", + "If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ", + "Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)", + "You need to set your user email before being able to send test emails." : "Requieres establecer tu correo electrónico antes de poder enviar correos electrónicos de prueba. ", + "Invalid mail address" : "Dirección de correo inválida", + "Settings saved" : "Se han guardado las configuraciones ", + "Unable to change full name" : "No fue posible cambiar el nombre completo", + "Unable to change email address" : "No fue posible cambiar la dirección de correo electrónico", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Para poder verificar tu cuenta de Twitter, publica el siguiente tweet en Twitter (por favor asegúrarte de publicar sin ninguna línea en blanco):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Para poder verificar tu sitio Web, agrega el siguiente contendio a tu web-root en '.well-known/CloudIdVerificationCode.txt' (por favor asegurate de que el texto completo este en una sóla línea):", + "%1$s changed your password on %2$s." : "%1$s cambió tu contraseña el %2$s.", + "Your password on %s was changed." : "Tu contraseña de %s fue cambiada. ", + "Your password on %s was reset by an administrator." : "Tu contraseña de %s fue restablecida por un administrador.", + "Password for %1$s changed on %2$s" : "La contraseña de %1$s fue cambiada en %2$s", + "Password changed for %s" : "La contraseña fue cambiada para %s", + "If you did not request this, please contact an administrator." : "Si no lo solicitaste, por favor contacta a un administrador. ", + "Your email address on %s was changed." : "Tu dirección de correo electrónico en %s fue cambiada. ", + "Your email address on %s was changed by an administrator." : "Tu dirección de correo electrónico en %s fue cambiada por un adminsitrador. ", + "Email address for %1$s changed on %2$s" : "La dirección de correo electrónico de %1$s ha cambiado en %2$s", + "Email address changed for %s" : "La dirección de correo electrónico fue cambiada para %s", + "The new email address is %s" : "La nueva dirección de correo electrónico es %s", + "Your %s account was created" : "Tu cuenta %s ha sido creada", + "Welcome aboard" : "Bienvenido a bordo", + "Welcome aboard %s" : "Bienvenido a bordo %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Bienvenido a tu cuenta %s, puedes agregar, proteger y compartir tus datos.", + "Your username is: %s" : "Tu Usuario es: %s", + "Set your password" : "Establece tu contraseña", + "Go to %s" : "Ir a %s", + "Install Client" : "Instalar el cliente", + "Delete" : "Borrar", + "Unlimited" : "Ilimitado", + "Verifying …" : "Verificando ...", + "Verify" : "Verificar", + "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", + "Migration started …" : "La migración ha comenzado ...", + "Not saved" : "No guardado", + "Sending…" : "Enviando...", + "Email sent" : "Correo electrónico enviado", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Se presentó un error. Por favor carga un certificado PEM con codificación ASCII", + "Valid until {date}" : "Válido hasta {date}", + "Local" : "Local", + "Private" : "Privado", + "Only visible to local users" : "Visible sólo para usuarios locales", + "Only visible to you" : "Sólo visible para ti", + "Contacts" : "Contactos", + "Visible to local users and to trusted servers" : "Visible para usuarios locales y para servidores de confianza", + "Public" : "Público", + "Will be synced to a global and public address book" : "Será sincronizado a una libreta de direcciones global y pública", + "Very weak password" : "Contraseña muy débil", + "Weak password" : "Contraseña débil", + "So-so password" : "Contraseña aceptable", + "Good password" : "Buena contraseña", + "Strong password" : "Contraseña fuerte", + "Select a profile picture" : "Selecciona una imagen de perfil", + "Groups" : "Grupos", + "Limit to groups" : "Limitar a grupos", + "Allow filesystem access" : "Permitir acceso al sistema de archivos", + "Revoke" : "Revocar", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome para Android", + "Sync client - {os}" : "Sync client - {os}", + "This session" : "Esta sesión", + "Device" : "Dispositivo", + "Last activity" : "Última actividad", + "Devices & sessions" : "Dispositivos y sesiones", + "Web, desktop and mobile clients currently logged in to your account." : "Clientes web, de escritorio y móviles han iniciado sesión en tu cuenta. ", + "Error while creating device token" : "Se presentó un error al crear la ficha en el dispositivo", + "Error while deleting the token" : "Se presentó un error al borrar la ficha", + "App name" : "Nombre de la aplicación", + "Create new app password" : "Crear una nueva contraseña de aplicación", + "Use the credentials below to configure your app or device." : "Usa las siguientes credenciales para configurar tu aplicación o dispositivo. ", + "For security reasons this password will only be shown once." : "Por razones de seguridad esta contraseña sólo se mostrará una vez. ", + "Username" : "Usuario", + "Password" : "Contraseña", + "Done" : "Terminado", + "Copied!" : "¡Copiado!", + "Copy" : "Copiar", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Las aplicaciones oficiales son desarrolladas por y dentro de la comunidad. Ofrecen una funcionalidad centralizada y se encuentran listas para ser usadas en producción. ", + "Official" : "Oficial", + "Remove" : "Eliminar", + "Disable" : "Deshabilitar", + "All" : "Todos", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión mínima de Nextcloud asignada. Esto será un error en el futuro.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión máxima de Nextcloud asignada. Esto será un error en el futuro.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Esta aplicación no puede ser instalada porque las siguientes dependencias no están satisfechas:", + "View in store" : "Ver en la tienda", + "Visit website" : "Visita el sitio web", + "Report a bug" : "Reporta un detalle", + "User documentation" : "Documentación del usuario", + "Admin documentation" : "Documentación del administrador", + "Developer documentation" : "Documentación del desarrollador", + "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Enable all" : "Habilitar todo", + "Enable" : "Habilitar", + "The app will be downloaded from the app store" : "La aplicación será descargada de la tienda de aplicaciones <app store>", + "New password" : "Nueva contraseña", + "{size} used" : "{size} usado", + "Email" : "Correo electrónico", + "Group admin for" : "Administrador del grupo para", + "Quota" : "Cuota", + "Language" : "Idioma", + "Storage location" : "Úbicación del almacenamiento", + "User backend" : "Backend del usuario", + "Last login" : "Último inicio de sesión", + "Default quota" : "Cuota predeterminada", + "Your apps" : "Tus aplicaciones", + "Disabled apps" : "Aplicaciones deshabilitadas", + "Updates" : "Actualizaciones", + "App bundles" : "Paquetes de aplicación", + "Show last login" : "Mostrar último inicio de sesión", + "Show user backend" : "Mostrar backend del usuario", + "Admins" : "Administradores", + "Everyone" : "Todos", + "Add group" : "Agregar grupo", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "La aplicación ha sido habilitada pero necesita ser actualizada. Serás redireccionado a la página de actualización en 5 segundos. ", + "App update" : "Actualización de la aplicación", + "Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor", + "SSL Root Certificates" : "Certificado SSL Raíz", + "Common Name" : "Nombre común", + "Valid until" : "Válido hasta", + "Issued By" : "Levantado Por", + "Valid until %s" : "Válido hasta %s", + "Import root certificate" : "Importar certificado raíz", + "Administrator documentation" : "Documentación del adminsitrador", + "Forum" : "Foro", + "None" : "Ninguno", + "Login" : "Iniciar sesión", + "Plain" : "Plano", + "NT LAN Manager" : "Administrador de LAN NT", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Servidor de correo electrónico", + "Open documentation" : "Abrir documentación", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Es importante preparar este servidor para poder enviar correos electrónicos, como para restablecer contraseñas y notificaciones. ", + "Send mode" : "Modo de envío", + "Encryption" : "Encripción", + "From address" : "De la dirección", + "mail" : "correo", + "Authentication method" : "Método de autenticación", + "Authentication required" : "Autenticación requerida", + "Server address" : "Dirección del servidor", + "Port" : "Puerto", + "Credentials" : "Credenciales", + "SMTP Username" : "Usuario SMTP", + "SMTP Password" : "Contraseña SMTP", + "Test email settings" : "Probar las configuraciones de correo electrónico", + "Send email" : "Enviar correo electrónico", + "Security & setup warnings" : "Advertencias de seguridad y configuración", + "All checks passed." : "Pasaron todas las verificaciones. ", + "Version" : "Versión", + "Server-side encryption" : "Encripción del lado del servidor", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "La encripción del lado del servidor hace posible encriptar archivos que serán cargados a este servidor. Esto trae consigo algunas limitaciónes como penalizaciones en el desemeño, asi que habilítalo sólo si es necesario. ", + "Enable server-side encryption" : "Habilitar encripción del lado del servidor", + "Please read carefully before activating server-side encryption: " : "Por favor lee detenidamente antes de activar la encripción del lado de servidor:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Una vez que la encripción se encuentre habilitada, todos lo archivos cargados al servidor desde ese momento en tiempo, se encriptarán en el servidor. Sólo será posible deshabilitar la encripción en una fecha posterior si el modulo de encripción activo soporta esa funcionalidad y si todas las preciondiciones están satisfechas (ejem. establecer una llave de recuperación).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "La encripción por sí sola no garantiza la seguridad del sistema. Por favor consulta la documentación para mayores informes de cómo funciona la aplicación de encripción y de los casos de uso soportados. ", + "Be aware that encryption always increases the file size." : "Por favor considera que la encripción siempre aumenta el tamaño de los archivos. ", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Siempre es una buena idea generar respaldos de tus datos, en caso de tener encripción asegúrate de respaldar las llaves de encripción junto con tus datos. ", + "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", + "Enable encryption" : "Habilitar encripción", + "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", + "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Necesitas migrar tus llaves de encripción de la encripción anterior (ownCloud <= 8.0) a la actual. Por favor habilita el \"Módulo de encripción predeterminado\" y ejecuta el comando 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Necesitas migar tus llaves de encripción de la encripción anterior (ownCloud <=8.0) a la actual. ", + "Start migration" : "Iniciar migración", + "Background jobs" : "Trabajos en segundo plano", + "Last job ran %s." : "El último trabajo corrió %s.", + "Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ", + "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ", + "Execute one task with each page loaded" : "Ejecutar una tarea con cada página cargada", + "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ", + "Sharing" : "Compartiendo", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", + "Allow apps to use the Share API" : "Permitir que las aplicaciones usen el API para Compartir", + "Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas", + "Allow public uploads" : "Permitir cargas públicas", + "Always ask for a password" : "Siempre pedir una contraseña", + "Enforce password protection" : "Forzar protección de contraseñas", + "Set default expiration date" : "Establecer la fecha de expiración predeterminada", + "Expire after " : "Expirar después de", + "days" : "días", + "Enforce expiration date" : "Forzar fecha de expiración", + "Allow resharing" : "Permitir volver a compartir", + "Allow sharing with groups" : "Permitir compartir con grupos", + "Restrict users to only share with users in their groups" : "Limitar a los usuarios a sólo compartir con otros usuarios en sus grupos", + "Exclude groups from sharing" : "Evitar que los grupos compartan", + "These groups will still be able to receive shares, but not to initiate them." : "Estos grupos aún podrán recibir elementos compartidos, pero no los podrán iniciar.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Permitir el autocompletado de usuarios en la ventana de diálogo de compartir. Si esto está deshabilitado, se deberá ingresar el correo electrónico o nombre completo. ", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Mostrar el texto de exención de responsabilidad legal en la página de carga de ligas públicas. (Sólo se muestra cuando la lista de archivos está oculta.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Este texto se mostrará en la página de carga de la liga pública cuando la lista de archivos esté oculta. ", + "Default share permissions" : "Permisos predeterminados para compartir", + "Personal" : "Personal", + "Administration" : "Administración", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Desarrollado por la {communityopen}comunidad Nextcloud {linkclose}, el {githubopen}código fuente {linkclose} está licenciado bajo {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Da un Like a nuestra página de Facebook", + "Follow us on Twitter" : "Síguenos en Twitter", + "Check out our blog" : "Visita nuestro blog", + "Subscribe to our newsletter" : "Suscribete a nuestro boletín", + "Profile picture" : "Foto de perfil", + "Upload new" : "Cargar nuevo", + "Select from Files" : "Seleccionar desde Archivos", + "Remove image" : "Eliminar imagen", + "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", + "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", + "Cancel" : "Cancelar", + "Choose as profile picture" : "Seleccionar como foto del perfil", + "Details" : "Detalles", + "You are using <strong>%s</strong>" : "Estás usando<strong>%s</strong>", + "Full name" : "Nombre completo", + "No display name set" : "No se ha establecido el nombre a desplegar", + "Your email address" : "Tu dirección de correo electrónico", + "No email address set" : "No se ha establecido la dirección de correo electrónico", + "For password reset and notifications" : "Para restablecer contraseña y notificaciones", + "Phone number" : "Número de teléfono", + "Your phone number" : "Su número telefónico", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "Website" : "Sitio web", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Cuenta de twitter @...", + "Help translate" : "Ayuda a traducir", + "Current password" : "Contraseña actual", + "Change password" : "Cambiar contraseña", + "Store credentials" : "Almacenar credenciales", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php está registrado en un servicio webcron para llamar a cron.php cada 15 minutos a través de HTTP. ", + "Use system cron service to call the cron.php file every 15 minutes." : "Usar el servicio cron del sistema para llamar al archivo cron.php cada 15 minutos. " +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/es_SV.json b/apps/settings/l10n/es_SV.json new file mode 100644 index 00000000000..eda48a73a1c --- /dev/null +++ b/apps/settings/l10n/es_SV.json @@ -0,0 +1,262 @@ +{ "translations": { + "{actor} changed your password" : "{actor} ha cambiado tu contraseña", + "You changed your password" : "Cambiaste tu contraseña", + "Your password was reset by an administrator" : "Tu contraseña ha sido restablecida por un adminsitrador", + "{actor} changed your email address" : "{actor} ha cambiado tu dirección de correo electrónico", + "You changed your email address" : "Cambiaste tu dirección de correo electrónico", + "Your email address was changed by an administrator" : "Tu dirección de correo electrónico ha sido cambiada por un administrador", + "Security" : "Seguridad", + "You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado", + "Couldn't remove app." : "No fue posible eliminar la aplicación. ", + "Couldn't update app." : "No fue posible actualizar la aplicación.", + "Wrong password" : "Contraseña incorrecta", + "Saved" : "Guardado", + "No user supplied" : "No se proporcionó usuario alguno", + "Unable to change password" : "No fue posible cambiar la contraseña", + "Authentication error" : "Error de autenticación", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Por favor proporciona una contraseña de recuperación de administrador; de lo contrario toda la información del usuario se perderá. ", + "Wrong admin recovery password. Please check the password and try again." : "Contraseña de recuperación de administrador incorrecta. Por favor verificala e inténtalo de nuevo.", + "Backend doesn't support password change, but the user's encryption key was updated." : "El backend no soporta el cambio de contraseñas, pero la llave de encripción del usuario fue actualizada.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Instalando y actualizando aplicaciones por la tienda de aplicaciones o Compartido la Nube Federada", + "Federated Cloud Sharing" : "Compartir en la Nube Federada", + "Invalid SMTP password." : "Constraseña SMTP inválida. ", + "Email setting test" : "Prueba de ajustes de correo", + "Well done, %s!" : "¡Bien hecho, %s!", + "If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ", + "Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)", + "You need to set your user email before being able to send test emails." : "Requieres establecer tu correo electrónico antes de poder enviar correos electrónicos de prueba. ", + "Invalid mail address" : "Dirección de correo inválida", + "Settings saved" : "Se han guardado las configuraciones ", + "Unable to change full name" : "No fue posible cambiar el nombre completo", + "Unable to change email address" : "No fue posible cambiar la dirección de correo electrónico", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Para poder verificar tu cuenta de Twitter, publica el siguiente tweet en Twitter (por favor asegúrarte de publicar sin ninguna línea en blanco):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Para poder verificar tu sitio Web, agrega el siguiente contendio a tu web-root en '.well-known/CloudIdVerificationCode.txt' (por favor asegurate de que el texto completo este en una sóla línea):", + "%1$s changed your password on %2$s." : "%1$s cambió tu contraseña el %2$s.", + "Your password on %s was changed." : "Tu contraseña de %s fue cambiada. ", + "Your password on %s was reset by an administrator." : "Tu contraseña de %s fue restablecida por un administrador.", + "Password for %1$s changed on %2$s" : "La contraseña de %1$s fue cambiada en %2$s", + "Password changed for %s" : "La contraseña fue cambiada para %s", + "If you did not request this, please contact an administrator." : "Si no lo solicitaste, por favor contacta a un administrador. ", + "Your email address on %s was changed." : "Tu dirección de correo electrónico en %s fue cambiada. ", + "Your email address on %s was changed by an administrator." : "Tu dirección de correo electrónico en %s fue cambiada por un adminsitrador. ", + "Email address for %1$s changed on %2$s" : "La dirección de correo electrónico de %1$s ha cambiado en %2$s", + "Email address changed for %s" : "La dirección de correo electrónico fue cambiada para %s", + "The new email address is %s" : "La nueva dirección de correo electrónico es %s", + "Your %s account was created" : "Tu cuenta %s ha sido creada", + "Welcome aboard" : "Bienvenido a bordo", + "Welcome aboard %s" : "Bienvenido a bordo %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Bienvenido a tu cuenta %s, puedes agregar, proteger y compartir tus datos.", + "Your username is: %s" : "Tu Usuario es: %s", + "Set your password" : "Establece tu contraseña", + "Go to %s" : "Ir a %s", + "Install Client" : "Instalar el cliente", + "Delete" : "Borrar", + "Unlimited" : "Ilimitado", + "Verifying …" : "Verificando ...", + "Verify" : "Verificar", + "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", + "Migration started …" : "La migración ha comenzado ...", + "Not saved" : "No guardado", + "Sending…" : "Enviando...", + "Email sent" : "Correo electrónico enviado", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Se presentó un error. Por favor carga un certificado PEM con codificación ASCII", + "Valid until {date}" : "Válido hasta {date}", + "Local" : "Local", + "Private" : "Privado", + "Only visible to local users" : "Visible sólo para usuarios locales", + "Only visible to you" : "Sólo visible para ti", + "Contacts" : "Contactos", + "Visible to local users and to trusted servers" : "Visible para usuarios locales y para servidores de confianza", + "Public" : "Público", + "Will be synced to a global and public address book" : "Será sincronizado a una libreta de direcciones global y pública", + "Very weak password" : "Contraseña muy débil", + "Weak password" : "Contraseña débil", + "So-so password" : "Contraseña aceptable", + "Good password" : "Buena contraseña", + "Strong password" : "Contraseña fuerte", + "Select a profile picture" : "Selecciona una imagen de perfil", + "Groups" : "Grupos", + "Limit to groups" : "Limitar a grupos", + "Allow filesystem access" : "Permitir acceso al sistema de archivos", + "Revoke" : "Revocar", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome para Android", + "Sync client - {os}" : "Sync client - {os}", + "This session" : "Esta sesión", + "Device" : "Dispositivo", + "Last activity" : "Última actividad", + "Devices & sessions" : "Dispositivos y sesiones", + "Web, desktop and mobile clients currently logged in to your account." : "Clientes web, de escritorio y móviles han iniciado sesión en tu cuenta. ", + "Error while creating device token" : "Se presentó un error al crear la ficha en el dispositivo", + "Error while deleting the token" : "Se presentó un error al borrar la ficha", + "App name" : "Nombre de la aplicación", + "Create new app password" : "Crear una nueva contraseña de aplicación", + "Use the credentials below to configure your app or device." : "Usa las siguientes credenciales para configurar tu aplicación o dispositivo. ", + "For security reasons this password will only be shown once." : "Por razones de seguridad esta contraseña sólo se mostrará una vez. ", + "Username" : "Usuario", + "Password" : "Contraseña", + "Done" : "Terminado", + "Copied!" : "¡Copiado!", + "Copy" : "Copiar", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Las aplicaciones oficiales son desarrolladas por y dentro de la comunidad. Ofrecen una funcionalidad centralizada y se encuentran listas para ser usadas en producción. ", + "Official" : "Oficial", + "Remove" : "Eliminar", + "Disable" : "Deshabilitar", + "All" : "Todos", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión mínima de Nextcloud asignada. Esto será un error en el futuro.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión máxima de Nextcloud asignada. Esto será un error en el futuro.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Esta aplicación no puede ser instalada porque las siguientes dependencias no están satisfechas:", + "View in store" : "Ver en la tienda", + "Visit website" : "Visita el sitio web", + "Report a bug" : "Reporta un detalle", + "User documentation" : "Documentación del usuario", + "Admin documentation" : "Documentación del administrador", + "Developer documentation" : "Documentación del desarrollador", + "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Enable all" : "Habilitar todo", + "Enable" : "Habilitar", + "The app will be downloaded from the app store" : "La aplicación será descargada de la tienda de aplicaciones <app store>", + "New password" : "Nueva contraseña", + "{size} used" : "{size} usado", + "Email" : "Correo electrónico", + "Group admin for" : "Administrador del grupo para", + "Quota" : "Cuota", + "Language" : "Idioma", + "Storage location" : "Úbicación del almacenamiento", + "User backend" : "Backend del usuario", + "Last login" : "Último inicio de sesión", + "Default quota" : "Cuota predeterminada", + "Your apps" : "Tus aplicaciones", + "Disabled apps" : "Aplicaciones deshabilitadas", + "Updates" : "Actualizaciones", + "App bundles" : "Paquetes de aplicación", + "Show last login" : "Mostrar último inicio de sesión", + "Show user backend" : "Mostrar backend del usuario", + "Admins" : "Administradores", + "Everyone" : "Todos", + "Add group" : "Agregar grupo", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "La aplicación ha sido habilitada pero necesita ser actualizada. Serás redireccionado a la página de actualización en 5 segundos. ", + "App update" : "Actualización de la aplicación", + "Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor", + "SSL Root Certificates" : "Certificado SSL Raíz", + "Common Name" : "Nombre común", + "Valid until" : "Válido hasta", + "Issued By" : "Levantado Por", + "Valid until %s" : "Válido hasta %s", + "Import root certificate" : "Importar certificado raíz", + "Administrator documentation" : "Documentación del adminsitrador", + "Forum" : "Foro", + "None" : "Ninguno", + "Login" : "Iniciar sesión", + "Plain" : "Plano", + "NT LAN Manager" : "Administrador de LAN NT", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Servidor de correo electrónico", + "Open documentation" : "Abrir documentación", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Es importante preparar este servidor para poder enviar correos electrónicos, como para restablecer contraseñas y notificaciones. ", + "Send mode" : "Modo de envío", + "Encryption" : "Encripción", + "From address" : "De la dirección", + "mail" : "correo", + "Authentication method" : "Método de autenticación", + "Authentication required" : "Autenticación requerida", + "Server address" : "Dirección del servidor", + "Port" : "Puerto", + "Credentials" : "Credenciales", + "SMTP Username" : "Usuario SMTP", + "SMTP Password" : "Contraseña SMTP", + "Test email settings" : "Probar las configuraciones de correo electrónico", + "Send email" : "Enviar correo electrónico", + "Security & setup warnings" : "Advertencias de seguridad y configuración", + "All checks passed." : "Pasaron todas las verificaciones. ", + "Version" : "Versión", + "Server-side encryption" : "Encripción del lado del servidor", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "La encripción del lado del servidor hace posible encriptar archivos que serán cargados a este servidor. Esto trae consigo algunas limitaciónes como penalizaciones en el desemeño, asi que habilítalo sólo si es necesario. ", + "Enable server-side encryption" : "Habilitar encripción del lado del servidor", + "Please read carefully before activating server-side encryption: " : "Por favor lee detenidamente antes de activar la encripción del lado de servidor:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Una vez que la encripción se encuentre habilitada, todos lo archivos cargados al servidor desde ese momento en tiempo, se encriptarán en el servidor. Sólo será posible deshabilitar la encripción en una fecha posterior si el modulo de encripción activo soporta esa funcionalidad y si todas las preciondiciones están satisfechas (ejem. establecer una llave de recuperación).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "La encripción por sí sola no garantiza la seguridad del sistema. Por favor consulta la documentación para mayores informes de cómo funciona la aplicación de encripción y de los casos de uso soportados. ", + "Be aware that encryption always increases the file size." : "Por favor considera que la encripción siempre aumenta el tamaño de los archivos. ", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Siempre es una buena idea generar respaldos de tus datos, en caso de tener encripción asegúrate de respaldar las llaves de encripción junto con tus datos. ", + "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", + "Enable encryption" : "Habilitar encripción", + "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", + "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Necesitas migrar tus llaves de encripción de la encripción anterior (ownCloud <= 8.0) a la actual. Por favor habilita el \"Módulo de encripción predeterminado\" y ejecuta el comando 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Necesitas migar tus llaves de encripción de la encripción anterior (ownCloud <=8.0) a la actual. ", + "Start migration" : "Iniciar migración", + "Background jobs" : "Trabajos en segundo plano", + "Last job ran %s." : "El último trabajo corrió %s.", + "Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ", + "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ", + "Execute one task with each page loaded" : "Ejecutar una tarea con cada página cargada", + "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ", + "Sharing" : "Compartiendo", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", + "Allow apps to use the Share API" : "Permitir que las aplicaciones usen el API para Compartir", + "Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas", + "Allow public uploads" : "Permitir cargas públicas", + "Always ask for a password" : "Siempre pedir una contraseña", + "Enforce password protection" : "Forzar protección de contraseñas", + "Set default expiration date" : "Establecer la fecha de expiración predeterminada", + "Expire after " : "Expirar después de", + "days" : "días", + "Enforce expiration date" : "Forzar fecha de expiración", + "Allow resharing" : "Permitir volver a compartir", + "Allow sharing with groups" : "Permitir compartir con grupos", + "Restrict users to only share with users in their groups" : "Limitar a los usuarios a sólo compartir con otros usuarios en sus grupos", + "Exclude groups from sharing" : "Evitar que los grupos compartan", + "These groups will still be able to receive shares, but not to initiate them." : "Estos grupos aún podrán recibir elementos compartidos, pero no los podrán iniciar.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Permitir el autocompletado de usuarios en la ventana de diálogo de compartir. Si esto está deshabilitado, se deberá ingresar el correo electrónico o nombre completo. ", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Mostrar el texto de exención de responsabilidad legal en la página de carga de ligas públicas. (Sólo se muestra cuando la lista de archivos está oculta.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Este texto se mostrará en la página de carga de la liga pública cuando la lista de archivos esté oculta. ", + "Default share permissions" : "Permisos predeterminados para compartir", + "Personal" : "Personal", + "Administration" : "Administración", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Desarrollado por la {communityopen}comunidad Nextcloud {linkclose}, el {githubopen}código fuente {linkclose} está licenciado bajo {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Da un Like a nuestra página de Facebook", + "Follow us on Twitter" : "Síguenos en Twitter", + "Check out our blog" : "Visita nuestro blog", + "Subscribe to our newsletter" : "Suscribete a nuestro boletín", + "Profile picture" : "Foto de perfil", + "Upload new" : "Cargar nuevo", + "Select from Files" : "Seleccionar desde Archivos", + "Remove image" : "Eliminar imagen", + "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", + "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", + "Cancel" : "Cancelar", + "Choose as profile picture" : "Seleccionar como foto del perfil", + "Details" : "Detalles", + "You are using <strong>%s</strong>" : "Estás usando<strong>%s</strong>", + "Full name" : "Nombre completo", + "No display name set" : "No se ha establecido el nombre a desplegar", + "Your email address" : "Tu dirección de correo electrónico", + "No email address set" : "No se ha establecido la dirección de correo electrónico", + "For password reset and notifications" : "Para restablecer contraseña y notificaciones", + "Phone number" : "Número de teléfono", + "Your phone number" : "Su número telefónico", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "Website" : "Sitio web", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Cuenta de twitter @...", + "Help translate" : "Ayuda a traducir", + "Current password" : "Contraseña actual", + "Change password" : "Cambiar contraseña", + "Store credentials" : "Almacenar credenciales", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php está registrado en un servicio webcron para llamar a cron.php cada 15 minutos a través de HTTP. ", + "Use system cron service to call the cron.php file every 15 minutes." : "Usar el servicio cron del sistema para llamar al archivo cron.php cada 15 minutos. " +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} \ No newline at end of file diff --git a/apps/settings/l10n/es_UY.js b/apps/settings/l10n/es_UY.js new file mode 100644 index 00000000000..3d9fadb1a06 --- /dev/null +++ b/apps/settings/l10n/es_UY.js @@ -0,0 +1,258 @@ +OC.L10N.register( + "settings", + { + "{actor} changed your password" : "{actor} ha cambiado tu contraseña", + "You changed your password" : "Cambiaste tu contraseña", + "Your password was reset by an administrator" : "Tu contraseña ha sido restablecida por un adminsitrador", + "{actor} changed your email address" : "{actor} ha cambiado tu dirección de correo electrónico", + "You changed your email address" : "Cambiaste tu dirección de correo electrónico", + "Your email address was changed by an administrator" : "Tu dirección de correo electrónico ha sido cambiada por un administrador", + "Security" : "Seguridad", + "You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado", + "Couldn't remove app." : "No fue posible eliminar la aplicación. ", + "Couldn't update app." : "No fue posible actualizar la aplicación.", + "Wrong password" : "Contraseña incorrecta", + "Saved" : "Guardado", + "No user supplied" : "No se proporcionó usuario alguno", + "Unable to change password" : "No fue posible cambiar la contraseña", + "Authentication error" : "Error de autenticación", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Por favor proporciona una contraseña de recuperación de administrador; de lo contrario toda la información del usuario se perderá. ", + "Wrong admin recovery password. Please check the password and try again." : "Contraseña de recuperación de administrador incorrecta. Por favor verificala e inténtalo de nuevo.", + "Backend doesn't support password change, but the user's encryption key was updated." : "El backend no soporta el cambio de contraseñas, pero la llave de encripción del usuario fue actualizada.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Instalando y actualizando aplicaciones por la tienda de aplicaciones o Compartido la Nube Federada", + "Federated Cloud Sharing" : "Compartir en la Nube Federada", + "Invalid SMTP password." : "Constraseña SMTP inválida. ", + "Email setting test" : "Prueba de ajustes de correo", + "Well done, %s!" : "¡Bien hecho, %s!", + "If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ", + "Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)", + "You need to set your user email before being able to send test emails." : "Requieres establecer tu correo electrónico antes de poder enviar correos electrónicos de prueba. ", + "Invalid mail address" : "Dirección de correo inválida", + "Settings saved" : "Se han guardado las configuraciones ", + "Unable to change full name" : "No fue posible cambiar el nombre completo", + "Unable to change email address" : "No fue posible cambiar la dirección de correo electrónico", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Para poder verificar tu cuenta de Twitter, publica el siguiente tweet en Twitter (por favor asegúrarte de publicar sin ninguna línea en blanco):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Para poder verificar tu sitio Web, agrega el siguiente contendio a tu web-root en '.well-known/CloudIdVerificationCode.txt' (por favor asegurate de que el texto completo este en una sóla línea):", + "%1$s changed your password on %2$s." : "%1$s cambió tu contraseña el %2$s.", + "Your password on %s was changed." : "Tu contraseña de %s fue cambiada. ", + "Your password on %s was reset by an administrator." : "Tu contraseña de %s fue restablecida por un administrador.", + "Password for %1$s changed on %2$s" : "La contraseña para %1$s fue cambiada el %2$s", + "Password changed for %s" : "La contraseña fue cambiada para %s", + "If you did not request this, please contact an administrator." : "Si no lo solicitaste, por favor contacta a un administrador. ", + "Your email address on %s was changed." : "Tu dirección de correo electrónico en %s fue cambiada. ", + "Your email address on %s was changed by an administrator." : "Tu dirección de correo electrónico en %s fue cambiada por un adminsitrador. ", + "Email address for %1$s changed on %2$s" : "La dirección de correo electrónico para %1$s fue cambiada el %2$s", + "Email address changed for %s" : "La dirección de correo electrónico fue cambiada para %s", + "The new email address is %s" : "La nueva dirección de correo electrónico es %s", + "Your %s account was created" : "Tu cuenta %s ha sido creada", + "Welcome aboard" : "Bienvenido a bordo", + "Welcome aboard %s" : "Bienvenido a bordo %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Bienvenido a tu cuenta %s, puedes agregar, proteger y compartir tus datos.", + "Your username is: %s" : "Tu Usuario es: %s", + "Set your password" : "Establece tu contraseña", + "Go to %s" : "Ir a %s", + "Install Client" : "Instalar el cliente", + "Delete" : "Borrar", + "Unlimited" : "Ilimitado", + "Verifying …" : "Verificando ...", + "Verify" : "Verificar", + "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración", + "Migration started …" : "La migración ha comenzado ...", + "Not saved" : "No guardado", + "Sending…" : "Enviando...", + "Email sent" : "Correo electrónico enviado", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Se presentó un error. Por favor carga un certificado PEM con codificación ASCII", + "Valid until {date}" : "Válido hasta {date}", + "Local" : "Local", + "Private" : "Privado", + "Only visible to local users" : "Visible sólo para usuarios locales", + "Only visible to you" : "Sólo visible para ti", + "Contacts" : "Contactos", + "Visible to local users and to trusted servers" : "Visible para usuarios locales y para servidores de confianza", + "Public" : "Público", + "Will be synced to a global and public address book" : "Será sincronizado a una libreta de direcciones global y pública", + "Very weak password" : "Contraseña muy débil", + "Weak password" : "Contraseña débil", + "So-so password" : "Contraseña aceptable", + "Good password" : "Buena contraseña", + "Strong password" : "Contraseña fuerte", + "Select a profile picture" : "Selecciona una imagen de perfil", + "Groups" : "Grupos", + "Limit to groups" : "Limitar a grupos", + "Allow filesystem access" : "Permitir acceso al sistema de archivos", + "Revoke" : "Revocar", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome para Android", + "Sync client - {os}" : "Sync client - {os}", + "This session" : "Esta sesión", + "Device" : "Dispositivo", + "Last activity" : "Última actividad", + "Web, desktop and mobile clients currently logged in to your account." : "Clientes web, de escritorio y móviles han iniciado sesión en tu cuenta. ", + "Error while creating device token" : "Se presentó un error al crear la ficha en el dispositivo", + "Error while deleting the token" : "Se presentó un error al borrar la ficha", + "App name" : "Nombre de la aplicación", + "Create new app password" : "Crear una nueva contraseña de aplicación", + "Use the credentials below to configure your app or device." : "Usa las siguientes credenciales para configurar tu aplicación o dispositivo. ", + "For security reasons this password will only be shown once." : "Por razones de seguridad esta contraseña sólo se mostrará una vez. ", + "Username" : "Usuario", + "Password" : "Contraseña", + "Done" : "Terminado", + "Copied!" : "¡Copiado!", + "Copy" : "Copiar", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Las aplicaciones oficiales son desarrolladas por y dentro de la comunidad. Ofrecen una funcionalidad centralizada y se encuentran listas para ser usadas en producción. ", + "Official" : "Oficial", + "Remove" : "Eliminar", + "Disable" : "Deshabilitar", + "All" : "Todos", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión mínima de Nextcloud asignada. Esto será un error en el futuro.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión máxima de Nextcloud asignada. Esto será un error en el futuro.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Esta aplicación no puede ser instalada porque las siguientes dependencias no están satisfechas:", + "View in store" : "Ver en la tienda", + "Visit website" : "Visita el sitio web", + "Report a bug" : "Reporta un detalle", + "User documentation" : "Documentación del usuario", + "Admin documentation" : "Documentación del administrador", + "Developer documentation" : "Documentación del desarrollador", + "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Enable all" : "Habilitar todo", + "Enable" : "Habilitar", + "The app will be downloaded from the app store" : "La aplicación será descargada de la tienda de aplicaciones <app store>", + "New password" : "Nueva contraseña", + "{size} used" : "{size} usado", + "Email" : "Correo electrónico", + "Group admin for" : "Administrador del grupo para", + "Quota" : "Cuota", + "Language" : "Idioma", + "Storage location" : "Úbicación del almacenamiento", + "User backend" : "Backend del usuario", + "Last login" : "Último inicio de sesión", + "Default quota" : "Cuota predeterminada", + "Your apps" : "Tus aplicaciones", + "Disabled apps" : "Aplicaciones deshabilitadas", + "Updates" : "Actualizaciones", + "App bundles" : "Paquetes de aplicación", + "Show last login" : "Mostrar último inicio de sesión", + "Show user backend" : "Mostrar backend del usuario", + "Admins" : "Administradores", + "Everyone" : "Todos", + "Add group" : "Agregar grupo", + "Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor", + "SSL Root Certificates" : "Certificado SSL Raíz", + "Common Name" : "Nombre común", + "Valid until" : "Válido hasta", + "Issued By" : "Levantado Por", + "Valid until %s" : "Válido hasta %s", + "Import root certificate" : "Importar certificado raíz", + "Administrator documentation" : "Documentación del adminsitrador", + "Forum" : "Foro", + "None" : "Ninguno", + "Login" : "Iniciar sesión", + "Plain" : "Plano", + "NT LAN Manager" : "Administrador de LAN NT", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Servidor de correo electrónico", + "Open documentation" : "Abrir documentación", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Es importante preparar este servidor para poder enviar correos electrónicos, como para restablecer contraseñas y notificaciones. ", + "Send mode" : "Modo de envío", + "Encryption" : "Encripción", + "From address" : "De la dirección", + "mail" : "correo", + "Authentication method" : "Método de autenticación", + "Authentication required" : "Autenticación requerida", + "Server address" : "Dirección del servidor", + "Port" : "Puerto", + "Credentials" : "Credenciales", + "SMTP Username" : "Usuario SMTP", + "SMTP Password" : "Contraseña SMTP", + "Test email settings" : "Probar las configuraciones de correo electrónico", + "Send email" : "Enviar correo electrónico", + "Security & setup warnings" : "Advertencias de seguridad y configuración", + "All checks passed." : "Pasaron todas las verificaciones. ", + "Version" : "Versión", + "Server-side encryption" : "Encripción del lado del servidor", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "La encripción del lado del servidor hace posible encriptar archivos que serán cargados a este servidor. Esto trae consigo algunas limitaciónes como penalizaciones en el desemeño, asi que habilítalo sólo si es necesario. ", + "Enable server-side encryption" : "Habilitar encripción del lado del servidor", + "Please read carefully before activating server-side encryption: " : "Por favor lee detenidamente antes de activar la encripción del lado de servidor:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Una vez que la encripción se encuentre habilitada, todos lo archivos cargados al servidor desde ese momento en tiempo, se encriptarán en el servidor. Sólo será posible deshabilitar la encripción en una fecha posterior si el modulo de encripción activo soporta esa funcionalidad y si todas las preciondiciones están satisfechas (ejem. establecer una llave de recuperación).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "La encripción por sí sola no garantiza la seguridad del sistema. Por favor consulta la documentación para mayores informes de cómo funciona la aplicación de encripción y de los casos de uso soportados. ", + "Be aware that encryption always increases the file size." : "Por favor considera que la encripción siempre aumenta el tamaño de los archivos. ", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Siempre es una buena idea generar respaldos de tus datos, en caso de tener encripción asegúrate de respaldar las llaves de encripción junto con tus datos. ", + "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", + "Enable encryption" : "Habilitar encripción", + "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", + "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Necesitas migrar tus llaves de encripción de la encripción anterior (ownCloud <= 8.0) a la actual. Por favor habilita el \"Módulo de encripción predeterminado\" y ejecuta el comando 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Necesitas migar tus llaves de encripción de la encripción anterior (ownCloud <=8.0) a la actual. ", + "Start migration" : "Iniciar migración", + "Background jobs" : "Trabajos en segundo plano", + "Last job ran %s." : "El último trabajo corrió %s.", + "Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ", + "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ", + "Execute one task with each page loaded" : "Ejecutar una tarea con cada página cargada", + "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ", + "Sharing" : "Compartiendo", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", + "Allow apps to use the Share API" : "Permitir que las aplicaciones usen el API para Compartir", + "Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas", + "Allow public uploads" : "Permitir cargas públicas", + "Always ask for a password" : "Siempre pedir una contraseña", + "Enforce password protection" : "Forzar protección de contraseñas", + "Set default expiration date" : "Establecer la fecha de expiración predeterminada", + "Expire after " : "Expirar después de", + "days" : "días", + "Enforce expiration date" : "Forzar fecha de expiración", + "Allow resharing" : "Permitir volver a compartir", + "Allow sharing with groups" : "Permitir compartir con grupos", + "Restrict users to only share with users in their groups" : "Limitar a los usuarios a sólo compartir con otros usuarios en sus grupos", + "Exclude groups from sharing" : "Evitar que los grupos compartan", + "These groups will still be able to receive shares, but not to initiate them." : "Estos grupos aún podrán recibir elementos compartidos, pero no los podrán iniciar.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Permitir el autocompletado de usuarios en la ventana de diálogo de compartir. Si esto está deshabilitado, se deberá ingresar el correo electrónico o nombre completo. ", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Mostrar el texto de exención de responsabilidad legal en la página de carga de ligas públicas. (Sólo se muestra cuando la lista de archivos está oculta.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Este texto se mostrará en la página de carga de la liga pública cuando la lista de archivos esté oculta. ", + "Personal" : "Personal", + "Administration" : "Administración", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Desarrollado por la {communityopen}comunidad Nextcloud {linkclose}, el {githubopen}código fuente {linkclose} está licenciado bajo {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Da un Like a nuestra página de Facebook", + "Follow us on Twitter" : "Síguenos en Twitter", + "Check out our blog" : "Visita nuestro blog", + "Subscribe to our newsletter" : "Suscribete a nuestro boletín", + "Profile picture" : "Foto de perfil", + "Upload new" : "Cargar nuevo", + "Select from Files" : "Seleccionar desde Archivos", + "Remove image" : "Eliminar imagen", + "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", + "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", + "Cancel" : "Cancelar", + "Choose as profile picture" : "Seleccionar como foto del perfil", + "Full name" : "Nombre completo", + "No display name set" : "No se ha establecido el nombre a desplegar", + "Your email address" : "Tu dirección de correo electrónico", + "No email address set" : "No se ha establecido la dirección de correo electrónico", + "For password reset and notifications" : "Para restablecer contraseña y notificaciones", + "Phone number" : "Número de teléfono", + "Your phone number" : "Su número telefónico", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "Website" : "Sitio web", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Cuenta de twitter @...", + "Help translate" : "Ayuda a traducir", + "Current password" : "Contraseña actual", + "Change password" : "Cambiar contraseña", + "Store credentials" : "Almacenar credenciales", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php está registrado en un servicio webcron para llamar a cron.php cada 15 minutos a través de HTTP. ", + "Use system cron service to call the cron.php file every 15 minutes." : "Usar el servicio cron del sistema para llamar al archivo cron.php cada 15 minutos. " +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/es_UY.json b/apps/settings/l10n/es_UY.json new file mode 100644 index 00000000000..072220b24af --- /dev/null +++ b/apps/settings/l10n/es_UY.json @@ -0,0 +1,256 @@ +{ "translations": { + "{actor} changed your password" : "{actor} ha cambiado tu contraseña", + "You changed your password" : "Cambiaste tu contraseña", + "Your password was reset by an administrator" : "Tu contraseña ha sido restablecida por un adminsitrador", + "{actor} changed your email address" : "{actor} ha cambiado tu dirección de correo electrónico", + "You changed your email address" : "Cambiaste tu dirección de correo electrónico", + "Your email address was changed by an administrator" : "Tu dirección de correo electrónico ha sido cambiada por un administrador", + "Security" : "Seguridad", + "You successfully logged in using two-factor authentication (%1$s)" : "Has iniciado sesión exitosamente usando autenticación de dos-factores (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Un intento de autenticación usando autenticación de dos-factores ha fallado (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Tu <strong>contraseña</strong> o <strong>correo electrónico</strong> ha sido modificado", + "Couldn't remove app." : "No fue posible eliminar la aplicación. ", + "Couldn't update app." : "No fue posible actualizar la aplicación.", + "Wrong password" : "Contraseña incorrecta", + "Saved" : "Guardado", + "No user supplied" : "No se proporcionó usuario alguno", + "Unable to change password" : "No fue posible cambiar la contraseña", + "Authentication error" : "Error de autenticación", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Por favor proporciona una contraseña de recuperación de administrador; de lo contrario toda la información del usuario se perderá. ", + "Wrong admin recovery password. Please check the password and try again." : "Contraseña de recuperación de administrador incorrecta. Por favor verificala e inténtalo de nuevo.", + "Backend doesn't support password change, but the user's encryption key was updated." : "El backend no soporta el cambio de contraseñas, pero la llave de encripción del usuario fue actualizada.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Instalando y actualizando aplicaciones por la tienda de aplicaciones o Compartido la Nube Federada", + "Federated Cloud Sharing" : "Compartir en la Nube Federada", + "Invalid SMTP password." : "Constraseña SMTP inválida. ", + "Email setting test" : "Prueba de ajustes de correo", + "Well done, %s!" : "¡Bien hecho, %s!", + "If you received this email, the email configuration seems to be correct." : "Si has recibido este correo electrónico, la configuración del correo electrónico parece estar correcta. ", + "Email could not be sent. Check your mail server log" : "No fue posible enviar el correo electrónico. Por favor verfica la bitácora de tu servidor de correo", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Por favor revisa tus configuraciones (Error: %s)", + "You need to set your user email before being able to send test emails." : "Requieres establecer tu correo electrónico antes de poder enviar correos electrónicos de prueba. ", + "Invalid mail address" : "Dirección de correo inválida", + "Settings saved" : "Se han guardado las configuraciones ", + "Unable to change full name" : "No fue posible cambiar el nombre completo", + "Unable to change email address" : "No fue posible cambiar la dirección de correo electrónico", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Para poder verificar tu cuenta de Twitter, publica el siguiente tweet en Twitter (por favor asegúrarte de publicar sin ninguna línea en blanco):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Para poder verificar tu sitio Web, agrega el siguiente contendio a tu web-root en '.well-known/CloudIdVerificationCode.txt' (por favor asegurate de que el texto completo este en una sóla línea):", + "%1$s changed your password on %2$s." : "%1$s cambió tu contraseña el %2$s.", + "Your password on %s was changed." : "Tu contraseña de %s fue cambiada. ", + "Your password on %s was reset by an administrator." : "Tu contraseña de %s fue restablecida por un administrador.", + "Password for %1$s changed on %2$s" : "La contraseña para %1$s fue cambiada el %2$s", + "Password changed for %s" : "La contraseña fue cambiada para %s", + "If you did not request this, please contact an administrator." : "Si no lo solicitaste, por favor contacta a un administrador. ", + "Your email address on %s was changed." : "Tu dirección de correo electrónico en %s fue cambiada. ", + "Your email address on %s was changed by an administrator." : "Tu dirección de correo electrónico en %s fue cambiada por un adminsitrador. ", + "Email address for %1$s changed on %2$s" : "La dirección de correo electrónico para %1$s fue cambiada el %2$s", + "Email address changed for %s" : "La dirección de correo electrónico fue cambiada para %s", + "The new email address is %s" : "La nueva dirección de correo electrónico es %s", + "Your %s account was created" : "Tu cuenta %s ha sido creada", + "Welcome aboard" : "Bienvenido a bordo", + "Welcome aboard %s" : "Bienvenido a bordo %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Bienvenido a tu cuenta %s, puedes agregar, proteger y compartir tus datos.", + "Your username is: %s" : "Tu Usuario es: %s", + "Set your password" : "Establece tu contraseña", + "Go to %s" : "Ir a %s", + "Install Client" : "Instalar el cliente", + "Delete" : "Borrar", + "Unlimited" : "Ilimitado", + "Verifying …" : "Verificando ...", + "Verify" : "Verificar", + "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración", + "Migration started …" : "La migración ha comenzado ...", + "Not saved" : "No guardado", + "Sending…" : "Enviando...", + "Email sent" : "Correo electrónico enviado", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Se presentó un error. Por favor carga un certificado PEM con codificación ASCII", + "Valid until {date}" : "Válido hasta {date}", + "Local" : "Local", + "Private" : "Privado", + "Only visible to local users" : "Visible sólo para usuarios locales", + "Only visible to you" : "Sólo visible para ti", + "Contacts" : "Contactos", + "Visible to local users and to trusted servers" : "Visible para usuarios locales y para servidores de confianza", + "Public" : "Público", + "Will be synced to a global and public address book" : "Será sincronizado a una libreta de direcciones global y pública", + "Very weak password" : "Contraseña muy débil", + "Weak password" : "Contraseña débil", + "So-so password" : "Contraseña aceptable", + "Good password" : "Buena contraseña", + "Strong password" : "Contraseña fuerte", + "Select a profile picture" : "Selecciona una imagen de perfil", + "Groups" : "Grupos", + "Limit to groups" : "Limitar a grupos", + "Allow filesystem access" : "Permitir acceso al sistema de archivos", + "Revoke" : "Revocar", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome para Android", + "Sync client - {os}" : "Sync client - {os}", + "This session" : "Esta sesión", + "Device" : "Dispositivo", + "Last activity" : "Última actividad", + "Web, desktop and mobile clients currently logged in to your account." : "Clientes web, de escritorio y móviles han iniciado sesión en tu cuenta. ", + "Error while creating device token" : "Se presentó un error al crear la ficha en el dispositivo", + "Error while deleting the token" : "Se presentó un error al borrar la ficha", + "App name" : "Nombre de la aplicación", + "Create new app password" : "Crear una nueva contraseña de aplicación", + "Use the credentials below to configure your app or device." : "Usa las siguientes credenciales para configurar tu aplicación o dispositivo. ", + "For security reasons this password will only be shown once." : "Por razones de seguridad esta contraseña sólo se mostrará una vez. ", + "Username" : "Usuario", + "Password" : "Contraseña", + "Done" : "Terminado", + "Copied!" : "¡Copiado!", + "Copy" : "Copiar", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Las aplicaciones oficiales son desarrolladas por y dentro de la comunidad. Ofrecen una funcionalidad centralizada y se encuentran listas para ser usadas en producción. ", + "Official" : "Oficial", + "Remove" : "Eliminar", + "Disable" : "Deshabilitar", + "All" : "Todos", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión mínima de Nextcloud asignada. Esto será un error en el futuro.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión máxima de Nextcloud asignada. Esto será un error en el futuro.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Esta aplicación no puede ser instalada porque las siguientes dependencias no están satisfechas:", + "View in store" : "Ver en la tienda", + "Visit website" : "Visita el sitio web", + "Report a bug" : "Reporta un detalle", + "User documentation" : "Documentación del usuario", + "Admin documentation" : "Documentación del administrador", + "Developer documentation" : "Documentación del desarrollador", + "No apps found for your version" : "No se encontraron aplicaciones para tu versión", + "Enable all" : "Habilitar todo", + "Enable" : "Habilitar", + "The app will be downloaded from the app store" : "La aplicación será descargada de la tienda de aplicaciones <app store>", + "New password" : "Nueva contraseña", + "{size} used" : "{size} usado", + "Email" : "Correo electrónico", + "Group admin for" : "Administrador del grupo para", + "Quota" : "Cuota", + "Language" : "Idioma", + "Storage location" : "Úbicación del almacenamiento", + "User backend" : "Backend del usuario", + "Last login" : "Último inicio de sesión", + "Default quota" : "Cuota predeterminada", + "Your apps" : "Tus aplicaciones", + "Disabled apps" : "Aplicaciones deshabilitadas", + "Updates" : "Actualizaciones", + "App bundles" : "Paquetes de aplicación", + "Show last login" : "Mostrar último inicio de sesión", + "Show user backend" : "Mostrar backend del usuario", + "Admins" : "Administradores", + "Everyone" : "Todos", + "Add group" : "Agregar grupo", + "Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor", + "SSL Root Certificates" : "Certificado SSL Raíz", + "Common Name" : "Nombre común", + "Valid until" : "Válido hasta", + "Issued By" : "Levantado Por", + "Valid until %s" : "Válido hasta %s", + "Import root certificate" : "Importar certificado raíz", + "Administrator documentation" : "Documentación del adminsitrador", + "Forum" : "Foro", + "None" : "Ninguno", + "Login" : "Iniciar sesión", + "Plain" : "Plano", + "NT LAN Manager" : "Administrador de LAN NT", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Servidor de correo electrónico", + "Open documentation" : "Abrir documentación", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Es importante preparar este servidor para poder enviar correos electrónicos, como para restablecer contraseñas y notificaciones. ", + "Send mode" : "Modo de envío", + "Encryption" : "Encripción", + "From address" : "De la dirección", + "mail" : "correo", + "Authentication method" : "Método de autenticación", + "Authentication required" : "Autenticación requerida", + "Server address" : "Dirección del servidor", + "Port" : "Puerto", + "Credentials" : "Credenciales", + "SMTP Username" : "Usuario SMTP", + "SMTP Password" : "Contraseña SMTP", + "Test email settings" : "Probar las configuraciones de correo electrónico", + "Send email" : "Enviar correo electrónico", + "Security & setup warnings" : "Advertencias de seguridad y configuración", + "All checks passed." : "Pasaron todas las verificaciones. ", + "Version" : "Versión", + "Server-side encryption" : "Encripción del lado del servidor", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "La encripción del lado del servidor hace posible encriptar archivos que serán cargados a este servidor. Esto trae consigo algunas limitaciónes como penalizaciones en el desemeño, asi que habilítalo sólo si es necesario. ", + "Enable server-side encryption" : "Habilitar encripción del lado del servidor", + "Please read carefully before activating server-side encryption: " : "Por favor lee detenidamente antes de activar la encripción del lado de servidor:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Una vez que la encripción se encuentre habilitada, todos lo archivos cargados al servidor desde ese momento en tiempo, se encriptarán en el servidor. Sólo será posible deshabilitar la encripción en una fecha posterior si el modulo de encripción activo soporta esa funcionalidad y si todas las preciondiciones están satisfechas (ejem. establecer una llave de recuperación).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "La encripción por sí sola no garantiza la seguridad del sistema. Por favor consulta la documentación para mayores informes de cómo funciona la aplicación de encripción y de los casos de uso soportados. ", + "Be aware that encryption always increases the file size." : "Por favor considera que la encripción siempre aumenta el tamaño de los archivos. ", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Siempre es una buena idea generar respaldos de tus datos, en caso de tener encripción asegúrate de respaldar las llaves de encripción junto con tus datos. ", + "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", + "Enable encryption" : "Habilitar encripción", + "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", + "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Necesitas migrar tus llaves de encripción de la encripción anterior (ownCloud <= 8.0) a la actual. Por favor habilita el \"Módulo de encripción predeterminado\" y ejecuta el comando 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Necesitas migar tus llaves de encripción de la encripción anterior (ownCloud <=8.0) a la actual. ", + "Start migration" : "Iniciar migración", + "Background jobs" : "Trabajos en segundo plano", + "Last job ran %s." : "El último trabajo corrió %s.", + "Last job execution ran %s. Something seems wrong." : "La última ejecución del trabajo corrió %s. Algo parece estar mal. ", + "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un desempeño ideal, es importante configurar los trabajos de fondo correctamente. Para instancias más grandes 'Cron' es la configuración recomendada. Por favor consulta la documentación para más información. ", + "Execute one task with each page loaded" : "Ejecutar una tarea con cada página cargada", + "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para correr esto necesitas la extensión POSIX de PHP. Por favor ve la {linkstart}documentación de PHP{linkend} para más detalles. ", + "Sharing" : "Compartiendo", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, puedes hacer ajustes finos al comportamiento de compartir. Por favor consulta la documentación para más información. ", + "Allow apps to use the Share API" : "Permitir que las aplicaciones usen el API para Compartir", + "Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas", + "Allow public uploads" : "Permitir cargas públicas", + "Always ask for a password" : "Siempre pedir una contraseña", + "Enforce password protection" : "Forzar protección de contraseñas", + "Set default expiration date" : "Establecer la fecha de expiración predeterminada", + "Expire after " : "Expirar después de", + "days" : "días", + "Enforce expiration date" : "Forzar fecha de expiración", + "Allow resharing" : "Permitir volver a compartir", + "Allow sharing with groups" : "Permitir compartir con grupos", + "Restrict users to only share with users in their groups" : "Limitar a los usuarios a sólo compartir con otros usuarios en sus grupos", + "Exclude groups from sharing" : "Evitar que los grupos compartan", + "These groups will still be able to receive shares, but not to initiate them." : "Estos grupos aún podrán recibir elementos compartidos, pero no los podrán iniciar.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Permitir el autocompletado de usuarios en la ventana de diálogo de compartir. Si esto está deshabilitado, se deberá ingresar el correo electrónico o nombre completo. ", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Mostrar el texto de exención de responsabilidad legal en la página de carga de ligas públicas. (Sólo se muestra cuando la lista de archivos está oculta.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Este texto se mostrará en la página de carga de la liga pública cuando la lista de archivos esté oculta. ", + "Personal" : "Personal", + "Administration" : "Administración", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Desarrollado por la {communityopen}comunidad Nextcloud {linkclose}, el {githubopen}código fuente {linkclose} está licenciado bajo {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Da un Like a nuestra página de Facebook", + "Follow us on Twitter" : "Síguenos en Twitter", + "Check out our blog" : "Visita nuestro blog", + "Subscribe to our newsletter" : "Suscribete a nuestro boletín", + "Profile picture" : "Foto de perfil", + "Upload new" : "Cargar nuevo", + "Select from Files" : "Seleccionar desde Archivos", + "Remove image" : "Eliminar imagen", + "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", + "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", + "Cancel" : "Cancelar", + "Choose as profile picture" : "Seleccionar como foto del perfil", + "Full name" : "Nombre completo", + "No display name set" : "No se ha establecido el nombre a desplegar", + "Your email address" : "Tu dirección de correo electrónico", + "No email address set" : "No se ha establecido la dirección de correo electrónico", + "For password reset and notifications" : "Para restablecer contraseña y notificaciones", + "Phone number" : "Número de teléfono", + "Your phone number" : "Su número telefónico", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "Website" : "Sitio web", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Cuenta de twitter @...", + "Help translate" : "Ayuda a traducir", + "Current password" : "Contraseña actual", + "Change password" : "Cambiar contraseña", + "Store credentials" : "Almacenar credenciales", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php está registrado en un servicio webcron para llamar a cron.php cada 15 minutos a través de HTTP. ", + "Use system cron service to call the cron.php file every 15 minutes." : "Usar el servicio cron del sistema para llamar al archivo cron.php cada 15 minutos. " +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} \ No newline at end of file diff --git a/apps/settings/l10n/et_EE.js b/apps/settings/l10n/et_EE.js new file mode 100644 index 00000000000..574c7285bba --- /dev/null +++ b/apps/settings/l10n/et_EE.js @@ -0,0 +1,246 @@ +OC.L10N.register( + "settings", + { + "{actor} changed your password" : "{actor} muutis sinu parooli", + "You changed your password" : "Sa muutsid oma parooli", + "Your password was reset by an administrator" : "Administraator lähtestas sinu parooli", + "{actor} changed your email address" : "{actor} muutis sinu e-posti aadressi", + "You changed your email address" : "Sa muutsid oma e-posti aadressi", + "Your email address was changed by an administrator" : "Administraator muutis sinu e-posti aadressi", + "Security" : "Turvalisus", + "You successfully logged in using two-factor authentication (%1$s)" : "Logisid edukalt sisse, kasutades kaheastmelist autentimiset (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Sisselogimiskatse, kasutades kaheastmelist autentimist, ebaõnnestus (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Sinu <strong>parooli</strong> või <strong>e-posti aadressi</strong> muudeti", + "Couldn't remove app." : "Ei suutnud rakendit eemaldada.", + "Couldn't update app." : "Rakenduse uuendamine ebaõnnestus.", + "Wrong password" : "Vale parool", + "Saved" : "Salvestatud", + "No user supplied" : "Kasutajat ei sisestatud", + "Unable to change password" : "Ei suuda parooli muuta", + "Authentication error" : "Autentimise viga", + "Wrong admin recovery password. Please check the password and try again." : "Vale administraatori taasteparool. Palun kontrolli parooli ning proovi uuesti.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Paigaldan ja uuendan rakendusi läbi rakenduste poe või liitpilve jagamise", + "Federated Cloud Sharing" : "Jagamine liitpilves", + "Invalid SMTP password." : "Vale SMTP parool.", + "Email setting test" : "E-posti sätete kontroll", + "Well done, %s!" : "Suurepärane, %s!", + "If you received this email, the email configuration seems to be correct." : "Kui saite selle kirja, näib e-posti seadistus õige.", + "Email could not be sent. Check your mail server log" : "E-posti ei saanud saata. Kontrollige oma meiliserveri logi", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "E-posti saatmisel ilmnes viga. Palun kontrollige seadeid. (Viga: %s)", + "You need to set your user email before being able to send test emails." : "Pead seadistama oma e-postienne kui on võimalik saata test-kirju.", + "Invalid mail address" : "Vigane e-posti aadress", + "Settings saved" : "Seaded salvestatud", + "Unable to change full name" : "Täispika nime muutmine ebaõnnestus", + "Unable to change email address" : "E-posti aadressi muutmine ebaõnnestus", + "%1$s changed your password on %2$s." : "%1$s muutis su parooli %2$s.", + "Your password on %s was changed." : "Sinu %s parool muudeti.", + "Your password on %s was reset by an administrator." : "Administraator lähtestas sinu %s parooli.", + "Password for %1$s changed on %2$s" : "%1$s parool muudetud %2$s", + "Password changed for %s" : "%s parool muudetud", + "If you did not request this, please contact an administrator." : "Kui sa pole seda taotlenud, võta ühendust administraatoriga.", + "Your email address on %s was changed." : "Sinu %s e-posti aadressi muudeti.", + "Your email address on %s was changed by an administrator." : "Administraator muutis sinu %s e-posti aadressi.", + "Email address for %1$s changed on %2$s" : "%1$s e-posti aadress muudetud %2$s", + "Email address changed for %s" : "%s e-posti aadress muudetud", + "The new email address is %s" : "Uus e-posti aadress on %s", + "Your %s account was created" : "Sinu %s konto on loodud", + "Welcome aboard" : "Tere tulemast", + "Welcome aboard %s" : "Tere tulemast %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Tere tulemast oma %s kontole. Sa saad lisada, kaitsta ja jagada oma andmeid.", + "Your username is: %s" : "Sinu kasutajanimi on: %s", + "Set your password" : "Määra oma parool", + "Go to %s" : "Mine %s", + "Install Client" : "Paigalda kliendiprogramm", + "Delete" : "Kustuta", + "Unlimited" : "Piiramatult", + "Verifying …" : "Kontrollin ...", + "Verify" : "Kontrolli", + "Migration in progress. Please wait until the migration is finished" : "Kolimine on käimas. Palun oota, kuni see on lõpetatud", + "Migration started …" : "Kolimist on alustatud ...", + "Not saved" : "Ei ole salvestatud", + "Sending…" : "Saadan...", + "Email sent" : "E-kiri on saadetud", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Tekkis viga. Palun lae üles ASCII kodeeringud PEM sertifikaat.", + "Valid until {date}" : "Kehtib kuni {date}", + "Local" : "Kohalik", + "Private" : "Privaatne", + "Only visible to local users" : "Ainult nähtav kohalikele kasutajatele", + "Only visible to you" : "Ainult sinule nähtav", + "Contacts" : "Kontaktid", + "Visible to local users and to trusted servers" : "Nähtav kohelikele kasutajatele ja usaldatud serveritele", + "Public" : "Avalik", + "Will be synced to a global and public address book" : "Sünkroniseeritakse globaalsesse ja avalikku aadressiraamatusse", + "Very weak password" : "Väga nõrk parool", + "Weak password" : "Nõrk parool", + "So-so password" : "Enam-vähem sobiv parool", + "Good password" : "Hea parool", + "Strong password" : "Väga hea parool", + "Select a profile picture" : "Vali profiili pilt", + "Week starts on {fdow}" : "Nädala esimene päev: {fdow}", + "Groups" : "Grupid", + "Limit to groups" : "Luba gruppidele", + "Allow filesystem access" : "Luba juurdepääs failisüsteemile", + "Revoke" : "Tühista", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome for Android", + "Sync client - {os}" : "Kliendiprogramm - {os}", + "This session" : "See sessioon", + "Device" : "Seade", + "Last activity" : "Viimane tegevus", + "Devices & sessions" : "Seadmed & sessioonid", + "Web, desktop and mobile clients currently logged in to your account." : "Sinu kontole hetkel sisse loginud veebi-, töölaua-, ja mobiilsed kliendid.", + "App name" : "Rakenduse nimi", + "Create new app password" : "Loo uus rakenduse parool", + "Use the credentials below to configure your app or device." : "Rakenduse või seadme konfigureerimiseks kasutage allpool toodud mandaate.", + "For security reasons this password will only be shown once." : "Turvalisuse huvides kuvatakse see parool ainult üks kord.", + "Username" : "Kasutajanimi", + "Password" : "Parool", + "Done" : "Valmis", + "Copied!" : "Kopeeritud!", + "Copy" : "Kopeeri", + "Official" : "Ametlik", + "Remove" : "Eemalda", + "Disable" : "Lülita välja", + "All" : "Kõik", + "No results" : "Vasteid ei leitud", + "Visit website" : "Külasta veebisaiti", + "Report a bug" : "Teata veast", + "User documentation" : "Kasutaja dokumentatsioon", + "Admin documentation" : "Administraatori dokumentatsioon", + "Developer documentation" : "Arendaja dokumentatsioon", + "No apps found for your version" : "Sinu versiooni jaoks ei leitud ühtegi rakendust", + "Enable all" : "Luba kõik", + "Enable" : "Lülita sisse", + "You do not have permissions to see the details of this user" : "Sul puuduvad õigused selle kasutaja üksikasjade vaatamiseks", + "New password" : "Uus parool", + "Delete user" : "Kustuta kasutaja", + "Disable user" : "Keela kasutaja", + "Enable user" : "Luba kasutaja", + "Resend welcome email" : "Saada tervitusmeil uuesti", + "{size} used" : "{size} kasutatud", + "Welcome mail sent!" : "Tervitusmeil saadetud!", + "Display name" : "Kuvatav nimi", + "Email" : "E-post", + "Group admin for" : "Grupi admin", + "Quota" : "Mahupiir", + "Language" : "Keel", + "Storage location" : "Salvestusruumi asukoht", + "User backend" : "Kasutaja taustarakendus", + "Last login" : "Viimane sisselogimine", + "Default language" : "Vaikekeel", + "Default quota" : "Vaikimisi mahupiir", + "Common languages" : "Levinud keeled", + "All languages" : "Kõik keeled", + "Your apps" : "Sinu rakendused", + "Disabled apps" : "Keelatud rakendused", + "Updates" : "Uuendused", + "App bundles" : "Rakenduste kogumikud", + "{license}-licensed" : "{license} litsents", + "New user" : "Uus kasutaja", + "Default quota:" : "Vaikekvoot:", + "Show last login" : "Näita viimast sisselogimist", + "You are about to remove the group {group}. The users will NOT be deleted." : "Sa oled eemaldamas gruppi {group}. Selles grupis olevaid kasutajaid EI kustutata.", + "Please confirm the group removal " : "Palun kinnita grupi eemaldamine", + "Remove group" : "Eemalda grupp", + "Admins" : "Haldurid", + "Disabled users" : "Keelatud kasutajad", + "Everyone" : "Igaüks", + "Add group" : "Lisa grupp", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Rakendus on lubatud, aga see vajab uuendamist. Sind suunatakse 5 sekundi pärast uuendamise lehele.", + "SSL Root Certificates" : "SSL juursertifikaadid", + "Common Name" : "Üldnimetus", + "Valid until" : "Kehtib kuni", + "Issued By" : "Välja antud", + "Valid until %s" : "Kehtib kuni %s", + "Import root certificate" : "Impordi root sertifikaat", + "Administrator documentation" : "Administraatori dokumentatsioon", + "Documentation" : "Dokumentatsioon", + "Forum" : "Foorum", + "None" : "Pole", + "Login" : "Logi sisse", + "Plain" : "Tavatekst", + "NT LAN Manager" : "NT LAN Manager", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "E-kirjade server", + "Open documentation" : "Ava dokumentatsioon", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "E-kirjad saatmise võimekus on olulile seadistada paroolide lähtestamiseks ja teavituste saatmiseks.", + "Send mode" : "Saatmise viis", + "Encryption" : "Krüpteerimine", + "From address" : "Saatja aadress", + "mail" : "e-mail", + "Authentication method" : "Autentimise meetod", + "Authentication required" : "Autentimine on vajalik", + "Server address" : "Serveri aadress", + "Port" : "Port", + "Credentials" : "Kasutajatunnused", + "SMTP Username" : "SMTP kasutajatunnus", + "SMTP Password" : "SMTP parool", + "Test email settings" : "Testi e-posti seadeid", + "Send email" : "Saada kiri", + "Security & setup warnings" : "Turva- ja paigalduse hoiatused", + "All checks passed." : "Kõik kontrollid on läbitud.", + "Version" : "Versioon", + "Server-side encryption" : "Serveripoolne krüpteerimine", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Serveripoole krüpteerimine võimaldab serverisse üleslaetud faile krüpteerida. Sellega kaasnevad piirangud, näiteks jõudluskadu. Lülita see sisse ainult siis, kui vaja on.", + "Enable server-side encryption" : "Luba serveripoolne krüpteerimine", + "Please read carefully before activating server-side encryption: " : "Palun loe hoolikalt enne serveripoolse krüpteerimise lubamist:", + "Enable encryption" : "Luba krüpteerimine", + "Select default encryption module:" : "Määra vaikimisi krüpteerimise moodul:", + "Start migration" : "Alusta kolimist", + "Execute one task with each page loaded" : "Käivita toiming igal lehe laadimisel", + "The cron.php needs to be executed by the system user \"%s\"." : "cron.php tuleb käivitada süsteemikasutaja \"%s\" poolt.", + "Sharing" : "Jagamine", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Administraatorina saate jagamise valikuid täpselt seadistada. Lisateavet leiad dokumentatsioonist.", + "Allow apps to use the Share API" : "Luba rakendustel kasutada Share API-t", + "Allow users to share via link" : "Luba kasutajatel lingiga jagamist ", + "Allow public uploads" : "Luba avalikud üleslaadimised", + "Always ask for a password" : "Alati küsi parooli", + "Enforce password protection" : "Sunni parooliga kaitsmine", + "Set default expiration date" : "Määra vaikimisi aegumise kuupäev", + "Expire after " : "Aegu pärast", + "days" : "päeva", + "Enforce expiration date" : "Sunnitud aegumise kuupäev", + "Allow resharing" : "Luba edasijagamine", + "Allow sharing with groups" : "Luba gruppidega jagamine", + "Restrict users to only share with users in their groups" : "Luba kasutajatel jagada kasutajatega ainult oma grupi piires", + "Exclude groups from sharing" : "Eemalda grupid jagamisest", + "These groups will still be able to receive shares, but not to initiate them." : "Need grupid saavad vastu võtta jagamisi, kuid ise jagamisi algatada ei saa.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Luba kasutajanime automaatne lõpetamine jagamisdialoogis. Kui see on keelatud, tuleb sisestada täielik kasutajanimi või e-posti aadress.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Kuva avaliku lingiga üleslaadimise lehel lahtiütluste tekst. (Kuvatakse ainult siis, kui failide loend on peidetud.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Seda teksti näidatakse avaliku lingiga üleslaadimise lehel kui failide loend on peidetud.", + "Personal" : "Isiklik", + "Administration" : "Haldus", + "Profile picture" : "Profiili pilt", + "Upload new" : "Laadi uus üles", + "Select from Files" : "Vali failidest", + "Remove image" : "Eemalda pilt", + "png or jpg, max. 20 MB" : "png või jpg, max. 20 MB", + "Cancel" : "Loobu", + "Choose as profile picture" : "Vali kui profiili pilt", + "Details" : "Üksikasjad", + "You are a member of the following groups:" : "Sa oled nende gruppide liige:", + "Full name" : "Täielik nimi", + "No display name set" : "Näidatavat nime pole veel määratud", + "Your email address" : "Sinu e-posti aadress", + "No email address set" : "E-posti aadressi pole veel määratud", + "For password reset and notifications" : "Parooli lähestamiseks ja teadeteks", + "Phone number" : "Telefoninumber", + "Your phone number" : "Sinu telefoninumber", + "Address" : "Aadress", + "Your postal address" : "Sinu postiaadress", + "Website" : "Veebileht", + "It can take up to 24 hours before the account is displayed as verified." : "Võib võtta kuni 24 tundi enne kui konto kuvatakse kui kinnitatud.", + "Help translate" : "Aita tõlkida", + "Locale" : "Kasutuskoht", + "Current password" : "Praegune parool", + "Change password" : "Muuda parooli", + "Store credentials" : "Säilita kasutajaandmed", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php on registreeritud webcron teenuses, et käivitada fail cron.php iga 15 minuti tagant üle http.", + "Use system cron service to call the cron.php file every 15 minutes." : "Kasuta süsteemi cron teenust, et käivitada fail cron.php iga 15 minuti järel." +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/et_EE.json b/apps/settings/l10n/et_EE.json new file mode 100644 index 00000000000..b2c4b55c43c --- /dev/null +++ b/apps/settings/l10n/et_EE.json @@ -0,0 +1,244 @@ +{ "translations": { + "{actor} changed your password" : "{actor} muutis sinu parooli", + "You changed your password" : "Sa muutsid oma parooli", + "Your password was reset by an administrator" : "Administraator lähtestas sinu parooli", + "{actor} changed your email address" : "{actor} muutis sinu e-posti aadressi", + "You changed your email address" : "Sa muutsid oma e-posti aadressi", + "Your email address was changed by an administrator" : "Administraator muutis sinu e-posti aadressi", + "Security" : "Turvalisus", + "You successfully logged in using two-factor authentication (%1$s)" : "Logisid edukalt sisse, kasutades kaheastmelist autentimiset (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Sisselogimiskatse, kasutades kaheastmelist autentimist, ebaõnnestus (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Sinu <strong>parooli</strong> või <strong>e-posti aadressi</strong> muudeti", + "Couldn't remove app." : "Ei suutnud rakendit eemaldada.", + "Couldn't update app." : "Rakenduse uuendamine ebaõnnestus.", + "Wrong password" : "Vale parool", + "Saved" : "Salvestatud", + "No user supplied" : "Kasutajat ei sisestatud", + "Unable to change password" : "Ei suuda parooli muuta", + "Authentication error" : "Autentimise viga", + "Wrong admin recovery password. Please check the password and try again." : "Vale administraatori taasteparool. Palun kontrolli parooli ning proovi uuesti.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Paigaldan ja uuendan rakendusi läbi rakenduste poe või liitpilve jagamise", + "Federated Cloud Sharing" : "Jagamine liitpilves", + "Invalid SMTP password." : "Vale SMTP parool.", + "Email setting test" : "E-posti sätete kontroll", + "Well done, %s!" : "Suurepärane, %s!", + "If you received this email, the email configuration seems to be correct." : "Kui saite selle kirja, näib e-posti seadistus õige.", + "Email could not be sent. Check your mail server log" : "E-posti ei saanud saata. Kontrollige oma meiliserveri logi", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "E-posti saatmisel ilmnes viga. Palun kontrollige seadeid. (Viga: %s)", + "You need to set your user email before being able to send test emails." : "Pead seadistama oma e-postienne kui on võimalik saata test-kirju.", + "Invalid mail address" : "Vigane e-posti aadress", + "Settings saved" : "Seaded salvestatud", + "Unable to change full name" : "Täispika nime muutmine ebaõnnestus", + "Unable to change email address" : "E-posti aadressi muutmine ebaõnnestus", + "%1$s changed your password on %2$s." : "%1$s muutis su parooli %2$s.", + "Your password on %s was changed." : "Sinu %s parool muudeti.", + "Your password on %s was reset by an administrator." : "Administraator lähtestas sinu %s parooli.", + "Password for %1$s changed on %2$s" : "%1$s parool muudetud %2$s", + "Password changed for %s" : "%s parool muudetud", + "If you did not request this, please contact an administrator." : "Kui sa pole seda taotlenud, võta ühendust administraatoriga.", + "Your email address on %s was changed." : "Sinu %s e-posti aadressi muudeti.", + "Your email address on %s was changed by an administrator." : "Administraator muutis sinu %s e-posti aadressi.", + "Email address for %1$s changed on %2$s" : "%1$s e-posti aadress muudetud %2$s", + "Email address changed for %s" : "%s e-posti aadress muudetud", + "The new email address is %s" : "Uus e-posti aadress on %s", + "Your %s account was created" : "Sinu %s konto on loodud", + "Welcome aboard" : "Tere tulemast", + "Welcome aboard %s" : "Tere tulemast %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Tere tulemast oma %s kontole. Sa saad lisada, kaitsta ja jagada oma andmeid.", + "Your username is: %s" : "Sinu kasutajanimi on: %s", + "Set your password" : "Määra oma parool", + "Go to %s" : "Mine %s", + "Install Client" : "Paigalda kliendiprogramm", + "Delete" : "Kustuta", + "Unlimited" : "Piiramatult", + "Verifying …" : "Kontrollin ...", + "Verify" : "Kontrolli", + "Migration in progress. Please wait until the migration is finished" : "Kolimine on käimas. Palun oota, kuni see on lõpetatud", + "Migration started …" : "Kolimist on alustatud ...", + "Not saved" : "Ei ole salvestatud", + "Sending…" : "Saadan...", + "Email sent" : "E-kiri on saadetud", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Tekkis viga. Palun lae üles ASCII kodeeringud PEM sertifikaat.", + "Valid until {date}" : "Kehtib kuni {date}", + "Local" : "Kohalik", + "Private" : "Privaatne", + "Only visible to local users" : "Ainult nähtav kohalikele kasutajatele", + "Only visible to you" : "Ainult sinule nähtav", + "Contacts" : "Kontaktid", + "Visible to local users and to trusted servers" : "Nähtav kohelikele kasutajatele ja usaldatud serveritele", + "Public" : "Avalik", + "Will be synced to a global and public address book" : "Sünkroniseeritakse globaalsesse ja avalikku aadressiraamatusse", + "Very weak password" : "Väga nõrk parool", + "Weak password" : "Nõrk parool", + "So-so password" : "Enam-vähem sobiv parool", + "Good password" : "Hea parool", + "Strong password" : "Väga hea parool", + "Select a profile picture" : "Vali profiili pilt", + "Week starts on {fdow}" : "Nädala esimene päev: {fdow}", + "Groups" : "Grupid", + "Limit to groups" : "Luba gruppidele", + "Allow filesystem access" : "Luba juurdepääs failisüsteemile", + "Revoke" : "Tühista", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome for Android", + "Sync client - {os}" : "Kliendiprogramm - {os}", + "This session" : "See sessioon", + "Device" : "Seade", + "Last activity" : "Viimane tegevus", + "Devices & sessions" : "Seadmed & sessioonid", + "Web, desktop and mobile clients currently logged in to your account." : "Sinu kontole hetkel sisse loginud veebi-, töölaua-, ja mobiilsed kliendid.", + "App name" : "Rakenduse nimi", + "Create new app password" : "Loo uus rakenduse parool", + "Use the credentials below to configure your app or device." : "Rakenduse või seadme konfigureerimiseks kasutage allpool toodud mandaate.", + "For security reasons this password will only be shown once." : "Turvalisuse huvides kuvatakse see parool ainult üks kord.", + "Username" : "Kasutajanimi", + "Password" : "Parool", + "Done" : "Valmis", + "Copied!" : "Kopeeritud!", + "Copy" : "Kopeeri", + "Official" : "Ametlik", + "Remove" : "Eemalda", + "Disable" : "Lülita välja", + "All" : "Kõik", + "No results" : "Vasteid ei leitud", + "Visit website" : "Külasta veebisaiti", + "Report a bug" : "Teata veast", + "User documentation" : "Kasutaja dokumentatsioon", + "Admin documentation" : "Administraatori dokumentatsioon", + "Developer documentation" : "Arendaja dokumentatsioon", + "No apps found for your version" : "Sinu versiooni jaoks ei leitud ühtegi rakendust", + "Enable all" : "Luba kõik", + "Enable" : "Lülita sisse", + "You do not have permissions to see the details of this user" : "Sul puuduvad õigused selle kasutaja üksikasjade vaatamiseks", + "New password" : "Uus parool", + "Delete user" : "Kustuta kasutaja", + "Disable user" : "Keela kasutaja", + "Enable user" : "Luba kasutaja", + "Resend welcome email" : "Saada tervitusmeil uuesti", + "{size} used" : "{size} kasutatud", + "Welcome mail sent!" : "Tervitusmeil saadetud!", + "Display name" : "Kuvatav nimi", + "Email" : "E-post", + "Group admin for" : "Grupi admin", + "Quota" : "Mahupiir", + "Language" : "Keel", + "Storage location" : "Salvestusruumi asukoht", + "User backend" : "Kasutaja taustarakendus", + "Last login" : "Viimane sisselogimine", + "Default language" : "Vaikekeel", + "Default quota" : "Vaikimisi mahupiir", + "Common languages" : "Levinud keeled", + "All languages" : "Kõik keeled", + "Your apps" : "Sinu rakendused", + "Disabled apps" : "Keelatud rakendused", + "Updates" : "Uuendused", + "App bundles" : "Rakenduste kogumikud", + "{license}-licensed" : "{license} litsents", + "New user" : "Uus kasutaja", + "Default quota:" : "Vaikekvoot:", + "Show last login" : "Näita viimast sisselogimist", + "You are about to remove the group {group}. The users will NOT be deleted." : "Sa oled eemaldamas gruppi {group}. Selles grupis olevaid kasutajaid EI kustutata.", + "Please confirm the group removal " : "Palun kinnita grupi eemaldamine", + "Remove group" : "Eemalda grupp", + "Admins" : "Haldurid", + "Disabled users" : "Keelatud kasutajad", + "Everyone" : "Igaüks", + "Add group" : "Lisa grupp", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Rakendus on lubatud, aga see vajab uuendamist. Sind suunatakse 5 sekundi pärast uuendamise lehele.", + "SSL Root Certificates" : "SSL juursertifikaadid", + "Common Name" : "Üldnimetus", + "Valid until" : "Kehtib kuni", + "Issued By" : "Välja antud", + "Valid until %s" : "Kehtib kuni %s", + "Import root certificate" : "Impordi root sertifikaat", + "Administrator documentation" : "Administraatori dokumentatsioon", + "Documentation" : "Dokumentatsioon", + "Forum" : "Foorum", + "None" : "Pole", + "Login" : "Logi sisse", + "Plain" : "Tavatekst", + "NT LAN Manager" : "NT LAN Manager", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "E-kirjade server", + "Open documentation" : "Ava dokumentatsioon", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "E-kirjad saatmise võimekus on olulile seadistada paroolide lähtestamiseks ja teavituste saatmiseks.", + "Send mode" : "Saatmise viis", + "Encryption" : "Krüpteerimine", + "From address" : "Saatja aadress", + "mail" : "e-mail", + "Authentication method" : "Autentimise meetod", + "Authentication required" : "Autentimine on vajalik", + "Server address" : "Serveri aadress", + "Port" : "Port", + "Credentials" : "Kasutajatunnused", + "SMTP Username" : "SMTP kasutajatunnus", + "SMTP Password" : "SMTP parool", + "Test email settings" : "Testi e-posti seadeid", + "Send email" : "Saada kiri", + "Security & setup warnings" : "Turva- ja paigalduse hoiatused", + "All checks passed." : "Kõik kontrollid on läbitud.", + "Version" : "Versioon", + "Server-side encryption" : "Serveripoolne krüpteerimine", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Serveripoole krüpteerimine võimaldab serverisse üleslaetud faile krüpteerida. Sellega kaasnevad piirangud, näiteks jõudluskadu. Lülita see sisse ainult siis, kui vaja on.", + "Enable server-side encryption" : "Luba serveripoolne krüpteerimine", + "Please read carefully before activating server-side encryption: " : "Palun loe hoolikalt enne serveripoolse krüpteerimise lubamist:", + "Enable encryption" : "Luba krüpteerimine", + "Select default encryption module:" : "Määra vaikimisi krüpteerimise moodul:", + "Start migration" : "Alusta kolimist", + "Execute one task with each page loaded" : "Käivita toiming igal lehe laadimisel", + "The cron.php needs to be executed by the system user \"%s\"." : "cron.php tuleb käivitada süsteemikasutaja \"%s\" poolt.", + "Sharing" : "Jagamine", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Administraatorina saate jagamise valikuid täpselt seadistada. Lisateavet leiad dokumentatsioonist.", + "Allow apps to use the Share API" : "Luba rakendustel kasutada Share API-t", + "Allow users to share via link" : "Luba kasutajatel lingiga jagamist ", + "Allow public uploads" : "Luba avalikud üleslaadimised", + "Always ask for a password" : "Alati küsi parooli", + "Enforce password protection" : "Sunni parooliga kaitsmine", + "Set default expiration date" : "Määra vaikimisi aegumise kuupäev", + "Expire after " : "Aegu pärast", + "days" : "päeva", + "Enforce expiration date" : "Sunnitud aegumise kuupäev", + "Allow resharing" : "Luba edasijagamine", + "Allow sharing with groups" : "Luba gruppidega jagamine", + "Restrict users to only share with users in their groups" : "Luba kasutajatel jagada kasutajatega ainult oma grupi piires", + "Exclude groups from sharing" : "Eemalda grupid jagamisest", + "These groups will still be able to receive shares, but not to initiate them." : "Need grupid saavad vastu võtta jagamisi, kuid ise jagamisi algatada ei saa.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Luba kasutajanime automaatne lõpetamine jagamisdialoogis. Kui see on keelatud, tuleb sisestada täielik kasutajanimi või e-posti aadress.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Kuva avaliku lingiga üleslaadimise lehel lahtiütluste tekst. (Kuvatakse ainult siis, kui failide loend on peidetud.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Seda teksti näidatakse avaliku lingiga üleslaadimise lehel kui failide loend on peidetud.", + "Personal" : "Isiklik", + "Administration" : "Haldus", + "Profile picture" : "Profiili pilt", + "Upload new" : "Laadi uus üles", + "Select from Files" : "Vali failidest", + "Remove image" : "Eemalda pilt", + "png or jpg, max. 20 MB" : "png või jpg, max. 20 MB", + "Cancel" : "Loobu", + "Choose as profile picture" : "Vali kui profiili pilt", + "Details" : "Üksikasjad", + "You are a member of the following groups:" : "Sa oled nende gruppide liige:", + "Full name" : "Täielik nimi", + "No display name set" : "Näidatavat nime pole veel määratud", + "Your email address" : "Sinu e-posti aadress", + "No email address set" : "E-posti aadressi pole veel määratud", + "For password reset and notifications" : "Parooli lähestamiseks ja teadeteks", + "Phone number" : "Telefoninumber", + "Your phone number" : "Sinu telefoninumber", + "Address" : "Aadress", + "Your postal address" : "Sinu postiaadress", + "Website" : "Veebileht", + "It can take up to 24 hours before the account is displayed as verified." : "Võib võtta kuni 24 tundi enne kui konto kuvatakse kui kinnitatud.", + "Help translate" : "Aita tõlkida", + "Locale" : "Kasutuskoht", + "Current password" : "Praegune parool", + "Change password" : "Muuda parooli", + "Store credentials" : "Säilita kasutajaandmed", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php on registreeritud webcron teenuses, et käivitada fail cron.php iga 15 minuti tagant üle http.", + "Use system cron service to call the cron.php file every 15 minutes." : "Kasuta süsteemi cron teenust, et käivitada fail cron.php iga 15 minuti järel." +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} \ No newline at end of file diff --git a/apps/settings/l10n/eu.js b/apps/settings/l10n/eu.js new file mode 100644 index 00000000000..0f6de95cbb2 --- /dev/null +++ b/apps/settings/l10n/eu.js @@ -0,0 +1,362 @@ +OC.L10N.register( + "settings", + { + "{actor} changed your password" : "{actor}-(e)k zure pasahitza aldatu du", + "You changed your password" : "Zuk zure pasahitza aldatu duzu", + "Your password was reset by an administrator" : "Administratzaile batek zure pasahitza berrezarri du", + "{actor} changed your email address" : "{actor}-(e)k zure e-posta helbidea aldatu du", + "You changed your email address" : "Zuk zure e-posta helbidea aldatu duzu", + "Your email address was changed by an administrator" : "Administratzaile batek zure e-posta helbidea berrezarri du", + "Security" : "Segurtasuna", + "You successfully logged in using two-factor authentication (%1$s)" : "Ongi hasi duzu saioa bi urratseko egiaztapenaren bidez (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Bi urratseko egiaztapenaren bidezko saioa hasteko ahaleginak huts egin du (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Zure pasahitza edo e-posta helbidea aldatu da", + "Couldn't remove app." : "Ezin izan da aplikazioa kendu.", + "Couldn't update app." : "Ezin izan da aplikazioa eguneratu.", + "Wrong password" : "Pasahitz okerra", + "Saved" : "Gordeta", + "No user supplied" : "Ez da erabiltzailerik zehaztu", + "Unable to change password" : "Ezin izan da pasahitza aldatu", + "Authentication error" : "Autentifikazio errorea", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Eman berreskuratzeko administrazio pasahitza, bestela erabiltzaile datu guztiak galduko dira", + "Wrong admin recovery password. Please check the password and try again." : "Administratzailearen berreskuratze pasahitza ez egokia. Mesedez egiaztatu pasahitza eta saiatu berriz.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Motorrak ez du onartzen pasahitza aldatzea, baina erabiltzailearen zifratze-gakoa eguneratu da.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Aplikazioak aplikazio-biltegiaren edo federatutako hodei partekatzearen bidez instalatzen edo eguneratzen", + "Federated Cloud Sharing" : "Federatutako hodei partekatzea", + "Invalid SMTP password." : "SMTP pasahitza baliogabea", + "Email setting test" : "E-postaren ezarpenen proba", + "Well done, %s!" : "Ongi egina, %s!", + "If you received this email, the email configuration seems to be correct." : "E-posta mezu hau jaso baduzu, e-postaren ezarpenak egokiak direnaren seinale.", + "Email could not be sent. Check your mail server log" : "E-posta mezua ezin izan da bidali. Begiratu zure posta-zerbitzariaren egunkaria", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Arazo bat sortu da posta bidaltzerakoan. Berrikusi zure ezarpenak. (Error: %s)", + "You need to set your user email before being able to send test emails." : "Epostaren erabiltzailea zehaztu behar duzu probako eposta bidali aurretik.", + "Invalid mail address" : "Posta helbide baliogabea", + "Settings saved" : "Ezarpenak gordeta", + "Unable to change full name" : "Ezin izan da izena aldatu", + "Unable to change email address" : "Ezin da helbide elektronikoa aldatu", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Zure Twitter kontua egiaztatzearren, bidali hurrengo txioa Twitter-era (egiaztatu zure mezuak ez duela lerro-jauzirik):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Zure webgunea egiaztatzearren, gorde hurrengo edukia zure webgunearen sustraiko '.well-known/CloudIdVerificationCode.txt' (egiaztatu testu osoa lerro bakarrean dagoela):", + "%1$s changed your password on %2$s." : "%1$s-(e)k zure pasahitza aldatu du %2$s-(e)n", + "Your password on %s was changed." : "Zure %s-(e)ko pasahitza aldatu da.", + "Your password on %s was reset by an administrator." : "Administratzaile batek zure %s-(e)ko pasahitza berrezarri du", + "Password for %1$s changed on %2$s" : "%1$s-(r)en %2$s-(e)ko pasahitza aldatu da", + "Password changed for %s" : "%s-(r)en pasahitza aldatu da", + "If you did not request this, please contact an administrator." : "Zuk ez baduzu hau eskatu, jarri kontaktuan administratzailearekin.", + "Your email address on %s was changed." : "Zure %s-(e)ko e-posta helbidea aldatu da.", + "Your email address on %s was changed by an administrator." : "Administratzaile batek zure %s-(e)ko e-posta helbidea berrezarri du", + "Email address for %1$s changed on %2$s" : "%1$s-(r)en %2$s-(e)ko e-posta helbidea aldatu da", + "Email address changed for %s" : "%s-(r)en e-posta helbidea aldatu da", + "The new email address is %s" : "E-posta helbide berria hau da: %s", + "Your %s account was created" : "Zure %s kontua sortu da", + "Welcome aboard" : "Ongi etorri barrura", + "Welcome aboard %s" : "Ongi etorri barrura, %s", + "Your username is: %s" : "Zure erabiltzailea hau da: %s", + "Set your password" : "Ezarri zure pasahitza", + "Go to %s" : "%s-ra joan", + "Install Client" : "Instalatu bezeroa", + "Delete" : "Ezabatu", + "Unlimited" : "Mugarik gabe", + "Verifying …" : "Egiaztatzen...", + "Verify" : "Egiaztatu", + "Migration in progress. Please wait until the migration is finished" : "Migratzen ari da. Itxaron migrazioa osatu arte.", + "Migration started …" : "Migration started …", + "Not saved" : "Ez da gorde", + "Sending…" : "Bidaltzen...", + "Email sent" : "Eposta bidalia", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "An error occurred. Please upload an ASCII-encoded PEM certificate.", + "Valid until {date}" : "{date} arte baliogarria", + "Local" : "Local", + "Private" : "Pribatua", + "Only visible to local users" : "Soilik bertako erabiltzaileentzako ikusgai", + "Only visible to you" : "Zuretzat bakarrik ikusgai", + "Contacts" : "Kontaktuak", + "Visible to local users and to trusted servers" : "Bertako erabiltzaile eta zerbitzarien jendearentzat ikusgai", + "Public" : "Publikoa", + "Will be synced to a global and public address book" : "Helbide liburu global eta publikoan sinkronizatuko da", + "Very weak password" : "Pasahitz oso ahula", + "Weak password" : "Pasahitz ahula", + "So-so password" : "Halamoduzko pasahitza", + "Good password" : "Pasahitz ona", + "Strong password" : "Pasahitz sendoa", + "Select a profile picture" : "Profilaren irudia aukeratu", + "Groups" : "Taldeak", + "Serbian" : "Serbiera", + "Sinhala (Sri Lanka)" : "Sinhala (Sri Lanka)", + "Sinhala" : "Sinhala", + "Slovak (Slovakia)" : "Eslovakiera (Eslovakia)", + "Slovak" : "Eslovakiera", + "Slovenian (Slovenia)" : "Esloveniera (Eslovenia)", + "Slovenian" : "Esloveniera", + "Somali (Ethiopia)" : "Somaliera (Etiopia)", + "Somali (Kenya)" : "Somaliera (Kenya)", + "Somali (Somalia)" : "Somaliera (Somalia)", + "Somali" : "Somaliera", + "Spanish (Argentina)" : "Gaztelania (Argentina)", + "Spanish (Bolivia)" : "Gaztelania (Bolivia)", + "Spanish (Chile)" : "Gaztelania (Txile)", + "Spanish (Colombia)" : "Gaztelania (Kolombia)", + "Spanish (Costa Rica)" : "Gaztelania (Costa Rica)", + "Spanish (Dominican Republic)" : "Gaztelania (Dominikar Errepublika)", + "Spanish (Ecuador)" : "Gaztelania (Ecuador)", + "Spanish (El Salvador)" : "Gaztelania (El Salvador)", + "Spanish (Equatorial Guinea)" : "Gaztelania (Ekuatore Ginea)", + "Spanish (Guatemala)" : "Gaztelania (Guatemala)", + "Spanish (Honduras)" : "Gaztelania (Honduras)", + "Spanish (Latin America)" : "Gaztelania (Latinoamerika)", + "Spanish (Mexico)" : "Gaztelania (Mexico)", + "Spanish (Nicaragua)" : "Gaztelania (Nicaragua)", + "Spanish (Panama)" : "Gaztelania (Panama)", + "Spanish (Paraguay)" : "Gaztelania (Paraguay)", + "Spanish (Peru)" : "Gaztelania (Peru)", + "Spanish (Puerto Rico)" : "Gaztelania (Puerto Rico)", + "Spanish (Spain)" : "Gaztelania (Espainia)", + "Spanish (United States)" : "Gaztelania (Estatu Batuak)", + "Spanish (Uruguay)" : "Gaztelania (Uruguay)", + "Spanish (Venezuela)" : "Gaztelania (Venezuela)", + "Spanish" : "Gaztelania", + "Swahili (Kenya)" : "Swahili (Kenya)", + "Swahili (Tanzania)" : "Swahili (Tanzania)", + "Swahili" : "Swahili", + "Swedish (Finland)" : "Suediera (Finlandia)", + "Swedish (Sweden)" : "Suediera (Suedia)", + "Swedish" : "Suediera", + "Tamil (India)" : "Tamilera (India)", + "Tamil (Sri Lanka)" : "Tamilera (Sri Lanka)", + "Tamil" : "Tamilera", + "Telugu (India)" : "Telugu (India)", + "Telugu" : "Telugu", + "Teso (Kenya)" : "Teso (Kenya)", + "Teso (Uganda)" : "Teso (Uganda)", + "Thai (Thailand)" : "Thaiera (Thailandia)", + "Thai" : "Thaiera", + "Tibetan (China)" : "Tibetera (Txina)", + "Tibetan (India)" : "Tibetera (India)", + "Tibetan" : "Tibetera", + "Tonga (Tonga)" : "Tongera (Tonga)", + "Tonga" : "Tongera", + "Turkish (Turkey)" : "Turkiera (Turkia)", + "Turkish" : "Turkiera", + "Ukrainian (Ukraine)" : "Ukrainera (Ukrania)", + "Ukrainian" : "Ukrainera", + "Urdu (India)" : "Urdu (India)", + "Urdu (Pakistan)" : "Urdu (Pakistan)", + "Urdu" : "Urdu", + "Uzbek (Arabic)" : "Uzbekera (Arabiarra)", + "Uzbek (Arabic, Afghanistan)" : "Uzbekera (Arabiarra, Afghanistan)", + "Uzbek" : "Uzbekera", + "Vietnamese (Vietnam)" : "Vietnamera (Vietnam)", + "Vietnamese" : "Vietnamera", + "Welsh (United Kingdom)" : "Gales (Erresuma Batua)", + "Welsh" : "Gales", + "Yoruba (Nigeria)" : "Jorubera (Nigeria)", + "Yoruba" : "Jorubera", + "Zulu (South Africa)" : "Zuluera (Hego Afrika)", + "Zulu" : "Zuluera", + "Limit to groups" : "Taldeetara mugatu", + "Excluded groups" : "Baztertu taldeak", + "Save changes" : "Gorde aldaketak", + "Device settings" : "Gailuaren ezarpenak", + "Allow filesystem access" : "Onartu fitxategi sisteman sarbidea", + "Rename" : "Berrizendatu", + "Revoke" : "Ezeztatu", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome Android-erako", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Nextcloud iOS aplikazioa", + "Nextcloud Android app" : "Nextcloud Android aplikazioa", + "Nextcloud Talk for iOS" : "Nextcloud Talk iOSentzat", + "Nextcloud Talk for Android" : "Nextcloud Talk Androidentzat", + "Sync client - {os}" : "Sinkronizatu bezeroaren - {os}", + "This session" : "Saio hau", + "Device" : "Gailu", + "Last activity" : "Azken jarduera", + "Devices & sessions" : "Gailuak eta saioak", + "Web, desktop and mobile clients currently logged in to your account." : "Web-gune, mahaigain eta mugikorrean zure kontuan saioa hasita dago.", + "Error while creating device token" : "Errorea gailuaren tokena sortzean", + "Error while deleting the token" : "Errorea tokena ezabatzean", + "App name" : "Aplikazioaren izena", + "Create new app password" : "Sortu app pasahitza berria", + "Use the credentials below to configure your app or device." : "Erabili kredentzialak beheko zure aplikazioa edo gailua konfiguratzeko.", + "For security reasons this password will only be shown once." : "Segurtasun arrazoiengatik, pasahitz hau behin soilik erakutsiko da.", + "Username" : "Erabiltzaile izena", + "Password" : "Pasahitza", + "Done" : "Egina", + "Show QR code for mobile apps" : "Erakutsi QR kodea mugikorrentzako aplikazioetan", + "Copied!" : "Kopiatua!", + "Copy" : "Kopiatu", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Aplikazio ofizialak komunitateak eta komunitatean garatzen dira. Funtzionalak dira eta produkziorako gertu daude.", + "Official" : "Ofiziala", + "Remove" : "Ezabatu", + "Disable" : "Ez-gaitu", + "All" : "Denak", + "No results" : "Emaitzarik ez", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "This app has no minimum Nextcloud version assigned. This will be an error in the future.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "This app has no maximum Nextcloud version assigned. This will be an error in the future.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Aplikazioa ezin da instalatu hurrengo menpekotasunak betetzen ez direlako:", + "View in store" : "Dendan ikusi", + "Visit website" : "Web orria ikusi", + "Report a bug" : "Eman akats baten berri ", + "User documentation" : "Erabiltzailearen dokumentazioa", + "Admin documentation" : "Administratzailearen dokumentazioa", + "Developer documentation" : "Garatzailearen dokumentazioa", + "No apps found for your version" : "Ez dira aplikaziorik aurkitu zure bertsiorako", + "Disable all" : "Desgaitu guztia", + "Enable all" : "Gaitu denak", + "Download and enable" : "Deskargatu eta gaitu", + "Enable" : "Gaitu", + "Enable untested app" : "Gaitu probatu gabeko aplikazioa", + "The app will be downloaded from the app store" : "Aplikazioa aplikazio dendatik deskargatuko da", + "New password" : "Pasahitz berria", + "Add user in group" : "Gehitu erabiltzailea talde batean", + "No language set" : "Ez da hizkuntzarik ezarri", + "Never" : "Inoiz ez", + "Delete user" : "Ezabatu erabiltzailea", + "Disable user" : "Desgaitu erabiltzailea", + "Enable user" : "Gaitu erabiltzailea", + "Resend welcome email" : "Birbidali ongi etorri mezua", + "{size} used" : "{size} erabilita", + "Welcome mail sent!" : "Ongi etorri mezua bidalita!", + "Display name" : "Erakutsi izena", + "Email" : "E-posta", + "Group admin for" : "Talde honen administratzailea", + "Quota" : "Kuota", + "Language" : "Hizkuntza", + "Storage location" : "Biltegiratze kokapena", + "User backend" : "Erabiltzaile jatorria", + "Last login" : "Azken saioa", + "Default language" : "Hizkuntza lehenetsia", + "Add a new user" : "Gehitu erabiltze berria", + "Default quota" : "Kuota lehenetsia", + "All languages" : "Hizkuntza guztiak", + "Your apps" : "Zure aplikazioak", + "Disabled apps" : "Gaitu gabeko aplikazioak", + "Updates" : "Eguneraketak", + "App bundles" : "Aplikazio sortak", + "New user" : "Erabiltzaile berria", + "Default quota:" : "Lehenetsitako kuota:", + "Show Languages" : "Erakutsi Hizkuntzak", + "Show last login" : "Azken izen ematea erakutsi", + "Show user backend" : "Bistaratu erabiltzaile motorra", + "Remove group" : "Ezabatu taldea", + "Admins" : "Administratzaileak", + "Everyone" : "Edonor", + "Add group" : "Taldea gehitu", + "App update" : "Aplikazioaren eguneraketa", + "Error: This app can not be enabled because it makes the server unstable" : "Errorea: aplikazioa hau ezin da gaitu zerbitzaria ezegonkor izatea egiten duelako", + "SSL Root Certificates" : "SSL Root Certificates", + "Common Name" : "Izen arrunta", + "Valid until" : "Data hau arte baliogarria", + "Issued By" : "Honek bidalita", + "Valid until %s" : "%s arte baliogarria", + "Import root certificate" : "Inportatu root ziurtagiria", + "Administrator documentation" : "Administratzaile dokumentazioa", + "Documentation" : "Dokumentazioa", + "Forum" : "Foroa", + "None" : "Ezer", + "Login" : "Saio hasiera", + "Plain" : "Arrunta", + "NT LAN Manager" : "NT LAN Manager", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "E-posta zerbitzaria", + "Open documentation" : "Ireki dokumentazioa", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Zerbitzaria epostak bidaltzeko gai izatea garrantzitsua da, pasahitzak berrezartzeko eta abisuentzako", + "Send mode" : "Bidaltzeko modua", + "Encryption" : "Enkriptazioa", + "From address" : "Helbidetik", + "mail" : "posta", + "Authentication method" : "Autentifikazio metodoa", + "Authentication required" : "Autentikazioa beharrezkoa", + "Server address" : "Zerbitzariaren helbidea", + "Port" : "Portua", + "Credentials" : "Kredentzialak", + "SMTP Username" : "SMTP erabiltzaile-izena", + "SMTP Password" : "SMTP pasahitza", + "Test email settings" : "Probatu eposta ezarpenak", + "Send email" : "Bidali eposta", + "Security & setup warnings" : "Segurtasun eta konfigurazio abisuak", + "All checks passed." : "Egiaztapen guztiak gaindituta.", + "Version" : "Bertsioa", + "Server-side encryption" : "Zerbitzariaren aldeko enkriptaketa", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Zerbitzari-aldeko enkriptazioak zerbitzarira igotzen diren fitxategiak enkriptatzeabaimentzen du. Honek eraginkortasuna jaitsi dezake, beraz gaitu beharrezkoa bada soilik. ", + "Enable server-side encryption" : "Gaitu zerbitzariaren aldeko enkriptaketa", + "Please read carefully before activating server-side encryption: " : "Mesedez, irakurri arretaz zerbitzariaren aldeko enkriptaketa gaitu aurretik:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met.", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases.", + "Be aware that encryption always increases the file size." : "Be aware that encryption always increases the file size.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data.", + "This is the final warning: Do you really want to enable encryption?" : "This is the final warning: Do you really want to enable encryption?", + "Enable encryption" : "Gaitu enkriptatzea", + "No encryption module loaded, please enable an encryption module in the app menu." : "Ez da enkriptazio modulurik kargatu, mesedez enkriptazio modulu bat gaitu app-en menuan. ", + "Select default encryption module:" : "Defektuzko enkriptazio modulua hautatu:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Enkriptazio gakoak enkriptazio sistema zaharretik (ownCloud <=8.0) sistema berrira migratu behar duzu. Gaitu mesedez \" Defektuzko enkriptazio modulua\" eta 'occ encryption:migrate' exekuta ezazu", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Enkriptazio gakoak sistema zaharretik (ownCloud <=8.0) berrira migratu behar duzu", + "Start migration" : "Migrazioa hasi", + "Background jobs" : "Atzeko planoko lanak", + "Last job ran %s." : "Azken lana %s itzuli zuen. ", + "Last job execution ran %s. Something seems wrong." : "Azken lanaren exekuzioak %s itzuli zuen. Zerbait gaizki joan da ", + "Background job didn’t run yet!" : "Atzeko planoko lana ez da martxan jarri oraindik!", + "Execute one task with each page loaded" : "Exekutatu zeregin bat orri karga bakoitzean", + "The cron.php needs to be executed by the system user \"%s\"." : "Sistemako \"%s\" erabiltzaileak, cron.php exekutatu behar du.", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Hau exekutatzeko PHP POSIX luzapena behar duzu. {linkstart}PHP dokumentazioa{linkend} ikusi informazio gehiagorako", + "Sharing" : "Partekatzea", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Admin bezala partekatze portaerak zehazki konfigura daitezke. Dokumentazioaikusi informazio gehiagorako. ", + "Allow apps to use the Share API" : "Baimendu aplikazioak partekatzeko APIa erabiltzeko", + "Allow users to share via link" : "Baimendu erabiltzaileak esteken bidez partekatzea", + "Allow public uploads" : "Baimendu igoera publikoak", + "Always ask for a password" : "Beti eskatu pasahitza", + "Enforce password protection" : "Betearazi pasahitzaren babesa", + "Set default expiration date" : "Ezarri iraungitze-data lehenetsia", + "Expire after " : "Iraungia honen ondoren", + "days" : "egun", + "Enforce expiration date" : "Betearazi iraungitze-data", + "Allow resharing" : "Baimendu birpartekatzea", + "Allow sharing with groups" : "Onartu taldeekin partekatzen", + "Restrict users to only share with users in their groups" : "Mugatu partekatzeak taldeko erabiltzaileetara", + "Exclude groups from sharing" : "Baztertu taldeak partekatzean", + "These groups will still be able to receive shares, but not to initiate them." : "Talde hauek oraindik jaso ahal izango dute partekatzeak, baina ezingo dute partekatu", + "Personal" : "Pertsonala", + "Administration" : "Administrazioa", + "Like our Facebook page" : "Gure Facebook orrian Like egin", + "Follow us on Twitter" : "Jarrai gaitzazu Twitterren", + "Follow us on Mastodon" : "Jarraitu gaitzazu Mastodon-en", + "Check out our blog" : "Gure bloga kontsultatu", + "Subscribe to our newsletter" : "Izena eman gure buletinean", + "Profile picture" : "Zure irudia", + "Upload new" : "Igo berria", + "Select from Files" : "Aukeratu fitxategien artean", + "Remove image" : "Kendu irudia", + "png or jpg, max. 20 MB" : "png edo jpg, gehienez 20MB", + "Picture provided by original account" : "Irudia jatorrizko kontutik hartuta", + "Cancel" : "Ezeztatu", + "Choose as profile picture" : "Aukeratu profil irudi gisa", + "Details" : "Xehetasunak", + "Full name" : "Izen osoa", + "No display name set" : "Ez da bistaratze izena ezarri", + "Your email address" : "Zure e-posta", + "No email address set" : "Ez da eposta helbidea ezarri", + "For password reset and notifications" : "Pasahitza berrezartzeko eta jakinarazpenerako", + "Phone number" : "Telefono zenbakia", + "Your phone number" : "Zure telefono zenbakia", + "Address" : "Helbidea", + "Your postal address" : "Zure helbidea", + "Website" : "Webgunea", + "It can take up to 24 hours before the account is displayed as verified." : "24 ordu pasa daitezke kontua ziurtatua bezala agertu baino lehen", + "Link https://…" : "https://... esteka", + "Twitter" : "Twitter", + "Twitter handle @…" : "Twitter heldulekua @...", + "Help translate" : "Lagundu itzultzen", + "Current password" : "Uneko pasahitza", + "Change password" : "Aldatu pasahitza", + "Press ⌘-C to copy." : "Sakatu ⌘-C kopiatzeko.", + "Press Ctrl-C to copy." : "Sakatu Ctrl-C kopiatzeko.", + "Store credentials" : "Gorde kredentzialak", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php webcrom zerbitzu bezala erregistratua dago, cron.php 15 minuturo HTTP bidez deitu ahal izateko.", + "Use system cron service to call the cron.php file every 15 minutes." : "Sistemaren cron zerbitzua erabili cron.php 15 minuturo deitzeko." +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/eu.json b/apps/settings/l10n/eu.json new file mode 100644 index 00000000000..456ec37722b --- /dev/null +++ b/apps/settings/l10n/eu.json @@ -0,0 +1,360 @@ +{ "translations": { + "{actor} changed your password" : "{actor}-(e)k zure pasahitza aldatu du", + "You changed your password" : "Zuk zure pasahitza aldatu duzu", + "Your password was reset by an administrator" : "Administratzaile batek zure pasahitza berrezarri du", + "{actor} changed your email address" : "{actor}-(e)k zure e-posta helbidea aldatu du", + "You changed your email address" : "Zuk zure e-posta helbidea aldatu duzu", + "Your email address was changed by an administrator" : "Administratzaile batek zure e-posta helbidea berrezarri du", + "Security" : "Segurtasuna", + "You successfully logged in using two-factor authentication (%1$s)" : "Ongi hasi duzu saioa bi urratseko egiaztapenaren bidez (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Bi urratseko egiaztapenaren bidezko saioa hasteko ahaleginak huts egin du (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Zure pasahitza edo e-posta helbidea aldatu da", + "Couldn't remove app." : "Ezin izan da aplikazioa kendu.", + "Couldn't update app." : "Ezin izan da aplikazioa eguneratu.", + "Wrong password" : "Pasahitz okerra", + "Saved" : "Gordeta", + "No user supplied" : "Ez da erabiltzailerik zehaztu", + "Unable to change password" : "Ezin izan da pasahitza aldatu", + "Authentication error" : "Autentifikazio errorea", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Eman berreskuratzeko administrazio pasahitza, bestela erabiltzaile datu guztiak galduko dira", + "Wrong admin recovery password. Please check the password and try again." : "Administratzailearen berreskuratze pasahitza ez egokia. Mesedez egiaztatu pasahitza eta saiatu berriz.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Motorrak ez du onartzen pasahitza aldatzea, baina erabiltzailearen zifratze-gakoa eguneratu da.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Aplikazioak aplikazio-biltegiaren edo federatutako hodei partekatzearen bidez instalatzen edo eguneratzen", + "Federated Cloud Sharing" : "Federatutako hodei partekatzea", + "Invalid SMTP password." : "SMTP pasahitza baliogabea", + "Email setting test" : "E-postaren ezarpenen proba", + "Well done, %s!" : "Ongi egina, %s!", + "If you received this email, the email configuration seems to be correct." : "E-posta mezu hau jaso baduzu, e-postaren ezarpenak egokiak direnaren seinale.", + "Email could not be sent. Check your mail server log" : "E-posta mezua ezin izan da bidali. Begiratu zure posta-zerbitzariaren egunkaria", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Arazo bat sortu da posta bidaltzerakoan. Berrikusi zure ezarpenak. (Error: %s)", + "You need to set your user email before being able to send test emails." : "Epostaren erabiltzailea zehaztu behar duzu probako eposta bidali aurretik.", + "Invalid mail address" : "Posta helbide baliogabea", + "Settings saved" : "Ezarpenak gordeta", + "Unable to change full name" : "Ezin izan da izena aldatu", + "Unable to change email address" : "Ezin da helbide elektronikoa aldatu", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Zure Twitter kontua egiaztatzearren, bidali hurrengo txioa Twitter-era (egiaztatu zure mezuak ez duela lerro-jauzirik):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Zure webgunea egiaztatzearren, gorde hurrengo edukia zure webgunearen sustraiko '.well-known/CloudIdVerificationCode.txt' (egiaztatu testu osoa lerro bakarrean dagoela):", + "%1$s changed your password on %2$s." : "%1$s-(e)k zure pasahitza aldatu du %2$s-(e)n", + "Your password on %s was changed." : "Zure %s-(e)ko pasahitza aldatu da.", + "Your password on %s was reset by an administrator." : "Administratzaile batek zure %s-(e)ko pasahitza berrezarri du", + "Password for %1$s changed on %2$s" : "%1$s-(r)en %2$s-(e)ko pasahitza aldatu da", + "Password changed for %s" : "%s-(r)en pasahitza aldatu da", + "If you did not request this, please contact an administrator." : "Zuk ez baduzu hau eskatu, jarri kontaktuan administratzailearekin.", + "Your email address on %s was changed." : "Zure %s-(e)ko e-posta helbidea aldatu da.", + "Your email address on %s was changed by an administrator." : "Administratzaile batek zure %s-(e)ko e-posta helbidea berrezarri du", + "Email address for %1$s changed on %2$s" : "%1$s-(r)en %2$s-(e)ko e-posta helbidea aldatu da", + "Email address changed for %s" : "%s-(r)en e-posta helbidea aldatu da", + "The new email address is %s" : "E-posta helbide berria hau da: %s", + "Your %s account was created" : "Zure %s kontua sortu da", + "Welcome aboard" : "Ongi etorri barrura", + "Welcome aboard %s" : "Ongi etorri barrura, %s", + "Your username is: %s" : "Zure erabiltzailea hau da: %s", + "Set your password" : "Ezarri zure pasahitza", + "Go to %s" : "%s-ra joan", + "Install Client" : "Instalatu bezeroa", + "Delete" : "Ezabatu", + "Unlimited" : "Mugarik gabe", + "Verifying …" : "Egiaztatzen...", + "Verify" : "Egiaztatu", + "Migration in progress. Please wait until the migration is finished" : "Migratzen ari da. Itxaron migrazioa osatu arte.", + "Migration started …" : "Migration started …", + "Not saved" : "Ez da gorde", + "Sending…" : "Bidaltzen...", + "Email sent" : "Eposta bidalia", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "An error occurred. Please upload an ASCII-encoded PEM certificate.", + "Valid until {date}" : "{date} arte baliogarria", + "Local" : "Local", + "Private" : "Pribatua", + "Only visible to local users" : "Soilik bertako erabiltzaileentzako ikusgai", + "Only visible to you" : "Zuretzat bakarrik ikusgai", + "Contacts" : "Kontaktuak", + "Visible to local users and to trusted servers" : "Bertako erabiltzaile eta zerbitzarien jendearentzat ikusgai", + "Public" : "Publikoa", + "Will be synced to a global and public address book" : "Helbide liburu global eta publikoan sinkronizatuko da", + "Very weak password" : "Pasahitz oso ahula", + "Weak password" : "Pasahitz ahula", + "So-so password" : "Halamoduzko pasahitza", + "Good password" : "Pasahitz ona", + "Strong password" : "Pasahitz sendoa", + "Select a profile picture" : "Profilaren irudia aukeratu", + "Groups" : "Taldeak", + "Serbian" : "Serbiera", + "Sinhala (Sri Lanka)" : "Sinhala (Sri Lanka)", + "Sinhala" : "Sinhala", + "Slovak (Slovakia)" : "Eslovakiera (Eslovakia)", + "Slovak" : "Eslovakiera", + "Slovenian (Slovenia)" : "Esloveniera (Eslovenia)", + "Slovenian" : "Esloveniera", + "Somali (Ethiopia)" : "Somaliera (Etiopia)", + "Somali (Kenya)" : "Somaliera (Kenya)", + "Somali (Somalia)" : "Somaliera (Somalia)", + "Somali" : "Somaliera", + "Spanish (Argentina)" : "Gaztelania (Argentina)", + "Spanish (Bolivia)" : "Gaztelania (Bolivia)", + "Spanish (Chile)" : "Gaztelania (Txile)", + "Spanish (Colombia)" : "Gaztelania (Kolombia)", + "Spanish (Costa Rica)" : "Gaztelania (Costa Rica)", + "Spanish (Dominican Republic)" : "Gaztelania (Dominikar Errepublika)", + "Spanish (Ecuador)" : "Gaztelania (Ecuador)", + "Spanish (El Salvador)" : "Gaztelania (El Salvador)", + "Spanish (Equatorial Guinea)" : "Gaztelania (Ekuatore Ginea)", + "Spanish (Guatemala)" : "Gaztelania (Guatemala)", + "Spanish (Honduras)" : "Gaztelania (Honduras)", + "Spanish (Latin America)" : "Gaztelania (Latinoamerika)", + "Spanish (Mexico)" : "Gaztelania (Mexico)", + "Spanish (Nicaragua)" : "Gaztelania (Nicaragua)", + "Spanish (Panama)" : "Gaztelania (Panama)", + "Spanish (Paraguay)" : "Gaztelania (Paraguay)", + "Spanish (Peru)" : "Gaztelania (Peru)", + "Spanish (Puerto Rico)" : "Gaztelania (Puerto Rico)", + "Spanish (Spain)" : "Gaztelania (Espainia)", + "Spanish (United States)" : "Gaztelania (Estatu Batuak)", + "Spanish (Uruguay)" : "Gaztelania (Uruguay)", + "Spanish (Venezuela)" : "Gaztelania (Venezuela)", + "Spanish" : "Gaztelania", + "Swahili (Kenya)" : "Swahili (Kenya)", + "Swahili (Tanzania)" : "Swahili (Tanzania)", + "Swahili" : "Swahili", + "Swedish (Finland)" : "Suediera (Finlandia)", + "Swedish (Sweden)" : "Suediera (Suedia)", + "Swedish" : "Suediera", + "Tamil (India)" : "Tamilera (India)", + "Tamil (Sri Lanka)" : "Tamilera (Sri Lanka)", + "Tamil" : "Tamilera", + "Telugu (India)" : "Telugu (India)", + "Telugu" : "Telugu", + "Teso (Kenya)" : "Teso (Kenya)", + "Teso (Uganda)" : "Teso (Uganda)", + "Thai (Thailand)" : "Thaiera (Thailandia)", + "Thai" : "Thaiera", + "Tibetan (China)" : "Tibetera (Txina)", + "Tibetan (India)" : "Tibetera (India)", + "Tibetan" : "Tibetera", + "Tonga (Tonga)" : "Tongera (Tonga)", + "Tonga" : "Tongera", + "Turkish (Turkey)" : "Turkiera (Turkia)", + "Turkish" : "Turkiera", + "Ukrainian (Ukraine)" : "Ukrainera (Ukrania)", + "Ukrainian" : "Ukrainera", + "Urdu (India)" : "Urdu (India)", + "Urdu (Pakistan)" : "Urdu (Pakistan)", + "Urdu" : "Urdu", + "Uzbek (Arabic)" : "Uzbekera (Arabiarra)", + "Uzbek (Arabic, Afghanistan)" : "Uzbekera (Arabiarra, Afghanistan)", + "Uzbek" : "Uzbekera", + "Vietnamese (Vietnam)" : "Vietnamera (Vietnam)", + "Vietnamese" : "Vietnamera", + "Welsh (United Kingdom)" : "Gales (Erresuma Batua)", + "Welsh" : "Gales", + "Yoruba (Nigeria)" : "Jorubera (Nigeria)", + "Yoruba" : "Jorubera", + "Zulu (South Africa)" : "Zuluera (Hego Afrika)", + "Zulu" : "Zuluera", + "Limit to groups" : "Taldeetara mugatu", + "Excluded groups" : "Baztertu taldeak", + "Save changes" : "Gorde aldaketak", + "Device settings" : "Gailuaren ezarpenak", + "Allow filesystem access" : "Onartu fitxategi sisteman sarbidea", + "Rename" : "Berrizendatu", + "Revoke" : "Ezeztatu", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome Android-erako", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Nextcloud iOS aplikazioa", + "Nextcloud Android app" : "Nextcloud Android aplikazioa", + "Nextcloud Talk for iOS" : "Nextcloud Talk iOSentzat", + "Nextcloud Talk for Android" : "Nextcloud Talk Androidentzat", + "Sync client - {os}" : "Sinkronizatu bezeroaren - {os}", + "This session" : "Saio hau", + "Device" : "Gailu", + "Last activity" : "Azken jarduera", + "Devices & sessions" : "Gailuak eta saioak", + "Web, desktop and mobile clients currently logged in to your account." : "Web-gune, mahaigain eta mugikorrean zure kontuan saioa hasita dago.", + "Error while creating device token" : "Errorea gailuaren tokena sortzean", + "Error while deleting the token" : "Errorea tokena ezabatzean", + "App name" : "Aplikazioaren izena", + "Create new app password" : "Sortu app pasahitza berria", + "Use the credentials below to configure your app or device." : "Erabili kredentzialak beheko zure aplikazioa edo gailua konfiguratzeko.", + "For security reasons this password will only be shown once." : "Segurtasun arrazoiengatik, pasahitz hau behin soilik erakutsiko da.", + "Username" : "Erabiltzaile izena", + "Password" : "Pasahitza", + "Done" : "Egina", + "Show QR code for mobile apps" : "Erakutsi QR kodea mugikorrentzako aplikazioetan", + "Copied!" : "Kopiatua!", + "Copy" : "Kopiatu", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Aplikazio ofizialak komunitateak eta komunitatean garatzen dira. Funtzionalak dira eta produkziorako gertu daude.", + "Official" : "Ofiziala", + "Remove" : "Ezabatu", + "Disable" : "Ez-gaitu", + "All" : "Denak", + "No results" : "Emaitzarik ez", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "This app has no minimum Nextcloud version assigned. This will be an error in the future.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "This app has no maximum Nextcloud version assigned. This will be an error in the future.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Aplikazioa ezin da instalatu hurrengo menpekotasunak betetzen ez direlako:", + "View in store" : "Dendan ikusi", + "Visit website" : "Web orria ikusi", + "Report a bug" : "Eman akats baten berri ", + "User documentation" : "Erabiltzailearen dokumentazioa", + "Admin documentation" : "Administratzailearen dokumentazioa", + "Developer documentation" : "Garatzailearen dokumentazioa", + "No apps found for your version" : "Ez dira aplikaziorik aurkitu zure bertsiorako", + "Disable all" : "Desgaitu guztia", + "Enable all" : "Gaitu denak", + "Download and enable" : "Deskargatu eta gaitu", + "Enable" : "Gaitu", + "Enable untested app" : "Gaitu probatu gabeko aplikazioa", + "The app will be downloaded from the app store" : "Aplikazioa aplikazio dendatik deskargatuko da", + "New password" : "Pasahitz berria", + "Add user in group" : "Gehitu erabiltzailea talde batean", + "No language set" : "Ez da hizkuntzarik ezarri", + "Never" : "Inoiz ez", + "Delete user" : "Ezabatu erabiltzailea", + "Disable user" : "Desgaitu erabiltzailea", + "Enable user" : "Gaitu erabiltzailea", + "Resend welcome email" : "Birbidali ongi etorri mezua", + "{size} used" : "{size} erabilita", + "Welcome mail sent!" : "Ongi etorri mezua bidalita!", + "Display name" : "Erakutsi izena", + "Email" : "E-posta", + "Group admin for" : "Talde honen administratzailea", + "Quota" : "Kuota", + "Language" : "Hizkuntza", + "Storage location" : "Biltegiratze kokapena", + "User backend" : "Erabiltzaile jatorria", + "Last login" : "Azken saioa", + "Default language" : "Hizkuntza lehenetsia", + "Add a new user" : "Gehitu erabiltze berria", + "Default quota" : "Kuota lehenetsia", + "All languages" : "Hizkuntza guztiak", + "Your apps" : "Zure aplikazioak", + "Disabled apps" : "Gaitu gabeko aplikazioak", + "Updates" : "Eguneraketak", + "App bundles" : "Aplikazio sortak", + "New user" : "Erabiltzaile berria", + "Default quota:" : "Lehenetsitako kuota:", + "Show Languages" : "Erakutsi Hizkuntzak", + "Show last login" : "Azken izen ematea erakutsi", + "Show user backend" : "Bistaratu erabiltzaile motorra", + "Remove group" : "Ezabatu taldea", + "Admins" : "Administratzaileak", + "Everyone" : "Edonor", + "Add group" : "Taldea gehitu", + "App update" : "Aplikazioaren eguneraketa", + "Error: This app can not be enabled because it makes the server unstable" : "Errorea: aplikazioa hau ezin da gaitu zerbitzaria ezegonkor izatea egiten duelako", + "SSL Root Certificates" : "SSL Root Certificates", + "Common Name" : "Izen arrunta", + "Valid until" : "Data hau arte baliogarria", + "Issued By" : "Honek bidalita", + "Valid until %s" : "%s arte baliogarria", + "Import root certificate" : "Inportatu root ziurtagiria", + "Administrator documentation" : "Administratzaile dokumentazioa", + "Documentation" : "Dokumentazioa", + "Forum" : "Foroa", + "None" : "Ezer", + "Login" : "Saio hasiera", + "Plain" : "Arrunta", + "NT LAN Manager" : "NT LAN Manager", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "E-posta zerbitzaria", + "Open documentation" : "Ireki dokumentazioa", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Zerbitzaria epostak bidaltzeko gai izatea garrantzitsua da, pasahitzak berrezartzeko eta abisuentzako", + "Send mode" : "Bidaltzeko modua", + "Encryption" : "Enkriptazioa", + "From address" : "Helbidetik", + "mail" : "posta", + "Authentication method" : "Autentifikazio metodoa", + "Authentication required" : "Autentikazioa beharrezkoa", + "Server address" : "Zerbitzariaren helbidea", + "Port" : "Portua", + "Credentials" : "Kredentzialak", + "SMTP Username" : "SMTP erabiltzaile-izena", + "SMTP Password" : "SMTP pasahitza", + "Test email settings" : "Probatu eposta ezarpenak", + "Send email" : "Bidali eposta", + "Security & setup warnings" : "Segurtasun eta konfigurazio abisuak", + "All checks passed." : "Egiaztapen guztiak gaindituta.", + "Version" : "Bertsioa", + "Server-side encryption" : "Zerbitzariaren aldeko enkriptaketa", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Zerbitzari-aldeko enkriptazioak zerbitzarira igotzen diren fitxategiak enkriptatzeabaimentzen du. Honek eraginkortasuna jaitsi dezake, beraz gaitu beharrezkoa bada soilik. ", + "Enable server-side encryption" : "Gaitu zerbitzariaren aldeko enkriptaketa", + "Please read carefully before activating server-side encryption: " : "Mesedez, irakurri arretaz zerbitzariaren aldeko enkriptaketa gaitu aurretik:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met.", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases.", + "Be aware that encryption always increases the file size." : "Be aware that encryption always increases the file size.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data.", + "This is the final warning: Do you really want to enable encryption?" : "This is the final warning: Do you really want to enable encryption?", + "Enable encryption" : "Gaitu enkriptatzea", + "No encryption module loaded, please enable an encryption module in the app menu." : "Ez da enkriptazio modulurik kargatu, mesedez enkriptazio modulu bat gaitu app-en menuan. ", + "Select default encryption module:" : "Defektuzko enkriptazio modulua hautatu:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Enkriptazio gakoak enkriptazio sistema zaharretik (ownCloud <=8.0) sistema berrira migratu behar duzu. Gaitu mesedez \" Defektuzko enkriptazio modulua\" eta 'occ encryption:migrate' exekuta ezazu", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Enkriptazio gakoak sistema zaharretik (ownCloud <=8.0) berrira migratu behar duzu", + "Start migration" : "Migrazioa hasi", + "Background jobs" : "Atzeko planoko lanak", + "Last job ran %s." : "Azken lana %s itzuli zuen. ", + "Last job execution ran %s. Something seems wrong." : "Azken lanaren exekuzioak %s itzuli zuen. Zerbait gaizki joan da ", + "Background job didn’t run yet!" : "Atzeko planoko lana ez da martxan jarri oraindik!", + "Execute one task with each page loaded" : "Exekutatu zeregin bat orri karga bakoitzean", + "The cron.php needs to be executed by the system user \"%s\"." : "Sistemako \"%s\" erabiltzaileak, cron.php exekutatu behar du.", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Hau exekutatzeko PHP POSIX luzapena behar duzu. {linkstart}PHP dokumentazioa{linkend} ikusi informazio gehiagorako", + "Sharing" : "Partekatzea", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Admin bezala partekatze portaerak zehazki konfigura daitezke. Dokumentazioaikusi informazio gehiagorako. ", + "Allow apps to use the Share API" : "Baimendu aplikazioak partekatzeko APIa erabiltzeko", + "Allow users to share via link" : "Baimendu erabiltzaileak esteken bidez partekatzea", + "Allow public uploads" : "Baimendu igoera publikoak", + "Always ask for a password" : "Beti eskatu pasahitza", + "Enforce password protection" : "Betearazi pasahitzaren babesa", + "Set default expiration date" : "Ezarri iraungitze-data lehenetsia", + "Expire after " : "Iraungia honen ondoren", + "days" : "egun", + "Enforce expiration date" : "Betearazi iraungitze-data", + "Allow resharing" : "Baimendu birpartekatzea", + "Allow sharing with groups" : "Onartu taldeekin partekatzen", + "Restrict users to only share with users in their groups" : "Mugatu partekatzeak taldeko erabiltzaileetara", + "Exclude groups from sharing" : "Baztertu taldeak partekatzean", + "These groups will still be able to receive shares, but not to initiate them." : "Talde hauek oraindik jaso ahal izango dute partekatzeak, baina ezingo dute partekatu", + "Personal" : "Pertsonala", + "Administration" : "Administrazioa", + "Like our Facebook page" : "Gure Facebook orrian Like egin", + "Follow us on Twitter" : "Jarrai gaitzazu Twitterren", + "Follow us on Mastodon" : "Jarraitu gaitzazu Mastodon-en", + "Check out our blog" : "Gure bloga kontsultatu", + "Subscribe to our newsletter" : "Izena eman gure buletinean", + "Profile picture" : "Zure irudia", + "Upload new" : "Igo berria", + "Select from Files" : "Aukeratu fitxategien artean", + "Remove image" : "Kendu irudia", + "png or jpg, max. 20 MB" : "png edo jpg, gehienez 20MB", + "Picture provided by original account" : "Irudia jatorrizko kontutik hartuta", + "Cancel" : "Ezeztatu", + "Choose as profile picture" : "Aukeratu profil irudi gisa", + "Details" : "Xehetasunak", + "Full name" : "Izen osoa", + "No display name set" : "Ez da bistaratze izena ezarri", + "Your email address" : "Zure e-posta", + "No email address set" : "Ez da eposta helbidea ezarri", + "For password reset and notifications" : "Pasahitza berrezartzeko eta jakinarazpenerako", + "Phone number" : "Telefono zenbakia", + "Your phone number" : "Zure telefono zenbakia", + "Address" : "Helbidea", + "Your postal address" : "Zure helbidea", + "Website" : "Webgunea", + "It can take up to 24 hours before the account is displayed as verified." : "24 ordu pasa daitezke kontua ziurtatua bezala agertu baino lehen", + "Link https://…" : "https://... esteka", + "Twitter" : "Twitter", + "Twitter handle @…" : "Twitter heldulekua @...", + "Help translate" : "Lagundu itzultzen", + "Current password" : "Uneko pasahitza", + "Change password" : "Aldatu pasahitza", + "Press ⌘-C to copy." : "Sakatu ⌘-C kopiatzeko.", + "Press Ctrl-C to copy." : "Sakatu Ctrl-C kopiatzeko.", + "Store credentials" : "Gorde kredentzialak", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php webcrom zerbitzu bezala erregistratua dago, cron.php 15 minuturo HTTP bidez deitu ahal izateko.", + "Use system cron service to call the cron.php file every 15 minutes." : "Sistemaren cron zerbitzua erabili cron.php 15 minuturo deitzeko." +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} \ No newline at end of file diff --git a/apps/settings/l10n/fi.js b/apps/settings/l10n/fi.js new file mode 100644 index 00000000000..ec69c478900 --- /dev/null +++ b/apps/settings/l10n/fi.js @@ -0,0 +1,353 @@ +OC.L10N.register( + "settings", + { + "{actor} added you to group {group}" : "{actor} lisäsi sinut ryhmään {group}", + "You added {user} to group {group}" : "Lisäsit käyttäjän {user} ryhmään {group}", + "{actor} added {user} to group {group}" : "{actor} lisäsi käyttäjän {user} ryhmään {group}", + "An administrator added you to group {group}" : "Ylläpitäjä lisäsi sinut ryhmään {group}", + "An administrator added {user} to group {group}" : "Ylläpitäjä lisäsi käyttäjän {user} ryhmään {group}", + "{actor} removed you from group {group}" : "{actor} poisti sinut ryhmästä {group}", + "You removed {user} from group {group}" : "Poistit käyttäjän {user} ryhmästä {group}", + "{actor} removed {user} from group {group}" : "{actor} poisti käyttäjän {user} ryhmästä {group}", + "An administrator removed you from group {group}" : "Ylläpitäjä poisti sinut ryhmästä {group}", + "An administrator removed {user} from group {group}" : "Ylläpitäjä poisti käyttäjän {user} ryhmästä {group}", + "Your <strong>group memberships</strong> were modified" : "Sinun <strong>ryhmäjäsenyyksiä</strong> muokattiin", + "{actor} changed your password" : "{actor} muutti salasanasi", + "You changed your password" : "Muutit salasanasi", + "Your password was reset by an administrator" : "Ylläpitäjä nollasi salasanasi", + "{actor} changed your email address" : "{actor} muutti sähköpostiosoitteesi", + "You changed your email address" : "Muutit sähköpostiosoitteesi", + "Your email address was changed by an administrator" : "Ylläpitäjä muutti sähköpostiosoitteesi", + "You created app password \"{token}\"" : "Loit sovellussalasanan \"{token}\"", + "You deleted app password \"{token}\"" : "Poistit sovellussalasanan \"{token}\"", + "Security" : "Turvallisuus", + "You successfully logged in using two-factor authentication (%1$s)" : "Kirjauduit onnistuneesti sisään kaksivaiheista tunnistautumista käyttäen (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Kirjautumisyritys kaksivaiheista tunnistautumista käyttäen epäonnistui (%1$s)", + "Remote wipe was started on %1$s" : "Etätyhjennys aloitettiin %1$s", + "Remote wipe has finished on %1$s" : "Etätyhjennys valmistui %1$s", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "<strong>Salasanaasi</strong> tai <strong>sähköpostiosoitettasi</strong> muokattiin", + "Couldn't remove app." : "Sovelluksen poistaminen epäonnistui.", + "Couldn't update app." : "Sovelluksen päivitys epäonnistui.", + "Wrong password" : "Väärä salasana", + "Saved" : "Tallennettu", + "No user supplied" : "Käyttäjää ei määritetty", + "Unable to change password" : "Salasanan vaihto ei onnistunut", + "Authentication error" : "Tunnistautumisvirhe", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Anna ylläpitäjän palautussalasana; muuten kaikki käyttäjien data menetetään.", + "Wrong admin recovery password. Please check the password and try again." : "Väärä ylläpitäjän salasana. Tarkista salasana ja yritä uudelleen.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Taustaosa ei tue salasanan vaihtamista, mutta käyttäjän salausavain päivitettiin.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Sovellusten asennus tai päivitys sovelluskaupasta tai federoidusta pilvijaosta", + "Federated Cloud Sharing" : "Federoitu pilvijakaminen", + "Invalid SMTP password." : "Virheellinen SMTP-salasana.", + "Email setting test" : "Sähköpostiasetusten testaus", + "Well done, %s!" : "Hyvin tehty, %s!", + "If you received this email, the email configuration seems to be correct." : "Jos vastaanotit tämän viestin, sähköpostimääritykset vaikuttavat olevan kunnossa.", + "Email could not be sent. Check your mail server log" : "Sähköpostia ei voitu lähettää. Tarkista sähköpostipalvelimen lokitiedosto", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Sähköpostia lähettäessä tapahtui virhe. Tarkista asetukset. (Virhe: %s)", + "You need to set your user email before being able to send test emails." : "Aseta sähköpostiosoite, jotta voit testata sähköpostin toimivuutta.", + "Invalid mail address" : "Virheellinen sähköpostiosoite", + "Settings saved" : "Asetukset tallennettu", + "Unable to change full name" : "Koko nimen muuttaminen epäonnistui", + "Unable to change email address" : "Sähköpostiosoitteen vaihtaminen ei onnistunut", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Jotta Twitter-tilisi on mahdollista vahvistaa, twiittaa seuraava viesti (varmista että lähetät viestin sellaisenaan ilman rivivaihtoja):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Jotta verkkosivustosi on mahdollista vahvistaa, aseta seuraava sisältö verkkosivustosi juureen '.well-known/CloudIdVerificationCode.txt' (varmista että koko teksti on yhdellä rivillä):", + "Your password on %s was changed." : "Salasanasi osoitteessa %s on muutettu.", + "Your password on %s was reset by an administrator." : "Ylläpitäjä muutti salasanasi osoitteessa %s.", + "Password for %1$s changed on %2$s" : "Salasana käyttäjälle %1$s muutettu osoitteessa %2$s", + "Password changed for %s" : "Salasana muutettu käyttäjälle %s", + "If you did not request this, please contact an administrator." : "Jos et pyytänyt tätä, ota yhteyttä ylläpitäjään.", + "Your email address on %s was changed." : "Sähköpostiosoitteesi osoitteessa %s on muutettu.", + "Your email address on %s was changed by an administrator." : "Ylläpitäjä muutti sähköpostiosoitteesi osoitteessa %s.", + "Email address for %1$s changed on %2$s" : "Sähköpostiosoite käyttäjälle %1$s muutettu osoitteessa %2$s", + "Email address changed for %s" : "Sähköpostiosoite muutettu käyttäjälle %s", + "The new email address is %s" : "Uusi sähköpostiosoite on %s", + "Your %s account was created" : "%s-tilisi luotiin", + "Welcome aboard" : "Tervetuloa mukaan", + "Welcome aboard %s" : "Tervetuloa mukaan %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Tervetuloa %s-tilillesi. Voit lisätä, suojata ja jakaa tietojasi.", + "Your username is: %s" : "Käyttäjätunnuksesi on: %s", + "Set your password" : "Aseta salasanasi", + "Go to %s" : "Siirry %s-palveluun", + "Install Client" : "Asenna sovellus", + "Create" : "Luo", + "Change" : "Muuta", + "Delete" : "Poista", + "Share" : "Jaa", + "Unlimited" : "Rajoittamaton", + "Verifying …" : "Vahvistetaan…", + "Verify" : "Vahvista", + "Migration in progress. Please wait until the migration is finished" : "Migraatio on kesken. Odota kunnes migraatio valmistuu", + "Migration started …" : "Migraatio käynnistyi…", + "Not saved" : "Ei tallennettu", + "Sending…" : "Lähetetään…", + "Email sent" : "Sähköposti lähetetty", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Tapahtu virhe. Lähetä ASCII-koodattu PEM-varmenne.", + "Valid until {date}" : "Kelvollinen {date} asti", + "Local" : "Paikallinen", + "Private" : "Yksityinen", + "Only visible to local users" : "Näkyvillä vain paikallisille käyttäjille", + "Only visible to you" : "Näkyvillä vain sinulle", + "Contacts" : "Yhteystiedot", + "Visible to local users and to trusted servers" : "Näkyvillä vain paikallisille käyttäjille ja luotetuille palvelimille", + "Public" : "Julkinen", + "Will be synced to a global and public address book" : "Synkronoidaan maailmanlaajuiseen ja julkiseen osoitekirjaan", + "Very weak password" : "Erittäin heikko salasana", + "Weak password" : "Heikko salasana", + "So-so password" : "Kohtalainen salasana", + "Good password" : "Hyvä salasana", + "Strong password" : "Vahva salasana", + "An error occurred while changing your language. Please reload the page and try again." : "Kieltä vaihtaessa tapahtui virhe. Päivitä sivu ja yritä uudelleen.", + "An error occurred while changing your locale. Please reload the page and try again." : "Maa-asetustoa vaihtaessa tapahtui virhe. Päivitä sivu ja yritä uudelleen.", + "Select a profile picture" : "Valitse profiilikuva", + "Week starts on {fdow}" : "Viikon ensimmäinen päivä on {fdow}", + "Groups" : "Ryhmät", + "Group list is empty" : "Ryhmälista on tyhjä", + "Unable to retrieve the group list" : "Ryhmälistaa ei voitu noutaa", + "Enforce two-factor authentication" : "Pakota kaksivaiheinen tunnistautuminen", + "Limit to groups" : "Rajoita ryhmiin", + "Enforcement of two-factor authentication can be set for certain groups only." : "Kaksivaiheisen tunnistautumisen pakottaminen on mahdollista kohdentaa vain tietyille ryhmille.", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "Kaksivaiheisen tunnistautuminen on pakotettu kaikille\tseuraavien ryhmien jäsenille.", + "Enforced groups" : "Pakotetut ryhmät", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "Kaksivaiheinen tunnistautuminen ei ole pakotettu\tseuraavien ryhmien jäsenille.", + "Save changes" : "Tallenna muutokset", + "Marked for remote wipe" : "Merkitty etätyhjennettäväksi", + "Device settings" : "Laiteasetukset", + "Allow filesystem access" : "Salli pääsy tiedostojärjestelmään", + "Rename" : "Nimeä uudelleen", + "Revoke" : "Peru oikeus", + "Wipe device" : "Tyhjennä laite", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome Android-laitteelle", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Nextcloudin iOS-sovellus", + "Nextcloud Android app" : "Nextcloudin Android-sovellus", + "Nextcloud Talk for iOS" : "Nextcloud Talk iOS:ille", + "Nextcloud Talk for Android" : "Nextcloud Talk Androidille", + "Sync client - {os}" : "Synkronointisovellus - {os}", + "This session" : "Tämä istunto", + "Device" : "Laite", + "Last activity" : "Viimeksi käytetty", + "Devices & sessions" : "Laitteet ja istunnot", + "Web, desktop and mobile clients currently logged in to your account." : "Verkko-, työpöytä- ja mobiililaitteet, jotka ovat parhaillaan kirjautuneet tilillesi.", + "Do you really want to wipe your data from this device?" : "Haluatko varmasit tyhjentää tiedot tältä laitteelta?", + "Confirm wipe" : "Vahvista tyhjentäminen", + "App name" : "Sovelluksen nimi", + "Create new app password" : "Luo uusi sovellussalasana", + "Use the credentials below to configure your app or device." : "Käytä oheista tunnusta ja salasanaa konfiguroidessasi sovelluksen tai laitteen.", + "For security reasons this password will only be shown once." : "Turvallisuussyistä tämä salasana näytetään vain kerran.", + "Username" : "Käyttäjätunnus", + "Password" : "Salasana", + "Done" : "Valmis", + "Show QR code for mobile apps" : "Näytä QR-koodi mobiilisovelluksia varten", + "Copied!" : "Kopioitu!", + "Copy" : "Kopioi", + "This app is supported via your current Nextcloud subscription." : "Tämä sovellus on tuettu nykyisen Nextcloud-tilauksesi kautta.", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Viralliset sovellukset ovat yhteisössä kehitettyjä. Ne tarjoavat keskeistä toiminnallisuutta ja ovat valmiita tuotantokäyttöön.", + "Official" : "Virallinen", + "Update to {version}" : "Päivitä versioon {version}", + "Remove" : "Poista", + "Disable" : "Poista käytöstä", + "All" : "Kaikki", + "Limit app usage to groups" : "Rajoita sovelluskäyttö ryhmiin", + "No results" : "Ei tuloksia", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Tämä sovellus ei ole määritellyt minimi Nextcloud-versiota. Tämä tulee olemaan ongelma tulevaisuudessa.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Tämä sovellus ei ole määritellyt maksimi Nextcloud-versiota. Tämä tulee olemaan ongelma tulevaisuudessa.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Tätä sovellusta ei voi asentaa, koska seuraavat riippuvuudet eivät täyty:", + "View in store" : "Näytä kaupassa", + "Visit website" : "Käy verkkosivustolla", + "Report a bug" : "Ilmoita viasta", + "User documentation" : "Käyttäjädokumentaatio", + "Admin documentation" : "Ylläpitäjän ohjeistus", + "Developer documentation" : "Kehittäjädokumentaatio", + "Update to {update}" : "Päivitä versioon {update}", + "Results from other categories" : "Tulokset muista luokista", + "No apps found for your version" : "Sovelluksia ei löytynyt versiollesi", + "Disable all" : "Poista kaikki käytöstä", + "Enable all" : "Ota kaikki käyttöön", + "Download and enable" : "Lataa ja ota käyttöön", + "Enable" : "Käytä", + "The app will be downloaded from the app store" : "Sovellus ladataan sovelluskaupasta", + "You do not have permissions to see the details of this user" : "Käyttöoikeutesi eivät riitä tämän käyttäjän tietojen näkemiseen", + "New password" : "Uusi salasana", + "Add user in group" : "Lisää käyttäjä ryhmään", + "Select user quota" : "Valitse käyttäjäkiintiö", + "No language set" : "Kieltä ei ole asetettu", + "Never" : "Ei koskaan", + "Delete user" : "Poista käyttäjä", + "Wipe all devices" : "Tyhjennä kaikki laitteet", + "Disable user" : "Poista käytöstä käyttäjä", + "Enable user" : "Ota käyttäjä käyttöön", + "Resend welcome email" : "Lähetä uudelleen tervetuloviesti", + "{size} used" : "{size} käytetty", + "Welcome mail sent!" : "Tervetuloviesti lähetetty!", + "Display name" : "Näyttönimi", + "Email" : "Sähköpostiosoite", + "Group admin for" : "Ryhmäylläpitäjä ryhmille", + "Quota" : "Kiintiö", + "Language" : "Kieli", + "Storage location" : "Tallennustilan sijainti", + "User backend" : "Käyttäjätaustaosa", + "Last login" : "Viimeisin kirjautuminen", + "Default language" : "Oletuskieli", + "Add a new user" : "Lisää uusi käyttäjä", + "No users in here" : "Täällä ei ole käyttäjiä", + "Default quota" : "Oletuskiintiö", + "Common languages" : "Yleiset kielet", + "All languages" : "Kaikki kielet", + "Your apps" : "Sovelluksesi", + "Active apps" : "Aktiiviset sovellukset", + "Disabled apps" : "Käytöstä poistetut sovellukset", + "Updates" : "Päivitykset", + "App bundles" : "Sovelluskokoelmat", + "{license}-licensed" : "{license}-lisensoitu", + "New user" : "Uusi käyttäjä", + "Default quota:" : "Oletuskiintiö:", + "Select default quota" : "Valitse oletuskiintiö", + "Show Languages" : "Näytä kielet", + "Show last login" : "Näytä viimeisin sisäänkirjautuminen", + "Show user backend" : "Näytä käyttäjätaustaosa", + "Show storage path" : "Näytä tallennustilan polku", + "You are about to remove the group {group}. The users will NOT be deleted." : "Olet aikeissa poistaa ryhmän {group}. Käyttäjiä EI poisteta!", + "Please confirm the group removal " : "Vahvista ryhmän poistaminen", + "Remove group" : "Poista ryhmä", + "Admins" : "Ylläpitäjät", + "Disabled users" : "Käytöstä poistetut käyttäjät", + "Everyone" : "Kaikki", + "Add group" : "Lisää ryhmä", + "An error occured during the request. Unable to proceed." : "Pyynnön aikana tapahtui virhe. Jatkaminen ei onnistu.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Sovellus on käytössä, mutta se tulee päivittää. Sinut ohjataan sovelluksen päivityssivulle viiden sekunnin kuluttua.", + "App update" : "Sovelluspäivitys", + "Error: This app can not be enabled because it makes the server unstable" : "Virhe: tätä sovellusta ei voi ottaa käyttöön, koska se tekee palvelimesta epävakaan", + "SSL Root Certificates" : "SSL-juurivarmenteet", + "Common Name" : "Yleinen nimi", + "Valid until" : "Kelvollinen", + "Issued By" : " Myöntänyt", + "Valid until %s" : "Kelvollinen %s asti", + "Import root certificate" : "Tuo juurivarmenne", + "Administrator documentation" : "Ylläpidon dokumentaatio", + "Documentation" : "Dokumentaatio", + "Forum" : "Keskustelupalsta", + "None" : "Ei mitään", + "Login" : "Kirjaudu", + "Plain" : "Plain", + "NT LAN Manager" : "NT LAN Manager", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Sähköpostipalvelin", + "Open documentation" : "Avaa dokumentaatio", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "On tärkeää määrittää sähköpostipalvelinasetukset, jotta voidaan lähettää muun muassa salasanan palautus- ja ilmoitussähköpostiviestejä.", + "Send mode" : "Lähetystila", + "Encryption" : "Salaus", + "From address" : "Lähettäjän osoite", + "mail" : "posti", + "Authentication method" : "Tunnistautumistapa", + "Authentication required" : "Tunnistautuminen vaaditaan", + "Server address" : "Palvelimen osoite", + "Port" : "Portti", + "Credentials" : "Tilitiedot", + "SMTP Username" : "SMTP-käyttäjätunnus", + "SMTP Password" : "SMTP-salasana", + "Test email settings" : "Testaa sähköpostiasetukset", + "Send email" : "Lähetä sähköpostiviesti", + "Security & setup warnings" : "Turvallisuus- ja asetusvaroitukset", + "All checks passed." : "Läpäistiin kaikki tarkistukset.", + "There are some errors regarding your setup." : "Asetuksiin liittyen on muutamia virheitä.", + "There are some warnings regarding your setup." : "Asetuksiin liittyen on muutamia varoituksia.", + "Checking for system and security issues." : "Tarkistetaan mahdollisia järjestelmä- ja tietoturvaongelmia.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Lue tarkkaan <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">asennusohjeet ↗</a>, ja tarkista virheet sekä varoitukset <a href=\"%2$s\">lokista</a>.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Tarkista Nextcloudisi turvallisuus käyttäen <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">tietoturvakartoitustamme ↗</a>.", + "Version" : "Versio", + "Two-Factor Authentication" : "Kaksivaiheinen tunnistautuminen", + "Server-side encryption" : "Palvelinpään salaus", + "Enable server-side encryption" : "Käytä palvelinpään salausta", + "Please read carefully before activating server-side encryption: " : "Lue tarkasti, ennen kuin otat palvelinpään salauksen käyttöön:", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Salaus sellaisenaan ei takaa järjestelmäsi turvallisuutta. Tutustu dokumentaation saadaksesi lisätietoja, miten salaussovellus toimii ja nähdäksesi tuettuja käyttötapauksia.", + "Be aware that encryption always increases the file size." : "Ota huomioon, että salaus kasvattaa aina tiedostojen kokoa.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Säännöllisten varmuuskopioiden ottaminen on erittäin tärkeää. Jos olet ottanut salauksen käyttöön, huolehdi salausavainten varmuuskopioinnista.", + "This is the final warning: Do you really want to enable encryption?" : "Tämä on viimeinen varoitus: haluatko varmasti ottaa salauksen käyttöön?", + "Enable encryption" : "Käytä salausta", + "No encryption module loaded, please enable an encryption module in the app menu." : "Salausmoduulia ei ole käytössä. Ota salausmoduuli käyttöön sovellusvalikosta.", + "Select default encryption module:" : "Valitse oletuksena käytettävä salausmoduuli:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Sinun täytyy siirtää salausavaimet vanhasta salaustekniikasta (ownCloud <= 8.0) uuteen. Ota \"Default encryption module\" käyttöön ja suorita komento 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Sinun täytyy siirtää salausavaimet vanhasta salaustekniikasta (ownCloud <= 8.0) uuteen.", + "Start migration" : "Käynnistä migraatio", + "Background jobs" : "Taustatyöt", + "Last job ran %s." : "Viimeisin työ suoritettu %s.", + "Last job execution ran %s. Something seems wrong." : "Viimeisin cron-työn suoritus %s. Jokin vaikuttaa menneen pieleen.", + "Background job didn’t run yet!" : "Taustatyötä ei suoritettu vielä!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Optimaalisen suorituskyvyn vuoksi on tärkeää määrittää taustatyöt oikein. Suuria asennuksia varten 'Cron' on suositeltava asetus. Lisätietoja on saatavilla dokumentaatiossa.", + "Execute one task with each page loaded" : "Suorita yksi tehtävä jokaista ladattua sivua kohden", + "The cron.php needs to be executed by the system user \"%s\"." : "Tiedosto cron.php tulee suorittaa järjestelmän käyttäjänä \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Tämän suorittamiseksi tarvitset PHP:n POSIX-laajennuksen. Lue {linkstart}PHP:n dokumentaatio{linkend} saadaksesi lisätietoja.", + "Sharing" : "Jakaminen", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Ylläpitäjänä voit hienosäätää jakamista. Katso dokumentaatiosta lisätietoa.", + "Allow apps to use the Share API" : "Salli sovellusten käyttää jakamisen ohjelmointirajapintaa", + "Allow users to share via link" : "Salli käyttäjien jakaa linkkien kautta", + "Allow public uploads" : "Salli julkiset lähetykset", + "Always ask for a password" : "Kysy aina salasanaa", + "Enforce password protection" : "Pakota salasanasuojaus", + "Set default expiration date" : "Aseta oletusvanhenemispäivä", + "Expire after " : "Vanhenna", + "days" : "päivän jälkeen", + "Enforce expiration date" : "Pakota vanhenemispäivä", + "Allow resharing" : "Salli uudelleenjakaminen", + "Allow sharing with groups" : "Salli jakaminen ryhmien kanssa", + "Restrict users to only share with users in their groups" : "Salli käyttäjien jakaa vain omassa ryhmässä olevien henkilöiden kesken", + "Exclude groups from sharing" : "Kiellä ryhmiä jakamasta", + "These groups will still be able to receive shares, but not to initiate them." : "Nämä ryhmät kykenevät vastaanottamaan jakoja, mutta eivät kuitenkaan itse pysty luoda jakoja.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Salli käyttäjätunnusten automaattinen täydentäminen jakoikkunassa. Jos tämä asetus on pois käytöstä, tulee käyttäjän kirjoittaa käyttäjätunnus tai sähköpostiosoite kokonaan.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Näytä vastuuvapauslauseke julkisen linkin lähetyssivulla. (Näytetään vain, kun tiedostolista on piilotettu.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Tämä teksti näytetään julkisen linkin lähetyssivulla, kun tiedostolista on piilotettu.", + "Default share permissions" : "Oletusjako-oikeudet", + "Personal" : "Henkilökohtainen", + "Administration" : "Ylläpito", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Kehityksestä on vastannut {communityopen}Nextcloud-yhteisö{linkclose}, {githubopen}lähdekoodi{linkclose} on {licenseopen}AGPL-lisensoitu{linkclose}.", + "Like our Facebook page" : "Tykkää Facebook-sivustamme", + "Follow us on Twitter" : "Seuraa Twitteriä", + "Follow us on Mastodon" : "Seuraa meitä Mastodonissa", + "Check out our blog" : "Lue blogia", + "Subscribe to our newsletter" : "Tilaa uutiskirje", + "Profile picture" : "Profiilikuva", + "Upload new" : "Lähetä uusi", + "Select from Files" : "Valitse tiedostosovelluksesta", + "Remove image" : "Poista kuva", + "png or jpg, max. 20 MB" : "png tai jpg, korkeintaan 20 Mt", + "Picture provided by original account" : "Kuvan tarjoaa alkuperäinen tili", + "Cancel" : "Peru", + "Choose as profile picture" : "Valitse profiilikuvaksi", + "Details" : "Yksityiskohdat", + "You are a member of the following groups:" : "Olet seuraavien ryhmien jäsen:", + "You are using <strong>%s</strong>" : "Käytössäsi on <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Käytössäsi on <strong>%1$s</strong> / <strong>%2$s</strong> (<strong>%3$s %%</strong>)", + "Full name" : "Koko nimi", + "No display name set" : "Näyttönimeä ei ole asetettu", + "Your email address" : "Sähköpostiosoitteesi", + "No email address set" : "Sähköpostiosoitetta ei ole asetettu", + "For password reset and notifications" : "Salasanan nollausta ja ilmoituksia varten", + "Phone number" : "Puhelinnumero", + "Your phone number" : "Puhelinnumerosi", + "Address" : "Osoite", + "Your postal address" : "Postiosoitteesi", + "Website" : "Verkkosivusto", + "It can take up to 24 hours before the account is displayed as verified." : "Saattaa kestää jopa 24 tuntia, ennen kuin tili näytetään vahvistettuna.", + "Link https://…" : "Linkki https://…", + "Twitter" : "Twitter", + "Twitter handle @…" : "Twitter-tunnus @…", + "Help translate" : "Auta kääntämisessä", + "Locale" : "Aluekohtainen asetus", + "Current password" : "Nykyinen salasana", + "Change password" : "Vaihda salasana", + "Use a second factor besides your password to increase security for your account." : "Käytä toista vaihetta salasanasi lisäksi parantaaksesi tilisi tietoturvaa.", + "Disconnect" : "Katkaise yhteys", + "Not supported!" : "Ei tuettu!", + "Press ⌘-C to copy." : "Paina ⌘-C kopioidaksesi.", + "Press Ctrl-C to copy." : "Paina Ctrl-C kopioidaksesi.", + "Store credentials" : "Säilytä tilitiedot", + "Use system cron service to call the cron.php file every 15 minutes." : "Käytä järjestelmän cron-palvelua kutsuaksesi cron.php-tiedostoa 15 minuutin välein." +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/fi.json b/apps/settings/l10n/fi.json new file mode 100644 index 00000000000..9d17ff652c6 --- /dev/null +++ b/apps/settings/l10n/fi.json @@ -0,0 +1,351 @@ +{ "translations": { + "{actor} added you to group {group}" : "{actor} lisäsi sinut ryhmään {group}", + "You added {user} to group {group}" : "Lisäsit käyttäjän {user} ryhmään {group}", + "{actor} added {user} to group {group}" : "{actor} lisäsi käyttäjän {user} ryhmään {group}", + "An administrator added you to group {group}" : "Ylläpitäjä lisäsi sinut ryhmään {group}", + "An administrator added {user} to group {group}" : "Ylläpitäjä lisäsi käyttäjän {user} ryhmään {group}", + "{actor} removed you from group {group}" : "{actor} poisti sinut ryhmästä {group}", + "You removed {user} from group {group}" : "Poistit käyttäjän {user} ryhmästä {group}", + "{actor} removed {user} from group {group}" : "{actor} poisti käyttäjän {user} ryhmästä {group}", + "An administrator removed you from group {group}" : "Ylläpitäjä poisti sinut ryhmästä {group}", + "An administrator removed {user} from group {group}" : "Ylläpitäjä poisti käyttäjän {user} ryhmästä {group}", + "Your <strong>group memberships</strong> were modified" : "Sinun <strong>ryhmäjäsenyyksiä</strong> muokattiin", + "{actor} changed your password" : "{actor} muutti salasanasi", + "You changed your password" : "Muutit salasanasi", + "Your password was reset by an administrator" : "Ylläpitäjä nollasi salasanasi", + "{actor} changed your email address" : "{actor} muutti sähköpostiosoitteesi", + "You changed your email address" : "Muutit sähköpostiosoitteesi", + "Your email address was changed by an administrator" : "Ylläpitäjä muutti sähköpostiosoitteesi", + "You created app password \"{token}\"" : "Loit sovellussalasanan \"{token}\"", + "You deleted app password \"{token}\"" : "Poistit sovellussalasanan \"{token}\"", + "Security" : "Turvallisuus", + "You successfully logged in using two-factor authentication (%1$s)" : "Kirjauduit onnistuneesti sisään kaksivaiheista tunnistautumista käyttäen (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Kirjautumisyritys kaksivaiheista tunnistautumista käyttäen epäonnistui (%1$s)", + "Remote wipe was started on %1$s" : "Etätyhjennys aloitettiin %1$s", + "Remote wipe has finished on %1$s" : "Etätyhjennys valmistui %1$s", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "<strong>Salasanaasi</strong> tai <strong>sähköpostiosoitettasi</strong> muokattiin", + "Couldn't remove app." : "Sovelluksen poistaminen epäonnistui.", + "Couldn't update app." : "Sovelluksen päivitys epäonnistui.", + "Wrong password" : "Väärä salasana", + "Saved" : "Tallennettu", + "No user supplied" : "Käyttäjää ei määritetty", + "Unable to change password" : "Salasanan vaihto ei onnistunut", + "Authentication error" : "Tunnistautumisvirhe", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Anna ylläpitäjän palautussalasana; muuten kaikki käyttäjien data menetetään.", + "Wrong admin recovery password. Please check the password and try again." : "Väärä ylläpitäjän salasana. Tarkista salasana ja yritä uudelleen.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Taustaosa ei tue salasanan vaihtamista, mutta käyttäjän salausavain päivitettiin.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Sovellusten asennus tai päivitys sovelluskaupasta tai federoidusta pilvijaosta", + "Federated Cloud Sharing" : "Federoitu pilvijakaminen", + "Invalid SMTP password." : "Virheellinen SMTP-salasana.", + "Email setting test" : "Sähköpostiasetusten testaus", + "Well done, %s!" : "Hyvin tehty, %s!", + "If you received this email, the email configuration seems to be correct." : "Jos vastaanotit tämän viestin, sähköpostimääritykset vaikuttavat olevan kunnossa.", + "Email could not be sent. Check your mail server log" : "Sähköpostia ei voitu lähettää. Tarkista sähköpostipalvelimen lokitiedosto", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Sähköpostia lähettäessä tapahtui virhe. Tarkista asetukset. (Virhe: %s)", + "You need to set your user email before being able to send test emails." : "Aseta sähköpostiosoite, jotta voit testata sähköpostin toimivuutta.", + "Invalid mail address" : "Virheellinen sähköpostiosoite", + "Settings saved" : "Asetukset tallennettu", + "Unable to change full name" : "Koko nimen muuttaminen epäonnistui", + "Unable to change email address" : "Sähköpostiosoitteen vaihtaminen ei onnistunut", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Jotta Twitter-tilisi on mahdollista vahvistaa, twiittaa seuraava viesti (varmista että lähetät viestin sellaisenaan ilman rivivaihtoja):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Jotta verkkosivustosi on mahdollista vahvistaa, aseta seuraava sisältö verkkosivustosi juureen '.well-known/CloudIdVerificationCode.txt' (varmista että koko teksti on yhdellä rivillä):", + "Your password on %s was changed." : "Salasanasi osoitteessa %s on muutettu.", + "Your password on %s was reset by an administrator." : "Ylläpitäjä muutti salasanasi osoitteessa %s.", + "Password for %1$s changed on %2$s" : "Salasana käyttäjälle %1$s muutettu osoitteessa %2$s", + "Password changed for %s" : "Salasana muutettu käyttäjälle %s", + "If you did not request this, please contact an administrator." : "Jos et pyytänyt tätä, ota yhteyttä ylläpitäjään.", + "Your email address on %s was changed." : "Sähköpostiosoitteesi osoitteessa %s on muutettu.", + "Your email address on %s was changed by an administrator." : "Ylläpitäjä muutti sähköpostiosoitteesi osoitteessa %s.", + "Email address for %1$s changed on %2$s" : "Sähköpostiosoite käyttäjälle %1$s muutettu osoitteessa %2$s", + "Email address changed for %s" : "Sähköpostiosoite muutettu käyttäjälle %s", + "The new email address is %s" : "Uusi sähköpostiosoite on %s", + "Your %s account was created" : "%s-tilisi luotiin", + "Welcome aboard" : "Tervetuloa mukaan", + "Welcome aboard %s" : "Tervetuloa mukaan %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Tervetuloa %s-tilillesi. Voit lisätä, suojata ja jakaa tietojasi.", + "Your username is: %s" : "Käyttäjätunnuksesi on: %s", + "Set your password" : "Aseta salasanasi", + "Go to %s" : "Siirry %s-palveluun", + "Install Client" : "Asenna sovellus", + "Create" : "Luo", + "Change" : "Muuta", + "Delete" : "Poista", + "Share" : "Jaa", + "Unlimited" : "Rajoittamaton", + "Verifying …" : "Vahvistetaan…", + "Verify" : "Vahvista", + "Migration in progress. Please wait until the migration is finished" : "Migraatio on kesken. Odota kunnes migraatio valmistuu", + "Migration started …" : "Migraatio käynnistyi…", + "Not saved" : "Ei tallennettu", + "Sending…" : "Lähetetään…", + "Email sent" : "Sähköposti lähetetty", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Tapahtu virhe. Lähetä ASCII-koodattu PEM-varmenne.", + "Valid until {date}" : "Kelvollinen {date} asti", + "Local" : "Paikallinen", + "Private" : "Yksityinen", + "Only visible to local users" : "Näkyvillä vain paikallisille käyttäjille", + "Only visible to you" : "Näkyvillä vain sinulle", + "Contacts" : "Yhteystiedot", + "Visible to local users and to trusted servers" : "Näkyvillä vain paikallisille käyttäjille ja luotetuille palvelimille", + "Public" : "Julkinen", + "Will be synced to a global and public address book" : "Synkronoidaan maailmanlaajuiseen ja julkiseen osoitekirjaan", + "Very weak password" : "Erittäin heikko salasana", + "Weak password" : "Heikko salasana", + "So-so password" : "Kohtalainen salasana", + "Good password" : "Hyvä salasana", + "Strong password" : "Vahva salasana", + "An error occurred while changing your language. Please reload the page and try again." : "Kieltä vaihtaessa tapahtui virhe. Päivitä sivu ja yritä uudelleen.", + "An error occurred while changing your locale. Please reload the page and try again." : "Maa-asetustoa vaihtaessa tapahtui virhe. Päivitä sivu ja yritä uudelleen.", + "Select a profile picture" : "Valitse profiilikuva", + "Week starts on {fdow}" : "Viikon ensimmäinen päivä on {fdow}", + "Groups" : "Ryhmät", + "Group list is empty" : "Ryhmälista on tyhjä", + "Unable to retrieve the group list" : "Ryhmälistaa ei voitu noutaa", + "Enforce two-factor authentication" : "Pakota kaksivaiheinen tunnistautuminen", + "Limit to groups" : "Rajoita ryhmiin", + "Enforcement of two-factor authentication can be set for certain groups only." : "Kaksivaiheisen tunnistautumisen pakottaminen on mahdollista kohdentaa vain tietyille ryhmille.", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "Kaksivaiheisen tunnistautuminen on pakotettu kaikille\tseuraavien ryhmien jäsenille.", + "Enforced groups" : "Pakotetut ryhmät", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "Kaksivaiheinen tunnistautuminen ei ole pakotettu\tseuraavien ryhmien jäsenille.", + "Save changes" : "Tallenna muutokset", + "Marked for remote wipe" : "Merkitty etätyhjennettäväksi", + "Device settings" : "Laiteasetukset", + "Allow filesystem access" : "Salli pääsy tiedostojärjestelmään", + "Rename" : "Nimeä uudelleen", + "Revoke" : "Peru oikeus", + "Wipe device" : "Tyhjennä laite", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome Android-laitteelle", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Nextcloudin iOS-sovellus", + "Nextcloud Android app" : "Nextcloudin Android-sovellus", + "Nextcloud Talk for iOS" : "Nextcloud Talk iOS:ille", + "Nextcloud Talk for Android" : "Nextcloud Talk Androidille", + "Sync client - {os}" : "Synkronointisovellus - {os}", + "This session" : "Tämä istunto", + "Device" : "Laite", + "Last activity" : "Viimeksi käytetty", + "Devices & sessions" : "Laitteet ja istunnot", + "Web, desktop and mobile clients currently logged in to your account." : "Verkko-, työpöytä- ja mobiililaitteet, jotka ovat parhaillaan kirjautuneet tilillesi.", + "Do you really want to wipe your data from this device?" : "Haluatko varmasit tyhjentää tiedot tältä laitteelta?", + "Confirm wipe" : "Vahvista tyhjentäminen", + "App name" : "Sovelluksen nimi", + "Create new app password" : "Luo uusi sovellussalasana", + "Use the credentials below to configure your app or device." : "Käytä oheista tunnusta ja salasanaa konfiguroidessasi sovelluksen tai laitteen.", + "For security reasons this password will only be shown once." : "Turvallisuussyistä tämä salasana näytetään vain kerran.", + "Username" : "Käyttäjätunnus", + "Password" : "Salasana", + "Done" : "Valmis", + "Show QR code for mobile apps" : "Näytä QR-koodi mobiilisovelluksia varten", + "Copied!" : "Kopioitu!", + "Copy" : "Kopioi", + "This app is supported via your current Nextcloud subscription." : "Tämä sovellus on tuettu nykyisen Nextcloud-tilauksesi kautta.", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Viralliset sovellukset ovat yhteisössä kehitettyjä. Ne tarjoavat keskeistä toiminnallisuutta ja ovat valmiita tuotantokäyttöön.", + "Official" : "Virallinen", + "Update to {version}" : "Päivitä versioon {version}", + "Remove" : "Poista", + "Disable" : "Poista käytöstä", + "All" : "Kaikki", + "Limit app usage to groups" : "Rajoita sovelluskäyttö ryhmiin", + "No results" : "Ei tuloksia", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Tämä sovellus ei ole määritellyt minimi Nextcloud-versiota. Tämä tulee olemaan ongelma tulevaisuudessa.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Tämä sovellus ei ole määritellyt maksimi Nextcloud-versiota. Tämä tulee olemaan ongelma tulevaisuudessa.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Tätä sovellusta ei voi asentaa, koska seuraavat riippuvuudet eivät täyty:", + "View in store" : "Näytä kaupassa", + "Visit website" : "Käy verkkosivustolla", + "Report a bug" : "Ilmoita viasta", + "User documentation" : "Käyttäjädokumentaatio", + "Admin documentation" : "Ylläpitäjän ohjeistus", + "Developer documentation" : "Kehittäjädokumentaatio", + "Update to {update}" : "Päivitä versioon {update}", + "Results from other categories" : "Tulokset muista luokista", + "No apps found for your version" : "Sovelluksia ei löytynyt versiollesi", + "Disable all" : "Poista kaikki käytöstä", + "Enable all" : "Ota kaikki käyttöön", + "Download and enable" : "Lataa ja ota käyttöön", + "Enable" : "Käytä", + "The app will be downloaded from the app store" : "Sovellus ladataan sovelluskaupasta", + "You do not have permissions to see the details of this user" : "Käyttöoikeutesi eivät riitä tämän käyttäjän tietojen näkemiseen", + "New password" : "Uusi salasana", + "Add user in group" : "Lisää käyttäjä ryhmään", + "Select user quota" : "Valitse käyttäjäkiintiö", + "No language set" : "Kieltä ei ole asetettu", + "Never" : "Ei koskaan", + "Delete user" : "Poista käyttäjä", + "Wipe all devices" : "Tyhjennä kaikki laitteet", + "Disable user" : "Poista käytöstä käyttäjä", + "Enable user" : "Ota käyttäjä käyttöön", + "Resend welcome email" : "Lähetä uudelleen tervetuloviesti", + "{size} used" : "{size} käytetty", + "Welcome mail sent!" : "Tervetuloviesti lähetetty!", + "Display name" : "Näyttönimi", + "Email" : "Sähköpostiosoite", + "Group admin for" : "Ryhmäylläpitäjä ryhmille", + "Quota" : "Kiintiö", + "Language" : "Kieli", + "Storage location" : "Tallennustilan sijainti", + "User backend" : "Käyttäjätaustaosa", + "Last login" : "Viimeisin kirjautuminen", + "Default language" : "Oletuskieli", + "Add a new user" : "Lisää uusi käyttäjä", + "No users in here" : "Täällä ei ole käyttäjiä", + "Default quota" : "Oletuskiintiö", + "Common languages" : "Yleiset kielet", + "All languages" : "Kaikki kielet", + "Your apps" : "Sovelluksesi", + "Active apps" : "Aktiiviset sovellukset", + "Disabled apps" : "Käytöstä poistetut sovellukset", + "Updates" : "Päivitykset", + "App bundles" : "Sovelluskokoelmat", + "{license}-licensed" : "{license}-lisensoitu", + "New user" : "Uusi käyttäjä", + "Default quota:" : "Oletuskiintiö:", + "Select default quota" : "Valitse oletuskiintiö", + "Show Languages" : "Näytä kielet", + "Show last login" : "Näytä viimeisin sisäänkirjautuminen", + "Show user backend" : "Näytä käyttäjätaustaosa", + "Show storage path" : "Näytä tallennustilan polku", + "You are about to remove the group {group}. The users will NOT be deleted." : "Olet aikeissa poistaa ryhmän {group}. Käyttäjiä EI poisteta!", + "Please confirm the group removal " : "Vahvista ryhmän poistaminen", + "Remove group" : "Poista ryhmä", + "Admins" : "Ylläpitäjät", + "Disabled users" : "Käytöstä poistetut käyttäjät", + "Everyone" : "Kaikki", + "Add group" : "Lisää ryhmä", + "An error occured during the request. Unable to proceed." : "Pyynnön aikana tapahtui virhe. Jatkaminen ei onnistu.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Sovellus on käytössä, mutta se tulee päivittää. Sinut ohjataan sovelluksen päivityssivulle viiden sekunnin kuluttua.", + "App update" : "Sovelluspäivitys", + "Error: This app can not be enabled because it makes the server unstable" : "Virhe: tätä sovellusta ei voi ottaa käyttöön, koska se tekee palvelimesta epävakaan", + "SSL Root Certificates" : "SSL-juurivarmenteet", + "Common Name" : "Yleinen nimi", + "Valid until" : "Kelvollinen", + "Issued By" : " Myöntänyt", + "Valid until %s" : "Kelvollinen %s asti", + "Import root certificate" : "Tuo juurivarmenne", + "Administrator documentation" : "Ylläpidon dokumentaatio", + "Documentation" : "Dokumentaatio", + "Forum" : "Keskustelupalsta", + "None" : "Ei mitään", + "Login" : "Kirjaudu", + "Plain" : "Plain", + "NT LAN Manager" : "NT LAN Manager", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Sähköpostipalvelin", + "Open documentation" : "Avaa dokumentaatio", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "On tärkeää määrittää sähköpostipalvelinasetukset, jotta voidaan lähettää muun muassa salasanan palautus- ja ilmoitussähköpostiviestejä.", + "Send mode" : "Lähetystila", + "Encryption" : "Salaus", + "From address" : "Lähettäjän osoite", + "mail" : "posti", + "Authentication method" : "Tunnistautumistapa", + "Authentication required" : "Tunnistautuminen vaaditaan", + "Server address" : "Palvelimen osoite", + "Port" : "Portti", + "Credentials" : "Tilitiedot", + "SMTP Username" : "SMTP-käyttäjätunnus", + "SMTP Password" : "SMTP-salasana", + "Test email settings" : "Testaa sähköpostiasetukset", + "Send email" : "Lähetä sähköpostiviesti", + "Security & setup warnings" : "Turvallisuus- ja asetusvaroitukset", + "All checks passed." : "Läpäistiin kaikki tarkistukset.", + "There are some errors regarding your setup." : "Asetuksiin liittyen on muutamia virheitä.", + "There are some warnings regarding your setup." : "Asetuksiin liittyen on muutamia varoituksia.", + "Checking for system and security issues." : "Tarkistetaan mahdollisia järjestelmä- ja tietoturvaongelmia.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Lue tarkkaan <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">asennusohjeet ↗</a>, ja tarkista virheet sekä varoitukset <a href=\"%2$s\">lokista</a>.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Tarkista Nextcloudisi turvallisuus käyttäen <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">tietoturvakartoitustamme ↗</a>.", + "Version" : "Versio", + "Two-Factor Authentication" : "Kaksivaiheinen tunnistautuminen", + "Server-side encryption" : "Palvelinpään salaus", + "Enable server-side encryption" : "Käytä palvelinpään salausta", + "Please read carefully before activating server-side encryption: " : "Lue tarkasti, ennen kuin otat palvelinpään salauksen käyttöön:", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Salaus sellaisenaan ei takaa järjestelmäsi turvallisuutta. Tutustu dokumentaation saadaksesi lisätietoja, miten salaussovellus toimii ja nähdäksesi tuettuja käyttötapauksia.", + "Be aware that encryption always increases the file size." : "Ota huomioon, että salaus kasvattaa aina tiedostojen kokoa.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Säännöllisten varmuuskopioiden ottaminen on erittäin tärkeää. Jos olet ottanut salauksen käyttöön, huolehdi salausavainten varmuuskopioinnista.", + "This is the final warning: Do you really want to enable encryption?" : "Tämä on viimeinen varoitus: haluatko varmasti ottaa salauksen käyttöön?", + "Enable encryption" : "Käytä salausta", + "No encryption module loaded, please enable an encryption module in the app menu." : "Salausmoduulia ei ole käytössä. Ota salausmoduuli käyttöön sovellusvalikosta.", + "Select default encryption module:" : "Valitse oletuksena käytettävä salausmoduuli:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Sinun täytyy siirtää salausavaimet vanhasta salaustekniikasta (ownCloud <= 8.0) uuteen. Ota \"Default encryption module\" käyttöön ja suorita komento 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Sinun täytyy siirtää salausavaimet vanhasta salaustekniikasta (ownCloud <= 8.0) uuteen.", + "Start migration" : "Käynnistä migraatio", + "Background jobs" : "Taustatyöt", + "Last job ran %s." : "Viimeisin työ suoritettu %s.", + "Last job execution ran %s. Something seems wrong." : "Viimeisin cron-työn suoritus %s. Jokin vaikuttaa menneen pieleen.", + "Background job didn’t run yet!" : "Taustatyötä ei suoritettu vielä!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Optimaalisen suorituskyvyn vuoksi on tärkeää määrittää taustatyöt oikein. Suuria asennuksia varten 'Cron' on suositeltava asetus. Lisätietoja on saatavilla dokumentaatiossa.", + "Execute one task with each page loaded" : "Suorita yksi tehtävä jokaista ladattua sivua kohden", + "The cron.php needs to be executed by the system user \"%s\"." : "Tiedosto cron.php tulee suorittaa järjestelmän käyttäjänä \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Tämän suorittamiseksi tarvitset PHP:n POSIX-laajennuksen. Lue {linkstart}PHP:n dokumentaatio{linkend} saadaksesi lisätietoja.", + "Sharing" : "Jakaminen", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Ylläpitäjänä voit hienosäätää jakamista. Katso dokumentaatiosta lisätietoa.", + "Allow apps to use the Share API" : "Salli sovellusten käyttää jakamisen ohjelmointirajapintaa", + "Allow users to share via link" : "Salli käyttäjien jakaa linkkien kautta", + "Allow public uploads" : "Salli julkiset lähetykset", + "Always ask for a password" : "Kysy aina salasanaa", + "Enforce password protection" : "Pakota salasanasuojaus", + "Set default expiration date" : "Aseta oletusvanhenemispäivä", + "Expire after " : "Vanhenna", + "days" : "päivän jälkeen", + "Enforce expiration date" : "Pakota vanhenemispäivä", + "Allow resharing" : "Salli uudelleenjakaminen", + "Allow sharing with groups" : "Salli jakaminen ryhmien kanssa", + "Restrict users to only share with users in their groups" : "Salli käyttäjien jakaa vain omassa ryhmässä olevien henkilöiden kesken", + "Exclude groups from sharing" : "Kiellä ryhmiä jakamasta", + "These groups will still be able to receive shares, but not to initiate them." : "Nämä ryhmät kykenevät vastaanottamaan jakoja, mutta eivät kuitenkaan itse pysty luoda jakoja.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Salli käyttäjätunnusten automaattinen täydentäminen jakoikkunassa. Jos tämä asetus on pois käytöstä, tulee käyttäjän kirjoittaa käyttäjätunnus tai sähköpostiosoite kokonaan.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Näytä vastuuvapauslauseke julkisen linkin lähetyssivulla. (Näytetään vain, kun tiedostolista on piilotettu.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Tämä teksti näytetään julkisen linkin lähetyssivulla, kun tiedostolista on piilotettu.", + "Default share permissions" : "Oletusjako-oikeudet", + "Personal" : "Henkilökohtainen", + "Administration" : "Ylläpito", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Kehityksestä on vastannut {communityopen}Nextcloud-yhteisö{linkclose}, {githubopen}lähdekoodi{linkclose} on {licenseopen}AGPL-lisensoitu{linkclose}.", + "Like our Facebook page" : "Tykkää Facebook-sivustamme", + "Follow us on Twitter" : "Seuraa Twitteriä", + "Follow us on Mastodon" : "Seuraa meitä Mastodonissa", + "Check out our blog" : "Lue blogia", + "Subscribe to our newsletter" : "Tilaa uutiskirje", + "Profile picture" : "Profiilikuva", + "Upload new" : "Lähetä uusi", + "Select from Files" : "Valitse tiedostosovelluksesta", + "Remove image" : "Poista kuva", + "png or jpg, max. 20 MB" : "png tai jpg, korkeintaan 20 Mt", + "Picture provided by original account" : "Kuvan tarjoaa alkuperäinen tili", + "Cancel" : "Peru", + "Choose as profile picture" : "Valitse profiilikuvaksi", + "Details" : "Yksityiskohdat", + "You are a member of the following groups:" : "Olet seuraavien ryhmien jäsen:", + "You are using <strong>%s</strong>" : "Käytössäsi on <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Käytössäsi on <strong>%1$s</strong> / <strong>%2$s</strong> (<strong>%3$s %%</strong>)", + "Full name" : "Koko nimi", + "No display name set" : "Näyttönimeä ei ole asetettu", + "Your email address" : "Sähköpostiosoitteesi", + "No email address set" : "Sähköpostiosoitetta ei ole asetettu", + "For password reset and notifications" : "Salasanan nollausta ja ilmoituksia varten", + "Phone number" : "Puhelinnumero", + "Your phone number" : "Puhelinnumerosi", + "Address" : "Osoite", + "Your postal address" : "Postiosoitteesi", + "Website" : "Verkkosivusto", + "It can take up to 24 hours before the account is displayed as verified." : "Saattaa kestää jopa 24 tuntia, ennen kuin tili näytetään vahvistettuna.", + "Link https://…" : "Linkki https://…", + "Twitter" : "Twitter", + "Twitter handle @…" : "Twitter-tunnus @…", + "Help translate" : "Auta kääntämisessä", + "Locale" : "Aluekohtainen asetus", + "Current password" : "Nykyinen salasana", + "Change password" : "Vaihda salasana", + "Use a second factor besides your password to increase security for your account." : "Käytä toista vaihetta salasanasi lisäksi parantaaksesi tilisi tietoturvaa.", + "Disconnect" : "Katkaise yhteys", + "Not supported!" : "Ei tuettu!", + "Press ⌘-C to copy." : "Paina ⌘-C kopioidaksesi.", + "Press Ctrl-C to copy." : "Paina Ctrl-C kopioidaksesi.", + "Store credentials" : "Säilytä tilitiedot", + "Use system cron service to call the cron.php file every 15 minutes." : "Käytä järjestelmän cron-palvelua kutsuaksesi cron.php-tiedostoa 15 minuutin välein." +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} \ No newline at end of file diff --git a/apps/settings/l10n/fr.js b/apps/settings/l10n/fr.js new file mode 100644 index 00000000000..36524b57823 --- /dev/null +++ b/apps/settings/l10n/fr.js @@ -0,0 +1,714 @@ +OC.L10N.register( + "settings", + { + "{actor} added you to group {group}" : "{actor} vous a ajouté au groupe {group}", + "You added {user} to group {group}" : "Vous avez ajouté {user} au groupe {group}", + "{actor} added {user} to group {group}" : "{actor} a ajouté {user} au groupe {group}", + "An administrator added you to group {group}" : "Un administrateur vous a ajouté au groupe {group}", + "An administrator added {user} to group {group}" : "Un administrateur a ajouté {user} au groupe {group}", + "{actor} removed you from group {group}" : "{actor} vous a retiré du groupe {group}", + "You removed {user} from group {group}" : "Vous avez retiré {user} du groupe {group}", + "{actor} removed {user} from group {group}" : "{actor} a retiré {user} du groupe {group}", + "An administrator removed you from group {group}" : "Un administrateur vous a retiré du groupe {group}", + "An administrator removed {user} from group {group}" : "Un administrateur a retiré {user} du groupe {group}", + "Your <strong>group memberships</strong> were modified" : "Vos <strong>adhésions aux groupes</strong> ont été modifiées", + "{actor} changed your password" : "{actor} a modifié votre mot de passe", + "You changed your password" : "Vous avez modifié votre mot de passe", + "Your password was reset by an administrator" : "Votre mot de passe a été réinitialisé par un administrateur", + "{actor} changed your email address" : "{actor} a modifié votre adresse e-mail", + "You changed your email address" : "Vous avez modifié votre adresse e-mail", + "Your email address was changed by an administrator" : "Votre adresse e-mail a été modifiée par un administrateur", + "You created app password \"{token}\"" : "Vous avez créé un mot de passe d'application \"{token}\"", + "You deleted app password \"{token}\"" : "Vous avez supprimé un mot de passe d'application \"{token}\"", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Vous avez renommé le mot de passe d'application \"{token}\" en \"{newToken}\" ", + "You granted filesystem access to app password \"{token}\"" : "Vous avez accordé au système de fichiers l'accès au mot de passe d'application \"{token}\".", + "You revoked filesystem access from app password \"{token}\"" : "Vous avez révoqué l'accès au système de fichiers à partir du mot de passe d'application \"{token}\".", + "Security" : "Sécurité", + "You successfully logged in using two-factor authentication (%1$s)" : "Vous avez réussi à vous connecter en utilisant l'authentification à deux facteurs (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Une tentative de connexion utilisant l'authentification à deux facteurs a échoué (%1$s)", + "Remote wipe was started on %1$s" : "Effaçage distant démarré pour%1$s", + "Remote wipe has finished on %1$s" : "Effaçage distant terminé pour %1$s", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Votre <strong>mot de passe</strong> ou <strong>adresse e-mail</strong> a été modifié", + "Couldn't remove app." : "Impossible de supprimer l'application.", + "Couldn't update app." : "Impossible de mettre à jour l'application", + "Wrong password" : "Mot de passe incorrect", + "Saved" : "Sauvegardé", + "No user supplied" : "Aucun utilisateur fourni", + "Unable to change password" : "Impossible de modifier le mot de passe", + "Authentication error" : "Erreur d'authentification", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Veuillez fournir un mot de passe administrateur de récupération de données, sinon toutes les données utilisateur seront perdues.", + "Wrong admin recovery password. Please check the password and try again." : "Mot de passe administrateur de récupération de données non valable. Veuillez vérifier le mot de passe et essayer à nouveau.", + "Backend doesn't support password change, but the user's encryption key was updated." : "L'infrastructure d'arrière-plan ne supporte pas la modification de mot de passe, mais la clef de chiffrement de l'utilisateur a été mise à jour.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "le partage Federated Cloud ou l'installation et la mise à jour d'applications par l'app store", + "Federated Cloud Sharing" : "Federated Cloud Sharing", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL utilise %1$s version (%2$s), qui est une version obsolète. Veuillez mettre à jour votre système d'exploitation, ou des fonctionnalités telles que %3$s ne fonctionneront pas correctement.", + "Invalid SMTP password." : "Mot de passe SMTP incorrect.", + "Email setting test" : "Test des paramètres e-mail", + "Well done, %s!" : "Bien joué, %s !", + "If you received this email, the email configuration seems to be correct." : "Si vous avez reçu cet e-mail, la configuration de l'adresse e-mail semble être correcte.", + "Email could not be sent. Check your mail server log" : "L'email n'a pu être envoyé. Vérifiez le journal du serveur de messagerie", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Une erreur est survenue lors de l'envoi de l'e-mail. Veuillez vérifier vos paramètres. (Erreur: %s)", + "You need to set your user email before being able to send test emails." : "Vous devez définir une adresse e-mail dans vos paramètres personnels avant de pouvoir envoyer des e-mails de test.", + "Invalid mail address" : "Adresse e-mail non valide", + "Settings saved" : "Paramètres sauvegardés", + "Unable to change full name" : "Impossible de modifier le nom complet", + "Unable to change email address" : "Impossible de modifier l'adresse e-mail", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Pour vérifier votre compte Twitter, postez le tweet suivant sur Twitter (veuillez vérifier de le poster sans saut de ligne) :", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Pour vérifier votre site web, placez le contenu suivant à la racine de votre site à '.well-known/CloudIdVerificationCode.txt' (veuillez vérifier que le texte complet est en une seule ligne) :", + "%1$s changed your password on %2$s." : "%1$s a modifié votre mot de passe sur %2$s.", + "Your password on %s was changed." : "Votre mot de passe sur %s a été modifié.", + "Your password on %s was reset by an administrator." : "Votre mot de passe sur %s a été réinitialisé par un administrateur.", + "Password for %1$s changed on %2$s" : "Mot de passe pour %1$s a été modifié sur %2$s", + "Password changed for %s" : "Mot de passe modifié pour %s", + "If you did not request this, please contact an administrator." : "Si vous n'aviez pas effectué cette demande, veuillez contacter un administrateur.", + "Your email address on %s was changed." : "Votre adresse e-mail sur %s a été modifiée.", + "Your email address on %s was changed by an administrator." : "Votre adresse e-mail sur %s a été modifiée par un administrateur.", + "Email address for %1$s changed on %2$s" : "Adresse e-mail pour %1$s a été modifiée sur %2$s", + "Email address changed for %s" : "Adresse e-mail a été modifiée pour %s", + "The new email address is %s" : "La nouvelle adresse e-mail est %s", + "Your %s account was created" : "Votre compte %s a été créé", + "Welcome aboard" : "Bienvenue à bord", + "Welcome aboard %s" : "Bienvenue à bord %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Bienvenue dans votre compte %s, vous pouvez ajouter, protéger et partager vos données.", + "Your username is: %s" : "Votre nom d'utilisateur est : %s", + "Set your password" : "Créer votre mot de passe", + "Go to %s" : "Aller à %s", + "Install Client" : "Installer le Client", + "Logged in user must be a subadmin" : "L'utilisateur connecté doit être un sous-administrateur", + "Create" : "Créer", + "Change" : "Modifier", + "Delete" : "Supprimer", + "Share" : "Partager", + "Unlimited" : "Illimité", + "Verifying" : "Vérification en cours", + "Verifying …" : "Vérification en cours...", + "Verify" : "Vérifier", + "Migration in progress. Please wait until the migration is finished" : "Migration en cours. Veuillez attendre que celle-ci se termine", + "Migration started …" : "Migration démarrée...", + "Not saved" : "Non sauvegardé", + "Sending…" : "Envoi en cours...", + "Email sent" : "E-mail envoyé", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Une erreur est survenue. Veuillez fournir un certificat PEM encodé au format ASCII.", + "Valid until {date}" : "Valide jusqu'au {date}", + "Local" : "Local", + "Private" : "Privé", + "Only visible to local users" : "Visible uniquement par les utilisateurs locaux", + "Only visible to you" : "Visible uniquement par vous", + "Contacts" : "Contacts", + "Visible to local users and to trusted servers" : "Visible par les utilisateurs locaux et les serveurs de confiance", + "Public" : "Publique", + "Will be synced to a global and public address book" : "Va être synchronisé dans un carnet d'adresse global et public", + "Very weak password" : "Mot de passe de très faible sécurité", + "Weak password" : "Mot de passe de faible sécurité", + "So-so password" : "Mot de passe de sécurité tout juste acceptable", + "Good password" : "Mot de passe de sécurité suffisante", + "Strong password" : "Mot de passe de forte sécurité", + "An error occurred while changing your language. Please reload the page and try again." : "Une erreur est survenue lors du changement de votre langue. Veuillez recharger la page et réessayer.", + "An error occurred while changing your locale. Please reload the page and try again." : "Une erreur est survenue lors du changement de vos paramètres régionaux. Veuillez recharger la page et réessayer.", + "Select a profile picture" : "Selectionnez une photo de profil ", + "Week starts on {fdow}" : "La semaine commence le {fdow}", + "Groups" : "Groupes", + "Group list is empty" : "La liste du groupe est vide", + "Unable to retrieve the group list" : "Impossible de récupérer la liste du groupe", + "Afrikaans (Namibia)" : "Afrikaans (Namibie)", + "Afrikaans (South Africa)" : "Afrikaans (Afrique du Sud)", + "Afrikaans" : "Afrikaans", + "Akan (Ghana)" : "Akan (Ghana)", + "Akan" : "Akan", + "Albanian (Albania)" : "Albanais (Albanie)", + "Albanian" : "Albanais", + "Amharic (Ethiopia)" : "Amharique (Éthiopie)", + "Amharic" : "Amharique", + "Arabic (Algeria)" : "Arabe (Algérie)", + "Arabic (Bahrain)" : "Arabe (Bahreïn)", + "Arabic (Egypt)" : "Arabe (Égypte)", + "Arabic (Iraq)" : "Arabe (Irak)", + "Arabic (Jordan)" : "Arabe (Jordanie)", + "Arabic (Kuwait)" : "Arabe (Koweït)", + "Arabic (Lebanon)" : "Arabe (Liban)", + "Arabic (Libya)" : "Arabe (Libye)", + "Arabic (Morocco)" : "Arabe (Maroc)", + "Arabic (Oman)" : "Arabe (Oman)", + "Arabic (Qatar)" : "Arabe (Qatar)", + "Arabic (Saudi Arabia)" : "Arabe (Arabie Saoudite)", + "Arabic (Sudan)" : "Arabe (Soudan)", + "Arabic (Syria)" : "Arabe (Syrie)", + "Arabic (Tunisia)" : "Arabe (Tunisie)", + "Arabic (United Arab Emirates)" : "Arabe (Émirats Arabes Unis)", + "Arabic (Yemen)" : "Arabe (Yémen)", + "Arabic" : "Arabe", + "Armenian (Armenia)" : "Arménien (Arménie)", + "Armenian" : "Arménien", + "Assamese (India)" : "Assamais (Inde)", + "Assamese" : "Assamais", + "Asu (Tanzania)" : "Asu (Tanzanie)", + "Asu" : "Asu", + "Azerbaijani (Cyrillic)" : "Azerbaïdjanais (Cyrillique)", + "Azerbaijani (Cyrillic, Azerbaijan)" : "Azerbaïdjanais (Cyrillique, Azerbaïdjan)", + "Azerbaijani (Latin)" : "Azerbaïdjanais (Latin)", + "Azerbaijani (Latin, Azerbaijan)" : "Azerbaïdjanais (Latin, Azerbaïdjan)", + "Azerbaijani" : "Azerbaïdjanais", + "Bambara (Mali)" : "Bambara (Mali)", + "Bambara" : "Bambara", + "Basque (Spain)" : "Basque (Espagne)", + "Basque" : "Basque", + "Belarusian (Belarus)" : "Biélorusse (Biélorussie)", + "Belarusian" : "Biélorusse", + "Bemba (Zambia)" : "Bemba (Zambie)", + "Bemba" : "Bemba", + "Bena (Tanzania)" : "Bena (Tanzanie)", + "Bena" : "Bena", + "Bengali (Bangladesh)" : "Bengali (Bangladesh)", + "Bengali (India)" : "Bengali (Inde)", + "Bengali" : "Bengali", + "Bosnian (Bosnia and Herzegovina)" : "Bosniaque (Bosnie-Herzégovine)", + "Bosnian" : "Bosnien", + "Bulgarian (Bulgaria)" : "Bulgare (Bulgarie)", + "Bulgarian" : "Bulgare", + "Burmese (Myanmar [Burma])" : "Birman (Myanmar[Birmanie])", + "Burmese" : "Birman", + "Catalan (Spain)" : "Catalan (Espagne)", + "Catalan" : "Catalan", + "Central Morocco Tamazight (Latin)" : "Tamazight du Maroc central (Latin)", + "Central Morocco Tamazight (Latin, Morocco)" : "Tamazight du Maroc central (Latin, Maroc)", + "Central Morocco Tamazight" : "Tamazight du Maroc central", + "Cherokee (United States)" : "Cherokee (États-Unis)", + "Cherokee" : "Cherokee", + "Chiga (Uganda)" : "Kiga (Ouganda)", + "Chiga" : "Kiga", + "Chinese (Simplified Han)" : "Chinois (Han simplifié)", + "Chinese (Simplified Han, China)" : "Chinois (Han simplifié, Chine)", + "Chinese (Simplified Han, Hong Kong SAR China)" : "Chinois (Han simplifié, SAR chinoise de Hong Kong)", + "Chinese (Simplified Han, Macau SAR China)" : "Chinois (Han simplifié, SAR de Macao Chine)", + "Chinese (Simplified Han, Singapore)" : "Chinois (Han simplifié, Singapour)", + "Chinese (Traditional Han)" : "Chinois (Han traditionnel)", + "Chinese (Traditional Han, Hong Kong SAR China)" : "Chinois (Han traditionnel, RAS chinoise de Hong Kong)", + "Chinese (Traditional Han, Macau SAR China)" : "Chinois (Han traditionnel, RAS chinoise de Macao)", + "Chinese (Traditional Han, Taiwan)" : "Chinois (Han traditionnel, Taïwan)", + "Chinese" : "Chinois", + "Cornish (United Kingdom)" : "Cornique (Royaume-Uni)", + "Cornish" : "Cornique", + "Croatian (Croatia)" : "Croate (Croatie)", + "Croatian" : "Croate", + "Czech (Czech Republic)" : "Tchèque (République Tchèque)", + "Czech" : "Tchèque", + "Danish (Denmark)" : "Danois (Danemark)", + "Danish" : "Danois", + "Dutch (Belgium)" : "Néerlandais (Belgique)", + "Dutch (Netherlands)" : "Néerlandais (Pays-Bas)", + "Dutch" : "Néerlandais", + "Embu (Kenya)" : "Embu (Kenya)", + "Embu" : "Embu", + "English (American Samoa)" : "Anglais (Samoa américaines)", + "English (Australia)" : "Anglais (Australie)", + "English (Belgium)" : "Anglais (Belgique)", + "English (Belize)" : "Anglais (Bélize)", + "English (Botswana)" : "Anglais (Botswana)", + "English (Canada)" : "Anglais (Canada)", + "English (Guam)" : "Anglais (Guam)", + "English (Hong Kong SAR China)" : "Anglais (Hong Kong SAR Chine)", + "English (India)" : "Anglais (Inde)", + "English (Ireland)" : "Anglais (Irlande)", + "English (Jamaica)" : "Anglais (Jamaïque)", + "English (Malta)" : "Anglais (Malte)", + "English (Marshall Islands)" : "Anglais (Îles Marshall)", + "English (Mauritius)" : "Anglais (Îles Maurice)", + "English (Namibia)" : "Anglais (Namibie)", + "English (New Zealand)" : "Anglais (Nouvelle-Zélande)", + "English (Northern Mariana Islands)" : "Anglais (Îles Mariannes du Nord)", + "English (Pakistan)" : "Anglais (Pakistan)", + "English (Philippines)" : "Anglais (Philippines)", + "English (Singapore)" : "Anglais (Singapour)", + "English (South Africa)" : "Anglais (Afrique du Sud)", + "English (Trinidad and Tobago)" : "Anglais (Trinité-et-Tobago)", + "English (U.S. Minor Outlying Islands)" : "Anglais (Îles mineures éloignées des États-Unis)", + "English (U.S. Virgin Islands)" : "Anglais (Îles Vierges américaines)", + "English (United Kingdom)" : "Anglais (Royaume-Uni)", + "English (United States)" : "Anglais (États-Unis)", + "English (Zimbabwe)" : "Anglais (Zimbabwe)", + "English" : "Anglais", + "Esperanto" : "Espéranto", + "Estonian (Estonia)" : "Estonien (Estonie)", + "Estonian" : "Estonien", + "Ewe (Ghana)" : "Ewe (Ghana)", + "Ewe (Togo)" : "Ewe (Togo)", + "Ewe" : "Éwé", + "Faroese (Faroe Islands)" : "Féroïen (Îles Féroé)", + "Faroese" : "Féroïen", + "Filipino (Philippines)" : "Philippin (Philippines)", + "Filipino" : "Philippin", + "Finnish (Finland)" : "Finnois (Finlande)", + "Finnish" : "Finnois", + "French (Belgium)" : "Français (Belgique)", + "French (Benin)" : "Français (Bénin)", + "French (Burkina Faso)" : "Français (Burkina Faso)", + "French (Burundi)" : "Français (Burundi)", + "French (Cameroon)" : "Français (Cameroun)", + "French (Canada)" : "Français (Canada)", + "French (Central African Republic)" : "Français (République centrafricaine)", + "French (Chad)" : "Français (Tchad)", + "French (Comoros)" : "Français (Comores)", + "French (Congo - Brazzaville)" : "Français (Congo - Brazzaville)", + "French (Congo - Kinshasa)" : "Français (Congo - Kinshasa)", + "French (Côte d’Ivoire)" : "Français (Côte d’Ivoire)", + "French (Djibouti)" : "Français (Djibouti)", + "French (Equatorial Guinea)" : "Français (Guinée Équatoriale)", + "French (France)" : "Français (France)", + "French (Gabon)" : "Français (Gabon)", + "French (Guadeloupe)" : "Français (Guadeloupe)", + "French (Guinea)" : "Français (Guinée)", + "French (Luxembourg)" : "Français (Luxembourg)", + "French (Madagascar)" : "Français (Madagascar)", + "French (Mali)" : "Français (Mali)", + "French (Martinique)" : "Français (Martinique)", + "French (Monaco)" : "Français (Monaco)", + "French (Niger)" : "Français (Niger)", + "French (Rwanda)" : "Français (Rwanda)", + "French (Réunion)" : "Français (Réunion)", + "French (Saint Barthélemy)" : "Français (Saint Barthélemy)", + "French (Saint Martin)" : "Français (Saint Martin)", + "French (Senegal)" : "Français (Sénégal)", + "French (Switzerland)" : "Français (Suisse)", + "French (Togo)" : "Français (Togo)", + "French" : "Français", + "Fulah (Senegal)" : "Fulah (Sénégal)", + "Fulah" : "Fulah", + "Galician (Spain)" : "Galicien (Espagne)", + "Galician" : "Galicien", + "Ganda (Uganda)" : "Ganda (Ouganda)", + "Ganda" : "Ganda", + "Georgian (Georgia)" : "Géorgien (Géorgie)", + "Georgian" : "Géorgien", + "German (Austria)" : "Allemand (Autriche)", + "German (Belgium)" : "Allemand (Belgique)", + "German (Germany)" : "Allemand (Allemagne)", + "German (Liechtenstein)" : "Allemand (Liechtenstein)", + "German (Luxembourg)" : "Allemand (Luxembourg)", + "German (Switzerland)" : "Allemand (Suisse)", + "German" : "Allemand", + "Greek (Cyprus)" : "Grec (Chypre)", + "Greek (Greece)" : "Grec (Grèce)", + "Greek" : "Grec", + "Gujarati (India)" : "Gujarati (Inde)", + "Gujarati" : "Gujarati", + "Gusii (Kenya)" : "Gusii (Kenya)", + "Gusii" : "Gusii", + "Hausa (Latin)" : "Haoussa (Latin)", + "Hausa (Latin, Ghana)" : "Haoussa (Latin, Ghana)", + "Hausa (Latin, Niger)" : "Haoussa (Latin, Niger)", + "Hausa (Latin, Nigeria)" : "Haoussa (Latin, Nigeria)", + "Hausa" : "Haoussa", + "Hawaiian (United States)" : "Hawaïen (États-Unis)", + "Hawaiian" : "Hawaïen", + "Hebrew (Israel)" : "Hébreu (Israël)", + "Hebrew" : "Hébreu", + "Hindi (India)" : "Hindi (Inde)", + "Hindi" : "Hindi", + "Hungarian (Hungary)" : "Hongrois (Hongrie)", + "Hungarian" : "Hongrois", + "Icelandic (Iceland)" : "Islandais (Islande)", + "Icelandic" : "Islandais", + "Igbo (Nigeria)" : "Igbo (Nigeria)", + "Igbo" : "Igbo", + "Indonesian (Indonesia)" : "Indonésien (Indonésie)", + "Indonesian" : "Indonésien", + "Irish (Ireland)" : "Irlandais (Irlande)", + "Irish" : "Irlandais", + "Italian (Italy)" : "Italien (Italie)", + "Italian (Switzerland)" : "Italien (Suisse)", + "Italian" : "Italien", + "Japanese (Japan)" : "Japonais (Japon)", + "Japanese" : "Japonais", + "Kabuverdianu (Cape Verde)" : "Créole du Cap-Vert (Cap-Vert)", + "Kabuverdianu" : "Créole du Cap-Vert", + "Kabyle (Algeria)" : "Kabyle (Algérie)", + "Kabyle" : "Kabyle", + "Kalaallisut (Greenland)" : "Groenlandais (Groenland)", + "Kalaallisut" : "Groenlandais", + "Kalenjin (Kenya)" : "Kalenjin (Kenya)", + "Kalenjin" : "Kalenjin", + "Kamba (Kenya)" : "Kamba (Kenya)", + "Kamba" : "Kamba", + "Kannada (India)" : "Kannada (Inde)", + "Kannada" : "Kannada", + "Kazakh (Cyrillic)" : "Kazakh (Cyrillique)", + "Kazakh (Cyrillic, Kazakhstan)" : "Kazakh (Cyrillique, Kazakhstan)", + "Kazakh" : "Kazakh", + "Khmer" : "Khmer", + "Korean (South Korea)" : "Coréen (Corée du Sud)", + "Korean" : "Coréen", + "Latvian" : "Letton", + "Lithuanian (Lithuania)" : "Lituanien (Lituanie)", + "Lithuanian" : "Lituanien", + "Macedonian (Macedonia)" : "Macédonien (Macédoine)", + "Macedonian" : "Macédonien", + "Malagasy (Madagascar)" : "Malgache (Madagascar)", + "Malagasy" : "Malgache", + "Malay" : "Malais", + "Malayalam" : "Malayalam", + "Maltese (Malta)" : "Maltais (Maltes)", + "Maltese" : "Maltais", + "Nepali (India)" : "Népalais (Inde)", + "Nepali (Nepal)" : "Népalais (Népal)", + "Norwegian Bokmål" : "Norvégien Bokmål", + "Oromo" : "Oromo", + "Persian (Afghanistan)" : "Perse (Afghanistan)", + "Persian" : "Persan", + "Polish (Poland)" : "Polonais (Pologne)", + "Polish" : "Polonais", + "Portuguese (Brazil)" : "Portugais (Brésil)", + "Portuguese (Guinea-Bissau)" : "Portugais (Guinée-Bissau)", + "Portuguese (Mozambique)" : "Portugais (Mozambique)", + "Portuguese (Portugal)" : "Portugais (Portugal)", + "Portuguese" : "Portuguais", + "Punjabi" : "Pendjabi", + "Romanian (Moldova)" : "Roumain (Moldavie)", + "Romanian (Romania)" : "Roumain (Roumanie)", + "Romanian" : "Roumain", + "Romansh (Switzerland)" : "Romanche (Suisse)", + "Romansh" : "Romanche", + "Russian (Moldova)" : "Russe (Moldavie)", + "Russian (Russia)" : "Russe (Russie)", + "Russian (Ukraine)" : "Russe (Ukraine)", + "Russian" : "Russe", + "Serbian (Cyrillic)" : "Serbe (Cyrillique)", + "Serbian (Cyrillic, Montenegro)" : "Serbe (Cyrillique, Monténégro)", + "Serbian (Latin)" : "Serbe (Latin)", + "Serbian" : "Serbe", + "Slovak" : "Slovaque", + "Slovenian" : "Slovène", + "Somali (Djibouti)" : "Somalien (Djibouti)", + "Somali (Ethiopia)" : "Somalien (Éthiopie)", + "Somali (Kenya)" : "Somalien (Kenya)", + "Somali (Somalia)" : "Somalien (Somalie)", + "Somali" : "Somalien", + "Spanish (Argentina)" : "Espagnol (Argentine)", + "Spanish (Bolivia)" : "Espagnol (Bolivie)", + "Spanish (Chile)" : "Espagnol (Chili)", + "Spanish (Colombia)" : "Espagnol (Colombie)", + "Spanish (Costa Rica)" : "Espagnol (Costa-Rica)", + "Spanish (Dominican Republic)" : "Espagnol (République Dominicaine)", + "Spanish (Ecuador)" : "Espagnol (Équateur)", + "Spanish (El Salvador)" : "Espagnol (Salvador)", + "Spanish (Equatorial Guinea)" : "Espagnol (Guinée Équatoriale)", + "Spanish (Guatemala)" : "Espagnol (Guatemala)", + "Spanish (Honduras)" : "Espagnol (Honduras)", + "Spanish (Latin America)" : "Espagnol (Amérique Latine)", + "Spanish (Mexico)" : "Espagnol (Mexique)", + "Spanish (Nicaragua)" : "Espagnol (Nicaragua)", + "Spanish (Panama)" : "Espagnol (Panama)", + "Spanish (Paraguay)" : "Espagnol (Paraguay)", + "Spanish (Peru)" : "Espagnol (Pérou)", + "Spanish (Puerto Rico)" : "Espagnol (Porto Rico)", + "Spanish (Spain)" : "Espagnol (Espagne)", + "Spanish (United States)" : "Espagnol (États-Unis)", + "Spanish (Uruguay)" : "Espagnol (Uruguay)", + "Spanish (Venezuela)" : "Espagnol (Venezuela)", + "Spanish" : "Espagnol", + "Swahili (Kenya)" : "Swahili (Kenya)", + "Swahili (Tanzania)" : "Swahili (Tanzanie)", + "Swahili" : "Swahili", + "Swedish (Finland)" : "Suédois (Finlande)", + "Swedish (Sweden)" : "Suédois (Suède)", + "Swedish" : "Suédois", + "Swiss German (Switzerland)" : "Suisse-Allemand (Suisse)", + "Swiss German" : "Suisse-Allemand", + "Tachelhit (Tifinagh, Morocco)" : "Tachelhit (Tifinagh, Maroc)", + "Tamil" : "Tamoul", + "Thai (Thailand)" : "Thaï (Thaïlande)", + "Thai" : "Thaï", + "Tibetan (China)" : "Tibétain (Chine)", + "Tibetan (India)" : "Tibétain (Inde)", + "Tibetan" : "Tibétain", + "Tonga (Tonga)" : "Tongien (Tonga)", + "Tonga" : "Tonga", + "Turkish (Turkey)" : "Turc (Turquie)", + "Turkish" : "Turc", + "Ukrainian (Ukraine)" : "Ukrainien (Ukraine)", + "Ukrainian" : "Ukrainien", + "Urdu" : "Ourdou", + "Uzbek (Arabic)" : "Ouzbek (Arabe)", + "Uzbek (Cyrillic)" : "Ouzbek (Cyrillique)", + "Uzbek (Latin)" : "Ouzbek (Latin)", + "Uzbek" : "Ouzbek", + "Vietnamese (Vietnam)" : "Vietnamien (Vietnam)", + "Vietnamese" : "Vietnamien", + "Welsh" : "Gallois", + "Yoruba" : "Yoruba", + "Zulu (South Africa)" : "Zoulou (Afrique du Sud)", + "Zulu" : "Zoulou", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "L'authentification à deux facteurs peut être spécifiée pour tous les \tutilisateurs et groupes spécifiques. S'ils n'ont pas de fournisseur à deux facteurs configuré, ils seront dans l'incapacité de se connecter au système.", + "Enforce two-factor authentication" : "Imposer l'authentification à deux facteurs", + "Limit to groups" : "Limiter aux groupes", + "Enforcement of two-factor authentication can be set for certain groups only." : "L'application de l'authentification à deux facteurs ne peut être définie que pour certains groupes.", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "L'authentification à deux facteurs est appliquée aux membres des groupes suivants.", + "Enforced groups" : "Groupes forcés", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "L'authentification à deux facteurs n'est pas appliquée aux \tutilisateurs des groupes suivants.", + "Excluded groups" : "Groupes exclus", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "Lorsque des groupes sont sélectionnés/exclus, la logique suivante est utilisée pour déterminer si un utilisateur a activé l'authentification double facteur (2FA). Si aucun groupe n'est sélectionné, l'authentification double facteur (2FA) est activé pour tout le monde sauf pour les membres des groupes exclus. Si des groupes sont sélectionnés, l'authentification double facteur (2FA) est activé pour tous les membres de ces groupes. Si un utilisateur est à la fois dans un groupe sélectionné et exclus, c'est le groupe sélectionné qui prime et l'authentification double facteur (2FA) est appliquée.", + "Save changes" : "Enregistrer les modifications", + "Marked for remote wipe" : "Marqué pour l'effaçage distant", + "Device settings" : "Paramètres de l'appareil", + "Allow filesystem access" : "Autoriser l'accès au gestionnaire de fichiers", + "Rename" : "Renommer", + "Revoke" : "Révoquer", + "Wipe device" : "Effacer l'appareil", + "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Révoquer ce jeton peut empêcher l'effacement de votre appareil s'il n'a pas encore démarré l'effacement.", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome pour Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Application iOS Nextcloud", + "Nextcloud Android app" : "Application Android Nextcloud", + "Nextcloud Talk for iOS" : "Nextcloud Talk pour iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk pour Android", + "Sync client - {os}" : "Client de synchronisation - {os}", + "This session" : "Cette session", + "Device" : "Appareil", + "Last activity" : "Dernière activité", + "Devices & sessions" : "Appareils & sessions", + "Web, desktop and mobile clients currently logged in to your account." : "Clients web, applications de bureau et mobiles actuellement connectés avec votre compte.", + "Do you really want to wipe your data from this device?" : "Voulez-vous vraiment supprimer vos données de cet appareil ?", + "Confirm wipe" : "Confirmer la supression", + "Error while creating device token" : "Erreur lors de la création du jeton de l'appareil", + "Error while updating device token scope" : "Erreur lors de la mise à jour du jeton de l'appareil", + "Error while updating device token name" : "Erreur lors de la mise à jour du nom du jeton", + "Error while deleting the token" : "Erreur lors de la suppression du jeton", + "Error while wiping the device with the token" : "Erreur lors de l'effaçage de l'appareil avec le jeton", + "App name" : "Nom de l'application", + "Create new app password" : "Créer un nouveau mot de passe d'application", + "Use the credentials below to configure your app or device." : "Utilisez les informations d'identification ci-dessous pour configurer votre application ou appareil.", + "For security reasons this password will only be shown once." : "Pour des raisons de sécurité, ce mot de passe ne sera affiché qu'une seule fois.", + "Username" : "Nom d'utilisateur", + "Password" : "Mot de passe", + "Done" : "Terminé", + "Show QR code for mobile apps" : "Afficher le QR code pour les applications mobiles", + "Copied!" : "Copié !", + "Copy" : "Copier", + "Could not copy app password. Please copy it manually." : "Impossible de copier le mot de passe de l'application. Merci de le copier manuellement.", + "This app is supported via your current Nextcloud subscription." : "Vous supportez cette application grâce à votre abonnement Nextcloud.", + "Supported" : "Pris en charge", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Les applications officielles sont développées par et dans la communauté. Elles offrent les fonctionnalités indispensables et sont prêtes pour être utilisées en production.", + "Official" : "Officielle", + "by" : "par", + "Update to {version}" : "Mise à jour vers {version}", + "Remove" : "Supprimer", + "Disable" : "Désactiver", + "All" : "Tous", + "Limit app usage to groups" : "Limiter l'utilisation de l'application aux groupes", + "No results" : "Aucun résultat", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Cette application n'a pas de version minimum Nextcloud exigée. Ce sera considéré comme une erreur à l'avenir.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Cette application n'a pas de version maximum Nextcloud exigée. Ce sera considéré comme une erreur à l'avenir.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Cette application ne peut être installée à cause de ces dépendances non satisfaites :", + "View in store" : "Afficher dans le magasin d'application", + "Visit website" : "Visiter le site web", + "Report a bug" : "Signaler un bogue", + "User documentation" : "Documentation utilisateur", + "Admin documentation" : "Documentation administrateur", + "Developer documentation" : "Documentation pour développeurs", + "Update to {update}" : "Mise à jour vers {update}", + "Results from other categories" : "Résultats d'autres catégories", + "No apps found for your version" : "Pas d'application trouvée pour votre version", + "Disable all" : "Tout désactiver", + "Enable all" : "Tout activer", + "Download and enable" : "Télécharger et activer", + "Enable" : "Activer", + "Enable untested app" : "Activer les app non-testées", + "The app will be downloaded from the app store" : "Cette application va être téléchargée depuis l'app store", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Cette application n'est pas indiquée comme étant compatible avec votre version de Nextcloud. Si vous continuez vous pourrez toujours installer l'app. Notez cependant qu'elle pourrait ne pas fonctionner comme prévu.", + "You do not have permissions to see the details of this user" : "Vous n'avez pas les autorisations pour voir le détail de cet utilisateur", + "The backend does not support changing the display name" : "Le backend ne prend pas en charge la modification du nom d'affichage", + "New password" : "Nouveau mot de passe", + "Add user in group" : "Ajouter un utilisateur au groupe", + "Set user as admin for" : "Définir en tant qu'administrateur pour", + "Select user quota" : "Sélectionner le quota de l'utilisateur ", + "No language set" : "Aucune langue définie", + "Never" : "Jamais", + "Delete user" : "Supprimer l'utilisateur", + "Wipe all devices" : "Effacer tous les appareils", + "Disable user" : "Désactiver l'utilisateur", + "Enable user" : "Activer l'utilisateur", + "Resend welcome email" : "Renvoyer l'e-mail de bienvenue", + "{size} used" : "{size} utilisé", + "Welcome mail sent!" : "E-mail de bienvenue envoyé !", + "Display name" : "Nom à afficher", + "Email" : "Adresse e-mail", + "Group admin for" : "Administrateur de groupe pour", + "Quota" : "Quota", + "Language" : "Langue", + "Storage location" : "Emplacement du stockage", + "User backend" : "Retour utilisateur", + "Last login" : "Dernière connexion", + "Will be autogenerated" : "Sera généré automatiquement", + "Default language" : "Langue par défaut", + "Add a new user" : "Ajouter un nouvel utilisateur", + "No users in here" : "Aucun utilisateur", + "Default quota" : "Quota par défaut", + "Password change is disabled because the master key is disabled" : "Le changement de mot de passe est désactivé car la clé principale est désactivée", + "Common languages" : "Langues communes", + "All languages" : "Toutes les langues", + "Your apps" : "Vos applications", + "Active apps" : "Applications actives", + "Disabled apps" : "Applications désactivées", + "Updates" : "Mises à jour", + "App bundles" : "Pack d'applications", + "{license}-licensed" : "{license}-Sous licence", + "New user" : "Nouvel utilisateur", + "Default quota:" : "Quota par défaut :", + "Select default quota" : "Sélectionner le quota par défaut", + "Show Languages" : "Afficher les langues", + "Show last login" : "Montrer la dernière connexion", + "Show user backend" : "Montrer la source de l'identifiant", + "Show storage path" : "Afficher le chemin du stockage", + "You are about to remove the group {group}. The users will NOT be deleted." : "Vous êtes sur le point de supprimer le groupe {group}. Les utilisateurs ne seront PAS supprimés.", + "Please confirm the group removal " : "Veuillez confirmer la suppression du groupe", + "Remove group" : "Supprimer le groupe", + "Admins" : "Administrateurs", + "Disabled users" : "Utilisateurs désactivés", + "Everyone" : "Tout le monde", + "Add group" : "Ajouter un groupe", + "An error occured during the request. Unable to proceed." : "Une erreur est survenue durant la requête. Impossible de traiter la demande.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "L'application a été activée mais doit être mise à jour. Vous allez être redirigé vers la page des mises à jour dans 5 secondes.", + "App update" : "Mise à jour de l'application", + "Error: This app can not be enabled because it makes the server unstable" : "Erreur : Cette application ne peut pas être activée car cela rend le serveur instable.", + "SSL Root Certificates" : "Certificats Racines SSL", + "Common Name" : "Nom d'usage", + "Valid until" : "Valide jusqu'à", + "Issued By" : "Délivré par", + "Valid until %s" : "Valide jusqu'à %s", + "Import root certificate" : "Importer un certificat racine", + "Administrator documentation" : "Documentation administrateur", + "Documentation" : "Documentation", + "Forum" : "Forum", + "None" : "Aucun", + "Login" : "Login", + "Plain" : "En clair", + "NT LAN Manager" : "Gestionnaire du réseau NT", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Serveur e-mail", + "Open documentation" : "Voir la documentation", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Il est important d'indiquer un serveur afin de pouvoir envoyer des mails en cas de perte de mot de passe et pour d'autres notifications.", + "Send mode" : "Mode d'envoi", + "Encryption" : "Chiffrement", + "Sendmail mode" : "mode Sendmail", + "From address" : "Adresse source", + "mail" : "e-mail", + "Authentication method" : "Méthode d'authentification", + "Authentication required" : "Authentification requise", + "Server address" : "Adresse du serveur", + "Port" : "Port", + "Credentials" : "Informations d'identification", + "SMTP Username" : "Nom d'utilisateur SMTP", + "SMTP Password" : "Mot de passe SMTP", + "Save" : "Enregistrer", + "Test email settings" : "Tester les paramètres e-mail", + "Send email" : "Envoyer un e-mail", + "Security & setup warnings" : "Avertissements de sécurité & configuration", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Il est important pour la sécurité et la performance de votre instance que celle-ci soit correctement configurée. Afin de vous aider, votre instance Nextcloud effectue des vérifications automatiques. Pour de plus amples informations, veuillez consulter la documentation liée.", + "All checks passed." : "Tous les tests ont réussi.", + "There are some errors regarding your setup." : "Il y a quelques erreurs concernant votre configuration.", + "There are some warnings regarding your setup." : "Il y a quelques avertissements concernant votre configuration.", + "Checking for system and security issues." : "Vérification des problèmes de système et de sécurité.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Merci de consulter les <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">guides d'installation ↗</a> et de vérifier les erreurs ou avertissements des <a href=\"%2$s\">logs</a>.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Vérifier la sécurité de votre Nextcloud grâce à <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">notre scan de sécurité ↗</a>", + "Version" : "Version", + "Two-Factor Authentication" : "Authentification en deux étapes", + "Server-side encryption" : "Chiffrement côté serveur", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Le chiffrement côté serveur permet de chiffrer les fichiers qui sont téléversés sur ce serveur. Cela implique des limitations comme une performance moindre, donc activez-le seulement si nécessaire.", + "Enable server-side encryption" : "Activer le chiffrement côté serveur", + "Please read carefully before activating server-side encryption: " : "Veuillez lire ceci avec attention avant d'activer le chiffrement :", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Une fois le chiffrement activé, les fichiers téléversés sur le serveur à partir de ce moment seront stockés sous forme chiffrée. Il n'est possible de désactiver le chiffrement que si le module utilisé le permet spécifiquement, et que toutes les conditions préalables sont réunies pour ce faire (par exemple la création d'une clef de récupération).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Le chiffrement seul ne garantit pas la sécurité du système. Veuillez consulter la documentation pour plus d'informations à propos du fonction de l'application de chiffrement, et des cas d'utilisations supportés.", + "Be aware that encryption always increases the file size." : "Veuillez noter que le chiffrement augmente toujours la taille des fichiers.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Il est opportun de sauvegarder régulièrement vos données. Si ces données sont chiffrées, n'oubliez pas de sauvegarder aussi les clés de chiffrement.", + "This is the final warning: Do you really want to enable encryption?" : "Dernier avertissement : Voulez-vous vraiment activer le chiffrement ?", + "Enable encryption" : "Activer le chiffrement", + "No encryption module loaded, please enable an encryption module in the app menu." : "Aucun module de chiffrement n'est chargé. Merci d'activer un module de chiffrement dans le menu des applications.", + "Select default encryption module:" : "Sélectionnez le module de chiffrement par défaut :", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Vous devez migrer vos clés de chiffrement de l'ancienne version (ownCloud <= 8.0) vers la nouvelle. Veuillez activer l'application \"Default Encryption Module\" et exécuter 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Vous devez migrer vos clés de chiffrement de l'ancienne version (ownCloud <= 8.0) vers la nouvelle.", + "Start migration" : "Démarrer la migration", + "Background jobs" : "Tâches de fond", + "Last job ran %s." : "Dernière tâche exécutée %s.", + "Last job execution ran %s. Something seems wrong." : "Quelque chose s'est mal passé lors de l'exécution de la dernière tâche %s.", + "Background job didn’t run yet!" : "La tâche de fond n'a pas encore tourné!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Afin d'optimiser au mieux la performance de votre instance, il est important de configurer correctement les travaux en arrière-plan. 'Cron' est le paramètre recommandé pour les instances de taille importante. Veuillez vous référer à la documentation Nextcloud pour plus d'informations à ce sujet.", + "Pick background job setting" : "Définir les paramètres pour la tâche d'arrière-plan", + "Execute one task with each page loaded" : "Exécute une tâche à chaque chargement de page", + "The cron.php needs to be executed by the system user \"%s\"." : "Le cron.php doit être exécuté par l'utilisateur système \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Pour l'exécuter, vous devez avoir l'extension PHP POSIX. Regarder la {linkstart}documentation PHP{linkend} pour plus de détails.", + "Sharing" : "Partage", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "En tant qu'administrateur, vous pouvez affiner le comportement de partage. Veuillez consulter la documentation pour plus d'informations.", + "Allow apps to use the Share API" : "Autoriser les applications à utiliser l'API de partage", + "Allow users to share via link" : "Autoriser les utilisateurs à partager par lien", + "Allow public uploads" : "Autoriser les téléversements publics", + "Always ask for a password" : "Toujours demander un mot de passe", + "Enforce password protection" : "Imposer la protection renforcée du mot de passe", + "Set default expiration date" : "Indiquer une date d'expiration par défaut", + "Expire after " : "Expiration après ", + "days" : "jours", + "Enforce expiration date" : "Imposer la date d'expiration", + "Allow resharing" : "Autoriser le repartage", + "Allow sharing with groups" : "Autoriser le partage avec les groupes", + "Restrict users to only share with users in their groups" : "N'autoriser les partages qu'entre membres de mêmes groupes", + "Exclude groups from sharing" : "Empêcher certains groupes de partager", + "These groups will still be able to receive shares, but not to initiate them." : "Ces groupes ne pourront plus initier de partage, mais ils pourront toujours rejoindre les partages faits par d'autres. ", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Activer l'autocomplétion des noms d'utilisateurs dans la fenêtre de partage. Si cette option est désactivée, les noms complets ou les adresses e-mail doivent être indiqués.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Afficher les conditions d'utilisation sur la page publique de téléversement (seulement lorsque la liste des fichiers est masquée).", + "This text will be shown on the public link upload page when the file list is hidden." : "Ce texte sera affiché sur la page publique de téléversement lorsque la liste des fichiers est masquée.", + "Default share permissions" : "Autorisations de partage par défaut", + "Personal" : "Personnel", + "Administration" : "Administration", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Développé par la {communityopen}communauté Nextcloud{linkclose}, le {githubopen}code source{linkclose} est sous licence {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Aimez notre page Facebook", + "Follow us on Twitter" : "Suivez-nous sur Twitter", + "Follow us on Mastodon" : "Suivez-nous sur Mastodon", + "Check out our blog" : "Découvrez notre blog", + "Subscribe to our newsletter" : "Abonnez-vous à notre lettre d'information", + "Profile picture" : "Photo de profil", + "Upload new" : "Nouvelle depuis votre ordinateur", + "Select from Files" : "Sélectionner depuis les Fichiers", + "Remove image" : "Supprimer l'image", + "png or jpg, max. 20 MB" : "png ou jpg, max. 20 Mo", + "Picture provided by original account" : "Photo fournie par le compte original", + "Cancel" : "Annuler", + "Choose as profile picture" : "Définir comme image de profil", + "Details" : "Détails", + "You are a member of the following groups:" : "Vous êtes un membre des groupes suivants :", + "You are using <strong>%s</strong>" : "Vous utilisez <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Vous utilisez <strong>%1$s</strong> sur <strong>%2$s</strong> (<strong>%3$s%% </strong>)", + "Full name" : "Nom complet", + "No display name set" : "Aucun nom d'affichage configuré", + "Your email address" : "Votre adresse e-mail", + "No email address set" : "Aucune adresse e-mail configurée", + "For password reset and notifications" : "Pour la réinitialisation du mot de passe et les notifications", + "Phone number" : "Numéro de téléphone", + "Your phone number" : "Votre numéro de téléphone", + "Address" : "Adresse", + "Your postal address" : "Votre adresse postale", + "Website" : "Site web", + "It can take up to 24 hours before the account is displayed as verified." : "Cela peut prendre jusqu'à 24 heures avant que le compte soit affiché comme vérifié.", + "Link https://…" : "Lien https://…", + "Twitter" : "Twitter", + "Twitter handle @…" : "Pseudo Twitter @...", + "Help translate" : "Aidez à traduire", + "Locale" : "Paramètres régionaux", + "Current password" : "Mot de passe actuel", + "Change password" : "Changer de mot de passe", + "Use a second factor besides your password to increase security for your account." : "Utiliser un second facteur d'authentification en plus de votre mot de passe pour augmenter la sécurité de votre compte.", + "Disconnect" : "Se déconnecter", + "Not supported!" : "Non supporté !", + "Press ⌘-C to copy." : "Appuyez sur ⌘-C pour copier.", + "Press Ctrl-C to copy." : "Appuyez sur Ctrl + C pour copier.", + "Error while loading browser sessions and device tokens" : "Erreur lors du chargement des jetons de la session du navigateur et de l'appareil", + "Store credentials" : "Enregistrer les identifiants", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php est enregistré à un service webcron pour exécuter cron.php toutes les 15 minutes par HTTP.", + "Use system cron service to call the cron.php file every 15 minutes." : "Utiliser le service cron du système pour appeler le fichier cron.php toutes les 15 minutes.", + "Follow us on Google+" : "Nous suivre sur Google+" +}, +"nplurals=2; plural=(n > 1);"); diff --git a/apps/settings/l10n/fr.json b/apps/settings/l10n/fr.json new file mode 100644 index 00000000000..0bceb3a78e1 --- /dev/null +++ b/apps/settings/l10n/fr.json @@ -0,0 +1,712 @@ +{ "translations": { + "{actor} added you to group {group}" : "{actor} vous a ajouté au groupe {group}", + "You added {user} to group {group}" : "Vous avez ajouté {user} au groupe {group}", + "{actor} added {user} to group {group}" : "{actor} a ajouté {user} au groupe {group}", + "An administrator added you to group {group}" : "Un administrateur vous a ajouté au groupe {group}", + "An administrator added {user} to group {group}" : "Un administrateur a ajouté {user} au groupe {group}", + "{actor} removed you from group {group}" : "{actor} vous a retiré du groupe {group}", + "You removed {user} from group {group}" : "Vous avez retiré {user} du groupe {group}", + "{actor} removed {user} from group {group}" : "{actor} a retiré {user} du groupe {group}", + "An administrator removed you from group {group}" : "Un administrateur vous a retiré du groupe {group}", + "An administrator removed {user} from group {group}" : "Un administrateur a retiré {user} du groupe {group}", + "Your <strong>group memberships</strong> were modified" : "Vos <strong>adhésions aux groupes</strong> ont été modifiées", + "{actor} changed your password" : "{actor} a modifié votre mot de passe", + "You changed your password" : "Vous avez modifié votre mot de passe", + "Your password was reset by an administrator" : "Votre mot de passe a été réinitialisé par un administrateur", + "{actor} changed your email address" : "{actor} a modifié votre adresse e-mail", + "You changed your email address" : "Vous avez modifié votre adresse e-mail", + "Your email address was changed by an administrator" : "Votre adresse e-mail a été modifiée par un administrateur", + "You created app password \"{token}\"" : "Vous avez créé un mot de passe d'application \"{token}\"", + "You deleted app password \"{token}\"" : "Vous avez supprimé un mot de passe d'application \"{token}\"", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Vous avez renommé le mot de passe d'application \"{token}\" en \"{newToken}\" ", + "You granted filesystem access to app password \"{token}\"" : "Vous avez accordé au système de fichiers l'accès au mot de passe d'application \"{token}\".", + "You revoked filesystem access from app password \"{token}\"" : "Vous avez révoqué l'accès au système de fichiers à partir du mot de passe d'application \"{token}\".", + "Security" : "Sécurité", + "You successfully logged in using two-factor authentication (%1$s)" : "Vous avez réussi à vous connecter en utilisant l'authentification à deux facteurs (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Une tentative de connexion utilisant l'authentification à deux facteurs a échoué (%1$s)", + "Remote wipe was started on %1$s" : "Effaçage distant démarré pour%1$s", + "Remote wipe has finished on %1$s" : "Effaçage distant terminé pour %1$s", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Votre <strong>mot de passe</strong> ou <strong>adresse e-mail</strong> a été modifié", + "Couldn't remove app." : "Impossible de supprimer l'application.", + "Couldn't update app." : "Impossible de mettre à jour l'application", + "Wrong password" : "Mot de passe incorrect", + "Saved" : "Sauvegardé", + "No user supplied" : "Aucun utilisateur fourni", + "Unable to change password" : "Impossible de modifier le mot de passe", + "Authentication error" : "Erreur d'authentification", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Veuillez fournir un mot de passe administrateur de récupération de données, sinon toutes les données utilisateur seront perdues.", + "Wrong admin recovery password. Please check the password and try again." : "Mot de passe administrateur de récupération de données non valable. Veuillez vérifier le mot de passe et essayer à nouveau.", + "Backend doesn't support password change, but the user's encryption key was updated." : "L'infrastructure d'arrière-plan ne supporte pas la modification de mot de passe, mais la clef de chiffrement de l'utilisateur a été mise à jour.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "le partage Federated Cloud ou l'installation et la mise à jour d'applications par l'app store", + "Federated Cloud Sharing" : "Federated Cloud Sharing", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL utilise %1$s version (%2$s), qui est une version obsolète. Veuillez mettre à jour votre système d'exploitation, ou des fonctionnalités telles que %3$s ne fonctionneront pas correctement.", + "Invalid SMTP password." : "Mot de passe SMTP incorrect.", + "Email setting test" : "Test des paramètres e-mail", + "Well done, %s!" : "Bien joué, %s !", + "If you received this email, the email configuration seems to be correct." : "Si vous avez reçu cet e-mail, la configuration de l'adresse e-mail semble être correcte.", + "Email could not be sent. Check your mail server log" : "L'email n'a pu être envoyé. Vérifiez le journal du serveur de messagerie", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Une erreur est survenue lors de l'envoi de l'e-mail. Veuillez vérifier vos paramètres. (Erreur: %s)", + "You need to set your user email before being able to send test emails." : "Vous devez définir une adresse e-mail dans vos paramètres personnels avant de pouvoir envoyer des e-mails de test.", + "Invalid mail address" : "Adresse e-mail non valide", + "Settings saved" : "Paramètres sauvegardés", + "Unable to change full name" : "Impossible de modifier le nom complet", + "Unable to change email address" : "Impossible de modifier l'adresse e-mail", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Pour vérifier votre compte Twitter, postez le tweet suivant sur Twitter (veuillez vérifier de le poster sans saut de ligne) :", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Pour vérifier votre site web, placez le contenu suivant à la racine de votre site à '.well-known/CloudIdVerificationCode.txt' (veuillez vérifier que le texte complet est en une seule ligne) :", + "%1$s changed your password on %2$s." : "%1$s a modifié votre mot de passe sur %2$s.", + "Your password on %s was changed." : "Votre mot de passe sur %s a été modifié.", + "Your password on %s was reset by an administrator." : "Votre mot de passe sur %s a été réinitialisé par un administrateur.", + "Password for %1$s changed on %2$s" : "Mot de passe pour %1$s a été modifié sur %2$s", + "Password changed for %s" : "Mot de passe modifié pour %s", + "If you did not request this, please contact an administrator." : "Si vous n'aviez pas effectué cette demande, veuillez contacter un administrateur.", + "Your email address on %s was changed." : "Votre adresse e-mail sur %s a été modifiée.", + "Your email address on %s was changed by an administrator." : "Votre adresse e-mail sur %s a été modifiée par un administrateur.", + "Email address for %1$s changed on %2$s" : "Adresse e-mail pour %1$s a été modifiée sur %2$s", + "Email address changed for %s" : "Adresse e-mail a été modifiée pour %s", + "The new email address is %s" : "La nouvelle adresse e-mail est %s", + "Your %s account was created" : "Votre compte %s a été créé", + "Welcome aboard" : "Bienvenue à bord", + "Welcome aboard %s" : "Bienvenue à bord %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Bienvenue dans votre compte %s, vous pouvez ajouter, protéger et partager vos données.", + "Your username is: %s" : "Votre nom d'utilisateur est : %s", + "Set your password" : "Créer votre mot de passe", + "Go to %s" : "Aller à %s", + "Install Client" : "Installer le Client", + "Logged in user must be a subadmin" : "L'utilisateur connecté doit être un sous-administrateur", + "Create" : "Créer", + "Change" : "Modifier", + "Delete" : "Supprimer", + "Share" : "Partager", + "Unlimited" : "Illimité", + "Verifying" : "Vérification en cours", + "Verifying …" : "Vérification en cours...", + "Verify" : "Vérifier", + "Migration in progress. Please wait until the migration is finished" : "Migration en cours. Veuillez attendre que celle-ci se termine", + "Migration started …" : "Migration démarrée...", + "Not saved" : "Non sauvegardé", + "Sending…" : "Envoi en cours...", + "Email sent" : "E-mail envoyé", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Une erreur est survenue. Veuillez fournir un certificat PEM encodé au format ASCII.", + "Valid until {date}" : "Valide jusqu'au {date}", + "Local" : "Local", + "Private" : "Privé", + "Only visible to local users" : "Visible uniquement par les utilisateurs locaux", + "Only visible to you" : "Visible uniquement par vous", + "Contacts" : "Contacts", + "Visible to local users and to trusted servers" : "Visible par les utilisateurs locaux et les serveurs de confiance", + "Public" : "Publique", + "Will be synced to a global and public address book" : "Va être synchronisé dans un carnet d'adresse global et public", + "Very weak password" : "Mot de passe de très faible sécurité", + "Weak password" : "Mot de passe de faible sécurité", + "So-so password" : "Mot de passe de sécurité tout juste acceptable", + "Good password" : "Mot de passe de sécurité suffisante", + "Strong password" : "Mot de passe de forte sécurité", + "An error occurred while changing your language. Please reload the page and try again." : "Une erreur est survenue lors du changement de votre langue. Veuillez recharger la page et réessayer.", + "An error occurred while changing your locale. Please reload the page and try again." : "Une erreur est survenue lors du changement de vos paramètres régionaux. Veuillez recharger la page et réessayer.", + "Select a profile picture" : "Selectionnez une photo de profil ", + "Week starts on {fdow}" : "La semaine commence le {fdow}", + "Groups" : "Groupes", + "Group list is empty" : "La liste du groupe est vide", + "Unable to retrieve the group list" : "Impossible de récupérer la liste du groupe", + "Afrikaans (Namibia)" : "Afrikaans (Namibie)", + "Afrikaans (South Africa)" : "Afrikaans (Afrique du Sud)", + "Afrikaans" : "Afrikaans", + "Akan (Ghana)" : "Akan (Ghana)", + "Akan" : "Akan", + "Albanian (Albania)" : "Albanais (Albanie)", + "Albanian" : "Albanais", + "Amharic (Ethiopia)" : "Amharique (Éthiopie)", + "Amharic" : "Amharique", + "Arabic (Algeria)" : "Arabe (Algérie)", + "Arabic (Bahrain)" : "Arabe (Bahreïn)", + "Arabic (Egypt)" : "Arabe (Égypte)", + "Arabic (Iraq)" : "Arabe (Irak)", + "Arabic (Jordan)" : "Arabe (Jordanie)", + "Arabic (Kuwait)" : "Arabe (Koweït)", + "Arabic (Lebanon)" : "Arabe (Liban)", + "Arabic (Libya)" : "Arabe (Libye)", + "Arabic (Morocco)" : "Arabe (Maroc)", + "Arabic (Oman)" : "Arabe (Oman)", + "Arabic (Qatar)" : "Arabe (Qatar)", + "Arabic (Saudi Arabia)" : "Arabe (Arabie Saoudite)", + "Arabic (Sudan)" : "Arabe (Soudan)", + "Arabic (Syria)" : "Arabe (Syrie)", + "Arabic (Tunisia)" : "Arabe (Tunisie)", + "Arabic (United Arab Emirates)" : "Arabe (Émirats Arabes Unis)", + "Arabic (Yemen)" : "Arabe (Yémen)", + "Arabic" : "Arabe", + "Armenian (Armenia)" : "Arménien (Arménie)", + "Armenian" : "Arménien", + "Assamese (India)" : "Assamais (Inde)", + "Assamese" : "Assamais", + "Asu (Tanzania)" : "Asu (Tanzanie)", + "Asu" : "Asu", + "Azerbaijani (Cyrillic)" : "Azerbaïdjanais (Cyrillique)", + "Azerbaijani (Cyrillic, Azerbaijan)" : "Azerbaïdjanais (Cyrillique, Azerbaïdjan)", + "Azerbaijani (Latin)" : "Azerbaïdjanais (Latin)", + "Azerbaijani (Latin, Azerbaijan)" : "Azerbaïdjanais (Latin, Azerbaïdjan)", + "Azerbaijani" : "Azerbaïdjanais", + "Bambara (Mali)" : "Bambara (Mali)", + "Bambara" : "Bambara", + "Basque (Spain)" : "Basque (Espagne)", + "Basque" : "Basque", + "Belarusian (Belarus)" : "Biélorusse (Biélorussie)", + "Belarusian" : "Biélorusse", + "Bemba (Zambia)" : "Bemba (Zambie)", + "Bemba" : "Bemba", + "Bena (Tanzania)" : "Bena (Tanzanie)", + "Bena" : "Bena", + "Bengali (Bangladesh)" : "Bengali (Bangladesh)", + "Bengali (India)" : "Bengali (Inde)", + "Bengali" : "Bengali", + "Bosnian (Bosnia and Herzegovina)" : "Bosniaque (Bosnie-Herzégovine)", + "Bosnian" : "Bosnien", + "Bulgarian (Bulgaria)" : "Bulgare (Bulgarie)", + "Bulgarian" : "Bulgare", + "Burmese (Myanmar [Burma])" : "Birman (Myanmar[Birmanie])", + "Burmese" : "Birman", + "Catalan (Spain)" : "Catalan (Espagne)", + "Catalan" : "Catalan", + "Central Morocco Tamazight (Latin)" : "Tamazight du Maroc central (Latin)", + "Central Morocco Tamazight (Latin, Morocco)" : "Tamazight du Maroc central (Latin, Maroc)", + "Central Morocco Tamazight" : "Tamazight du Maroc central", + "Cherokee (United States)" : "Cherokee (États-Unis)", + "Cherokee" : "Cherokee", + "Chiga (Uganda)" : "Kiga (Ouganda)", + "Chiga" : "Kiga", + "Chinese (Simplified Han)" : "Chinois (Han simplifié)", + "Chinese (Simplified Han, China)" : "Chinois (Han simplifié, Chine)", + "Chinese (Simplified Han, Hong Kong SAR China)" : "Chinois (Han simplifié, SAR chinoise de Hong Kong)", + "Chinese (Simplified Han, Macau SAR China)" : "Chinois (Han simplifié, SAR de Macao Chine)", + "Chinese (Simplified Han, Singapore)" : "Chinois (Han simplifié, Singapour)", + "Chinese (Traditional Han)" : "Chinois (Han traditionnel)", + "Chinese (Traditional Han, Hong Kong SAR China)" : "Chinois (Han traditionnel, RAS chinoise de Hong Kong)", + "Chinese (Traditional Han, Macau SAR China)" : "Chinois (Han traditionnel, RAS chinoise de Macao)", + "Chinese (Traditional Han, Taiwan)" : "Chinois (Han traditionnel, Taïwan)", + "Chinese" : "Chinois", + "Cornish (United Kingdom)" : "Cornique (Royaume-Uni)", + "Cornish" : "Cornique", + "Croatian (Croatia)" : "Croate (Croatie)", + "Croatian" : "Croate", + "Czech (Czech Republic)" : "Tchèque (République Tchèque)", + "Czech" : "Tchèque", + "Danish (Denmark)" : "Danois (Danemark)", + "Danish" : "Danois", + "Dutch (Belgium)" : "Néerlandais (Belgique)", + "Dutch (Netherlands)" : "Néerlandais (Pays-Bas)", + "Dutch" : "Néerlandais", + "Embu (Kenya)" : "Embu (Kenya)", + "Embu" : "Embu", + "English (American Samoa)" : "Anglais (Samoa américaines)", + "English (Australia)" : "Anglais (Australie)", + "English (Belgium)" : "Anglais (Belgique)", + "English (Belize)" : "Anglais (Bélize)", + "English (Botswana)" : "Anglais (Botswana)", + "English (Canada)" : "Anglais (Canada)", + "English (Guam)" : "Anglais (Guam)", + "English (Hong Kong SAR China)" : "Anglais (Hong Kong SAR Chine)", + "English (India)" : "Anglais (Inde)", + "English (Ireland)" : "Anglais (Irlande)", + "English (Jamaica)" : "Anglais (Jamaïque)", + "English (Malta)" : "Anglais (Malte)", + "English (Marshall Islands)" : "Anglais (Îles Marshall)", + "English (Mauritius)" : "Anglais (Îles Maurice)", + "English (Namibia)" : "Anglais (Namibie)", + "English (New Zealand)" : "Anglais (Nouvelle-Zélande)", + "English (Northern Mariana Islands)" : "Anglais (Îles Mariannes du Nord)", + "English (Pakistan)" : "Anglais (Pakistan)", + "English (Philippines)" : "Anglais (Philippines)", + "English (Singapore)" : "Anglais (Singapour)", + "English (South Africa)" : "Anglais (Afrique du Sud)", + "English (Trinidad and Tobago)" : "Anglais (Trinité-et-Tobago)", + "English (U.S. Minor Outlying Islands)" : "Anglais (Îles mineures éloignées des États-Unis)", + "English (U.S. Virgin Islands)" : "Anglais (Îles Vierges américaines)", + "English (United Kingdom)" : "Anglais (Royaume-Uni)", + "English (United States)" : "Anglais (États-Unis)", + "English (Zimbabwe)" : "Anglais (Zimbabwe)", + "English" : "Anglais", + "Esperanto" : "Espéranto", + "Estonian (Estonia)" : "Estonien (Estonie)", + "Estonian" : "Estonien", + "Ewe (Ghana)" : "Ewe (Ghana)", + "Ewe (Togo)" : "Ewe (Togo)", + "Ewe" : "Éwé", + "Faroese (Faroe Islands)" : "Féroïen (Îles Féroé)", + "Faroese" : "Féroïen", + "Filipino (Philippines)" : "Philippin (Philippines)", + "Filipino" : "Philippin", + "Finnish (Finland)" : "Finnois (Finlande)", + "Finnish" : "Finnois", + "French (Belgium)" : "Français (Belgique)", + "French (Benin)" : "Français (Bénin)", + "French (Burkina Faso)" : "Français (Burkina Faso)", + "French (Burundi)" : "Français (Burundi)", + "French (Cameroon)" : "Français (Cameroun)", + "French (Canada)" : "Français (Canada)", + "French (Central African Republic)" : "Français (République centrafricaine)", + "French (Chad)" : "Français (Tchad)", + "French (Comoros)" : "Français (Comores)", + "French (Congo - Brazzaville)" : "Français (Congo - Brazzaville)", + "French (Congo - Kinshasa)" : "Français (Congo - Kinshasa)", + "French (Côte d’Ivoire)" : "Français (Côte d’Ivoire)", + "French (Djibouti)" : "Français (Djibouti)", + "French (Equatorial Guinea)" : "Français (Guinée Équatoriale)", + "French (France)" : "Français (France)", + "French (Gabon)" : "Français (Gabon)", + "French (Guadeloupe)" : "Français (Guadeloupe)", + "French (Guinea)" : "Français (Guinée)", + "French (Luxembourg)" : "Français (Luxembourg)", + "French (Madagascar)" : "Français (Madagascar)", + "French (Mali)" : "Français (Mali)", + "French (Martinique)" : "Français (Martinique)", + "French (Monaco)" : "Français (Monaco)", + "French (Niger)" : "Français (Niger)", + "French (Rwanda)" : "Français (Rwanda)", + "French (Réunion)" : "Français (Réunion)", + "French (Saint Barthélemy)" : "Français (Saint Barthélemy)", + "French (Saint Martin)" : "Français (Saint Martin)", + "French (Senegal)" : "Français (Sénégal)", + "French (Switzerland)" : "Français (Suisse)", + "French (Togo)" : "Français (Togo)", + "French" : "Français", + "Fulah (Senegal)" : "Fulah (Sénégal)", + "Fulah" : "Fulah", + "Galician (Spain)" : "Galicien (Espagne)", + "Galician" : "Galicien", + "Ganda (Uganda)" : "Ganda (Ouganda)", + "Ganda" : "Ganda", + "Georgian (Georgia)" : "Géorgien (Géorgie)", + "Georgian" : "Géorgien", + "German (Austria)" : "Allemand (Autriche)", + "German (Belgium)" : "Allemand (Belgique)", + "German (Germany)" : "Allemand (Allemagne)", + "German (Liechtenstein)" : "Allemand (Liechtenstein)", + "German (Luxembourg)" : "Allemand (Luxembourg)", + "German (Switzerland)" : "Allemand (Suisse)", + "German" : "Allemand", + "Greek (Cyprus)" : "Grec (Chypre)", + "Greek (Greece)" : "Grec (Grèce)", + "Greek" : "Grec", + "Gujarati (India)" : "Gujarati (Inde)", + "Gujarati" : "Gujarati", + "Gusii (Kenya)" : "Gusii (Kenya)", + "Gusii" : "Gusii", + "Hausa (Latin)" : "Haoussa (Latin)", + "Hausa (Latin, Ghana)" : "Haoussa (Latin, Ghana)", + "Hausa (Latin, Niger)" : "Haoussa (Latin, Niger)", + "Hausa (Latin, Nigeria)" : "Haoussa (Latin, Nigeria)", + "Hausa" : "Haoussa", + "Hawaiian (United States)" : "Hawaïen (États-Unis)", + "Hawaiian" : "Hawaïen", + "Hebrew (Israel)" : "Hébreu (Israël)", + "Hebrew" : "Hébreu", + "Hindi (India)" : "Hindi (Inde)", + "Hindi" : "Hindi", + "Hungarian (Hungary)" : "Hongrois (Hongrie)", + "Hungarian" : "Hongrois", + "Icelandic (Iceland)" : "Islandais (Islande)", + "Icelandic" : "Islandais", + "Igbo (Nigeria)" : "Igbo (Nigeria)", + "Igbo" : "Igbo", + "Indonesian (Indonesia)" : "Indonésien (Indonésie)", + "Indonesian" : "Indonésien", + "Irish (Ireland)" : "Irlandais (Irlande)", + "Irish" : "Irlandais", + "Italian (Italy)" : "Italien (Italie)", + "Italian (Switzerland)" : "Italien (Suisse)", + "Italian" : "Italien", + "Japanese (Japan)" : "Japonais (Japon)", + "Japanese" : "Japonais", + "Kabuverdianu (Cape Verde)" : "Créole du Cap-Vert (Cap-Vert)", + "Kabuverdianu" : "Créole du Cap-Vert", + "Kabyle (Algeria)" : "Kabyle (Algérie)", + "Kabyle" : "Kabyle", + "Kalaallisut (Greenland)" : "Groenlandais (Groenland)", + "Kalaallisut" : "Groenlandais", + "Kalenjin (Kenya)" : "Kalenjin (Kenya)", + "Kalenjin" : "Kalenjin", + "Kamba (Kenya)" : "Kamba (Kenya)", + "Kamba" : "Kamba", + "Kannada (India)" : "Kannada (Inde)", + "Kannada" : "Kannada", + "Kazakh (Cyrillic)" : "Kazakh (Cyrillique)", + "Kazakh (Cyrillic, Kazakhstan)" : "Kazakh (Cyrillique, Kazakhstan)", + "Kazakh" : "Kazakh", + "Khmer" : "Khmer", + "Korean (South Korea)" : "Coréen (Corée du Sud)", + "Korean" : "Coréen", + "Latvian" : "Letton", + "Lithuanian (Lithuania)" : "Lituanien (Lituanie)", + "Lithuanian" : "Lituanien", + "Macedonian (Macedonia)" : "Macédonien (Macédoine)", + "Macedonian" : "Macédonien", + "Malagasy (Madagascar)" : "Malgache (Madagascar)", + "Malagasy" : "Malgache", + "Malay" : "Malais", + "Malayalam" : "Malayalam", + "Maltese (Malta)" : "Maltais (Maltes)", + "Maltese" : "Maltais", + "Nepali (India)" : "Népalais (Inde)", + "Nepali (Nepal)" : "Népalais (Népal)", + "Norwegian Bokmål" : "Norvégien Bokmål", + "Oromo" : "Oromo", + "Persian (Afghanistan)" : "Perse (Afghanistan)", + "Persian" : "Persan", + "Polish (Poland)" : "Polonais (Pologne)", + "Polish" : "Polonais", + "Portuguese (Brazil)" : "Portugais (Brésil)", + "Portuguese (Guinea-Bissau)" : "Portugais (Guinée-Bissau)", + "Portuguese (Mozambique)" : "Portugais (Mozambique)", + "Portuguese (Portugal)" : "Portugais (Portugal)", + "Portuguese" : "Portuguais", + "Punjabi" : "Pendjabi", + "Romanian (Moldova)" : "Roumain (Moldavie)", + "Romanian (Romania)" : "Roumain (Roumanie)", + "Romanian" : "Roumain", + "Romansh (Switzerland)" : "Romanche (Suisse)", + "Romansh" : "Romanche", + "Russian (Moldova)" : "Russe (Moldavie)", + "Russian (Russia)" : "Russe (Russie)", + "Russian (Ukraine)" : "Russe (Ukraine)", + "Russian" : "Russe", + "Serbian (Cyrillic)" : "Serbe (Cyrillique)", + "Serbian (Cyrillic, Montenegro)" : "Serbe (Cyrillique, Monténégro)", + "Serbian (Latin)" : "Serbe (Latin)", + "Serbian" : "Serbe", + "Slovak" : "Slovaque", + "Slovenian" : "Slovène", + "Somali (Djibouti)" : "Somalien (Djibouti)", + "Somali (Ethiopia)" : "Somalien (Éthiopie)", + "Somali (Kenya)" : "Somalien (Kenya)", + "Somali (Somalia)" : "Somalien (Somalie)", + "Somali" : "Somalien", + "Spanish (Argentina)" : "Espagnol (Argentine)", + "Spanish (Bolivia)" : "Espagnol (Bolivie)", + "Spanish (Chile)" : "Espagnol (Chili)", + "Spanish (Colombia)" : "Espagnol (Colombie)", + "Spanish (Costa Rica)" : "Espagnol (Costa-Rica)", + "Spanish (Dominican Republic)" : "Espagnol (République Dominicaine)", + "Spanish (Ecuador)" : "Espagnol (Équateur)", + "Spanish (El Salvador)" : "Espagnol (Salvador)", + "Spanish (Equatorial Guinea)" : "Espagnol (Guinée Équatoriale)", + "Spanish (Guatemala)" : "Espagnol (Guatemala)", + "Spanish (Honduras)" : "Espagnol (Honduras)", + "Spanish (Latin America)" : "Espagnol (Amérique Latine)", + "Spanish (Mexico)" : "Espagnol (Mexique)", + "Spanish (Nicaragua)" : "Espagnol (Nicaragua)", + "Spanish (Panama)" : "Espagnol (Panama)", + "Spanish (Paraguay)" : "Espagnol (Paraguay)", + "Spanish (Peru)" : "Espagnol (Pérou)", + "Spanish (Puerto Rico)" : "Espagnol (Porto Rico)", + "Spanish (Spain)" : "Espagnol (Espagne)", + "Spanish (United States)" : "Espagnol (États-Unis)", + "Spanish (Uruguay)" : "Espagnol (Uruguay)", + "Spanish (Venezuela)" : "Espagnol (Venezuela)", + "Spanish" : "Espagnol", + "Swahili (Kenya)" : "Swahili (Kenya)", + "Swahili (Tanzania)" : "Swahili (Tanzanie)", + "Swahili" : "Swahili", + "Swedish (Finland)" : "Suédois (Finlande)", + "Swedish (Sweden)" : "Suédois (Suède)", + "Swedish" : "Suédois", + "Swiss German (Switzerland)" : "Suisse-Allemand (Suisse)", + "Swiss German" : "Suisse-Allemand", + "Tachelhit (Tifinagh, Morocco)" : "Tachelhit (Tifinagh, Maroc)", + "Tamil" : "Tamoul", + "Thai (Thailand)" : "Thaï (Thaïlande)", + "Thai" : "Thaï", + "Tibetan (China)" : "Tibétain (Chine)", + "Tibetan (India)" : "Tibétain (Inde)", + "Tibetan" : "Tibétain", + "Tonga (Tonga)" : "Tongien (Tonga)", + "Tonga" : "Tonga", + "Turkish (Turkey)" : "Turc (Turquie)", + "Turkish" : "Turc", + "Ukrainian (Ukraine)" : "Ukrainien (Ukraine)", + "Ukrainian" : "Ukrainien", + "Urdu" : "Ourdou", + "Uzbek (Arabic)" : "Ouzbek (Arabe)", + "Uzbek (Cyrillic)" : "Ouzbek (Cyrillique)", + "Uzbek (Latin)" : "Ouzbek (Latin)", + "Uzbek" : "Ouzbek", + "Vietnamese (Vietnam)" : "Vietnamien (Vietnam)", + "Vietnamese" : "Vietnamien", + "Welsh" : "Gallois", + "Yoruba" : "Yoruba", + "Zulu (South Africa)" : "Zoulou (Afrique du Sud)", + "Zulu" : "Zoulou", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "L'authentification à deux facteurs peut être spécifiée pour tous les \tutilisateurs et groupes spécifiques. S'ils n'ont pas de fournisseur à deux facteurs configuré, ils seront dans l'incapacité de se connecter au système.", + "Enforce two-factor authentication" : "Imposer l'authentification à deux facteurs", + "Limit to groups" : "Limiter aux groupes", + "Enforcement of two-factor authentication can be set for certain groups only." : "L'application de l'authentification à deux facteurs ne peut être définie que pour certains groupes.", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "L'authentification à deux facteurs est appliquée aux membres des groupes suivants.", + "Enforced groups" : "Groupes forcés", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "L'authentification à deux facteurs n'est pas appliquée aux \tutilisateurs des groupes suivants.", + "Excluded groups" : "Groupes exclus", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "Lorsque des groupes sont sélectionnés/exclus, la logique suivante est utilisée pour déterminer si un utilisateur a activé l'authentification double facteur (2FA). Si aucun groupe n'est sélectionné, l'authentification double facteur (2FA) est activé pour tout le monde sauf pour les membres des groupes exclus. Si des groupes sont sélectionnés, l'authentification double facteur (2FA) est activé pour tous les membres de ces groupes. Si un utilisateur est à la fois dans un groupe sélectionné et exclus, c'est le groupe sélectionné qui prime et l'authentification double facteur (2FA) est appliquée.", + "Save changes" : "Enregistrer les modifications", + "Marked for remote wipe" : "Marqué pour l'effaçage distant", + "Device settings" : "Paramètres de l'appareil", + "Allow filesystem access" : "Autoriser l'accès au gestionnaire de fichiers", + "Rename" : "Renommer", + "Revoke" : "Révoquer", + "Wipe device" : "Effacer l'appareil", + "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Révoquer ce jeton peut empêcher l'effacement de votre appareil s'il n'a pas encore démarré l'effacement.", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome pour Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Application iOS Nextcloud", + "Nextcloud Android app" : "Application Android Nextcloud", + "Nextcloud Talk for iOS" : "Nextcloud Talk pour iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk pour Android", + "Sync client - {os}" : "Client de synchronisation - {os}", + "This session" : "Cette session", + "Device" : "Appareil", + "Last activity" : "Dernière activité", + "Devices & sessions" : "Appareils & sessions", + "Web, desktop and mobile clients currently logged in to your account." : "Clients web, applications de bureau et mobiles actuellement connectés avec votre compte.", + "Do you really want to wipe your data from this device?" : "Voulez-vous vraiment supprimer vos données de cet appareil ?", + "Confirm wipe" : "Confirmer la supression", + "Error while creating device token" : "Erreur lors de la création du jeton de l'appareil", + "Error while updating device token scope" : "Erreur lors de la mise à jour du jeton de l'appareil", + "Error while updating device token name" : "Erreur lors de la mise à jour du nom du jeton", + "Error while deleting the token" : "Erreur lors de la suppression du jeton", + "Error while wiping the device with the token" : "Erreur lors de l'effaçage de l'appareil avec le jeton", + "App name" : "Nom de l'application", + "Create new app password" : "Créer un nouveau mot de passe d'application", + "Use the credentials below to configure your app or device." : "Utilisez les informations d'identification ci-dessous pour configurer votre application ou appareil.", + "For security reasons this password will only be shown once." : "Pour des raisons de sécurité, ce mot de passe ne sera affiché qu'une seule fois.", + "Username" : "Nom d'utilisateur", + "Password" : "Mot de passe", + "Done" : "Terminé", + "Show QR code for mobile apps" : "Afficher le QR code pour les applications mobiles", + "Copied!" : "Copié !", + "Copy" : "Copier", + "Could not copy app password. Please copy it manually." : "Impossible de copier le mot de passe de l'application. Merci de le copier manuellement.", + "This app is supported via your current Nextcloud subscription." : "Vous supportez cette application grâce à votre abonnement Nextcloud.", + "Supported" : "Pris en charge", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Les applications officielles sont développées par et dans la communauté. Elles offrent les fonctionnalités indispensables et sont prêtes pour être utilisées en production.", + "Official" : "Officielle", + "by" : "par", + "Update to {version}" : "Mise à jour vers {version}", + "Remove" : "Supprimer", + "Disable" : "Désactiver", + "All" : "Tous", + "Limit app usage to groups" : "Limiter l'utilisation de l'application aux groupes", + "No results" : "Aucun résultat", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Cette application n'a pas de version minimum Nextcloud exigée. Ce sera considéré comme une erreur à l'avenir.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Cette application n'a pas de version maximum Nextcloud exigée. Ce sera considéré comme une erreur à l'avenir.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Cette application ne peut être installée à cause de ces dépendances non satisfaites :", + "View in store" : "Afficher dans le magasin d'application", + "Visit website" : "Visiter le site web", + "Report a bug" : "Signaler un bogue", + "User documentation" : "Documentation utilisateur", + "Admin documentation" : "Documentation administrateur", + "Developer documentation" : "Documentation pour développeurs", + "Update to {update}" : "Mise à jour vers {update}", + "Results from other categories" : "Résultats d'autres catégories", + "No apps found for your version" : "Pas d'application trouvée pour votre version", + "Disable all" : "Tout désactiver", + "Enable all" : "Tout activer", + "Download and enable" : "Télécharger et activer", + "Enable" : "Activer", + "Enable untested app" : "Activer les app non-testées", + "The app will be downloaded from the app store" : "Cette application va être téléchargée depuis l'app store", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Cette application n'est pas indiquée comme étant compatible avec votre version de Nextcloud. Si vous continuez vous pourrez toujours installer l'app. Notez cependant qu'elle pourrait ne pas fonctionner comme prévu.", + "You do not have permissions to see the details of this user" : "Vous n'avez pas les autorisations pour voir le détail de cet utilisateur", + "The backend does not support changing the display name" : "Le backend ne prend pas en charge la modification du nom d'affichage", + "New password" : "Nouveau mot de passe", + "Add user in group" : "Ajouter un utilisateur au groupe", + "Set user as admin for" : "Définir en tant qu'administrateur pour", + "Select user quota" : "Sélectionner le quota de l'utilisateur ", + "No language set" : "Aucune langue définie", + "Never" : "Jamais", + "Delete user" : "Supprimer l'utilisateur", + "Wipe all devices" : "Effacer tous les appareils", + "Disable user" : "Désactiver l'utilisateur", + "Enable user" : "Activer l'utilisateur", + "Resend welcome email" : "Renvoyer l'e-mail de bienvenue", + "{size} used" : "{size} utilisé", + "Welcome mail sent!" : "E-mail de bienvenue envoyé !", + "Display name" : "Nom à afficher", + "Email" : "Adresse e-mail", + "Group admin for" : "Administrateur de groupe pour", + "Quota" : "Quota", + "Language" : "Langue", + "Storage location" : "Emplacement du stockage", + "User backend" : "Retour utilisateur", + "Last login" : "Dernière connexion", + "Will be autogenerated" : "Sera généré automatiquement", + "Default language" : "Langue par défaut", + "Add a new user" : "Ajouter un nouvel utilisateur", + "No users in here" : "Aucun utilisateur", + "Default quota" : "Quota par défaut", + "Password change is disabled because the master key is disabled" : "Le changement de mot de passe est désactivé car la clé principale est désactivée", + "Common languages" : "Langues communes", + "All languages" : "Toutes les langues", + "Your apps" : "Vos applications", + "Active apps" : "Applications actives", + "Disabled apps" : "Applications désactivées", + "Updates" : "Mises à jour", + "App bundles" : "Pack d'applications", + "{license}-licensed" : "{license}-Sous licence", + "New user" : "Nouvel utilisateur", + "Default quota:" : "Quota par défaut :", + "Select default quota" : "Sélectionner le quota par défaut", + "Show Languages" : "Afficher les langues", + "Show last login" : "Montrer la dernière connexion", + "Show user backend" : "Montrer la source de l'identifiant", + "Show storage path" : "Afficher le chemin du stockage", + "You are about to remove the group {group}. The users will NOT be deleted." : "Vous êtes sur le point de supprimer le groupe {group}. Les utilisateurs ne seront PAS supprimés.", + "Please confirm the group removal " : "Veuillez confirmer la suppression du groupe", + "Remove group" : "Supprimer le groupe", + "Admins" : "Administrateurs", + "Disabled users" : "Utilisateurs désactivés", + "Everyone" : "Tout le monde", + "Add group" : "Ajouter un groupe", + "An error occured during the request. Unable to proceed." : "Une erreur est survenue durant la requête. Impossible de traiter la demande.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "L'application a été activée mais doit être mise à jour. Vous allez être redirigé vers la page des mises à jour dans 5 secondes.", + "App update" : "Mise à jour de l'application", + "Error: This app can not be enabled because it makes the server unstable" : "Erreur : Cette application ne peut pas être activée car cela rend le serveur instable.", + "SSL Root Certificates" : "Certificats Racines SSL", + "Common Name" : "Nom d'usage", + "Valid until" : "Valide jusqu'à", + "Issued By" : "Délivré par", + "Valid until %s" : "Valide jusqu'à %s", + "Import root certificate" : "Importer un certificat racine", + "Administrator documentation" : "Documentation administrateur", + "Documentation" : "Documentation", + "Forum" : "Forum", + "None" : "Aucun", + "Login" : "Login", + "Plain" : "En clair", + "NT LAN Manager" : "Gestionnaire du réseau NT", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Serveur e-mail", + "Open documentation" : "Voir la documentation", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Il est important d'indiquer un serveur afin de pouvoir envoyer des mails en cas de perte de mot de passe et pour d'autres notifications.", + "Send mode" : "Mode d'envoi", + "Encryption" : "Chiffrement", + "Sendmail mode" : "mode Sendmail", + "From address" : "Adresse source", + "mail" : "e-mail", + "Authentication method" : "Méthode d'authentification", + "Authentication required" : "Authentification requise", + "Server address" : "Adresse du serveur", + "Port" : "Port", + "Credentials" : "Informations d'identification", + "SMTP Username" : "Nom d'utilisateur SMTP", + "SMTP Password" : "Mot de passe SMTP", + "Save" : "Enregistrer", + "Test email settings" : "Tester les paramètres e-mail", + "Send email" : "Envoyer un e-mail", + "Security & setup warnings" : "Avertissements de sécurité & configuration", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Il est important pour la sécurité et la performance de votre instance que celle-ci soit correctement configurée. Afin de vous aider, votre instance Nextcloud effectue des vérifications automatiques. Pour de plus amples informations, veuillez consulter la documentation liée.", + "All checks passed." : "Tous les tests ont réussi.", + "There are some errors regarding your setup." : "Il y a quelques erreurs concernant votre configuration.", + "There are some warnings regarding your setup." : "Il y a quelques avertissements concernant votre configuration.", + "Checking for system and security issues." : "Vérification des problèmes de système et de sécurité.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Merci de consulter les <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">guides d'installation ↗</a> et de vérifier les erreurs ou avertissements des <a href=\"%2$s\">logs</a>.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Vérifier la sécurité de votre Nextcloud grâce à <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">notre scan de sécurité ↗</a>", + "Version" : "Version", + "Two-Factor Authentication" : "Authentification en deux étapes", + "Server-side encryption" : "Chiffrement côté serveur", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Le chiffrement côté serveur permet de chiffrer les fichiers qui sont téléversés sur ce serveur. Cela implique des limitations comme une performance moindre, donc activez-le seulement si nécessaire.", + "Enable server-side encryption" : "Activer le chiffrement côté serveur", + "Please read carefully before activating server-side encryption: " : "Veuillez lire ceci avec attention avant d'activer le chiffrement :", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Une fois le chiffrement activé, les fichiers téléversés sur le serveur à partir de ce moment seront stockés sous forme chiffrée. Il n'est possible de désactiver le chiffrement que si le module utilisé le permet spécifiquement, et que toutes les conditions préalables sont réunies pour ce faire (par exemple la création d'une clef de récupération).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Le chiffrement seul ne garantit pas la sécurité du système. Veuillez consulter la documentation pour plus d'informations à propos du fonction de l'application de chiffrement, et des cas d'utilisations supportés.", + "Be aware that encryption always increases the file size." : "Veuillez noter que le chiffrement augmente toujours la taille des fichiers.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Il est opportun de sauvegarder régulièrement vos données. Si ces données sont chiffrées, n'oubliez pas de sauvegarder aussi les clés de chiffrement.", + "This is the final warning: Do you really want to enable encryption?" : "Dernier avertissement : Voulez-vous vraiment activer le chiffrement ?", + "Enable encryption" : "Activer le chiffrement", + "No encryption module loaded, please enable an encryption module in the app menu." : "Aucun module de chiffrement n'est chargé. Merci d'activer un module de chiffrement dans le menu des applications.", + "Select default encryption module:" : "Sélectionnez le module de chiffrement par défaut :", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Vous devez migrer vos clés de chiffrement de l'ancienne version (ownCloud <= 8.0) vers la nouvelle. Veuillez activer l'application \"Default Encryption Module\" et exécuter 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Vous devez migrer vos clés de chiffrement de l'ancienne version (ownCloud <= 8.0) vers la nouvelle.", + "Start migration" : "Démarrer la migration", + "Background jobs" : "Tâches de fond", + "Last job ran %s." : "Dernière tâche exécutée %s.", + "Last job execution ran %s. Something seems wrong." : "Quelque chose s'est mal passé lors de l'exécution de la dernière tâche %s.", + "Background job didn’t run yet!" : "La tâche de fond n'a pas encore tourné!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Afin d'optimiser au mieux la performance de votre instance, il est important de configurer correctement les travaux en arrière-plan. 'Cron' est le paramètre recommandé pour les instances de taille importante. Veuillez vous référer à la documentation Nextcloud pour plus d'informations à ce sujet.", + "Pick background job setting" : "Définir les paramètres pour la tâche d'arrière-plan", + "Execute one task with each page loaded" : "Exécute une tâche à chaque chargement de page", + "The cron.php needs to be executed by the system user \"%s\"." : "Le cron.php doit être exécuté par l'utilisateur système \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Pour l'exécuter, vous devez avoir l'extension PHP POSIX. Regarder la {linkstart}documentation PHP{linkend} pour plus de détails.", + "Sharing" : "Partage", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "En tant qu'administrateur, vous pouvez affiner le comportement de partage. Veuillez consulter la documentation pour plus d'informations.", + "Allow apps to use the Share API" : "Autoriser les applications à utiliser l'API de partage", + "Allow users to share via link" : "Autoriser les utilisateurs à partager par lien", + "Allow public uploads" : "Autoriser les téléversements publics", + "Always ask for a password" : "Toujours demander un mot de passe", + "Enforce password protection" : "Imposer la protection renforcée du mot de passe", + "Set default expiration date" : "Indiquer une date d'expiration par défaut", + "Expire after " : "Expiration après ", + "days" : "jours", + "Enforce expiration date" : "Imposer la date d'expiration", + "Allow resharing" : "Autoriser le repartage", + "Allow sharing with groups" : "Autoriser le partage avec les groupes", + "Restrict users to only share with users in their groups" : "N'autoriser les partages qu'entre membres de mêmes groupes", + "Exclude groups from sharing" : "Empêcher certains groupes de partager", + "These groups will still be able to receive shares, but not to initiate them." : "Ces groupes ne pourront plus initier de partage, mais ils pourront toujours rejoindre les partages faits par d'autres. ", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Activer l'autocomplétion des noms d'utilisateurs dans la fenêtre de partage. Si cette option est désactivée, les noms complets ou les adresses e-mail doivent être indiqués.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Afficher les conditions d'utilisation sur la page publique de téléversement (seulement lorsque la liste des fichiers est masquée).", + "This text will be shown on the public link upload page when the file list is hidden." : "Ce texte sera affiché sur la page publique de téléversement lorsque la liste des fichiers est masquée.", + "Default share permissions" : "Autorisations de partage par défaut", + "Personal" : "Personnel", + "Administration" : "Administration", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Développé par la {communityopen}communauté Nextcloud{linkclose}, le {githubopen}code source{linkclose} est sous licence {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Aimez notre page Facebook", + "Follow us on Twitter" : "Suivez-nous sur Twitter", + "Follow us on Mastodon" : "Suivez-nous sur Mastodon", + "Check out our blog" : "Découvrez notre blog", + "Subscribe to our newsletter" : "Abonnez-vous à notre lettre d'information", + "Profile picture" : "Photo de profil", + "Upload new" : "Nouvelle depuis votre ordinateur", + "Select from Files" : "Sélectionner depuis les Fichiers", + "Remove image" : "Supprimer l'image", + "png or jpg, max. 20 MB" : "png ou jpg, max. 20 Mo", + "Picture provided by original account" : "Photo fournie par le compte original", + "Cancel" : "Annuler", + "Choose as profile picture" : "Définir comme image de profil", + "Details" : "Détails", + "You are a member of the following groups:" : "Vous êtes un membre des groupes suivants :", + "You are using <strong>%s</strong>" : "Vous utilisez <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Vous utilisez <strong>%1$s</strong> sur <strong>%2$s</strong> (<strong>%3$s%% </strong>)", + "Full name" : "Nom complet", + "No display name set" : "Aucun nom d'affichage configuré", + "Your email address" : "Votre adresse e-mail", + "No email address set" : "Aucune adresse e-mail configurée", + "For password reset and notifications" : "Pour la réinitialisation du mot de passe et les notifications", + "Phone number" : "Numéro de téléphone", + "Your phone number" : "Votre numéro de téléphone", + "Address" : "Adresse", + "Your postal address" : "Votre adresse postale", + "Website" : "Site web", + "It can take up to 24 hours before the account is displayed as verified." : "Cela peut prendre jusqu'à 24 heures avant que le compte soit affiché comme vérifié.", + "Link https://…" : "Lien https://…", + "Twitter" : "Twitter", + "Twitter handle @…" : "Pseudo Twitter @...", + "Help translate" : "Aidez à traduire", + "Locale" : "Paramètres régionaux", + "Current password" : "Mot de passe actuel", + "Change password" : "Changer de mot de passe", + "Use a second factor besides your password to increase security for your account." : "Utiliser un second facteur d'authentification en plus de votre mot de passe pour augmenter la sécurité de votre compte.", + "Disconnect" : "Se déconnecter", + "Not supported!" : "Non supporté !", + "Press ⌘-C to copy." : "Appuyez sur ⌘-C pour copier.", + "Press Ctrl-C to copy." : "Appuyez sur Ctrl + C pour copier.", + "Error while loading browser sessions and device tokens" : "Erreur lors du chargement des jetons de la session du navigateur et de l'appareil", + "Store credentials" : "Enregistrer les identifiants", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php est enregistré à un service webcron pour exécuter cron.php toutes les 15 minutes par HTTP.", + "Use system cron service to call the cron.php file every 15 minutes." : "Utiliser le service cron du système pour appeler le fichier cron.php toutes les 15 minutes.", + "Follow us on Google+" : "Nous suivre sur Google+" +},"pluralForm" :"nplurals=2; plural=(n > 1);" +} \ No newline at end of file diff --git a/apps/settings/l10n/gl.js b/apps/settings/l10n/gl.js new file mode 100644 index 00000000000..d7aa419eedf --- /dev/null +++ b/apps/settings/l10n/gl.js @@ -0,0 +1,823 @@ +OC.L10N.register( + "settings", + { + "{actor} added you to group {group}" : "{actor} engadiuno ao grupo {group}", + "You added {user} to group {group}" : "Vostede engadiu a {actor} ao grupo {group}", + "{actor} added {user} to group {group}" : "{actor} engadiu a {user} ao grupo {group}", + "An administrator added you to group {group}" : "Un administrador engadiuno ao grupo {group} ", + "An administrator added {user} to group {group}" : "Un administrador engadiu a {user} ao grupo {group}", + "{actor} removed you from group {group}" : "{actor} retirouno do grupo {group}", + "You removed {user} from group {group}" : "Vostede retirou a {user} do grupo {group}", + "{actor} removed {user} from group {group}" : "{actor} retirou a {user} do grupo {group}", + "An administrator removed you from group {group}" : "Un administrador retirouno do grupo {group} ", + "An administrator removed {user} from group {group}" : "Un administrador retirou a {user} do grupo {group}", + "Your <strong>group memberships</strong> were modified" : "Foron modificados os <strong>membros do seu grupo</strong>", + "{actor} changed your password" : "{actor} cambiou o seu contrasinal", + "You changed your password" : "Vostede cambiou o seu contrasinal", + "Your password was reset by an administrator" : "O seu contrasinal foi restabelecido por un administrador", + "{actor} changed your email address" : "{actor} cambiou o seu enderezo de correo", + "You changed your email address" : "Vostede cambiou o seu enderezo de correo", + "Your email address was changed by an administrator" : "O seu enderezo de correo foi cambiado por un administrador", + "You created app password \"{token}\"" : "Vostede creou o contrasinal da aplicación «{token}»", + "You deleted app password \"{token}\"" : "Vostede eliminou o contrasinal da aplicación «{token}»", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Vostede renomeou o contrasinal da aplicación «{token}» como «{newToken}»", + "You granted filesystem access to app password \"{token}\"" : "Vostede concedeu acceso ao sistema de ficheiros ao contrasinal da aplicación «{token}»", + "You revoked filesystem access from app password \"{token}\"" : "Vostede revogou o acceso ao sistema de ficheiros dende o contrasinal da aplicación «{token}»", + "Security" : "Seguridade", + "You successfully logged in using two-factor authentication (%1$s)" : "Accedeu satisfactoriamente usando autenticación de dous factores (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Fallou un intento de acceso usando autenticación de dous factores (%1$s)", + "Remote wipe was started on %1$s" : "Iniciouse a limpeza remota en %1$s", + "Remote wipe has finished on %1$s" : "Rematou a limpeza remota en %1$s", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Foi modificado o seu <strong>contrasinal</strong> ou o seu <strong>correo electrónico</strong>", + "Couldn't remove app." : "Non foi posíbel retirar a aplicación.", + "Couldn't update app." : "Non foi posíbel actualizar a aplicación.", + "Wrong password" : "Contrasinal incorrecto", + "Saved" : "Gardado", + "No user supplied" : "Non subministrado polo usuario", + "Unable to change password" : "Non é posíbel cambiar o contrasinal", + "Authentication error" : "Produciuse un erro de autenticación", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Forneza un contrasinal de recuperación de administrador; senón perderase toda a información do usuario.", + "Wrong admin recovery password. Please check the password and try again." : "Contrasinal de recuperación do administrador incorrecto. Comprobe o contrasinal e ténteo de novo.", + "Backend doesn't support password change, but the user's encryption key was updated." : "A infraestrutura non admite o cambio de contrasinal, mais a chave de cifrado do usuario foi actualizada.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "instalando e actualizando aplicacións mediante a tenda de aplicacións ou da nube federada compartida", + "Federated Cloud Sharing" : "Nube federada compartida", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL está utilizando unha versión obsoleta %1$s (%2$s). Actualice o seu sistema operativo, caso contrario características como %3$s non funcionarán de xeito fiábel.", + "Invalid SMTP password." : "Contrasinal SMTP incorrecta.", + "Email setting test" : "Proba do axuste do correo", + "Well done, %s!" : "Ben feito, %s!", + "If you received this email, the email configuration seems to be correct." : "Se vostede ten recibido este correo, a configuración do correo semella ser correcta. ", + "Email could not be sent. Check your mail server log" : "Non foi posíbel enviar o correo. Comproba o rexistro do servidor de correo", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Ocorreu un problema ao enviar o correo. Revise a súa configuración. (Erro: %s)", + "You need to set your user email before being able to send test emails." : "É necesario configurar o correo do usuario antes de poder enviar mensaxes de correo de proba.", + "Invalid mail address" : "Enderezo de correo incorrecto", + "Settings saved" : "Axustes gardados", + "Unable to change full name" : "Non é posíbel cambiar o nome completo", + "Unable to change email address" : "Non é posíbel cambiar o enderezo de correo.", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Para poder verificar a súa conta de Twitter, publique o seguinte chío en Twitter (asegúrese de publicar sen ningún salto de liña):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Para poder verificar o seu sitio Web, engada o seguinte contido ao seu web-root en «.well-known/CloudIdVerificationCode.txt» (asegúrese de que o texto completo estea só nunha liña):", + "%1$s changed your password on %2$s." : "%1$s cambiou o seu contrasinal en %2$s.", + "Your password on %s was changed." : "Foi cambiado o seu contrasinal en %s.", + "Your password on %s was reset by an administrator." : "O seu contrasinal en %s foi restabelecido por un administrador", + "Password for %1$s changed on %2$s" : "Contrasinal para %1$s cambiado en %2$s", + "Password changed for %s" : "Contrasinal cambiado por %s", + "If you did not request this, please contact an administrator." : "Se vostede non solicitou isto, póñase en contacto co administrador.", + "Your email address on %s was changed." : "Foi cambiado o seu enderezo de correo en %s.", + "Your email address on %s was changed by an administrator." : "O seu enderezo de correo en %s foi cambiado por un administrador", + "Email address for %1$s changed on %2$s" : "Enderezo de correo para %1$s cambiado en %2$s", + "Email address changed for %s" : "Enderezo de correo cambiado por %s", + "The new email address is %s" : "O novo enderezo de correo é %s", + "Your %s account was created" : "Foi creada a conta %s", + "Welcome aboard" : "Benvido a bordo", + "Welcome aboard %s" : "Benvido a bordo %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Benvido á súa conta , pode engadir, protexer e compartir os seus datos.", + "Your username is: %s" : "O seu nome de usuario é: %s", + "Set your password" : "Estabeleza o seu contrasinal", + "Go to %s" : "Ira a %s", + "Install Client" : "Instalar o cliente", + "Logged in user must be a subadmin" : "O usuario rexistrado debe ser un subadministrador", + "Create" : "Crear", + "Change" : "Cambiar", + "Delete" : "Eliminar", + "Share" : "Compartir", + "Unlimited" : "Sen límites", + "Verifying" : "Verificando", + "Verifying …" : "Verificando…", + "Verify" : "Verificar", + "Migration in progress. Please wait until the migration is finished" : "A migración está en proceso. Agarde a que remate.", + "Migration started …" : "Iniciada a migración ...", + "Not saved" : "Sen gardar", + "Sending…" : "Enviando...", + "Email sent" : "Correo enviado", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Produciuse un erro. Envíe un certificado PEM codificado en ASCII.", + "Valid until {date}" : "Válido ata {date}", + "Local" : "Local", + "Private" : "Privado", + "Only visible to local users" : "Visíbel só para usuarios locais", + "Only visible to you" : "Visíbel só para vostede", + "Contacts" : "Contactos", + "Visible to local users and to trusted servers" : "Visíbel para usuarios locais e para servidores de confianza", + "Public" : "Público", + "Will be synced to a global and public address book" : "Vai ser sincronizado cun caderno de enderezos global e público", + "Very weak password" : "Contrasinal moi feble", + "Weak password" : "Contrasinal feble", + "So-so password" : "Contrasinal non moi aló", + "Good password" : "Bo contrasinal", + "Strong password" : "Contrasinal forte", + "An error occurred while changing your language. Please reload the page and try again." : "Produciuse un erro ao cambiar o seu idioma. Actualice a páxina e tenteo de novo.", + "An error occurred while changing your locale. Please reload the page and try again." : "Produciuse un erro ao cambiar a súa configuración rexional. Actualice a páxina e tenteo de novo.", + "Select a profile picture" : "Seleccione unha imaxe para o perfil", + "Week starts on {fdow}" : "A semana comeza o {fdow}", + "Groups" : "Grupos", + "Group list is empty" : "A lista de grupos está baleira", + "Unable to retrieve the group list" : "Non é posíbel recuperar a lista de grupos", + "Afrikaans (Namibia)" : "Africáner (Namibia)", + "Afrikaans (South Africa)" : "Africáner (Suráfrica)", + "Afrikaans" : "Africáner", + "Akan (Ghana)" : "Akan (Ghana)", + "Akan" : "Akan", + "Albanian (Albania)" : "Albanés (Albania)", + "Albanian" : "Albanés", + "Amharic (Ethiopia)" : "Amhárico (Etiopía)", + "Amharic" : "Amhárico", + "Arabic (Algeria)" : "Árabe (Alxeria)", + "Arabic (Bahrain)" : "Árabe (Barein)", + "Arabic (Egypt)" : "Árabe (Exipto)", + "Arabic (Iraq)" : "Árabe (Iraq)", + "Arabic (Jordan)" : "Árabe (Xordania)", + "Arabic (Kuwait)" : "Árabe (Kuvait)", + "Arabic (Lebanon)" : "Árabe (Líbano)", + "Arabic (Libya)" : "Árabe (Libia)", + "Arabic (Morocco)" : "Árabe (Marrocos)", + "Arabic (Oman)" : "Árabe (Omán)", + "Arabic (Qatar)" : "Árabe (Catar)", + "Arabic (Saudi Arabia)" : "Árabe (Arabia Saudita)", + "Arabic (Sudan)" : "Árabe (Sudán)", + "Arabic (Syria)" : "Árabe (Siria)", + "Arabic (Tunisia)" : "Árabe (Tunisia)", + "Arabic (United Arab Emirates)" : "Árabe (Emiratos Árabes Unidos)", + "Arabic (Yemen)" : "Árabe (Iemen)", + "Arabic" : "Árabe", + "Armenian (Armenia)" : "Armenio (Armenia)", + "Armenian" : "Armenio", + "Assamese (India)" : "Asamés (India)", + "Assamese" : "Asamés", + "Asu (Tanzania)" : "Asu (Tanzania)", + "Asu" : "Asu", + "Azerbaijani (Cyrillic)" : "Azerí (Cirílico)", + "Azerbaijani (Cyrillic, Azerbaijan)" : "Azerí (Cirílico, Acerbaixán)", + "Azerbaijani (Latin)" : "Azerí (Latín)", + "Azerbaijani (Latin, Azerbaijan)" : "Azerí (Latín, Acerbaixán)", + "Azerbaijani" : "Azerí", + "Bambara (Mali)" : "Bambara (Malí)", + "Bambara" : "Bambara", + "Basque (Spain)" : "Éuscaro (España)", + "Basque" : "Éuscaro", + "Belarusian (Belarus)" : "Bieloruso (Bielorrusia)", + "Belarusian" : "Bieloruso", + "Bemba (Zambia)" : "Bemba (Zambia)", + "Bemba" : "Bemba", + "Bena (Tanzania)" : "Bena (Tanzania)", + "Bena" : "Bena", + "Bengali (Bangladesh)" : "Bengalí (Bangladesh)", + "Bengali (India)" : "Bengalí (India)", + "Bengali" : "Bengalí", + "Bosnian (Bosnia and Herzegovina)" : "Bosnio (Bosnia e Herzegovina)", + "Bosnian" : "Bosnio", + "Bulgarian (Bulgaria)" : "Búlgaro (Bulgaria)", + "Bulgarian" : "Búlgaro", + "Burmese (Myanmar [Burma])" : "Burmés (Mianmar [Burma])", + "Burmese" : "Burmés", + "Catalan (Spain)" : "Catalán (España)", + "Catalan" : "Catalán", + "Central Morocco Tamazight (Latin)" : "Tamazight do Marrocos Central (Latín)", + "Central Morocco Tamazight (Latin, Morocco)" : "Tamazight do Marrocos Central (Latín, Marrocos)", + "Central Morocco Tamazight" : "Tamazight do Marrocos Central", + "Cherokee (United States)" : "Cherokee (Estados Unidos)", + "Cherokee" : "Cherokee", + "Chiga (Uganda)" : "Chiga (Uganda)", + "Chiga" : "Chiga", + "Chinese (Simplified Han)" : "Chinés (Han simplificado)", + "Chinese (Simplified Han, China)" : "Chinés (Han simplificado, China)", + "Chinese (Simplified Han, Hong Kong SAR China)" : "Chinés (Han simplificado, Hong Kong RAE de China)", + "Chinese (Simplified Han, Macau SAR China)" : "Chinés (Han simplificado, Macao RAE de China)", + "Chinese (Simplified Han, Singapore)" : "Chinés (Han simplificado, Singapur)", + "Chinese (Traditional Han)" : "Chinés (Han tradicional)", + "Chinese (Traditional Han, Hong Kong SAR China)" : "Chinés (Han tradicional, Hong Kong RAE de China)", + "Chinese (Traditional Han, Macau SAR China)" : "Chinés (Han tradicional, Macao RAE de China)", + "Chinese (Traditional Han, Taiwan)" : "Chinés (Han tradicional, Taiwán)", + "Chinese" : "Chinés", + "Cornish (United Kingdom)" : "Córnico (Reino Únido)", + "Cornish" : "Córnico", + "Croatian (Croatia)" : "Croata (Croacia)", + "Croatian" : "Croata", + "Czech (Czech Republic)" : "Checo (República Checa)", + "Czech" : "Checo", + "Danish (Denmark)" : "Danés (Dinamarca)", + "Danish" : "Danés", + "Dutch (Belgium)" : "Holandés (Belxica)", + "Dutch (Netherlands)" : "Holandés (Países Baixos)", + "Dutch" : "Holandés", + "Embu (Kenya)" : "Embu (Quenia)", + "Embu" : "Embu", + "English (American Samoa)" : "Inglés (Samoa americana)", + "English (Australia)" : "Inglés (Australia)", + "English (Belgium)" : "Inglés (Belxica)", + "English (Belize)" : "Inglés (Belice)", + "English (Botswana)" : "Inglés (Botsuana)", + "English (Canada)" : "Inglés (Canada)", + "English (Guam)" : "Inglés (Guam)", + "English (Hong Kong SAR China)" : "Inglés (Hong Kong RAE China)", + "English (India)" : "Inglés (India)", + "English (Ireland)" : "Inglés (Irlanda)", + "English (Jamaica)" : "Inglés (Xamaica)", + "English (Malta)" : "Inglés (Malta)", + "English (Marshall Islands)" : "Inglés (Illas Marshall)", + "English (Mauritius)" : "Inglés (Mauricio)", + "English (Namibia)" : "Inglés (Namibia)", + "English (New Zealand)" : "Inglés (Nova Celandia)", + "English (Northern Mariana Islands)" : "Inglés (Illas Marianas do Norte)", + "English (Pakistan)" : "Inglés (Paquistán)", + "English (Philippines)" : "Inglés (Filipinas)", + "English (Singapore)" : "Inglés (Singapur)", + "English (South Africa)" : "Inglés (Suráfrica)", + "English (Trinidad and Tobago)" : "Inglés (Trinidade e Tobago)", + "English (U.S. Minor Outlying Islands)" : "Inglés (Illas exteriores menores dos EE.UU.)", + "English (U.S. Virgin Islands)" : "Inglés (Illas Virxes dos EE.UU.)", + "English (United Kingdom)" : "Inglés (Reino Únido)", + "English (United States)" : "Inglés (Estados Unidos)", + "English (Zimbabwe)" : "Inglés (Cimbabue)", + "English" : "Inglés", + "Esperanto" : "Esperanto", + "Estonian (Estonia)" : "Estonio (Estonia)", + "Estonian" : "Estonio", + "Ewe (Ghana)" : "Eues (Ghana)", + "Ewe (Togo)" : "Eues (Togo)", + "Ewe" : "Eues", + "Faroese (Faroe Islands)" : "Feroés (Illas Feroes)", + "Faroese" : "Feroés", + "Filipino (Philippines)" : "Filipino (Filipinas)", + "Filipino" : "Filipino", + "Finnish (Finland)" : "Finés (Finlandia)", + "Finnish" : "Finés", + "French (Belgium)" : "Francés (Belxica)", + "French (Benin)" : "Francés (Benín)", + "French (Burkina Faso)" : "Francés (Burkina Faso)", + "French (Burundi)" : "Francés (Burundi)", + "French (Cameroon)" : "Francés (Camerún)", + "French (Canada)" : "Francés (Canada)", + "French (Central African Republic)" : "Francés (República Centro Africana)", + "French (Chad)" : "Francés (Chad)", + "French (Comoros)" : "Francés (Comores)", + "French (Congo - Brazzaville)" : "Francés (Congo - Brazzaville)", + "French (Congo - Kinshasa)" : "Francés (Congo - Quinxasa)", + "French (Côte d’Ivoire)" : "Francés (Costa do Marfin)", + "French (Djibouti)" : "Francés (Xibuti)", + "French (Equatorial Guinea)" : "Francés (Guinea Ecuatorial)", + "French (France)" : "Francés (Francia)", + "French (Gabon)" : "Francés (Gabón)", + "French (Guadeloupe)" : "Francés (Guadalupe)", + "French (Guinea)" : "Francés (Guinea)", + "French (Luxembourg)" : "Francés (Luxemburgo)", + "French (Madagascar)" : "Francés (Madagascar)", + "French (Mali)" : "Francés (Malí)", + "French (Martinique)" : "Francés (Martinica)", + "French (Monaco)" : "Francés (Mónaco)", + "French (Niger)" : "Francés (Níxer)", + "French (Rwanda)" : "Francés (Ruanda)", + "French (Réunion)" : "Francés (Reunión)", + "French (Saint Barthélemy)" : "Francés (San Bartolomeu)", + "French (Saint Martin)" : "Francés (San Martín)", + "French (Senegal)" : "Francés (Senegal)", + "French (Switzerland)" : "Francés (Suíza)", + "French (Togo)" : "Francés (Togo)", + "French" : "Francés", + "Fulah (Senegal)" : "Fula (Senegal)", + "Fulah" : "Fula", + "Galician (Spain)" : "Galego (España)", + "Galician" : "Galego", + "Ganda (Uganda)" : "Ganda (Uganda)", + "Ganda" : "Ganda", + "Georgian (Georgia)" : "Xeorxiano (Xeorxia)", + "Georgian" : "Xeorxiano", + "German (Austria)" : "Alemán (Austria)", + "German (Belgium)" : "Alemán (Belxica)", + "German (Germany)" : "Alemán (Alemania)", + "German (Liechtenstein)" : "Alemán (Liechtenstein)", + "German (Luxembourg)" : "Alemán (Luxemburgo)", + "German (Switzerland)" : "Alemán (Suíza)", + "German" : "Alemán", + "Greek (Cyprus)" : "Grego (Chipre)", + "Greek (Greece)" : "Grego (Grecia)", + "Greek" : "Grego", + "Gujarati (India)" : "Guxaratí (India)", + "Gujarati" : "Guxaratí", + "Gusii (Kenya)" : "Gusii (Quenia)", + "Gusii" : "Gusii", + "Hausa (Latin)" : "Hausa (Latín)", + "Hausa (Latin, Ghana)" : "Hausa (Latín, Ghana)", + "Hausa (Latin, Niger)" : "Hausa (Latín, Níxer)", + "Hausa (Latin, Nigeria)" : "Hausa (Latín, Nixeria)", + "Hausa" : "Hausa", + "Hawaiian (United States)" : "Hawaiano (Estados Unidos)", + "Hawaiian" : "Hawaiano", + "Hebrew (Israel)" : "Hebreo (Israel)", + "Hebrew" : "Hebreo", + "Hindi (India)" : "Hindi (India)", + "Hindi" : "Hindi", + "Hungarian (Hungary)" : "Húngaro (Hungría)", + "Hungarian" : "Húngaro", + "Icelandic (Iceland)" : "Islandés (Islandia)", + "Icelandic" : "Islandés", + "Igbo (Nigeria)" : "Igbo (Nixeria)", + "Igbo" : "Igbo", + "Indonesian (Indonesia)" : "Indonesio (Indonesia)", + "Indonesian" : "Indonesio", + "Irish (Ireland)" : "Irlandés (Irlanda)", + "Irish" : "Irlandés", + "Italian (Italy)" : "Italiano (Italia)", + "Italian (Switzerland)" : "Irlandés (Suíza)", + "Italian" : "Italiano", + "Japanese (Japan)" : "Xaponés (Xapón)", + "Japanese" : "Xaponés", + "Kabuverdianu (Cape Verde)" : "Caboverdiano (Cabo Verde)", + "Kabuverdianu" : "Caboverdiano", + "Kabyle (Algeria)" : "Kabyle (Alxeria)", + "Kabyle" : "Kabyle", + "Kalaallisut (Greenland)" : "Kalaallisut (Grenlandia)", + "Kalaallisut" : "Kalaallisut", + "Kalenjin (Kenya)" : "Calenllin (Kenya)", + "Kalenjin" : "Calenllin", + "Kamba (Kenya)" : "Camba (Quenia)", + "Kamba" : "Camba", + "Kannada (India)" : "Canarés (India)", + "Kannada" : "Canarés", + "Kazakh (Cyrillic)" : "Cazaxo (Cirílico)", + "Kazakh (Cyrillic, Kazakhstan)" : "Cazaxo (Cirilico, Cazaquistán)", + "Kazakh" : "Cazaxo", + "Khmer (Cambodia)" : "Khmer (Camboxa)", + "Khmer" : "Khmer", + "Kikuyu (Kenya)" : "Quicuio (Quenia)", + "Kikuyu" : "Quicuio", + "Kinyarwanda (Rwanda)" : "Ruandés (Ruanda)", + "Kinyarwanda" : "Ruandés", + "Konkani (India)" : "Konkani (India)", + "Konkani" : "Konkani", + "Korean (South Korea)" : "Coreano (Corea do Sur)", + "Korean" : "Coreano", + "Koyra Chiini (Mali)" : "Coira Chiini (Malí)", + "Koyra Chiini" : "Coira Chiini", + "Koyraboro Senni (Mali)" : "Coiraboro Senni (Malí)", + "Koyraboro Senni" : "Coiraboro Senni", + "Langi (Tanzania)" : "Langi (Tanzania)", + "Langi" : "Langi", + "Latvian (Latvia)" : "Letón (Letonia)", + "Latvian" : "Letón", + "Lithuanian (Lithuania)" : "Lituano (Lituania)", + "Lithuanian" : "Lituano", + "Luo (Kenya)" : "Luo (Quenia)", + "Luo" : "Luo", + "Luyia (Kenya)" : "Luia (Kenya)", + "Luyia" : "Luia", + "Macedonian (Macedonia)" : "Macedonio (Macedonia)", + "Macedonian" : "Macedonio", + "Machame (Tanzania)" : "Machame (Tanzania)", + "Machame" : "Machame", + "Makonde (Tanzania)" : "Maconde (Tanzania)", + "Makonde" : "Maconde", + "Malagasy (Madagascar)" : "Malgaxe (Madagascar)", + "Malagasy" : "Malgaxe", + "Malay (Brunei)" : "Malaio (Brunei)", + "Malay (Malaysia)" : "Malaio (Malasia)", + "Malay" : "Malaio", + "Malayalam (India)" : "Malayalam (India)", + "Malayalam" : "Malayalam", + "Maltese (Malta)" : "Maltés (Malta)", + "Maltese" : "Maltés", + "Manx (United Kingdom)" : "Gaélico manés (Reino Unido)", + "Manx" : "Gaélico manés", + "Marathi (India)" : "Maratí (India)", + "Marathi" : "Maratí", + "Masai (Kenya)" : "Masai (Quenia)", + "Masai (Tanzania)" : "Masai (Tanzania)", + "Masai" : "Masai", + "Meru (Kenya)" : "Meru (Quenia)", + "Meru" : "Meru", + "Morisyen (Mauritius)" : "Morisien (Mauricio)", + "Morisyen" : "Morisien", + "Nama (Namibia)" : "Nama (Namibia)", + "Nama" : "Nama", + "Nepali (India)" : "Nepalés (India)", + "Nepali (Nepal)" : "Nepales (Nepal)", + "Nepali" : "Nepales", + "North Ndebele (Zimbabwe)" : "Ndebele do norte (Cimbabue)", + "North Ndebele" : "Ndebele do norte", + "Norwegian Bokmål (Norway)" : "Noruegués bokmål (Noruega)", + "Norwegian Bokmål" : "Noruegués bokmål", + "Norwegian Nynorsk (Norway)" : "Noruegués nynorsk (Noruega)", + "Norwegian Nynorsk" : "Noruegués nynorsk", + "Nyankole (Uganda)" : "Nyankole (Uganda)", + "Nyankole" : "Nyankole", + "Oriya (India)" : "Orilla (India)", + "Oriya" : "Orilla", + "Oromo (Ethiopia)" : "Oromo (Etiopía)", + "Oromo (Kenya)" : "Oromo (Quenia)", + "Oromo" : "Oromo", + "Pashto (Afghanistan)" : "Pastún (Afganistán)", + "Pashto" : "Pastún", + "Persian (Afghanistan)" : "Persa (Afganistán)", + "Persian (Iran)" : "Persa (Iran)", + "Persian" : "Persa", + "Polish (Poland)" : "Polaco (Polonia)", + "Polish" : "Polaco", + "Portuguese (Brazil)" : "Portugués (Brasil)", + "Portuguese (Guinea-Bissau)" : "Portuguese (Guinea-Bisau)", + "Portuguese (Mozambique)" : "Portugués (Mozambique)", + "Portuguese (Portugal)" : "Portugués (Portugal)", + "Portuguese" : "Portugués", + "Punjabi (Arabic)" : "Punxabi (Árabe)", + "Punjabi (Arabic, Pakistan)" : "Punxabi (Árabe, Paquistán)", + "Punjabi (Gurmukhi)" : "Punxabi (Gurmukhi)", + "Punjabi (Gurmukhi, India)" : "Punxabi (Gurmukhi, India)", + "Punjabi" : "Punxabi", + "Romanian (Moldova)" : "Romanés (Moldavia)", + "Romanian (Romania)" : "Romanés (Romania)", + "Romanian" : "Romanés", + "Romansh (Switzerland)" : "Romanche (Suíza)", + "Romansh" : "Romanche", + "Rombo (Tanzania)" : "Rombo (Tanzania)", + "Rombo" : "Rombo", + "Russian (Moldova)" : "Ruso (Moldavia)", + "Russian (Russia)" : "Ruso (Rusia)", + "Russian (Ukraine)" : "Ruso (Ucraína)", + "Russian" : "Ruso", + "Rwa (Tanzania)" : "Ruá (Tanzania)", + "Rwa" : "Ruá", + "Samburu (Kenya)" : "Samburu (Quenia)", + "Samburu" : "Samburu", + "Sango (Central African Republic)" : "Sango (República Centro Africana)", + "Sango" : "Sango", + "Sena (Mozambique)" : "Sena (Mozambique)", + "Sena" : "Sena", + "Serbian (Cyrillic)" : "Serbio (Cirílico)", + "Serbian (Cyrillic, Bosnia and Herzegovina)" : "Serbio (Cirílico, Bosnia e Herzegovina)", + "Serbian (Cyrillic, Montenegro)" : "Serbio (Cirílico, Montenegro)", + "Serbian (Cyrillic, Serbia)" : "Serbio (Cirílico, Serbia)", + "Serbian (Latin)" : "Serbio (Latín)", + "Serbian (Latin, Bosnia and Herzegovina)" : "Serbio (Latín, Bosnia e Herzegovina)", + "Serbian (Latin, Montenegro)" : "Serbio (Latín, Montenegro)", + "Serbian (Latin, Serbia)" : "Serbio (Latín, Serbia)", + "Serbian" : "Serbio", + "Shona (Zimbabwe)" : "Shona (Zimbabwe)", + "Shona" : "Shona", + "Sichuan Yi (China)" : "Nuosu (China)", + "Sichuan Yi" : "Nuosu", + "Sinhala (Sri Lanka)" : "Sinhala (Sri Lanka)", + "Sinhala" : "Sinhala", + "Slovak (Slovakia)" : "Eslovaco (Eslovaquia)", + "Slovak" : "Eslovaco", + "Slovenian (Slovenia)" : "Esloveno (Eslovenia)", + "Slovenian" : "Esloveno", + "Soga (Uganda)" : "Soga (Uganda)", + "Soga" : "Soga", + "Somali (Djibouti)" : "Somalí (Xibuti)", + "Somali (Ethiopia)" : "Somalí (Etiopía)", + "Somali (Kenya)" : "Somalí (Quenia)", + "Somali (Somalia)" : "Somalí (Somalia)", + "Somali" : "Somalí", + "Spanish (Argentina)" : "Español (Arxentina)", + "Spanish (Bolivia)" : "Español (Bolivia)", + "Spanish (Chile)" : "Español (Chile)", + "Spanish (Colombia)" : "Español (Colombia)", + "Spanish (Costa Rica)" : "Español (Costa Rica)", + "Spanish (Dominican Republic)" : "Español (república Dominicana)", + "Spanish (Ecuador)" : "Español (Ecuador)", + "Spanish (El Salvador)" : "Español (El Salvador)", + "Spanish (Equatorial Guinea)" : "Español (Guinea Ecuatorial)", + "Spanish (Guatemala)" : "Español (Guatemala)", + "Spanish (Honduras)" : "Español (Honduras)", + "Spanish (Latin America)" : "Español (Latinoamerica)", + "Spanish (Mexico)" : "Español (Mexico)", + "Spanish (Nicaragua)" : "Español (Nicaragua)", + "Spanish (Panama)" : "Español (Panamá)", + "Spanish (Paraguay)" : "Español (Paraguai)", + "Spanish (Peru)" : "Español (Perú)", + "Spanish (Puerto Rico)" : "Español (Puerto Rico)", + "Spanish (Spain)" : "Español (España)", + "Spanish (United States)" : "Español (Estados Unidos)", + "Spanish (Uruguay)" : "Español (Uruguai)", + "Spanish (Venezuela)" : "Español (Venezuela)", + "Spanish" : "Español", + "Swahili (Kenya)" : "Swahili (Quenia)", + "Swahili (Tanzania)" : "Swahili (Tanzania)", + "Swahili" : "Swahili", + "Swedish (Finland)" : "Sueco (Finlandia)", + "Swedish (Sweden)" : "Sueco (Suecia)", + "Swedish" : "Sueco", + "Swiss German (Switzerland)" : "Alemán suízo (Suíza)", + "Swiss German" : "Alemán suízo", + "Tachelhit (Latin)" : "Tachelhit (Latín)", + "Tachelhit (Latin, Morocco)" : "Tachelhit (Latín, Marrocos)", + "Tachelhit (Tifinagh)" : "Tachelhit (Tifinague)", + "Tachelhit (Tifinagh, Morocco)" : "Tachelhit (Tifinague, Marrocos)", + "Tachelhit" : "Tachelhit", + "Taita (Kenya)" : "Taita (Quenia)", + "Taita" : "Taita", + "Tamil (India)" : "Tamil (India)", + "Tamil (Sri Lanka)" : "Tamil (Sri Lanka)", + "Tamil" : "Tamil", + "Telugu (India)" : "Telugu (India)", + "Telugu" : "Telugu", + "Teso (Kenya)" : "Teso (Quenia)", + "Teso (Uganda)" : "Teso (Uganda)", + "Teso" : "Teso", + "Thai (Thailand)" : "Tailandés (Tailandia)", + "Thai" : "Tailandés", + "Tibetan (China)" : "Tibetano (China)", + "Tibetan (India)" : "Tibetano (India)", + "Tibetan" : "Tibetano", + "Tigrinya (Eritrea)" : "Tigriña (Eritrea)", + "Tigrinya (Ethiopia)" : "Tigriña (Etiopía)", + "Tigrinya" : "Tigriña", + "Tonga (Tonga)" : "Tonga (Tonga)", + "Tonga" : "Tonga", + "Turkish (Turkey)" : "Turco (Turquía)", + "Turkish" : "Turco", + "Ukrainian (Ukraine)" : "Ucraíno (Ucraína)", + "Ukrainian" : "Ucraíno", + "Urdu (India)" : "Urdu (India)", + "Urdu (Pakistan)" : "Urdu (Paquistán)", + "Urdu" : "Urdu", + "Uzbek (Arabic)" : "Uzbeko (Árabe)", + "Uzbek (Arabic, Afghanistan)" : "Uzbeko (Árabe, Afganistán)", + "Uzbek (Cyrillic)" : "Uzbeko (Cirílico)", + "Uzbek (Cyrillic, Uzbekistan)" : "Uzbeko (Cirílico, Usbequistán)", + "Uzbek (Latin)" : "Uzbeko (Latín)", + "Uzbek (Latin, Uzbekistan)" : "Uzbeco (Latín, Usbequistán)", + "Uzbek" : "Uzbeco", + "Vietnamese (Vietnam)" : "Vietnamita (Vietnam)", + "Vietnamese" : "Vietnamita", + "Vunjo (Tanzania)" : "Vunjo (Tanzania)", + "Vunjo" : "Vunjo", + "Welsh (United Kingdom)" : "Galés (Reino Únido)", + "Welsh" : "Galés", + "Yoruba (Nigeria)" : "Ioruba (Nixeria)", + "Yoruba" : "Ioruba", + "Zulu (South Africa)" : "Zulú (Suráfrica)", + "Zulu" : "Zulú", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "A autenticación de dous factores pode ser aplicada para todos\tos usuarios e grupos específicos. Se non tiveran configurado un provedor de dous factores, non podería acceder ao sistema.", + "Enforce two-factor authentication" : "Obrigar a autenticación de dous factores", + "Limit to groups" : "Límite para grupos", + "Enforcement of two-factor authentication can be set for certain groups only." : "A obrigatoriedade da autenticación de dous factores pode estabelecerse só para certos grupos.", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "A autenticación de dous factores é obrigatoria para todos\tos membros os seguintes grupos.", + "Enforced groups" : "Grupos obrigados", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "A autenticación de dous factores non é obrigatoria para os\tmembros dos seguintes grupos.", + "Excluded groups" : "Grupos excluídos", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "Cando se seleccionan/exclúen os grupos, usase a seguinte lóxica para determinar se un usuario ten obrigada a A2F: Se non hai grupos seleccionados, a A2F está activa para todos agás os membros dos grupos excluídos. Se hai grupos seleccionados, a A2F está activa para todos os membros destes. Se un usuario está á vez nun grupo seleccionado e noutro excluído, o seleccionado ten preferencia e se lle obriga a A2F.", + "Save changes" : "Gardar os cambios", + "Marked for remote wipe" : "Marcado para limpeza remota", + "Device settings" : "Axustes do dispositivo", + "Allow filesystem access" : "Permitir o acceso aos sistema de ficheiros", + "Rename" : "Renomear", + "Revoke" : "Revogar", + "Wipe device" : "Limpar o dispositivo", + "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "O revogado desta marca pode impedir a limpeza deste dispositivo se aínda non comezou.", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome para Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Apli Nextcloud para iOS", + "Nextcloud Android app" : "Apli Nextcloud para Android", + "Nextcloud Talk for iOS" : "Nextcloud Talk para iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk para Android", + "Sync client - {os}" : "Cliente de sincronización - {os}", + "This session" : "Esta sesión", + "Device" : "Dispositivo", + "Last activity" : "Última actividade", + "Devices & sessions" : "Dispositivos e sesións", + "Web, desktop and mobile clients currently logged in to your account." : "Clientes web, móbiles e de escritorio actualmente conectados á súa conta.", + "Do you really want to wipe your data from this device?" : "Confirma que quere limpar os seus datos deste dispositivo?", + "Confirm wipe" : "Confirmar a limpeza", + "Error while creating device token" : "Produciuse un erro mentres creaba unha marca de dispositivo", + "Error while updating device token scope" : "Produciuse un erro ao actualizar o ámbito da marca do dispositivo", + "Error while updating device token name" : "Produciuse un erro ao actualizar o nome da marca do dispositivo", + "Error while deleting the token" : "Produciuse un erro mentres eliminaba unha marca", + "Error while wiping the device with the token" : "Produciuse un erro ao limpar o dispositivo coa marca", + "App name" : "Nome da aplicación", + "Create new app password" : "Crear un novo contrasinal de aplicación", + "Use the credentials below to configure your app or device." : "Use as seguintes credenciais para configurar a súa aplicación ou dispositivo. ", + "For security reasons this password will only be shown once." : "Por razóns de seguridade ese contrasinal só se amosará unha vez. ", + "Username" : "Nome de usuario", + "Password" : "Contrasinal", + "Done" : "Feito", + "Show QR code for mobile apps" : "Amosar un código QR para aplicacións móbiles", + "Copied!" : "Copiado!", + "Copy" : "Copiar", + "Could not copy app password. Please copy it manually." : "Non foi posíbel copiar o contrasinal da app. Cópieo manualmente.", + "This app is supported via your current Nextcloud subscription." : "Esta aplicación é compatíbel cos súa subscrición actual a Nextcloud.", + "Supported" : "Compatíbel", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "As aplicacións oficiais están desenvolvidas por e dentro da comunidade. Ofrecen unha funcionalidade central e están preparadas para o seu uso en produción.", + "Official" : "Oficial", + "by" : "por", + "Update to {version}" : "Actualizar a {version}", + "Remove" : "Retirar", + "Disable" : "Desactivar", + "All" : "Todo", + "Limit app usage to groups" : "Limitar o uso de aplicacións a grupos", + "No results" : "Sen resultados", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación non dispón dunha versión mínima de Nextcloud asignada. Isto será un erro no futuro.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación non dispón dunha versión máxima de Nextcloud asignada. Isto será un erro no futuro.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Non é posíbel instalar esta aplicación por mor de non cumprirse as dependencias:", + "View in store" : "Ver na tenda", + "Visit website" : "Visite o sitio web", + "Report a bug" : "Informar dun fallo", + "User documentation" : "Documentación do usuario", + "Admin documentation" : "Documentación do administrador", + "Developer documentation" : "Documentación do desenvolvedor", + "Update to {update}" : "Actualizar a {update}", + "Results from other categories" : "Resultados doutras categorías", + "No apps found for your version" : "Non se atoparon aplicacións para a súa versión", + "Disable all" : "Desactivar todo", + "Enable all" : "Activar todo", + "Download and enable" : "Descargar e activar", + "Enable" : "Activar", + "Enable untested app" : "Activar a aplicación sen probar", + "The app will be downloaded from the app store" : "A aplicación debe ser descargada dende un repositorio/tenda de aplicacións", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Esta aplicación non está marcado como compatíbel coa súa versión do Nextcloud. Se continúa, poderá instalar a aplicación. Teña en conta que é probábel que a aplicación non funcione como se agarda.", + "You do not have permissions to see the details of this user" : "Vostede non ten permisos para ver os detalles deste usuario", + "The backend does not support changing the display name" : "A infraestrutura non admite o cambio do nome a amosar", + "New password" : "Novo contrasinal", + "Add user in group" : "Engadir usuario no grupo", + "Set user as admin for" : "Estabelecer o usuario como administrador para", + "Select user quota" : "Seleccionar a cota de usuario", + "No language set" : "Non foi estabelecido ningún idioma", + "Never" : "Nunca", + "Delete user" : "Eliminar usuario", + "Wipe all devices" : "Limpar todos os dispositivos", + "Disable user" : "Desactivar usuario", + "Enable user" : "Activar usuario", + "Resend welcome email" : "Volver a enviar o correo de benvida", + "{size} used" : "{size} usado", + "Welcome mail sent!" : "Enviado o correo de benvida!", + "Display name" : "Nome a amosar", + "Email" : "Correo", + "Group admin for" : "Administrador de grupo para", + "Quota" : "Cota", + "Language" : "Idioma", + "Storage location" : "Localización do almacenamento", + "User backend" : "Infraestrutura do usuario", + "Last login" : "Último acceso", + "Will be autogenerated" : "Vai ser xerado automaticamente", + "Default language" : "Idioma predeterminado", + "Add a new user" : "Engadir un novo usuario", + "No users in here" : "Aquí non hai usuarios", + "Default quota" : "Cota predeterminada", + "Password change is disabled because the master key is disabled" : "O cambio de contrasinal está desactivado porque a chave mestra está desactivada", + "Common languages" : "Idiomas habituais", + "All languages" : "Todos os idiomas", + "Your apps" : "As súas aplicacións", + "Active apps" : "Aplcativos activos", + "Disabled apps" : "Aplicacións desactivadas", + "Updates" : "Actualizacións", + "App bundles" : "Paquetes de aplicacións", + "{license}-licensed" : "Licenciado baixo a {license}", + "New user" : "Novo usuario", + "Default quota:" : "Cota predeterminada:", + "Select default quota" : "Seleccionar a cota predeterminada", + "Show Languages" : "Amosar os idiomas", + "Show last login" : "Amosar o último acceso", + "Show user backend" : "Amosar a infraestrutura do usuario", + "Show storage path" : "Amosar a ruta do almacenamento", + "You are about to remove the group {group}. The users will NOT be deleted." : "Está a piques de retirar o grupo {group}. Os usuarios NON van seren eliminados.", + "Please confirm the group removal " : "Confirme a retirada do grupo ", + "Remove group" : "Retirar o grupo", + "Admins" : "Administradores", + "Disabled users" : "Usuarios desactivados", + "Everyone" : "Todos", + "Add group" : "Engadir un grupo", + "An error occured during the request. Unable to proceed." : "Produciuse un erro durante a solicitude. Non é posíbel continuar.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "A aplicación foi activada pero necesita ser actualizada. Vai ser redirixido cara a páxina de actualizarións en 5 segundos.", + "App update" : "Actualización da aplicación", + "Error: This app can not be enabled because it makes the server unstable" : "Erro: Esta aplicación non pode ser activada xa que xera inestabilidade no servidor ", + "SSL Root Certificates" : "Certificados raíz SSL", + "Common Name" : "Nome común", + "Valid until" : "Válido ata", + "Issued By" : "Fornecido por", + "Valid until %s" : "Válido ata %s", + "Import root certificate" : "Importar o certificado raíz", + "Administrator documentation" : "Documentación do administrador", + "Documentation" : "Documentación", + "Forum" : "Foro", + "None" : "Ningún", + "Login" : "Acceso", + "Plain" : "Simple", + "NT LAN Manager" : "Xestor NT LAN", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Servidor de correo", + "Open documentation" : "Abrir a documentación", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "É importante configurar este servidor para que poida enviar correos, por exemplo para cambios de contrasinais e notificacións.", + "Send mode" : "Modo de envío", + "Encryption" : "Cifrado", + "Sendmail mode" : "Modo do Sendmail", + "From address" : "Dende o enderezo", + "mail" : "correo", + "Authentication method" : "Método de autenticación", + "Authentication required" : "Requírese autenticación", + "Server address" : "Enderezo do servidor", + "Port" : "Porto", + "Credentials" : "Credenciais", + "SMTP Username" : "Nome de usuario SMTP", + "SMTP Password" : "Contrasinal SMTP", + "Save" : "Gardar", + "Test email settings" : "Correo de proba dos axustes", + "Send email" : "Enviar o correo", + "Security & setup warnings" : "Avisos de seguridade e configuración", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "É importante para a seguridade e o bo funcionamento da súa instancia que todo estea configurado correctamente. Para axudarlle niso, imos facer algunhas comprobacións automáticas. Vexa a documentación ligada para obter máis información. ", + "All checks passed." : "Pasáronse todas as verificacións.", + "There are some errors regarding your setup." : "Hai algún erro relativo aos seus axustes.", + "There are some warnings regarding your setup." : "Hai algún aviso relativo aos seus axustes.", + "Checking for system and security issues." : "Verificando incidentes de sistema e seguridade.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Volva verificar as <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">guías de instalación ↗</a>, e comprobe que non haxa erros ou avisos no <a href=\"%2$s\">rexistro</a>. ", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Comprobe a seguridade do seu Nextcloud empregando o <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">noso escaneo de seguridade ↗</a>.", + "Version" : "Versión", + "Two-Factor Authentication" : "Autenticación de dous factores", + "Server-side encryption" : "Cifrado na parte do servidor", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "O cifrado do lado do servidor fai posíbel cifrar os ficheiros que van ser enviados a este servidor. Isto leva algunhas limitacións como penalizacións no rendemento, así que actíveo só se é necesario.", + "Enable server-side encryption" : "Activar o cifrado na parte do servidor", + "Please read carefully before activating server-side encryption: " : "Lea detidamente antes de activar o cifrado do lado do servidor:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Una vez que o cifrado estea activado, todos os ficheiros enviados ao servidor dende ese punto en diante cifraranse en repouso no servidor. Só será posíbel desactivar o cifrado nunha data posterior se o módulo de cifrado activado admite esa función, e se cumpran todas as condicións previas (por exemplo, o estabelecemento dunha chave de recuperación).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "O cifrado por si só non garante a seguridade do sistema. Vexa a documentación para obter máis información sobre como funciona a aplicación de cifrado e os casos de uso admitidos.", + "Be aware that encryption always increases the file size." : "Teña presente que o cifrado sempre incrementa o tamaño do ficheiro.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Sempre é bo crear copias de seguranza dos seus datos, no caso do cifrado, asegúrese de ter unha copia de seguranza das chaves de cifrado xunto cos seus datos.", + "This is the final warning: Do you really want to enable encryption?" : "Esta é a advertencia final. Confirma que quere activar o cifrado?", + "Enable encryption" : "Activar o cifrado", + "No encryption module loaded, please enable an encryption module in the app menu." : "Non hai cargado ningún módulo de cifrado, active un módulo de cifrado no menú de aplicacións.", + "Select default encryption module:" : "Seleccionar o módulo predeterminado de cifrado:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "É necesario migrar as súas chaves de cifrado do antigo cifrado (ownCloud <= 8,0) cara ao novo. Active o «Módulo predeterminado de cifrado» e execute «occ encryption:migrate»", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "É necesario migrar as chaves de cifrado do antigo cifrado (ownCloud <= 8,0) cara ao novo.", + "Start migration" : "Iniciar a migración", + "Background jobs" : "Traballos en segundo plano", + "Last job ran %s." : "O último traballo executouse %s.", + "Last job execution ran %s. Something seems wrong." : "O último traballo executouse %s. Algo semella estar mal.", + "Background job didn’t run yet!" : "O traballo en segundo plano aínda non se executou!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un rendemento óptimo é importante configurar correctamente os traballos en segundo plano. Para instancias máis grandes, «Cron» é o axuste recomendado. Vexa a documentación para obter máis información.", + "Pick background job setting" : "Escolla os axustes do traballo en segundo plano", + "Execute one task with each page loaded" : "Executar unha tarefa con cada páxina cargada", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php está rexistrado nun servizo de WebCron para chamar a cron.php cada 5 minutos a través de HTTP.", + "Use system cron service to call the cron.php file every 5 minutes." : "Use o servizo «cron» do sistema para chamar ao ficheiro cron.php cada 5 minutos.", + "The cron.php needs to be executed by the system user \"%s\"." : "O cron.php debe ser executado polo usuario do sistema «%s»", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para executar isto necesitase a extensión POSIX de PHP. Vexa a {linkstart}documentación de PHP{linkend} para obter máis detalles. ", + "Sharing" : "Compartindo", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador pode facer axustes finos do comportamento al compartir. Lea a documentación para obter máis más información.", + "Allow apps to use the Share API" : "Permitir que as aplicacións empreguen o API para compartir", + "Allow users to share via link" : "Permitir que os usuarios compartan a través de ligazóns", + "Allow public uploads" : "Permitir os envíos públicos", + "Always ask for a password" : "Pedir sempre un contrasinal", + "Enforce password protection" : "Forzar a protección por contrasinal", + "Set default expiration date" : "Definir a data predeterminada de caducidade", + "Expire after " : "Caduca após", + "days" : "días", + "Enforce expiration date" : "Forzar a data de caducidade", + "Allow resharing" : "Permitir compartir", + "Allow sharing with groups" : "Permitir compartir con grupos", + "Restrict users to only share with users in their groups" : "Restrinxir aos usuarios a compartir só cos usuarios dos seus grupos", + "Exclude groups from sharing" : "Excluír grupos da compartición", + "These groups will still be able to receive shares, but not to initiate them." : "Estes grupos poderán recibir comparticións, mais non inicialas.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Permitir autocompletar o nome de usuario na xanela de diálogo. Se esta opción está desactivada, debera escribirse o nome de usuario completo ou o enderezo de correo-e. ", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Amosar o texto de exención de responsabilidade na páxina de envío de ligazóns publicas. (Amosarase só cando a lista de ficheiros estea agochada.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Este texto amosarase na páxina de envío das ligazóns públicas cando a lista de ficheiros estea agochada.", + "Default share permissions" : "Permisos predeterminados para compartir", + "Personal" : "Persoal", + "Administration" : "Administración", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Desenvolvido pola {communityopen}comunidade Nextcloud{linkclose}, o {githubopen}código fonte{linkclose} está licenciado baixo a {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Faga un Gústame na nosa páxina de Facebook", + "Follow us on Twitter" : "Síganos no Twitter", + "Follow us on Mastodon" : "Síganos na Mastodon", + "Check out our blog" : "Visite o noso blog ", + "Subscribe to our newsletter" : "Subscríbase ao noso boletín", + "Profile picture" : "Imaxe do perfil", + "Upload new" : "Novo envío", + "Select from Files" : "Seleccionar dende Ficheiros", + "Remove image" : "Retirar a imaxe", + "png or jpg, max. 20 MB" : "png ou jpg, max. 20 MB", + "Picture provided by original account" : "Imaxe fornecida pola conta orixinal ", + "Cancel" : "Cancelar", + "Choose as profile picture" : "Seleccionar como imaxe do perfil", + "Details" : "Detalles", + "You are a member of the following groups:" : "Vostede é membro dos seguintes grupos: ", + "You are using <strong>%s</strong>" : "Está usando <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Está usando <strong>%1$s</strong> de <strong>%2$s</strong> (<strong>%3$s%%)", + "Full name" : "Nome completo", + "No display name set" : "Sen nome visíbel estabelecido", + "Your email address" : "O seu enderezo de correo", + "No email address set" : "Non hai un enderezo de correo definido", + "For password reset and notifications" : "Para o restabelecemento de contrasinais e notificacións", + "Phone number" : "Número de teléfono", + "Your phone number" : "O seu número de teléfono", + "Address" : "Enderezo", + "Your postal address" : "O seu enderezo postal", + "Website" : "Sitio web", + "It can take up to 24 hours before the account is displayed as verified." : "Pode levar ata 24 horas antes de que a conta apareza como como verificada.", + "Link https://…" : "Ligazón https://…", + "Twitter" : "Twitter", + "Twitter handle @…" : "Usuario do Twitter @…", + "Help translate" : "Axude na tradución", + "Locale" : "Configuración rexional", + "Current password" : "Contrasinal actual", + "Change password" : "Cambiar o contrasinal", + "Use a second factor besides your password to increase security for your account." : "Empregue un segundo factor ademais do seu contrasinal para aumentar a seguridade da súa conta.", + "Disconnect" : "Desconectar", + "Not supported!" : "Non admitido!", + "Press ⌘-C to copy." : "Prema ⌘-C para copiar.", + "Press Ctrl-C to copy." : "Prema Ctrl-C para copiar.", + "Error while loading browser sessions and device tokens" : "Produciuse un erro ao cargar as sesións do seu navegador e as marcas dos dispositivos.", + "Store credentials" : "Almacenar as credenciais", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php está rexistrado nun servizo de WebCron para chamar a cron.php cada 15 minutos a través de HTTP.", + "Use system cron service to call the cron.php file every 15 minutes." : "Use o servizo «cron» do sistema para chamar ao ficheiro cron.php cada 15 minutos.", + "Follow us on Google+" : "Síganos no Google+" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/gl.json b/apps/settings/l10n/gl.json new file mode 100644 index 00000000000..4897d306271 --- /dev/null +++ b/apps/settings/l10n/gl.json @@ -0,0 +1,821 @@ +{ "translations": { + "{actor} added you to group {group}" : "{actor} engadiuno ao grupo {group}", + "You added {user} to group {group}" : "Vostede engadiu a {actor} ao grupo {group}", + "{actor} added {user} to group {group}" : "{actor} engadiu a {user} ao grupo {group}", + "An administrator added you to group {group}" : "Un administrador engadiuno ao grupo {group} ", + "An administrator added {user} to group {group}" : "Un administrador engadiu a {user} ao grupo {group}", + "{actor} removed you from group {group}" : "{actor} retirouno do grupo {group}", + "You removed {user} from group {group}" : "Vostede retirou a {user} do grupo {group}", + "{actor} removed {user} from group {group}" : "{actor} retirou a {user} do grupo {group}", + "An administrator removed you from group {group}" : "Un administrador retirouno do grupo {group} ", + "An administrator removed {user} from group {group}" : "Un administrador retirou a {user} do grupo {group}", + "Your <strong>group memberships</strong> were modified" : "Foron modificados os <strong>membros do seu grupo</strong>", + "{actor} changed your password" : "{actor} cambiou o seu contrasinal", + "You changed your password" : "Vostede cambiou o seu contrasinal", + "Your password was reset by an administrator" : "O seu contrasinal foi restabelecido por un administrador", + "{actor} changed your email address" : "{actor} cambiou o seu enderezo de correo", + "You changed your email address" : "Vostede cambiou o seu enderezo de correo", + "Your email address was changed by an administrator" : "O seu enderezo de correo foi cambiado por un administrador", + "You created app password \"{token}\"" : "Vostede creou o contrasinal da aplicación «{token}»", + "You deleted app password \"{token}\"" : "Vostede eliminou o contrasinal da aplicación «{token}»", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Vostede renomeou o contrasinal da aplicación «{token}» como «{newToken}»", + "You granted filesystem access to app password \"{token}\"" : "Vostede concedeu acceso ao sistema de ficheiros ao contrasinal da aplicación «{token}»", + "You revoked filesystem access from app password \"{token}\"" : "Vostede revogou o acceso ao sistema de ficheiros dende o contrasinal da aplicación «{token}»", + "Security" : "Seguridade", + "You successfully logged in using two-factor authentication (%1$s)" : "Accedeu satisfactoriamente usando autenticación de dous factores (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Fallou un intento de acceso usando autenticación de dous factores (%1$s)", + "Remote wipe was started on %1$s" : "Iniciouse a limpeza remota en %1$s", + "Remote wipe has finished on %1$s" : "Rematou a limpeza remota en %1$s", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Foi modificado o seu <strong>contrasinal</strong> ou o seu <strong>correo electrónico</strong>", + "Couldn't remove app." : "Non foi posíbel retirar a aplicación.", + "Couldn't update app." : "Non foi posíbel actualizar a aplicación.", + "Wrong password" : "Contrasinal incorrecto", + "Saved" : "Gardado", + "No user supplied" : "Non subministrado polo usuario", + "Unable to change password" : "Non é posíbel cambiar o contrasinal", + "Authentication error" : "Produciuse un erro de autenticación", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Forneza un contrasinal de recuperación de administrador; senón perderase toda a información do usuario.", + "Wrong admin recovery password. Please check the password and try again." : "Contrasinal de recuperación do administrador incorrecto. Comprobe o contrasinal e ténteo de novo.", + "Backend doesn't support password change, but the user's encryption key was updated." : "A infraestrutura non admite o cambio de contrasinal, mais a chave de cifrado do usuario foi actualizada.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "instalando e actualizando aplicacións mediante a tenda de aplicacións ou da nube federada compartida", + "Federated Cloud Sharing" : "Nube federada compartida", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL está utilizando unha versión obsoleta %1$s (%2$s). Actualice o seu sistema operativo, caso contrario características como %3$s non funcionarán de xeito fiábel.", + "Invalid SMTP password." : "Contrasinal SMTP incorrecta.", + "Email setting test" : "Proba do axuste do correo", + "Well done, %s!" : "Ben feito, %s!", + "If you received this email, the email configuration seems to be correct." : "Se vostede ten recibido este correo, a configuración do correo semella ser correcta. ", + "Email could not be sent. Check your mail server log" : "Non foi posíbel enviar o correo. Comproba o rexistro do servidor de correo", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Ocorreu un problema ao enviar o correo. Revise a súa configuración. (Erro: %s)", + "You need to set your user email before being able to send test emails." : "É necesario configurar o correo do usuario antes de poder enviar mensaxes de correo de proba.", + "Invalid mail address" : "Enderezo de correo incorrecto", + "Settings saved" : "Axustes gardados", + "Unable to change full name" : "Non é posíbel cambiar o nome completo", + "Unable to change email address" : "Non é posíbel cambiar o enderezo de correo.", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Para poder verificar a súa conta de Twitter, publique o seguinte chío en Twitter (asegúrese de publicar sen ningún salto de liña):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Para poder verificar o seu sitio Web, engada o seguinte contido ao seu web-root en «.well-known/CloudIdVerificationCode.txt» (asegúrese de que o texto completo estea só nunha liña):", + "%1$s changed your password on %2$s." : "%1$s cambiou o seu contrasinal en %2$s.", + "Your password on %s was changed." : "Foi cambiado o seu contrasinal en %s.", + "Your password on %s was reset by an administrator." : "O seu contrasinal en %s foi restabelecido por un administrador", + "Password for %1$s changed on %2$s" : "Contrasinal para %1$s cambiado en %2$s", + "Password changed for %s" : "Contrasinal cambiado por %s", + "If you did not request this, please contact an administrator." : "Se vostede non solicitou isto, póñase en contacto co administrador.", + "Your email address on %s was changed." : "Foi cambiado o seu enderezo de correo en %s.", + "Your email address on %s was changed by an administrator." : "O seu enderezo de correo en %s foi cambiado por un administrador", + "Email address for %1$s changed on %2$s" : "Enderezo de correo para %1$s cambiado en %2$s", + "Email address changed for %s" : "Enderezo de correo cambiado por %s", + "The new email address is %s" : "O novo enderezo de correo é %s", + "Your %s account was created" : "Foi creada a conta %s", + "Welcome aboard" : "Benvido a bordo", + "Welcome aboard %s" : "Benvido a bordo %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Benvido á súa conta , pode engadir, protexer e compartir os seus datos.", + "Your username is: %s" : "O seu nome de usuario é: %s", + "Set your password" : "Estabeleza o seu contrasinal", + "Go to %s" : "Ira a %s", + "Install Client" : "Instalar o cliente", + "Logged in user must be a subadmin" : "O usuario rexistrado debe ser un subadministrador", + "Create" : "Crear", + "Change" : "Cambiar", + "Delete" : "Eliminar", + "Share" : "Compartir", + "Unlimited" : "Sen límites", + "Verifying" : "Verificando", + "Verifying …" : "Verificando…", + "Verify" : "Verificar", + "Migration in progress. Please wait until the migration is finished" : "A migración está en proceso. Agarde a que remate.", + "Migration started …" : "Iniciada a migración ...", + "Not saved" : "Sen gardar", + "Sending…" : "Enviando...", + "Email sent" : "Correo enviado", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Produciuse un erro. Envíe un certificado PEM codificado en ASCII.", + "Valid until {date}" : "Válido ata {date}", + "Local" : "Local", + "Private" : "Privado", + "Only visible to local users" : "Visíbel só para usuarios locais", + "Only visible to you" : "Visíbel só para vostede", + "Contacts" : "Contactos", + "Visible to local users and to trusted servers" : "Visíbel para usuarios locais e para servidores de confianza", + "Public" : "Público", + "Will be synced to a global and public address book" : "Vai ser sincronizado cun caderno de enderezos global e público", + "Very weak password" : "Contrasinal moi feble", + "Weak password" : "Contrasinal feble", + "So-so password" : "Contrasinal non moi aló", + "Good password" : "Bo contrasinal", + "Strong password" : "Contrasinal forte", + "An error occurred while changing your language. Please reload the page and try again." : "Produciuse un erro ao cambiar o seu idioma. Actualice a páxina e tenteo de novo.", + "An error occurred while changing your locale. Please reload the page and try again." : "Produciuse un erro ao cambiar a súa configuración rexional. Actualice a páxina e tenteo de novo.", + "Select a profile picture" : "Seleccione unha imaxe para o perfil", + "Week starts on {fdow}" : "A semana comeza o {fdow}", + "Groups" : "Grupos", + "Group list is empty" : "A lista de grupos está baleira", + "Unable to retrieve the group list" : "Non é posíbel recuperar a lista de grupos", + "Afrikaans (Namibia)" : "Africáner (Namibia)", + "Afrikaans (South Africa)" : "Africáner (Suráfrica)", + "Afrikaans" : "Africáner", + "Akan (Ghana)" : "Akan (Ghana)", + "Akan" : "Akan", + "Albanian (Albania)" : "Albanés (Albania)", + "Albanian" : "Albanés", + "Amharic (Ethiopia)" : "Amhárico (Etiopía)", + "Amharic" : "Amhárico", + "Arabic (Algeria)" : "Árabe (Alxeria)", + "Arabic (Bahrain)" : "Árabe (Barein)", + "Arabic (Egypt)" : "Árabe (Exipto)", + "Arabic (Iraq)" : "Árabe (Iraq)", + "Arabic (Jordan)" : "Árabe (Xordania)", + "Arabic (Kuwait)" : "Árabe (Kuvait)", + "Arabic (Lebanon)" : "Árabe (Líbano)", + "Arabic (Libya)" : "Árabe (Libia)", + "Arabic (Morocco)" : "Árabe (Marrocos)", + "Arabic (Oman)" : "Árabe (Omán)", + "Arabic (Qatar)" : "Árabe (Catar)", + "Arabic (Saudi Arabia)" : "Árabe (Arabia Saudita)", + "Arabic (Sudan)" : "Árabe (Sudán)", + "Arabic (Syria)" : "Árabe (Siria)", + "Arabic (Tunisia)" : "Árabe (Tunisia)", + "Arabic (United Arab Emirates)" : "Árabe (Emiratos Árabes Unidos)", + "Arabic (Yemen)" : "Árabe (Iemen)", + "Arabic" : "Árabe", + "Armenian (Armenia)" : "Armenio (Armenia)", + "Armenian" : "Armenio", + "Assamese (India)" : "Asamés (India)", + "Assamese" : "Asamés", + "Asu (Tanzania)" : "Asu (Tanzania)", + "Asu" : "Asu", + "Azerbaijani (Cyrillic)" : "Azerí (Cirílico)", + "Azerbaijani (Cyrillic, Azerbaijan)" : "Azerí (Cirílico, Acerbaixán)", + "Azerbaijani (Latin)" : "Azerí (Latín)", + "Azerbaijani (Latin, Azerbaijan)" : "Azerí (Latín, Acerbaixán)", + "Azerbaijani" : "Azerí", + "Bambara (Mali)" : "Bambara (Malí)", + "Bambara" : "Bambara", + "Basque (Spain)" : "Éuscaro (España)", + "Basque" : "Éuscaro", + "Belarusian (Belarus)" : "Bieloruso (Bielorrusia)", + "Belarusian" : "Bieloruso", + "Bemba (Zambia)" : "Bemba (Zambia)", + "Bemba" : "Bemba", + "Bena (Tanzania)" : "Bena (Tanzania)", + "Bena" : "Bena", + "Bengali (Bangladesh)" : "Bengalí (Bangladesh)", + "Bengali (India)" : "Bengalí (India)", + "Bengali" : "Bengalí", + "Bosnian (Bosnia and Herzegovina)" : "Bosnio (Bosnia e Herzegovina)", + "Bosnian" : "Bosnio", + "Bulgarian (Bulgaria)" : "Búlgaro (Bulgaria)", + "Bulgarian" : "Búlgaro", + "Burmese (Myanmar [Burma])" : "Burmés (Mianmar [Burma])", + "Burmese" : "Burmés", + "Catalan (Spain)" : "Catalán (España)", + "Catalan" : "Catalán", + "Central Morocco Tamazight (Latin)" : "Tamazight do Marrocos Central (Latín)", + "Central Morocco Tamazight (Latin, Morocco)" : "Tamazight do Marrocos Central (Latín, Marrocos)", + "Central Morocco Tamazight" : "Tamazight do Marrocos Central", + "Cherokee (United States)" : "Cherokee (Estados Unidos)", + "Cherokee" : "Cherokee", + "Chiga (Uganda)" : "Chiga (Uganda)", + "Chiga" : "Chiga", + "Chinese (Simplified Han)" : "Chinés (Han simplificado)", + "Chinese (Simplified Han, China)" : "Chinés (Han simplificado, China)", + "Chinese (Simplified Han, Hong Kong SAR China)" : "Chinés (Han simplificado, Hong Kong RAE de China)", + "Chinese (Simplified Han, Macau SAR China)" : "Chinés (Han simplificado, Macao RAE de China)", + "Chinese (Simplified Han, Singapore)" : "Chinés (Han simplificado, Singapur)", + "Chinese (Traditional Han)" : "Chinés (Han tradicional)", + "Chinese (Traditional Han, Hong Kong SAR China)" : "Chinés (Han tradicional, Hong Kong RAE de China)", + "Chinese (Traditional Han, Macau SAR China)" : "Chinés (Han tradicional, Macao RAE de China)", + "Chinese (Traditional Han, Taiwan)" : "Chinés (Han tradicional, Taiwán)", + "Chinese" : "Chinés", + "Cornish (United Kingdom)" : "Córnico (Reino Únido)", + "Cornish" : "Córnico", + "Croatian (Croatia)" : "Croata (Croacia)", + "Croatian" : "Croata", + "Czech (Czech Republic)" : "Checo (República Checa)", + "Czech" : "Checo", + "Danish (Denmark)" : "Danés (Dinamarca)", + "Danish" : "Danés", + "Dutch (Belgium)" : "Holandés (Belxica)", + "Dutch (Netherlands)" : "Holandés (Países Baixos)", + "Dutch" : "Holandés", + "Embu (Kenya)" : "Embu (Quenia)", + "Embu" : "Embu", + "English (American Samoa)" : "Inglés (Samoa americana)", + "English (Australia)" : "Inglés (Australia)", + "English (Belgium)" : "Inglés (Belxica)", + "English (Belize)" : "Inglés (Belice)", + "English (Botswana)" : "Inglés (Botsuana)", + "English (Canada)" : "Inglés (Canada)", + "English (Guam)" : "Inglés (Guam)", + "English (Hong Kong SAR China)" : "Inglés (Hong Kong RAE China)", + "English (India)" : "Inglés (India)", + "English (Ireland)" : "Inglés (Irlanda)", + "English (Jamaica)" : "Inglés (Xamaica)", + "English (Malta)" : "Inglés (Malta)", + "English (Marshall Islands)" : "Inglés (Illas Marshall)", + "English (Mauritius)" : "Inglés (Mauricio)", + "English (Namibia)" : "Inglés (Namibia)", + "English (New Zealand)" : "Inglés (Nova Celandia)", + "English (Northern Mariana Islands)" : "Inglés (Illas Marianas do Norte)", + "English (Pakistan)" : "Inglés (Paquistán)", + "English (Philippines)" : "Inglés (Filipinas)", + "English (Singapore)" : "Inglés (Singapur)", + "English (South Africa)" : "Inglés (Suráfrica)", + "English (Trinidad and Tobago)" : "Inglés (Trinidade e Tobago)", + "English (U.S. Minor Outlying Islands)" : "Inglés (Illas exteriores menores dos EE.UU.)", + "English (U.S. Virgin Islands)" : "Inglés (Illas Virxes dos EE.UU.)", + "English (United Kingdom)" : "Inglés (Reino Únido)", + "English (United States)" : "Inglés (Estados Unidos)", + "English (Zimbabwe)" : "Inglés (Cimbabue)", + "English" : "Inglés", + "Esperanto" : "Esperanto", + "Estonian (Estonia)" : "Estonio (Estonia)", + "Estonian" : "Estonio", + "Ewe (Ghana)" : "Eues (Ghana)", + "Ewe (Togo)" : "Eues (Togo)", + "Ewe" : "Eues", + "Faroese (Faroe Islands)" : "Feroés (Illas Feroes)", + "Faroese" : "Feroés", + "Filipino (Philippines)" : "Filipino (Filipinas)", + "Filipino" : "Filipino", + "Finnish (Finland)" : "Finés (Finlandia)", + "Finnish" : "Finés", + "French (Belgium)" : "Francés (Belxica)", + "French (Benin)" : "Francés (Benín)", + "French (Burkina Faso)" : "Francés (Burkina Faso)", + "French (Burundi)" : "Francés (Burundi)", + "French (Cameroon)" : "Francés (Camerún)", + "French (Canada)" : "Francés (Canada)", + "French (Central African Republic)" : "Francés (República Centro Africana)", + "French (Chad)" : "Francés (Chad)", + "French (Comoros)" : "Francés (Comores)", + "French (Congo - Brazzaville)" : "Francés (Congo - Brazzaville)", + "French (Congo - Kinshasa)" : "Francés (Congo - Quinxasa)", + "French (Côte d’Ivoire)" : "Francés (Costa do Marfin)", + "French (Djibouti)" : "Francés (Xibuti)", + "French (Equatorial Guinea)" : "Francés (Guinea Ecuatorial)", + "French (France)" : "Francés (Francia)", + "French (Gabon)" : "Francés (Gabón)", + "French (Guadeloupe)" : "Francés (Guadalupe)", + "French (Guinea)" : "Francés (Guinea)", + "French (Luxembourg)" : "Francés (Luxemburgo)", + "French (Madagascar)" : "Francés (Madagascar)", + "French (Mali)" : "Francés (Malí)", + "French (Martinique)" : "Francés (Martinica)", + "French (Monaco)" : "Francés (Mónaco)", + "French (Niger)" : "Francés (Níxer)", + "French (Rwanda)" : "Francés (Ruanda)", + "French (Réunion)" : "Francés (Reunión)", + "French (Saint Barthélemy)" : "Francés (San Bartolomeu)", + "French (Saint Martin)" : "Francés (San Martín)", + "French (Senegal)" : "Francés (Senegal)", + "French (Switzerland)" : "Francés (Suíza)", + "French (Togo)" : "Francés (Togo)", + "French" : "Francés", + "Fulah (Senegal)" : "Fula (Senegal)", + "Fulah" : "Fula", + "Galician (Spain)" : "Galego (España)", + "Galician" : "Galego", + "Ganda (Uganda)" : "Ganda (Uganda)", + "Ganda" : "Ganda", + "Georgian (Georgia)" : "Xeorxiano (Xeorxia)", + "Georgian" : "Xeorxiano", + "German (Austria)" : "Alemán (Austria)", + "German (Belgium)" : "Alemán (Belxica)", + "German (Germany)" : "Alemán (Alemania)", + "German (Liechtenstein)" : "Alemán (Liechtenstein)", + "German (Luxembourg)" : "Alemán (Luxemburgo)", + "German (Switzerland)" : "Alemán (Suíza)", + "German" : "Alemán", + "Greek (Cyprus)" : "Grego (Chipre)", + "Greek (Greece)" : "Grego (Grecia)", + "Greek" : "Grego", + "Gujarati (India)" : "Guxaratí (India)", + "Gujarati" : "Guxaratí", + "Gusii (Kenya)" : "Gusii (Quenia)", + "Gusii" : "Gusii", + "Hausa (Latin)" : "Hausa (Latín)", + "Hausa (Latin, Ghana)" : "Hausa (Latín, Ghana)", + "Hausa (Latin, Niger)" : "Hausa (Latín, Níxer)", + "Hausa (Latin, Nigeria)" : "Hausa (Latín, Nixeria)", + "Hausa" : "Hausa", + "Hawaiian (United States)" : "Hawaiano (Estados Unidos)", + "Hawaiian" : "Hawaiano", + "Hebrew (Israel)" : "Hebreo (Israel)", + "Hebrew" : "Hebreo", + "Hindi (India)" : "Hindi (India)", + "Hindi" : "Hindi", + "Hungarian (Hungary)" : "Húngaro (Hungría)", + "Hungarian" : "Húngaro", + "Icelandic (Iceland)" : "Islandés (Islandia)", + "Icelandic" : "Islandés", + "Igbo (Nigeria)" : "Igbo (Nixeria)", + "Igbo" : "Igbo", + "Indonesian (Indonesia)" : "Indonesio (Indonesia)", + "Indonesian" : "Indonesio", + "Irish (Ireland)" : "Irlandés (Irlanda)", + "Irish" : "Irlandés", + "Italian (Italy)" : "Italiano (Italia)", + "Italian (Switzerland)" : "Irlandés (Suíza)", + "Italian" : "Italiano", + "Japanese (Japan)" : "Xaponés (Xapón)", + "Japanese" : "Xaponés", + "Kabuverdianu (Cape Verde)" : "Caboverdiano (Cabo Verde)", + "Kabuverdianu" : "Caboverdiano", + "Kabyle (Algeria)" : "Kabyle (Alxeria)", + "Kabyle" : "Kabyle", + "Kalaallisut (Greenland)" : "Kalaallisut (Grenlandia)", + "Kalaallisut" : "Kalaallisut", + "Kalenjin (Kenya)" : "Calenllin (Kenya)", + "Kalenjin" : "Calenllin", + "Kamba (Kenya)" : "Camba (Quenia)", + "Kamba" : "Camba", + "Kannada (India)" : "Canarés (India)", + "Kannada" : "Canarés", + "Kazakh (Cyrillic)" : "Cazaxo (Cirílico)", + "Kazakh (Cyrillic, Kazakhstan)" : "Cazaxo (Cirilico, Cazaquistán)", + "Kazakh" : "Cazaxo", + "Khmer (Cambodia)" : "Khmer (Camboxa)", + "Khmer" : "Khmer", + "Kikuyu (Kenya)" : "Quicuio (Quenia)", + "Kikuyu" : "Quicuio", + "Kinyarwanda (Rwanda)" : "Ruandés (Ruanda)", + "Kinyarwanda" : "Ruandés", + "Konkani (India)" : "Konkani (India)", + "Konkani" : "Konkani", + "Korean (South Korea)" : "Coreano (Corea do Sur)", + "Korean" : "Coreano", + "Koyra Chiini (Mali)" : "Coira Chiini (Malí)", + "Koyra Chiini" : "Coira Chiini", + "Koyraboro Senni (Mali)" : "Coiraboro Senni (Malí)", + "Koyraboro Senni" : "Coiraboro Senni", + "Langi (Tanzania)" : "Langi (Tanzania)", + "Langi" : "Langi", + "Latvian (Latvia)" : "Letón (Letonia)", + "Latvian" : "Letón", + "Lithuanian (Lithuania)" : "Lituano (Lituania)", + "Lithuanian" : "Lituano", + "Luo (Kenya)" : "Luo (Quenia)", + "Luo" : "Luo", + "Luyia (Kenya)" : "Luia (Kenya)", + "Luyia" : "Luia", + "Macedonian (Macedonia)" : "Macedonio (Macedonia)", + "Macedonian" : "Macedonio", + "Machame (Tanzania)" : "Machame (Tanzania)", + "Machame" : "Machame", + "Makonde (Tanzania)" : "Maconde (Tanzania)", + "Makonde" : "Maconde", + "Malagasy (Madagascar)" : "Malgaxe (Madagascar)", + "Malagasy" : "Malgaxe", + "Malay (Brunei)" : "Malaio (Brunei)", + "Malay (Malaysia)" : "Malaio (Malasia)", + "Malay" : "Malaio", + "Malayalam (India)" : "Malayalam (India)", + "Malayalam" : "Malayalam", + "Maltese (Malta)" : "Maltés (Malta)", + "Maltese" : "Maltés", + "Manx (United Kingdom)" : "Gaélico manés (Reino Unido)", + "Manx" : "Gaélico manés", + "Marathi (India)" : "Maratí (India)", + "Marathi" : "Maratí", + "Masai (Kenya)" : "Masai (Quenia)", + "Masai (Tanzania)" : "Masai (Tanzania)", + "Masai" : "Masai", + "Meru (Kenya)" : "Meru (Quenia)", + "Meru" : "Meru", + "Morisyen (Mauritius)" : "Morisien (Mauricio)", + "Morisyen" : "Morisien", + "Nama (Namibia)" : "Nama (Namibia)", + "Nama" : "Nama", + "Nepali (India)" : "Nepalés (India)", + "Nepali (Nepal)" : "Nepales (Nepal)", + "Nepali" : "Nepales", + "North Ndebele (Zimbabwe)" : "Ndebele do norte (Cimbabue)", + "North Ndebele" : "Ndebele do norte", + "Norwegian Bokmål (Norway)" : "Noruegués bokmål (Noruega)", + "Norwegian Bokmål" : "Noruegués bokmål", + "Norwegian Nynorsk (Norway)" : "Noruegués nynorsk (Noruega)", + "Norwegian Nynorsk" : "Noruegués nynorsk", + "Nyankole (Uganda)" : "Nyankole (Uganda)", + "Nyankole" : "Nyankole", + "Oriya (India)" : "Orilla (India)", + "Oriya" : "Orilla", + "Oromo (Ethiopia)" : "Oromo (Etiopía)", + "Oromo (Kenya)" : "Oromo (Quenia)", + "Oromo" : "Oromo", + "Pashto (Afghanistan)" : "Pastún (Afganistán)", + "Pashto" : "Pastún", + "Persian (Afghanistan)" : "Persa (Afganistán)", + "Persian (Iran)" : "Persa (Iran)", + "Persian" : "Persa", + "Polish (Poland)" : "Polaco (Polonia)", + "Polish" : "Polaco", + "Portuguese (Brazil)" : "Portugués (Brasil)", + "Portuguese (Guinea-Bissau)" : "Portuguese (Guinea-Bisau)", + "Portuguese (Mozambique)" : "Portugués (Mozambique)", + "Portuguese (Portugal)" : "Portugués (Portugal)", + "Portuguese" : "Portugués", + "Punjabi (Arabic)" : "Punxabi (Árabe)", + "Punjabi (Arabic, Pakistan)" : "Punxabi (Árabe, Paquistán)", + "Punjabi (Gurmukhi)" : "Punxabi (Gurmukhi)", + "Punjabi (Gurmukhi, India)" : "Punxabi (Gurmukhi, India)", + "Punjabi" : "Punxabi", + "Romanian (Moldova)" : "Romanés (Moldavia)", + "Romanian (Romania)" : "Romanés (Romania)", + "Romanian" : "Romanés", + "Romansh (Switzerland)" : "Romanche (Suíza)", + "Romansh" : "Romanche", + "Rombo (Tanzania)" : "Rombo (Tanzania)", + "Rombo" : "Rombo", + "Russian (Moldova)" : "Ruso (Moldavia)", + "Russian (Russia)" : "Ruso (Rusia)", + "Russian (Ukraine)" : "Ruso (Ucraína)", + "Russian" : "Ruso", + "Rwa (Tanzania)" : "Ruá (Tanzania)", + "Rwa" : "Ruá", + "Samburu (Kenya)" : "Samburu (Quenia)", + "Samburu" : "Samburu", + "Sango (Central African Republic)" : "Sango (República Centro Africana)", + "Sango" : "Sango", + "Sena (Mozambique)" : "Sena (Mozambique)", + "Sena" : "Sena", + "Serbian (Cyrillic)" : "Serbio (Cirílico)", + "Serbian (Cyrillic, Bosnia and Herzegovina)" : "Serbio (Cirílico, Bosnia e Herzegovina)", + "Serbian (Cyrillic, Montenegro)" : "Serbio (Cirílico, Montenegro)", + "Serbian (Cyrillic, Serbia)" : "Serbio (Cirílico, Serbia)", + "Serbian (Latin)" : "Serbio (Latín)", + "Serbian (Latin, Bosnia and Herzegovina)" : "Serbio (Latín, Bosnia e Herzegovina)", + "Serbian (Latin, Montenegro)" : "Serbio (Latín, Montenegro)", + "Serbian (Latin, Serbia)" : "Serbio (Latín, Serbia)", + "Serbian" : "Serbio", + "Shona (Zimbabwe)" : "Shona (Zimbabwe)", + "Shona" : "Shona", + "Sichuan Yi (China)" : "Nuosu (China)", + "Sichuan Yi" : "Nuosu", + "Sinhala (Sri Lanka)" : "Sinhala (Sri Lanka)", + "Sinhala" : "Sinhala", + "Slovak (Slovakia)" : "Eslovaco (Eslovaquia)", + "Slovak" : "Eslovaco", + "Slovenian (Slovenia)" : "Esloveno (Eslovenia)", + "Slovenian" : "Esloveno", + "Soga (Uganda)" : "Soga (Uganda)", + "Soga" : "Soga", + "Somali (Djibouti)" : "Somalí (Xibuti)", + "Somali (Ethiopia)" : "Somalí (Etiopía)", + "Somali (Kenya)" : "Somalí (Quenia)", + "Somali (Somalia)" : "Somalí (Somalia)", + "Somali" : "Somalí", + "Spanish (Argentina)" : "Español (Arxentina)", + "Spanish (Bolivia)" : "Español (Bolivia)", + "Spanish (Chile)" : "Español (Chile)", + "Spanish (Colombia)" : "Español (Colombia)", + "Spanish (Costa Rica)" : "Español (Costa Rica)", + "Spanish (Dominican Republic)" : "Español (república Dominicana)", + "Spanish (Ecuador)" : "Español (Ecuador)", + "Spanish (El Salvador)" : "Español (El Salvador)", + "Spanish (Equatorial Guinea)" : "Español (Guinea Ecuatorial)", + "Spanish (Guatemala)" : "Español (Guatemala)", + "Spanish (Honduras)" : "Español (Honduras)", + "Spanish (Latin America)" : "Español (Latinoamerica)", + "Spanish (Mexico)" : "Español (Mexico)", + "Spanish (Nicaragua)" : "Español (Nicaragua)", + "Spanish (Panama)" : "Español (Panamá)", + "Spanish (Paraguay)" : "Español (Paraguai)", + "Spanish (Peru)" : "Español (Perú)", + "Spanish (Puerto Rico)" : "Español (Puerto Rico)", + "Spanish (Spain)" : "Español (España)", + "Spanish (United States)" : "Español (Estados Unidos)", + "Spanish (Uruguay)" : "Español (Uruguai)", + "Spanish (Venezuela)" : "Español (Venezuela)", + "Spanish" : "Español", + "Swahili (Kenya)" : "Swahili (Quenia)", + "Swahili (Tanzania)" : "Swahili (Tanzania)", + "Swahili" : "Swahili", + "Swedish (Finland)" : "Sueco (Finlandia)", + "Swedish (Sweden)" : "Sueco (Suecia)", + "Swedish" : "Sueco", + "Swiss German (Switzerland)" : "Alemán suízo (Suíza)", + "Swiss German" : "Alemán suízo", + "Tachelhit (Latin)" : "Tachelhit (Latín)", + "Tachelhit (Latin, Morocco)" : "Tachelhit (Latín, Marrocos)", + "Tachelhit (Tifinagh)" : "Tachelhit (Tifinague)", + "Tachelhit (Tifinagh, Morocco)" : "Tachelhit (Tifinague, Marrocos)", + "Tachelhit" : "Tachelhit", + "Taita (Kenya)" : "Taita (Quenia)", + "Taita" : "Taita", + "Tamil (India)" : "Tamil (India)", + "Tamil (Sri Lanka)" : "Tamil (Sri Lanka)", + "Tamil" : "Tamil", + "Telugu (India)" : "Telugu (India)", + "Telugu" : "Telugu", + "Teso (Kenya)" : "Teso (Quenia)", + "Teso (Uganda)" : "Teso (Uganda)", + "Teso" : "Teso", + "Thai (Thailand)" : "Tailandés (Tailandia)", + "Thai" : "Tailandés", + "Tibetan (China)" : "Tibetano (China)", + "Tibetan (India)" : "Tibetano (India)", + "Tibetan" : "Tibetano", + "Tigrinya (Eritrea)" : "Tigriña (Eritrea)", + "Tigrinya (Ethiopia)" : "Tigriña (Etiopía)", + "Tigrinya" : "Tigriña", + "Tonga (Tonga)" : "Tonga (Tonga)", + "Tonga" : "Tonga", + "Turkish (Turkey)" : "Turco (Turquía)", + "Turkish" : "Turco", + "Ukrainian (Ukraine)" : "Ucraíno (Ucraína)", + "Ukrainian" : "Ucraíno", + "Urdu (India)" : "Urdu (India)", + "Urdu (Pakistan)" : "Urdu (Paquistán)", + "Urdu" : "Urdu", + "Uzbek (Arabic)" : "Uzbeko (Árabe)", + "Uzbek (Arabic, Afghanistan)" : "Uzbeko (Árabe, Afganistán)", + "Uzbek (Cyrillic)" : "Uzbeko (Cirílico)", + "Uzbek (Cyrillic, Uzbekistan)" : "Uzbeko (Cirílico, Usbequistán)", + "Uzbek (Latin)" : "Uzbeko (Latín)", + "Uzbek (Latin, Uzbekistan)" : "Uzbeco (Latín, Usbequistán)", + "Uzbek" : "Uzbeco", + "Vietnamese (Vietnam)" : "Vietnamita (Vietnam)", + "Vietnamese" : "Vietnamita", + "Vunjo (Tanzania)" : "Vunjo (Tanzania)", + "Vunjo" : "Vunjo", + "Welsh (United Kingdom)" : "Galés (Reino Únido)", + "Welsh" : "Galés", + "Yoruba (Nigeria)" : "Ioruba (Nixeria)", + "Yoruba" : "Ioruba", + "Zulu (South Africa)" : "Zulú (Suráfrica)", + "Zulu" : "Zulú", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "A autenticación de dous factores pode ser aplicada para todos\tos usuarios e grupos específicos. Se non tiveran configurado un provedor de dous factores, non podería acceder ao sistema.", + "Enforce two-factor authentication" : "Obrigar a autenticación de dous factores", + "Limit to groups" : "Límite para grupos", + "Enforcement of two-factor authentication can be set for certain groups only." : "A obrigatoriedade da autenticación de dous factores pode estabelecerse só para certos grupos.", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "A autenticación de dous factores é obrigatoria para todos\tos membros os seguintes grupos.", + "Enforced groups" : "Grupos obrigados", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "A autenticación de dous factores non é obrigatoria para os\tmembros dos seguintes grupos.", + "Excluded groups" : "Grupos excluídos", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "Cando se seleccionan/exclúen os grupos, usase a seguinte lóxica para determinar se un usuario ten obrigada a A2F: Se non hai grupos seleccionados, a A2F está activa para todos agás os membros dos grupos excluídos. Se hai grupos seleccionados, a A2F está activa para todos os membros destes. Se un usuario está á vez nun grupo seleccionado e noutro excluído, o seleccionado ten preferencia e se lle obriga a A2F.", + "Save changes" : "Gardar os cambios", + "Marked for remote wipe" : "Marcado para limpeza remota", + "Device settings" : "Axustes do dispositivo", + "Allow filesystem access" : "Permitir o acceso aos sistema de ficheiros", + "Rename" : "Renomear", + "Revoke" : "Revogar", + "Wipe device" : "Limpar o dispositivo", + "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "O revogado desta marca pode impedir a limpeza deste dispositivo se aínda non comezou.", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome para Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Apli Nextcloud para iOS", + "Nextcloud Android app" : "Apli Nextcloud para Android", + "Nextcloud Talk for iOS" : "Nextcloud Talk para iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk para Android", + "Sync client - {os}" : "Cliente de sincronización - {os}", + "This session" : "Esta sesión", + "Device" : "Dispositivo", + "Last activity" : "Última actividade", + "Devices & sessions" : "Dispositivos e sesións", + "Web, desktop and mobile clients currently logged in to your account." : "Clientes web, móbiles e de escritorio actualmente conectados á súa conta.", + "Do you really want to wipe your data from this device?" : "Confirma que quere limpar os seus datos deste dispositivo?", + "Confirm wipe" : "Confirmar a limpeza", + "Error while creating device token" : "Produciuse un erro mentres creaba unha marca de dispositivo", + "Error while updating device token scope" : "Produciuse un erro ao actualizar o ámbito da marca do dispositivo", + "Error while updating device token name" : "Produciuse un erro ao actualizar o nome da marca do dispositivo", + "Error while deleting the token" : "Produciuse un erro mentres eliminaba unha marca", + "Error while wiping the device with the token" : "Produciuse un erro ao limpar o dispositivo coa marca", + "App name" : "Nome da aplicación", + "Create new app password" : "Crear un novo contrasinal de aplicación", + "Use the credentials below to configure your app or device." : "Use as seguintes credenciais para configurar a súa aplicación ou dispositivo. ", + "For security reasons this password will only be shown once." : "Por razóns de seguridade ese contrasinal só se amosará unha vez. ", + "Username" : "Nome de usuario", + "Password" : "Contrasinal", + "Done" : "Feito", + "Show QR code for mobile apps" : "Amosar un código QR para aplicacións móbiles", + "Copied!" : "Copiado!", + "Copy" : "Copiar", + "Could not copy app password. Please copy it manually." : "Non foi posíbel copiar o contrasinal da app. Cópieo manualmente.", + "This app is supported via your current Nextcloud subscription." : "Esta aplicación é compatíbel cos súa subscrición actual a Nextcloud.", + "Supported" : "Compatíbel", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "As aplicacións oficiais están desenvolvidas por e dentro da comunidade. Ofrecen unha funcionalidade central e están preparadas para o seu uso en produción.", + "Official" : "Oficial", + "by" : "por", + "Update to {version}" : "Actualizar a {version}", + "Remove" : "Retirar", + "Disable" : "Desactivar", + "All" : "Todo", + "Limit app usage to groups" : "Limitar o uso de aplicacións a grupos", + "No results" : "Sen resultados", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación non dispón dunha versión mínima de Nextcloud asignada. Isto será un erro no futuro.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación non dispón dunha versión máxima de Nextcloud asignada. Isto será un erro no futuro.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Non é posíbel instalar esta aplicación por mor de non cumprirse as dependencias:", + "View in store" : "Ver na tenda", + "Visit website" : "Visite o sitio web", + "Report a bug" : "Informar dun fallo", + "User documentation" : "Documentación do usuario", + "Admin documentation" : "Documentación do administrador", + "Developer documentation" : "Documentación do desenvolvedor", + "Update to {update}" : "Actualizar a {update}", + "Results from other categories" : "Resultados doutras categorías", + "No apps found for your version" : "Non se atoparon aplicacións para a súa versión", + "Disable all" : "Desactivar todo", + "Enable all" : "Activar todo", + "Download and enable" : "Descargar e activar", + "Enable" : "Activar", + "Enable untested app" : "Activar a aplicación sen probar", + "The app will be downloaded from the app store" : "A aplicación debe ser descargada dende un repositorio/tenda de aplicacións", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Esta aplicación non está marcado como compatíbel coa súa versión do Nextcloud. Se continúa, poderá instalar a aplicación. Teña en conta que é probábel que a aplicación non funcione como se agarda.", + "You do not have permissions to see the details of this user" : "Vostede non ten permisos para ver os detalles deste usuario", + "The backend does not support changing the display name" : "A infraestrutura non admite o cambio do nome a amosar", + "New password" : "Novo contrasinal", + "Add user in group" : "Engadir usuario no grupo", + "Set user as admin for" : "Estabelecer o usuario como administrador para", + "Select user quota" : "Seleccionar a cota de usuario", + "No language set" : "Non foi estabelecido ningún idioma", + "Never" : "Nunca", + "Delete user" : "Eliminar usuario", + "Wipe all devices" : "Limpar todos os dispositivos", + "Disable user" : "Desactivar usuario", + "Enable user" : "Activar usuario", + "Resend welcome email" : "Volver a enviar o correo de benvida", + "{size} used" : "{size} usado", + "Welcome mail sent!" : "Enviado o correo de benvida!", + "Display name" : "Nome a amosar", + "Email" : "Correo", + "Group admin for" : "Administrador de grupo para", + "Quota" : "Cota", + "Language" : "Idioma", + "Storage location" : "Localización do almacenamento", + "User backend" : "Infraestrutura do usuario", + "Last login" : "Último acceso", + "Will be autogenerated" : "Vai ser xerado automaticamente", + "Default language" : "Idioma predeterminado", + "Add a new user" : "Engadir un novo usuario", + "No users in here" : "Aquí non hai usuarios", + "Default quota" : "Cota predeterminada", + "Password change is disabled because the master key is disabled" : "O cambio de contrasinal está desactivado porque a chave mestra está desactivada", + "Common languages" : "Idiomas habituais", + "All languages" : "Todos os idiomas", + "Your apps" : "As súas aplicacións", + "Active apps" : "Aplcativos activos", + "Disabled apps" : "Aplicacións desactivadas", + "Updates" : "Actualizacións", + "App bundles" : "Paquetes de aplicacións", + "{license}-licensed" : "Licenciado baixo a {license}", + "New user" : "Novo usuario", + "Default quota:" : "Cota predeterminada:", + "Select default quota" : "Seleccionar a cota predeterminada", + "Show Languages" : "Amosar os idiomas", + "Show last login" : "Amosar o último acceso", + "Show user backend" : "Amosar a infraestrutura do usuario", + "Show storage path" : "Amosar a ruta do almacenamento", + "You are about to remove the group {group}. The users will NOT be deleted." : "Está a piques de retirar o grupo {group}. Os usuarios NON van seren eliminados.", + "Please confirm the group removal " : "Confirme a retirada do grupo ", + "Remove group" : "Retirar o grupo", + "Admins" : "Administradores", + "Disabled users" : "Usuarios desactivados", + "Everyone" : "Todos", + "Add group" : "Engadir un grupo", + "An error occured during the request. Unable to proceed." : "Produciuse un erro durante a solicitude. Non é posíbel continuar.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "A aplicación foi activada pero necesita ser actualizada. Vai ser redirixido cara a páxina de actualizarións en 5 segundos.", + "App update" : "Actualización da aplicación", + "Error: This app can not be enabled because it makes the server unstable" : "Erro: Esta aplicación non pode ser activada xa que xera inestabilidade no servidor ", + "SSL Root Certificates" : "Certificados raíz SSL", + "Common Name" : "Nome común", + "Valid until" : "Válido ata", + "Issued By" : "Fornecido por", + "Valid until %s" : "Válido ata %s", + "Import root certificate" : "Importar o certificado raíz", + "Administrator documentation" : "Documentación do administrador", + "Documentation" : "Documentación", + "Forum" : "Foro", + "None" : "Ningún", + "Login" : "Acceso", + "Plain" : "Simple", + "NT LAN Manager" : "Xestor NT LAN", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Servidor de correo", + "Open documentation" : "Abrir a documentación", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "É importante configurar este servidor para que poida enviar correos, por exemplo para cambios de contrasinais e notificacións.", + "Send mode" : "Modo de envío", + "Encryption" : "Cifrado", + "Sendmail mode" : "Modo do Sendmail", + "From address" : "Dende o enderezo", + "mail" : "correo", + "Authentication method" : "Método de autenticación", + "Authentication required" : "Requírese autenticación", + "Server address" : "Enderezo do servidor", + "Port" : "Porto", + "Credentials" : "Credenciais", + "SMTP Username" : "Nome de usuario SMTP", + "SMTP Password" : "Contrasinal SMTP", + "Save" : "Gardar", + "Test email settings" : "Correo de proba dos axustes", + "Send email" : "Enviar o correo", + "Security & setup warnings" : "Avisos de seguridade e configuración", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "É importante para a seguridade e o bo funcionamento da súa instancia que todo estea configurado correctamente. Para axudarlle niso, imos facer algunhas comprobacións automáticas. Vexa a documentación ligada para obter máis información. ", + "All checks passed." : "Pasáronse todas as verificacións.", + "There are some errors regarding your setup." : "Hai algún erro relativo aos seus axustes.", + "There are some warnings regarding your setup." : "Hai algún aviso relativo aos seus axustes.", + "Checking for system and security issues." : "Verificando incidentes de sistema e seguridade.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Volva verificar as <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">guías de instalación ↗</a>, e comprobe que non haxa erros ou avisos no <a href=\"%2$s\">rexistro</a>. ", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Comprobe a seguridade do seu Nextcloud empregando o <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">noso escaneo de seguridade ↗</a>.", + "Version" : "Versión", + "Two-Factor Authentication" : "Autenticación de dous factores", + "Server-side encryption" : "Cifrado na parte do servidor", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "O cifrado do lado do servidor fai posíbel cifrar os ficheiros que van ser enviados a este servidor. Isto leva algunhas limitacións como penalizacións no rendemento, así que actíveo só se é necesario.", + "Enable server-side encryption" : "Activar o cifrado na parte do servidor", + "Please read carefully before activating server-side encryption: " : "Lea detidamente antes de activar o cifrado do lado do servidor:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Una vez que o cifrado estea activado, todos os ficheiros enviados ao servidor dende ese punto en diante cifraranse en repouso no servidor. Só será posíbel desactivar o cifrado nunha data posterior se o módulo de cifrado activado admite esa función, e se cumpran todas as condicións previas (por exemplo, o estabelecemento dunha chave de recuperación).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "O cifrado por si só non garante a seguridade do sistema. Vexa a documentación para obter máis información sobre como funciona a aplicación de cifrado e os casos de uso admitidos.", + "Be aware that encryption always increases the file size." : "Teña presente que o cifrado sempre incrementa o tamaño do ficheiro.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Sempre é bo crear copias de seguranza dos seus datos, no caso do cifrado, asegúrese de ter unha copia de seguranza das chaves de cifrado xunto cos seus datos.", + "This is the final warning: Do you really want to enable encryption?" : "Esta é a advertencia final. Confirma que quere activar o cifrado?", + "Enable encryption" : "Activar o cifrado", + "No encryption module loaded, please enable an encryption module in the app menu." : "Non hai cargado ningún módulo de cifrado, active un módulo de cifrado no menú de aplicacións.", + "Select default encryption module:" : "Seleccionar o módulo predeterminado de cifrado:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "É necesario migrar as súas chaves de cifrado do antigo cifrado (ownCloud <= 8,0) cara ao novo. Active o «Módulo predeterminado de cifrado» e execute «occ encryption:migrate»", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "É necesario migrar as chaves de cifrado do antigo cifrado (ownCloud <= 8,0) cara ao novo.", + "Start migration" : "Iniciar a migración", + "Background jobs" : "Traballos en segundo plano", + "Last job ran %s." : "O último traballo executouse %s.", + "Last job execution ran %s. Something seems wrong." : "O último traballo executouse %s. Algo semella estar mal.", + "Background job didn’t run yet!" : "O traballo en segundo plano aínda non se executou!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para un rendemento óptimo é importante configurar correctamente os traballos en segundo plano. Para instancias máis grandes, «Cron» é o axuste recomendado. Vexa a documentación para obter máis información.", + "Pick background job setting" : "Escolla os axustes do traballo en segundo plano", + "Execute one task with each page loaded" : "Executar unha tarefa con cada páxina cargada", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php está rexistrado nun servizo de WebCron para chamar a cron.php cada 5 minutos a través de HTTP.", + "Use system cron service to call the cron.php file every 5 minutes." : "Use o servizo «cron» do sistema para chamar ao ficheiro cron.php cada 5 minutos.", + "The cron.php needs to be executed by the system user \"%s\"." : "O cron.php debe ser executado polo usuario do sistema «%s»", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para executar isto necesitase a extensión POSIX de PHP. Vexa a {linkstart}documentación de PHP{linkend} para obter máis detalles. ", + "Sharing" : "Compartindo", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador pode facer axustes finos do comportamento al compartir. Lea a documentación para obter máis más información.", + "Allow apps to use the Share API" : "Permitir que as aplicacións empreguen o API para compartir", + "Allow users to share via link" : "Permitir que os usuarios compartan a través de ligazóns", + "Allow public uploads" : "Permitir os envíos públicos", + "Always ask for a password" : "Pedir sempre un contrasinal", + "Enforce password protection" : "Forzar a protección por contrasinal", + "Set default expiration date" : "Definir a data predeterminada de caducidade", + "Expire after " : "Caduca após", + "days" : "días", + "Enforce expiration date" : "Forzar a data de caducidade", + "Allow resharing" : "Permitir compartir", + "Allow sharing with groups" : "Permitir compartir con grupos", + "Restrict users to only share with users in their groups" : "Restrinxir aos usuarios a compartir só cos usuarios dos seus grupos", + "Exclude groups from sharing" : "Excluír grupos da compartición", + "These groups will still be able to receive shares, but not to initiate them." : "Estes grupos poderán recibir comparticións, mais non inicialas.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Permitir autocompletar o nome de usuario na xanela de diálogo. Se esta opción está desactivada, debera escribirse o nome de usuario completo ou o enderezo de correo-e. ", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Amosar o texto de exención de responsabilidade na páxina de envío de ligazóns publicas. (Amosarase só cando a lista de ficheiros estea agochada.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Este texto amosarase na páxina de envío das ligazóns públicas cando a lista de ficheiros estea agochada.", + "Default share permissions" : "Permisos predeterminados para compartir", + "Personal" : "Persoal", + "Administration" : "Administración", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Desenvolvido pola {communityopen}comunidade Nextcloud{linkclose}, o {githubopen}código fonte{linkclose} está licenciado baixo a {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Faga un Gústame na nosa páxina de Facebook", + "Follow us on Twitter" : "Síganos no Twitter", + "Follow us on Mastodon" : "Síganos na Mastodon", + "Check out our blog" : "Visite o noso blog ", + "Subscribe to our newsletter" : "Subscríbase ao noso boletín", + "Profile picture" : "Imaxe do perfil", + "Upload new" : "Novo envío", + "Select from Files" : "Seleccionar dende Ficheiros", + "Remove image" : "Retirar a imaxe", + "png or jpg, max. 20 MB" : "png ou jpg, max. 20 MB", + "Picture provided by original account" : "Imaxe fornecida pola conta orixinal ", + "Cancel" : "Cancelar", + "Choose as profile picture" : "Seleccionar como imaxe do perfil", + "Details" : "Detalles", + "You are a member of the following groups:" : "Vostede é membro dos seguintes grupos: ", + "You are using <strong>%s</strong>" : "Está usando <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Está usando <strong>%1$s</strong> de <strong>%2$s</strong> (<strong>%3$s%%)", + "Full name" : "Nome completo", + "No display name set" : "Sen nome visíbel estabelecido", + "Your email address" : "O seu enderezo de correo", + "No email address set" : "Non hai un enderezo de correo definido", + "For password reset and notifications" : "Para o restabelecemento de contrasinais e notificacións", + "Phone number" : "Número de teléfono", + "Your phone number" : "O seu número de teléfono", + "Address" : "Enderezo", + "Your postal address" : "O seu enderezo postal", + "Website" : "Sitio web", + "It can take up to 24 hours before the account is displayed as verified." : "Pode levar ata 24 horas antes de que a conta apareza como como verificada.", + "Link https://…" : "Ligazón https://…", + "Twitter" : "Twitter", + "Twitter handle @…" : "Usuario do Twitter @…", + "Help translate" : "Axude na tradución", + "Locale" : "Configuración rexional", + "Current password" : "Contrasinal actual", + "Change password" : "Cambiar o contrasinal", + "Use a second factor besides your password to increase security for your account." : "Empregue un segundo factor ademais do seu contrasinal para aumentar a seguridade da súa conta.", + "Disconnect" : "Desconectar", + "Not supported!" : "Non admitido!", + "Press ⌘-C to copy." : "Prema ⌘-C para copiar.", + "Press Ctrl-C to copy." : "Prema Ctrl-C para copiar.", + "Error while loading browser sessions and device tokens" : "Produciuse un erro ao cargar as sesións do seu navegador e as marcas dos dispositivos.", + "Store credentials" : "Almacenar as credenciais", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php está rexistrado nun servizo de WebCron para chamar a cron.php cada 15 minutos a través de HTTP.", + "Use system cron service to call the cron.php file every 15 minutes." : "Use o servizo «cron» do sistema para chamar ao ficheiro cron.php cada 15 minutos.", + "Follow us on Google+" : "Síganos no Google+" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} \ No newline at end of file diff --git a/apps/settings/l10n/he.js b/apps/settings/l10n/he.js new file mode 100644 index 00000000000..c0a7cc67720 --- /dev/null +++ b/apps/settings/l10n/he.js @@ -0,0 +1,465 @@ +OC.L10N.register( + "settings", + { + "{actor} added you to group {group}" : "נוספת לקבוצה {group} על ידי {actor}", + "You added {user} to group {group}" : "הוספת את {user} לקבוצה {group}", + "{actor} added {user} to group {group}" : "ההוספה של {user} לקבוצה {group} נעשתה על ידי {actor}", + "An administrator added you to group {group}" : "נוספת לקבוצה {group} על ידי מנהל", + "{actor} changed your password" : "הססמה שלך הוחלפה על ידי {actor}", + "You changed your password" : "שינית את הססמה שלך", + "Your password was reset by an administrator" : "הססמה שלך אופסה על ידי מנהל", + "{actor} changed your email address" : "כתובת הדוא״ל שלך נערכה על ידי {actor}", + "You changed your email address" : "שינית את כתובת הדוא״ל שלך", + "Your email address was changed by an administrator" : "כתובת הדוא״ל שלך נערכה על ידי המנהל", + "Security" : "אבטחה", + "You successfully logged in using two-factor authentication (%1$s)" : "נכנסת בהצלחה באמצעות אימות דו־שלבי (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "ניסיון כניסה עם אימות דו־שלבי נכשל (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "ה<strong>סמסה</strong> או <strong>כתוב הדוא״ל שלך</strong> השתנו", + "Couldn't remove app." : "לא ניתן להסיר את היישום.", + "Couldn't update app." : "לא ניתן לעדכן את היישום.", + "Wrong password" : "ססמה שגויה", + "Saved" : "נשמר", + "No user supplied" : "לא סופק שם משתמש", + "Unable to change password" : "לא ניתן לשנות את הססמה", + "Authentication error" : "שגיאת אימות", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "נא לספק ססמת שחזור של מנהלים, אחרת, כל נתוני המשתמשים ילכו לאיבוד.", + "Wrong admin recovery password. Please check the password and try again." : "סיסמת המנהל לשחזור שגוייה. יש לבדוק את הסיסמא ולנסות שוב.", + "Backend doesn't support password change, but the user's encryption key was updated." : "המנגנון אינו תומך בשינוי ססמה אך מפתח ההצפנה של המשתמש עודכן.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "התקנה ועדכון היישום דרך חנות היישומים או ענן שיתוף מאוגד", + "Federated Cloud Sharing" : "ענן שיתוף מאוגד", + "Invalid SMTP password." : "ססמת ה־SMTP שגויה.", + "Email setting test" : "בדיקת הגדרת דוא״ל", + "Well done, %s!" : "עבודה יפה, %s!", + "If you received this email, the email configuration seems to be correct." : "אם קיבלת את הדוא״ל הזה, כנראה שתצורת הדוא״ל נכונה.", + "Email could not be sent. Check your mail server log" : "לא ניתן לשלוח דוא״ל. נא לבדוק את רישומי שרת הדוא״ל שלך.", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "בעיה אירעה בשליחת הדואר האלקטרוני. יש לשנות את ההגדרות שלך. (שגיאה: %s)", + "You need to set your user email before being able to send test emails." : "יש להגדיר כתובת דואר אלקטרוני לפני שניתן יהיה לשלוח דואר אלקטרוני לבדיקה.", + "Invalid mail address" : "כתובת דואר אלקטרוני לא חוקית", + "Settings saved" : "הגדרות נשמרו", + "Unable to change full name" : "לא ניתן לשנות שם מלא", + "Unable to change email address" : "לא ניתן לשנות את כתובת הדוא״ל", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "כדי לאמת את חשבון הטוויטר שלך, עליך לפרסם את הציוץ הבא בטוויטר (נא לוודא שהוא יפורסם ללא ירידות שורה):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "כדי לאמת את האר של, עליך לאחסן את התוכן הבא בשורש האתר שלך תחת ‚‎.well-known/CloudIdVerificationCode.txt’ (עליך לוודא שכל הטקסט הזה מופיע בשורה אחת):", + "%1$s changed your password on %2$s." : "ססמת ב‏־%2$s הוחלפה על ידי %1$s.", + "Your password on %s was changed." : "הססמה שלך ב־%s הוחלפה.", + "Your password on %s was reset by an administrator." : "ססמתך ב־%s אופסה על ידי נציגות מההנהלה.", + "Password for %1$s changed on %2$s" : "הססמה עבור %1$s הוחלפה ב־%2$s", + "Password changed for %s" : "הוחלפה הססמה של %s", + "If you did not request this, please contact an administrator." : "אם לא ביקשת זאת, נא ליצור קשר עם מנהל המערכת.", + "Your email address on %s was changed." : "כתובת הדוא״ל שלך ב־%s הוחלפה", + "Your email address on %s was changed by an administrator." : "כתובת הדוא״ל שלך ב־%s הוחלפה על ידי נציגות ההנהלה.", + "Email address for %1$s changed on %2$s" : "כתובת הדוא״ל עבור %1$s הוחלפה ב־%2$s", + "Email address changed for %s" : "כתובת הדוא״ל של %s הוחלפה", + "The new email address is %s" : "כתובת הדוא״ל החדשה היא %s", + "Your %s account was created" : "חשבון %s שלך נוצר", + "Welcome aboard" : "ברוך בואך", + "Welcome aboard %s" : "ברוך בואך %s", + "Welcome to your %s account, you can add, protect, and share your data." : "ברוך בואך לחשבונך ב־%s, יש לך את האפשרות להוסיף, להגן ולשתף את הנתונים שלך.", + "Your username is: %s" : "שם המשתמש שלך הוא: %s", + "Set your password" : "הגדרת הססמה שלך", + "Go to %s" : "מעבר אל %s", + "Install Client" : "התקנת לקו", + "Delete" : "מחיקה", + "Unlimited" : "ללא הגבלה", + "Verifying …" : "מתבצע אימות…", + "Verify" : "אימות", + "Migration in progress. Please wait until the migration is finished" : "המרה בביצוע. יש להמתין עד סיום ההמרה", + "Migration started …" : "המרה החלה...", + "Not saved" : "לא נשמר", + "Sending…" : "בשליחה…", + "Email sent" : "הודעת הדואר האלקטרוני נשלחה", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "אירעה שגיאה. יש להעלות תעודת ASCII-encoded PEM.", + "Valid until {date}" : "בתוקף עד ל- {date}", + "Local" : "מקומ", + "Private" : "פרטי", + "Only visible to local users" : "גלוי למשתמשים מקומיים בלבד", + "Only visible to you" : "גלוי רק לך", + "Contacts" : "אנשי קשר", + "Visible to local users and to trusted servers" : "גלוי למשתמשים מקומיים ולשרתים מהימנים", + "Public" : "ציבורי", + "Will be synced to a global and public address book" : "יסונכרן לספר כתובות גלובלי וציבורי", + "Very weak password" : "סיסמא מאוד חלשה", + "Weak password" : "סיסמא חלשה", + "So-so password" : "סיסמא ככה-ככה", + "Good password" : "סיסמא טובה", + "Strong password" : "סיסמא חזקה", + "Select a profile picture" : "יש לבחור תמונת פרופיל", + "Week starts on {fdow}" : "השבוע מתחיל ב{fdow}", + "Groups" : "קבוצות", + "Group list is empty" : "רשימת הקבוצות ריקה", + "Unable to retrieve the group list" : "לא ניתן לקבל את רשימת הקבוצות", + "Afrikaans (Namibia)" : "אפריקאנס (נמיביה)", + "Afrikaans (South Africa)" : "אפריקאנס (דרום אפריקה)", + "Afrikaans" : "אפריקאנס", + "Albanian (Albania)" : "אלבנית (אלבניה)", + "Albanian" : "אלבנית", + "Amharic (Ethiopia)" : "אמהרית (אתיופיה)", + "Amharic" : "אמהרית", + "Arabic (Algeria)" : "ערבית (אלג׳יריה)", + "Arabic (Bahrain)" : "ערבית (בחריין)", + "Arabic (Egypt)" : "ערבית (מצרים)", + "Arabic (Iraq)" : "ערבית (עיראק)", + "Arabic (Jordan)" : "ערבית (ירדן)", + "Arabic (Kuwait)" : "ערבית (כוויית)", + "Arabic (Lebanon)" : "ערבית (לבנון)", + "Arabic (Libya)" : "ערבית (לוב)", + "Arabic (Morocco)" : "ערבית (מרוקו)", + "Arabic (Oman)" : "ערבית (עומאן)", + "Arabic (Qatar)" : "ערבית (קטאר)", + "Arabic (Saudi Arabia)" : "ערבית (ערב הסעודית)", + "Arabic (Sudan)" : "ערבית (סודאן)", + "Arabic (Syria)" : "ערבית (סוריה)", + "Arabic (Tunisia)" : "ערבית (תוניסיה)", + "Arabic (United Arab Emirates)" : "ערבית (איחוד האמירויות הערביות)", + "Arabic (Yemen)" : "ערבית (תימן)", + "Arabic" : "ערבית", + "Armenian (Armenia)" : "ארמנית (ארמניה)", + "Armenian" : "ארמנית", + "Assamese (India)" : "אסאמית (הודו)", + "Assamese" : "אסאמית", + "Azerbaijani (Cyrillic)" : "אזרית (בכתב קירילי)", + "Azerbaijani (Cyrillic, Azerbaijan)" : "אזרית (בכתב קירילי, אזרבייג׳ן)", + "Azerbaijani (Latin)" : "אזרית (בכתב לטיני)", + "Azerbaijani (Latin, Azerbaijan)" : "אזרית (בכתב לטיני, אזרבייג׳ן)", + "Azerbaijani" : "אזרית", + "Basque (Spain)" : "בסקית (ספרד)", + "Basque" : "בסקית", + "Belarusian (Belarus)" : "בלרוסית (בלרוס)", + "Belarusian" : "בלרוסית", + "Bengali (Bangladesh)" : "בנגלית (בנגלדש)", + "Bengali (India)" : "בנגלית (הודו)", + "Bengali" : "בנגלית", + "Bosnian (Bosnia and Herzegovina)" : "בוסנית (בוסניה והרצגובינה)", + "Bosnian" : "בוסנית", + "Bulgarian (Bulgaria)" : "בולגרית (בולגריה)", + "Bulgarian" : "בולגרית", + "Burmese (Myanmar [Burma])" : "בורמזית (מיאנמר [בורמה])", + "Burmese" : "בורמזית", + "Catalan (Spain)" : "קטלאנית (ספרד)", + "Catalan" : "קטלאנית", + "Chiga (Uganda)" : "צ׳יגה (אוגנדה)", + "Chiga" : "צ׳יגה", + "Chinese" : "סינית", + "Croatian (Croatia)" : "קרואטית (קרואטיה)", + "Croatian" : "קרואטית", + "Czech (Czech Republic)" : "צ׳כית (הרפובליקה הצ׳כית)", + "Czech" : "צ׳כית", + "Danish (Denmark)" : "דנית (דנמרק)", + "Danish" : "דנית", + "Dutch (Belgium)" : "הולנדית (בלגיה)", + "Dutch (Netherlands)" : "הולנדית (הולנד)", + "Dutch" : "הולנדית", + "English (American Samoa)" : "אנגלית (סמואה האמריקנית)", + "English (Australia)" : "אנגלית (אוסטרליה)", + "English (Belgium)" : "אנגלית (בלגיה)", + "English (Belize)" : "אנגלית (בליז)", + "English (Botswana)" : "אנגלית (בוטסואנה)", + "English (Canada)" : "אנגלית (קנדה)", + "English (Guam)" : "אנגלית (גואם)", + "English (India)" : "אנגלית (הודו)", + "English (Ireland)" : "אנגלית (אירלנד)", + "English (Jamaica)" : "אנגלית (ג׳מייקה)", + "English (Malta)" : "אנגלית (מלטה)", + "English (Marshall Islands)" : "אנגלית (איי מרשל)", + "English (Mauritius)" : "אנגלית (מאוריציוס)", + "English (Namibia)" : "אנגלית (נמיביה)", + "English (New Zealand)" : "אנגלית (ניו זילנד)", + "English (Northern Mariana Islands)" : "אנגלית (איי מריאנה הצפוניים)", + "English (Pakistan)" : "אנגלית (פקיסטן)", + "English (Philippines)" : "אנגלית (פיליפינים)", + "English (Singapore)" : "אנגלית (סינגפור)", + "English (South Africa)" : "אנגלית (דרום אפריקה)", + "English (Trinidad and Tobago)" : "אנגליה (טרינידד וטובגו)", + "English (United States)" : "אנגלית (ארצות הברית)", + "English" : "אנגלית", + "Esperanto" : "אספרנטו", + "Estonian (Estonia)" : "אסטונית (אסטוניה)", + "Estonian" : "אסטונית", + "Filipino (Philippines)" : "פיליפינו (הפיליפינים)", + "Filipino" : "פיליפינו", + "Finnish (Finland)" : "פינית (פינלנד)", + "Finnish" : "פינית", + "French (Belgium)" : "צרפתית (בלגיה)", + "French (Benin)" : "צרפתית (בנין)", + "French (Burkina Faso)" : "צרפתית (בורקינה פאסו)", + "French (Burundi)" : "צרפת (בורונדי)", + "French (Cameroon)" : "צרפתית (קמרון)", + "French (Canada)" : "צרפתית (קנדה)", + "French (Central African Republic)" : "צרפתית (הרפובליקה המרכז אפריקאית)", + "French (Chad)" : "צרפתית (צ׳אד)", + "French (Comoros)" : "צרפתית (קומורוס)", + "French (France)" : "צרפתית (צרפת)", + "French (Monaco)" : "צרפתית (מונקו)", + "French (Senegal)" : "צרפתית (סנגל)", + "French (Switzerland)" : "צרפתית (שווייץ)", + "French (Togo)" : "צרפתית (טוגו)", + "French" : "צרפתית", + "Fulah (Senegal)" : "פולה (סנגל)", + "Fulah" : "פולה", + "Galician (Spain)" : "גליסית (ספרד)", + "Galician" : "גליסית", + "Ganda (Uganda)" : "גנדה (אוגנדה)", + "Ganda" : "גנדה", + "Georgian (Georgia)" : "גאורגית (גאורגיה)", + "Georgian" : "גאורגית", + "German (Austria)" : "גרמנית (אוסטריה)", + "German (Belgium)" : "גרמנית (בלגיה)", + "German (Germany)" : "גרמנית (גרמניה)", + "German (Liechtenstein)" : "גרמנית (ליכטנשטיין)", + "German (Luxembourg)" : "גרמנית (לוקסמבורג)", + "German (Switzerland)" : "גרמנית (שווייץ)", + "German" : "גרמנית", + "Greek (Cyprus)" : "יוונית (קפריסין)", + "Greek (Greece)" : "יוונית (יוון)", + "Greek" : "יוונית", + "Hebrew (Israel)" : "עברית (ישראל)", + "Hebrew" : "עברית", + "Hungarian (Hungary)" : "הונגרית (הונגריה)", + "Hungarian" : "הונגרית", + "Icelandic (Iceland)" : "איסלנדית (איסלנד)", + "Icelandic" : "איסלנד", + "Indonesian (Indonesia)" : "אינדונזית (אינדונזיה)", + "Indonesian" : "אינדונזית", + "Irish (Ireland)" : "אירית (אירלנד)", + "Irish" : "אירית", + "Italian (Italy)" : "איטלקית (איטליה)", + "Italian (Switzerland)" : "איטלקית (שווייץ)", + "Italian" : "איטלקית", + "Japanese (Japan)" : "יפנית (יפן)", + "Japanese" : "יפנית", + "Kalaallisut (Greenland)" : "כלשית (גרינלנד)", + "Kalaallisut" : "כלשית", + "Kalenjin (Kenya)" : "קלנג׳ין (קניה)", + "Kalenjin" : "קלנג׳ין", + "Kazakh (Cyrillic)" : "קזחית (קירילית)", + "Kazakh (Cyrillic, Kazakhstan)" : "קזחית (קירילית, קזחסטן)", + "Kazakh" : "קזחית", + "Limit to groups" : "הגבלה לקבוצות", + "Allow filesystem access" : "לאפשר גישה למערכת הקבצים", + "Revoke" : "שלילה", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome עבור Android", + "Sync client - {os}" : "לקוח סנכרון - {os}", + "This session" : "הפעלה זו", + "Device" : "התקן", + "Last activity" : "פעילות אחרונה", + "Devices & sessions" : "התקנים והפעלות", + "Web, desktop and mobile clients currently logged in to your account." : "לקוחות שמחוברים כעת לחשבון שלך דרך דפדפן, שולחן עבודה והתקנים ניידים.", + "Error while creating device token" : "שגיאה בזמן יצירת מחרוזת התקן", + "Error while deleting the token" : "שגיאה בזמן מחיקת המחרוזת", + "App name" : "שם יישום", + "Create new app password" : "יצירת סיסמת יישום חדשה", + "Use the credentials below to configure your app or device." : "יש להשתמש בפרטי הזיהוי שלהלן כדי להגדיר את היישומון או ההתקן שלך.", + "For security reasons this password will only be shown once." : "מטעמי אבטחה הססמה תופיע פעם אחת בלבד.", + "Username" : "שם משתמש", + "Password" : "סיסמא", + "Done" : "הסתיים", + "Copied!" : "הועתק!", + "Copy" : "העתקה", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "היישומונים הרשמיים מפותחים על ידי ובתוך הקהילה. הם מציעים תכונות ליבה מסוימות והן מוכנות לשימוש יומיומי.", + "Official" : "רישמי", + "Remove" : "הסרה", + "Disable" : "ניטרול", + "All" : "הכל", + "No results" : "אין תוצאות", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "ליישומון זה לא מוקצית גרסת Nextcloud מזערית. מצב כזה עשוי להוביל לשגיאה בעתיד.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "ליישומון זה לא מוקצית גרסת Nextcloud מרבית. מצב כזה עשוי להוביל לשגיאה בעתיד.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "לא ניתן להתקין את יישום זה כיוון שייחסי התלות הבאים לא התקיימו:", + "View in store" : "הצגה באחסון", + "Visit website" : "ביקור באתר האינטרנט", + "Report a bug" : "דיווח על באג", + "User documentation" : "תיעוד משתמש", + "Admin documentation" : "תיעוד מנהל", + "Developer documentation" : "תיעוד מפתח", + "Update to {update}" : "עדכון ל־{version}", + "Results from other categories" : "תוצאות מקטגוריות אחרות", + "No apps found for your version" : "לא נמצאו יישומים לגרסה שלך", + "Disable all" : "להשבית הכול", + "Enable all" : "הפעלת הכול", + "Download and enable" : "להוריד ולהפעיל", + "Enable" : "הפעלה", + "Enable untested app" : "לאפשר יישומון שלא נבדק", + "The app will be downloaded from the app store" : "היישום ירד מחנות היישומים", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "היישומון הזה לא מסומן כנתמך בגרסת ה־Nextcloud. עדיין יתאפשר לך להמשיך ולהתקין את היישומון. נא לשים לב שיכול להיות שהיישומון לא יעבוד כצפוי.", + "You do not have permissions to see the details of this user" : "אין לך הרשאות לצפות בפירוט על המשתמש", + "The backend does not support changing the display name" : "המנגנון שלך לא תומך בשינוי שם התצוגה", + "New password" : "סיסמא חדשה", + "Select user quota" : "בחירת מכסת משתמש", + "No language set" : "לא הוגדרה שפה", + "Never" : "מעולם לא", + "Delete user" : "מחיקת משתמש", + "Disable user" : "השבתת משתמש", + "Enable user" : "הפעלת משתמש", + "Resend welcome email" : "שליחת הודעת קבלת פנים בדוא״ל מחדש", + "{size} used" : "{size} בשימוש", + "Welcome mail sent!" : "נשלחה הודעת קבלת פנים בדוא״ל!", + "Display name" : "שם תצוגה", + "Email" : "דואר אלקטרוני", + "Group admin for" : "מנהל הקבוצה", + "Quota" : "מכסה", + "Language" : "שפה", + "Storage location" : "מיקום אחסון", + "User backend" : "מנגנון משתמש", + "Last login" : "כניסה אחרונה", + "Default language" : "שפת בררת מחדל", + "Add a new user" : "הוספת משתמש חדש", + "No users in here" : "אין כאן משתמשים", + "Default quota" : "מכסת בררת מחדל", + "Common languages" : "שפות נפוצות", + "All languages" : "כל השפות", + "Your apps" : "היישומונים שלך", + "Active apps" : "יישומונים פעילים", + "Disabled apps" : "יישומונים מושבתים", + "Updates" : "עדכונים", + "App bundles" : "מאגדי יישומונים", + "{license}-licensed" : "ברישיון {license}", + "New user" : "משתמש חדש", + "Default quota:" : "מכסת בררת מחדל:", + "Select default quota" : "בחירת מכסת בררת מחדל", + "Show Languages" : "הצגת שפות", + "Show last login" : "הצגת כניסה אחרונה", + "Show user backend" : "הצגת צד אחורי למשתמש", + "Show storage path" : "הצגת נתיב אחסון", + "You are about to remove the group {group}. The users will NOT be deleted." : "פעולה זו תסיר את הקבוצה {group}. המשתמשים ﬥﬡ יימחקו.", + "Please confirm the group removal " : "נא לאשר את הסרת הקבוצה", + "Remove group" : "הסרת קבוצה", + "Admins" : "מנהלים", + "Disabled users" : "משתמשים מושבתים", + "Everyone" : "כולם", + "Add group" : "הוספת קבוצה", + "An error occured during the request. Unable to proceed." : "אירעה שגיאה במהלך הבקשה. לא ניתן להמשיך.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "היישומון הופעל אך יש לעדכן אותו. ההפניה לעמוד העדכון תחל בעוד 5 שניות.", + "App update" : "עדכון יישומן", + "Error: This app can not be enabled because it makes the server unstable" : "שגיאה: לא ניתן להפעיל יישומון זה כיוון שהוא מערער את יציבות השרת.", + "SSL Root Certificates" : "אישורי אבטחת SSL לנתיב יסוד", + "Common Name" : "שם משותף", + "Valid until" : "בתוקף עד", + "Issued By" : "הוצא על ידי", + "Valid until %s" : "בתוקף עד %s", + "Import root certificate" : "יבוא אישור אבטחה לנתיב יסוד", + "Administrator documentation" : "תיעוד מנהל", + "Documentation" : "תיעוד", + "Forum" : "פורום", + "None" : "כלום", + "Login" : "התחברות", + "Plain" : "רגיל", + "NT LAN Manager" : "מנהל רשת NT", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "שרת דואר אלקטרוני", + "Open documentation" : "תיעוד פתוח", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "חשוב להגדיר את השרת הזה כדי שיתאפשר לשלוח דרכו הודעות דוא״ל, למשל כדי לאפס ססמה ולשלוח התרעות.", + "Send mode" : "מצב שליחה", + "Encryption" : "הצפנה", + "From address" : "מכתובת", + "mail" : "mail", + "Authentication method" : "שיטת אימות", + "Authentication required" : "נדרש אימות", + "Server address" : "כתובת שרת", + "Port" : "שער", + "Credentials" : "פרטי גישה", + "SMTP Username" : "שם משתמש SMTP ", + "SMTP Password" : "סיסמת SMTP", + "Test email settings" : "בדיקת הגדרות דואר אלקטרוני", + "Send email" : "שליחת דואר אלקטרוני", + "Security & setup warnings" : "הזהרות אבטחה והתקנה", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "למטרות אבטחה וביצועים מיטביים עבור המערכת שלך חשוב שהכול יוגדר כראוי. כדי לסייע לך בכך אנו עורכים בדיקות אוטומטיות. נא לעיין בתיעוד המקושר לקבלת מידע נוסף.", + "All checks passed." : "כל הבדיקות עברו", + "There are some errors regarding your setup." : "ישנן מגוון שגיאות על ההגדרות שלך.", + "There are some warnings regarding your setup." : "ישנן מגוון אזהרות על ההגדרות שלך.", + "Checking for system and security issues." : "נבדקות תקלות מערכת ואבטחה.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "בדיקת האבטחה של ה־Nextcloud שלך באמצעות <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">סריקת האבטחה שלנו ↖️</a>.", + "Version" : "גרסה", + "Two-Factor Authentication" : "אימות דו־שלבי", + "Server-side encryption" : "הצפנת צד שרת", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "הצפנה בצד השרת מאפשרת להצפין קבצים שנשלחים לשרת. לתכונה זו יש מגבלות כגון ירידה בביצועים, מומלץ להפעיל רק אם יש צורך.", + "Enable server-side encryption" : "הפעלת הצפנה בצד שרת", + "Please read carefully before activating server-side encryption: " : "יש לקרוא בתשומת לב רבה לפני שמפעילים הצפנת צד שרת:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "ברגע שהצפנה מופעלת, כל הקבצים שיועלו לשרת מרגע זה יהיו מוצפנים בשרת. ניתן יהיה לנטרל את ההצפנה בעתיד רק אם מודול ההצפנה תומך בפונקציה זו, וכל התנאים המוקדמים (דהיינו הגדרת מפתח השחזור) מתקיימים.", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "הצפנה לבד אינה מספיקה לאבטחה איכותית למערכת. נא לעיין בתיעוד לקבלת פרטים נוספים על אופן הפעולה של יישומון ההצפנה ודרכי היישום הנתמכות.", + "Be aware that encryption always increases the file size." : "תשומת לב לכך שהצפנה בהכרח מגדילה את גודל הקובץ.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "תמיד טוב ליצור גיבוי קבוע למידע , במקרה של הצפנה יש לוודא שגם מפתחות ההצפנה מגובים עם המידע שלך.", + "This is the final warning: Do you really want to enable encryption?" : "זו הזהרה אחרונה: האם באמת ברצונך להפעיל הצפנה?", + "Enable encryption" : "אפשר הצפנה", + "No encryption module loaded, please enable an encryption module in the app menu." : "לא נמצא מודול הצפנה, יש לאפשר מודול הצפנה בתפריט היישומים.", + "Select default encryption module:" : "יש לבחור מודול הצפנת ברירת מחדל:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "יש להמיר את מפתחות ההצפנה שלך בממערכת ההצפנה הישנה (ownCloud <= 8.0) למערכת החדשה. יש לאפשר את \"מודול הצפנה ברירת מחדש\" ולהריץ 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "יש להמיר את מפתחות ההצפנה שלך בממערכת ההצפנה הישנה (ownCloud <= 8.0) למערכת החדשה.", + "Start migration" : "התחלת המרה", + "Background jobs" : "משימות רקע", + "Last job ran %s." : "המשימה האחרונה רצה למשך %s.", + "Last job execution ran %s. Something seems wrong." : "פעילות ההרצה האחרונה נמשכה %s. משהו שם נראה לא תקין.", + "Background job didn’t run yet!" : "משימת הרקע לא רצה עדיין!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "לביצועים מיטביים חשוב להגדיר משימות רקע כראוי. למערכות גדולות יותר מוטב להשתמש ב־‚Cron’. נא לעיין בתיעוד לקבל מידע נוסף.", + "Execute one task with each page loaded" : "יש להפעיל משימה אחת עם כל עמוד שנטען", + "The cron.php needs to be executed by the system user \"%s\"." : "יש להפעיל את cron.php בתור משתמש המערכת „%s”.", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "כדי להריץ זאת יש צורך בהרחבת POSIX ל־PHP. נא לעיין ב{linkstart}תיעוד של PHP{linkend} לפרטים נוספים.", + "Sharing" : "שיתוף", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "כמנהל יש לך אפשרות לכוונן את התנהגות השיתוף. נא לעיין בתיעוד לפרטים נוספים.", + "Allow apps to use the Share API" : "לאפשר ליישום להשתמש ב־API השיתוף", + "Allow users to share via link" : "אפשר למשתמשים לשתף באמצעות קישור", + "Allow public uploads" : "אפשר העלאות ציבוריות", + "Always ask for a password" : "תמיד לבקש ססמה", + "Enforce password protection" : "חייב הגנת סיסמא", + "Set default expiration date" : "הגדרת תאריך תפוגה ברירת מחדל", + "Expire after " : "פג אחרי", + "days" : "ימים", + "Enforce expiration date" : "חייב תאריך תפוגה", + "Allow resharing" : "לאפשר שיתוף מחדש", + "Allow sharing with groups" : "מאפשר שיתוף עם קבוצות", + "Restrict users to only share with users in their groups" : "הגבלת משתמשים לשתף רק עם משתמשים בקבוצה שלהם", + "Exclude groups from sharing" : "מניעת קבוצות משיתוף", + "These groups will still be able to receive shares, but not to initiate them." : "קבוצות אלו עדיין יוכלו לקבל שיתופים, אך לא לשתף בעצמם.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "לאפשר השלמת שם משתמש אוטומטית בתיבת השיתוף. אם האפשרות הזו מושבתת יש להקליד את שם המשתמש או את כתובת הדוא״ל במלואם.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "הצגת טקסט ויתור בעמוד העלאת קישור ציבורי. (מופיע רק כאשר רשימת הקבצים מוסתרת.)", + "This text will be shown on the public link upload page when the file list is hidden." : "טקסט זה יופיע בקישור עמוד ההעלאה של הקישור הציבורי כאשר רשימת הקבצים מוסתרת.", + "Default share permissions" : "הרשאות שיתוף כבררת מחדל", + "Personal" : "אישי", + "Administration" : "ניהול", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "בפיתוח על ידי {communityopen}קהילת Nextcloud{linkclose}, {githubopen}קוד המקור{linkclose} זמין ברישיון {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "לייק לעמוד הפייסבוק שלנו", + "Follow us on Twitter" : "לעקוב אחרינו בטוויטר", + "Check out our blog" : "לעיין בבלוג שלנו", + "Subscribe to our newsletter" : "הרשמה לרשימת הדיוור שלנו", + "Profile picture" : "תמונת פרופיל", + "Upload new" : "העלאת חדש", + "Select from Files" : "בחירה מתוך קבצים", + "Remove image" : "הסרת תמונה", + "png or jpg, max. 20 MB" : "png או jpg, מקסימום 20 מגה-בייט", + "Picture provided by original account" : "תמונה סופקה על ידי חשבון מקור", + "Cancel" : "ביטול", + "Choose as profile picture" : "יש לבחור כתמונת פרופיל", + "Details" : "פרטים", + "You are a member of the following groups:" : "הקבוצות הבאות כוללות אותך:", + "You are using <strong>%s</strong>" : "הניצולת שלך היא <strong>%s</strong>", + "Full name" : "שם מלא", + "No display name set" : "לא נקבע שם תצוגה", + "Your email address" : "כתובת הדואר האלקטרוני שלך", + "No email address set" : "לא נקבעה כתובת דואר אלקטרוני", + "For password reset and notifications" : "לאיפוס ססמה והתרעות", + "Phone number" : "מספר טלפון", + "Your phone number" : "מספר הטלפון שלך", + "Address" : "כתובת", + "Your postal address" : "כתובת הדואר שלך", + "Website" : "אתר", + "It can take up to 24 hours before the account is displayed as verified." : "יתכן שיעברו עד 24 שעות בטרם הצגת החשבון כמאומת.", + "Link https://…" : "קישור https://…‎", + "Twitter" : "טוויטר", + "Twitter handle @…" : "כינוי בטוויטר @…", + "Help translate" : "עזרה בתרגום", + "Locale" : "הגדרות אזוריות", + "Current password" : "סיסמא נוכחית", + "Change password" : "שינוי סיסמא", + "Disconnect" : "ניתוק", + "Press ⌘-C to copy." : "‎⌘-C להעתקה.", + "Press Ctrl-C to copy." : "Ctrl-C להעתקה.", + "Store credentials" : "שמירת אישורים", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php רשום בשירות webcron לקרוא ל- cron.php בכל 15 דקות באמצעות HTTP.", + "Use system cron service to call the cron.php file every 15 minutes." : "ניתן להשתמש בשירות cron של המערכת כדי לקרוא לקובץ cron.php בכל 15 דקות.", + "Follow us on Google+" : "לעקוב אחרינו ב־Google+‎" +}, +"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;"); diff --git a/apps/settings/l10n/he.json b/apps/settings/l10n/he.json new file mode 100644 index 00000000000..ebda9f13919 --- /dev/null +++ b/apps/settings/l10n/he.json @@ -0,0 +1,463 @@ +{ "translations": { + "{actor} added you to group {group}" : "נוספת לקבוצה {group} על ידי {actor}", + "You added {user} to group {group}" : "הוספת את {user} לקבוצה {group}", + "{actor} added {user} to group {group}" : "ההוספה של {user} לקבוצה {group} נעשתה על ידי {actor}", + "An administrator added you to group {group}" : "נוספת לקבוצה {group} על ידי מנהל", + "{actor} changed your password" : "הססמה שלך הוחלפה על ידי {actor}", + "You changed your password" : "שינית את הססמה שלך", + "Your password was reset by an administrator" : "הססמה שלך אופסה על ידי מנהל", + "{actor} changed your email address" : "כתובת הדוא״ל שלך נערכה על ידי {actor}", + "You changed your email address" : "שינית את כתובת הדוא״ל שלך", + "Your email address was changed by an administrator" : "כתובת הדוא״ל שלך נערכה על ידי המנהל", + "Security" : "אבטחה", + "You successfully logged in using two-factor authentication (%1$s)" : "נכנסת בהצלחה באמצעות אימות דו־שלבי (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "ניסיון כניסה עם אימות דו־שלבי נכשל (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "ה<strong>סמסה</strong> או <strong>כתוב הדוא״ל שלך</strong> השתנו", + "Couldn't remove app." : "לא ניתן להסיר את היישום.", + "Couldn't update app." : "לא ניתן לעדכן את היישום.", + "Wrong password" : "ססמה שגויה", + "Saved" : "נשמר", + "No user supplied" : "לא סופק שם משתמש", + "Unable to change password" : "לא ניתן לשנות את הססמה", + "Authentication error" : "שגיאת אימות", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "נא לספק ססמת שחזור של מנהלים, אחרת, כל נתוני המשתמשים ילכו לאיבוד.", + "Wrong admin recovery password. Please check the password and try again." : "סיסמת המנהל לשחזור שגוייה. יש לבדוק את הסיסמא ולנסות שוב.", + "Backend doesn't support password change, but the user's encryption key was updated." : "המנגנון אינו תומך בשינוי ססמה אך מפתח ההצפנה של המשתמש עודכן.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "התקנה ועדכון היישום דרך חנות היישומים או ענן שיתוף מאוגד", + "Federated Cloud Sharing" : "ענן שיתוף מאוגד", + "Invalid SMTP password." : "ססמת ה־SMTP שגויה.", + "Email setting test" : "בדיקת הגדרת דוא״ל", + "Well done, %s!" : "עבודה יפה, %s!", + "If you received this email, the email configuration seems to be correct." : "אם קיבלת את הדוא״ל הזה, כנראה שתצורת הדוא״ל נכונה.", + "Email could not be sent. Check your mail server log" : "לא ניתן לשלוח דוא״ל. נא לבדוק את רישומי שרת הדוא״ל שלך.", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "בעיה אירעה בשליחת הדואר האלקטרוני. יש לשנות את ההגדרות שלך. (שגיאה: %s)", + "You need to set your user email before being able to send test emails." : "יש להגדיר כתובת דואר אלקטרוני לפני שניתן יהיה לשלוח דואר אלקטרוני לבדיקה.", + "Invalid mail address" : "כתובת דואר אלקטרוני לא חוקית", + "Settings saved" : "הגדרות נשמרו", + "Unable to change full name" : "לא ניתן לשנות שם מלא", + "Unable to change email address" : "לא ניתן לשנות את כתובת הדוא״ל", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "כדי לאמת את חשבון הטוויטר שלך, עליך לפרסם את הציוץ הבא בטוויטר (נא לוודא שהוא יפורסם ללא ירידות שורה):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "כדי לאמת את האר של, עליך לאחסן את התוכן הבא בשורש האתר שלך תחת ‚‎.well-known/CloudIdVerificationCode.txt’ (עליך לוודא שכל הטקסט הזה מופיע בשורה אחת):", + "%1$s changed your password on %2$s." : "ססמת ב‏־%2$s הוחלפה על ידי %1$s.", + "Your password on %s was changed." : "הססמה שלך ב־%s הוחלפה.", + "Your password on %s was reset by an administrator." : "ססמתך ב־%s אופסה על ידי נציגות מההנהלה.", + "Password for %1$s changed on %2$s" : "הססמה עבור %1$s הוחלפה ב־%2$s", + "Password changed for %s" : "הוחלפה הססמה של %s", + "If you did not request this, please contact an administrator." : "אם לא ביקשת זאת, נא ליצור קשר עם מנהל המערכת.", + "Your email address on %s was changed." : "כתובת הדוא״ל שלך ב־%s הוחלפה", + "Your email address on %s was changed by an administrator." : "כתובת הדוא״ל שלך ב־%s הוחלפה על ידי נציגות ההנהלה.", + "Email address for %1$s changed on %2$s" : "כתובת הדוא״ל עבור %1$s הוחלפה ב־%2$s", + "Email address changed for %s" : "כתובת הדוא״ל של %s הוחלפה", + "The new email address is %s" : "כתובת הדוא״ל החדשה היא %s", + "Your %s account was created" : "חשבון %s שלך נוצר", + "Welcome aboard" : "ברוך בואך", + "Welcome aboard %s" : "ברוך בואך %s", + "Welcome to your %s account, you can add, protect, and share your data." : "ברוך בואך לחשבונך ב־%s, יש לך את האפשרות להוסיף, להגן ולשתף את הנתונים שלך.", + "Your username is: %s" : "שם המשתמש שלך הוא: %s", + "Set your password" : "הגדרת הססמה שלך", + "Go to %s" : "מעבר אל %s", + "Install Client" : "התקנת לקו", + "Delete" : "מחיקה", + "Unlimited" : "ללא הגבלה", + "Verifying …" : "מתבצע אימות…", + "Verify" : "אימות", + "Migration in progress. Please wait until the migration is finished" : "המרה בביצוע. יש להמתין עד סיום ההמרה", + "Migration started …" : "המרה החלה...", + "Not saved" : "לא נשמר", + "Sending…" : "בשליחה…", + "Email sent" : "הודעת הדואר האלקטרוני נשלחה", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "אירעה שגיאה. יש להעלות תעודת ASCII-encoded PEM.", + "Valid until {date}" : "בתוקף עד ל- {date}", + "Local" : "מקומ", + "Private" : "פרטי", + "Only visible to local users" : "גלוי למשתמשים מקומיים בלבד", + "Only visible to you" : "גלוי רק לך", + "Contacts" : "אנשי קשר", + "Visible to local users and to trusted servers" : "גלוי למשתמשים מקומיים ולשרתים מהימנים", + "Public" : "ציבורי", + "Will be synced to a global and public address book" : "יסונכרן לספר כתובות גלובלי וציבורי", + "Very weak password" : "סיסמא מאוד חלשה", + "Weak password" : "סיסמא חלשה", + "So-so password" : "סיסמא ככה-ככה", + "Good password" : "סיסמא טובה", + "Strong password" : "סיסמא חזקה", + "Select a profile picture" : "יש לבחור תמונת פרופיל", + "Week starts on {fdow}" : "השבוע מתחיל ב{fdow}", + "Groups" : "קבוצות", + "Group list is empty" : "רשימת הקבוצות ריקה", + "Unable to retrieve the group list" : "לא ניתן לקבל את רשימת הקבוצות", + "Afrikaans (Namibia)" : "אפריקאנס (נמיביה)", + "Afrikaans (South Africa)" : "אפריקאנס (דרום אפריקה)", + "Afrikaans" : "אפריקאנס", + "Albanian (Albania)" : "אלבנית (אלבניה)", + "Albanian" : "אלבנית", + "Amharic (Ethiopia)" : "אמהרית (אתיופיה)", + "Amharic" : "אמהרית", + "Arabic (Algeria)" : "ערבית (אלג׳יריה)", + "Arabic (Bahrain)" : "ערבית (בחריין)", + "Arabic (Egypt)" : "ערבית (מצרים)", + "Arabic (Iraq)" : "ערבית (עיראק)", + "Arabic (Jordan)" : "ערבית (ירדן)", + "Arabic (Kuwait)" : "ערבית (כוויית)", + "Arabic (Lebanon)" : "ערבית (לבנון)", + "Arabic (Libya)" : "ערבית (לוב)", + "Arabic (Morocco)" : "ערבית (מרוקו)", + "Arabic (Oman)" : "ערבית (עומאן)", + "Arabic (Qatar)" : "ערבית (קטאר)", + "Arabic (Saudi Arabia)" : "ערבית (ערב הסעודית)", + "Arabic (Sudan)" : "ערבית (סודאן)", + "Arabic (Syria)" : "ערבית (סוריה)", + "Arabic (Tunisia)" : "ערבית (תוניסיה)", + "Arabic (United Arab Emirates)" : "ערבית (איחוד האמירויות הערביות)", + "Arabic (Yemen)" : "ערבית (תימן)", + "Arabic" : "ערבית", + "Armenian (Armenia)" : "ארמנית (ארמניה)", + "Armenian" : "ארמנית", + "Assamese (India)" : "אסאמית (הודו)", + "Assamese" : "אסאמית", + "Azerbaijani (Cyrillic)" : "אזרית (בכתב קירילי)", + "Azerbaijani (Cyrillic, Azerbaijan)" : "אזרית (בכתב קירילי, אזרבייג׳ן)", + "Azerbaijani (Latin)" : "אזרית (בכתב לטיני)", + "Azerbaijani (Latin, Azerbaijan)" : "אזרית (בכתב לטיני, אזרבייג׳ן)", + "Azerbaijani" : "אזרית", + "Basque (Spain)" : "בסקית (ספרד)", + "Basque" : "בסקית", + "Belarusian (Belarus)" : "בלרוסית (בלרוס)", + "Belarusian" : "בלרוסית", + "Bengali (Bangladesh)" : "בנגלית (בנגלדש)", + "Bengali (India)" : "בנגלית (הודו)", + "Bengali" : "בנגלית", + "Bosnian (Bosnia and Herzegovina)" : "בוסנית (בוסניה והרצגובינה)", + "Bosnian" : "בוסנית", + "Bulgarian (Bulgaria)" : "בולגרית (בולגריה)", + "Bulgarian" : "בולגרית", + "Burmese (Myanmar [Burma])" : "בורמזית (מיאנמר [בורמה])", + "Burmese" : "בורמזית", + "Catalan (Spain)" : "קטלאנית (ספרד)", + "Catalan" : "קטלאנית", + "Chiga (Uganda)" : "צ׳יגה (אוגנדה)", + "Chiga" : "צ׳יגה", + "Chinese" : "סינית", + "Croatian (Croatia)" : "קרואטית (קרואטיה)", + "Croatian" : "קרואטית", + "Czech (Czech Republic)" : "צ׳כית (הרפובליקה הצ׳כית)", + "Czech" : "צ׳כית", + "Danish (Denmark)" : "דנית (דנמרק)", + "Danish" : "דנית", + "Dutch (Belgium)" : "הולנדית (בלגיה)", + "Dutch (Netherlands)" : "הולנדית (הולנד)", + "Dutch" : "הולנדית", + "English (American Samoa)" : "אנגלית (סמואה האמריקנית)", + "English (Australia)" : "אנגלית (אוסטרליה)", + "English (Belgium)" : "אנגלית (בלגיה)", + "English (Belize)" : "אנגלית (בליז)", + "English (Botswana)" : "אנגלית (בוטסואנה)", + "English (Canada)" : "אנגלית (קנדה)", + "English (Guam)" : "אנגלית (גואם)", + "English (India)" : "אנגלית (הודו)", + "English (Ireland)" : "אנגלית (אירלנד)", + "English (Jamaica)" : "אנגלית (ג׳מייקה)", + "English (Malta)" : "אנגלית (מלטה)", + "English (Marshall Islands)" : "אנגלית (איי מרשל)", + "English (Mauritius)" : "אנגלית (מאוריציוס)", + "English (Namibia)" : "אנגלית (נמיביה)", + "English (New Zealand)" : "אנגלית (ניו זילנד)", + "English (Northern Mariana Islands)" : "אנגלית (איי מריאנה הצפוניים)", + "English (Pakistan)" : "אנגלית (פקיסטן)", + "English (Philippines)" : "אנגלית (פיליפינים)", + "English (Singapore)" : "אנגלית (סינגפור)", + "English (South Africa)" : "אנגלית (דרום אפריקה)", + "English (Trinidad and Tobago)" : "אנגליה (טרינידד וטובגו)", + "English (United States)" : "אנגלית (ארצות הברית)", + "English" : "אנגלית", + "Esperanto" : "אספרנטו", + "Estonian (Estonia)" : "אסטונית (אסטוניה)", + "Estonian" : "אסטונית", + "Filipino (Philippines)" : "פיליפינו (הפיליפינים)", + "Filipino" : "פיליפינו", + "Finnish (Finland)" : "פינית (פינלנד)", + "Finnish" : "פינית", + "French (Belgium)" : "צרפתית (בלגיה)", + "French (Benin)" : "צרפתית (בנין)", + "French (Burkina Faso)" : "צרפתית (בורקינה פאסו)", + "French (Burundi)" : "צרפת (בורונדי)", + "French (Cameroon)" : "צרפתית (קמרון)", + "French (Canada)" : "צרפתית (קנדה)", + "French (Central African Republic)" : "צרפתית (הרפובליקה המרכז אפריקאית)", + "French (Chad)" : "צרפתית (צ׳אד)", + "French (Comoros)" : "צרפתית (קומורוס)", + "French (France)" : "צרפתית (צרפת)", + "French (Monaco)" : "צרפתית (מונקו)", + "French (Senegal)" : "צרפתית (סנגל)", + "French (Switzerland)" : "צרפתית (שווייץ)", + "French (Togo)" : "צרפתית (טוגו)", + "French" : "צרפתית", + "Fulah (Senegal)" : "פולה (סנגל)", + "Fulah" : "פולה", + "Galician (Spain)" : "גליסית (ספרד)", + "Galician" : "גליסית", + "Ganda (Uganda)" : "גנדה (אוגנדה)", + "Ganda" : "גנדה", + "Georgian (Georgia)" : "גאורגית (גאורגיה)", + "Georgian" : "גאורגית", + "German (Austria)" : "גרמנית (אוסטריה)", + "German (Belgium)" : "גרמנית (בלגיה)", + "German (Germany)" : "גרמנית (גרמניה)", + "German (Liechtenstein)" : "גרמנית (ליכטנשטיין)", + "German (Luxembourg)" : "גרמנית (לוקסמבורג)", + "German (Switzerland)" : "גרמנית (שווייץ)", + "German" : "גרמנית", + "Greek (Cyprus)" : "יוונית (קפריסין)", + "Greek (Greece)" : "יוונית (יוון)", + "Greek" : "יוונית", + "Hebrew (Israel)" : "עברית (ישראל)", + "Hebrew" : "עברית", + "Hungarian (Hungary)" : "הונגרית (הונגריה)", + "Hungarian" : "הונגרית", + "Icelandic (Iceland)" : "איסלנדית (איסלנד)", + "Icelandic" : "איסלנד", + "Indonesian (Indonesia)" : "אינדונזית (אינדונזיה)", + "Indonesian" : "אינדונזית", + "Irish (Ireland)" : "אירית (אירלנד)", + "Irish" : "אירית", + "Italian (Italy)" : "איטלקית (איטליה)", + "Italian (Switzerland)" : "איטלקית (שווייץ)", + "Italian" : "איטלקית", + "Japanese (Japan)" : "יפנית (יפן)", + "Japanese" : "יפנית", + "Kalaallisut (Greenland)" : "כלשית (גרינלנד)", + "Kalaallisut" : "כלשית", + "Kalenjin (Kenya)" : "קלנג׳ין (קניה)", + "Kalenjin" : "קלנג׳ין", + "Kazakh (Cyrillic)" : "קזחית (קירילית)", + "Kazakh (Cyrillic, Kazakhstan)" : "קזחית (קירילית, קזחסטן)", + "Kazakh" : "קזחית", + "Limit to groups" : "הגבלה לקבוצות", + "Allow filesystem access" : "לאפשר גישה למערכת הקבצים", + "Revoke" : "שלילה", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome עבור Android", + "Sync client - {os}" : "לקוח סנכרון - {os}", + "This session" : "הפעלה זו", + "Device" : "התקן", + "Last activity" : "פעילות אחרונה", + "Devices & sessions" : "התקנים והפעלות", + "Web, desktop and mobile clients currently logged in to your account." : "לקוחות שמחוברים כעת לחשבון שלך דרך דפדפן, שולחן עבודה והתקנים ניידים.", + "Error while creating device token" : "שגיאה בזמן יצירת מחרוזת התקן", + "Error while deleting the token" : "שגיאה בזמן מחיקת המחרוזת", + "App name" : "שם יישום", + "Create new app password" : "יצירת סיסמת יישום חדשה", + "Use the credentials below to configure your app or device." : "יש להשתמש בפרטי הזיהוי שלהלן כדי להגדיר את היישומון או ההתקן שלך.", + "For security reasons this password will only be shown once." : "מטעמי אבטחה הססמה תופיע פעם אחת בלבד.", + "Username" : "שם משתמש", + "Password" : "סיסמא", + "Done" : "הסתיים", + "Copied!" : "הועתק!", + "Copy" : "העתקה", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "היישומונים הרשמיים מפותחים על ידי ובתוך הקהילה. הם מציעים תכונות ליבה מסוימות והן מוכנות לשימוש יומיומי.", + "Official" : "רישמי", + "Remove" : "הסרה", + "Disable" : "ניטרול", + "All" : "הכל", + "No results" : "אין תוצאות", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "ליישומון זה לא מוקצית גרסת Nextcloud מזערית. מצב כזה עשוי להוביל לשגיאה בעתיד.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "ליישומון זה לא מוקצית גרסת Nextcloud מרבית. מצב כזה עשוי להוביל לשגיאה בעתיד.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "לא ניתן להתקין את יישום זה כיוון שייחסי התלות הבאים לא התקיימו:", + "View in store" : "הצגה באחסון", + "Visit website" : "ביקור באתר האינטרנט", + "Report a bug" : "דיווח על באג", + "User documentation" : "תיעוד משתמש", + "Admin documentation" : "תיעוד מנהל", + "Developer documentation" : "תיעוד מפתח", + "Update to {update}" : "עדכון ל־{version}", + "Results from other categories" : "תוצאות מקטגוריות אחרות", + "No apps found for your version" : "לא נמצאו יישומים לגרסה שלך", + "Disable all" : "להשבית הכול", + "Enable all" : "הפעלת הכול", + "Download and enable" : "להוריד ולהפעיל", + "Enable" : "הפעלה", + "Enable untested app" : "לאפשר יישומון שלא נבדק", + "The app will be downloaded from the app store" : "היישום ירד מחנות היישומים", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "היישומון הזה לא מסומן כנתמך בגרסת ה־Nextcloud. עדיין יתאפשר לך להמשיך ולהתקין את היישומון. נא לשים לב שיכול להיות שהיישומון לא יעבוד כצפוי.", + "You do not have permissions to see the details of this user" : "אין לך הרשאות לצפות בפירוט על המשתמש", + "The backend does not support changing the display name" : "המנגנון שלך לא תומך בשינוי שם התצוגה", + "New password" : "סיסמא חדשה", + "Select user quota" : "בחירת מכסת משתמש", + "No language set" : "לא הוגדרה שפה", + "Never" : "מעולם לא", + "Delete user" : "מחיקת משתמש", + "Disable user" : "השבתת משתמש", + "Enable user" : "הפעלת משתמש", + "Resend welcome email" : "שליחת הודעת קבלת פנים בדוא״ל מחדש", + "{size} used" : "{size} בשימוש", + "Welcome mail sent!" : "נשלחה הודעת קבלת פנים בדוא״ל!", + "Display name" : "שם תצוגה", + "Email" : "דואר אלקטרוני", + "Group admin for" : "מנהל הקבוצה", + "Quota" : "מכסה", + "Language" : "שפה", + "Storage location" : "מיקום אחסון", + "User backend" : "מנגנון משתמש", + "Last login" : "כניסה אחרונה", + "Default language" : "שפת בררת מחדל", + "Add a new user" : "הוספת משתמש חדש", + "No users in here" : "אין כאן משתמשים", + "Default quota" : "מכסת בררת מחדל", + "Common languages" : "שפות נפוצות", + "All languages" : "כל השפות", + "Your apps" : "היישומונים שלך", + "Active apps" : "יישומונים פעילים", + "Disabled apps" : "יישומונים מושבתים", + "Updates" : "עדכונים", + "App bundles" : "מאגדי יישומונים", + "{license}-licensed" : "ברישיון {license}", + "New user" : "משתמש חדש", + "Default quota:" : "מכסת בררת מחדל:", + "Select default quota" : "בחירת מכסת בררת מחדל", + "Show Languages" : "הצגת שפות", + "Show last login" : "הצגת כניסה אחרונה", + "Show user backend" : "הצגת צד אחורי למשתמש", + "Show storage path" : "הצגת נתיב אחסון", + "You are about to remove the group {group}. The users will NOT be deleted." : "פעולה זו תסיר את הקבוצה {group}. המשתמשים ﬥﬡ יימחקו.", + "Please confirm the group removal " : "נא לאשר את הסרת הקבוצה", + "Remove group" : "הסרת קבוצה", + "Admins" : "מנהלים", + "Disabled users" : "משתמשים מושבתים", + "Everyone" : "כולם", + "Add group" : "הוספת קבוצה", + "An error occured during the request. Unable to proceed." : "אירעה שגיאה במהלך הבקשה. לא ניתן להמשיך.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "היישומון הופעל אך יש לעדכן אותו. ההפניה לעמוד העדכון תחל בעוד 5 שניות.", + "App update" : "עדכון יישומן", + "Error: This app can not be enabled because it makes the server unstable" : "שגיאה: לא ניתן להפעיל יישומון זה כיוון שהוא מערער את יציבות השרת.", + "SSL Root Certificates" : "אישורי אבטחת SSL לנתיב יסוד", + "Common Name" : "שם משותף", + "Valid until" : "בתוקף עד", + "Issued By" : "הוצא על ידי", + "Valid until %s" : "בתוקף עד %s", + "Import root certificate" : "יבוא אישור אבטחה לנתיב יסוד", + "Administrator documentation" : "תיעוד מנהל", + "Documentation" : "תיעוד", + "Forum" : "פורום", + "None" : "כלום", + "Login" : "התחברות", + "Plain" : "רגיל", + "NT LAN Manager" : "מנהל רשת NT", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "שרת דואר אלקטרוני", + "Open documentation" : "תיעוד פתוח", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "חשוב להגדיר את השרת הזה כדי שיתאפשר לשלוח דרכו הודעות דוא״ל, למשל כדי לאפס ססמה ולשלוח התרעות.", + "Send mode" : "מצב שליחה", + "Encryption" : "הצפנה", + "From address" : "מכתובת", + "mail" : "mail", + "Authentication method" : "שיטת אימות", + "Authentication required" : "נדרש אימות", + "Server address" : "כתובת שרת", + "Port" : "שער", + "Credentials" : "פרטי גישה", + "SMTP Username" : "שם משתמש SMTP ", + "SMTP Password" : "סיסמת SMTP", + "Test email settings" : "בדיקת הגדרות דואר אלקטרוני", + "Send email" : "שליחת דואר אלקטרוני", + "Security & setup warnings" : "הזהרות אבטחה והתקנה", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "למטרות אבטחה וביצועים מיטביים עבור המערכת שלך חשוב שהכול יוגדר כראוי. כדי לסייע לך בכך אנו עורכים בדיקות אוטומטיות. נא לעיין בתיעוד המקושר לקבלת מידע נוסף.", + "All checks passed." : "כל הבדיקות עברו", + "There are some errors regarding your setup." : "ישנן מגוון שגיאות על ההגדרות שלך.", + "There are some warnings regarding your setup." : "ישנן מגוון אזהרות על ההגדרות שלך.", + "Checking for system and security issues." : "נבדקות תקלות מערכת ואבטחה.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "בדיקת האבטחה של ה־Nextcloud שלך באמצעות <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">סריקת האבטחה שלנו ↖️</a>.", + "Version" : "גרסה", + "Two-Factor Authentication" : "אימות דו־שלבי", + "Server-side encryption" : "הצפנת צד שרת", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "הצפנה בצד השרת מאפשרת להצפין קבצים שנשלחים לשרת. לתכונה זו יש מגבלות כגון ירידה בביצועים, מומלץ להפעיל רק אם יש צורך.", + "Enable server-side encryption" : "הפעלת הצפנה בצד שרת", + "Please read carefully before activating server-side encryption: " : "יש לקרוא בתשומת לב רבה לפני שמפעילים הצפנת צד שרת:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "ברגע שהצפנה מופעלת, כל הקבצים שיועלו לשרת מרגע זה יהיו מוצפנים בשרת. ניתן יהיה לנטרל את ההצפנה בעתיד רק אם מודול ההצפנה תומך בפונקציה זו, וכל התנאים המוקדמים (דהיינו הגדרת מפתח השחזור) מתקיימים.", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "הצפנה לבד אינה מספיקה לאבטחה איכותית למערכת. נא לעיין בתיעוד לקבלת פרטים נוספים על אופן הפעולה של יישומון ההצפנה ודרכי היישום הנתמכות.", + "Be aware that encryption always increases the file size." : "תשומת לב לכך שהצפנה בהכרח מגדילה את גודל הקובץ.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "תמיד טוב ליצור גיבוי קבוע למידע , במקרה של הצפנה יש לוודא שגם מפתחות ההצפנה מגובים עם המידע שלך.", + "This is the final warning: Do you really want to enable encryption?" : "זו הזהרה אחרונה: האם באמת ברצונך להפעיל הצפנה?", + "Enable encryption" : "אפשר הצפנה", + "No encryption module loaded, please enable an encryption module in the app menu." : "לא נמצא מודול הצפנה, יש לאפשר מודול הצפנה בתפריט היישומים.", + "Select default encryption module:" : "יש לבחור מודול הצפנת ברירת מחדל:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "יש להמיר את מפתחות ההצפנה שלך בממערכת ההצפנה הישנה (ownCloud <= 8.0) למערכת החדשה. יש לאפשר את \"מודול הצפנה ברירת מחדש\" ולהריץ 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "יש להמיר את מפתחות ההצפנה שלך בממערכת ההצפנה הישנה (ownCloud <= 8.0) למערכת החדשה.", + "Start migration" : "התחלת המרה", + "Background jobs" : "משימות רקע", + "Last job ran %s." : "המשימה האחרונה רצה למשך %s.", + "Last job execution ran %s. Something seems wrong." : "פעילות ההרצה האחרונה נמשכה %s. משהו שם נראה לא תקין.", + "Background job didn’t run yet!" : "משימת הרקע לא רצה עדיין!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "לביצועים מיטביים חשוב להגדיר משימות רקע כראוי. למערכות גדולות יותר מוטב להשתמש ב־‚Cron’. נא לעיין בתיעוד לקבל מידע נוסף.", + "Execute one task with each page loaded" : "יש להפעיל משימה אחת עם כל עמוד שנטען", + "The cron.php needs to be executed by the system user \"%s\"." : "יש להפעיל את cron.php בתור משתמש המערכת „%s”.", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "כדי להריץ זאת יש צורך בהרחבת POSIX ל־PHP. נא לעיין ב{linkstart}תיעוד של PHP{linkend} לפרטים נוספים.", + "Sharing" : "שיתוף", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "כמנהל יש לך אפשרות לכוונן את התנהגות השיתוף. נא לעיין בתיעוד לפרטים נוספים.", + "Allow apps to use the Share API" : "לאפשר ליישום להשתמש ב־API השיתוף", + "Allow users to share via link" : "אפשר למשתמשים לשתף באמצעות קישור", + "Allow public uploads" : "אפשר העלאות ציבוריות", + "Always ask for a password" : "תמיד לבקש ססמה", + "Enforce password protection" : "חייב הגנת סיסמא", + "Set default expiration date" : "הגדרת תאריך תפוגה ברירת מחדל", + "Expire after " : "פג אחרי", + "days" : "ימים", + "Enforce expiration date" : "חייב תאריך תפוגה", + "Allow resharing" : "לאפשר שיתוף מחדש", + "Allow sharing with groups" : "מאפשר שיתוף עם קבוצות", + "Restrict users to only share with users in their groups" : "הגבלת משתמשים לשתף רק עם משתמשים בקבוצה שלהם", + "Exclude groups from sharing" : "מניעת קבוצות משיתוף", + "These groups will still be able to receive shares, but not to initiate them." : "קבוצות אלו עדיין יוכלו לקבל שיתופים, אך לא לשתף בעצמם.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "לאפשר השלמת שם משתמש אוטומטית בתיבת השיתוף. אם האפשרות הזו מושבתת יש להקליד את שם המשתמש או את כתובת הדוא״ל במלואם.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "הצגת טקסט ויתור בעמוד העלאת קישור ציבורי. (מופיע רק כאשר רשימת הקבצים מוסתרת.)", + "This text will be shown on the public link upload page when the file list is hidden." : "טקסט זה יופיע בקישור עמוד ההעלאה של הקישור הציבורי כאשר רשימת הקבצים מוסתרת.", + "Default share permissions" : "הרשאות שיתוף כבררת מחדל", + "Personal" : "אישי", + "Administration" : "ניהול", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "בפיתוח על ידי {communityopen}קהילת Nextcloud{linkclose}, {githubopen}קוד המקור{linkclose} זמין ברישיון {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "לייק לעמוד הפייסבוק שלנו", + "Follow us on Twitter" : "לעקוב אחרינו בטוויטר", + "Check out our blog" : "לעיין בבלוג שלנו", + "Subscribe to our newsletter" : "הרשמה לרשימת הדיוור שלנו", + "Profile picture" : "תמונת פרופיל", + "Upload new" : "העלאת חדש", + "Select from Files" : "בחירה מתוך קבצים", + "Remove image" : "הסרת תמונה", + "png or jpg, max. 20 MB" : "png או jpg, מקסימום 20 מגה-בייט", + "Picture provided by original account" : "תמונה סופקה על ידי חשבון מקור", + "Cancel" : "ביטול", + "Choose as profile picture" : "יש לבחור כתמונת פרופיל", + "Details" : "פרטים", + "You are a member of the following groups:" : "הקבוצות הבאות כוללות אותך:", + "You are using <strong>%s</strong>" : "הניצולת שלך היא <strong>%s</strong>", + "Full name" : "שם מלא", + "No display name set" : "לא נקבע שם תצוגה", + "Your email address" : "כתובת הדואר האלקטרוני שלך", + "No email address set" : "לא נקבעה כתובת דואר אלקטרוני", + "For password reset and notifications" : "לאיפוס ססמה והתרעות", + "Phone number" : "מספר טלפון", + "Your phone number" : "מספר הטלפון שלך", + "Address" : "כתובת", + "Your postal address" : "כתובת הדואר שלך", + "Website" : "אתר", + "It can take up to 24 hours before the account is displayed as verified." : "יתכן שיעברו עד 24 שעות בטרם הצגת החשבון כמאומת.", + "Link https://…" : "קישור https://…‎", + "Twitter" : "טוויטר", + "Twitter handle @…" : "כינוי בטוויטר @…", + "Help translate" : "עזרה בתרגום", + "Locale" : "הגדרות אזוריות", + "Current password" : "סיסמא נוכחית", + "Change password" : "שינוי סיסמא", + "Disconnect" : "ניתוק", + "Press ⌘-C to copy." : "‎⌘-C להעתקה.", + "Press Ctrl-C to copy." : "Ctrl-C להעתקה.", + "Store credentials" : "שמירת אישורים", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php רשום בשירות webcron לקרוא ל- cron.php בכל 15 דקות באמצעות HTTP.", + "Use system cron service to call the cron.php file every 15 minutes." : "ניתן להשתמש בשירות cron של המערכת כדי לקרוא לקובץ cron.php בכל 15 דקות.", + "Follow us on Google+" : "לעקוב אחרינו ב־Google+‎" +},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;" +} \ No newline at end of file diff --git a/apps/settings/l10n/hr.js b/apps/settings/l10n/hr.js new file mode 100644 index 00000000000..5055b94dc51 --- /dev/null +++ b/apps/settings/l10n/hr.js @@ -0,0 +1,823 @@ +OC.L10N.register( + "settings", + { + "{actor} added you to group {group}" : "{actor} vas je dodao u grupu {group}", + "You added {user} to group {group}" : "Dodali ste {user} u grupu {group}", + "{actor} added {user} to group {group}" : "{actor} je dodao {user} u grupu {grupa}", + "An administrator added you to group {group}" : "Administrator vas je dodao u grupu {group}", + "An administrator added {user} to group {group}" : "Administrator je dodao {user} u grupu {group}", + "{actor} removed you from group {group}" : "{actor} vas je uklonio iz grupe {group}", + "You removed {user} from group {group}" : "Uklonili ste {user} iz grupe {group}", + "{actor} removed {user} from group {group}" : "{actor} je uklonio {user} iz grupe {group}", + "An administrator removed you from group {group}" : "Administrator vas je uklonio iz grupe {group}", + "An administrator removed {user} from group {group}" : "Administrator je uklonio {user} iz grupe {group}", + "Your <strong>group memberships</strong> were modified" : "Vaša <strong>članstva u grupama</strong> su izmijenjena", + "{actor} changed your password" : "{actor} je promijenio vašu zaporku", + "You changed your password" : "Promijenili ste svoju zaporku", + "Your password was reset by an administrator" : "Administrator je resetirao vašu zaporku", + "{actor} changed your email address" : "{actor} je promijenio vašu adresu e-pošte", + "You changed your email address" : "Promijenili ste svoju adresu e-pošte", + "Your email address was changed by an administrator" : "Administrator je promijenio vašu adresu e-pošte", + "You created app password \"{token}\"" : "Stvorili ste zaporku aplikacije „{token}”", + "You deleted app password \"{token}\"" : "Izbrisali ste zaporku aplikacije „{token}”", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Preimenovali ste zaporku aplikacije „{token}” u „{newToken}”", + "You granted filesystem access to app password \"{token}\"" : "Odobrili ste zaporki aplikacije „{token}” pristup datotečnom sustavu", + "You revoked filesystem access from app password \"{token}\"" : "Opozvali ste zaporki aplikacije „{token}” pristup datotečnom sustavu", + "Security" : "Sigurnost", + "You successfully logged in using two-factor authentication (%1$s)" : "Uspješno ste se prijavili s pomoću dvofaktorske autentifikacije (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Neuspješan pokušaj prijave s pomoću dvofaktorske autentifikacije (%1$s)", + "Remote wipe was started on %1$s" : "Udaljeno brisanje pokrenuto je %1$s", + "Remote wipe has finished on %1$s" : "Udaljeno brisanje završilo je %1$s", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Izmijenjena je vaša <strong>zaporka</strong> ili <strong>adresa e-pošte</strong>", + "Couldn't remove app." : "Nije moguće ukloniti aplikaciju.", + "Couldn't update app." : "Neuspješno ažuriranje aplikacije.", + "Wrong password" : "Pogrešna zaporka", + "Saved" : "Spremljeno", + "No user supplied" : "Nijedan korisnik nije podnesen", + "Unable to change password" : "Promjena zaporke nije moguća", + "Authentication error" : "Pogrešna autentifikacija", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Unesite administratorsku zaporku za oporavak; u protivnom će svi podaci korisnika biti izgubljeni.", + "Wrong admin recovery password. Please check the password and try again." : "Pogrešna administratorska zaporka za oporavak. Provjerite zaporku i pokušajte ponovno.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Pozadinski sustav ne podržava promjenu zaporke, ali je ažuriran korisnikov ključ za šifriranje.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "instaliranje i ažuriranje aplikacija putem trgovine aplikacijama ili dijeljenja putem udruženog oblaka", + "Federated Cloud Sharing" : "Dijeljenje putem udruženog oblaka", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL upotrebljava zastarjelu inačicu %1$s (%2$s). Ažurirajte svoj operacijski sustav kako bi značajke, kao što je %3$s, pouzdano radile.", + "Invalid SMTP password." : "Nevaljana zaporka za SMTP.", + "Email setting test" : "Testiranje postavljanja e-pošte", + "Well done, %s!" : "Odlično, %s!", + "If you received this email, the email configuration seems to be correct." : "Ako ste primili ovu poruku e-pošte, čini se da je e-pošta pravilno konfigurirana.", + "Email could not be sent. Check your mail server log" : "Slanje poruke e-pošte nije uspjelo. Provjerite zapis poslužitelja e-pošte", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Došlo je do problema pri slanju poruke e-pošte. Pregledajte svoje postavke. (Pogreška: %s)", + "You need to set your user email before being able to send test emails." : "Prije slanja testnih poruka e-pošte trebate postaviti svoj korisnički račun e-pošte.", + "Invalid mail address" : "Nevažeća adresa e-pošte", + "Settings saved" : "Postavke spremljene", + "Unable to change full name" : "Nije moguće promijeniti puno ime", + "Unable to change email address" : "Nije moguće promijeniti adresu e-pošte", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Kako biste potvrdili svoj Twitter račun, objavite sljedeću poruku na Twitteru (objavite bez ikakvih prekida retka):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Kako biste potvrdili svoje web-mjesto, pohranite sljedeći sadržaj u korijensku mapu na ‘.well-known/CloudIdVerificationCode.txt’ (cijeli tekst treba biti u jednom retku):", + "%1$s changed your password on %2$s." : "%1$s je promijenio vašu zaporku na %2$s.", + "Your password on %s was changed." : "Promijenjena je vaša zaporka na %s.", + "Your password on %s was reset by an administrator." : "Administrator je promijenio vašu zaporku na %s.", + "Password for %1$s changed on %2$s" : "Promijenjena je zaporka za %1$s na %2$s", + "Password changed for %s" : "Promijenjena je zaporka za %s", + "If you did not request this, please contact an administrator." : "Ako niste zatražili navedenu radnju, obratite se administratoru.", + "Your email address on %s was changed." : "Promijenjena je vaša adresa e-pošte na %s.", + "Your email address on %s was changed by an administrator." : "Administrator je promijenio vašu adresu e-pošte na %s.", + "Email address for %1$s changed on %2$s" : "Promijenjena je adresa e-pošte za %1$s na %2$s", + "Email address changed for %s" : "Promijenjena je adresa e-pošte za %s", + "The new email address is %s" : "Nova adresa e-pošte je %s", + "Your %s account was created" : "Stvorena je vaš račun %s", + "Welcome aboard" : "Dobrodošli", + "Welcome aboard %s" : "Dobrodošli u %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Dobrodošli u svoj račun %s, sada možete dodati, zaštititi i dijeliti svoje podatke.", + "Your username is: %s" : "Vaše korisničko ime je: %s", + "Set your password" : "Postavite zaporku", + "Go to %s" : "Idi na %s", + "Install Client" : "Instaliraj klijenta", + "Logged in user must be a subadmin" : "Korisnik koji je prijavljen mora biti podadministrator", + "Create" : "Stvori", + "Change" : "Promijeni", + "Delete" : "Izbriši", + "Share" : "Dijeli", + "Unlimited" : "Neograničeno", + "Verifying" : "Provjeravanje", + "Verifying …" : "Provjeravanje…", + "Verify" : "Provjeri", + "Migration in progress. Please wait until the migration is finished" : "Migracije u tijeku. Pričekajte da migracija završi", + "Migration started …" : "Migracija je pokrenuta…", + "Not saved" : "Nije spremljeno", + "Sending…" : "Slanje…", + "Email sent" : "E-pošta je poslana", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Došlo je do pogreške. Otpremite ASCII-kodiranu PEM vjerodajnicu.", + "Valid until {date}" : "Vrijedi do {date}", + "Local" : "Lokalno", + "Private" : "Privatno", + "Only visible to local users" : "Vidljivo samo lokalnim korisnicima", + "Only visible to you" : "Vidljivo samo vama", + "Contacts" : "Kontakti", + "Visible to local users and to trusted servers" : "Vidljivo lokalnim korisnicima i pouzdanim poslužiteljima", + "Public" : "Javna", + "Will be synced to a global and public address book" : "Sinkronizirat će se s globalnim i javnim adresarom", + "Very weak password" : "Zaporka vrlo slaba", + "Weak password" : "Zaporka slaba", + "So-so password" : "Zaporka prosječne jačine", + "Good password" : "Zaporka dobra", + "Strong password" : "Zaporka jaka", + "An error occurred while changing your language. Please reload the page and try again." : "Došlo je do pogreške pri promijeni jezika. Ponovo učitajte stranicu i pokušajte ponovo.", + "An error occurred while changing your locale. Please reload the page and try again." : "Došlo je do pogreške pri promijeni postavke lokacije. Ponovo učitajte stranicu i pokušajte ponovo.", + "Select a profile picture" : "Odaberite profilnu sliku", + "Week starts on {fdow}" : "Tjedan počinje {fdow}", + "Groups" : "Grupe", + "Group list is empty" : "Popis grupa je prazan", + "Unable to retrieve the group list" : "Nije moguće preuzeti popis grupa", + "Afrikaans (Namibia)" : "Afrikaans (Namibija)", + "Afrikaans (South Africa)" : "Afrikaans (Južna Afrika)", + "Afrikaans" : "Afrikaans", + "Akan (Ghana)" : "Akanski (Gana)", + "Akan" : "Akanski", + "Albanian (Albania)" : "Albanski (Albanija)", + "Albanian" : "Albanski", + "Amharic (Ethiopia)" : "Amharski (Etiopija)", + "Amharic" : "Amharski", + "Arabic (Algeria)" : "Arapski (Alžir)", + "Arabic (Bahrain)" : "Arapski (Bahrein)", + "Arabic (Egypt)" : "Arapski (Egipat)", + "Arabic (Iraq)" : "Arapski (Irak)", + "Arabic (Jordan)" : "Arapski (Jordan)", + "Arabic (Kuwait)" : "Arapski (Kuvajt)", + "Arabic (Lebanon)" : "Arapski (Libanon)", + "Arabic (Libya)" : "Arapski (Libija)", + "Arabic (Morocco)" : "Arapski (Maroko)", + "Arabic (Oman)" : "Arapski (Oman)", + "Arabic (Qatar)" : "Arapski (Katar)", + "Arabic (Saudi Arabia)" : "Arapski (Saudijska Arabija)", + "Arabic (Sudan)" : "Arapski (Sudan)", + "Arabic (Syria)" : "Arapski (Sirija)", + "Arabic (Tunisia)" : "Arapski (Tunis)", + "Arabic (United Arab Emirates)" : "Arapski (Ujedinjeni Arapski Emirati)", + "Arabic (Yemen)" : "Arapski (Jemen)", + "Arabic" : "Arapski", + "Armenian (Armenia)" : "Armenski (Armenija)", + "Armenian" : "Armenski", + "Assamese (India)" : "Asamski (Indija)", + "Assamese" : "Asamski", + "Asu (Tanzania)" : "Asu (Tanzanija)", + "Asu" : "Asu", + "Azerbaijani (Cyrillic)" : "Azerski (ćirilica)", + "Azerbaijani (Cyrillic, Azerbaijan)" : "Azerski (ćirilica, Azerbajdžan)", + "Azerbaijani (Latin)" : "Azerski (latinica)", + "Azerbaijani (Latin, Azerbaijan)" : "Azerski (latinica, Azerbajdžan)", + "Azerbaijani" : "Azerski", + "Bambara (Mali)" : "Bambarski (Mali)", + "Bambara" : "Bambarski", + "Basque (Spain)" : "Baskijski (Španjolska)", + "Basque" : "Baskijski", + "Belarusian (Belarus)" : "Bjeloruski (Bjelorusija)", + "Belarusian" : "Bjeloruski", + "Bemba (Zambia)" : "Bemba (Zambija)", + "Bemba" : "Bemba", + "Bena (Tanzania)" : "Bena (Tanzanija)", + "Bena" : "Bena", + "Bengali (Bangladesh)" : "Bengalski (Bangladeš)", + "Bengali (India)" : "Bengalski (Indija)", + "Bengali" : "Bengalski", + "Bosnian (Bosnia and Herzegovina)" : "Bošnjački (Bosna i Hercegovina)", + "Bosnian" : "Bošnjački", + "Bulgarian (Bulgaria)" : "Bugarski (Bugarska)", + "Bulgarian" : "Bugarski", + "Burmese (Myanmar [Burma])" : "Burmanski (Mjanmar [Burma])", + "Burmese" : "Burmanski", + "Catalan (Spain)" : "Katalonski (Španjolska)", + "Catalan" : "Katalonski", + "Central Morocco Tamazight (Latin)" : "Centralnoatlaski tamazight (latinica)", + "Central Morocco Tamazight (Latin, Morocco)" : "Centralnoatlaski tamazight (latinica, Maroko)", + "Central Morocco Tamazight" : "Centralnoatlaski tamazight", + "Cherokee (United States)" : "Cherokee (Sjedinjene Američke Države)", + "Cherokee" : "Cherokee", + "Chiga (Uganda)" : "Chiga (Uganda)", + "Chiga" : "Chiga", + "Chinese (Simplified Han)" : "Kineski (pojednostavljeni han)", + "Chinese (Simplified Han, China)" : "Kineski (pojednostavljeni han, Kina)", + "Chinese (Simplified Han, Hong Kong SAR China)" : "Kineski (pojednostavljeni han, Posebna upravna regija Narodne Republike Kine Hong Kong)", + "Chinese (Simplified Han, Macau SAR China)" : "Kineski (pojednostavljeni han, Posebna upravna regija Narodne Republike Kine Makao)", + "Chinese (Simplified Han, Singapore)" : "Kineski (pojednostavljeni han, Singapur)", + "Chinese (Traditional Han)" : "Kineski (tradicionalni han)", + "Chinese (Traditional Han, Hong Kong SAR China)" : "Kineski (tradicionalni han, Posebna upravna regija Narodne Republike Kine Hong Kong)", + "Chinese (Traditional Han, Macau SAR China)" : "Kineski (tradicionalni han, Posebna upravna regija Narodne Republike Kine Makao)", + "Chinese (Traditional Han, Taiwan)" : "Kineski (tradicionalni han, Tajvan)", + "Chinese" : "Kineski", + "Cornish (United Kingdom)" : "Kornijski (Ujedinjeno Kraljevstvo)", + "Cornish" : "Kornijski", + "Croatian (Croatia)" : "Hrvatski (Hrvatska)", + "Croatian" : "Hrvatski", + "Czech (Czech Republic)" : "Češki (Češka)", + "Czech" : "Češki", + "Danish (Denmark)" : "Danski (Danska)", + "Danish" : "Danski", + "Dutch (Belgium)" : "Nizozemski (Belgija)", + "Dutch (Netherlands)" : "Nizozemski (Nizozemska)", + "Dutch" : "Nizozemski", + "Embu (Kenya)" : "Embu (Kenija)", + "Embu" : "Embu", + "English (American Samoa)" : "Engleski (Američka Samoa)", + "English (Australia)" : "Engleski (Australija)", + "English (Belgium)" : "Engleski (Belgija)", + "English (Belize)" : "Engleski (Belize)", + "English (Botswana)" : "Engleski (Bocvana)", + "English (Canada)" : "Engleski (Kanada)", + "English (Guam)" : "Engleski (Guam)", + "English (Hong Kong SAR China)" : "Engleski (Posebna upravna regija Narodne Republike Kine Hong Kong)", + "English (India)" : "Engleski (Indija)", + "English (Ireland)" : "Engleski (Irska)", + "English (Jamaica)" : "Engleski (Jamajka)", + "English (Malta)" : "Engleski (Malta)", + "English (Marshall Islands)" : "Engleski (Maršalovi Otoci)", + "English (Mauritius)" : "Engleski (Mauricijus)", + "English (Namibia)" : "Engleski (Namibija)", + "English (New Zealand)" : "Engleski (Novi Zeland)", + "English (Northern Mariana Islands)" : "Engleski (Sjevernomarijanski otoci)", + "English (Pakistan)" : "Engleski (Pakistan)", + "English (Philippines)" : "Engleski (Filipini)", + "English (Singapore)" : "Engleski (Singapur)", + "English (South Africa)" : "Engleski (Južna Afrika)", + "English (Trinidad and Tobago)" : "Engleski (Trinidad i Tobago)", + "English (U.S. Minor Outlying Islands)" : "Engleski (Mali udaljeni otoci SAD-a)", + "English (U.S. Virgin Islands)" : "Engleski (Američki Djevičanski otoci)", + "English (United Kingdom)" : "Engleski (Ujedinjeno Kraljevstvo)", + "English (United States)" : "Engleski (Sjedinjene Američke Države)", + "English (Zimbabwe)" : "Engleski (Zimbabve)", + "English" : "Engleski", + "Esperanto" : "Esperanto", + "Estonian (Estonia)" : "Estonski (Estonija)", + "Estonian" : "Estonski", + "Ewe (Ghana)" : "Ewe (Gana)", + "Ewe (Togo)" : "Ewe (Togo)", + "Ewe" : "Ewe", + "Faroese (Faroe Islands)" : "Ferojski (Ferojski otoci)", + "Faroese" : "Ferojski", + "Filipino (Philippines)" : "Filipinski (Filipini)", + "Filipino" : "Filipinski", + "Finnish (Finland)" : "Finski (Finska)", + "Finnish" : "Finski", + "French (Belgium)" : "Francuski (Belgija)", + "French (Benin)" : "Francuski (Benin)", + "French (Burkina Faso)" : "Francuski (Burkina Faso)", + "French (Burundi)" : "Francuski (Burundi)", + "French (Cameroon)" : "Francuski (Kamerun)", + "French (Canada)" : "Francuski (Kanada)", + "French (Central African Republic)" : "Francuski (Srednjoafrička Republika)", + "French (Chad)" : "Francuski (Čad)", + "French (Comoros)" : "Francuski (Komori)", + "French (Congo - Brazzaville)" : "Francuski (Kongo – Brazzaville)", + "French (Congo - Kinshasa)" : "Francuski (Kongo – Kinshasa)", + "French (Côte d’Ivoire)" : "Francuski (Obala Bjelokosti)", + "French (Djibouti)" : "Francuski (Džibuti)", + "French (Equatorial Guinea)" : "Francuski (Ekvatorijalna Gvineja)", + "French (France)" : "Francuski (Francuska)", + "French (Gabon)" : "Francuski (Gabon)", + "French (Guadeloupe)" : "Francuski (Gvadalupa)", + "French (Guinea)" : "Francuski (Gvineja)", + "French (Luxembourg)" : "Francuski (Luksemburg)", + "French (Madagascar)" : "Francuski (Madagaskar)", + "French (Mali)" : "Francuski (Mali)", + "French (Martinique)" : "Francuski (Martinik)", + "French (Monaco)" : "Francuski (Monako)", + "French (Niger)" : "Francuski (Niger)", + "French (Rwanda)" : "Francuski (Ruanda)", + "French (Réunion)" : "Francuski (Réunion)", + "French (Saint Barthélemy)" : "Francuski (Sveti Bartolomej)", + "French (Saint Martin)" : "Francuski (Sveti Martin)", + "French (Senegal)" : "Francuski (Senegal)", + "French (Switzerland)" : "Francuski (Švicarska)", + "French (Togo)" : "Francuski (Togo)", + "French" : "Francuski", + "Fulah (Senegal)" : "Fulski (Senegal)", + "Fulah" : "Fulski", + "Galician (Spain)" : "Galicijski (Španjolska)", + "Galician" : "Galicijski", + "Ganda (Uganda)" : "Ganda (Uganda)", + "Ganda" : "Ganda", + "Georgian (Georgia)" : "Gruzijski (Gruzija)", + "Georgian" : "Gruzijski", + "German (Austria)" : "Njemački (Austrija)", + "German (Belgium)" : "Njemački (Belgija)", + "German (Germany)" : "Njemački (Njemačka)", + "German (Liechtenstein)" : "Njemački (Lihtenštajn)", + "German (Luxembourg)" : "Njemački (Luksemburg)", + "German (Switzerland)" : "Njemački (Švicarska)", + "German" : "Njemački", + "Greek (Cyprus)" : "Grčki (Cipar)", + "Greek (Greece)" : "Grčki (Grčka)", + "Greek" : "Grčki", + "Gujarati (India)" : "Gudžaratski (Indija)", + "Gujarati" : "Gudžaratski", + "Gusii (Kenya)" : "Gusii (Kenija)", + "Gusii" : "Gusii", + "Hausa (Latin)" : "Hausa (latinica)", + "Hausa (Latin, Ghana)" : "Hausa (latinica, Gana)", + "Hausa (Latin, Niger)" : "Hausa (latinica, Niger)", + "Hausa (Latin, Nigeria)" : "Hausa (latinica, Nigerija)", + "Hausa" : "Hausa", + "Hawaiian (United States)" : "Havajski (Sjedinjene Američke Države)", + "Hawaiian" : "Havajski", + "Hebrew (Israel)" : "Hebrejski (Izrael)", + "Hebrew" : "Hebrejski", + "Hindi (India)" : "Hindski (Indija)", + "Hindi" : "Hindski", + "Hungarian (Hungary)" : "Mađarski (Mađarska)", + "Hungarian" : "Mađarski", + "Icelandic (Iceland)" : "Islandski (Island)", + "Icelandic" : "Islandski", + "Igbo (Nigeria)" : "Igbo (Nigerija)", + "Igbo" : "Igbo", + "Indonesian (Indonesia)" : "Indonezijski (Indonezija)", + "Indonesian" : "Indonezijski", + "Irish (Ireland)" : "Irski (Irska)", + "Irish" : "Irski", + "Italian (Italy)" : "Talijanski (Italija)", + "Italian (Switzerland)" : "Talijanski (Švicarska)", + "Italian" : "Talijanski", + "Japanese (Japan)" : "Japanski (Japan)", + "Japanese" : "Japanski", + "Kabuverdianu (Cape Verde)" : "Kabuverdianu (Zelenortska Republika)", + "Kabuverdianu" : "Kabuverdianu", + "Kabyle (Algeria)" : "Kabilski (Alžir)", + "Kabyle" : "Kabilski", + "Kalaallisut (Greenland)" : "Kalaallisut (Grenland)", + "Kalaallisut" : "Kalaallisut", + "Kalenjin (Kenya)" : "Kalenjin (Kenija)", + "Kalenjin" : "Kalenjin", + "Kamba (Kenya)" : "Kamba (Kenija)", + "Kamba" : "Kamba", + "Kannada (India)" : "Kannada (Indija)", + "Kannada" : "Kannada", + "Kazakh (Cyrillic)" : "Kazaški (ćirilica)", + "Kazakh (Cyrillic, Kazakhstan)" : "Kazaški (ćirilica, Kazahstan)", + "Kazakh" : "Kazaški", + "Khmer (Cambodia)" : "Kmerski (Kambodža)", + "Khmer" : "Kmerski", + "Kikuyu (Kenya)" : "Kikuyu (Kenija)", + "Kikuyu" : "Kikuyu", + "Kinyarwanda (Rwanda)" : "Kinyarwanda (Ruanda)", + "Kinyarwanda" : "Kinyarwanda", + "Konkani (India)" : "Konkani (Indija)", + "Konkani" : "Konkani", + "Korean (South Korea)" : "Korejski (Južna Koreja)", + "Korean" : "Korejski", + "Koyra Chiini (Mali)" : "Koyra Chiini (Mali)", + "Koyra Chiini" : "Koyra Chiini", + "Koyraboro Senni (Mali)" : "Koyraboro Senni (Mali)", + "Koyraboro Senni" : "Koyraboro Senni", + "Langi (Tanzania)" : "Langi (Tanzanija)", + "Langi" : "Langi", + "Latvian (Latvia)" : "Latvijski (Latvija)", + "Latvian" : "Latvijski", + "Lithuanian (Lithuania)" : "Litavski (Litva)", + "Lithuanian" : "Litavski", + "Luo (Kenya)" : "Luo (Kenija)", + "Luo" : "Luo", + "Luyia (Kenya)" : "Luyia (Kenija)", + "Luyia" : "Luyia", + "Macedonian (Macedonia)" : "Makedonski (Makedonija)", + "Macedonian" : "Makedonski", + "Machame (Tanzania)" : "Machame (Tanzanija)", + "Machame" : "Machame", + "Makonde (Tanzania)" : "Makonde (Tanzanija)", + "Makonde" : "Makonde", + "Malagasy (Madagascar)" : "Malgaški (Madagaskar)", + "Malagasy" : "Malagaški", + "Malay (Brunei)" : "Malajski (Brunej)", + "Malay (Malaysia)" : "Malajski (Malezija)", + "Malay" : "Malajski", + "Malayalam (India)" : "Malajalamski (Indija)", + "Malayalam" : "Malajalamski", + "Maltese (Malta)" : "Malteški (Malta)", + "Maltese" : "Malteški", + "Manx (United Kingdom)" : "Manski (Ujedinjeno Kraljevstvo)", + "Manx" : "Manski", + "Marathi (India)" : "Marathi (Indija)", + "Marathi" : "Marathi", + "Masai (Kenya)" : "Masai (Kenija)", + "Masai (Tanzania)" : "Masai (Tanzanija)", + "Masai" : "Masai", + "Meru (Kenya)" : "Meru (Kenija)", + "Meru" : "Meru", + "Morisyen (Mauritius)" : "Mauricijski (Mauricijus)", + "Morisyen" : "Mauricijski", + "Nama (Namibia)" : "Nama (Namibija)", + "Nama" : "Nama", + "Nepali (India)" : "Nepalski (Indija)", + "Nepali (Nepal)" : "Nepalski (Nepal)", + "Nepali" : "Nepalski", + "North Ndebele (Zimbabwe)" : "Sjeverni ndebele (Zimbabve)", + "North Ndebele" : "Sjeverni ndebele", + "Norwegian Bokmål (Norway)" : "Norveški bokmål (Norveška)", + "Norwegian Bokmål" : "Norveški bokmål", + "Norwegian Nynorsk (Norway)" : "Norveški nynorsk (Norveška)", + "Norwegian Nynorsk" : "Norveški nynorsk", + "Nyankole (Uganda)" : "Nyankole (Uganda)", + "Nyankole" : "Nyankole", + "Oriya (India)" : "Orijski (Indija)", + "Oriya" : "Orijski", + "Oromo (Ethiopia)" : "Oromoški (Etiopija)", + "Oromo (Kenya)" : "Oromoški (Kenija)", + "Oromo" : "Oromoški", + "Pashto (Afghanistan)" : "Paštunski (Afganistan)", + "Pashto" : "Paštunski", + "Persian (Afghanistan)" : "Perzijski (Afganistan)", + "Persian (Iran)" : "Perzijski (Iran)", + "Persian" : "Perzijski", + "Polish (Poland)" : "Poljski (Poljska)", + "Polish" : "Poljski", + "Portuguese (Brazil)" : "Portugalski (Brazil)", + "Portuguese (Guinea-Bissau)" : "Portugalski (Gvineja Bissau)", + "Portuguese (Mozambique)" : "Portugalski (Mozambik)", + "Portuguese (Portugal)" : "Portugalski (Portugal)", + "Portuguese" : "Portugalski", + "Punjabi (Arabic)" : "Pandžapski (arapsko pismo)", + "Punjabi (Arabic, Pakistan)" : "Pandžapski (arapsko pismo, Pakistan)", + "Punjabi (Gurmukhi)" : "Pandžapski (gurmukhi)", + "Punjabi (Gurmukhi, India)" : "Pandžapski (gurmukhi, Indija)", + "Punjabi" : "Pandžapski", + "Romanian (Moldova)" : "Rumunjski (Moldavija)", + "Romanian (Romania)" : "Rumunjski (Rumunjska)", + "Romanian" : "Rumunjski", + "Romansh (Switzerland)" : "Retroromanski (Švicarska)", + "Romansh" : "Retroromanski", + "Rombo (Tanzania)" : "Rombo (Tanzanija)", + "Rombo" : "Rombo", + "Russian (Moldova)" : "Ruski (Moldavija)", + "Russian (Russia)" : "Ruski (Rusija)", + "Russian (Ukraine)" : "Ruski (Ukrajina)", + "Russian" : "Ruski", + "Rwa (Tanzania)" : "Rwa (Tanzanija)", + "Rwa" : "Rwa", + "Samburu (Kenya)" : "Samburu (Kenija)", + "Samburu" : "Samburu", + "Sango (Central African Republic)" : "Sango (Srednjoafrička Republika)", + "Sango" : "Sango", + "Sena (Mozambique)" : "Sena (Mozambik)", + "Sena" : "Sena", + "Serbian (Cyrillic)" : "Srpski (ćirilica)", + "Serbian (Cyrillic, Bosnia and Herzegovina)" : "Srpski (ćirilica, Bosna i Hercegovina)", + "Serbian (Cyrillic, Montenegro)" : "Srpski (ćirilica, Crna Gora)", + "Serbian (Cyrillic, Serbia)" : "Srpski (ćirilica, Srbija)", + "Serbian (Latin)" : "Srpski (latinica)", + "Serbian (Latin, Bosnia and Herzegovina)" : "Srpski (latinica, Bosna i Hercegovina)", + "Serbian (Latin, Montenegro)" : "Srpski (latinica, Crna Gora)", + "Serbian (Latin, Serbia)" : "Srpski (latinica, Srbija)", + "Serbian" : "Srpski", + "Shona (Zimbabwe)" : "Shona (Zimbabve)", + "Shona" : "Shona", + "Sichuan Yi (China)" : "Nuosu (Kina)", + "Sichuan Yi" : "Nuosu", + "Sinhala (Sri Lanka)" : "Singalski (Šri Lanka)", + "Sinhala" : "Singalski", + "Slovak (Slovakia)" : "Slovački (Slovačka)", + "Slovak" : "Slovački", + "Slovenian (Slovenia)" : "Slovenski (Slovenija)", + "Slovenian" : "Slovenski", + "Soga (Uganda)" : "Soga (Uganda)", + "Soga" : "Soga", + "Somali (Djibouti)" : "Somalijski (Džibuti)", + "Somali (Ethiopia)" : "Somalijski (Etiopija)", + "Somali (Kenya)" : "Somalijski (Kenija)", + "Somali (Somalia)" : "Somalijski (Somalija)", + "Somali" : "Somalijski", + "Spanish (Argentina)" : "Španjolski (Argentina)", + "Spanish (Bolivia)" : "Španjolski (Bolivija)", + "Spanish (Chile)" : "Španjolski (Čile)", + "Spanish (Colombia)" : "Španjolski (Kolumbija)", + "Spanish (Costa Rica)" : "Španjolski (Kostarika)", + "Spanish (Dominican Republic)" : "Španjolski (Dominikanska Republika)", + "Spanish (Ecuador)" : "Španjolski (Ekvador)", + "Spanish (El Salvador)" : "Španjolski (El Salvador)", + "Spanish (Equatorial Guinea)" : "Španjolski (Ekvatorijalna Gvineja)", + "Spanish (Guatemala)" : "Španjolski (Gvatemala)", + "Spanish (Honduras)" : "Španjolski (Honduras)", + "Spanish (Latin America)" : "Španjolski (Latinska Amerika)", + "Spanish (Mexico)" : "Španjolski (Meksiko)", + "Spanish (Nicaragua)" : "Španjolski (Nikaragva)", + "Spanish (Panama)" : "Španjolski (Panama)", + "Spanish (Paraguay)" : "Španjolski (Paragvaj)", + "Spanish (Peru)" : "Španjolski (Peru)", + "Spanish (Puerto Rico)" : "Španjolski (Portoriko)", + "Spanish (Spain)" : "Španjolski (Španjolska)", + "Spanish (United States)" : "Španjolski (Sjedinjene Američke Države)", + "Spanish (Uruguay)" : "Španjolski (Urugvaj)", + "Spanish (Venezuela)" : "Španjolski (Venezuela)", + "Spanish" : "Španjolski", + "Swahili (Kenya)" : "Svahili (Kenija)", + "Swahili (Tanzania)" : "Svahili (Tanzanija)", + "Swahili" : "Svahili", + "Swedish (Finland)" : "Švedski (Finska)", + "Swedish (Sweden)" : "Švedski (Švedska)", + "Swedish" : "Švedski", + "Swiss German (Switzerland)" : "Švicarski njemački (Švicarska)", + "Swiss German" : "Švicarski njemački", + "Tachelhit (Latin)" : "Tachelhit (latinica)", + "Tachelhit (Latin, Morocco)" : "Tachelhit (latinica, Maroko)", + "Tachelhit (Tifinagh)" : "Tachelhit (tifinagh)", + "Tachelhit (Tifinagh, Morocco)" : "Tachelhit (tifinagh, Maroko)", + "Tachelhit" : "Tachelhit", + "Taita (Kenya)" : "Taita (Kenija)", + "Taita" : "Taita", + "Tamil (India)" : "Tamilski (Indija)", + "Tamil (Sri Lanka)" : "Tamilski (Šri Lanka)", + "Tamil" : "Tamilski", + "Telugu (India)" : "Telugu (Indija)", + "Telugu" : "Telugu", + "Teso (Kenya)" : "Teso (Kenija)", + "Teso (Uganda)" : "Teso (Uganda)", + "Teso" : "Teso", + "Thai (Thailand)" : "Tajski (Tajland)", + "Thai" : "Tajski", + "Tibetan (China)" : "Tibetski (Kina)", + "Tibetan (India)" : "Tibetski (Indija)", + "Tibetan" : "Tibetski", + "Tigrinya (Eritrea)" : "Tigrinja (Eritreja)", + "Tigrinya (Ethiopia)" : "Tigrinja (Etiopija)", + "Tigrinya" : "Tigrinja", + "Tonga (Tonga)" : "Tonga (Tonga)", + "Tonga" : "Tonga", + "Turkish (Turkey)" : "Turski (Turska)", + "Turkish" : "Turski", + "Ukrainian (Ukraine)" : "Ukrajinski (Ukrajina)", + "Ukrainian" : "Ukrajinski", + "Urdu (India)" : "Urdu (Indija)", + "Urdu (Pakistan)" : "Urdu (Pakistan)", + "Urdu" : "Urdu", + "Uzbek (Arabic)" : "Uzbečki (arapsko pismo)", + "Uzbek (Arabic, Afghanistan)" : "Uzbečki (arapsko pismo, Afganistan)", + "Uzbek (Cyrillic)" : "Uzbečki (ćirilica)", + "Uzbek (Cyrillic, Uzbekistan)" : "Uzbečki (ćirilica, Uzbekistan)", + "Uzbek (Latin)" : "Uzbečki (latinica)", + "Uzbek (Latin, Uzbekistan)" : "Uzbečki (latinica, Uzbekistan)", + "Uzbek" : "Uzbečki", + "Vietnamese (Vietnam)" : "Vijetnamski (Vijetnam)", + "Vietnamese" : "Vijetnamski", + "Vunjo (Tanzania)" : "Vunjo (Tanzanija)", + "Vunjo" : "Vunjo", + "Welsh (United Kingdom)" : "Velški (Ujedinjeno Kraljevstvo)", + "Welsh" : "Velški", + "Yoruba (Nigeria)" : "Jorupski (Nigerija)", + "Yoruba" : "Jorupski", + "Zulu (South Africa)" : "Zulu (Južna Afrika)", + "Zulu" : "Zulu", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Dvofaktorska autentifikacija može se primijeniti na sve\tkorisnike i određene grupe. Ako nisu konfigurirali davatelje usluge dvofaktorske autentifikacije, neće se moći prijaviti u sustav.", + "Enforce two-factor authentication" : "Primijeni dvofaktorsku autentifikaciju", + "Limit to groups" : "Ograniči na grupe", + "Enforcement of two-factor authentication can be set for certain groups only." : "Primjena dvofaktorske autentifikacije može se postaviti samo za određene grupe.", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "Dvofaktorska autentifikacija primjenjuje se na sve\tčlanove sljedećih grupa.", + "Enforced groups" : "Obuhvaćene grupe", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "Dvofaktorska autentifikacija ne primjenjuje se na\tčlanove sljedećih grupa.", + "Excluded groups" : "Izuzete grupe", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "Nakon odabira grupa koje će biti obuhvaćene/izuzete, primjenjuje se sljedeća logika za utvrđivanje je li 2FA omogućen za određenog korisnika: ako nije odabrana nijedna grupa, 2FA je omogućen za sve osim za članove izuzetih grupa. Ako su odabrane određene grupe, 2FA je omogućen samo za sve članove tih grupa. Ako je korisnik član odabrane i izuzete grupe, odabrana grupa ima prednost i 2FA se primjenjuje.", + "Save changes" : "Spremi promjene", + "Marked for remote wipe" : "Označeno za udaljeno brisanje", + "Device settings" : "Postavke uređaja", + "Allow filesystem access" : "Omogući pristup datotečnom sustavu", + "Rename" : "Preimenuj", + "Revoke" : "Opozovi", + "Wipe device" : "Izbriši sve s uređaja", + "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Opozivanje ovog tokena može spriječiti brisanje sadržaja s vašeg uređaja ako brisanje nije pokrenuto.", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome za Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Aplikacija Nextcloud za iOS", + "Nextcloud Android app" : "Aplikacija Nextcloud za Android", + "Nextcloud Talk for iOS" : "Nextcloud Talk za iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk za Android", + "Sync client - {os}" : "Sinkroniziraj klijenta – {os}", + "This session" : "Ova sesija", + "Device" : "Uređaj", + "Last activity" : "Posljednja aktivnost", + "Devices & sessions" : "Uređaji i sesije", + "Web, desktop and mobile clients currently logged in to your account." : "Web, računalni i mobilni klijenti trenutno prijavljeni u vaš račun.", + "Do you really want to wipe your data from this device?" : "Želite li zaista izbrisati podatke s ovog uređaja?", + "Confirm wipe" : "Potvrdi brisanje", + "Error while creating device token" : "Pogreška pri stvaranju tokena za uređaj", + "Error while updating device token scope" : "Pogreška pri ažuriranju raspona tokena za uređaj", + "Error while updating device token name" : "Pogreška pri ažuriranju naziva tokena za uređaja", + "Error while deleting the token" : "Pogreška pri brisanju tokena", + "Error while wiping the device with the token" : "Pogreška pri brisanju sadržaja uređaja tokenom", + "App name" : "Naziv aplikacije", + "Create new app password" : "Stvori novu zaporku za aplikaciju", + "Use the credentials below to configure your app or device." : "Upotrijebite vjerodajnice navedene u nastavku za konfiguriranje aplikacije ili uređaja.", + "For security reasons this password will only be shown once." : "Iz sigurnosnih razloga ta će se zaporka prikazati samo jednom.", + "Username" : "Korisničko ime", + "Password" : "Zaporka", + "Done" : "Gotovo", + "Show QR code for mobile apps" : "Prikaži QR kôd za mobilne aplikacije", + "Copied!" : "Kopirano!", + "Copy" : "Kopiraj", + "Could not copy app password. Please copy it manually." : "Kopiranje zaporke aplikacije nije uspjelo. Kopirajte je ručno.", + "This app is supported via your current Nextcloud subscription." : "Aplikacija je podržana unutar vaše trenutne pretplate na Nextcloud.", + "Supported" : "Podržano", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Službene aplikacije razvijaju članovi zajednice. One nude osnovnu funkcionalnost i spremne su za produkciju.", + "Official" : "Službeno", + "by" : "od", + "Update to {version}" : "Ažuriraj na {version}", + "Remove" : "Ukloni", + "Disable" : "Onemogući", + "All" : "Sve", + "Limit app usage to groups" : "Ograničite primjenu aplikacije na grupe", + "No results" : "Nema rezultata", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Ovoj aplikaciji nije dodijeljena najmanja inačica Nextclouda. To će biti pogreška u budućnosti.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Ovoj aplikaciji nije dodijeljena najveća inačica Nextclouda. To će biti pogreška u budućnosti.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Aplikaciju nije moguće instalirati jer nisu ispunjene sljedeće ovisnosti:", + "View in store" : "Pogledajte u trgovini", + "Visit website" : "Posjeti web-mjesto", + "Report a bug" : "Prijavi pogrešku", + "User documentation" : "Dokumentacija za korisnike", + "Admin documentation" : "Dokumentacija za administratore", + "Developer documentation" : "Dokumentacija za razvojne programere", + "Update to {update}" : "Ažuriraj na {update}", + "Results from other categories" : "Rezultati iz drugih kategorija", + "No apps found for your version" : "Nije pronađena nijedna aplikacija za vašu inačicu", + "Disable all" : "Onemogući sve", + "Enable all" : "Omogući sve", + "Download and enable" : "Preuzmi i omogući", + "Enable" : "Omogući", + "Enable untested app" : "Omogući neprovjerenu aplikaciju", + "The app will be downloaded from the app store" : "Aplikacija će se preuzeti iz trgovine aplikacijama", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Ova aplikacija nije označena kao kompatibilna s vašom inačicom Nextclouda. Ako odlučite nastaviti, moći ćete instalirati aplikaciju. Imajte na umu da aplikacija možda neće raditi kako očekujete.", + "You do not have permissions to see the details of this user" : "Nemate dopuštenja za prikaz pojedinosti ovog korisnika", + "The backend does not support changing the display name" : "Pozadinski sustav ne podržava promjenu imena za prikaz", + "New password" : "Nova zaporka", + "Add user in group" : "Dodaj korisnika u grupu", + "Set user as admin for" : "Postavi korisnika kao administratora za", + "Select user quota" : "Odaberi kvotu korisnika", + "No language set" : "Nije postavljen jezik", + "Never" : "Nikad", + "Delete user" : "Izbriši korisnika", + "Wipe all devices" : "Izbriši podatke sa svih uređaja", + "Disable user" : "Onemogući korisnika", + "Enable user" : "Omogući korisnika", + "Resend welcome email" : "Ponovno pošalji poruku dobrodošlice", + "{size} used" : "Iskorišteno {size}", + "Welcome mail sent!" : "Poslana poruka dobrodošlice!", + "Display name" : "Ime za prikaz", + "Email" : "E-pošta", + "Group admin for" : "Administrator grupe za", + "Quota" : "Kvota", + "Language" : "Jezik", + "Storage location" : "Mjesto pohrane", + "User backend" : "Korisnički pozadinski sustav", + "Last login" : "Posljednja prijava", + "Will be autogenerated" : "Automatski će se generirati", + "Default language" : "Zadani jezik", + "Add a new user" : "Dodaj novog korisnika", + "No users in here" : "Ovdje nema korisnika", + "Default quota" : "Zadana kvota", + "Password change is disabled because the master key is disabled" : "Onemogućeno je mijenjanje zaporke jer je onemogućen glavni ključ", + "Common languages" : "Česti jezici", + "All languages" : "Svi jezici", + "Your apps" : "Vaše aplikacije", + "Active apps" : "Aktivne aplikacije", + "Disabled apps" : "Onemogućene aplikacije", + "Updates" : "Ažuriranja", + "App bundles" : "Paketi aplikacija", + "{license}-licensed" : "Licencirano prema {license}", + "New user" : "Novi korisnik", + "Default quota:" : "Zadana kvota:", + "Select default quota" : "Odaberi zadanu kvotu", + "Show Languages" : "Prikaži jezike", + "Show last login" : "Prikaži posljednju prijavu", + "Show user backend" : "Prikaži korisnički pozadinski sustav", + "Show storage path" : "Prikaži put pohrane", + "You are about to remove the group {group}. The users will NOT be deleted." : "Izbrisat ćete grupu {group}. Korisnici NEĆE biti izbrisani.", + "Please confirm the group removal " : "Potvrdite uklanjanje grupe ", + "Remove group" : "Ukloni grupu", + "Admins" : "Administratori", + "Disabled users" : "Onemogućeni korisnici", + "Everyone" : "Svi", + "Add group" : "Dodaj grupu", + "An error occured during the request. Unable to proceed." : "Došlo je do pogreške tijekom rješavanja zahtjeva. Nije moguće nastaviti.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Aplikacija je omogućena, ali je treba ažurirati. Za 5 sekundi bit ćete preusmjereni na stranicu za ažuriranje.", + "App update" : "Ažuriranje aplikacije", + "Error: This app can not be enabled because it makes the server unstable" : "Pogreška: ovu se aplikaciju ne može omogućiti jer poslužitelj može postati nestabilan", + "SSL Root Certificates" : "Korijenske vjerodajnice SSL-a", + "Common Name" : "Opći naziv", + "Valid until" : "Vrijedi do", + "Issued By" : "Izdavatelj", + "Valid until %s" : "Vrijedi do %s", + "Import root certificate" : "Uvezi korijensku vjerodajnicu", + "Administrator documentation" : "Dokumentacija za administratora", + "Documentation" : "Dokumentacija", + "Forum" : "Forum", + "None" : "Nema", + "Login" : "Prijava", + "Plain" : "Čisti tekst", + "NT LAN Manager" : "NT LAN Manager", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Poslužitelj e-pošte", + "Open documentation" : "Otvori dokumentaciju", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Važno je postaviti ovaj poslužitelj kako biste mogli slati poruke e-pošte u vezi s resetiranjem zaporke i obavijesti.", + "Send mode" : "Način slanja", + "Encryption" : "Šifriranje", + "Sendmail mode" : "Način slanja pošte", + "From address" : "Adresa pošiljatelja", + "mail" : "pošta", + "Authentication method" : "Način autentifikacije", + "Authentication required" : "Potrebna autentifikacija", + "Server address" : "Adresa poslužitelja", + "Port" : "Port", + "Credentials" : "Vjerodajnice", + "SMTP Username" : "Korisničko ime za SMTP", + "SMTP Password" : "SMTP zaporka", + "Save" : "Spremi", + "Test email settings" : "Ispitaj postavke e-pošte", + "Send email" : "Pošalji poruku e-pošte", + "Security & setup warnings" : "Upozorenja o sigurnosti i postavljanju", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Pravilna konfiguracija iznimno je važna za sigurnost i performanse vaše instance. Kako bismo vam pomogli pravilno konfigurirati sustav, provest ćemo neke automatske provjere. Za više informacija pogledajte navedenu dokumentaciju.", + "All checks passed." : "Sve su provjere uspješno dovršene.", + "There are some errors regarding your setup." : "Postoje neke pogreške u vezi s vašim postavom.", + "There are some warnings regarding your setup." : "Postoje neka upozorenja u vezi s vašim postavom.", + "Checking for system and security issues." : "Provjera sustava i sigurnosnih postavki.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Pažljivo pročitajte <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">upute za instalaciju ↗</a> i potražite postoje li ikakve pogreške ili upozorenja u <a href=\"%2$s\">zapisima</a>.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Provjerite sigurnost svojeg Nextclouda s pomoću <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">sigurnosnog skeniranja ↗</a>.", + "Version" : "Inačica", + "Two-Factor Authentication" : "Dvofaktorska autentifikacija", + "Server-side encryption" : "Šifriranje na poslužitelju", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Šifriranje na poslužitelju omogućuje šifriranje datoteka koje su otpremljene na ovaj poslužitelj. Ovaj postupak može narušiti performanse sustava pa ga omogućite samo ako je potrebno.", + "Enable server-side encryption" : "Omogući šifriranje na poslužitelju", + "Please read carefully before activating server-side encryption: " : "Pažljivo pročitajte sljedeće prije aktiviranja šifriranja na poslužitelju: ", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Ako je šifriranje na poslužitelju omogućeno, sve datoteke koje se od tog trenutka otpreme na poslužitelj bit će šifrirane u stanju mirovanja na poslužitelju. Kasnije možete onemogućiti šifriranje ako aktivni modul za šifriranje podržava tu funkciju i ispunjeni su svi preduvjeti (npr. postavljanje ključa za oporavak).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Šifriranje samo po sebi ne jamči sigurnost sustava. Pogledajte dokumentaciju za više informacija o načinu rada aplikacije za šifriranje i slučajevima korištenja.", + "Be aware that encryption always increases the file size." : "Imajte na umu da šifriranje uvijek povećava veličinu datoteke.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Uvijek je dobra ideja redovito izrađivati sigurnosne kopije podataka; ako upotrebljavate šifriranje, obavezno sigurnosno kopirajte ključeve za šifriranje zajedno sa svojim podacima.", + "This is the final warning: Do you really want to enable encryption?" : "Ovo je posljednje upozorenje: želite li zaista omogućiti šifriranje?", + "Enable encryption" : "Omogući šifriranje", + "No encryption module loaded, please enable an encryption module in the app menu." : "Nije učitan modul za šifriranje, omogućite modul za šifriranje u izborniku aplikacije.", + "Select default encryption module:" : "Odaberi zadani modul za šifriranje:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Morate prenijeti svoje ključeve za šifriranje sa stare inačice modula za šifriranje (ownCloud <= 8.0) na novu. Omogućite „zadani modul za šifriranje” i pokrenite 'occ encryption:migrate’.", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Morate prenijeti svoje ključeve za šifriranje sa stare inačice modula za šifriranje (ownCloud <= 8.0) na novu.", + "Start migration" : "Pokreni prijenos", + "Background jobs" : "Pozadinski zadaci", + "Last job ran %s." : "Posljednji zadatak pokrenut je %s.", + "Last job execution ran %s. Something seems wrong." : "Posljednji zadatak izvršen je %s. Čini se da nešto nije u redu.", + "Background job didn’t run yet!" : "Pozadinski zadatak još nije pokrenut!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Kako biste osigurali optimalne performanse važno je pravilno konfigurirati pozadinske zadatke. Kod većih instanci preporučujemo korištenje postavke ‘Cron’. Više informacija možete pronaći u odgovarajućoj dokumentaciji.", + "Pick background job setting" : "Odaberite postavku pozadinskog zadatka", + "Execute one task with each page loaded" : "Izvršite jedan zadatak sa svakom učitanom stranicom", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php registriran je na servisu webcron za pozivanje datoteke cron.php svakih 5 minuta putem HTTP-a.", + "Use system cron service to call the cron.php file every 5 minutes." : "Koristite se sistemskim servisom cron za pozivanje datoteke cron.php svakih 5 minuta.", + "The cron.php needs to be executed by the system user \"%s\"." : "Cron.php treba izvršiti korisnik „%s”.", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Za izvršavanje navedenog postupka potrebno je proširenje PHP POSIX. Pogledajte {linkstart}dokumentaciju PHP-a{linkend} za više informacija.", + "Sharing" : "Dijeljenje", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Administrator možete detaljnije podešavati dijeljenja. Pogledajte odgovarajuću dokumentaciju za više informacija.", + "Allow apps to use the Share API" : "Dopusti aplikacijama korištenje API-ja za dijeljenje", + "Allow users to share via link" : "Dopusti korisnicima dijeljenje putem poveznice", + "Allow public uploads" : "Dopusti javne otpreme", + "Always ask for a password" : "Uvijek traži zaporku", + "Enforce password protection" : "Nametni zaštitu zaporkom", + "Set default expiration date" : "Postavi zadani datum isteka", + "Expire after " : "Istek nakon", + "days" : "dana", + "Enforce expiration date" : "Primijeni datum isteka", + "Allow resharing" : "Dopusti ponovno dijeljenje", + "Allow sharing with groups" : "Dopusti dijeljenje s grupama", + "Restrict users to only share with users in their groups" : "Ograniči korisnike na dijeljenje samo s korisnicima unutar svoje grupe", + "Exclude groups from sharing" : "Izuzmi grupe iz dijeljenja", + "These groups will still be able to receive shares, but not to initiate them." : "Ove će grupe još uvijek moći primati dijeljene sadržaje, ali ih neće moći pokrenuti.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Dopusti automatsko dovršavanje korisničkog imena u dijaloškom okviru za dijeljenje. Ako je ova postavka onemogućena, potrebno je unijeti puno korisničko ime ili adresu e-pošte.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Prikaži tekst izjave o odricanju od odgovornosti na stranici za otpremanje javnih poveznica. (Prikazuje se samo kad je popis datoteka skriven.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Ovaj će tekst biti prikazan na stranici za otpremanje javnih poveznica kad je popis datoteka skriven.", + "Default share permissions" : "Zadana dopuštenja za dijeljenje", + "Personal" : "Osobno", + "Administration" : "Administracija", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "{githubopen}Izvorni kôd{linkclose} je razvila {communityopen}Nextcloudova zajednica korisnika{linkclose} i licenciran je sukladno {Licenseopen}AGPL-u{linkclose}.", + "Like our Facebook page" : "Pratite našu Facebook stranicu", + "Follow us on Twitter" : "Pratite nas na Twitteru", + "Follow us on Mastodon" : "Pratite nas na Mastodonu", + "Check out our blog" : "Pogledajte naš blog", + "Subscribe to our newsletter" : "Pretplatite se na naše obavijesti", + "Profile picture" : "Profilna slika", + "Upload new" : "Otpremi novu", + "Select from Files" : "Odaberi iz datoteka", + "Remove image" : "Ukloni sliku", + "png or jpg, max. 20 MB" : "png ili jpg, maks. 20 MB", + "Picture provided by original account" : "Slika s izvornog računa", + "Cancel" : "Odustani", + "Choose as profile picture" : "Odaberi kao profilnu sliku", + "Details" : "Pojedinosti", + "You are a member of the following groups:" : "Član ste sljedećih grupa:", + "You are using <strong>%s</strong>" : "Koristite <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Koristite <strong>%1$s</strong> od <strong>%2$s</strong> (<strong>%3$s% %</strong>)", + "Full name" : "Puno ime", + "No display name set" : "Nije postavljeno ime za prikaz", + "Your email address" : "Vaša adresa e-pošte", + "No email address set" : "Nije postavljena adresa e-pošte", + "For password reset and notifications" : "Za resetiranje zaporke i obavijesti", + "Phone number" : "Broj telefona", + "Your phone number" : "Vaš broj telefona", + "Address" : "Adresa", + "Your postal address" : "Vaša poštanska adresa", + "Website" : "Web-mjesto", + "It can take up to 24 hours before the account is displayed as verified." : "Potvrđivanje računa može potrajati i do 24 sata.", + "Link https://…" : "Poveznica https://...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Twitter ime @…", + "Help translate" : "Pomozite prevesti", + "Locale" : "Lokacija", + "Current password" : "Trenutna zaporka", + "Change password" : "Promijeni zaporku", + "Use a second factor besides your password to increase security for your account." : "Koristite se i drugim faktorom pored zaporke kako biste povećali sigurnost svog računa.", + "Disconnect" : "Odspoji", + "Not supported!" : "Nije podržano!", + "Press ⌘-C to copy." : "Pritisnite ⌘-C za kopiranje.", + "Press Ctrl-C to copy." : "Pritisnite Ctrl-C za kopiranje.", + "Error while loading browser sessions and device tokens" : "Pogreška prilikom učitavanja sesija preglednika i tokena uređaja", + "Store credentials" : "Pohrani vjerodajnice", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php registriran je na servisu webcron za pozivanje datoteke cron.php svakih 15 minuta putem HTTP-a.", + "Use system cron service to call the cron.php file every 15 minutes." : "Koristite se sistemskim servisom cron za pozivanje datoteke cron.php svakih 15 minuta.", + "Follow us on Google+" : "Pratite nas na Google+" +}, +"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;"); diff --git a/apps/settings/l10n/hr.json b/apps/settings/l10n/hr.json new file mode 100644 index 00000000000..2a5bfa77198 --- /dev/null +++ b/apps/settings/l10n/hr.json @@ -0,0 +1,821 @@ +{ "translations": { + "{actor} added you to group {group}" : "{actor} vas je dodao u grupu {group}", + "You added {user} to group {group}" : "Dodali ste {user} u grupu {group}", + "{actor} added {user} to group {group}" : "{actor} je dodao {user} u grupu {grupa}", + "An administrator added you to group {group}" : "Administrator vas je dodao u grupu {group}", + "An administrator added {user} to group {group}" : "Administrator je dodao {user} u grupu {group}", + "{actor} removed you from group {group}" : "{actor} vas je uklonio iz grupe {group}", + "You removed {user} from group {group}" : "Uklonili ste {user} iz grupe {group}", + "{actor} removed {user} from group {group}" : "{actor} je uklonio {user} iz grupe {group}", + "An administrator removed you from group {group}" : "Administrator vas je uklonio iz grupe {group}", + "An administrator removed {user} from group {group}" : "Administrator je uklonio {user} iz grupe {group}", + "Your <strong>group memberships</strong> were modified" : "Vaša <strong>članstva u grupama</strong> su izmijenjena", + "{actor} changed your password" : "{actor} je promijenio vašu zaporku", + "You changed your password" : "Promijenili ste svoju zaporku", + "Your password was reset by an administrator" : "Administrator je resetirao vašu zaporku", + "{actor} changed your email address" : "{actor} je promijenio vašu adresu e-pošte", + "You changed your email address" : "Promijenili ste svoju adresu e-pošte", + "Your email address was changed by an administrator" : "Administrator je promijenio vašu adresu e-pošte", + "You created app password \"{token}\"" : "Stvorili ste zaporku aplikacije „{token}”", + "You deleted app password \"{token}\"" : "Izbrisali ste zaporku aplikacije „{token}”", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Preimenovali ste zaporku aplikacije „{token}” u „{newToken}”", + "You granted filesystem access to app password \"{token}\"" : "Odobrili ste zaporki aplikacije „{token}” pristup datotečnom sustavu", + "You revoked filesystem access from app password \"{token}\"" : "Opozvali ste zaporki aplikacije „{token}” pristup datotečnom sustavu", + "Security" : "Sigurnost", + "You successfully logged in using two-factor authentication (%1$s)" : "Uspješno ste se prijavili s pomoću dvofaktorske autentifikacije (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Neuspješan pokušaj prijave s pomoću dvofaktorske autentifikacije (%1$s)", + "Remote wipe was started on %1$s" : "Udaljeno brisanje pokrenuto je %1$s", + "Remote wipe has finished on %1$s" : "Udaljeno brisanje završilo je %1$s", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Izmijenjena je vaša <strong>zaporka</strong> ili <strong>adresa e-pošte</strong>", + "Couldn't remove app." : "Nije moguće ukloniti aplikaciju.", + "Couldn't update app." : "Neuspješno ažuriranje aplikacije.", + "Wrong password" : "Pogrešna zaporka", + "Saved" : "Spremljeno", + "No user supplied" : "Nijedan korisnik nije podnesen", + "Unable to change password" : "Promjena zaporke nije moguća", + "Authentication error" : "Pogrešna autentifikacija", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Unesite administratorsku zaporku za oporavak; u protivnom će svi podaci korisnika biti izgubljeni.", + "Wrong admin recovery password. Please check the password and try again." : "Pogrešna administratorska zaporka za oporavak. Provjerite zaporku i pokušajte ponovno.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Pozadinski sustav ne podržava promjenu zaporke, ali je ažuriran korisnikov ključ za šifriranje.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "instaliranje i ažuriranje aplikacija putem trgovine aplikacijama ili dijeljenja putem udruženog oblaka", + "Federated Cloud Sharing" : "Dijeljenje putem udruženog oblaka", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL upotrebljava zastarjelu inačicu %1$s (%2$s). Ažurirajte svoj operacijski sustav kako bi značajke, kao što je %3$s, pouzdano radile.", + "Invalid SMTP password." : "Nevaljana zaporka za SMTP.", + "Email setting test" : "Testiranje postavljanja e-pošte", + "Well done, %s!" : "Odlično, %s!", + "If you received this email, the email configuration seems to be correct." : "Ako ste primili ovu poruku e-pošte, čini se da je e-pošta pravilno konfigurirana.", + "Email could not be sent. Check your mail server log" : "Slanje poruke e-pošte nije uspjelo. Provjerite zapis poslužitelja e-pošte", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Došlo je do problema pri slanju poruke e-pošte. Pregledajte svoje postavke. (Pogreška: %s)", + "You need to set your user email before being able to send test emails." : "Prije slanja testnih poruka e-pošte trebate postaviti svoj korisnički račun e-pošte.", + "Invalid mail address" : "Nevažeća adresa e-pošte", + "Settings saved" : "Postavke spremljene", + "Unable to change full name" : "Nije moguće promijeniti puno ime", + "Unable to change email address" : "Nije moguće promijeniti adresu e-pošte", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Kako biste potvrdili svoj Twitter račun, objavite sljedeću poruku na Twitteru (objavite bez ikakvih prekida retka):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Kako biste potvrdili svoje web-mjesto, pohranite sljedeći sadržaj u korijensku mapu na ‘.well-known/CloudIdVerificationCode.txt’ (cijeli tekst treba biti u jednom retku):", + "%1$s changed your password on %2$s." : "%1$s je promijenio vašu zaporku na %2$s.", + "Your password on %s was changed." : "Promijenjena je vaša zaporka na %s.", + "Your password on %s was reset by an administrator." : "Administrator je promijenio vašu zaporku na %s.", + "Password for %1$s changed on %2$s" : "Promijenjena je zaporka za %1$s na %2$s", + "Password changed for %s" : "Promijenjena je zaporka za %s", + "If you did not request this, please contact an administrator." : "Ako niste zatražili navedenu radnju, obratite se administratoru.", + "Your email address on %s was changed." : "Promijenjena je vaša adresa e-pošte na %s.", + "Your email address on %s was changed by an administrator." : "Administrator je promijenio vašu adresu e-pošte na %s.", + "Email address for %1$s changed on %2$s" : "Promijenjena je adresa e-pošte za %1$s na %2$s", + "Email address changed for %s" : "Promijenjena je adresa e-pošte za %s", + "The new email address is %s" : "Nova adresa e-pošte je %s", + "Your %s account was created" : "Stvorena je vaš račun %s", + "Welcome aboard" : "Dobrodošli", + "Welcome aboard %s" : "Dobrodošli u %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Dobrodošli u svoj račun %s, sada možete dodati, zaštititi i dijeliti svoje podatke.", + "Your username is: %s" : "Vaše korisničko ime je: %s", + "Set your password" : "Postavite zaporku", + "Go to %s" : "Idi na %s", + "Install Client" : "Instaliraj klijenta", + "Logged in user must be a subadmin" : "Korisnik koji je prijavljen mora biti podadministrator", + "Create" : "Stvori", + "Change" : "Promijeni", + "Delete" : "Izbriši", + "Share" : "Dijeli", + "Unlimited" : "Neograničeno", + "Verifying" : "Provjeravanje", + "Verifying …" : "Provjeravanje…", + "Verify" : "Provjeri", + "Migration in progress. Please wait until the migration is finished" : "Migracije u tijeku. Pričekajte da migracija završi", + "Migration started …" : "Migracija je pokrenuta…", + "Not saved" : "Nije spremljeno", + "Sending…" : "Slanje…", + "Email sent" : "E-pošta je poslana", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Došlo je do pogreške. Otpremite ASCII-kodiranu PEM vjerodajnicu.", + "Valid until {date}" : "Vrijedi do {date}", + "Local" : "Lokalno", + "Private" : "Privatno", + "Only visible to local users" : "Vidljivo samo lokalnim korisnicima", + "Only visible to you" : "Vidljivo samo vama", + "Contacts" : "Kontakti", + "Visible to local users and to trusted servers" : "Vidljivo lokalnim korisnicima i pouzdanim poslužiteljima", + "Public" : "Javna", + "Will be synced to a global and public address book" : "Sinkronizirat će se s globalnim i javnim adresarom", + "Very weak password" : "Zaporka vrlo slaba", + "Weak password" : "Zaporka slaba", + "So-so password" : "Zaporka prosječne jačine", + "Good password" : "Zaporka dobra", + "Strong password" : "Zaporka jaka", + "An error occurred while changing your language. Please reload the page and try again." : "Došlo je do pogreške pri promijeni jezika. Ponovo učitajte stranicu i pokušajte ponovo.", + "An error occurred while changing your locale. Please reload the page and try again." : "Došlo je do pogreške pri promijeni postavke lokacije. Ponovo učitajte stranicu i pokušajte ponovo.", + "Select a profile picture" : "Odaberite profilnu sliku", + "Week starts on {fdow}" : "Tjedan počinje {fdow}", + "Groups" : "Grupe", + "Group list is empty" : "Popis grupa je prazan", + "Unable to retrieve the group list" : "Nije moguće preuzeti popis grupa", + "Afrikaans (Namibia)" : "Afrikaans (Namibija)", + "Afrikaans (South Africa)" : "Afrikaans (Južna Afrika)", + "Afrikaans" : "Afrikaans", + "Akan (Ghana)" : "Akanski (Gana)", + "Akan" : "Akanski", + "Albanian (Albania)" : "Albanski (Albanija)", + "Albanian" : "Albanski", + "Amharic (Ethiopia)" : "Amharski (Etiopija)", + "Amharic" : "Amharski", + "Arabic (Algeria)" : "Arapski (Alžir)", + "Arabic (Bahrain)" : "Arapski (Bahrein)", + "Arabic (Egypt)" : "Arapski (Egipat)", + "Arabic (Iraq)" : "Arapski (Irak)", + "Arabic (Jordan)" : "Arapski (Jordan)", + "Arabic (Kuwait)" : "Arapski (Kuvajt)", + "Arabic (Lebanon)" : "Arapski (Libanon)", + "Arabic (Libya)" : "Arapski (Libija)", + "Arabic (Morocco)" : "Arapski (Maroko)", + "Arabic (Oman)" : "Arapski (Oman)", + "Arabic (Qatar)" : "Arapski (Katar)", + "Arabic (Saudi Arabia)" : "Arapski (Saudijska Arabija)", + "Arabic (Sudan)" : "Arapski (Sudan)", + "Arabic (Syria)" : "Arapski (Sirija)", + "Arabic (Tunisia)" : "Arapski (Tunis)", + "Arabic (United Arab Emirates)" : "Arapski (Ujedinjeni Arapski Emirati)", + "Arabic (Yemen)" : "Arapski (Jemen)", + "Arabic" : "Arapski", + "Armenian (Armenia)" : "Armenski (Armenija)", + "Armenian" : "Armenski", + "Assamese (India)" : "Asamski (Indija)", + "Assamese" : "Asamski", + "Asu (Tanzania)" : "Asu (Tanzanija)", + "Asu" : "Asu", + "Azerbaijani (Cyrillic)" : "Azerski (ćirilica)", + "Azerbaijani (Cyrillic, Azerbaijan)" : "Azerski (ćirilica, Azerbajdžan)", + "Azerbaijani (Latin)" : "Azerski (latinica)", + "Azerbaijani (Latin, Azerbaijan)" : "Azerski (latinica, Azerbajdžan)", + "Azerbaijani" : "Azerski", + "Bambara (Mali)" : "Bambarski (Mali)", + "Bambara" : "Bambarski", + "Basque (Spain)" : "Baskijski (Španjolska)", + "Basque" : "Baskijski", + "Belarusian (Belarus)" : "Bjeloruski (Bjelorusija)", + "Belarusian" : "Bjeloruski", + "Bemba (Zambia)" : "Bemba (Zambija)", + "Bemba" : "Bemba", + "Bena (Tanzania)" : "Bena (Tanzanija)", + "Bena" : "Bena", + "Bengali (Bangladesh)" : "Bengalski (Bangladeš)", + "Bengali (India)" : "Bengalski (Indija)", + "Bengali" : "Bengalski", + "Bosnian (Bosnia and Herzegovina)" : "Bošnjački (Bosna i Hercegovina)", + "Bosnian" : "Bošnjački", + "Bulgarian (Bulgaria)" : "Bugarski (Bugarska)", + "Bulgarian" : "Bugarski", + "Burmese (Myanmar [Burma])" : "Burmanski (Mjanmar [Burma])", + "Burmese" : "Burmanski", + "Catalan (Spain)" : "Katalonski (Španjolska)", + "Catalan" : "Katalonski", + "Central Morocco Tamazight (Latin)" : "Centralnoatlaski tamazight (latinica)", + "Central Morocco Tamazight (Latin, Morocco)" : "Centralnoatlaski tamazight (latinica, Maroko)", + "Central Morocco Tamazight" : "Centralnoatlaski tamazight", + "Cherokee (United States)" : "Cherokee (Sjedinjene Američke Države)", + "Cherokee" : "Cherokee", + "Chiga (Uganda)" : "Chiga (Uganda)", + "Chiga" : "Chiga", + "Chinese (Simplified Han)" : "Kineski (pojednostavljeni han)", + "Chinese (Simplified Han, China)" : "Kineski (pojednostavljeni han, Kina)", + "Chinese (Simplified Han, Hong Kong SAR China)" : "Kineski (pojednostavljeni han, Posebna upravna regija Narodne Republike Kine Hong Kong)", + "Chinese (Simplified Han, Macau SAR China)" : "Kineski (pojednostavljeni han, Posebna upravna regija Narodne Republike Kine Makao)", + "Chinese (Simplified Han, Singapore)" : "Kineski (pojednostavljeni han, Singapur)", + "Chinese (Traditional Han)" : "Kineski (tradicionalni han)", + "Chinese (Traditional Han, Hong Kong SAR China)" : "Kineski (tradicionalni han, Posebna upravna regija Narodne Republike Kine Hong Kong)", + "Chinese (Traditional Han, Macau SAR China)" : "Kineski (tradicionalni han, Posebna upravna regija Narodne Republike Kine Makao)", + "Chinese (Traditional Han, Taiwan)" : "Kineski (tradicionalni han, Tajvan)", + "Chinese" : "Kineski", + "Cornish (United Kingdom)" : "Kornijski (Ujedinjeno Kraljevstvo)", + "Cornish" : "Kornijski", + "Croatian (Croatia)" : "Hrvatski (Hrvatska)", + "Croatian" : "Hrvatski", + "Czech (Czech Republic)" : "Češki (Češka)", + "Czech" : "Češki", + "Danish (Denmark)" : "Danski (Danska)", + "Danish" : "Danski", + "Dutch (Belgium)" : "Nizozemski (Belgija)", + "Dutch (Netherlands)" : "Nizozemski (Nizozemska)", + "Dutch" : "Nizozemski", + "Embu (Kenya)" : "Embu (Kenija)", + "Embu" : "Embu", + "English (American Samoa)" : "Engleski (Američka Samoa)", + "English (Australia)" : "Engleski (Australija)", + "English (Belgium)" : "Engleski (Belgija)", + "English (Belize)" : "Engleski (Belize)", + "English (Botswana)" : "Engleski (Bocvana)", + "English (Canada)" : "Engleski (Kanada)", + "English (Guam)" : "Engleski (Guam)", + "English (Hong Kong SAR China)" : "Engleski (Posebna upravna regija Narodne Republike Kine Hong Kong)", + "English (India)" : "Engleski (Indija)", + "English (Ireland)" : "Engleski (Irska)", + "English (Jamaica)" : "Engleski (Jamajka)", + "English (Malta)" : "Engleski (Malta)", + "English (Marshall Islands)" : "Engleski (Maršalovi Otoci)", + "English (Mauritius)" : "Engleski (Mauricijus)", + "English (Namibia)" : "Engleski (Namibija)", + "English (New Zealand)" : "Engleski (Novi Zeland)", + "English (Northern Mariana Islands)" : "Engleski (Sjevernomarijanski otoci)", + "English (Pakistan)" : "Engleski (Pakistan)", + "English (Philippines)" : "Engleski (Filipini)", + "English (Singapore)" : "Engleski (Singapur)", + "English (South Africa)" : "Engleski (Južna Afrika)", + "English (Trinidad and Tobago)" : "Engleski (Trinidad i Tobago)", + "English (U.S. Minor Outlying Islands)" : "Engleski (Mali udaljeni otoci SAD-a)", + "English (U.S. Virgin Islands)" : "Engleski (Američki Djevičanski otoci)", + "English (United Kingdom)" : "Engleski (Ujedinjeno Kraljevstvo)", + "English (United States)" : "Engleski (Sjedinjene Američke Države)", + "English (Zimbabwe)" : "Engleski (Zimbabve)", + "English" : "Engleski", + "Esperanto" : "Esperanto", + "Estonian (Estonia)" : "Estonski (Estonija)", + "Estonian" : "Estonski", + "Ewe (Ghana)" : "Ewe (Gana)", + "Ewe (Togo)" : "Ewe (Togo)", + "Ewe" : "Ewe", + "Faroese (Faroe Islands)" : "Ferojski (Ferojski otoci)", + "Faroese" : "Ferojski", + "Filipino (Philippines)" : "Filipinski (Filipini)", + "Filipino" : "Filipinski", + "Finnish (Finland)" : "Finski (Finska)", + "Finnish" : "Finski", + "French (Belgium)" : "Francuski (Belgija)", + "French (Benin)" : "Francuski (Benin)", + "French (Burkina Faso)" : "Francuski (Burkina Faso)", + "French (Burundi)" : "Francuski (Burundi)", + "French (Cameroon)" : "Francuski (Kamerun)", + "French (Canada)" : "Francuski (Kanada)", + "French (Central African Republic)" : "Francuski (Srednjoafrička Republika)", + "French (Chad)" : "Francuski (Čad)", + "French (Comoros)" : "Francuski (Komori)", + "French (Congo - Brazzaville)" : "Francuski (Kongo – Brazzaville)", + "French (Congo - Kinshasa)" : "Francuski (Kongo – Kinshasa)", + "French (Côte d’Ivoire)" : "Francuski (Obala Bjelokosti)", + "French (Djibouti)" : "Francuski (Džibuti)", + "French (Equatorial Guinea)" : "Francuski (Ekvatorijalna Gvineja)", + "French (France)" : "Francuski (Francuska)", + "French (Gabon)" : "Francuski (Gabon)", + "French (Guadeloupe)" : "Francuski (Gvadalupa)", + "French (Guinea)" : "Francuski (Gvineja)", + "French (Luxembourg)" : "Francuski (Luksemburg)", + "French (Madagascar)" : "Francuski (Madagaskar)", + "French (Mali)" : "Francuski (Mali)", + "French (Martinique)" : "Francuski (Martinik)", + "French (Monaco)" : "Francuski (Monako)", + "French (Niger)" : "Francuski (Niger)", + "French (Rwanda)" : "Francuski (Ruanda)", + "French (Réunion)" : "Francuski (Réunion)", + "French (Saint Barthélemy)" : "Francuski (Sveti Bartolomej)", + "French (Saint Martin)" : "Francuski (Sveti Martin)", + "French (Senegal)" : "Francuski (Senegal)", + "French (Switzerland)" : "Francuski (Švicarska)", + "French (Togo)" : "Francuski (Togo)", + "French" : "Francuski", + "Fulah (Senegal)" : "Fulski (Senegal)", + "Fulah" : "Fulski", + "Galician (Spain)" : "Galicijski (Španjolska)", + "Galician" : "Galicijski", + "Ganda (Uganda)" : "Ganda (Uganda)", + "Ganda" : "Ganda", + "Georgian (Georgia)" : "Gruzijski (Gruzija)", + "Georgian" : "Gruzijski", + "German (Austria)" : "Njemački (Austrija)", + "German (Belgium)" : "Njemački (Belgija)", + "German (Germany)" : "Njemački (Njemačka)", + "German (Liechtenstein)" : "Njemački (Lihtenštajn)", + "German (Luxembourg)" : "Njemački (Luksemburg)", + "German (Switzerland)" : "Njemački (Švicarska)", + "German" : "Njemački", + "Greek (Cyprus)" : "Grčki (Cipar)", + "Greek (Greece)" : "Grčki (Grčka)", + "Greek" : "Grčki", + "Gujarati (India)" : "Gudžaratski (Indija)", + "Gujarati" : "Gudžaratski", + "Gusii (Kenya)" : "Gusii (Kenija)", + "Gusii" : "Gusii", + "Hausa (Latin)" : "Hausa (latinica)", + "Hausa (Latin, Ghana)" : "Hausa (latinica, Gana)", + "Hausa (Latin, Niger)" : "Hausa (latinica, Niger)", + "Hausa (Latin, Nigeria)" : "Hausa (latinica, Nigerija)", + "Hausa" : "Hausa", + "Hawaiian (United States)" : "Havajski (Sjedinjene Američke Države)", + "Hawaiian" : "Havajski", + "Hebrew (Israel)" : "Hebrejski (Izrael)", + "Hebrew" : "Hebrejski", + "Hindi (India)" : "Hindski (Indija)", + "Hindi" : "Hindski", + "Hungarian (Hungary)" : "Mađarski (Mađarska)", + "Hungarian" : "Mađarski", + "Icelandic (Iceland)" : "Islandski (Island)", + "Icelandic" : "Islandski", + "Igbo (Nigeria)" : "Igbo (Nigerija)", + "Igbo" : "Igbo", + "Indonesian (Indonesia)" : "Indonezijski (Indonezija)", + "Indonesian" : "Indonezijski", + "Irish (Ireland)" : "Irski (Irska)", + "Irish" : "Irski", + "Italian (Italy)" : "Talijanski (Italija)", + "Italian (Switzerland)" : "Talijanski (Švicarska)", + "Italian" : "Talijanski", + "Japanese (Japan)" : "Japanski (Japan)", + "Japanese" : "Japanski", + "Kabuverdianu (Cape Verde)" : "Kabuverdianu (Zelenortska Republika)", + "Kabuverdianu" : "Kabuverdianu", + "Kabyle (Algeria)" : "Kabilski (Alžir)", + "Kabyle" : "Kabilski", + "Kalaallisut (Greenland)" : "Kalaallisut (Grenland)", + "Kalaallisut" : "Kalaallisut", + "Kalenjin (Kenya)" : "Kalenjin (Kenija)", + "Kalenjin" : "Kalenjin", + "Kamba (Kenya)" : "Kamba (Kenija)", + "Kamba" : "Kamba", + "Kannada (India)" : "Kannada (Indija)", + "Kannada" : "Kannada", + "Kazakh (Cyrillic)" : "Kazaški (ćirilica)", + "Kazakh (Cyrillic, Kazakhstan)" : "Kazaški (ćirilica, Kazahstan)", + "Kazakh" : "Kazaški", + "Khmer (Cambodia)" : "Kmerski (Kambodža)", + "Khmer" : "Kmerski", + "Kikuyu (Kenya)" : "Kikuyu (Kenija)", + "Kikuyu" : "Kikuyu", + "Kinyarwanda (Rwanda)" : "Kinyarwanda (Ruanda)", + "Kinyarwanda" : "Kinyarwanda", + "Konkani (India)" : "Konkani (Indija)", + "Konkani" : "Konkani", + "Korean (South Korea)" : "Korejski (Južna Koreja)", + "Korean" : "Korejski", + "Koyra Chiini (Mali)" : "Koyra Chiini (Mali)", + "Koyra Chiini" : "Koyra Chiini", + "Koyraboro Senni (Mali)" : "Koyraboro Senni (Mali)", + "Koyraboro Senni" : "Koyraboro Senni", + "Langi (Tanzania)" : "Langi (Tanzanija)", + "Langi" : "Langi", + "Latvian (Latvia)" : "Latvijski (Latvija)", + "Latvian" : "Latvijski", + "Lithuanian (Lithuania)" : "Litavski (Litva)", + "Lithuanian" : "Litavski", + "Luo (Kenya)" : "Luo (Kenija)", + "Luo" : "Luo", + "Luyia (Kenya)" : "Luyia (Kenija)", + "Luyia" : "Luyia", + "Macedonian (Macedonia)" : "Makedonski (Makedonija)", + "Macedonian" : "Makedonski", + "Machame (Tanzania)" : "Machame (Tanzanija)", + "Machame" : "Machame", + "Makonde (Tanzania)" : "Makonde (Tanzanija)", + "Makonde" : "Makonde", + "Malagasy (Madagascar)" : "Malgaški (Madagaskar)", + "Malagasy" : "Malagaški", + "Malay (Brunei)" : "Malajski (Brunej)", + "Malay (Malaysia)" : "Malajski (Malezija)", + "Malay" : "Malajski", + "Malayalam (India)" : "Malajalamski (Indija)", + "Malayalam" : "Malajalamski", + "Maltese (Malta)" : "Malteški (Malta)", + "Maltese" : "Malteški", + "Manx (United Kingdom)" : "Manski (Ujedinjeno Kraljevstvo)", + "Manx" : "Manski", + "Marathi (India)" : "Marathi (Indija)", + "Marathi" : "Marathi", + "Masai (Kenya)" : "Masai (Kenija)", + "Masai (Tanzania)" : "Masai (Tanzanija)", + "Masai" : "Masai", + "Meru (Kenya)" : "Meru (Kenija)", + "Meru" : "Meru", + "Morisyen (Mauritius)" : "Mauricijski (Mauricijus)", + "Morisyen" : "Mauricijski", + "Nama (Namibia)" : "Nama (Namibija)", + "Nama" : "Nama", + "Nepali (India)" : "Nepalski (Indija)", + "Nepali (Nepal)" : "Nepalski (Nepal)", + "Nepali" : "Nepalski", + "North Ndebele (Zimbabwe)" : "Sjeverni ndebele (Zimbabve)", + "North Ndebele" : "Sjeverni ndebele", + "Norwegian Bokmål (Norway)" : "Norveški bokmål (Norveška)", + "Norwegian Bokmål" : "Norveški bokmål", + "Norwegian Nynorsk (Norway)" : "Norveški nynorsk (Norveška)", + "Norwegian Nynorsk" : "Norveški nynorsk", + "Nyankole (Uganda)" : "Nyankole (Uganda)", + "Nyankole" : "Nyankole", + "Oriya (India)" : "Orijski (Indija)", + "Oriya" : "Orijski", + "Oromo (Ethiopia)" : "Oromoški (Etiopija)", + "Oromo (Kenya)" : "Oromoški (Kenija)", + "Oromo" : "Oromoški", + "Pashto (Afghanistan)" : "Paštunski (Afganistan)", + "Pashto" : "Paštunski", + "Persian (Afghanistan)" : "Perzijski (Afganistan)", + "Persian (Iran)" : "Perzijski (Iran)", + "Persian" : "Perzijski", + "Polish (Poland)" : "Poljski (Poljska)", + "Polish" : "Poljski", + "Portuguese (Brazil)" : "Portugalski (Brazil)", + "Portuguese (Guinea-Bissau)" : "Portugalski (Gvineja Bissau)", + "Portuguese (Mozambique)" : "Portugalski (Mozambik)", + "Portuguese (Portugal)" : "Portugalski (Portugal)", + "Portuguese" : "Portugalski", + "Punjabi (Arabic)" : "Pandžapski (arapsko pismo)", + "Punjabi (Arabic, Pakistan)" : "Pandžapski (arapsko pismo, Pakistan)", + "Punjabi (Gurmukhi)" : "Pandžapski (gurmukhi)", + "Punjabi (Gurmukhi, India)" : "Pandžapski (gurmukhi, Indija)", + "Punjabi" : "Pandžapski", + "Romanian (Moldova)" : "Rumunjski (Moldavija)", + "Romanian (Romania)" : "Rumunjski (Rumunjska)", + "Romanian" : "Rumunjski", + "Romansh (Switzerland)" : "Retroromanski (Švicarska)", + "Romansh" : "Retroromanski", + "Rombo (Tanzania)" : "Rombo (Tanzanija)", + "Rombo" : "Rombo", + "Russian (Moldova)" : "Ruski (Moldavija)", + "Russian (Russia)" : "Ruski (Rusija)", + "Russian (Ukraine)" : "Ruski (Ukrajina)", + "Russian" : "Ruski", + "Rwa (Tanzania)" : "Rwa (Tanzanija)", + "Rwa" : "Rwa", + "Samburu (Kenya)" : "Samburu (Kenija)", + "Samburu" : "Samburu", + "Sango (Central African Republic)" : "Sango (Srednjoafrička Republika)", + "Sango" : "Sango", + "Sena (Mozambique)" : "Sena (Mozambik)", + "Sena" : "Sena", + "Serbian (Cyrillic)" : "Srpski (ćirilica)", + "Serbian (Cyrillic, Bosnia and Herzegovina)" : "Srpski (ćirilica, Bosna i Hercegovina)", + "Serbian (Cyrillic, Montenegro)" : "Srpski (ćirilica, Crna Gora)", + "Serbian (Cyrillic, Serbia)" : "Srpski (ćirilica, Srbija)", + "Serbian (Latin)" : "Srpski (latinica)", + "Serbian (Latin, Bosnia and Herzegovina)" : "Srpski (latinica, Bosna i Hercegovina)", + "Serbian (Latin, Montenegro)" : "Srpski (latinica, Crna Gora)", + "Serbian (Latin, Serbia)" : "Srpski (latinica, Srbija)", + "Serbian" : "Srpski", + "Shona (Zimbabwe)" : "Shona (Zimbabve)", + "Shona" : "Shona", + "Sichuan Yi (China)" : "Nuosu (Kina)", + "Sichuan Yi" : "Nuosu", + "Sinhala (Sri Lanka)" : "Singalski (Šri Lanka)", + "Sinhala" : "Singalski", + "Slovak (Slovakia)" : "Slovački (Slovačka)", + "Slovak" : "Slovački", + "Slovenian (Slovenia)" : "Slovenski (Slovenija)", + "Slovenian" : "Slovenski", + "Soga (Uganda)" : "Soga (Uganda)", + "Soga" : "Soga", + "Somali (Djibouti)" : "Somalijski (Džibuti)", + "Somali (Ethiopia)" : "Somalijski (Etiopija)", + "Somali (Kenya)" : "Somalijski (Kenija)", + "Somali (Somalia)" : "Somalijski (Somalija)", + "Somali" : "Somalijski", + "Spanish (Argentina)" : "Španjolski (Argentina)", + "Spanish (Bolivia)" : "Španjolski (Bolivija)", + "Spanish (Chile)" : "Španjolski (Čile)", + "Spanish (Colombia)" : "Španjolski (Kolumbija)", + "Spanish (Costa Rica)" : "Španjolski (Kostarika)", + "Spanish (Dominican Republic)" : "Španjolski (Dominikanska Republika)", + "Spanish (Ecuador)" : "Španjolski (Ekvador)", + "Spanish (El Salvador)" : "Španjolski (El Salvador)", + "Spanish (Equatorial Guinea)" : "Španjolski (Ekvatorijalna Gvineja)", + "Spanish (Guatemala)" : "Španjolski (Gvatemala)", + "Spanish (Honduras)" : "Španjolski (Honduras)", + "Spanish (Latin America)" : "Španjolski (Latinska Amerika)", + "Spanish (Mexico)" : "Španjolski (Meksiko)", + "Spanish (Nicaragua)" : "Španjolski (Nikaragva)", + "Spanish (Panama)" : "Španjolski (Panama)", + "Spanish (Paraguay)" : "Španjolski (Paragvaj)", + "Spanish (Peru)" : "Španjolski (Peru)", + "Spanish (Puerto Rico)" : "Španjolski (Portoriko)", + "Spanish (Spain)" : "Španjolski (Španjolska)", + "Spanish (United States)" : "Španjolski (Sjedinjene Američke Države)", + "Spanish (Uruguay)" : "Španjolski (Urugvaj)", + "Spanish (Venezuela)" : "Španjolski (Venezuela)", + "Spanish" : "Španjolski", + "Swahili (Kenya)" : "Svahili (Kenija)", + "Swahili (Tanzania)" : "Svahili (Tanzanija)", + "Swahili" : "Svahili", + "Swedish (Finland)" : "Švedski (Finska)", + "Swedish (Sweden)" : "Švedski (Švedska)", + "Swedish" : "Švedski", + "Swiss German (Switzerland)" : "Švicarski njemački (Švicarska)", + "Swiss German" : "Švicarski njemački", + "Tachelhit (Latin)" : "Tachelhit (latinica)", + "Tachelhit (Latin, Morocco)" : "Tachelhit (latinica, Maroko)", + "Tachelhit (Tifinagh)" : "Tachelhit (tifinagh)", + "Tachelhit (Tifinagh, Morocco)" : "Tachelhit (tifinagh, Maroko)", + "Tachelhit" : "Tachelhit", + "Taita (Kenya)" : "Taita (Kenija)", + "Taita" : "Taita", + "Tamil (India)" : "Tamilski (Indija)", + "Tamil (Sri Lanka)" : "Tamilski (Šri Lanka)", + "Tamil" : "Tamilski", + "Telugu (India)" : "Telugu (Indija)", + "Telugu" : "Telugu", + "Teso (Kenya)" : "Teso (Kenija)", + "Teso (Uganda)" : "Teso (Uganda)", + "Teso" : "Teso", + "Thai (Thailand)" : "Tajski (Tajland)", + "Thai" : "Tajski", + "Tibetan (China)" : "Tibetski (Kina)", + "Tibetan (India)" : "Tibetski (Indija)", + "Tibetan" : "Tibetski", + "Tigrinya (Eritrea)" : "Tigrinja (Eritreja)", + "Tigrinya (Ethiopia)" : "Tigrinja (Etiopija)", + "Tigrinya" : "Tigrinja", + "Tonga (Tonga)" : "Tonga (Tonga)", + "Tonga" : "Tonga", + "Turkish (Turkey)" : "Turski (Turska)", + "Turkish" : "Turski", + "Ukrainian (Ukraine)" : "Ukrajinski (Ukrajina)", + "Ukrainian" : "Ukrajinski", + "Urdu (India)" : "Urdu (Indija)", + "Urdu (Pakistan)" : "Urdu (Pakistan)", + "Urdu" : "Urdu", + "Uzbek (Arabic)" : "Uzbečki (arapsko pismo)", + "Uzbek (Arabic, Afghanistan)" : "Uzbečki (arapsko pismo, Afganistan)", + "Uzbek (Cyrillic)" : "Uzbečki (ćirilica)", + "Uzbek (Cyrillic, Uzbekistan)" : "Uzbečki (ćirilica, Uzbekistan)", + "Uzbek (Latin)" : "Uzbečki (latinica)", + "Uzbek (Latin, Uzbekistan)" : "Uzbečki (latinica, Uzbekistan)", + "Uzbek" : "Uzbečki", + "Vietnamese (Vietnam)" : "Vijetnamski (Vijetnam)", + "Vietnamese" : "Vijetnamski", + "Vunjo (Tanzania)" : "Vunjo (Tanzanija)", + "Vunjo" : "Vunjo", + "Welsh (United Kingdom)" : "Velški (Ujedinjeno Kraljevstvo)", + "Welsh" : "Velški", + "Yoruba (Nigeria)" : "Jorupski (Nigerija)", + "Yoruba" : "Jorupski", + "Zulu (South Africa)" : "Zulu (Južna Afrika)", + "Zulu" : "Zulu", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Dvofaktorska autentifikacija može se primijeniti na sve\tkorisnike i određene grupe. Ako nisu konfigurirali davatelje usluge dvofaktorske autentifikacije, neće se moći prijaviti u sustav.", + "Enforce two-factor authentication" : "Primijeni dvofaktorsku autentifikaciju", + "Limit to groups" : "Ograniči na grupe", + "Enforcement of two-factor authentication can be set for certain groups only." : "Primjena dvofaktorske autentifikacije može se postaviti samo za određene grupe.", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "Dvofaktorska autentifikacija primjenjuje se na sve\tčlanove sljedećih grupa.", + "Enforced groups" : "Obuhvaćene grupe", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "Dvofaktorska autentifikacija ne primjenjuje se na\tčlanove sljedećih grupa.", + "Excluded groups" : "Izuzete grupe", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "Nakon odabira grupa koje će biti obuhvaćene/izuzete, primjenjuje se sljedeća logika za utvrđivanje je li 2FA omogućen za određenog korisnika: ako nije odabrana nijedna grupa, 2FA je omogućen za sve osim za članove izuzetih grupa. Ako su odabrane određene grupe, 2FA je omogućen samo za sve članove tih grupa. Ako je korisnik član odabrane i izuzete grupe, odabrana grupa ima prednost i 2FA se primjenjuje.", + "Save changes" : "Spremi promjene", + "Marked for remote wipe" : "Označeno za udaljeno brisanje", + "Device settings" : "Postavke uređaja", + "Allow filesystem access" : "Omogući pristup datotečnom sustavu", + "Rename" : "Preimenuj", + "Revoke" : "Opozovi", + "Wipe device" : "Izbriši sve s uređaja", + "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Opozivanje ovog tokena može spriječiti brisanje sadržaja s vašeg uređaja ako brisanje nije pokrenuto.", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome za Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Aplikacija Nextcloud za iOS", + "Nextcloud Android app" : "Aplikacija Nextcloud za Android", + "Nextcloud Talk for iOS" : "Nextcloud Talk za iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk za Android", + "Sync client - {os}" : "Sinkroniziraj klijenta – {os}", + "This session" : "Ova sesija", + "Device" : "Uređaj", + "Last activity" : "Posljednja aktivnost", + "Devices & sessions" : "Uređaji i sesije", + "Web, desktop and mobile clients currently logged in to your account." : "Web, računalni i mobilni klijenti trenutno prijavljeni u vaš račun.", + "Do you really want to wipe your data from this device?" : "Želite li zaista izbrisati podatke s ovog uređaja?", + "Confirm wipe" : "Potvrdi brisanje", + "Error while creating device token" : "Pogreška pri stvaranju tokena za uređaj", + "Error while updating device token scope" : "Pogreška pri ažuriranju raspona tokena za uređaj", + "Error while updating device token name" : "Pogreška pri ažuriranju naziva tokena za uređaja", + "Error while deleting the token" : "Pogreška pri brisanju tokena", + "Error while wiping the device with the token" : "Pogreška pri brisanju sadržaja uređaja tokenom", + "App name" : "Naziv aplikacije", + "Create new app password" : "Stvori novu zaporku za aplikaciju", + "Use the credentials below to configure your app or device." : "Upotrijebite vjerodajnice navedene u nastavku za konfiguriranje aplikacije ili uređaja.", + "For security reasons this password will only be shown once." : "Iz sigurnosnih razloga ta će se zaporka prikazati samo jednom.", + "Username" : "Korisničko ime", + "Password" : "Zaporka", + "Done" : "Gotovo", + "Show QR code for mobile apps" : "Prikaži QR kôd za mobilne aplikacije", + "Copied!" : "Kopirano!", + "Copy" : "Kopiraj", + "Could not copy app password. Please copy it manually." : "Kopiranje zaporke aplikacije nije uspjelo. Kopirajte je ručno.", + "This app is supported via your current Nextcloud subscription." : "Aplikacija je podržana unutar vaše trenutne pretplate na Nextcloud.", + "Supported" : "Podržano", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Službene aplikacije razvijaju članovi zajednice. One nude osnovnu funkcionalnost i spremne su za produkciju.", + "Official" : "Službeno", + "by" : "od", + "Update to {version}" : "Ažuriraj na {version}", + "Remove" : "Ukloni", + "Disable" : "Onemogući", + "All" : "Sve", + "Limit app usage to groups" : "Ograničite primjenu aplikacije na grupe", + "No results" : "Nema rezultata", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Ovoj aplikaciji nije dodijeljena najmanja inačica Nextclouda. To će biti pogreška u budućnosti.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Ovoj aplikaciji nije dodijeljena najveća inačica Nextclouda. To će biti pogreška u budućnosti.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Aplikaciju nije moguće instalirati jer nisu ispunjene sljedeće ovisnosti:", + "View in store" : "Pogledajte u trgovini", + "Visit website" : "Posjeti web-mjesto", + "Report a bug" : "Prijavi pogrešku", + "User documentation" : "Dokumentacija za korisnike", + "Admin documentation" : "Dokumentacija za administratore", + "Developer documentation" : "Dokumentacija za razvojne programere", + "Update to {update}" : "Ažuriraj na {update}", + "Results from other categories" : "Rezultati iz drugih kategorija", + "No apps found for your version" : "Nije pronađena nijedna aplikacija za vašu inačicu", + "Disable all" : "Onemogući sve", + "Enable all" : "Omogući sve", + "Download and enable" : "Preuzmi i omogući", + "Enable" : "Omogući", + "Enable untested app" : "Omogući neprovjerenu aplikaciju", + "The app will be downloaded from the app store" : "Aplikacija će se preuzeti iz trgovine aplikacijama", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Ova aplikacija nije označena kao kompatibilna s vašom inačicom Nextclouda. Ako odlučite nastaviti, moći ćete instalirati aplikaciju. Imajte na umu da aplikacija možda neće raditi kako očekujete.", + "You do not have permissions to see the details of this user" : "Nemate dopuštenja za prikaz pojedinosti ovog korisnika", + "The backend does not support changing the display name" : "Pozadinski sustav ne podržava promjenu imena za prikaz", + "New password" : "Nova zaporka", + "Add user in group" : "Dodaj korisnika u grupu", + "Set user as admin for" : "Postavi korisnika kao administratora za", + "Select user quota" : "Odaberi kvotu korisnika", + "No language set" : "Nije postavljen jezik", + "Never" : "Nikad", + "Delete user" : "Izbriši korisnika", + "Wipe all devices" : "Izbriši podatke sa svih uređaja", + "Disable user" : "Onemogući korisnika", + "Enable user" : "Omogući korisnika", + "Resend welcome email" : "Ponovno pošalji poruku dobrodošlice", + "{size} used" : "Iskorišteno {size}", + "Welcome mail sent!" : "Poslana poruka dobrodošlice!", + "Display name" : "Ime za prikaz", + "Email" : "E-pošta", + "Group admin for" : "Administrator grupe za", + "Quota" : "Kvota", + "Language" : "Jezik", + "Storage location" : "Mjesto pohrane", + "User backend" : "Korisnički pozadinski sustav", + "Last login" : "Posljednja prijava", + "Will be autogenerated" : "Automatski će se generirati", + "Default language" : "Zadani jezik", + "Add a new user" : "Dodaj novog korisnika", + "No users in here" : "Ovdje nema korisnika", + "Default quota" : "Zadana kvota", + "Password change is disabled because the master key is disabled" : "Onemogućeno je mijenjanje zaporke jer je onemogućen glavni ključ", + "Common languages" : "Česti jezici", + "All languages" : "Svi jezici", + "Your apps" : "Vaše aplikacije", + "Active apps" : "Aktivne aplikacije", + "Disabled apps" : "Onemogućene aplikacije", + "Updates" : "Ažuriranja", + "App bundles" : "Paketi aplikacija", + "{license}-licensed" : "Licencirano prema {license}", + "New user" : "Novi korisnik", + "Default quota:" : "Zadana kvota:", + "Select default quota" : "Odaberi zadanu kvotu", + "Show Languages" : "Prikaži jezike", + "Show last login" : "Prikaži posljednju prijavu", + "Show user backend" : "Prikaži korisnički pozadinski sustav", + "Show storage path" : "Prikaži put pohrane", + "You are about to remove the group {group}. The users will NOT be deleted." : "Izbrisat ćete grupu {group}. Korisnici NEĆE biti izbrisani.", + "Please confirm the group removal " : "Potvrdite uklanjanje grupe ", + "Remove group" : "Ukloni grupu", + "Admins" : "Administratori", + "Disabled users" : "Onemogućeni korisnici", + "Everyone" : "Svi", + "Add group" : "Dodaj grupu", + "An error occured during the request. Unable to proceed." : "Došlo je do pogreške tijekom rješavanja zahtjeva. Nije moguće nastaviti.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Aplikacija je omogućena, ali je treba ažurirati. Za 5 sekundi bit ćete preusmjereni na stranicu za ažuriranje.", + "App update" : "Ažuriranje aplikacije", + "Error: This app can not be enabled because it makes the server unstable" : "Pogreška: ovu se aplikaciju ne može omogućiti jer poslužitelj može postati nestabilan", + "SSL Root Certificates" : "Korijenske vjerodajnice SSL-a", + "Common Name" : "Opći naziv", + "Valid until" : "Vrijedi do", + "Issued By" : "Izdavatelj", + "Valid until %s" : "Vrijedi do %s", + "Import root certificate" : "Uvezi korijensku vjerodajnicu", + "Administrator documentation" : "Dokumentacija za administratora", + "Documentation" : "Dokumentacija", + "Forum" : "Forum", + "None" : "Nema", + "Login" : "Prijava", + "Plain" : "Čisti tekst", + "NT LAN Manager" : "NT LAN Manager", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Poslužitelj e-pošte", + "Open documentation" : "Otvori dokumentaciju", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Važno je postaviti ovaj poslužitelj kako biste mogli slati poruke e-pošte u vezi s resetiranjem zaporke i obavijesti.", + "Send mode" : "Način slanja", + "Encryption" : "Šifriranje", + "Sendmail mode" : "Način slanja pošte", + "From address" : "Adresa pošiljatelja", + "mail" : "pošta", + "Authentication method" : "Način autentifikacije", + "Authentication required" : "Potrebna autentifikacija", + "Server address" : "Adresa poslužitelja", + "Port" : "Port", + "Credentials" : "Vjerodajnice", + "SMTP Username" : "Korisničko ime za SMTP", + "SMTP Password" : "SMTP zaporka", + "Save" : "Spremi", + "Test email settings" : "Ispitaj postavke e-pošte", + "Send email" : "Pošalji poruku e-pošte", + "Security & setup warnings" : "Upozorenja o sigurnosti i postavljanju", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Pravilna konfiguracija iznimno je važna za sigurnost i performanse vaše instance. Kako bismo vam pomogli pravilno konfigurirati sustav, provest ćemo neke automatske provjere. Za više informacija pogledajte navedenu dokumentaciju.", + "All checks passed." : "Sve su provjere uspješno dovršene.", + "There are some errors regarding your setup." : "Postoje neke pogreške u vezi s vašim postavom.", + "There are some warnings regarding your setup." : "Postoje neka upozorenja u vezi s vašim postavom.", + "Checking for system and security issues." : "Provjera sustava i sigurnosnih postavki.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Pažljivo pročitajte <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">upute za instalaciju ↗</a> i potražite postoje li ikakve pogreške ili upozorenja u <a href=\"%2$s\">zapisima</a>.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Provjerite sigurnost svojeg Nextclouda s pomoću <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">sigurnosnog skeniranja ↗</a>.", + "Version" : "Inačica", + "Two-Factor Authentication" : "Dvofaktorska autentifikacija", + "Server-side encryption" : "Šifriranje na poslužitelju", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Šifriranje na poslužitelju omogućuje šifriranje datoteka koje su otpremljene na ovaj poslužitelj. Ovaj postupak može narušiti performanse sustava pa ga omogućite samo ako je potrebno.", + "Enable server-side encryption" : "Omogući šifriranje na poslužitelju", + "Please read carefully before activating server-side encryption: " : "Pažljivo pročitajte sljedeće prije aktiviranja šifriranja na poslužitelju: ", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Ako je šifriranje na poslužitelju omogućeno, sve datoteke koje se od tog trenutka otpreme na poslužitelj bit će šifrirane u stanju mirovanja na poslužitelju. Kasnije možete onemogućiti šifriranje ako aktivni modul za šifriranje podržava tu funkciju i ispunjeni su svi preduvjeti (npr. postavljanje ključa za oporavak).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Šifriranje samo po sebi ne jamči sigurnost sustava. Pogledajte dokumentaciju za više informacija o načinu rada aplikacije za šifriranje i slučajevima korištenja.", + "Be aware that encryption always increases the file size." : "Imajte na umu da šifriranje uvijek povećava veličinu datoteke.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Uvijek je dobra ideja redovito izrađivati sigurnosne kopije podataka; ako upotrebljavate šifriranje, obavezno sigurnosno kopirajte ključeve za šifriranje zajedno sa svojim podacima.", + "This is the final warning: Do you really want to enable encryption?" : "Ovo je posljednje upozorenje: želite li zaista omogućiti šifriranje?", + "Enable encryption" : "Omogući šifriranje", + "No encryption module loaded, please enable an encryption module in the app menu." : "Nije učitan modul za šifriranje, omogućite modul za šifriranje u izborniku aplikacije.", + "Select default encryption module:" : "Odaberi zadani modul za šifriranje:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Morate prenijeti svoje ključeve za šifriranje sa stare inačice modula za šifriranje (ownCloud <= 8.0) na novu. Omogućite „zadani modul za šifriranje” i pokrenite 'occ encryption:migrate’.", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Morate prenijeti svoje ključeve za šifriranje sa stare inačice modula za šifriranje (ownCloud <= 8.0) na novu.", + "Start migration" : "Pokreni prijenos", + "Background jobs" : "Pozadinski zadaci", + "Last job ran %s." : "Posljednji zadatak pokrenut je %s.", + "Last job execution ran %s. Something seems wrong." : "Posljednji zadatak izvršen je %s. Čini se da nešto nije u redu.", + "Background job didn’t run yet!" : "Pozadinski zadatak još nije pokrenut!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Kako biste osigurali optimalne performanse važno je pravilno konfigurirati pozadinske zadatke. Kod većih instanci preporučujemo korištenje postavke ‘Cron’. Više informacija možete pronaći u odgovarajućoj dokumentaciji.", + "Pick background job setting" : "Odaberite postavku pozadinskog zadatka", + "Execute one task with each page loaded" : "Izvršite jedan zadatak sa svakom učitanom stranicom", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php registriran je na servisu webcron za pozivanje datoteke cron.php svakih 5 minuta putem HTTP-a.", + "Use system cron service to call the cron.php file every 5 minutes." : "Koristite se sistemskim servisom cron za pozivanje datoteke cron.php svakih 5 minuta.", + "The cron.php needs to be executed by the system user \"%s\"." : "Cron.php treba izvršiti korisnik „%s”.", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Za izvršavanje navedenog postupka potrebno je proširenje PHP POSIX. Pogledajte {linkstart}dokumentaciju PHP-a{linkend} za više informacija.", + "Sharing" : "Dijeljenje", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Administrator možete detaljnije podešavati dijeljenja. Pogledajte odgovarajuću dokumentaciju za više informacija.", + "Allow apps to use the Share API" : "Dopusti aplikacijama korištenje API-ja za dijeljenje", + "Allow users to share via link" : "Dopusti korisnicima dijeljenje putem poveznice", + "Allow public uploads" : "Dopusti javne otpreme", + "Always ask for a password" : "Uvijek traži zaporku", + "Enforce password protection" : "Nametni zaštitu zaporkom", + "Set default expiration date" : "Postavi zadani datum isteka", + "Expire after " : "Istek nakon", + "days" : "dana", + "Enforce expiration date" : "Primijeni datum isteka", + "Allow resharing" : "Dopusti ponovno dijeljenje", + "Allow sharing with groups" : "Dopusti dijeljenje s grupama", + "Restrict users to only share with users in their groups" : "Ograniči korisnike na dijeljenje samo s korisnicima unutar svoje grupe", + "Exclude groups from sharing" : "Izuzmi grupe iz dijeljenja", + "These groups will still be able to receive shares, but not to initiate them." : "Ove će grupe još uvijek moći primati dijeljene sadržaje, ali ih neće moći pokrenuti.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Dopusti automatsko dovršavanje korisničkog imena u dijaloškom okviru za dijeljenje. Ako je ova postavka onemogućena, potrebno je unijeti puno korisničko ime ili adresu e-pošte.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Prikaži tekst izjave o odricanju od odgovornosti na stranici za otpremanje javnih poveznica. (Prikazuje se samo kad je popis datoteka skriven.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Ovaj će tekst biti prikazan na stranici za otpremanje javnih poveznica kad je popis datoteka skriven.", + "Default share permissions" : "Zadana dopuštenja za dijeljenje", + "Personal" : "Osobno", + "Administration" : "Administracija", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "{githubopen}Izvorni kôd{linkclose} je razvila {communityopen}Nextcloudova zajednica korisnika{linkclose} i licenciran je sukladno {Licenseopen}AGPL-u{linkclose}.", + "Like our Facebook page" : "Pratite našu Facebook stranicu", + "Follow us on Twitter" : "Pratite nas na Twitteru", + "Follow us on Mastodon" : "Pratite nas na Mastodonu", + "Check out our blog" : "Pogledajte naš blog", + "Subscribe to our newsletter" : "Pretplatite se na naše obavijesti", + "Profile picture" : "Profilna slika", + "Upload new" : "Otpremi novu", + "Select from Files" : "Odaberi iz datoteka", + "Remove image" : "Ukloni sliku", + "png or jpg, max. 20 MB" : "png ili jpg, maks. 20 MB", + "Picture provided by original account" : "Slika s izvornog računa", + "Cancel" : "Odustani", + "Choose as profile picture" : "Odaberi kao profilnu sliku", + "Details" : "Pojedinosti", + "You are a member of the following groups:" : "Član ste sljedećih grupa:", + "You are using <strong>%s</strong>" : "Koristite <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Koristite <strong>%1$s</strong> od <strong>%2$s</strong> (<strong>%3$s% %</strong>)", + "Full name" : "Puno ime", + "No display name set" : "Nije postavljeno ime za prikaz", + "Your email address" : "Vaša adresa e-pošte", + "No email address set" : "Nije postavljena adresa e-pošte", + "For password reset and notifications" : "Za resetiranje zaporke i obavijesti", + "Phone number" : "Broj telefona", + "Your phone number" : "Vaš broj telefona", + "Address" : "Adresa", + "Your postal address" : "Vaša poštanska adresa", + "Website" : "Web-mjesto", + "It can take up to 24 hours before the account is displayed as verified." : "Potvrđivanje računa može potrajati i do 24 sata.", + "Link https://…" : "Poveznica https://...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Twitter ime @…", + "Help translate" : "Pomozite prevesti", + "Locale" : "Lokacija", + "Current password" : "Trenutna zaporka", + "Change password" : "Promijeni zaporku", + "Use a second factor besides your password to increase security for your account." : "Koristite se i drugim faktorom pored zaporke kako biste povećali sigurnost svog računa.", + "Disconnect" : "Odspoji", + "Not supported!" : "Nije podržano!", + "Press ⌘-C to copy." : "Pritisnite ⌘-C za kopiranje.", + "Press Ctrl-C to copy." : "Pritisnite Ctrl-C za kopiranje.", + "Error while loading browser sessions and device tokens" : "Pogreška prilikom učitavanja sesija preglednika i tokena uređaja", + "Store credentials" : "Pohrani vjerodajnice", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php registriran je na servisu webcron za pozivanje datoteke cron.php svakih 15 minuta putem HTTP-a.", + "Use system cron service to call the cron.php file every 15 minutes." : "Koristite se sistemskim servisom cron za pozivanje datoteke cron.php svakih 15 minuta.", + "Follow us on Google+" : "Pratite nas na Google+" +},"pluralForm" :"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;" +} \ No newline at end of file diff --git a/apps/settings/l10n/hu.js b/apps/settings/l10n/hu.js new file mode 100644 index 00000000000..32746d07b3a --- /dev/null +++ b/apps/settings/l10n/hu.js @@ -0,0 +1,365 @@ +OC.L10N.register( + "settings", + { + "{actor} added you to group {group}" : "{actor} hozzá lett adva a {group} csoporthoz", + "You added {user} to group {group}" : "Hozzáadta {user} felhasználót a(z) {group} csoporthoz", + "{actor} added {user} to group {group}" : "{actor} hozzáadta {user} felhasználót a(z) {group} csoporthoz", + "An administrator added you to group {group}" : "A rendszergazda hozzáadta a(z) {group} csoporthoz", + "An administrator added {user} to group {group}" : "A rendszergazda hozzáadta {user} felhasználót a(z) {group} csoporthoz", + "{actor} removed you from group {group}" : "{actor} el lett távolítva a(z) {group} csoportból", + "You removed {user} from group {group}" : "Eltávolította {user} felhasználót a(z) {group} csoportból", + "{actor} removed {user} from group {group}" : "{actor} eltávolította {user} felhasználót a(z) {group} csoportból", + "An administrator removed you from group {group}" : "A rendszergazda eltávolította a(z) {group} csoportból", + "An administrator removed {user} from group {group}" : "A rendszergazda eltávolította {user} felhasználót a(z) {group} csoportból", + "Your <strong>group memberships</strong> were modified" : "A <strong>csoporttagsága</strong> megváltozott", + "{actor} changed your password" : "{actor} módosította a jelszavát", + "You changed your password" : "Módosította a jelszavát", + "Your password was reset by an administrator" : "A jelszavát visszaállította egy rendszergazda", + "{actor} changed your email address" : "{actor} megváltoztatta az e-mail címét", + "You changed your email address" : "Megváltoztatta az e-mail címét", + "Your email address was changed by an administrator" : "Az e-mail címét megváltoztatta egy rendszergazda", + "You created app password \"{token}\"" : "Létrehozta a(z) „{token}” alkalmazásjelszót", + "You deleted app password \"{token}\"" : "Törölte a(z) „{token}” alkalmazásjelszót", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Átnevezted a(z) „{token}” alkalmazásjelszót erre: „{newToken}”", + "You granted filesystem access to app password \"{token}\"" : "Fájlrendszer-hozzáférést adott a(z) „{token}” alkalmazásjelszónak", + "You revoked filesystem access from app password \"{token}\"" : "Visszavonta a(z) „{token}” alkalmazásjelszó fájlrendszer-hozzáférését", + "Security" : "Biztonság", + "You successfully logged in using two-factor authentication (%1$s)" : "Sikeresen bejelentkezett kétfaktoros hitelesítés használatával (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Egy kétfaktoros bejelentkezési kísérlet sikertelen volt (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "A <strong>jelszavad </strong> vagy <strong>email címed</strong> megváltozott", + "Couldn't remove app." : "Az alkalmazást nem sikerült eltávolítani.", + "Couldn't update app." : "Az alkalmazás frissítése nem sikerült.", + "Wrong password" : "Hibás jelszó", + "Saved" : "Elmentve", + "No user supplied" : "Nincs megadva felhasználó", + "Unable to change password" : "Nem sikerült megváltoztatni a jelszót", + "Authentication error" : "Azonosítási hiba", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Kérjük, adjon meg egy rendszergazdai visszaállító jelszót; különben, az összes felhasználó adata eltűnik.", + "Wrong admin recovery password. Please check the password and try again." : "Hibás rendszergazda helyreállítási jelszó. Ellenőrizze a jelszót és próbálja újra!", + "Backend doesn't support password change, but the user's encryption key was updated." : "A háttérszolgáltatás nem támogatja a jelszómódosítást, de a titkosítási kulcs frissítve lett.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "alkalmazások telepítése és frissítése az alkalmazás tárból vagy Szövetséges Felhő Megosztásból", + "Federated Cloud Sharing" : "Megosztás Egyesített Felhőben", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL elavult %1$s verziót (%2$s) használ. Kérlek, frissítsd az operációs rendszert, vagy egyes funkciók (mint például a %3$s) megbízhatatlanul fognak működni.", + "Invalid SMTP password." : "Érvénytelen SMTP jelszó", + "Email setting test" : "E-mail beállítás tesztelése", + "Well done, %s!" : "Szép munka, %s!", + "If you received this email, the email configuration seems to be correct." : "Ha ezt a levelet látod, a beállításaid megfelelőnek tűnnek.", + "Email could not be sent. Check your mail server log" : "E-mail nem elküldhető. Ellenőrizd a mailszerver naplójában", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Hiba történt az e-mail küldésekor. Kérlek ellenőrizd a beállításokat! (Hiba: %s)", + "You need to set your user email before being able to send test emails." : "Előbb meg kell adnia az e-mail címét, mielőtt tesztelni tudná az e-mail küldést.", + "Invalid mail address" : "Érvénytelen e-mail cím", + "Settings saved" : "Beállítások elmentve", + "Unable to change full name" : "Nem sikerült megváltoztatni a teljes nevét", + "Unable to change email address" : "Nem lehet megváltoztatni az e-mail címet", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "A twitter fiók megerősítésére tweeteld ki az alábbit. (Kérünk pontosan így, sortörések nélkül tweeteld)", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "A weboldalad ellenőrzése érdekében helyezd el a következő tartalmat a '.well-known/CloudIdVerificationCode.txt'-ba. (figyelj arra, hogy az egész szöveg egy sorban legyen):", + "%1$s changed your password on %2$s." : "%1$smegváltoztatta a jelszavadat%2$s-on.", + "Your password on %s was changed." : "A jelszavad %s-on megváltozott.", + "Your password on %s was reset by an administrator." : "A jelszavad %s-on visszaállította egy rendszergazda.", + "Password for %1$s changed on %2$s" : "%1$s jelszava megváltozott %2$s-on", + "Password changed for %s" : "%s jelszava módosítva", + "If you did not request this, please contact an administrator." : "Ha ezt nem te kérted, lépj kapcsolatba egy rendszergazdával.", + "Your email address on %s was changed." : "Az e-mail címed megváltozott %s-on.", + "Your email address on %s was changed by an administrator." : "Az e-mail címedet %s-on megváltoztatta egy rendszergazda.", + "Email address for %1$s changed on %2$s" : "%1$s e-mail címe megváltozott%2$s-on", + "Email address changed for %s" : "%s e-mail címe módosítva", + "The new email address is %s" : "Az új e-mail cím %s", + "Your %s account was created" : "%s fiók létrehozva", + "Welcome aboard" : "Üdv a fedélzeten", + "Welcome aboard %s" : "Üdv a fedélzeten %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Üdv a(z) %s hozzáférésedben. Hozzáadhatod, védheted, megoszthatod adataidat.", + "Your username is: %s" : "A felhasználóneved: %s", + "Set your password" : "Állítsd be a jelszabad", + "Go to %s" : "Menj ide: %s", + "Install Client" : "Kliens telepítés", + "Logged in user must be a subadmin" : "Nem rendszergazda felhasználóként kell bejelentkezzen", + "Create" : "Létrehozás", + "Change" : "Módosít", + "Delete" : "Törlés", + "Share" : "Megosztás", + "Unlimited" : "Korlátlan", + "Verifying" : "Ellenőrzés", + "Verifying …" : "Ellenőrzés...", + "Verify" : "Ellenőrzés", + "Migration in progress. Please wait until the migration is finished" : "Migráció folyamatban. Kérlek várj, míg a migráció befejeződik.", + "Migration started …" : "Migráció elindítva ...", + "Not saved" : "Nincs mentve", + "Sending…" : "Küldés...", + "Email sent" : "Az e-mail elküldve!", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Hiba történt! Kérem töltsön fel egy, ASCII karakterekkel kódolt PEM tanusítványt!", + "Valid until {date}" : "Érvényes: {date}", + "Local" : "Helyi", + "Private" : "Privát", + "Only visible to local users" : "Csak a helyi felhasználók láthatják", + "Only visible to you" : "Csak te láthatod", + "Contacts" : "Névjegyek", + "Visible to local users and to trusted servers" : "Helyi felhasználók és megbízható szerverek láthatják", + "Public" : "Nyilvános", + "Will be synced to a global and public address book" : "Globális és nyilvános névjegyek számára lesz szinkronizálva", + "Very weak password" : "Nagyon gyenge jelszó", + "Weak password" : "Gyenge jelszó", + "So-so password" : "Nem túl jó jelszó", + "Good password" : "Jó jelszó", + "Strong password" : "Erős jelszó", + "An error occurred while changing your language. Please reload the page and try again." : "Hiba lépett fel nyelvváltás közben. Kérlek töltsd újra az oldalt és próbáld ismét.", + "An error occurred while changing your locale. Please reload the page and try again." : "Hiba a hely váltása közben. Kérlek töltsd újra az oldalt és próbáld meg ismét.", + "Select a profile picture" : "Válasszon profilképet!", + "Week starts on {fdow}" : "Hét kezdete {fdow}", + "Groups" : "Csoportok", + "Group list is empty" : "Csoport lista üres", + "Unable to retrieve the group list" : "Csoportlista betöltése sikertelen", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "A kétfaktoros hitelesítés minden felhasználóra vagy bizonyos csoportokra követelhető meg. Ha a kétfaktoros hitelesítés nincs nekik beállítva, nem fognak tudni belépni a rendszerbe.", + "Enforce two-factor authentication" : "Kétfaktoros hitelesítés megkövetelése", + "Limit to groups" : "Csoportokra korlátozás", + "Enforcement of two-factor authentication can be set for certain groups only." : "A kétfaktoros hitelesítés megkövetelése csak bizonyos csoportokra állítható be.", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "A kétfaktoros hitelesítés meg van követelve a következő csoport minden tagjára.", + "Enforced groups" : "Kötelező csoportok", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "A kétfaktoros hitelesítés meg van nincs megkövetelve a következő csoport tagjaira.", + "Excluded groups" : "Kizárt csoportok", + "Save changes" : "Változások mentése", + "Device settings" : "Eszköz beállítások", + "Allow filesystem access" : "Fájlrendszer hozzáférés engedélyezése", + "Rename" : "Átnevez", + "Revoke" : "Visszavonás", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome for Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Nextcloud iOS alkalmazás", + "Nextcloud Android app" : "Nextcloud Android alkalmazás", + "Nextcloud Talk for iOS" : "Nextcloud Talk iOS-re", + "Nextcloud Talk for Android" : "Nextcloud Talk Android-ra", + "Sync client - {os}" : "Szinkron kliens - {os}", + "This session" : "Ez a munkamenet", + "Device" : "Eszköz", + "Last activity" : "Utolsó tevékenység", + "Devices & sessions" : "Eszközök és munkamenetek", + "Web, desktop and mobile clients currently logged in to your account." : "A fiókodba jelenleg bejelentkezett web, asztali és mobil kliensek.", + "Error while creating device token" : "Hiba az eszköztoken létrehozása közben", + "Error while deleting the token" : "Hiba az eszköztoken törlésénél", + "App name" : "Alkalmazás név", + "Create new app password" : "Új alkalmazás jelszó létrehozása", + "Use the credentials below to configure your app or device." : "Használja a lenti hitelesítő adatokat hogy beállítsa az alkalmazását vagy eszközét.", + "For security reasons this password will only be shown once." : "Biztonsági okokból ez a jelszó csak egyszer jelenik meg.", + "Username" : "Felhasználónév", + "Password" : "Jelszó", + "Done" : "Kész", + "Copied!" : "Másolva!", + "Copy" : "Másol", + "Supported" : "Támogatott", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "A hivatalos alkalmazásokat a közösség fejleszti. Ezek adják a központi funkcionalitásokat és éles rendszerekben használhatóak.", + "Official" : "Hivatalos", + "by" : "által", + "Update to {version}" : "Frissítés erre: {version}", + "Remove" : "Eltávolítás", + "Disable" : "Letiltás", + "All" : "Mind", + "Limit app usage to groups" : "Alkalmazás asználatának korlátozása a következő csoportokra", + "No results" : "Nincsenek eredmények", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Ennek az alkalmazásnak nincs minimum szükséges Nextcloud verziója megadva. Ez hiba lesz a jövőben.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Ennek az alkalmazásnak nincs maximum szükséges Nextcloud verziója megadva. Ez hiba lesz a jövőben.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Ezt az alkalmazást nem lehet telepíteni, mert a következő függőségek hiányoznak:", + "View in store" : "Megtekintés a tárban", + "Visit website" : "Weboldal meglátogatása", + "Report a bug" : "Hiba bejelentése", + "User documentation" : "Felhasználói dokumentáció", + "Admin documentation" : "Rendszergazdai dokumentáció", + "Developer documentation" : "Fejlesztői dokumentáció", + "Update to {update}" : "Frissítés erre: {update}", + "Results from other categories" : "Eredmények más kategóriákból", + "No apps found for your version" : "Nem található alkalmazás a verziód számára", + "Disable all" : "Összes tiltása", + "Enable all" : "Mind engedélyezése", + "Download and enable" : "Letöltés és engedélyezés", + "Enable" : "Engedélyezés", + "The app will be downloaded from the app store" : "Az alkalmazás letöltésre kerül az alkalmazástárból", + "You do not have permissions to see the details of this user" : "Nincs jogosultságod megnézni ennek a felhasználónak a részleteit.", + "The backend does not support changing the display name" : "A feldolgozó nem támogatja a megjelenítő nevének megváltoztatását", + "New password" : "Az új jelszó", + "Add user in group" : "Felhasználó hozzáadása a csoporthoz", + "Set user as admin for" : "Felhasználó beállítása adminként erre:", + "Select user quota" : "Válassz felhasználói kvótát", + "No language set" : "Nyelv nincs beállítva", + "Never" : "Soha", + "Delete user" : "Felhasználó törlése", + "Disable user" : "Felhasználó tiltása", + "Enable user" : "Felhasználó engedélyezése", + "Resend welcome email" : "Üdvözlő üzenet ismételt küldése", + "{size} used" : "{size} felhasználva", + "Welcome mail sent!" : "Üdvöző üzenet elküldve!", + "Display name" : "Név megjelenítés", + "Email" : "E-mail", + "Group admin for" : "Csoport Rendszergazda itt", + "Quota" : "Kvóta", + "Language" : "Nyelv", + "Storage location" : "A háttértár helye", + "User backend" : "Felhasználói háttér", + "Last login" : "Utolsó bejelentkezés", + "Default language" : "Alapértelmezett nyelv", + "Add a new user" : "Új felhasználó felvétele", + "No users in here" : "Nincs ilyen felhasználó", + "Default quota" : "Alapértelmezett kvóta", + "Password change is disabled because the master key is disabled" : "A jelszó változtatása tiltva van mert a mester kulcs tiltva van", + "Common languages" : "Alapvető nyelvek", + "All languages" : "Minden nyelv", + "Your apps" : "Alkalmazásaid", + "Active apps" : "Aktív alkalmazások", + "Disabled apps" : "Letiltott alkalmazások", + "Updates" : "Feltöltések", + "App bundles" : "Alkalmazás csomagok", + "{license}-licensed" : "{license}-licencelt", + "New user" : "Új felhasználó", + "Default quota:" : "Alapértelmezett kvóta:", + "Select default quota" : "Válassz alapértelmezett kvótát", + "Show Languages" : "Nyelvek mutatása", + "Show last login" : "Utolsó bejelentkezés megjelenítése", + "Show user backend" : "Felhasználói háttér mutatása", + "Show storage path" : "Tároló útvonal mutatása", + "You are about to remove the group {group}. The users will NOT be deleted." : "A {group} csoportot fodja törölni. A felhasználó NEM fog törlődni.", + "Please confirm the group removal " : "Kérem erősítse meg a csoport törlését", + "Remove group" : "Csoport törlése", + "Admins" : "Rendszergazdák", + "Disabled users" : "Letiltott felhasználók", + "Everyone" : "Mindenki", + "Add group" : "csoport hozzáadása", + "An error occured during the request. Unable to proceed." : "Hiba lépett fel a kérés közben. Nem lehet végrehajtani.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Ez az alkalmazás engedélyezve van, de frissíteni kell. A frissítő oldalra irányítjuk 5 másodpercen belül.", + "App update" : "Alkalmazás frissítése", + "Error: This app can not be enabled because it makes the server unstable" : "Hiba: az alkalmazás nem nem engedélyezhető, mert instabillá tenné a szervert", + "SSL Root Certificates" : "SSL Root tanusítványok", + "Common Name" : "Általános Név", + "Valid until" : "Érvényes", + "Issued By" : "Kiadta", + "Valid until %s" : "Érvényes: %s", + "Import root certificate" : "Gyökértanúsítvány importálása", + "Administrator documentation" : "Rendszergazdai dokumentáció", + "Documentation" : "Dokumentáció", + "Forum" : "Fórum", + "None" : "Egyik sem", + "Login" : "Login", + "Plain" : "Egyszerű", + "NT LAN Manager" : "NT LAN Manager", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "E-mail szerver", + "Open documentation" : "Dokumentáció megnyitása", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Fontos, hogy a levelezés be legyen állítva a szerveren például a jelszóvisszaállítások és értesítések miatt.", + "Send mode" : "Küldési mód", + "Encryption" : "Titkosítás", + "Sendmail mode" : "Sendmail mód", + "From address" : "A feladó címe", + "mail" : "levél", + "Authentication method" : "A felhasználóazonosítás módszere", + "Authentication required" : "Felhasználóazonosítás szükséges", + "Server address" : "A szerver címe", + "Port" : "Port", + "Credentials" : "Azonosítók", + "SMTP Username" : "SMTP felhasználónév", + "SMTP Password" : "SMTP jelszó", + "Test email settings" : "Az e-mail beállítások ellenőrzése", + "Send email" : "E-mail küldése", + "Security & setup warnings" : "Biztonsági és telepítési figyelmeztetések", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "A telepítésed biztonságához és megfelelő teljesítményéhez fontos, hogy minden beállítás helyes legyen. Ennek érdekében segítünk pár automatikus ellenőrzéssel. Kérlek tekintsd meg a kapcsolódó dokumentációt a további információért.", + "All checks passed." : "Minden ellenőrzés sikeres.", + "There are some errors regarding your setup." : "Probléma lépett fel a beállításaival kapcsolatban.", + "There are some warnings regarding your setup." : "Figyelmeztetés jött fel a beállításaival kapcsolatban.", + "Checking for system and security issues." : "Rendszer és biztonsági dolgok ellenőrzése.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Kérlek ismét ellenőrizd a <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">telepítési dokumentációt ↗</a>, és keress hibákat és figyelmeztetéseket a <a href=\"%2$s\">naplóban</a>.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Ellenőrizze a Nextcloud biztonságát <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\"> a biztonsági ellenőrzőnkkel ↗</a>.", + "Version" : "Verzió", + "Two-Factor Authentication" : "Kétfaktoros hitelesítés", + "Server-side encryption" : "Szerver-oldali titkosítás", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "A szerveroldali titkosítás segítségével a tárolt fájlok titkosítva kerülnek tárolásra a szerveren. Ez korlátozásokkal jár, például teljesítmény csökkenést okoz, így csak akkor kapcsold be, ha szükséges.", + "Enable server-side encryption" : "Szerver-oldali titkosítás engedélyezése", + "Please read carefully before activating server-side encryption: " : "Kérjük, ezt olvasd el figyelmesen mielőtt engedélyezed a szerveroldali titkosítást:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Ha egyszer engedélyezve lett a titkosítás, akkor onnantól kezdve a szerveren az összes fájl titkosításra kerül, melyet később csak akkor lehet visszafordítani, ha azt az aktív titkosítási modul támogatja és minden elő-követelmény (például helyreállító kulcs) teljesül.", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "A titkosítás önmagában nem garantálja a rendszer biztonságát. Kérem olvassa el a dokumentációt, hogy további információkat szerezzen a titkosítási alkalmazás működéséről, és a támogatott lehetőségekről.", + "Be aware that encryption always increases the file size." : "Ügyeljen arra, hogy a titkosítás mindig megnöveli a fájl méretét!", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Mindig jó ötlet rendszeres biztonsági mentést készíteni az adatokról. Titkosítás esetén a titkosító kulcsok biztonsági mentését elkülönítve tárolja az adatoktól!", + "This is the final warning: Do you really want to enable encryption?" : "Ez az utolsó figyelmeztetés: Biztosan szeretnéd engedélyezni a titkosítást?", + "Enable encryption" : "Titkosítás engedélyezése", + "No encryption module loaded, please enable an encryption module in the app menu." : "Nincs titkosítási modul betöltve, kérjük engedélyezd a titkosítási modult az alkalmazások menüben.", + "Select default encryption module:" : "Alapértelmezett titkosítási modul:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Migrálni kell a titkosítási kulcsokat a régi titkosításból (ownCloud <= 8.0) egy újba. Kérjük, engedélyezd az „Alapértelmezett titkosítási modul”-t és futtasd ezt: occ encryption:migrate", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Migrálni kell a titkosítási kulcsokat a régi titkosításból (ownCloud <= 8.0) egy újba.", + "Start migration" : "Migrálás indítása", + "Background jobs" : "Háttérfeladatok", + "Last job ran %s." : "Utolsó futás: %s.", + "Last job execution ran %s. Something seems wrong." : "Utolsó futás:%s. Valami nincs rendben.", + "Background job didn’t run yet!" : "Háttérfeladat még nem futott le!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Az optimális teljesítményhez fontos, hogy a háttérfeladatok megfelelően legyenek beállítva. Nagyobb telepítésekhez a 'Cron' javasolt. Kérlek nézd meg a dokumentációt a részletekért.", + "Execute one task with each page loaded" : "Egy-egy feladat végrehajtása minden alkalommal, amikor egy weboldalt letöltenek", + "The cron.php needs to be executed by the system user \"%s\"." : "A cron.php-t ennek a rendszer felhasználónak kell végrehajtania: \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Ennek futtatásához PHP POSIX kiterjesztés szükséges. Nézd meg a {linkstart}PHP dokumentációt{linkend} a részletekért.", + "Sharing" : "Megosztás", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Rendszergazdaként finomhangolhatod a megosztás viselkedését. Kérlek nézd meg a dokumentációt a részletekért.", + "Allow apps to use the Share API" : "Lehetővé teszi, hogy a programmodulok is használhassák a megosztást", + "Allow users to share via link" : "Engedjük meg a fájlok hivatkozással történő megosztását", + "Allow public uploads" : "Nyilvános feltöltés engedélyezése", + "Always ask for a password" : "Mindig kérdezze meg a jelszót", + "Enforce password protection" : "Legyen kötelező a linkek jelszóval való védelme", + "Set default expiration date" : "Alapértelmezett lejárati idő beállítása", + "Expire after " : "A lejárat legyen", + "days" : "nap", + "Enforce expiration date" : "A beállított lejárati idő legyen kötelezően érvényes", + "Allow resharing" : "A megosztás továbbadásának engedélyezése", + "Allow sharing with groups" : "Megosztás engedélyezése a csoportokkal", + "Restrict users to only share with users in their groups" : "A csoporttagok csak a saját csoportjukon belül oszthassanak meg anyagokat", + "Exclude groups from sharing" : "Csoportok megosztási jogának tiltása", + "These groups will still be able to receive shares, but not to initiate them." : "E csoportok tagjaival meg lehet osztani anyagokat, de ők nem hozhatnak létre megosztást.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Felhasználónevek automatikus kiegészítésének engedélyezése a megosztási ablakban. Ha ki van kapcsolva, teljes felhasználóneveket vagy e-mail címeket kell begépelni.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Nyilatkozat szövegének megjelenítése a nyilvános feltöltési oldalon. (Csak akkor jelenik meg, ha fájl lista rejtett.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Ez a szöveg jelenik meg a nyilvános feltöltési oldalon, amikor a fájl lista el van rejtve.", + "Default share permissions" : "Alapértelmezett megosztási beállítások", + "Personal" : "Személyes", + "Administration" : "Adminisztráció", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Fejleszti a {communityopen}Nextcloud közösség{linkclose}, a {githubopen}forráskódra{linkclose} az {licenseopen}AGPL{linkclose} licenc vonatkozik.", + "Like our Facebook page" : "Lájkold a Facebook oldalunkat", + "Follow us on Twitter" : "Kövess Twitteren", + "Follow us on Mastodon" : "Kövess mindet a Mastodon-on", + "Check out our blog" : "Nézd meg a blogunkat", + "Subscribe to our newsletter" : "Iratkozz fel a hírlevelünkre", + "Profile picture" : "Profilkép", + "Upload new" : "Új feltöltése", + "Select from Files" : "Kiválasztás fájlokból", + "Remove image" : "Kép eltávolítása", + "png or jpg, max. 20 MB" : "png vagy jpg, max. 20 MB", + "Picture provided by original account" : "Az eredeti fiók által biztosított kép.", + "Cancel" : "Mégsem", + "Choose as profile picture" : "Kiválasztás profil képként", + "Details" : "Részletek", + "You are a member of the following groups:" : "Tagja vagy a következő csoport(ok)nak:", + "You are using <strong>%s</strong>" : "Jelenleg használt <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Jelenleg használt <strong>%1$s</strong> a <strong>%2$s</strong>-ből (<strong>%3$s %%</strong>)", + "Full name" : "Teljes név", + "No display name set" : "Nincs megjelenítési név beállítva", + "Your email address" : "Az Ön e-mail címe", + "No email address set" : "Nincs e-mail cím beállítva", + "For password reset and notifications" : "Jelszó-visszaállításhoz és értesítésekhez", + "Phone number" : "Telefonszám", + "Your phone number" : "Telefonszáma", + "Address" : "Cím", + "Your postal address" : "A postai címe", + "Website" : "Weboldal", + "Link https://…" : "https:// hivatkozás…", + "Twitter" : "Twitter", + "Twitter handle @…" : "Twitter azonosító @…", + "Help translate" : "Segítsen a fordításban", + "Locale" : "Területi beállítás", + "Current password" : "Jelenlegi jelszó", + "Change password" : "Jelszó megváltoztatása", + "Disconnect" : "Szétkapcsolás", + "Not supported!" : "Nem támogatott.", + "Press ⌘-C to copy." : "A másoláshoz nyomj ⌘-C-t.", + "Press Ctrl-C to copy." : "A másoláshoz nyomj Ctrl-C-t.", + "Error while loading browser sessions and device tokens" : "Hiba a böngésző munkamenet és az eszköz tokenek betöltése közben.", + "Store credentials" : "Azonosítók eltárolása", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "a cron.php a webcron szolgáltatásban van regisztrálva 15 percenkénti meghívásra HTTP-n keresztül.", + "Use system cron service to call the cron.php file every 15 minutes." : "A rendszer cron szolgáltatásának használata a cron.php meghívására 15 percenként.", + "Follow us on Google+" : "Kövess Google+ -on" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/hu.json b/apps/settings/l10n/hu.json new file mode 100644 index 00000000000..761acc67fec --- /dev/null +++ b/apps/settings/l10n/hu.json @@ -0,0 +1,363 @@ +{ "translations": { + "{actor} added you to group {group}" : "{actor} hozzá lett adva a {group} csoporthoz", + "You added {user} to group {group}" : "Hozzáadta {user} felhasználót a(z) {group} csoporthoz", + "{actor} added {user} to group {group}" : "{actor} hozzáadta {user} felhasználót a(z) {group} csoporthoz", + "An administrator added you to group {group}" : "A rendszergazda hozzáadta a(z) {group} csoporthoz", + "An administrator added {user} to group {group}" : "A rendszergazda hozzáadta {user} felhasználót a(z) {group} csoporthoz", + "{actor} removed you from group {group}" : "{actor} el lett távolítva a(z) {group} csoportból", + "You removed {user} from group {group}" : "Eltávolította {user} felhasználót a(z) {group} csoportból", + "{actor} removed {user} from group {group}" : "{actor} eltávolította {user} felhasználót a(z) {group} csoportból", + "An administrator removed you from group {group}" : "A rendszergazda eltávolította a(z) {group} csoportból", + "An administrator removed {user} from group {group}" : "A rendszergazda eltávolította {user} felhasználót a(z) {group} csoportból", + "Your <strong>group memberships</strong> were modified" : "A <strong>csoporttagsága</strong> megváltozott", + "{actor} changed your password" : "{actor} módosította a jelszavát", + "You changed your password" : "Módosította a jelszavát", + "Your password was reset by an administrator" : "A jelszavát visszaállította egy rendszergazda", + "{actor} changed your email address" : "{actor} megváltoztatta az e-mail címét", + "You changed your email address" : "Megváltoztatta az e-mail címét", + "Your email address was changed by an administrator" : "Az e-mail címét megváltoztatta egy rendszergazda", + "You created app password \"{token}\"" : "Létrehozta a(z) „{token}” alkalmazásjelszót", + "You deleted app password \"{token}\"" : "Törölte a(z) „{token}” alkalmazásjelszót", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Átnevezted a(z) „{token}” alkalmazásjelszót erre: „{newToken}”", + "You granted filesystem access to app password \"{token}\"" : "Fájlrendszer-hozzáférést adott a(z) „{token}” alkalmazásjelszónak", + "You revoked filesystem access from app password \"{token}\"" : "Visszavonta a(z) „{token}” alkalmazásjelszó fájlrendszer-hozzáférését", + "Security" : "Biztonság", + "You successfully logged in using two-factor authentication (%1$s)" : "Sikeresen bejelentkezett kétfaktoros hitelesítés használatával (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Egy kétfaktoros bejelentkezési kísérlet sikertelen volt (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "A <strong>jelszavad </strong> vagy <strong>email címed</strong> megváltozott", + "Couldn't remove app." : "Az alkalmazást nem sikerült eltávolítani.", + "Couldn't update app." : "Az alkalmazás frissítése nem sikerült.", + "Wrong password" : "Hibás jelszó", + "Saved" : "Elmentve", + "No user supplied" : "Nincs megadva felhasználó", + "Unable to change password" : "Nem sikerült megváltoztatni a jelszót", + "Authentication error" : "Azonosítási hiba", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Kérjük, adjon meg egy rendszergazdai visszaállító jelszót; különben, az összes felhasználó adata eltűnik.", + "Wrong admin recovery password. Please check the password and try again." : "Hibás rendszergazda helyreállítási jelszó. Ellenőrizze a jelszót és próbálja újra!", + "Backend doesn't support password change, but the user's encryption key was updated." : "A háttérszolgáltatás nem támogatja a jelszómódosítást, de a titkosítási kulcs frissítve lett.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "alkalmazások telepítése és frissítése az alkalmazás tárból vagy Szövetséges Felhő Megosztásból", + "Federated Cloud Sharing" : "Megosztás Egyesített Felhőben", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL elavult %1$s verziót (%2$s) használ. Kérlek, frissítsd az operációs rendszert, vagy egyes funkciók (mint például a %3$s) megbízhatatlanul fognak működni.", + "Invalid SMTP password." : "Érvénytelen SMTP jelszó", + "Email setting test" : "E-mail beállítás tesztelése", + "Well done, %s!" : "Szép munka, %s!", + "If you received this email, the email configuration seems to be correct." : "Ha ezt a levelet látod, a beállításaid megfelelőnek tűnnek.", + "Email could not be sent. Check your mail server log" : "E-mail nem elküldhető. Ellenőrizd a mailszerver naplójában", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Hiba történt az e-mail küldésekor. Kérlek ellenőrizd a beállításokat! (Hiba: %s)", + "You need to set your user email before being able to send test emails." : "Előbb meg kell adnia az e-mail címét, mielőtt tesztelni tudná az e-mail küldést.", + "Invalid mail address" : "Érvénytelen e-mail cím", + "Settings saved" : "Beállítások elmentve", + "Unable to change full name" : "Nem sikerült megváltoztatni a teljes nevét", + "Unable to change email address" : "Nem lehet megváltoztatni az e-mail címet", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "A twitter fiók megerősítésére tweeteld ki az alábbit. (Kérünk pontosan így, sortörések nélkül tweeteld)", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "A weboldalad ellenőrzése érdekében helyezd el a következő tartalmat a '.well-known/CloudIdVerificationCode.txt'-ba. (figyelj arra, hogy az egész szöveg egy sorban legyen):", + "%1$s changed your password on %2$s." : "%1$smegváltoztatta a jelszavadat%2$s-on.", + "Your password on %s was changed." : "A jelszavad %s-on megváltozott.", + "Your password on %s was reset by an administrator." : "A jelszavad %s-on visszaállította egy rendszergazda.", + "Password for %1$s changed on %2$s" : "%1$s jelszava megváltozott %2$s-on", + "Password changed for %s" : "%s jelszava módosítva", + "If you did not request this, please contact an administrator." : "Ha ezt nem te kérted, lépj kapcsolatba egy rendszergazdával.", + "Your email address on %s was changed." : "Az e-mail címed megváltozott %s-on.", + "Your email address on %s was changed by an administrator." : "Az e-mail címedet %s-on megváltoztatta egy rendszergazda.", + "Email address for %1$s changed on %2$s" : "%1$s e-mail címe megváltozott%2$s-on", + "Email address changed for %s" : "%s e-mail címe módosítva", + "The new email address is %s" : "Az új e-mail cím %s", + "Your %s account was created" : "%s fiók létrehozva", + "Welcome aboard" : "Üdv a fedélzeten", + "Welcome aboard %s" : "Üdv a fedélzeten %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Üdv a(z) %s hozzáférésedben. Hozzáadhatod, védheted, megoszthatod adataidat.", + "Your username is: %s" : "A felhasználóneved: %s", + "Set your password" : "Állítsd be a jelszabad", + "Go to %s" : "Menj ide: %s", + "Install Client" : "Kliens telepítés", + "Logged in user must be a subadmin" : "Nem rendszergazda felhasználóként kell bejelentkezzen", + "Create" : "Létrehozás", + "Change" : "Módosít", + "Delete" : "Törlés", + "Share" : "Megosztás", + "Unlimited" : "Korlátlan", + "Verifying" : "Ellenőrzés", + "Verifying …" : "Ellenőrzés...", + "Verify" : "Ellenőrzés", + "Migration in progress. Please wait until the migration is finished" : "Migráció folyamatban. Kérlek várj, míg a migráció befejeződik.", + "Migration started …" : "Migráció elindítva ...", + "Not saved" : "Nincs mentve", + "Sending…" : "Küldés...", + "Email sent" : "Az e-mail elküldve!", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Hiba történt! Kérem töltsön fel egy, ASCII karakterekkel kódolt PEM tanusítványt!", + "Valid until {date}" : "Érvényes: {date}", + "Local" : "Helyi", + "Private" : "Privát", + "Only visible to local users" : "Csak a helyi felhasználók láthatják", + "Only visible to you" : "Csak te láthatod", + "Contacts" : "Névjegyek", + "Visible to local users and to trusted servers" : "Helyi felhasználók és megbízható szerverek láthatják", + "Public" : "Nyilvános", + "Will be synced to a global and public address book" : "Globális és nyilvános névjegyek számára lesz szinkronizálva", + "Very weak password" : "Nagyon gyenge jelszó", + "Weak password" : "Gyenge jelszó", + "So-so password" : "Nem túl jó jelszó", + "Good password" : "Jó jelszó", + "Strong password" : "Erős jelszó", + "An error occurred while changing your language. Please reload the page and try again." : "Hiba lépett fel nyelvváltás közben. Kérlek töltsd újra az oldalt és próbáld ismét.", + "An error occurred while changing your locale. Please reload the page and try again." : "Hiba a hely váltása közben. Kérlek töltsd újra az oldalt és próbáld meg ismét.", + "Select a profile picture" : "Válasszon profilképet!", + "Week starts on {fdow}" : "Hét kezdete {fdow}", + "Groups" : "Csoportok", + "Group list is empty" : "Csoport lista üres", + "Unable to retrieve the group list" : "Csoportlista betöltése sikertelen", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "A kétfaktoros hitelesítés minden felhasználóra vagy bizonyos csoportokra követelhető meg. Ha a kétfaktoros hitelesítés nincs nekik beállítva, nem fognak tudni belépni a rendszerbe.", + "Enforce two-factor authentication" : "Kétfaktoros hitelesítés megkövetelése", + "Limit to groups" : "Csoportokra korlátozás", + "Enforcement of two-factor authentication can be set for certain groups only." : "A kétfaktoros hitelesítés megkövetelése csak bizonyos csoportokra állítható be.", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "A kétfaktoros hitelesítés meg van követelve a következő csoport minden tagjára.", + "Enforced groups" : "Kötelező csoportok", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "A kétfaktoros hitelesítés meg van nincs megkövetelve a következő csoport tagjaira.", + "Excluded groups" : "Kizárt csoportok", + "Save changes" : "Változások mentése", + "Device settings" : "Eszköz beállítások", + "Allow filesystem access" : "Fájlrendszer hozzáférés engedélyezése", + "Rename" : "Átnevez", + "Revoke" : "Visszavonás", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome for Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Nextcloud iOS alkalmazás", + "Nextcloud Android app" : "Nextcloud Android alkalmazás", + "Nextcloud Talk for iOS" : "Nextcloud Talk iOS-re", + "Nextcloud Talk for Android" : "Nextcloud Talk Android-ra", + "Sync client - {os}" : "Szinkron kliens - {os}", + "This session" : "Ez a munkamenet", + "Device" : "Eszköz", + "Last activity" : "Utolsó tevékenység", + "Devices & sessions" : "Eszközök és munkamenetek", + "Web, desktop and mobile clients currently logged in to your account." : "A fiókodba jelenleg bejelentkezett web, asztali és mobil kliensek.", + "Error while creating device token" : "Hiba az eszköztoken létrehozása közben", + "Error while deleting the token" : "Hiba az eszköztoken törlésénél", + "App name" : "Alkalmazás név", + "Create new app password" : "Új alkalmazás jelszó létrehozása", + "Use the credentials below to configure your app or device." : "Használja a lenti hitelesítő adatokat hogy beállítsa az alkalmazását vagy eszközét.", + "For security reasons this password will only be shown once." : "Biztonsági okokból ez a jelszó csak egyszer jelenik meg.", + "Username" : "Felhasználónév", + "Password" : "Jelszó", + "Done" : "Kész", + "Copied!" : "Másolva!", + "Copy" : "Másol", + "Supported" : "Támogatott", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "A hivatalos alkalmazásokat a közösség fejleszti. Ezek adják a központi funkcionalitásokat és éles rendszerekben használhatóak.", + "Official" : "Hivatalos", + "by" : "által", + "Update to {version}" : "Frissítés erre: {version}", + "Remove" : "Eltávolítás", + "Disable" : "Letiltás", + "All" : "Mind", + "Limit app usage to groups" : "Alkalmazás asználatának korlátozása a következő csoportokra", + "No results" : "Nincsenek eredmények", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Ennek az alkalmazásnak nincs minimum szükséges Nextcloud verziója megadva. Ez hiba lesz a jövőben.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Ennek az alkalmazásnak nincs maximum szükséges Nextcloud verziója megadva. Ez hiba lesz a jövőben.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Ezt az alkalmazást nem lehet telepíteni, mert a következő függőségek hiányoznak:", + "View in store" : "Megtekintés a tárban", + "Visit website" : "Weboldal meglátogatása", + "Report a bug" : "Hiba bejelentése", + "User documentation" : "Felhasználói dokumentáció", + "Admin documentation" : "Rendszergazdai dokumentáció", + "Developer documentation" : "Fejlesztői dokumentáció", + "Update to {update}" : "Frissítés erre: {update}", + "Results from other categories" : "Eredmények más kategóriákból", + "No apps found for your version" : "Nem található alkalmazás a verziód számára", + "Disable all" : "Összes tiltása", + "Enable all" : "Mind engedélyezése", + "Download and enable" : "Letöltés és engedélyezés", + "Enable" : "Engedélyezés", + "The app will be downloaded from the app store" : "Az alkalmazás letöltésre kerül az alkalmazástárból", + "You do not have permissions to see the details of this user" : "Nincs jogosultságod megnézni ennek a felhasználónak a részleteit.", + "The backend does not support changing the display name" : "A feldolgozó nem támogatja a megjelenítő nevének megváltoztatását", + "New password" : "Az új jelszó", + "Add user in group" : "Felhasználó hozzáadása a csoporthoz", + "Set user as admin for" : "Felhasználó beállítása adminként erre:", + "Select user quota" : "Válassz felhasználói kvótát", + "No language set" : "Nyelv nincs beállítva", + "Never" : "Soha", + "Delete user" : "Felhasználó törlése", + "Disable user" : "Felhasználó tiltása", + "Enable user" : "Felhasználó engedélyezése", + "Resend welcome email" : "Üdvözlő üzenet ismételt küldése", + "{size} used" : "{size} felhasználva", + "Welcome mail sent!" : "Üdvöző üzenet elküldve!", + "Display name" : "Név megjelenítés", + "Email" : "E-mail", + "Group admin for" : "Csoport Rendszergazda itt", + "Quota" : "Kvóta", + "Language" : "Nyelv", + "Storage location" : "A háttértár helye", + "User backend" : "Felhasználói háttér", + "Last login" : "Utolsó bejelentkezés", + "Default language" : "Alapértelmezett nyelv", + "Add a new user" : "Új felhasználó felvétele", + "No users in here" : "Nincs ilyen felhasználó", + "Default quota" : "Alapértelmezett kvóta", + "Password change is disabled because the master key is disabled" : "A jelszó változtatása tiltva van mert a mester kulcs tiltva van", + "Common languages" : "Alapvető nyelvek", + "All languages" : "Minden nyelv", + "Your apps" : "Alkalmazásaid", + "Active apps" : "Aktív alkalmazások", + "Disabled apps" : "Letiltott alkalmazások", + "Updates" : "Feltöltések", + "App bundles" : "Alkalmazás csomagok", + "{license}-licensed" : "{license}-licencelt", + "New user" : "Új felhasználó", + "Default quota:" : "Alapértelmezett kvóta:", + "Select default quota" : "Válassz alapértelmezett kvótát", + "Show Languages" : "Nyelvek mutatása", + "Show last login" : "Utolsó bejelentkezés megjelenítése", + "Show user backend" : "Felhasználói háttér mutatása", + "Show storage path" : "Tároló útvonal mutatása", + "You are about to remove the group {group}. The users will NOT be deleted." : "A {group} csoportot fodja törölni. A felhasználó NEM fog törlődni.", + "Please confirm the group removal " : "Kérem erősítse meg a csoport törlését", + "Remove group" : "Csoport törlése", + "Admins" : "Rendszergazdák", + "Disabled users" : "Letiltott felhasználók", + "Everyone" : "Mindenki", + "Add group" : "csoport hozzáadása", + "An error occured during the request. Unable to proceed." : "Hiba lépett fel a kérés közben. Nem lehet végrehajtani.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Ez az alkalmazás engedélyezve van, de frissíteni kell. A frissítő oldalra irányítjuk 5 másodpercen belül.", + "App update" : "Alkalmazás frissítése", + "Error: This app can not be enabled because it makes the server unstable" : "Hiba: az alkalmazás nem nem engedélyezhető, mert instabillá tenné a szervert", + "SSL Root Certificates" : "SSL Root tanusítványok", + "Common Name" : "Általános Név", + "Valid until" : "Érvényes", + "Issued By" : "Kiadta", + "Valid until %s" : "Érvényes: %s", + "Import root certificate" : "Gyökértanúsítvány importálása", + "Administrator documentation" : "Rendszergazdai dokumentáció", + "Documentation" : "Dokumentáció", + "Forum" : "Fórum", + "None" : "Egyik sem", + "Login" : "Login", + "Plain" : "Egyszerű", + "NT LAN Manager" : "NT LAN Manager", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "E-mail szerver", + "Open documentation" : "Dokumentáció megnyitása", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Fontos, hogy a levelezés be legyen állítva a szerveren például a jelszóvisszaállítások és értesítések miatt.", + "Send mode" : "Küldési mód", + "Encryption" : "Titkosítás", + "Sendmail mode" : "Sendmail mód", + "From address" : "A feladó címe", + "mail" : "levél", + "Authentication method" : "A felhasználóazonosítás módszere", + "Authentication required" : "Felhasználóazonosítás szükséges", + "Server address" : "A szerver címe", + "Port" : "Port", + "Credentials" : "Azonosítók", + "SMTP Username" : "SMTP felhasználónév", + "SMTP Password" : "SMTP jelszó", + "Test email settings" : "Az e-mail beállítások ellenőrzése", + "Send email" : "E-mail küldése", + "Security & setup warnings" : "Biztonsági és telepítési figyelmeztetések", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "A telepítésed biztonságához és megfelelő teljesítményéhez fontos, hogy minden beállítás helyes legyen. Ennek érdekében segítünk pár automatikus ellenőrzéssel. Kérlek tekintsd meg a kapcsolódó dokumentációt a további információért.", + "All checks passed." : "Minden ellenőrzés sikeres.", + "There are some errors regarding your setup." : "Probléma lépett fel a beállításaival kapcsolatban.", + "There are some warnings regarding your setup." : "Figyelmeztetés jött fel a beállításaival kapcsolatban.", + "Checking for system and security issues." : "Rendszer és biztonsági dolgok ellenőrzése.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Kérlek ismét ellenőrizd a <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">telepítési dokumentációt ↗</a>, és keress hibákat és figyelmeztetéseket a <a href=\"%2$s\">naplóban</a>.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Ellenőrizze a Nextcloud biztonságát <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\"> a biztonsági ellenőrzőnkkel ↗</a>.", + "Version" : "Verzió", + "Two-Factor Authentication" : "Kétfaktoros hitelesítés", + "Server-side encryption" : "Szerver-oldali titkosítás", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "A szerveroldali titkosítás segítségével a tárolt fájlok titkosítva kerülnek tárolásra a szerveren. Ez korlátozásokkal jár, például teljesítmény csökkenést okoz, így csak akkor kapcsold be, ha szükséges.", + "Enable server-side encryption" : "Szerver-oldali titkosítás engedélyezése", + "Please read carefully before activating server-side encryption: " : "Kérjük, ezt olvasd el figyelmesen mielőtt engedélyezed a szerveroldali titkosítást:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Ha egyszer engedélyezve lett a titkosítás, akkor onnantól kezdve a szerveren az összes fájl titkosításra kerül, melyet később csak akkor lehet visszafordítani, ha azt az aktív titkosítási modul támogatja és minden elő-követelmény (például helyreállító kulcs) teljesül.", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "A titkosítás önmagában nem garantálja a rendszer biztonságát. Kérem olvassa el a dokumentációt, hogy további információkat szerezzen a titkosítási alkalmazás működéséről, és a támogatott lehetőségekről.", + "Be aware that encryption always increases the file size." : "Ügyeljen arra, hogy a titkosítás mindig megnöveli a fájl méretét!", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Mindig jó ötlet rendszeres biztonsági mentést készíteni az adatokról. Titkosítás esetén a titkosító kulcsok biztonsági mentését elkülönítve tárolja az adatoktól!", + "This is the final warning: Do you really want to enable encryption?" : "Ez az utolsó figyelmeztetés: Biztosan szeretnéd engedélyezni a titkosítást?", + "Enable encryption" : "Titkosítás engedélyezése", + "No encryption module loaded, please enable an encryption module in the app menu." : "Nincs titkosítási modul betöltve, kérjük engedélyezd a titkosítási modult az alkalmazások menüben.", + "Select default encryption module:" : "Alapértelmezett titkosítási modul:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Migrálni kell a titkosítási kulcsokat a régi titkosításból (ownCloud <= 8.0) egy újba. Kérjük, engedélyezd az „Alapértelmezett titkosítási modul”-t és futtasd ezt: occ encryption:migrate", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Migrálni kell a titkosítási kulcsokat a régi titkosításból (ownCloud <= 8.0) egy újba.", + "Start migration" : "Migrálás indítása", + "Background jobs" : "Háttérfeladatok", + "Last job ran %s." : "Utolsó futás: %s.", + "Last job execution ran %s. Something seems wrong." : "Utolsó futás:%s. Valami nincs rendben.", + "Background job didn’t run yet!" : "Háttérfeladat még nem futott le!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Az optimális teljesítményhez fontos, hogy a háttérfeladatok megfelelően legyenek beállítva. Nagyobb telepítésekhez a 'Cron' javasolt. Kérlek nézd meg a dokumentációt a részletekért.", + "Execute one task with each page loaded" : "Egy-egy feladat végrehajtása minden alkalommal, amikor egy weboldalt letöltenek", + "The cron.php needs to be executed by the system user \"%s\"." : "A cron.php-t ennek a rendszer felhasználónak kell végrehajtania: \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Ennek futtatásához PHP POSIX kiterjesztés szükséges. Nézd meg a {linkstart}PHP dokumentációt{linkend} a részletekért.", + "Sharing" : "Megosztás", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Rendszergazdaként finomhangolhatod a megosztás viselkedését. Kérlek nézd meg a dokumentációt a részletekért.", + "Allow apps to use the Share API" : "Lehetővé teszi, hogy a programmodulok is használhassák a megosztást", + "Allow users to share via link" : "Engedjük meg a fájlok hivatkozással történő megosztását", + "Allow public uploads" : "Nyilvános feltöltés engedélyezése", + "Always ask for a password" : "Mindig kérdezze meg a jelszót", + "Enforce password protection" : "Legyen kötelező a linkek jelszóval való védelme", + "Set default expiration date" : "Alapértelmezett lejárati idő beállítása", + "Expire after " : "A lejárat legyen", + "days" : "nap", + "Enforce expiration date" : "A beállított lejárati idő legyen kötelezően érvényes", + "Allow resharing" : "A megosztás továbbadásának engedélyezése", + "Allow sharing with groups" : "Megosztás engedélyezése a csoportokkal", + "Restrict users to only share with users in their groups" : "A csoporttagok csak a saját csoportjukon belül oszthassanak meg anyagokat", + "Exclude groups from sharing" : "Csoportok megosztási jogának tiltása", + "These groups will still be able to receive shares, but not to initiate them." : "E csoportok tagjaival meg lehet osztani anyagokat, de ők nem hozhatnak létre megosztást.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Felhasználónevek automatikus kiegészítésének engedélyezése a megosztási ablakban. Ha ki van kapcsolva, teljes felhasználóneveket vagy e-mail címeket kell begépelni.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Nyilatkozat szövegének megjelenítése a nyilvános feltöltési oldalon. (Csak akkor jelenik meg, ha fájl lista rejtett.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Ez a szöveg jelenik meg a nyilvános feltöltési oldalon, amikor a fájl lista el van rejtve.", + "Default share permissions" : "Alapértelmezett megosztási beállítások", + "Personal" : "Személyes", + "Administration" : "Adminisztráció", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Fejleszti a {communityopen}Nextcloud közösség{linkclose}, a {githubopen}forráskódra{linkclose} az {licenseopen}AGPL{linkclose} licenc vonatkozik.", + "Like our Facebook page" : "Lájkold a Facebook oldalunkat", + "Follow us on Twitter" : "Kövess Twitteren", + "Follow us on Mastodon" : "Kövess mindet a Mastodon-on", + "Check out our blog" : "Nézd meg a blogunkat", + "Subscribe to our newsletter" : "Iratkozz fel a hírlevelünkre", + "Profile picture" : "Profilkép", + "Upload new" : "Új feltöltése", + "Select from Files" : "Kiválasztás fájlokból", + "Remove image" : "Kép eltávolítása", + "png or jpg, max. 20 MB" : "png vagy jpg, max. 20 MB", + "Picture provided by original account" : "Az eredeti fiók által biztosított kép.", + "Cancel" : "Mégsem", + "Choose as profile picture" : "Kiválasztás profil képként", + "Details" : "Részletek", + "You are a member of the following groups:" : "Tagja vagy a következő csoport(ok)nak:", + "You are using <strong>%s</strong>" : "Jelenleg használt <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Jelenleg használt <strong>%1$s</strong> a <strong>%2$s</strong>-ből (<strong>%3$s %%</strong>)", + "Full name" : "Teljes név", + "No display name set" : "Nincs megjelenítési név beállítva", + "Your email address" : "Az Ön e-mail címe", + "No email address set" : "Nincs e-mail cím beállítva", + "For password reset and notifications" : "Jelszó-visszaállításhoz és értesítésekhez", + "Phone number" : "Telefonszám", + "Your phone number" : "Telefonszáma", + "Address" : "Cím", + "Your postal address" : "A postai címe", + "Website" : "Weboldal", + "Link https://…" : "https:// hivatkozás…", + "Twitter" : "Twitter", + "Twitter handle @…" : "Twitter azonosító @…", + "Help translate" : "Segítsen a fordításban", + "Locale" : "Területi beállítás", + "Current password" : "Jelenlegi jelszó", + "Change password" : "Jelszó megváltoztatása", + "Disconnect" : "Szétkapcsolás", + "Not supported!" : "Nem támogatott.", + "Press ⌘-C to copy." : "A másoláshoz nyomj ⌘-C-t.", + "Press Ctrl-C to copy." : "A másoláshoz nyomj Ctrl-C-t.", + "Error while loading browser sessions and device tokens" : "Hiba a böngésző munkamenet és az eszköz tokenek betöltése közben.", + "Store credentials" : "Azonosítók eltárolása", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "a cron.php a webcron szolgáltatásban van regisztrálva 15 percenkénti meghívásra HTTP-n keresztül.", + "Use system cron service to call the cron.php file every 15 minutes." : "A rendszer cron szolgáltatásának használata a cron.php meghívására 15 percenként.", + "Follow us on Google+" : "Kövess Google+ -on" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} \ No newline at end of file diff --git a/apps/settings/l10n/id.js b/apps/settings/l10n/id.js new file mode 100644 index 00000000000..20281ed4d8b --- /dev/null +++ b/apps/settings/l10n/id.js @@ -0,0 +1,428 @@ +OC.L10N.register( + "settings", + { + "{actor} added you to group {group}" : "{actor} menambahkan Anda ke grup {group}", + "You added {user} to group {group}" : "Anda menambahkan {user} ke grup {group}", + "{actor} added {user} to group {group}" : "{actor} menambahkan {user} kedalam grup {group}", + "An administrator added you to group {group}" : "Admin telah menambahkan Anda ke grup {group}", + "An administrator added {user} to group {group}" : "Admin menambahkan {user} kedalam grup {group}", + "{actor} removed you from group {group}" : "{actor} mengeluarkan Anda dari grup {group}", + "You removed {user} from group {group}" : "Anda mengeluarkan {user} dari grup {group}", + "{actor} removed {user} from group {group}" : "{actor} mengeluarkan {user} dari grup {group}", + "An administrator removed you from group {group}" : "Admin mengeluarkan Anda dari grup {group}", + "An administrator removed {user} from group {group}" : "Admin mengeluarkan {user} dari grup {group}", + "Your <strong>group memberships</strong> were modified" : "<strong>Keanggotaan grup</strong> Anda telah diubah", + "{actor} changed your password" : "{actor} mengganti kata sandi anda", + "You changed your password" : "Anda mengganti kata sandi", + "Your password was reset by an administrator" : "Kata sandi anda telah diatur ulang oleh administrator", + "{actor} changed your email address" : "{actor} mengubah alamat surel anda", + "You changed your email address" : "Anda mengubah alamat surel sendiri", + "Your email address was changed by an administrator" : "Alamat surel Anda telah diubah oleh administrator", + "You created app password \"{token}\"" : "Anda telah membuat kata sandi aplikasi \"{token}\"", + "You deleted app password \"{token}\"" : "Anda menghapus kata sandi aplikasi \"{token}\"", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Anda mengubah kata sandi aplikasi \"{token}\" ke \"{newToken}\"", + "You granted filesystem access to app password \"{token}\"" : "Anda mengijinkan mengakses berkas sistem ke kata sandi aplikasi \"{token}\"", + "You revoked filesystem access from app password \"{token}\"" : "Anda membatalkan ijin akses berkas sistem dari kata sandi aplikasi \"{token}\"", + "Security" : "Keamanan", + "You successfully logged in using two-factor authentication (%1$s)" : "Anda berhasil masuk menggunakan autentikasi dua-faktor (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Upaya masuk menggunakan autentikasi dua-faktor gagal (%1$s)", + "Remote wipe was started on %1$s" : "Pembersihan secara remote telah dimulai di %1$s", + "Remote wipe has finished on %1$s" : "Pembersihan secara remote telah selesai di %1$s", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "<strong>Kata sandi</strong> atau <strong>surel</strong> Anda telah diubah", + "Couldn't remove app." : "Tidak dapat menghapus aplikasi.", + "Couldn't update app." : "Tidak dapat memperbarui aplikasi.", + "Wrong password" : "Kata sandi salah", + "Saved" : "Disimpan", + "No user supplied" : "Tidak ada pengguna yang diberikan", + "Unable to change password" : "Tidak dapat mengubah kata sandi", + "Authentication error" : "Terjadi kesalahan saat otentikasi", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Berikan kata sandi pemulihan admin; Jika tidak, semua data pengguna akan hilang.", + "Wrong admin recovery password. Please check the password and try again." : "Kata sandi pemulihan admin salah. Periksa kata sandi dan ulangi kembali.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Backend tidak mendukung perubahan kata sandi, namun kunci enkripsi pengguna telah diperbarui.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "memasang dan memperbarui aplikasi via toko aplikasi atau Federated Cloud Sharing", + "Federated Cloud Sharing" : "Federated Cloud Sharing", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL menggunakan versi %1$s yang usang(%2$s). Mohon perbarui sistem operasi Anda atau fitur sejenisnya termasuk %3$s tidak akan bekerja secara penuh.", + "Invalid SMTP password." : "Kata sandi SMTP tidak valid.", + "Email setting test" : "Uji pengaturan surel", + "Well done, %s!" : "Bagus, %s!", + "If you received this email, the email configuration seems to be correct." : "Jika Anda menerima surel ini, konfigurasi surel sepertinya benar.", + "Email could not be sent. Check your mail server log" : "Surel tidak dapat dikirim. Periksa log server mail Anda", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Terjadi masalah saat mengirim surel. Mohon periksa kembali pengaturan Anda. (Kesalahan: %s)", + "You need to set your user email before being able to send test emails." : "Anda perlu menetapkan surel pengguna Anda sebelum dapat mengirim surel percobaan.", + "Invalid mail address" : "Alamat surel salah", + "Settings saved" : "Pengaturan disimpan", + "Unable to change full name" : "Tidak dapat mengubah nama lengkap", + "Unable to change email address" : "Tidak dapat mengubah alamat email", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Untuk memverifikasi akun Twitter Anda, posting tweet berikut ini ke Twitter (pastikan untuk posting tanpa ada jeda baris):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Untuk memverifikasi Situs Anda, simpan konten berikut ini ke web-root Anda di '.well-known/CloudIdVerificationCode.txt' (pastikan dalam satu baris):", + "%1$s changed your password on %2$s." : "%1$s mengganti kata sandi Anda di %2$s", + "Your password on %s was changed." : "Kata sandi Anda di %s telah diubah.", + "Your password on %s was reset by an administrator." : "Kata sandi Anda di %s telah direset oleh administrator.", + "Password for %1$s changed on %2$s" : "Kata sandi untuk %1$s telah diubah di %2$s", + "Password changed for %s" : "Kata sandi telah diubah untuk %s", + "If you did not request this, please contact an administrator." : "Jika Anda tidak merasa meminta ini, mohon hubungi administrator.", + "Your email address on %s was changed." : "Alamat email Anda di %s telah diubah.", + "Your email address on %s was changed by an administrator." : "Alamat surel Anda di %s telah diubah oleh administrator", + "Email address for %1$s changed on %2$s" : "Alamat email untuk %1$s telah diubah di %2$s", + "Email address changed for %s" : "Alamat email telah diubah untuk %s", + "The new email address is %s" : "Alamat email barunya yaitu %s", + "Your %s account was created" : "Akun %s Anda telah dibuat", + "Welcome aboard" : "Selamat bergabung", + "Welcome aboard %s" : "Selamat bergabung %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Selamat datang ke akun %s Anda, kini Anda dapat menambahkan, melindungi, dan membagikan data Anda.", + "Your username is: %s" : "Nama pengguna Anda: %s", + "Set your password" : "Atur kata sandi Anda", + "Go to %s" : "Pergi ke %s", + "Install Client" : "Pasang Klien", + "Logged in user must be a subadmin" : "Masuk ke dalam pengguna harus sebagai seorang subadmin", + "Delete" : "Hapus", + "Unlimited" : "Tak terbatas", + "Verifying …" : "Sedang memferivikasi …", + "Verify" : "Verifikasi", + "Migration in progress. Please wait until the migration is finished" : "Migrasi sedang dalam proses. Mohon tunggu sampai migrasi selesai", + "Migration started …" : "Migrasi dimulai …", + "Not saved" : "Belum disimpan", + "Sending…" : "Mengirim…", + "Email sent" : "Surel terkirim", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Terjadi kesalahan. Mohon unggah sertifikat PEM terenkode-ASCII.", + "Valid until {date}" : "Berlaku sampai {date}", + "Local" : "Lokal", + "Private" : "Pribadi", + "Only visible to local users" : "Hanya terlihat untuk pengguna lokal saja", + "Only visible to you" : "Hanya terlihat untuk Anda saja", + "Contacts" : "Kontak", + "Visible to local users and to trusted servers" : "Terlihat untuk semua pengguna lokal dan server yang dipercaya", + "Public" : "Publik", + "Will be synced to a global and public address book" : "Akan disinkronisasikan ke buku alamat global dan publik", + "Very weak password" : "Kata sandi sangat lemah", + "Weak password" : "Kata sandi lemah", + "So-so password" : "Kata sandi lumayan", + "Good password" : "Kata sandi baik", + "Strong password" : "Kata sandi kuat", + "An error occurred while changing your language. Please reload the page and try again." : "Galat terjadi ketika mengubah bahasa Anda. Mohon muat ulang halaman dan coba lagi.", + "An error occurred while changing your locale. Please reload the page and try again." : "Galat terjadi saat mengubah tempat Anda. Mohon muat ulang halaman dan coba lagi.", + "Select a profile picture" : "Pilih foto profil", + "Week starts on {fdow}" : "Minggu dimulai di hari {fdow}", + "Groups" : "Grup", + "Group list is empty" : "Daftar grup kosong", + "Unable to retrieve the group list" : "Tidak dapat mengambil daftar grup", + "Afrikaans (Namibia)" : "Afrika (Namibia)", + "Afrikaans (South Africa)" : "Afrika (Afrika Selatan)", + "Afrikaans" : "Afrika", + "Akan (Ghana)" : "Akan (Ghana)", + "Albanian (Albania)" : "Albania", + "Arabic (Morocco)" : "Arabic (Moroko)", + "Basque (Spain)" : "Basque (Spanyol)", + "Bosnian (Bosnia and Herzegovina)" : "Bosnian (Bosnia dan Herzegovina)", + "Catalan (Spain)" : "Catalan (Spanyol)", + "Cherokee (United States)" : "Cherokee (Amerika)", + "Cornish (United Kingdom)" : "Cornish (Britania Raya)", + "Czech (Czech Republic)" : "Czech (Republik Czech)", + "Dutch (Belgium)" : "Belanda (Belgium)", + "Dutch (Netherlands)" : "Belanda (Netherlands)", + "Dutch" : "Belanda", + "English (American Samoa)" : "Inggris (Samoa Amerika)", + "English (Australia)" : "Inggris (Australia)", + "English (Belgium)" : "Inggris (Belgium)", + "English (Belize)" : "Inggris (Belize)", + "English (Botswana)" : "Inggris (Bostwana)", + "English (Canada)" : "Inggris (Kanada)", + "English (Guam)" : "Inggris (Guam)", + "English (Hong Kong SAR China)" : "Inggris (Hong Kong SAR China)", + "English (India)" : "Inggris (India)", + "English (Ireland)" : "Inggris (Irlandia)", + "English (Jamaica)" : "Inggris (Jamaika)", + "English (Malta)" : "Inggris (Malta)", + "English (Marshall Islands)" : "Inggris (Kepulauan Marshall)", + "English (Mauritius)" : "Inggris (Mauritius)", + "English (Namibia)" : "Inggris (Namibia)", + "English (New Zealand)" : "Inggris (Selandia Baru)", + "English (Northern Mariana Islands)" : "Inggris (Kepulauan Mariana Selatan)", + "English (Pakistan)" : "Inggris (Pakistan)", + "English (Philippines)" : "Inggris (Filipina)", + "English (Singapore)" : "Inggris (Singapura)", + "English (South Africa)" : "Inggris (Afrika Selatan)", + "English (Trinidad and Tobago)" : "Inggris (Trinidad dan Tobago)", + "English (U.S. Minor Outlying Islands)" : "Inggris (Kepualuan Terluar Kecil Amerika Serikat)", + "English (U.S. Virgin Islands)" : "Inggris (Kepulauan Virgin Amerika Serikat)", + "English (United Kingdom)" : "Inggris (Britania Raya)", + "English (United States)" : "Inggris (Amerika Serikat)", + "English (Zimbabwe)" : "Inggris (Zimbabwe)", + "English" : "Inggris", + "Icelandic" : "Islandia", + "Indonesian (Indonesia)" : "Bahasa Indonesia (Indonesia)", + "Indonesian" : "Bahasa Indonesia", + "Japanese" : "Jepang", + "Malay (Brunei)" : "Melayu (Brunei)", + "Malay (Malaysia)" : "Melayu (Malaysia)", + "Malay" : "Melayu", + "Manx (United Kingdom)" : "Manx (Britania Raya)", + "Portuguese" : "Portugis", + "Romanian" : "Romania", + "Russian (Russia)" : "Rusia (Rusia)", + "Russian (Ukraine)" : "Rusia (Ukraina)", + "Russian" : "Rusia", + "Spanish (United States)" : "Spanyol (Amerika Serikat)", + "Spanish (Uruguay)" : "Spanyol (Uruguay)", + "Spanish (Venezuela)" : "Spanyol (Venezuela)", + "Spanish" : "Spanyol", + "Swedish (Finland)" : "Swedia (Finlandia)", + "Swedish (Sweden)" : "Swedia (Swedia)", + "Swedish" : "Swedia", + "Turkish (Turkey)" : "Turki (Turki)", + "Turkish" : "Turki", + "Ukrainian (Ukraine)" : "Ukraina (Ukraina)", + "Ukrainian" : "Ukraina", + "Welsh (United Kingdom)" : "Welsh (Britania Raya)", + "Zulu (South Africa)" : "Zulu (Afrika Selatan)", + "Limit to groups" : "Batasi ke grup", + "Excluded groups" : "Grup yang dikecualikan", + "Save changes" : "Simpan perubahan", + "Marked for remote wipe" : "Tandai untuk penghapusan remote", + "Device settings" : "Pengaturan perangkat", + "Allow filesystem access" : "Ijinkan akses berkas sistem", + "Rename" : "Ubah nama", + "Revoke" : "Cabut ijin", + "Wipe device" : "Hapus perangkat", + "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Mencabut token ini mungkin akan mencegah penghapusan perangkat Anda jika penghapusan belum dimulai.", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome untuk Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Aplikasi iOS Nextcloud", + "Nextcloud Android app" : "Aplikasi Android Nextcloud", + "Nextcloud Talk for iOS" : "Nextcloud Talk untuk iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk untuk Android", + "Sync client - {os}" : "Klien sync - {os}", + "This session" : "Sesi ini", + "Device" : "Perangkat", + "Last activity" : "Aktivitas terakhir", + "Devices & sessions" : "Perangkat & sesi", + "Web, desktop and mobile clients currently logged in to your account." : "Klien web, desktop dan mobile yang sedang login di akun Anda.", + "Error while creating device token" : "Terjadi kesalahan saat membuat token perangkat", + "Error while updating device token scope" : "Galat saat memperbarui bidang token perangkat", + "Error while updating device token name" : "Galat saat memperbarui nama token perangkat", + "Error while deleting the token" : "Terjadi kesalahan saat menghapus token", + "Error while wiping the device with the token" : "Galat saat menghapus perangkat dengan token", + "App name" : "Nama aplikasi", + "Create new app password" : "Buat kata sandi aplikasi baru", + "Use the credentials below to configure your app or device." : "Gunakan kredensial berikut untuk mengkonfigurasi aplikasi atau perangkat.", + "For security reasons this password will only be shown once." : "Untuk alasan keamanan kata sandi ini akan ditunjukkan hanya sekali.", + "Username" : "Nama pengguna", + "Password" : "Kata sandi", + "Done" : "Selesai", + "Show QR code for mobile apps" : "Tampilkan kode QR untuk aplikasi mobile", + "Copied!" : "Tersalin!", + "Copy" : "Salin", + "Could not copy app password. Please copy it manually." : "Tidak dapat menyalin kata sandi aplikasi. Mohon salin secara manual.", + "This app is supported via your current Nextcloud subscription." : "Aplikasi ini didukung dengan langganan Nextcloud Anda saat ini.", + "Supported" : "Didukung", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Aplikasi resmi dikembangkan oleh dan didalam komunitas. Mereka menawarkan fungsi sentral dan siap untuk penggunaan produksi.", + "Official" : "Resmi", + "by" : "oleh", + "Update to {version}" : "Perbarui ke {version}", + "Remove" : "Hapus", + "Disable" : "Nonaktifkan", + "All" : "Semua", + "Limit app usage to groups" : "Batas pemakaian aplikasi untuk grup", + "No results" : "Tidak ada hasil", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Aplikasi ini tidak mempunyai versi minimum Nextcloud yang ditetapkan. Di masa depan nanti ini akan menjadi kesalahan.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Aplikasi ini tidak mempunyai versi maksimum Nextcloud yang ditetapkan. Di masa depan nanti ini akan menjadi kesalahan.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Apl ini tidak dapat diinstal karena ketergantungan berikut belum terpenuhi:", + "View in store" : "Lihat di toko", + "Visit website" : "Kunjungi laman web", + "Report a bug" : "Laporkan kerusakan", + "User documentation" : "Dokumentasi pengguna", + "Admin documentation" : "Dokumentasi admin", + "Developer documentation" : "Dokumentasi pengembang", + "Update to {update}" : "Perbarui ke {update}", + "Results from other categories" : "Hasil dari kategori lainnya", + "No apps found for your version" : "Aplikasi tidak ditemukan untuk versi ini", + "Disable all" : "Matikan semua", + "Enable all" : "Hidupkan semua", + "Download and enable" : "Unduh dan hidupkan", + "Enable" : "Aktifkan", + "Enable untested app" : "Hidupkan aplikasi yang belum dites", + "The app will be downloaded from the app store" : "Aplikasi akan diunduh melalui toko aplikasi", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Aplikasi ini tidak ditandai sebagai versi Nextcloud Anda yang kompatibel. Jika Anda tetap ingin melanjutkannya, Anda tetap dapat memasang aplikasi. Catatan bahwa aplikasinya mungkin tidak akan berjalan seperti yang diharapkan.", + "You do not have permissions to see the details of this user" : "Anda tidak memiliki ijin untuk melihat detil pengguna ini", + "The backend does not support changing the display name" : "Backend tidak mendukung pergantian tampilan nama", + "New password" : "Kata sandi baru", + "Add user in group" : "Tambah pengguna kedalam grup", + "Set user as admin for" : "Atur pengguna sebagai admin untuk", + "Select user quota" : "Pilih kuota pengguna", + "No language set" : "Tidak ada bahasa yang disetel", + "Never" : "Tidak pernah", + "Delete user" : "Hapus pengguna", + "Disable user" : "Nonaktifkan pengguna", + "Enable user" : "Aktifkan pengguna", + "Resend welcome email" : "Kirim ulang email selamat datang", + "{size} used" : "{size} digunakan", + "Welcome mail sent!" : "Surat selamat datang terkirim!", + "Display name" : "Nama tampilan", + "Email" : "Surel", + "Group admin for" : "Grup admin untuk", + "Quota" : "Kuota", + "Language" : "Bahasa", + "Storage location" : "Lokasi penyimpanan", + "User backend" : "Backend pengguna", + "Last login" : "Log masuk terakhir", + "Default language" : "Bahasa bawaan", + "Add a new user" : "Tambah pengguna baru", + "No users in here" : "Tidak ada pengguna disini", + "Default quota" : "Kuota standar", + "Password change is disabled because the master key is disabled" : "Pengaturan kata sandi dinonaktifkan karena kunci master dinonaktifkan", + "Common languages" : "Bahasa umum", + "All languages" : "Semua bahasa", + "Your apps" : "Aplikasi anda", + "Active apps" : "Aplikasi aktif", + "Disabled apps" : "Matikan Aplikasi", + "Updates" : "Pembaruan", + "App bundles" : "Kumpulan Apl", + "{license}-licensed" : "{license}-dilisensikan", + "New user" : "Pengguna baru", + "Default quota:" : "Kuota bawaan:", + "Select default quota" : "Pilih kuota bawaan", + "Show Languages" : "Tampilkan bahasa", + "Show last login" : "Tampilkan yang terakhir masuk", + "Show user backend" : "Tampilkan pengguna backend", + "Show storage path" : "Tampilkan jalur penyimpanan", + "You are about to remove the group {group}. The users will NOT be deleted." : "Anda akan menghapus grup {group}. Pengguna di dalamnya TIDAK akan dihapus.", + "Please confirm the group removal " : "Mohon konfirmasi penghapusan grup", + "Remove group" : "Hapus grup", + "Admins" : "Admin", + "Disabled users" : "Nonaktifkan pengguna", + "Everyone" : "Semua orang", + "Add group" : "Tambah grup", + "An error occured during the request. Unable to proceed." : "Galat terjadi saat proses permintaan. Tidak dapat memproses.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Aplikasi diaktifkan namun butuh diperbarui. Anda akan dialihkan ke halaman pembaruan dalam 5 detik.", + "App update" : "Pembaruan aplikasi", + "Error: This app can not be enabled because it makes the server unstable" : "Galat: Aplikasi ini tidak dapat diaktifkan karena aplikasi ini membuat server tidak stabil", + "SSL Root Certificates" : "Sertifikat Root SSL", + "Common Name" : "Nama umum", + "Valid until" : "Berlaku sampai", + "Issued By" : "Diterbitkan oleh", + "Valid until %s" : "Berlaku sampai %s", + "Import root certificate" : "Impor sertifikat root", + "Administrator documentation" : "Dokumentasi administrator", + "Documentation" : "Dokumentasi", + "Forum" : "Forum", + "None" : "Tidak ada", + "Login" : "Masuk", + "Plain" : "Biasa", + "NT LAN Manager" : "Manajer NT LAN", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Server surel", + "Open documentation" : "Buka dokumentasi", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Sangat penting untuk mengatur server ini untuk dapat mengirim surat, seperti melakukan reset kata sandi dan notifikasi.", + "Send mode" : "Modus kirim", + "Encryption" : "Enkripsi", + "Sendmail mode" : "Mode kirim email", + "From address" : "Dari alamat", + "mail" : "surel", + "Authentication method" : "Metode otentikasi", + "Authentication required" : "Diperlukan otentikasi", + "Server address" : "Alamat server", + "Port" : "Port", + "Credentials" : "Kredensial", + "SMTP Username" : "Nama pengguna SMTP", + "SMTP Password" : "Kata sandi SMTP", + "Test email settings" : "Pengaturan surel percobaan", + "Send email" : "Kirim surel", + "Security & setup warnings" : "Peringatan Keamanan & Pengaturan", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Sangat penting sekali untuk semuanya diatur secara benar demi keamanan dan performa instansi Anda. Untuk membantu Anda dengan hal itu kami melakukan cek otomatis. Mohon melihat tautan dokumentasi untuk lebih lanjut.", + "All checks passed." : "Semua pemeriksaan lulus.", + "There are some errors regarding your setup." : "Terdapat beberapa galat terkait dengan setup Anda.", + "There are some warnings regarding your setup." : "Terdapat beberapa peringatan terkait dengan setup Anda.", + "Checking for system and security issues." : "Mengecek isu sistem dan keamanan", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Mohon cek kembali Petunjuk pemasangan ↗, dan cek semua galat atau peringatan di <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">log<a href=\"%2$s\">.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Cek keamanan Nextcloud Anda dengan <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">pemindaian keamanan kami ↗</a>.", + "Version" : "Versi", + "Two-Factor Authentication" : "Autentikasi Two-Factor", + "Server-side encryption" : "Enkripsi sisi-server", + "Enable server-side encryption" : "Aktifkan enkripsi sisi-server", + "Please read carefully before activating server-side encryption: " : "Mohon baca dengan teliti sebelum mengaktifkan enkripsi server-side: ", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Setelah enkripsi diaktifkan, semua berkas yang diunggah pada server mulai saat ini akan dienkripsi saat singgah pada server. Penonaktifan enkripsi hanya mungkin berhasil jika modul enkripsi yang aktif mendukung fungsi ini dan semua prasyarat (misalnya pengaturan kunci pemulihan) sudah terpenuhi.", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Enkripsi saja tidak dapat menjamin keamanan sistem. Silakan lihat dokumentasi untuk informasi lebih lanjut dalam bagaimana aplikasi enkripsi bekerja, dan kasus pendukung.", + "Be aware that encryption always increases the file size." : "Ingat bahwa enkripsi selalu menambah ukuran berkas.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Alangkah baiknya untuk membuat cadangan data secara rutin, dalam kasus enkripsi, pastikan untuk mencadangkan kunci enkripsi bersama dengan data Anda.", + "This is the final warning: Do you really want to enable encryption?" : "Ini adalah peringatan terakhir: Apakah Anda yakin ingin mengaktifkan enkripsi?", + "Enable encryption" : "Aktifkan enkripsi", + "No encryption module loaded, please enable an encryption module in the app menu." : "Tidak ada modul enkripsi yang dimuat, mohon aktifkan modul enkripsi di menu aplikasi.", + "Select default encryption module:" : "Pilih modul enkripsi baku:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Anda perlu mengganti kunci enkrispi Anda dari enkripsi lama (ownCloud <= 8.0) ke yang baru. Mohon aktifkan \"Modul enkripsi standar\" dan jalankan 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Anda perlu untuk mengubah kunci enkripsi dari enkripsi lama (ownCloud <= 8.0) ke yang baru.", + "Start migration" : "Mulai migrasi", + "Background jobs" : "Pekerjaan latar belakang", + "Last job ran %s." : "Pekerjaan terakhir dijalankan %s", + "Last job execution ran %s. Something seems wrong." : "Pekerjaan terakhir dieksekusi berjalan %s. Ada yang salah.", + "Background job didn’t run yet!" : "Pekerjaan latar belakang belum berjalan!", + "Pick background job setting" : "Pilih pengaturan pekerjaan latar belakang", + "Execute one task with each page loaded" : "Jalankan tugas setiap kali halaman dimuat", + "Sharing" : "Berbagi", + "Allow apps to use the Share API" : "Izinkan aplikasi untuk menggunakan API Pembagian", + "Allow users to share via link" : "Izinkan pengguna untuk membagikan via tautan", + "Allow public uploads" : "Izinkan unggahan publik", + "Always ask for a password" : "Selalu tanya kata sandi", + "Enforce password protection" : "Berlakukan perlindungan sandi", + "Set default expiration date" : "Atur tanggal kadaluarsa default", + "Expire after " : "Kadaluarsa setelah ", + "days" : "hari", + "Enforce expiration date" : "Berlakukan tanggal kadaluarsa", + "Allow resharing" : "Izinkan pembagian ulang", + "Allow sharing with groups" : "Izinkan pembagian dengan grup", + "Restrict users to only share with users in their groups" : "Batasi pengguna untuk hanya membagikan dengan pengguna didalam grup mereka", + "Exclude groups from sharing" : "Tidak termasuk grup untuk berbagi", + "These groups will still be able to receive shares, but not to initiate them." : "Grup ini akan tetap dapat menerima berbagi, tatapi tidak dapat membagikan.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Perbolehkan nama pengguna otomatis terisi didialog bagikan. Jikan ini dinonaktifkan, nama pengguna atau alamat email harus dimasukkan.", + "Default share permissions" : "Ijin bawaan berbagi", + "Personal" : "Personal", + "Administration" : "Administrasi", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Dikembangkan oleh {commmunityopen}komunitas Nextcloud{linkclose}, {githubopen}sumber kode{linkclose} dilisensikan dibawah {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Sukai kami di halaman Facebook", + "Follow us on Twitter" : "Ikuti kami di Twitter", + "Follow us on Mastodon" : "Ikuti kami di Mastodon", + "Check out our blog" : "Cek blog kami", + "Subscribe to our newsletter" : "Berlangganan surat berita kami", + "Profile picture" : "Foto profil", + "Upload new" : "Unggah baru", + "Select from Files" : "Pilih dari berkas", + "Remove image" : "Hapus gambar", + "png or jpg, max. 20 MB" : "png atau jpg, maks. 20 MB", + "Picture provided by original account" : "Gambar disediakan oleh akun asli", + "Cancel" : "Batal", + "Choose as profile picture" : "Pilih sebagai gambar profil", + "Details" : "Detil", + "You are a member of the following groups:" : "Anda adalah seorang anggota dari grup berikut ini:", + "You are using <strong>%s</strong>" : "Anda menggunakan <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Anda menggunakan <strong>%1$s</strong> dari<strong>%2$s</strong> (<strong>%3$s %%</strong>)", + "Full name" : "Nama lengkap", + "No display name set" : "Nama tampilan tidak diatur", + "Your email address" : "Alamat surel Anda", + "No email address set" : "Alamat surel tidak diatur", + "For password reset and notifications" : "Untuk reset kata sandi dan notifikasi", + "Phone number" : "Nomor telefon", + "Your phone number" : "Nomor telefon Anda", + "Address" : "Alamat", + "Your postal address" : "Alamat post Anda", + "Website" : "Situs", + "It can take up to 24 hours before the account is displayed as verified." : "Ini akan memerlukan hingga 24 jam sebelum akun diverifikasi.", + "Link https://…" : "Tautan https://...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Twitter handle @…", + "Help translate" : "Bantu menerjemahkan", + "Current password" : "Kata sandi saat ini", + "Change password" : "Ubah kata sandi", + "Disconnect" : "Terputus", + "Not supported!" : "Tidak didukung!", + "Press ⌘-C to copy." : "Tekan ⌘-C untuk menyalin.", + "Press Ctrl-C to copy." : "Tekan CTRL-C untuk menyalin.", + "Error while loading browser sessions and device tokens" : "Galat saat memuat sesi peramban dan token perangkat", + "Store credentials" : "Simpan kredensial" +}, +"nplurals=1; plural=0;"); diff --git a/apps/settings/l10n/id.json b/apps/settings/l10n/id.json new file mode 100644 index 00000000000..e2946f0528d --- /dev/null +++ b/apps/settings/l10n/id.json @@ -0,0 +1,426 @@ +{ "translations": { + "{actor} added you to group {group}" : "{actor} menambahkan Anda ke grup {group}", + "You added {user} to group {group}" : "Anda menambahkan {user} ke grup {group}", + "{actor} added {user} to group {group}" : "{actor} menambahkan {user} kedalam grup {group}", + "An administrator added you to group {group}" : "Admin telah menambahkan Anda ke grup {group}", + "An administrator added {user} to group {group}" : "Admin menambahkan {user} kedalam grup {group}", + "{actor} removed you from group {group}" : "{actor} mengeluarkan Anda dari grup {group}", + "You removed {user} from group {group}" : "Anda mengeluarkan {user} dari grup {group}", + "{actor} removed {user} from group {group}" : "{actor} mengeluarkan {user} dari grup {group}", + "An administrator removed you from group {group}" : "Admin mengeluarkan Anda dari grup {group}", + "An administrator removed {user} from group {group}" : "Admin mengeluarkan {user} dari grup {group}", + "Your <strong>group memberships</strong> were modified" : "<strong>Keanggotaan grup</strong> Anda telah diubah", + "{actor} changed your password" : "{actor} mengganti kata sandi anda", + "You changed your password" : "Anda mengganti kata sandi", + "Your password was reset by an administrator" : "Kata sandi anda telah diatur ulang oleh administrator", + "{actor} changed your email address" : "{actor} mengubah alamat surel anda", + "You changed your email address" : "Anda mengubah alamat surel sendiri", + "Your email address was changed by an administrator" : "Alamat surel Anda telah diubah oleh administrator", + "You created app password \"{token}\"" : "Anda telah membuat kata sandi aplikasi \"{token}\"", + "You deleted app password \"{token}\"" : "Anda menghapus kata sandi aplikasi \"{token}\"", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Anda mengubah kata sandi aplikasi \"{token}\" ke \"{newToken}\"", + "You granted filesystem access to app password \"{token}\"" : "Anda mengijinkan mengakses berkas sistem ke kata sandi aplikasi \"{token}\"", + "You revoked filesystem access from app password \"{token}\"" : "Anda membatalkan ijin akses berkas sistem dari kata sandi aplikasi \"{token}\"", + "Security" : "Keamanan", + "You successfully logged in using two-factor authentication (%1$s)" : "Anda berhasil masuk menggunakan autentikasi dua-faktor (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Upaya masuk menggunakan autentikasi dua-faktor gagal (%1$s)", + "Remote wipe was started on %1$s" : "Pembersihan secara remote telah dimulai di %1$s", + "Remote wipe has finished on %1$s" : "Pembersihan secara remote telah selesai di %1$s", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "<strong>Kata sandi</strong> atau <strong>surel</strong> Anda telah diubah", + "Couldn't remove app." : "Tidak dapat menghapus aplikasi.", + "Couldn't update app." : "Tidak dapat memperbarui aplikasi.", + "Wrong password" : "Kata sandi salah", + "Saved" : "Disimpan", + "No user supplied" : "Tidak ada pengguna yang diberikan", + "Unable to change password" : "Tidak dapat mengubah kata sandi", + "Authentication error" : "Terjadi kesalahan saat otentikasi", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Berikan kata sandi pemulihan admin; Jika tidak, semua data pengguna akan hilang.", + "Wrong admin recovery password. Please check the password and try again." : "Kata sandi pemulihan admin salah. Periksa kata sandi dan ulangi kembali.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Backend tidak mendukung perubahan kata sandi, namun kunci enkripsi pengguna telah diperbarui.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "memasang dan memperbarui aplikasi via toko aplikasi atau Federated Cloud Sharing", + "Federated Cloud Sharing" : "Federated Cloud Sharing", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL menggunakan versi %1$s yang usang(%2$s). Mohon perbarui sistem operasi Anda atau fitur sejenisnya termasuk %3$s tidak akan bekerja secara penuh.", + "Invalid SMTP password." : "Kata sandi SMTP tidak valid.", + "Email setting test" : "Uji pengaturan surel", + "Well done, %s!" : "Bagus, %s!", + "If you received this email, the email configuration seems to be correct." : "Jika Anda menerima surel ini, konfigurasi surel sepertinya benar.", + "Email could not be sent. Check your mail server log" : "Surel tidak dapat dikirim. Periksa log server mail Anda", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Terjadi masalah saat mengirim surel. Mohon periksa kembali pengaturan Anda. (Kesalahan: %s)", + "You need to set your user email before being able to send test emails." : "Anda perlu menetapkan surel pengguna Anda sebelum dapat mengirim surel percobaan.", + "Invalid mail address" : "Alamat surel salah", + "Settings saved" : "Pengaturan disimpan", + "Unable to change full name" : "Tidak dapat mengubah nama lengkap", + "Unable to change email address" : "Tidak dapat mengubah alamat email", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Untuk memverifikasi akun Twitter Anda, posting tweet berikut ini ke Twitter (pastikan untuk posting tanpa ada jeda baris):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Untuk memverifikasi Situs Anda, simpan konten berikut ini ke web-root Anda di '.well-known/CloudIdVerificationCode.txt' (pastikan dalam satu baris):", + "%1$s changed your password on %2$s." : "%1$s mengganti kata sandi Anda di %2$s", + "Your password on %s was changed." : "Kata sandi Anda di %s telah diubah.", + "Your password on %s was reset by an administrator." : "Kata sandi Anda di %s telah direset oleh administrator.", + "Password for %1$s changed on %2$s" : "Kata sandi untuk %1$s telah diubah di %2$s", + "Password changed for %s" : "Kata sandi telah diubah untuk %s", + "If you did not request this, please contact an administrator." : "Jika Anda tidak merasa meminta ini, mohon hubungi administrator.", + "Your email address on %s was changed." : "Alamat email Anda di %s telah diubah.", + "Your email address on %s was changed by an administrator." : "Alamat surel Anda di %s telah diubah oleh administrator", + "Email address for %1$s changed on %2$s" : "Alamat email untuk %1$s telah diubah di %2$s", + "Email address changed for %s" : "Alamat email telah diubah untuk %s", + "The new email address is %s" : "Alamat email barunya yaitu %s", + "Your %s account was created" : "Akun %s Anda telah dibuat", + "Welcome aboard" : "Selamat bergabung", + "Welcome aboard %s" : "Selamat bergabung %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Selamat datang ke akun %s Anda, kini Anda dapat menambahkan, melindungi, dan membagikan data Anda.", + "Your username is: %s" : "Nama pengguna Anda: %s", + "Set your password" : "Atur kata sandi Anda", + "Go to %s" : "Pergi ke %s", + "Install Client" : "Pasang Klien", + "Logged in user must be a subadmin" : "Masuk ke dalam pengguna harus sebagai seorang subadmin", + "Delete" : "Hapus", + "Unlimited" : "Tak terbatas", + "Verifying …" : "Sedang memferivikasi …", + "Verify" : "Verifikasi", + "Migration in progress. Please wait until the migration is finished" : "Migrasi sedang dalam proses. Mohon tunggu sampai migrasi selesai", + "Migration started …" : "Migrasi dimulai …", + "Not saved" : "Belum disimpan", + "Sending…" : "Mengirim…", + "Email sent" : "Surel terkirim", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Terjadi kesalahan. Mohon unggah sertifikat PEM terenkode-ASCII.", + "Valid until {date}" : "Berlaku sampai {date}", + "Local" : "Lokal", + "Private" : "Pribadi", + "Only visible to local users" : "Hanya terlihat untuk pengguna lokal saja", + "Only visible to you" : "Hanya terlihat untuk Anda saja", + "Contacts" : "Kontak", + "Visible to local users and to trusted servers" : "Terlihat untuk semua pengguna lokal dan server yang dipercaya", + "Public" : "Publik", + "Will be synced to a global and public address book" : "Akan disinkronisasikan ke buku alamat global dan publik", + "Very weak password" : "Kata sandi sangat lemah", + "Weak password" : "Kata sandi lemah", + "So-so password" : "Kata sandi lumayan", + "Good password" : "Kata sandi baik", + "Strong password" : "Kata sandi kuat", + "An error occurred while changing your language. Please reload the page and try again." : "Galat terjadi ketika mengubah bahasa Anda. Mohon muat ulang halaman dan coba lagi.", + "An error occurred while changing your locale. Please reload the page and try again." : "Galat terjadi saat mengubah tempat Anda. Mohon muat ulang halaman dan coba lagi.", + "Select a profile picture" : "Pilih foto profil", + "Week starts on {fdow}" : "Minggu dimulai di hari {fdow}", + "Groups" : "Grup", + "Group list is empty" : "Daftar grup kosong", + "Unable to retrieve the group list" : "Tidak dapat mengambil daftar grup", + "Afrikaans (Namibia)" : "Afrika (Namibia)", + "Afrikaans (South Africa)" : "Afrika (Afrika Selatan)", + "Afrikaans" : "Afrika", + "Akan (Ghana)" : "Akan (Ghana)", + "Albanian (Albania)" : "Albania", + "Arabic (Morocco)" : "Arabic (Moroko)", + "Basque (Spain)" : "Basque (Spanyol)", + "Bosnian (Bosnia and Herzegovina)" : "Bosnian (Bosnia dan Herzegovina)", + "Catalan (Spain)" : "Catalan (Spanyol)", + "Cherokee (United States)" : "Cherokee (Amerika)", + "Cornish (United Kingdom)" : "Cornish (Britania Raya)", + "Czech (Czech Republic)" : "Czech (Republik Czech)", + "Dutch (Belgium)" : "Belanda (Belgium)", + "Dutch (Netherlands)" : "Belanda (Netherlands)", + "Dutch" : "Belanda", + "English (American Samoa)" : "Inggris (Samoa Amerika)", + "English (Australia)" : "Inggris (Australia)", + "English (Belgium)" : "Inggris (Belgium)", + "English (Belize)" : "Inggris (Belize)", + "English (Botswana)" : "Inggris (Bostwana)", + "English (Canada)" : "Inggris (Kanada)", + "English (Guam)" : "Inggris (Guam)", + "English (Hong Kong SAR China)" : "Inggris (Hong Kong SAR China)", + "English (India)" : "Inggris (India)", + "English (Ireland)" : "Inggris (Irlandia)", + "English (Jamaica)" : "Inggris (Jamaika)", + "English (Malta)" : "Inggris (Malta)", + "English (Marshall Islands)" : "Inggris (Kepulauan Marshall)", + "English (Mauritius)" : "Inggris (Mauritius)", + "English (Namibia)" : "Inggris (Namibia)", + "English (New Zealand)" : "Inggris (Selandia Baru)", + "English (Northern Mariana Islands)" : "Inggris (Kepulauan Mariana Selatan)", + "English (Pakistan)" : "Inggris (Pakistan)", + "English (Philippines)" : "Inggris (Filipina)", + "English (Singapore)" : "Inggris (Singapura)", + "English (South Africa)" : "Inggris (Afrika Selatan)", + "English (Trinidad and Tobago)" : "Inggris (Trinidad dan Tobago)", + "English (U.S. Minor Outlying Islands)" : "Inggris (Kepualuan Terluar Kecil Amerika Serikat)", + "English (U.S. Virgin Islands)" : "Inggris (Kepulauan Virgin Amerika Serikat)", + "English (United Kingdom)" : "Inggris (Britania Raya)", + "English (United States)" : "Inggris (Amerika Serikat)", + "English (Zimbabwe)" : "Inggris (Zimbabwe)", + "English" : "Inggris", + "Icelandic" : "Islandia", + "Indonesian (Indonesia)" : "Bahasa Indonesia (Indonesia)", + "Indonesian" : "Bahasa Indonesia", + "Japanese" : "Jepang", + "Malay (Brunei)" : "Melayu (Brunei)", + "Malay (Malaysia)" : "Melayu (Malaysia)", + "Malay" : "Melayu", + "Manx (United Kingdom)" : "Manx (Britania Raya)", + "Portuguese" : "Portugis", + "Romanian" : "Romania", + "Russian (Russia)" : "Rusia (Rusia)", + "Russian (Ukraine)" : "Rusia (Ukraina)", + "Russian" : "Rusia", + "Spanish (United States)" : "Spanyol (Amerika Serikat)", + "Spanish (Uruguay)" : "Spanyol (Uruguay)", + "Spanish (Venezuela)" : "Spanyol (Venezuela)", + "Spanish" : "Spanyol", + "Swedish (Finland)" : "Swedia (Finlandia)", + "Swedish (Sweden)" : "Swedia (Swedia)", + "Swedish" : "Swedia", + "Turkish (Turkey)" : "Turki (Turki)", + "Turkish" : "Turki", + "Ukrainian (Ukraine)" : "Ukraina (Ukraina)", + "Ukrainian" : "Ukraina", + "Welsh (United Kingdom)" : "Welsh (Britania Raya)", + "Zulu (South Africa)" : "Zulu (Afrika Selatan)", + "Limit to groups" : "Batasi ke grup", + "Excluded groups" : "Grup yang dikecualikan", + "Save changes" : "Simpan perubahan", + "Marked for remote wipe" : "Tandai untuk penghapusan remote", + "Device settings" : "Pengaturan perangkat", + "Allow filesystem access" : "Ijinkan akses berkas sistem", + "Rename" : "Ubah nama", + "Revoke" : "Cabut ijin", + "Wipe device" : "Hapus perangkat", + "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Mencabut token ini mungkin akan mencegah penghapusan perangkat Anda jika penghapusan belum dimulai.", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome untuk Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Aplikasi iOS Nextcloud", + "Nextcloud Android app" : "Aplikasi Android Nextcloud", + "Nextcloud Talk for iOS" : "Nextcloud Talk untuk iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk untuk Android", + "Sync client - {os}" : "Klien sync - {os}", + "This session" : "Sesi ini", + "Device" : "Perangkat", + "Last activity" : "Aktivitas terakhir", + "Devices & sessions" : "Perangkat & sesi", + "Web, desktop and mobile clients currently logged in to your account." : "Klien web, desktop dan mobile yang sedang login di akun Anda.", + "Error while creating device token" : "Terjadi kesalahan saat membuat token perangkat", + "Error while updating device token scope" : "Galat saat memperbarui bidang token perangkat", + "Error while updating device token name" : "Galat saat memperbarui nama token perangkat", + "Error while deleting the token" : "Terjadi kesalahan saat menghapus token", + "Error while wiping the device with the token" : "Galat saat menghapus perangkat dengan token", + "App name" : "Nama aplikasi", + "Create new app password" : "Buat kata sandi aplikasi baru", + "Use the credentials below to configure your app or device." : "Gunakan kredensial berikut untuk mengkonfigurasi aplikasi atau perangkat.", + "For security reasons this password will only be shown once." : "Untuk alasan keamanan kata sandi ini akan ditunjukkan hanya sekali.", + "Username" : "Nama pengguna", + "Password" : "Kata sandi", + "Done" : "Selesai", + "Show QR code for mobile apps" : "Tampilkan kode QR untuk aplikasi mobile", + "Copied!" : "Tersalin!", + "Copy" : "Salin", + "Could not copy app password. Please copy it manually." : "Tidak dapat menyalin kata sandi aplikasi. Mohon salin secara manual.", + "This app is supported via your current Nextcloud subscription." : "Aplikasi ini didukung dengan langganan Nextcloud Anda saat ini.", + "Supported" : "Didukung", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Aplikasi resmi dikembangkan oleh dan didalam komunitas. Mereka menawarkan fungsi sentral dan siap untuk penggunaan produksi.", + "Official" : "Resmi", + "by" : "oleh", + "Update to {version}" : "Perbarui ke {version}", + "Remove" : "Hapus", + "Disable" : "Nonaktifkan", + "All" : "Semua", + "Limit app usage to groups" : "Batas pemakaian aplikasi untuk grup", + "No results" : "Tidak ada hasil", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Aplikasi ini tidak mempunyai versi minimum Nextcloud yang ditetapkan. Di masa depan nanti ini akan menjadi kesalahan.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Aplikasi ini tidak mempunyai versi maksimum Nextcloud yang ditetapkan. Di masa depan nanti ini akan menjadi kesalahan.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Apl ini tidak dapat diinstal karena ketergantungan berikut belum terpenuhi:", + "View in store" : "Lihat di toko", + "Visit website" : "Kunjungi laman web", + "Report a bug" : "Laporkan kerusakan", + "User documentation" : "Dokumentasi pengguna", + "Admin documentation" : "Dokumentasi admin", + "Developer documentation" : "Dokumentasi pengembang", + "Update to {update}" : "Perbarui ke {update}", + "Results from other categories" : "Hasil dari kategori lainnya", + "No apps found for your version" : "Aplikasi tidak ditemukan untuk versi ini", + "Disable all" : "Matikan semua", + "Enable all" : "Hidupkan semua", + "Download and enable" : "Unduh dan hidupkan", + "Enable" : "Aktifkan", + "Enable untested app" : "Hidupkan aplikasi yang belum dites", + "The app will be downloaded from the app store" : "Aplikasi akan diunduh melalui toko aplikasi", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Aplikasi ini tidak ditandai sebagai versi Nextcloud Anda yang kompatibel. Jika Anda tetap ingin melanjutkannya, Anda tetap dapat memasang aplikasi. Catatan bahwa aplikasinya mungkin tidak akan berjalan seperti yang diharapkan.", + "You do not have permissions to see the details of this user" : "Anda tidak memiliki ijin untuk melihat detil pengguna ini", + "The backend does not support changing the display name" : "Backend tidak mendukung pergantian tampilan nama", + "New password" : "Kata sandi baru", + "Add user in group" : "Tambah pengguna kedalam grup", + "Set user as admin for" : "Atur pengguna sebagai admin untuk", + "Select user quota" : "Pilih kuota pengguna", + "No language set" : "Tidak ada bahasa yang disetel", + "Never" : "Tidak pernah", + "Delete user" : "Hapus pengguna", + "Disable user" : "Nonaktifkan pengguna", + "Enable user" : "Aktifkan pengguna", + "Resend welcome email" : "Kirim ulang email selamat datang", + "{size} used" : "{size} digunakan", + "Welcome mail sent!" : "Surat selamat datang terkirim!", + "Display name" : "Nama tampilan", + "Email" : "Surel", + "Group admin for" : "Grup admin untuk", + "Quota" : "Kuota", + "Language" : "Bahasa", + "Storage location" : "Lokasi penyimpanan", + "User backend" : "Backend pengguna", + "Last login" : "Log masuk terakhir", + "Default language" : "Bahasa bawaan", + "Add a new user" : "Tambah pengguna baru", + "No users in here" : "Tidak ada pengguna disini", + "Default quota" : "Kuota standar", + "Password change is disabled because the master key is disabled" : "Pengaturan kata sandi dinonaktifkan karena kunci master dinonaktifkan", + "Common languages" : "Bahasa umum", + "All languages" : "Semua bahasa", + "Your apps" : "Aplikasi anda", + "Active apps" : "Aplikasi aktif", + "Disabled apps" : "Matikan Aplikasi", + "Updates" : "Pembaruan", + "App bundles" : "Kumpulan Apl", + "{license}-licensed" : "{license}-dilisensikan", + "New user" : "Pengguna baru", + "Default quota:" : "Kuota bawaan:", + "Select default quota" : "Pilih kuota bawaan", + "Show Languages" : "Tampilkan bahasa", + "Show last login" : "Tampilkan yang terakhir masuk", + "Show user backend" : "Tampilkan pengguna backend", + "Show storage path" : "Tampilkan jalur penyimpanan", + "You are about to remove the group {group}. The users will NOT be deleted." : "Anda akan menghapus grup {group}. Pengguna di dalamnya TIDAK akan dihapus.", + "Please confirm the group removal " : "Mohon konfirmasi penghapusan grup", + "Remove group" : "Hapus grup", + "Admins" : "Admin", + "Disabled users" : "Nonaktifkan pengguna", + "Everyone" : "Semua orang", + "Add group" : "Tambah grup", + "An error occured during the request. Unable to proceed." : "Galat terjadi saat proses permintaan. Tidak dapat memproses.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Aplikasi diaktifkan namun butuh diperbarui. Anda akan dialihkan ke halaman pembaruan dalam 5 detik.", + "App update" : "Pembaruan aplikasi", + "Error: This app can not be enabled because it makes the server unstable" : "Galat: Aplikasi ini tidak dapat diaktifkan karena aplikasi ini membuat server tidak stabil", + "SSL Root Certificates" : "Sertifikat Root SSL", + "Common Name" : "Nama umum", + "Valid until" : "Berlaku sampai", + "Issued By" : "Diterbitkan oleh", + "Valid until %s" : "Berlaku sampai %s", + "Import root certificate" : "Impor sertifikat root", + "Administrator documentation" : "Dokumentasi administrator", + "Documentation" : "Dokumentasi", + "Forum" : "Forum", + "None" : "Tidak ada", + "Login" : "Masuk", + "Plain" : "Biasa", + "NT LAN Manager" : "Manajer NT LAN", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Server surel", + "Open documentation" : "Buka dokumentasi", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Sangat penting untuk mengatur server ini untuk dapat mengirim surat, seperti melakukan reset kata sandi dan notifikasi.", + "Send mode" : "Modus kirim", + "Encryption" : "Enkripsi", + "Sendmail mode" : "Mode kirim email", + "From address" : "Dari alamat", + "mail" : "surel", + "Authentication method" : "Metode otentikasi", + "Authentication required" : "Diperlukan otentikasi", + "Server address" : "Alamat server", + "Port" : "Port", + "Credentials" : "Kredensial", + "SMTP Username" : "Nama pengguna SMTP", + "SMTP Password" : "Kata sandi SMTP", + "Test email settings" : "Pengaturan surel percobaan", + "Send email" : "Kirim surel", + "Security & setup warnings" : "Peringatan Keamanan & Pengaturan", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Sangat penting sekali untuk semuanya diatur secara benar demi keamanan dan performa instansi Anda. Untuk membantu Anda dengan hal itu kami melakukan cek otomatis. Mohon melihat tautan dokumentasi untuk lebih lanjut.", + "All checks passed." : "Semua pemeriksaan lulus.", + "There are some errors regarding your setup." : "Terdapat beberapa galat terkait dengan setup Anda.", + "There are some warnings regarding your setup." : "Terdapat beberapa peringatan terkait dengan setup Anda.", + "Checking for system and security issues." : "Mengecek isu sistem dan keamanan", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Mohon cek kembali Petunjuk pemasangan ↗, dan cek semua galat atau peringatan di <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">log<a href=\"%2$s\">.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Cek keamanan Nextcloud Anda dengan <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">pemindaian keamanan kami ↗</a>.", + "Version" : "Versi", + "Two-Factor Authentication" : "Autentikasi Two-Factor", + "Server-side encryption" : "Enkripsi sisi-server", + "Enable server-side encryption" : "Aktifkan enkripsi sisi-server", + "Please read carefully before activating server-side encryption: " : "Mohon baca dengan teliti sebelum mengaktifkan enkripsi server-side: ", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Setelah enkripsi diaktifkan, semua berkas yang diunggah pada server mulai saat ini akan dienkripsi saat singgah pada server. Penonaktifan enkripsi hanya mungkin berhasil jika modul enkripsi yang aktif mendukung fungsi ini dan semua prasyarat (misalnya pengaturan kunci pemulihan) sudah terpenuhi.", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Enkripsi saja tidak dapat menjamin keamanan sistem. Silakan lihat dokumentasi untuk informasi lebih lanjut dalam bagaimana aplikasi enkripsi bekerja, dan kasus pendukung.", + "Be aware that encryption always increases the file size." : "Ingat bahwa enkripsi selalu menambah ukuran berkas.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Alangkah baiknya untuk membuat cadangan data secara rutin, dalam kasus enkripsi, pastikan untuk mencadangkan kunci enkripsi bersama dengan data Anda.", + "This is the final warning: Do you really want to enable encryption?" : "Ini adalah peringatan terakhir: Apakah Anda yakin ingin mengaktifkan enkripsi?", + "Enable encryption" : "Aktifkan enkripsi", + "No encryption module loaded, please enable an encryption module in the app menu." : "Tidak ada modul enkripsi yang dimuat, mohon aktifkan modul enkripsi di menu aplikasi.", + "Select default encryption module:" : "Pilih modul enkripsi baku:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Anda perlu mengganti kunci enkrispi Anda dari enkripsi lama (ownCloud <= 8.0) ke yang baru. Mohon aktifkan \"Modul enkripsi standar\" dan jalankan 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Anda perlu untuk mengubah kunci enkripsi dari enkripsi lama (ownCloud <= 8.0) ke yang baru.", + "Start migration" : "Mulai migrasi", + "Background jobs" : "Pekerjaan latar belakang", + "Last job ran %s." : "Pekerjaan terakhir dijalankan %s", + "Last job execution ran %s. Something seems wrong." : "Pekerjaan terakhir dieksekusi berjalan %s. Ada yang salah.", + "Background job didn’t run yet!" : "Pekerjaan latar belakang belum berjalan!", + "Pick background job setting" : "Pilih pengaturan pekerjaan latar belakang", + "Execute one task with each page loaded" : "Jalankan tugas setiap kali halaman dimuat", + "Sharing" : "Berbagi", + "Allow apps to use the Share API" : "Izinkan aplikasi untuk menggunakan API Pembagian", + "Allow users to share via link" : "Izinkan pengguna untuk membagikan via tautan", + "Allow public uploads" : "Izinkan unggahan publik", + "Always ask for a password" : "Selalu tanya kata sandi", + "Enforce password protection" : "Berlakukan perlindungan sandi", + "Set default expiration date" : "Atur tanggal kadaluarsa default", + "Expire after " : "Kadaluarsa setelah ", + "days" : "hari", + "Enforce expiration date" : "Berlakukan tanggal kadaluarsa", + "Allow resharing" : "Izinkan pembagian ulang", + "Allow sharing with groups" : "Izinkan pembagian dengan grup", + "Restrict users to only share with users in their groups" : "Batasi pengguna untuk hanya membagikan dengan pengguna didalam grup mereka", + "Exclude groups from sharing" : "Tidak termasuk grup untuk berbagi", + "These groups will still be able to receive shares, but not to initiate them." : "Grup ini akan tetap dapat menerima berbagi, tatapi tidak dapat membagikan.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Perbolehkan nama pengguna otomatis terisi didialog bagikan. Jikan ini dinonaktifkan, nama pengguna atau alamat email harus dimasukkan.", + "Default share permissions" : "Ijin bawaan berbagi", + "Personal" : "Personal", + "Administration" : "Administrasi", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Dikembangkan oleh {commmunityopen}komunitas Nextcloud{linkclose}, {githubopen}sumber kode{linkclose} dilisensikan dibawah {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Sukai kami di halaman Facebook", + "Follow us on Twitter" : "Ikuti kami di Twitter", + "Follow us on Mastodon" : "Ikuti kami di Mastodon", + "Check out our blog" : "Cek blog kami", + "Subscribe to our newsletter" : "Berlangganan surat berita kami", + "Profile picture" : "Foto profil", + "Upload new" : "Unggah baru", + "Select from Files" : "Pilih dari berkas", + "Remove image" : "Hapus gambar", + "png or jpg, max. 20 MB" : "png atau jpg, maks. 20 MB", + "Picture provided by original account" : "Gambar disediakan oleh akun asli", + "Cancel" : "Batal", + "Choose as profile picture" : "Pilih sebagai gambar profil", + "Details" : "Detil", + "You are a member of the following groups:" : "Anda adalah seorang anggota dari grup berikut ini:", + "You are using <strong>%s</strong>" : "Anda menggunakan <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Anda menggunakan <strong>%1$s</strong> dari<strong>%2$s</strong> (<strong>%3$s %%</strong>)", + "Full name" : "Nama lengkap", + "No display name set" : "Nama tampilan tidak diatur", + "Your email address" : "Alamat surel Anda", + "No email address set" : "Alamat surel tidak diatur", + "For password reset and notifications" : "Untuk reset kata sandi dan notifikasi", + "Phone number" : "Nomor telefon", + "Your phone number" : "Nomor telefon Anda", + "Address" : "Alamat", + "Your postal address" : "Alamat post Anda", + "Website" : "Situs", + "It can take up to 24 hours before the account is displayed as verified." : "Ini akan memerlukan hingga 24 jam sebelum akun diverifikasi.", + "Link https://…" : "Tautan https://...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Twitter handle @…", + "Help translate" : "Bantu menerjemahkan", + "Current password" : "Kata sandi saat ini", + "Change password" : "Ubah kata sandi", + "Disconnect" : "Terputus", + "Not supported!" : "Tidak didukung!", + "Press ⌘-C to copy." : "Tekan ⌘-C untuk menyalin.", + "Press Ctrl-C to copy." : "Tekan CTRL-C untuk menyalin.", + "Error while loading browser sessions and device tokens" : "Galat saat memuat sesi peramban dan token perangkat", + "Store credentials" : "Simpan kredensial" +},"pluralForm" :"nplurals=1; plural=0;" +} \ No newline at end of file diff --git a/apps/settings/l10n/is.js b/apps/settings/l10n/is.js new file mode 100644 index 00000000000..f6036799dbd --- /dev/null +++ b/apps/settings/l10n/is.js @@ -0,0 +1,809 @@ +OC.L10N.register( + "settings", + { + "{actor} added you to group {group}" : "{actor} bætti þér við hópinn {group}", + "You added {user} to group {group}" : "Þú bættir {user} við hópinn {group}", + "{actor} added {user} to group {group}" : "{actor} bætti {user} við hópinn {group}", + "An administrator added you to group {group}" : "Stjórnandi bætti þér við hópinn {group}", + "An administrator added {user} to group {group}" : "Stjórnandi bætti {user} við hópinn {group}", + "{actor} removed you from group {group}" : "{actor} fjarlægði þig úr hópnum {group}", + "You removed {user} from group {group}" : "Þú fjarlægðir {user} úr hópnum {group}", + "{actor} removed {user} from group {group}" : "{actor} fjarlægði {user} úr hópnum {group}", + "An administrator removed you from group {group}" : "Stjórnandi fjarlægði þig úr hópnum {group}", + "An administrator removed {user} from group {group}" : "Stjórnandi fjarlægði {user} úr hópnum {group}", + "Your <strong>group memberships</strong> were modified" : "<strong>Hópaheimildum</strong> þínum var breytt", + "{actor} changed your password" : "{actor} breytti lykilorðinu þínu", + "You changed your password" : "Þú breyttir lykilorðinu þínu", + "Your password was reset by an administrator" : "Kerfisstjóri breytti lykilorðinu þínu", + "{actor} changed your email address" : "{actor} breytti tölvupóstfanginu þínu", + "You changed your email address" : "Þú breyttir tölvupóstfanginu þínu", + "Your email address was changed by an administrator" : "Kerfisstjóri breytti tölvupóstfanginu þínu", + "You created app password \"{token}\"" : "Þú bjóst til forritslykilorðið \"{token}\"", + "You deleted app password \"{token}\"" : "Þú eyddir forritslykilorðinu \"{token}\"", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Þú endurnefndir forritslykilorðið \"{token}\" sem \"{newToken}\"", + "You granted filesystem access to app password \"{token}\"" : "Þú veittir forritslykilorðinu \"{token}\" aðgang að skráakerfinu", + "You revoked filesystem access from app password \"{token}\"" : "Þú afturkallaðir aðgang að skráakerfinu á forritslykilorðinu \"{token}\"", + "Security" : "Öryggi", + "You successfully logged in using two-factor authentication (%1$s)" : "Þér tókst að skrá þig inn með tveggja-þrepa auðkenningu (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Innskráning með tveggja-þrepa auðkenningu mistókst (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Breyting hefur orðið á <strong>lykilorði</strong> eða <strong>tölvupóstfangi</strong> þínu", + "Couldn't remove app." : "Gat ekki fjarlægt forrit.", + "Couldn't update app." : "Gat ekki uppfært forrit.", + "Wrong password" : "Rangt lykilorð", + "Saved" : "Vistað", + "No user supplied" : "Enginn notandi gefinn", + "Unable to change password" : "Ekki tókst að breyta lykilorði", + "Authentication error" : "Villa við auðkenningu", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Settu inn endurheimtulykilorð kerfisstjóra, annars munu öll notandagögn tapast.", + "Wrong admin recovery password. Please check the password and try again." : "Rangt endurheimtulykilorð kerfisstjóra, athugaðu lykilorðið og reyndu aftur.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Bakendi styður ekki breytingu á lykilorði, en það tókst að uppfæra dulritunarlykil notandans.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "uppsetning eða uppfærsla forrita úr forritabúð eða með skýjasambandi", + "Federated Cloud Sharing" : "Deiling með skýjasambandi", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL er að nota úrelda útgáfu af %1$s (%2$s). Uppfærðu stýrikerfið þitt, annars er hætt við að eiginleikar á borð við %3$s virki ekki sem skyldi.", + "Invalid SMTP password." : "Ógilt SMTP-lykilorð", + "Email setting test" : "Prófa tölvupóststillingar", + "Well done, %s!" : "Vel gert, %s!", + "If you received this email, the email configuration seems to be correct." : "Fyrst að þú fékkst þennan tölvupóst, þá lítur út fyrir að tölvupóstuppsetningin sé í lagi.", + "Email could not be sent. Check your mail server log" : "Ekki var hægt að senda póst. Skoðaðu annál póstþjónsins", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Vandamál kom upp við að senda tölvupóst. Farðu yfir stillingarnar þínar. (Villa: %s)", + "You need to set your user email before being able to send test emails." : "Þú verður að gefa upp netfangið þitt svo að þú getir sent prófunarpósta.", + "Invalid mail address" : "Ógilt tölvupóstfang", + "Settings saved" : "Stillingar vistaðar", + "Unable to change full name" : "Get ekki breytt fullu nafni", + "Unable to change email address" : "Get ekki breytt tölvupóstfangi", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Til að sannprófa Twitter-aðganginn þinn, sendu þá eftirfarandi tíst á Twitter (gakktu úr skugga um að skeytinu sé ekki skipt í línur):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Til að sannprófa vefsvæðið þitt, vistaðu eftirfarandi efni á vefrótinni þinni (web-root) á '.well-known/CloudIdVerificationCode.txt' (gakktu úr skugga um að allur textinn sé í einni línu):", + "%1$s changed your password on %2$s." : "%1$s breytti lykilorðinu þínu á %2$s.", + "Your password on %s was changed." : "Lykilorðinu þínu á %s hefur verið breytt.", + "Your password on %s was reset by an administrator." : "Kerfisstjóri breytti lykilorðinu þínu á %s.", + "Password for %1$s changed on %2$s" : "Lykilorð fyrir %1$s breyttist %2$s", + "Password changed for %s" : "Lykilorð breyttist fyrir %s", + "If you did not request this, please contact an administrator." : "Ef þú baðst ekki um þetta, hafðu þá samband við kerfisstjóra.", + "Your email address on %s was changed." : "Tölvupóstfanginu þínu á %s var breytt.", + "Your email address on %s was changed by an administrator." : "Kerfisstjóri breytti tölvupóstfanginu þínu á %s.", + "Email address for %1$s changed on %2$s" : "Lykilorð fyrir %1$s breyttist þann %2$s", + "Email address changed for %s" : "Tölvupóstfang breyttist fyrir %s", + "The new email address is %s" : "Nýja tölvupóstfangið er %s", + "Your %s account was created" : "%s notandaaðgangurinn þinn var búinn til", + "Welcome aboard" : "Velkomin um borð", + "Welcome aboard %s" : "Velkomin um borð %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Velkomin(n) í %s aðganginn þinn; þú getur bætt við, varið og deilt gögnunum þínum.", + "Your username is: %s" : "Notandanafnið þitt er: %s", + "Set your password" : "Stilltu lykilorðið þitt", + "Go to %s" : "Farðu í %s", + "Install Client" : "Setja upp biðlaraforrit", + "Logged in user must be a subadmin" : "Innskráður notandi verður að vera undirstjórnandi (subadmin)", + "Create" : "Búa til", + "Change" : "Breyta", + "Delete" : "Eyða", + "Share" : "Deila", + "Unlimited" : "ótakmörkuðu", + "Verifying" : "Sannreyni", + "Verifying …" : "Sannreyni …", + "Verify" : "Sannreyna", + "Migration in progress. Please wait until the migration is finished" : "Yfirfærsla er í gangi. Dokaðu við þar til henni er lokið", + "Migration started …" : "Yfirfærsla hafin...", + "Not saved" : "Ekki vistað", + "Sending…" : "Sendi...", + "Email sent" : "Tölvupóstur sendur", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Villa kom upp. Sendu inn ASCII-kóðað PEM-skilríki.", + "Valid until {date}" : "Gildir til {date}", + "Local" : "Staðvært", + "Private" : "Einka", + "Only visible to local users" : "Einungis sýnilegt staðværum notendum", + "Only visible to you" : "Einungis sýnilegt þér", + "Contacts" : "Tengiliðir", + "Visible to local users and to trusted servers" : "Sýnilegt staðværum notendum og á treystum þjónum", + "Public" : "Opinbert", + "Will be synced to a global and public address book" : "Verður samstillt víðværri og opinberri vistfangaskrá", + "Very weak password" : "Mjög veikt lykilorð", + "Weak password" : "Veikt lykilorð", + "So-so password" : "Svo-svo lykilorð", + "Good password" : "Gott lykilorð", + "Strong password" : "Sterkt lykilorð", + "An error occurred while changing your language. Please reload the page and try again." : "Villa kom upp við að skipta um tungumálið þitt. Endurlestu síðuna og prófaðu aftur.", + "An error occurred while changing your locale. Please reload the page and try again." : "Villa kom upp við að skipta um staðfærsluna þína. Endurlestu síðuna og prófaðu aftur.", + "Select a profile picture" : "Veldu einkennismynd", + "Week starts on {fdow}" : "Vika byrjar á {fdow}", + "Groups" : "Hópar", + "Group list is empty" : "Listi yfir hópa er tómur", + "Unable to retrieve the group list" : "Tókst ekki að ná í lista yfir hópinn", + "Afrikaans (Namibia)" : "Afríkanska (Namibía)", + "Afrikaans (South Africa)" : "Afrikaans (Suður Afríka)", + "Afrikaans" : "Afríkanska", + "Akan (Ghana)" : "Akan (Gana)", + "Akan" : "Akanmál", + "Albanian (Albania)" : "Albanska (Albanía)", + "Albanian" : "Albanska", + "Amharic (Ethiopia)" : "Amharíska (Eþíópía)", + "Amharic" : "Amharíska", + "Arabic (Algeria)" : "Arabíska (Alsír)", + "Arabic (Bahrain)" : "Arabíska (Bahrain)", + "Arabic (Egypt)" : "Arabíska (Egyptaland)", + "Arabic (Iraq)" : "Arabíska (Írak)", + "Arabic (Jordan)" : "Arabíska (Jórdanía)", + "Arabic (Kuwait)" : "Arabíska (Kúveit)", + "Arabic (Lebanon)" : "Arabíska (Líbanon)", + "Arabic (Libya)" : "Arabíska (Líbýa)", + "Arabic (Morocco)" : "Arabíska (Marokkó)", + "Arabic (Oman)" : "Arabíska (Óman)", + "Arabic (Qatar)" : "Arabíska (Katar)", + "Arabic (Saudi Arabia)" : "Arabíska (Sádí-Arabía)", + "Arabic (Sudan)" : "Arabíska (Súdan)", + "Arabic (Syria)" : "Arabíska (Sýrland)", + "Arabic (Tunisia)" : "Arabíska (Túnis)", + "Arabic (United Arab Emirates)" : "Arabíska (Sameinuðu arabísku furstadæmin)", + "Arabic (Yemen)" : "Arabíska (Jemen)", + "Arabic" : "Arabíska", + "Armenian (Armenia)" : "Armenska (Armenía)", + "Armenian" : "Armenska", + "Assamese (India)" : "Assamíska (Indland)", + "Assamese" : "Assamíska", + "Asu (Tanzania)" : "Asu (Tansanía)", + "Asu" : "Asu", + "Azerbaijani (Cyrillic)" : "Aserbaídsjanska (kýrilísk)", + "Azerbaijani (Cyrillic, Azerbaijan)" : "Azerska (kýrilísk, Azerbadsjan)", + "Azerbaijani (Latin)" : "Azerska (latnesk)", + "Azerbaijani (Latin, Azerbaijan)" : "Azerska (latnesk, Azerbadsjan)", + "Azerbaijani" : "Azerbaijanska", + "Bambara (Mali)" : "Bambaríska (Malí)", + "Bambara" : "Bambaríska", + "Basque (Spain)" : "Baskneska (Spánn)", + "Basque" : "Baskneska", + "Belarusian (Belarus)" : "Hvítrússneska (Hvíta-Rússland)", + "Belarusian" : "Hvítrússneska", + "Bemba (Zambia)" : "Bemba (Sambía)", + "Bemba" : "Bemba", + "Bena (Tanzania)" : "Bena (Tansanía)", + "Bena" : "Bena", + "Bengali (Bangladesh)" : "Bengalska (Bangladesh)", + "Bengali (India)" : "Bengalska (Indland)", + "Bengali" : "Bengalska", + "Bosnian (Bosnia and Herzegovina)" : "Bosníska (Bosnía og Herzegóvína)", + "Bosnian" : "Bosníska", + "Bulgarian (Bulgaria)" : "Búlgarska (Búlgaría)", + "Bulgarian" : "Búlgarska", + "Burmese (Myanmar [Burma])" : "Búrmíska (Mjanmar [Búrma])", + "Burmese" : "Búrmíska", + "Catalan (Spain)" : "Katalónska (Spánn)", + "Catalan" : "Katalónska", + "Central Morocco Tamazight (Latin)" : "Tamazight - Mið-Marokkó (latnesk)", + "Central Morocco Tamazight (Latin, Morocco)" : "Tamazight - Mið-Marokkó (latnesk, Marokkó)", + "Central Morocco Tamazight" : "Tamazight - Mið-Marokkó", + "Cherokee (United States)" : "Cherokee (Bandaríkin)", + "Cherokee" : "Cherokee", + "Chiga (Uganda)" : "Chiga (Úganda)", + "Chiga" : "Chiga", + "Chinese (Simplified Han)" : "Kínverska (einfölduð Han)", + "Chinese (Simplified Han, China)" : "Kínverska (einfölduð Han, Kína)", + "Chinese (Simplified Han, Hong Kong SAR China)" : "Kínverska (einfölduð Han, Hong Kong SAR Kína)", + "Chinese (Simplified Han, Macau SAR China)" : "Kínverska (einfölduð Han, Maká SAR Kína)", + "Chinese (Simplified Han, Singapore)" : "Kínverska (einfölduð Han, Singapúr)", + "Chinese (Traditional Han)" : "Kínverska (hefðbundin Han)", + "Chinese (Traditional Han, Hong Kong SAR China)" : "Kínverska (hefðbundin Han, Hong Kong SAR Kína)", + "Chinese (Traditional Han, Macau SAR China)" : "Kínverska (hefðbundin Han, Maká SAR Kína)", + "Chinese (Traditional Han, Taiwan)" : "Kínverska (hefðbundin Han, Tævan)", + "Chinese" : "Kínverska", + "Cornish (United Kingdom)" : "Korníska (Bretland)", + "Cornish" : "Cornish", + "Croatian (Croatia)" : "Króatíska (Króatía)", + "Croatian" : "Króatíska", + "Czech (Czech Republic)" : "Tékkneska (Tékkland)", + "Czech" : "Tékkneska", + "Danish (Denmark)" : "Danska (Danmörk)", + "Danish" : "Danska", + "Dutch (Belgium)" : "Hollenska (Belgía)", + "Dutch (Netherlands)" : "Hollenska (Holland)", + "Dutch" : "Hollenska", + "Embu (Kenya)" : "Embu (Kenía)", + "Embu" : "Embu", + "English (American Samoa)" : "Enska (Bandarísku Samóaeyjar)", + "English (Australia)" : "Enska (Ástralía)", + "English (Belgium)" : "Enska (Belgía)", + "English (Belize)" : "Enska (Belís)", + "English (Botswana)" : "Enska (Botsvana)", + "English (Canada)" : "Enska (Kanada)", + "English (Guam)" : "Enska (Guam)", + "English (Hong Kong SAR China)" : "Enska (Hong Kong SAR Kína)", + "English (India)" : "Enska (Indland)", + "English (Ireland)" : "Enska (Írland)", + "English (Jamaica)" : "Enska (Jamaíka)", + "English (Malta)" : "Enska (Malta)", + "English (Marshall Islands)" : "Enska (Marshall-eyjar)", + "English (Mauritius)" : "Enska (Máritíus)", + "English (Namibia)" : "Enska (Namibía)", + "English (New Zealand)" : "Enska (Nýja Sjáland)", + "English (Northern Mariana Islands)" : "Enska (Norður-Maríanaeyjar)", + "English (Pakistan)" : "Enska (Pakistan)", + "English (Philippines)" : "Enska (Filippseyjar)", + "English (Singapore)" : "Enska (Singapore)", + "English (South Africa)" : "Enska (Suður-Afríka)", + "English (Trinidad and Tobago)" : "Enska (Trínidad og Tóbagó)", + "English (U.S. Minor Outlying Islands)" : "Enska (Ytri-smáeyjar Bandaríkjanna)", + "English (U.S. Virgin Islands)" : "Enska (Bandarísku Jómfrúareyjar)", + "English (United Kingdom)" : "Enska (Bretland)", + "English (United States)" : "Enska (Bandarísk)", + "English (Zimbabwe)" : "Enska (Simbabve)", + "English" : "Enska", + "Esperanto" : "Esperantó", + "Estonian (Estonia)" : "Eistneska (Eistland)", + "Estonian" : "Eistneska", + "Ewe (Ghana)" : "Ewe (Gana)", + "Ewe (Togo)" : "Ewe (Togo)", + "Ewe" : "Ewe", + "Faroese (Faroe Islands)" : "Færeska (Færeyjar)", + "Faroese" : "Færeska", + "Filipino (Philippines)" : "Filippínska (Filippseyjar)", + "Filipino" : "Filippínska", + "Finnish (Finland)" : "Finnska (Finnland)", + "Finnish" : "Finnska", + "French (Belgium)" : "Franska (Belgía)", + "French (Benin)" : "Franska (Benín)", + "French (Burkina Faso)" : "Franska (Burkina Faso)", + "French (Burundi)" : "Franska (Búrúndí)", + "French (Cameroon)" : "Franska (Kamerún)", + "French (Canada)" : "Franska (Kanada)", + "French (Central African Republic)" : "Franska (Mið-Afríkulýðveldið)", + "French (Chad)" : "Franska (Tsjad)", + "French (Comoros)" : "Franska (Kómoreyjar)", + "French (Congo - Brazzaville)" : "Franska (Kongó - Brazzaville)", + "French (Congo - Kinshasa)" : "Franska (Kongó - Kinshasa)", + "French (Côte d’Ivoire)" : "Franska (Fílabeinsströndin)", + "French (Djibouti)" : "Franska (Djíbútí)", + "French (Equatorial Guinea)" : "Franska (Miðbaugs-Gínea)", + "French (France)" : "Franska (Frakkland)", + "French (Gabon)" : "Franska (Gabon)", + "French (Guadeloupe)" : "Franska (Gvadelúpeyjar)", + "French (Guinea)" : "Franska (Gínea)", + "French (Luxembourg)" : "Franska (Lúxemborg)", + "French (Madagascar)" : "Franska (Madagaskar)", + "French (Mali)" : "Franska (Malí)", + "French (Martinique)" : "Franska (Martiník)", + "French (Monaco)" : "Franska (Mónakó)", + "French (Niger)" : "Franska (Níger)", + "French (Rwanda)" : "Franska (Rúanda)", + "French (Réunion)" : "Franska (Réunion)", + "French (Saint Barthélemy)" : "Franska (Saint Barthélemy)", + "French (Saint Martin)" : "Franska (Saint Martin)", + "French (Senegal)" : "Franska (Senegal)", + "French (Switzerland)" : "Franska (Sviss)", + "French (Togo)" : "Franska (Tógó)", + "French" : "Franska", + "Fulah (Senegal)" : "Fúlah (Senegal)", + "Fulah" : "Fulah", + "Galician (Spain)" : "Galisíska (Spánn)", + "Galician" : "Galisíska", + "Ganda (Uganda)" : "Ganda (Úganda)", + "Ganda" : "Ganda", + "Georgian (Georgia)" : "Georgíska (Georgía)", + "Georgian" : "Georgíska", + "German (Austria)" : "Þýska (Austurríki)", + "German (Belgium)" : "Þýska (Belgíu)", + "German (Germany)" : "Þýska (Þýskaland)", + "German (Liechtenstein)" : "Þýska (Liechtenstein)", + "German (Luxembourg)" : "Þýska (Lúxemborg)", + "German (Switzerland)" : "Þýska (Sviss)", + "German" : "Þýska", + "Greek (Cyprus)" : "Gríska (Kýpur)", + "Greek (Greece)" : "Gríska (Grikkland)", + "Greek" : "Gríska", + "Gujarati (India)" : "Gújaratí (Indland)", + "Gujarati" : "Gujaratíska", + "Gusii (Kenya)" : "Gusii (Kenía)", + "Gusii" : "Gusii", + "Hausa (Latin)" : "Hausa (latneskt)", + "Hausa (Latin, Ghana)" : "Hausa (latneskt, Gana)", + "Hausa (Latin, Niger)" : "Hausa (latneskt, Níger)", + "Hausa (Latin, Nigeria)" : "Hausa (latneskt, Nígería)", + "Hausa" : "Hausa", + "Hawaiian (United States)" : "Havaíska (Bandaríkin)", + "Hawaiian" : "Havaíska", + "Hebrew (Israel)" : "Hebreska (Ísrael)", + "Hebrew" : "Hebreska", + "Hindi (India)" : "Hindí (Indland)", + "Hindi" : "Hindí", + "Hungarian (Hungary)" : "Ungverska (Ungverjaland)", + "Hungarian" : "Ungverska", + "Icelandic (Iceland)" : "Íslenska (Ísland)", + "Icelandic" : "Íslenska", + "Igbo (Nigeria)" : "Igbo (Nígería)", + "Igbo" : "Igbo", + "Indonesian (Indonesia)" : "Indónesíska (Indónesía)", + "Indonesian" : "Indónesíska", + "Irish (Ireland)" : "Írska (Írland)", + "Irish" : "Írska", + "Italian (Italy)" : "Ítalska (Ítalía)", + "Italian (Switzerland)" : "Ítalska (Sviss)", + "Italian" : "Ítalska", + "Japanese (Japan)" : "Japanska (Japan)", + "Japanese" : "Japanska", + "Kabuverdianu (Cape Verde)" : "Kabuverdianu (Grænhöfðaeyjar)", + "Kabuverdianu" : "Kabuverdianu", + "Kabyle (Algeria)" : "Kabyle (Alsír)", + "Kabyle" : "Kabyle", + "Kalaallisut (Greenland)" : "Grænlenska (Grænland)", + "Kalaallisut" : "Kalaallisut", + "Kalenjin (Kenya)" : "Kalenjin (Kenía)", + "Kalenjin" : "Kalenjin", + "Kamba (Kenya)" : "Kamba (Kenía)", + "Kamba" : "Kamba", + "Kannada (India)" : "Kannada (Indland)", + "Kannada" : "Kannada", + "Kazakh (Cyrillic)" : "Kasakska (kýrílíska)", + "Kazakh (Cyrillic, Kazakhstan)" : "Kasakska (kýrílíska, Kasakstan)", + "Kazakh" : "Kasakíska", + "Khmer (Cambodia)" : "Kmeríska (Kambódía)", + "Khmer" : "Kmer", + "Kikuyu (Kenya)" : "Kikuyu (Kenía)", + "Kikuyu" : "Kikuyu", + "Kinyarwanda (Rwanda)" : "Kinyarwanda (Rúanda)", + "Kinyarwanda" : "Kinyarwanda", + "Konkani (India)" : "Konkaní (Indland)", + "Konkani" : "Konkaní", + "Korean (South Korea)" : "Kóreska (Suður-Kórea)", + "Korean" : "Kóreska", + "Koyra Chiini (Mali)" : "Koyra Chiini (Malí)", + "Koyra Chiini" : "Koyra Chiini", + "Koyraboro Senni (Mali)" : "Koyraboro Senni (Malí)", + "Koyraboro Senni" : "Koyraboro Senni", + "Langi (Tanzania)" : "Langi (Tansanía)", + "Langi" : "Langi", + "Latvian (Latvia)" : "Lettneska (Lettland)", + "Latvian" : "Lettneska", + "Lithuanian (Lithuania)" : "Litháíska (Litháen)", + "Lithuanian" : "Litháíska", + "Luo (Kenya)" : "Luo (Kenía)", + "Luo" : "Luo", + "Luyia (Kenya)" : "Luyia (Kenía)", + "Luyia" : "Luyia", + "Macedonian (Macedonia)" : "Makedónska (Makedónía)", + "Macedonian" : "Makedónska", + "Machame (Tanzania)" : "Machame (Tansanía)", + "Machame" : "Machame", + "Makonde (Tanzania)" : "Makonde (Tansanía)", + "Makonde" : "Makonde", + "Malagasy (Madagascar)" : "Malagasíska (Madagaskar)", + "Malagasy" : "Malagasíska", + "Malay (Brunei)" : "Malaíska (Brúnei)", + "Malay (Malaysia)" : "Malaíska (Malasía)", + "Malay" : "Malaíska", + "Malayalam (India)" : "Malaíalam (Indland)", + "Malayalam" : "Malasíska", + "Maltese (Malta)" : "Maltneska (Malta)", + "Maltese" : "Maltneska", + "Manx (United Kingdom)" : "Manska (Bretland)", + "Manx" : "Manx", + "Marathi (India)" : "Marathi (Indland)", + "Marathi" : "Marathi", + "Masai (Kenya)" : "Masaí (Kenía)", + "Masai (Tanzania)" : "Masaí (Tansanía)", + "Masai" : "Masaí", + "Meru (Kenya)" : "Meru (Kenía)", + "Meru" : "Meru", + "Morisyen (Mauritius)" : "Morisyen (Máritus)", + "Morisyen" : "Morisyen", + "Nama (Namibia)" : "Nama (Namibía)", + "Nama" : "Nama", + "Nepali (India)" : "Nepalska (Indland)", + "Nepali (Nepal)" : "Nepalska (Nepal)", + "Nepali" : "Nepalska", + "North Ndebele (Zimbabwe)" : "Norður-Ndebele (Simbabve)", + "North Ndebele" : "Norður-Ndebele", + "Norwegian Bokmål (Norway)" : "Norskt bókmál (Noregur)", + "Norwegian Bokmål" : "Norska (bókmál)", + "Norwegian Nynorsk (Norway)" : "Nýnorska (Noregur)", + "Norwegian Nynorsk" : "Norska (nýnorska)", + "Nyankole (Uganda)" : "Nyankole (Úganda)", + "Nyankole" : "Nyankole", + "Oriya (India)" : "Oryanska (Indland)", + "Oriya" : "Oryanska", + "Oromo (Ethiopia)" : "Oromo (Eþíópía)", + "Oromo (Kenya)" : "Oromo (Kenía)", + "Oromo" : "Oromo", + "Pashto (Afghanistan)" : "Pashto (Afghanistan)", + "Pashto" : "Pashto", + "Persian (Afghanistan)" : "Persneska (Afghanistan)", + "Persian (Iran)" : "Persneska (Íran)", + "Persian" : "Persneska", + "Polish (Poland)" : "Pólska (Pólland)", + "Polish" : "Pólska", + "Portuguese (Brazil)" : "Portúgalska (Brasilía)", + "Portuguese (Guinea-Bissau)" : "Portúgalska (Gínea-Bissá)", + "Portuguese (Mozambique)" : "Portúgalska (Mósambík)", + "Portuguese (Portugal)" : "Portúgalska (Portúgal)", + "Portuguese" : "Portúgalska", + "Punjabi (Arabic)" : "Punjabíska (arabísk)", + "Punjabi (Arabic, Pakistan)" : "Punjabíska (arabísk, Pakistan)", + "Punjabi (Gurmukhi)" : "Punjabíska (Gúrmúkí)", + "Punjabi (Gurmukhi, India)" : "Punjabíska (Gúrmúkí, Indland)", + "Punjabi" : "Punjabi", + "Romanian (Moldova)" : "Rúmenska (Moldavía)", + "Romanian (Romania)" : "Rúmenska (Rúmenía)", + "Romanian" : "Rúmenska", + "Romansh (Switzerland)" : "Rómanska (Sviss)", + "Romansh" : "Rómansh", + "Rombo (Tanzania)" : "Rombo (Tansanía)", + "Rombo" : "Rombo", + "Russian (Moldova)" : "Rússneska (Moldavía)", + "Russian (Russia)" : "Rússneska (Rússland)", + "Russian (Ukraine)" : "Rússneska (Úkraína)", + "Russian" : "Rússneska", + "Rwa (Tanzania)" : "Rwa (Tansanía)", + "Rwa" : "Rwa", + "Samburu (Kenya)" : "Samburu (Kenía)", + "Samburu" : "Samburu", + "Sango (Central African Republic)" : "Sango (Mið-Afríkulýðveldið)", + "Sango" : "Sango", + "Sena (Mozambique)" : "Sena (Mósambík)", + "Sena" : "Sena", + "Serbian (Cyrillic)" : "Serbneska (kýrílískt letur)", + "Serbian (Cyrillic, Bosnia and Herzegovina)" : "Serbneska (kyrilísk, Bosnía og Herzegóvína)", + "Serbian (Cyrillic, Montenegro)" : "Serbneska (kýrilísk, Svartfjallaland)", + "Serbian (Cyrillic, Serbia)" : "Serbneska (kýrilísk, Serbía)", + "Serbian (Latin)" : "Serbneska (latneskt letur)", + "Serbian (Latin, Bosnia and Herzegovina)" : "Serbneska (latnesk, Bosnía og Herzegóvína)", + "Serbian (Latin, Montenegro)" : "Serbneska (latnesk, Svartfjallaland)", + "Serbian (Latin, Serbia)" : "Serbneska (latnesk, Serbía)", + "Serbian" : "Serbneska", + "Shona (Zimbabwe)" : "Shona (Simbabve)", + "Shona" : "Shona", + "Sichuan Yi (China)" : "Sichuan Yi (Kína)", + "Sichuan Yi" : "Sichuan Yi", + "Sinhala (Sri Lanka)" : "Sinhala (Srí Lanka)", + "Sinhala" : "Sínhala", + "Slovak (Slovakia)" : "Slóvakíska (Slóvakía)", + "Slovak" : "Slóvakíska", + "Slovenian (Slovenia)" : "Slóvenska (Slóvenía)", + "Slovenian" : "Slóvenska", + "Soga (Uganda)" : "Soga (Úganda)", + "Soga" : "Soga", + "Somali (Djibouti)" : "Sómalska (Djíbútí)", + "Somali (Ethiopia)" : "Sómalska (Eþíópía)", + "Somali (Kenya)" : "Sómalska (Kenía)", + "Somali (Somalia)" : "Sómalska (Sómalía)", + "Somali" : "Sómalska", + "Spanish (Argentina)" : "Spænska (Argentína)", + "Spanish (Bolivia)" : "Spænska (Bólivía)", + "Spanish (Chile)" : "Spænska (Chile)", + "Spanish (Colombia)" : "Spænska (Kólumbía)", + "Spanish (Costa Rica)" : "Spænska (Kosta Ríka)", + "Spanish (Dominican Republic)" : "Spænska (Dóminíska lýðveldið)", + "Spanish (Ecuador)" : "Spænska (Ekvador)", + "Spanish (El Salvador)" : "Spænska (El Salvador)", + "Spanish (Equatorial Guinea)" : "Spænska (Miðbaugs-Gínea)", + "Spanish (Guatemala)" : "Spænska (Gvatemala)", + "Spanish (Honduras)" : "Spænska (Hondúras)", + "Spanish (Latin America)" : "Spænska (spænskumælandi Ameríka)", + "Spanish (Mexico)" : "Spænska (Mexíkó)", + "Spanish (Nicaragua)" : "Spænska (Níkaragva)", + "Spanish (Panama)" : "Spænska (Panama)", + "Spanish (Paraguay)" : "Spænska (Paragvæ)", + "Spanish (Peru)" : "Spænska (Perú)", + "Spanish (Puerto Rico)" : "Spænska (Puertó Ríkó)", + "Spanish (Spain)" : "Spænska (Spánn)", + "Spanish (United States)" : "Spænska (Bandaríkin)", + "Spanish (Uruguay)" : "Spænska (Urugvæ)", + "Spanish (Venezuela)" : "Spænska (Venesúela)", + "Spanish" : "Spænska", + "Swahili (Kenya)" : "Svahílí (Kenía)", + "Swahili (Tanzania)" : "Swahili (Tansanía)", + "Swahili" : "Svahílí", + "Swedish (Finland)" : "Sænska (Finnland)", + "Swedish (Sweden)" : "Sænska (Svíþjóð)", + "Swedish" : "Sænska", + "Swiss German (Switzerland)" : "Svissnesk þýska (Sviss)", + "Swiss German" : "Svissnesk þýska", + "Tachelhit (Latin)" : "Tachelhit (latnesk)", + "Tachelhit (Latin, Morocco)" : "Tachelhit (latnesk, Marokkó)", + "Tachelhit (Tifinagh)" : "Tachelhit (Tifinagh)", + "Tachelhit (Tifinagh, Morocco)" : "Tachelhit (Tifinagh, Marokkó)", + "Tachelhit" : "Tachelhit", + "Taita (Kenya)" : "Taita (Kenía)", + "Taita" : "Taita", + "Tamil (India)" : "Tamílska (Indland)", + "Tamil (Sri Lanka)" : "Tamílska (Srí Lanka)", + "Tamil" : "Tamílska", + "Telugu (India)" : "Telúgú (Indland)", + "Telugu" : "Telúgú", + "Teso (Kenya)" : "Teso (Kenía)", + "Teso (Uganda)" : "Teso (Úganda)", + "Teso" : "Teso", + "Thai (Thailand)" : "Tælenska (Tæland)", + "Thai" : "Tælenska", + "Tibetan (China)" : "Tíbetska (Kína)", + "Tibetan (India)" : "Tíbetska (Indland)", + "Tibetan" : "Tíbetska", + "Tigrinya (Eritrea)" : "Tigrinya (Erítrea)", + "Tigrinya (Ethiopia)" : "Tigrinya (Eþíópía)", + "Tigrinya" : "Tigrinya", + "Tonga (Tonga)" : "Tonga (Tonga-eyjar)", + "Tonga" : "Tonga", + "Turkish (Turkey)" : "Tyrkneska (Tyrkland)", + "Turkish" : "Tyrkneska", + "Ukrainian (Ukraine)" : "Úkraínska (Úkraína)", + "Ukrainian" : "Úkraínska", + "Urdu (India)" : "Urdu (Indland)", + "Urdu (Pakistan)" : "Urdu (Pakistan)", + "Urdu" : "Úrdú", + "Uzbek (Arabic)" : "Úsbekíska (arabísk)", + "Uzbek (Arabic, Afghanistan)" : "Úsbekíska (arabísk, Afganistan)", + "Uzbek (Cyrillic)" : "Úsbekíska (kýrilísk)", + "Uzbek (Cyrillic, Uzbekistan)" : "Úsbekíska (kýrilísk, Úsbekistan)", + "Uzbek (Latin)" : "Úsbekíska (latnesk)", + "Uzbek (Latin, Uzbekistan)" : "Úsbekíska (latnesk, Úsbekistan)", + "Uzbek" : "Úsbekíska", + "Vietnamese (Vietnam)" : "Víetnamska (Víetnam)", + "Vietnamese" : "Víetnamska", + "Vunjo (Tanzania)" : "Vunjo (Tansanía)", + "Vunjo" : "Vunjo", + "Welsh (United Kingdom)" : "Velska (Bretland)", + "Welsh" : "Velska", + "Yoruba (Nigeria)" : "Yoruba (Nígería)", + "Yoruba" : "Yoruba", + "Zulu (South Africa)" : "Súlú (Suður-Afríka)", + "Zulu" : "Zúlú", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Hægt er að þvinga fram tveggja-þrepa auðkenningu fyrir alla notendur og/eða tiltekna hópa. Ef þeir eru ekki með tveggja-þrepa auðkenningarþjónustu uppsetta, munu þeir ekki geta skráð sig inn á kerfið.", + "Enforce two-factor authentication" : "Þvinga fram tveggja-þrepa auðkenningu", + "Limit to groups" : "Takmarka við hópa", + "Enforcement of two-factor authentication can be set for certain groups only." : "Hægt er að þvinga fram tveggja-þátta auðkenningu fyrir einungis ákveðna hópa.", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "Tveggja-þrepa auðkenning er ekki þvinguð fram\tfyrir all meðlimi eftirfarandi hópa.", + "Enforced groups" : "Þvingaðir hópar", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "Tveggja-þrepa auðkenning er ekki þvinguð fram\tfyrir meðlimi eftirfarandi hópa.", + "Excluded groups" : "Útilokaðir hópar", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "Þegar hópar eru valdir/útilokaðir, styðjast þeir við eftirfarandi röksemdafærslu til að ákvarða hvort notandi sé með þvingaða/virka tveggja-þrepa auðkenningu: tveggja-þrepa auðkenning er virk fyrir alla nema meðlimi útilokaðra hópa. Ef hópar eru valdir, er tveggja-þrepa auðkenningvirk fyrir alla meðlimi þessara hópa. Ef notandi er bæði í völdum og í útilokuðum hópum, ræður valið og því er tveggja-þrepa auðkenning virk.", + "Save changes" : "Vista breytingar", + "Device settings" : "Stillingar tækis", + "Allow filesystem access" : "Leyfa aðgang að skráakerfi", + "Rename" : "Endurnefna", + "Revoke" : "Afturkalla", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome fyrir Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Nextcloud iOS forrit", + "Nextcloud Android app" : "Nextcloud Android forrit", + "Nextcloud Talk for iOS" : "Nextcloud Talk fyrir iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk fyrir Android", + "Sync client - {os}" : "Samstilla biðlara - {os}", + "This session" : "Þessa setu", + "Device" : "Tæki", + "Last activity" : "Síðasta virkni", + "Devices & sessions" : "Tæki og setur", + "Web, desktop and mobile clients currently logged in to your account." : "Veftól, tölvur og símar sem núna eru skráð inn á aðganginn þinn.", + "Error while creating device token" : "Villa við að búa til teikn fyrir tækið", + "Error while updating device token scope" : "Villa við að uppfæra gildissvið fyrir teikn tækisins", + "Error while updating device token name" : "Villa við að uppfæra nafn fyrir teikn tækisins", + "Error while deleting the token" : "Villa kom upp við að eyða teikninu", + "App name" : "Heiti forrits", + "Create new app password" : "Búa til nýtt lykilorð forrits", + "Use the credentials below to configure your app or device." : "Notaðu auðkennin hér fyrir neðan til að stilla forritið eða tækið.", + "For security reasons this password will only be shown once." : "Af öryggisástæðum er þetta lykilorð einungis birt einu sinni.", + "Username" : "Notandanafn", + "Password" : "Lykilorð", + "Done" : "Lokið", + "Show QR code for mobile apps" : "Birta QR-kóða fyrir snjallsímaforrit", + "Copied!" : "Afritað!", + "Copy" : "Afrita", + "Could not copy app password. Please copy it manually." : "Tókst ekki að afrita lykilorð forritsins. Afritaðu það handvirkt.", + "Supported" : "Stutt", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Opinber forrit eru þróuð af og innan samfélagsins. Þau bjóða upp á ýmsa kjarnaeiginleika og eru tilbúin til notkunar í raunvinnslu.", + "Official" : "Opinbert", + "by" : "af", + "Update to {version}" : "Uppfæra í {version}", + "Remove" : "Fjarlægja", + "Disable" : "Gera óvirkt", + "All" : "Allt", + "Limit app usage to groups" : "Takmarka notkun forrits við tiltekna hópa", + "No results" : "Engar niðurstöður", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Þetta vorrit er ekki með tiltekna neina lágmarksútgáfu Nextcloud. Þetta mun gefa villu í framtíðinni.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Þetta vorrit er ekki með tiltekna neina hámarksútgáfu Nextcloud. Þetta mun gefa villu í framtíðinni.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Ekki var hægt að setja upp forritið þar sem eftirfarandi kerfiskröfur eru ekki uppfylltar:", + "View in store" : "Skoða í hugbúnaðarsafni", + "Visit website" : "Heimsækja vefsvæðið", + "Report a bug" : "Tilkynna um villu", + "User documentation" : "Hjálparskjöl notenda", + "Admin documentation" : "Hjálparskjöl kerfisstjóra", + "Developer documentation" : "Skjölun fyrir þróunaraðila", + "Update to {update}" : "Uppfæra í {update}", + "Results from other categories" : "Niðurstöður úr öðrum flokkum", + "No apps found for your version" : "Engin forrit fundust fyrir útgáfuna þína", + "Disable all" : "Gera allt óvirkt", + "Enable all" : "Virkja allt", + "Download and enable" : "Sækja og virkja", + "Enable" : "Virkja", + "Enable untested app" : "Virkja óprófað forrit", + "The app will be downloaded from the app store" : "Forritinu verður hlaðið niður úr forritabúðinni", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Þetta forrit er merkt sem ekki samhæft við þína útgáfu af Nextcloud. Ef þú heldur áfram er mögulegt að þú getir samt sett forritið upp. En athugaðu þá að ekki er víst að forritið virki eins og skyldi.", + "You do not have permissions to see the details of this user" : "Þú hefur ekki réttindi til að skoða ítarupplýsingar um þennan notanda", + "The backend does not support changing the display name" : "Bakendinn styður ekki að birtingarnafni sé breytt", + "New password" : "Nýtt lykilorð", + "Add user in group" : "Bæta notanda í hóp", + "Set user as admin for" : "Setja notanda sem stjórnanda fyrir", + "Select user quota" : "Veldu kvóta notandans", + "No language set" : "Ekkert tungumál skilgreint", + "Never" : "Aldrei", + "Delete user" : "Eyða notanda", + "Disable user" : "Gera notanda óvirkan", + "Enable user" : "Virkja notanda", + "Resend welcome email" : "Endursenda kveðjupóst", + "{size} used" : "{size} notað", + "Welcome mail sent!" : "Kveðjupóstur sendur!", + "Display name" : "Birtingarnafn", + "Email" : "Netfang", + "Group admin for" : "Hópstjóri fyrir", + "Quota" : "Kvóti", + "Language" : "Tungumál", + "Storage location" : "Staðsetning gagnageymslu", + "User backend" : "Bakendi notanda", + "Last login" : "Síðasta innskráning", + "Default language" : "Sjálfgefið tungumál", + "Add a new user" : "Bæta við nýjum notanda", + "No users in here" : "Engir notendur hér", + "Default quota" : "Sjálfgefinn kvóti", + "Password change is disabled because the master key is disabled" : "Lykilorðabreyting er óvirk vegna þess að aðallykill er óvirkur", + "Common languages" : "Algeng tungumál", + "All languages" : "Öll tungumál", + "Your apps" : "Forritin þín", + "Active apps" : "Virk forrit", + "Disabled apps" : "Óvirk forrit", + "Updates" : "Uppfærslur", + "App bundles" : "Forritavöndlar", + "{license}-licensed" : "{license}-notkunarleyfi", + "New user" : "Nýr notandi", + "Default quota:" : "Sjálfgefinn kvóti:", + "Select default quota" : "Setja sjálfgefinn kvóta", + "Show Languages" : "Birta tungumál", + "Show last login" : "Birta síðustu innskráningu", + "Show user backend" : "Birta bakenda notanda", + "Show storage path" : "Birta slóð á gagnageymslu", + "You are about to remove the group {group}. The users will NOT be deleted." : "Þú er í þann mund að fara að fjarlægja hópinn {group}. Notendunum verður EKKI eytt.", + "Please confirm the group removal " : "Staðfestu fjarlægingu hópsins", + "Remove group" : "Fjarlægja hóp", + "Admins" : "Kerfisstjórar", + "Disabled users" : "Óvirkir notendur", + "Everyone" : "Allir", + "Add group" : "Bæta við hópi", + "An error occured during the request. Unable to proceed." : "Villa kom upp við beiðnina. Get ekki haldið áfram.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Forritið hefur verið virkjað, en það þarf að uppfæra það. Þú verður áframsendur á uppfærslusíðuna eftir 5 sekúndur.", + "App update" : "Endurnýjun forrits", + "Error: This app can not be enabled because it makes the server unstable" : "Villa: ekki er hægt að virkja þetta forrit því það gerir þjóninn óstöðugan.", + "SSL Root Certificates" : "SSL-rótarskilríki", + "Common Name" : "Almennt heiti", + "Valid until" : "Gildir til", + "Issued By" : "Gefið út af", + "Valid until %s" : "Gildir til %s", + "Import root certificate" : "Flytja inn rótarskilríki", + "Administrator documentation" : "Hjálparskjöl stjórnanda", + "Documentation" : "Hjálparskjöl", + "Forum" : "Vefspjall", + "None" : "Ekkert", + "Login" : "Innskráning", + "Plain" : "Einfalt", + "NT LAN Manager" : "NT LAN stjórnun", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Póstþjónn", + "Open documentation" : "Opna hjálparskjöl", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Það er mikilvægt að setja þennan vefþjón upp þannig að hann getir sent tölvupóst, eins og fyrir endurstillingu lykilorða og útsendingu tilkynninga.", + "Send mode" : "Sendihamur", + "Encryption" : "Dulritun", + "Sendmail mode" : "Sendmail-hamur", + "From address" : "Frá vistfangi", + "mail" : "póstur", + "Authentication method" : "Auðkenningarmáti", + "Authentication required" : "Auðkenningar krafist", + "Server address" : "Vistfang þjóns", + "Port" : "Gátt", + "Credentials" : "Auðkenni", + "SMTP Username" : "SMTP-notandanafn", + "SMTP Password" : "SMTP-lykilorð", + "Test email settings" : "Prófa tölvupóststillingar", + "Send email" : "Senda tölvupóst", + "Security & setup warnings" : "Öryggi og aðvaranir vegna uppsetningar", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Það er mikilvægt fyrir öryggi og afköst uppsetningarinnar þinnar að allt sé rétt stillt. Til að hjálpa við að svo sé, eru gerðar ýmsar sjálfvirkar prófanir. Skoðaðu hjálparskjölin til að sjá ítarlegar upplýsingar.", + "All checks passed." : "Stóðst allar prófanir.", + "There are some errors regarding your setup." : "Það komu upp villur varðandi uppsetninguna þína.", + "There are some warnings regarding your setup." : "Það komu upp viðvaranir varðandi uppsetninguna þína.", + "Checking for system and security issues." : "Athuga með kerfis- og öryggisvandamál.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Yfirfarðu vandlega <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">uppsetningarleiðbeiningarnar ↗</a>, og athugaðu hvort nokkrar villumeldingar eða aðvaranir séu í <a href=\"%2$s\">annálnum</a>.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Athugaðu öryggi Nextcloud-skýsins með <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">öryggisskönnun okkar ↗</a>.", + "Version" : "Útgáfa", + "Two-Factor Authentication" : "Tveggja-þrepa auðkenning", + "Server-side encryption" : "Dulritun á þjóni", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Dulritun á vefþjóni (server-side encryption) gerir kleift að dulrita skrár sem sendar eru inn á þennan þjón. Sá eiginleiki er ekki án áhrifa á afköst kerfisins, þannig að slíkt ætti ekki að virkja nema að vel yfirlögðu máli.", + "Enable server-side encryption" : "Virkja dulritun á þjóni", + "Please read carefully before activating server-side encryption: " : "Lestu eftirfarandi gaumgæfilega áður en þú virkjar dulritun á þjóni: ", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Þegar dulritun er virkjuð, munu frá þeim tímapunkti allar skrár sem sendar eru inn á þjóninn verða dulritaðar inni á honum. Einungis mun verða hægt að afvirkja dulritun síðar, ef virka dulritunareiningin styður þá aðgerð, og ef allar forsendur (t.d. að setja endurheimtulykil) eru uppfylltar.", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Dulritun ein og sér tryggir ekki öryggi kerfisins. Endilega skoðaðu hjálparskjölin um hvernig dulritunarforritið virkar, og dæmi um hvaða uppsetningar eru studdar.", + "Be aware that encryption always increases the file size." : "Hafðu í huga að dulritun eykur alltaf skráastærð.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Það er góður siður að taka regluleg öryggisafrit af gögnunum þínum; ef um dulrituð gögn er að ræða, gakktu úr skugga um að einnig sé tekið öryggisafrit af dulritunarlyklum ásamt gögnunum.", + "This is the final warning: Do you really want to enable encryption?" : "Þetta er lokaaðvörun: Viltu örugglega virkja dulritun?", + "Enable encryption" : "Virkja dulritun", + "No encryption module loaded, please enable an encryption module in the app menu." : "Engin dulritunareining hlaðin inn, virkjaðu dulritunareiningu í valmynd forritsins.", + "Select default encryption module:" : "Veldu sjálfgefna dulritunareiningu:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Þú verður að yfirfæra dulritunarlyklana þína úr gömlu dulrituninni (ownCloud <= 8.0) yfir í þá nýju. Virkjaðu \"Sjálfgefna dulritunareiningu\" og keyrðu 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Þú verður að yfirfæra dulritunarlyklana þína úr gömlu dulrituninni (ownCloud <= 8.0) yfir í þá nýju.", + "Start migration" : "Hefja yfirfærslu", + "Background jobs" : "Verk í bakgrunni", + "Last job ran %s." : "Síðasta verk var keyrt %s.", + "Last job execution ran %s. Something seems wrong." : "Síðasta verk var keyrt %s. Eitthvað er ekki eins og það á að sér að vera.", + "Background job didn’t run yet!" : "Bakgrunnsverk hefur ekki ennþá verið keyrt!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Til að ná bestum afköstum er mikilvægt að stilla bakgrunnsverk rétt. Fyrir stórar uppsetningar er mælt með því að nota 'cron' kerfisins. Skoðaðu hjálparskjölin til að sjá ítarlegar upplýsingar.", + "Pick background job setting" : "Veldu stillingu á bakgrunnsverki", + "Execute one task with each page loaded" : "Framkvæma eitt verk með hverri innhlaðinni síðu", + "The cron.php needs to be executed by the system user \"%s\"." : "cron.php verður að vera keyrt af kerfisnotandanum \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Til að keyra þetta þarftu að hafa PHP-POSIX-viðaukann (extension). Skoðaðu {linkstart}PHP-hjálparskjölin{linkend} fyrir nánari útlistun.", + "Sharing" : "Deiling", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Sem stjórnandi geturðu fínstillt hegðun við deilingu. Endilega kíktu á hjálparskjölin til að sjá ítarlegri upplýsingar.", + "Allow apps to use the Share API" : "Leyfa forritum að nota Share API", + "Allow users to share via link" : "Leyfa notendum að deila með tengli", + "Allow public uploads" : "Leyfa opinberar innsendingar", + "Always ask for a password" : "Alltaf biðja um lykilorð", + "Enforce password protection" : "Krefjast verndunar með aðgangsorði", + "Set default expiration date" : "Setja sjálfgefinn gildistíma", + "Expire after " : "Rennur út eftir ", + "days" : "daga", + "Enforce expiration date" : "Krefjast dagsetningar á gildistíma", + "Allow resharing" : "Leyfa endurdeilingu", + "Allow sharing with groups" : "Leyfa deilingu með hópum", + "Restrict users to only share with users in their groups" : "Takmarka notendur við að deila með notendum í þeirra eigin hópum", + "Exclude groups from sharing" : "Undanskilja hópa frá því að deila", + "These groups will still be able to receive shares, but not to initiate them." : "Þessir hópar munu samt geta tekið við deildum sameignum, en ekki geta útbúið þær.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Leyfa sjálfklárun notandanafns í deilingarglugga. Ef þetta er óvirkt þarf að setja inn fullt nafn eða tölvupóstfang notanda.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Birta fyrirvara á opinberu upphleðslusíðunni. (Birtist einungis þegar listi yfir skrár er falinn).", + "This text will be shown on the public link upload page when the file list is hidden." : "Þessi texti birtist á opinberu upphleðslusíðunni þegar listi yfir skrár er falinn.", + "Default share permissions" : "Sjálfgefnar aðgangsheimildir fyrir deilingu", + "Personal" : "Einka", + "Administration" : "Stjórnun", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Þróað af {communityopen}Nextcloud samfélaginu{linkclose}, {githubopen}grunnkóðinn{linkclose} er gefinn út með {licenseopen}AGPL{linkclose} notkunarleyfinu.", + "Like our Facebook page" : "Líkaðu við Facebook-síðuna okkar", + "Follow us on Twitter" : "Fylgstu með okkur á Twitter", + "Follow us on Mastodon" : "Fylgstu með okkur á Mastodon", + "Check out our blog" : "Kíktu á bloggið okkar", + "Subscribe to our newsletter" : "Gerstu áskrifandi að fréttabréfinu okkar", + "Profile picture" : "Einkennismynd", + "Upload new" : "Senda inn nýtt", + "Select from Files" : "Veldu skrár", + "Remove image" : "Fjarlægja mynd", + "png or jpg, max. 20 MB" : "png eða jpg, hám. 20 MB", + "Picture provided by original account" : "Mynd frá upprunalegum aðgangi", + "Cancel" : "Hætta við", + "Choose as profile picture" : "Veldu sem einkennismynd", + "Details" : "Nánar", + "You are a member of the following groups:" : "Þú ert meðlimur eftirfarandi hópa:", + "You are using <strong>%s</strong>" : "Þú ert að nota <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Þú ert að nota <strong>%1$s</strong> af <strong>%2$s</strong> (<strong>%3$s %%</strong>)", + "Full name" : "Fullt nafn", + "No display name set" : "Ekkert birtingarnafn sett", + "Your email address" : "Netfangið þitt", + "No email address set" : "Ekkert tölvupóstfang sett", + "For password reset and notifications" : "Fyrir tilkynningar og endurstillingu lykilorðs", + "Phone number" : "Símanúmer", + "Your phone number" : "Símanúmerið þitt", + "Address" : "Heimilisfang", + "Your postal address" : "Heimilisfangið þitt", + "Website" : "Vefsvæði", + "It can take up to 24 hours before the account is displayed as verified." : "Það getur tekið allt að 24 klukkustundum áður en notandaaðgangurinn er birtur sem sannvottaður.", + "Link https://…" : "Tengill https://…", + "Twitter" : "Twitter", + "Twitter handle @…" : "Twitter notandanafn @…", + "Help translate" : "Hjálpa við þýðingu", + "Locale" : "Staðfærsla", + "Current password" : "Núverandi lykilorð", + "Change password" : "Breyta lykilorði", + "Use a second factor besides your password to increase security for your account." : "Notaðu annað þrep til viðbótar lykilorðinu þínu til að auka öryggi notandaaðgangsins þíns.", + "Disconnect" : "Aftengjast", + "Not supported!" : "Óstutt!", + "Press ⌘-C to copy." : "Ýttu á ⌘-C til að afrita.", + "Press Ctrl-C to copy." : "Ýttu á Ctrl-C til að afrita.", + "Error while loading browser sessions and device tokens" : "Villa við að hlaða inn vafrasetum og teiknum fyrir tæki", + "Store credentials" : "Geyma auðkenni", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php er skráð á webcron-þjónustu til að kalla á cron.php á 15 mínútna fresti yfir HTTP.", + "Use system cron service to call the cron.php file every 15 minutes." : "Nota cron-þjónustu kerfisins til að kalla á cron.php skrána á 15 mínútna fresti.", + "Follow us on Google+" : "Fylgstu með okkur á Google+" +}, +"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"); diff --git a/apps/settings/l10n/is.json b/apps/settings/l10n/is.json new file mode 100644 index 00000000000..54f7e6e7a29 --- /dev/null +++ b/apps/settings/l10n/is.json @@ -0,0 +1,807 @@ +{ "translations": { + "{actor} added you to group {group}" : "{actor} bætti þér við hópinn {group}", + "You added {user} to group {group}" : "Þú bættir {user} við hópinn {group}", + "{actor} added {user} to group {group}" : "{actor} bætti {user} við hópinn {group}", + "An administrator added you to group {group}" : "Stjórnandi bætti þér við hópinn {group}", + "An administrator added {user} to group {group}" : "Stjórnandi bætti {user} við hópinn {group}", + "{actor} removed you from group {group}" : "{actor} fjarlægði þig úr hópnum {group}", + "You removed {user} from group {group}" : "Þú fjarlægðir {user} úr hópnum {group}", + "{actor} removed {user} from group {group}" : "{actor} fjarlægði {user} úr hópnum {group}", + "An administrator removed you from group {group}" : "Stjórnandi fjarlægði þig úr hópnum {group}", + "An administrator removed {user} from group {group}" : "Stjórnandi fjarlægði {user} úr hópnum {group}", + "Your <strong>group memberships</strong> were modified" : "<strong>Hópaheimildum</strong> þínum var breytt", + "{actor} changed your password" : "{actor} breytti lykilorðinu þínu", + "You changed your password" : "Þú breyttir lykilorðinu þínu", + "Your password was reset by an administrator" : "Kerfisstjóri breytti lykilorðinu þínu", + "{actor} changed your email address" : "{actor} breytti tölvupóstfanginu þínu", + "You changed your email address" : "Þú breyttir tölvupóstfanginu þínu", + "Your email address was changed by an administrator" : "Kerfisstjóri breytti tölvupóstfanginu þínu", + "You created app password \"{token}\"" : "Þú bjóst til forritslykilorðið \"{token}\"", + "You deleted app password \"{token}\"" : "Þú eyddir forritslykilorðinu \"{token}\"", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Þú endurnefndir forritslykilorðið \"{token}\" sem \"{newToken}\"", + "You granted filesystem access to app password \"{token}\"" : "Þú veittir forritslykilorðinu \"{token}\" aðgang að skráakerfinu", + "You revoked filesystem access from app password \"{token}\"" : "Þú afturkallaðir aðgang að skráakerfinu á forritslykilorðinu \"{token}\"", + "Security" : "Öryggi", + "You successfully logged in using two-factor authentication (%1$s)" : "Þér tókst að skrá þig inn með tveggja-þrepa auðkenningu (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Innskráning með tveggja-þrepa auðkenningu mistókst (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Breyting hefur orðið á <strong>lykilorði</strong> eða <strong>tölvupóstfangi</strong> þínu", + "Couldn't remove app." : "Gat ekki fjarlægt forrit.", + "Couldn't update app." : "Gat ekki uppfært forrit.", + "Wrong password" : "Rangt lykilorð", + "Saved" : "Vistað", + "No user supplied" : "Enginn notandi gefinn", + "Unable to change password" : "Ekki tókst að breyta lykilorði", + "Authentication error" : "Villa við auðkenningu", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Settu inn endurheimtulykilorð kerfisstjóra, annars munu öll notandagögn tapast.", + "Wrong admin recovery password. Please check the password and try again." : "Rangt endurheimtulykilorð kerfisstjóra, athugaðu lykilorðið og reyndu aftur.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Bakendi styður ekki breytingu á lykilorði, en það tókst að uppfæra dulritunarlykil notandans.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "uppsetning eða uppfærsla forrita úr forritabúð eða með skýjasambandi", + "Federated Cloud Sharing" : "Deiling með skýjasambandi", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL er að nota úrelda útgáfu af %1$s (%2$s). Uppfærðu stýrikerfið þitt, annars er hætt við að eiginleikar á borð við %3$s virki ekki sem skyldi.", + "Invalid SMTP password." : "Ógilt SMTP-lykilorð", + "Email setting test" : "Prófa tölvupóststillingar", + "Well done, %s!" : "Vel gert, %s!", + "If you received this email, the email configuration seems to be correct." : "Fyrst að þú fékkst þennan tölvupóst, þá lítur út fyrir að tölvupóstuppsetningin sé í lagi.", + "Email could not be sent. Check your mail server log" : "Ekki var hægt að senda póst. Skoðaðu annál póstþjónsins", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Vandamál kom upp við að senda tölvupóst. Farðu yfir stillingarnar þínar. (Villa: %s)", + "You need to set your user email before being able to send test emails." : "Þú verður að gefa upp netfangið þitt svo að þú getir sent prófunarpósta.", + "Invalid mail address" : "Ógilt tölvupóstfang", + "Settings saved" : "Stillingar vistaðar", + "Unable to change full name" : "Get ekki breytt fullu nafni", + "Unable to change email address" : "Get ekki breytt tölvupóstfangi", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Til að sannprófa Twitter-aðganginn þinn, sendu þá eftirfarandi tíst á Twitter (gakktu úr skugga um að skeytinu sé ekki skipt í línur):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Til að sannprófa vefsvæðið þitt, vistaðu eftirfarandi efni á vefrótinni þinni (web-root) á '.well-known/CloudIdVerificationCode.txt' (gakktu úr skugga um að allur textinn sé í einni línu):", + "%1$s changed your password on %2$s." : "%1$s breytti lykilorðinu þínu á %2$s.", + "Your password on %s was changed." : "Lykilorðinu þínu á %s hefur verið breytt.", + "Your password on %s was reset by an administrator." : "Kerfisstjóri breytti lykilorðinu þínu á %s.", + "Password for %1$s changed on %2$s" : "Lykilorð fyrir %1$s breyttist %2$s", + "Password changed for %s" : "Lykilorð breyttist fyrir %s", + "If you did not request this, please contact an administrator." : "Ef þú baðst ekki um þetta, hafðu þá samband við kerfisstjóra.", + "Your email address on %s was changed." : "Tölvupóstfanginu þínu á %s var breytt.", + "Your email address on %s was changed by an administrator." : "Kerfisstjóri breytti tölvupóstfanginu þínu á %s.", + "Email address for %1$s changed on %2$s" : "Lykilorð fyrir %1$s breyttist þann %2$s", + "Email address changed for %s" : "Tölvupóstfang breyttist fyrir %s", + "The new email address is %s" : "Nýja tölvupóstfangið er %s", + "Your %s account was created" : "%s notandaaðgangurinn þinn var búinn til", + "Welcome aboard" : "Velkomin um borð", + "Welcome aboard %s" : "Velkomin um borð %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Velkomin(n) í %s aðganginn þinn; þú getur bætt við, varið og deilt gögnunum þínum.", + "Your username is: %s" : "Notandanafnið þitt er: %s", + "Set your password" : "Stilltu lykilorðið þitt", + "Go to %s" : "Farðu í %s", + "Install Client" : "Setja upp biðlaraforrit", + "Logged in user must be a subadmin" : "Innskráður notandi verður að vera undirstjórnandi (subadmin)", + "Create" : "Búa til", + "Change" : "Breyta", + "Delete" : "Eyða", + "Share" : "Deila", + "Unlimited" : "ótakmörkuðu", + "Verifying" : "Sannreyni", + "Verifying …" : "Sannreyni …", + "Verify" : "Sannreyna", + "Migration in progress. Please wait until the migration is finished" : "Yfirfærsla er í gangi. Dokaðu við þar til henni er lokið", + "Migration started …" : "Yfirfærsla hafin...", + "Not saved" : "Ekki vistað", + "Sending…" : "Sendi...", + "Email sent" : "Tölvupóstur sendur", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Villa kom upp. Sendu inn ASCII-kóðað PEM-skilríki.", + "Valid until {date}" : "Gildir til {date}", + "Local" : "Staðvært", + "Private" : "Einka", + "Only visible to local users" : "Einungis sýnilegt staðværum notendum", + "Only visible to you" : "Einungis sýnilegt þér", + "Contacts" : "Tengiliðir", + "Visible to local users and to trusted servers" : "Sýnilegt staðværum notendum og á treystum þjónum", + "Public" : "Opinbert", + "Will be synced to a global and public address book" : "Verður samstillt víðværri og opinberri vistfangaskrá", + "Very weak password" : "Mjög veikt lykilorð", + "Weak password" : "Veikt lykilorð", + "So-so password" : "Svo-svo lykilorð", + "Good password" : "Gott lykilorð", + "Strong password" : "Sterkt lykilorð", + "An error occurred while changing your language. Please reload the page and try again." : "Villa kom upp við að skipta um tungumálið þitt. Endurlestu síðuna og prófaðu aftur.", + "An error occurred while changing your locale. Please reload the page and try again." : "Villa kom upp við að skipta um staðfærsluna þína. Endurlestu síðuna og prófaðu aftur.", + "Select a profile picture" : "Veldu einkennismynd", + "Week starts on {fdow}" : "Vika byrjar á {fdow}", + "Groups" : "Hópar", + "Group list is empty" : "Listi yfir hópa er tómur", + "Unable to retrieve the group list" : "Tókst ekki að ná í lista yfir hópinn", + "Afrikaans (Namibia)" : "Afríkanska (Namibía)", + "Afrikaans (South Africa)" : "Afrikaans (Suður Afríka)", + "Afrikaans" : "Afríkanska", + "Akan (Ghana)" : "Akan (Gana)", + "Akan" : "Akanmál", + "Albanian (Albania)" : "Albanska (Albanía)", + "Albanian" : "Albanska", + "Amharic (Ethiopia)" : "Amharíska (Eþíópía)", + "Amharic" : "Amharíska", + "Arabic (Algeria)" : "Arabíska (Alsír)", + "Arabic (Bahrain)" : "Arabíska (Bahrain)", + "Arabic (Egypt)" : "Arabíska (Egyptaland)", + "Arabic (Iraq)" : "Arabíska (Írak)", + "Arabic (Jordan)" : "Arabíska (Jórdanía)", + "Arabic (Kuwait)" : "Arabíska (Kúveit)", + "Arabic (Lebanon)" : "Arabíska (Líbanon)", + "Arabic (Libya)" : "Arabíska (Líbýa)", + "Arabic (Morocco)" : "Arabíska (Marokkó)", + "Arabic (Oman)" : "Arabíska (Óman)", + "Arabic (Qatar)" : "Arabíska (Katar)", + "Arabic (Saudi Arabia)" : "Arabíska (Sádí-Arabía)", + "Arabic (Sudan)" : "Arabíska (Súdan)", + "Arabic (Syria)" : "Arabíska (Sýrland)", + "Arabic (Tunisia)" : "Arabíska (Túnis)", + "Arabic (United Arab Emirates)" : "Arabíska (Sameinuðu arabísku furstadæmin)", + "Arabic (Yemen)" : "Arabíska (Jemen)", + "Arabic" : "Arabíska", + "Armenian (Armenia)" : "Armenska (Armenía)", + "Armenian" : "Armenska", + "Assamese (India)" : "Assamíska (Indland)", + "Assamese" : "Assamíska", + "Asu (Tanzania)" : "Asu (Tansanía)", + "Asu" : "Asu", + "Azerbaijani (Cyrillic)" : "Aserbaídsjanska (kýrilísk)", + "Azerbaijani (Cyrillic, Azerbaijan)" : "Azerska (kýrilísk, Azerbadsjan)", + "Azerbaijani (Latin)" : "Azerska (latnesk)", + "Azerbaijani (Latin, Azerbaijan)" : "Azerska (latnesk, Azerbadsjan)", + "Azerbaijani" : "Azerbaijanska", + "Bambara (Mali)" : "Bambaríska (Malí)", + "Bambara" : "Bambaríska", + "Basque (Spain)" : "Baskneska (Spánn)", + "Basque" : "Baskneska", + "Belarusian (Belarus)" : "Hvítrússneska (Hvíta-Rússland)", + "Belarusian" : "Hvítrússneska", + "Bemba (Zambia)" : "Bemba (Sambía)", + "Bemba" : "Bemba", + "Bena (Tanzania)" : "Bena (Tansanía)", + "Bena" : "Bena", + "Bengali (Bangladesh)" : "Bengalska (Bangladesh)", + "Bengali (India)" : "Bengalska (Indland)", + "Bengali" : "Bengalska", + "Bosnian (Bosnia and Herzegovina)" : "Bosníska (Bosnía og Herzegóvína)", + "Bosnian" : "Bosníska", + "Bulgarian (Bulgaria)" : "Búlgarska (Búlgaría)", + "Bulgarian" : "Búlgarska", + "Burmese (Myanmar [Burma])" : "Búrmíska (Mjanmar [Búrma])", + "Burmese" : "Búrmíska", + "Catalan (Spain)" : "Katalónska (Spánn)", + "Catalan" : "Katalónska", + "Central Morocco Tamazight (Latin)" : "Tamazight - Mið-Marokkó (latnesk)", + "Central Morocco Tamazight (Latin, Morocco)" : "Tamazight - Mið-Marokkó (latnesk, Marokkó)", + "Central Morocco Tamazight" : "Tamazight - Mið-Marokkó", + "Cherokee (United States)" : "Cherokee (Bandaríkin)", + "Cherokee" : "Cherokee", + "Chiga (Uganda)" : "Chiga (Úganda)", + "Chiga" : "Chiga", + "Chinese (Simplified Han)" : "Kínverska (einfölduð Han)", + "Chinese (Simplified Han, China)" : "Kínverska (einfölduð Han, Kína)", + "Chinese (Simplified Han, Hong Kong SAR China)" : "Kínverska (einfölduð Han, Hong Kong SAR Kína)", + "Chinese (Simplified Han, Macau SAR China)" : "Kínverska (einfölduð Han, Maká SAR Kína)", + "Chinese (Simplified Han, Singapore)" : "Kínverska (einfölduð Han, Singapúr)", + "Chinese (Traditional Han)" : "Kínverska (hefðbundin Han)", + "Chinese (Traditional Han, Hong Kong SAR China)" : "Kínverska (hefðbundin Han, Hong Kong SAR Kína)", + "Chinese (Traditional Han, Macau SAR China)" : "Kínverska (hefðbundin Han, Maká SAR Kína)", + "Chinese (Traditional Han, Taiwan)" : "Kínverska (hefðbundin Han, Tævan)", + "Chinese" : "Kínverska", + "Cornish (United Kingdom)" : "Korníska (Bretland)", + "Cornish" : "Cornish", + "Croatian (Croatia)" : "Króatíska (Króatía)", + "Croatian" : "Króatíska", + "Czech (Czech Republic)" : "Tékkneska (Tékkland)", + "Czech" : "Tékkneska", + "Danish (Denmark)" : "Danska (Danmörk)", + "Danish" : "Danska", + "Dutch (Belgium)" : "Hollenska (Belgía)", + "Dutch (Netherlands)" : "Hollenska (Holland)", + "Dutch" : "Hollenska", + "Embu (Kenya)" : "Embu (Kenía)", + "Embu" : "Embu", + "English (American Samoa)" : "Enska (Bandarísku Samóaeyjar)", + "English (Australia)" : "Enska (Ástralía)", + "English (Belgium)" : "Enska (Belgía)", + "English (Belize)" : "Enska (Belís)", + "English (Botswana)" : "Enska (Botsvana)", + "English (Canada)" : "Enska (Kanada)", + "English (Guam)" : "Enska (Guam)", + "English (Hong Kong SAR China)" : "Enska (Hong Kong SAR Kína)", + "English (India)" : "Enska (Indland)", + "English (Ireland)" : "Enska (Írland)", + "English (Jamaica)" : "Enska (Jamaíka)", + "English (Malta)" : "Enska (Malta)", + "English (Marshall Islands)" : "Enska (Marshall-eyjar)", + "English (Mauritius)" : "Enska (Máritíus)", + "English (Namibia)" : "Enska (Namibía)", + "English (New Zealand)" : "Enska (Nýja Sjáland)", + "English (Northern Mariana Islands)" : "Enska (Norður-Maríanaeyjar)", + "English (Pakistan)" : "Enska (Pakistan)", + "English (Philippines)" : "Enska (Filippseyjar)", + "English (Singapore)" : "Enska (Singapore)", + "English (South Africa)" : "Enska (Suður-Afríka)", + "English (Trinidad and Tobago)" : "Enska (Trínidad og Tóbagó)", + "English (U.S. Minor Outlying Islands)" : "Enska (Ytri-smáeyjar Bandaríkjanna)", + "English (U.S. Virgin Islands)" : "Enska (Bandarísku Jómfrúareyjar)", + "English (United Kingdom)" : "Enska (Bretland)", + "English (United States)" : "Enska (Bandarísk)", + "English (Zimbabwe)" : "Enska (Simbabve)", + "English" : "Enska", + "Esperanto" : "Esperantó", + "Estonian (Estonia)" : "Eistneska (Eistland)", + "Estonian" : "Eistneska", + "Ewe (Ghana)" : "Ewe (Gana)", + "Ewe (Togo)" : "Ewe (Togo)", + "Ewe" : "Ewe", + "Faroese (Faroe Islands)" : "Færeska (Færeyjar)", + "Faroese" : "Færeska", + "Filipino (Philippines)" : "Filippínska (Filippseyjar)", + "Filipino" : "Filippínska", + "Finnish (Finland)" : "Finnska (Finnland)", + "Finnish" : "Finnska", + "French (Belgium)" : "Franska (Belgía)", + "French (Benin)" : "Franska (Benín)", + "French (Burkina Faso)" : "Franska (Burkina Faso)", + "French (Burundi)" : "Franska (Búrúndí)", + "French (Cameroon)" : "Franska (Kamerún)", + "French (Canada)" : "Franska (Kanada)", + "French (Central African Republic)" : "Franska (Mið-Afríkulýðveldið)", + "French (Chad)" : "Franska (Tsjad)", + "French (Comoros)" : "Franska (Kómoreyjar)", + "French (Congo - Brazzaville)" : "Franska (Kongó - Brazzaville)", + "French (Congo - Kinshasa)" : "Franska (Kongó - Kinshasa)", + "French (Côte d’Ivoire)" : "Franska (Fílabeinsströndin)", + "French (Djibouti)" : "Franska (Djíbútí)", + "French (Equatorial Guinea)" : "Franska (Miðbaugs-Gínea)", + "French (France)" : "Franska (Frakkland)", + "French (Gabon)" : "Franska (Gabon)", + "French (Guadeloupe)" : "Franska (Gvadelúpeyjar)", + "French (Guinea)" : "Franska (Gínea)", + "French (Luxembourg)" : "Franska (Lúxemborg)", + "French (Madagascar)" : "Franska (Madagaskar)", + "French (Mali)" : "Franska (Malí)", + "French (Martinique)" : "Franska (Martiník)", + "French (Monaco)" : "Franska (Mónakó)", + "French (Niger)" : "Franska (Níger)", + "French (Rwanda)" : "Franska (Rúanda)", + "French (Réunion)" : "Franska (Réunion)", + "French (Saint Barthélemy)" : "Franska (Saint Barthélemy)", + "French (Saint Martin)" : "Franska (Saint Martin)", + "French (Senegal)" : "Franska (Senegal)", + "French (Switzerland)" : "Franska (Sviss)", + "French (Togo)" : "Franska (Tógó)", + "French" : "Franska", + "Fulah (Senegal)" : "Fúlah (Senegal)", + "Fulah" : "Fulah", + "Galician (Spain)" : "Galisíska (Spánn)", + "Galician" : "Galisíska", + "Ganda (Uganda)" : "Ganda (Úganda)", + "Ganda" : "Ganda", + "Georgian (Georgia)" : "Georgíska (Georgía)", + "Georgian" : "Georgíska", + "German (Austria)" : "Þýska (Austurríki)", + "German (Belgium)" : "Þýska (Belgíu)", + "German (Germany)" : "Þýska (Þýskaland)", + "German (Liechtenstein)" : "Þýska (Liechtenstein)", + "German (Luxembourg)" : "Þýska (Lúxemborg)", + "German (Switzerland)" : "Þýska (Sviss)", + "German" : "Þýska", + "Greek (Cyprus)" : "Gríska (Kýpur)", + "Greek (Greece)" : "Gríska (Grikkland)", + "Greek" : "Gríska", + "Gujarati (India)" : "Gújaratí (Indland)", + "Gujarati" : "Gujaratíska", + "Gusii (Kenya)" : "Gusii (Kenía)", + "Gusii" : "Gusii", + "Hausa (Latin)" : "Hausa (latneskt)", + "Hausa (Latin, Ghana)" : "Hausa (latneskt, Gana)", + "Hausa (Latin, Niger)" : "Hausa (latneskt, Níger)", + "Hausa (Latin, Nigeria)" : "Hausa (latneskt, Nígería)", + "Hausa" : "Hausa", + "Hawaiian (United States)" : "Havaíska (Bandaríkin)", + "Hawaiian" : "Havaíska", + "Hebrew (Israel)" : "Hebreska (Ísrael)", + "Hebrew" : "Hebreska", + "Hindi (India)" : "Hindí (Indland)", + "Hindi" : "Hindí", + "Hungarian (Hungary)" : "Ungverska (Ungverjaland)", + "Hungarian" : "Ungverska", + "Icelandic (Iceland)" : "Íslenska (Ísland)", + "Icelandic" : "Íslenska", + "Igbo (Nigeria)" : "Igbo (Nígería)", + "Igbo" : "Igbo", + "Indonesian (Indonesia)" : "Indónesíska (Indónesía)", + "Indonesian" : "Indónesíska", + "Irish (Ireland)" : "Írska (Írland)", + "Irish" : "Írska", + "Italian (Italy)" : "Ítalska (Ítalía)", + "Italian (Switzerland)" : "Ítalska (Sviss)", + "Italian" : "Ítalska", + "Japanese (Japan)" : "Japanska (Japan)", + "Japanese" : "Japanska", + "Kabuverdianu (Cape Verde)" : "Kabuverdianu (Grænhöfðaeyjar)", + "Kabuverdianu" : "Kabuverdianu", + "Kabyle (Algeria)" : "Kabyle (Alsír)", + "Kabyle" : "Kabyle", + "Kalaallisut (Greenland)" : "Grænlenska (Grænland)", + "Kalaallisut" : "Kalaallisut", + "Kalenjin (Kenya)" : "Kalenjin (Kenía)", + "Kalenjin" : "Kalenjin", + "Kamba (Kenya)" : "Kamba (Kenía)", + "Kamba" : "Kamba", + "Kannada (India)" : "Kannada (Indland)", + "Kannada" : "Kannada", + "Kazakh (Cyrillic)" : "Kasakska (kýrílíska)", + "Kazakh (Cyrillic, Kazakhstan)" : "Kasakska (kýrílíska, Kasakstan)", + "Kazakh" : "Kasakíska", + "Khmer (Cambodia)" : "Kmeríska (Kambódía)", + "Khmer" : "Kmer", + "Kikuyu (Kenya)" : "Kikuyu (Kenía)", + "Kikuyu" : "Kikuyu", + "Kinyarwanda (Rwanda)" : "Kinyarwanda (Rúanda)", + "Kinyarwanda" : "Kinyarwanda", + "Konkani (India)" : "Konkaní (Indland)", + "Konkani" : "Konkaní", + "Korean (South Korea)" : "Kóreska (Suður-Kórea)", + "Korean" : "Kóreska", + "Koyra Chiini (Mali)" : "Koyra Chiini (Malí)", + "Koyra Chiini" : "Koyra Chiini", + "Koyraboro Senni (Mali)" : "Koyraboro Senni (Malí)", + "Koyraboro Senni" : "Koyraboro Senni", + "Langi (Tanzania)" : "Langi (Tansanía)", + "Langi" : "Langi", + "Latvian (Latvia)" : "Lettneska (Lettland)", + "Latvian" : "Lettneska", + "Lithuanian (Lithuania)" : "Litháíska (Litháen)", + "Lithuanian" : "Litháíska", + "Luo (Kenya)" : "Luo (Kenía)", + "Luo" : "Luo", + "Luyia (Kenya)" : "Luyia (Kenía)", + "Luyia" : "Luyia", + "Macedonian (Macedonia)" : "Makedónska (Makedónía)", + "Macedonian" : "Makedónska", + "Machame (Tanzania)" : "Machame (Tansanía)", + "Machame" : "Machame", + "Makonde (Tanzania)" : "Makonde (Tansanía)", + "Makonde" : "Makonde", + "Malagasy (Madagascar)" : "Malagasíska (Madagaskar)", + "Malagasy" : "Malagasíska", + "Malay (Brunei)" : "Malaíska (Brúnei)", + "Malay (Malaysia)" : "Malaíska (Malasía)", + "Malay" : "Malaíska", + "Malayalam (India)" : "Malaíalam (Indland)", + "Malayalam" : "Malasíska", + "Maltese (Malta)" : "Maltneska (Malta)", + "Maltese" : "Maltneska", + "Manx (United Kingdom)" : "Manska (Bretland)", + "Manx" : "Manx", + "Marathi (India)" : "Marathi (Indland)", + "Marathi" : "Marathi", + "Masai (Kenya)" : "Masaí (Kenía)", + "Masai (Tanzania)" : "Masaí (Tansanía)", + "Masai" : "Masaí", + "Meru (Kenya)" : "Meru (Kenía)", + "Meru" : "Meru", + "Morisyen (Mauritius)" : "Morisyen (Máritus)", + "Morisyen" : "Morisyen", + "Nama (Namibia)" : "Nama (Namibía)", + "Nama" : "Nama", + "Nepali (India)" : "Nepalska (Indland)", + "Nepali (Nepal)" : "Nepalska (Nepal)", + "Nepali" : "Nepalska", + "North Ndebele (Zimbabwe)" : "Norður-Ndebele (Simbabve)", + "North Ndebele" : "Norður-Ndebele", + "Norwegian Bokmål (Norway)" : "Norskt bókmál (Noregur)", + "Norwegian Bokmål" : "Norska (bókmál)", + "Norwegian Nynorsk (Norway)" : "Nýnorska (Noregur)", + "Norwegian Nynorsk" : "Norska (nýnorska)", + "Nyankole (Uganda)" : "Nyankole (Úganda)", + "Nyankole" : "Nyankole", + "Oriya (India)" : "Oryanska (Indland)", + "Oriya" : "Oryanska", + "Oromo (Ethiopia)" : "Oromo (Eþíópía)", + "Oromo (Kenya)" : "Oromo (Kenía)", + "Oromo" : "Oromo", + "Pashto (Afghanistan)" : "Pashto (Afghanistan)", + "Pashto" : "Pashto", + "Persian (Afghanistan)" : "Persneska (Afghanistan)", + "Persian (Iran)" : "Persneska (Íran)", + "Persian" : "Persneska", + "Polish (Poland)" : "Pólska (Pólland)", + "Polish" : "Pólska", + "Portuguese (Brazil)" : "Portúgalska (Brasilía)", + "Portuguese (Guinea-Bissau)" : "Portúgalska (Gínea-Bissá)", + "Portuguese (Mozambique)" : "Portúgalska (Mósambík)", + "Portuguese (Portugal)" : "Portúgalska (Portúgal)", + "Portuguese" : "Portúgalska", + "Punjabi (Arabic)" : "Punjabíska (arabísk)", + "Punjabi (Arabic, Pakistan)" : "Punjabíska (arabísk, Pakistan)", + "Punjabi (Gurmukhi)" : "Punjabíska (Gúrmúkí)", + "Punjabi (Gurmukhi, India)" : "Punjabíska (Gúrmúkí, Indland)", + "Punjabi" : "Punjabi", + "Romanian (Moldova)" : "Rúmenska (Moldavía)", + "Romanian (Romania)" : "Rúmenska (Rúmenía)", + "Romanian" : "Rúmenska", + "Romansh (Switzerland)" : "Rómanska (Sviss)", + "Romansh" : "Rómansh", + "Rombo (Tanzania)" : "Rombo (Tansanía)", + "Rombo" : "Rombo", + "Russian (Moldova)" : "Rússneska (Moldavía)", + "Russian (Russia)" : "Rússneska (Rússland)", + "Russian (Ukraine)" : "Rússneska (Úkraína)", + "Russian" : "Rússneska", + "Rwa (Tanzania)" : "Rwa (Tansanía)", + "Rwa" : "Rwa", + "Samburu (Kenya)" : "Samburu (Kenía)", + "Samburu" : "Samburu", + "Sango (Central African Republic)" : "Sango (Mið-Afríkulýðveldið)", + "Sango" : "Sango", + "Sena (Mozambique)" : "Sena (Mósambík)", + "Sena" : "Sena", + "Serbian (Cyrillic)" : "Serbneska (kýrílískt letur)", + "Serbian (Cyrillic, Bosnia and Herzegovina)" : "Serbneska (kyrilísk, Bosnía og Herzegóvína)", + "Serbian (Cyrillic, Montenegro)" : "Serbneska (kýrilísk, Svartfjallaland)", + "Serbian (Cyrillic, Serbia)" : "Serbneska (kýrilísk, Serbía)", + "Serbian (Latin)" : "Serbneska (latneskt letur)", + "Serbian (Latin, Bosnia and Herzegovina)" : "Serbneska (latnesk, Bosnía og Herzegóvína)", + "Serbian (Latin, Montenegro)" : "Serbneska (latnesk, Svartfjallaland)", + "Serbian (Latin, Serbia)" : "Serbneska (latnesk, Serbía)", + "Serbian" : "Serbneska", + "Shona (Zimbabwe)" : "Shona (Simbabve)", + "Shona" : "Shona", + "Sichuan Yi (China)" : "Sichuan Yi (Kína)", + "Sichuan Yi" : "Sichuan Yi", + "Sinhala (Sri Lanka)" : "Sinhala (Srí Lanka)", + "Sinhala" : "Sínhala", + "Slovak (Slovakia)" : "Slóvakíska (Slóvakía)", + "Slovak" : "Slóvakíska", + "Slovenian (Slovenia)" : "Slóvenska (Slóvenía)", + "Slovenian" : "Slóvenska", + "Soga (Uganda)" : "Soga (Úganda)", + "Soga" : "Soga", + "Somali (Djibouti)" : "Sómalska (Djíbútí)", + "Somali (Ethiopia)" : "Sómalska (Eþíópía)", + "Somali (Kenya)" : "Sómalska (Kenía)", + "Somali (Somalia)" : "Sómalska (Sómalía)", + "Somali" : "Sómalska", + "Spanish (Argentina)" : "Spænska (Argentína)", + "Spanish (Bolivia)" : "Spænska (Bólivía)", + "Spanish (Chile)" : "Spænska (Chile)", + "Spanish (Colombia)" : "Spænska (Kólumbía)", + "Spanish (Costa Rica)" : "Spænska (Kosta Ríka)", + "Spanish (Dominican Republic)" : "Spænska (Dóminíska lýðveldið)", + "Spanish (Ecuador)" : "Spænska (Ekvador)", + "Spanish (El Salvador)" : "Spænska (El Salvador)", + "Spanish (Equatorial Guinea)" : "Spænska (Miðbaugs-Gínea)", + "Spanish (Guatemala)" : "Spænska (Gvatemala)", + "Spanish (Honduras)" : "Spænska (Hondúras)", + "Spanish (Latin America)" : "Spænska (spænskumælandi Ameríka)", + "Spanish (Mexico)" : "Spænska (Mexíkó)", + "Spanish (Nicaragua)" : "Spænska (Níkaragva)", + "Spanish (Panama)" : "Spænska (Panama)", + "Spanish (Paraguay)" : "Spænska (Paragvæ)", + "Spanish (Peru)" : "Spænska (Perú)", + "Spanish (Puerto Rico)" : "Spænska (Puertó Ríkó)", + "Spanish (Spain)" : "Spænska (Spánn)", + "Spanish (United States)" : "Spænska (Bandaríkin)", + "Spanish (Uruguay)" : "Spænska (Urugvæ)", + "Spanish (Venezuela)" : "Spænska (Venesúela)", + "Spanish" : "Spænska", + "Swahili (Kenya)" : "Svahílí (Kenía)", + "Swahili (Tanzania)" : "Swahili (Tansanía)", + "Swahili" : "Svahílí", + "Swedish (Finland)" : "Sænska (Finnland)", + "Swedish (Sweden)" : "Sænska (Svíþjóð)", + "Swedish" : "Sænska", + "Swiss German (Switzerland)" : "Svissnesk þýska (Sviss)", + "Swiss German" : "Svissnesk þýska", + "Tachelhit (Latin)" : "Tachelhit (latnesk)", + "Tachelhit (Latin, Morocco)" : "Tachelhit (latnesk, Marokkó)", + "Tachelhit (Tifinagh)" : "Tachelhit (Tifinagh)", + "Tachelhit (Tifinagh, Morocco)" : "Tachelhit (Tifinagh, Marokkó)", + "Tachelhit" : "Tachelhit", + "Taita (Kenya)" : "Taita (Kenía)", + "Taita" : "Taita", + "Tamil (India)" : "Tamílska (Indland)", + "Tamil (Sri Lanka)" : "Tamílska (Srí Lanka)", + "Tamil" : "Tamílska", + "Telugu (India)" : "Telúgú (Indland)", + "Telugu" : "Telúgú", + "Teso (Kenya)" : "Teso (Kenía)", + "Teso (Uganda)" : "Teso (Úganda)", + "Teso" : "Teso", + "Thai (Thailand)" : "Tælenska (Tæland)", + "Thai" : "Tælenska", + "Tibetan (China)" : "Tíbetska (Kína)", + "Tibetan (India)" : "Tíbetska (Indland)", + "Tibetan" : "Tíbetska", + "Tigrinya (Eritrea)" : "Tigrinya (Erítrea)", + "Tigrinya (Ethiopia)" : "Tigrinya (Eþíópía)", + "Tigrinya" : "Tigrinya", + "Tonga (Tonga)" : "Tonga (Tonga-eyjar)", + "Tonga" : "Tonga", + "Turkish (Turkey)" : "Tyrkneska (Tyrkland)", + "Turkish" : "Tyrkneska", + "Ukrainian (Ukraine)" : "Úkraínska (Úkraína)", + "Ukrainian" : "Úkraínska", + "Urdu (India)" : "Urdu (Indland)", + "Urdu (Pakistan)" : "Urdu (Pakistan)", + "Urdu" : "Úrdú", + "Uzbek (Arabic)" : "Úsbekíska (arabísk)", + "Uzbek (Arabic, Afghanistan)" : "Úsbekíska (arabísk, Afganistan)", + "Uzbek (Cyrillic)" : "Úsbekíska (kýrilísk)", + "Uzbek (Cyrillic, Uzbekistan)" : "Úsbekíska (kýrilísk, Úsbekistan)", + "Uzbek (Latin)" : "Úsbekíska (latnesk)", + "Uzbek (Latin, Uzbekistan)" : "Úsbekíska (latnesk, Úsbekistan)", + "Uzbek" : "Úsbekíska", + "Vietnamese (Vietnam)" : "Víetnamska (Víetnam)", + "Vietnamese" : "Víetnamska", + "Vunjo (Tanzania)" : "Vunjo (Tansanía)", + "Vunjo" : "Vunjo", + "Welsh (United Kingdom)" : "Velska (Bretland)", + "Welsh" : "Velska", + "Yoruba (Nigeria)" : "Yoruba (Nígería)", + "Yoruba" : "Yoruba", + "Zulu (South Africa)" : "Súlú (Suður-Afríka)", + "Zulu" : "Zúlú", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Hægt er að þvinga fram tveggja-þrepa auðkenningu fyrir alla notendur og/eða tiltekna hópa. Ef þeir eru ekki með tveggja-þrepa auðkenningarþjónustu uppsetta, munu þeir ekki geta skráð sig inn á kerfið.", + "Enforce two-factor authentication" : "Þvinga fram tveggja-þrepa auðkenningu", + "Limit to groups" : "Takmarka við hópa", + "Enforcement of two-factor authentication can be set for certain groups only." : "Hægt er að þvinga fram tveggja-þátta auðkenningu fyrir einungis ákveðna hópa.", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "Tveggja-þrepa auðkenning er ekki þvinguð fram\tfyrir all meðlimi eftirfarandi hópa.", + "Enforced groups" : "Þvingaðir hópar", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "Tveggja-þrepa auðkenning er ekki þvinguð fram\tfyrir meðlimi eftirfarandi hópa.", + "Excluded groups" : "Útilokaðir hópar", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "Þegar hópar eru valdir/útilokaðir, styðjast þeir við eftirfarandi röksemdafærslu til að ákvarða hvort notandi sé með þvingaða/virka tveggja-þrepa auðkenningu: tveggja-þrepa auðkenning er virk fyrir alla nema meðlimi útilokaðra hópa. Ef hópar eru valdir, er tveggja-þrepa auðkenningvirk fyrir alla meðlimi þessara hópa. Ef notandi er bæði í völdum og í útilokuðum hópum, ræður valið og því er tveggja-þrepa auðkenning virk.", + "Save changes" : "Vista breytingar", + "Device settings" : "Stillingar tækis", + "Allow filesystem access" : "Leyfa aðgang að skráakerfi", + "Rename" : "Endurnefna", + "Revoke" : "Afturkalla", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome fyrir Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Nextcloud iOS forrit", + "Nextcloud Android app" : "Nextcloud Android forrit", + "Nextcloud Talk for iOS" : "Nextcloud Talk fyrir iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk fyrir Android", + "Sync client - {os}" : "Samstilla biðlara - {os}", + "This session" : "Þessa setu", + "Device" : "Tæki", + "Last activity" : "Síðasta virkni", + "Devices & sessions" : "Tæki og setur", + "Web, desktop and mobile clients currently logged in to your account." : "Veftól, tölvur og símar sem núna eru skráð inn á aðganginn þinn.", + "Error while creating device token" : "Villa við að búa til teikn fyrir tækið", + "Error while updating device token scope" : "Villa við að uppfæra gildissvið fyrir teikn tækisins", + "Error while updating device token name" : "Villa við að uppfæra nafn fyrir teikn tækisins", + "Error while deleting the token" : "Villa kom upp við að eyða teikninu", + "App name" : "Heiti forrits", + "Create new app password" : "Búa til nýtt lykilorð forrits", + "Use the credentials below to configure your app or device." : "Notaðu auðkennin hér fyrir neðan til að stilla forritið eða tækið.", + "For security reasons this password will only be shown once." : "Af öryggisástæðum er þetta lykilorð einungis birt einu sinni.", + "Username" : "Notandanafn", + "Password" : "Lykilorð", + "Done" : "Lokið", + "Show QR code for mobile apps" : "Birta QR-kóða fyrir snjallsímaforrit", + "Copied!" : "Afritað!", + "Copy" : "Afrita", + "Could not copy app password. Please copy it manually." : "Tókst ekki að afrita lykilorð forritsins. Afritaðu það handvirkt.", + "Supported" : "Stutt", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Opinber forrit eru þróuð af og innan samfélagsins. Þau bjóða upp á ýmsa kjarnaeiginleika og eru tilbúin til notkunar í raunvinnslu.", + "Official" : "Opinbert", + "by" : "af", + "Update to {version}" : "Uppfæra í {version}", + "Remove" : "Fjarlægja", + "Disable" : "Gera óvirkt", + "All" : "Allt", + "Limit app usage to groups" : "Takmarka notkun forrits við tiltekna hópa", + "No results" : "Engar niðurstöður", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Þetta vorrit er ekki með tiltekna neina lágmarksútgáfu Nextcloud. Þetta mun gefa villu í framtíðinni.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Þetta vorrit er ekki með tiltekna neina hámarksútgáfu Nextcloud. Þetta mun gefa villu í framtíðinni.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Ekki var hægt að setja upp forritið þar sem eftirfarandi kerfiskröfur eru ekki uppfylltar:", + "View in store" : "Skoða í hugbúnaðarsafni", + "Visit website" : "Heimsækja vefsvæðið", + "Report a bug" : "Tilkynna um villu", + "User documentation" : "Hjálparskjöl notenda", + "Admin documentation" : "Hjálparskjöl kerfisstjóra", + "Developer documentation" : "Skjölun fyrir þróunaraðila", + "Update to {update}" : "Uppfæra í {update}", + "Results from other categories" : "Niðurstöður úr öðrum flokkum", + "No apps found for your version" : "Engin forrit fundust fyrir útgáfuna þína", + "Disable all" : "Gera allt óvirkt", + "Enable all" : "Virkja allt", + "Download and enable" : "Sækja og virkja", + "Enable" : "Virkja", + "Enable untested app" : "Virkja óprófað forrit", + "The app will be downloaded from the app store" : "Forritinu verður hlaðið niður úr forritabúðinni", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Þetta forrit er merkt sem ekki samhæft við þína útgáfu af Nextcloud. Ef þú heldur áfram er mögulegt að þú getir samt sett forritið upp. En athugaðu þá að ekki er víst að forritið virki eins og skyldi.", + "You do not have permissions to see the details of this user" : "Þú hefur ekki réttindi til að skoða ítarupplýsingar um þennan notanda", + "The backend does not support changing the display name" : "Bakendinn styður ekki að birtingarnafni sé breytt", + "New password" : "Nýtt lykilorð", + "Add user in group" : "Bæta notanda í hóp", + "Set user as admin for" : "Setja notanda sem stjórnanda fyrir", + "Select user quota" : "Veldu kvóta notandans", + "No language set" : "Ekkert tungumál skilgreint", + "Never" : "Aldrei", + "Delete user" : "Eyða notanda", + "Disable user" : "Gera notanda óvirkan", + "Enable user" : "Virkja notanda", + "Resend welcome email" : "Endursenda kveðjupóst", + "{size} used" : "{size} notað", + "Welcome mail sent!" : "Kveðjupóstur sendur!", + "Display name" : "Birtingarnafn", + "Email" : "Netfang", + "Group admin for" : "Hópstjóri fyrir", + "Quota" : "Kvóti", + "Language" : "Tungumál", + "Storage location" : "Staðsetning gagnageymslu", + "User backend" : "Bakendi notanda", + "Last login" : "Síðasta innskráning", + "Default language" : "Sjálfgefið tungumál", + "Add a new user" : "Bæta við nýjum notanda", + "No users in here" : "Engir notendur hér", + "Default quota" : "Sjálfgefinn kvóti", + "Password change is disabled because the master key is disabled" : "Lykilorðabreyting er óvirk vegna þess að aðallykill er óvirkur", + "Common languages" : "Algeng tungumál", + "All languages" : "Öll tungumál", + "Your apps" : "Forritin þín", + "Active apps" : "Virk forrit", + "Disabled apps" : "Óvirk forrit", + "Updates" : "Uppfærslur", + "App bundles" : "Forritavöndlar", + "{license}-licensed" : "{license}-notkunarleyfi", + "New user" : "Nýr notandi", + "Default quota:" : "Sjálfgefinn kvóti:", + "Select default quota" : "Setja sjálfgefinn kvóta", + "Show Languages" : "Birta tungumál", + "Show last login" : "Birta síðustu innskráningu", + "Show user backend" : "Birta bakenda notanda", + "Show storage path" : "Birta slóð á gagnageymslu", + "You are about to remove the group {group}. The users will NOT be deleted." : "Þú er í þann mund að fara að fjarlægja hópinn {group}. Notendunum verður EKKI eytt.", + "Please confirm the group removal " : "Staðfestu fjarlægingu hópsins", + "Remove group" : "Fjarlægja hóp", + "Admins" : "Kerfisstjórar", + "Disabled users" : "Óvirkir notendur", + "Everyone" : "Allir", + "Add group" : "Bæta við hópi", + "An error occured during the request. Unable to proceed." : "Villa kom upp við beiðnina. Get ekki haldið áfram.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Forritið hefur verið virkjað, en það þarf að uppfæra það. Þú verður áframsendur á uppfærslusíðuna eftir 5 sekúndur.", + "App update" : "Endurnýjun forrits", + "Error: This app can not be enabled because it makes the server unstable" : "Villa: ekki er hægt að virkja þetta forrit því það gerir þjóninn óstöðugan.", + "SSL Root Certificates" : "SSL-rótarskilríki", + "Common Name" : "Almennt heiti", + "Valid until" : "Gildir til", + "Issued By" : "Gefið út af", + "Valid until %s" : "Gildir til %s", + "Import root certificate" : "Flytja inn rótarskilríki", + "Administrator documentation" : "Hjálparskjöl stjórnanda", + "Documentation" : "Hjálparskjöl", + "Forum" : "Vefspjall", + "None" : "Ekkert", + "Login" : "Innskráning", + "Plain" : "Einfalt", + "NT LAN Manager" : "NT LAN stjórnun", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Póstþjónn", + "Open documentation" : "Opna hjálparskjöl", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Það er mikilvægt að setja þennan vefþjón upp þannig að hann getir sent tölvupóst, eins og fyrir endurstillingu lykilorða og útsendingu tilkynninga.", + "Send mode" : "Sendihamur", + "Encryption" : "Dulritun", + "Sendmail mode" : "Sendmail-hamur", + "From address" : "Frá vistfangi", + "mail" : "póstur", + "Authentication method" : "Auðkenningarmáti", + "Authentication required" : "Auðkenningar krafist", + "Server address" : "Vistfang þjóns", + "Port" : "Gátt", + "Credentials" : "Auðkenni", + "SMTP Username" : "SMTP-notandanafn", + "SMTP Password" : "SMTP-lykilorð", + "Test email settings" : "Prófa tölvupóststillingar", + "Send email" : "Senda tölvupóst", + "Security & setup warnings" : "Öryggi og aðvaranir vegna uppsetningar", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Það er mikilvægt fyrir öryggi og afköst uppsetningarinnar þinnar að allt sé rétt stillt. Til að hjálpa við að svo sé, eru gerðar ýmsar sjálfvirkar prófanir. Skoðaðu hjálparskjölin til að sjá ítarlegar upplýsingar.", + "All checks passed." : "Stóðst allar prófanir.", + "There are some errors regarding your setup." : "Það komu upp villur varðandi uppsetninguna þína.", + "There are some warnings regarding your setup." : "Það komu upp viðvaranir varðandi uppsetninguna þína.", + "Checking for system and security issues." : "Athuga með kerfis- og öryggisvandamál.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Yfirfarðu vandlega <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">uppsetningarleiðbeiningarnar ↗</a>, og athugaðu hvort nokkrar villumeldingar eða aðvaranir séu í <a href=\"%2$s\">annálnum</a>.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Athugaðu öryggi Nextcloud-skýsins með <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">öryggisskönnun okkar ↗</a>.", + "Version" : "Útgáfa", + "Two-Factor Authentication" : "Tveggja-þrepa auðkenning", + "Server-side encryption" : "Dulritun á þjóni", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Dulritun á vefþjóni (server-side encryption) gerir kleift að dulrita skrár sem sendar eru inn á þennan þjón. Sá eiginleiki er ekki án áhrifa á afköst kerfisins, þannig að slíkt ætti ekki að virkja nema að vel yfirlögðu máli.", + "Enable server-side encryption" : "Virkja dulritun á þjóni", + "Please read carefully before activating server-side encryption: " : "Lestu eftirfarandi gaumgæfilega áður en þú virkjar dulritun á þjóni: ", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Þegar dulritun er virkjuð, munu frá þeim tímapunkti allar skrár sem sendar eru inn á þjóninn verða dulritaðar inni á honum. Einungis mun verða hægt að afvirkja dulritun síðar, ef virka dulritunareiningin styður þá aðgerð, og ef allar forsendur (t.d. að setja endurheimtulykil) eru uppfylltar.", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Dulritun ein og sér tryggir ekki öryggi kerfisins. Endilega skoðaðu hjálparskjölin um hvernig dulritunarforritið virkar, og dæmi um hvaða uppsetningar eru studdar.", + "Be aware that encryption always increases the file size." : "Hafðu í huga að dulritun eykur alltaf skráastærð.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Það er góður siður að taka regluleg öryggisafrit af gögnunum þínum; ef um dulrituð gögn er að ræða, gakktu úr skugga um að einnig sé tekið öryggisafrit af dulritunarlyklum ásamt gögnunum.", + "This is the final warning: Do you really want to enable encryption?" : "Þetta er lokaaðvörun: Viltu örugglega virkja dulritun?", + "Enable encryption" : "Virkja dulritun", + "No encryption module loaded, please enable an encryption module in the app menu." : "Engin dulritunareining hlaðin inn, virkjaðu dulritunareiningu í valmynd forritsins.", + "Select default encryption module:" : "Veldu sjálfgefna dulritunareiningu:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Þú verður að yfirfæra dulritunarlyklana þína úr gömlu dulrituninni (ownCloud <= 8.0) yfir í þá nýju. Virkjaðu \"Sjálfgefna dulritunareiningu\" og keyrðu 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Þú verður að yfirfæra dulritunarlyklana þína úr gömlu dulrituninni (ownCloud <= 8.0) yfir í þá nýju.", + "Start migration" : "Hefja yfirfærslu", + "Background jobs" : "Verk í bakgrunni", + "Last job ran %s." : "Síðasta verk var keyrt %s.", + "Last job execution ran %s. Something seems wrong." : "Síðasta verk var keyrt %s. Eitthvað er ekki eins og það á að sér að vera.", + "Background job didn’t run yet!" : "Bakgrunnsverk hefur ekki ennþá verið keyrt!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Til að ná bestum afköstum er mikilvægt að stilla bakgrunnsverk rétt. Fyrir stórar uppsetningar er mælt með því að nota 'cron' kerfisins. Skoðaðu hjálparskjölin til að sjá ítarlegar upplýsingar.", + "Pick background job setting" : "Veldu stillingu á bakgrunnsverki", + "Execute one task with each page loaded" : "Framkvæma eitt verk með hverri innhlaðinni síðu", + "The cron.php needs to be executed by the system user \"%s\"." : "cron.php verður að vera keyrt af kerfisnotandanum \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Til að keyra þetta þarftu að hafa PHP-POSIX-viðaukann (extension). Skoðaðu {linkstart}PHP-hjálparskjölin{linkend} fyrir nánari útlistun.", + "Sharing" : "Deiling", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Sem stjórnandi geturðu fínstillt hegðun við deilingu. Endilega kíktu á hjálparskjölin til að sjá ítarlegri upplýsingar.", + "Allow apps to use the Share API" : "Leyfa forritum að nota Share API", + "Allow users to share via link" : "Leyfa notendum að deila með tengli", + "Allow public uploads" : "Leyfa opinberar innsendingar", + "Always ask for a password" : "Alltaf biðja um lykilorð", + "Enforce password protection" : "Krefjast verndunar með aðgangsorði", + "Set default expiration date" : "Setja sjálfgefinn gildistíma", + "Expire after " : "Rennur út eftir ", + "days" : "daga", + "Enforce expiration date" : "Krefjast dagsetningar á gildistíma", + "Allow resharing" : "Leyfa endurdeilingu", + "Allow sharing with groups" : "Leyfa deilingu með hópum", + "Restrict users to only share with users in their groups" : "Takmarka notendur við að deila með notendum í þeirra eigin hópum", + "Exclude groups from sharing" : "Undanskilja hópa frá því að deila", + "These groups will still be able to receive shares, but not to initiate them." : "Þessir hópar munu samt geta tekið við deildum sameignum, en ekki geta útbúið þær.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Leyfa sjálfklárun notandanafns í deilingarglugga. Ef þetta er óvirkt þarf að setja inn fullt nafn eða tölvupóstfang notanda.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Birta fyrirvara á opinberu upphleðslusíðunni. (Birtist einungis þegar listi yfir skrár er falinn).", + "This text will be shown on the public link upload page when the file list is hidden." : "Þessi texti birtist á opinberu upphleðslusíðunni þegar listi yfir skrár er falinn.", + "Default share permissions" : "Sjálfgefnar aðgangsheimildir fyrir deilingu", + "Personal" : "Einka", + "Administration" : "Stjórnun", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Þróað af {communityopen}Nextcloud samfélaginu{linkclose}, {githubopen}grunnkóðinn{linkclose} er gefinn út með {licenseopen}AGPL{linkclose} notkunarleyfinu.", + "Like our Facebook page" : "Líkaðu við Facebook-síðuna okkar", + "Follow us on Twitter" : "Fylgstu með okkur á Twitter", + "Follow us on Mastodon" : "Fylgstu með okkur á Mastodon", + "Check out our blog" : "Kíktu á bloggið okkar", + "Subscribe to our newsletter" : "Gerstu áskrifandi að fréttabréfinu okkar", + "Profile picture" : "Einkennismynd", + "Upload new" : "Senda inn nýtt", + "Select from Files" : "Veldu skrár", + "Remove image" : "Fjarlægja mynd", + "png or jpg, max. 20 MB" : "png eða jpg, hám. 20 MB", + "Picture provided by original account" : "Mynd frá upprunalegum aðgangi", + "Cancel" : "Hætta við", + "Choose as profile picture" : "Veldu sem einkennismynd", + "Details" : "Nánar", + "You are a member of the following groups:" : "Þú ert meðlimur eftirfarandi hópa:", + "You are using <strong>%s</strong>" : "Þú ert að nota <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Þú ert að nota <strong>%1$s</strong> af <strong>%2$s</strong> (<strong>%3$s %%</strong>)", + "Full name" : "Fullt nafn", + "No display name set" : "Ekkert birtingarnafn sett", + "Your email address" : "Netfangið þitt", + "No email address set" : "Ekkert tölvupóstfang sett", + "For password reset and notifications" : "Fyrir tilkynningar og endurstillingu lykilorðs", + "Phone number" : "Símanúmer", + "Your phone number" : "Símanúmerið þitt", + "Address" : "Heimilisfang", + "Your postal address" : "Heimilisfangið þitt", + "Website" : "Vefsvæði", + "It can take up to 24 hours before the account is displayed as verified." : "Það getur tekið allt að 24 klukkustundum áður en notandaaðgangurinn er birtur sem sannvottaður.", + "Link https://…" : "Tengill https://…", + "Twitter" : "Twitter", + "Twitter handle @…" : "Twitter notandanafn @…", + "Help translate" : "Hjálpa við þýðingu", + "Locale" : "Staðfærsla", + "Current password" : "Núverandi lykilorð", + "Change password" : "Breyta lykilorði", + "Use a second factor besides your password to increase security for your account." : "Notaðu annað þrep til viðbótar lykilorðinu þínu til að auka öryggi notandaaðgangsins þíns.", + "Disconnect" : "Aftengjast", + "Not supported!" : "Óstutt!", + "Press ⌘-C to copy." : "Ýttu á ⌘-C til að afrita.", + "Press Ctrl-C to copy." : "Ýttu á Ctrl-C til að afrita.", + "Error while loading browser sessions and device tokens" : "Villa við að hlaða inn vafrasetum og teiknum fyrir tæki", + "Store credentials" : "Geyma auðkenni", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php er skráð á webcron-þjónustu til að kalla á cron.php á 15 mínútna fresti yfir HTTP.", + "Use system cron service to call the cron.php file every 15 minutes." : "Nota cron-þjónustu kerfisins til að kalla á cron.php skrána á 15 mínútna fresti.", + "Follow us on Google+" : "Fylgstu með okkur á Google+" +},"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);" +} \ No newline at end of file diff --git a/apps/settings/l10n/it.js b/apps/settings/l10n/it.js new file mode 100644 index 00000000000..b8b31c63b51 --- /dev/null +++ b/apps/settings/l10n/it.js @@ -0,0 +1,823 @@ +OC.L10N.register( + "settings", + { + "{actor} added you to group {group}" : "{actor} ti ha aggiunto al gruppo {group}", + "You added {user} to group {group}" : "Hai aggiunto {user} al gruppo {group}", + "{actor} added {user} to group {group}" : "{actor} ha aggiunto {user} al gruppo {group}", + "An administrator added you to group {group}" : "Un amministratore ti ha aggiunto al gruppo {group}", + "An administrator added {user} to group {group}" : "Un amministratore ha aggiunto {user} al gruppo {group}", + "{actor} removed you from group {group}" : "{actor} ti ha rimosso dal gruppo {group}", + "You removed {user} from group {group}" : "Hai rimosso {user} dal gruppo {group}", + "{actor} removed {user} from group {group}" : "{actor} ha rimosso {user} dal gruppo {group}", + "An administrator removed you from group {group}" : "Un amministratore ti ha rimosso dal gruppo {group}", + "An administrator removed {user} from group {group}" : "Un amministratore ha rimosso {user} dal gruppo {group}", + "Your <strong>group memberships</strong> were modified" : "Le tue <strong>appartenenze ai gruppi</strong> sono state modificate", + "{actor} changed your password" : "{actor} ha cambiato la tua password", + "You changed your password" : "Hai cambiato la tua password", + "Your password was reset by an administrator" : "La tua password è stata reimpostata da un amministratore", + "{actor} changed your email address" : "{actor} ha cambiato il tuo indirizzo email", + "You changed your email address" : "Hai cambiato il tuo indirizzo email", + "Your email address was changed by an administrator" : "Il tuo indirizzo email è stato cambiato da un amministratore", + "You created app password \"{token}\"" : "Hai creato la password di applicazione \"{token}\"", + "You deleted app password \"{token}\"" : "Hai eliminato la password di applicazione \"{token}\"", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Hai rinominato la password applicativa da \"{token}\" a \"{newToken}\"", + "You granted filesystem access to app password \"{token}\"" : "Hai concesso l'accesso al filesystem alla password di applicazione \"{token}\"", + "You revoked filesystem access from app password \"{token}\"" : "Hai revocato l'accesso al filesystem dalla password di applicazione \"{token}\"", + "Security" : "Sicurezza", + "You successfully logged in using two-factor authentication (%1$s)" : "Hai effettuato correttamente l'accesso utilizzando l'autenticazione a due fattori (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Un tentativo di utilizzare l'autenticazione a due fattori non è riuscito (%1$s)", + "Remote wipe was started on %1$s" : "Cancellazione remota avviata su %1$s", + "Remote wipe has finished on %1$s" : "Cancellazione remota terminata su %1$s", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "La tua<strong>password</strong> o <strong>email</strong> è stata modificata", + "Couldn't remove app." : "Impossibile rimuovere l'applicazione.", + "Couldn't update app." : "Impossibile aggiornate l'applicazione.", + "Wrong password" : "Password errata", + "Saved" : "Salvato", + "No user supplied" : "Non è stato fornito alcun utente", + "Unable to change password" : "Impossibile cambiare la password", + "Authentication error" : "Errore di autenticazione", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Fornisci una password amministrativa di ripristino; altrimenti, tutti i dati degli utenti saranno persi.", + "Wrong admin recovery password. Please check the password and try again." : "Password amministrativa di ripristino errata. Controlla la password e prova ancora.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Il motore non supporta la modifica della password, ma la chiave di cifratura dell'utente è stata aggiornata.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "installazione e aggiornamento delle applicazioni tramite il negozio delle applicazioni o condivisione cloud federata", + "Federated Cloud Sharing" : "Condivisione cloud federata", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL sta utilizzando una versione di %1$s datata (%2$s). Aggiorna il tuo sistema operativo o funzionalità come %3$s non funzioneranno correttamente.", + "Invalid SMTP password." : "Password SMTP non valida.", + "Email setting test" : "Prova impostazioni email", + "Well done, %s!" : "Ben fatto, %s!", + "If you received this email, the email configuration seems to be correct." : "Se hai ricevuto questo messaggio, la configurazione della posta elettronica dovrebbe essere corretta.", + "Email could not be sent. Check your mail server log" : "Il messaggio non può essere inviato. Controlla il log del tuo server di posta", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Si è verificato un problema durante l'invio dell'email. Controlla le tue impostazioni. (Errore: %s)", + "You need to set your user email before being able to send test emails." : "Devi impostare l'indirizzo del tuo utente prima di poter provare l'invio delle email.", + "Invalid mail address" : "Indirizzo email non valido", + "Settings saved" : "Impostazioni salvate", + "Unable to change full name" : "Impossibile cambiare il nome completo", + "Unable to change email address" : "Impossibile cambiare l'indirizzo di posta", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Per verificare il tuo account Twitter, pubblica il seguente tweet su Twitter (assicurati di pubblicarlo senza interruzioni di riga):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Per verificare il tuo sito web, memorizza il seguente contenuto nella radice del tuo sito in '.well-known/CloudIdVerificationCode.txt' (assicurati che l'intero testo sia in una riga):", + "%1$s changed your password on %2$s." : "%1$s ha cambiato la tua password su %2$s.", + "Your password on %s was changed." : "La tua password su %s è stata modificata.", + "Your password on %s was reset by an administrator." : "La tua password su %s è stata reimpostata da un amministratore", + "Password for %1$s changed on %2$s" : "Password per %1$s cambiata su %2$s", + "Password changed for %s" : "Password modificata per %s", + "If you did not request this, please contact an administrator." : "Se non lo hai richiesto, contatta un amministratore.", + "Your email address on %s was changed." : "Il tuo indirizzo di posta su %s è stata modificato.", + "Your email address on %s was changed by an administrator." : "Il tuo indirizzo di posta su %s è stato modificato da un amministratore.", + "Email address for %1$s changed on %2$s" : "Indirizzo di posta per %1$s modificato su %2$s", + "Email address changed for %s" : "Indirizzo di posta modificato per %s", + "The new email address is %s" : "Il nuovo indirizzo email è %s", + "Your %s account was created" : "Il tuo account %s è stato creato", + "Welcome aboard" : "Benvenuto a bordo", + "Welcome aboard %s" : "Benvenuto a bordo di %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Benvenuto nel tuo account %s, puoi aggiungere, proteggere e condividere i tuoi dati.", + "Your username is: %s" : "Il tuo nome utente è: %s", + "Set your password" : "Imposta la tua password", + "Go to %s" : "Vai a %s", + "Install Client" : "Installa client", + "Logged in user must be a subadmin" : "L'utente che ha eseguito l'accesso deve essere un sotto-amministratore ", + "Create" : "Crea", + "Change" : "Modifica", + "Delete" : "Elimina", + "Share" : "Condividi", + "Unlimited" : "Illimitata", + "Verifying" : "Verifica", + "Verifying …" : "Verifica in corso...", + "Verify" : "Verifica", + "Migration in progress. Please wait until the migration is finished" : "Migrazione in corso. Attendi fino al completamento della migrazione", + "Migration started …" : "Migrazione avviata...", + "Not saved" : "Non salvato", + "Sending…" : "Invio in corso...", + "Email sent" : "Email inviata", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Si è verificato un errore. Carica un certificato PEM codificato in ASCII.", + "Valid until {date}" : "Valido fino al {date}", + "Local" : "Locale", + "Private" : "Privato", + "Only visible to local users" : "Visibile solo agli utenti locali", + "Only visible to you" : "Visibile solo a te", + "Contacts" : "Contatti", + "Visible to local users and to trusted servers" : "Visibile agli utenti locali e ai server affidabili", + "Public" : "Pubblico", + "Will be synced to a global and public address book" : "Sarà sincronizzato con una rubrica globale e pubblica", + "Very weak password" : "Password molto debole", + "Weak password" : "Password debole", + "So-so password" : "Password così-così", + "Good password" : "Password buona", + "Strong password" : "Password forte", + "An error occurred while changing your language. Please reload the page and try again." : "Si è verificato un errore durante la modifica della lingua. Ricarica la pagina e prova ancora.", + "An error occurred while changing your locale. Please reload the page and try again." : "Si è verificato un errore durante la modifica della localizzazione. Ricarica la pagina e prova ancora.", + "Select a profile picture" : "Seleziona un'immagine del profilo", + "Week starts on {fdow}" : "La settimana inizia il {fdow}", + "Groups" : "Gruppi", + "Group list is empty" : "L'elenco dei gruppi è vuoto", + "Unable to retrieve the group list" : "Impossibile recuperare l'elenco dei gruppi", + "Afrikaans (Namibia)" : "Afrikaans (Namibia)", + "Afrikaans (South Africa)" : "Afrikaans (Sud Africa)", + "Afrikaans" : "Afrikaans", + "Akan (Ghana)" : "Akan (Ghana)", + "Akan" : "Akan", + "Albanian (Albania)" : "Albanese (Albania)", + "Albanian" : "Albanese", + "Amharic (Ethiopia)" : "Amarico (Etiopia)", + "Amharic" : "Amarico", + "Arabic (Algeria)" : "Arabo (Algeria)", + "Arabic (Bahrain)" : "Arabo (Bahrain)", + "Arabic (Egypt)" : "Arabo (Egitto)", + "Arabic (Iraq)" : "Arabo (Iraq)", + "Arabic (Jordan)" : "Arabo (Giordania)", + "Arabic (Kuwait)" : "Arabo (Kuwait)", + "Arabic (Lebanon)" : "Arabo (Libano)", + "Arabic (Libya)" : "Arabo (Libia)", + "Arabic (Morocco)" : "Arabo (Marocco)", + "Arabic (Oman)" : "Arabo (Oman)", + "Arabic (Qatar)" : "Arabo (Qatar)", + "Arabic (Saudi Arabia)" : "Arabo (Arabia Saudita)", + "Arabic (Sudan)" : "Arabo (Sudan)", + "Arabic (Syria)" : "Arabo (Siria)", + "Arabic (Tunisia)" : "Arabo (Tunisia)", + "Arabic (United Arab Emirates)" : "Arabo (Emirati Arabi Uniti)", + "Arabic (Yemen)" : "Arabo (Yemen)", + "Arabic" : "Arabo", + "Armenian (Armenia)" : "Armeno (Armenia)", + "Armenian" : "Armeno", + "Assamese (India)" : "Assamese (India)", + "Assamese" : "Assamese", + "Asu (Tanzania)" : "Asu (Tanzania)", + "Asu" : "Asu", + "Azerbaijani (Cyrillic)" : "Azero (Cirillico)", + "Azerbaijani (Cyrillic, Azerbaijan)" : "Azero (Cirillico, Azerbaijan)", + "Azerbaijani (Latin)" : "Azero (Latino)", + "Azerbaijani (Latin, Azerbaijan)" : "Azero (Latino, Azerbaijan)", + "Azerbaijani" : "Azero", + "Bambara (Mali)" : "Bambara (Mali)", + "Bambara" : "Bambara", + "Basque (Spain)" : "Basco (Spagna)", + "Basque" : "Basco", + "Belarusian (Belarus)" : "Bielorusso (Bielorussia)", + "Belarusian" : "Bielorusso", + "Bemba (Zambia)" : "Bemba (Zambia)", + "Bemba" : "Bemba", + "Bena (Tanzania)" : "Bena (Tanzania)", + "Bena" : "Bena", + "Bengali (Bangladesh)" : "Bengali (Bangladesh)", + "Bengali (India)" : "Bengali (India)", + "Bengali" : "Bengali", + "Bosnian (Bosnia and Herzegovina)" : "Bosniaco (Bosnia ed Erzegovina)", + "Bosnian" : "Bosniaco", + "Bulgarian (Bulgaria)" : "Bulgaro (Bulgaria)", + "Bulgarian" : "Bulgaro", + "Burmese (Myanmar [Burma])" : "Birmano (Myanmar [Birmania])", + "Burmese" : "Birmano", + "Catalan (Spain)" : "Catalano (Spagna)", + "Catalan" : "Catalano", + "Central Morocco Tamazight (Latin)" : "Tamazight del Marocco centrale (Latino)", + "Central Morocco Tamazight (Latin, Morocco)" : "Tamazight del Marocco centrale (Latino, Marocco)", + "Central Morocco Tamazight" : "Tamazight del Marocco centrale", + "Cherokee (United States)" : "Cherokee (Stati Uniti)", + "Cherokee" : "Cherokee", + "Chiga (Uganda)" : "Chiga (Uganda)", + "Chiga" : "Chiga", + "Chinese (Simplified Han)" : "Cinese (Han semplificato)", + "Chinese (Simplified Han, China)" : "Cinese (Han semplificato, Cina)", + "Chinese (Simplified Han, Hong Kong SAR China)" : "Cinese (Han semplificato, Hong Kong SAR Cina)", + "Chinese (Simplified Han, Macau SAR China)" : "Cinese (Han semplificato, Macao SAR Cina)", + "Chinese (Simplified Han, Singapore)" : "Cinese (Han semplificato, Singapore)", + "Chinese (Traditional Han)" : "Cinese (Han tradizionale)", + "Chinese (Traditional Han, Hong Kong SAR China)" : "Cinese (Han tradizionale, Hong Kong SAR Cina)", + "Chinese (Traditional Han, Macau SAR China)" : "Cinese (Han tradizionale, Macao SAR Cina)", + "Chinese (Traditional Han, Taiwan)" : "Cinese (Han tradizionale, Taiwan)", + "Chinese" : "Cinese", + "Cornish (United Kingdom)" : "Cornico (Regno Unito)", + "Cornish" : "Cornico", + "Croatian (Croatia)" : "Croato (Croazia)", + "Croatian" : "Croato", + "Czech (Czech Republic)" : "Ceco (Cechia)", + "Czech" : "Ceco", + "Danish (Denmark)" : "Danese (Danimarca)", + "Danish" : "Danese", + "Dutch (Belgium)" : "Olandese (Belgio)", + "Dutch (Netherlands)" : "Olandese (Olanda)", + "Dutch" : "Olandese", + "Embu (Kenya)" : "Embu (Kenya)", + "Embu" : "Embu", + "English (American Samoa)" : "Inglese (Samoa Americane)", + "English (Australia)" : "Inglese (Australia)", + "English (Belgium)" : "Inglese (Belgio)", + "English (Belize)" : "Inglese (Belize)", + "English (Botswana)" : "Inglese (Botswana)", + "English (Canada)" : "Inglese (Canada)", + "English (Guam)" : "Inglese (Guam)", + "English (Hong Kong SAR China)" : "Inglese (Hong Kong SAR Cina)", + "English (India)" : "Inglese (India)", + "English (Ireland)" : "Inglese (Irlanda)", + "English (Jamaica)" : "Inglese (Giamaica)", + "English (Malta)" : "Inglese (Malta)", + "English (Marshall Islands)" : "Inglese (Isole Marshall)", + "English (Mauritius)" : "Inglese (Mauritius)", + "English (Namibia)" : "Inglese (Namibia)", + "English (New Zealand)" : "Inglese (Nuova Zelandia)", + "English (Northern Mariana Islands)" : "Inglese (Isole Marianne settentrionali)", + "English (Pakistan)" : "Inglese (Pakistan)", + "English (Philippines)" : "Inglese (Filippine)", + "English (Singapore)" : "Inglese (Singapore)", + "English (South Africa)" : "Inglese (Sud Africa)", + "English (Trinidad and Tobago)" : "Inglese (Trinidad e Tobago)", + "English (U.S. Minor Outlying Islands)" : "Inglese (Isole minori esterne americane)", + "English (U.S. Virgin Islands)" : "Inglese (Isole Vergini americane)", + "English (United Kingdom)" : "Inglese (Regno Unito)", + "English (United States)" : "Inglese (Stati Uniti)", + "English (Zimbabwe)" : "Inglese (Zimbabwe)", + "English" : "Inglese", + "Esperanto" : "Esperanto", + "Estonian (Estonia)" : "Estone (Estonia)", + "Estonian" : "Estone", + "Ewe (Ghana)" : "Ewe (Ghana)", + "Ewe (Togo)" : "Ewe (Togo)", + "Ewe" : "Ewe", + "Faroese (Faroe Islands)" : "Faroese (Isole Faroe)", + "Faroese" : "Faroese", + "Filipino (Philippines)" : "Filippino (Filippine)", + "Filipino" : "Filippino", + "Finnish (Finland)" : "Finlandese (Finlandia)", + "Finnish" : "Finlandese", + "French (Belgium)" : "Francese (Belgio)", + "French (Benin)" : "Francese (Benin)", + "French (Burkina Faso)" : "Francese (Burkina Faso)", + "French (Burundi)" : "Francese (Burundi)", + "French (Cameroon)" : "Francese (Camerun)", + "French (Canada)" : "Francese (Canada)", + "French (Central African Republic)" : "Francese (Repubblica Centrafricana)", + "French (Chad)" : "Francese (Chad)", + "French (Comoros)" : "Francese (Comore)", + "French (Congo - Brazzaville)" : "Francese (Congo - Brazzaville)", + "French (Congo - Kinshasa)" : "Francese (Congo - Kinshasa)", + "French (Côte d’Ivoire)" : "Francese (Costa d'Avorio)", + "French (Djibouti)" : "Francese (Djibouti)", + "French (Equatorial Guinea)" : "Francese (Guinea Equatoriale)", + "French (France)" : "Francese (Francia)", + "French (Gabon)" : "Francese (Gabon)", + "French (Guadeloupe)" : "Francese (Guadalupa)", + "French (Guinea)" : "Francese (Guinea)", + "French (Luxembourg)" : "Francese (Lussemburgo)", + "French (Madagascar)" : "Francese (Madagascar)", + "French (Mali)" : "Francese (Mali)", + "French (Martinique)" : "Francese (Martinica)", + "French (Monaco)" : "Francese (Monaco)", + "French (Niger)" : "Francese (Niger)", + "French (Rwanda)" : "Francese (Rwanda)", + "French (Réunion)" : "Francese (Réunion)", + "French (Saint Barthélemy)" : "Francese (Saint Barthélemy)", + "French (Saint Martin)" : "Francese (Saint Martin)", + "French (Senegal)" : "Francese (Senegal)", + "French (Switzerland)" : "Francese (Svizzera)", + "French (Togo)" : "Francese (Togo)", + "French" : "Francese", + "Fulah (Senegal)" : "Fulah (Senegal)", + "Fulah" : "Fulah", + "Galician (Spain)" : "Galiziano (Spagna)", + "Galician" : "Galiziano", + "Ganda (Uganda)" : "Ganda (Uganda)", + "Ganda" : "Ganda", + "Georgian (Georgia)" : "Georgiano (Georgia)", + "Georgian" : "Georgiano", + "German (Austria)" : "Tedesco (Austria)", + "German (Belgium)" : "Tedesco (Belgio)", + "German (Germany)" : "Tedesco (Germania)", + "German (Liechtenstein)" : "Tedesco (Liechtenstein)", + "German (Luxembourg)" : "Tedesco (Lussemburgo)", + "German (Switzerland)" : "Tedesco (Svizzera)", + "German" : "Tedesco", + "Greek (Cyprus)" : "Greco (Cipro)", + "Greek (Greece)" : "Greco (Grecia)", + "Greek" : "Greco", + "Gujarati (India)" : "Gujarati (India)", + "Gujarati" : "Gujarati", + "Gusii (Kenya)" : "Gusii (Kenya)", + "Gusii" : "Gusii", + "Hausa (Latin)" : "Hausa (Latino)", + "Hausa (Latin, Ghana)" : "Hausa (Latino, Ghana)", + "Hausa (Latin, Niger)" : "Hausa (Latino, Niger)", + "Hausa (Latin, Nigeria)" : "Hausa (Latino, Nigeria)", + "Hausa" : "Hausa", + "Hawaiian (United States)" : "Hawaiano (Stati Uniti)", + "Hawaiian" : "Hawaiano", + "Hebrew (Israel)" : "Ebreo (Israele)", + "Hebrew" : "Ebreo", + "Hindi (India)" : "Hindi (India)", + "Hindi" : "Hindi", + "Hungarian (Hungary)" : "Ungherese (Ungheria)", + "Hungarian" : "Ungherese", + "Icelandic (Iceland)" : "Islandese (Islanda)", + "Icelandic" : "Islandese", + "Igbo (Nigeria)" : "Igbo (Nigeria)", + "Igbo" : "Igbo", + "Indonesian (Indonesia)" : "Indonesiano (Indonesia)", + "Indonesian" : "Indonesiano", + "Irish (Ireland)" : "Irlandese (Irlanda)", + "Irish" : "Irlandese", + "Italian (Italy)" : "Italiano (Italia)", + "Italian (Switzerland)" : "Italiano (Svizzera)", + "Italian" : "Italiano", + "Japanese (Japan)" : "Giapponese (Giappone)", + "Japanese" : "Giapponese", + "Kabuverdianu (Cape Verde)" : "Capoverdiano (Capo Verde)", + "Kabuverdianu" : "Capoverdiano", + "Kabyle (Algeria)" : "Cabilo (Algeria)", + "Kabyle" : "Cabilo", + "Kalaallisut (Greenland)" : "Kalaallisut (Groenlandia)", + "Kalaallisut" : "Kalaallisut", + "Kalenjin (Kenya)" : "Kalenjin (Kenya)", + "Kalenjin" : "Kalenjin", + "Kamba (Kenya)" : "Kamba (Kenya)", + "Kamba" : "Kamba", + "Kannada (India)" : "Kannada (India)", + "Kannada" : "Kannada", + "Kazakh (Cyrillic)" : "Kazako (Cirillico)", + "Kazakh (Cyrillic, Kazakhstan)" : "Kazako (Cirillico, Kazakhstan)", + "Kazakh" : "Kazako", + "Khmer (Cambodia)" : "Khmer (Cambogia)", + "Khmer" : "Khmer", + "Kikuyu (Kenya)" : "Kikuyu (Kenya)", + "Kikuyu" : "Kikuyu", + "Kinyarwanda (Rwanda)" : "Kinyarwanda (Rwanda)", + "Kinyarwanda" : "Kinyarwanda", + "Konkani (India)" : "Konkani (India)", + "Konkani" : "Konkani", + "Korean (South Korea)" : "Coreano (Corea del Sud)", + "Korean" : "Coreano", + "Koyra Chiini (Mali)" : "Koyra Chiini (Mali)", + "Koyra Chiini" : "Koyra Chiini", + "Koyraboro Senni (Mali)" : "Koyraboro Senni (Mali)", + "Koyraboro Senni" : "Koyraboro Senni", + "Langi (Tanzania)" : "Langi (Tanzania)", + "Langi" : "Langi", + "Latvian (Latvia)" : "Lettone (Lettonia)", + "Latvian" : "Lettone", + "Lithuanian (Lithuania)" : "Lituano (Lituano)", + "Lithuanian" : "Lituano", + "Luo (Kenya)" : "Luo (Kenya)", + "Luo" : "Luo", + "Luyia (Kenya)" : "Luyia (Kenya)", + "Luyia" : "Luyia", + "Macedonian (Macedonia)" : "Macedone (Macedonia)", + "Macedonian" : "Macedone", + "Machame (Tanzania)" : "Machame (Tanzania)", + "Machame" : "Machame", + "Makonde (Tanzania)" : "Makonde (Tanzania)", + "Makonde" : "Makonde", + "Malagasy (Madagascar)" : "Malgascio (Madagascar)", + "Malagasy" : "Malgascio", + "Malay (Brunei)" : "Malese (Brunei)", + "Malay (Malaysia)" : "Malese (Malaysia)", + "Malay" : "Malese", + "Malayalam (India)" : "Malayalam (India)", + "Malayalam" : "Malayalam", + "Maltese (Malta)" : "Maltese (Malta)", + "Maltese" : "Maltese", + "Manx (United Kingdom)" : "Mannese (Regno Unito)", + "Manx" : "Mannese", + "Marathi (India)" : "Marathi (India)", + "Marathi" : "Marathi", + "Masai (Kenya)" : "Masai (Kenya)", + "Masai (Tanzania)" : "Masai (Tanzania)", + "Masai" : "Masai", + "Meru (Kenya)" : "Meru (Kenya)", + "Meru" : "Meru", + "Morisyen (Mauritius)" : "Mauriziano (Mauritius)", + "Morisyen" : "Mauriziano", + "Nama (Namibia)" : "Nama (Namibia)", + "Nama" : "Nama", + "Nepali (India)" : "Nepalese (India)", + "Nepali (Nepal)" : "Nepalese (Nepal)", + "Nepali" : "Nepalese", + "North Ndebele (Zimbabwe)" : "Ndebele del Nord (Zimbabwe)", + "North Ndebele" : "Ndebele del Nord", + "Norwegian Bokmål (Norway)" : "Bokmål norvegese (Norvegese)", + "Norwegian Bokmål" : "Bokmål norvegese", + "Norwegian Nynorsk (Norway)" : "Nynorsk norvegese (Norvegia)", + "Norwegian Nynorsk" : "Nynorsk norvegese", + "Nyankole (Uganda)" : "Nyankole (Uganda)", + "Nyankole" : "Nyankole", + "Oriya (India)" : "Oriya (India)", + "Oriya" : "Oriya", + "Oromo (Ethiopia)" : "Oromo (Etiopia)", + "Oromo (Kenya)" : "Oromo (Kenya)", + "Oromo" : "Oromo", + "Pashto (Afghanistan)" : "Pashto (Afghanistan)", + "Pashto" : "Pashto", + "Persian (Afghanistan)" : "Persiano (Afghanistan)", + "Persian (Iran)" : "Persiano (Iran)", + "Persian" : "Persiano", + "Polish (Poland)" : "Polacco (Polonia)", + "Polish" : "Polacco", + "Portuguese (Brazil)" : "Portoghese (Brasile)", + "Portuguese (Guinea-Bissau)" : "Portoghese (Guinea-Bissau)", + "Portuguese (Mozambique)" : "Portoghese (Mozambico)", + "Portuguese (Portugal)" : "Portoghese (Portogallo)", + "Portuguese" : "Portoghese", + "Punjabi (Arabic)" : "Punjabi (Arabo)", + "Punjabi (Arabic, Pakistan)" : "Punjabi (Arabo, Pakistan)", + "Punjabi (Gurmukhi)" : "Punjabi (Gurmukhi)", + "Punjabi (Gurmukhi, India)" : "Punjabi (Gurmukhi, India)", + "Punjabi" : "Punjabi", + "Romanian (Moldova)" : "Rumeno (Moldavia)", + "Romanian (Romania)" : "Rumeno (Romania)", + "Romanian" : "Rumeno", + "Romansh (Switzerland)" : "Romangio (Svizzera)", + "Romansh" : "Romangio", + "Rombo (Tanzania)" : "Rombo (Tanzania)", + "Rombo" : "Rombo", + "Russian (Moldova)" : "Russo (Moldavia)", + "Russian (Russia)" : "Russo (Russia)", + "Russian (Ukraine)" : "Russo (Ucraina)", + "Russian" : "Russo", + "Rwa (Tanzania)" : "Rwa (Tanzania)", + "Rwa" : "Rwa", + "Samburu (Kenya)" : "Samburu (Kenya)", + "Samburu" : "Samburu", + "Sango (Central African Republic)" : "Sango (Repubblica Centrafricana)", + "Sango" : "Sango", + "Sena (Mozambique)" : "Sena (Mozambico)", + "Sena" : "Sena", + "Serbian (Cyrillic)" : "Serbo (Cirillico)", + "Serbian (Cyrillic, Bosnia and Herzegovina)" : "Serbo (Cirillico, Bosnia ed Erzegovina)", + "Serbian (Cyrillic, Montenegro)" : "Serbo (Cirillico, Montenegro)", + "Serbian (Cyrillic, Serbia)" : "Serbo (Cirillico, Serbia)", + "Serbian (Latin)" : "Serbo (Latino)", + "Serbian (Latin, Bosnia and Herzegovina)" : "Serbo (Latino, Bosnia ed Erzegovina)", + "Serbian (Latin, Montenegro)" : "Serbo (Latino, Montenegro)", + "Serbian (Latin, Serbia)" : "Serbo (Latino, Serbia)", + "Serbian" : "Serbo", + "Shona (Zimbabwe)" : "Shona (Zimbabwe)", + "Shona" : "Shona", + "Sichuan Yi (China)" : "Sichuan Yi (Cina)", + "Sichuan Yi" : "Sichuan Yi", + "Sinhala (Sri Lanka)" : "Cingalese (Sri Lanka)", + "Sinhala" : "Cingalese", + "Slovak (Slovakia)" : "Slovacco (Slovacchia)", + "Slovak" : "Slovacco", + "Slovenian (Slovenia)" : "Sloveno (Slovenia)", + "Slovenian" : "Sloveno", + "Soga (Uganda)" : "Soga (Uganda)", + "Soga" : "Soga", + "Somali (Djibouti)" : "Somalo (Djibouti)", + "Somali (Ethiopia)" : "Somalo (Etiopia)", + "Somali (Kenya)" : "Somalo (Kenya)", + "Somali (Somalia)" : "Somalo (Somalia)", + "Somali" : "Somalo", + "Spanish (Argentina)" : "Spagnolo (Argentina)", + "Spanish (Bolivia)" : "Spagnolo (Bolivia)", + "Spanish (Chile)" : "Spagnolo (Cile)", + "Spanish (Colombia)" : "Spagnolo (Colombia)", + "Spanish (Costa Rica)" : "Spagnolo (Costa Rica)", + "Spanish (Dominican Republic)" : "Spagnolo (Repubblica Dominicana)", + "Spanish (Ecuador)" : "Spagnolo (Ecuador)", + "Spanish (El Salvador)" : "Spagnolo (El Salvador)", + "Spanish (Equatorial Guinea)" : "Spagnolo (Guinea Equatoriale)", + "Spanish (Guatemala)" : "Spagnolo (Guatemala)", + "Spanish (Honduras)" : "Spagnolo (Honduras)", + "Spanish (Latin America)" : "Spagnolo (America Latina)", + "Spanish (Mexico)" : "Spagnolo (Messico)", + "Spanish (Nicaragua)" : "Spagnolo (Nicaragua)", + "Spanish (Panama)" : "Spagnolo (Panama)", + "Spanish (Paraguay)" : "Spagnolo (Paraguay)", + "Spanish (Peru)" : "Spagnolo (Peru)", + "Spanish (Puerto Rico)" : "Spagnolo (Porto Rico)", + "Spanish (Spain)" : "Spagnolo (Spagna)", + "Spanish (United States)" : "Spagnolo (Stati Uniti)", + "Spanish (Uruguay)" : "Spagnolo (Uruguay)", + "Spanish (Venezuela)" : "Spagnolo (Venezuela)", + "Spanish" : "Spagnolo", + "Swahili (Kenya)" : "Swahili (Kenya)", + "Swahili (Tanzania)" : "Swahili (Tanzania)", + "Swahili" : "Swahili", + "Swedish (Finland)" : "Svedese (Finlandia)", + "Swedish (Sweden)" : "Svedese (Svezia)", + "Swedish" : "Svedese", + "Swiss German (Switzerland)" : "Tedesco svizzero (Svizzera)", + "Swiss German" : "Tedesco svizzero", + "Tachelhit (Latin)" : "Tachelhit (Latino)", + "Tachelhit (Latin, Morocco)" : "Tachelhit (Latino, Marocco)", + "Tachelhit (Tifinagh)" : "Tachelhit (Tifinagh)", + "Tachelhit (Tifinagh, Morocco)" : "Tachelhit (Tifinagh, Marocco)", + "Tachelhit" : "Tachelhit", + "Taita (Kenya)" : "Taita (Kenya)", + "Taita" : "Taita", + "Tamil (India)" : "Tamil (India)", + "Tamil (Sri Lanka)" : "Tamil (Sri Lanka)", + "Tamil" : "Tamil", + "Telugu (India)" : "Telugu (India)", + "Telugu" : "Telugu", + "Teso (Kenya)" : "Teso (Kenya)", + "Teso (Uganda)" : "Teso (Uganda)", + "Teso" : "Teso", + "Thai (Thailand)" : "Thai (Thailandia)", + "Thai" : "Thai", + "Tibetan (China)" : "Tibetano (Cina)", + "Tibetan (India)" : "Tibetano (India)", + "Tibetan" : "Tibetano", + "Tigrinya (Eritrea)" : "Tigrino (Eritrea)", + "Tigrinya (Ethiopia)" : "Tigrino (Etiopia)", + "Tigrinya" : "Tigrino", + "Tonga (Tonga)" : "Tonga (Isole Tonga)", + "Tonga" : "Tonga", + "Turkish (Turkey)" : "Turco (Turchia)", + "Turkish" : "Turco", + "Ukrainian (Ukraine)" : "Ucraino (Ucraina)", + "Ukrainian" : "Ucraino", + "Urdu (India)" : "Urdu (India)", + "Urdu (Pakistan)" : "Urdu (Pakistan)", + "Urdu" : "Urdu", + "Uzbek (Arabic)" : "Uzbeko (Arabo)", + "Uzbek (Arabic, Afghanistan)" : "Uzbeko (Arabo, Afghanistan)", + "Uzbek (Cyrillic)" : "Uzbeko (Cirillico)", + "Uzbek (Cyrillic, Uzbekistan)" : "Uzbeko (Cirillico, Uzbekistan)", + "Uzbek (Latin)" : "Uzbeko (Latino)", + "Uzbek (Latin, Uzbekistan)" : "Uzbeko (Latino, Uzbekistan)", + "Uzbek" : "Uzbeko", + "Vietnamese (Vietnam)" : "Vietnamita (Vietnam)", + "Vietnamese" : "Vietnamita", + "Vunjo (Tanzania)" : "Vunjo (Tanzania)", + "Vunjo" : "Vunjo", + "Welsh (United Kingdom)" : "Gallese (Regno Unito)", + "Welsh" : "Gallese", + "Yoruba (Nigeria)" : "Yoruba (Nigeria)", + "Yoruba" : "Yoruba", + "Zulu (South Africa)" : "Zulu (Sud Africa)", + "Zulu" : "Zulu", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "L'autenticazione a due fattori può essere imposta per tutti gli\tutenti e gruppi specifici. Se non hanno un fornitore a due fattori configurato, non saranno in grado di accedere al sistema.", + "Enforce two-factor authentication" : "Applica l'autenticazione a due fattori", + "Limit to groups" : "Limita a gruppi", + "Enforcement of two-factor authentication can be set for certain groups only." : "L'applicazione dell'autenticazione a due fattori può essere impostata solo per determinati gruppi.", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "L'autenticazione a due fattori è applicata per tutti\ti membri dei gruppi seguenti.", + "Enforced groups" : "Gruppi imposti", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "L'autenticazione a due fattori non è applicata per\ti membri dei gruppi seguenti.", + "Excluded groups" : "Gruppi esclusi", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "Quando si selezionano/escludono gruppi, viene utilizzata la logica seguente per determinare se un utente ha 2FA applicato: se non si seleziona alcun gruppo, 2FA è abilitato per chiunque eccetto per i membri dei gruppi esclusi. Se un utente è sia in un gruppo selezionato che in un escluso, il selezionato ha la precedenza e 2FA è applicato.", + "Save changes" : "Salva le modifiche", + "Marked for remote wipe" : "Marcato come cancellazione remota", + "Device settings" : "Impostazioni dei dispositivi", + "Allow filesystem access" : "Consenti accesso al filesystem", + "Rename" : "Rinomina", + "Revoke" : "Revoca", + "Wipe device" : "Cancella dispositivo", + "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "La revoca di questo token potrebbe impedire la cancellazione del tuo dispositivo se non ha ancora iniziato ancora la cancellazione.", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome per Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Applicazione di Nextcloud per iOS", + "Nextcloud Android app" : "Applicazione di Nextcloud per Android", + "Nextcloud Talk for iOS" : "Nextcloud Talk per iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk per Android", + "Sync client - {os}" : "Client di sincronizzazione - {os}", + "This session" : "Questa sessione", + "Device" : "Dispositivo", + "Last activity" : "Ultima attività", + "Devices & sessions" : "Dispositivi e sessioni", + "Web, desktop and mobile clients currently logged in to your account." : "Client web, desktop e mobile attualmente connessi al tuo account.", + "Do you really want to wipe your data from this device?" : "Vuoi davvero eliminare tutti i dati da questo dispositivo?", + "Confirm wipe" : "Conferma eliminazione", + "Error while creating device token" : "Errore durante la creazione del token di dispositivo", + "Error while updating device token scope" : "Errore durante l'aggiornamento del campo del token del dispositivo", + "Error while updating device token name" : "Errore durante l'aggiornamento del nome del token del dispositivo", + "Error while deleting the token" : "Errore durante l'eliminazione del token", + "Error while wiping the device with the token" : "Errore durante la cancellazione del dispositivo con il token", + "App name" : "Nome applicazione", + "Create new app password" : "Crea nuova password di applicazione", + "Use the credentials below to configure your app or device." : "Utilizza le credenziali in basso per configurare la tua applicazione o dispositivo.", + "For security reasons this password will only be shown once." : "Per motivi di sicurezza questa password sarà mostra solo una volta.", + "Username" : "Nome utente", + "Password" : "Password", + "Done" : "Completato", + "Show QR code for mobile apps" : "Mostra il codice QR per le applicazioni mobili", + "Copied!" : "Copiato!", + "Copy" : "Copia", + "Could not copy app password. Please copy it manually." : "Impossibile copiare la password dell'applicazione. Copiala a mano.", + "This app is supported via your current Nextcloud subscription." : "Questa applicazione è supportata tramite la tua sottoscrizione attuale di Nextcloud.", + "Supported" : "Supportata", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Le applicazioni ufficiali sono sviluppate dalla comunità. Esse offrono nuove funzionalità e sono pronte per l'uso in produzione.", + "Official" : "Ufficiale", + "by" : "di", + "Update to {version}" : "Aggiorna a {version}", + "Remove" : "Rimuovi", + "Disable" : "Disabilita", + "All" : "Tutti", + "Limit app usage to groups" : "Limita l'utilizzo dell'applicazione a gruppi", + "No results" : "Nessun risultato", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Questa applicazione non contiene l'informazione della versione minima di Nextcloud richiesta. In futuro ciò sarà considerato un errore.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Questa applicazione non contiene l'informazione della versione massima di Nextcloud richiesta. In futuro ciò sarà considerato un errore.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Questa applicazione non può essere installata perché le seguenti dipendenze non sono soddisfatte:", + "View in store" : "Visualizza nell'archivio", + "Visit website" : "Visita il sito web", + "Report a bug" : "Segnala un bug", + "User documentation" : "Documentazione utente", + "Admin documentation" : "Documentazione di amministrazione", + "Developer documentation" : "Documentazione dello sviluppatore", + "Update to {update}" : "Aggiorna a {update}", + "Results from other categories" : "Risultati da altre categorie", + "No apps found for your version" : "Nessuna applicazione trovata per la tua versione", + "Disable all" : "Disabilita tutto", + "Enable all" : "Abilita tutto", + "Download and enable" : "Scarica e abilita", + "Enable" : "Abilita", + "Enable untested app" : "Abilita applicazione non verificata", + "The app will be downloaded from the app store" : "L'applicazione sarà scaricata dallo store delle applicazioni", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Questa applicazione non è marcata come compatibile con la tua versione di Nextcloud. Se continui sarai ancora in grado di installare l'applicazione. Nota che l'applicazione potrebbe non funzionare come previsto.", + "You do not have permissions to see the details of this user" : "Non hai i permessi per vedere i dettagli di questo utente", + "The backend does not support changing the display name" : "Il motore non supporta la modifica del nome visualizzato", + "New password" : "Nuova password", + "Add user in group" : "Aggiungi utente a gruppo", + "Set user as admin for" : "Imposta utente come amministratore per", + "Select user quota" : "Seleziona quota utente", + "No language set" : "Nessuna lingua impostata", + "Never" : "Mai", + "Delete user" : "Elimina utente", + "Wipe all devices" : "Cancella tutti i dispositivi", + "Disable user" : "Disabilita utente", + "Enable user" : "Abilita utente", + "Resend welcome email" : "Invia nuovamente email di benvenuto", + "{size} used" : "{size} utilizzati", + "Welcome mail sent!" : "Email di benvenuto inviata!", + "Display name" : "Nome visualizzato", + "Email" : "Posta elettronica", + "Group admin for" : "Amministratore per il gruppo", + "Quota" : "Quote", + "Language" : "Lingua", + "Storage location" : "Posizione di archiviazione", + "User backend" : "Motore utente", + "Last login" : "Ultimo accesso", + "Will be autogenerated" : "Sarà generata automaticamente", + "Default language" : "Lingua predefinita", + "Add a new user" : "Aggiungi un nuovo utente", + "No users in here" : "Non ci sono utenti qui", + "Default quota" : "Quota predefinita", + "Password change is disabled because the master key is disabled" : "La modifica della password è disabilitata poiché la chiave principale è disabilitata", + "Common languages" : "Lingue comuni", + "All languages" : "Tutte le lingue", + "Your apps" : "Le tue applicazioni", + "Active apps" : "Applicazioni attive", + "Disabled apps" : "Applicazioni disabilitate", + "Updates" : "Aggiornamenti", + "App bundles" : "Pacchetti di applicazioni", + "{license}-licensed" : "sotto licenza {license}", + "New user" : "Nuovo utente", + "Default quota:" : "Quota predefinita:", + "Select default quota" : "Seleziona la quota predefinita", + "Show Languages" : "Mostra lingue", + "Show last login" : "Mostra ultimo accesso", + "Show user backend" : "Mostra il motore utente", + "Show storage path" : "Mostra percorso di archiviazione", + "You are about to remove the group {group}. The users will NOT be deleted." : "Stai per rimuovere il gruppo {group}. Gli utenti NON saranno eliminati.", + "Please confirm the group removal " : "Conferma la rimozione del gruppo", + "Remove group" : "Rimuovi gruppo", + "Admins" : "Amministratori", + "Disabled users" : "Utenti disabilitati", + "Everyone" : "Chiunque", + "Add group" : "Aggiungi gruppo", + "An error occured during the request. Unable to proceed." : "Si è verificato un errore durante la richiesta. Impossibile continuare..", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "L'applicazione è stata abilitata, ma deve essere aggiornata. Sarai rediretto alla pagina di aggiornamento in 5 secondi.", + "App update" : "Aggiornamento applicazione", + "Error: This app can not be enabled because it makes the server unstable" : "Errore: questa applicazione non può essere abilitata perché rende il server instabile", + "SSL Root Certificates" : "Certificati radice SSL", + "Common Name" : "Nome comune", + "Valid until" : "Valido fino al", + "Issued By" : "Emesso da", + "Valid until %s" : "Valido fino al %s", + "Import root certificate" : "Importa certificato radice", + "Administrator documentation" : "Documentazione amministratore", + "Documentation" : "Documentazione", + "Forum" : "Forum", + "None" : "Nessuno", + "Login" : "Accesso", + "Plain" : "Semplice", + "NT LAN Manager" : "Gestore NT LAN", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Server di posta", + "Open documentation" : "Apri la documentazione", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "È importante impostare questo server per poter inviare email, come per il ripristino della password e per le notifiche.", + "Send mode" : "Modalità di invio", + "Encryption" : "Cifratura", + "Sendmail mode" : "Modalità sendmail", + "From address" : "Indirizzo mittente", + "mail" : "posta", + "Authentication method" : "Metodo di autenticazione", + "Authentication required" : "Autenticazione richiesta", + "Server address" : "Indirizzo del server", + "Port" : "Porta", + "Credentials" : "Credenziali", + "SMTP Username" : "Nome utente SMTP", + "SMTP Password" : "Password SMTP", + "Save" : "Salva", + "Test email settings" : "Prova impostazioni email", + "Send email" : "Invia email", + "Security & setup warnings" : "Avvisi di sicurezza e di configurazione", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "È importante per la sicurezza e le prestazioni della tua istanza che tutto sia configurato correttamente. Per aiutarti in questo senso, stiamo eseguendo alcuni controlli automatici. Vedi la documentazione collegata per ulteriori informazioni.", + "All checks passed." : "Tutti i controlli passati.", + "There are some errors regarding your setup." : "Sono presenti degli errori relativi alla tua configurazione.", + "There are some warnings regarding your setup." : "Sono presenti degli avvisi relativi alla tua configurazione.", + "Checking for system and security issues." : "Verifica di problemi di sistema e sicurezza.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Leggi attentamente le <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">guide d'installazione ↗</a>, e controlla gli errori o gli avvisi nel <a href=\"%2$s\">log</a>.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Controlla la sicurezza del tuo Nextcloud con la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">nostra scansione di sicurezza ↗</a>", + "Version" : "Versione", + "Two-Factor Authentication" : "Autenticazione a due fattori", + "Server-side encryption" : "Cifratura lato server", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "La cifratura lato server rende possibile cifrare i file caricati sul server. Ciò presenta dei limiti, come una riduzione delle prestazioni, perciò abilita questa funzione solo se necessario.", + "Enable server-side encryption" : "Abilita cifratura lato server", + "Please read carefully before activating server-side encryption: " : "Leggi attentamente prima di attivare la cifratura lato server:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Quando la cifratura è abilitata, tutti i file caricati sul server da quel momento in poi saranno cifrati sul server. Sarà possibile solo disabilitare successivamente la cifratura se il modulo di cifratura attivo lo consente, e se tutti i prerequisiti (ad es. l'impostazione di una chiave di recupero) sono verificati.", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "La sola cifratura non garantisce la sicurezza del sistema. Leggi la documentazione per ottenere ulteriori informazioni sul funzionamento dell'applicazione di cifratura.", + "Be aware that encryption always increases the file size." : "Considera che la cifratura incrementa sempre la dimensione dei file.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Ti consigliamo di creare copie di sicurezza dei tuoi dati con regolarità, in caso di utilizzo della cifratura, assicurati di creare una copia delle chiavi di cifratura insieme ai tuoi dati.", + "This is the final warning: Do you really want to enable encryption?" : "Questo è l'ultimo avviso: vuoi davvero abilitare la cifratura?", + "Enable encryption" : "Abilita cifratura", + "No encryption module loaded, please enable an encryption module in the app menu." : "Nessun modulo di cifratura caricato, carica un modulo di cifratura nel menu delle applicazioni.", + "Select default encryption module:" : "Seleziona il modulo di cifratura predefinito:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Devi migrare le tue chiavi di cifratura dalla vecchia cifratura (ownCloud <= 8.0) alla nuova. Abilita il \"Modulo di cifratura predefinito\" ed esegui 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Devi migrare le tue chiavi di cifratura dalla vecchia cifratura (ownCloud <= 8.0) alla nuova.", + "Start migration" : "Avvia migrazione", + "Background jobs" : "Operazioni in background", + "Last job ran %s." : "Ultima esecuzione di cron: %s.", + "Last job execution ran %s. Something seems wrong." : "Ultima esecuzione di cron: %s. Potrebbe esserci un problema.", + "Background job didn’t run yet!" : "Operazione in background non ancora eseguita!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Per prestazioni ottimali è importante configurare le operazioni in background correttamente. Per le istanze più grandi 'Cron' è l'impostazione consigliata. Vedi la documentazione per ulteriori informazioni.", + "Pick background job setting" : "Scegli le impostazioni delle operazioni in background", + "Execute one task with each page loaded" : "Esegui un'operazione con ogni pagina caricata", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php è registrato su un servizio webcron per invocare cron.php ogni 5 minuti su HTTP.", + "Use system cron service to call the cron.php file every 5 minutes." : "Usa il servizio cron di sistema per invocare il file cron.php ogni 5 minuti.", + "The cron.php needs to be executed by the system user \"%s\"." : "Il cron.php deve essere eseguito dall'utente di sistema \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Per eseguirlo, hai bisogno dell'estensione POSIX di PHP. Vedi la {linkstart}documentazione di PHP{linkend} per ulteriori dettagli.", + "Sharing" : "Condivisione", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "In qualità di amministratore puoi configurare in modo granulare il comportamento della condivisione. Vedi la documentazione per ulteriori informazioni.", + "Allow apps to use the Share API" : "Consenti alle applicazioni di utilizzare le API di condivisione", + "Allow users to share via link" : "Consenti agli utenti di condividere tramite collegamento", + "Allow public uploads" : "Consenti caricamenti pubblici", + "Always ask for a password" : "Chiedi sempre una password", + "Enforce password protection" : "Imponi la protezione con password", + "Set default expiration date" : "Imposta data di scadenza predefinita", + "Expire after " : "Scadenza dopo", + "days" : "giorni", + "Enforce expiration date" : "Forza la data di scadenza", + "Allow resharing" : "Consenti la ri-condivisione", + "Allow sharing with groups" : "Consenti la condivisione con gruppi", + "Restrict users to only share with users in their groups" : "Limita gli utenti a condividere solo con gli utenti nei loro gruppi", + "Exclude groups from sharing" : "Escludi gruppi dalla condivisione", + "These groups will still be able to receive shares, but not to initiate them." : "Questi gruppi saranno in grado di ricevere condivisioni, ma non iniziarle.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Consenti il completamento del nome utente nella finestra di condivisione. Se è disabilitata, è necessario digitare il nome utente completo o l'indirizzo di posta.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Mostra il testo di liberatoria sulla pagina di caricamento del collegamento pubblico. (Mostrato solo quando l'elenco dei file nascosto)", + "This text will be shown on the public link upload page when the file list is hidden." : "Questo testo sarà mostrato sulla pagina di caricamento del collegamento pubblico quando l'elenco dei file è nascosto.", + "Default share permissions" : "Permessi predefiniti di condivisione", + "Personal" : "Personale", + "Administration" : "Amministrazione", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Sviluppato dalla {communityopen}comunità di Nextcloud{linkclose}, il {githubopen}codice sorgente{linkclose} è rilasciato nei termini della licenza {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Mi piace sulla nostra pagina di Facebook!", + "Follow us on Twitter" : "Seguici su Twitter!", + "Follow us on Mastodon" : "Seguici su Mastodon", + "Check out our blog" : "Leggi il nostro blog!", + "Subscribe to our newsletter" : "Iscriviti alla nostra newsletter", + "Profile picture" : "Immagine del profilo", + "Upload new" : "Carica nuova", + "Select from Files" : "Seleziona da file", + "Remove image" : "Rimuovi immagine", + "png or jpg, max. 20 MB" : "png o jpg, max. 20 MB", + "Picture provided by original account" : "Immagine fornita dall'account originale", + "Cancel" : "Annulla", + "Choose as profile picture" : "Scegli come immagine del profilo", + "Details" : "Dettagli", + "You are a member of the following groups:" : "Sei un membro dei seguenti gruppi:", + "You are using <strong>%s</strong>" : "Stai utilizzando <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Stai utilizzando <strong>%1$s</strong> di <strong>%2$s</strong> (<strong>%3$s%%</strong>)", + "Full name" : "Nome completo", + "No display name set" : "Nome visualizzato non impostato", + "Your email address" : "Il tuo indirizzo email", + "No email address set" : "Nessun indirizzo email impostato", + "For password reset and notifications" : "Per ripristino della password e notifiche", + "Phone number" : "Numero di telefono", + "Your phone number" : "Il tuo numero di telefono", + "Address" : "Indirizzo", + "Your postal address" : "Il tuo indirizzo postale", + "Website" : "Sito web", + "It can take up to 24 hours before the account is displayed as verified." : "Potrebbero essere necessarie 24 ore prima che l'account sia visualizzato come verificato.", + "Link https://…" : "Collegamento https://...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Nome utente Twitter @...", + "Help translate" : "Migliora la traduzione", + "Locale" : "Localizzazione", + "Current password" : "Password attuale", + "Change password" : "Modifica password", + "Use a second factor besides your password to increase security for your account." : "Utilizza un secondo fattore oltre alla tua password per aumentare la sicurezza per il tuo account.", + "Disconnect" : "Disconnetti", + "Not supported!" : "Non supportato!", + "Press ⌘-C to copy." : "Premi ⌘-C per copiare.", + "Press Ctrl-C to copy." : "Premi Ctrl-C per copiare.", + "Error while loading browser sessions and device tokens" : "Errore durante il caricamento delle sessioni del browser e dei token di dispositivo", + "Store credentials" : "Memorizza le credenziali", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php è registrato su un servizio webcron per invocare cron.php ogni 15 minuti su HTTP.", + "Use system cron service to call the cron.php file every 15 minutes." : "Usa il servizio cron di sistema per invocare il file cron.php ogni 15 minuti.", + "Follow us on Google+" : "Seguici su Google+" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/it.json b/apps/settings/l10n/it.json new file mode 100644 index 00000000000..1515e6d588c --- /dev/null +++ b/apps/settings/l10n/it.json @@ -0,0 +1,821 @@ +{ "translations": { + "{actor} added you to group {group}" : "{actor} ti ha aggiunto al gruppo {group}", + "You added {user} to group {group}" : "Hai aggiunto {user} al gruppo {group}", + "{actor} added {user} to group {group}" : "{actor} ha aggiunto {user} al gruppo {group}", + "An administrator added you to group {group}" : "Un amministratore ti ha aggiunto al gruppo {group}", + "An administrator added {user} to group {group}" : "Un amministratore ha aggiunto {user} al gruppo {group}", + "{actor} removed you from group {group}" : "{actor} ti ha rimosso dal gruppo {group}", + "You removed {user} from group {group}" : "Hai rimosso {user} dal gruppo {group}", + "{actor} removed {user} from group {group}" : "{actor} ha rimosso {user} dal gruppo {group}", + "An administrator removed you from group {group}" : "Un amministratore ti ha rimosso dal gruppo {group}", + "An administrator removed {user} from group {group}" : "Un amministratore ha rimosso {user} dal gruppo {group}", + "Your <strong>group memberships</strong> were modified" : "Le tue <strong>appartenenze ai gruppi</strong> sono state modificate", + "{actor} changed your password" : "{actor} ha cambiato la tua password", + "You changed your password" : "Hai cambiato la tua password", + "Your password was reset by an administrator" : "La tua password è stata reimpostata da un amministratore", + "{actor} changed your email address" : "{actor} ha cambiato il tuo indirizzo email", + "You changed your email address" : "Hai cambiato il tuo indirizzo email", + "Your email address was changed by an administrator" : "Il tuo indirizzo email è stato cambiato da un amministratore", + "You created app password \"{token}\"" : "Hai creato la password di applicazione \"{token}\"", + "You deleted app password \"{token}\"" : "Hai eliminato la password di applicazione \"{token}\"", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Hai rinominato la password applicativa da \"{token}\" a \"{newToken}\"", + "You granted filesystem access to app password \"{token}\"" : "Hai concesso l'accesso al filesystem alla password di applicazione \"{token}\"", + "You revoked filesystem access from app password \"{token}\"" : "Hai revocato l'accesso al filesystem dalla password di applicazione \"{token}\"", + "Security" : "Sicurezza", + "You successfully logged in using two-factor authentication (%1$s)" : "Hai effettuato correttamente l'accesso utilizzando l'autenticazione a due fattori (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Un tentativo di utilizzare l'autenticazione a due fattori non è riuscito (%1$s)", + "Remote wipe was started on %1$s" : "Cancellazione remota avviata su %1$s", + "Remote wipe has finished on %1$s" : "Cancellazione remota terminata su %1$s", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "La tua<strong>password</strong> o <strong>email</strong> è stata modificata", + "Couldn't remove app." : "Impossibile rimuovere l'applicazione.", + "Couldn't update app." : "Impossibile aggiornate l'applicazione.", + "Wrong password" : "Password errata", + "Saved" : "Salvato", + "No user supplied" : "Non è stato fornito alcun utente", + "Unable to change password" : "Impossibile cambiare la password", + "Authentication error" : "Errore di autenticazione", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Fornisci una password amministrativa di ripristino; altrimenti, tutti i dati degli utenti saranno persi.", + "Wrong admin recovery password. Please check the password and try again." : "Password amministrativa di ripristino errata. Controlla la password e prova ancora.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Il motore non supporta la modifica della password, ma la chiave di cifratura dell'utente è stata aggiornata.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "installazione e aggiornamento delle applicazioni tramite il negozio delle applicazioni o condivisione cloud federata", + "Federated Cloud Sharing" : "Condivisione cloud federata", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL sta utilizzando una versione di %1$s datata (%2$s). Aggiorna il tuo sistema operativo o funzionalità come %3$s non funzioneranno correttamente.", + "Invalid SMTP password." : "Password SMTP non valida.", + "Email setting test" : "Prova impostazioni email", + "Well done, %s!" : "Ben fatto, %s!", + "If you received this email, the email configuration seems to be correct." : "Se hai ricevuto questo messaggio, la configurazione della posta elettronica dovrebbe essere corretta.", + "Email could not be sent. Check your mail server log" : "Il messaggio non può essere inviato. Controlla il log del tuo server di posta", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Si è verificato un problema durante l'invio dell'email. Controlla le tue impostazioni. (Errore: %s)", + "You need to set your user email before being able to send test emails." : "Devi impostare l'indirizzo del tuo utente prima di poter provare l'invio delle email.", + "Invalid mail address" : "Indirizzo email non valido", + "Settings saved" : "Impostazioni salvate", + "Unable to change full name" : "Impossibile cambiare il nome completo", + "Unable to change email address" : "Impossibile cambiare l'indirizzo di posta", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Per verificare il tuo account Twitter, pubblica il seguente tweet su Twitter (assicurati di pubblicarlo senza interruzioni di riga):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Per verificare il tuo sito web, memorizza il seguente contenuto nella radice del tuo sito in '.well-known/CloudIdVerificationCode.txt' (assicurati che l'intero testo sia in una riga):", + "%1$s changed your password on %2$s." : "%1$s ha cambiato la tua password su %2$s.", + "Your password on %s was changed." : "La tua password su %s è stata modificata.", + "Your password on %s was reset by an administrator." : "La tua password su %s è stata reimpostata da un amministratore", + "Password for %1$s changed on %2$s" : "Password per %1$s cambiata su %2$s", + "Password changed for %s" : "Password modificata per %s", + "If you did not request this, please contact an administrator." : "Se non lo hai richiesto, contatta un amministratore.", + "Your email address on %s was changed." : "Il tuo indirizzo di posta su %s è stata modificato.", + "Your email address on %s was changed by an administrator." : "Il tuo indirizzo di posta su %s è stato modificato da un amministratore.", + "Email address for %1$s changed on %2$s" : "Indirizzo di posta per %1$s modificato su %2$s", + "Email address changed for %s" : "Indirizzo di posta modificato per %s", + "The new email address is %s" : "Il nuovo indirizzo email è %s", + "Your %s account was created" : "Il tuo account %s è stato creato", + "Welcome aboard" : "Benvenuto a bordo", + "Welcome aboard %s" : "Benvenuto a bordo di %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Benvenuto nel tuo account %s, puoi aggiungere, proteggere e condividere i tuoi dati.", + "Your username is: %s" : "Il tuo nome utente è: %s", + "Set your password" : "Imposta la tua password", + "Go to %s" : "Vai a %s", + "Install Client" : "Installa client", + "Logged in user must be a subadmin" : "L'utente che ha eseguito l'accesso deve essere un sotto-amministratore ", + "Create" : "Crea", + "Change" : "Modifica", + "Delete" : "Elimina", + "Share" : "Condividi", + "Unlimited" : "Illimitata", + "Verifying" : "Verifica", + "Verifying …" : "Verifica in corso...", + "Verify" : "Verifica", + "Migration in progress. Please wait until the migration is finished" : "Migrazione in corso. Attendi fino al completamento della migrazione", + "Migration started …" : "Migrazione avviata...", + "Not saved" : "Non salvato", + "Sending…" : "Invio in corso...", + "Email sent" : "Email inviata", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Si è verificato un errore. Carica un certificato PEM codificato in ASCII.", + "Valid until {date}" : "Valido fino al {date}", + "Local" : "Locale", + "Private" : "Privato", + "Only visible to local users" : "Visibile solo agli utenti locali", + "Only visible to you" : "Visibile solo a te", + "Contacts" : "Contatti", + "Visible to local users and to trusted servers" : "Visibile agli utenti locali e ai server affidabili", + "Public" : "Pubblico", + "Will be synced to a global and public address book" : "Sarà sincronizzato con una rubrica globale e pubblica", + "Very weak password" : "Password molto debole", + "Weak password" : "Password debole", + "So-so password" : "Password così-così", + "Good password" : "Password buona", + "Strong password" : "Password forte", + "An error occurred while changing your language. Please reload the page and try again." : "Si è verificato un errore durante la modifica della lingua. Ricarica la pagina e prova ancora.", + "An error occurred while changing your locale. Please reload the page and try again." : "Si è verificato un errore durante la modifica della localizzazione. Ricarica la pagina e prova ancora.", + "Select a profile picture" : "Seleziona un'immagine del profilo", + "Week starts on {fdow}" : "La settimana inizia il {fdow}", + "Groups" : "Gruppi", + "Group list is empty" : "L'elenco dei gruppi è vuoto", + "Unable to retrieve the group list" : "Impossibile recuperare l'elenco dei gruppi", + "Afrikaans (Namibia)" : "Afrikaans (Namibia)", + "Afrikaans (South Africa)" : "Afrikaans (Sud Africa)", + "Afrikaans" : "Afrikaans", + "Akan (Ghana)" : "Akan (Ghana)", + "Akan" : "Akan", + "Albanian (Albania)" : "Albanese (Albania)", + "Albanian" : "Albanese", + "Amharic (Ethiopia)" : "Amarico (Etiopia)", + "Amharic" : "Amarico", + "Arabic (Algeria)" : "Arabo (Algeria)", + "Arabic (Bahrain)" : "Arabo (Bahrain)", + "Arabic (Egypt)" : "Arabo (Egitto)", + "Arabic (Iraq)" : "Arabo (Iraq)", + "Arabic (Jordan)" : "Arabo (Giordania)", + "Arabic (Kuwait)" : "Arabo (Kuwait)", + "Arabic (Lebanon)" : "Arabo (Libano)", + "Arabic (Libya)" : "Arabo (Libia)", + "Arabic (Morocco)" : "Arabo (Marocco)", + "Arabic (Oman)" : "Arabo (Oman)", + "Arabic (Qatar)" : "Arabo (Qatar)", + "Arabic (Saudi Arabia)" : "Arabo (Arabia Saudita)", + "Arabic (Sudan)" : "Arabo (Sudan)", + "Arabic (Syria)" : "Arabo (Siria)", + "Arabic (Tunisia)" : "Arabo (Tunisia)", + "Arabic (United Arab Emirates)" : "Arabo (Emirati Arabi Uniti)", + "Arabic (Yemen)" : "Arabo (Yemen)", + "Arabic" : "Arabo", + "Armenian (Armenia)" : "Armeno (Armenia)", + "Armenian" : "Armeno", + "Assamese (India)" : "Assamese (India)", + "Assamese" : "Assamese", + "Asu (Tanzania)" : "Asu (Tanzania)", + "Asu" : "Asu", + "Azerbaijani (Cyrillic)" : "Azero (Cirillico)", + "Azerbaijani (Cyrillic, Azerbaijan)" : "Azero (Cirillico, Azerbaijan)", + "Azerbaijani (Latin)" : "Azero (Latino)", + "Azerbaijani (Latin, Azerbaijan)" : "Azero (Latino, Azerbaijan)", + "Azerbaijani" : "Azero", + "Bambara (Mali)" : "Bambara (Mali)", + "Bambara" : "Bambara", + "Basque (Spain)" : "Basco (Spagna)", + "Basque" : "Basco", + "Belarusian (Belarus)" : "Bielorusso (Bielorussia)", + "Belarusian" : "Bielorusso", + "Bemba (Zambia)" : "Bemba (Zambia)", + "Bemba" : "Bemba", + "Bena (Tanzania)" : "Bena (Tanzania)", + "Bena" : "Bena", + "Bengali (Bangladesh)" : "Bengali (Bangladesh)", + "Bengali (India)" : "Bengali (India)", + "Bengali" : "Bengali", + "Bosnian (Bosnia and Herzegovina)" : "Bosniaco (Bosnia ed Erzegovina)", + "Bosnian" : "Bosniaco", + "Bulgarian (Bulgaria)" : "Bulgaro (Bulgaria)", + "Bulgarian" : "Bulgaro", + "Burmese (Myanmar [Burma])" : "Birmano (Myanmar [Birmania])", + "Burmese" : "Birmano", + "Catalan (Spain)" : "Catalano (Spagna)", + "Catalan" : "Catalano", + "Central Morocco Tamazight (Latin)" : "Tamazight del Marocco centrale (Latino)", + "Central Morocco Tamazight (Latin, Morocco)" : "Tamazight del Marocco centrale (Latino, Marocco)", + "Central Morocco Tamazight" : "Tamazight del Marocco centrale", + "Cherokee (United States)" : "Cherokee (Stati Uniti)", + "Cherokee" : "Cherokee", + "Chiga (Uganda)" : "Chiga (Uganda)", + "Chiga" : "Chiga", + "Chinese (Simplified Han)" : "Cinese (Han semplificato)", + "Chinese (Simplified Han, China)" : "Cinese (Han semplificato, Cina)", + "Chinese (Simplified Han, Hong Kong SAR China)" : "Cinese (Han semplificato, Hong Kong SAR Cina)", + "Chinese (Simplified Han, Macau SAR China)" : "Cinese (Han semplificato, Macao SAR Cina)", + "Chinese (Simplified Han, Singapore)" : "Cinese (Han semplificato, Singapore)", + "Chinese (Traditional Han)" : "Cinese (Han tradizionale)", + "Chinese (Traditional Han, Hong Kong SAR China)" : "Cinese (Han tradizionale, Hong Kong SAR Cina)", + "Chinese (Traditional Han, Macau SAR China)" : "Cinese (Han tradizionale, Macao SAR Cina)", + "Chinese (Traditional Han, Taiwan)" : "Cinese (Han tradizionale, Taiwan)", + "Chinese" : "Cinese", + "Cornish (United Kingdom)" : "Cornico (Regno Unito)", + "Cornish" : "Cornico", + "Croatian (Croatia)" : "Croato (Croazia)", + "Croatian" : "Croato", + "Czech (Czech Republic)" : "Ceco (Cechia)", + "Czech" : "Ceco", + "Danish (Denmark)" : "Danese (Danimarca)", + "Danish" : "Danese", + "Dutch (Belgium)" : "Olandese (Belgio)", + "Dutch (Netherlands)" : "Olandese (Olanda)", + "Dutch" : "Olandese", + "Embu (Kenya)" : "Embu (Kenya)", + "Embu" : "Embu", + "English (American Samoa)" : "Inglese (Samoa Americane)", + "English (Australia)" : "Inglese (Australia)", + "English (Belgium)" : "Inglese (Belgio)", + "English (Belize)" : "Inglese (Belize)", + "English (Botswana)" : "Inglese (Botswana)", + "English (Canada)" : "Inglese (Canada)", + "English (Guam)" : "Inglese (Guam)", + "English (Hong Kong SAR China)" : "Inglese (Hong Kong SAR Cina)", + "English (India)" : "Inglese (India)", + "English (Ireland)" : "Inglese (Irlanda)", + "English (Jamaica)" : "Inglese (Giamaica)", + "English (Malta)" : "Inglese (Malta)", + "English (Marshall Islands)" : "Inglese (Isole Marshall)", + "English (Mauritius)" : "Inglese (Mauritius)", + "English (Namibia)" : "Inglese (Namibia)", + "English (New Zealand)" : "Inglese (Nuova Zelandia)", + "English (Northern Mariana Islands)" : "Inglese (Isole Marianne settentrionali)", + "English (Pakistan)" : "Inglese (Pakistan)", + "English (Philippines)" : "Inglese (Filippine)", + "English (Singapore)" : "Inglese (Singapore)", + "English (South Africa)" : "Inglese (Sud Africa)", + "English (Trinidad and Tobago)" : "Inglese (Trinidad e Tobago)", + "English (U.S. Minor Outlying Islands)" : "Inglese (Isole minori esterne americane)", + "English (U.S. Virgin Islands)" : "Inglese (Isole Vergini americane)", + "English (United Kingdom)" : "Inglese (Regno Unito)", + "English (United States)" : "Inglese (Stati Uniti)", + "English (Zimbabwe)" : "Inglese (Zimbabwe)", + "English" : "Inglese", + "Esperanto" : "Esperanto", + "Estonian (Estonia)" : "Estone (Estonia)", + "Estonian" : "Estone", + "Ewe (Ghana)" : "Ewe (Ghana)", + "Ewe (Togo)" : "Ewe (Togo)", + "Ewe" : "Ewe", + "Faroese (Faroe Islands)" : "Faroese (Isole Faroe)", + "Faroese" : "Faroese", + "Filipino (Philippines)" : "Filippino (Filippine)", + "Filipino" : "Filippino", + "Finnish (Finland)" : "Finlandese (Finlandia)", + "Finnish" : "Finlandese", + "French (Belgium)" : "Francese (Belgio)", + "French (Benin)" : "Francese (Benin)", + "French (Burkina Faso)" : "Francese (Burkina Faso)", + "French (Burundi)" : "Francese (Burundi)", + "French (Cameroon)" : "Francese (Camerun)", + "French (Canada)" : "Francese (Canada)", + "French (Central African Republic)" : "Francese (Repubblica Centrafricana)", + "French (Chad)" : "Francese (Chad)", + "French (Comoros)" : "Francese (Comore)", + "French (Congo - Brazzaville)" : "Francese (Congo - Brazzaville)", + "French (Congo - Kinshasa)" : "Francese (Congo - Kinshasa)", + "French (Côte d’Ivoire)" : "Francese (Costa d'Avorio)", + "French (Djibouti)" : "Francese (Djibouti)", + "French (Equatorial Guinea)" : "Francese (Guinea Equatoriale)", + "French (France)" : "Francese (Francia)", + "French (Gabon)" : "Francese (Gabon)", + "French (Guadeloupe)" : "Francese (Guadalupa)", + "French (Guinea)" : "Francese (Guinea)", + "French (Luxembourg)" : "Francese (Lussemburgo)", + "French (Madagascar)" : "Francese (Madagascar)", + "French (Mali)" : "Francese (Mali)", + "French (Martinique)" : "Francese (Martinica)", + "French (Monaco)" : "Francese (Monaco)", + "French (Niger)" : "Francese (Niger)", + "French (Rwanda)" : "Francese (Rwanda)", + "French (Réunion)" : "Francese (Réunion)", + "French (Saint Barthélemy)" : "Francese (Saint Barthélemy)", + "French (Saint Martin)" : "Francese (Saint Martin)", + "French (Senegal)" : "Francese (Senegal)", + "French (Switzerland)" : "Francese (Svizzera)", + "French (Togo)" : "Francese (Togo)", + "French" : "Francese", + "Fulah (Senegal)" : "Fulah (Senegal)", + "Fulah" : "Fulah", + "Galician (Spain)" : "Galiziano (Spagna)", + "Galician" : "Galiziano", + "Ganda (Uganda)" : "Ganda (Uganda)", + "Ganda" : "Ganda", + "Georgian (Georgia)" : "Georgiano (Georgia)", + "Georgian" : "Georgiano", + "German (Austria)" : "Tedesco (Austria)", + "German (Belgium)" : "Tedesco (Belgio)", + "German (Germany)" : "Tedesco (Germania)", + "German (Liechtenstein)" : "Tedesco (Liechtenstein)", + "German (Luxembourg)" : "Tedesco (Lussemburgo)", + "German (Switzerland)" : "Tedesco (Svizzera)", + "German" : "Tedesco", + "Greek (Cyprus)" : "Greco (Cipro)", + "Greek (Greece)" : "Greco (Grecia)", + "Greek" : "Greco", + "Gujarati (India)" : "Gujarati (India)", + "Gujarati" : "Gujarati", + "Gusii (Kenya)" : "Gusii (Kenya)", + "Gusii" : "Gusii", + "Hausa (Latin)" : "Hausa (Latino)", + "Hausa (Latin, Ghana)" : "Hausa (Latino, Ghana)", + "Hausa (Latin, Niger)" : "Hausa (Latino, Niger)", + "Hausa (Latin, Nigeria)" : "Hausa (Latino, Nigeria)", + "Hausa" : "Hausa", + "Hawaiian (United States)" : "Hawaiano (Stati Uniti)", + "Hawaiian" : "Hawaiano", + "Hebrew (Israel)" : "Ebreo (Israele)", + "Hebrew" : "Ebreo", + "Hindi (India)" : "Hindi (India)", + "Hindi" : "Hindi", + "Hungarian (Hungary)" : "Ungherese (Ungheria)", + "Hungarian" : "Ungherese", + "Icelandic (Iceland)" : "Islandese (Islanda)", + "Icelandic" : "Islandese", + "Igbo (Nigeria)" : "Igbo (Nigeria)", + "Igbo" : "Igbo", + "Indonesian (Indonesia)" : "Indonesiano (Indonesia)", + "Indonesian" : "Indonesiano", + "Irish (Ireland)" : "Irlandese (Irlanda)", + "Irish" : "Irlandese", + "Italian (Italy)" : "Italiano (Italia)", + "Italian (Switzerland)" : "Italiano (Svizzera)", + "Italian" : "Italiano", + "Japanese (Japan)" : "Giapponese (Giappone)", + "Japanese" : "Giapponese", + "Kabuverdianu (Cape Verde)" : "Capoverdiano (Capo Verde)", + "Kabuverdianu" : "Capoverdiano", + "Kabyle (Algeria)" : "Cabilo (Algeria)", + "Kabyle" : "Cabilo", + "Kalaallisut (Greenland)" : "Kalaallisut (Groenlandia)", + "Kalaallisut" : "Kalaallisut", + "Kalenjin (Kenya)" : "Kalenjin (Kenya)", + "Kalenjin" : "Kalenjin", + "Kamba (Kenya)" : "Kamba (Kenya)", + "Kamba" : "Kamba", + "Kannada (India)" : "Kannada (India)", + "Kannada" : "Kannada", + "Kazakh (Cyrillic)" : "Kazako (Cirillico)", + "Kazakh (Cyrillic, Kazakhstan)" : "Kazako (Cirillico, Kazakhstan)", + "Kazakh" : "Kazako", + "Khmer (Cambodia)" : "Khmer (Cambogia)", + "Khmer" : "Khmer", + "Kikuyu (Kenya)" : "Kikuyu (Kenya)", + "Kikuyu" : "Kikuyu", + "Kinyarwanda (Rwanda)" : "Kinyarwanda (Rwanda)", + "Kinyarwanda" : "Kinyarwanda", + "Konkani (India)" : "Konkani (India)", + "Konkani" : "Konkani", + "Korean (South Korea)" : "Coreano (Corea del Sud)", + "Korean" : "Coreano", + "Koyra Chiini (Mali)" : "Koyra Chiini (Mali)", + "Koyra Chiini" : "Koyra Chiini", + "Koyraboro Senni (Mali)" : "Koyraboro Senni (Mali)", + "Koyraboro Senni" : "Koyraboro Senni", + "Langi (Tanzania)" : "Langi (Tanzania)", + "Langi" : "Langi", + "Latvian (Latvia)" : "Lettone (Lettonia)", + "Latvian" : "Lettone", + "Lithuanian (Lithuania)" : "Lituano (Lituano)", + "Lithuanian" : "Lituano", + "Luo (Kenya)" : "Luo (Kenya)", + "Luo" : "Luo", + "Luyia (Kenya)" : "Luyia (Kenya)", + "Luyia" : "Luyia", + "Macedonian (Macedonia)" : "Macedone (Macedonia)", + "Macedonian" : "Macedone", + "Machame (Tanzania)" : "Machame (Tanzania)", + "Machame" : "Machame", + "Makonde (Tanzania)" : "Makonde (Tanzania)", + "Makonde" : "Makonde", + "Malagasy (Madagascar)" : "Malgascio (Madagascar)", + "Malagasy" : "Malgascio", + "Malay (Brunei)" : "Malese (Brunei)", + "Malay (Malaysia)" : "Malese (Malaysia)", + "Malay" : "Malese", + "Malayalam (India)" : "Malayalam (India)", + "Malayalam" : "Malayalam", + "Maltese (Malta)" : "Maltese (Malta)", + "Maltese" : "Maltese", + "Manx (United Kingdom)" : "Mannese (Regno Unito)", + "Manx" : "Mannese", + "Marathi (India)" : "Marathi (India)", + "Marathi" : "Marathi", + "Masai (Kenya)" : "Masai (Kenya)", + "Masai (Tanzania)" : "Masai (Tanzania)", + "Masai" : "Masai", + "Meru (Kenya)" : "Meru (Kenya)", + "Meru" : "Meru", + "Morisyen (Mauritius)" : "Mauriziano (Mauritius)", + "Morisyen" : "Mauriziano", + "Nama (Namibia)" : "Nama (Namibia)", + "Nama" : "Nama", + "Nepali (India)" : "Nepalese (India)", + "Nepali (Nepal)" : "Nepalese (Nepal)", + "Nepali" : "Nepalese", + "North Ndebele (Zimbabwe)" : "Ndebele del Nord (Zimbabwe)", + "North Ndebele" : "Ndebele del Nord", + "Norwegian Bokmål (Norway)" : "Bokmål norvegese (Norvegese)", + "Norwegian Bokmål" : "Bokmål norvegese", + "Norwegian Nynorsk (Norway)" : "Nynorsk norvegese (Norvegia)", + "Norwegian Nynorsk" : "Nynorsk norvegese", + "Nyankole (Uganda)" : "Nyankole (Uganda)", + "Nyankole" : "Nyankole", + "Oriya (India)" : "Oriya (India)", + "Oriya" : "Oriya", + "Oromo (Ethiopia)" : "Oromo (Etiopia)", + "Oromo (Kenya)" : "Oromo (Kenya)", + "Oromo" : "Oromo", + "Pashto (Afghanistan)" : "Pashto (Afghanistan)", + "Pashto" : "Pashto", + "Persian (Afghanistan)" : "Persiano (Afghanistan)", + "Persian (Iran)" : "Persiano (Iran)", + "Persian" : "Persiano", + "Polish (Poland)" : "Polacco (Polonia)", + "Polish" : "Polacco", + "Portuguese (Brazil)" : "Portoghese (Brasile)", + "Portuguese (Guinea-Bissau)" : "Portoghese (Guinea-Bissau)", + "Portuguese (Mozambique)" : "Portoghese (Mozambico)", + "Portuguese (Portugal)" : "Portoghese (Portogallo)", + "Portuguese" : "Portoghese", + "Punjabi (Arabic)" : "Punjabi (Arabo)", + "Punjabi (Arabic, Pakistan)" : "Punjabi (Arabo, Pakistan)", + "Punjabi (Gurmukhi)" : "Punjabi (Gurmukhi)", + "Punjabi (Gurmukhi, India)" : "Punjabi (Gurmukhi, India)", + "Punjabi" : "Punjabi", + "Romanian (Moldova)" : "Rumeno (Moldavia)", + "Romanian (Romania)" : "Rumeno (Romania)", + "Romanian" : "Rumeno", + "Romansh (Switzerland)" : "Romangio (Svizzera)", + "Romansh" : "Romangio", + "Rombo (Tanzania)" : "Rombo (Tanzania)", + "Rombo" : "Rombo", + "Russian (Moldova)" : "Russo (Moldavia)", + "Russian (Russia)" : "Russo (Russia)", + "Russian (Ukraine)" : "Russo (Ucraina)", + "Russian" : "Russo", + "Rwa (Tanzania)" : "Rwa (Tanzania)", + "Rwa" : "Rwa", + "Samburu (Kenya)" : "Samburu (Kenya)", + "Samburu" : "Samburu", + "Sango (Central African Republic)" : "Sango (Repubblica Centrafricana)", + "Sango" : "Sango", + "Sena (Mozambique)" : "Sena (Mozambico)", + "Sena" : "Sena", + "Serbian (Cyrillic)" : "Serbo (Cirillico)", + "Serbian (Cyrillic, Bosnia and Herzegovina)" : "Serbo (Cirillico, Bosnia ed Erzegovina)", + "Serbian (Cyrillic, Montenegro)" : "Serbo (Cirillico, Montenegro)", + "Serbian (Cyrillic, Serbia)" : "Serbo (Cirillico, Serbia)", + "Serbian (Latin)" : "Serbo (Latino)", + "Serbian (Latin, Bosnia and Herzegovina)" : "Serbo (Latino, Bosnia ed Erzegovina)", + "Serbian (Latin, Montenegro)" : "Serbo (Latino, Montenegro)", + "Serbian (Latin, Serbia)" : "Serbo (Latino, Serbia)", + "Serbian" : "Serbo", + "Shona (Zimbabwe)" : "Shona (Zimbabwe)", + "Shona" : "Shona", + "Sichuan Yi (China)" : "Sichuan Yi (Cina)", + "Sichuan Yi" : "Sichuan Yi", + "Sinhala (Sri Lanka)" : "Cingalese (Sri Lanka)", + "Sinhala" : "Cingalese", + "Slovak (Slovakia)" : "Slovacco (Slovacchia)", + "Slovak" : "Slovacco", + "Slovenian (Slovenia)" : "Sloveno (Slovenia)", + "Slovenian" : "Sloveno", + "Soga (Uganda)" : "Soga (Uganda)", + "Soga" : "Soga", + "Somali (Djibouti)" : "Somalo (Djibouti)", + "Somali (Ethiopia)" : "Somalo (Etiopia)", + "Somali (Kenya)" : "Somalo (Kenya)", + "Somali (Somalia)" : "Somalo (Somalia)", + "Somali" : "Somalo", + "Spanish (Argentina)" : "Spagnolo (Argentina)", + "Spanish (Bolivia)" : "Spagnolo (Bolivia)", + "Spanish (Chile)" : "Spagnolo (Cile)", + "Spanish (Colombia)" : "Spagnolo (Colombia)", + "Spanish (Costa Rica)" : "Spagnolo (Costa Rica)", + "Spanish (Dominican Republic)" : "Spagnolo (Repubblica Dominicana)", + "Spanish (Ecuador)" : "Spagnolo (Ecuador)", + "Spanish (El Salvador)" : "Spagnolo (El Salvador)", + "Spanish (Equatorial Guinea)" : "Spagnolo (Guinea Equatoriale)", + "Spanish (Guatemala)" : "Spagnolo (Guatemala)", + "Spanish (Honduras)" : "Spagnolo (Honduras)", + "Spanish (Latin America)" : "Spagnolo (America Latina)", + "Spanish (Mexico)" : "Spagnolo (Messico)", + "Spanish (Nicaragua)" : "Spagnolo (Nicaragua)", + "Spanish (Panama)" : "Spagnolo (Panama)", + "Spanish (Paraguay)" : "Spagnolo (Paraguay)", + "Spanish (Peru)" : "Spagnolo (Peru)", + "Spanish (Puerto Rico)" : "Spagnolo (Porto Rico)", + "Spanish (Spain)" : "Spagnolo (Spagna)", + "Spanish (United States)" : "Spagnolo (Stati Uniti)", + "Spanish (Uruguay)" : "Spagnolo (Uruguay)", + "Spanish (Venezuela)" : "Spagnolo (Venezuela)", + "Spanish" : "Spagnolo", + "Swahili (Kenya)" : "Swahili (Kenya)", + "Swahili (Tanzania)" : "Swahili (Tanzania)", + "Swahili" : "Swahili", + "Swedish (Finland)" : "Svedese (Finlandia)", + "Swedish (Sweden)" : "Svedese (Svezia)", + "Swedish" : "Svedese", + "Swiss German (Switzerland)" : "Tedesco svizzero (Svizzera)", + "Swiss German" : "Tedesco svizzero", + "Tachelhit (Latin)" : "Tachelhit (Latino)", + "Tachelhit (Latin, Morocco)" : "Tachelhit (Latino, Marocco)", + "Tachelhit (Tifinagh)" : "Tachelhit (Tifinagh)", + "Tachelhit (Tifinagh, Morocco)" : "Tachelhit (Tifinagh, Marocco)", + "Tachelhit" : "Tachelhit", + "Taita (Kenya)" : "Taita (Kenya)", + "Taita" : "Taita", + "Tamil (India)" : "Tamil (India)", + "Tamil (Sri Lanka)" : "Tamil (Sri Lanka)", + "Tamil" : "Tamil", + "Telugu (India)" : "Telugu (India)", + "Telugu" : "Telugu", + "Teso (Kenya)" : "Teso (Kenya)", + "Teso (Uganda)" : "Teso (Uganda)", + "Teso" : "Teso", + "Thai (Thailand)" : "Thai (Thailandia)", + "Thai" : "Thai", + "Tibetan (China)" : "Tibetano (Cina)", + "Tibetan (India)" : "Tibetano (India)", + "Tibetan" : "Tibetano", + "Tigrinya (Eritrea)" : "Tigrino (Eritrea)", + "Tigrinya (Ethiopia)" : "Tigrino (Etiopia)", + "Tigrinya" : "Tigrino", + "Tonga (Tonga)" : "Tonga (Isole Tonga)", + "Tonga" : "Tonga", + "Turkish (Turkey)" : "Turco (Turchia)", + "Turkish" : "Turco", + "Ukrainian (Ukraine)" : "Ucraino (Ucraina)", + "Ukrainian" : "Ucraino", + "Urdu (India)" : "Urdu (India)", + "Urdu (Pakistan)" : "Urdu (Pakistan)", + "Urdu" : "Urdu", + "Uzbek (Arabic)" : "Uzbeko (Arabo)", + "Uzbek (Arabic, Afghanistan)" : "Uzbeko (Arabo, Afghanistan)", + "Uzbek (Cyrillic)" : "Uzbeko (Cirillico)", + "Uzbek (Cyrillic, Uzbekistan)" : "Uzbeko (Cirillico, Uzbekistan)", + "Uzbek (Latin)" : "Uzbeko (Latino)", + "Uzbek (Latin, Uzbekistan)" : "Uzbeko (Latino, Uzbekistan)", + "Uzbek" : "Uzbeko", + "Vietnamese (Vietnam)" : "Vietnamita (Vietnam)", + "Vietnamese" : "Vietnamita", + "Vunjo (Tanzania)" : "Vunjo (Tanzania)", + "Vunjo" : "Vunjo", + "Welsh (United Kingdom)" : "Gallese (Regno Unito)", + "Welsh" : "Gallese", + "Yoruba (Nigeria)" : "Yoruba (Nigeria)", + "Yoruba" : "Yoruba", + "Zulu (South Africa)" : "Zulu (Sud Africa)", + "Zulu" : "Zulu", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "L'autenticazione a due fattori può essere imposta per tutti gli\tutenti e gruppi specifici. Se non hanno un fornitore a due fattori configurato, non saranno in grado di accedere al sistema.", + "Enforce two-factor authentication" : "Applica l'autenticazione a due fattori", + "Limit to groups" : "Limita a gruppi", + "Enforcement of two-factor authentication can be set for certain groups only." : "L'applicazione dell'autenticazione a due fattori può essere impostata solo per determinati gruppi.", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "L'autenticazione a due fattori è applicata per tutti\ti membri dei gruppi seguenti.", + "Enforced groups" : "Gruppi imposti", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "L'autenticazione a due fattori non è applicata per\ti membri dei gruppi seguenti.", + "Excluded groups" : "Gruppi esclusi", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "Quando si selezionano/escludono gruppi, viene utilizzata la logica seguente per determinare se un utente ha 2FA applicato: se non si seleziona alcun gruppo, 2FA è abilitato per chiunque eccetto per i membri dei gruppi esclusi. Se un utente è sia in un gruppo selezionato che in un escluso, il selezionato ha la precedenza e 2FA è applicato.", + "Save changes" : "Salva le modifiche", + "Marked for remote wipe" : "Marcato come cancellazione remota", + "Device settings" : "Impostazioni dei dispositivi", + "Allow filesystem access" : "Consenti accesso al filesystem", + "Rename" : "Rinomina", + "Revoke" : "Revoca", + "Wipe device" : "Cancella dispositivo", + "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "La revoca di questo token potrebbe impedire la cancellazione del tuo dispositivo se non ha ancora iniziato ancora la cancellazione.", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome per Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Applicazione di Nextcloud per iOS", + "Nextcloud Android app" : "Applicazione di Nextcloud per Android", + "Nextcloud Talk for iOS" : "Nextcloud Talk per iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk per Android", + "Sync client - {os}" : "Client di sincronizzazione - {os}", + "This session" : "Questa sessione", + "Device" : "Dispositivo", + "Last activity" : "Ultima attività", + "Devices & sessions" : "Dispositivi e sessioni", + "Web, desktop and mobile clients currently logged in to your account." : "Client web, desktop e mobile attualmente connessi al tuo account.", + "Do you really want to wipe your data from this device?" : "Vuoi davvero eliminare tutti i dati da questo dispositivo?", + "Confirm wipe" : "Conferma eliminazione", + "Error while creating device token" : "Errore durante la creazione del token di dispositivo", + "Error while updating device token scope" : "Errore durante l'aggiornamento del campo del token del dispositivo", + "Error while updating device token name" : "Errore durante l'aggiornamento del nome del token del dispositivo", + "Error while deleting the token" : "Errore durante l'eliminazione del token", + "Error while wiping the device with the token" : "Errore durante la cancellazione del dispositivo con il token", + "App name" : "Nome applicazione", + "Create new app password" : "Crea nuova password di applicazione", + "Use the credentials below to configure your app or device." : "Utilizza le credenziali in basso per configurare la tua applicazione o dispositivo.", + "For security reasons this password will only be shown once." : "Per motivi di sicurezza questa password sarà mostra solo una volta.", + "Username" : "Nome utente", + "Password" : "Password", + "Done" : "Completato", + "Show QR code for mobile apps" : "Mostra il codice QR per le applicazioni mobili", + "Copied!" : "Copiato!", + "Copy" : "Copia", + "Could not copy app password. Please copy it manually." : "Impossibile copiare la password dell'applicazione. Copiala a mano.", + "This app is supported via your current Nextcloud subscription." : "Questa applicazione è supportata tramite la tua sottoscrizione attuale di Nextcloud.", + "Supported" : "Supportata", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Le applicazioni ufficiali sono sviluppate dalla comunità. Esse offrono nuove funzionalità e sono pronte per l'uso in produzione.", + "Official" : "Ufficiale", + "by" : "di", + "Update to {version}" : "Aggiorna a {version}", + "Remove" : "Rimuovi", + "Disable" : "Disabilita", + "All" : "Tutti", + "Limit app usage to groups" : "Limita l'utilizzo dell'applicazione a gruppi", + "No results" : "Nessun risultato", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Questa applicazione non contiene l'informazione della versione minima di Nextcloud richiesta. In futuro ciò sarà considerato un errore.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Questa applicazione non contiene l'informazione della versione massima di Nextcloud richiesta. In futuro ciò sarà considerato un errore.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Questa applicazione non può essere installata perché le seguenti dipendenze non sono soddisfatte:", + "View in store" : "Visualizza nell'archivio", + "Visit website" : "Visita il sito web", + "Report a bug" : "Segnala un bug", + "User documentation" : "Documentazione utente", + "Admin documentation" : "Documentazione di amministrazione", + "Developer documentation" : "Documentazione dello sviluppatore", + "Update to {update}" : "Aggiorna a {update}", + "Results from other categories" : "Risultati da altre categorie", + "No apps found for your version" : "Nessuna applicazione trovata per la tua versione", + "Disable all" : "Disabilita tutto", + "Enable all" : "Abilita tutto", + "Download and enable" : "Scarica e abilita", + "Enable" : "Abilita", + "Enable untested app" : "Abilita applicazione non verificata", + "The app will be downloaded from the app store" : "L'applicazione sarà scaricata dallo store delle applicazioni", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Questa applicazione non è marcata come compatibile con la tua versione di Nextcloud. Se continui sarai ancora in grado di installare l'applicazione. Nota che l'applicazione potrebbe non funzionare come previsto.", + "You do not have permissions to see the details of this user" : "Non hai i permessi per vedere i dettagli di questo utente", + "The backend does not support changing the display name" : "Il motore non supporta la modifica del nome visualizzato", + "New password" : "Nuova password", + "Add user in group" : "Aggiungi utente a gruppo", + "Set user as admin for" : "Imposta utente come amministratore per", + "Select user quota" : "Seleziona quota utente", + "No language set" : "Nessuna lingua impostata", + "Never" : "Mai", + "Delete user" : "Elimina utente", + "Wipe all devices" : "Cancella tutti i dispositivi", + "Disable user" : "Disabilita utente", + "Enable user" : "Abilita utente", + "Resend welcome email" : "Invia nuovamente email di benvenuto", + "{size} used" : "{size} utilizzati", + "Welcome mail sent!" : "Email di benvenuto inviata!", + "Display name" : "Nome visualizzato", + "Email" : "Posta elettronica", + "Group admin for" : "Amministratore per il gruppo", + "Quota" : "Quote", + "Language" : "Lingua", + "Storage location" : "Posizione di archiviazione", + "User backend" : "Motore utente", + "Last login" : "Ultimo accesso", + "Will be autogenerated" : "Sarà generata automaticamente", + "Default language" : "Lingua predefinita", + "Add a new user" : "Aggiungi un nuovo utente", + "No users in here" : "Non ci sono utenti qui", + "Default quota" : "Quota predefinita", + "Password change is disabled because the master key is disabled" : "La modifica della password è disabilitata poiché la chiave principale è disabilitata", + "Common languages" : "Lingue comuni", + "All languages" : "Tutte le lingue", + "Your apps" : "Le tue applicazioni", + "Active apps" : "Applicazioni attive", + "Disabled apps" : "Applicazioni disabilitate", + "Updates" : "Aggiornamenti", + "App bundles" : "Pacchetti di applicazioni", + "{license}-licensed" : "sotto licenza {license}", + "New user" : "Nuovo utente", + "Default quota:" : "Quota predefinita:", + "Select default quota" : "Seleziona la quota predefinita", + "Show Languages" : "Mostra lingue", + "Show last login" : "Mostra ultimo accesso", + "Show user backend" : "Mostra il motore utente", + "Show storage path" : "Mostra percorso di archiviazione", + "You are about to remove the group {group}. The users will NOT be deleted." : "Stai per rimuovere il gruppo {group}. Gli utenti NON saranno eliminati.", + "Please confirm the group removal " : "Conferma la rimozione del gruppo", + "Remove group" : "Rimuovi gruppo", + "Admins" : "Amministratori", + "Disabled users" : "Utenti disabilitati", + "Everyone" : "Chiunque", + "Add group" : "Aggiungi gruppo", + "An error occured during the request. Unable to proceed." : "Si è verificato un errore durante la richiesta. Impossibile continuare..", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "L'applicazione è stata abilitata, ma deve essere aggiornata. Sarai rediretto alla pagina di aggiornamento in 5 secondi.", + "App update" : "Aggiornamento applicazione", + "Error: This app can not be enabled because it makes the server unstable" : "Errore: questa applicazione non può essere abilitata perché rende il server instabile", + "SSL Root Certificates" : "Certificati radice SSL", + "Common Name" : "Nome comune", + "Valid until" : "Valido fino al", + "Issued By" : "Emesso da", + "Valid until %s" : "Valido fino al %s", + "Import root certificate" : "Importa certificato radice", + "Administrator documentation" : "Documentazione amministratore", + "Documentation" : "Documentazione", + "Forum" : "Forum", + "None" : "Nessuno", + "Login" : "Accesso", + "Plain" : "Semplice", + "NT LAN Manager" : "Gestore NT LAN", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Server di posta", + "Open documentation" : "Apri la documentazione", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "È importante impostare questo server per poter inviare email, come per il ripristino della password e per le notifiche.", + "Send mode" : "Modalità di invio", + "Encryption" : "Cifratura", + "Sendmail mode" : "Modalità sendmail", + "From address" : "Indirizzo mittente", + "mail" : "posta", + "Authentication method" : "Metodo di autenticazione", + "Authentication required" : "Autenticazione richiesta", + "Server address" : "Indirizzo del server", + "Port" : "Porta", + "Credentials" : "Credenziali", + "SMTP Username" : "Nome utente SMTP", + "SMTP Password" : "Password SMTP", + "Save" : "Salva", + "Test email settings" : "Prova impostazioni email", + "Send email" : "Invia email", + "Security & setup warnings" : "Avvisi di sicurezza e di configurazione", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "È importante per la sicurezza e le prestazioni della tua istanza che tutto sia configurato correttamente. Per aiutarti in questo senso, stiamo eseguendo alcuni controlli automatici. Vedi la documentazione collegata per ulteriori informazioni.", + "All checks passed." : "Tutti i controlli passati.", + "There are some errors regarding your setup." : "Sono presenti degli errori relativi alla tua configurazione.", + "There are some warnings regarding your setup." : "Sono presenti degli avvisi relativi alla tua configurazione.", + "Checking for system and security issues." : "Verifica di problemi di sistema e sicurezza.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Leggi attentamente le <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">guide d'installazione ↗</a>, e controlla gli errori o gli avvisi nel <a href=\"%2$s\">log</a>.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Controlla la sicurezza del tuo Nextcloud con la <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">nostra scansione di sicurezza ↗</a>", + "Version" : "Versione", + "Two-Factor Authentication" : "Autenticazione a due fattori", + "Server-side encryption" : "Cifratura lato server", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "La cifratura lato server rende possibile cifrare i file caricati sul server. Ciò presenta dei limiti, come una riduzione delle prestazioni, perciò abilita questa funzione solo se necessario.", + "Enable server-side encryption" : "Abilita cifratura lato server", + "Please read carefully before activating server-side encryption: " : "Leggi attentamente prima di attivare la cifratura lato server:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Quando la cifratura è abilitata, tutti i file caricati sul server da quel momento in poi saranno cifrati sul server. Sarà possibile solo disabilitare successivamente la cifratura se il modulo di cifratura attivo lo consente, e se tutti i prerequisiti (ad es. l'impostazione di una chiave di recupero) sono verificati.", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "La sola cifratura non garantisce la sicurezza del sistema. Leggi la documentazione per ottenere ulteriori informazioni sul funzionamento dell'applicazione di cifratura.", + "Be aware that encryption always increases the file size." : "Considera che la cifratura incrementa sempre la dimensione dei file.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Ti consigliamo di creare copie di sicurezza dei tuoi dati con regolarità, in caso di utilizzo della cifratura, assicurati di creare una copia delle chiavi di cifratura insieme ai tuoi dati.", + "This is the final warning: Do you really want to enable encryption?" : "Questo è l'ultimo avviso: vuoi davvero abilitare la cifratura?", + "Enable encryption" : "Abilita cifratura", + "No encryption module loaded, please enable an encryption module in the app menu." : "Nessun modulo di cifratura caricato, carica un modulo di cifratura nel menu delle applicazioni.", + "Select default encryption module:" : "Seleziona il modulo di cifratura predefinito:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Devi migrare le tue chiavi di cifratura dalla vecchia cifratura (ownCloud <= 8.0) alla nuova. Abilita il \"Modulo di cifratura predefinito\" ed esegui 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Devi migrare le tue chiavi di cifratura dalla vecchia cifratura (ownCloud <= 8.0) alla nuova.", + "Start migration" : "Avvia migrazione", + "Background jobs" : "Operazioni in background", + "Last job ran %s." : "Ultima esecuzione di cron: %s.", + "Last job execution ran %s. Something seems wrong." : "Ultima esecuzione di cron: %s. Potrebbe esserci un problema.", + "Background job didn’t run yet!" : "Operazione in background non ancora eseguita!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Per prestazioni ottimali è importante configurare le operazioni in background correttamente. Per le istanze più grandi 'Cron' è l'impostazione consigliata. Vedi la documentazione per ulteriori informazioni.", + "Pick background job setting" : "Scegli le impostazioni delle operazioni in background", + "Execute one task with each page loaded" : "Esegui un'operazione con ogni pagina caricata", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php è registrato su un servizio webcron per invocare cron.php ogni 5 minuti su HTTP.", + "Use system cron service to call the cron.php file every 5 minutes." : "Usa il servizio cron di sistema per invocare il file cron.php ogni 5 minuti.", + "The cron.php needs to be executed by the system user \"%s\"." : "Il cron.php deve essere eseguito dall'utente di sistema \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Per eseguirlo, hai bisogno dell'estensione POSIX di PHP. Vedi la {linkstart}documentazione di PHP{linkend} per ulteriori dettagli.", + "Sharing" : "Condivisione", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "In qualità di amministratore puoi configurare in modo granulare il comportamento della condivisione. Vedi la documentazione per ulteriori informazioni.", + "Allow apps to use the Share API" : "Consenti alle applicazioni di utilizzare le API di condivisione", + "Allow users to share via link" : "Consenti agli utenti di condividere tramite collegamento", + "Allow public uploads" : "Consenti caricamenti pubblici", + "Always ask for a password" : "Chiedi sempre una password", + "Enforce password protection" : "Imponi la protezione con password", + "Set default expiration date" : "Imposta data di scadenza predefinita", + "Expire after " : "Scadenza dopo", + "days" : "giorni", + "Enforce expiration date" : "Forza la data di scadenza", + "Allow resharing" : "Consenti la ri-condivisione", + "Allow sharing with groups" : "Consenti la condivisione con gruppi", + "Restrict users to only share with users in their groups" : "Limita gli utenti a condividere solo con gli utenti nei loro gruppi", + "Exclude groups from sharing" : "Escludi gruppi dalla condivisione", + "These groups will still be able to receive shares, but not to initiate them." : "Questi gruppi saranno in grado di ricevere condivisioni, ma non iniziarle.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Consenti il completamento del nome utente nella finestra di condivisione. Se è disabilitata, è necessario digitare il nome utente completo o l'indirizzo di posta.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Mostra il testo di liberatoria sulla pagina di caricamento del collegamento pubblico. (Mostrato solo quando l'elenco dei file nascosto)", + "This text will be shown on the public link upload page when the file list is hidden." : "Questo testo sarà mostrato sulla pagina di caricamento del collegamento pubblico quando l'elenco dei file è nascosto.", + "Default share permissions" : "Permessi predefiniti di condivisione", + "Personal" : "Personale", + "Administration" : "Amministrazione", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Sviluppato dalla {communityopen}comunità di Nextcloud{linkclose}, il {githubopen}codice sorgente{linkclose} è rilasciato nei termini della licenza {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Mi piace sulla nostra pagina di Facebook!", + "Follow us on Twitter" : "Seguici su Twitter!", + "Follow us on Mastodon" : "Seguici su Mastodon", + "Check out our blog" : "Leggi il nostro blog!", + "Subscribe to our newsletter" : "Iscriviti alla nostra newsletter", + "Profile picture" : "Immagine del profilo", + "Upload new" : "Carica nuova", + "Select from Files" : "Seleziona da file", + "Remove image" : "Rimuovi immagine", + "png or jpg, max. 20 MB" : "png o jpg, max. 20 MB", + "Picture provided by original account" : "Immagine fornita dall'account originale", + "Cancel" : "Annulla", + "Choose as profile picture" : "Scegli come immagine del profilo", + "Details" : "Dettagli", + "You are a member of the following groups:" : "Sei un membro dei seguenti gruppi:", + "You are using <strong>%s</strong>" : "Stai utilizzando <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Stai utilizzando <strong>%1$s</strong> di <strong>%2$s</strong> (<strong>%3$s%%</strong>)", + "Full name" : "Nome completo", + "No display name set" : "Nome visualizzato non impostato", + "Your email address" : "Il tuo indirizzo email", + "No email address set" : "Nessun indirizzo email impostato", + "For password reset and notifications" : "Per ripristino della password e notifiche", + "Phone number" : "Numero di telefono", + "Your phone number" : "Il tuo numero di telefono", + "Address" : "Indirizzo", + "Your postal address" : "Il tuo indirizzo postale", + "Website" : "Sito web", + "It can take up to 24 hours before the account is displayed as verified." : "Potrebbero essere necessarie 24 ore prima che l'account sia visualizzato come verificato.", + "Link https://…" : "Collegamento https://...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Nome utente Twitter @...", + "Help translate" : "Migliora la traduzione", + "Locale" : "Localizzazione", + "Current password" : "Password attuale", + "Change password" : "Modifica password", + "Use a second factor besides your password to increase security for your account." : "Utilizza un secondo fattore oltre alla tua password per aumentare la sicurezza per il tuo account.", + "Disconnect" : "Disconnetti", + "Not supported!" : "Non supportato!", + "Press ⌘-C to copy." : "Premi ⌘-C per copiare.", + "Press Ctrl-C to copy." : "Premi Ctrl-C per copiare.", + "Error while loading browser sessions and device tokens" : "Errore durante il caricamento delle sessioni del browser e dei token di dispositivo", + "Store credentials" : "Memorizza le credenziali", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php è registrato su un servizio webcron per invocare cron.php ogni 15 minuti su HTTP.", + "Use system cron service to call the cron.php file every 15 minutes." : "Usa il servizio cron di sistema per invocare il file cron.php ogni 15 minuti.", + "Follow us on Google+" : "Seguici su Google+" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} \ No newline at end of file diff --git a/apps/settings/l10n/ja.js b/apps/settings/l10n/ja.js new file mode 100644 index 00000000000..ca58fe991f1 --- /dev/null +++ b/apps/settings/l10n/ja.js @@ -0,0 +1,820 @@ +OC.L10N.register( + "settings", + { + "{actor} added you to group {group}" : "{actor} があなたを {group} グループに追加しました", + "You added {user} to group {group}" : "{user}を {group} グループに追加しました", + "{actor} added {user} to group {group}" : "{actor} が{user}を {group} グループに追加しました", + "An administrator added you to group {group}" : "管理者があなたを {group} グループに追加しました", + "An administrator added {user} to group {group}" : "管理者が{user}を {group} グループに追加しました", + "{actor} removed you from group {group}" : "{actor} があなたを {group} グループから外しました", + "You removed {user} from group {group}" : "{user}を {group} グループから外しました", + "{actor} removed {user} from group {group}" : "{actor} が{user}を {group} グループから外しました", + "An administrator removed you from group {group}" : "管理者があなたを {group} グループから外しました", + "An administrator removed {user} from group {group}" : "管理者が{user}を {group} グループから外しました", + "Your <strong>group memberships</strong> were modified" : "<strong>グループメンバーシップ</strong>が変更されたとき", + "{actor} changed your password" : "{actor} がパスワードを変更", + "You changed your password" : "パスワードを変更", + "Your password was reset by an administrator" : "管理者がパスワードをリセットしました", + "{actor} changed your email address" : "{actor} がメールアドレスを変更しました", + "You changed your email address" : "メールアドレスを変更しました", + "Your email address was changed by an administrator" : "管理者がメールアドレスを変更しました", + "You created app password \"{token}\"" : "アプリのパスワード\"{token}\"を作成しました", + "You deleted app password \"{token}\"" : "アプリのパスワード\"{token}\"を削除しました", + "You renamed app password \"{token}\" to \"{newToken}\"" : "アプリのパスワードを{token} から {newToken} に変更しました。", + "You granted filesystem access to app password \"{token}\"" : "アプリのパスワード\"{token}\"へファイルシステムアクセス件を付与しました", + "You revoked filesystem access from app password \"{token}\"" : "アプリのパスワード\"{token}\"へファイルシステムアクセス件を取り下げました", + "Security" : "セキュリティ", + "You successfully logged in using two-factor authentication (%1$s)" : "二要素認証を使用して正常にログインしました (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "二要素認証を使用したログイン試行に失敗しました (%1$s)", + "Remote wipe was started on %1$s" : "%1$sでリモートワイプが開始されました", + "Remote wipe has finished on %1$s" : "%1$sのリモートワイプが完了しました", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "<strong> パスワード </strong> または、<strong> メールアドレス</strong>が更新されました", + "Couldn't remove app." : "アプリが削除できませんでした。", + "Couldn't update app." : "アプリをアップデートできませんでした。", + "Wrong password" : "パスワードが間違っています", + "Saved" : "保存しました", + "No user supplied" : "ユーザーが指定されていません", + "Unable to change password" : "パスワードを変更できません", + "Authentication error" : "認証エラー", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "リカバリ用の管理者パスワードを入力してください。そうしないと、全ユーザーのデータが失われます。", + "Wrong admin recovery password. Please check the password and try again." : "リカバリ用の管理者パスワードが間違っています。パスワードを確認して再度実行してください。", + "Backend doesn't support password change, but the user's encryption key was updated." : "バックエンドはパスワードの変更をサポートしていませんが、ユーザーの暗号化キーは正常に更新されました。", + "installing and updating apps via the app store or Federated Cloud Sharing" : "アプリストアまたはクラウド連携共有から、アプリをインストールならびにアップデート", + "Federated Cloud Sharing" : "統合されたクラウド共有", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "%1$sバージョン (%2$s) の古い cURL を使っています。OSを更新するか、この機能 %3$sが正しく動くアプリに更新してください。", + "Invalid SMTP password." : "SMTPパスワードが無効", + "Email setting test" : "メール設定のテスト", + "Well done, %s!" : "%s、素晴らしい!", + "If you received this email, the email configuration seems to be correct." : "メールが届いていたら、メールは正しく設定されています。", + "Email could not be sent. Check your mail server log" : "メールが送信できませんでした。メールサーバーのログを確認してください", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "メールの送信中に問題が発生しました。設定を確認してください。 (Error: %s)", + "You need to set your user email before being able to send test emails." : "ユーザーメールを設定して初めて、テストメールを送信することができるようになります。", + "Invalid mail address" : "無効なメールアドレスです", + "Settings saved" : "設定を保存しました", + "Unable to change full name" : "名前を変更できません", + "Unable to change email address" : "メールアドレスを変更できません", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "あなたのTwitterアカウントを確認するには、以下のtweetをTwitterに投稿してください(改行なしで投稿してください):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "あなたのウェブサイトを確認するため、次の内容をウェブルートの'.well-known/CloudIdVerificationCode.txt'に保存します。(完全な文章で一文になっていることを確かめてください。)", + "%1$s changed your password on %2$s." : "%1$sにより %2$sのパスワードを変更しました。", + "Your password on %s was changed." : "%s のパスワードを変更しました。", + "Your password on %s was reset by an administrator." : "%sのパスワードは、管理者がリセットしました。", + "Password for %1$s changed on %2$s" : "%1$s のパスワードが %2$sで変更しました", + "Password changed for %s" : "%s のパスワードを変更しました", + "If you did not request this, please contact an administrator." : "このリクエストをしていない場合は、管理者に問い合わせてください。", + "Your email address on %s was changed." : "%s のメールアドレスを変更しました。", + "Your email address on %s was changed by an administrator." : "%s のメールアドレスを管理者が変更しました。", + "Email address for %1$s changed on %2$s" : "%1$s のメールアドレスが %2$sで変更しました。", + "Email address changed for %s" : "%s のメールアドレスを変更しました", + "The new email address is %s" : "新しいメールアドレスは、%s です", + "Your %s account was created" : "%s アカウントを作成しました", + "Welcome aboard" : "ようこそ", + "Welcome aboard %s" : "%s さん、ようこそ", + "Welcome to your %s account, you can add, protect, and share your data." : "%s アカウントにようこそ。あなたのデータを追加、保護、共有することができます。", + "Your username is: %s" : "あなたの名前: %s", + "Set your password" : "パスワードを設定", + "Go to %s" : "%s に移動", + "Install Client" : "クライアントをインストール", + "Logged in user must be a subadmin" : "ログインユーザーはサブ管理者である必要があります", + "Create" : "作成", + "Change" : "変更", + "Delete" : "削除", + "Share" : "共有", + "Unlimited" : "無制限", + "Verifying" : "検証中", + "Verifying …" : "検証中", + "Verify" : "検証", + "Migration in progress. Please wait until the migration is finished" : "移行の処理中です。移行が完了するまでお待ちください。", + "Migration started …" : "移行を開始しました…", + "Not saved" : "未保存", + "Sending…" : "送信中 …", + "Email sent" : "メールを送信しました", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "エラーが発生しました。ASCIIコードのPEM証明書をアップロードしてください。", + "Valid until {date}" : "{date} まで有効", + "Local" : "ローカル", + "Private" : "非公開", + "Only visible to local users" : "ローカルユーザーのみ見れます", + "Only visible to you" : "あなたのみから見れます", + "Contacts" : "アドレス帳", + "Visible to local users and to trusted servers" : "ローカルユーザーと信頼できるサーバーから見れます", + "Public" : "公開", + "Will be synced to a global and public address book" : "グローバルなアドレス帳と公開アドレス帳に同期されます", + "Very weak password" : "非常に弱いパスワード", + "Weak password" : "弱いパスワード", + "So-so password" : "まずまずのパスワード", + "Good password" : "良好なパスワード", + "Strong password" : "強いパスワード", + "An error occurred while changing your language. Please reload the page and try again." : "言語を変更する際にエラーが発生しました。ページをリロードして、再度試してください。", + "An error occurred while changing your locale. Please reload the page and try again." : "ロケールの変更中にエラーが発生しました。 ページをリロードしてもう一度お試しください。", + "Select a profile picture" : "プロファイル画像を選択", + "Week starts on {fdow}" : "週は{fdow}から始まります", + "Groups" : "グループ", + "Group list is empty" : "グループリストが空です", + "Unable to retrieve the group list" : "グループリストを取得できません", + "Afrikaans (Namibia)" : "Afrikaans (Namibia)", + "Afrikaans (South Africa)" : "Afrikaans (South Africa)", + "Afrikaans" : "Afrikaans", + "Akan (Ghana)" : "Akan (Ghana)", + "Akan" : "Akan", + "Albanian (Albania)" : "Albanian (Albania)", + "Albanian" : "Albanian", + "Amharic (Ethiopia)" : "Amharic (Ethiopia)", + "Amharic" : "Amharic", + "Arabic (Algeria)" : "Arabic (Algeria)", + "Arabic (Bahrain)" : "Arabic (Bahrain)", + "Arabic (Egypt)" : "Arabic (Egypt)", + "Arabic (Iraq)" : "Arabic (Iraq)", + "Arabic (Jordan)" : "Arabic (Jordan)", + "Arabic (Kuwait)" : "Arabic (Kuwait)", + "Arabic (Lebanon)" : "Arabic (Lebanon)", + "Arabic (Libya)" : "Arabic (Libya)", + "Arabic (Morocco)" : "Arabic (Morocco)", + "Arabic (Oman)" : "Arabic (Oman)", + "Arabic (Qatar)" : "Arabic (Qatar)", + "Arabic (Saudi Arabia)" : "Arabic (Saudi Arabia)", + "Arabic (Sudan)" : "Arabic (Sudan)", + "Arabic (Syria)" : "Arabic (Syria)", + "Arabic (Tunisia)" : "Arabic (Tunisia)", + "Arabic (United Arab Emirates)" : "Arabic (United Arab Emirates)", + "Arabic (Yemen)" : "Arabic (Yemen)", + "Arabic" : "Arabic", + "Armenian (Armenia)" : "Armenian (Armenia)", + "Armenian" : "Armenian", + "Assamese (India)" : "Assamese (India)", + "Assamese" : "Assamese", + "Asu (Tanzania)" : "Asu (Tanzania)", + "Asu" : "Asu", + "Azerbaijani (Cyrillic)" : "Azerbaijani (Cyrillic)", + "Azerbaijani (Cyrillic, Azerbaijan)" : "Azerbaijani (Cyrillic, Azerbaijan)", + "Azerbaijani (Latin)" : "Azerbaijani (Latin)", + "Azerbaijani (Latin, Azerbaijan)" : "Azerbaijani (Latin, Azerbaijan)", + "Azerbaijani" : "Azerbaijani", + "Bambara (Mali)" : "Bambara (Mali)", + "Bambara" : "Bambara", + "Basque (Spain)" : "Basque (Spain)", + "Basque" : "Basque", + "Belarusian (Belarus)" : "Belarusian (Belarus)", + "Belarusian" : "Belarusian", + "Bemba (Zambia)" : "Bemba (Zambia)", + "Bemba" : "Bemba", + "Bena (Tanzania)" : "Bena (Tanzania)", + "Bena" : "Bena", + "Bengali (Bangladesh)" : "Bengali (Bangladesh)", + "Bengali (India)" : "Bengali (India)", + "Bengali" : "Bengali", + "Bosnian (Bosnia and Herzegovina)" : "Bosnian (Bosnia and Herzegovina)", + "Bosnian" : "Bosnian", + "Bulgarian (Bulgaria)" : "Bulgarian (Bulgaria)", + "Bulgarian" : "Bulgarian", + "Burmese (Myanmar [Burma])" : "Burmese (Myanmar [Burma])", + "Burmese" : "Burmese", + "Catalan (Spain)" : "Catalan (Spain)", + "Catalan" : "Catalan", + "Central Morocco Tamazight (Latin)" : "Central Morocco Tamazight (Latin)", + "Central Morocco Tamazight (Latin, Morocco)" : "Central Morocco Tamazight (Latin, Morocco)", + "Central Morocco Tamazight" : "Central Morocco Tamazight", + "Cherokee (United States)" : "Cherokee (United States)", + "Cherokee" : "Cherokee", + "Chiga (Uganda)" : "Chiga (Uganda)", + "Chiga" : "Chiga", + "Chinese (Simplified Han)" : "Chinese (Simplified Han)", + "Chinese (Simplified Han, China)" : "Chinese (Simplified Han, China)", + "Chinese (Simplified Han, Hong Kong SAR China)" : "Chinese (Simplified Han, Hong Kong SAR China)", + "Chinese (Simplified Han, Macau SAR China)" : "Chinese (Simplified Han, Macau SAR China)", + "Chinese (Simplified Han, Singapore)" : "Chinese (Simplified Han, Singapore)", + "Chinese (Traditional Han)" : "Chinese (Traditional Han)", + "Chinese (Traditional Han, Hong Kong SAR China)" : "Chinese (Traditional Han, Hong Kong SAR China)", + "Chinese (Traditional Han, Macau SAR China)" : "Chinese (Traditional Han, Macau SAR China)", + "Chinese (Traditional Han, Taiwan)" : "Chinese (Traditional Han, Taiwan)", + "Chinese" : "Chinese", + "Cornish (United Kingdom)" : "Cornish (United Kingdom)", + "Cornish" : "Cornish", + "Croatian (Croatia)" : "Croatian (Croatia)", + "Croatian" : "Croatian", + "Czech (Czech Republic)" : "Czech (Czech Republic)", + "Czech" : "Czech", + "Danish (Denmark)" : "Danish (Denmark)", + "Danish" : "Danish", + "Dutch (Belgium)" : "Dutch (Belgium)", + "Dutch (Netherlands)" : "Dutch (Netherlands)", + "Dutch" : "Dutch", + "Embu (Kenya)" : "Embu (Kenya)", + "Embu" : "Embu", + "English (American Samoa)" : "English (American Samoa)", + "English (Australia)" : "English (Australia)", + "English (Belgium)" : "English (Belgium)", + "English (Belize)" : "English (Belize)", + "English (Botswana)" : "English (Botswana)", + "English (Canada)" : "English (Canada)", + "English (Guam)" : "English (Guam)", + "English (Hong Kong SAR China)" : "English (Hong Kong SAR China)", + "English (India)" : "English (India)", + "English (Ireland)" : "English (Ireland)", + "English (Jamaica)" : "English (Jamaica)", + "English (Malta)" : "English (Malta)", + "English (Marshall Islands)" : "English (Marshall Islands)", + "English (Mauritius)" : "English (Mauritius)", + "English (Namibia)" : "English (Namibia)", + "English (New Zealand)" : "English (New Zealand)", + "English (Northern Mariana Islands)" : "English (Northern Mariana Islands)", + "English (Pakistan)" : "English (Pakistan)", + "English (Philippines)" : "English (Philippines)", + "English (Singapore)" : "English (Singapore)", + "English (South Africa)" : "English (South Africa)", + "English (Trinidad and Tobago)" : "English (Trinidad and Tobago)", + "English (U.S. Minor Outlying Islands)" : "English (U.S. Minor Outlying Islands)", + "English (U.S. Virgin Islands)" : "English (U.S. Virgin Islands)", + "English (United Kingdom)" : "English (United Kingdom)", + "English (United States)" : "English (United States)", + "English (Zimbabwe)" : "English (Zimbabwe)", + "English" : "English", + "Esperanto" : "Esperanto", + "Estonian (Estonia)" : "Estonian (Estonia)", + "Estonian" : "Estonian", + "Ewe (Ghana)" : "Ewe (Ghana)", + "Ewe (Togo)" : "Ewe (Togo)", + "Ewe" : "Ewe", + "Faroese (Faroe Islands)" : "Faroese (Faroe Islands)", + "Faroese" : "Faroese", + "Filipino (Philippines)" : "Filipino (Philippines)", + "Filipino" : "Filipino", + "Finnish (Finland)" : "Finnish (Finland)", + "Finnish" : "Finnish", + "French (Belgium)" : "French (Belgium)", + "French (Benin)" : "French (Benin)", + "French (Burkina Faso)" : "French (Burkina Faso)", + "French (Burundi)" : "French (Burundi)", + "French (Cameroon)" : "French (Cameroon)", + "French (Canada)" : "French (Canada)", + "French (Central African Republic)" : "French (Central African Republic)", + "French (Chad)" : "French (Chad)", + "French (Comoros)" : "French (Comoros)", + "French (Congo - Brazzaville)" : "French (Congo - Brazzaville)", + "French (Congo - Kinshasa)" : "French (Congo - Kinshasa)", + "French (Côte d’Ivoire)" : "French (Côte d’Ivoire)", + "French (Djibouti)" : "French (Djibouti)", + "French (Equatorial Guinea)" : "French (Equatorial Guinea)", + "French (France)" : "French (France)", + "French (Gabon)" : "French (Gabon)", + "French (Guadeloupe)" : "French (Guadeloupe)", + "French (Guinea)" : "French (Guinea)", + "French (Luxembourg)" : "French (Luxembourg)", + "French (Madagascar)" : "French (Madagascar)", + "French (Mali)" : "French (Mali)", + "French (Martinique)" : "French (Martinique)", + "French (Monaco)" : "French (Monaco)", + "French (Niger)" : "French (Niger)", + "French (Rwanda)" : "French (Rwanda)", + "French (Réunion)" : "French (Réunion)", + "French (Saint Barthélemy)" : "French (Saint Barthélemy)", + "French (Saint Martin)" : "French (Saint Martin)", + "French (Senegal)" : "French (Senegal)", + "French (Switzerland)" : "French (Switzerland)", + "French (Togo)" : "French (Togo)", + "French" : "French", + "Fulah (Senegal)" : "Fulah (Senegal)", + "Fulah" : "Fulah", + "Galician (Spain)" : "Galician (Spain)", + "Galician" : "Galician", + "Ganda (Uganda)" : "Ganda (Uganda)", + "Ganda" : "Ganda", + "Georgian (Georgia)" : "Georgian (Georgia)", + "Georgian" : "Georgian", + "German (Austria)" : "German (Austria)", + "German (Belgium)" : "German (Belgium)", + "German (Germany)" : "German (Germany)", + "German (Liechtenstein)" : "German (Liechtenstein)", + "German (Luxembourg)" : "German (Luxembourg)", + "German (Switzerland)" : "German (Switzerland)", + "German" : "German", + "Greek (Cyprus)" : "Greek (Cyprus)", + "Greek (Greece)" : "Greek (Greece)", + "Greek" : "Greek", + "Gujarati (India)" : "Gujarati (India)", + "Gujarati" : "Gujarati", + "Gusii (Kenya)" : "Gusii (Kenya)", + "Gusii" : "Gusii", + "Hausa (Latin)" : "Hausa (Latin)", + "Hausa (Latin, Ghana)" : "Hausa (Latin, Ghana)", + "Hausa (Latin, Niger)" : "Hausa (Latin, Niger)", + "Hausa (Latin, Nigeria)" : "Hausa (Latin, Nigeria)", + "Hausa" : "Hausa", + "Hawaiian (United States)" : "Hawaiian (United States)", + "Hawaiian" : "Hawaiian", + "Hebrew (Israel)" : "Hebrew (Israel)", + "Hebrew" : "Hebrew", + "Hindi (India)" : "Hindi (India)", + "Hindi" : "Hindi", + "Hungarian (Hungary)" : "Hungarian (Hungary)", + "Hungarian" : "Hungarian", + "Icelandic (Iceland)" : "Icelandic (Iceland)", + "Icelandic" : "Icelandic", + "Igbo (Nigeria)" : "Igbo (Nigeria)", + "Igbo" : "Igbo", + "Indonesian (Indonesia)" : "Indonesian (Indonesia)", + "Indonesian" : "Indonesian", + "Irish (Ireland)" : "Irish (Ireland)", + "Irish" : "Irish", + "Italian (Italy)" : "Italian (Italy)", + "Italian (Switzerland)" : "Italian (Switzerland)", + "Italian" : "Italian", + "Japanese (Japan)" : "Japanese (Japan)", + "Japanese" : "Japanese", + "Kabuverdianu (Cape Verde)" : "Kabuverdianu (Cape Verde)", + "Kabuverdianu" : "Kabuverdianu", + "Kabyle (Algeria)" : "Kabyle (Algeria)", + "Kabyle" : "Kabyle", + "Kalaallisut (Greenland)" : "Kalaallisut (Greenland)", + "Kalaallisut" : "Kalaallisut", + "Kalenjin (Kenya)" : "Kalenjin (Kenya)", + "Kalenjin" : "Kalenjin", + "Kamba (Kenya)" : "Kamba (Kenya)", + "Kamba" : "Kamba", + "Kannada (India)" : "Kannada (India)", + "Kannada" : "Kannada", + "Kazakh (Cyrillic)" : "Kazakh (Cyrillic)", + "Kazakh (Cyrillic, Kazakhstan)" : "Kazakh (Cyrillic, Kazakhstan)", + "Kazakh" : "Kazakh", + "Khmer (Cambodia)" : "Khmer (Cambodia)", + "Khmer" : "Khmer", + "Kikuyu (Kenya)" : "Kikuyu (Kenya)", + "Kikuyu" : "Kikuyu", + "Kinyarwanda (Rwanda)" : "Kinyarwanda (Rwanda)", + "Kinyarwanda" : "Kinyarwanda", + "Konkani (India)" : "Konkani (India)", + "Konkani" : "Konkani", + "Korean (South Korea)" : "Korean (South Korea)", + "Korean" : "Korean", + "Koyra Chiini (Mali)" : "Koyra Chiini (Mali)", + "Koyra Chiini" : "Koyra Chiini", + "Koyraboro Senni (Mali)" : "Koyraboro Senni (Mali)", + "Koyraboro Senni" : "Koyraboro Senni", + "Langi (Tanzania)" : "Langi (Tanzania)", + "Langi" : "Langi", + "Latvian (Latvia)" : "Latvian (Latvia)", + "Latvian" : "Latvian", + "Lithuanian (Lithuania)" : "Lithuanian (Lithuania)", + "Lithuanian" : "Lithuanian", + "Luo (Kenya)" : "Luo (Kenya)", + "Luo" : "Luo", + "Luyia (Kenya)" : "Luyia (Kenya)", + "Luyia" : "Luyia", + "Macedonian (Macedonia)" : "Macedonian (Macedonia)", + "Macedonian" : "Macedonian", + "Machame (Tanzania)" : "Machame (Tanzania)", + "Machame" : "Machame", + "Makonde (Tanzania)" : "Makonde (Tanzania)", + "Makonde" : "Makonde", + "Malagasy (Madagascar)" : "Malagasy (Madagascar)", + "Malagasy" : "Malagasy", + "Malay (Brunei)" : "Malay (Brunei)", + "Malay (Malaysia)" : "Malay (Malaysia)", + "Malay" : "Malay", + "Malayalam (India)" : "Malayalam (India)", + "Malayalam" : "Malayalam", + "Maltese (Malta)" : "Maltese (Malta)", + "Maltese" : "Maltese", + "Manx (United Kingdom)" : "Manx (United Kingdom)", + "Manx" : "Manx", + "Marathi (India)" : "Marathi (India)", + "Marathi" : "Marathi", + "Masai (Kenya)" : "Masai (Kenya)", + "Masai (Tanzania)" : "Masai (Tanzania)", + "Masai" : "Masai", + "Meru (Kenya)" : "Meru (Kenya)", + "Meru" : "Meru", + "Morisyen (Mauritius)" : "Morisyen (Mauritius)", + "Morisyen" : "Morisyen", + "Nama (Namibia)" : "Nama (Namibia)", + "Nama" : "Nama", + "Nepali (India)" : "Nepali (India)", + "Nepali (Nepal)" : "Nepali (Nepal)", + "Nepali" : "Nepali", + "North Ndebele (Zimbabwe)" : "North Ndebele (Zimbabwe)", + "North Ndebele" : "North Ndebele", + "Norwegian Bokmål (Norway)" : "Norwegian Bokmål (Norway)", + "Norwegian Bokmål" : "Norwegian Bokmål", + "Norwegian Nynorsk (Norway)" : "Norwegian Nynorsk (Norway)", + "Norwegian Nynorsk" : "Norwegian Nynorsk", + "Nyankole (Uganda)" : "Nyankole (Uganda)", + "Nyankole" : "Nyankole", + "Oriya (India)" : "Oriya (India)", + "Oriya" : "Oriya", + "Oromo (Ethiopia)" : "Oromo (Ethiopia)", + "Oromo (Kenya)" : "Oromo (Kenya)", + "Oromo" : "Oromo", + "Pashto (Afghanistan)" : "Pashto (Afghanistan)", + "Pashto" : "Pashto", + "Persian (Afghanistan)" : "Persian (Afghanistan)", + "Persian (Iran)" : "Persian (Iran)", + "Persian" : "Persian", + "Polish (Poland)" : "Polish (Poland)", + "Polish" : "Polish", + "Portuguese (Brazil)" : "Portuguese (Brazil)", + "Portuguese (Guinea-Bissau)" : "Portuguese (Guinea-Bissau)", + "Portuguese (Mozambique)" : "Portuguese (Mozambique)", + "Portuguese (Portugal)" : "Portuguese (Portugal)", + "Portuguese" : "Portuguese", + "Punjabi (Arabic)" : "Punjabi (Arabic)", + "Punjabi (Arabic, Pakistan)" : "Punjabi (Arabic, Pakistan)", + "Punjabi (Gurmukhi)" : "Punjabi (Gurmukhi)", + "Punjabi (Gurmukhi, India)" : "Punjabi (Gurmukhi, India)", + "Punjabi" : "Punjabi", + "Romanian (Moldova)" : "Romanian (Moldova)", + "Romanian (Romania)" : "Romanian (Romania)", + "Romanian" : "Romanian", + "Romansh (Switzerland)" : "Romansh (Switzerland)", + "Romansh" : "Romansh", + "Rombo (Tanzania)" : "Rombo (Tanzania)", + "Rombo" : "Rombo", + "Russian (Moldova)" : "Russian (Moldova)", + "Russian (Russia)" : "Russian (Russia)", + "Russian (Ukraine)" : "Russian (Ukraine)", + "Russian" : "Russian", + "Rwa (Tanzania)" : "Rwa (Tanzania)", + "Rwa" : "Rwa", + "Samburu (Kenya)" : "Samburu (Kenya)", + "Samburu" : "Samburu", + "Sango (Central African Republic)" : "Sango (Central African Republic)", + "Sango" : "Sango", + "Sena (Mozambique)" : "Sena (Mozambique)", + "Sena" : "Sena", + "Serbian (Cyrillic)" : "Serbian (Cyrillic)", + "Serbian (Cyrillic, Bosnia and Herzegovina)" : "Serbian (Cyrillic, Bosnia and Herzegovina)", + "Serbian (Cyrillic, Montenegro)" : "Serbian (Cyrillic, Montenegro)", + "Serbian (Cyrillic, Serbia)" : "Serbian (Cyrillic, Serbia)", + "Serbian (Latin)" : "Serbian (Latin)", + "Serbian (Latin, Bosnia and Herzegovina)" : "Serbian (Latin, Bosnia and Herzegovina)", + "Serbian (Latin, Montenegro)" : "Serbian (Latin, Montenegro)", + "Serbian (Latin, Serbia)" : "Serbian (Latin, Serbia)", + "Serbian" : "Serbian", + "Shona (Zimbabwe)" : "Shona (Zimbabwe)", + "Shona" : "Shona", + "Sichuan Yi (China)" : "Sichuan Yi (China)", + "Sichuan Yi" : "Sichuan Yi", + "Sinhala (Sri Lanka)" : "Sinhala (Sri Lanka)", + "Sinhala" : "Sinhala", + "Slovak (Slovakia)" : "Slovak (Slovakia)", + "Slovak" : "Slovak", + "Slovenian (Slovenia)" : "Slovenian (Slovenia)", + "Slovenian" : "Slovenian", + "Soga (Uganda)" : "Soga (Uganda)", + "Soga" : "Soga", + "Somali (Djibouti)" : "Somali (Djibouti)", + "Somali (Ethiopia)" : "Somali (Ethiopia)", + "Somali (Kenya)" : "Somali (Kenya)", + "Somali (Somalia)" : "Somali (Somalia)", + "Somali" : "Somali", + "Spanish (Argentina)" : "Spanish (Argentina)", + "Spanish (Bolivia)" : "Spanish (Bolivia)", + "Spanish (Chile)" : "Spanish (Chile)", + "Spanish (Colombia)" : "Spanish (Colombia)", + "Spanish (Costa Rica)" : "Spanish (Costa Rica)", + "Spanish (Dominican Republic)" : "Spanish (Dominican Republic)", + "Spanish (Ecuador)" : "Spanish (Ecuador)", + "Spanish (El Salvador)" : "Spanish (El Salvador)", + "Spanish (Equatorial Guinea)" : "Spanish (Equatorial Guinea)", + "Spanish (Guatemala)" : "Spanish (Guatemala)", + "Spanish (Honduras)" : "Spanish (Honduras)", + "Spanish (Latin America)" : "Spanish (Latin America)", + "Spanish (Mexico)" : "Spanish (Mexico)", + "Spanish (Nicaragua)" : "Spanish (Nicaragua)", + "Spanish (Panama)" : "Spanish (Panama)", + "Spanish (Paraguay)" : "Spanish (Paraguay)", + "Spanish (Peru)" : "Spanish (Peru)", + "Spanish (Puerto Rico)" : "Spanish (Puerto Rico)", + "Spanish (Spain)" : "Spanish (Spain)", + "Spanish (United States)" : "Spanish (United States)", + "Spanish (Uruguay)" : "Spanish (Uruguay)", + "Spanish (Venezuela)" : "Spanish (Venezuela)", + "Spanish" : "Spanish", + "Swahili (Kenya)" : "Swahili (Kenya)", + "Swahili (Tanzania)" : "Swahili (Tanzania)", + "Swahili" : "Swahili", + "Swedish (Finland)" : "Swedish (Finland)", + "Swedish (Sweden)" : "Swedish (Sweden)", + "Swedish" : "Swedish", + "Swiss German (Switzerland)" : "Swiss German (Switzerland)", + "Swiss German" : "Swiss German", + "Tachelhit (Latin)" : "Tachelhit (Latin)", + "Tachelhit (Latin, Morocco)" : "Tachelhit (Latin, Morocco)", + "Tachelhit (Tifinagh)" : "Tachelhit (Tifinagh)", + "Tachelhit (Tifinagh, Morocco)" : "Tachelhit (Tifinagh, Morocco)", + "Tachelhit" : "Tachelhit", + "Taita (Kenya)" : "Taita (Kenya)", + "Taita" : "Taita", + "Tamil (India)" : "Tamil (India)", + "Tamil (Sri Lanka)" : "Tamil (Sri Lanka)", + "Tamil" : "Tamil", + "Telugu (India)" : "Telugu (India)", + "Telugu" : "Telugu", + "Teso (Kenya)" : "Teso (Kenya)", + "Teso (Uganda)" : "Teso (Uganda)", + "Teso" : "Teso", + "Thai (Thailand)" : "Thai (Thailand)", + "Thai" : "Thai", + "Tibetan (China)" : "Tibetan (China)", + "Tibetan (India)" : "Tibetan (India)", + "Tibetan" : "Tibetan", + "Tigrinya (Eritrea)" : "Tigrinya (Eritrea)", + "Tigrinya (Ethiopia)" : "Tigrinya (Ethiopia)", + "Tigrinya" : "Tigrinya", + "Tonga (Tonga)" : "Tonga (Tonga)", + "Tonga" : "Tonga", + "Turkish (Turkey)" : "Turkish (Turkey)", + "Turkish" : "Turkish", + "Ukrainian (Ukraine)" : "Ukrainian (Ukraine)", + "Ukrainian" : "Ukrainian", + "Urdu (India)" : "Urdu (India)", + "Urdu (Pakistan)" : "Urdu (Pakistan)", + "Urdu" : "Urdu", + "Uzbek (Arabic)" : "Uzbek (Arabic)", + "Uzbek (Arabic, Afghanistan)" : "Uzbek (Arabic, Afghanistan)", + "Uzbek (Cyrillic)" : "Uzbek (Cyrillic)", + "Uzbek (Cyrillic, Uzbekistan)" : "Uzbek (Cyrillic, Uzbekistan)", + "Uzbek (Latin)" : "Uzbek (Latin)", + "Uzbek (Latin, Uzbekistan)" : "Uzbek (Latin, Uzbekistan)", + "Uzbek" : "Uzbek", + "Vietnamese (Vietnam)" : "Vietnamese (Vietnam)", + "Vietnamese" : "Vietnamese", + "Vunjo (Tanzania)" : "Vunjo (Tanzania)", + "Vunjo" : "Vunjo", + "Welsh (United Kingdom)" : "Welsh (United Kingdom)", + "Welsh" : "Welsh", + "Yoruba (Nigeria)" : "Yoruba (Nigeria)", + "Yoruba" : "Yoruba", + "Zulu (South Africa)" : "Zulu (South Africa)", + "Zulu" : "Zulu", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "二要素認証はすべての\tユーザーと特定のグループに強制することができます。設定済みの二要素プロバイダーがない場合は、システムにログインできません。", + "Enforce two-factor authentication" : "二要素認証を強制する", + "Limit to groups" : "次のグループに制限", + "Enforcement of two-factor authentication can be set for certain groups only." : "二要素認証の強制は特定のグループのみに設定できます。", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "二要素認証はすべての\t次のグループのメンバーに強制されています。", + "Enforced groups" : "適用されたグループ", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "次のグループのメンバーの場合、二要素認証は強制されません。", + "Excluded groups" : "除外されたグループ", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "グループが選択または除外されると、ユーザーが2FAを適用しているかどうかを判断するために次のロジックが使用されます。グループが選択されていない場合、除外グループのメンバーを除くすべてのユーザーに対して2FAが有効になります。グループが選択されている場合は、2FAは、これらのすべてのメンバーのために有効になっています。 ユーザーが選択されたグループと除外されたグループの両方にいる場合は、選択されたグループが優先され、2FAが適用されます。", + "Save changes" : "変更を保存", + "Marked for remote wipe" : "リモートワイプ用にマーク", + "Device settings" : "デバイスの設定", + "Allow filesystem access" : "ファイルシステムへのアクセスを許可", + "Rename" : "名前を変更", + "Revoke" : "取り消す", + "Wipe device" : "デバイスをワイプ", + "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "ワイプが開始されていない場合、このトークンを無効にすると端末のワイプが無効になる可能性があります。", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Android用Google Chrome", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Nextcloud iOSアプリ", + "Nextcloud Android app" : "Nextcloud Android アプリ", + "Nextcloud Talk for iOS" : "iOS用Nextcloud Talk", + "Nextcloud Talk for Android" : "Android用Nextcloud Talk", + "Sync client - {os}" : "同期用クライアント - {os}", + "This session" : "本セッション", + "Device" : "デバイス", + "Last activity" : "最後の活動", + "Devices & sessions" : "デバイスとセッション", + "Web, desktop and mobile clients currently logged in to your account." : "現在、Web、デスクトップ、モバイルアプリであなたのアカウントにログインしている端末一覧です。", + "Do you really want to wipe your data from this device?" : "本当にこの端末からデータを消去しますか?", + "Confirm wipe" : "ワイプ確認", + "Error while creating device token" : "デバイストークンの作成中にエラーが発生しました", + "Error while updating device token scope" : "デバイストークンのスコープ更新中にエラーが発生しました", + "Error while updating device token name" : "デバイストークン名の更新中にエラーが発生しました", + "Error while deleting the token" : "トークンの削除中にエラーが発生しました", + "Error while wiping the device with the token" : "トークンによる端末のワイプ中にエラーが発生しました", + "App name" : "アプリ名", + "Create new app password" : "新しいアプリパスワードを作成", + "Use the credentials below to configure your app or device." : "アプリや端末を設定するのに以下の認証情報を使用する。", + "For security reasons this password will only be shown once." : "セキュリティ上の理由から、このパスワードは一度しか表示されません。", + "Username" : "ユーザーID", + "Password" : "パスワード", + "Done" : "完了", + "Show QR code for mobile apps" : "モバイルアプリのQRコードを表示する", + "Copied!" : "コピーしました!", + "Copy" : "コピー", + "Could not copy app password. Please copy it manually." : "アプリのパスワードをコピーできませんでした。 手動でコピーしてください。", + "This app is supported via your current Nextcloud subscription." : "このアプリは、現行のNextcloudサブスクリプションでサポートされています。", + "Supported" : "サポート", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "公式アプリは Nextcloud コミュニティにより開発されています。公式アプリは Nextcloud の中心的な機能を提供し、製品として可能です。", + "Official" : "公式", + "by" : "by", + "Update to {version}" : "{version} にアップデート", + "Remove" : "削除", + "Disable" : "無効にする", + "All" : "すべて", + "Limit app usage to groups" : "アプリの使用をグループに制限する", + "No results" : "該当なし", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "このアプリは Nextcloud の最小バージョンが指定されていません.将来、エラーが発生する可能性があります.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "このアプリは Nextcloud バージョンの上限が指定されていません.将来、エラーが発生する可能性があります.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "次の依存関係が満たされないためこのアプリをインストールできません:", + "View in store" : "ストア内で表示", + "Visit website" : "ウェブサイトを表示", + "Report a bug" : "バグを報告", + "User documentation" : "ユーザードキュメント", + "Admin documentation" : "管理者ドキュメント", + "Developer documentation" : "開発者ドキュメント", + "Update to {update}" : "{update} にアップデート", + "Results from other categories" : "他のカテゴリからの結果", + "No apps found for your version" : "現在のバージョンに対応するアプリはありません", + "Disable all" : "すべて無効にする", + "Enable all" : "すべて有効にする", + "Download and enable" : "ダウンロードして有効にする", + "Enable" : "有効にする", + "Enable untested app" : "未テストのアプリを有効にする", + "The app will be downloaded from the app store" : "このアプリは、アプリストアからダウンロードできます。", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "このアプリはあなたのNextcloudのバージョンと互換性があるとしてマークされていません。 続行しても、アプリをインストールすることはできます。 アプリが期待通りに動作しない可能性があることに注意してください。", + "You do not have permissions to see the details of this user" : "このユーザーの詳細を表示する権限がありません", + "The backend does not support changing the display name" : "バックエンドは表示名の変更をサポートしていません", + "New password" : "新しいパスワード", + "Add user in group" : "グループにユーザーを追加", + "Set user as admin for" : "ユーザーを管理者に設定します", + "Select user quota" : "ユーザークオータを選択", + "No language set" : "言語設定なし", + "Never" : "なし", + "Delete user" : "ユーザーを削除", + "Wipe all devices" : "すべての端末をワイプ", + "Disable user" : "ユーザーを無効", + "Enable user" : "ユーザーを有効", + "Resend welcome email" : "ウェルカムメールを再送する", + "{size} used" : "{size} を使用中", + "Welcome mail sent!" : "ウェルカムメールを送信しました!", + "Display name" : "表示名", + "Email" : "メール", + "Group admin for" : "グループの管理者", + "Quota" : "クオータ", + "Language" : "言語", + "Storage location" : "データの保存場所", + "User backend" : "ユーザーバックエンド", + "Last login" : "最終ログイン", + "Will be autogenerated" : "自動生成されます", + "Default language" : "デフォルトの言語", + "Add a new user" : "新しいユーザーを追加", + "No users in here" : "ここにはユーザーがありません", + "Default quota" : "デフォルトのクオータ", + "Password change is disabled because the master key is disabled" : "マスターキーが無効になっているため、パスワードの変更は無効です", + "Common languages" : "共通言語", + "All languages" : "すべての言語", + "Your apps" : "あなたのアプリ", + "Active apps" : "アクティブなアプリ", + "Disabled apps" : "無効なアプリ", + "Updates" : "アップデート", + "App bundles" : "アプリバンドル", + "{license}-licensed" : "{license}-ライセンス", + "New user" : "新しいユーザー", + "Default quota:" : "デフォルトのクオータ:", + "Select default quota" : "デフォルトのクオータを選択", + "Show Languages" : "言語を表示", + "Show last login" : "最終ログインを表示", + "Show user backend" : "ユーザーバックエンドを表示", + "Show storage path" : "ストレージの場所を表示", + "You are about to remove the group {group}. The users will NOT be deleted." : "{group}グループを削除しようとしています。 ユーザーは削除されません。", + "Please confirm the group removal " : "グループの削除を確認してください", + "Remove group" : "グループを削除", + "Admins" : "管理者", + "Disabled users" : "無効なユーザー", + "Everyone" : "すべてのユーザー", + "Add group" : "グループを追加する", + "An error occured during the request. Unable to proceed." : "要求中にエラーが発生しました。 続行できません。", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "アプリは有効ですが、更新が必要です。5秒後に更新ページにリダイレクトします。", + "App update" : "アプリのアップデート", + "Error: This app can not be enabled because it makes the server unstable" : "エラー:このアプリは、サーバーを不安定にするため、有効にすることができません。", + "SSL Root Certificates" : "SSLルート証明書", + "Common Name" : "コモンネーム", + "Valid until" : "有効期限", + "Issued By" : "発行元", + "Valid until %s" : "%s まで有効", + "Import root certificate" : "ルート証明書をインポート", + "Administrator documentation" : "管理者ドキュメント", + "Documentation" : "ドキュメント", + "Forum" : "フォーラム", + "None" : "なし", + "Login" : "ログイン", + "Plain" : "平文", + "NT LAN Manager" : "NT LAN マネージャー", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "メールサーバー", + "Open documentation" : "ドキュメントを開く", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "パスワードのリセットや通知などのメールを送信できるよう、このサーバーを設定することが重要です。", + "Send mode" : "送信モード", + "Encryption" : "暗号化", + "Sendmail mode" : "Sendmailモード", + "From address" : "送信元アドレス", + "mail" : "mail", + "Authentication method" : "認証方法", + "Authentication required" : "認証を必要とする", + "Server address" : "サーバーアドレス", + "Port" : "ポート", + "Credentials" : "資格情報", + "SMTP Username" : "SMTPユーザー名", + "SMTP Password" : "SMTPパスワード", + "Test email settings" : "メール設定のテスト", + "Send email" : "メールを送信", + "Security & setup warnings" : "セキュリティ&セットアップ警告", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "サーバーのセキュリティとパフォーマンスにとって重要なことは、すべてが正確に設定されていることです。あなたの助けとなるよう、Nextcloudでは一部の自動チェックを行っています。詳細な情報は、リンク先のドキュメントを参照してください。", + "All checks passed." : "すべてのチェックに合格しました。", + "There are some errors regarding your setup." : "セットアップに関するいくつかのエラーがあります。", + "There are some warnings regarding your setup." : "セットアップに関して警告がいくつかあります。", + "Checking for system and security issues." : "システムおよびセキュリティの問題をチェックしています。", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">インストールガイド ↗</a>を再確認して、 <a href=\"%2$s\">ログ</a> にあるすべてのエラーや警告を確認してください。", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Nextcloudのセキュリティは、<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">セキュリティスキャン ↗</a>でチェックしてください。", + "Version" : "バージョン", + "Two-Factor Authentication" : "二要素認証", + "Server-side encryption" : "サーバーサイド暗号化", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "サーバーサイド暗号化では、このサーバーにアップロードされるファイルを暗号化することができます。この設定を行うとパフォーマンス劣化のような制限を伴いますので、必要な場合のみ有効にしてください。", + "Enable server-side encryption" : "サーバーサイド暗号化を有効にする", + "Please read carefully before activating server-side encryption: " : "サーバーサイド暗号化を有効にする前によく読んでください:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "いったん暗号化を有効にすると、この時点からサーバーにアップロードされるすべてのファイルが暗号化されサーバー上に入ります。有効化された暗号モジュールは復号化機能をサポートしますが、すべての前提条件が満たされている(例えば、回復キーが設定されている)場合にのみ、後日暗号化を無効にできます。", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "暗号化だけで、システムのセキュリティが保証されるわけではありません。暗号化アプリがどのように動作するかの詳細な情報や、サポートされているユースケースについては、Nextcloud のドキュメントを参照してください。", + "Be aware that encryption always increases the file size." : "暗号化は、常にファイルサイズが増加することに注意してください。", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "暗号化した場合には必ず、あなたのデータと共に暗号化キーをバックアップすることを確認し、定期的にデータをバックアップを作成することをお勧めします。", + "This is the final warning: Do you really want to enable encryption?" : "これが最後の警告です:本当に暗号化を有効にしますか?", + "Enable encryption" : "暗号化を有効にする", + "No encryption module loaded, please enable an encryption module in the app menu." : "暗号化モジュールがロードされていません。アプリのメニューから暗号化モジュールを有効化してください。", + "Select default encryption module:" : "デフォルトの暗号化モジュールを選択:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "古い暗号化(ownCloud <= 8.0) から新しいものに暗号化キーを移行する必要があります。\"デフォルトの暗号化モジュール\" を有効にして 'occ encryption:migrate' を実行してください。", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "古い暗号化(ownCloud <= 8.0) から新しいものに暗号化キーを移行する必要があります。", + "Start migration" : "移行を開始", + "Background jobs" : "バックグラウンドジョブ", + "Last job ran %s." : "最終ジョブ実行: %s", + "Last job execution ran %s. Something seems wrong." : "最終ジョブ実行は %s です。何か問題が発生しています。", + "Background job didn’t run yet!" : "バックグラウンドジョブは実行されていません", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "最適なパフォーマンスにするには、バックグラウンドジョブを正確に設定することが重要です。大規模なインスタンスでは、'Cron'がお薦めの設定です。詳細な情報は、ドキュメントを参照してください。", + "Pick background job setting" : "バックグラウンドジョブ設定を選択", + "Execute one task with each page loaded" : "各ページの読み込み時にタスクを実行します。", + "The cron.php needs to be executed by the system user \"%s\"." : "cron.php はシステムユーザー \"%s\" で実行する必要があります。", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "これを実行するにはPHPのposix拡張が必要です。詳細については、{linkstart} PHPドキュメント{linkend}を参照してください。", + "Sharing" : "共有", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "管理者であれば共有時の挙動を微調整できます。詳細な情報はドキュメントを参照してください。", + "Allow apps to use the Share API" : "アプリからの共有APIの利用を許可する", + "Allow users to share via link" : "URLリンクでの共有を許可する", + "Allow public uploads" : "パブリックなアップロードを許可する", + "Always ask for a password" : "常にパスワードをたずねる", + "Enforce password protection" : "常にパスワード保護を有効にする", + "Set default expiration date" : "有効期限のデフォルト値を設定する", + "Expire after " : "無効になるまで", + "days" : "日", + "Enforce expiration date" : "有効期限を反映させる", + "Allow resharing" : "再共有を許可する", + "Allow sharing with groups" : "グループ共有を許可する", + "Restrict users to only share with users in their groups" : "グループ内のユーザーでのみ共有するように制限する", + "Exclude groups from sharing" : "共有可能なグループから除外する", + "These groups will still be able to receive shares, but not to initiate them." : "このグループでは、フォルダー共有を開始することはできませんが、共有されたフォルダーを参照することはできます。", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "共有ダイアログ中でユーザー名の自動補完を許可する。この設定が無効の場合、完全なユーザー名またはメールアドレスを入力する必要があります。", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "公開リンクのアップロードページに免責事項のテキストを表示する。 (ファイルリストが非表示のときのみ表示します)", + "This text will be shown on the public link upload page when the file list is hidden." : "このテキストは、ファイルリストが非表示になっているときに公開リンクのアップロードページに表示されます。", + "Default share permissions" : "デフォルトの共有アクセス許可", + "Personal" : "個人", + "Administration" : "管理", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "{communityopen} Nextcloudコミュニティ{linkclose}によって開発された{githubopen}ソースコード{linkclose}は、{licenseopen} AGPL {linkclose}でライセンスされています。", + "Like our Facebook page" : "私たちのFacebookのページをイイネ!", + "Follow us on Twitter" : "Twitter でフォロー!", + "Follow us on Mastodon" : "Mastodonでフォロー", + "Check out our blog" : "私たちのブログを見てね!", + "Subscribe to our newsletter" : "ニュースレターを購読する!", + "Profile picture" : "プロフィール画像", + "Upload new" : "新たにアップロード", + "Select from Files" : "ファイルから選択", + "Remove image" : "画像を削除", + "png or jpg, max. 20 MB" : "pngまたはjpg。最大20MB", + "Picture provided by original account" : "オリジナルのアカウントで提供されている写真", + "Cancel" : "キャンセル", + "Choose as profile picture" : "プロファイル画像として選択", + "Details" : "詳細", + "You are a member of the following groups:" : "次のグループに所属:", + "You are using <strong>%s</strong>" : "<strong>%s</strong>を現在使用中です", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "<strong>%1$s</strong> / <strong>%2$s</strong> (<strong>%3$s %%</strong>) 使用中", + "Full name" : "氏名", + "No display name set" : "表示名が未設定", + "Your email address" : "あなたのメールアドレス", + "No email address set" : "メールアドレスが設定されていません", + "For password reset and notifications" : "パスワードリセットと通知用", + "Phone number" : "電話番号", + "Your phone number" : "あなたの電話番号", + "Address" : "住所", + "Your postal address" : "あなたの住所", + "Website" : "ウェブサイト", + "It can take up to 24 hours before the account is displayed as verified." : "アカウントが確認済みとして表示されるまでには最大24時間かかることがあります。", + "Link https://…" : "リンク https://...", + "Twitter" : "Twitter", + "Twitter handle @…" : "あなたのTwitter ID @...", + "Help translate" : "翻訳に協力する", + "Locale" : "ロケール", + "Current password" : "現在のパスワード", + "Change password" : "パスワードを変更", + "Use a second factor besides your password to increase security for your account." : "アカウントのセキュリティを強化するには、パスワード以外に2番目の要素を使用してください。", + "Disconnect" : "切断", + "Not supported!" : "未対応", + "Press ⌘-C to copy." : "⌘-C でコピーします。", + "Press Ctrl-C to copy." : "Ctrl-Cを押してコピーします。", + "Error while loading browser sessions and device tokens" : "ブラウザーセッションとデバイストークンの読み込み中にエラーが発生しました", + "Store credentials" : "資格情報を保存", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.phpは、HTTP経由で15分ごとにcron.phpを実行するようwebcronサービスに登録されます。", + "Use system cron service to call the cron.php file every 15 minutes." : "システムのcronサービスを利用して、15分間隔でcron.phpファイルを実行します。", + "Follow us on Google+" : "Google+でフォロー!" +}, +"nplurals=1; plural=0;"); diff --git a/apps/settings/l10n/ja.json b/apps/settings/l10n/ja.json new file mode 100644 index 00000000000..4032a123629 --- /dev/null +++ b/apps/settings/l10n/ja.json @@ -0,0 +1,818 @@ +{ "translations": { + "{actor} added you to group {group}" : "{actor} があなたを {group} グループに追加しました", + "You added {user} to group {group}" : "{user}を {group} グループに追加しました", + "{actor} added {user} to group {group}" : "{actor} が{user}を {group} グループに追加しました", + "An administrator added you to group {group}" : "管理者があなたを {group} グループに追加しました", + "An administrator added {user} to group {group}" : "管理者が{user}を {group} グループに追加しました", + "{actor} removed you from group {group}" : "{actor} があなたを {group} グループから外しました", + "You removed {user} from group {group}" : "{user}を {group} グループから外しました", + "{actor} removed {user} from group {group}" : "{actor} が{user}を {group} グループから外しました", + "An administrator removed you from group {group}" : "管理者があなたを {group} グループから外しました", + "An administrator removed {user} from group {group}" : "管理者が{user}を {group} グループから外しました", + "Your <strong>group memberships</strong> were modified" : "<strong>グループメンバーシップ</strong>が変更されたとき", + "{actor} changed your password" : "{actor} がパスワードを変更", + "You changed your password" : "パスワードを変更", + "Your password was reset by an administrator" : "管理者がパスワードをリセットしました", + "{actor} changed your email address" : "{actor} がメールアドレスを変更しました", + "You changed your email address" : "メールアドレスを変更しました", + "Your email address was changed by an administrator" : "管理者がメールアドレスを変更しました", + "You created app password \"{token}\"" : "アプリのパスワード\"{token}\"を作成しました", + "You deleted app password \"{token}\"" : "アプリのパスワード\"{token}\"を削除しました", + "You renamed app password \"{token}\" to \"{newToken}\"" : "アプリのパスワードを{token} から {newToken} に変更しました。", + "You granted filesystem access to app password \"{token}\"" : "アプリのパスワード\"{token}\"へファイルシステムアクセス件を付与しました", + "You revoked filesystem access from app password \"{token}\"" : "アプリのパスワード\"{token}\"へファイルシステムアクセス件を取り下げました", + "Security" : "セキュリティ", + "You successfully logged in using two-factor authentication (%1$s)" : "二要素認証を使用して正常にログインしました (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "二要素認証を使用したログイン試行に失敗しました (%1$s)", + "Remote wipe was started on %1$s" : "%1$sでリモートワイプが開始されました", + "Remote wipe has finished on %1$s" : "%1$sのリモートワイプが完了しました", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "<strong> パスワード </strong> または、<strong> メールアドレス</strong>が更新されました", + "Couldn't remove app." : "アプリが削除できませんでした。", + "Couldn't update app." : "アプリをアップデートできませんでした。", + "Wrong password" : "パスワードが間違っています", + "Saved" : "保存しました", + "No user supplied" : "ユーザーが指定されていません", + "Unable to change password" : "パスワードを変更できません", + "Authentication error" : "認証エラー", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "リカバリ用の管理者パスワードを入力してください。そうしないと、全ユーザーのデータが失われます。", + "Wrong admin recovery password. Please check the password and try again." : "リカバリ用の管理者パスワードが間違っています。パスワードを確認して再度実行してください。", + "Backend doesn't support password change, but the user's encryption key was updated." : "バックエンドはパスワードの変更をサポートしていませんが、ユーザーの暗号化キーは正常に更新されました。", + "installing and updating apps via the app store or Federated Cloud Sharing" : "アプリストアまたはクラウド連携共有から、アプリをインストールならびにアップデート", + "Federated Cloud Sharing" : "統合されたクラウド共有", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "%1$sバージョン (%2$s) の古い cURL を使っています。OSを更新するか、この機能 %3$sが正しく動くアプリに更新してください。", + "Invalid SMTP password." : "SMTPパスワードが無効", + "Email setting test" : "メール設定のテスト", + "Well done, %s!" : "%s、素晴らしい!", + "If you received this email, the email configuration seems to be correct." : "メールが届いていたら、メールは正しく設定されています。", + "Email could not be sent. Check your mail server log" : "メールが送信できませんでした。メールサーバーのログを確認してください", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "メールの送信中に問題が発生しました。設定を確認してください。 (Error: %s)", + "You need to set your user email before being able to send test emails." : "ユーザーメールを設定して初めて、テストメールを送信することができるようになります。", + "Invalid mail address" : "無効なメールアドレスです", + "Settings saved" : "設定を保存しました", + "Unable to change full name" : "名前を変更できません", + "Unable to change email address" : "メールアドレスを変更できません", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "あなたのTwitterアカウントを確認するには、以下のtweetをTwitterに投稿してください(改行なしで投稿してください):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "あなたのウェブサイトを確認するため、次の内容をウェブルートの'.well-known/CloudIdVerificationCode.txt'に保存します。(完全な文章で一文になっていることを確かめてください。)", + "%1$s changed your password on %2$s." : "%1$sにより %2$sのパスワードを変更しました。", + "Your password on %s was changed." : "%s のパスワードを変更しました。", + "Your password on %s was reset by an administrator." : "%sのパスワードは、管理者がリセットしました。", + "Password for %1$s changed on %2$s" : "%1$s のパスワードが %2$sで変更しました", + "Password changed for %s" : "%s のパスワードを変更しました", + "If you did not request this, please contact an administrator." : "このリクエストをしていない場合は、管理者に問い合わせてください。", + "Your email address on %s was changed." : "%s のメールアドレスを変更しました。", + "Your email address on %s was changed by an administrator." : "%s のメールアドレスを管理者が変更しました。", + "Email address for %1$s changed on %2$s" : "%1$s のメールアドレスが %2$sで変更しました。", + "Email address changed for %s" : "%s のメールアドレスを変更しました", + "The new email address is %s" : "新しいメールアドレスは、%s です", + "Your %s account was created" : "%s アカウントを作成しました", + "Welcome aboard" : "ようこそ", + "Welcome aboard %s" : "%s さん、ようこそ", + "Welcome to your %s account, you can add, protect, and share your data." : "%s アカウントにようこそ。あなたのデータを追加、保護、共有することができます。", + "Your username is: %s" : "あなたの名前: %s", + "Set your password" : "パスワードを設定", + "Go to %s" : "%s に移動", + "Install Client" : "クライアントをインストール", + "Logged in user must be a subadmin" : "ログインユーザーはサブ管理者である必要があります", + "Create" : "作成", + "Change" : "変更", + "Delete" : "削除", + "Share" : "共有", + "Unlimited" : "無制限", + "Verifying" : "検証中", + "Verifying …" : "検証中", + "Verify" : "検証", + "Migration in progress. Please wait until the migration is finished" : "移行の処理中です。移行が完了するまでお待ちください。", + "Migration started …" : "移行を開始しました…", + "Not saved" : "未保存", + "Sending…" : "送信中 …", + "Email sent" : "メールを送信しました", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "エラーが発生しました。ASCIIコードのPEM証明書をアップロードしてください。", + "Valid until {date}" : "{date} まで有効", + "Local" : "ローカル", + "Private" : "非公開", + "Only visible to local users" : "ローカルユーザーのみ見れます", + "Only visible to you" : "あなたのみから見れます", + "Contacts" : "アドレス帳", + "Visible to local users and to trusted servers" : "ローカルユーザーと信頼できるサーバーから見れます", + "Public" : "公開", + "Will be synced to a global and public address book" : "グローバルなアドレス帳と公開アドレス帳に同期されます", + "Very weak password" : "非常に弱いパスワード", + "Weak password" : "弱いパスワード", + "So-so password" : "まずまずのパスワード", + "Good password" : "良好なパスワード", + "Strong password" : "強いパスワード", + "An error occurred while changing your language. Please reload the page and try again." : "言語を変更する際にエラーが発生しました。ページをリロードして、再度試してください。", + "An error occurred while changing your locale. Please reload the page and try again." : "ロケールの変更中にエラーが発生しました。 ページをリロードしてもう一度お試しください。", + "Select a profile picture" : "プロファイル画像を選択", + "Week starts on {fdow}" : "週は{fdow}から始まります", + "Groups" : "グループ", + "Group list is empty" : "グループリストが空です", + "Unable to retrieve the group list" : "グループリストを取得できません", + "Afrikaans (Namibia)" : "Afrikaans (Namibia)", + "Afrikaans (South Africa)" : "Afrikaans (South Africa)", + "Afrikaans" : "Afrikaans", + "Akan (Ghana)" : "Akan (Ghana)", + "Akan" : "Akan", + "Albanian (Albania)" : "Albanian (Albania)", + "Albanian" : "Albanian", + "Amharic (Ethiopia)" : "Amharic (Ethiopia)", + "Amharic" : "Amharic", + "Arabic (Algeria)" : "Arabic (Algeria)", + "Arabic (Bahrain)" : "Arabic (Bahrain)", + "Arabic (Egypt)" : "Arabic (Egypt)", + "Arabic (Iraq)" : "Arabic (Iraq)", + "Arabic (Jordan)" : "Arabic (Jordan)", + "Arabic (Kuwait)" : "Arabic (Kuwait)", + "Arabic (Lebanon)" : "Arabic (Lebanon)", + "Arabic (Libya)" : "Arabic (Libya)", + "Arabic (Morocco)" : "Arabic (Morocco)", + "Arabic (Oman)" : "Arabic (Oman)", + "Arabic (Qatar)" : "Arabic (Qatar)", + "Arabic (Saudi Arabia)" : "Arabic (Saudi Arabia)", + "Arabic (Sudan)" : "Arabic (Sudan)", + "Arabic (Syria)" : "Arabic (Syria)", + "Arabic (Tunisia)" : "Arabic (Tunisia)", + "Arabic (United Arab Emirates)" : "Arabic (United Arab Emirates)", + "Arabic (Yemen)" : "Arabic (Yemen)", + "Arabic" : "Arabic", + "Armenian (Armenia)" : "Armenian (Armenia)", + "Armenian" : "Armenian", + "Assamese (India)" : "Assamese (India)", + "Assamese" : "Assamese", + "Asu (Tanzania)" : "Asu (Tanzania)", + "Asu" : "Asu", + "Azerbaijani (Cyrillic)" : "Azerbaijani (Cyrillic)", + "Azerbaijani (Cyrillic, Azerbaijan)" : "Azerbaijani (Cyrillic, Azerbaijan)", + "Azerbaijani (Latin)" : "Azerbaijani (Latin)", + "Azerbaijani (Latin, Azerbaijan)" : "Azerbaijani (Latin, Azerbaijan)", + "Azerbaijani" : "Azerbaijani", + "Bambara (Mali)" : "Bambara (Mali)", + "Bambara" : "Bambara", + "Basque (Spain)" : "Basque (Spain)", + "Basque" : "Basque", + "Belarusian (Belarus)" : "Belarusian (Belarus)", + "Belarusian" : "Belarusian", + "Bemba (Zambia)" : "Bemba (Zambia)", + "Bemba" : "Bemba", + "Bena (Tanzania)" : "Bena (Tanzania)", + "Bena" : "Bena", + "Bengali (Bangladesh)" : "Bengali (Bangladesh)", + "Bengali (India)" : "Bengali (India)", + "Bengali" : "Bengali", + "Bosnian (Bosnia and Herzegovina)" : "Bosnian (Bosnia and Herzegovina)", + "Bosnian" : "Bosnian", + "Bulgarian (Bulgaria)" : "Bulgarian (Bulgaria)", + "Bulgarian" : "Bulgarian", + "Burmese (Myanmar [Burma])" : "Burmese (Myanmar [Burma])", + "Burmese" : "Burmese", + "Catalan (Spain)" : "Catalan (Spain)", + "Catalan" : "Catalan", + "Central Morocco Tamazight (Latin)" : "Central Morocco Tamazight (Latin)", + "Central Morocco Tamazight (Latin, Morocco)" : "Central Morocco Tamazight (Latin, Morocco)", + "Central Morocco Tamazight" : "Central Morocco Tamazight", + "Cherokee (United States)" : "Cherokee (United States)", + "Cherokee" : "Cherokee", + "Chiga (Uganda)" : "Chiga (Uganda)", + "Chiga" : "Chiga", + "Chinese (Simplified Han)" : "Chinese (Simplified Han)", + "Chinese (Simplified Han, China)" : "Chinese (Simplified Han, China)", + "Chinese (Simplified Han, Hong Kong SAR China)" : "Chinese (Simplified Han, Hong Kong SAR China)", + "Chinese (Simplified Han, Macau SAR China)" : "Chinese (Simplified Han, Macau SAR China)", + "Chinese (Simplified Han, Singapore)" : "Chinese (Simplified Han, Singapore)", + "Chinese (Traditional Han)" : "Chinese (Traditional Han)", + "Chinese (Traditional Han, Hong Kong SAR China)" : "Chinese (Traditional Han, Hong Kong SAR China)", + "Chinese (Traditional Han, Macau SAR China)" : "Chinese (Traditional Han, Macau SAR China)", + "Chinese (Traditional Han, Taiwan)" : "Chinese (Traditional Han, Taiwan)", + "Chinese" : "Chinese", + "Cornish (United Kingdom)" : "Cornish (United Kingdom)", + "Cornish" : "Cornish", + "Croatian (Croatia)" : "Croatian (Croatia)", + "Croatian" : "Croatian", + "Czech (Czech Republic)" : "Czech (Czech Republic)", + "Czech" : "Czech", + "Danish (Denmark)" : "Danish (Denmark)", + "Danish" : "Danish", + "Dutch (Belgium)" : "Dutch (Belgium)", + "Dutch (Netherlands)" : "Dutch (Netherlands)", + "Dutch" : "Dutch", + "Embu (Kenya)" : "Embu (Kenya)", + "Embu" : "Embu", + "English (American Samoa)" : "English (American Samoa)", + "English (Australia)" : "English (Australia)", + "English (Belgium)" : "English (Belgium)", + "English (Belize)" : "English (Belize)", + "English (Botswana)" : "English (Botswana)", + "English (Canada)" : "English (Canada)", + "English (Guam)" : "English (Guam)", + "English (Hong Kong SAR China)" : "English (Hong Kong SAR China)", + "English (India)" : "English (India)", + "English (Ireland)" : "English (Ireland)", + "English (Jamaica)" : "English (Jamaica)", + "English (Malta)" : "English (Malta)", + "English (Marshall Islands)" : "English (Marshall Islands)", + "English (Mauritius)" : "English (Mauritius)", + "English (Namibia)" : "English (Namibia)", + "English (New Zealand)" : "English (New Zealand)", + "English (Northern Mariana Islands)" : "English (Northern Mariana Islands)", + "English (Pakistan)" : "English (Pakistan)", + "English (Philippines)" : "English (Philippines)", + "English (Singapore)" : "English (Singapore)", + "English (South Africa)" : "English (South Africa)", + "English (Trinidad and Tobago)" : "English (Trinidad and Tobago)", + "English (U.S. Minor Outlying Islands)" : "English (U.S. Minor Outlying Islands)", + "English (U.S. Virgin Islands)" : "English (U.S. Virgin Islands)", + "English (United Kingdom)" : "English (United Kingdom)", + "English (United States)" : "English (United States)", + "English (Zimbabwe)" : "English (Zimbabwe)", + "English" : "English", + "Esperanto" : "Esperanto", + "Estonian (Estonia)" : "Estonian (Estonia)", + "Estonian" : "Estonian", + "Ewe (Ghana)" : "Ewe (Ghana)", + "Ewe (Togo)" : "Ewe (Togo)", + "Ewe" : "Ewe", + "Faroese (Faroe Islands)" : "Faroese (Faroe Islands)", + "Faroese" : "Faroese", + "Filipino (Philippines)" : "Filipino (Philippines)", + "Filipino" : "Filipino", + "Finnish (Finland)" : "Finnish (Finland)", + "Finnish" : "Finnish", + "French (Belgium)" : "French (Belgium)", + "French (Benin)" : "French (Benin)", + "French (Burkina Faso)" : "French (Burkina Faso)", + "French (Burundi)" : "French (Burundi)", + "French (Cameroon)" : "French (Cameroon)", + "French (Canada)" : "French (Canada)", + "French (Central African Republic)" : "French (Central African Republic)", + "French (Chad)" : "French (Chad)", + "French (Comoros)" : "French (Comoros)", + "French (Congo - Brazzaville)" : "French (Congo - Brazzaville)", + "French (Congo - Kinshasa)" : "French (Congo - Kinshasa)", + "French (Côte d’Ivoire)" : "French (Côte d’Ivoire)", + "French (Djibouti)" : "French (Djibouti)", + "French (Equatorial Guinea)" : "French (Equatorial Guinea)", + "French (France)" : "French (France)", + "French (Gabon)" : "French (Gabon)", + "French (Guadeloupe)" : "French (Guadeloupe)", + "French (Guinea)" : "French (Guinea)", + "French (Luxembourg)" : "French (Luxembourg)", + "French (Madagascar)" : "French (Madagascar)", + "French (Mali)" : "French (Mali)", + "French (Martinique)" : "French (Martinique)", + "French (Monaco)" : "French (Monaco)", + "French (Niger)" : "French (Niger)", + "French (Rwanda)" : "French (Rwanda)", + "French (Réunion)" : "French (Réunion)", + "French (Saint Barthélemy)" : "French (Saint Barthélemy)", + "French (Saint Martin)" : "French (Saint Martin)", + "French (Senegal)" : "French (Senegal)", + "French (Switzerland)" : "French (Switzerland)", + "French (Togo)" : "French (Togo)", + "French" : "French", + "Fulah (Senegal)" : "Fulah (Senegal)", + "Fulah" : "Fulah", + "Galician (Spain)" : "Galician (Spain)", + "Galician" : "Galician", + "Ganda (Uganda)" : "Ganda (Uganda)", + "Ganda" : "Ganda", + "Georgian (Georgia)" : "Georgian (Georgia)", + "Georgian" : "Georgian", + "German (Austria)" : "German (Austria)", + "German (Belgium)" : "German (Belgium)", + "German (Germany)" : "German (Germany)", + "German (Liechtenstein)" : "German (Liechtenstein)", + "German (Luxembourg)" : "German (Luxembourg)", + "German (Switzerland)" : "German (Switzerland)", + "German" : "German", + "Greek (Cyprus)" : "Greek (Cyprus)", + "Greek (Greece)" : "Greek (Greece)", + "Greek" : "Greek", + "Gujarati (India)" : "Gujarati (India)", + "Gujarati" : "Gujarati", + "Gusii (Kenya)" : "Gusii (Kenya)", + "Gusii" : "Gusii", + "Hausa (Latin)" : "Hausa (Latin)", + "Hausa (Latin, Ghana)" : "Hausa (Latin, Ghana)", + "Hausa (Latin, Niger)" : "Hausa (Latin, Niger)", + "Hausa (Latin, Nigeria)" : "Hausa (Latin, Nigeria)", + "Hausa" : "Hausa", + "Hawaiian (United States)" : "Hawaiian (United States)", + "Hawaiian" : "Hawaiian", + "Hebrew (Israel)" : "Hebrew (Israel)", + "Hebrew" : "Hebrew", + "Hindi (India)" : "Hindi (India)", + "Hindi" : "Hindi", + "Hungarian (Hungary)" : "Hungarian (Hungary)", + "Hungarian" : "Hungarian", + "Icelandic (Iceland)" : "Icelandic (Iceland)", + "Icelandic" : "Icelandic", + "Igbo (Nigeria)" : "Igbo (Nigeria)", + "Igbo" : "Igbo", + "Indonesian (Indonesia)" : "Indonesian (Indonesia)", + "Indonesian" : "Indonesian", + "Irish (Ireland)" : "Irish (Ireland)", + "Irish" : "Irish", + "Italian (Italy)" : "Italian (Italy)", + "Italian (Switzerland)" : "Italian (Switzerland)", + "Italian" : "Italian", + "Japanese (Japan)" : "Japanese (Japan)", + "Japanese" : "Japanese", + "Kabuverdianu (Cape Verde)" : "Kabuverdianu (Cape Verde)", + "Kabuverdianu" : "Kabuverdianu", + "Kabyle (Algeria)" : "Kabyle (Algeria)", + "Kabyle" : "Kabyle", + "Kalaallisut (Greenland)" : "Kalaallisut (Greenland)", + "Kalaallisut" : "Kalaallisut", + "Kalenjin (Kenya)" : "Kalenjin (Kenya)", + "Kalenjin" : "Kalenjin", + "Kamba (Kenya)" : "Kamba (Kenya)", + "Kamba" : "Kamba", + "Kannada (India)" : "Kannada (India)", + "Kannada" : "Kannada", + "Kazakh (Cyrillic)" : "Kazakh (Cyrillic)", + "Kazakh (Cyrillic, Kazakhstan)" : "Kazakh (Cyrillic, Kazakhstan)", + "Kazakh" : "Kazakh", + "Khmer (Cambodia)" : "Khmer (Cambodia)", + "Khmer" : "Khmer", + "Kikuyu (Kenya)" : "Kikuyu (Kenya)", + "Kikuyu" : "Kikuyu", + "Kinyarwanda (Rwanda)" : "Kinyarwanda (Rwanda)", + "Kinyarwanda" : "Kinyarwanda", + "Konkani (India)" : "Konkani (India)", + "Konkani" : "Konkani", + "Korean (South Korea)" : "Korean (South Korea)", + "Korean" : "Korean", + "Koyra Chiini (Mali)" : "Koyra Chiini (Mali)", + "Koyra Chiini" : "Koyra Chiini", + "Koyraboro Senni (Mali)" : "Koyraboro Senni (Mali)", + "Koyraboro Senni" : "Koyraboro Senni", + "Langi (Tanzania)" : "Langi (Tanzania)", + "Langi" : "Langi", + "Latvian (Latvia)" : "Latvian (Latvia)", + "Latvian" : "Latvian", + "Lithuanian (Lithuania)" : "Lithuanian (Lithuania)", + "Lithuanian" : "Lithuanian", + "Luo (Kenya)" : "Luo (Kenya)", + "Luo" : "Luo", + "Luyia (Kenya)" : "Luyia (Kenya)", + "Luyia" : "Luyia", + "Macedonian (Macedonia)" : "Macedonian (Macedonia)", + "Macedonian" : "Macedonian", + "Machame (Tanzania)" : "Machame (Tanzania)", + "Machame" : "Machame", + "Makonde (Tanzania)" : "Makonde (Tanzania)", + "Makonde" : "Makonde", + "Malagasy (Madagascar)" : "Malagasy (Madagascar)", + "Malagasy" : "Malagasy", + "Malay (Brunei)" : "Malay (Brunei)", + "Malay (Malaysia)" : "Malay (Malaysia)", + "Malay" : "Malay", + "Malayalam (India)" : "Malayalam (India)", + "Malayalam" : "Malayalam", + "Maltese (Malta)" : "Maltese (Malta)", + "Maltese" : "Maltese", + "Manx (United Kingdom)" : "Manx (United Kingdom)", + "Manx" : "Manx", + "Marathi (India)" : "Marathi (India)", + "Marathi" : "Marathi", + "Masai (Kenya)" : "Masai (Kenya)", + "Masai (Tanzania)" : "Masai (Tanzania)", + "Masai" : "Masai", + "Meru (Kenya)" : "Meru (Kenya)", + "Meru" : "Meru", + "Morisyen (Mauritius)" : "Morisyen (Mauritius)", + "Morisyen" : "Morisyen", + "Nama (Namibia)" : "Nama (Namibia)", + "Nama" : "Nama", + "Nepali (India)" : "Nepali (India)", + "Nepali (Nepal)" : "Nepali (Nepal)", + "Nepali" : "Nepali", + "North Ndebele (Zimbabwe)" : "North Ndebele (Zimbabwe)", + "North Ndebele" : "North Ndebele", + "Norwegian Bokmål (Norway)" : "Norwegian Bokmål (Norway)", + "Norwegian Bokmål" : "Norwegian Bokmål", + "Norwegian Nynorsk (Norway)" : "Norwegian Nynorsk (Norway)", + "Norwegian Nynorsk" : "Norwegian Nynorsk", + "Nyankole (Uganda)" : "Nyankole (Uganda)", + "Nyankole" : "Nyankole", + "Oriya (India)" : "Oriya (India)", + "Oriya" : "Oriya", + "Oromo (Ethiopia)" : "Oromo (Ethiopia)", + "Oromo (Kenya)" : "Oromo (Kenya)", + "Oromo" : "Oromo", + "Pashto (Afghanistan)" : "Pashto (Afghanistan)", + "Pashto" : "Pashto", + "Persian (Afghanistan)" : "Persian (Afghanistan)", + "Persian (Iran)" : "Persian (Iran)", + "Persian" : "Persian", + "Polish (Poland)" : "Polish (Poland)", + "Polish" : "Polish", + "Portuguese (Brazil)" : "Portuguese (Brazil)", + "Portuguese (Guinea-Bissau)" : "Portuguese (Guinea-Bissau)", + "Portuguese (Mozambique)" : "Portuguese (Mozambique)", + "Portuguese (Portugal)" : "Portuguese (Portugal)", + "Portuguese" : "Portuguese", + "Punjabi (Arabic)" : "Punjabi (Arabic)", + "Punjabi (Arabic, Pakistan)" : "Punjabi (Arabic, Pakistan)", + "Punjabi (Gurmukhi)" : "Punjabi (Gurmukhi)", + "Punjabi (Gurmukhi, India)" : "Punjabi (Gurmukhi, India)", + "Punjabi" : "Punjabi", + "Romanian (Moldova)" : "Romanian (Moldova)", + "Romanian (Romania)" : "Romanian (Romania)", + "Romanian" : "Romanian", + "Romansh (Switzerland)" : "Romansh (Switzerland)", + "Romansh" : "Romansh", + "Rombo (Tanzania)" : "Rombo (Tanzania)", + "Rombo" : "Rombo", + "Russian (Moldova)" : "Russian (Moldova)", + "Russian (Russia)" : "Russian (Russia)", + "Russian (Ukraine)" : "Russian (Ukraine)", + "Russian" : "Russian", + "Rwa (Tanzania)" : "Rwa (Tanzania)", + "Rwa" : "Rwa", + "Samburu (Kenya)" : "Samburu (Kenya)", + "Samburu" : "Samburu", + "Sango (Central African Republic)" : "Sango (Central African Republic)", + "Sango" : "Sango", + "Sena (Mozambique)" : "Sena (Mozambique)", + "Sena" : "Sena", + "Serbian (Cyrillic)" : "Serbian (Cyrillic)", + "Serbian (Cyrillic, Bosnia and Herzegovina)" : "Serbian (Cyrillic, Bosnia and Herzegovina)", + "Serbian (Cyrillic, Montenegro)" : "Serbian (Cyrillic, Montenegro)", + "Serbian (Cyrillic, Serbia)" : "Serbian (Cyrillic, Serbia)", + "Serbian (Latin)" : "Serbian (Latin)", + "Serbian (Latin, Bosnia and Herzegovina)" : "Serbian (Latin, Bosnia and Herzegovina)", + "Serbian (Latin, Montenegro)" : "Serbian (Latin, Montenegro)", + "Serbian (Latin, Serbia)" : "Serbian (Latin, Serbia)", + "Serbian" : "Serbian", + "Shona (Zimbabwe)" : "Shona (Zimbabwe)", + "Shona" : "Shona", + "Sichuan Yi (China)" : "Sichuan Yi (China)", + "Sichuan Yi" : "Sichuan Yi", + "Sinhala (Sri Lanka)" : "Sinhala (Sri Lanka)", + "Sinhala" : "Sinhala", + "Slovak (Slovakia)" : "Slovak (Slovakia)", + "Slovak" : "Slovak", + "Slovenian (Slovenia)" : "Slovenian (Slovenia)", + "Slovenian" : "Slovenian", + "Soga (Uganda)" : "Soga (Uganda)", + "Soga" : "Soga", + "Somali (Djibouti)" : "Somali (Djibouti)", + "Somali (Ethiopia)" : "Somali (Ethiopia)", + "Somali (Kenya)" : "Somali (Kenya)", + "Somali (Somalia)" : "Somali (Somalia)", + "Somali" : "Somali", + "Spanish (Argentina)" : "Spanish (Argentina)", + "Spanish (Bolivia)" : "Spanish (Bolivia)", + "Spanish (Chile)" : "Spanish (Chile)", + "Spanish (Colombia)" : "Spanish (Colombia)", + "Spanish (Costa Rica)" : "Spanish (Costa Rica)", + "Spanish (Dominican Republic)" : "Spanish (Dominican Republic)", + "Spanish (Ecuador)" : "Spanish (Ecuador)", + "Spanish (El Salvador)" : "Spanish (El Salvador)", + "Spanish (Equatorial Guinea)" : "Spanish (Equatorial Guinea)", + "Spanish (Guatemala)" : "Spanish (Guatemala)", + "Spanish (Honduras)" : "Spanish (Honduras)", + "Spanish (Latin America)" : "Spanish (Latin America)", + "Spanish (Mexico)" : "Spanish (Mexico)", + "Spanish (Nicaragua)" : "Spanish (Nicaragua)", + "Spanish (Panama)" : "Spanish (Panama)", + "Spanish (Paraguay)" : "Spanish (Paraguay)", + "Spanish (Peru)" : "Spanish (Peru)", + "Spanish (Puerto Rico)" : "Spanish (Puerto Rico)", + "Spanish (Spain)" : "Spanish (Spain)", + "Spanish (United States)" : "Spanish (United States)", + "Spanish (Uruguay)" : "Spanish (Uruguay)", + "Spanish (Venezuela)" : "Spanish (Venezuela)", + "Spanish" : "Spanish", + "Swahili (Kenya)" : "Swahili (Kenya)", + "Swahili (Tanzania)" : "Swahili (Tanzania)", + "Swahili" : "Swahili", + "Swedish (Finland)" : "Swedish (Finland)", + "Swedish (Sweden)" : "Swedish (Sweden)", + "Swedish" : "Swedish", + "Swiss German (Switzerland)" : "Swiss German (Switzerland)", + "Swiss German" : "Swiss German", + "Tachelhit (Latin)" : "Tachelhit (Latin)", + "Tachelhit (Latin, Morocco)" : "Tachelhit (Latin, Morocco)", + "Tachelhit (Tifinagh)" : "Tachelhit (Tifinagh)", + "Tachelhit (Tifinagh, Morocco)" : "Tachelhit (Tifinagh, Morocco)", + "Tachelhit" : "Tachelhit", + "Taita (Kenya)" : "Taita (Kenya)", + "Taita" : "Taita", + "Tamil (India)" : "Tamil (India)", + "Tamil (Sri Lanka)" : "Tamil (Sri Lanka)", + "Tamil" : "Tamil", + "Telugu (India)" : "Telugu (India)", + "Telugu" : "Telugu", + "Teso (Kenya)" : "Teso (Kenya)", + "Teso (Uganda)" : "Teso (Uganda)", + "Teso" : "Teso", + "Thai (Thailand)" : "Thai (Thailand)", + "Thai" : "Thai", + "Tibetan (China)" : "Tibetan (China)", + "Tibetan (India)" : "Tibetan (India)", + "Tibetan" : "Tibetan", + "Tigrinya (Eritrea)" : "Tigrinya (Eritrea)", + "Tigrinya (Ethiopia)" : "Tigrinya (Ethiopia)", + "Tigrinya" : "Tigrinya", + "Tonga (Tonga)" : "Tonga (Tonga)", + "Tonga" : "Tonga", + "Turkish (Turkey)" : "Turkish (Turkey)", + "Turkish" : "Turkish", + "Ukrainian (Ukraine)" : "Ukrainian (Ukraine)", + "Ukrainian" : "Ukrainian", + "Urdu (India)" : "Urdu (India)", + "Urdu (Pakistan)" : "Urdu (Pakistan)", + "Urdu" : "Urdu", + "Uzbek (Arabic)" : "Uzbek (Arabic)", + "Uzbek (Arabic, Afghanistan)" : "Uzbek (Arabic, Afghanistan)", + "Uzbek (Cyrillic)" : "Uzbek (Cyrillic)", + "Uzbek (Cyrillic, Uzbekistan)" : "Uzbek (Cyrillic, Uzbekistan)", + "Uzbek (Latin)" : "Uzbek (Latin)", + "Uzbek (Latin, Uzbekistan)" : "Uzbek (Latin, Uzbekistan)", + "Uzbek" : "Uzbek", + "Vietnamese (Vietnam)" : "Vietnamese (Vietnam)", + "Vietnamese" : "Vietnamese", + "Vunjo (Tanzania)" : "Vunjo (Tanzania)", + "Vunjo" : "Vunjo", + "Welsh (United Kingdom)" : "Welsh (United Kingdom)", + "Welsh" : "Welsh", + "Yoruba (Nigeria)" : "Yoruba (Nigeria)", + "Yoruba" : "Yoruba", + "Zulu (South Africa)" : "Zulu (South Africa)", + "Zulu" : "Zulu", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "二要素認証はすべての\tユーザーと特定のグループに強制することができます。設定済みの二要素プロバイダーがない場合は、システムにログインできません。", + "Enforce two-factor authentication" : "二要素認証を強制する", + "Limit to groups" : "次のグループに制限", + "Enforcement of two-factor authentication can be set for certain groups only." : "二要素認証の強制は特定のグループのみに設定できます。", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "二要素認証はすべての\t次のグループのメンバーに強制されています。", + "Enforced groups" : "適用されたグループ", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "次のグループのメンバーの場合、二要素認証は強制されません。", + "Excluded groups" : "除外されたグループ", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "グループが選択または除外されると、ユーザーが2FAを適用しているかどうかを判断するために次のロジックが使用されます。グループが選択されていない場合、除外グループのメンバーを除くすべてのユーザーに対して2FAが有効になります。グループが選択されている場合は、2FAは、これらのすべてのメンバーのために有効になっています。 ユーザーが選択されたグループと除外されたグループの両方にいる場合は、選択されたグループが優先され、2FAが適用されます。", + "Save changes" : "変更を保存", + "Marked for remote wipe" : "リモートワイプ用にマーク", + "Device settings" : "デバイスの設定", + "Allow filesystem access" : "ファイルシステムへのアクセスを許可", + "Rename" : "名前を変更", + "Revoke" : "取り消す", + "Wipe device" : "デバイスをワイプ", + "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "ワイプが開始されていない場合、このトークンを無効にすると端末のワイプが無効になる可能性があります。", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Android用Google Chrome", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Nextcloud iOSアプリ", + "Nextcloud Android app" : "Nextcloud Android アプリ", + "Nextcloud Talk for iOS" : "iOS用Nextcloud Talk", + "Nextcloud Talk for Android" : "Android用Nextcloud Talk", + "Sync client - {os}" : "同期用クライアント - {os}", + "This session" : "本セッション", + "Device" : "デバイス", + "Last activity" : "最後の活動", + "Devices & sessions" : "デバイスとセッション", + "Web, desktop and mobile clients currently logged in to your account." : "現在、Web、デスクトップ、モバイルアプリであなたのアカウントにログインしている端末一覧です。", + "Do you really want to wipe your data from this device?" : "本当にこの端末からデータを消去しますか?", + "Confirm wipe" : "ワイプ確認", + "Error while creating device token" : "デバイストークンの作成中にエラーが発生しました", + "Error while updating device token scope" : "デバイストークンのスコープ更新中にエラーが発生しました", + "Error while updating device token name" : "デバイストークン名の更新中にエラーが発生しました", + "Error while deleting the token" : "トークンの削除中にエラーが発生しました", + "Error while wiping the device with the token" : "トークンによる端末のワイプ中にエラーが発生しました", + "App name" : "アプリ名", + "Create new app password" : "新しいアプリパスワードを作成", + "Use the credentials below to configure your app or device." : "アプリや端末を設定するのに以下の認証情報を使用する。", + "For security reasons this password will only be shown once." : "セキュリティ上の理由から、このパスワードは一度しか表示されません。", + "Username" : "ユーザーID", + "Password" : "パスワード", + "Done" : "完了", + "Show QR code for mobile apps" : "モバイルアプリのQRコードを表示する", + "Copied!" : "コピーしました!", + "Copy" : "コピー", + "Could not copy app password. Please copy it manually." : "アプリのパスワードをコピーできませんでした。 手動でコピーしてください。", + "This app is supported via your current Nextcloud subscription." : "このアプリは、現行のNextcloudサブスクリプションでサポートされています。", + "Supported" : "サポート", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "公式アプリは Nextcloud コミュニティにより開発されています。公式アプリは Nextcloud の中心的な機能を提供し、製品として可能です。", + "Official" : "公式", + "by" : "by", + "Update to {version}" : "{version} にアップデート", + "Remove" : "削除", + "Disable" : "無効にする", + "All" : "すべて", + "Limit app usage to groups" : "アプリの使用をグループに制限する", + "No results" : "該当なし", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "このアプリは Nextcloud の最小バージョンが指定されていません.将来、エラーが発生する可能性があります.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "このアプリは Nextcloud バージョンの上限が指定されていません.将来、エラーが発生する可能性があります.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "次の依存関係が満たされないためこのアプリをインストールできません:", + "View in store" : "ストア内で表示", + "Visit website" : "ウェブサイトを表示", + "Report a bug" : "バグを報告", + "User documentation" : "ユーザードキュメント", + "Admin documentation" : "管理者ドキュメント", + "Developer documentation" : "開発者ドキュメント", + "Update to {update}" : "{update} にアップデート", + "Results from other categories" : "他のカテゴリからの結果", + "No apps found for your version" : "現在のバージョンに対応するアプリはありません", + "Disable all" : "すべて無効にする", + "Enable all" : "すべて有効にする", + "Download and enable" : "ダウンロードして有効にする", + "Enable" : "有効にする", + "Enable untested app" : "未テストのアプリを有効にする", + "The app will be downloaded from the app store" : "このアプリは、アプリストアからダウンロードできます。", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "このアプリはあなたのNextcloudのバージョンと互換性があるとしてマークされていません。 続行しても、アプリをインストールすることはできます。 アプリが期待通りに動作しない可能性があることに注意してください。", + "You do not have permissions to see the details of this user" : "このユーザーの詳細を表示する権限がありません", + "The backend does not support changing the display name" : "バックエンドは表示名の変更をサポートしていません", + "New password" : "新しいパスワード", + "Add user in group" : "グループにユーザーを追加", + "Set user as admin for" : "ユーザーを管理者に設定します", + "Select user quota" : "ユーザークオータを選択", + "No language set" : "言語設定なし", + "Never" : "なし", + "Delete user" : "ユーザーを削除", + "Wipe all devices" : "すべての端末をワイプ", + "Disable user" : "ユーザーを無効", + "Enable user" : "ユーザーを有効", + "Resend welcome email" : "ウェルカムメールを再送する", + "{size} used" : "{size} を使用中", + "Welcome mail sent!" : "ウェルカムメールを送信しました!", + "Display name" : "表示名", + "Email" : "メール", + "Group admin for" : "グループの管理者", + "Quota" : "クオータ", + "Language" : "言語", + "Storage location" : "データの保存場所", + "User backend" : "ユーザーバックエンド", + "Last login" : "最終ログイン", + "Will be autogenerated" : "自動生成されます", + "Default language" : "デフォルトの言語", + "Add a new user" : "新しいユーザーを追加", + "No users in here" : "ここにはユーザーがありません", + "Default quota" : "デフォルトのクオータ", + "Password change is disabled because the master key is disabled" : "マスターキーが無効になっているため、パスワードの変更は無効です", + "Common languages" : "共通言語", + "All languages" : "すべての言語", + "Your apps" : "あなたのアプリ", + "Active apps" : "アクティブなアプリ", + "Disabled apps" : "無効なアプリ", + "Updates" : "アップデート", + "App bundles" : "アプリバンドル", + "{license}-licensed" : "{license}-ライセンス", + "New user" : "新しいユーザー", + "Default quota:" : "デフォルトのクオータ:", + "Select default quota" : "デフォルトのクオータを選択", + "Show Languages" : "言語を表示", + "Show last login" : "最終ログインを表示", + "Show user backend" : "ユーザーバックエンドを表示", + "Show storage path" : "ストレージの場所を表示", + "You are about to remove the group {group}. The users will NOT be deleted." : "{group}グループを削除しようとしています。 ユーザーは削除されません。", + "Please confirm the group removal " : "グループの削除を確認してください", + "Remove group" : "グループを削除", + "Admins" : "管理者", + "Disabled users" : "無効なユーザー", + "Everyone" : "すべてのユーザー", + "Add group" : "グループを追加する", + "An error occured during the request. Unable to proceed." : "要求中にエラーが発生しました。 続行できません。", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "アプリは有効ですが、更新が必要です。5秒後に更新ページにリダイレクトします。", + "App update" : "アプリのアップデート", + "Error: This app can not be enabled because it makes the server unstable" : "エラー:このアプリは、サーバーを不安定にするため、有効にすることができません。", + "SSL Root Certificates" : "SSLルート証明書", + "Common Name" : "コモンネーム", + "Valid until" : "有効期限", + "Issued By" : "発行元", + "Valid until %s" : "%s まで有効", + "Import root certificate" : "ルート証明書をインポート", + "Administrator documentation" : "管理者ドキュメント", + "Documentation" : "ドキュメント", + "Forum" : "フォーラム", + "None" : "なし", + "Login" : "ログイン", + "Plain" : "平文", + "NT LAN Manager" : "NT LAN マネージャー", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "メールサーバー", + "Open documentation" : "ドキュメントを開く", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "パスワードのリセットや通知などのメールを送信できるよう、このサーバーを設定することが重要です。", + "Send mode" : "送信モード", + "Encryption" : "暗号化", + "Sendmail mode" : "Sendmailモード", + "From address" : "送信元アドレス", + "mail" : "mail", + "Authentication method" : "認証方法", + "Authentication required" : "認証を必要とする", + "Server address" : "サーバーアドレス", + "Port" : "ポート", + "Credentials" : "資格情報", + "SMTP Username" : "SMTPユーザー名", + "SMTP Password" : "SMTPパスワード", + "Test email settings" : "メール設定のテスト", + "Send email" : "メールを送信", + "Security & setup warnings" : "セキュリティ&セットアップ警告", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "サーバーのセキュリティとパフォーマンスにとって重要なことは、すべてが正確に設定されていることです。あなたの助けとなるよう、Nextcloudでは一部の自動チェックを行っています。詳細な情報は、リンク先のドキュメントを参照してください。", + "All checks passed." : "すべてのチェックに合格しました。", + "There are some errors regarding your setup." : "セットアップに関するいくつかのエラーがあります。", + "There are some warnings regarding your setup." : "セットアップに関して警告がいくつかあります。", + "Checking for system and security issues." : "システムおよびセキュリティの問題をチェックしています。", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">インストールガイド ↗</a>を再確認して、 <a href=\"%2$s\">ログ</a> にあるすべてのエラーや警告を確認してください。", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Nextcloudのセキュリティは、<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">セキュリティスキャン ↗</a>でチェックしてください。", + "Version" : "バージョン", + "Two-Factor Authentication" : "二要素認証", + "Server-side encryption" : "サーバーサイド暗号化", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "サーバーサイド暗号化では、このサーバーにアップロードされるファイルを暗号化することができます。この設定を行うとパフォーマンス劣化のような制限を伴いますので、必要な場合のみ有効にしてください。", + "Enable server-side encryption" : "サーバーサイド暗号化を有効にする", + "Please read carefully before activating server-side encryption: " : "サーバーサイド暗号化を有効にする前によく読んでください:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "いったん暗号化を有効にすると、この時点からサーバーにアップロードされるすべてのファイルが暗号化されサーバー上に入ります。有効化された暗号モジュールは復号化機能をサポートしますが、すべての前提条件が満たされている(例えば、回復キーが設定されている)場合にのみ、後日暗号化を無効にできます。", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "暗号化だけで、システムのセキュリティが保証されるわけではありません。暗号化アプリがどのように動作するかの詳細な情報や、サポートされているユースケースについては、Nextcloud のドキュメントを参照してください。", + "Be aware that encryption always increases the file size." : "暗号化は、常にファイルサイズが増加することに注意してください。", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "暗号化した場合には必ず、あなたのデータと共に暗号化キーをバックアップすることを確認し、定期的にデータをバックアップを作成することをお勧めします。", + "This is the final warning: Do you really want to enable encryption?" : "これが最後の警告です:本当に暗号化を有効にしますか?", + "Enable encryption" : "暗号化を有効にする", + "No encryption module loaded, please enable an encryption module in the app menu." : "暗号化モジュールがロードされていません。アプリのメニューから暗号化モジュールを有効化してください。", + "Select default encryption module:" : "デフォルトの暗号化モジュールを選択:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "古い暗号化(ownCloud <= 8.0) から新しいものに暗号化キーを移行する必要があります。\"デフォルトの暗号化モジュール\" を有効にして 'occ encryption:migrate' を実行してください。", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "古い暗号化(ownCloud <= 8.0) から新しいものに暗号化キーを移行する必要があります。", + "Start migration" : "移行を開始", + "Background jobs" : "バックグラウンドジョブ", + "Last job ran %s." : "最終ジョブ実行: %s", + "Last job execution ran %s. Something seems wrong." : "最終ジョブ実行は %s です。何か問題が発生しています。", + "Background job didn’t run yet!" : "バックグラウンドジョブは実行されていません", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "最適なパフォーマンスにするには、バックグラウンドジョブを正確に設定することが重要です。大規模なインスタンスでは、'Cron'がお薦めの設定です。詳細な情報は、ドキュメントを参照してください。", + "Pick background job setting" : "バックグラウンドジョブ設定を選択", + "Execute one task with each page loaded" : "各ページの読み込み時にタスクを実行します。", + "The cron.php needs to be executed by the system user \"%s\"." : "cron.php はシステムユーザー \"%s\" で実行する必要があります。", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "これを実行するにはPHPのposix拡張が必要です。詳細については、{linkstart} PHPドキュメント{linkend}を参照してください。", + "Sharing" : "共有", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "管理者であれば共有時の挙動を微調整できます。詳細な情報はドキュメントを参照してください。", + "Allow apps to use the Share API" : "アプリからの共有APIの利用を許可する", + "Allow users to share via link" : "URLリンクでの共有を許可する", + "Allow public uploads" : "パブリックなアップロードを許可する", + "Always ask for a password" : "常にパスワードをたずねる", + "Enforce password protection" : "常にパスワード保護を有効にする", + "Set default expiration date" : "有効期限のデフォルト値を設定する", + "Expire after " : "無効になるまで", + "days" : "日", + "Enforce expiration date" : "有効期限を反映させる", + "Allow resharing" : "再共有を許可する", + "Allow sharing with groups" : "グループ共有を許可する", + "Restrict users to only share with users in their groups" : "グループ内のユーザーでのみ共有するように制限する", + "Exclude groups from sharing" : "共有可能なグループから除外する", + "These groups will still be able to receive shares, but not to initiate them." : "このグループでは、フォルダー共有を開始することはできませんが、共有されたフォルダーを参照することはできます。", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "共有ダイアログ中でユーザー名の自動補完を許可する。この設定が無効の場合、完全なユーザー名またはメールアドレスを入力する必要があります。", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "公開リンクのアップロードページに免責事項のテキストを表示する。 (ファイルリストが非表示のときのみ表示します)", + "This text will be shown on the public link upload page when the file list is hidden." : "このテキストは、ファイルリストが非表示になっているときに公開リンクのアップロードページに表示されます。", + "Default share permissions" : "デフォルトの共有アクセス許可", + "Personal" : "個人", + "Administration" : "管理", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "{communityopen} Nextcloudコミュニティ{linkclose}によって開発された{githubopen}ソースコード{linkclose}は、{licenseopen} AGPL {linkclose}でライセンスされています。", + "Like our Facebook page" : "私たちのFacebookのページをイイネ!", + "Follow us on Twitter" : "Twitter でフォロー!", + "Follow us on Mastodon" : "Mastodonでフォロー", + "Check out our blog" : "私たちのブログを見てね!", + "Subscribe to our newsletter" : "ニュースレターを購読する!", + "Profile picture" : "プロフィール画像", + "Upload new" : "新たにアップロード", + "Select from Files" : "ファイルから選択", + "Remove image" : "画像を削除", + "png or jpg, max. 20 MB" : "pngまたはjpg。最大20MB", + "Picture provided by original account" : "オリジナルのアカウントで提供されている写真", + "Cancel" : "キャンセル", + "Choose as profile picture" : "プロファイル画像として選択", + "Details" : "詳細", + "You are a member of the following groups:" : "次のグループに所属:", + "You are using <strong>%s</strong>" : "<strong>%s</strong>を現在使用中です", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "<strong>%1$s</strong> / <strong>%2$s</strong> (<strong>%3$s %%</strong>) 使用中", + "Full name" : "氏名", + "No display name set" : "表示名が未設定", + "Your email address" : "あなたのメールアドレス", + "No email address set" : "メールアドレスが設定されていません", + "For password reset and notifications" : "パスワードリセットと通知用", + "Phone number" : "電話番号", + "Your phone number" : "あなたの電話番号", + "Address" : "住所", + "Your postal address" : "あなたの住所", + "Website" : "ウェブサイト", + "It can take up to 24 hours before the account is displayed as verified." : "アカウントが確認済みとして表示されるまでには最大24時間かかることがあります。", + "Link https://…" : "リンク https://...", + "Twitter" : "Twitter", + "Twitter handle @…" : "あなたのTwitter ID @...", + "Help translate" : "翻訳に協力する", + "Locale" : "ロケール", + "Current password" : "現在のパスワード", + "Change password" : "パスワードを変更", + "Use a second factor besides your password to increase security for your account." : "アカウントのセキュリティを強化するには、パスワード以外に2番目の要素を使用してください。", + "Disconnect" : "切断", + "Not supported!" : "未対応", + "Press ⌘-C to copy." : "⌘-C でコピーします。", + "Press Ctrl-C to copy." : "Ctrl-Cを押してコピーします。", + "Error while loading browser sessions and device tokens" : "ブラウザーセッションとデバイストークンの読み込み中にエラーが発生しました", + "Store credentials" : "資格情報を保存", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.phpは、HTTP経由で15分ごとにcron.phpを実行するようwebcronサービスに登録されます。", + "Use system cron service to call the cron.php file every 15 minutes." : "システムのcronサービスを利用して、15分間隔でcron.phpファイルを実行します。", + "Follow us on Google+" : "Google+でフォロー!" +},"pluralForm" :"nplurals=1; plural=0;" +} \ No newline at end of file diff --git a/apps/settings/l10n/ka_GE.js b/apps/settings/l10n/ka_GE.js new file mode 100644 index 00000000000..7b66c6aa5ba --- /dev/null +++ b/apps/settings/l10n/ka_GE.js @@ -0,0 +1,261 @@ +OC.L10N.register( + "settings", + { + "{actor} changed your password" : "{actor} მომხმარებელმა შეცვალა თქვენი პაროლი", + "You changed your password" : "თქვენ შეცვალეთ თქვენი პაროლი", + "Your password was reset by an administrator" : "თქვენი პაროლი ადმინისტრატორმა აღადგინა", + "{actor} changed your email address" : "{actor} მომხმარებელმა შეცვალა თქვენი ელ-ფოსტის მისამართი", + "You changed your email address" : "თქვენ შეცვალეთ თქვენი ელ-ფოსტის მისამართი", + "Your email address was changed by an administrator" : "თქვენი ელ-ფოსტის მისამართი ადმინისტრატორის მიერ შეიცვალა", + "Security" : "უსაფრთხოება", + "You successfully logged in using two-factor authentication (%1$s)" : "თქვენ ორ-ფაქტორიანი აუტენტიფიკაციით წარმატებით გაიარეთ ავტორიზაცია (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "ავტორიზაცია ორ-ფაქტორიანი აუტენტიფიკაციით ვერ მოხერხდა (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "<strong>თქვენი პაროლი</strong> ან <strong>ელ-ფოსტის მისამართი</strong> შეიცვალა", + "Couldn't remove app." : "აპლიკაციის წაშლა ვერ მოხერხდა.", + "Couldn't update app." : "აპლიკაციის განახლება ვერ მოხერხდა.", + "Wrong password" : "არასწორი პაროლი", + "Saved" : "დამახსოვრდა", + "No user supplied" : "მომხმარებელი არ იქნა მოწოდებული", + "Unable to change password" : "პაროლის ცვილება შეუძლებელია", + "Authentication error" : "აუტენტიფიკაციის შეცდომა", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "გთხოვთ მოგვაწოდოთ ადმინისტრატორის აღდგენის პაროლი; სხვა შემთხვევაში ყველა მონაცემი დაიკარგება.", + "Wrong admin recovery password. Please check the password and try again." : "ადმინისტრატორის აღდგენის არასწორი პაროლი. გთხოვთ გადაამოწმოთ პაროლი და სცადოთ ახლიდან.", + "Backend doesn't support password change, but the user's encryption key was updated." : "ბექენდს არ აქვს პაროლის ცვლილების მხარდაჭერა, თუმცა მომხმარებლის შიფრაციის გასაღები განახლდა.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "აპლიკაციების app store-იდან დაყენება და განახლება ან ფედერალური ქლაუდ გაზიარება", + "Federated Cloud Sharing" : "ფედერალური ქლაუდ გაზიარება", + "Invalid SMTP password." : "არასწორი SMTP პაროლი.", + "Email setting test" : "ელ-ფოსტის დაყენების შემოწმება", + "Well done, %s!" : "ყველაფერი კარგადაა, %s!", + "If you received this email, the email configuration seems to be correct." : "იმ შემთხვევაში თუ მიიღეთ ეს ელ-წერილი, ელ-ფოსტის კონფიგურაცია კარგად უნდა იყოს.", + "Email could not be sent. Check your mail server log" : "ელ-წერილი ვერ იგზავნება. გთხოვთ შეამოწმოთ მეილ-სერვერის ლოგი", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "ელ-წერილის გაგზავნისას წარმოიშვა შეცდომა. გთხოვთ გადახედოთ თქვენს პარამეტრებს. (შეცდომა: %s)", + "You need to set your user email before being able to send test emails." : "შემოწმების წერილების გაგზავნამდე, უნდა დააყენოთ თქვენი მომხმარებლის ელ-ფოსტა.", + "Invalid mail address" : "არასწორი საფოსტო მისამართი", + "Settings saved" : "პარამეტრები შენახულია", + "Unable to change full name" : "სრული სახელის ცვლილება ვერ ხერხდება", + "Unable to change email address" : "ელ-ფოსტის მისამართი ვერ იცვლება", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "თქვენი Twitter-ის ანგარიშის დასამოწმებლად, Twitter-ზე დაპოსტეთ შემდეგი (მიაქციათ ყურადღება რომ პოსტავთ ხაზის წყვეტის გარეშე): ", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "თქვენი საიტის დასამოწმებლად, შემდეგი მოცულობა მოათავსეთ web-root-ში '.well-known/CloudIdVerificationCode.txt' ადგილას (დარწმუნდით რომ მთელი ტექსტი ერთ ხაზზეა): ", + "%1$s changed your password on %2$s." : "%1$s მომხმარებელმა თქვენი პაროლი შეცვალა %2$s-ზე.", + "Your password on %s was changed." : "თქვენი პაროლი %s-ზე შეიცვალა.", + "Your password on %s was reset by an administrator." : "თქვენი პაროლი %s-ზე ადმინისტრატორმა აღადგინა.", + "Password for %1$s changed on %2$s" : "პაროლი %1$s-სთვის შეიცვალა %2$s-ზე", + "Password changed for %s" : "პაროლი %s-სთვის შეიცვალა", + "If you did not request this, please contact an administrator." : "თუ ეს არ მოგითხოვიათ, მიმართეთ ადმინისტრატორს", + "Your email address on %s was changed." : "თქვენი ელ-ფოსტის მისამართი %s-ზე შეიცვალა.", + "Your email address on %s was changed by an administrator." : "თქვენი ელ-ფოსტის მისამართი %s-ზე ადმინისტრატორმა შეცვალა.", + "Email address for %1$s changed on %2$s" : "ელ-ფოსტის მისამართი %1$s-სთვის შეიცვალა %2$s-ზე", + "Email address changed for %s" : "ელ-ფოსტის მისამართი %s-სთვის შეიცვალა", + "The new email address is %s" : "ახალი ელ-ფოსტის მისამართია %s", + "Your %s account was created" : "თქვენი %s ანგარიში შექმნილია", + "Welcome aboard" : "კეთილი იყოს თქვენი ბორტზე მობრძანება", + "Welcome aboard %s" : "%s, კეთილი იყოს თქვენი ბორტზე მობრძანება", + "Welcome to your %s account, you can add, protect, and share your data." : "კეთილი იყოს თქვენი %s ანგარიშში მობრძანება, შეგიძლიათ დაამატოთ, დაიცვათ და გააზიაროთ თქვენი მონაცემები.", + "Your username is: %s" : "თქვენი მომხმარებლის სახელია: %s", + "Set your password" : "დააყენეთ თქვენი პაროლი", + "Go to %s" : "გადადით %s-ზე", + "Install Client" : "დააყენეთ კლიენტი", + "Delete" : "წაშლა", + "Unlimited" : "ულიმიტო", + "Verifying …" : "მოწმდება …", + "Verify" : "დამოწმება", + "Migration in progress. Please wait until the migration is finished" : "მიმდინარეობს მიგრაცია. გთხოვთ დაელოდოთ მიგრაციის დასრულებას", + "Migration started …" : "მიგრაცია დაიწყო …", + "Not saved" : "არაა შენახული", + "Sending…" : "იგზავნება…", + "Email sent" : "ელ-წერილი გაიგზავნა", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "წარმოიქმნა შეცდომა. გთხოვთ ატვირთოთ ASCII-თ კოდირებული PEM სერტიფიკატი.", + "Valid until {date}" : "ვარგისია {date}-მდე", + "Local" : "ლოკალური", + "Private" : "პირადი", + "Only visible to local users" : "გამოჩნდება მხოლოდ ლოკალურ მომხმარებლებთან", + "Only visible to you" : "გამოჩნდება მხოლოდ თქვენთან", + "Contacts" : "კონტაქტები", + "Visible to local users and to trusted servers" : "გამოჩნდება ლოკალურ მომხმარებლებთან და სანდო სერვერებთან", + "Public" : "ღია", + "Will be synced to a global and public address book" : "სინქრონიზაცია მოხდება გლობალურ და ღია მისამართების წიგნში", + "Very weak password" : "ძალიან სუსტი პაროლი", + "Weak password" : "სუსტი პაროლი", + "So-so password" : "ნორმალური პაროლი", + "Good password" : "კარგი პაროლი", + "Strong password" : "ძლიერი პაროლ", + "Select a profile picture" : "აირჩიეთ პროფილის სურათი", + "Groups" : "ჯგუფები", + "Limit to groups" : "ლიმიტი ჯგუფებზე", + "Allow filesystem access" : "ფაილ-სისტემაზე წვდომის მინიჭება", + "Revoke" : "წვდომის გაუქმება", + "Internet Explorer" : "Internet Explorer-ი", + "Edge" : "Edge-ი", + "Firefox" : "Firefox-ი", + "Google Chrome" : "Google Chrome-ი", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome Android-ისთვის", + "Sync client - {os}" : "სინქ. კლიენტი - {os}", + "This session" : "ეს სესია", + "Device" : "მოწყობილობა", + "Last activity" : "ბოლო აქტივობა", + "Web, desktop and mobile clients currently logged in to your account." : "ვებ, დესკტოპ და მობილური კლიენტები ამჟამად ავტორიზირებული თქვენს ანგარიშზე.", + "Error while creating device token" : "მოწყობილობის ტოკენის ჩატვირთვისას წარმოიქმნა შეცდომა", + "Error while deleting the token" : "ტოკენის წაშლისას წარმოიქმნა შეცდომა", + "App name" : "აპლიკაციის სახელი", + "Create new app password" : "ახალი აპლიკაციის პაროლის შექმნა", + "Use the credentials below to configure your app or device." : "ქვემოთ მოცემული უფლებამოსილებანის გამოყენება აპლიკაციისა თუ მოწყობილობისთვის.", + "For security reasons this password will only be shown once." : "უსაფრთხოების მიზნით ეს პაროლი გამოჩნდება მხოლოდ ერთხელ.", + "Username" : "მომხმარებლის სახელი", + "Password" : "პაროლი", + "Done" : "დასრულებულია", + "Copied!" : "კოპირებულია", + "Copy" : "კოპირება", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "ოფიციალური აპლიკაციები განვითარებულია და მოქცეულია ჩვენს საზოგადოებაში. ისინი გთავაზობენ ცენტრალურ ფუნქციონირებას და საწარმოო გამოყენებისათვის მზადყოფნაში არიან.", + "Official" : "ოფიციალური", + "Remove" : "წაშლა", + "Disable" : "გამორთვა", + "All" : "ყველა", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "ეს აპლიკაცია არ საზღვრავს Nextcloud-ის მინიმალურ ვერსიას. სამომავლოდ ეს ჩაითვლება შეცდომად.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "ეს აპლიკაცია არ საზღვრავს Nextcloud-ის მაქსიმალურ ვერსიას. სამომავლოდ ეს ჩაითვლება შეცდომად.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "ეს აპლიკაცია ვერ დაყენდა რადგან შემდეგი დამოკიდებულებები არაა დაკმაყოფილებული:", + "View in store" : "იხილეთ store-ში", + "Visit website" : "საიტზე სტუმრობა", + "Report a bug" : "განაცხადეთ შეცდომის შესახებ", + "User documentation" : "მომხმარებლის დოკუმენტაცია", + "Admin documentation" : "ადმინისტრატორის დოკუმენტაცია", + "Developer documentation" : "დეველოპერის დოკუმენტაცია", + "No apps found for your version" : "აპლიკაციები თქვენი ვერსიისთვის ვერ იქნა ნაპოვნი", + "Enable all" : "ყველას ამოქმედება", + "Enable" : "ჩართვა", + "The app will be downloaded from the app store" : "აპლიკაცია გადმოწერილ იქნება app store-იდან", + "New password" : "ახალი პაროლი", + "{size} used" : "მოხმარებულია {size}", + "Email" : "ელ-ფოსტა", + "Group admin for" : "ადმინისტრატორის შეჯგუფება", + "Quota" : "ქვოტა", + "Language" : "ენა", + "Storage location" : "საცავის ადგილმდებარეობა", + "User backend" : "მომხმარებელის ბექენდი", + "Last login" : "ბოლო ავტორიზაცია", + "Default quota" : "საწყისი კვოტა", + "Your apps" : "თქვენი აპლიკაციები", + "Disabled apps" : "არამოქმედი აპლიკაციები", + "Updates" : "განახლებები", + "App bundles" : "აპლიკაციის შეკვრები", + "Show last login" : "ბოლო ავტორიზაციის ჩვენება", + "Show user backend" : "მომხმარებლის ბექენდის ჩვენება", + "Admins" : "ადმინისტრატორები", + "Everyone" : "ყველა", + "Add group" : "ჯგუფის დამატება", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "აპლიკაცია ამოქმედდა, თუმცა საჭიროებს განახლებას. 5 წამში გადამისამართდებით განახლების გვერდზე.", + "App update" : "აპლიკაციის განახლება", + "Error: This app can not be enabled because it makes the server unstable" : "შეცდომა: ეს აპლიკაცია ვერ მოქმედდება რადგანაც სერვერს ხდის არასტაბილურს", + "SSL Root Certificates" : "SSL Root სერტიფიკატები", + "Common Name" : "საზოგადო სახელი", + "Valid until" : "ვარგისია", + "Issued By" : "განაცხადა", + "Valid until %s" : "ვარგისია %s-მდე", + "Import root certificate" : "Root სერტიფიკატის იმპორტი", + "Administrator documentation" : "ადმინისტრატორის დოკუმენტაცია", + "Forum" : "ფორუმი", + "None" : "არც ერთი", + "Login" : "ლოგინი", + "Plain" : "ჩვეულებრივი", + "NT LAN Manager" : "NT LAN მენეჯერი", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "საფოსტო სერვერი", + "Open documentation" : "ღია დოკუმენტაცია", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "ამ სერვერის მოწყობა ელ-წერილების გასაგზვნად მნიშვნელოვანია, მაგ. პაროლის აღსადგენად და შეტყობინებების მისაღებად.", + "Send mode" : "გაგზავნის რეჟიმი", + "Encryption" : "შიფრაცია", + "From address" : "მისამართიდან", + "mail" : "წერილი", + "Authentication method" : "აუტენტიფიკაციის მეთოდი", + "Authentication required" : "აუტენტიფიკაცია საჭიროებს", + "Server address" : "სერვერის მისამართი", + "Port" : "პორტი", + "Credentials" : "უფლებამოსილებანი", + "SMTP Username" : "SMTP მოხმარებლის სახელი", + "SMTP Password" : "SMTP მომხმარებლის პაროლი", + "Test email settings" : "ელ-ფოსტის პარამეტრების შემომება", + "Send email" : "ელ-წერილის გაგზავნა", + "Security & setup warnings" : "უსაფრთხოების და მოწყობის გაფრთხილებები", + "All checks passed." : "ყველა შემოწმებამ ჩაიარა დადებითად.", + "Version" : "ვერსია", + "Server-side encryption" : "სერვერული-მხარის შიფრაცია", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "სერვერული-მხარის შიფრაცია იძლევა სერვერზე ატვირთული ფაილების შიფრაციის საშუალებას. ეს ფუნქცია ლიმიტს აწესებს მოქმედებაზე, ასე რომ გააქტიურედ მხოლოდ აუცილებლობისას.", + "Enable server-side encryption" : "სერვერული-მხარის შიფრაციის ამოქმედება", + "Please read carefully before activating server-side encryption: " : "სანამ გააქტიურებთ სერვერული-მხარის შიფრაციას გთხოვთ ყურადღებით გაეცნოთ:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "შიფრაციის ჩართვის შემდეგ, სერვერზე ატვირთული ყველა ფაილი დაიშიფრება. იმ შემთხვევაში თუ აქტიური შიფრაციის მოდულს აქვს შიფრაციის დეაქტივაციის უნარი და ყველა წინაპირობა დაცულია (მაგ.: აღდგენის გასაღების დაყენება), სხვა დროს შეძლებთ მისი მოქმედების შეჩერებას.", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "მხოლოდ შიფრაცია არ იძლევა სისტემის უსაფრთხოების გარანტიას. მეტი ინფორმაციისთვის იმაზე თუ როგორ მუშაობს შიფრაციის აპლიკაცია იხილეთ დოკუმენტაცია და გაეცანით მოხმარების შემთხვევებს.", + "Be aware that encryption always increases the file size." : "იცოდეთ, შიფრაცია ყოველთვის ზრდის ფაილის ზომას.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "ყოველთვის კარგია თქვენი მონაცემების დაზღვევა, შიფრაციის შემთხვევაში თვენს მონაცემებთან ერთად აუცილებლად დააზღვიეთ შიფრაციის გასაღებებიც.", + "This is the final warning: Do you really want to enable encryption?" : "ეს ბოლო გაფრთხილებაა: ნამდვილად გსურთ შიფრაციის ამოქმედება?", + "Enable encryption" : "შიფრაციის ამოქმედება", + "No encryption module loaded, please enable an encryption module in the app menu." : "შიფრაციის მოდული არაა ჩატვირთული, გთხოვთ აამოქმედოთ ის აპლიკაციის მენიუდან. ", + "Select default encryption module:" : "აირჩიეთ შიფრაციის საწყისი მოდული:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "საჭიროა შიფრაციის გასაღებების მიგრაცია (ownCloud <= 8.0) ახალებზე. გთხოვთ აამოქმედოთ \"საწყისი მიგრაციის მოდული\" და გაუშვათ 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "საჭიროა შიფრაციის ძველი გასაღებების მიგრაცია (ownCloud <= 8.0) ახალებზე.", + "Start migration" : "მიგრაციის დაწყება", + "Background jobs" : "ფონური საქმეები", + "Last job ran %s." : "ბოლო საქმის გაშვება - %s.", + "Last job execution ran %s. Something seems wrong." : "ბოლო საქმე გაიშვა %s. რაღაც არასწორია.", + "Background job didn’t run yet!" : "ფონური საქმე ჯერ არ გაშვებულა!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "ოპტიმალური მოღვაწეობისთვის მნიშვნელოვანია ფონური საქმეების სწორი კონფიგურაცია. დიდი ინსტანციებისთვის 'კრონი' რეკომენდირებული არჩევანია. გთხოვთ მეტი ინფორმაციისთვის იხილოთ დოკუმენტაცია.", + "Execute one task with each page loaded" : "გაუშვი თითო მოქმედება ყველა ჩატვირთულ გვერდზე", + "The cron.php needs to be executed by the system user \"%s\"." : "cron.php უნდა გაუშვას სისტემურმა მოხმარებელმა \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "ამის გასაშვებად საჭიროა გქონდეთ PHP POSIX გაფართოება. მეტი დეტალებისთვის იხილეთ {linkstart}PHP დოკუმენტაცია{linkend}. ", + "Sharing" : "გაზიარება", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "როგორც ადმინისტრატორს შეგიძლიათ გაზიარების ქცევის კორექტირება. დამატებითი ინფორმაციისთვის იხილეთ დოკუმენტაცია.", + "Allow apps to use the Share API" : "დაუშვი აპლიკაციების უფლება Share API –ზე", + "Allow users to share via link" : "მიეცით მოხმარებლებს ბმულით გაზიარების უფლება", + "Allow public uploads" : "საქვეყნო ატვირთების დაშვება", + "Always ask for a password" : "ყოველთვის მოხდეს პაროლის მოთხოვნა", + "Enforce password protection" : "პროლით დაცვის იძულება", + "Set default expiration date" : "დააყენეთ საწყისი ვადის ამოწურვის თარიღი", + "Expire after " : "ვადის ამოწურვა", + "days" : "დღე", + "Enforce expiration date" : "ვადის ამოწურვის თარიღის იძულება", + "Allow resharing" : "ხელახალი გაზიარების დაშვება", + "Allow sharing with groups" : "ჯგუფებთან გაზიარების მხარდაჭერა", + "Restrict users to only share with users in their groups" : "შეზღუდეთ მომხმარებლები გააზიარონ მომხმარებლებთან, რომლებიც მიეკუთვნებიან მათ ჯგუფებს", + "Exclude groups from sharing" : "აკრძალეთ ჯგუფების გაზიარება", + "These groups will still be able to receive shares, but not to initiate them." : "ეს ჯგუფები ისევ მიიღებენ გაზიარებებს, მაგრამ ვერ წამოიწყებენ მათ.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "მიეცით მომხმარებლებს ავტოდასრულების უფლება გაზიარების დიალოგებში. იმ შემთხვევაში თუ ეს ფუნქცია არაა მოქმედი, საჭირო იქნება სრული მომხმარებლის სახელის ან ელ-ფოსტის მისამართის შეყვანა.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "პასუხისმგებლობის შეზღუდვის ტექსტის ჩვენება ღია ბმულის ატვირთვის გვერდზე. (ჩანს მხოლოდ მაშინ, როდესაც ფაილების სია დამალულია.)", + "This text will be shown on the public link upload page when the file list is hidden." : "ეს ტექსტი გამოჩნდება ღია ბმულის ატვირთვის გვერდზე, როდესაც ფაილების სია დამალულია.", + "Default share permissions" : "საწყისი გაზიარების პარამეტრები", + "Personal" : "პირადი", + "Administration" : "ადმინისტრაცია", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "განავითარა {communityopen}Nextcloud საზოგადოებამ{linkclose}, {githubopen}კოდი{linkclose} is ლიცენზირებულია {licenseopen}AGPL ლიცენზიით{linkclose}.", + "Like our Facebook page" : "მოიწონეთ ჩვენი Facebook გვერდი", + "Follow us on Twitter" : "გამოგვყევით Twitter-ზე", + "Check out our blog" : "იხილეთ ჩვენი ბლოგი", + "Subscribe to our newsletter" : "გამოიწერეთ ჩვენი სიახლეები", + "Profile picture" : "პროფილის სურათი", + "Upload new" : "ახალი ატვირთვა", + "Select from Files" : "აირჩიეთ ფაილებიდან", + "Remove image" : "სურათის წაშლა", + "png or jpg, max. 20 MB" : "png ან jpg, მაქს. 20 მბ", + "Picture provided by original account" : "სურათი ორიგინალი ანგარიშიდან", + "Cancel" : "უარყოფა", + "Choose as profile picture" : "აირჩიეთ პროფილის სურათად", + "Full name" : "სრული სახელი", + "No display name set" : "დისპლეი სახელი არაა დაყენებული", + "Your email address" : "თქვენი ელ-ფოსტის მისამართი", + "No email address set" : "ელ-ფოსტის მისამართი არაა დაყენებული", + "For password reset and notifications" : "პაროლის აღდგენისთვის და შეტყობინებებისთვის", + "Phone number" : "ტელეფონის ნომერი", + "Your phone number" : "თქვენი ტელეფონის ნომერი", + "Address" : "მისამართი", + "Your postal address" : "თქვენი საფოსტო მისამართი", + "Website" : "ვებ-საიტი", + "It can take up to 24 hours before the account is displayed as verified." : "თქვენი ანგარიშის ვერიფიცირებულად გამოჩენამ შეიძლება გასტანოს 24 საათი.", + "Link https://…" : "ბმული https://…", + "Twitter" : "Twitter-ი", + "Twitter handle @…" : "Twitter @…", + "Help translate" : "თარგმნის დახმარება", + "Current password" : "მიმდინარე პაროლი", + "Change password" : "პაროლის შეცვლა", + "Store credentials" : "უფლებამოსილებანის შენახვა", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php რეგისტრირებულია ვებკრონის სერვისით რომ 15 წუთში ერთხელ HTTP-თი გაიშვას.", + "Use system cron service to call the cron.php file every 15 minutes." : "გამოიყენეთ სისტემის კრონი cron.php ფაილის გასაშვებად ყოველ 15 წუთში." +}, +"nplurals=2; plural=(n!=1);"); diff --git a/apps/settings/l10n/ka_GE.json b/apps/settings/l10n/ka_GE.json new file mode 100644 index 00000000000..e9283775a9c --- /dev/null +++ b/apps/settings/l10n/ka_GE.json @@ -0,0 +1,259 @@ +{ "translations": { + "{actor} changed your password" : "{actor} მომხმარებელმა შეცვალა თქვენი პაროლი", + "You changed your password" : "თქვენ შეცვალეთ თქვენი პაროლი", + "Your password was reset by an administrator" : "თქვენი პაროლი ადმინისტრატორმა აღადგინა", + "{actor} changed your email address" : "{actor} მომხმარებელმა შეცვალა თქვენი ელ-ფოსტის მისამართი", + "You changed your email address" : "თქვენ შეცვალეთ თქვენი ელ-ფოსტის მისამართი", + "Your email address was changed by an administrator" : "თქვენი ელ-ფოსტის მისამართი ადმინისტრატორის მიერ შეიცვალა", + "Security" : "უსაფრთხოება", + "You successfully logged in using two-factor authentication (%1$s)" : "თქვენ ორ-ფაქტორიანი აუტენტიფიკაციით წარმატებით გაიარეთ ავტორიზაცია (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "ავტორიზაცია ორ-ფაქტორიანი აუტენტიფიკაციით ვერ მოხერხდა (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "<strong>თქვენი პაროლი</strong> ან <strong>ელ-ფოსტის მისამართი</strong> შეიცვალა", + "Couldn't remove app." : "აპლიკაციის წაშლა ვერ მოხერხდა.", + "Couldn't update app." : "აპლიკაციის განახლება ვერ მოხერხდა.", + "Wrong password" : "არასწორი პაროლი", + "Saved" : "დამახსოვრდა", + "No user supplied" : "მომხმარებელი არ იქნა მოწოდებული", + "Unable to change password" : "პაროლის ცვილება შეუძლებელია", + "Authentication error" : "აუტენტიფიკაციის შეცდომა", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "გთხოვთ მოგვაწოდოთ ადმინისტრატორის აღდგენის პაროლი; სხვა შემთხვევაში ყველა მონაცემი დაიკარგება.", + "Wrong admin recovery password. Please check the password and try again." : "ადმინისტრატორის აღდგენის არასწორი პაროლი. გთხოვთ გადაამოწმოთ პაროლი და სცადოთ ახლიდან.", + "Backend doesn't support password change, but the user's encryption key was updated." : "ბექენდს არ აქვს პაროლის ცვლილების მხარდაჭერა, თუმცა მომხმარებლის შიფრაციის გასაღები განახლდა.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "აპლიკაციების app store-იდან დაყენება და განახლება ან ფედერალური ქლაუდ გაზიარება", + "Federated Cloud Sharing" : "ფედერალური ქლაუდ გაზიარება", + "Invalid SMTP password." : "არასწორი SMTP პაროლი.", + "Email setting test" : "ელ-ფოსტის დაყენების შემოწმება", + "Well done, %s!" : "ყველაფერი კარგადაა, %s!", + "If you received this email, the email configuration seems to be correct." : "იმ შემთხვევაში თუ მიიღეთ ეს ელ-წერილი, ელ-ფოსტის კონფიგურაცია კარგად უნდა იყოს.", + "Email could not be sent. Check your mail server log" : "ელ-წერილი ვერ იგზავნება. გთხოვთ შეამოწმოთ მეილ-სერვერის ლოგი", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "ელ-წერილის გაგზავნისას წარმოიშვა შეცდომა. გთხოვთ გადახედოთ თქვენს პარამეტრებს. (შეცდომა: %s)", + "You need to set your user email before being able to send test emails." : "შემოწმების წერილების გაგზავნამდე, უნდა დააყენოთ თქვენი მომხმარებლის ელ-ფოსტა.", + "Invalid mail address" : "არასწორი საფოსტო მისამართი", + "Settings saved" : "პარამეტრები შენახულია", + "Unable to change full name" : "სრული სახელის ცვლილება ვერ ხერხდება", + "Unable to change email address" : "ელ-ფოსტის მისამართი ვერ იცვლება", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "თქვენი Twitter-ის ანგარიშის დასამოწმებლად, Twitter-ზე დაპოსტეთ შემდეგი (მიაქციათ ყურადღება რომ პოსტავთ ხაზის წყვეტის გარეშე): ", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "თქვენი საიტის დასამოწმებლად, შემდეგი მოცულობა მოათავსეთ web-root-ში '.well-known/CloudIdVerificationCode.txt' ადგილას (დარწმუნდით რომ მთელი ტექსტი ერთ ხაზზეა): ", + "%1$s changed your password on %2$s." : "%1$s მომხმარებელმა თქვენი პაროლი შეცვალა %2$s-ზე.", + "Your password on %s was changed." : "თქვენი პაროლი %s-ზე შეიცვალა.", + "Your password on %s was reset by an administrator." : "თქვენი პაროლი %s-ზე ადმინისტრატორმა აღადგინა.", + "Password for %1$s changed on %2$s" : "პაროლი %1$s-სთვის შეიცვალა %2$s-ზე", + "Password changed for %s" : "პაროლი %s-სთვის შეიცვალა", + "If you did not request this, please contact an administrator." : "თუ ეს არ მოგითხოვიათ, მიმართეთ ადმინისტრატორს", + "Your email address on %s was changed." : "თქვენი ელ-ფოსტის მისამართი %s-ზე შეიცვალა.", + "Your email address on %s was changed by an administrator." : "თქვენი ელ-ფოსტის მისამართი %s-ზე ადმინისტრატორმა შეცვალა.", + "Email address for %1$s changed on %2$s" : "ელ-ფოსტის მისამართი %1$s-სთვის შეიცვალა %2$s-ზე", + "Email address changed for %s" : "ელ-ფოსტის მისამართი %s-სთვის შეიცვალა", + "The new email address is %s" : "ახალი ელ-ფოსტის მისამართია %s", + "Your %s account was created" : "თქვენი %s ანგარიში შექმნილია", + "Welcome aboard" : "კეთილი იყოს თქვენი ბორტზე მობრძანება", + "Welcome aboard %s" : "%s, კეთილი იყოს თქვენი ბორტზე მობრძანება", + "Welcome to your %s account, you can add, protect, and share your data." : "კეთილი იყოს თქვენი %s ანგარიშში მობრძანება, შეგიძლიათ დაამატოთ, დაიცვათ და გააზიაროთ თქვენი მონაცემები.", + "Your username is: %s" : "თქვენი მომხმარებლის სახელია: %s", + "Set your password" : "დააყენეთ თქვენი პაროლი", + "Go to %s" : "გადადით %s-ზე", + "Install Client" : "დააყენეთ კლიენტი", + "Delete" : "წაშლა", + "Unlimited" : "ულიმიტო", + "Verifying …" : "მოწმდება …", + "Verify" : "დამოწმება", + "Migration in progress. Please wait until the migration is finished" : "მიმდინარეობს მიგრაცია. გთხოვთ დაელოდოთ მიგრაციის დასრულებას", + "Migration started …" : "მიგრაცია დაიწყო …", + "Not saved" : "არაა შენახული", + "Sending…" : "იგზავნება…", + "Email sent" : "ელ-წერილი გაიგზავნა", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "წარმოიქმნა შეცდომა. გთხოვთ ატვირთოთ ASCII-თ კოდირებული PEM სერტიფიკატი.", + "Valid until {date}" : "ვარგისია {date}-მდე", + "Local" : "ლოკალური", + "Private" : "პირადი", + "Only visible to local users" : "გამოჩნდება მხოლოდ ლოკალურ მომხმარებლებთან", + "Only visible to you" : "გამოჩნდება მხოლოდ თქვენთან", + "Contacts" : "კონტაქტები", + "Visible to local users and to trusted servers" : "გამოჩნდება ლოკალურ მომხმარებლებთან და სანდო სერვერებთან", + "Public" : "ღია", + "Will be synced to a global and public address book" : "სინქრონიზაცია მოხდება გლობალურ და ღია მისამართების წიგნში", + "Very weak password" : "ძალიან სუსტი პაროლი", + "Weak password" : "სუსტი პაროლი", + "So-so password" : "ნორმალური პაროლი", + "Good password" : "კარგი პაროლი", + "Strong password" : "ძლიერი პაროლ", + "Select a profile picture" : "აირჩიეთ პროფილის სურათი", + "Groups" : "ჯგუფები", + "Limit to groups" : "ლიმიტი ჯგუფებზე", + "Allow filesystem access" : "ფაილ-სისტემაზე წვდომის მინიჭება", + "Revoke" : "წვდომის გაუქმება", + "Internet Explorer" : "Internet Explorer-ი", + "Edge" : "Edge-ი", + "Firefox" : "Firefox-ი", + "Google Chrome" : "Google Chrome-ი", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome Android-ისთვის", + "Sync client - {os}" : "სინქ. კლიენტი - {os}", + "This session" : "ეს სესია", + "Device" : "მოწყობილობა", + "Last activity" : "ბოლო აქტივობა", + "Web, desktop and mobile clients currently logged in to your account." : "ვებ, დესკტოპ და მობილური კლიენტები ამჟამად ავტორიზირებული თქვენს ანგარიშზე.", + "Error while creating device token" : "მოწყობილობის ტოკენის ჩატვირთვისას წარმოიქმნა შეცდომა", + "Error while deleting the token" : "ტოკენის წაშლისას წარმოიქმნა შეცდომა", + "App name" : "აპლიკაციის სახელი", + "Create new app password" : "ახალი აპლიკაციის პაროლის შექმნა", + "Use the credentials below to configure your app or device." : "ქვემოთ მოცემული უფლებამოსილებანის გამოყენება აპლიკაციისა თუ მოწყობილობისთვის.", + "For security reasons this password will only be shown once." : "უსაფრთხოების მიზნით ეს პაროლი გამოჩნდება მხოლოდ ერთხელ.", + "Username" : "მომხმარებლის სახელი", + "Password" : "პაროლი", + "Done" : "დასრულებულია", + "Copied!" : "კოპირებულია", + "Copy" : "კოპირება", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "ოფიციალური აპლიკაციები განვითარებულია და მოქცეულია ჩვენს საზოგადოებაში. ისინი გთავაზობენ ცენტრალურ ფუნქციონირებას და საწარმოო გამოყენებისათვის მზადყოფნაში არიან.", + "Official" : "ოფიციალური", + "Remove" : "წაშლა", + "Disable" : "გამორთვა", + "All" : "ყველა", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "ეს აპლიკაცია არ საზღვრავს Nextcloud-ის მინიმალურ ვერსიას. სამომავლოდ ეს ჩაითვლება შეცდომად.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "ეს აპლიკაცია არ საზღვრავს Nextcloud-ის მაქსიმალურ ვერსიას. სამომავლოდ ეს ჩაითვლება შეცდომად.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "ეს აპლიკაცია ვერ დაყენდა რადგან შემდეგი დამოკიდებულებები არაა დაკმაყოფილებული:", + "View in store" : "იხილეთ store-ში", + "Visit website" : "საიტზე სტუმრობა", + "Report a bug" : "განაცხადეთ შეცდომის შესახებ", + "User documentation" : "მომხმარებლის დოკუმენტაცია", + "Admin documentation" : "ადმინისტრატორის დოკუმენტაცია", + "Developer documentation" : "დეველოპერის დოკუმენტაცია", + "No apps found for your version" : "აპლიკაციები თქვენი ვერსიისთვის ვერ იქნა ნაპოვნი", + "Enable all" : "ყველას ამოქმედება", + "Enable" : "ჩართვა", + "The app will be downloaded from the app store" : "აპლიკაცია გადმოწერილ იქნება app store-იდან", + "New password" : "ახალი პაროლი", + "{size} used" : "მოხმარებულია {size}", + "Email" : "ელ-ფოსტა", + "Group admin for" : "ადმინისტრატორის შეჯგუფება", + "Quota" : "ქვოტა", + "Language" : "ენა", + "Storage location" : "საცავის ადგილმდებარეობა", + "User backend" : "მომხმარებელის ბექენდი", + "Last login" : "ბოლო ავტორიზაცია", + "Default quota" : "საწყისი კვოტა", + "Your apps" : "თქვენი აპლიკაციები", + "Disabled apps" : "არამოქმედი აპლიკაციები", + "Updates" : "განახლებები", + "App bundles" : "აპლიკაციის შეკვრები", + "Show last login" : "ბოლო ავტორიზაციის ჩვენება", + "Show user backend" : "მომხმარებლის ბექენდის ჩვენება", + "Admins" : "ადმინისტრატორები", + "Everyone" : "ყველა", + "Add group" : "ჯგუფის დამატება", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "აპლიკაცია ამოქმედდა, თუმცა საჭიროებს განახლებას. 5 წამში გადამისამართდებით განახლების გვერდზე.", + "App update" : "აპლიკაციის განახლება", + "Error: This app can not be enabled because it makes the server unstable" : "შეცდომა: ეს აპლიკაცია ვერ მოქმედდება რადგანაც სერვერს ხდის არასტაბილურს", + "SSL Root Certificates" : "SSL Root სერტიფიკატები", + "Common Name" : "საზოგადო სახელი", + "Valid until" : "ვარგისია", + "Issued By" : "განაცხადა", + "Valid until %s" : "ვარგისია %s-მდე", + "Import root certificate" : "Root სერტიფიკატის იმპორტი", + "Administrator documentation" : "ადმინისტრატორის დოკუმენტაცია", + "Forum" : "ფორუმი", + "None" : "არც ერთი", + "Login" : "ლოგინი", + "Plain" : "ჩვეულებრივი", + "NT LAN Manager" : "NT LAN მენეჯერი", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "საფოსტო სერვერი", + "Open documentation" : "ღია დოკუმენტაცია", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "ამ სერვერის მოწყობა ელ-წერილების გასაგზვნად მნიშვნელოვანია, მაგ. პაროლის აღსადგენად და შეტყობინებების მისაღებად.", + "Send mode" : "გაგზავნის რეჟიმი", + "Encryption" : "შიფრაცია", + "From address" : "მისამართიდან", + "mail" : "წერილი", + "Authentication method" : "აუტენტიფიკაციის მეთოდი", + "Authentication required" : "აუტენტიფიკაცია საჭიროებს", + "Server address" : "სერვერის მისამართი", + "Port" : "პორტი", + "Credentials" : "უფლებამოსილებანი", + "SMTP Username" : "SMTP მოხმარებლის სახელი", + "SMTP Password" : "SMTP მომხმარებლის პაროლი", + "Test email settings" : "ელ-ფოსტის პარამეტრების შემომება", + "Send email" : "ელ-წერილის გაგზავნა", + "Security & setup warnings" : "უსაფრთხოების და მოწყობის გაფრთხილებები", + "All checks passed." : "ყველა შემოწმებამ ჩაიარა დადებითად.", + "Version" : "ვერსია", + "Server-side encryption" : "სერვერული-მხარის შიფრაცია", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "სერვერული-მხარის შიფრაცია იძლევა სერვერზე ატვირთული ფაილების შიფრაციის საშუალებას. ეს ფუნქცია ლიმიტს აწესებს მოქმედებაზე, ასე რომ გააქტიურედ მხოლოდ აუცილებლობისას.", + "Enable server-side encryption" : "სერვერული-მხარის შიფრაციის ამოქმედება", + "Please read carefully before activating server-side encryption: " : "სანამ გააქტიურებთ სერვერული-მხარის შიფრაციას გთხოვთ ყურადღებით გაეცნოთ:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "შიფრაციის ჩართვის შემდეგ, სერვერზე ატვირთული ყველა ფაილი დაიშიფრება. იმ შემთხვევაში თუ აქტიური შიფრაციის მოდულს აქვს შიფრაციის დეაქტივაციის უნარი და ყველა წინაპირობა დაცულია (მაგ.: აღდგენის გასაღების დაყენება), სხვა დროს შეძლებთ მისი მოქმედების შეჩერებას.", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "მხოლოდ შიფრაცია არ იძლევა სისტემის უსაფრთხოების გარანტიას. მეტი ინფორმაციისთვის იმაზე თუ როგორ მუშაობს შიფრაციის აპლიკაცია იხილეთ დოკუმენტაცია და გაეცანით მოხმარების შემთხვევებს.", + "Be aware that encryption always increases the file size." : "იცოდეთ, შიფრაცია ყოველთვის ზრდის ფაილის ზომას.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "ყოველთვის კარგია თქვენი მონაცემების დაზღვევა, შიფრაციის შემთხვევაში თვენს მონაცემებთან ერთად აუცილებლად დააზღვიეთ შიფრაციის გასაღებებიც.", + "This is the final warning: Do you really want to enable encryption?" : "ეს ბოლო გაფრთხილებაა: ნამდვილად გსურთ შიფრაციის ამოქმედება?", + "Enable encryption" : "შიფრაციის ამოქმედება", + "No encryption module loaded, please enable an encryption module in the app menu." : "შიფრაციის მოდული არაა ჩატვირთული, გთხოვთ აამოქმედოთ ის აპლიკაციის მენიუდან. ", + "Select default encryption module:" : "აირჩიეთ შიფრაციის საწყისი მოდული:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "საჭიროა შიფრაციის გასაღებების მიგრაცია (ownCloud <= 8.0) ახალებზე. გთხოვთ აამოქმედოთ \"საწყისი მიგრაციის მოდული\" და გაუშვათ 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "საჭიროა შიფრაციის ძველი გასაღებების მიგრაცია (ownCloud <= 8.0) ახალებზე.", + "Start migration" : "მიგრაციის დაწყება", + "Background jobs" : "ფონური საქმეები", + "Last job ran %s." : "ბოლო საქმის გაშვება - %s.", + "Last job execution ran %s. Something seems wrong." : "ბოლო საქმე გაიშვა %s. რაღაც არასწორია.", + "Background job didn’t run yet!" : "ფონური საქმე ჯერ არ გაშვებულა!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "ოპტიმალური მოღვაწეობისთვის მნიშვნელოვანია ფონური საქმეების სწორი კონფიგურაცია. დიდი ინსტანციებისთვის 'კრონი' რეკომენდირებული არჩევანია. გთხოვთ მეტი ინფორმაციისთვის იხილოთ დოკუმენტაცია.", + "Execute one task with each page loaded" : "გაუშვი თითო მოქმედება ყველა ჩატვირთულ გვერდზე", + "The cron.php needs to be executed by the system user \"%s\"." : "cron.php უნდა გაუშვას სისტემურმა მოხმარებელმა \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "ამის გასაშვებად საჭიროა გქონდეთ PHP POSIX გაფართოება. მეტი დეტალებისთვის იხილეთ {linkstart}PHP დოკუმენტაცია{linkend}. ", + "Sharing" : "გაზიარება", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "როგორც ადმინისტრატორს შეგიძლიათ გაზიარების ქცევის კორექტირება. დამატებითი ინფორმაციისთვის იხილეთ დოკუმენტაცია.", + "Allow apps to use the Share API" : "დაუშვი აპლიკაციების უფლება Share API –ზე", + "Allow users to share via link" : "მიეცით მოხმარებლებს ბმულით გაზიარების უფლება", + "Allow public uploads" : "საქვეყნო ატვირთების დაშვება", + "Always ask for a password" : "ყოველთვის მოხდეს პაროლის მოთხოვნა", + "Enforce password protection" : "პროლით დაცვის იძულება", + "Set default expiration date" : "დააყენეთ საწყისი ვადის ამოწურვის თარიღი", + "Expire after " : "ვადის ამოწურვა", + "days" : "დღე", + "Enforce expiration date" : "ვადის ამოწურვის თარიღის იძულება", + "Allow resharing" : "ხელახალი გაზიარების დაშვება", + "Allow sharing with groups" : "ჯგუფებთან გაზიარების მხარდაჭერა", + "Restrict users to only share with users in their groups" : "შეზღუდეთ მომხმარებლები გააზიარონ მომხმარებლებთან, რომლებიც მიეკუთვნებიან მათ ჯგუფებს", + "Exclude groups from sharing" : "აკრძალეთ ჯგუფების გაზიარება", + "These groups will still be able to receive shares, but not to initiate them." : "ეს ჯგუფები ისევ მიიღებენ გაზიარებებს, მაგრამ ვერ წამოიწყებენ მათ.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "მიეცით მომხმარებლებს ავტოდასრულების უფლება გაზიარების დიალოგებში. იმ შემთხვევაში თუ ეს ფუნქცია არაა მოქმედი, საჭირო იქნება სრული მომხმარებლის სახელის ან ელ-ფოსტის მისამართის შეყვანა.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "პასუხისმგებლობის შეზღუდვის ტექსტის ჩვენება ღია ბმულის ატვირთვის გვერდზე. (ჩანს მხოლოდ მაშინ, როდესაც ფაილების სია დამალულია.)", + "This text will be shown on the public link upload page when the file list is hidden." : "ეს ტექსტი გამოჩნდება ღია ბმულის ატვირთვის გვერდზე, როდესაც ფაილების სია დამალულია.", + "Default share permissions" : "საწყისი გაზიარების პარამეტრები", + "Personal" : "პირადი", + "Administration" : "ადმინისტრაცია", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "განავითარა {communityopen}Nextcloud საზოგადოებამ{linkclose}, {githubopen}კოდი{linkclose} is ლიცენზირებულია {licenseopen}AGPL ლიცენზიით{linkclose}.", + "Like our Facebook page" : "მოიწონეთ ჩვენი Facebook გვერდი", + "Follow us on Twitter" : "გამოგვყევით Twitter-ზე", + "Check out our blog" : "იხილეთ ჩვენი ბლოგი", + "Subscribe to our newsletter" : "გამოიწერეთ ჩვენი სიახლეები", + "Profile picture" : "პროფილის სურათი", + "Upload new" : "ახალი ატვირთვა", + "Select from Files" : "აირჩიეთ ფაილებიდან", + "Remove image" : "სურათის წაშლა", + "png or jpg, max. 20 MB" : "png ან jpg, მაქს. 20 მბ", + "Picture provided by original account" : "სურათი ორიგინალი ანგარიშიდან", + "Cancel" : "უარყოფა", + "Choose as profile picture" : "აირჩიეთ პროფილის სურათად", + "Full name" : "სრული სახელი", + "No display name set" : "დისპლეი სახელი არაა დაყენებული", + "Your email address" : "თქვენი ელ-ფოსტის მისამართი", + "No email address set" : "ელ-ფოსტის მისამართი არაა დაყენებული", + "For password reset and notifications" : "პაროლის აღდგენისთვის და შეტყობინებებისთვის", + "Phone number" : "ტელეფონის ნომერი", + "Your phone number" : "თქვენი ტელეფონის ნომერი", + "Address" : "მისამართი", + "Your postal address" : "თქვენი საფოსტო მისამართი", + "Website" : "ვებ-საიტი", + "It can take up to 24 hours before the account is displayed as verified." : "თქვენი ანგარიშის ვერიფიცირებულად გამოჩენამ შეიძლება გასტანოს 24 საათი.", + "Link https://…" : "ბმული https://…", + "Twitter" : "Twitter-ი", + "Twitter handle @…" : "Twitter @…", + "Help translate" : "თარგმნის დახმარება", + "Current password" : "მიმდინარე პაროლი", + "Change password" : "პაროლის შეცვლა", + "Store credentials" : "უფლებამოსილებანის შენახვა", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php რეგისტრირებულია ვებკრონის სერვისით რომ 15 წუთში ერთხელ HTTP-თი გაიშვას.", + "Use system cron service to call the cron.php file every 15 minutes." : "გამოიყენეთ სისტემის კრონი cron.php ფაილის გასაშვებად ყოველ 15 წუთში." +},"pluralForm" :"nplurals=2; plural=(n!=1);" +} \ No newline at end of file diff --git a/apps/settings/l10n/ko.js b/apps/settings/l10n/ko.js new file mode 100644 index 00000000000..c2077594dd0 --- /dev/null +++ b/apps/settings/l10n/ko.js @@ -0,0 +1,333 @@ +OC.L10N.register( + "settings", + { + "{actor} added you to group {group}" : "{actor} 가 당신을 {group} 그룹에 추가했습니다.", + "You added {user} to group {group}" : "당신은 {user}를 {group} 그룹에 추가했습니다.", + "{actor} added {user} to group {group}" : "{actor} 가 {user}를 {group} 그룹에 추가했습니다.", + "An administrator added you to group {group}" : "관리자가 당신을 {group} 그룹에 추가했습니다.", + "An administrator added {user} to group {group}" : "관리자가 {user}를 {group} 그룹에 추가했습니다.", + "{actor} removed you from group {group}" : "{actor}가 당신을 {group} 그룹에서 삭제했습니다.", + "You removed {user} from group {group}" : "당신이 {user}를 {group} 그룹에서 삭제했습니다.", + "{actor} removed {user} from group {group}" : "{actor}가 {user}를 {group} 그룹에서 삭제했습니다.", + "An administrator removed you from group {group}" : "관리자가 당신을 {group} 그룹에서 삭제했습니다.", + "An administrator removed {user} from group {group}" : "관리자가 {user}를 {group} 그룹에서 삭제했습니다.", + "Your <strong>group memberships</strong> were modified" : "당신의 <strong>그룹 멤버십</strong>이 수정되었습니다.", + "{actor} changed your password" : "{actor} 님이 내 암호를 변경함", + "You changed your password" : "내 암호를 변경함", + "Your password was reset by an administrator" : "관리자가 내 암호를 초기화함", + "{actor} changed your email address" : "{actor} 님이 내 이메일 주소를 변경함", + "You changed your email address" : "내 이메일 주소를 변경함", + "Your email address was changed by an administrator" : "관리자가 내 이메일 주소를 변경함", + "You created app password \"{token}\"" : "앱 패스워드 \"{token}\"이 생성되었습니다.", + "You deleted app password \"{token}\"" : "앱 패스워드 \"{token}\"이 제거되었습니다.", + "You renamed app password \"{token}\" to \"{newToken}\"" : "앱 패스워드 \"{token}\"의 이름을 \"{newToken}\"으로 바꿨습니다.", + "Security" : "보안", + "You successfully logged in using two-factor authentication (%1$s)" : "2단계 인증으로 로그인함(%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "2단계 인증 시도가 실패함(%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "내 <strong>암호</strong> 및 <strong>이메일</strong>이 변경됨", + "Couldn't remove app." : "앱을 삭제할 수 없습니다.", + "Couldn't update app." : "앱을 업데이트할 수 없습니다.", + "Wrong password" : "잘못된 암호", + "Saved" : "저장됨", + "No user supplied" : "사용자가 지정되지 않음", + "Unable to change password" : "암호를 변경할 수 없음", + "Authentication error" : "인증 오류", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "관리자 복구 암호를 입력하십시오. 그렇지 않으면 모든 사용자 데이이터가 초기화됩니다다.", + "Wrong admin recovery password. Please check the password and try again." : "관리자 복구 암호가 잘못되었습니다. 암호를 다시 확인하십시오.", + "Backend doesn't support password change, but the user's encryption key was updated." : "백엔드에서 암호 변경을 지원하지 않지만 사용자의 암호화 키는 업데이트되었습니다.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "앱 스토어 및 연합 클라우드 공유로 앱 설치 및 업데이트", + "Federated Cloud Sharing" : "클라우드 연합 공유", + "Invalid SMTP password." : "SMTP 암호가 잘못되었습니다.", + "Email setting test" : "이메일 설정 시험", + "Well done, %s!" : "%s 님, 잘 하셨습니다!", + "If you received this email, the email configuration seems to be correct." : "이 이메일을 받으셨다면 이메일 설정이 올바릅니다.", + "Email could not be sent. Check your mail server log" : "이메일을 보낼 수 없습니다. 메일 서버 로그를 확인하십시오.", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "이메일을 보내는 중 오류가 발생했습니다. 설정을 확인하십시오.(오류: %s)", + "You need to set your user email before being able to send test emails." : "테스트 이메일을 보내기 전 내 주소를 설정해야 합니다.", + "Invalid mail address" : "잘못된 이메일 주소", + "Settings saved" : "설정 저장됨", + "Unable to change full name" : "전체 이름을 변경할 수 없음", + "Unable to change email address" : "이메일 주소를 변경할 수 없음", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "내 트위터 계정을 확인하려면 다음 트윗을 타임라인에 게시하십시오(줄바꿈을 추가하지 마십시오):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "내 웹 사이트를 확인하려면 다음 내용을 웹 사이트 루트 디렉터리의 '.well-known/CloudIdVerificationCode.txt' 파일에 게시하십시오(전체 텍스트가 한 줄에 들어가야 함):", + "%1$s changed your password on %2$s." : "%1$s 님이 내 암호를 %2$s에 변경했습니다.", + "Your password on %s was changed." : "내 %s 암호를 변경했습니다.", + "Your password on %s was reset by an administrator." : "관리자가 내 %s 암호를 초기화했습니다.", + "Password for %1$s changed on %2$s" : "%1$s의 암호를 %2$s에 변경함", + "Password changed for %s" : "%s의 암호 변경됨", + "If you did not request this, please contact an administrator." : "요청하지 않았다면 관리자에게 연락하십시오.", + "Your email address on %s was changed." : "내 %s 이메일 주소를 변경했습니다.", + "Your email address on %s was changed by an administrator." : "관리자가 내 %s 이메일 주소를 변경했습니다.", + "Email address for %1$s changed on %2$s" : "%1$s의 이메일 주소를 %2$s에 변경함", + "Email address changed for %s" : "%s의 이메일 주소 변경됨", + "The new email address is %s" : "새 이메일 주소는 %s입니다", + "Your %s account was created" : "%s 계정을 등록했습니다", + "Welcome aboard" : "환영합니다", + "Welcome aboard %s" : "%s 님, 환영합니다", + "Welcome to your %s account, you can add, protect, and share your data." : "%s 계정에 오신 것을 환영합니다. 데이터를 추가, 보호, 공유할 수 있습니다.", + "Your username is: %s" : "사용자 이름: %s", + "Set your password" : "내 암호 설정하기", + "Go to %s" : "%s(으)로 이동", + "Install Client" : "클라이언트 설치", + "Create" : "생성", + "Change" : "변경", + "Delete" : "삭제", + "Share" : "공유", + "Unlimited" : "무제한", + "Verifying" : "검사", + "Verifying …" : "확인 중 …", + "Verify" : "확인", + "Migration in progress. Please wait until the migration is finished" : "이전 작업 중입니다. 작업이 완료될 때까지 기다려 주십시오", + "Migration started …" : "이전 시작됨...", + "Not saved" : "저장하지 않음", + "Sending…" : "보내는 중…", + "Email sent" : "이메일 보냄", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "오류가 발생했습니다. ASCII로 인코딩된 PEM 인증서를 업로드하십시오.", + "Valid until {date}" : "{date}까지 유효함", + "Local" : "로컬", + "Private" : "개인", + "Only visible to local users" : "로컬 사용자만 보임", + "Only visible to you" : "나만 보임", + "Contacts" : "연락처", + "Visible to local users and to trusted servers" : "로컬 사용자와 신뢰된 서버에게 보이기", + "Public" : "공개", + "Will be synced to a global and public address book" : "공개 및 전역 주소록으로 동기화됨", + "Very weak password" : "매우 약한 암호", + "Weak password" : "약한 암호", + "So-so password" : "그저 그런 암호", + "Good password" : "좋은 암호", + "Strong password" : "강력한 암호", + "An error occurred while changing your language. Please reload the page and try again." : "언어를 변경하는 중 오류가 발생했습니다. 페이지를 새로 고친 후 다시 시도하십시오.", + "An error occurred while changing your locale. Please reload the page and try again." : "지역을 변경하는 중 오류가 발생했습니다. 페이지를 새로 고친 후 다시 시도하십시오.", + "Select a profile picture" : "프로필 사진 선택", + "Groups" : "그룹", + "Group list is empty" : "그룹 목록이 비었음", + "Unable to retrieve the group list" : "그룹 목록을 받아올 수 없음", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "2단계 인증을 모든 유저 또는 특정 그룹에 강제할 수 있습니다. 만약 대상자가 2단계 인증 공급자를 설정하지 않았다면, 대상자는 시스템에 접근할 수 없게 될 것입니다.", + "Enforce two-factor authentication" : "2단계 인증 강제하기", + "Limit to groups" : "그룹으로 제한", + "Enforcement of two-factor authentication can be set for certain groups only." : "2단계 인증 강제는 특정 그룹에게만 적용됩니다.", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "2단계 인증이 모든 멤버에게 강제된 그룹은\t다음과 같습니다.", + "Enforced groups" : "강제된 그룹", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "2단계 인증이 강제되지 않은 그룹은\t다음과 같습니다.", + "Excluded groups" : "제외된 그룹", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "그룹이 선택되거나 제외되었을 때, 다음과 같은 상황을 고려할 수 있습니다. 만약 2단계 인증이 강제되었고, 아무런 그룹이 선택되지 않았다면 제외된 그룹의 멤버를 제외하고 모든 유저에게 2단계 인증이 강제됩니다. 만약 그룹이 선택되었다면 그룹 안의 모든 멤버에게 2단계 인증이 강제됩니다. 만약 유저가 선택된 그룹과 제외된 그룹에 동시에 속해있다면, 선택된 그룹이 우선되며 2단계 인증이 강제됩니다.", + "Save changes" : "변경 사항 저장", + "Device settings" : "디바이스 설정", + "Allow filesystem access" : "파일시스템 접근 허용", + "Rename" : "이름 바꾸기", + "Revoke" : "취소", + "Wipe device" : "디바이스 지우기", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google 크롬", + "Safari" : "Safari", + "Google Chrome for Android" : "Android용 Google 크롬", + "Sync client - {os}" : "동기화 클라이언트 - {os}", + "This session" : "이 세션", + "Device" : "장치", + "Last activity" : "최근 활동", + "Web, desktop and mobile clients currently logged in to your account." : "사용자 계정으로 로그인된 웹, 데스크톱, 모바일 클라이언트 목록입니다.", + "Error while creating device token" : "장치 토큰을 만드는 중 오류가 발생했습니다", + "Error while deleting the token" : "토큰을 삭제하는 중 오류가 발생했습니다", + "App name" : "앱 이름", + "Create new app password" : "새로운 앱 암호 만들기", + "Use the credentials below to configure your app or device." : "앱 또는 장치를 구성하는 아래의 자격 증명을 사용합니다.", + "For security reasons this password will only be shown once." : "보안상의 이유로 이 암호는 한 번만 표시됩니다.", + "Username" : "사용자 이름", + "Password" : "암호", + "Done" : "완료", + "Copied!" : "복사 성공!", + "Copy" : "복사", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "커뮤니티가 개발한 공식 앱입니다. 이 앱은 Nextcloud의 핵심 기능이며 프로덕션 환경에서 사용할 수 있습니다.", + "Official" : "공식", + "Remove" : "삭제", + "Disable" : "사용 안함", + "All" : "모두", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "이 앱은 Nextcloud 최소 버전을 지정하지 않았습니다. 차후 버전에서는 오류로 처리됩니다.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "이 앱은 Nextcloud 최대 버전을 지정하지 않았습니다. 차후 버전에서는 오류로 처리됩니다.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "다음 의존성을 만족할 수 없기 때문에 이 앱을 설치할 수 없습니다:", + "View in store" : "스토어에서 보기", + "Visit website" : "웹 사이트 방문", + "Report a bug" : "버그 신고", + "User documentation" : "사용자 문서", + "Admin documentation" : "관리 문서", + "Developer documentation" : "개발자 문서", + "No apps found for your version" : "설치된 버전에 대한 앱 없음", + "Enable all" : "모두 활성화", + "Enable" : "사용함", + "The app will be downloaded from the app store" : "이 앱을 앱 스토어에서 다운로드합니다", + "New password" : "새 암호", + "Never" : "하지 않음", + "Delete user" : "유저 지우기", + "Disable user" : "유저 비활성화하기", + "Enable user" : "유저 활성화하기", + "Resend welcome email" : "환영 메일 다시 보내기", + "{size} used" : "{size} 사용됨", + "Welcome mail sent!" : "환영 메일을 보냈습니다!", + "Display name" : "표시 이름", + "Email" : "이메일", + "Group admin for" : "다음 그룹의 관리자:", + "Quota" : "할당량", + "Language" : "언어", + "Storage location" : "저장소 위치", + "User backend" : "사용자 백엔드", + "Last login" : "마지막 로그인", + "Default language" : "기본 언어", + "Add a new user" : "새 사용자 추가", + "No users in here" : "사용자가 이곳에 없습니다.", + "Default quota" : "기본 할당량", + "All languages" : "모든 언어", + "Your apps" : "내 앱", + "Active apps" : "활성화된 앱", + "Disabled apps" : "비활성화된 앱", + "Updates" : "업데이트", + "App bundles" : "앱 번들", + "New user" : "새 사용자", + "Default quota:" : "기본 할당량:", + "Select default quota" : "기본 할당량 설정", + "Show Languages" : "언어 보이기", + "Show last login" : "마지막 로그인 보이기", + "Show user backend" : "사용자 백엔드 보이기", + "Show storage path" : "스토리지 경로 보이기", + "You are about to remove the group {group}. The users will NOT be deleted." : "당신은 {group} 그룹을 지우려고 합니다. 그룹의 사용자들은 삭제되지 않습니다.", + "Please confirm the group removal " : "그룹 지우기를 확인해주세요.", + "Remove group" : "그룹 지우기", + "Admins" : "관리자", + "Disabled users" : "비활성화된 유저", + "Everyone" : "모두", + "Add group" : "그룹 추가", + "An error occured during the request. Unable to proceed." : "요청을 보내는 도중 에러가 발생하였습니다. 더 이상 진행할 수 없습니다.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "앱이 활성화되었지만, 앱을 업데이트해야 합니다. 5초 후 앱 업데이트 페이지로 넘어갑니다.", + "App update" : "앱 업데이트", + "Error: This app can not be enabled because it makes the server unstable" : "오류: 이 앱은 서버를 불안정하게 만들 수 있어서 활성화할 수 없습니다", + "SSL Root Certificates" : "SSL 루트 인증서", + "Common Name" : "공통 이름", + "Valid until" : "만료 기간:", + "Issued By" : "발급자:", + "Valid until %s" : "%s까지 유효함", + "Import root certificate" : "루트 인증서 가져오기", + "Administrator documentation" : "관리자 문서", + "Documentation" : "문서", + "Forum" : "포럼", + "None" : "없음", + "Login" : "로그인", + "Plain" : "일반", + "NT LAN Manager" : "NT LAN 관리자", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "이메일 서버", + "Open documentation" : "문서 열기", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "암호 초기화 및 알림 이메일을 보내려면 이메일 서버를 설정해야 합니다.", + "Send mode" : "보내기 모드", + "Encryption" : "암호화", + "Sendmail mode" : "Sendmail 모드", + "From address" : "보낸 사람 주소", + "mail" : "메일", + "Authentication method" : "인증 방법", + "Authentication required" : "인증 필요함", + "Server address" : "서버 주소", + "Port" : "포트", + "Credentials" : "인증 정보", + "SMTP Username" : "SMTP 사용자 이름", + "SMTP Password" : "SMTP 암호", + "Test email settings" : "이메일 설정 시험", + "Send email" : "이메일 보내기", + "Security & setup warnings" : "보안 및 설치 경고", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "당신의 인스턴스의 보안과 성능을 위해서는 모든 것이 정확하게 설정되어야 합니다. 그러기 위해서 자동적으로 몇 가지를 확인하겠습니다. 더 자세한 정보를 위해서 링크된 문서를 참고하세요.", + "All checks passed." : "모든 검사를 통과했습니다.", + "There are some errors regarding your setup." : "설정을 살펴본 결과 몇 가지 에러가 있습니다.", + "There are some warnings regarding your setup." : "설정을 살펴본 결과 몇 가지 경고할 것이 있습니다.", + "Checking for system and security issues." : "시스템과 보안에 대한 문제를 확인하는 중", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">우리의 보안 검사 ↗</a>에서 당신의 Nextcloud의 보안을 점검하세요.", + "Version" : "버전", + "Two-Factor Authentication" : "2단계 인증", + "Server-side encryption" : "서버 측 암호화", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "서버 측 암호화를 사용하면 이 서버에 업로드되는 파일을 암호화할 수 있습니다. 성능 감소 등 제약 사항이 있으므로 필요한 경우에만 사용하십시오.", + "Enable server-side encryption" : "서버 측 암호화 사용", + "Please read carefully before activating server-side encryption: " : "서버 측 암호화를 활성화하기 전에 읽어 보십시오:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "암호화를 사용하면, 사용하기 시작한 시간 이후에 서버에 업로드된 모든 파일이 암호화됩니다. 나중에 암호화를 사용하지 않으려면 사용하고 있는 암호화 모듈에서 비활성화를 지원해야 하고 모든 사전 조건(예: 복구 키 설정)을 만족해야 합니다.", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "암호화만으로 시스템의 보안을 보장할 수 없습니다. 암호화 응용 프로그램 작동 방식 및 지원되는 사용 사례에 대한 자세한 내용은 설명서를 참조하십시오.", + "Be aware that encryption always increases the file size." : "암호화된 파일의 크기는 항상 커집니다.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "데이터를 주기적으로 백업하는 것을 추천하며, 암호화를 사용하고 있다면 데이터와 더불어 암호화 키도 백업하십시오.", + "This is the final warning: Do you really want to enable encryption?" : "마지막 경고입니다. 암호화를 활성화하시겠습니까?", + "Enable encryption" : "암호화 사용", + "No encryption module loaded, please enable an encryption module in the app menu." : "암호화 모듈을 불러오지 않았습니다. 앱 메뉴에서 암호화 모듈을 활성화하십시오.", + "Select default encryption module:" : "기본 암호화 모듈 선택:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "과거에 사용하였던(ownCloud <= 8.0) 암호화된 데이터에서 키를 이전해야 합니다. \"기본 암호화 모듈\"을 활성화한 다음 'occ encryption:migrate'를 실행하십시오", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "ownCloud 8.0 이하에서 사용한 이전 암호화 키를 새 키로 이전해야 합니다.", + "Start migration" : "이전 시작", + "Background jobs" : "배경 작업", + "Last job ran %s." : "마지막 작업이 %s에 실행되었습니다.", + "Last job execution ran %s. Something seems wrong." : "마지막 작업이 %s에 실행되었습니다. 무언가 잘못된 것 같습니다.", + "Background job didn’t run yet!" : "배경 작업이 아직 실행되지 않았습니다!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "최적 성능을 위해서 백그라운드 작업을 올바르게 설정하는 것을 추천합니다. 큰 인스턴스에서는 'Cron'을 사용하는 것을 추천합니다. 더 많은 정보를 보려면 문서를 참조하십시오.", + "Execute one task with each page loaded" : "개별 페이지를 불러올 때마다 실행", + "The cron.php needs to be executed by the system user \"%s\"." : "시스템 사용자 \"%s\"(으)로 cron.php를 실행해야 합니다.", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "이 항목을 실행하려면 PHP POSIX 확장이 필요합니다. 자세한 사항은 {linkstart}PHP 문서{linkend}를 참조하십시오.", + "Sharing" : "공유", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "관리자로 공유 행동을 미세 조정할 수 있습니다. 더 많은 정보를 보려면 문서를 참조하십시오.", + "Allow apps to use the Share API" : "앱에서 공유 API를 사용할 수 있도록 허용", + "Allow users to share via link" : "사용자별 링크 공유 허용", + "Allow public uploads" : "공개 업로드 허용", + "Always ask for a password" : "항상 암호 묻기", + "Enforce password protection" : "암호 보호 강제", + "Set default expiration date" : "기본 만료 날짜 설정", + "Expire after " : "다음 날짜 후 만료", + "days" : "일", + "Enforce expiration date" : "만료 날짜 강제", + "Allow resharing" : "재공유 허용", + "Allow sharing with groups" : "그룹과 공유 허용", + "Restrict users to only share with users in their groups" : "그룹 내 사용자끼리만 공유할 수 있도록 허용", + "Exclude groups from sharing" : "공유에서 그룹 제외", + "These groups will still be able to receive shares, but not to initiate them." : "이 그룹의 사용자들은 다른 사용자가 공유한 파일을 받을 수는 있지만, 자기 파일을 공유할 수는 없습니다.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "공유 대화 상자에서 사용자 이름을 자동으로 완성합니다. 이 설정을 사용하지 않으면 전체 사용자 이름이나 이메일 주소를 입력해야 합니다.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "공개 링크 업로드 페이지에 고지 사항 텍스트를 표시합니다.(파일 목록이 숨겨져 있는 경우에만 표시합니다.)", + "This text will be shown on the public link upload page when the file list is hidden." : "파일 목록이 숨겨져 있으면 이 텍스트는 공개 링크 업로드 페이지에 표시됩니다.", + "Personal" : "개인", + "Administration" : "관리", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "{communityopen}Nextcloud 커뮤니티{linkclose}에서 개발, {githubopen}소스 코드{linkclose}는 {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose} 라이선스를 따릅니다.", + "Like our Facebook page" : "Facebook 페이지에서 좋아요 누르기", + "Follow us on Twitter" : "트위터에서 팔로하기", + "Check out our blog" : "블로그 확인하기", + "Subscribe to our newsletter" : "뉴스레터 구독하기", + "Profile picture" : "프로필 사진", + "Upload new" : "새로 업로드", + "Select from Files" : "파일에서 선택", + "Remove image" : "그림 삭제", + "png or jpg, max. 20 MB" : "PNG, JPG, 최대 20MB", + "Picture provided by original account" : "원래 계정에서 제공하는 사진", + "Cancel" : "취소", + "Choose as profile picture" : "프로필 사진으로 선택", + "Details" : "자세히", + "You are a member of the following groups:" : "당신은 다음 그룹의 멤버입니다:", + "You are using <strong>%s</strong>" : "현재 <strong>%s</strong>를 사용하고 있습니다.", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "현재 <strong>%2$s</strong> /%1$s</strong>(<strong>%3$s%%</strong>)를 사용하고 있습니다", + "Full name" : "전체 이름", + "No display name set" : "표시 이름이 설정되지 않음", + "Your email address" : "이메일 주소", + "No email address set" : "이메일 주소가 설정되지 않음", + "For password reset and notifications" : "암호 초기화 및 알림에 사용", + "Phone number" : "휴대폰 번호", + "Your phone number" : "내 휴대폰 번호", + "Address" : "주소", + "Your postal address" : "내 우편 주소", + "Website" : "웹사이트", + "It can take up to 24 hours before the account is displayed as verified." : "계정이 확인된 것으로 표시될 때까지 최대 24시간이 걸릴 수 있습니다", + "Link https://…" : "링크 https://…", + "Twitter" : "트위터", + "Twitter handle @…" : "트위터 핸들 @…", + "Help translate" : "번역 돕기", + "Locale" : "지역", + "Current password" : "현재 암호", + "Change password" : "암호 변경", + "Use a second factor besides your password to increase security for your account." : "사용자의 계정을 더욱 안전하게 보호하기 위해 암호와 함께 2단계 인증을 사용하세요.", + "Disconnect" : "연결 해제", + "Not supported!" : "지원되지 않습니다!", + "Press Ctrl-C to copy." : "복사하기 위해 Ctrl-C를 누르세요.", + "Store credentials" : "인증 정보 저장", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "15분마다 HTTP를 통해 cron.php를 실행하는 webcron 서비스에 cron.php가 등록되었습니다.", + "Use system cron service to call the cron.php file every 15 minutes." : "시스템 cron 서비스를 통해 15분마다 cron.php 파일을 실행합니다." +}, +"nplurals=1; plural=0;"); diff --git a/apps/settings/l10n/ko.json b/apps/settings/l10n/ko.json new file mode 100644 index 00000000000..220474992cc --- /dev/null +++ b/apps/settings/l10n/ko.json @@ -0,0 +1,331 @@ +{ "translations": { + "{actor} added you to group {group}" : "{actor} 가 당신을 {group} 그룹에 추가했습니다.", + "You added {user} to group {group}" : "당신은 {user}를 {group} 그룹에 추가했습니다.", + "{actor} added {user} to group {group}" : "{actor} 가 {user}를 {group} 그룹에 추가했습니다.", + "An administrator added you to group {group}" : "관리자가 당신을 {group} 그룹에 추가했습니다.", + "An administrator added {user} to group {group}" : "관리자가 {user}를 {group} 그룹에 추가했습니다.", + "{actor} removed you from group {group}" : "{actor}가 당신을 {group} 그룹에서 삭제했습니다.", + "You removed {user} from group {group}" : "당신이 {user}를 {group} 그룹에서 삭제했습니다.", + "{actor} removed {user} from group {group}" : "{actor}가 {user}를 {group} 그룹에서 삭제했습니다.", + "An administrator removed you from group {group}" : "관리자가 당신을 {group} 그룹에서 삭제했습니다.", + "An administrator removed {user} from group {group}" : "관리자가 {user}를 {group} 그룹에서 삭제했습니다.", + "Your <strong>group memberships</strong> were modified" : "당신의 <strong>그룹 멤버십</strong>이 수정되었습니다.", + "{actor} changed your password" : "{actor} 님이 내 암호를 변경함", + "You changed your password" : "내 암호를 변경함", + "Your password was reset by an administrator" : "관리자가 내 암호를 초기화함", + "{actor} changed your email address" : "{actor} 님이 내 이메일 주소를 변경함", + "You changed your email address" : "내 이메일 주소를 변경함", + "Your email address was changed by an administrator" : "관리자가 내 이메일 주소를 변경함", + "You created app password \"{token}\"" : "앱 패스워드 \"{token}\"이 생성되었습니다.", + "You deleted app password \"{token}\"" : "앱 패스워드 \"{token}\"이 제거되었습니다.", + "You renamed app password \"{token}\" to \"{newToken}\"" : "앱 패스워드 \"{token}\"의 이름을 \"{newToken}\"으로 바꿨습니다.", + "Security" : "보안", + "You successfully logged in using two-factor authentication (%1$s)" : "2단계 인증으로 로그인함(%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "2단계 인증 시도가 실패함(%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "내 <strong>암호</strong> 및 <strong>이메일</strong>이 변경됨", + "Couldn't remove app." : "앱을 삭제할 수 없습니다.", + "Couldn't update app." : "앱을 업데이트할 수 없습니다.", + "Wrong password" : "잘못된 암호", + "Saved" : "저장됨", + "No user supplied" : "사용자가 지정되지 않음", + "Unable to change password" : "암호를 변경할 수 없음", + "Authentication error" : "인증 오류", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "관리자 복구 암호를 입력하십시오. 그렇지 않으면 모든 사용자 데이이터가 초기화됩니다다.", + "Wrong admin recovery password. Please check the password and try again." : "관리자 복구 암호가 잘못되었습니다. 암호를 다시 확인하십시오.", + "Backend doesn't support password change, but the user's encryption key was updated." : "백엔드에서 암호 변경을 지원하지 않지만 사용자의 암호화 키는 업데이트되었습니다.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "앱 스토어 및 연합 클라우드 공유로 앱 설치 및 업데이트", + "Federated Cloud Sharing" : "클라우드 연합 공유", + "Invalid SMTP password." : "SMTP 암호가 잘못되었습니다.", + "Email setting test" : "이메일 설정 시험", + "Well done, %s!" : "%s 님, 잘 하셨습니다!", + "If you received this email, the email configuration seems to be correct." : "이 이메일을 받으셨다면 이메일 설정이 올바릅니다.", + "Email could not be sent. Check your mail server log" : "이메일을 보낼 수 없습니다. 메일 서버 로그를 확인하십시오.", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "이메일을 보내는 중 오류가 발생했습니다. 설정을 확인하십시오.(오류: %s)", + "You need to set your user email before being able to send test emails." : "테스트 이메일을 보내기 전 내 주소를 설정해야 합니다.", + "Invalid mail address" : "잘못된 이메일 주소", + "Settings saved" : "설정 저장됨", + "Unable to change full name" : "전체 이름을 변경할 수 없음", + "Unable to change email address" : "이메일 주소를 변경할 수 없음", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "내 트위터 계정을 확인하려면 다음 트윗을 타임라인에 게시하십시오(줄바꿈을 추가하지 마십시오):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "내 웹 사이트를 확인하려면 다음 내용을 웹 사이트 루트 디렉터리의 '.well-known/CloudIdVerificationCode.txt' 파일에 게시하십시오(전체 텍스트가 한 줄에 들어가야 함):", + "%1$s changed your password on %2$s." : "%1$s 님이 내 암호를 %2$s에 변경했습니다.", + "Your password on %s was changed." : "내 %s 암호를 변경했습니다.", + "Your password on %s was reset by an administrator." : "관리자가 내 %s 암호를 초기화했습니다.", + "Password for %1$s changed on %2$s" : "%1$s의 암호를 %2$s에 변경함", + "Password changed for %s" : "%s의 암호 변경됨", + "If you did not request this, please contact an administrator." : "요청하지 않았다면 관리자에게 연락하십시오.", + "Your email address on %s was changed." : "내 %s 이메일 주소를 변경했습니다.", + "Your email address on %s was changed by an administrator." : "관리자가 내 %s 이메일 주소를 변경했습니다.", + "Email address for %1$s changed on %2$s" : "%1$s의 이메일 주소를 %2$s에 변경함", + "Email address changed for %s" : "%s의 이메일 주소 변경됨", + "The new email address is %s" : "새 이메일 주소는 %s입니다", + "Your %s account was created" : "%s 계정을 등록했습니다", + "Welcome aboard" : "환영합니다", + "Welcome aboard %s" : "%s 님, 환영합니다", + "Welcome to your %s account, you can add, protect, and share your data." : "%s 계정에 오신 것을 환영합니다. 데이터를 추가, 보호, 공유할 수 있습니다.", + "Your username is: %s" : "사용자 이름: %s", + "Set your password" : "내 암호 설정하기", + "Go to %s" : "%s(으)로 이동", + "Install Client" : "클라이언트 설치", + "Create" : "생성", + "Change" : "변경", + "Delete" : "삭제", + "Share" : "공유", + "Unlimited" : "무제한", + "Verifying" : "검사", + "Verifying …" : "확인 중 …", + "Verify" : "확인", + "Migration in progress. Please wait until the migration is finished" : "이전 작업 중입니다. 작업이 완료될 때까지 기다려 주십시오", + "Migration started …" : "이전 시작됨...", + "Not saved" : "저장하지 않음", + "Sending…" : "보내는 중…", + "Email sent" : "이메일 보냄", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "오류가 발생했습니다. ASCII로 인코딩된 PEM 인증서를 업로드하십시오.", + "Valid until {date}" : "{date}까지 유효함", + "Local" : "로컬", + "Private" : "개인", + "Only visible to local users" : "로컬 사용자만 보임", + "Only visible to you" : "나만 보임", + "Contacts" : "연락처", + "Visible to local users and to trusted servers" : "로컬 사용자와 신뢰된 서버에게 보이기", + "Public" : "공개", + "Will be synced to a global and public address book" : "공개 및 전역 주소록으로 동기화됨", + "Very weak password" : "매우 약한 암호", + "Weak password" : "약한 암호", + "So-so password" : "그저 그런 암호", + "Good password" : "좋은 암호", + "Strong password" : "강력한 암호", + "An error occurred while changing your language. Please reload the page and try again." : "언어를 변경하는 중 오류가 발생했습니다. 페이지를 새로 고친 후 다시 시도하십시오.", + "An error occurred while changing your locale. Please reload the page and try again." : "지역을 변경하는 중 오류가 발생했습니다. 페이지를 새로 고친 후 다시 시도하십시오.", + "Select a profile picture" : "프로필 사진 선택", + "Groups" : "그룹", + "Group list is empty" : "그룹 목록이 비었음", + "Unable to retrieve the group list" : "그룹 목록을 받아올 수 없음", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "2단계 인증을 모든 유저 또는 특정 그룹에 강제할 수 있습니다. 만약 대상자가 2단계 인증 공급자를 설정하지 않았다면, 대상자는 시스템에 접근할 수 없게 될 것입니다.", + "Enforce two-factor authentication" : "2단계 인증 강제하기", + "Limit to groups" : "그룹으로 제한", + "Enforcement of two-factor authentication can be set for certain groups only." : "2단계 인증 강제는 특정 그룹에게만 적용됩니다.", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "2단계 인증이 모든 멤버에게 강제된 그룹은\t다음과 같습니다.", + "Enforced groups" : "강제된 그룹", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "2단계 인증이 강제되지 않은 그룹은\t다음과 같습니다.", + "Excluded groups" : "제외된 그룹", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "그룹이 선택되거나 제외되었을 때, 다음과 같은 상황을 고려할 수 있습니다. 만약 2단계 인증이 강제되었고, 아무런 그룹이 선택되지 않았다면 제외된 그룹의 멤버를 제외하고 모든 유저에게 2단계 인증이 강제됩니다. 만약 그룹이 선택되었다면 그룹 안의 모든 멤버에게 2단계 인증이 강제됩니다. 만약 유저가 선택된 그룹과 제외된 그룹에 동시에 속해있다면, 선택된 그룹이 우선되며 2단계 인증이 강제됩니다.", + "Save changes" : "변경 사항 저장", + "Device settings" : "디바이스 설정", + "Allow filesystem access" : "파일시스템 접근 허용", + "Rename" : "이름 바꾸기", + "Revoke" : "취소", + "Wipe device" : "디바이스 지우기", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google 크롬", + "Safari" : "Safari", + "Google Chrome for Android" : "Android용 Google 크롬", + "Sync client - {os}" : "동기화 클라이언트 - {os}", + "This session" : "이 세션", + "Device" : "장치", + "Last activity" : "최근 활동", + "Web, desktop and mobile clients currently logged in to your account." : "사용자 계정으로 로그인된 웹, 데스크톱, 모바일 클라이언트 목록입니다.", + "Error while creating device token" : "장치 토큰을 만드는 중 오류가 발생했습니다", + "Error while deleting the token" : "토큰을 삭제하는 중 오류가 발생했습니다", + "App name" : "앱 이름", + "Create new app password" : "새로운 앱 암호 만들기", + "Use the credentials below to configure your app or device." : "앱 또는 장치를 구성하는 아래의 자격 증명을 사용합니다.", + "For security reasons this password will only be shown once." : "보안상의 이유로 이 암호는 한 번만 표시됩니다.", + "Username" : "사용자 이름", + "Password" : "암호", + "Done" : "완료", + "Copied!" : "복사 성공!", + "Copy" : "복사", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "커뮤니티가 개발한 공식 앱입니다. 이 앱은 Nextcloud의 핵심 기능이며 프로덕션 환경에서 사용할 수 있습니다.", + "Official" : "공식", + "Remove" : "삭제", + "Disable" : "사용 안함", + "All" : "모두", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "이 앱은 Nextcloud 최소 버전을 지정하지 않았습니다. 차후 버전에서는 오류로 처리됩니다.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "이 앱은 Nextcloud 최대 버전을 지정하지 않았습니다. 차후 버전에서는 오류로 처리됩니다.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "다음 의존성을 만족할 수 없기 때문에 이 앱을 설치할 수 없습니다:", + "View in store" : "스토어에서 보기", + "Visit website" : "웹 사이트 방문", + "Report a bug" : "버그 신고", + "User documentation" : "사용자 문서", + "Admin documentation" : "관리 문서", + "Developer documentation" : "개발자 문서", + "No apps found for your version" : "설치된 버전에 대한 앱 없음", + "Enable all" : "모두 활성화", + "Enable" : "사용함", + "The app will be downloaded from the app store" : "이 앱을 앱 스토어에서 다운로드합니다", + "New password" : "새 암호", + "Never" : "하지 않음", + "Delete user" : "유저 지우기", + "Disable user" : "유저 비활성화하기", + "Enable user" : "유저 활성화하기", + "Resend welcome email" : "환영 메일 다시 보내기", + "{size} used" : "{size} 사용됨", + "Welcome mail sent!" : "환영 메일을 보냈습니다!", + "Display name" : "표시 이름", + "Email" : "이메일", + "Group admin for" : "다음 그룹의 관리자:", + "Quota" : "할당량", + "Language" : "언어", + "Storage location" : "저장소 위치", + "User backend" : "사용자 백엔드", + "Last login" : "마지막 로그인", + "Default language" : "기본 언어", + "Add a new user" : "새 사용자 추가", + "No users in here" : "사용자가 이곳에 없습니다.", + "Default quota" : "기본 할당량", + "All languages" : "모든 언어", + "Your apps" : "내 앱", + "Active apps" : "활성화된 앱", + "Disabled apps" : "비활성화된 앱", + "Updates" : "업데이트", + "App bundles" : "앱 번들", + "New user" : "새 사용자", + "Default quota:" : "기본 할당량:", + "Select default quota" : "기본 할당량 설정", + "Show Languages" : "언어 보이기", + "Show last login" : "마지막 로그인 보이기", + "Show user backend" : "사용자 백엔드 보이기", + "Show storage path" : "스토리지 경로 보이기", + "You are about to remove the group {group}. The users will NOT be deleted." : "당신은 {group} 그룹을 지우려고 합니다. 그룹의 사용자들은 삭제되지 않습니다.", + "Please confirm the group removal " : "그룹 지우기를 확인해주세요.", + "Remove group" : "그룹 지우기", + "Admins" : "관리자", + "Disabled users" : "비활성화된 유저", + "Everyone" : "모두", + "Add group" : "그룹 추가", + "An error occured during the request. Unable to proceed." : "요청을 보내는 도중 에러가 발생하였습니다. 더 이상 진행할 수 없습니다.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "앱이 활성화되었지만, 앱을 업데이트해야 합니다. 5초 후 앱 업데이트 페이지로 넘어갑니다.", + "App update" : "앱 업데이트", + "Error: This app can not be enabled because it makes the server unstable" : "오류: 이 앱은 서버를 불안정하게 만들 수 있어서 활성화할 수 없습니다", + "SSL Root Certificates" : "SSL 루트 인증서", + "Common Name" : "공통 이름", + "Valid until" : "만료 기간:", + "Issued By" : "발급자:", + "Valid until %s" : "%s까지 유효함", + "Import root certificate" : "루트 인증서 가져오기", + "Administrator documentation" : "관리자 문서", + "Documentation" : "문서", + "Forum" : "포럼", + "None" : "없음", + "Login" : "로그인", + "Plain" : "일반", + "NT LAN Manager" : "NT LAN 관리자", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "이메일 서버", + "Open documentation" : "문서 열기", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "암호 초기화 및 알림 이메일을 보내려면 이메일 서버를 설정해야 합니다.", + "Send mode" : "보내기 모드", + "Encryption" : "암호화", + "Sendmail mode" : "Sendmail 모드", + "From address" : "보낸 사람 주소", + "mail" : "메일", + "Authentication method" : "인증 방법", + "Authentication required" : "인증 필요함", + "Server address" : "서버 주소", + "Port" : "포트", + "Credentials" : "인증 정보", + "SMTP Username" : "SMTP 사용자 이름", + "SMTP Password" : "SMTP 암호", + "Test email settings" : "이메일 설정 시험", + "Send email" : "이메일 보내기", + "Security & setup warnings" : "보안 및 설치 경고", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "당신의 인스턴스의 보안과 성능을 위해서는 모든 것이 정확하게 설정되어야 합니다. 그러기 위해서 자동적으로 몇 가지를 확인하겠습니다. 더 자세한 정보를 위해서 링크된 문서를 참고하세요.", + "All checks passed." : "모든 검사를 통과했습니다.", + "There are some errors regarding your setup." : "설정을 살펴본 결과 몇 가지 에러가 있습니다.", + "There are some warnings regarding your setup." : "설정을 살펴본 결과 몇 가지 경고할 것이 있습니다.", + "Checking for system and security issues." : "시스템과 보안에 대한 문제를 확인하는 중", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">우리의 보안 검사 ↗</a>에서 당신의 Nextcloud의 보안을 점검하세요.", + "Version" : "버전", + "Two-Factor Authentication" : "2단계 인증", + "Server-side encryption" : "서버 측 암호화", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "서버 측 암호화를 사용하면 이 서버에 업로드되는 파일을 암호화할 수 있습니다. 성능 감소 등 제약 사항이 있으므로 필요한 경우에만 사용하십시오.", + "Enable server-side encryption" : "서버 측 암호화 사용", + "Please read carefully before activating server-side encryption: " : "서버 측 암호화를 활성화하기 전에 읽어 보십시오:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "암호화를 사용하면, 사용하기 시작한 시간 이후에 서버에 업로드된 모든 파일이 암호화됩니다. 나중에 암호화를 사용하지 않으려면 사용하고 있는 암호화 모듈에서 비활성화를 지원해야 하고 모든 사전 조건(예: 복구 키 설정)을 만족해야 합니다.", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "암호화만으로 시스템의 보안을 보장할 수 없습니다. 암호화 응용 프로그램 작동 방식 및 지원되는 사용 사례에 대한 자세한 내용은 설명서를 참조하십시오.", + "Be aware that encryption always increases the file size." : "암호화된 파일의 크기는 항상 커집니다.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "데이터를 주기적으로 백업하는 것을 추천하며, 암호화를 사용하고 있다면 데이터와 더불어 암호화 키도 백업하십시오.", + "This is the final warning: Do you really want to enable encryption?" : "마지막 경고입니다. 암호화를 활성화하시겠습니까?", + "Enable encryption" : "암호화 사용", + "No encryption module loaded, please enable an encryption module in the app menu." : "암호화 모듈을 불러오지 않았습니다. 앱 메뉴에서 암호화 모듈을 활성화하십시오.", + "Select default encryption module:" : "기본 암호화 모듈 선택:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "과거에 사용하였던(ownCloud <= 8.0) 암호화된 데이터에서 키를 이전해야 합니다. \"기본 암호화 모듈\"을 활성화한 다음 'occ encryption:migrate'를 실행하십시오", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "ownCloud 8.0 이하에서 사용한 이전 암호화 키를 새 키로 이전해야 합니다.", + "Start migration" : "이전 시작", + "Background jobs" : "배경 작업", + "Last job ran %s." : "마지막 작업이 %s에 실행되었습니다.", + "Last job execution ran %s. Something seems wrong." : "마지막 작업이 %s에 실행되었습니다. 무언가 잘못된 것 같습니다.", + "Background job didn’t run yet!" : "배경 작업이 아직 실행되지 않았습니다!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "최적 성능을 위해서 백그라운드 작업을 올바르게 설정하는 것을 추천합니다. 큰 인스턴스에서는 'Cron'을 사용하는 것을 추천합니다. 더 많은 정보를 보려면 문서를 참조하십시오.", + "Execute one task with each page loaded" : "개별 페이지를 불러올 때마다 실행", + "The cron.php needs to be executed by the system user \"%s\"." : "시스템 사용자 \"%s\"(으)로 cron.php를 실행해야 합니다.", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "이 항목을 실행하려면 PHP POSIX 확장이 필요합니다. 자세한 사항은 {linkstart}PHP 문서{linkend}를 참조하십시오.", + "Sharing" : "공유", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "관리자로 공유 행동을 미세 조정할 수 있습니다. 더 많은 정보를 보려면 문서를 참조하십시오.", + "Allow apps to use the Share API" : "앱에서 공유 API를 사용할 수 있도록 허용", + "Allow users to share via link" : "사용자별 링크 공유 허용", + "Allow public uploads" : "공개 업로드 허용", + "Always ask for a password" : "항상 암호 묻기", + "Enforce password protection" : "암호 보호 강제", + "Set default expiration date" : "기본 만료 날짜 설정", + "Expire after " : "다음 날짜 후 만료", + "days" : "일", + "Enforce expiration date" : "만료 날짜 강제", + "Allow resharing" : "재공유 허용", + "Allow sharing with groups" : "그룹과 공유 허용", + "Restrict users to only share with users in their groups" : "그룹 내 사용자끼리만 공유할 수 있도록 허용", + "Exclude groups from sharing" : "공유에서 그룹 제외", + "These groups will still be able to receive shares, but not to initiate them." : "이 그룹의 사용자들은 다른 사용자가 공유한 파일을 받을 수는 있지만, 자기 파일을 공유할 수는 없습니다.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "공유 대화 상자에서 사용자 이름을 자동으로 완성합니다. 이 설정을 사용하지 않으면 전체 사용자 이름이나 이메일 주소를 입력해야 합니다.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "공개 링크 업로드 페이지에 고지 사항 텍스트를 표시합니다.(파일 목록이 숨겨져 있는 경우에만 표시합니다.)", + "This text will be shown on the public link upload page when the file list is hidden." : "파일 목록이 숨겨져 있으면 이 텍스트는 공개 링크 업로드 페이지에 표시됩니다.", + "Personal" : "개인", + "Administration" : "관리", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "{communityopen}Nextcloud 커뮤니티{linkclose}에서 개발, {githubopen}소스 코드{linkclose}는 {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose} 라이선스를 따릅니다.", + "Like our Facebook page" : "Facebook 페이지에서 좋아요 누르기", + "Follow us on Twitter" : "트위터에서 팔로하기", + "Check out our blog" : "블로그 확인하기", + "Subscribe to our newsletter" : "뉴스레터 구독하기", + "Profile picture" : "프로필 사진", + "Upload new" : "새로 업로드", + "Select from Files" : "파일에서 선택", + "Remove image" : "그림 삭제", + "png or jpg, max. 20 MB" : "PNG, JPG, 최대 20MB", + "Picture provided by original account" : "원래 계정에서 제공하는 사진", + "Cancel" : "취소", + "Choose as profile picture" : "프로필 사진으로 선택", + "Details" : "자세히", + "You are a member of the following groups:" : "당신은 다음 그룹의 멤버입니다:", + "You are using <strong>%s</strong>" : "현재 <strong>%s</strong>를 사용하고 있습니다.", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "현재 <strong>%2$s</strong> /%1$s</strong>(<strong>%3$s%%</strong>)를 사용하고 있습니다", + "Full name" : "전체 이름", + "No display name set" : "표시 이름이 설정되지 않음", + "Your email address" : "이메일 주소", + "No email address set" : "이메일 주소가 설정되지 않음", + "For password reset and notifications" : "암호 초기화 및 알림에 사용", + "Phone number" : "휴대폰 번호", + "Your phone number" : "내 휴대폰 번호", + "Address" : "주소", + "Your postal address" : "내 우편 주소", + "Website" : "웹사이트", + "It can take up to 24 hours before the account is displayed as verified." : "계정이 확인된 것으로 표시될 때까지 최대 24시간이 걸릴 수 있습니다", + "Link https://…" : "링크 https://…", + "Twitter" : "트위터", + "Twitter handle @…" : "트위터 핸들 @…", + "Help translate" : "번역 돕기", + "Locale" : "지역", + "Current password" : "현재 암호", + "Change password" : "암호 변경", + "Use a second factor besides your password to increase security for your account." : "사용자의 계정을 더욱 안전하게 보호하기 위해 암호와 함께 2단계 인증을 사용하세요.", + "Disconnect" : "연결 해제", + "Not supported!" : "지원되지 않습니다!", + "Press Ctrl-C to copy." : "복사하기 위해 Ctrl-C를 누르세요.", + "Store credentials" : "인증 정보 저장", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "15분마다 HTTP를 통해 cron.php를 실행하는 webcron 서비스에 cron.php가 등록되었습니다.", + "Use system cron service to call the cron.php file every 15 minutes." : "시스템 cron 서비스를 통해 15분마다 cron.php 파일을 실행합니다." +},"pluralForm" :"nplurals=1; plural=0;" +} \ No newline at end of file diff --git a/apps/settings/l10n/lt_LT.js b/apps/settings/l10n/lt_LT.js new file mode 100644 index 00000000000..d56f29b92cb --- /dev/null +++ b/apps/settings/l10n/lt_LT.js @@ -0,0 +1,356 @@ +OC.L10N.register( + "settings", + { + "{actor} added you to group {group}" : "{actor} pridėjo jus į grupę {group}", + "You added {user} to group {group}" : "Jūs pridėjote naudotoją {user} į grupę {group}", + "{actor} added {user} to group {group}" : "{actor} pridėjo naudotoją {user} į grupę {group}", + "An administrator added you to group {group}" : "Administratorius pridėjo jus į grupę {group}", + "An administrator added {user} to group {group}" : "Administratorius pridėjo naudotoją {user} į grupę {group}", + "{actor} removed you from group {group}" : "{actor} pašalino jus iš grupės {group}", + "You removed {user} from group {group}" : "Jūs pašalinote naudotoją {user} iš grupės {group}", + "{actor} removed {user} from group {group}" : "{actor} pašalino naudotoją {user} iš grupės {group}", + "An administrator removed you from group {group}" : "Administratorius pašalino jus iš grupės {group}", + "An administrator removed {user} from group {group}" : "Administratorius pašalino naudotoją {user} iš grupės {group}", + "{actor} changed your password" : "{actor} pakeitė jūsų slaptažodį", + "You changed your password" : "Jūs pakeitėte savo slaptažodį", + "Your password was reset by an administrator" : "Administratorius atstatė jūsų slaptažodį", + "{actor} changed your email address" : "{actor} pakeitė jūsų el. pašto adresą", + "You changed your email address" : "Jūs pakeitėte savo el. pašto adresą", + "Your email address was changed by an administrator" : "Administratorius pakeitė jūsų el. pašto adresą", + "Security" : "Saugumas", + "You successfully logged in using two-factor authentication (%1$s)" : "Jūs sėkmingai prisijungėte, naudodami dviejų faktorių tapatybės nustatymą (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Nepavyko prisijungti, naudojant dviejų faktorių tapatybės nustatymą (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Jūsų <strong>slaptažodis</strong> ar <strong>el. paštas</strong> buvo pakeisti", + "Couldn't remove app." : "Nepavyko pašalinti programėlės.", + "Couldn't update app." : "Nepavyko atnaujinti programėlės.", + "Wrong password" : "Neteisingas slaptažodis", + "Saved" : "Įrašyta", + "No user supplied" : "Nepateiktas naudotojas", + "Unable to change password" : "Nepavyksta pakeisti slaptažodžio", + "Authentication error" : "Tapatybės nustatymo klaida", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Pateikite administratoriaus atkūrimo slaptažodį; kitu atveju visi naudotojo duomenis bus prarasti.", + "Wrong admin recovery password. Please check the password and try again." : "Netinkamas administratoriaus atkūrimo slaptažodis. Prašome pasitikrinti ir bandyti vėl.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Vidinė pusė nepalaiko slaptažodžio keitimo, tačiau naudotojo šifravimo raktas buvo atnaujintas.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Programėlių diegimas ir naujinimas per programėlių parduotuvę arba per „Federated Cloud Sharing“", + "Federated Cloud Sharing" : "„Federated Cloud Sharing“", + "Invalid SMTP password." : "Neteisingas SMTP slaptažodis.", + "Email setting test" : "El. pašto nustatymo testas", + "If you received this email, the email configuration seems to be correct." : "Jeigu gavote šį laišką, tuomet atrodo, jog el. pašto konfigūracija yra teisinga.", + "Email could not be sent. Check your mail server log" : "El. laiškas nebuvo išsiųstas. Peržiūrėkite savo pašto serverio žurnalą.", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Įvyko klaida išsiunčiant laišką. Prašome peržiūrėkite savo nustatymus. (Klaida: %s)", + "You need to set your user email before being able to send test emails." : "Jūs turite nurodyti elektroninio pašto adresą, kad galėtumėte siųsti testinius el. laiškus.", + "Invalid mail address" : "Neteisingas pašto adresas", + "Settings saved" : "Nustatymai įrašyti", + "Unable to change full name" : "Nepavyko pakeisti vardo ir pavardės", + "Unable to change email address" : "Nepavyko pakeisti el. pašto adresą", + "%1$s changed your password on %2$s." : "%1$s pakeitė jūsų slaptažodį %2$s", + "If you did not request this, please contact an administrator." : "Jeigu nebuvote to užklausę, susisiekite su administratoriumi.", + "The new email address is %s" : "Naujasis el. pašto adresas yra %s", + "Your %s account was created" : "Jūsų paskyra %s sukurta", + "Welcome aboard" : "Sveikiname prisijungus", + "Welcome aboard %s" : "%s, sveikiname prisijungus", + "Welcome to your %s account, you can add, protect, and share your data." : "Turėdami %s paskyrą duomenis galite pridėti, apsaugoti ir jais pasidalinti.", + "Your username is: %s" : "Jūsų naudotojo vardas yra: %s", + "Install Client" : "Įdiegti kliento programą", + "Delete" : "Ištrinti", + "Unlimited" : "Neribotai", + "Migration in progress. Please wait until the migration is finished" : "Vyksta perkėlimas. Palaukite, kol perkėlimas bus užbaigtas", + "Migration started …" : "Perkėlimas pradėtas …", + "Not saved" : "Neįrašyta", + "Sending…" : "Siunčiama…", + "Email sent" : "El. paštas išsiųstas", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Įvyko klaida. Įkelkite ASCII koduotą PEM liudijimą.", + "Valid until {date}" : "Galioja iki {date}", + "Local" : "Vietinis", + "Private" : "Privatu", + "Only visible to local users" : "Matoma tik vietiniams naudotojams", + "Only visible to you" : "Matoma tik jums", + "Contacts" : "Adresatai", + "Visible to local users and to trusted servers" : "Matoma tik vietiniams naudotojams ir patikimiems serveriams", + "Public" : "Vieša", + "Will be synced to a global and public address book" : "Bus sinchronizuota į visuotinę ir viešą adresų knygą", + "Very weak password" : "Labai silpnas slaptažodis", + "Weak password" : "Silpnas slaptažodis", + "So-so password" : "Neblogas slaptažodis", + "Good password" : "Geras slaptažodis", + "Strong password" : "Stiprus slaptažodis", + "An error occurred while changing your language. Please reload the page and try again." : "Keičiant jūsų kalbą, įvyko klaida. Įkelkite puslapį iš naujo ir bandykite dar kartą.", + "An error occurred while changing your locale. Please reload the page and try again." : "Keičiant jūsų lokalę, įvyko klaida. Įkelkite puslapį iš naujo ir bandykite dar kartą.", + "Select a profile picture" : "Pasirinkite profilio paveikslėlį", + "Week starts on {fdow}" : "Savaitės pradžia yra {fdow}", + "Groups" : "Grupės", + "Group list is empty" : "Grupės sąrašas yra tuščias", + "Albanian (Albania)" : "Albanų (Albanija)", + "Albanian" : "Albanų", + "Arabic (Algeria)" : "Arabų (Alžyras)", + "Arabic (Bahrain)" : "Arabų (Bahreinas)", + "Arabic (Egypt)" : "Arabų (Egiptas)", + "Arabic (Iraq)" : "Arabų (Irakas)", + "Arabic (Jordan)" : "Arabų (Jordanija)", + "Arabic (Kuwait)" : "Arabų (Kuveitas)", + "Arabic (Lebanon)" : "Arabų (Libanas)", + "Arabic (Libya)" : "Arabų (Libija)", + "Arabic (Morocco)" : "Arabų (Marokas)", + "Arabic (Oman)" : "Arabų (Omanas)", + "Arabic (Qatar)" : "Arabų (Kataras)", + "Arabic (Saudi Arabia)" : "Arabų (Saudo Arabija)", + "Arabic (Sudan)" : "Arabų (Sudanas)", + "Arabic (Syria)" : "Arabų (Sirija)", + "Arabic (Tunisia)" : "Arabų (Tunisas)", + "Arabic (United Arab Emirates)" : "Arabų (Jungtiniai Arabų Emyratai)", + "Arabic (Yemen)" : "Arabų (Jemenas)", + "Arabic" : "Arabų", + "Chinese" : "Kinų", + "Czech (Czech Republic)" : "Čekų (Čekijos Respublika)", + "Czech" : "Čekų", + "Danish (Denmark)" : "Danų (Danija)", + "Danish" : "Danų", + "English (Australia)" : "Anglų (Australija)", + "English (Belgium)" : "Anglų (Belgija)", + "English (Botswana)" : "Anglų (Botsvana)", + "English (Canada)" : "Anglų (Kanada)", + "English (India)" : "Anglų (Indija)", + "English" : "Anglų", + "Estonian (Estonia)" : "Estų (Estija)", + "Estonian" : "Estų", + "Finnish (Finland)" : "Suomių (Suomija)", + "Finnish" : "Suomių", + "French (Belgium)" : "Prancūzų (Belgija)", + "French (Canada)" : "Prancūzų (Kanada)", + "French" : "Prancūzų", + "German" : "Vokiečių", + "Greek (Cyprus)" : "Graikų (Kipras)", + "Greek (Greece)" : "Graikų (Graikija)", + "Greek" : "Graikų", + "Hebrew (Israel)" : "Hebrajų (Izraelis)", + "Hebrew" : "Hebrajų", + "Hungarian (Hungary)" : "Vengrų (Vengrija)", + "Hungarian" : "Vengrų", + "Italian (Italy)" : "Italų (Italija)", + "Italian (Switzerland)" : "Italų (Šveicarija)", + "Italian" : "Italų", + "Japanese (Japan)" : "Japonų (Japonija)", + "Japanese" : "Japonų", + "Korean (South Korea)" : "Korėjiečių (Pietų Korėja)", + "Korean" : "Korėjiečių", + "Latvian (Latvia)" : "Latvių (Latvija)", + "Latvian" : "Latvių", + "Lithuanian (Lithuania)" : "Lietuvių (Lietuva)", + "Lithuanian" : "Lietuvių", + "Polish (Poland)" : "Lenkų (Lenkija)", + "Polish" : "Lenkų", + "Swedish (Finland)" : "Švedų (Suomija)", + "Swedish (Sweden)" : "Švedų (Švedija)", + "Swedish" : "Švedų", + "Turkish (Turkey)" : "Turkų (Turkija)", + "Turkish" : "Turkų", + "Ukrainian (Ukraine)" : "Ukrainiečių (Ukraina)", + "Ukrainian" : "Ukrainiečių", + "Vietnamese (Vietnam)" : "Vietnamiečių (Vietnamas)", + "Vietnamese" : "Vietnamiečių", + "Save changes" : "Įrašyti pakeitimus", + "Device settings" : "Įrenginio nustatymai", + "Allow filesystem access" : "Leisti prieigą prie failų sistemos", + "Rename" : "Pervadinti", + "Revoke" : "Panaikinti", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome, skirta Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Nextcloud iOS programėlė", + "Nextcloud Android app" : "Nextcloud Android programėlė", + "Sync client - {os}" : "Sinchronizavimo klientas - {os}", + "This session" : "Šis seansas", + "Device" : "Įrenginys", + "Last activity" : "Paskutinė veikla", + "Devices & sessions" : "Įrenginiai ir seansai", + "Web, desktop and mobile clients currently logged in to your account." : "Saityno, darbalaukio ir mobilieji klientai, kurie šiuo metu yra prisijungę prie jūsų paskyros.", + "Error while creating device token" : "Klaida, kuriant įrenginio prieigos raktą", + "Error while deleting the token" : "Klaida, ištrinant prieigos raktą", + "App name" : "Programėlės pavadinimas", + "Create new app password" : "Sukurti naują programėlės slaptažodį", + "Use the credentials below to configure your app or device." : "Naudokite žemiau esančius prisijungimo duomenis, kad galėtumėte konfigūruoti programėlę ar įrenginį.", + "For security reasons this password will only be shown once." : "Saugumo sumetimais šis slaptažodis bus parodytas tik vieną kartą.", + "Username" : "Naudotojo vardas", + "Password" : "Slaptažodis", + "Done" : "Atlikta", + "Copied!" : "Nukopijuota!", + "Copy" : "Kopijuoti", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Oficialios programėlės yra kuriamos bendruomenės viduje ir jas kuria bendruomenė. Šios programėlės siūlo centrinį funkcionalumą ir yra paruoštos kasdieniam naudojimui.", + "Official" : "Oficiali", + "Remove" : "Šalinti", + "Disable" : "Išjungti", + "All" : "Viskas", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Ši programėlė neturi priskirtos žemiausios „Nextcloud“ versijos. Ateityje tai bus klaida.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Ši programėlė neturi priskirtos aukščiausios „Nextcloud“ versijos. Ateityje tai bus klaida.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Programėlė negali būti įdiegta, nes žemiau išvardinti priklausiniai neišpildyti:", + "Visit website" : "Aplankyti svetainę", + "Report a bug" : "Pranešti apie klaidą", + "User documentation" : "Naudotojo dokumentacija", + "Admin documentation" : "Administratoriaus dokumentacija", + "Developer documentation" : "Kūrėjo dokumentacija", + "Update to {update}" : "Atnaujinti į {update}", + "Results from other categories" : "Rezultatai iš kitų kategorijų", + "No apps found for your version" : "Jūsų versijai programėlių nėra", + "Download and enable" : "Atsisiųsti ir įjungti", + "Enable" : "Įjungti", + "The app will be downloaded from the app store" : "Programėlė bus atsisiųsta iš programėlių parduotuvės", + "New password" : "Naujas slaptažodis", + "No language set" : "Nenustatyta jokia kalba", + "Never" : "Niekada", + "Delete user" : "Ištrinti naudotoją", + "Disable user" : "Išjungti naudotoją", + "Enable user" : "Įjungti naudotoją", + "Email" : "El. paštas", + "Quota" : "Limitas", + "Language" : "Kalba", + "Storage location" : "Saugyklos vieta", + "Last login" : "Paskutinis prisijungimas", + "Default language" : "Numatytoji kalba", + "Add a new user" : "Pridėti naują naudotoją", + "No users in here" : "Čia naudotojų nėra", + "Default quota" : "Numatytasis leidžiamas duomenų kiekis", + "Password change is disabled because the master key is disabled" : "Slaptažodžių keitimas išjungtas, nes yra išjungtas pagrindinis raktas", + "All languages" : "Visos kalbos", + "Your apps" : "Jūsų programėlės", + "Active apps" : "Aktyvios programėlės", + "Disabled apps" : "Išjungtos programėlės", + "Updates" : "Atnaujinimai", + "App bundles" : "Programėlių rinkiniai", + "{license}-licensed" : "Licencijuota pagal {license}", + "New user" : "Naujas naudotojas", + "Default quota:" : "Numatytasis leidžiamas duomenų kiekis:", + "Show Languages" : "Rodyti kalbas", + "Show last login" : "Rodyti paskutinį prisijungimą", + "Show user backend" : "Rodyti naudotojo vidų", + "You are about to remove the group {group}. The users will NOT be deleted." : "Jūs ketinate pašalinti grupę {group}. Naudotojai NEBUS ištrinti.", + "Please confirm the group removal " : "Patvirtinkite grupės pašalinimą", + "Remove group" : "Šalinti grupę", + "Admins" : "Administratoriai", + "Disabled users" : "Išjungti naudotojai", + "Everyone" : "Visi", + "Add group" : "Pridėti grupę", + "An error occured during the request. Unable to proceed." : "Užklausos metu, įvyko klaida. Nepavyksta tęsti.", + "Error: This app can not be enabled because it makes the server unstable" : "Klaida: ši programėlė negali būti įjungta, nes ji neigiamai veikia serverio stabilumą", + "SSL Root Certificates" : "SSL šakniniai sertifikatai", + "Common Name" : "Bendrasis vardas", + "Valid until" : "Galioja iki", + "Issued By" : "Išdavė", + "Valid until %s" : "Galioja iki %s", + "Import root certificate" : "Importuoti šakninius sertifikatus", + "Administrator documentation" : "Administratoriaus dokumentacija", + "Documentation" : "Dokumentacija", + "Forum" : "Forumas", + "None" : "Nėra", + "Login" : "Prisijungti", + "Plain" : "Paprastas", + "NT LAN Manager" : "NT LAN tvarkytuvė", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "El. pašto serveris", + "Open documentation" : "Atverti dokumentaciją", + "Send mode" : "Siuntimo veiksena", + "Encryption" : "Šifravimas", + "From address" : "Siuntėjo adresas", + "mail" : "el. paštas", + "Authentication method" : "Autentifikavimo metodas", + "Authentication required" : "Reikalingas tapatybės nustatymas", + "Server address" : "Serverio adresas", + "Port" : "Prievadas", + "Credentials" : "Prisijungimo duomenys", + "SMTP Username" : "SMTP naudotojo vardas", + "SMTP Password" : "SMTP slaptažodis", + "Save" : "Įrašyti", + "Test email settings" : "Išbandyti el. pašto nustatymus", + "Send email" : "Siųsti el. paštą", + "Security & setup warnings" : "Saugumo ir sąrankos įspėjimai", + "All checks passed." : "Visi patikros rezultatai teigiami.", + "There are some errors regarding your setup." : "Yra klaidų, susijusių su jūsų sąranką.", + "There are some warnings regarding your setup." : "Yra įspėjimų, susijusių su jūsų sąranka.", + "Version" : "Versija", + "Server-side encryption" : "Šifravimas serveryje", + "Enable server-side encryption" : "Aktyvuoti šifravimą serveryje", + "Please read carefully before activating server-side encryption: " : "Atidžiai perskaitykite prieš aktyvuodami serverio šifravimą:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Nuo to momento kai šifravimas aktyvuotas, visi failai įkelti į serverį bus užšifruoti ir saugomi serveryje. Vėliau išjungti šifravimą galėsite tik jei šifravimo modulius turi tokią galimybę, ir visos sąlygos (pvz. atstatymo rakto nustatymas) išpildytos.", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Vien tik šifravimas negarantuoja sistemos saugumo. Dokumentacijoje ieškokite daugiau informacijos apie tai, kaip veikia šifravimo programos ir galimus naudojimo scenarijus.", + "Be aware that encryption always increases the file size." : "Turėkite omenyje, kad šifravimas visada padidina failų dydį.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Geroji praktika yra kurti atsargines duomenų kopijas, tik jei kopijuojate šifruotus duomenis, nepamirškite ir pasidaryti iššifravimo rakto atsarginės kopijos.", + "This is the final warning: Do you really want to enable encryption?" : "Tai yra paskutinis įspėjimas: Ar tikrai norite įjungti šifravimą?", + "Enable encryption" : "Įjungti šifravimą", + "No encryption module loaded, please enable an encryption module in the app menu." : "Šifravimo modulis neįkeltas, aktyvuokite šifravimo modulį programėlės meniu.", + "Select default encryption module:" : "Pasirinkite numatytąjį šifravimo modulį:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Jūs turite perkelti savo šifravimo raktus iš senojo šifravimo (ownCloud <= 8.0) į naująjį. Prašome įjungti \"Numatytąjį šifravimo modulį\" ir įvykdyti \"occ encryption:migrate\"", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Jūs turite perkelti savo šifravimo raktus iš senojo šifravimo (ownCloud <= 8.0) į naująjį.", + "Start migration" : "Pradėti perkėlimą", + "Background jobs" : "Foninės užduotys", + "Last job ran %s." : "Paskutinė užduotis buvo vykdyta %s.", + "Last job execution ran %s. Something seems wrong." : "Paskutinės užduoties vykdymas vyko %s. Atrodo, kad kažkas nutiko.", + "Background job didn’t run yet!" : "Foninės užduotys kol kas nebuvo vykdomos!", + "Execute one task with each page loaded" : "Įvykdyti vieną užduotį su kiekvieno puslapio įkėlimu", + "The cron.php needs to be executed by the system user \"%s\"." : "Cron.php turi įvykdyti sistemos naudotojas \"%s\".", + "Sharing" : "Bendrinimas", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Būdami administratoriumi, galite reguliuoti bendrinimo elgseną. Išsamesnei informacijai, žiūrėkite dokumentaciją.", + "Allow apps to use the Share API" : "Leidžia programoms naudoti Share API", + "Allow users to share via link" : "Leisti naudotojams bendrinti per nuorodą", + "Allow public uploads" : "Leisti viešus įkėlimus", + "Always ask for a password" : "Visada prašyti slaptažodžio", + "Enforce password protection" : "Apsaugoti slaptažodžiu", + "Set default expiration date" : "Nustatykite gaiiojimo pabaigą", + "Expire after " : "Galioja iki", + "days" : "dienos", + "Enforce expiration date" : "Įgalinti galiojimo pabaigą", + "Allow resharing" : "Leisti dalintis", + "Allow sharing with groups" : "Leisti dalinimąsi su grupėmis", + "Restrict users to only share with users in their groups" : "Leisti naudotojams dalintis tik su savo grupės nariais", + "Exclude groups from sharing" : "Neleisti grupėms dalintis", + "These groups will still be able to receive shares, but not to initiate them." : "Šios grupės galės atverti pasidalintus failus, bet negalės pasidalinti.", + "Personal" : "Asmeniniai", + "Administration" : "Administravimas", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Sukurta {communityopen}Nextcloud bendruomenės{linkclose}, {githubopen}pirminis kodas{linkclose} yra licencijuotas pagal {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Spauskite \"Patinka\" mūsų Facebook puslapyje", + "Follow us on Twitter" : "Sekite mus Twitter", + "Follow us on Mastodon" : "Sekite mus Mastodon", + "Check out our blog" : "Peržvelkite mūsų tinklaraštį", + "Subscribe to our newsletter" : "Prenumeruokite mūsų naujienlaiškį", + "Profile picture" : "Profilio paveikslėlis", + "Upload new" : "Įkelti naują", + "Select from Files" : "Pasirinkti iš failų", + "Remove image" : "Šalinti paveikslą", + "png or jpg, max. 20 MB" : "png arba jpg, daugiausiai 20 MB", + "Picture provided by original account" : "Paveikslėlis gautas iš pagrindinės paskyros", + "Cancel" : "Atšaukti", + "Choose as profile picture" : "Pasirinkti kaip profilio paveikslėlį", + "Details" : "Išsamiau", + "You are a member of the following groups:" : "Jūs esate šių grupių narys:", + "You are using <strong>%s</strong>" : "Jūs naudojate <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Jūs naudojate <strong>%1$s</strong> iš <strong>%2$s</strong> (<strong>%3$s %%</strong>)", + "Full name" : "Vardas, pavardė", + "No display name set" : "Rodomas vardas nenurodytas", + "Your email address" : "Jūsų el. pašto adresas", + "No email address set" : "Nenustatytas joks el. pašto adresas", + "For password reset and notifications" : "Skirtas slaptažodžio atstatymui ir pranešimams", + "Phone number" : "Telefono numeris", + "Your phone number" : "Jūsų telefono numeris", + "Address" : "Adresas", + "Your postal address" : "Jūsų adresas", + "Website" : "Svetainė", + "Link https://…" : "Nuoroda https://…", + "Twitter" : "Twitter", + "Twitter handle @…" : "Twitter rankenėlė @…", + "Help translate" : "Padėkite išversti", + "Locale" : "Lokalė", + "Current password" : "Dabartinis slaptažodis", + "Change password" : "Pakeisti slaptažodį", + "Disconnect" : "Atsijungti", + "Not supported!" : "Nepalaikoma!", + "Press ⌘-C to copy." : "Nukopijuosite spustelėję ⌘-C.", + "Press Ctrl-C to copy." : "Nukopijuosite spustelėję Ctrl-C.", + "Error while loading browser sessions and device tokens" : "Klaida, įkeliant naršyklės seansus ir įrenginio prieigos raktus", + "Store credentials" : "Išsaugoti prisijungimo duomenis", + "Follow us on Google+" : "Sekite mus Google+" +}, +"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/settings/l10n/lt_LT.json b/apps/settings/l10n/lt_LT.json new file mode 100644 index 00000000000..1730d1a2931 --- /dev/null +++ b/apps/settings/l10n/lt_LT.json @@ -0,0 +1,354 @@ +{ "translations": { + "{actor} added you to group {group}" : "{actor} pridėjo jus į grupę {group}", + "You added {user} to group {group}" : "Jūs pridėjote naudotoją {user} į grupę {group}", + "{actor} added {user} to group {group}" : "{actor} pridėjo naudotoją {user} į grupę {group}", + "An administrator added you to group {group}" : "Administratorius pridėjo jus į grupę {group}", + "An administrator added {user} to group {group}" : "Administratorius pridėjo naudotoją {user} į grupę {group}", + "{actor} removed you from group {group}" : "{actor} pašalino jus iš grupės {group}", + "You removed {user} from group {group}" : "Jūs pašalinote naudotoją {user} iš grupės {group}", + "{actor} removed {user} from group {group}" : "{actor} pašalino naudotoją {user} iš grupės {group}", + "An administrator removed you from group {group}" : "Administratorius pašalino jus iš grupės {group}", + "An administrator removed {user} from group {group}" : "Administratorius pašalino naudotoją {user} iš grupės {group}", + "{actor} changed your password" : "{actor} pakeitė jūsų slaptažodį", + "You changed your password" : "Jūs pakeitėte savo slaptažodį", + "Your password was reset by an administrator" : "Administratorius atstatė jūsų slaptažodį", + "{actor} changed your email address" : "{actor} pakeitė jūsų el. pašto adresą", + "You changed your email address" : "Jūs pakeitėte savo el. pašto adresą", + "Your email address was changed by an administrator" : "Administratorius pakeitė jūsų el. pašto adresą", + "Security" : "Saugumas", + "You successfully logged in using two-factor authentication (%1$s)" : "Jūs sėkmingai prisijungėte, naudodami dviejų faktorių tapatybės nustatymą (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Nepavyko prisijungti, naudojant dviejų faktorių tapatybės nustatymą (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Jūsų <strong>slaptažodis</strong> ar <strong>el. paštas</strong> buvo pakeisti", + "Couldn't remove app." : "Nepavyko pašalinti programėlės.", + "Couldn't update app." : "Nepavyko atnaujinti programėlės.", + "Wrong password" : "Neteisingas slaptažodis", + "Saved" : "Įrašyta", + "No user supplied" : "Nepateiktas naudotojas", + "Unable to change password" : "Nepavyksta pakeisti slaptažodžio", + "Authentication error" : "Tapatybės nustatymo klaida", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Pateikite administratoriaus atkūrimo slaptažodį; kitu atveju visi naudotojo duomenis bus prarasti.", + "Wrong admin recovery password. Please check the password and try again." : "Netinkamas administratoriaus atkūrimo slaptažodis. Prašome pasitikrinti ir bandyti vėl.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Vidinė pusė nepalaiko slaptažodžio keitimo, tačiau naudotojo šifravimo raktas buvo atnaujintas.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Programėlių diegimas ir naujinimas per programėlių parduotuvę arba per „Federated Cloud Sharing“", + "Federated Cloud Sharing" : "„Federated Cloud Sharing“", + "Invalid SMTP password." : "Neteisingas SMTP slaptažodis.", + "Email setting test" : "El. pašto nustatymo testas", + "If you received this email, the email configuration seems to be correct." : "Jeigu gavote šį laišką, tuomet atrodo, jog el. pašto konfigūracija yra teisinga.", + "Email could not be sent. Check your mail server log" : "El. laiškas nebuvo išsiųstas. Peržiūrėkite savo pašto serverio žurnalą.", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Įvyko klaida išsiunčiant laišką. Prašome peržiūrėkite savo nustatymus. (Klaida: %s)", + "You need to set your user email before being able to send test emails." : "Jūs turite nurodyti elektroninio pašto adresą, kad galėtumėte siųsti testinius el. laiškus.", + "Invalid mail address" : "Neteisingas pašto adresas", + "Settings saved" : "Nustatymai įrašyti", + "Unable to change full name" : "Nepavyko pakeisti vardo ir pavardės", + "Unable to change email address" : "Nepavyko pakeisti el. pašto adresą", + "%1$s changed your password on %2$s." : "%1$s pakeitė jūsų slaptažodį %2$s", + "If you did not request this, please contact an administrator." : "Jeigu nebuvote to užklausę, susisiekite su administratoriumi.", + "The new email address is %s" : "Naujasis el. pašto adresas yra %s", + "Your %s account was created" : "Jūsų paskyra %s sukurta", + "Welcome aboard" : "Sveikiname prisijungus", + "Welcome aboard %s" : "%s, sveikiname prisijungus", + "Welcome to your %s account, you can add, protect, and share your data." : "Turėdami %s paskyrą duomenis galite pridėti, apsaugoti ir jais pasidalinti.", + "Your username is: %s" : "Jūsų naudotojo vardas yra: %s", + "Install Client" : "Įdiegti kliento programą", + "Delete" : "Ištrinti", + "Unlimited" : "Neribotai", + "Migration in progress. Please wait until the migration is finished" : "Vyksta perkėlimas. Palaukite, kol perkėlimas bus užbaigtas", + "Migration started …" : "Perkėlimas pradėtas …", + "Not saved" : "Neįrašyta", + "Sending…" : "Siunčiama…", + "Email sent" : "El. paštas išsiųstas", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Įvyko klaida. Įkelkite ASCII koduotą PEM liudijimą.", + "Valid until {date}" : "Galioja iki {date}", + "Local" : "Vietinis", + "Private" : "Privatu", + "Only visible to local users" : "Matoma tik vietiniams naudotojams", + "Only visible to you" : "Matoma tik jums", + "Contacts" : "Adresatai", + "Visible to local users and to trusted servers" : "Matoma tik vietiniams naudotojams ir patikimiems serveriams", + "Public" : "Vieša", + "Will be synced to a global and public address book" : "Bus sinchronizuota į visuotinę ir viešą adresų knygą", + "Very weak password" : "Labai silpnas slaptažodis", + "Weak password" : "Silpnas slaptažodis", + "So-so password" : "Neblogas slaptažodis", + "Good password" : "Geras slaptažodis", + "Strong password" : "Stiprus slaptažodis", + "An error occurred while changing your language. Please reload the page and try again." : "Keičiant jūsų kalbą, įvyko klaida. Įkelkite puslapį iš naujo ir bandykite dar kartą.", + "An error occurred while changing your locale. Please reload the page and try again." : "Keičiant jūsų lokalę, įvyko klaida. Įkelkite puslapį iš naujo ir bandykite dar kartą.", + "Select a profile picture" : "Pasirinkite profilio paveikslėlį", + "Week starts on {fdow}" : "Savaitės pradžia yra {fdow}", + "Groups" : "Grupės", + "Group list is empty" : "Grupės sąrašas yra tuščias", + "Albanian (Albania)" : "Albanų (Albanija)", + "Albanian" : "Albanų", + "Arabic (Algeria)" : "Arabų (Alžyras)", + "Arabic (Bahrain)" : "Arabų (Bahreinas)", + "Arabic (Egypt)" : "Arabų (Egiptas)", + "Arabic (Iraq)" : "Arabų (Irakas)", + "Arabic (Jordan)" : "Arabų (Jordanija)", + "Arabic (Kuwait)" : "Arabų (Kuveitas)", + "Arabic (Lebanon)" : "Arabų (Libanas)", + "Arabic (Libya)" : "Arabų (Libija)", + "Arabic (Morocco)" : "Arabų (Marokas)", + "Arabic (Oman)" : "Arabų (Omanas)", + "Arabic (Qatar)" : "Arabų (Kataras)", + "Arabic (Saudi Arabia)" : "Arabų (Saudo Arabija)", + "Arabic (Sudan)" : "Arabų (Sudanas)", + "Arabic (Syria)" : "Arabų (Sirija)", + "Arabic (Tunisia)" : "Arabų (Tunisas)", + "Arabic (United Arab Emirates)" : "Arabų (Jungtiniai Arabų Emyratai)", + "Arabic (Yemen)" : "Arabų (Jemenas)", + "Arabic" : "Arabų", + "Chinese" : "Kinų", + "Czech (Czech Republic)" : "Čekų (Čekijos Respublika)", + "Czech" : "Čekų", + "Danish (Denmark)" : "Danų (Danija)", + "Danish" : "Danų", + "English (Australia)" : "Anglų (Australija)", + "English (Belgium)" : "Anglų (Belgija)", + "English (Botswana)" : "Anglų (Botsvana)", + "English (Canada)" : "Anglų (Kanada)", + "English (India)" : "Anglų (Indija)", + "English" : "Anglų", + "Estonian (Estonia)" : "Estų (Estija)", + "Estonian" : "Estų", + "Finnish (Finland)" : "Suomių (Suomija)", + "Finnish" : "Suomių", + "French (Belgium)" : "Prancūzų (Belgija)", + "French (Canada)" : "Prancūzų (Kanada)", + "French" : "Prancūzų", + "German" : "Vokiečių", + "Greek (Cyprus)" : "Graikų (Kipras)", + "Greek (Greece)" : "Graikų (Graikija)", + "Greek" : "Graikų", + "Hebrew (Israel)" : "Hebrajų (Izraelis)", + "Hebrew" : "Hebrajų", + "Hungarian (Hungary)" : "Vengrų (Vengrija)", + "Hungarian" : "Vengrų", + "Italian (Italy)" : "Italų (Italija)", + "Italian (Switzerland)" : "Italų (Šveicarija)", + "Italian" : "Italų", + "Japanese (Japan)" : "Japonų (Japonija)", + "Japanese" : "Japonų", + "Korean (South Korea)" : "Korėjiečių (Pietų Korėja)", + "Korean" : "Korėjiečių", + "Latvian (Latvia)" : "Latvių (Latvija)", + "Latvian" : "Latvių", + "Lithuanian (Lithuania)" : "Lietuvių (Lietuva)", + "Lithuanian" : "Lietuvių", + "Polish (Poland)" : "Lenkų (Lenkija)", + "Polish" : "Lenkų", + "Swedish (Finland)" : "Švedų (Suomija)", + "Swedish (Sweden)" : "Švedų (Švedija)", + "Swedish" : "Švedų", + "Turkish (Turkey)" : "Turkų (Turkija)", + "Turkish" : "Turkų", + "Ukrainian (Ukraine)" : "Ukrainiečių (Ukraina)", + "Ukrainian" : "Ukrainiečių", + "Vietnamese (Vietnam)" : "Vietnamiečių (Vietnamas)", + "Vietnamese" : "Vietnamiečių", + "Save changes" : "Įrašyti pakeitimus", + "Device settings" : "Įrenginio nustatymai", + "Allow filesystem access" : "Leisti prieigą prie failų sistemos", + "Rename" : "Pervadinti", + "Revoke" : "Panaikinti", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome, skirta Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Nextcloud iOS programėlė", + "Nextcloud Android app" : "Nextcloud Android programėlė", + "Sync client - {os}" : "Sinchronizavimo klientas - {os}", + "This session" : "Šis seansas", + "Device" : "Įrenginys", + "Last activity" : "Paskutinė veikla", + "Devices & sessions" : "Įrenginiai ir seansai", + "Web, desktop and mobile clients currently logged in to your account." : "Saityno, darbalaukio ir mobilieji klientai, kurie šiuo metu yra prisijungę prie jūsų paskyros.", + "Error while creating device token" : "Klaida, kuriant įrenginio prieigos raktą", + "Error while deleting the token" : "Klaida, ištrinant prieigos raktą", + "App name" : "Programėlės pavadinimas", + "Create new app password" : "Sukurti naują programėlės slaptažodį", + "Use the credentials below to configure your app or device." : "Naudokite žemiau esančius prisijungimo duomenis, kad galėtumėte konfigūruoti programėlę ar įrenginį.", + "For security reasons this password will only be shown once." : "Saugumo sumetimais šis slaptažodis bus parodytas tik vieną kartą.", + "Username" : "Naudotojo vardas", + "Password" : "Slaptažodis", + "Done" : "Atlikta", + "Copied!" : "Nukopijuota!", + "Copy" : "Kopijuoti", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Oficialios programėlės yra kuriamos bendruomenės viduje ir jas kuria bendruomenė. Šios programėlės siūlo centrinį funkcionalumą ir yra paruoštos kasdieniam naudojimui.", + "Official" : "Oficiali", + "Remove" : "Šalinti", + "Disable" : "Išjungti", + "All" : "Viskas", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Ši programėlė neturi priskirtos žemiausios „Nextcloud“ versijos. Ateityje tai bus klaida.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Ši programėlė neturi priskirtos aukščiausios „Nextcloud“ versijos. Ateityje tai bus klaida.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Programėlė negali būti įdiegta, nes žemiau išvardinti priklausiniai neišpildyti:", + "Visit website" : "Aplankyti svetainę", + "Report a bug" : "Pranešti apie klaidą", + "User documentation" : "Naudotojo dokumentacija", + "Admin documentation" : "Administratoriaus dokumentacija", + "Developer documentation" : "Kūrėjo dokumentacija", + "Update to {update}" : "Atnaujinti į {update}", + "Results from other categories" : "Rezultatai iš kitų kategorijų", + "No apps found for your version" : "Jūsų versijai programėlių nėra", + "Download and enable" : "Atsisiųsti ir įjungti", + "Enable" : "Įjungti", + "The app will be downloaded from the app store" : "Programėlė bus atsisiųsta iš programėlių parduotuvės", + "New password" : "Naujas slaptažodis", + "No language set" : "Nenustatyta jokia kalba", + "Never" : "Niekada", + "Delete user" : "Ištrinti naudotoją", + "Disable user" : "Išjungti naudotoją", + "Enable user" : "Įjungti naudotoją", + "Email" : "El. paštas", + "Quota" : "Limitas", + "Language" : "Kalba", + "Storage location" : "Saugyklos vieta", + "Last login" : "Paskutinis prisijungimas", + "Default language" : "Numatytoji kalba", + "Add a new user" : "Pridėti naują naudotoją", + "No users in here" : "Čia naudotojų nėra", + "Default quota" : "Numatytasis leidžiamas duomenų kiekis", + "Password change is disabled because the master key is disabled" : "Slaptažodžių keitimas išjungtas, nes yra išjungtas pagrindinis raktas", + "All languages" : "Visos kalbos", + "Your apps" : "Jūsų programėlės", + "Active apps" : "Aktyvios programėlės", + "Disabled apps" : "Išjungtos programėlės", + "Updates" : "Atnaujinimai", + "App bundles" : "Programėlių rinkiniai", + "{license}-licensed" : "Licencijuota pagal {license}", + "New user" : "Naujas naudotojas", + "Default quota:" : "Numatytasis leidžiamas duomenų kiekis:", + "Show Languages" : "Rodyti kalbas", + "Show last login" : "Rodyti paskutinį prisijungimą", + "Show user backend" : "Rodyti naudotojo vidų", + "You are about to remove the group {group}. The users will NOT be deleted." : "Jūs ketinate pašalinti grupę {group}. Naudotojai NEBUS ištrinti.", + "Please confirm the group removal " : "Patvirtinkite grupės pašalinimą", + "Remove group" : "Šalinti grupę", + "Admins" : "Administratoriai", + "Disabled users" : "Išjungti naudotojai", + "Everyone" : "Visi", + "Add group" : "Pridėti grupę", + "An error occured during the request. Unable to proceed." : "Užklausos metu, įvyko klaida. Nepavyksta tęsti.", + "Error: This app can not be enabled because it makes the server unstable" : "Klaida: ši programėlė negali būti įjungta, nes ji neigiamai veikia serverio stabilumą", + "SSL Root Certificates" : "SSL šakniniai sertifikatai", + "Common Name" : "Bendrasis vardas", + "Valid until" : "Galioja iki", + "Issued By" : "Išdavė", + "Valid until %s" : "Galioja iki %s", + "Import root certificate" : "Importuoti šakninius sertifikatus", + "Administrator documentation" : "Administratoriaus dokumentacija", + "Documentation" : "Dokumentacija", + "Forum" : "Forumas", + "None" : "Nėra", + "Login" : "Prisijungti", + "Plain" : "Paprastas", + "NT LAN Manager" : "NT LAN tvarkytuvė", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "El. pašto serveris", + "Open documentation" : "Atverti dokumentaciją", + "Send mode" : "Siuntimo veiksena", + "Encryption" : "Šifravimas", + "From address" : "Siuntėjo adresas", + "mail" : "el. paštas", + "Authentication method" : "Autentifikavimo metodas", + "Authentication required" : "Reikalingas tapatybės nustatymas", + "Server address" : "Serverio adresas", + "Port" : "Prievadas", + "Credentials" : "Prisijungimo duomenys", + "SMTP Username" : "SMTP naudotojo vardas", + "SMTP Password" : "SMTP slaptažodis", + "Save" : "Įrašyti", + "Test email settings" : "Išbandyti el. pašto nustatymus", + "Send email" : "Siųsti el. paštą", + "Security & setup warnings" : "Saugumo ir sąrankos įspėjimai", + "All checks passed." : "Visi patikros rezultatai teigiami.", + "There are some errors regarding your setup." : "Yra klaidų, susijusių su jūsų sąranką.", + "There are some warnings regarding your setup." : "Yra įspėjimų, susijusių su jūsų sąranka.", + "Version" : "Versija", + "Server-side encryption" : "Šifravimas serveryje", + "Enable server-side encryption" : "Aktyvuoti šifravimą serveryje", + "Please read carefully before activating server-side encryption: " : "Atidžiai perskaitykite prieš aktyvuodami serverio šifravimą:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Nuo to momento kai šifravimas aktyvuotas, visi failai įkelti į serverį bus užšifruoti ir saugomi serveryje. Vėliau išjungti šifravimą galėsite tik jei šifravimo modulius turi tokią galimybę, ir visos sąlygos (pvz. atstatymo rakto nustatymas) išpildytos.", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Vien tik šifravimas negarantuoja sistemos saugumo. Dokumentacijoje ieškokite daugiau informacijos apie tai, kaip veikia šifravimo programos ir galimus naudojimo scenarijus.", + "Be aware that encryption always increases the file size." : "Turėkite omenyje, kad šifravimas visada padidina failų dydį.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Geroji praktika yra kurti atsargines duomenų kopijas, tik jei kopijuojate šifruotus duomenis, nepamirškite ir pasidaryti iššifravimo rakto atsarginės kopijos.", + "This is the final warning: Do you really want to enable encryption?" : "Tai yra paskutinis įspėjimas: Ar tikrai norite įjungti šifravimą?", + "Enable encryption" : "Įjungti šifravimą", + "No encryption module loaded, please enable an encryption module in the app menu." : "Šifravimo modulis neįkeltas, aktyvuokite šifravimo modulį programėlės meniu.", + "Select default encryption module:" : "Pasirinkite numatytąjį šifravimo modulį:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Jūs turite perkelti savo šifravimo raktus iš senojo šifravimo (ownCloud <= 8.0) į naująjį. Prašome įjungti \"Numatytąjį šifravimo modulį\" ir įvykdyti \"occ encryption:migrate\"", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Jūs turite perkelti savo šifravimo raktus iš senojo šifravimo (ownCloud <= 8.0) į naująjį.", + "Start migration" : "Pradėti perkėlimą", + "Background jobs" : "Foninės užduotys", + "Last job ran %s." : "Paskutinė užduotis buvo vykdyta %s.", + "Last job execution ran %s. Something seems wrong." : "Paskutinės užduoties vykdymas vyko %s. Atrodo, kad kažkas nutiko.", + "Background job didn’t run yet!" : "Foninės užduotys kol kas nebuvo vykdomos!", + "Execute one task with each page loaded" : "Įvykdyti vieną užduotį su kiekvieno puslapio įkėlimu", + "The cron.php needs to be executed by the system user \"%s\"." : "Cron.php turi įvykdyti sistemos naudotojas \"%s\".", + "Sharing" : "Bendrinimas", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Būdami administratoriumi, galite reguliuoti bendrinimo elgseną. Išsamesnei informacijai, žiūrėkite dokumentaciją.", + "Allow apps to use the Share API" : "Leidžia programoms naudoti Share API", + "Allow users to share via link" : "Leisti naudotojams bendrinti per nuorodą", + "Allow public uploads" : "Leisti viešus įkėlimus", + "Always ask for a password" : "Visada prašyti slaptažodžio", + "Enforce password protection" : "Apsaugoti slaptažodžiu", + "Set default expiration date" : "Nustatykite gaiiojimo pabaigą", + "Expire after " : "Galioja iki", + "days" : "dienos", + "Enforce expiration date" : "Įgalinti galiojimo pabaigą", + "Allow resharing" : "Leisti dalintis", + "Allow sharing with groups" : "Leisti dalinimąsi su grupėmis", + "Restrict users to only share with users in their groups" : "Leisti naudotojams dalintis tik su savo grupės nariais", + "Exclude groups from sharing" : "Neleisti grupėms dalintis", + "These groups will still be able to receive shares, but not to initiate them." : "Šios grupės galės atverti pasidalintus failus, bet negalės pasidalinti.", + "Personal" : "Asmeniniai", + "Administration" : "Administravimas", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Sukurta {communityopen}Nextcloud bendruomenės{linkclose}, {githubopen}pirminis kodas{linkclose} yra licencijuotas pagal {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Spauskite \"Patinka\" mūsų Facebook puslapyje", + "Follow us on Twitter" : "Sekite mus Twitter", + "Follow us on Mastodon" : "Sekite mus Mastodon", + "Check out our blog" : "Peržvelkite mūsų tinklaraštį", + "Subscribe to our newsletter" : "Prenumeruokite mūsų naujienlaiškį", + "Profile picture" : "Profilio paveikslėlis", + "Upload new" : "Įkelti naują", + "Select from Files" : "Pasirinkti iš failų", + "Remove image" : "Šalinti paveikslą", + "png or jpg, max. 20 MB" : "png arba jpg, daugiausiai 20 MB", + "Picture provided by original account" : "Paveikslėlis gautas iš pagrindinės paskyros", + "Cancel" : "Atšaukti", + "Choose as profile picture" : "Pasirinkti kaip profilio paveikslėlį", + "Details" : "Išsamiau", + "You are a member of the following groups:" : "Jūs esate šių grupių narys:", + "You are using <strong>%s</strong>" : "Jūs naudojate <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Jūs naudojate <strong>%1$s</strong> iš <strong>%2$s</strong> (<strong>%3$s %%</strong>)", + "Full name" : "Vardas, pavardė", + "No display name set" : "Rodomas vardas nenurodytas", + "Your email address" : "Jūsų el. pašto adresas", + "No email address set" : "Nenustatytas joks el. pašto adresas", + "For password reset and notifications" : "Skirtas slaptažodžio atstatymui ir pranešimams", + "Phone number" : "Telefono numeris", + "Your phone number" : "Jūsų telefono numeris", + "Address" : "Adresas", + "Your postal address" : "Jūsų adresas", + "Website" : "Svetainė", + "Link https://…" : "Nuoroda https://…", + "Twitter" : "Twitter", + "Twitter handle @…" : "Twitter rankenėlė @…", + "Help translate" : "Padėkite išversti", + "Locale" : "Lokalė", + "Current password" : "Dabartinis slaptažodis", + "Change password" : "Pakeisti slaptažodį", + "Disconnect" : "Atsijungti", + "Not supported!" : "Nepalaikoma!", + "Press ⌘-C to copy." : "Nukopijuosite spustelėję ⌘-C.", + "Press Ctrl-C to copy." : "Nukopijuosite spustelėję Ctrl-C.", + "Error while loading browser sessions and device tokens" : "Klaida, įkeliant naršyklės seansus ir įrenginio prieigos raktus", + "Store credentials" : "Išsaugoti prisijungimo duomenis", + "Follow us on Google+" : "Sekite mus Google+" +},"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);" +} \ No newline at end of file diff --git a/apps/settings/l10n/mk.js b/apps/settings/l10n/mk.js new file mode 100644 index 00000000000..def03757bd7 --- /dev/null +++ b/apps/settings/l10n/mk.js @@ -0,0 +1,791 @@ +OC.L10N.register( + "settings", + { + "{actor} added you to group {group}" : "{actor} те додаде во групата {group}", + "You added {user} to group {group}" : "Го додаде {user} во групата {group}", + "{actor} added {user} to group {group}" : "{actor} го додаде {user} во групата {group}", + "An administrator added you to group {group}" : "Администраторот те додаде во групата {group}", + "An administrator added {user} to group {group}" : "Администраторот го додаде {user} во групата {group}", + "{actor} removed you from group {group}" : "{actor} те отстрани од групата {group}", + "You removed {user} from group {group}" : "Го отстрани {user} од групата {group}", + "{actor} removed {user} from group {group}" : "{actor} го отстрани {user} од групата {group}", + "An administrator removed you from group {group}" : "Администраторот те одстрани од групата {group}", + "An administrator removed {user} from group {group}" : "Администраторот го отстрани {user} од групата {group}", + "Your <strong>group memberships</strong> were modified" : "Вашето <strong>групно членство</strong> е изменето", + "{actor} changed your password" : "{actor} ја промени вашата лозика", + "You changed your password" : "Ја променивте вашата лозинка", + "Your password was reset by an administrator" : "Вашата лозинка е ресетирана од страна на администраторот", + "{actor} changed your email address" : "{actor} ја промени вашата адреса на е-пошта", + "You changed your email address" : "Ја променивте вашата адреса на е-пошта", + "Your email address was changed by an administrator" : "Вашата адреса на е-пошта е променета од страна на администраторот", + "You created app password \"{token}\"" : "Креиравте лозинка за апликација \"{token}\"", + "You deleted app password \"{token}\"" : "Избришавте лозинка за апликација \"{token}\"", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Ја променивте лозинката за апликација \"{token}\" во \"{newToken}\"", + "Security" : "Безбедност", + "You successfully logged in using two-factor authentication (%1$s)" : "Успешно се најавивте со користење на двофакторна автентикација (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Неуспешен обид за најава со двофакторна автентикација (%1$s)", + "Remote wipe was started on %1$s" : "Далечинското бришење е започна на  %1$s", + "Remote wipe has finished on %1$s" : "Далечинското бришење заврши на %1$s", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Вашата <strong>лозинка</strong> или <strong>е-пошта</strong> е променета", + "Couldn't remove app." : "Не можам да ја отстранам апликацијата.", + "Couldn't update app." : "Не можам да ја надградам апликацијата.", + "Wrong password" : "Погрешна лозинка", + "Saved" : "Снимено", + "No user supplied" : "Нема корисничко име", + "Unable to change password" : "Неможе да се промени лозинката", + "Authentication error" : "Грешка во автентикација", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Ве молам дадете лозинка за поврат на администраторот; во спротивно, сите кориснички податоци ќе бидат изгубени.", + "Wrong admin recovery password. Please check the password and try again." : "Погрешна лозинка за поврат на администраторот. Ве молам проверете ја лозинката и пробајте повторно.", + "Federated Cloud Sharing" : "Федерирано клауд споделување", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL користи застарена %1$s верзија (%2$s). Ве молиме ажурирајте го вашиот оперативен систем или можностите како %3$s нема да работат безбедно.", + "Invalid SMTP password." : "Грешна SMTP лозинка.", + "Email setting test" : "Тест за параметри на е-пошта", + "Well done, %s!" : "Добро сторено, %s!", + "If you received this email, the email configuration seems to be correct." : "Ако ја примивте оваа порака, тоа значи дека конфигурацијата за е-пошта е правилно поставена.", + "Email could not be sent. Check your mail server log" : "Порака преку Е-пошта неможе да се испрати. Проверете го записот во е-пошта серверот", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Се случи грешка при праќање на порака. Ве молам проверете ги вашите параметри. (Error: %s)", + "You need to set your user email before being able to send test emails." : "Треба да ја поставите вашата е-пошта адреса пред да можете да испратите тест пораки.", + "Invalid mail address" : "Неправилна електронска адреса/пошта", + "Settings saved" : "Параматрите се зачувани", + "Unable to change full name" : "Не можам да го променам целото име", + "Unable to change email address" : "Не можам да ја променам е-пошта адресата", + "%1$s changed your password on %2$s." : "%1$s ја промени вашата лозинка на %2$s.", + "Your password on %s was changed." : "Вашата лозинка на %s е променета.", + "Your password on %s was reset by an administrator." : "Вашата лозинка на %s беше ресетирана од страна на администраторот.", + "Password for %1$s changed on %2$s" : "Лозинката на %1$s е променета на %2$s", + "Password changed for %s" : "Лозинката на %s е променета", + "If you did not request this, please contact an administrator." : "Ако не сте го побарале ова, ве молиме контактирајте со администраторот.", + "Your email address on %s was changed." : "Вашата адреса за е-пошта на %s беше променета.", + "Your email address on %s was changed by an administrator." : "Вашата адреса за е-пошта на %s беше променета од страна на администраторот.", + "Email address for %1$s changed on %2$s" : "Адресата за е-пошта за %1$s е променета на %2$s", + "Email address changed for %s" : "Адресата за е-пошта за %s е променета", + "The new email address is %s" : "Новата адреса за е-пошта е %s", + "Your %s account was created" : "Вашата %s сметка е креирана", + "Welcome aboard" : "Добредојдовте", + "Welcome aboard %s" : "Добредојдовте %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Добредојдовте на вашата %s сметка, вие можете да додавате, чувате и да ги споделувате вашите податоци.", + "Your username is: %s" : "Вашето корисничко име е: %s", + "Set your password" : "Поставете ваша лозинка", + "Go to %s" : "Оди до %s", + "Install Client" : "Инсталирај клиент", + "Create" : "Креирај", + "Change" : "Измени", + "Delete" : "Избриши", + "Share" : "Сподели", + "Unlimited" : "Неограничено", + "Verifying" : "Потврдување", + "Verifying …" : "Потврдување …", + "Verify" : "Потврди", + "Migration in progress. Please wait until the migration is finished" : "Миграцијата е во тек. Ве молиме почекајте додека миграцијата заврши", + "Migration started …" : "Миграцијата е започнаа ...", + "Not saved" : "Не е зачувано", + "Sending…" : "Испраќа…", + "Email sent" : "Е-порака пратена", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Настана грешка. Ве молиме прикачете го PEM сертификатот во ASCII-кодна форма.", + "Valid until {date}" : "Валидно до {date}", + "Local" : "Локално", + "Private" : "Приватност", + "Only visible to local users" : "Видливо само за локални корисници", + "Only visible to you" : "Видливо само за вас", + "Contacts" : "Контакти", + "Visible to local users and to trusted servers" : "Видливо за локални корисници и доверливи сервери.", + "Public" : "Јавно", + "Will be synced to a global and public address book" : "Ќе биде синхронизирано на глобалниот и јавниот адресар", + "Very weak password" : "Многу слаба лозинка", + "Weak password" : "Слаба лозинка", + "So-so password" : "Така така лозинка", + "Good password" : "Добра лозинка", + "Strong password" : "Јака лозинка", + "An error occurred while changing your language. Please reload the page and try again." : "настана грешка при промена на јазикот. Ве молиме обидете се повторно.", + "Select a profile picture" : "Одбери фотографија за профилот", + "Week starts on {fdow}" : "Неделата започнува во {fdow}", + "Groups" : "Групи", + "Group list is empty" : "Листата во групата е празна", + "Afrikaans (Namibia)" : "Afrikaans (Namibia)", + "Afrikaans (South Africa)" : "Afrikaans (South Africa)", + "Afrikaans" : "Afrikaans", + "Akan (Ghana)" : "Akan (Ghana)", + "Akan" : "Akan", + "Albanian (Albania)" : "Albanian (Albania)", + "Albanian" : "Albanian", + "Amharic (Ethiopia)" : "Amharic (Ethiopia)", + "Amharic" : "Amharic", + "Arabic (Algeria)" : "Arabic (Algeria)", + "Arabic (Bahrain)" : "Arabic (Bahrain)", + "Arabic (Egypt)" : "Arabic (Egypt)", + "Arabic (Iraq)" : "Arabic (Iraq)", + "Arabic (Jordan)" : "Arabic (Jordan)", + "Arabic (Kuwait)" : "Arabic (Kuwait)", + "Arabic (Lebanon)" : "Arabic (Lebanon)", + "Arabic (Libya)" : "Arabic (Libya)", + "Arabic (Morocco)" : "Arabic (Morocco)", + "Arabic (Oman)" : "Arabic (Oman)", + "Arabic (Qatar)" : "Arabic (Qatar)", + "Arabic (Saudi Arabia)" : "Arabic (Saudi Arabia)", + "Arabic (Sudan)" : "Arabic (Sudan)", + "Arabic (Syria)" : "Arabic (Syria)", + "Arabic (Tunisia)" : "Arabic (Tunisia)", + "Arabic (United Arab Emirates)" : "Arabic (United Arab Emirates)", + "Arabic (Yemen)" : "Arabic (Yemen)", + "Arabic" : "Arabic", + "Armenian (Armenia)" : "Armenian (Armenia)", + "Armenian" : "Armenian", + "Assamese (India)" : "Assamese (India)", + "Assamese" : "Assamese", + "Asu (Tanzania)" : "Asu (Tanzania)", + "Asu" : "Asu", + "Azerbaijani (Cyrillic)" : "Azerbaijani (Cyrillic)", + "Azerbaijani (Cyrillic, Azerbaijan)" : "Azerbaijani (Cyrillic, Azerbaijan)", + "Azerbaijani (Latin)" : "Azerbaijani (Latin)", + "Azerbaijani (Latin, Azerbaijan)" : "Azerbaijani (Latin, Azerbaijan)", + "Azerbaijani" : "Azerbaijani", + "Bambara (Mali)" : "Bambara (Mali)", + "Bambara" : "Bambara", + "Basque (Spain)" : "Basque (Spain)", + "Basque" : "Basque", + "Belarusian (Belarus)" : "Belarusian (Belarus)", + "Belarusian" : "Belarusian", + "Bemba (Zambia)" : "Bemba (Zambia)", + "Bemba" : "Bemba", + "Bena (Tanzania)" : "Bena (Tanzania)", + "Bena" : "Bena", + "Bengali (Bangladesh)" : "Bengali (Bangladesh)", + "Bengali (India)" : "Bengali (India)", + "Bengali" : "Bengali", + "Bosnian (Bosnia and Herzegovina)" : "Bosnian (Bosnia and Herzegovina)", + "Bosnian" : "Bosnian", + "Bulgarian (Bulgaria)" : "Bulgarian (Bulgaria)", + "Bulgarian" : "Bulgarian", + "Burmese (Myanmar [Burma])" : "Burmese (Myanmar [Burma])", + "Burmese" : "Burmese", + "Catalan (Spain)" : "Catalan (Spain)", + "Catalan" : "Catalan", + "Central Morocco Tamazight (Latin)" : "Central Morocco Tamazight (Latin)", + "Central Morocco Tamazight (Latin, Morocco)" : "Central Morocco Tamazight (Latin, Morocco)", + "Central Morocco Tamazight" : "Central Morocco Tamazight", + "Cherokee (United States)" : "Cherokee (United States)", + "Cherokee" : "Cherokee", + "Chiga (Uganda)" : "Chiga (Uganda)", + "Chiga" : "Chiga", + "Chinese (Simplified Han)" : "Chinese (Simplified Han)", + "Chinese (Simplified Han, China)" : "Chinese (Simplified Han, China)", + "Chinese (Simplified Han, Hong Kong SAR China)" : "Chinese (Simplified Han, Hong Kong SAR China)", + "Chinese (Simplified Han, Macau SAR China)" : "Chinese (Simplified Han, Macau SAR China)", + "Chinese (Simplified Han, Singapore)" : "Chinese (Simplified Han, Singapore)", + "Chinese (Traditional Han)" : "Chinese (Traditional Han)", + "Chinese (Traditional Han, Hong Kong SAR China)" : "Chinese (Traditional Han, Hong Kong SAR China)", + "Chinese (Traditional Han, Macau SAR China)" : "Chinese (Traditional Han, Macau SAR China)", + "Chinese (Traditional Han, Taiwan)" : "Chinese (Traditional Han, Taiwan)", + "Chinese" : "Chinese", + "Cornish (United Kingdom)" : "Cornish (United Kingdom)", + "Cornish" : "Cornish", + "Croatian (Croatia)" : "Croatian (Croatia)", + "Croatian" : "Croatian", + "Czech (Czech Republic)" : "Czech (Czech Republic)", + "Czech" : "Czech", + "Danish (Denmark)" : "Danish (Denmark)", + "Danish" : "Danish", + "Dutch (Belgium)" : "Dutch (Belgium)", + "Dutch (Netherlands)" : "Dutch (Netherlands)", + "Dutch" : "Dutch", + "Embu (Kenya)" : "Embu (Kenya)", + "Embu" : "Embu", + "English (American Samoa)" : "English (American Samoa)", + "English (Australia)" : "English (Australia)", + "English (Belgium)" : "English (Belgium)", + "English (Belize)" : "English (Belize)", + "English (Botswana)" : "English (Botswana)", + "English (Canada)" : "English (Canada)", + "English (Guam)" : "English (Guam)", + "English (Hong Kong SAR China)" : "English (Hong Kong SAR China)", + "English (India)" : "English (India)", + "English (Ireland)" : "English (Ireland)", + "English (Jamaica)" : "English (Jamaica)", + "English (Malta)" : "English (Malta)", + "English (Marshall Islands)" : "English (Marshall Islands)", + "English (Mauritius)" : "English (Mauritius)", + "English (Namibia)" : "English (Namibia)", + "English (New Zealand)" : "English (New Zealand)", + "English (Northern Mariana Islands)" : "English (Northern Mariana Islands)", + "English (Pakistan)" : "English (Pakistan)", + "English (Philippines)" : "English (Philippines)", + "English (Singapore)" : "English (Singapore)", + "English (South Africa)" : "English (South Africa)", + "English (Trinidad and Tobago)" : "English (Trinidad and Tobago)", + "English (U.S. Minor Outlying Islands)" : "English (U.S. Minor Outlying Islands)", + "English (U.S. Virgin Islands)" : "English (U.S. Virgin Islands)", + "English (United Kingdom)" : "English (United Kingdom)", + "English (United States)" : "English (United States)", + "English (Zimbabwe)" : "English (Zimbabwe)", + "English" : "English", + "Esperanto" : "Esperanto", + "Estonian (Estonia)" : "Estonian (Estonia)", + "Estonian" : "Estonian", + "Ewe (Ghana)" : "Ewe (Ghana)", + "Ewe (Togo)" : "Ewe (Togo)", + "Ewe" : "Ewe", + "Faroese (Faroe Islands)" : "Faroese (Faroe Islands)", + "Faroese" : "Faroese", + "Filipino (Philippines)" : "Filipino (Philippines)", + "Filipino" : "Filipino", + "Finnish (Finland)" : "Finnish (Finland)", + "Finnish" : "Finnish", + "French (Belgium)" : "French (Belgium)", + "French (Benin)" : "French (Benin)", + "French (Burkina Faso)" : "French (Burkina Faso)", + "French (Burundi)" : "French (Burundi)", + "French (Cameroon)" : "French (Cameroon)", + "French (Canada)" : "French (Canada)", + "French (Central African Republic)" : "French (Central African Republic)", + "French (Chad)" : "French (Chad)", + "French (Comoros)" : "French (Comoros)", + "French (Congo - Brazzaville)" : "French (Congo - Brazzaville)", + "French (Congo - Kinshasa)" : "French (Congo - Kinshasa)", + "French (Côte d’Ivoire)" : "French (Côte d’Ivoire)", + "French (Djibouti)" : "French (Djibouti)", + "French (Equatorial Guinea)" : "French (Equatorial Guinea)", + "French (France)" : "French (France)", + "French (Gabon)" : "French (Gabon)", + "French (Guadeloupe)" : "French (Guadeloupe)", + "French (Guinea)" : "French (Guinea)", + "French (Luxembourg)" : "French (Luxembourg)", + "French (Madagascar)" : "French (Madagascar)", + "French (Mali)" : "French (Mali)", + "French (Martinique)" : "French (Martinique)", + "French (Monaco)" : "French (Monaco)", + "French (Niger)" : "French (Niger)", + "French (Rwanda)" : "French (Rwanda)", + "French (Réunion)" : "French (Réunion)", + "French (Saint Barthélemy)" : "French (Saint Barthélemy)", + "French (Saint Martin)" : "French (Saint Martin)", + "French (Senegal)" : "French (Senegal)", + "French (Switzerland)" : "French (Switzerland)", + "French (Togo)" : "French (Togo)", + "French" : "French", + "Fulah (Senegal)" : "Fulah (Senegal)", + "Fulah" : "Fulah", + "Galician (Spain)" : "Galician (Spain)", + "Galician" : "Galician", + "Ganda (Uganda)" : "Ganda (Uganda)", + "Ganda" : "Ganda", + "Georgian (Georgia)" : "Georgian (Georgia)", + "Georgian" : "Georgian", + "German (Austria)" : "German (Austria)", + "German (Belgium)" : "German (Belgium)", + "German (Germany)" : "German (Germany)", + "German (Liechtenstein)" : "German (Liechtenstein)", + "German (Luxembourg)" : "German (Luxembourg)", + "German (Switzerland)" : "German (Switzerland)", + "German" : "German", + "Greek (Cyprus)" : "Greek (Cyprus)", + "Greek (Greece)" : "Greek (Greece)", + "Greek" : "Greek", + "Gujarati (India)" : "Gujarati (India)", + "Gujarati" : "Gujarati", + "Gusii (Kenya)" : "Gusii (Kenya)", + "Gusii" : "Gusii", + "Hausa (Latin)" : "Hausa (Latin)", + "Hausa (Latin, Ghana)" : "Hausa (Latin, Ghana)", + "Hausa (Latin, Niger)" : "Hausa (Latin, Niger)", + "Hausa (Latin, Nigeria)" : "Hausa (Latin, Nigeria)", + "Hausa" : "Hausa", + "Hawaiian (United States)" : "Hawaiian (United States)", + "Hawaiian" : "Hawaiian", + "Hebrew (Israel)" : "Hebrew (Israel)", + "Hebrew" : "Hebrew", + "Hindi (India)" : "Hindi (India)", + "Hindi" : "Hindi", + "Hungarian (Hungary)" : "Hungarian (Hungary)", + "Hungarian" : "Hungarian", + "Icelandic (Iceland)" : "Icelandic (Iceland)", + "Icelandic" : "Icelandic", + "Igbo (Nigeria)" : "Igbo (Nigeria)", + "Igbo" : "Igbo", + "Indonesian (Indonesia)" : "Indonesian (Indonesia)", + "Indonesian" : "Indonesian", + "Irish (Ireland)" : "Irish (Ireland)", + "Irish" : "Irish", + "Italian (Italy)" : "Italian (Italy)", + "Italian (Switzerland)" : "Italian (Switzerland)", + "Italian" : "Italian", + "Japanese (Japan)" : "Japanese (Japan)", + "Japanese" : "Japanese", + "Kabuverdianu (Cape Verde)" : "Kabuverdianu (Cape Verde)", + "Kabuverdianu" : "Kabuverdianu", + "Kabyle (Algeria)" : "Kabyle (Algeria)", + "Kabyle" : "Kabyle", + "Kalaallisut (Greenland)" : "Kalaallisut (Greenland)", + "Kalaallisut" : "Kalaallisut", + "Kalenjin (Kenya)" : "Kalenjin (Kenya)", + "Kalenjin" : "Kalenjin", + "Kamba (Kenya)" : "Kamba (Kenya)", + "Kamba" : "Kamba", + "Kannada (India)" : "Kannada (India)", + "Kannada" : "Kannada", + "Kazakh (Cyrillic)" : "Kazakh (Cyrillic)", + "Kazakh (Cyrillic, Kazakhstan)" : "Kazakh (Cyrillic, Kazakhstan)", + "Kazakh" : "Kazakh", + "Khmer (Cambodia)" : "Khmer (Cambodia)", + "Khmer" : "Khmer", + "Kikuyu (Kenya)" : "Kikuyu (Kenya)", + "Kikuyu" : "Kikuyu", + "Kinyarwanda (Rwanda)" : "Kinyarwanda (Rwanda)", + "Kinyarwanda" : "Kinyarwanda", + "Konkani (India)" : "Konkani (India)", + "Konkani" : "Konkani", + "Korean (South Korea)" : "Korean (South Korea)", + "Korean" : "Korean", + "Koyra Chiini (Mali)" : "Koyra Chiini (Mali)", + "Koyra Chiini" : "Koyra Chiini", + "Koyraboro Senni (Mali)" : "Koyraboro Senni (Mali)", + "Koyraboro Senni" : "Koyraboro Senni", + "Langi (Tanzania)" : "Langi (Tanzania)", + "Langi" : "Langi", + "Latvian (Latvia)" : "Latvian (Latvia)", + "Latvian" : "Latvian", + "Lithuanian (Lithuania)" : "Lithuanian (Lithuania)", + "Lithuanian" : "Lithuanian", + "Luo (Kenya)" : "Luo (Kenya)", + "Luo" : "Luo", + "Luyia (Kenya)" : "Luyia (Kenya)", + "Luyia" : "Luyia", + "Macedonian (Macedonia)" : "Македонски (Македонија)", + "Macedonian" : "Македонски", + "Machame (Tanzania)" : "Machame (Tanzania)", + "Machame" : "Machame", + "Makonde (Tanzania)" : "Makonde (Tanzania)", + "Makonde" : "Makonde", + "Malagasy (Madagascar)" : "Malagasy (Madagascar)", + "Malagasy" : "Malagasy", + "Malay (Brunei)" : "Malay (Brunei)", + "Malay (Malaysia)" : "Malay (Malaysia)", + "Malay" : "Malay", + "Malayalam (India)" : "Malayalam (India)", + "Malayalam" : "Malayalam", + "Maltese (Malta)" : "Maltese (Malta)", + "Maltese" : "Maltese", + "Manx (United Kingdom)" : "Manx (United Kingdom)", + "Manx" : "Manx", + "Marathi (India)" : "Marathi (India)", + "Marathi" : "Marathi", + "Masai (Kenya)" : "Masai (Kenya)", + "Masai (Tanzania)" : "Masai (Tanzania)", + "Masai" : "Masai", + "Meru (Kenya)" : "Meru (Kenya)", + "Meru" : "Meru", + "Morisyen (Mauritius)" : "Morisyen (Mauritius)", + "Morisyen" : "Morisyen", + "Nama (Namibia)" : "Nama (Namibia)", + "Nama" : "Nama", + "Nepali (India)" : "Nepali (India)", + "Nepali (Nepal)" : "Nepali (Nepal)", + "Nepali" : "Nepali", + "North Ndebele (Zimbabwe)" : "North Ndebele (Zimbabwe)", + "North Ndebele" : "North Ndebele", + "Norwegian Bokmål (Norway)" : "Norwegian Bokmål (Norway)", + "Norwegian Bokmål" : "Norwegian Bokmål", + "Norwegian Nynorsk (Norway)" : "Norwegian Nynorsk (Norway)", + "Norwegian Nynorsk" : "Norwegian Nynorsk", + "Nyankole (Uganda)" : "Nyankole (Uganda)", + "Nyankole" : "Nyankole", + "Oriya (India)" : "Oriya (India)", + "Oriya" : "Oriya", + "Oromo (Ethiopia)" : "Oromo (Ethiopia)", + "Oromo (Kenya)" : "Oromo (Kenya)", + "Oromo" : "Oromo", + "Pashto (Afghanistan)" : "Pashto (Afghanistan)", + "Pashto" : "Pashto", + "Persian (Afghanistan)" : "Persian (Afghanistan)", + "Persian (Iran)" : "Persian (Iran)", + "Persian" : "Persian", + "Polish (Poland)" : "Polish (Poland)", + "Polish" : "Polish", + "Portuguese (Brazil)" : "Portuguese (Brazil)", + "Portuguese (Guinea-Bissau)" : "Portuguese (Guinea-Bissau)", + "Portuguese (Mozambique)" : "Portuguese (Mozambique)", + "Portuguese (Portugal)" : "Portuguese (Portugal)", + "Portuguese" : "Portuguese", + "Punjabi (Arabic)" : "Punjabi (Arabic)", + "Punjabi (Arabic, Pakistan)" : "Punjabi (Arabic, Pakistan)", + "Punjabi (Gurmukhi)" : "Punjabi (Gurmukhi)", + "Punjabi (Gurmukhi, India)" : "Punjabi (Gurmukhi, India)", + "Punjabi" : "Punjabi", + "Romanian (Moldova)" : "Romanian (Moldova)", + "Romanian (Romania)" : "Romanian (Romania)", + "Romanian" : "Romanian", + "Romansh (Switzerland)" : "Romansh (Switzerland)", + "Romansh" : "Romansh", + "Rombo (Tanzania)" : "Rombo (Tanzania)", + "Rombo" : "Rombo", + "Russian (Moldova)" : "Russian (Moldova)", + "Russian (Russia)" : "Russian (Russia)", + "Russian (Ukraine)" : "Russian (Ukraine)", + "Russian" : "Russian", + "Rwa (Tanzania)" : "Rwa (Tanzania)", + "Rwa" : "Rwa", + "Samburu (Kenya)" : "Samburu (Kenya)", + "Samburu" : "Samburu", + "Sango (Central African Republic)" : "Sango (Central African Republic)", + "Sango" : "Sango", + "Sena (Mozambique)" : "Sena (Mozambique)", + "Sena" : "Sena", + "Serbian (Cyrillic)" : "Serbian (Cyrillic)", + "Serbian (Cyrillic, Bosnia and Herzegovina)" : "Serbian (Cyrillic, Bosnia and Herzegovina)", + "Serbian (Cyrillic, Montenegro)" : "Serbian (Cyrillic, Montenegro)", + "Serbian (Cyrillic, Serbia)" : "Serbian (Cyrillic, Serbia)", + "Serbian (Latin)" : "Serbian (Latin)", + "Serbian (Latin, Bosnia and Herzegovina)" : "Serbian (Latin, Bosnia and Herzegovina)", + "Serbian (Latin, Montenegro)" : "Serbian (Latin, Montenegro)", + "Serbian (Latin, Serbia)" : "Serbian (Latin, Serbia)", + "Serbian" : "Serbian", + "Shona (Zimbabwe)" : "Shona (Zimbabwe)", + "Shona" : "Shona", + "Sichuan Yi (China)" : "Sichuan Yi (China)", + "Sichuan Yi" : "Sichuan Yi", + "Sinhala (Sri Lanka)" : "Sinhala (Sri Lanka)", + "Sinhala" : "Sinhala", + "Slovak (Slovakia)" : "Slovak (Slovakia)", + "Slovak" : "Slovak", + "Slovenian (Slovenia)" : "Slovenian (Slovenia)", + "Slovenian" : "Slovenian", + "Soga (Uganda)" : "Soga (Uganda)", + "Soga" : "Soga", + "Somali (Djibouti)" : "Somali (Djibouti)", + "Somali (Ethiopia)" : "Somali (Ethiopia)", + "Somali (Kenya)" : "Somali (Kenya)", + "Somali (Somalia)" : "Somali (Somalia)", + "Somali" : "Somali", + "Spanish (Argentina)" : "Spanish (Argentina)", + "Spanish (Bolivia)" : "Spanish (Bolivia)", + "Spanish (Chile)" : "Spanish (Chile)", + "Spanish (Colombia)" : "Spanish (Colombia)", + "Spanish (Costa Rica)" : "Spanish (Costa Rica)", + "Spanish (Dominican Republic)" : "Spanish (Dominican Republic)", + "Spanish (Ecuador)" : "Spanish (Ecuador)", + "Spanish (El Salvador)" : "Spanish (El Salvador)", + "Spanish (Equatorial Guinea)" : "Spanish (Equatorial Guinea)", + "Spanish (Guatemala)" : "Spanish (Guatemala)", + "Spanish (Honduras)" : "Spanish (Honduras)", + "Spanish (Latin America)" : "Spanish (Latin America)", + "Spanish (Mexico)" : "Spanish (Mexico)", + "Spanish (Nicaragua)" : "Spanish (Nicaragua)", + "Spanish (Panama)" : "Spanish (Panama)", + "Spanish (Paraguay)" : "Spanish (Paraguay)", + "Spanish (Peru)" : "Spanish (Peru)", + "Spanish (Puerto Rico)" : "Spanish (Puerto Rico)", + "Spanish (Spain)" : "Spanish (Spain)", + "Spanish (United States)" : "Spanish (United States)", + "Spanish (Uruguay)" : "Spanish (Uruguay)", + "Spanish (Venezuela)" : "Spanish (Venezuela)", + "Spanish" : "Spanish", + "Swahili (Kenya)" : "Swahili (Kenya)", + "Swahili (Tanzania)" : "Swahili (Tanzania)", + "Swahili" : "Swahili", + "Swedish (Finland)" : "Swedish (Finland)", + "Swedish (Sweden)" : "Swedish (Sweden)", + "Swedish" : "Swedish", + "Swiss German (Switzerland)" : "Swiss German (Switzerland)", + "Swiss German" : "Swiss German", + "Tachelhit (Latin)" : "Tachelhit (Latin)", + "Tachelhit (Latin, Morocco)" : "Tachelhit (Latin, Morocco)", + "Tachelhit (Tifinagh)" : "Tachelhit (Tifinagh)", + "Tachelhit (Tifinagh, Morocco)" : "Tachelhit (Tifinagh, Morocco)", + "Tachelhit" : "Tachelhit", + "Taita (Kenya)" : "Taita (Kenya)", + "Taita" : "Taita", + "Tamil (India)" : "Tamil (India)", + "Tamil (Sri Lanka)" : "Tamil (Sri Lanka)", + "Tamil" : "Tamil", + "Telugu (India)" : "Telugu (India)", + "Telugu" : "Telugu", + "Teso (Kenya)" : "Teso (Kenya)", + "Teso (Uganda)" : "Teso (Uganda)", + "Teso" : "Teso", + "Thai (Thailand)" : "Thai (Thailand)", + "Thai" : "Thai", + "Tibetan (China)" : "Tibetan (China)", + "Tibetan (India)" : "Tibetan (India)", + "Tibetan" : "Tibetan", + "Tigrinya (Eritrea)" : "Tigrinya (Eritrea)", + "Tigrinya (Ethiopia)" : "Tigrinya (Ethiopia)", + "Tigrinya" : "Tigrinya", + "Tonga (Tonga)" : "Tonga (Tonga)", + "Tonga" : "Tonga", + "Turkish (Turkey)" : "Turkish (Turkey)", + "Turkish" : "Turkish", + "Ukrainian (Ukraine)" : "Ukrainian (Ukraine)", + "Ukrainian" : "Ukrainian", + "Urdu (India)" : "Urdu (India)", + "Urdu (Pakistan)" : "Urdu (Pakistan)", + "Urdu" : "Urdu", + "Uzbek (Arabic)" : "Uzbek (Arabic)", + "Uzbek (Arabic, Afghanistan)" : "Uzbek (Arabic, Afghanistan)", + "Uzbek (Cyrillic)" : "Uzbek (Cyrillic)", + "Uzbek (Cyrillic, Uzbekistan)" : "Uzbek (Cyrillic, Uzbekistan)", + "Uzbek (Latin)" : "Uzbek (Latin)", + "Uzbek (Latin, Uzbekistan)" : "Uzbek (Latin, Uzbekistan)", + "Uzbek" : "Uzbek", + "Vietnamese (Vietnam)" : "Vietnamese (Vietnam)", + "Vietnamese" : "Vietnamese", + "Vunjo (Tanzania)" : "Vunjo (Tanzania)", + "Vunjo" : "Vunjo", + "Welsh (United Kingdom)" : "Welsh (United Kingdom)", + "Welsh" : "Welsh", + "Yoruba (Nigeria)" : "Yoruba (Nigeria)", + "Yoruba" : "Yoruba", + "Zulu (South Africa)" : "Zulu (South Africa)", + "Zulu" : "Zulu", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Двофакторна автентикација може да биде задолжителна за сите\tкорисници и одредени групи. Доколку корисниците немаат поставено провајдер за двофакторна автентикација, нема да можат да се најават на системот.", + "Enforce two-factor authentication" : "Задолжителна двофакторна автентикација", + "Limit to groups" : "Огранилчвање на групи", + "Enforcement of two-factor authentication can be set for certain groups only." : "Задолжителна двофакторна автентикација може да се постави само за одредени групи.", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "Двофакторна автентикација е задолжителна за сите\tчленовите во следните групи.", + "Enforced groups" : "Задолжителни групи", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "Двофакторна автентикација не е задолжителна за\tчленовите во следните групи.", + "Excluded groups" : "Исклучени групи", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "Кога се избираат/исклучуваат групи, се користи следната постапка за утврдување дали корисникот задолжително ќе користи двофакторна автентификација: Ако нема избрано групи, двофакторна автентификација е овозможена за секој освен за членовите во исклучените групи. Ако еден корисник е член во две групи избрана и исклучена, тогаш тој корисник задолжително мора да користи двофакторна автентификација.", + "Save changes" : "Зачувај ги промените", + "Marked for remote wipe" : "Означи како оддалечен уред", + "Device settings" : "Параметри за уреди", + "Allow filesystem access" : "Дозвола за пристап до податоци", + "Rename" : "Преименувај", + "Revoke" : "Одземи", + "Wipe device" : "Отстрани уред", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome for Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Nextcloud iOS app", + "Nextcloud Android app" : "Nextcloud Android app", + "Nextcloud Talk for iOS" : "Nextcloud разговор за iOS", + "Nextcloud Talk for Android" : "Nextcloud разговор за Android", + "Sync client - {os}" : "Клиент за синхронизација - {os}", + "This session" : "Оваа сесија", + "Device" : "Уред", + "Last activity" : "Последна активност", + "Devices & sessions" : "Уреди и сесии", + "Web, desktop and mobile clients currently logged in to your account." : "Клиенти за веб, компјутер и мобелен моментално се поврзани на твојата сметка.", + "Do you really want to wipe your data from this device?" : "Дали навистина сакате да ја избришете содржината од овој уред?", + "Confirm wipe" : "Потврди отстранување", + "Error while creating device token" : "Грешка при креирање на токен за уред", + "Error while updating device token name" : "Грешка при промена на името за токен на уред", + "Error while deleting the token" : "Грешка при бришење на токен", + "Error while wiping the device with the token" : "Грешка при отстранување на уред со токен", + "App name" : "Име на апликација", + "Create new app password" : "Креирај нова лозинка за апликација", + "Use the credentials below to configure your app or device." : "Користи ги следните акредитиви за конфигурирање на апликацијата или уредот.", + "For security reasons this password will only be shown once." : "Поради безбедносни причини лозинката ќе биде прикажана само еднаш.", + "Username" : "Корисничко име", + "Password" : "Лозинка", + "Done" : "Готово", + "Show QR code for mobile apps" : "Прикажи QR код за апликација на мобилен телефон", + "Copied!" : "Копирано!", + "Copy" : "Копирај", + "Could not copy app password. Please copy it manually." : "Неможе да се копира лозинката за апликација. Ве молиме копирајте ја рачно.", + "This app is supported via your current Nextcloud subscription." : "Оваа апликација е е дозволена за вашиот налог.", + "Supported" : "Поддржано", + "Official" : "Официјален", + "by" : "од", + "Update to {version}" : "Надгради на {version}", + "Remove" : "Одстрани", + "Disable" : "Оневозможи", + "All" : "Сите", + "Limit app usage to groups" : "Ограничување за користење на апликации во групи", + "No results" : "Нема резултати", + "Visit website" : "Посети ја веб страната", + "Report a bug" : "Пријави грешка", + "User documentation" : "Документација за корисник", + "Admin documentation" : "Документација за администратор", + "Developer documentation" : "Документација за програмери", + "Update to {update}" : "Надгради на {update}", + "Results from other categories" : "Резултати од други категории", + "No apps found for your version" : "За вашата верзија не се пронајдени апликации", + "Disable all" : "Оневозможи ги сите", + "Enable all" : "Овозможи ги сите", + "Download and enable" : "Превземи и овозможи", + "Enable" : "Овозможи", + "Enable untested app" : "Овозможи не тестирана апликација", + "You do not have permissions to see the details of this user" : "Немате дозвола за да ги гледате деталите на овој корисник", + "New password" : "Нова лозинка", + "Add user in group" : "Додади корисник во група", + "Select user quota" : "Избери квота за корисник", + "No language set" : "Не е поставен јазик", + "Never" : "Никогаш", + "Delete user" : "Избриши корисник", + "Wipe all devices" : "Отстрани ги сите уреди", + "Disable user" : "Оневозможи корисник", + "Enable user" : "Овозможи корисник", + "Resend welcome email" : "Повторно испрати е-пошта порака за добредојде", + "{size} used" : "искористено {size}", + "Welcome mail sent!" : "Испратена е-пошта порака за добредојде!", + "Display name" : "Име и презиме", + "Email" : "Е-пошта", + "Quota" : "Квота", + "Language" : "Јазик", + "Storage location" : "Локација на складиште", + "Last login" : "Последно најавување", + "Will be autogenerated" : "Ќе бидат автоматски генерирани", + "Default language" : "Стајдарден јазик", + "Add a new user" : "Додади нов корисник", + "No users in here" : "Тука нема корисници", + "Default quota" : "Стандардна квота", + "Password change is disabled because the master key is disabled" : "Ресетирање на лозинка е оневозможено бидејќи главниот клуч е оневозможен", + "Common languages" : "Заеднички јазици", + "All languages" : "Сите јазици", + "Your apps" : "Ваши апликации", + "Active apps" : "Активни апликации", + "Disabled apps" : "Оневозможени апликации", + "Updates" : "Ажурирања", + "App bundles" : "Пакети со апликации", + "{license}-licensed" : "{license}-лиценца", + "New user" : "Нов корисник", + "Default quota:" : "Стандардна квота:", + "Select default quota" : "Избери стандардна квота", + "Show Languages" : "Прикажи јазици", + "Show last login" : "Прикажи последно најавување", + "Show storage path" : "Прикажи патека на складиште", + "You are about to remove the group {group}. The users will NOT be deleted." : "Ќе ја отстраните групата {group}. Корисниците во неа НЕМА да бидат избришани.", + "Please confirm the group removal " : "Потврди отстранување на група", + "Remove group" : "Отстрани група", + "Admins" : "Администратори", + "Disabled users" : "Оневозможени корисници", + "Everyone" : "Секој", + "Add group" : "Додади група", + "An error occured during the request. Unable to proceed." : "Настана грешка во процесот. Не може да продоли.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Оваа апликација е овозможена но треба да биде надоградена. Ќе бидете пренасочени кон страната за надоградување за 5 секунди.", + "App update" : "Надградба на апликацијата", + "Error: This app can not be enabled because it makes the server unstable" : "Грешка: Оваа апликација неможе да се овозможи бидејќи ќе го направи серверот нестабилен", + "SSL Root Certificates" : "SSL Root сертификати", + "Common Name" : "Заедничко име", + "Valid until" : "Валиден до", + "Issued By" : "Издаден од", + "Valid until %s" : "Валиден до %s", + "Import root certificate" : "Увези root сертификат", + "Administrator documentation" : "Документација за администратор", + "Documentation" : "Документација", + "Forum" : "Форум", + "None" : "Ништо", + "Login" : "Најава", + "Plain" : "Чиста", + "NT LAN Manager" : "NT LAN Менаџер", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Сервер за е-пошта", + "Open documentation" : "Отвори ја документацијата", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Важно е да овозможите на вашиот сервер да испраќа е-поша пораки, поради можноста за ресетирање на лозинки и нотификации.", + "Send mode" : "Мод на испраќање", + "Encryption" : "Енкрипција", + "Sendmail mode" : "Модул за испраќање на е-пошта", + "From address" : "Од адреса", + "mail" : "Електронска пошта", + "Authentication method" : "Метод на автентификација", + "Authentication required" : "Потребна е автентификација", + "Server address" : "Адреса на сервер", + "Port" : "Порта", + "Credentials" : "Акредитиви", + "SMTP Username" : "SMTP корисничко име", + "SMTP Password" : "SMTP лозинка", + "Test email settings" : "Провери ги нагодувањаа за електронска пошта", + "Send email" : "Испрати пошта", + "Security & setup warnings" : "Предупредувања за сигурност & параметри", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Важно е за безбедноста и перформансите на вашата истанца дека сè е правилно конфигурирано. Да ви помогнеме во тоа, правиме неколку автоматски проверки. Погледнете ја документација за повеќе информации.", + "All checks passed." : "Сите проверки се поминати.", + "There are some errors regarding your setup." : "Постојат некои грешки во врска со инсталацијата.", + "There are some warnings regarding your setup." : "Постојат некои предупредувања во врска со инсталацијата.", + "Checking for system and security issues." : "Проверка на системот и безбедносна проверка.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Ве молиме двојно проверете ги <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">упатствата за инсталација ↗</a>, и проверете ги грешките или предупредувањата во <a href=\"%2$s\">записникот</a>.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Провери ја безбедноста на твојот Nextcloud преку <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">нашиот безбедносен скенер ↗</a>.", + "Version" : "Верзија", + "Two-Factor Authentication" : "Двофакторна автентикација", + "Server-side encryption" : "Енкрипција на страна на серверот", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Енкрипцијата на страна на серверот овозможува да ги криптирате датотеките што се поставени на овој сервер. Ова доаѓа со ограничувања како намалување на перформансите, па овозможете го ова само доколку е потребно.", + "Enable server-side encryption" : "Овозможи енкрипција на страна на серверот", + "Please read carefully before activating server-side encryption: " : "Ве молиме внимателно прочитајте пред да активирате енкрипција од страна на серверот:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Откако ќе биде овозможено енкрипција, сите датотеки што се поставени на серверот од таа точка натаму ќе бидат шифрирани на серверот. Ќе може да се оневозможи енкрипција подоцна ако активниот модул за шифрирање ја поддржува таа функција и сите предуслови (на пример, поставување на копче за враќање) се исполнети.", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Самата енкрипција не гарантира безбедност на системот. Ве молиме погледнете ја документацијата за повеќе информации за тоа како функционира апликацијата за шифрирање и за поддржаните случаи на употреба.", + "Be aware that encryption always increases the file size." : "Бидете свесни дека енкрипцијата секогаш ја зголемува големината на датотеката.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Секогаш е добро да создавате редовни резервни кории на вашите податоци, во случај на енкрипција, осигурајте се да ги зачувате и клучевите за шифрирање заедно со вашите податоци.", + "This is the final warning: Do you really want to enable encryption?" : "Ова е последно предупредување: Дали навистина сакате да овозможите енкрипција?", + "Enable encryption" : "Овозможи енкрипција", + "Select default encryption module:" : "Изберете стандарден модул за шифрирање:", + "Start migration" : "Започни ја миграцијата", + "Background jobs" : "Задачи кој се извршуваат во позадина", + "Last job ran %s." : "Последно извршување на задачите: %s.", + "Last job execution ran %s. Something seems wrong." : "Последно извршување на задачите: %s. Нешто не е во ред.", + "Background job didn’t run yet!" : "Сеуште нема извршено ниедна задача!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "За оптимални перформанси важно е правилно да ги конфигурирате задачите кој се извршуваат во позадина. За големи истанци „КРОН“ е препорачаната поставка. Погледнете ја документацијата за повеќе информации.", + "Pick background job setting" : "Избери го начинот на извршување на задачите во позадина", + "Execute one task with each page loaded" : "Изврши по една задача со секоја вчитана страница", + "The cron.php needs to be executed by the system user \"%s\"." : "cron.php е потребно да биде извршен од системски корисник\" %s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "За да го извршите ова, треба PHP POSIX додаток. Погледни во {linkstart}PHP документацијата{linkend} за повеќе детали.", + "Sharing" : "Споделување", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Како администратор, можете детално да го прилагодите однесувањето на споделувањето. Погледнете ја документацијата за повеќе информации.", + "Allow apps to use the Share API" : "Дозволете апликациите да го користат API-то за споделување", + "Allow users to share via link" : "Допушти корисниците да споделуваат со линкови", + "Allow public uploads" : "Дозволи јавен аплоуд", + "Always ask for a password" : "Секогаш прашувај за лозинка", + "Enforce password protection" : "Наметни заштита на лозинка", + "Set default expiration date" : "Постави основен датум на истекување", + "Expire after " : "Истекува по", + "days" : "денови", + "Enforce expiration date" : "Наметни датум на траење", + "Allow resharing" : "Овозможи повторно споделување", + "Allow sharing with groups" : "Овозможи споделување со групи", + "Restrict users to only share with users in their groups" : "Ограничи корисниците да споделуваат со корисници во своите групи", + "Exclude groups from sharing" : "Исклучи групи од споделување", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Дозволи автоматско комплетирање во лентата за споделување. Доколку ова е оневозможено потребно е да се внесе целосно корисничко име или адреса на е-пошта.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Покажете го текстот за одрекување од одговорност на страницата за поставување јавен линк. (Се прикажува само кога листата со датотеки е скриена.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Овој текст ќе биде прикажан на страната со јавниот линк кога листата на датотеки е сокриена.", + "Default share permissions" : "Стандардни дозволи за споделување", + "Personal" : "Лично", + "Administration" : "Администрација", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Развиена од {communityopen}Nextcloud заедницата{linkclose}, {githubopen}изворениот код{linkclose} е лиценциран според {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Лајкни ја нашата Facebook страна", + "Follow us on Twitter" : "Следете не на Twitter", + "Follow us on Mastodon" : "Следете не на Mastodon", + "Check out our blog" : "Проверете го нашиот блог", + "Subscribe to our newsletter" : "Претплатете се на нашиот билтен", + "Profile picture" : "Фотографија за профил", + "Upload new" : "Префрли нова", + "Select from Files" : "Избри од датотеките", + "Remove image" : "Отстрани ја фотографијата", + "png or jpg, max. 20 MB" : "png или jpg, максимум 20 MB", + "Cancel" : "Откажи", + "Choose as profile picture" : "Избери фотографија за профилот", + "Details" : "Детали", + "You are a member of the following groups:" : "Вие сте член на следниве групи", + "You are using <strong>%s</strong>" : "Вие користите <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Користите <strong>%1$s</strong> од <strong>%2$s</strong> (<strong>%3$s %%</strong>)", + "Full name" : "Име и презиме", + "No display name set" : "Нема поставено име за прикажување", + "Your email address" : "Вашата адреса за е-пошта", + "No email address set" : "Нема поставено адреса за е-пошта ", + "For password reset and notifications" : "За ресетирање на лозинка и нотификации", + "Phone number" : "Телефонски број", + "Your phone number" : "Вашиот телефонски број", + "Address" : "Адреса", + "Your postal address" : "Вашата поштенска адреса", + "Website" : "ВЕБ страна", + "Link https://…" : "Линк https://....", + "Twitter" : "Twitter", + "Twitter handle @…" : "Twitter @…", + "Help translate" : "Помогни во преводот", + "Locale" : "Локација", + "Current password" : "Моментална лозинка", + "Change password" : "Промени лозинка", + "Use a second factor besides your password to increase security for your account." : "Користете втор фактор и покрај вашата лозинка за да ја зголемите безбедноста на вашата сметка.", + "Disconnect" : "Исклучи", + "Not supported!" : "Не е поддржано!", + "Press ⌘-C to copy." : "Притисни ⌘-C за да копираш", + "Press Ctrl-C to copy." : "Притисни Ctrl-C за да копираш.", + "Error while loading browser sessions and device tokens" : "Грепка при вчитување на сесијата на прелистувачот и токенот на уредот", + "Store credentials" : "Зачувај акредитиви", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php е регистриран на webcron сервисот за да го повикува cron.php секој 15 минути преку HTTP.", + "Use system cron service to call the cron.php file every 15 minutes." : "Го користи системскиот КРОН сервис и го повикува cron.php секој 15 минути.", + "Follow us on Google+" : "Follow us on Google+" +}, +"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;"); diff --git a/apps/settings/l10n/mk.json b/apps/settings/l10n/mk.json new file mode 100644 index 00000000000..126db10af21 --- /dev/null +++ b/apps/settings/l10n/mk.json @@ -0,0 +1,789 @@ +{ "translations": { + "{actor} added you to group {group}" : "{actor} те додаде во групата {group}", + "You added {user} to group {group}" : "Го додаде {user} во групата {group}", + "{actor} added {user} to group {group}" : "{actor} го додаде {user} во групата {group}", + "An administrator added you to group {group}" : "Администраторот те додаде во групата {group}", + "An administrator added {user} to group {group}" : "Администраторот го додаде {user} во групата {group}", + "{actor} removed you from group {group}" : "{actor} те отстрани од групата {group}", + "You removed {user} from group {group}" : "Го отстрани {user} од групата {group}", + "{actor} removed {user} from group {group}" : "{actor} го отстрани {user} од групата {group}", + "An administrator removed you from group {group}" : "Администраторот те одстрани од групата {group}", + "An administrator removed {user} from group {group}" : "Администраторот го отстрани {user} од групата {group}", + "Your <strong>group memberships</strong> were modified" : "Вашето <strong>групно членство</strong> е изменето", + "{actor} changed your password" : "{actor} ја промени вашата лозика", + "You changed your password" : "Ја променивте вашата лозинка", + "Your password was reset by an administrator" : "Вашата лозинка е ресетирана од страна на администраторот", + "{actor} changed your email address" : "{actor} ја промени вашата адреса на е-пошта", + "You changed your email address" : "Ја променивте вашата адреса на е-пошта", + "Your email address was changed by an administrator" : "Вашата адреса на е-пошта е променета од страна на администраторот", + "You created app password \"{token}\"" : "Креиравте лозинка за апликација \"{token}\"", + "You deleted app password \"{token}\"" : "Избришавте лозинка за апликација \"{token}\"", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Ја променивте лозинката за апликација \"{token}\" во \"{newToken}\"", + "Security" : "Безбедност", + "You successfully logged in using two-factor authentication (%1$s)" : "Успешно се најавивте со користење на двофакторна автентикација (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Неуспешен обид за најава со двофакторна автентикација (%1$s)", + "Remote wipe was started on %1$s" : "Далечинското бришење е започна на  %1$s", + "Remote wipe has finished on %1$s" : "Далечинското бришење заврши на %1$s", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Вашата <strong>лозинка</strong> или <strong>е-пошта</strong> е променета", + "Couldn't remove app." : "Не можам да ја отстранам апликацијата.", + "Couldn't update app." : "Не можам да ја надградам апликацијата.", + "Wrong password" : "Погрешна лозинка", + "Saved" : "Снимено", + "No user supplied" : "Нема корисничко име", + "Unable to change password" : "Неможе да се промени лозинката", + "Authentication error" : "Грешка во автентикација", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Ве молам дадете лозинка за поврат на администраторот; во спротивно, сите кориснички податоци ќе бидат изгубени.", + "Wrong admin recovery password. Please check the password and try again." : "Погрешна лозинка за поврат на администраторот. Ве молам проверете ја лозинката и пробајте повторно.", + "Federated Cloud Sharing" : "Федерирано клауд споделување", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL користи застарена %1$s верзија (%2$s). Ве молиме ажурирајте го вашиот оперативен систем или можностите како %3$s нема да работат безбедно.", + "Invalid SMTP password." : "Грешна SMTP лозинка.", + "Email setting test" : "Тест за параметри на е-пошта", + "Well done, %s!" : "Добро сторено, %s!", + "If you received this email, the email configuration seems to be correct." : "Ако ја примивте оваа порака, тоа значи дека конфигурацијата за е-пошта е правилно поставена.", + "Email could not be sent. Check your mail server log" : "Порака преку Е-пошта неможе да се испрати. Проверете го записот во е-пошта серверот", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Се случи грешка при праќање на порака. Ве молам проверете ги вашите параметри. (Error: %s)", + "You need to set your user email before being able to send test emails." : "Треба да ја поставите вашата е-пошта адреса пред да можете да испратите тест пораки.", + "Invalid mail address" : "Неправилна електронска адреса/пошта", + "Settings saved" : "Параматрите се зачувани", + "Unable to change full name" : "Не можам да го променам целото име", + "Unable to change email address" : "Не можам да ја променам е-пошта адресата", + "%1$s changed your password on %2$s." : "%1$s ја промени вашата лозинка на %2$s.", + "Your password on %s was changed." : "Вашата лозинка на %s е променета.", + "Your password on %s was reset by an administrator." : "Вашата лозинка на %s беше ресетирана од страна на администраторот.", + "Password for %1$s changed on %2$s" : "Лозинката на %1$s е променета на %2$s", + "Password changed for %s" : "Лозинката на %s е променета", + "If you did not request this, please contact an administrator." : "Ако не сте го побарале ова, ве молиме контактирајте со администраторот.", + "Your email address on %s was changed." : "Вашата адреса за е-пошта на %s беше променета.", + "Your email address on %s was changed by an administrator." : "Вашата адреса за е-пошта на %s беше променета од страна на администраторот.", + "Email address for %1$s changed on %2$s" : "Адресата за е-пошта за %1$s е променета на %2$s", + "Email address changed for %s" : "Адресата за е-пошта за %s е променета", + "The new email address is %s" : "Новата адреса за е-пошта е %s", + "Your %s account was created" : "Вашата %s сметка е креирана", + "Welcome aboard" : "Добредојдовте", + "Welcome aboard %s" : "Добредојдовте %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Добредојдовте на вашата %s сметка, вие можете да додавате, чувате и да ги споделувате вашите податоци.", + "Your username is: %s" : "Вашето корисничко име е: %s", + "Set your password" : "Поставете ваша лозинка", + "Go to %s" : "Оди до %s", + "Install Client" : "Инсталирај клиент", + "Create" : "Креирај", + "Change" : "Измени", + "Delete" : "Избриши", + "Share" : "Сподели", + "Unlimited" : "Неограничено", + "Verifying" : "Потврдување", + "Verifying …" : "Потврдување …", + "Verify" : "Потврди", + "Migration in progress. Please wait until the migration is finished" : "Миграцијата е во тек. Ве молиме почекајте додека миграцијата заврши", + "Migration started …" : "Миграцијата е започнаа ...", + "Not saved" : "Не е зачувано", + "Sending…" : "Испраќа…", + "Email sent" : "Е-порака пратена", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Настана грешка. Ве молиме прикачете го PEM сертификатот во ASCII-кодна форма.", + "Valid until {date}" : "Валидно до {date}", + "Local" : "Локално", + "Private" : "Приватност", + "Only visible to local users" : "Видливо само за локални корисници", + "Only visible to you" : "Видливо само за вас", + "Contacts" : "Контакти", + "Visible to local users and to trusted servers" : "Видливо за локални корисници и доверливи сервери.", + "Public" : "Јавно", + "Will be synced to a global and public address book" : "Ќе биде синхронизирано на глобалниот и јавниот адресар", + "Very weak password" : "Многу слаба лозинка", + "Weak password" : "Слаба лозинка", + "So-so password" : "Така така лозинка", + "Good password" : "Добра лозинка", + "Strong password" : "Јака лозинка", + "An error occurred while changing your language. Please reload the page and try again." : "настана грешка при промена на јазикот. Ве молиме обидете се повторно.", + "Select a profile picture" : "Одбери фотографија за профилот", + "Week starts on {fdow}" : "Неделата започнува во {fdow}", + "Groups" : "Групи", + "Group list is empty" : "Листата во групата е празна", + "Afrikaans (Namibia)" : "Afrikaans (Namibia)", + "Afrikaans (South Africa)" : "Afrikaans (South Africa)", + "Afrikaans" : "Afrikaans", + "Akan (Ghana)" : "Akan (Ghana)", + "Akan" : "Akan", + "Albanian (Albania)" : "Albanian (Albania)", + "Albanian" : "Albanian", + "Amharic (Ethiopia)" : "Amharic (Ethiopia)", + "Amharic" : "Amharic", + "Arabic (Algeria)" : "Arabic (Algeria)", + "Arabic (Bahrain)" : "Arabic (Bahrain)", + "Arabic (Egypt)" : "Arabic (Egypt)", + "Arabic (Iraq)" : "Arabic (Iraq)", + "Arabic (Jordan)" : "Arabic (Jordan)", + "Arabic (Kuwait)" : "Arabic (Kuwait)", + "Arabic (Lebanon)" : "Arabic (Lebanon)", + "Arabic (Libya)" : "Arabic (Libya)", + "Arabic (Morocco)" : "Arabic (Morocco)", + "Arabic (Oman)" : "Arabic (Oman)", + "Arabic (Qatar)" : "Arabic (Qatar)", + "Arabic (Saudi Arabia)" : "Arabic (Saudi Arabia)", + "Arabic (Sudan)" : "Arabic (Sudan)", + "Arabic (Syria)" : "Arabic (Syria)", + "Arabic (Tunisia)" : "Arabic (Tunisia)", + "Arabic (United Arab Emirates)" : "Arabic (United Arab Emirates)", + "Arabic (Yemen)" : "Arabic (Yemen)", + "Arabic" : "Arabic", + "Armenian (Armenia)" : "Armenian (Armenia)", + "Armenian" : "Armenian", + "Assamese (India)" : "Assamese (India)", + "Assamese" : "Assamese", + "Asu (Tanzania)" : "Asu (Tanzania)", + "Asu" : "Asu", + "Azerbaijani (Cyrillic)" : "Azerbaijani (Cyrillic)", + "Azerbaijani (Cyrillic, Azerbaijan)" : "Azerbaijani (Cyrillic, Azerbaijan)", + "Azerbaijani (Latin)" : "Azerbaijani (Latin)", + "Azerbaijani (Latin, Azerbaijan)" : "Azerbaijani (Latin, Azerbaijan)", + "Azerbaijani" : "Azerbaijani", + "Bambara (Mali)" : "Bambara (Mali)", + "Bambara" : "Bambara", + "Basque (Spain)" : "Basque (Spain)", + "Basque" : "Basque", + "Belarusian (Belarus)" : "Belarusian (Belarus)", + "Belarusian" : "Belarusian", + "Bemba (Zambia)" : "Bemba (Zambia)", + "Bemba" : "Bemba", + "Bena (Tanzania)" : "Bena (Tanzania)", + "Bena" : "Bena", + "Bengali (Bangladesh)" : "Bengali (Bangladesh)", + "Bengali (India)" : "Bengali (India)", + "Bengali" : "Bengali", + "Bosnian (Bosnia and Herzegovina)" : "Bosnian (Bosnia and Herzegovina)", + "Bosnian" : "Bosnian", + "Bulgarian (Bulgaria)" : "Bulgarian (Bulgaria)", + "Bulgarian" : "Bulgarian", + "Burmese (Myanmar [Burma])" : "Burmese (Myanmar [Burma])", + "Burmese" : "Burmese", + "Catalan (Spain)" : "Catalan (Spain)", + "Catalan" : "Catalan", + "Central Morocco Tamazight (Latin)" : "Central Morocco Tamazight (Latin)", + "Central Morocco Tamazight (Latin, Morocco)" : "Central Morocco Tamazight (Latin, Morocco)", + "Central Morocco Tamazight" : "Central Morocco Tamazight", + "Cherokee (United States)" : "Cherokee (United States)", + "Cherokee" : "Cherokee", + "Chiga (Uganda)" : "Chiga (Uganda)", + "Chiga" : "Chiga", + "Chinese (Simplified Han)" : "Chinese (Simplified Han)", + "Chinese (Simplified Han, China)" : "Chinese (Simplified Han, China)", + "Chinese (Simplified Han, Hong Kong SAR China)" : "Chinese (Simplified Han, Hong Kong SAR China)", + "Chinese (Simplified Han, Macau SAR China)" : "Chinese (Simplified Han, Macau SAR China)", + "Chinese (Simplified Han, Singapore)" : "Chinese (Simplified Han, Singapore)", + "Chinese (Traditional Han)" : "Chinese (Traditional Han)", + "Chinese (Traditional Han, Hong Kong SAR China)" : "Chinese (Traditional Han, Hong Kong SAR China)", + "Chinese (Traditional Han, Macau SAR China)" : "Chinese (Traditional Han, Macau SAR China)", + "Chinese (Traditional Han, Taiwan)" : "Chinese (Traditional Han, Taiwan)", + "Chinese" : "Chinese", + "Cornish (United Kingdom)" : "Cornish (United Kingdom)", + "Cornish" : "Cornish", + "Croatian (Croatia)" : "Croatian (Croatia)", + "Croatian" : "Croatian", + "Czech (Czech Republic)" : "Czech (Czech Republic)", + "Czech" : "Czech", + "Danish (Denmark)" : "Danish (Denmark)", + "Danish" : "Danish", + "Dutch (Belgium)" : "Dutch (Belgium)", + "Dutch (Netherlands)" : "Dutch (Netherlands)", + "Dutch" : "Dutch", + "Embu (Kenya)" : "Embu (Kenya)", + "Embu" : "Embu", + "English (American Samoa)" : "English (American Samoa)", + "English (Australia)" : "English (Australia)", + "English (Belgium)" : "English (Belgium)", + "English (Belize)" : "English (Belize)", + "English (Botswana)" : "English (Botswana)", + "English (Canada)" : "English (Canada)", + "English (Guam)" : "English (Guam)", + "English (Hong Kong SAR China)" : "English (Hong Kong SAR China)", + "English (India)" : "English (India)", + "English (Ireland)" : "English (Ireland)", + "English (Jamaica)" : "English (Jamaica)", + "English (Malta)" : "English (Malta)", + "English (Marshall Islands)" : "English (Marshall Islands)", + "English (Mauritius)" : "English (Mauritius)", + "English (Namibia)" : "English (Namibia)", + "English (New Zealand)" : "English (New Zealand)", + "English (Northern Mariana Islands)" : "English (Northern Mariana Islands)", + "English (Pakistan)" : "English (Pakistan)", + "English (Philippines)" : "English (Philippines)", + "English (Singapore)" : "English (Singapore)", + "English (South Africa)" : "English (South Africa)", + "English (Trinidad and Tobago)" : "English (Trinidad and Tobago)", + "English (U.S. Minor Outlying Islands)" : "English (U.S. Minor Outlying Islands)", + "English (U.S. Virgin Islands)" : "English (U.S. Virgin Islands)", + "English (United Kingdom)" : "English (United Kingdom)", + "English (United States)" : "English (United States)", + "English (Zimbabwe)" : "English (Zimbabwe)", + "English" : "English", + "Esperanto" : "Esperanto", + "Estonian (Estonia)" : "Estonian (Estonia)", + "Estonian" : "Estonian", + "Ewe (Ghana)" : "Ewe (Ghana)", + "Ewe (Togo)" : "Ewe (Togo)", + "Ewe" : "Ewe", + "Faroese (Faroe Islands)" : "Faroese (Faroe Islands)", + "Faroese" : "Faroese", + "Filipino (Philippines)" : "Filipino (Philippines)", + "Filipino" : "Filipino", + "Finnish (Finland)" : "Finnish (Finland)", + "Finnish" : "Finnish", + "French (Belgium)" : "French (Belgium)", + "French (Benin)" : "French (Benin)", + "French (Burkina Faso)" : "French (Burkina Faso)", + "French (Burundi)" : "French (Burundi)", + "French (Cameroon)" : "French (Cameroon)", + "French (Canada)" : "French (Canada)", + "French (Central African Republic)" : "French (Central African Republic)", + "French (Chad)" : "French (Chad)", + "French (Comoros)" : "French (Comoros)", + "French (Congo - Brazzaville)" : "French (Congo - Brazzaville)", + "French (Congo - Kinshasa)" : "French (Congo - Kinshasa)", + "French (Côte d’Ivoire)" : "French (Côte d’Ivoire)", + "French (Djibouti)" : "French (Djibouti)", + "French (Equatorial Guinea)" : "French (Equatorial Guinea)", + "French (France)" : "French (France)", + "French (Gabon)" : "French (Gabon)", + "French (Guadeloupe)" : "French (Guadeloupe)", + "French (Guinea)" : "French (Guinea)", + "French (Luxembourg)" : "French (Luxembourg)", + "French (Madagascar)" : "French (Madagascar)", + "French (Mali)" : "French (Mali)", + "French (Martinique)" : "French (Martinique)", + "French (Monaco)" : "French (Monaco)", + "French (Niger)" : "French (Niger)", + "French (Rwanda)" : "French (Rwanda)", + "French (Réunion)" : "French (Réunion)", + "French (Saint Barthélemy)" : "French (Saint Barthélemy)", + "French (Saint Martin)" : "French (Saint Martin)", + "French (Senegal)" : "French (Senegal)", + "French (Switzerland)" : "French (Switzerland)", + "French (Togo)" : "French (Togo)", + "French" : "French", + "Fulah (Senegal)" : "Fulah (Senegal)", + "Fulah" : "Fulah", + "Galician (Spain)" : "Galician (Spain)", + "Galician" : "Galician", + "Ganda (Uganda)" : "Ganda (Uganda)", + "Ganda" : "Ganda", + "Georgian (Georgia)" : "Georgian (Georgia)", + "Georgian" : "Georgian", + "German (Austria)" : "German (Austria)", + "German (Belgium)" : "German (Belgium)", + "German (Germany)" : "German (Germany)", + "German (Liechtenstein)" : "German (Liechtenstein)", + "German (Luxembourg)" : "German (Luxembourg)", + "German (Switzerland)" : "German (Switzerland)", + "German" : "German", + "Greek (Cyprus)" : "Greek (Cyprus)", + "Greek (Greece)" : "Greek (Greece)", + "Greek" : "Greek", + "Gujarati (India)" : "Gujarati (India)", + "Gujarati" : "Gujarati", + "Gusii (Kenya)" : "Gusii (Kenya)", + "Gusii" : "Gusii", + "Hausa (Latin)" : "Hausa (Latin)", + "Hausa (Latin, Ghana)" : "Hausa (Latin, Ghana)", + "Hausa (Latin, Niger)" : "Hausa (Latin, Niger)", + "Hausa (Latin, Nigeria)" : "Hausa (Latin, Nigeria)", + "Hausa" : "Hausa", + "Hawaiian (United States)" : "Hawaiian (United States)", + "Hawaiian" : "Hawaiian", + "Hebrew (Israel)" : "Hebrew (Israel)", + "Hebrew" : "Hebrew", + "Hindi (India)" : "Hindi (India)", + "Hindi" : "Hindi", + "Hungarian (Hungary)" : "Hungarian (Hungary)", + "Hungarian" : "Hungarian", + "Icelandic (Iceland)" : "Icelandic (Iceland)", + "Icelandic" : "Icelandic", + "Igbo (Nigeria)" : "Igbo (Nigeria)", + "Igbo" : "Igbo", + "Indonesian (Indonesia)" : "Indonesian (Indonesia)", + "Indonesian" : "Indonesian", + "Irish (Ireland)" : "Irish (Ireland)", + "Irish" : "Irish", + "Italian (Italy)" : "Italian (Italy)", + "Italian (Switzerland)" : "Italian (Switzerland)", + "Italian" : "Italian", + "Japanese (Japan)" : "Japanese (Japan)", + "Japanese" : "Japanese", + "Kabuverdianu (Cape Verde)" : "Kabuverdianu (Cape Verde)", + "Kabuverdianu" : "Kabuverdianu", + "Kabyle (Algeria)" : "Kabyle (Algeria)", + "Kabyle" : "Kabyle", + "Kalaallisut (Greenland)" : "Kalaallisut (Greenland)", + "Kalaallisut" : "Kalaallisut", + "Kalenjin (Kenya)" : "Kalenjin (Kenya)", + "Kalenjin" : "Kalenjin", + "Kamba (Kenya)" : "Kamba (Kenya)", + "Kamba" : "Kamba", + "Kannada (India)" : "Kannada (India)", + "Kannada" : "Kannada", + "Kazakh (Cyrillic)" : "Kazakh (Cyrillic)", + "Kazakh (Cyrillic, Kazakhstan)" : "Kazakh (Cyrillic, Kazakhstan)", + "Kazakh" : "Kazakh", + "Khmer (Cambodia)" : "Khmer (Cambodia)", + "Khmer" : "Khmer", + "Kikuyu (Kenya)" : "Kikuyu (Kenya)", + "Kikuyu" : "Kikuyu", + "Kinyarwanda (Rwanda)" : "Kinyarwanda (Rwanda)", + "Kinyarwanda" : "Kinyarwanda", + "Konkani (India)" : "Konkani (India)", + "Konkani" : "Konkani", + "Korean (South Korea)" : "Korean (South Korea)", + "Korean" : "Korean", + "Koyra Chiini (Mali)" : "Koyra Chiini (Mali)", + "Koyra Chiini" : "Koyra Chiini", + "Koyraboro Senni (Mali)" : "Koyraboro Senni (Mali)", + "Koyraboro Senni" : "Koyraboro Senni", + "Langi (Tanzania)" : "Langi (Tanzania)", + "Langi" : "Langi", + "Latvian (Latvia)" : "Latvian (Latvia)", + "Latvian" : "Latvian", + "Lithuanian (Lithuania)" : "Lithuanian (Lithuania)", + "Lithuanian" : "Lithuanian", + "Luo (Kenya)" : "Luo (Kenya)", + "Luo" : "Luo", + "Luyia (Kenya)" : "Luyia (Kenya)", + "Luyia" : "Luyia", + "Macedonian (Macedonia)" : "Македонски (Македонија)", + "Macedonian" : "Македонски", + "Machame (Tanzania)" : "Machame (Tanzania)", + "Machame" : "Machame", + "Makonde (Tanzania)" : "Makonde (Tanzania)", + "Makonde" : "Makonde", + "Malagasy (Madagascar)" : "Malagasy (Madagascar)", + "Malagasy" : "Malagasy", + "Malay (Brunei)" : "Malay (Brunei)", + "Malay (Malaysia)" : "Malay (Malaysia)", + "Malay" : "Malay", + "Malayalam (India)" : "Malayalam (India)", + "Malayalam" : "Malayalam", + "Maltese (Malta)" : "Maltese (Malta)", + "Maltese" : "Maltese", + "Manx (United Kingdom)" : "Manx (United Kingdom)", + "Manx" : "Manx", + "Marathi (India)" : "Marathi (India)", + "Marathi" : "Marathi", + "Masai (Kenya)" : "Masai (Kenya)", + "Masai (Tanzania)" : "Masai (Tanzania)", + "Masai" : "Masai", + "Meru (Kenya)" : "Meru (Kenya)", + "Meru" : "Meru", + "Morisyen (Mauritius)" : "Morisyen (Mauritius)", + "Morisyen" : "Morisyen", + "Nama (Namibia)" : "Nama (Namibia)", + "Nama" : "Nama", + "Nepali (India)" : "Nepali (India)", + "Nepali (Nepal)" : "Nepali (Nepal)", + "Nepali" : "Nepali", + "North Ndebele (Zimbabwe)" : "North Ndebele (Zimbabwe)", + "North Ndebele" : "North Ndebele", + "Norwegian Bokmål (Norway)" : "Norwegian Bokmål (Norway)", + "Norwegian Bokmål" : "Norwegian Bokmål", + "Norwegian Nynorsk (Norway)" : "Norwegian Nynorsk (Norway)", + "Norwegian Nynorsk" : "Norwegian Nynorsk", + "Nyankole (Uganda)" : "Nyankole (Uganda)", + "Nyankole" : "Nyankole", + "Oriya (India)" : "Oriya (India)", + "Oriya" : "Oriya", + "Oromo (Ethiopia)" : "Oromo (Ethiopia)", + "Oromo (Kenya)" : "Oromo (Kenya)", + "Oromo" : "Oromo", + "Pashto (Afghanistan)" : "Pashto (Afghanistan)", + "Pashto" : "Pashto", + "Persian (Afghanistan)" : "Persian (Afghanistan)", + "Persian (Iran)" : "Persian (Iran)", + "Persian" : "Persian", + "Polish (Poland)" : "Polish (Poland)", + "Polish" : "Polish", + "Portuguese (Brazil)" : "Portuguese (Brazil)", + "Portuguese (Guinea-Bissau)" : "Portuguese (Guinea-Bissau)", + "Portuguese (Mozambique)" : "Portuguese (Mozambique)", + "Portuguese (Portugal)" : "Portuguese (Portugal)", + "Portuguese" : "Portuguese", + "Punjabi (Arabic)" : "Punjabi (Arabic)", + "Punjabi (Arabic, Pakistan)" : "Punjabi (Arabic, Pakistan)", + "Punjabi (Gurmukhi)" : "Punjabi (Gurmukhi)", + "Punjabi (Gurmukhi, India)" : "Punjabi (Gurmukhi, India)", + "Punjabi" : "Punjabi", + "Romanian (Moldova)" : "Romanian (Moldova)", + "Romanian (Romania)" : "Romanian (Romania)", + "Romanian" : "Romanian", + "Romansh (Switzerland)" : "Romansh (Switzerland)", + "Romansh" : "Romansh", + "Rombo (Tanzania)" : "Rombo (Tanzania)", + "Rombo" : "Rombo", + "Russian (Moldova)" : "Russian (Moldova)", + "Russian (Russia)" : "Russian (Russia)", + "Russian (Ukraine)" : "Russian (Ukraine)", + "Russian" : "Russian", + "Rwa (Tanzania)" : "Rwa (Tanzania)", + "Rwa" : "Rwa", + "Samburu (Kenya)" : "Samburu (Kenya)", + "Samburu" : "Samburu", + "Sango (Central African Republic)" : "Sango (Central African Republic)", + "Sango" : "Sango", + "Sena (Mozambique)" : "Sena (Mozambique)", + "Sena" : "Sena", + "Serbian (Cyrillic)" : "Serbian (Cyrillic)", + "Serbian (Cyrillic, Bosnia and Herzegovina)" : "Serbian (Cyrillic, Bosnia and Herzegovina)", + "Serbian (Cyrillic, Montenegro)" : "Serbian (Cyrillic, Montenegro)", + "Serbian (Cyrillic, Serbia)" : "Serbian (Cyrillic, Serbia)", + "Serbian (Latin)" : "Serbian (Latin)", + "Serbian (Latin, Bosnia and Herzegovina)" : "Serbian (Latin, Bosnia and Herzegovina)", + "Serbian (Latin, Montenegro)" : "Serbian (Latin, Montenegro)", + "Serbian (Latin, Serbia)" : "Serbian (Latin, Serbia)", + "Serbian" : "Serbian", + "Shona (Zimbabwe)" : "Shona (Zimbabwe)", + "Shona" : "Shona", + "Sichuan Yi (China)" : "Sichuan Yi (China)", + "Sichuan Yi" : "Sichuan Yi", + "Sinhala (Sri Lanka)" : "Sinhala (Sri Lanka)", + "Sinhala" : "Sinhala", + "Slovak (Slovakia)" : "Slovak (Slovakia)", + "Slovak" : "Slovak", + "Slovenian (Slovenia)" : "Slovenian (Slovenia)", + "Slovenian" : "Slovenian", + "Soga (Uganda)" : "Soga (Uganda)", + "Soga" : "Soga", + "Somali (Djibouti)" : "Somali (Djibouti)", + "Somali (Ethiopia)" : "Somali (Ethiopia)", + "Somali (Kenya)" : "Somali (Kenya)", + "Somali (Somalia)" : "Somali (Somalia)", + "Somali" : "Somali", + "Spanish (Argentina)" : "Spanish (Argentina)", + "Spanish (Bolivia)" : "Spanish (Bolivia)", + "Spanish (Chile)" : "Spanish (Chile)", + "Spanish (Colombia)" : "Spanish (Colombia)", + "Spanish (Costa Rica)" : "Spanish (Costa Rica)", + "Spanish (Dominican Republic)" : "Spanish (Dominican Republic)", + "Spanish (Ecuador)" : "Spanish (Ecuador)", + "Spanish (El Salvador)" : "Spanish (El Salvador)", + "Spanish (Equatorial Guinea)" : "Spanish (Equatorial Guinea)", + "Spanish (Guatemala)" : "Spanish (Guatemala)", + "Spanish (Honduras)" : "Spanish (Honduras)", + "Spanish (Latin America)" : "Spanish (Latin America)", + "Spanish (Mexico)" : "Spanish (Mexico)", + "Spanish (Nicaragua)" : "Spanish (Nicaragua)", + "Spanish (Panama)" : "Spanish (Panama)", + "Spanish (Paraguay)" : "Spanish (Paraguay)", + "Spanish (Peru)" : "Spanish (Peru)", + "Spanish (Puerto Rico)" : "Spanish (Puerto Rico)", + "Spanish (Spain)" : "Spanish (Spain)", + "Spanish (United States)" : "Spanish (United States)", + "Spanish (Uruguay)" : "Spanish (Uruguay)", + "Spanish (Venezuela)" : "Spanish (Venezuela)", + "Spanish" : "Spanish", + "Swahili (Kenya)" : "Swahili (Kenya)", + "Swahili (Tanzania)" : "Swahili (Tanzania)", + "Swahili" : "Swahili", + "Swedish (Finland)" : "Swedish (Finland)", + "Swedish (Sweden)" : "Swedish (Sweden)", + "Swedish" : "Swedish", + "Swiss German (Switzerland)" : "Swiss German (Switzerland)", + "Swiss German" : "Swiss German", + "Tachelhit (Latin)" : "Tachelhit (Latin)", + "Tachelhit (Latin, Morocco)" : "Tachelhit (Latin, Morocco)", + "Tachelhit (Tifinagh)" : "Tachelhit (Tifinagh)", + "Tachelhit (Tifinagh, Morocco)" : "Tachelhit (Tifinagh, Morocco)", + "Tachelhit" : "Tachelhit", + "Taita (Kenya)" : "Taita (Kenya)", + "Taita" : "Taita", + "Tamil (India)" : "Tamil (India)", + "Tamil (Sri Lanka)" : "Tamil (Sri Lanka)", + "Tamil" : "Tamil", + "Telugu (India)" : "Telugu (India)", + "Telugu" : "Telugu", + "Teso (Kenya)" : "Teso (Kenya)", + "Teso (Uganda)" : "Teso (Uganda)", + "Teso" : "Teso", + "Thai (Thailand)" : "Thai (Thailand)", + "Thai" : "Thai", + "Tibetan (China)" : "Tibetan (China)", + "Tibetan (India)" : "Tibetan (India)", + "Tibetan" : "Tibetan", + "Tigrinya (Eritrea)" : "Tigrinya (Eritrea)", + "Tigrinya (Ethiopia)" : "Tigrinya (Ethiopia)", + "Tigrinya" : "Tigrinya", + "Tonga (Tonga)" : "Tonga (Tonga)", + "Tonga" : "Tonga", + "Turkish (Turkey)" : "Turkish (Turkey)", + "Turkish" : "Turkish", + "Ukrainian (Ukraine)" : "Ukrainian (Ukraine)", + "Ukrainian" : "Ukrainian", + "Urdu (India)" : "Urdu (India)", + "Urdu (Pakistan)" : "Urdu (Pakistan)", + "Urdu" : "Urdu", + "Uzbek (Arabic)" : "Uzbek (Arabic)", + "Uzbek (Arabic, Afghanistan)" : "Uzbek (Arabic, Afghanistan)", + "Uzbek (Cyrillic)" : "Uzbek (Cyrillic)", + "Uzbek (Cyrillic, Uzbekistan)" : "Uzbek (Cyrillic, Uzbekistan)", + "Uzbek (Latin)" : "Uzbek (Latin)", + "Uzbek (Latin, Uzbekistan)" : "Uzbek (Latin, Uzbekistan)", + "Uzbek" : "Uzbek", + "Vietnamese (Vietnam)" : "Vietnamese (Vietnam)", + "Vietnamese" : "Vietnamese", + "Vunjo (Tanzania)" : "Vunjo (Tanzania)", + "Vunjo" : "Vunjo", + "Welsh (United Kingdom)" : "Welsh (United Kingdom)", + "Welsh" : "Welsh", + "Yoruba (Nigeria)" : "Yoruba (Nigeria)", + "Yoruba" : "Yoruba", + "Zulu (South Africa)" : "Zulu (South Africa)", + "Zulu" : "Zulu", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Двофакторна автентикација може да биде задолжителна за сите\tкорисници и одредени групи. Доколку корисниците немаат поставено провајдер за двофакторна автентикација, нема да можат да се најават на системот.", + "Enforce two-factor authentication" : "Задолжителна двофакторна автентикација", + "Limit to groups" : "Огранилчвање на групи", + "Enforcement of two-factor authentication can be set for certain groups only." : "Задолжителна двофакторна автентикација може да се постави само за одредени групи.", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "Двофакторна автентикација е задолжителна за сите\tчленовите во следните групи.", + "Enforced groups" : "Задолжителни групи", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "Двофакторна автентикација не е задолжителна за\tчленовите во следните групи.", + "Excluded groups" : "Исклучени групи", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "Кога се избираат/исклучуваат групи, се користи следната постапка за утврдување дали корисникот задолжително ќе користи двофакторна автентификација: Ако нема избрано групи, двофакторна автентификација е овозможена за секој освен за членовите во исклучените групи. Ако еден корисник е член во две групи избрана и исклучена, тогаш тој корисник задолжително мора да користи двофакторна автентификација.", + "Save changes" : "Зачувај ги промените", + "Marked for remote wipe" : "Означи како оддалечен уред", + "Device settings" : "Параметри за уреди", + "Allow filesystem access" : "Дозвола за пристап до податоци", + "Rename" : "Преименувај", + "Revoke" : "Одземи", + "Wipe device" : "Отстрани уред", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome for Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Nextcloud iOS app", + "Nextcloud Android app" : "Nextcloud Android app", + "Nextcloud Talk for iOS" : "Nextcloud разговор за iOS", + "Nextcloud Talk for Android" : "Nextcloud разговор за Android", + "Sync client - {os}" : "Клиент за синхронизација - {os}", + "This session" : "Оваа сесија", + "Device" : "Уред", + "Last activity" : "Последна активност", + "Devices & sessions" : "Уреди и сесии", + "Web, desktop and mobile clients currently logged in to your account." : "Клиенти за веб, компјутер и мобелен моментално се поврзани на твојата сметка.", + "Do you really want to wipe your data from this device?" : "Дали навистина сакате да ја избришете содржината од овој уред?", + "Confirm wipe" : "Потврди отстранување", + "Error while creating device token" : "Грешка при креирање на токен за уред", + "Error while updating device token name" : "Грешка при промена на името за токен на уред", + "Error while deleting the token" : "Грешка при бришење на токен", + "Error while wiping the device with the token" : "Грешка при отстранување на уред со токен", + "App name" : "Име на апликација", + "Create new app password" : "Креирај нова лозинка за апликација", + "Use the credentials below to configure your app or device." : "Користи ги следните акредитиви за конфигурирање на апликацијата или уредот.", + "For security reasons this password will only be shown once." : "Поради безбедносни причини лозинката ќе биде прикажана само еднаш.", + "Username" : "Корисничко име", + "Password" : "Лозинка", + "Done" : "Готово", + "Show QR code for mobile apps" : "Прикажи QR код за апликација на мобилен телефон", + "Copied!" : "Копирано!", + "Copy" : "Копирај", + "Could not copy app password. Please copy it manually." : "Неможе да се копира лозинката за апликација. Ве молиме копирајте ја рачно.", + "This app is supported via your current Nextcloud subscription." : "Оваа апликација е е дозволена за вашиот налог.", + "Supported" : "Поддржано", + "Official" : "Официјален", + "by" : "од", + "Update to {version}" : "Надгради на {version}", + "Remove" : "Одстрани", + "Disable" : "Оневозможи", + "All" : "Сите", + "Limit app usage to groups" : "Ограничување за користење на апликации во групи", + "No results" : "Нема резултати", + "Visit website" : "Посети ја веб страната", + "Report a bug" : "Пријави грешка", + "User documentation" : "Документација за корисник", + "Admin documentation" : "Документација за администратор", + "Developer documentation" : "Документација за програмери", + "Update to {update}" : "Надгради на {update}", + "Results from other categories" : "Резултати од други категории", + "No apps found for your version" : "За вашата верзија не се пронајдени апликации", + "Disable all" : "Оневозможи ги сите", + "Enable all" : "Овозможи ги сите", + "Download and enable" : "Превземи и овозможи", + "Enable" : "Овозможи", + "Enable untested app" : "Овозможи не тестирана апликација", + "You do not have permissions to see the details of this user" : "Немате дозвола за да ги гледате деталите на овој корисник", + "New password" : "Нова лозинка", + "Add user in group" : "Додади корисник во група", + "Select user quota" : "Избери квота за корисник", + "No language set" : "Не е поставен јазик", + "Never" : "Никогаш", + "Delete user" : "Избриши корисник", + "Wipe all devices" : "Отстрани ги сите уреди", + "Disable user" : "Оневозможи корисник", + "Enable user" : "Овозможи корисник", + "Resend welcome email" : "Повторно испрати е-пошта порака за добредојде", + "{size} used" : "искористено {size}", + "Welcome mail sent!" : "Испратена е-пошта порака за добредојде!", + "Display name" : "Име и презиме", + "Email" : "Е-пошта", + "Quota" : "Квота", + "Language" : "Јазик", + "Storage location" : "Локација на складиште", + "Last login" : "Последно најавување", + "Will be autogenerated" : "Ќе бидат автоматски генерирани", + "Default language" : "Стајдарден јазик", + "Add a new user" : "Додади нов корисник", + "No users in here" : "Тука нема корисници", + "Default quota" : "Стандардна квота", + "Password change is disabled because the master key is disabled" : "Ресетирање на лозинка е оневозможено бидејќи главниот клуч е оневозможен", + "Common languages" : "Заеднички јазици", + "All languages" : "Сите јазици", + "Your apps" : "Ваши апликации", + "Active apps" : "Активни апликации", + "Disabled apps" : "Оневозможени апликации", + "Updates" : "Ажурирања", + "App bundles" : "Пакети со апликации", + "{license}-licensed" : "{license}-лиценца", + "New user" : "Нов корисник", + "Default quota:" : "Стандардна квота:", + "Select default quota" : "Избери стандардна квота", + "Show Languages" : "Прикажи јазици", + "Show last login" : "Прикажи последно најавување", + "Show storage path" : "Прикажи патека на складиште", + "You are about to remove the group {group}. The users will NOT be deleted." : "Ќе ја отстраните групата {group}. Корисниците во неа НЕМА да бидат избришани.", + "Please confirm the group removal " : "Потврди отстранување на група", + "Remove group" : "Отстрани група", + "Admins" : "Администратори", + "Disabled users" : "Оневозможени корисници", + "Everyone" : "Секој", + "Add group" : "Додади група", + "An error occured during the request. Unable to proceed." : "Настана грешка во процесот. Не може да продоли.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Оваа апликација е овозможена но треба да биде надоградена. Ќе бидете пренасочени кон страната за надоградување за 5 секунди.", + "App update" : "Надградба на апликацијата", + "Error: This app can not be enabled because it makes the server unstable" : "Грешка: Оваа апликација неможе да се овозможи бидејќи ќе го направи серверот нестабилен", + "SSL Root Certificates" : "SSL Root сертификати", + "Common Name" : "Заедничко име", + "Valid until" : "Валиден до", + "Issued By" : "Издаден од", + "Valid until %s" : "Валиден до %s", + "Import root certificate" : "Увези root сертификат", + "Administrator documentation" : "Документација за администратор", + "Documentation" : "Документација", + "Forum" : "Форум", + "None" : "Ништо", + "Login" : "Најава", + "Plain" : "Чиста", + "NT LAN Manager" : "NT LAN Менаџер", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Сервер за е-пошта", + "Open documentation" : "Отвори ја документацијата", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Важно е да овозможите на вашиот сервер да испраќа е-поша пораки, поради можноста за ресетирање на лозинки и нотификации.", + "Send mode" : "Мод на испраќање", + "Encryption" : "Енкрипција", + "Sendmail mode" : "Модул за испраќање на е-пошта", + "From address" : "Од адреса", + "mail" : "Електронска пошта", + "Authentication method" : "Метод на автентификација", + "Authentication required" : "Потребна е автентификација", + "Server address" : "Адреса на сервер", + "Port" : "Порта", + "Credentials" : "Акредитиви", + "SMTP Username" : "SMTP корисничко име", + "SMTP Password" : "SMTP лозинка", + "Test email settings" : "Провери ги нагодувањаа за електронска пошта", + "Send email" : "Испрати пошта", + "Security & setup warnings" : "Предупредувања за сигурност & параметри", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Важно е за безбедноста и перформансите на вашата истанца дека сè е правилно конфигурирано. Да ви помогнеме во тоа, правиме неколку автоматски проверки. Погледнете ја документација за повеќе информации.", + "All checks passed." : "Сите проверки се поминати.", + "There are some errors regarding your setup." : "Постојат некои грешки во врска со инсталацијата.", + "There are some warnings regarding your setup." : "Постојат некои предупредувања во врска со инсталацијата.", + "Checking for system and security issues." : "Проверка на системот и безбедносна проверка.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Ве молиме двојно проверете ги <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">упатствата за инсталација ↗</a>, и проверете ги грешките или предупредувањата во <a href=\"%2$s\">записникот</a>.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Провери ја безбедноста на твојот Nextcloud преку <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">нашиот безбедносен скенер ↗</a>.", + "Version" : "Верзија", + "Two-Factor Authentication" : "Двофакторна автентикација", + "Server-side encryption" : "Енкрипција на страна на серверот", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Енкрипцијата на страна на серверот овозможува да ги криптирате датотеките што се поставени на овој сервер. Ова доаѓа со ограничувања како намалување на перформансите, па овозможете го ова само доколку е потребно.", + "Enable server-side encryption" : "Овозможи енкрипција на страна на серверот", + "Please read carefully before activating server-side encryption: " : "Ве молиме внимателно прочитајте пред да активирате енкрипција од страна на серверот:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Откако ќе биде овозможено енкрипција, сите датотеки што се поставени на серверот од таа точка натаму ќе бидат шифрирани на серверот. Ќе може да се оневозможи енкрипција подоцна ако активниот модул за шифрирање ја поддржува таа функција и сите предуслови (на пример, поставување на копче за враќање) се исполнети.", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Самата енкрипција не гарантира безбедност на системот. Ве молиме погледнете ја документацијата за повеќе информации за тоа како функционира апликацијата за шифрирање и за поддржаните случаи на употреба.", + "Be aware that encryption always increases the file size." : "Бидете свесни дека енкрипцијата секогаш ја зголемува големината на датотеката.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Секогаш е добро да создавате редовни резервни кории на вашите податоци, во случај на енкрипција, осигурајте се да ги зачувате и клучевите за шифрирање заедно со вашите податоци.", + "This is the final warning: Do you really want to enable encryption?" : "Ова е последно предупредување: Дали навистина сакате да овозможите енкрипција?", + "Enable encryption" : "Овозможи енкрипција", + "Select default encryption module:" : "Изберете стандарден модул за шифрирање:", + "Start migration" : "Започни ја миграцијата", + "Background jobs" : "Задачи кој се извршуваат во позадина", + "Last job ran %s." : "Последно извршување на задачите: %s.", + "Last job execution ran %s. Something seems wrong." : "Последно извршување на задачите: %s. Нешто не е во ред.", + "Background job didn’t run yet!" : "Сеуште нема извршено ниедна задача!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "За оптимални перформанси важно е правилно да ги конфигурирате задачите кој се извршуваат во позадина. За големи истанци „КРОН“ е препорачаната поставка. Погледнете ја документацијата за повеќе информации.", + "Pick background job setting" : "Избери го начинот на извршување на задачите во позадина", + "Execute one task with each page loaded" : "Изврши по една задача со секоја вчитана страница", + "The cron.php needs to be executed by the system user \"%s\"." : "cron.php е потребно да биде извршен од системски корисник\" %s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "За да го извршите ова, треба PHP POSIX додаток. Погледни во {linkstart}PHP документацијата{linkend} за повеќе детали.", + "Sharing" : "Споделување", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Како администратор, можете детално да го прилагодите однесувањето на споделувањето. Погледнете ја документацијата за повеќе информации.", + "Allow apps to use the Share API" : "Дозволете апликациите да го користат API-то за споделување", + "Allow users to share via link" : "Допушти корисниците да споделуваат со линкови", + "Allow public uploads" : "Дозволи јавен аплоуд", + "Always ask for a password" : "Секогаш прашувај за лозинка", + "Enforce password protection" : "Наметни заштита на лозинка", + "Set default expiration date" : "Постави основен датум на истекување", + "Expire after " : "Истекува по", + "days" : "денови", + "Enforce expiration date" : "Наметни датум на траење", + "Allow resharing" : "Овозможи повторно споделување", + "Allow sharing with groups" : "Овозможи споделување со групи", + "Restrict users to only share with users in their groups" : "Ограничи корисниците да споделуваат со корисници во своите групи", + "Exclude groups from sharing" : "Исклучи групи од споделување", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Дозволи автоматско комплетирање во лентата за споделување. Доколку ова е оневозможено потребно е да се внесе целосно корисничко име или адреса на е-пошта.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Покажете го текстот за одрекување од одговорност на страницата за поставување јавен линк. (Се прикажува само кога листата со датотеки е скриена.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Овој текст ќе биде прикажан на страната со јавниот линк кога листата на датотеки е сокриена.", + "Default share permissions" : "Стандардни дозволи за споделување", + "Personal" : "Лично", + "Administration" : "Администрација", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Развиена од {communityopen}Nextcloud заедницата{linkclose}, {githubopen}изворениот код{linkclose} е лиценциран според {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Лајкни ја нашата Facebook страна", + "Follow us on Twitter" : "Следете не на Twitter", + "Follow us on Mastodon" : "Следете не на Mastodon", + "Check out our blog" : "Проверете го нашиот блог", + "Subscribe to our newsletter" : "Претплатете се на нашиот билтен", + "Profile picture" : "Фотографија за профил", + "Upload new" : "Префрли нова", + "Select from Files" : "Избри од датотеките", + "Remove image" : "Отстрани ја фотографијата", + "png or jpg, max. 20 MB" : "png или jpg, максимум 20 MB", + "Cancel" : "Откажи", + "Choose as profile picture" : "Избери фотографија за профилот", + "Details" : "Детали", + "You are a member of the following groups:" : "Вие сте член на следниве групи", + "You are using <strong>%s</strong>" : "Вие користите <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Користите <strong>%1$s</strong> од <strong>%2$s</strong> (<strong>%3$s %%</strong>)", + "Full name" : "Име и презиме", + "No display name set" : "Нема поставено име за прикажување", + "Your email address" : "Вашата адреса за е-пошта", + "No email address set" : "Нема поставено адреса за е-пошта ", + "For password reset and notifications" : "За ресетирање на лозинка и нотификации", + "Phone number" : "Телефонски број", + "Your phone number" : "Вашиот телефонски број", + "Address" : "Адреса", + "Your postal address" : "Вашата поштенска адреса", + "Website" : "ВЕБ страна", + "Link https://…" : "Линк https://....", + "Twitter" : "Twitter", + "Twitter handle @…" : "Twitter @…", + "Help translate" : "Помогни во преводот", + "Locale" : "Локација", + "Current password" : "Моментална лозинка", + "Change password" : "Промени лозинка", + "Use a second factor besides your password to increase security for your account." : "Користете втор фактор и покрај вашата лозинка за да ја зголемите безбедноста на вашата сметка.", + "Disconnect" : "Исклучи", + "Not supported!" : "Не е поддржано!", + "Press ⌘-C to copy." : "Притисни ⌘-C за да копираш", + "Press Ctrl-C to copy." : "Притисни Ctrl-C за да копираш.", + "Error while loading browser sessions and device tokens" : "Грепка при вчитување на сесијата на прелистувачот и токенот на уредот", + "Store credentials" : "Зачувај акредитиви", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php е регистриран на webcron сервисот за да го повикува cron.php секој 15 минути преку HTTP.", + "Use system cron service to call the cron.php file every 15 minutes." : "Го користи системскиот КРОН сервис и го повикува cron.php секој 15 минути.", + "Follow us on Google+" : "Follow us on Google+" +},"pluralForm" :"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;" +} \ No newline at end of file diff --git a/apps/settings/l10n/nb.js b/apps/settings/l10n/nb.js new file mode 100644 index 00000000000..74630fea4ea --- /dev/null +++ b/apps/settings/l10n/nb.js @@ -0,0 +1,348 @@ +OC.L10N.register( + "settings", + { + "{actor} changed your password" : "{actor} endret ditt passord", + "You changed your password" : "Du endret ditt passord", + "Your password was reset by an administrator" : "Ditt passord ble tilbakestilt av en administrator", + "{actor} changed your email address" : "{actor} endret din e-postadresse", + "You changed your email address" : "Du endret din e-postadresse", + "Your email address was changed by an administrator" : "Din e-postadresse ble endret av en administrator", + "You created app password \"{token}\"" : "Du opprettet app-passord \"{token}\"", + "You deleted app password \"{token}\"" : "Du slettet app-passord \"{token}\"", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Du endret navn på app-passord \"{token}\" til \"{newToken}\"", + "You granted filesystem access to app password \"{token}\"" : "Du har gitt filsystemtilgang til app-passord \"{token}\"", + "You revoked filesystem access from app password \"{token}\"" : "Du tilbakekalte filsystemtilgang fra app-passordet \"{token}\"", + "Security" : "Sikkerhet", + "You successfully logged in using two-factor authentication (%1$s)" : "Din innlogging med to-trinns bekreftelse var velykket (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "En innlogging med to-trinns bekreftelse mislyktes (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Ditt <strong>passord</strong> eller din <strong>e-postadresse</strong> ble endret", + "Couldn't remove app." : "Klarte ikke å fjerne app.", + "Couldn't update app." : "Kunne ikke oppdatere appen.", + "Wrong password" : "Feil passord", + "Saved" : "Lagret", + "No user supplied" : "Ingen bruker angitt", + "Unable to change password" : "Kunne ikke endre passord", + "Authentication error" : "Autentiseringsfeil", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Angi et administrativt gjenopprettingspassord; ellers vil alle brukerdata gå tapt.", + "Wrong admin recovery password. Please check the password and try again." : "Feil administrativt gjenopprettingspassord. Sjekk passordet og prøv igjen.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Serveren støtter ikke endring av passord, men brukerens krypteringsnøkkel ble oppdatert.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "installering og oppdatering av apper via app-butikken eller ved deling i sammenknyttet sky", + "Federated Cloud Sharing" : "Sammenknyttet sky-deling", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL bruker en utdatert %1$s-versjon (%2$s). Oppdater operativsystemet ditt; ellers vil ikke funksjoner som %3$s virke pålitelig.", + "Invalid SMTP password." : "Ugyldig SMTP-passord.", + "Email setting test" : "E-postinnstillingstest", + "Well done, %s!" : "Bra gjort, %s!", + "If you received this email, the email configuration seems to be correct." : "Hvis du mottar denne e-posten, er e-postoppsettet rett.", + "Email could not be sent. Check your mail server log" : "E-post kunne ikke sendes. Sjekk serverloggen på din e-postserver", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Et problem oppstod med sending av e-post. Sjekk innstillingene. (Feil: %s)", + "You need to set your user email before being able to send test emails." : "Du må sette e-postadressen for brukeren din før du kan teste sending av e-post.", + "Invalid mail address" : "Ugyldig e-postadresse", + "Settings saved" : "Innstillinger lagret", + "Unable to change full name" : "Klarte ikke å endre fullt navn", + "Unable to change email address" : "Klarer ikke å endre e-postadresse", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "For å bekrefte din Twitter-konto, post følgende tvitring på Twitter (pass på å ikke få med noen linjeskift):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "For å bekrefte din nettside, lagre følgende innhold på roten av din netserver på '.well-known/CloudIdVerificationCode.txt' (forsikre deg om at hele teksten er på ei linje):", + "%1$s changed your password on %2$s." : "%1$s endret ditt passord på %2$s.", + "Your password on %s was changed." : "Ditt passord på %s ble endret.", + "Your password on %s was reset by an administrator." : "Passordet ditt på %s ble tilbakestilt av en administrator.", + "Password for %1$s changed on %2$s" : "Passord for %1$s endret på %2$s", + "Password changed for %s" : "Passord endret for %s", + "If you did not request this, please contact an administrator." : "Hvis du ikke forespurte dette, kontakt en administrator.", + "Your email address on %s was changed." : "Din e-postadresse på %s ble endret.", + "Your email address on %s was changed by an administrator." : "Din e-postadresse på %s ble endret av en administrator.", + "Email address for %1$s changed on %2$s" : "E-postadresse for %1$s endret på %2$s", + "Email address changed for %s" : "E-postadresse endret for %s", + "The new email address is %s" : "Den nye e-postadressen er %s", + "Your %s account was created" : "%s-kontoen din ble opprettet", + "Welcome aboard" : "Velkommen ombord", + "Welcome aboard %s" : "Velkommen ombord i %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Velkommen til din %s-konto, du kan legge til, beskytte og dele din data.", + "Your username is: %s" : "Ditt brukernavn er: %s", + "Set your password" : "Sett passordet ditt", + "Go to %s" : "Gå til %s", + "Install Client" : "Installer klient", + "Logged in user must be a subadmin" : "Innlogget bruker må være subadministrator", + "Delete" : "Slett", + "Unlimited" : "Ubegrenset", + "Verifying …" : "Bekrefter…", + "Verify" : "Bekreft", + "Migration in progress. Please wait until the migration is finished" : "Migrering utføres. Vent til den er ferdig.", + "Migration started …" : "Migrering startet…", + "Not saved" : "Ikke lagret", + "Sending…" : "Sender…", + "Email sent" : "E-post sendt", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Det oppstod en feil. Last opp et ASCII-kodet PEM-sertifikat.", + "Valid until {date}" : "Gyldig til {date}", + "Local" : "Lokal", + "Private" : "Privat", + "Only visible to local users" : "Kun synlig for lokale brukere", + "Only visible to you" : "Kun synlig for deg", + "Contacts" : "Kontakter", + "Visible to local users and to trusted servers" : "Synlig for lokale brukere og klarerte servere", + "Public" : "Offentlig", + "Will be synced to a global and public address book" : "Vil blir synkronisert til global og offentlig addressbok", + "Very weak password" : "Veldig svakt passord", + "Weak password" : "Svakt passord", + "So-so password" : "Bob-bob-passord", + "Good password" : "Bra passord", + "Strong password" : "Sterkt passord", + "An error occurred while changing your language. Please reload the page and try again." : "En feil oppstod under endring av språk. Last inn siden på nytt og prøv igjen.", + "An error occurred while changing your locale. Please reload the page and try again." : "En feil oppstod under endring av nasjonal innstilling. Last inn siden på nytt og prøv igjen.", + "Select a profile picture" : "Velg et profilbilde", + "Week starts on {fdow}" : "Uken starter på {fdow}", + "Groups" : "Grupper", + "Group list is empty" : "Gruppeliste er tom", + "Unable to retrieve the group list" : "Kunne ikke hente gruppelisten", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Tofaktor-autentisering kan håndheves for alle brukere og bestemte grupper. Hvis de ikke har en tofaktor-leverandør konfigurert, har de ikke mulighet til å logge på systemet.", + "Enforce two-factor authentication" : "Krev tofaktor-autentisering", + "Limit to groups" : "Begrens til grupper", + "Enforcement of two-factor authentication can be set for certain groups only." : "Håndheving av tofaktor-autentisering kan bare settes for enkelte grupper.", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "Tofaktor-autentisering håndheves for medlemmene av de følgende grupper.", + "Enforced groups" : "Håndhevde grupper", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "Tofaktor-autentisering håndheves ikke for medlemmene av de følgende grupper.", + "Excluded groups" : "Utelukkede grupper", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "Når grupper velges/velges bort, bruker de følgende logikk for å avgjøre om en bruker har 2FA håndhevet: Hvis ingen grupper er valgt, er 2FA aktivert for alle unntatt medlemmer av de utelukkede gruppene. Hvis grupper er valgt, er 2FA aktivert for alle medlemmer av disse. Hvis en bruker er både i en valgt og utelukket gruppe, har den valgte forrang og 2FA håndheves.", + "Save changes" : "Lagre endringer", + "Device settings" : "Enhetsinnstillinger", + "Allow filesystem access" : "Tillatt filsystemtilgang", + "Rename" : "Gi nytt navn", + "Revoke" : "Avslå", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome for Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Nextcloud iOS-app", + "Nextcloud Android app" : "Nextcloud Android-app", + "Nextcloud Talk for iOS" : "Nextcloud Talk for iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk for Android", + "Sync client - {os}" : "Synkroniseringsklient - {os}", + "This session" : "Denne økten", + "Device" : "Enhet", + "Last activity" : "Seneste aktivitet", + "Devices & sessions" : "Enheter og økter", + "Web, desktop and mobile clients currently logged in to your account." : "Følgende nett, skrivebord og mobile klienter er for øyeblikket logget på din konto.", + "Error while creating device token" : "Feil under opprettelse av enhetsnøkkel", + "Error while deleting the token" : "Feil under sletting av nøkkel", + "App name" : "Appnavn", + "Create new app password" : "Lag nytt apppassord", + "Use the credentials below to configure your app or device." : "Bruk påloggingsinformasjonen under for å sette opp appen på din mobile enhet.", + "For security reasons this password will only be shown once." : "For sikkerhetens skyld vil dette passordet kun vises en gang.", + "Username" : "Brukernavn", + "Password" : "Passord", + "Done" : "Ferdig", + "Show QR code for mobile apps" : "Vis QR-kode for mobilapper", + "Copied!" : "Kopiert!", + "Copy" : "Kopier", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Offisielle apper utvikles av og innenfor miljøet, de byr på sentral funksjonalitet og er klare for bruk i produksjon.", + "Official" : "Offisiell", + "by" : "av", + "Update to {version}" : "Oppdater til {version}", + "Remove" : "Fjern", + "Disable" : "Deaktiver ", + "All" : "Alle", + "Limit app usage to groups" : "Begrens app-bruk til grupper", + "No results" : "Ingen resultater", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Denne appen har ingen minimumversjon av Nextcloud definert. Dette vil være en feil i fremtiden.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Denne appen har ingen høyeste versjon av Nextcloud definert. Dette vil være en feil i fremtiden.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Denne appen kan ikke installeres fordi følgende avhengigheter ikke er tilfredsstilt:", + "View in store" : "Vis i butikk", + "Visit website" : "Besøk nettsiden", + "Report a bug" : "Rapporter en feil", + "User documentation" : "Brukerdokumentasjon", + "Admin documentation" : "Administratordokumentasjon", + "Developer documentation" : "Utviklerdokumentasjon", + "Update to {update}" : "Oppdater til {update}", + "Results from other categories" : "Resultater fra andre kategorier", + "No apps found for your version" : "Ingen apper funnet for din versjon", + "Disable all" : "Deaktiver alle", + "Enable all" : "Aktiver alle", + "Download and enable" : "Last ned og aktiver", + "Enable" : "Aktiver", + "The app will be downloaded from the app store" : "Denne appen vil bli lastet ned fra app-butikken", + "You do not have permissions to see the details of this user" : "Du har ikke tilgang til å se detaljer om denne brukeren", + "The backend does not support changing the display name" : "Serveren støtter ikke endring av visningsnavn", + "New password" : "Nytt passord", + "Add user in group" : "Legg til bruker til gruppe", + "Set user as admin for" : "Sett bruker som administrator for", + "Select user quota" : "Velg brukerkvote", + "No language set" : "Språk ikke satt", + "Never" : "Aldri", + "Delete user" : "Slett bruker", + "Disable user" : "Deaktiver bruker", + "Enable user" : "Aktiver bruker", + "Resend welcome email" : "Send velkomst-epost igjen", + "{size} used" : "{size} brukt", + "Welcome mail sent!" : "Velkomst-epost sendt!", + "Display name" : "Visningsnavn", + "Email" : "E-post", + "Group admin for" : "Gruppeadministrator for", + "Quota" : "Kvote", + "Language" : "Språk", + "Storage location" : "Lagringsplassering", + "User backend" : "Bruker-server", + "Last login" : "Siste innlogging", + "Default language" : "Standard språk", + "Add a new user" : "Legg til en ny bruker", + "No users in here" : "Ingen brukere her", + "Default quota" : "Standard kvote", + "Password change is disabled because the master key is disabled" : "Passordendring er deaktivert fordi hoved-nøkkelen er deaktivert", + "Common languages" : "Vanlige språk", + "All languages" : "Alle språk", + "Your apps" : "Dine apper", + "Active apps" : "Aktive apper", + "Disabled apps" : "Deaktiverte apper", + "Updates" : "Oppdateringer", + "App bundles" : "App-pakker", + "{license}-licensed" : "{license}-lisensiert", + "New user" : "Ny bruker", + "Default quota:" : "Standard kvote:", + "Select default quota" : "Sett standard kvote", + "Show Languages" : "Vis språk", + "Show last login" : "Vis siste innlogging", + "Show user backend" : "Vis bruker-bakende", + "Show storage path" : "Vis lagrings-sti", + "You are about to remove the group {group}. The users will NOT be deleted." : "Du skal til å fjerne gruppen {group}. Brukerne vil IKKE bli slettet.", + "Please confirm the group removal " : "Vennligst bekreft fjerning av gruppe", + "Remove group" : "Fjern gruppe", + "Admins" : "Administratorer", + "Disabled users" : "Deaktiverte brukere", + "Everyone" : "Alle", + "Add group" : "Legg til gruppe", + "An error occured during the request. Unable to proceed." : "En feil oppstod under forespørselen. Kan ikke fortsette.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Appen er aktivert men må oppdateres. Du vil bli videresendt til oppdateringssiden om 5 sekunder.", + "App update" : "App-oppdatering", + "Error: This app can not be enabled because it makes the server unstable" : "Feil: Denne appen kan ikke aktiveres fordi det gjør serveren ustabil", + "SSL Root Certificates" : "SSL-rotsertifikater", + "Common Name" : "Vanlig navn", + "Valid until" : "Gyldig til", + "Issued By" : "Utstedt av", + "Valid until %s" : "Gyldig til %s", + "Import root certificate" : "Importer rotsertifikat", + "Administrator documentation" : "Administratordokumentasjon", + "Documentation" : "Dokumentasjon", + "Forum" : "Forum", + "None" : "Ingen", + "Login" : "Innlogging", + "Plain" : "Enkel", + "NT LAN Manager" : "NT LAN-behandler", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "E-postserver", + "Open documentation" : "Åpne dokumentasjonen", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Det er viktig å sette opp denne serveren for å kunne sende e-poster, som tilbakestilling av e-poster og merknader.", + "Send mode" : "Forsendelsesmåte", + "Encryption" : "Kryptering", + "Sendmail mode" : "Sendmail-modus", + "From address" : "Fra adresse", + "mail" : "e-post", + "Authentication method" : "Autentiseringsmetode", + "Authentication required" : "Autentisering kreves", + "Server address" : "Serveradresse", + "Port" : "Port", + "Credentials" : "Påloggingsdetaljer", + "SMTP Username" : "SMTP-brukernavn", + "SMTP Password" : "SMTP-passord", + "Test email settings" : "Test innstillinger for e-post", + "Send email" : "Send e-post", + "Security & setup warnings" : "Advarsler om sikkerhet og oppsett", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Det er viktig for sikkerheten og ytelsen på din installasjon at alt er satt opp rett. For å hjelpe deg er det satt i verk noen automatiske sjekker. Se vedlagt lenke for å lese mer i dokumentasjonen.", + "All checks passed." : "Alle sjekker bestått.", + "There are some errors regarding your setup." : "Det er noen feil angående oppsettet ditt.", + "There are some warnings regarding your setup." : "Det er noen advarsler angående oppsettet ditt.", + "Checking for system and security issues." : "Sjekker for system- og sikkerhetsfeil.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Dobbeltsjekk <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installasjonsguidene ↗</a> og se etter feil eller advarsler i <a href=\"%2$s\">loggen</a>.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Sjekk sikkerheten til din Nextcloud med <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">vår sikkerhetsskanning ↗</a>.", + "Version" : "Versjon", + "Two-Factor Authentication" : "Tofaktor-autentisering", + "Server-side encryption" : "Kryptering på serverdelen", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Kryptering på serverdelen gjør det mulig å kryptere files som er lastet opp til denne serveren. Dette har begrensninger som ytelsesforverring, så bare skru på dette hvis det trengs.", + "Enable server-side encryption" : "Aktiver kryptering på serverdelen", + "Please read carefully before activating server-side encryption: " : "Les dette nøye før du aktiverer kryptering på serverdelen:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Når kryptering er blitt aktivert, vil alle filer som lastes opp til serveren fra det tidspunktet av bli lagret kryptert på serveren. Det vil kun være mulig å deaktivere kryptering senere dersom den aktive krypteringsmodulen støtter det og alle forutsetninger (f.eks. å sette en gjenopprettingsnøkkel) er til stede.", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Krypteringen alene gir ikke noen garanti for systemets sikkerhet. Sjekk Nextcloud-dokumentasjonen for mer informasjon om hvordan krypteringsappen virker, og de fungerende brukseksemplene.", + "Be aware that encryption always increases the file size." : "Vær oppmerksom på at kryptering alltid øker filstørrelsen.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Det er alltid bra å ta regelmessig sikkerhetskopi av dataene dine. Pass på å ta kopi av krypteringsnøklene sammen med dataene når kryptering er i bruk.", + "This is the final warning: Do you really want to enable encryption?" : "Dette er siste advarsel: Vil du virkelig aktivere kryptering?", + "Enable encryption" : "Aktiver kryptering", + "No encryption module loaded, please enable an encryption module in the app menu." : "Ingen krypteringsmodul er lastet. Aktiver en krypteringsmodul i appmenyen.", + "Select default encryption module:" : "Velg forvalgt krypteringsmodul:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Du må migrere krypteringsnøklene din fra den gamle krypteringen (ownCloud <= 8.0) til den nye. Aktiver \"Forvalgt krypteringsmodul\" og kjør 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Du må migrere krypteringsnøklene din fra den gamle krypteringen (ownCloud <= 8.0) til den nye.", + "Start migration" : "Start migrering", + "Background jobs" : "Bakgrunnsjobber", + "Last job ran %s." : "Siste jobb kjørte %s.", + "Last job execution ran %s. Something seems wrong." : "Siste jobbkjøring kjørte %s. Noe ser ut til å være galt.", + "Background job didn’t run yet!" : "Bakgrunnsjobben har ikke kjørt enda!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "For optimal ytelse er det viktig å sette opp bakgrunnsjobber rett. For kjøring på større installasjoner er 'Cron' anbefalt innstilling. Se dokumentasjonen for mer informasjon.", + "Pick background job setting" : "Velg innstilling for bakgrunnsjobb", + "Execute one task with each page loaded" : "Utfør en oppgave med hver side som blir lastet", + "The cron.php needs to be executed by the system user \"%s\"." : "Filen cron.php må kjøres systemet som følgende bruker \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "For å kjøre denne trenger du PHP POSIX utvidelse. Se {linkstart}PHP-dokumentasjonen{linkend} for flere detaljer.", + "Sharing" : "Deling", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Som administrator kan du fininnstille delingsoppførselen. Se dokumentasjonen for mer informasjon.", + "Allow apps to use the Share API" : "Tillat apper å bruke API for deling", + "Allow users to share via link" : "Tillat brukere å dele via lenke", + "Allow public uploads" : "Tillat offentlig opplasting", + "Always ask for a password" : "Alltid spør om passord", + "Enforce password protection" : "Krev passordbeskyttelse", + "Set default expiration date" : "Sett forvalgt utløpsdato", + "Expire after " : "Utløper etter", + "days" : "dager", + "Enforce expiration date" : "Krev utløpsdato", + "Allow resharing" : "TIllat videre deling", + "Allow sharing with groups" : "Tillat deling med grupper", + "Restrict users to only share with users in their groups" : "Begrens brukere til kun å dele med brukere i deres grupper", + "Exclude groups from sharing" : "Utelukk grupper fra deling", + "These groups will still be able to receive shares, but not to initiate them." : "Disse gruppene vil fremdeles kunne motta delinger men ikke lage dem.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Tillat automatisk fullføring i delingsdialogvindu. Dette kan skrus av hvis hele brukernavnet eller e-postadressen må skrives inn.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Vis ansvarsfraskrivelse på den offentlige opplastingssiden. (Vises kun nå fillisten er tom.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Denne teksten vises på den offentlig opplastingssiden når fillisten er tom.", + "Default share permissions" : "Standard delingsrettigheter", + "Personal" : "Personlig", + "Administration" : "Administrasjon", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Utviklet av {communityopen}Nextcloud-miljøet{linkclose}, {githubopen}kildekoden{linkclose} er lisensiert under {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Lik vår Facebook-side", + "Follow us on Twitter" : "Følg oss på Twitter", + "Follow us on Mastodon" : "Følg oss på Mastadon", + "Check out our blog" : "Sjekk ut bloggen vår", + "Subscribe to our newsletter" : "Abonner på vårt nyhetsbrev", + "Profile picture" : "Profilbilde", + "Upload new" : "Last opp nytt", + "Select from Files" : "Velg fra filer", + "Remove image" : "Fjern bilde", + "png or jpg, max. 20 MB" : "png eller jpg, maks. 20 MB", + "Picture provided by original account" : "Bilde kommer fra opprinnelig konto", + "Cancel" : "Avbryt", + "Choose as profile picture" : "Velg som profilbilde", + "Details" : "Detaljer", + "You are a member of the following groups:" : "Du er medlem av følgende grupper:", + "You are using <strong>%s</strong>" : "Du bruker <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Du bruker <strong>%1$s</strong> av <strong>%2$s</strong> (<strong>%3$s %%</strong>)", + "Full name" : "Fullt navn", + "No display name set" : "Visningsnavn ikke satt", + "Your email address" : "Din e-postadresse", + "No email address set" : "E-postadresse ikke satt", + "For password reset and notifications" : "For å nullstille passord og varsler", + "Phone number" : "Telefonnummer", + "Your phone number" : "Ditt telefonnummer", + "Address" : "Adresse", + "Your postal address" : "Din postadresse", + "Website" : "Nettsted", + "It can take up to 24 hours before the account is displayed as verified." : "Det kan ta opptil ett døgn før kontoen vises som bekreftet.", + "Link https://…" : "Lenke https://…", + "Twitter" : "Twitter", + "Twitter handle @…" : "Twitter-konto @ …", + "Help translate" : "Bidra til oversettelsen", + "Locale" : "Nasjonal innstilling", + "Current password" : "Nåværende passord", + "Change password" : "Endre passord", + "Use a second factor besides your password to increase security for your account." : "Bruk en annen faktor i tillegg til passordet ditt for å øke sikkerheten for kontoen din.", + "Store credentials" : "Lagre påloggingsdetaljer", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php er registrert i en webcron-tjeneste for å kalle cron.php hvert kvarter over HTTP.", + "Use system cron service to call the cron.php file every 15 minutes." : "Bruk systemets cron-tjeneste til å kalle cron.php hvert kvarter." +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/nb.json b/apps/settings/l10n/nb.json new file mode 100644 index 00000000000..dd4652822f3 --- /dev/null +++ b/apps/settings/l10n/nb.json @@ -0,0 +1,346 @@ +{ "translations": { + "{actor} changed your password" : "{actor} endret ditt passord", + "You changed your password" : "Du endret ditt passord", + "Your password was reset by an administrator" : "Ditt passord ble tilbakestilt av en administrator", + "{actor} changed your email address" : "{actor} endret din e-postadresse", + "You changed your email address" : "Du endret din e-postadresse", + "Your email address was changed by an administrator" : "Din e-postadresse ble endret av en administrator", + "You created app password \"{token}\"" : "Du opprettet app-passord \"{token}\"", + "You deleted app password \"{token}\"" : "Du slettet app-passord \"{token}\"", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Du endret navn på app-passord \"{token}\" til \"{newToken}\"", + "You granted filesystem access to app password \"{token}\"" : "Du har gitt filsystemtilgang til app-passord \"{token}\"", + "You revoked filesystem access from app password \"{token}\"" : "Du tilbakekalte filsystemtilgang fra app-passordet \"{token}\"", + "Security" : "Sikkerhet", + "You successfully logged in using two-factor authentication (%1$s)" : "Din innlogging med to-trinns bekreftelse var velykket (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "En innlogging med to-trinns bekreftelse mislyktes (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Ditt <strong>passord</strong> eller din <strong>e-postadresse</strong> ble endret", + "Couldn't remove app." : "Klarte ikke å fjerne app.", + "Couldn't update app." : "Kunne ikke oppdatere appen.", + "Wrong password" : "Feil passord", + "Saved" : "Lagret", + "No user supplied" : "Ingen bruker angitt", + "Unable to change password" : "Kunne ikke endre passord", + "Authentication error" : "Autentiseringsfeil", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Angi et administrativt gjenopprettingspassord; ellers vil alle brukerdata gå tapt.", + "Wrong admin recovery password. Please check the password and try again." : "Feil administrativt gjenopprettingspassord. Sjekk passordet og prøv igjen.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Serveren støtter ikke endring av passord, men brukerens krypteringsnøkkel ble oppdatert.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "installering og oppdatering av apper via app-butikken eller ved deling i sammenknyttet sky", + "Federated Cloud Sharing" : "Sammenknyttet sky-deling", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL bruker en utdatert %1$s-versjon (%2$s). Oppdater operativsystemet ditt; ellers vil ikke funksjoner som %3$s virke pålitelig.", + "Invalid SMTP password." : "Ugyldig SMTP-passord.", + "Email setting test" : "E-postinnstillingstest", + "Well done, %s!" : "Bra gjort, %s!", + "If you received this email, the email configuration seems to be correct." : "Hvis du mottar denne e-posten, er e-postoppsettet rett.", + "Email could not be sent. Check your mail server log" : "E-post kunne ikke sendes. Sjekk serverloggen på din e-postserver", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Et problem oppstod med sending av e-post. Sjekk innstillingene. (Feil: %s)", + "You need to set your user email before being able to send test emails." : "Du må sette e-postadressen for brukeren din før du kan teste sending av e-post.", + "Invalid mail address" : "Ugyldig e-postadresse", + "Settings saved" : "Innstillinger lagret", + "Unable to change full name" : "Klarte ikke å endre fullt navn", + "Unable to change email address" : "Klarer ikke å endre e-postadresse", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "For å bekrefte din Twitter-konto, post følgende tvitring på Twitter (pass på å ikke få med noen linjeskift):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "For å bekrefte din nettside, lagre følgende innhold på roten av din netserver på '.well-known/CloudIdVerificationCode.txt' (forsikre deg om at hele teksten er på ei linje):", + "%1$s changed your password on %2$s." : "%1$s endret ditt passord på %2$s.", + "Your password on %s was changed." : "Ditt passord på %s ble endret.", + "Your password on %s was reset by an administrator." : "Passordet ditt på %s ble tilbakestilt av en administrator.", + "Password for %1$s changed on %2$s" : "Passord for %1$s endret på %2$s", + "Password changed for %s" : "Passord endret for %s", + "If you did not request this, please contact an administrator." : "Hvis du ikke forespurte dette, kontakt en administrator.", + "Your email address on %s was changed." : "Din e-postadresse på %s ble endret.", + "Your email address on %s was changed by an administrator." : "Din e-postadresse på %s ble endret av en administrator.", + "Email address for %1$s changed on %2$s" : "E-postadresse for %1$s endret på %2$s", + "Email address changed for %s" : "E-postadresse endret for %s", + "The new email address is %s" : "Den nye e-postadressen er %s", + "Your %s account was created" : "%s-kontoen din ble opprettet", + "Welcome aboard" : "Velkommen ombord", + "Welcome aboard %s" : "Velkommen ombord i %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Velkommen til din %s-konto, du kan legge til, beskytte og dele din data.", + "Your username is: %s" : "Ditt brukernavn er: %s", + "Set your password" : "Sett passordet ditt", + "Go to %s" : "Gå til %s", + "Install Client" : "Installer klient", + "Logged in user must be a subadmin" : "Innlogget bruker må være subadministrator", + "Delete" : "Slett", + "Unlimited" : "Ubegrenset", + "Verifying …" : "Bekrefter…", + "Verify" : "Bekreft", + "Migration in progress. Please wait until the migration is finished" : "Migrering utføres. Vent til den er ferdig.", + "Migration started …" : "Migrering startet…", + "Not saved" : "Ikke lagret", + "Sending…" : "Sender…", + "Email sent" : "E-post sendt", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Det oppstod en feil. Last opp et ASCII-kodet PEM-sertifikat.", + "Valid until {date}" : "Gyldig til {date}", + "Local" : "Lokal", + "Private" : "Privat", + "Only visible to local users" : "Kun synlig for lokale brukere", + "Only visible to you" : "Kun synlig for deg", + "Contacts" : "Kontakter", + "Visible to local users and to trusted servers" : "Synlig for lokale brukere og klarerte servere", + "Public" : "Offentlig", + "Will be synced to a global and public address book" : "Vil blir synkronisert til global og offentlig addressbok", + "Very weak password" : "Veldig svakt passord", + "Weak password" : "Svakt passord", + "So-so password" : "Bob-bob-passord", + "Good password" : "Bra passord", + "Strong password" : "Sterkt passord", + "An error occurred while changing your language. Please reload the page and try again." : "En feil oppstod under endring av språk. Last inn siden på nytt og prøv igjen.", + "An error occurred while changing your locale. Please reload the page and try again." : "En feil oppstod under endring av nasjonal innstilling. Last inn siden på nytt og prøv igjen.", + "Select a profile picture" : "Velg et profilbilde", + "Week starts on {fdow}" : "Uken starter på {fdow}", + "Groups" : "Grupper", + "Group list is empty" : "Gruppeliste er tom", + "Unable to retrieve the group list" : "Kunne ikke hente gruppelisten", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Tofaktor-autentisering kan håndheves for alle brukere og bestemte grupper. Hvis de ikke har en tofaktor-leverandør konfigurert, har de ikke mulighet til å logge på systemet.", + "Enforce two-factor authentication" : "Krev tofaktor-autentisering", + "Limit to groups" : "Begrens til grupper", + "Enforcement of two-factor authentication can be set for certain groups only." : "Håndheving av tofaktor-autentisering kan bare settes for enkelte grupper.", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "Tofaktor-autentisering håndheves for medlemmene av de følgende grupper.", + "Enforced groups" : "Håndhevde grupper", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "Tofaktor-autentisering håndheves ikke for medlemmene av de følgende grupper.", + "Excluded groups" : "Utelukkede grupper", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "Når grupper velges/velges bort, bruker de følgende logikk for å avgjøre om en bruker har 2FA håndhevet: Hvis ingen grupper er valgt, er 2FA aktivert for alle unntatt medlemmer av de utelukkede gruppene. Hvis grupper er valgt, er 2FA aktivert for alle medlemmer av disse. Hvis en bruker er både i en valgt og utelukket gruppe, har den valgte forrang og 2FA håndheves.", + "Save changes" : "Lagre endringer", + "Device settings" : "Enhetsinnstillinger", + "Allow filesystem access" : "Tillatt filsystemtilgang", + "Rename" : "Gi nytt navn", + "Revoke" : "Avslå", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome for Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Nextcloud iOS-app", + "Nextcloud Android app" : "Nextcloud Android-app", + "Nextcloud Talk for iOS" : "Nextcloud Talk for iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk for Android", + "Sync client - {os}" : "Synkroniseringsklient - {os}", + "This session" : "Denne økten", + "Device" : "Enhet", + "Last activity" : "Seneste aktivitet", + "Devices & sessions" : "Enheter og økter", + "Web, desktop and mobile clients currently logged in to your account." : "Følgende nett, skrivebord og mobile klienter er for øyeblikket logget på din konto.", + "Error while creating device token" : "Feil under opprettelse av enhetsnøkkel", + "Error while deleting the token" : "Feil under sletting av nøkkel", + "App name" : "Appnavn", + "Create new app password" : "Lag nytt apppassord", + "Use the credentials below to configure your app or device." : "Bruk påloggingsinformasjonen under for å sette opp appen på din mobile enhet.", + "For security reasons this password will only be shown once." : "For sikkerhetens skyld vil dette passordet kun vises en gang.", + "Username" : "Brukernavn", + "Password" : "Passord", + "Done" : "Ferdig", + "Show QR code for mobile apps" : "Vis QR-kode for mobilapper", + "Copied!" : "Kopiert!", + "Copy" : "Kopier", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Offisielle apper utvikles av og innenfor miljøet, de byr på sentral funksjonalitet og er klare for bruk i produksjon.", + "Official" : "Offisiell", + "by" : "av", + "Update to {version}" : "Oppdater til {version}", + "Remove" : "Fjern", + "Disable" : "Deaktiver ", + "All" : "Alle", + "Limit app usage to groups" : "Begrens app-bruk til grupper", + "No results" : "Ingen resultater", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Denne appen har ingen minimumversjon av Nextcloud definert. Dette vil være en feil i fremtiden.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Denne appen har ingen høyeste versjon av Nextcloud definert. Dette vil være en feil i fremtiden.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Denne appen kan ikke installeres fordi følgende avhengigheter ikke er tilfredsstilt:", + "View in store" : "Vis i butikk", + "Visit website" : "Besøk nettsiden", + "Report a bug" : "Rapporter en feil", + "User documentation" : "Brukerdokumentasjon", + "Admin documentation" : "Administratordokumentasjon", + "Developer documentation" : "Utviklerdokumentasjon", + "Update to {update}" : "Oppdater til {update}", + "Results from other categories" : "Resultater fra andre kategorier", + "No apps found for your version" : "Ingen apper funnet for din versjon", + "Disable all" : "Deaktiver alle", + "Enable all" : "Aktiver alle", + "Download and enable" : "Last ned og aktiver", + "Enable" : "Aktiver", + "The app will be downloaded from the app store" : "Denne appen vil bli lastet ned fra app-butikken", + "You do not have permissions to see the details of this user" : "Du har ikke tilgang til å se detaljer om denne brukeren", + "The backend does not support changing the display name" : "Serveren støtter ikke endring av visningsnavn", + "New password" : "Nytt passord", + "Add user in group" : "Legg til bruker til gruppe", + "Set user as admin for" : "Sett bruker som administrator for", + "Select user quota" : "Velg brukerkvote", + "No language set" : "Språk ikke satt", + "Never" : "Aldri", + "Delete user" : "Slett bruker", + "Disable user" : "Deaktiver bruker", + "Enable user" : "Aktiver bruker", + "Resend welcome email" : "Send velkomst-epost igjen", + "{size} used" : "{size} brukt", + "Welcome mail sent!" : "Velkomst-epost sendt!", + "Display name" : "Visningsnavn", + "Email" : "E-post", + "Group admin for" : "Gruppeadministrator for", + "Quota" : "Kvote", + "Language" : "Språk", + "Storage location" : "Lagringsplassering", + "User backend" : "Bruker-server", + "Last login" : "Siste innlogging", + "Default language" : "Standard språk", + "Add a new user" : "Legg til en ny bruker", + "No users in here" : "Ingen brukere her", + "Default quota" : "Standard kvote", + "Password change is disabled because the master key is disabled" : "Passordendring er deaktivert fordi hoved-nøkkelen er deaktivert", + "Common languages" : "Vanlige språk", + "All languages" : "Alle språk", + "Your apps" : "Dine apper", + "Active apps" : "Aktive apper", + "Disabled apps" : "Deaktiverte apper", + "Updates" : "Oppdateringer", + "App bundles" : "App-pakker", + "{license}-licensed" : "{license}-lisensiert", + "New user" : "Ny bruker", + "Default quota:" : "Standard kvote:", + "Select default quota" : "Sett standard kvote", + "Show Languages" : "Vis språk", + "Show last login" : "Vis siste innlogging", + "Show user backend" : "Vis bruker-bakende", + "Show storage path" : "Vis lagrings-sti", + "You are about to remove the group {group}. The users will NOT be deleted." : "Du skal til å fjerne gruppen {group}. Brukerne vil IKKE bli slettet.", + "Please confirm the group removal " : "Vennligst bekreft fjerning av gruppe", + "Remove group" : "Fjern gruppe", + "Admins" : "Administratorer", + "Disabled users" : "Deaktiverte brukere", + "Everyone" : "Alle", + "Add group" : "Legg til gruppe", + "An error occured during the request. Unable to proceed." : "En feil oppstod under forespørselen. Kan ikke fortsette.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Appen er aktivert men må oppdateres. Du vil bli videresendt til oppdateringssiden om 5 sekunder.", + "App update" : "App-oppdatering", + "Error: This app can not be enabled because it makes the server unstable" : "Feil: Denne appen kan ikke aktiveres fordi det gjør serveren ustabil", + "SSL Root Certificates" : "SSL-rotsertifikater", + "Common Name" : "Vanlig navn", + "Valid until" : "Gyldig til", + "Issued By" : "Utstedt av", + "Valid until %s" : "Gyldig til %s", + "Import root certificate" : "Importer rotsertifikat", + "Administrator documentation" : "Administratordokumentasjon", + "Documentation" : "Dokumentasjon", + "Forum" : "Forum", + "None" : "Ingen", + "Login" : "Innlogging", + "Plain" : "Enkel", + "NT LAN Manager" : "NT LAN-behandler", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "E-postserver", + "Open documentation" : "Åpne dokumentasjonen", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Det er viktig å sette opp denne serveren for å kunne sende e-poster, som tilbakestilling av e-poster og merknader.", + "Send mode" : "Forsendelsesmåte", + "Encryption" : "Kryptering", + "Sendmail mode" : "Sendmail-modus", + "From address" : "Fra adresse", + "mail" : "e-post", + "Authentication method" : "Autentiseringsmetode", + "Authentication required" : "Autentisering kreves", + "Server address" : "Serveradresse", + "Port" : "Port", + "Credentials" : "Påloggingsdetaljer", + "SMTP Username" : "SMTP-brukernavn", + "SMTP Password" : "SMTP-passord", + "Test email settings" : "Test innstillinger for e-post", + "Send email" : "Send e-post", + "Security & setup warnings" : "Advarsler om sikkerhet og oppsett", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Det er viktig for sikkerheten og ytelsen på din installasjon at alt er satt opp rett. For å hjelpe deg er det satt i verk noen automatiske sjekker. Se vedlagt lenke for å lese mer i dokumentasjonen.", + "All checks passed." : "Alle sjekker bestått.", + "There are some errors regarding your setup." : "Det er noen feil angående oppsettet ditt.", + "There are some warnings regarding your setup." : "Det er noen advarsler angående oppsettet ditt.", + "Checking for system and security issues." : "Sjekker for system- og sikkerhetsfeil.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Dobbeltsjekk <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installasjonsguidene ↗</a> og se etter feil eller advarsler i <a href=\"%2$s\">loggen</a>.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Sjekk sikkerheten til din Nextcloud med <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">vår sikkerhetsskanning ↗</a>.", + "Version" : "Versjon", + "Two-Factor Authentication" : "Tofaktor-autentisering", + "Server-side encryption" : "Kryptering på serverdelen", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Kryptering på serverdelen gjør det mulig å kryptere files som er lastet opp til denne serveren. Dette har begrensninger som ytelsesforverring, så bare skru på dette hvis det trengs.", + "Enable server-side encryption" : "Aktiver kryptering på serverdelen", + "Please read carefully before activating server-side encryption: " : "Les dette nøye før du aktiverer kryptering på serverdelen:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Når kryptering er blitt aktivert, vil alle filer som lastes opp til serveren fra det tidspunktet av bli lagret kryptert på serveren. Det vil kun være mulig å deaktivere kryptering senere dersom den aktive krypteringsmodulen støtter det og alle forutsetninger (f.eks. å sette en gjenopprettingsnøkkel) er til stede.", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Krypteringen alene gir ikke noen garanti for systemets sikkerhet. Sjekk Nextcloud-dokumentasjonen for mer informasjon om hvordan krypteringsappen virker, og de fungerende brukseksemplene.", + "Be aware that encryption always increases the file size." : "Vær oppmerksom på at kryptering alltid øker filstørrelsen.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Det er alltid bra å ta regelmessig sikkerhetskopi av dataene dine. Pass på å ta kopi av krypteringsnøklene sammen med dataene når kryptering er i bruk.", + "This is the final warning: Do you really want to enable encryption?" : "Dette er siste advarsel: Vil du virkelig aktivere kryptering?", + "Enable encryption" : "Aktiver kryptering", + "No encryption module loaded, please enable an encryption module in the app menu." : "Ingen krypteringsmodul er lastet. Aktiver en krypteringsmodul i appmenyen.", + "Select default encryption module:" : "Velg forvalgt krypteringsmodul:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Du må migrere krypteringsnøklene din fra den gamle krypteringen (ownCloud <= 8.0) til den nye. Aktiver \"Forvalgt krypteringsmodul\" og kjør 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Du må migrere krypteringsnøklene din fra den gamle krypteringen (ownCloud <= 8.0) til den nye.", + "Start migration" : "Start migrering", + "Background jobs" : "Bakgrunnsjobber", + "Last job ran %s." : "Siste jobb kjørte %s.", + "Last job execution ran %s. Something seems wrong." : "Siste jobbkjøring kjørte %s. Noe ser ut til å være galt.", + "Background job didn’t run yet!" : "Bakgrunnsjobben har ikke kjørt enda!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "For optimal ytelse er det viktig å sette opp bakgrunnsjobber rett. For kjøring på større installasjoner er 'Cron' anbefalt innstilling. Se dokumentasjonen for mer informasjon.", + "Pick background job setting" : "Velg innstilling for bakgrunnsjobb", + "Execute one task with each page loaded" : "Utfør en oppgave med hver side som blir lastet", + "The cron.php needs to be executed by the system user \"%s\"." : "Filen cron.php må kjøres systemet som følgende bruker \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "For å kjøre denne trenger du PHP POSIX utvidelse. Se {linkstart}PHP-dokumentasjonen{linkend} for flere detaljer.", + "Sharing" : "Deling", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Som administrator kan du fininnstille delingsoppførselen. Se dokumentasjonen for mer informasjon.", + "Allow apps to use the Share API" : "Tillat apper å bruke API for deling", + "Allow users to share via link" : "Tillat brukere å dele via lenke", + "Allow public uploads" : "Tillat offentlig opplasting", + "Always ask for a password" : "Alltid spør om passord", + "Enforce password protection" : "Krev passordbeskyttelse", + "Set default expiration date" : "Sett forvalgt utløpsdato", + "Expire after " : "Utløper etter", + "days" : "dager", + "Enforce expiration date" : "Krev utløpsdato", + "Allow resharing" : "TIllat videre deling", + "Allow sharing with groups" : "Tillat deling med grupper", + "Restrict users to only share with users in their groups" : "Begrens brukere til kun å dele med brukere i deres grupper", + "Exclude groups from sharing" : "Utelukk grupper fra deling", + "These groups will still be able to receive shares, but not to initiate them." : "Disse gruppene vil fremdeles kunne motta delinger men ikke lage dem.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Tillat automatisk fullføring i delingsdialogvindu. Dette kan skrus av hvis hele brukernavnet eller e-postadressen må skrives inn.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Vis ansvarsfraskrivelse på den offentlige opplastingssiden. (Vises kun nå fillisten er tom.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Denne teksten vises på den offentlig opplastingssiden når fillisten er tom.", + "Default share permissions" : "Standard delingsrettigheter", + "Personal" : "Personlig", + "Administration" : "Administrasjon", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Utviklet av {communityopen}Nextcloud-miljøet{linkclose}, {githubopen}kildekoden{linkclose} er lisensiert under {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Lik vår Facebook-side", + "Follow us on Twitter" : "Følg oss på Twitter", + "Follow us on Mastodon" : "Følg oss på Mastadon", + "Check out our blog" : "Sjekk ut bloggen vår", + "Subscribe to our newsletter" : "Abonner på vårt nyhetsbrev", + "Profile picture" : "Profilbilde", + "Upload new" : "Last opp nytt", + "Select from Files" : "Velg fra filer", + "Remove image" : "Fjern bilde", + "png or jpg, max. 20 MB" : "png eller jpg, maks. 20 MB", + "Picture provided by original account" : "Bilde kommer fra opprinnelig konto", + "Cancel" : "Avbryt", + "Choose as profile picture" : "Velg som profilbilde", + "Details" : "Detaljer", + "You are a member of the following groups:" : "Du er medlem av følgende grupper:", + "You are using <strong>%s</strong>" : "Du bruker <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Du bruker <strong>%1$s</strong> av <strong>%2$s</strong> (<strong>%3$s %%</strong>)", + "Full name" : "Fullt navn", + "No display name set" : "Visningsnavn ikke satt", + "Your email address" : "Din e-postadresse", + "No email address set" : "E-postadresse ikke satt", + "For password reset and notifications" : "For å nullstille passord og varsler", + "Phone number" : "Telefonnummer", + "Your phone number" : "Ditt telefonnummer", + "Address" : "Adresse", + "Your postal address" : "Din postadresse", + "Website" : "Nettsted", + "It can take up to 24 hours before the account is displayed as verified." : "Det kan ta opptil ett døgn før kontoen vises som bekreftet.", + "Link https://…" : "Lenke https://…", + "Twitter" : "Twitter", + "Twitter handle @…" : "Twitter-konto @ …", + "Help translate" : "Bidra til oversettelsen", + "Locale" : "Nasjonal innstilling", + "Current password" : "Nåværende passord", + "Change password" : "Endre passord", + "Use a second factor besides your password to increase security for your account." : "Bruk en annen faktor i tillegg til passordet ditt for å øke sikkerheten for kontoen din.", + "Store credentials" : "Lagre påloggingsdetaljer", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php er registrert i en webcron-tjeneste for å kalle cron.php hvert kvarter over HTTP.", + "Use system cron service to call the cron.php file every 15 minutes." : "Bruk systemets cron-tjeneste til å kalle cron.php hvert kvarter." +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} \ No newline at end of file diff --git a/apps/settings/l10n/nl.js b/apps/settings/l10n/nl.js new file mode 100644 index 00000000000..5f865353803 --- /dev/null +++ b/apps/settings/l10n/nl.js @@ -0,0 +1,823 @@ +OC.L10N.register( + "settings", + { + "{actor} added you to group {group}" : "{actor} voegde je toe aan groep {group}", + "You added {user} to group {group}" : "U hebt gebruiker {user} aan de groep {group} toegevoegd.", + "{actor} added {user} to group {group}" : "{actor} voegde {user} toe aan groep {group}", + "An administrator added you to group {group}" : "Een beheerder heeft u aan groep {group} toegevoegd.", + "An administrator added {user} to group {group}" : "Een beheerder heeft gebruiker {user} aan groep {group} toegevoegd.", + "{actor} removed you from group {group}" : "{actor} verwijderde jou uit groep {group}", + "You removed {user} from group {group}" : "U hebt gebruiker {user} uit de groep {group} verwijderd.", + "{actor} removed {user} from group {group}" : "{actor} verwijderde {user} uit groep {group}", + "An administrator removed you from group {group}" : "Een beheerder heeft u uit groep {group} verwijderd.", + "An administrator removed {user} from group {group}" : "Een beheerder verwijderde {user} uit groep {group}", + "Your <strong>group memberships</strong> were modified" : "Je<strong>groepslidmaatschap</strong> werd gewijzigd", + "{actor} changed your password" : "{actor} heeft je wachtwoord aangepast", + "You changed your password" : "Je hebt je wachtwoord aangepast", + "Your password was reset by an administrator" : "Je wachtwoord is hersteld door een beheerder", + "{actor} changed your email address" : "{actor} wijzigde je e-mailadres", + "You changed your email address" : "Je wijzigde je e-mailadres", + "Your email address was changed by an administrator" : "Je e-mailadres is gewijzigd door een beheerder", + "You created app password \"{token}\"" : "Je creëerde app wachtwoord \"{token}\"", + "You deleted app password \"{token}\"" : "Je verwijderde app wachtwoord \"{token}\"", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Je hernoemde app wachtwoord \"{token}\" naar \"{newToken}\"", + "You granted filesystem access to app password \"{token}\"" : "Je verleende bestandssysteem toegang voor app wachtwoord \"{token}\"", + "You revoked filesystem access from app password \"{token}\"" : "Je hebt bestandssysteem toegang ingetrokken voor app wachtwoord \"{token}\"", + "Security" : "Beveiliging", + "You successfully logged in using two-factor authentication (%1$s)" : "Je bent succesvol ingelogd via twee-factor authenticatie (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Een inlogpoging via tweefactor authenticatie is mislukt (%1$s)", + "Remote wipe was started on %1$s" : "Wissen op afstand gestart op %1$s", + "Remote wipe has finished on %1$s" : "Wissen op afstand voltooid op %1$s", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Je <strong>wachtwoord</strong> of <strong>e-mailadres</strong> is gewijzigd", + "Couldn't remove app." : "Kon app niet verwijderen.", + "Couldn't update app." : "Kon de app niet bijwerken.", + "Wrong password" : "Onjuist wachtwoord", + "Saved" : "Opgeslagen", + "No user supplied" : "Geen gebruiker opgegeven", + "Unable to change password" : "Kan wachtwoord niet wijzigen", + "Authentication error" : "Authenticatiefout", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Voer een beheerdersherstelwachtwoord in, anders zullen alle gebruikersgegevens verloren gaan", + "Wrong admin recovery password. Please check the password and try again." : "Onjuist beheerdersherstelwachtwoord. Controleer het wachtwoord en probeer het opnieuw.", + "Backend doesn't support password change, but the user's encryption key was updated." : "De Back-end ondersteunt geen wachtwoordwijzigingen, maar de cryptosleutel van de gebruiker is succesvol bijgewerkt.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "installeren en bijwerken van applicaties via de app store of gefedereerd delen", + "Federated Cloud Sharing" : "Gefedereerd delen via de cloud", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cUrl gebruikt een verouderde %1$s versie (%2$s). Werk het besturingssysteem bij, want anders zullen functies als %3$s niet betrouwbaar werken.", + "Invalid SMTP password." : "Ongeldig SMTP wachtwoord", + "Email setting test" : "E-mailinstellingen test", + "Well done, %s!" : "Goed gedaan, %s!", + "If you received this email, the email configuration seems to be correct." : "Als je dit e-mailtje ontving, dan lijken de e-mailinstellingen correct.", + "Email could not be sent. Check your mail server log" : "Er kon geen e-mail verstuurd worden. Controleer je server log files", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Er ontstond een probleem bij het versturen van de e-mail. Controleer je instellingen. (Fout: %s)", + "You need to set your user email before being able to send test emails." : "Je moet je e-mailadres invoeren voordat je testberichten kunt versturen.", + "Invalid mail address" : "Ongeldig e-mailadres", + "Settings saved" : "Instellingen opgeslagen", + "Unable to change full name" : "Kan de volledige naam niet wijzigen", + "Unable to change email address" : "Kan e-mailadres niet wijzigen", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Om je Twitter-account te verifiëren moet je de volgende tweet op Twitter plaatsen (zorg dat je het plaatst zonder regelafbreking):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Om je website te verifiëren voeg de inhoud toe binnen de web-root van je server '.well-known/CloudIdVerificationCode.txt' (zorg dat de tekst op één regel staat):", + "%1$s changed your password on %2$s." : "%1$swijzigde je wachtwoord op %2$s.", + "Your password on %s was changed." : "Je wachtwoord op %s is gewijzigd.", + "Your password on %s was reset by an administrator." : "Je wachtwoord op %s werd hersteld door een beheerder.", + "Password for %1$s changed on %2$s" : "Wachtwoord voor %1$s gewijzigd op %2$s", + "Password changed for %s" : "Wachtwoord gewijzigd voor %s", + "If you did not request this, please contact an administrator." : "Als je dat niet aanvroeg, neem dan contact op met een beheerder.", + "Your email address on %s was changed." : "Je e-mailadres op %sis gewijzigd.", + "Your email address on %s was changed by an administrator." : "Je e-mailadres op %s is gewijzigd door een beheerder.", + "Email address for %1$s changed on %2$s" : "E-mailadres voor %1$sgewijzigd op %2$s", + "Email address changed for %s" : "E-mailadres gewijzigd voor %s", + "The new email address is %s" : "Het nieuwe e-mailadres is %s", + "Your %s account was created" : "Je %s account is aangemaakt", + "Welcome aboard" : "Welkom aan boord", + "Welcome aboard %s" : "Welkom aan boord %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Welkom bij je %s account; je kunt nu je bestanden toevoegen en veilig delen.", + "Your username is: %s" : "Je gebruikersnaam is: %s", + "Set your password" : "Stel je wachtwoord in", + "Go to %s" : "Ga naar %s", + "Install Client" : "Klik hier en installeer een client op telefoon/tablet of pc.", + "Logged in user must be a subadmin" : "Ingelogde gebruiker moet een subbeheerder zijn", + "Create" : "Maak", + "Change" : "Pas aan", + "Delete" : "Verwijder", + "Share" : "Deel", + "Unlimited" : "Ongelimiteerd", + "Verifying" : "Controleer", + "Verifying …" : "Verifiëren...", + "Verify" : "Verifiëren", + "Migration in progress. Please wait until the migration is finished" : "Migratie bezig. Wacht tot het proces klaar is.", + "Migration started …" : "Migratie gestart...", + "Not saved" : "Niet opgeslagen", + "Sending…" : "Versturen...", + "Email sent" : "E-mail verzonden", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Er trad een fout op. Upload als een ASCII-gecodeerd PEM certificaat.", + "Valid until {date}" : "Geldig tot {date}", + "Local" : "Lokaal", + "Private" : "Privé", + "Only visible to local users" : "Alleen zichtbaar voor lokale gebruikers", + "Only visible to you" : "Alleen zichtbaar voor jou", + "Contacts" : "Contactpersonen", + "Visible to local users and to trusted servers" : "Alleen zichtbaar voor lokale gebruikers en vertrouwde servers", + "Public" : "Openbaar", + "Will be synced to a global and public address book" : "Wordt gesynct met een globaal en openbaar adresboek", + "Very weak password" : "Zeer zwak wachtwoord", + "Weak password" : "Zwak wachtwoord", + "So-so password" : "Matig wachtwoord", + "Good password" : "Goed wachtwoord", + "Strong password" : "Sterk wachtwoord", + "An error occurred while changing your language. Please reload the page and try again." : "Er trad een fout op bij het aanpassen van de taal. Ververs de pagina en probeer het opnieuw.", + "An error occurred while changing your locale. Please reload the page and try again." : "Er trad een fout op bij het aanpassen van je landsinstellingen. Ververs de pagina en probeer het opnieuw.", + "Select a profile picture" : "Kies een profielafbeelding", + "Week starts on {fdow}" : "Week begint op {fdow}", + "Groups" : "Groepen", + "Group list is empty" : "Groepenlijst is leeg", + "Unable to retrieve the group list" : "Kan groepenoverzicht niet ophalen", + "Afrikaans (Namibia)" : "Afrikaans (Namibië)", + "Afrikaans (South Africa)" : "Afrikaans (Zuid-Afrika)", + "Afrikaans" : "Afrikaans", + "Akan (Ghana)" : "Akan (Ghana)", + "Akan" : "Akan", + "Albanian (Albania)" : "Albanees (Albanië)", + "Albanian" : "Albaans", + "Amharic (Ethiopia)" : "Amhaars (Ethiopië)", + "Amharic" : "Amhaar", + "Arabic (Algeria)" : "Arabisch (Algerije)", + "Arabic (Bahrain)" : "Arabisch (Bahrain)", + "Arabic (Egypt)" : "Arabisch (Egypte)", + "Arabic (Iraq)" : "Arabisch (Irak)", + "Arabic (Jordan)" : "Arabisch (Jordanië)", + "Arabic (Kuwait)" : "Arabisch (Koeweit)", + "Arabic (Lebanon)" : "Arabisch (Libanon)", + "Arabic (Libya)" : "Arabisch (Libië)", + "Arabic (Morocco)" : "Arabisch (Marokko)", + "Arabic (Oman)" : "Arabisch (Oman)", + "Arabic (Qatar)" : "Arabisch (Katar)", + "Arabic (Saudi Arabia)" : "Arabisch (Saoedi-Arabië)", + "Arabic (Sudan)" : "Arabisch (Soedan)", + "Arabic (Syria)" : "Arabisch (Syrië)", + "Arabic (Tunisia)" : "Arabisch (Tunisië)", + "Arabic (United Arab Emirates)" : "Arabisch (Verenigde Arabische Emiraten )", + "Arabic (Yemen)" : "Arabisch (Jemen)", + "Arabic" : "Arabisch", + "Armenian (Armenia)" : "Armeens (Armenië)", + "Armenian" : "Armeens", + "Assamese (India)" : "Assamees (India)", + "Assamese" : "Assamees", + "Asu (Tanzania)" : "Asu (Tanzania)", + "Asu" : "Asu", + "Azerbaijani (Cyrillic)" : "Azerbeidzjaans (Cyrillisch)", + "Azerbaijani (Cyrillic, Azerbaijan)" : "Azerbeidzjaans (Cyrillisch, Azerbeidzjaan)", + "Azerbaijani (Latin)" : "Azerbeidzjaans (Latijns)", + "Azerbaijani (Latin, Azerbaijan)" : "Azerbeidzjaans (Latijn, Azerbeidzjaan)", + "Azerbaijani" : "Azerbaidzjaans", + "Bambara (Mali)" : "Bambara (Mali)", + "Bambara" : "Bambara", + "Basque (Spain)" : "Baskisch (Spanje)", + "Basque" : "Baskisch", + "Belarusian (Belarus)" : "Wit-Russisch (Wit-Rusland)", + "Belarusian" : "Wit-Russisch", + "Bemba (Zambia)" : "Bemba (Zambia)", + "Bemba" : "Bemba", + "Bena (Tanzania)" : "Bena (Tanzania)", + "Bena" : "Bena", + "Bengali (Bangladesh)" : "Bengaals (Bangladesh)", + "Bengali (India)" : "Bengaals (India)", + "Bengali" : "Bengaals", + "Bosnian (Bosnia and Herzegovina)" : "Bosnisch (Bosnië en Herzegovina)", + "Bosnian" : "Bosnisch", + "Bulgarian (Bulgaria)" : "Bulgaars (Bulgarije)", + "Bulgarian" : "Bulgaars", + "Burmese (Myanmar [Burma])" : "Birmees (Myanmar [Burma])", + "Burmese" : "Burmees", + "Catalan (Spain)" : "Catalaans (Spanje)", + "Catalan" : "Catalaans", + "Central Morocco Tamazight (Latin)" : "Centraal Marokko Tamazight (Latijns)", + "Central Morocco Tamazight (Latin, Morocco)" : "Centraal Marokko Tamazight (Latijns, Marokko)", + "Central Morocco Tamazight" : "Centraal Marokko Tamazight", + "Cherokee (United States)" : "Cherokee (Verenigde Staten van Amerika)", + "Cherokee" : "Cherokee", + "Chiga (Uganda)" : "Chiga (Oeganda)", + "Chiga" : "Chiga", + "Chinese (Simplified Han)" : "Chinees (Gesimplificeerd Han)", + "Chinese (Simplified Han, China)" : "Chinees (Gesimplificeerd Han, China)", + "Chinese (Simplified Han, Hong Kong SAR China)" : "Chinees (Gesimplificeerd Han, Hong Kong SAR China)", + "Chinese (Simplified Han, Macau SAR China)" : "Chinees (Gesimplificeerd Han, Macao SAR China)", + "Chinese (Simplified Han, Singapore)" : "Chinees (Gesimplificeerd Han, Singapore)", + "Chinese (Traditional Han)" : "Chinees (traditioneel Han)", + "Chinese (Traditional Han, Hong Kong SAR China)" : "Chinees (Traditioneel Han, Hong Kong SAR China)", + "Chinese (Traditional Han, Macau SAR China)" : "Chinees (Traditioneel Han, Macao SAR China)", + "Chinese (Traditional Han, Taiwan)" : "Chinees (Traditioneel Han, Taiwan)", + "Chinese" : "Chinees", + "Cornish (United Kingdom)" : "Cornish (Verenigd Koninkrijk)", + "Cornish" : "Cornish", + "Croatian (Croatia)" : "Kroatisch (Kroatië)", + "Croatian" : "Kroatisch", + "Czech (Czech Republic)" : "Tsjechisch (Tsjechische Republiek)", + "Czech" : "Tsjechisch", + "Danish (Denmark)" : "Deens (Denemarken)", + "Danish" : "Deens", + "Dutch (Belgium)" : "Nederlands (België)", + "Dutch (Netherlands)" : "Nederlands (Nederland)", + "Dutch" : "Nederlands", + "Embu (Kenya)" : "Embu (Kenia)", + "Embu" : "Embu", + "English (American Samoa)" : "Engels (Amerikaans Samoa)", + "English (Australia)" : "Engels (Australië)", + "English (Belgium)" : "Engels (België)", + "English (Belize)" : "Engels (Belize)", + "English (Botswana)" : "Engels (Botswana)", + "English (Canada)" : "Engels (Canada)", + "English (Guam)" : "Engels (Guam)", + "English (Hong Kong SAR China)" : "Engels (Hong Kong SAR China)", + "English (India)" : "Engels (India)", + "English (Ireland)" : "Engels (Ierland)", + "English (Jamaica)" : "Engels (Jamaica)", + "English (Malta)" : "Engels (Malta)", + "English (Marshall Islands)" : "Engels (Marshalleilanden)", + "English (Mauritius)" : "Engels (Mauritius)", + "English (Namibia)" : "Engels (Namibië)", + "English (New Zealand)" : "Engels (Nieuw Zeeland)", + "English (Northern Mariana Islands)" : "Engels (Noordelijke Marianen)", + "English (Pakistan)" : "Engels (Pakistan)", + "English (Philippines)" : "Engels (Filippijnen)", + "English (Singapore)" : "Engels (Singapore)", + "English (South Africa)" : "Engels (Zuid-Afrika)", + "English (Trinidad and Tobago)" : "Engels (Trinidad en Tobago)", + "English (U.S. Minor Outlying Islands)" : "Engels (Kleine afgelegen eilanden van de Verenigde Staten)", + "English (U.S. Virgin Islands)" : "Engels (Maagdeneilanden)", + "English (United Kingdom)" : "Engels (Verenigd Koninkrijk)", + "English (United States)" : "Engels (Verenigde Staten van Amerika)", + "English (Zimbabwe)" : "Engels (Zimbabwe)", + "English" : "Engels", + "Esperanto" : "Esperanto", + "Estonian (Estonia)" : "Ests (Estland)", + "Estonian" : "Ests", + "Ewe (Ghana)" : "Ewe (Ghana)", + "Ewe (Togo)" : "Ewe (Togo)", + "Ewe" : "Ewe", + "Faroese (Faroe Islands)" : "Faeröes (Faeröereilanden)", + "Faroese" : "Faeröers", + "Filipino (Philippines)" : "Filipijns (Filippijnen)", + "Filipino" : "Filipijns", + "Finnish (Finland)" : "Fins (Finland)", + "Finnish" : "Fins", + "French (Belgium)" : "Frans (België)", + "French (Benin)" : "Frans (Benin)", + "French (Burkina Faso)" : "Frans (Burkina Faso)", + "French (Burundi)" : "Frans (Burundi)", + "French (Cameroon)" : "Frans (Kameroen)", + "French (Canada)" : "Frans (Canada)", + "French (Central African Republic)" : "Frans (Centraal Afrikaanse Republiek)", + "French (Chad)" : "Frans (Tsjaad)", + "French (Comoros)" : "Frans (Komoren)", + "French (Congo - Brazzaville)" : "Frans (Congo - Brazzaville)", + "French (Congo - Kinshasa)" : "Frans (Kongo - Kinshasa)", + "French (Côte d’Ivoire)" : "Frans (Ivoorkust)", + "French (Djibouti)" : "Frans (Djibouti)", + "French (Equatorial Guinea)" : "Frans (Equatoriaal Guinea)", + "French (France)" : "Frans (Frankrijk)", + "French (Gabon)" : "Frans (Gabon)", + "French (Guadeloupe)" : "Frans (Guadeloupe)", + "French (Guinea)" : "Frans (Guinea)", + "French (Luxembourg)" : "Frans (Luxemburg)", + "French (Madagascar)" : "Frans (Madagascar)", + "French (Mali)" : "Frans (Mali)", + "French (Martinique)" : "Frans (Martinique)", + "French (Monaco)" : "Frans (Monaco)", + "French (Niger)" : "Frans (Niger)", + "French (Rwanda)" : "Frans (Rwanda)", + "French (Réunion)" : "Frans (Réunion)", + "French (Saint Barthélemy)" : "Frans (Saint Barthélemy)", + "French (Saint Martin)" : "Frans (Saint Martin)", + "French (Senegal)" : "Frans (Senegal)", + "French (Switzerland)" : "Frans (Zwitserland)", + "French (Togo)" : "Frans (Togo)", + "French" : "Frans", + "Fulah (Senegal)" : "Fulah (Senegal)", + "Fulah" : "Fulah", + "Galician (Spain)" : "Galisisch (Spanje)", + "Galician" : "Galisisch", + "Ganda (Uganda)" : "Ganda (Oeganda)", + "Ganda" : "Ganda", + "Georgian (Georgia)" : "Georgisch (Georgië)", + "Georgian" : "Georgisch", + "German (Austria)" : "Duits (Oostenrijk)", + "German (Belgium)" : "Duits (België)", + "German (Germany)" : "Duits (Duitsland)", + "German (Liechtenstein)" : "Duits (Liechtenstein)", + "German (Luxembourg)" : "Duits (Luxemburg)", + "German (Switzerland)" : "Duits (Zwitserland)", + "German" : "Duits", + "Greek (Cyprus)" : "Grieks (Cyprus)", + "Greek (Greece)" : "Grieks (Griekenland)", + "Greek" : "Grieks", + "Gujarati (India)" : "Gujarati (India)", + "Gujarati" : "Gujarati", + "Gusii (Kenya)" : "Gusii (Kenia)", + "Gusii" : "Gusii", + "Hausa (Latin)" : "Hausa (Latijns)", + "Hausa (Latin, Ghana)" : "Hausa (Latijns, Ghana)", + "Hausa (Latin, Niger)" : "Hausa (Latijns, Niger)", + "Hausa (Latin, Nigeria)" : "Hausa (Latijns, Nigeria)", + "Hausa" : "Hausa", + "Hawaiian (United States)" : "Hawaiaans (Verenigde Staten van Amerika)", + "Hawaiian" : "Hawaiaans", + "Hebrew (Israel)" : "Hebreeuws (Israel)", + "Hebrew" : "Hebreeuws", + "Hindi (India)" : "Hindi (India)", + "Hindi" : "Hindi", + "Hungarian (Hungary)" : "Hongaars (Hongarije)", + "Hungarian" : "Hongaars", + "Icelandic (Iceland)" : "IJslands (IJsland)", + "Icelandic" : "Ijslands", + "Igbo (Nigeria)" : "Igbo (Nigeria)", + "Igbo" : "Igbo", + "Indonesian (Indonesia)" : "Indonesisch (Indonesië)", + "Indonesian" : "Indonesisch", + "Irish (Ireland)" : "Iers (Ierland)", + "Irish" : "Iers", + "Italian (Italy)" : "Italiaans (Italië)", + "Italian (Switzerland)" : "Italiaans (Zwitserland)", + "Italian" : "Italiaans", + "Japanese (Japan)" : "Japans (Japan)", + "Japanese" : "Japans", + "Kabuverdianu (Cape Verde)" : "Kaapverdiaans (Kaapverdië)", + "Kabuverdianu" : "Kaapverdiaans", + "Kabyle (Algeria)" : "Kabyle (Algerije)", + "Kabyle" : "Kabyle", + "Kalaallisut (Greenland)" : "Kalaallisut (Groenland)", + "Kalaallisut" : "Kalaallisut", + "Kalenjin (Kenya)" : "Kalenjin (Kenia)", + "Kalenjin" : "Kalenjin", + "Kamba (Kenya)" : "Kamba (Kenia)", + "Kamba" : "Kamba", + "Kannada (India)" : "Kannada (India)", + "Kannada" : "Kannada", + "Kazakh (Cyrillic)" : "Kazaks (Cyrillisch)", + "Kazakh (Cyrillic, Kazakhstan)" : "Kazaks (Cyrillisch, Kazachstan)", + "Kazakh" : "Kazachs", + "Khmer (Cambodia)" : "Khmer (Cambodja)", + "Khmer" : "Khmer", + "Kikuyu (Kenya)" : "Kikuyu (Kenia)", + "Kikuyu" : "Kikuyu", + "Kinyarwanda (Rwanda)" : "Kinyarwanda (Rwanda)", + "Kinyarwanda" : "Kinyarwanda", + "Konkani (India)" : "Konkani (India)", + "Konkani" : "Konkani", + "Korean (South Korea)" : "Koreaans", + "Korean" : "Koreaans", + "Koyra Chiini (Mali)" : "Koyra Chiini (Mali)", + "Koyra Chiini" : "Koyra Chiini", + "Koyraboro Senni (Mali)" : "Koyraboro Senni (Mali)", + "Koyraboro Senni" : "Koyraboro Senni", + "Langi (Tanzania)" : "Langi (Tanzania)", + "Langi" : "Langi", + "Latvian (Latvia)" : "Lets (Letland)", + "Latvian" : "Lets", + "Lithuanian (Lithuania)" : "Litouws (Litouwen)", + "Lithuanian" : "Litouws", + "Luo (Kenya)" : "Luo (Kenia)", + "Luo" : "Luo", + "Luyia (Kenya)" : "Luyia (Kenia)", + "Luyia" : "Luyia", + "Macedonian (Macedonia)" : "Macedonisch (Macedonië)", + "Macedonian" : "Macedonisch", + "Machame (Tanzania)" : "Machame (Tanzania)", + "Machame" : "Machame", + "Makonde (Tanzania)" : "Makonde (Tanzania)", + "Makonde" : "Makonde", + "Malagasy (Madagascar)" : "Malagasy (Madagascar)", + "Malagasy" : "Malagasitalen", + "Malay (Brunei)" : "Maleis (Brunei)", + "Malay (Malaysia)" : "Maleis (Maleisië)", + "Malay" : "Maleis", + "Malayalam (India)" : "Maleis (India)", + "Malayalam" : "Maleis", + "Maltese (Malta)" : "Maltees (Malta)", + "Maltese" : "Maltees", + "Manx (United Kingdom)" : "Manx (Verenigd Koninkrijk)", + "Manx" : "Manx-Gaelisch", + "Marathi (India)" : "Marathi (India)", + "Marathi" : "Marathi", + "Masai (Kenya)" : "Masai (Kenia)", + "Masai (Tanzania)" : "Masai (Tanzania)", + "Masai" : "Masai", + "Meru (Kenya)" : "Meru (Kenia)", + "Meru" : "Meru", + "Morisyen (Mauritius)" : "Morisyen (Mauritius)", + "Morisyen" : "Morisyen", + "Nama (Namibia)" : "Nama (Namibië)", + "Nama" : "Nama", + "Nepali (India)" : "Nepalees (India)", + "Nepali (Nepal)" : "Nepalees (Nepal)", + "Nepali" : "Nepalees", + "North Ndebele (Zimbabwe)" : "Noord Ndebele (Zimbabwe)", + "North Ndebele" : "Ndebele", + "Norwegian Bokmål (Norway)" : "Noors Bokmål (Noorwegen)", + "Norwegian Bokmål" : "Noors Bokmål", + "Norwegian Nynorsk (Norway)" : "Noors Nynorsk (Noorwegen)", + "Norwegian Nynorsk" : "Noors Nynorsk", + "Nyankole (Uganda)" : "Nyankole (Oeganda)", + "Nyankole" : "Nyankole", + "Oriya (India)" : "Oriya (India)", + "Oriya" : "Oriya", + "Oromo (Ethiopia)" : "Oromo (Ethiopië)", + "Oromo (Kenya)" : "Oromo (Kenia)", + "Oromo" : "Oromo", + "Pashto (Afghanistan)" : "Pashto (Afghanistan)", + "Pashto" : "Pashto", + "Persian (Afghanistan)" : "Persisch (Afghanistan)", + "Persian (Iran)" : "Persisch (Iran)", + "Persian" : "Persisch", + "Polish (Poland)" : "Pools (Polen)", + "Polish" : "Pools", + "Portuguese (Brazil)" : "Portugees (Brazilië)", + "Portuguese (Guinea-Bissau)" : "Portugees (Guinea-Bissau)", + "Portuguese (Mozambique)" : "Portugees (Mozambique)", + "Portuguese (Portugal)" : "Portugees (Portugal)", + "Portuguese" : "Portugees", + "Punjabi (Arabic)" : "Punjabi (Arabisch)", + "Punjabi (Arabic, Pakistan)" : "Punjabi (Arabisch, Pakistan)", + "Punjabi (Gurmukhi)" : "Punjabi (Gurmukhi)", + "Punjabi (Gurmukhi, India)" : "Punjabi (Gurmukhi, India)", + "Punjabi" : "Punjabi", + "Romanian (Moldova)" : "Roemeens (Moldavië)", + "Romanian (Romania)" : "Roemeens (Roemenië)", + "Romanian" : "Roemeens", + "Romansh (Switzerland)" : "Romaan (Zwitserland)", + "Romansh" : "Romaans", + "Rombo (Tanzania)" : "Rombo (Tanzania)", + "Rombo" : "Rombo", + "Russian (Moldova)" : "Russisch (Moldavië)", + "Russian (Russia)" : "Russisch (Rusland)", + "Russian (Ukraine)" : "Russisch (Oekraine)", + "Russian" : "Russisch", + "Rwa (Tanzania)" : "Rwa (Tanzania)", + "Rwa" : "Rwa", + "Samburu (Kenya)" : "Samburu (Kenya)", + "Samburu" : "Samburu", + "Sango (Central African Republic)" : "Sango (Centraal Afrikaanse Republiek)", + "Sango" : "Sango", + "Sena (Mozambique)" : "Sena (Mozambique)", + "Sena" : "Sena", + "Serbian (Cyrillic)" : "Servisch (Cyrillisch)", + "Serbian (Cyrillic, Bosnia and Herzegovina)" : "Servisch (Cyrillisch, Bosnië en Herzegovina)", + "Serbian (Cyrillic, Montenegro)" : "Servisch (Cyrillisch, Montenegro)", + "Serbian (Cyrillic, Serbia)" : "Servisch (Cyrillisch, Servië)", + "Serbian (Latin)" : "Servisch (Latijns)", + "Serbian (Latin, Bosnia and Herzegovina)" : "Servisch (Latijns, Bosnië en Herzegovina)", + "Serbian (Latin, Montenegro)" : "Servisch (Latijns, Montenegro)", + "Serbian (Latin, Serbia)" : "Servisch (Latijns, Servië)", + "Serbian" : "Servisch", + "Shona (Zimbabwe)" : "Shona (Zimbabwe)", + "Shona" : "Shona", + "Sichuan Yi (China)" : "Sichuan Yi (China)", + "Sichuan Yi" : "Sichuan Yi; Nuosu", + "Sinhala (Sri Lanka)" : "Singalees (Sri Lanka)", + "Sinhala" : "Sinhala", + "Slovak (Slovakia)" : "Slowaaks (Slowakije)", + "Slovak" : "Slowaaks", + "Slovenian (Slovenia)" : "Sloveens (Slovenië)", + "Slovenian" : "Sloveens", + "Soga (Uganda)" : "Soga (Oeganda)", + "Soga" : "Soga", + "Somali (Djibouti)" : "Somalies (Djibouti)", + "Somali (Ethiopia)" : "Somalisch (Ethiopië)", + "Somali (Kenya)" : "Somalisch (Kenoa)", + "Somali (Somalia)" : "Somalisch (Somalië)", + "Somali" : "Somalisch", + "Spanish (Argentina)" : "Spaans (Argentinië)", + "Spanish (Bolivia)" : "Spaans (Bolivia)", + "Spanish (Chile)" : "Spaans (Chili)", + "Spanish (Colombia)" : "Spaans (Colombia)", + "Spanish (Costa Rica)" : "Spaans (Costa Rica)", + "Spanish (Dominican Republic)" : "Spaans (Dominicaanse Republiek)", + "Spanish (Ecuador)" : "Spaans (Ecuador)", + "Spanish (El Salvador)" : "Spaans (El Salvador)", + "Spanish (Equatorial Guinea)" : "Spaans (Equatoriaal Guinea)", + "Spanish (Guatemala)" : "Spaans (Guatemala)", + "Spanish (Honduras)" : "Spaans (Honduras)", + "Spanish (Latin America)" : "Spaans (Latijns Amerika)", + "Spanish (Mexico)" : "Spaans (Mexico)", + "Spanish (Nicaragua)" : "Spaans (Nicaragua)", + "Spanish (Panama)" : "Spaans (Panama)", + "Spanish (Paraguay)" : "Spaans (Paraguay)", + "Spanish (Peru)" : "Spaans (Peru)", + "Spanish (Puerto Rico)" : "Spaans (Puerto Rico)", + "Spanish (Spain)" : "Spaans (Spanje)", + "Spanish (United States)" : "Spaans (Verenigde Staten van Amerika)", + "Spanish (Uruguay)" : "Spaans (Uruguay)", + "Spanish (Venezuela)" : "Spaans (Venezuela)", + "Spanish" : "Spaans", + "Swahili (Kenya)" : "Swahili (Kenia)", + "Swahili (Tanzania)" : "Swahili (Tanzania)", + "Swahili" : "Swahili", + "Swedish (Finland)" : "Zweeds (Finland)", + "Swedish (Sweden)" : "Zweeds (Zweden)", + "Swedish" : "Zweeds", + "Swiss German (Switzerland)" : "Schweizerdeutsch (Zwitserland)", + "Swiss German" : "Schweizerdeutsch", + "Tachelhit (Latin)" : "Tachelhit (Latijns)", + "Tachelhit (Latin, Morocco)" : "Tachelhit (Latijns, Marokko)", + "Tachelhit (Tifinagh)" : "Tachelhit (Tifinagh)", + "Tachelhit (Tifinagh, Morocco)" : "Tachelhit (Tifinagh, Marokko)", + "Tachelhit" : "Tachelhit", + "Taita (Kenya)" : "Taita (Kenia)", + "Taita" : "Taita", + "Tamil (India)" : "Tamil (India)", + "Tamil (Sri Lanka)" : "Tamil (Sri Lanka)", + "Tamil" : "Tamil", + "Telugu (India)" : "Telugu (India)", + "Telugu" : "Telugu", + "Teso (Kenya)" : "Teso (Kenia)", + "Teso (Uganda)" : "Teso (Oeganda)", + "Teso" : "Teso", + "Thai (Thailand)" : "Thais (Thailand)", + "Thai" : "Thais", + "Tibetan (China)" : "Tibetaans (China)", + "Tibetan (India)" : "Tibetaans (India)", + "Tibetan" : "Tibetaans", + "Tigrinya (Eritrea)" : "Tigrinya (Eritrea)", + "Tigrinya (Ethiopia)" : "Tigrinya (Ethiopië)", + "Tigrinya" : "Tigrinya", + "Tonga (Tonga)" : "Tonga (Tonga)", + "Tonga" : "Tonga", + "Turkish (Turkey)" : "Turks (Turkije)", + "Turkish" : "Turks", + "Ukrainian (Ukraine)" : "Oekrains (Oekraine)", + "Ukrainian" : "Oekrains", + "Urdu (India)" : "Urdu (India)", + "Urdu (Pakistan)" : "Urdu (Pakistan)", + "Urdu" : "Urdu", + "Uzbek (Arabic)" : "Oezbeeks (Arabisch)", + "Uzbek (Arabic, Afghanistan)" : "Oezbeeks (Arabisch, Afghanistan)", + "Uzbek (Cyrillic)" : "Oezbeeks (Cyrillisch)", + "Uzbek (Cyrillic, Uzbekistan)" : "Oezbeeks (Cyrillisch, Oezbekistan)", + "Uzbek (Latin)" : "Oezbeeks (Latijns)", + "Uzbek (Latin, Uzbekistan)" : "Oezbeeks (Latijns, Oezbekistan)", + "Uzbek" : "Oezbeeks", + "Vietnamese (Vietnam)" : "Vietnamees(Vietnam)", + "Vietnamese" : "Viëtnamees", + "Vunjo (Tanzania)" : "Vunjo (Tanzania)", + "Vunjo" : "Vunjo", + "Welsh (United Kingdom)" : "Welsh (Verenigd Koninkrijk)", + "Welsh" : "Welsh", + "Yoruba (Nigeria)" : "Yoruba (Nigeria)", + "Yoruba" : "Yoruba", + "Zulu (South Africa)" : "Zoeloe (Zuid-Afrika)", + "Zulu" : "Zoeloe", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Twee-factor authenticatie kan worden afgedwongen voor alle \tgebruikers en specifieke groepen. Als ze geen twee-factor provider hebben ingesteld, dan kunnen ze niet inloggen in het systeem.", + "Enforce two-factor authentication" : "Forceren gebruik tweefactor authenticatie", + "Limit to groups" : "Beperk tot groepen", + "Enforcement of two-factor authentication can be set for certain groups only." : "Forceren van gebruik tweefactor authenticatie kan worden ingesteld voor bepaalde groepen", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "Twee-factor authenticatie is afgedwongen voor\tleden van de volgende groepen.", + "Enforced groups" : "Afgedwongen groepen", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "Twee-factor authenticatie is niet afgedwongen voor\tleden van de volgende groepen.", + "Excluded groups" : "Uitgesloten groepen", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "Wanneer groepen worden geselecteerd/uitgezonderd, geldt de volgende logica om te bepalen of voor een gebruiker 2FA wordt afgedwongen: Als geen groepen zijn geselecteerd, is 2FA voor iedereen ingeschakeld, behalve voor leden van de uitgezonderde groepen. Als groepen zijn geselecteerd is 2FA is ingeschakeld voor alle leden ervan. Als een gebruiker lid is van zowel een geselecteerde als uitgezonderde groep, krijgt de geselecteerde voorrang en wordt 2FA afgedwongen.", + "Save changes" : "Wijzigingen bewaren", + "Marked for remote wipe" : "Aangemerkt voor wissen op afstand", + "Device settings" : "Toestelinstellingen", + "Allow filesystem access" : "Toestaan toegang bestandssysteem", + "Rename" : "Hernoemen", + "Revoke" : "Intrekken", + "Wipe device" : "Apparaat wissen", + "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Het verwijderen van deze token voorkomt mogelijk dat je apparaat gewist wordt, als dit proces nog niet gestart is.", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome voor Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Nextcloud iOS app", + "Nextcloud Android app" : "Nextcloud Android app", + "Nextcloud Talk for iOS" : "Nextcloud Talk voor iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk voor Android", + "Sync client - {os}" : "Sync client - {os}", + "This session" : "Huidige sessie", + "Device" : "Apparaat", + "Last activity" : "Laatste activiteit", + "Devices & sessions" : "Apparaten & sessies", + "Web, desktop and mobile clients currently logged in to your account." : "Web, desktop en mobiele clients zijn nu ingelogd op je account.", + "Do you really want to wipe your data from this device?" : "Weet je zeker dat je de gegevens van dit apparaat wilt wissen?", + "Confirm wipe" : "Bevestig wissen", + "Error while creating device token" : "Fout bij creëren apparaat-token", + "Error while updating device token scope" : "Fout tijdens bijwerken device tokenscope", + "Error while updating device token name" : "Fout tijdens bijwerken device tokennaam", + "Error while deleting the token" : "Fout bij verwijderen token", + "Error while wiping the device with the token" : "Fout tijdens het wissen van het apparaat met de token", + "App name" : "Appnaam", + "Create new app password" : "Creëer een nieuw app wachtwoord", + "Use the credentials below to configure your app or device." : "Gebruik onderstaande inloggegevens om je app of apparaat te configureren.", + "For security reasons this password will only be shown once." : "Vanwege beveiligingsredenen wordt dit wachtwoord maar één keer getoond.", + "Username" : "Gebruikersnaam", + "Password" : "Wachtwoord", + "Done" : "Klaar", + "Show QR code for mobile apps" : "Toon QR code voor mobiele apps", + "Copied!" : "Gekopieerd!", + "Copy" : "Kopiëren", + "Could not copy app password. Please copy it manually." : "Kon app wachtwoord niet kopiëren. Kopieer het handmatig.", + "This app is supported via your current Nextcloud subscription." : "Deze app wordt ondersteund via je huidige Nextcloud abonnement.", + "Supported" : "Ondersteund", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Officiële apps worden ontwikkeld door en binnen de community. Ze bieden centrale functionaliteit en zijn klaar voor productie.", + "Official" : "Officieel", + "by" : "door", + "Update to {version}" : "Update naar {version}", + "Remove" : "Verwijderen", + "Disable" : "Uitschakelen", + "All" : "Alle", + "Limit app usage to groups" : "Beperk appgebruik tot groepen", + "No results" : "Geen resultaten", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Deze app heeft geen minimum Nextcloud versie toegewezen gekregen. In de toekomst wordt dit wordt een fout.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Deze app heeft geen maximum Nextcloud versie toegewezen gekregen. In de toekomst wordt dit wordt een fout.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Deze app kan niet worden geïnstalleerd, omdat de volgende afhankelijkheden niet zijn ingevuld:", + "View in store" : "Bekijken in store", + "Visit website" : "Bezoek website", + "Report a bug" : "Rapporteer een fout", + "User documentation" : "Gebruikersdocumentatie", + "Admin documentation" : "Beheerdocumentatie", + "Developer documentation" : "Ontwikkelaarsdocumentatie", + "Update to {update}" : "Update naar {update}", + "Results from other categories" : "Resultaten van andere categorieën", + "No apps found for your version" : "Geen apps gevonden voor jouw versie", + "Disable all" : "Alles uitschakelen", + "Enable all" : "Alles activeren", + "Download and enable" : "Downloaden en inschakelen", + "Enable" : "Inschakelen", + "Enable untested app" : "Inschakelen niet-geteste apps", + "The app will be downloaded from the app store" : "De app zal worden gedownload van de app store", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Deze is niet aangeduid als compatibel met jouw versie van Nextcloud. Als je verdergaat, zal je de app kunnen installeren. Let op dat de app misschien niet werkt zoals verwacht.", + "You do not have permissions to see the details of this user" : "Je hebt niet de autorisaties om de details van deze gebruiekr te zien", + "The backend does not support changing the display name" : "De backend ondersteunt het wijzigen van de weergavenaam niet", + "New password" : "Nieuw wachtwoord", + "Add user in group" : "Voeg gebruiker toe aan groep", + "Set user as admin for" : "Maak gebruiker beheerder voor", + "Select user quota" : "Selecteer gebruikersquotum", + "No language set" : "Geen taal ingesteld", + "Never" : "Nooit", + "Delete user" : "Verwijderen gebruiker", + "Wipe all devices" : "Wis alle toestellen", + "Disable user" : "Gebruiker uitschakelen", + "Enable user" : "Inschakelen gebruiker", + "Resend welcome email" : "Verstuur verwelkomings e-mail opnieuw", + "{size} used" : "{size} gebruikt", + "Welcome mail sent!" : "Verwelkomings e-mail verstuurd!", + "Display name" : "Weergavenaam", + "Email" : "E-mailadres", + "Group admin for" : "Groepsbeheerder voor", + "Quota" : "Limieten", + "Language" : "Taal", + "Storage location" : "Opslag locatie", + "User backend" : "Backend gebruiker", + "Last login" : "Laatste login", + "Will be autogenerated" : "Wordt automatisch gegenereerd", + "Default language" : "Standaardtaal", + "Add a new user" : "Toevoegen nieuwe gebruiker", + "No users in here" : "Hier zijn geen gebruikers", + "Default quota" : "Standaard quota", + "Password change is disabled because the master key is disabled" : "Wachtwoordwijziging is uitgeschakeld omdat de hoofdsleutel is uitgeschakeld", + "Common languages" : "Gebruikelijke talen", + "All languages" : "Alle talen", + "Your apps" : "Je apps", + "Active apps" : "Ingeschakelde apps", + "Disabled apps" : "Uitgeschakelde apps", + "Updates" : "Updates", + "App bundles" : "App bundels", + "{license}-licensed" : "{license}-gelicenseerd", + "New user" : "Nieuwe gebruiker", + "Default quota:" : "Standaardquota:", + "Select default quota" : "Selecteer standaardquotum", + "Show Languages" : "Toon talen", + "Show last login" : "Toon laatste inlog", + "Show user backend" : "Toon backend gebruiker", + "Show storage path" : "Tonen opslagpad", + "You are about to remove the group {group}. The users will NOT be deleted." : "Je gaat groep {group} verwijderen. De gebruikers worden NIET verwijderd.", + "Please confirm the group removal " : "Bevestig verwijderen groep", + "Remove group" : "Verwijderen groep", + "Admins" : "Beheerders", + "Disabled users" : "Uitgeschakelde gebruikers", + "Everyone" : "Iedereen", + "Add group" : "Groep toevoegen", + "An error occured during the request. Unable to proceed." : "Er trad een fout op bij de aanvraag. Kan niet doorgaan.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "De app is ingeschakeld maar moet worden geüpdate. Je wordt over 5 seconden doorgeleid naar de updatepagina.", + "App update" : "App update", + "Error: This app can not be enabled because it makes the server unstable" : "Fout: Deze app kan niet ingeschakeld worden, omdat die de server onstabiel maakt", + "SSL Root Certificates" : "SSL Root Certificaten", + "Common Name" : "Common Name", + "Valid until" : "Geldig tot", + "Issued By" : "Uitgegeven door", + "Valid until %s" : "Geldig tot %s", + "Import root certificate" : "Importeren root certificaat", + "Administrator documentation" : "Beheerdersdocumentatie", + "Documentation" : "Documentatie", + "Forum" : "Forum", + "None" : "Geen", + "Login" : "Login", + "Plain" : "Gewoon", + "NT LAN Manager" : "NT LAN Manager", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "E-mailserver", + "Open documentation" : "Open documentatie", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Het is belangrijk deze server zo in te stellen dat er ook e-mails verstuurd kunnen worden om wachtwoord resets en meldingen bijvoorbeeld te versturen.", + "Send mode" : "Verstuurmodus", + "Encryption" : "Versleuteling", + "Sendmail mode" : "Sendmail modus", + "From address" : "Afzenderadres", + "mail" : "e-mail", + "Authentication method" : "Authenticatiemethode", + "Authentication required" : "Authenticatie vereist", + "Server address" : "Server adres", + "Port" : "Poort", + "Credentials" : "Inloggegevens", + "SMTP Username" : "SMTP gebruikersnaam", + "SMTP Password" : "SMTP wachtwoord", + "Save" : "Bewaar", + "Test email settings" : "Test e-mailinstellingen", + "Send email" : "Versturen e-mail", + "Security & setup warnings" : "Beveiligings- en instellingswaarschuwingen", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Voor beveiliging en prestaties van je server is het belangrijk dat alles goed is geconfigureerd. Om je hierbij te helpen doen we paar automatische controles. Bekijk de gerelateerde documentatie voor meer informatie.", + "All checks passed." : "Alle checks geslaagd", + "There are some errors regarding your setup." : "Er zitten foutjes in je configuratie.", + "There are some warnings regarding your setup." : "Er zijn waarschuwingen over je configuratie.", + "Checking for system and security issues." : "Controleren op systeem- en beveiligingsproblemen.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Lees de <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installatie-handleiding ↗</a> goed door en controleer <a href=\"%2$s\">de logs</a> op fouten en waarschuwingen.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Controleer de beveiliging van je Nextcloud via <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">onze securityscan ↗</a>.", + "Version" : "Versie", + "Two-Factor Authentication" : "Tweefactor authenticatie", + "Server-side encryption" : "Server-side versleuteling", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Server-side versleuteling maakt het mogelijk om bestanden te versleutelen die worden geüploaded. Dit betekent wel enig prestatieverlies, dus schakel het alleen in als het nodig is.", + "Enable server-side encryption" : "Server-side versleuteling inschakelen", + "Please read carefully before activating server-side encryption: " : "Lees dit goed, voordat je de serverside versleuteling activeert:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Als versleuteling is ingeschakeld, worden alle geüploade bestanden vanaf dat moment versleuteld opgeslagen op de server. Het is alleen mogelijk om de versleuteling later uit te schakelen als de actieve versleutelingsmodule dit ondersteunt en aan alle pré-condities (mn de ingestelde herstelsleutel) wordt voldaan.", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Versleuteling alleen gerandeert geen beveiliging van het systeem. Lees de documentatie voor meer achtergrond over de werking van de crypto app an de relevante use cases.", + "Be aware that encryption always increases the file size." : "Let erop dat versleuteling de bestandsomvang altijd laat toenemen.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Het is altijd verstandig om regelmatig backups van je bestanden te maken. Zorg ervoor dat je in geval van versleuteling ook de cryptosleutel met je gegevens backupt.", + "This is the final warning: Do you really want to enable encryption?" : "Dit is de laatste waarschuwing: Wil je versleuteling echt inschakelen?", + "Enable encryption" : "Versleuteling inschakelen", + "No encryption module loaded, please enable an encryption module in the app menu." : "Er is geen cryptomodule geladen, activeer een cryptomodule in het appmenu", + "Select default encryption module:" : "Selecteer de standaard cryptomodule:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Je moet je cryptosleutels van de oude versleuteling (ownCloud <= 8.0) migreren naar de nieuwe. Activeer de \"Standaard cryptomodule\" en start 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Je moet je cryptosleutels van de oude versleuteling (ownCloud <= 8.0) migreren naar de nieuwe.", + "Start migration" : "Start migratie", + "Background jobs" : "Achtergrondtaken", + "Last job ran %s." : "Laatste taak %s uitgevoerd.", + "Last job execution ran %s. Something seems wrong." : "Laatst uitgevoerde job: %s. Er lijkt iets fout gegaan.", + "Background job didn’t run yet!" : "Achtergrondtaak nog niet uitgevoerd!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Voor optimale prestaties is het belangrijk om de achtergrondtaken goed te configureren. Voor grotere installaties is \"Cron' de aanbevolen instelling. Bekijk de documentatie voor meer informatie.", + "Pick background job setting" : "Kies de achtergrondtaak instelling", + "Execute one task with each page loaded" : "Bij laden van elke pagina één taak uitvoeren", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php is geregistreerd bij een webcron service om elke 5 minuten cron.php over http aan te roepen.", + "Use system cron service to call the cron.php file every 5 minutes." : "Gebruik de systeemcron service om cron.php elke 5 minuten aan te roepen.", + "The cron.php needs to be executed by the system user \"%s\"." : "cron.php moet worden uitgevoerd door systeemgebruiker \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "PHP POSIX extensie is vereist om dit te draaien. Bekijk {linkstart}PHP documentatie{linkend} voor meer informatie.", + "Sharing" : "Delen", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Als beheerder kun je gedetailleerde regels voor delen instellen. Bekijk de documentatie voor meer informatie.", + "Allow apps to use the Share API" : "Apps toestaan de Share API te gebruiken", + "Allow users to share via link" : "Sta gebruikers toe om te delen via een link", + "Allow public uploads" : "Sta publieke uploads toe", + "Always ask for a password" : "Vraag altijd naar een wachtwoord", + "Enforce password protection" : "Dwing wachtwoordbeveiliging af", + "Set default expiration date" : "Stel standaard vervaldatum in", + "Expire after " : "Vervalt na", + "days" : "dagen", + "Enforce expiration date" : "Het kiezen van een vervaldatum verplichten", + "Allow resharing" : "Laat gebruikers de met hen gedeelde bestanden opnieuw delen", + "Allow sharing with groups" : "Sta delen met groepen toe", + "Restrict users to only share with users in their groups" : "Laat gebruikers alleen delen met andere gebruikers in hun groepen", + "Exclude groups from sharing" : "Sta bepaalde groepen niet toe om te delen", + "These groups will still be able to receive shares, but not to initiate them." : "Deze groepen kunnen gedeelde mappen en bestanden ontvangen, maar kunnen zelf niks delen.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Automatisch afmaken gebruikersnaam bij het delen. Als dit is uitgeschakeld moet een volledige gebruiksnaam of volledig emailadres worden opgegeven.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Toon disclaimer op de openbare link uploadpagina (alleen tonen als het bestandsoverzicht verborgen is).", + "This text will be shown on the public link upload page when the file list is hidden." : "Deze tekst wordt getoond op de openbare link uploadpagina als het bestandsoverzicht is verborgen.", + "Default share permissions" : "Standaard delen autorisaties", + "Personal" : "Persoonlijk", + "Administration" : "Beheer", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Ontwikkeld door de {communityopen}Nextcloud community{linkclose}, de {githubopen}broncode{linkclose} is gelicenseerd onder de {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Vind onze Facebook pagina leuk", + "Follow us on Twitter" : "Volg ons op Twitter", + "Follow us on Mastodon" : "Volg ons op Mastodon", + "Check out our blog" : "Lees ons blog", + "Subscribe to our newsletter" : "Abonneer jezelf op onze nieuwsbrief", + "Profile picture" : "Profielafbeelding", + "Upload new" : "Upload een nieuwe", + "Select from Files" : "Kies uit bestanden", + "Remove image" : "Afbeelding verwijderen", + "png or jpg, max. 20 MB" : "png of jpg, max. 20 MB", + "Picture provided by original account" : "Afbeelding is verstrekt door originele account.", + "Cancel" : "Annuleren", + "Choose as profile picture" : "Kies als profielafbeelding", + "Details" : "Details", + "You are a member of the following groups:" : "Je bent lid van de volgende groepen:", + "You are using <strong>%s</strong>" : "Je gebruikt <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Je gebruikt <strong>%1$s</strong> van <strong>%2$s</strong> (%3$s%%</strong>)", + "Full name" : "Volledige naam", + "No display name set" : "Nog geen weergavenaam ingesteld", + "Your email address" : "Je e-mailadres", + "No email address set" : "Geen e-mailadres opgegeven", + "For password reset and notifications" : "Voor wachtwoord reset en notificaties", + "Phone number" : "Telefoonnummer", + "Your phone number" : "Je telefoonnummer", + "Address" : "Adres", + "Your postal address" : "Je postadres", + "Website" : "Website", + "It can take up to 24 hours before the account is displayed as verified." : "Het kan tot 24 uur duren voordat het account als geverifieerd wordt weergegeven.", + "Link https://…" : "Link https://…", + "Twitter" : "Twitter", + "Twitter handle @…" : "Twitter naam @…", + "Help translate" : "Help met vertalen", + "Locale" : "Regionale instellingen", + "Current password" : "Huidig wachtwoord", + "Change password" : "Wijzig wachtwoord", + "Use a second factor besides your password to increase security for your account." : "Gebruik een tweede faktor naast je paswoord om de zekerheid van je account te verhogen. ", + "Disconnect" : "Verbreek verbinding", + "Not supported!" : "Niet ondersteund!", + "Press ⌘-C to copy." : "Druk ⌘-C om te kopiëren.", + "Press Ctrl-C to copy." : "Druk op Ctrl-C om te kopiëren.", + "Error while loading browser sessions and device tokens" : "Fout bij het laden van de browsersessie en apparaattokens", + "Store credentials" : "Opslaan inloggegevens", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php is geregistreerd bij een webcron service om elke 15 minuten cron.php over http aan te roepen.", + "Use system cron service to call the cron.php file every 15 minutes." : "Gebruik de systeemcron service om cron.php elke 15 minuten aan te roepen.", + "Follow us on Google+" : "Volg ons op Google+" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/nl.json b/apps/settings/l10n/nl.json new file mode 100644 index 00000000000..376fbfaad05 --- /dev/null +++ b/apps/settings/l10n/nl.json @@ -0,0 +1,821 @@ +{ "translations": { + "{actor} added you to group {group}" : "{actor} voegde je toe aan groep {group}", + "You added {user} to group {group}" : "U hebt gebruiker {user} aan de groep {group} toegevoegd.", + "{actor} added {user} to group {group}" : "{actor} voegde {user} toe aan groep {group}", + "An administrator added you to group {group}" : "Een beheerder heeft u aan groep {group} toegevoegd.", + "An administrator added {user} to group {group}" : "Een beheerder heeft gebruiker {user} aan groep {group} toegevoegd.", + "{actor} removed you from group {group}" : "{actor} verwijderde jou uit groep {group}", + "You removed {user} from group {group}" : "U hebt gebruiker {user} uit de groep {group} verwijderd.", + "{actor} removed {user} from group {group}" : "{actor} verwijderde {user} uit groep {group}", + "An administrator removed you from group {group}" : "Een beheerder heeft u uit groep {group} verwijderd.", + "An administrator removed {user} from group {group}" : "Een beheerder verwijderde {user} uit groep {group}", + "Your <strong>group memberships</strong> were modified" : "Je<strong>groepslidmaatschap</strong> werd gewijzigd", + "{actor} changed your password" : "{actor} heeft je wachtwoord aangepast", + "You changed your password" : "Je hebt je wachtwoord aangepast", + "Your password was reset by an administrator" : "Je wachtwoord is hersteld door een beheerder", + "{actor} changed your email address" : "{actor} wijzigde je e-mailadres", + "You changed your email address" : "Je wijzigde je e-mailadres", + "Your email address was changed by an administrator" : "Je e-mailadres is gewijzigd door een beheerder", + "You created app password \"{token}\"" : "Je creëerde app wachtwoord \"{token}\"", + "You deleted app password \"{token}\"" : "Je verwijderde app wachtwoord \"{token}\"", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Je hernoemde app wachtwoord \"{token}\" naar \"{newToken}\"", + "You granted filesystem access to app password \"{token}\"" : "Je verleende bestandssysteem toegang voor app wachtwoord \"{token}\"", + "You revoked filesystem access from app password \"{token}\"" : "Je hebt bestandssysteem toegang ingetrokken voor app wachtwoord \"{token}\"", + "Security" : "Beveiliging", + "You successfully logged in using two-factor authentication (%1$s)" : "Je bent succesvol ingelogd via twee-factor authenticatie (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Een inlogpoging via tweefactor authenticatie is mislukt (%1$s)", + "Remote wipe was started on %1$s" : "Wissen op afstand gestart op %1$s", + "Remote wipe has finished on %1$s" : "Wissen op afstand voltooid op %1$s", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Je <strong>wachtwoord</strong> of <strong>e-mailadres</strong> is gewijzigd", + "Couldn't remove app." : "Kon app niet verwijderen.", + "Couldn't update app." : "Kon de app niet bijwerken.", + "Wrong password" : "Onjuist wachtwoord", + "Saved" : "Opgeslagen", + "No user supplied" : "Geen gebruiker opgegeven", + "Unable to change password" : "Kan wachtwoord niet wijzigen", + "Authentication error" : "Authenticatiefout", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Voer een beheerdersherstelwachtwoord in, anders zullen alle gebruikersgegevens verloren gaan", + "Wrong admin recovery password. Please check the password and try again." : "Onjuist beheerdersherstelwachtwoord. Controleer het wachtwoord en probeer het opnieuw.", + "Backend doesn't support password change, but the user's encryption key was updated." : "De Back-end ondersteunt geen wachtwoordwijzigingen, maar de cryptosleutel van de gebruiker is succesvol bijgewerkt.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "installeren en bijwerken van applicaties via de app store of gefedereerd delen", + "Federated Cloud Sharing" : "Gefedereerd delen via de cloud", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cUrl gebruikt een verouderde %1$s versie (%2$s). Werk het besturingssysteem bij, want anders zullen functies als %3$s niet betrouwbaar werken.", + "Invalid SMTP password." : "Ongeldig SMTP wachtwoord", + "Email setting test" : "E-mailinstellingen test", + "Well done, %s!" : "Goed gedaan, %s!", + "If you received this email, the email configuration seems to be correct." : "Als je dit e-mailtje ontving, dan lijken de e-mailinstellingen correct.", + "Email could not be sent. Check your mail server log" : "Er kon geen e-mail verstuurd worden. Controleer je server log files", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Er ontstond een probleem bij het versturen van de e-mail. Controleer je instellingen. (Fout: %s)", + "You need to set your user email before being able to send test emails." : "Je moet je e-mailadres invoeren voordat je testberichten kunt versturen.", + "Invalid mail address" : "Ongeldig e-mailadres", + "Settings saved" : "Instellingen opgeslagen", + "Unable to change full name" : "Kan de volledige naam niet wijzigen", + "Unable to change email address" : "Kan e-mailadres niet wijzigen", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Om je Twitter-account te verifiëren moet je de volgende tweet op Twitter plaatsen (zorg dat je het plaatst zonder regelafbreking):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Om je website te verifiëren voeg de inhoud toe binnen de web-root van je server '.well-known/CloudIdVerificationCode.txt' (zorg dat de tekst op één regel staat):", + "%1$s changed your password on %2$s." : "%1$swijzigde je wachtwoord op %2$s.", + "Your password on %s was changed." : "Je wachtwoord op %s is gewijzigd.", + "Your password on %s was reset by an administrator." : "Je wachtwoord op %s werd hersteld door een beheerder.", + "Password for %1$s changed on %2$s" : "Wachtwoord voor %1$s gewijzigd op %2$s", + "Password changed for %s" : "Wachtwoord gewijzigd voor %s", + "If you did not request this, please contact an administrator." : "Als je dat niet aanvroeg, neem dan contact op met een beheerder.", + "Your email address on %s was changed." : "Je e-mailadres op %sis gewijzigd.", + "Your email address on %s was changed by an administrator." : "Je e-mailadres op %s is gewijzigd door een beheerder.", + "Email address for %1$s changed on %2$s" : "E-mailadres voor %1$sgewijzigd op %2$s", + "Email address changed for %s" : "E-mailadres gewijzigd voor %s", + "The new email address is %s" : "Het nieuwe e-mailadres is %s", + "Your %s account was created" : "Je %s account is aangemaakt", + "Welcome aboard" : "Welkom aan boord", + "Welcome aboard %s" : "Welkom aan boord %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Welkom bij je %s account; je kunt nu je bestanden toevoegen en veilig delen.", + "Your username is: %s" : "Je gebruikersnaam is: %s", + "Set your password" : "Stel je wachtwoord in", + "Go to %s" : "Ga naar %s", + "Install Client" : "Klik hier en installeer een client op telefoon/tablet of pc.", + "Logged in user must be a subadmin" : "Ingelogde gebruiker moet een subbeheerder zijn", + "Create" : "Maak", + "Change" : "Pas aan", + "Delete" : "Verwijder", + "Share" : "Deel", + "Unlimited" : "Ongelimiteerd", + "Verifying" : "Controleer", + "Verifying …" : "Verifiëren...", + "Verify" : "Verifiëren", + "Migration in progress. Please wait until the migration is finished" : "Migratie bezig. Wacht tot het proces klaar is.", + "Migration started …" : "Migratie gestart...", + "Not saved" : "Niet opgeslagen", + "Sending…" : "Versturen...", + "Email sent" : "E-mail verzonden", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Er trad een fout op. Upload als een ASCII-gecodeerd PEM certificaat.", + "Valid until {date}" : "Geldig tot {date}", + "Local" : "Lokaal", + "Private" : "Privé", + "Only visible to local users" : "Alleen zichtbaar voor lokale gebruikers", + "Only visible to you" : "Alleen zichtbaar voor jou", + "Contacts" : "Contactpersonen", + "Visible to local users and to trusted servers" : "Alleen zichtbaar voor lokale gebruikers en vertrouwde servers", + "Public" : "Openbaar", + "Will be synced to a global and public address book" : "Wordt gesynct met een globaal en openbaar adresboek", + "Very weak password" : "Zeer zwak wachtwoord", + "Weak password" : "Zwak wachtwoord", + "So-so password" : "Matig wachtwoord", + "Good password" : "Goed wachtwoord", + "Strong password" : "Sterk wachtwoord", + "An error occurred while changing your language. Please reload the page and try again." : "Er trad een fout op bij het aanpassen van de taal. Ververs de pagina en probeer het opnieuw.", + "An error occurred while changing your locale. Please reload the page and try again." : "Er trad een fout op bij het aanpassen van je landsinstellingen. Ververs de pagina en probeer het opnieuw.", + "Select a profile picture" : "Kies een profielafbeelding", + "Week starts on {fdow}" : "Week begint op {fdow}", + "Groups" : "Groepen", + "Group list is empty" : "Groepenlijst is leeg", + "Unable to retrieve the group list" : "Kan groepenoverzicht niet ophalen", + "Afrikaans (Namibia)" : "Afrikaans (Namibië)", + "Afrikaans (South Africa)" : "Afrikaans (Zuid-Afrika)", + "Afrikaans" : "Afrikaans", + "Akan (Ghana)" : "Akan (Ghana)", + "Akan" : "Akan", + "Albanian (Albania)" : "Albanees (Albanië)", + "Albanian" : "Albaans", + "Amharic (Ethiopia)" : "Amhaars (Ethiopië)", + "Amharic" : "Amhaar", + "Arabic (Algeria)" : "Arabisch (Algerije)", + "Arabic (Bahrain)" : "Arabisch (Bahrain)", + "Arabic (Egypt)" : "Arabisch (Egypte)", + "Arabic (Iraq)" : "Arabisch (Irak)", + "Arabic (Jordan)" : "Arabisch (Jordanië)", + "Arabic (Kuwait)" : "Arabisch (Koeweit)", + "Arabic (Lebanon)" : "Arabisch (Libanon)", + "Arabic (Libya)" : "Arabisch (Libië)", + "Arabic (Morocco)" : "Arabisch (Marokko)", + "Arabic (Oman)" : "Arabisch (Oman)", + "Arabic (Qatar)" : "Arabisch (Katar)", + "Arabic (Saudi Arabia)" : "Arabisch (Saoedi-Arabië)", + "Arabic (Sudan)" : "Arabisch (Soedan)", + "Arabic (Syria)" : "Arabisch (Syrië)", + "Arabic (Tunisia)" : "Arabisch (Tunisië)", + "Arabic (United Arab Emirates)" : "Arabisch (Verenigde Arabische Emiraten )", + "Arabic (Yemen)" : "Arabisch (Jemen)", + "Arabic" : "Arabisch", + "Armenian (Armenia)" : "Armeens (Armenië)", + "Armenian" : "Armeens", + "Assamese (India)" : "Assamees (India)", + "Assamese" : "Assamees", + "Asu (Tanzania)" : "Asu (Tanzania)", + "Asu" : "Asu", + "Azerbaijani (Cyrillic)" : "Azerbeidzjaans (Cyrillisch)", + "Azerbaijani (Cyrillic, Azerbaijan)" : "Azerbeidzjaans (Cyrillisch, Azerbeidzjaan)", + "Azerbaijani (Latin)" : "Azerbeidzjaans (Latijns)", + "Azerbaijani (Latin, Azerbaijan)" : "Azerbeidzjaans (Latijn, Azerbeidzjaan)", + "Azerbaijani" : "Azerbaidzjaans", + "Bambara (Mali)" : "Bambara (Mali)", + "Bambara" : "Bambara", + "Basque (Spain)" : "Baskisch (Spanje)", + "Basque" : "Baskisch", + "Belarusian (Belarus)" : "Wit-Russisch (Wit-Rusland)", + "Belarusian" : "Wit-Russisch", + "Bemba (Zambia)" : "Bemba (Zambia)", + "Bemba" : "Bemba", + "Bena (Tanzania)" : "Bena (Tanzania)", + "Bena" : "Bena", + "Bengali (Bangladesh)" : "Bengaals (Bangladesh)", + "Bengali (India)" : "Bengaals (India)", + "Bengali" : "Bengaals", + "Bosnian (Bosnia and Herzegovina)" : "Bosnisch (Bosnië en Herzegovina)", + "Bosnian" : "Bosnisch", + "Bulgarian (Bulgaria)" : "Bulgaars (Bulgarije)", + "Bulgarian" : "Bulgaars", + "Burmese (Myanmar [Burma])" : "Birmees (Myanmar [Burma])", + "Burmese" : "Burmees", + "Catalan (Spain)" : "Catalaans (Spanje)", + "Catalan" : "Catalaans", + "Central Morocco Tamazight (Latin)" : "Centraal Marokko Tamazight (Latijns)", + "Central Morocco Tamazight (Latin, Morocco)" : "Centraal Marokko Tamazight (Latijns, Marokko)", + "Central Morocco Tamazight" : "Centraal Marokko Tamazight", + "Cherokee (United States)" : "Cherokee (Verenigde Staten van Amerika)", + "Cherokee" : "Cherokee", + "Chiga (Uganda)" : "Chiga (Oeganda)", + "Chiga" : "Chiga", + "Chinese (Simplified Han)" : "Chinees (Gesimplificeerd Han)", + "Chinese (Simplified Han, China)" : "Chinees (Gesimplificeerd Han, China)", + "Chinese (Simplified Han, Hong Kong SAR China)" : "Chinees (Gesimplificeerd Han, Hong Kong SAR China)", + "Chinese (Simplified Han, Macau SAR China)" : "Chinees (Gesimplificeerd Han, Macao SAR China)", + "Chinese (Simplified Han, Singapore)" : "Chinees (Gesimplificeerd Han, Singapore)", + "Chinese (Traditional Han)" : "Chinees (traditioneel Han)", + "Chinese (Traditional Han, Hong Kong SAR China)" : "Chinees (Traditioneel Han, Hong Kong SAR China)", + "Chinese (Traditional Han, Macau SAR China)" : "Chinees (Traditioneel Han, Macao SAR China)", + "Chinese (Traditional Han, Taiwan)" : "Chinees (Traditioneel Han, Taiwan)", + "Chinese" : "Chinees", + "Cornish (United Kingdom)" : "Cornish (Verenigd Koninkrijk)", + "Cornish" : "Cornish", + "Croatian (Croatia)" : "Kroatisch (Kroatië)", + "Croatian" : "Kroatisch", + "Czech (Czech Republic)" : "Tsjechisch (Tsjechische Republiek)", + "Czech" : "Tsjechisch", + "Danish (Denmark)" : "Deens (Denemarken)", + "Danish" : "Deens", + "Dutch (Belgium)" : "Nederlands (België)", + "Dutch (Netherlands)" : "Nederlands (Nederland)", + "Dutch" : "Nederlands", + "Embu (Kenya)" : "Embu (Kenia)", + "Embu" : "Embu", + "English (American Samoa)" : "Engels (Amerikaans Samoa)", + "English (Australia)" : "Engels (Australië)", + "English (Belgium)" : "Engels (België)", + "English (Belize)" : "Engels (Belize)", + "English (Botswana)" : "Engels (Botswana)", + "English (Canada)" : "Engels (Canada)", + "English (Guam)" : "Engels (Guam)", + "English (Hong Kong SAR China)" : "Engels (Hong Kong SAR China)", + "English (India)" : "Engels (India)", + "English (Ireland)" : "Engels (Ierland)", + "English (Jamaica)" : "Engels (Jamaica)", + "English (Malta)" : "Engels (Malta)", + "English (Marshall Islands)" : "Engels (Marshalleilanden)", + "English (Mauritius)" : "Engels (Mauritius)", + "English (Namibia)" : "Engels (Namibië)", + "English (New Zealand)" : "Engels (Nieuw Zeeland)", + "English (Northern Mariana Islands)" : "Engels (Noordelijke Marianen)", + "English (Pakistan)" : "Engels (Pakistan)", + "English (Philippines)" : "Engels (Filippijnen)", + "English (Singapore)" : "Engels (Singapore)", + "English (South Africa)" : "Engels (Zuid-Afrika)", + "English (Trinidad and Tobago)" : "Engels (Trinidad en Tobago)", + "English (U.S. Minor Outlying Islands)" : "Engels (Kleine afgelegen eilanden van de Verenigde Staten)", + "English (U.S. Virgin Islands)" : "Engels (Maagdeneilanden)", + "English (United Kingdom)" : "Engels (Verenigd Koninkrijk)", + "English (United States)" : "Engels (Verenigde Staten van Amerika)", + "English (Zimbabwe)" : "Engels (Zimbabwe)", + "English" : "Engels", + "Esperanto" : "Esperanto", + "Estonian (Estonia)" : "Ests (Estland)", + "Estonian" : "Ests", + "Ewe (Ghana)" : "Ewe (Ghana)", + "Ewe (Togo)" : "Ewe (Togo)", + "Ewe" : "Ewe", + "Faroese (Faroe Islands)" : "Faeröes (Faeröereilanden)", + "Faroese" : "Faeröers", + "Filipino (Philippines)" : "Filipijns (Filippijnen)", + "Filipino" : "Filipijns", + "Finnish (Finland)" : "Fins (Finland)", + "Finnish" : "Fins", + "French (Belgium)" : "Frans (België)", + "French (Benin)" : "Frans (Benin)", + "French (Burkina Faso)" : "Frans (Burkina Faso)", + "French (Burundi)" : "Frans (Burundi)", + "French (Cameroon)" : "Frans (Kameroen)", + "French (Canada)" : "Frans (Canada)", + "French (Central African Republic)" : "Frans (Centraal Afrikaanse Republiek)", + "French (Chad)" : "Frans (Tsjaad)", + "French (Comoros)" : "Frans (Komoren)", + "French (Congo - Brazzaville)" : "Frans (Congo - Brazzaville)", + "French (Congo - Kinshasa)" : "Frans (Kongo - Kinshasa)", + "French (Côte d’Ivoire)" : "Frans (Ivoorkust)", + "French (Djibouti)" : "Frans (Djibouti)", + "French (Equatorial Guinea)" : "Frans (Equatoriaal Guinea)", + "French (France)" : "Frans (Frankrijk)", + "French (Gabon)" : "Frans (Gabon)", + "French (Guadeloupe)" : "Frans (Guadeloupe)", + "French (Guinea)" : "Frans (Guinea)", + "French (Luxembourg)" : "Frans (Luxemburg)", + "French (Madagascar)" : "Frans (Madagascar)", + "French (Mali)" : "Frans (Mali)", + "French (Martinique)" : "Frans (Martinique)", + "French (Monaco)" : "Frans (Monaco)", + "French (Niger)" : "Frans (Niger)", + "French (Rwanda)" : "Frans (Rwanda)", + "French (Réunion)" : "Frans (Réunion)", + "French (Saint Barthélemy)" : "Frans (Saint Barthélemy)", + "French (Saint Martin)" : "Frans (Saint Martin)", + "French (Senegal)" : "Frans (Senegal)", + "French (Switzerland)" : "Frans (Zwitserland)", + "French (Togo)" : "Frans (Togo)", + "French" : "Frans", + "Fulah (Senegal)" : "Fulah (Senegal)", + "Fulah" : "Fulah", + "Galician (Spain)" : "Galisisch (Spanje)", + "Galician" : "Galisisch", + "Ganda (Uganda)" : "Ganda (Oeganda)", + "Ganda" : "Ganda", + "Georgian (Georgia)" : "Georgisch (Georgië)", + "Georgian" : "Georgisch", + "German (Austria)" : "Duits (Oostenrijk)", + "German (Belgium)" : "Duits (België)", + "German (Germany)" : "Duits (Duitsland)", + "German (Liechtenstein)" : "Duits (Liechtenstein)", + "German (Luxembourg)" : "Duits (Luxemburg)", + "German (Switzerland)" : "Duits (Zwitserland)", + "German" : "Duits", + "Greek (Cyprus)" : "Grieks (Cyprus)", + "Greek (Greece)" : "Grieks (Griekenland)", + "Greek" : "Grieks", + "Gujarati (India)" : "Gujarati (India)", + "Gujarati" : "Gujarati", + "Gusii (Kenya)" : "Gusii (Kenia)", + "Gusii" : "Gusii", + "Hausa (Latin)" : "Hausa (Latijns)", + "Hausa (Latin, Ghana)" : "Hausa (Latijns, Ghana)", + "Hausa (Latin, Niger)" : "Hausa (Latijns, Niger)", + "Hausa (Latin, Nigeria)" : "Hausa (Latijns, Nigeria)", + "Hausa" : "Hausa", + "Hawaiian (United States)" : "Hawaiaans (Verenigde Staten van Amerika)", + "Hawaiian" : "Hawaiaans", + "Hebrew (Israel)" : "Hebreeuws (Israel)", + "Hebrew" : "Hebreeuws", + "Hindi (India)" : "Hindi (India)", + "Hindi" : "Hindi", + "Hungarian (Hungary)" : "Hongaars (Hongarije)", + "Hungarian" : "Hongaars", + "Icelandic (Iceland)" : "IJslands (IJsland)", + "Icelandic" : "Ijslands", + "Igbo (Nigeria)" : "Igbo (Nigeria)", + "Igbo" : "Igbo", + "Indonesian (Indonesia)" : "Indonesisch (Indonesië)", + "Indonesian" : "Indonesisch", + "Irish (Ireland)" : "Iers (Ierland)", + "Irish" : "Iers", + "Italian (Italy)" : "Italiaans (Italië)", + "Italian (Switzerland)" : "Italiaans (Zwitserland)", + "Italian" : "Italiaans", + "Japanese (Japan)" : "Japans (Japan)", + "Japanese" : "Japans", + "Kabuverdianu (Cape Verde)" : "Kaapverdiaans (Kaapverdië)", + "Kabuverdianu" : "Kaapverdiaans", + "Kabyle (Algeria)" : "Kabyle (Algerije)", + "Kabyle" : "Kabyle", + "Kalaallisut (Greenland)" : "Kalaallisut (Groenland)", + "Kalaallisut" : "Kalaallisut", + "Kalenjin (Kenya)" : "Kalenjin (Kenia)", + "Kalenjin" : "Kalenjin", + "Kamba (Kenya)" : "Kamba (Kenia)", + "Kamba" : "Kamba", + "Kannada (India)" : "Kannada (India)", + "Kannada" : "Kannada", + "Kazakh (Cyrillic)" : "Kazaks (Cyrillisch)", + "Kazakh (Cyrillic, Kazakhstan)" : "Kazaks (Cyrillisch, Kazachstan)", + "Kazakh" : "Kazachs", + "Khmer (Cambodia)" : "Khmer (Cambodja)", + "Khmer" : "Khmer", + "Kikuyu (Kenya)" : "Kikuyu (Kenia)", + "Kikuyu" : "Kikuyu", + "Kinyarwanda (Rwanda)" : "Kinyarwanda (Rwanda)", + "Kinyarwanda" : "Kinyarwanda", + "Konkani (India)" : "Konkani (India)", + "Konkani" : "Konkani", + "Korean (South Korea)" : "Koreaans", + "Korean" : "Koreaans", + "Koyra Chiini (Mali)" : "Koyra Chiini (Mali)", + "Koyra Chiini" : "Koyra Chiini", + "Koyraboro Senni (Mali)" : "Koyraboro Senni (Mali)", + "Koyraboro Senni" : "Koyraboro Senni", + "Langi (Tanzania)" : "Langi (Tanzania)", + "Langi" : "Langi", + "Latvian (Latvia)" : "Lets (Letland)", + "Latvian" : "Lets", + "Lithuanian (Lithuania)" : "Litouws (Litouwen)", + "Lithuanian" : "Litouws", + "Luo (Kenya)" : "Luo (Kenia)", + "Luo" : "Luo", + "Luyia (Kenya)" : "Luyia (Kenia)", + "Luyia" : "Luyia", + "Macedonian (Macedonia)" : "Macedonisch (Macedonië)", + "Macedonian" : "Macedonisch", + "Machame (Tanzania)" : "Machame (Tanzania)", + "Machame" : "Machame", + "Makonde (Tanzania)" : "Makonde (Tanzania)", + "Makonde" : "Makonde", + "Malagasy (Madagascar)" : "Malagasy (Madagascar)", + "Malagasy" : "Malagasitalen", + "Malay (Brunei)" : "Maleis (Brunei)", + "Malay (Malaysia)" : "Maleis (Maleisië)", + "Malay" : "Maleis", + "Malayalam (India)" : "Maleis (India)", + "Malayalam" : "Maleis", + "Maltese (Malta)" : "Maltees (Malta)", + "Maltese" : "Maltees", + "Manx (United Kingdom)" : "Manx (Verenigd Koninkrijk)", + "Manx" : "Manx-Gaelisch", + "Marathi (India)" : "Marathi (India)", + "Marathi" : "Marathi", + "Masai (Kenya)" : "Masai (Kenia)", + "Masai (Tanzania)" : "Masai (Tanzania)", + "Masai" : "Masai", + "Meru (Kenya)" : "Meru (Kenia)", + "Meru" : "Meru", + "Morisyen (Mauritius)" : "Morisyen (Mauritius)", + "Morisyen" : "Morisyen", + "Nama (Namibia)" : "Nama (Namibië)", + "Nama" : "Nama", + "Nepali (India)" : "Nepalees (India)", + "Nepali (Nepal)" : "Nepalees (Nepal)", + "Nepali" : "Nepalees", + "North Ndebele (Zimbabwe)" : "Noord Ndebele (Zimbabwe)", + "North Ndebele" : "Ndebele", + "Norwegian Bokmål (Norway)" : "Noors Bokmål (Noorwegen)", + "Norwegian Bokmål" : "Noors Bokmål", + "Norwegian Nynorsk (Norway)" : "Noors Nynorsk (Noorwegen)", + "Norwegian Nynorsk" : "Noors Nynorsk", + "Nyankole (Uganda)" : "Nyankole (Oeganda)", + "Nyankole" : "Nyankole", + "Oriya (India)" : "Oriya (India)", + "Oriya" : "Oriya", + "Oromo (Ethiopia)" : "Oromo (Ethiopië)", + "Oromo (Kenya)" : "Oromo (Kenia)", + "Oromo" : "Oromo", + "Pashto (Afghanistan)" : "Pashto (Afghanistan)", + "Pashto" : "Pashto", + "Persian (Afghanistan)" : "Persisch (Afghanistan)", + "Persian (Iran)" : "Persisch (Iran)", + "Persian" : "Persisch", + "Polish (Poland)" : "Pools (Polen)", + "Polish" : "Pools", + "Portuguese (Brazil)" : "Portugees (Brazilië)", + "Portuguese (Guinea-Bissau)" : "Portugees (Guinea-Bissau)", + "Portuguese (Mozambique)" : "Portugees (Mozambique)", + "Portuguese (Portugal)" : "Portugees (Portugal)", + "Portuguese" : "Portugees", + "Punjabi (Arabic)" : "Punjabi (Arabisch)", + "Punjabi (Arabic, Pakistan)" : "Punjabi (Arabisch, Pakistan)", + "Punjabi (Gurmukhi)" : "Punjabi (Gurmukhi)", + "Punjabi (Gurmukhi, India)" : "Punjabi (Gurmukhi, India)", + "Punjabi" : "Punjabi", + "Romanian (Moldova)" : "Roemeens (Moldavië)", + "Romanian (Romania)" : "Roemeens (Roemenië)", + "Romanian" : "Roemeens", + "Romansh (Switzerland)" : "Romaan (Zwitserland)", + "Romansh" : "Romaans", + "Rombo (Tanzania)" : "Rombo (Tanzania)", + "Rombo" : "Rombo", + "Russian (Moldova)" : "Russisch (Moldavië)", + "Russian (Russia)" : "Russisch (Rusland)", + "Russian (Ukraine)" : "Russisch (Oekraine)", + "Russian" : "Russisch", + "Rwa (Tanzania)" : "Rwa (Tanzania)", + "Rwa" : "Rwa", + "Samburu (Kenya)" : "Samburu (Kenya)", + "Samburu" : "Samburu", + "Sango (Central African Republic)" : "Sango (Centraal Afrikaanse Republiek)", + "Sango" : "Sango", + "Sena (Mozambique)" : "Sena (Mozambique)", + "Sena" : "Sena", + "Serbian (Cyrillic)" : "Servisch (Cyrillisch)", + "Serbian (Cyrillic, Bosnia and Herzegovina)" : "Servisch (Cyrillisch, Bosnië en Herzegovina)", + "Serbian (Cyrillic, Montenegro)" : "Servisch (Cyrillisch, Montenegro)", + "Serbian (Cyrillic, Serbia)" : "Servisch (Cyrillisch, Servië)", + "Serbian (Latin)" : "Servisch (Latijns)", + "Serbian (Latin, Bosnia and Herzegovina)" : "Servisch (Latijns, Bosnië en Herzegovina)", + "Serbian (Latin, Montenegro)" : "Servisch (Latijns, Montenegro)", + "Serbian (Latin, Serbia)" : "Servisch (Latijns, Servië)", + "Serbian" : "Servisch", + "Shona (Zimbabwe)" : "Shona (Zimbabwe)", + "Shona" : "Shona", + "Sichuan Yi (China)" : "Sichuan Yi (China)", + "Sichuan Yi" : "Sichuan Yi; Nuosu", + "Sinhala (Sri Lanka)" : "Singalees (Sri Lanka)", + "Sinhala" : "Sinhala", + "Slovak (Slovakia)" : "Slowaaks (Slowakije)", + "Slovak" : "Slowaaks", + "Slovenian (Slovenia)" : "Sloveens (Slovenië)", + "Slovenian" : "Sloveens", + "Soga (Uganda)" : "Soga (Oeganda)", + "Soga" : "Soga", + "Somali (Djibouti)" : "Somalies (Djibouti)", + "Somali (Ethiopia)" : "Somalisch (Ethiopië)", + "Somali (Kenya)" : "Somalisch (Kenoa)", + "Somali (Somalia)" : "Somalisch (Somalië)", + "Somali" : "Somalisch", + "Spanish (Argentina)" : "Spaans (Argentinië)", + "Spanish (Bolivia)" : "Spaans (Bolivia)", + "Spanish (Chile)" : "Spaans (Chili)", + "Spanish (Colombia)" : "Spaans (Colombia)", + "Spanish (Costa Rica)" : "Spaans (Costa Rica)", + "Spanish (Dominican Republic)" : "Spaans (Dominicaanse Republiek)", + "Spanish (Ecuador)" : "Spaans (Ecuador)", + "Spanish (El Salvador)" : "Spaans (El Salvador)", + "Spanish (Equatorial Guinea)" : "Spaans (Equatoriaal Guinea)", + "Spanish (Guatemala)" : "Spaans (Guatemala)", + "Spanish (Honduras)" : "Spaans (Honduras)", + "Spanish (Latin America)" : "Spaans (Latijns Amerika)", + "Spanish (Mexico)" : "Spaans (Mexico)", + "Spanish (Nicaragua)" : "Spaans (Nicaragua)", + "Spanish (Panama)" : "Spaans (Panama)", + "Spanish (Paraguay)" : "Spaans (Paraguay)", + "Spanish (Peru)" : "Spaans (Peru)", + "Spanish (Puerto Rico)" : "Spaans (Puerto Rico)", + "Spanish (Spain)" : "Spaans (Spanje)", + "Spanish (United States)" : "Spaans (Verenigde Staten van Amerika)", + "Spanish (Uruguay)" : "Spaans (Uruguay)", + "Spanish (Venezuela)" : "Spaans (Venezuela)", + "Spanish" : "Spaans", + "Swahili (Kenya)" : "Swahili (Kenia)", + "Swahili (Tanzania)" : "Swahili (Tanzania)", + "Swahili" : "Swahili", + "Swedish (Finland)" : "Zweeds (Finland)", + "Swedish (Sweden)" : "Zweeds (Zweden)", + "Swedish" : "Zweeds", + "Swiss German (Switzerland)" : "Schweizerdeutsch (Zwitserland)", + "Swiss German" : "Schweizerdeutsch", + "Tachelhit (Latin)" : "Tachelhit (Latijns)", + "Tachelhit (Latin, Morocco)" : "Tachelhit (Latijns, Marokko)", + "Tachelhit (Tifinagh)" : "Tachelhit (Tifinagh)", + "Tachelhit (Tifinagh, Morocco)" : "Tachelhit (Tifinagh, Marokko)", + "Tachelhit" : "Tachelhit", + "Taita (Kenya)" : "Taita (Kenia)", + "Taita" : "Taita", + "Tamil (India)" : "Tamil (India)", + "Tamil (Sri Lanka)" : "Tamil (Sri Lanka)", + "Tamil" : "Tamil", + "Telugu (India)" : "Telugu (India)", + "Telugu" : "Telugu", + "Teso (Kenya)" : "Teso (Kenia)", + "Teso (Uganda)" : "Teso (Oeganda)", + "Teso" : "Teso", + "Thai (Thailand)" : "Thais (Thailand)", + "Thai" : "Thais", + "Tibetan (China)" : "Tibetaans (China)", + "Tibetan (India)" : "Tibetaans (India)", + "Tibetan" : "Tibetaans", + "Tigrinya (Eritrea)" : "Tigrinya (Eritrea)", + "Tigrinya (Ethiopia)" : "Tigrinya (Ethiopië)", + "Tigrinya" : "Tigrinya", + "Tonga (Tonga)" : "Tonga (Tonga)", + "Tonga" : "Tonga", + "Turkish (Turkey)" : "Turks (Turkije)", + "Turkish" : "Turks", + "Ukrainian (Ukraine)" : "Oekrains (Oekraine)", + "Ukrainian" : "Oekrains", + "Urdu (India)" : "Urdu (India)", + "Urdu (Pakistan)" : "Urdu (Pakistan)", + "Urdu" : "Urdu", + "Uzbek (Arabic)" : "Oezbeeks (Arabisch)", + "Uzbek (Arabic, Afghanistan)" : "Oezbeeks (Arabisch, Afghanistan)", + "Uzbek (Cyrillic)" : "Oezbeeks (Cyrillisch)", + "Uzbek (Cyrillic, Uzbekistan)" : "Oezbeeks (Cyrillisch, Oezbekistan)", + "Uzbek (Latin)" : "Oezbeeks (Latijns)", + "Uzbek (Latin, Uzbekistan)" : "Oezbeeks (Latijns, Oezbekistan)", + "Uzbek" : "Oezbeeks", + "Vietnamese (Vietnam)" : "Vietnamees(Vietnam)", + "Vietnamese" : "Viëtnamees", + "Vunjo (Tanzania)" : "Vunjo (Tanzania)", + "Vunjo" : "Vunjo", + "Welsh (United Kingdom)" : "Welsh (Verenigd Koninkrijk)", + "Welsh" : "Welsh", + "Yoruba (Nigeria)" : "Yoruba (Nigeria)", + "Yoruba" : "Yoruba", + "Zulu (South Africa)" : "Zoeloe (Zuid-Afrika)", + "Zulu" : "Zoeloe", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Twee-factor authenticatie kan worden afgedwongen voor alle \tgebruikers en specifieke groepen. Als ze geen twee-factor provider hebben ingesteld, dan kunnen ze niet inloggen in het systeem.", + "Enforce two-factor authentication" : "Forceren gebruik tweefactor authenticatie", + "Limit to groups" : "Beperk tot groepen", + "Enforcement of two-factor authentication can be set for certain groups only." : "Forceren van gebruik tweefactor authenticatie kan worden ingesteld voor bepaalde groepen", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "Twee-factor authenticatie is afgedwongen voor\tleden van de volgende groepen.", + "Enforced groups" : "Afgedwongen groepen", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "Twee-factor authenticatie is niet afgedwongen voor\tleden van de volgende groepen.", + "Excluded groups" : "Uitgesloten groepen", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "Wanneer groepen worden geselecteerd/uitgezonderd, geldt de volgende logica om te bepalen of voor een gebruiker 2FA wordt afgedwongen: Als geen groepen zijn geselecteerd, is 2FA voor iedereen ingeschakeld, behalve voor leden van de uitgezonderde groepen. Als groepen zijn geselecteerd is 2FA is ingeschakeld voor alle leden ervan. Als een gebruiker lid is van zowel een geselecteerde als uitgezonderde groep, krijgt de geselecteerde voorrang en wordt 2FA afgedwongen.", + "Save changes" : "Wijzigingen bewaren", + "Marked for remote wipe" : "Aangemerkt voor wissen op afstand", + "Device settings" : "Toestelinstellingen", + "Allow filesystem access" : "Toestaan toegang bestandssysteem", + "Rename" : "Hernoemen", + "Revoke" : "Intrekken", + "Wipe device" : "Apparaat wissen", + "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Het verwijderen van deze token voorkomt mogelijk dat je apparaat gewist wordt, als dit proces nog niet gestart is.", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome voor Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Nextcloud iOS app", + "Nextcloud Android app" : "Nextcloud Android app", + "Nextcloud Talk for iOS" : "Nextcloud Talk voor iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk voor Android", + "Sync client - {os}" : "Sync client - {os}", + "This session" : "Huidige sessie", + "Device" : "Apparaat", + "Last activity" : "Laatste activiteit", + "Devices & sessions" : "Apparaten & sessies", + "Web, desktop and mobile clients currently logged in to your account." : "Web, desktop en mobiele clients zijn nu ingelogd op je account.", + "Do you really want to wipe your data from this device?" : "Weet je zeker dat je de gegevens van dit apparaat wilt wissen?", + "Confirm wipe" : "Bevestig wissen", + "Error while creating device token" : "Fout bij creëren apparaat-token", + "Error while updating device token scope" : "Fout tijdens bijwerken device tokenscope", + "Error while updating device token name" : "Fout tijdens bijwerken device tokennaam", + "Error while deleting the token" : "Fout bij verwijderen token", + "Error while wiping the device with the token" : "Fout tijdens het wissen van het apparaat met de token", + "App name" : "Appnaam", + "Create new app password" : "Creëer een nieuw app wachtwoord", + "Use the credentials below to configure your app or device." : "Gebruik onderstaande inloggegevens om je app of apparaat te configureren.", + "For security reasons this password will only be shown once." : "Vanwege beveiligingsredenen wordt dit wachtwoord maar één keer getoond.", + "Username" : "Gebruikersnaam", + "Password" : "Wachtwoord", + "Done" : "Klaar", + "Show QR code for mobile apps" : "Toon QR code voor mobiele apps", + "Copied!" : "Gekopieerd!", + "Copy" : "Kopiëren", + "Could not copy app password. Please copy it manually." : "Kon app wachtwoord niet kopiëren. Kopieer het handmatig.", + "This app is supported via your current Nextcloud subscription." : "Deze app wordt ondersteund via je huidige Nextcloud abonnement.", + "Supported" : "Ondersteund", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Officiële apps worden ontwikkeld door en binnen de community. Ze bieden centrale functionaliteit en zijn klaar voor productie.", + "Official" : "Officieel", + "by" : "door", + "Update to {version}" : "Update naar {version}", + "Remove" : "Verwijderen", + "Disable" : "Uitschakelen", + "All" : "Alle", + "Limit app usage to groups" : "Beperk appgebruik tot groepen", + "No results" : "Geen resultaten", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Deze app heeft geen minimum Nextcloud versie toegewezen gekregen. In de toekomst wordt dit wordt een fout.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Deze app heeft geen maximum Nextcloud versie toegewezen gekregen. In de toekomst wordt dit wordt een fout.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Deze app kan niet worden geïnstalleerd, omdat de volgende afhankelijkheden niet zijn ingevuld:", + "View in store" : "Bekijken in store", + "Visit website" : "Bezoek website", + "Report a bug" : "Rapporteer een fout", + "User documentation" : "Gebruikersdocumentatie", + "Admin documentation" : "Beheerdocumentatie", + "Developer documentation" : "Ontwikkelaarsdocumentatie", + "Update to {update}" : "Update naar {update}", + "Results from other categories" : "Resultaten van andere categorieën", + "No apps found for your version" : "Geen apps gevonden voor jouw versie", + "Disable all" : "Alles uitschakelen", + "Enable all" : "Alles activeren", + "Download and enable" : "Downloaden en inschakelen", + "Enable" : "Inschakelen", + "Enable untested app" : "Inschakelen niet-geteste apps", + "The app will be downloaded from the app store" : "De app zal worden gedownload van de app store", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Deze is niet aangeduid als compatibel met jouw versie van Nextcloud. Als je verdergaat, zal je de app kunnen installeren. Let op dat de app misschien niet werkt zoals verwacht.", + "You do not have permissions to see the details of this user" : "Je hebt niet de autorisaties om de details van deze gebruiekr te zien", + "The backend does not support changing the display name" : "De backend ondersteunt het wijzigen van de weergavenaam niet", + "New password" : "Nieuw wachtwoord", + "Add user in group" : "Voeg gebruiker toe aan groep", + "Set user as admin for" : "Maak gebruiker beheerder voor", + "Select user quota" : "Selecteer gebruikersquotum", + "No language set" : "Geen taal ingesteld", + "Never" : "Nooit", + "Delete user" : "Verwijderen gebruiker", + "Wipe all devices" : "Wis alle toestellen", + "Disable user" : "Gebruiker uitschakelen", + "Enable user" : "Inschakelen gebruiker", + "Resend welcome email" : "Verstuur verwelkomings e-mail opnieuw", + "{size} used" : "{size} gebruikt", + "Welcome mail sent!" : "Verwelkomings e-mail verstuurd!", + "Display name" : "Weergavenaam", + "Email" : "E-mailadres", + "Group admin for" : "Groepsbeheerder voor", + "Quota" : "Limieten", + "Language" : "Taal", + "Storage location" : "Opslag locatie", + "User backend" : "Backend gebruiker", + "Last login" : "Laatste login", + "Will be autogenerated" : "Wordt automatisch gegenereerd", + "Default language" : "Standaardtaal", + "Add a new user" : "Toevoegen nieuwe gebruiker", + "No users in here" : "Hier zijn geen gebruikers", + "Default quota" : "Standaard quota", + "Password change is disabled because the master key is disabled" : "Wachtwoordwijziging is uitgeschakeld omdat de hoofdsleutel is uitgeschakeld", + "Common languages" : "Gebruikelijke talen", + "All languages" : "Alle talen", + "Your apps" : "Je apps", + "Active apps" : "Ingeschakelde apps", + "Disabled apps" : "Uitgeschakelde apps", + "Updates" : "Updates", + "App bundles" : "App bundels", + "{license}-licensed" : "{license}-gelicenseerd", + "New user" : "Nieuwe gebruiker", + "Default quota:" : "Standaardquota:", + "Select default quota" : "Selecteer standaardquotum", + "Show Languages" : "Toon talen", + "Show last login" : "Toon laatste inlog", + "Show user backend" : "Toon backend gebruiker", + "Show storage path" : "Tonen opslagpad", + "You are about to remove the group {group}. The users will NOT be deleted." : "Je gaat groep {group} verwijderen. De gebruikers worden NIET verwijderd.", + "Please confirm the group removal " : "Bevestig verwijderen groep", + "Remove group" : "Verwijderen groep", + "Admins" : "Beheerders", + "Disabled users" : "Uitgeschakelde gebruikers", + "Everyone" : "Iedereen", + "Add group" : "Groep toevoegen", + "An error occured during the request. Unable to proceed." : "Er trad een fout op bij de aanvraag. Kan niet doorgaan.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "De app is ingeschakeld maar moet worden geüpdate. Je wordt over 5 seconden doorgeleid naar de updatepagina.", + "App update" : "App update", + "Error: This app can not be enabled because it makes the server unstable" : "Fout: Deze app kan niet ingeschakeld worden, omdat die de server onstabiel maakt", + "SSL Root Certificates" : "SSL Root Certificaten", + "Common Name" : "Common Name", + "Valid until" : "Geldig tot", + "Issued By" : "Uitgegeven door", + "Valid until %s" : "Geldig tot %s", + "Import root certificate" : "Importeren root certificaat", + "Administrator documentation" : "Beheerdersdocumentatie", + "Documentation" : "Documentatie", + "Forum" : "Forum", + "None" : "Geen", + "Login" : "Login", + "Plain" : "Gewoon", + "NT LAN Manager" : "NT LAN Manager", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "E-mailserver", + "Open documentation" : "Open documentatie", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Het is belangrijk deze server zo in te stellen dat er ook e-mails verstuurd kunnen worden om wachtwoord resets en meldingen bijvoorbeeld te versturen.", + "Send mode" : "Verstuurmodus", + "Encryption" : "Versleuteling", + "Sendmail mode" : "Sendmail modus", + "From address" : "Afzenderadres", + "mail" : "e-mail", + "Authentication method" : "Authenticatiemethode", + "Authentication required" : "Authenticatie vereist", + "Server address" : "Server adres", + "Port" : "Poort", + "Credentials" : "Inloggegevens", + "SMTP Username" : "SMTP gebruikersnaam", + "SMTP Password" : "SMTP wachtwoord", + "Save" : "Bewaar", + "Test email settings" : "Test e-mailinstellingen", + "Send email" : "Versturen e-mail", + "Security & setup warnings" : "Beveiligings- en instellingswaarschuwingen", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Voor beveiliging en prestaties van je server is het belangrijk dat alles goed is geconfigureerd. Om je hierbij te helpen doen we paar automatische controles. Bekijk de gerelateerde documentatie voor meer informatie.", + "All checks passed." : "Alle checks geslaagd", + "There are some errors regarding your setup." : "Er zitten foutjes in je configuratie.", + "There are some warnings regarding your setup." : "Er zijn waarschuwingen over je configuratie.", + "Checking for system and security issues." : "Controleren op systeem- en beveiligingsproblemen.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Lees de <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installatie-handleiding ↗</a> goed door en controleer <a href=\"%2$s\">de logs</a> op fouten en waarschuwingen.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Controleer de beveiliging van je Nextcloud via <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">onze securityscan ↗</a>.", + "Version" : "Versie", + "Two-Factor Authentication" : "Tweefactor authenticatie", + "Server-side encryption" : "Server-side versleuteling", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Server-side versleuteling maakt het mogelijk om bestanden te versleutelen die worden geüploaded. Dit betekent wel enig prestatieverlies, dus schakel het alleen in als het nodig is.", + "Enable server-side encryption" : "Server-side versleuteling inschakelen", + "Please read carefully before activating server-side encryption: " : "Lees dit goed, voordat je de serverside versleuteling activeert:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Als versleuteling is ingeschakeld, worden alle geüploade bestanden vanaf dat moment versleuteld opgeslagen op de server. Het is alleen mogelijk om de versleuteling later uit te schakelen als de actieve versleutelingsmodule dit ondersteunt en aan alle pré-condities (mn de ingestelde herstelsleutel) wordt voldaan.", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Versleuteling alleen gerandeert geen beveiliging van het systeem. Lees de documentatie voor meer achtergrond over de werking van de crypto app an de relevante use cases.", + "Be aware that encryption always increases the file size." : "Let erop dat versleuteling de bestandsomvang altijd laat toenemen.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Het is altijd verstandig om regelmatig backups van je bestanden te maken. Zorg ervoor dat je in geval van versleuteling ook de cryptosleutel met je gegevens backupt.", + "This is the final warning: Do you really want to enable encryption?" : "Dit is de laatste waarschuwing: Wil je versleuteling echt inschakelen?", + "Enable encryption" : "Versleuteling inschakelen", + "No encryption module loaded, please enable an encryption module in the app menu." : "Er is geen cryptomodule geladen, activeer een cryptomodule in het appmenu", + "Select default encryption module:" : "Selecteer de standaard cryptomodule:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Je moet je cryptosleutels van de oude versleuteling (ownCloud <= 8.0) migreren naar de nieuwe. Activeer de \"Standaard cryptomodule\" en start 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Je moet je cryptosleutels van de oude versleuteling (ownCloud <= 8.0) migreren naar de nieuwe.", + "Start migration" : "Start migratie", + "Background jobs" : "Achtergrondtaken", + "Last job ran %s." : "Laatste taak %s uitgevoerd.", + "Last job execution ran %s. Something seems wrong." : "Laatst uitgevoerde job: %s. Er lijkt iets fout gegaan.", + "Background job didn’t run yet!" : "Achtergrondtaak nog niet uitgevoerd!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Voor optimale prestaties is het belangrijk om de achtergrondtaken goed te configureren. Voor grotere installaties is \"Cron' de aanbevolen instelling. Bekijk de documentatie voor meer informatie.", + "Pick background job setting" : "Kies de achtergrondtaak instelling", + "Execute one task with each page loaded" : "Bij laden van elke pagina één taak uitvoeren", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php is geregistreerd bij een webcron service om elke 5 minuten cron.php over http aan te roepen.", + "Use system cron service to call the cron.php file every 5 minutes." : "Gebruik de systeemcron service om cron.php elke 5 minuten aan te roepen.", + "The cron.php needs to be executed by the system user \"%s\"." : "cron.php moet worden uitgevoerd door systeemgebruiker \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "PHP POSIX extensie is vereist om dit te draaien. Bekijk {linkstart}PHP documentatie{linkend} voor meer informatie.", + "Sharing" : "Delen", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Als beheerder kun je gedetailleerde regels voor delen instellen. Bekijk de documentatie voor meer informatie.", + "Allow apps to use the Share API" : "Apps toestaan de Share API te gebruiken", + "Allow users to share via link" : "Sta gebruikers toe om te delen via een link", + "Allow public uploads" : "Sta publieke uploads toe", + "Always ask for a password" : "Vraag altijd naar een wachtwoord", + "Enforce password protection" : "Dwing wachtwoordbeveiliging af", + "Set default expiration date" : "Stel standaard vervaldatum in", + "Expire after " : "Vervalt na", + "days" : "dagen", + "Enforce expiration date" : "Het kiezen van een vervaldatum verplichten", + "Allow resharing" : "Laat gebruikers de met hen gedeelde bestanden opnieuw delen", + "Allow sharing with groups" : "Sta delen met groepen toe", + "Restrict users to only share with users in their groups" : "Laat gebruikers alleen delen met andere gebruikers in hun groepen", + "Exclude groups from sharing" : "Sta bepaalde groepen niet toe om te delen", + "These groups will still be able to receive shares, but not to initiate them." : "Deze groepen kunnen gedeelde mappen en bestanden ontvangen, maar kunnen zelf niks delen.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Automatisch afmaken gebruikersnaam bij het delen. Als dit is uitgeschakeld moet een volledige gebruiksnaam of volledig emailadres worden opgegeven.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Toon disclaimer op de openbare link uploadpagina (alleen tonen als het bestandsoverzicht verborgen is).", + "This text will be shown on the public link upload page when the file list is hidden." : "Deze tekst wordt getoond op de openbare link uploadpagina als het bestandsoverzicht is verborgen.", + "Default share permissions" : "Standaard delen autorisaties", + "Personal" : "Persoonlijk", + "Administration" : "Beheer", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Ontwikkeld door de {communityopen}Nextcloud community{linkclose}, de {githubopen}broncode{linkclose} is gelicenseerd onder de {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Vind onze Facebook pagina leuk", + "Follow us on Twitter" : "Volg ons op Twitter", + "Follow us on Mastodon" : "Volg ons op Mastodon", + "Check out our blog" : "Lees ons blog", + "Subscribe to our newsletter" : "Abonneer jezelf op onze nieuwsbrief", + "Profile picture" : "Profielafbeelding", + "Upload new" : "Upload een nieuwe", + "Select from Files" : "Kies uit bestanden", + "Remove image" : "Afbeelding verwijderen", + "png or jpg, max. 20 MB" : "png of jpg, max. 20 MB", + "Picture provided by original account" : "Afbeelding is verstrekt door originele account.", + "Cancel" : "Annuleren", + "Choose as profile picture" : "Kies als profielafbeelding", + "Details" : "Details", + "You are a member of the following groups:" : "Je bent lid van de volgende groepen:", + "You are using <strong>%s</strong>" : "Je gebruikt <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Je gebruikt <strong>%1$s</strong> van <strong>%2$s</strong> (%3$s%%</strong>)", + "Full name" : "Volledige naam", + "No display name set" : "Nog geen weergavenaam ingesteld", + "Your email address" : "Je e-mailadres", + "No email address set" : "Geen e-mailadres opgegeven", + "For password reset and notifications" : "Voor wachtwoord reset en notificaties", + "Phone number" : "Telefoonnummer", + "Your phone number" : "Je telefoonnummer", + "Address" : "Adres", + "Your postal address" : "Je postadres", + "Website" : "Website", + "It can take up to 24 hours before the account is displayed as verified." : "Het kan tot 24 uur duren voordat het account als geverifieerd wordt weergegeven.", + "Link https://…" : "Link https://…", + "Twitter" : "Twitter", + "Twitter handle @…" : "Twitter naam @…", + "Help translate" : "Help met vertalen", + "Locale" : "Regionale instellingen", + "Current password" : "Huidig wachtwoord", + "Change password" : "Wijzig wachtwoord", + "Use a second factor besides your password to increase security for your account." : "Gebruik een tweede faktor naast je paswoord om de zekerheid van je account te verhogen. ", + "Disconnect" : "Verbreek verbinding", + "Not supported!" : "Niet ondersteund!", + "Press ⌘-C to copy." : "Druk ⌘-C om te kopiëren.", + "Press Ctrl-C to copy." : "Druk op Ctrl-C om te kopiëren.", + "Error while loading browser sessions and device tokens" : "Fout bij het laden van de browsersessie en apparaattokens", + "Store credentials" : "Opslaan inloggegevens", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php is geregistreerd bij een webcron service om elke 15 minuten cron.php over http aan te roepen.", + "Use system cron service to call the cron.php file every 15 minutes." : "Gebruik de systeemcron service om cron.php elke 15 minuten aan te roepen.", + "Follow us on Google+" : "Volg ons op Google+" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} \ No newline at end of file diff --git a/apps/settings/l10n/pl.js b/apps/settings/l10n/pl.js new file mode 100644 index 00000000000..ac9d3f5a4fb --- /dev/null +++ b/apps/settings/l10n/pl.js @@ -0,0 +1,823 @@ +OC.L10N.register( + "settings", + { + "{actor} added you to group {group}" : "{actor} dodał Cię do grupy {group}", + "You added {user} to group {group}" : "Dodałeś {user} do grupy {group}", + "{actor} added {user} to group {group}" : "{actor} dodał {user} do grupy {group}", + "An administrator added you to group {group}" : "Administrator dodał Cię do grupy {group}", + "An administrator added {user} to group {group}" : "Administrator dodał {user} do grupy {group}", + "{actor} removed you from group {group}" : "{actor} usunął Cię z grupy {group}", + "You removed {user} from group {group}" : "Usunąłeś {user} z grupy {group}", + "{actor} removed {user} from group {group}" : "{actor} usunął {user} z grupy {group}", + "An administrator removed you from group {group}" : "Administrator usunął Cię z grupy {group}", + "An administrator removed {user} from group {group}" : "Administrator usunął {user} z grupy {group}", + "Your <strong>group memberships</strong> were modified" : "Twoja <strong>przynależność do grupy</strong> została zmodyfikowana", + "{actor} changed your password" : "{actor} zmienił Twoje hasło", + "You changed your password" : "Zmieniłeś swoje hasło", + "Your password was reset by an administrator" : "Twoje hasło zostało zresetowane przez administratora", + "{actor} changed your email address" : "{actor} zmienił Twój adres e-mail", + "You changed your email address" : "Zmieniłeś swój adres e-mail", + "Your email address was changed by an administrator" : "Twój adres e-mail został zmieniony przez administratora", + "You created app password \"{token}\"" : "Utworzono hasło aplikacji \"{token}\"", + "You deleted app password \"{token}\"" : "Usunięto hasło aplikacji \"{token}\"", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Zmieniłeś hasło aplikacji \"{token}\" na \"{newToken}\"", + "You granted filesystem access to app password \"{token}\"" : "Udzieliłeś dostępu do systemu plików dla hasła aplikacji \"{token}\"", + "You revoked filesystem access from app password \"{token}\"" : "Cofnąłeś dostęp do systemu plików dla hasła aplikacji \"{token}\"", + "Security" : "Bezpieczeństwo", + "You successfully logged in using two-factor authentication (%1$s)" : "Pomyślnie zalogowano się za pomocą uwierzytelniania dwuskładnikowego (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Próba logowania przy użyciu uwierzytelniania dwuskładnikowego nie powiodła się (%1$s)", + "Remote wipe was started on %1$s" : "Zdalne czyszczenie zostało uruchomione w %1$s", + "Remote wipe has finished on %1$s" : "Zdalne czyszczenie zakończyło się w %1$s", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Twoje <strong>hasło</strong> lub <strong>e-mail</strong> został zmieniony", + "Couldn't remove app." : "Nie można usunąć aplikacji.", + "Couldn't update app." : "Nie można zaktualizować aplikacji.", + "Wrong password" : "Złe hasło", + "Saved" : "Zapisano", + "No user supplied" : "Brak użytkownika", + "Unable to change password" : "Nie można zmienić hasła", + "Authentication error" : "Błąd uwierzytelniania", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Podaj hasło odzyskiwania administratora; w przeciwnym razie wszystkie dane użytkownika zostaną utracone.", + "Wrong admin recovery password. Please check the password and try again." : "Błędne hasło odzyskiwania administratora. Sprawdź hasło i spróbuj ponownie.", + "Backend doesn't support password change, but the user's encryption key was updated." : "System zaplecza nie obsługuje zmiany hasła, ale klucz szyfrowania użytkownika został zaktualizowany.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "instalowanie i aktualizowanie aplikacji za pośrednictwem sklepu z aplikacjami lub Udostępnionej Chmury Federacyjnej", + "Federated Cloud Sharing" : "Udostępnianie Chmury Federacyjnej", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL używa nieaktualnej %1$s wersji (%2$s). Zaktualizuj system operacyjny lub funkcje takie jak %3$s nie będą działać prawidłowo.", + "Invalid SMTP password." : "Nieprawidłowe hasło SMTP.", + "Email setting test" : "Test ustawień e-mail", + "Well done, %s!" : "Dobra robota, %s!", + "If you received this email, the email configuration seems to be correct." : "Jeśli otrzymałeś/-aś ten e-mail, to wydaje się, że konfiguracja e-maila jest prawidłowa.", + "Email could not be sent. Check your mail server log" : "E-mail nie został wysłany. Sprawdź logi swojego serwera poczty", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Wystąpił problem podczas wysyłania wiadomości e-mail. Zmień ustawienia. (Błąd: %s)", + "You need to set your user email before being able to send test emails." : "Musisz ustawić e-mail użytkownika, aby móc wysyłać e-maile testowe.", + "Invalid mail address" : "Nieprawidłowy adres e-mail", + "Settings saved" : "Zapisano ustawienia", + "Unable to change full name" : "Nie można zmienić pełnej nazwy", + "Unable to change email address" : "Nie można zmienić adresu e-mail", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Aby zweryfikować swoje konto Twittera, wyślij poniższego tweeta (upewnij się, że cały tekst zawiera się w jednej linii):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Aby zweryfikować swoją stronę umieść poniższą zawartość w katalogu głównym serwera pod adresem '.well-known/CloudIdVerificationCode.txt' (upewnij się, że cały tekst zawiera się w jednej linii):", + "%1$s changed your password on %2$s." : "%1$s zmienił Twoje hasło w %2$s.", + "Your password on %s was changed." : "Twoje hasło w %s zostało zmienione.", + "Your password on %s was reset by an administrator." : "Twoje hasło w %s zostało zresetowane przez administratora", + "Password for %1$s changed on %2$s" : "Hasło dla %1$s zostało zmienione w %2$s", + "Password changed for %s" : "Hasło zmieniono dla %s", + "If you did not request this, please contact an administrator." : "Jeśli nie żądałeś tego, skontaktuj się z administratorem.", + "Your email address on %s was changed." : "Twój adres e-mail w %s został zmieniony.", + "Your email address on %s was changed by an administrator." : "Twój adres e-mail w %s został zmieniony przez administratora.", + "Email address for %1$s changed on %2$s" : "Adres e-mail dla %1$s został zmieniony w %2$s", + "Email address changed for %s" : "Został zmieniony adres e-mail dla %s", + "The new email address is %s" : "Nowy adres e-mail to %s", + "Your %s account was created" : "Twoje konto %s zostało utworzone", + "Welcome aboard" : "Witamy na pokładzie", + "Welcome aboard %s" : "Witamy na pokładzie %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Witamy na koncie %s, możesz dodawać, chronić i udostępniać swoje dane.", + "Your username is: %s" : "Twoja nazwa użytkownika to: %s", + "Set your password" : "Ustaw hasło", + "Go to %s" : "Idź do: %s", + "Install Client" : "Zainstaluj klienta", + "Logged in user must be a subadmin" : "Zalogowany użytkownik musi być współadminem", + "Create" : "Utwórz", + "Change" : "Zmień", + "Delete" : "Usuń", + "Share" : "Udostępnij", + "Unlimited" : "Bez limitu", + "Verifying" : "Sprawdzanie", + "Verifying …" : "Weryfikacja…", + "Verify" : "Zweryfikuj", + "Migration in progress. Please wait until the migration is finished" : "Trwa migracja. Proszę poczekać, aż migracja dobiegnie końca.", + "Migration started …" : "Migracja rozpoczęta…", + "Not saved" : "Nie zapisany", + "Sending…" : "Wysyłam…", + "Email sent" : "E-mail wysłany", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Wystąpił błąd. Proszę przesłać certyfikat PEM w kodowaniu ASCII.", + "Valid until {date}" : "Ważny do {date}", + "Local" : "Lokalny", + "Private" : "Prywatny", + "Only visible to local users" : "Widoczne tylko dla użytkowników lokalnych", + "Only visible to you" : "Widoczne tylko dla Ciebie", + "Contacts" : "Kontakty", + "Visible to local users and to trusted servers" : "Widoczne dla lokalnych użytkowników i zaufanych serwerów", + "Public" : "Publiczny", + "Will be synced to a global and public address book" : "Synchronizacja z globalną i publiczną książką adresową", + "Very weak password" : "Bardzo słabe hasło", + "Weak password" : "Słabe hasło", + "So-so password" : "Mało skomplikowane hasło", + "Good password" : "Dobre hasło", + "Strong password" : "Mocne hasło", + "An error occurred while changing your language. Please reload the page and try again." : "Wystąpił błąd podczas zmiany języka. Proszę przeładować stronę i spróbować ponownie.", + "An error occurred while changing your locale. Please reload the page and try again." : "Wystąpił błąd podczas zmiany ustawień lokalnych. Proszę przeładować stronę i spróbować ponownie.", + "Select a profile picture" : "Wybierz zdjęcie profilowe", + "Week starts on {fdow}" : "Tydzień zaczyna się w {fdow}", + "Groups" : "Grupy", + "Group list is empty" : "Lista grup jest pusta", + "Unable to retrieve the group list" : "Nie można pobrać listy grup", + "Afrikaans (Namibia)" : "Afrykański (Namibia)", + "Afrikaans (South Africa)" : "Afrykański (Południowa Afryka)", + "Afrikaans" : "Afrykański", + "Akan (Ghana)" : "Akan (Ghana)", + "Akan" : "Akan", + "Albanian (Albania)" : "Albański (Albania)", + "Albanian" : "Albański", + "Amharic (Ethiopia)" : "Amharski (Etiopia)", + "Amharic" : "Amharski", + "Arabic (Algeria)" : "Arabski (Algieria)", + "Arabic (Bahrain)" : "Arabski (Bahrajn)", + "Arabic (Egypt)" : "Arabski (Egipt)", + "Arabic (Iraq)" : "Arabski (Irak)", + "Arabic (Jordan)" : "Arabski (Jordania)", + "Arabic (Kuwait)" : "Arabski (Kuwejt)", + "Arabic (Lebanon)" : "Arabski (Liban)", + "Arabic (Libya)" : "Arabski (Libia)", + "Arabic (Morocco)" : "Arabski (Maroko)", + "Arabic (Oman)" : "Arabski (Oman)", + "Arabic (Qatar)" : "Arabski (Katar)", + "Arabic (Saudi Arabia)" : "Arabski (Arabia Saudyjska)", + "Arabic (Sudan)" : "Arabski (Sudan)", + "Arabic (Syria)" : "Arabski (Syria)", + "Arabic (Tunisia)" : "Arabski (Tunezja)", + "Arabic (United Arab Emirates)" : "Arabski (Zjednoczone Emiraty Arabskie)", + "Arabic (Yemen)" : "Arabski (Jemen)", + "Arabic" : "Arabski", + "Armenian (Armenia)" : "Ormiański (Armenia)", + "Armenian" : "Ormiański", + "Assamese (India)" : "Assamese (Indie)", + "Assamese" : "Assamese", + "Asu (Tanzania)" : "Asu (Tanzania)", + "Asu" : "Asu", + "Azerbaijani (Cyrillic)" : "Azerbejdżański (cyrylica)", + "Azerbaijani (Cyrillic, Azerbaijan)" : "Azerbejdżański (Cyrylica, Azerbejdżan)", + "Azerbaijani (Latin)" : "Azerbejdżański (Łacina)", + "Azerbaijani (Latin, Azerbaijan)" : "Azerbejdżański (Łacina, Azerbejdżan)", + "Azerbaijani" : "Azerbejdżański", + "Bambara (Mali)" : "Bambara (Mali)", + "Bambara" : "Bambara", + "Basque (Spain)" : "Baskijski (Hiszpania)", + "Basque" : "Baskijski", + "Belarusian (Belarus)" : "Białoruski (Białoruś)", + "Belarusian" : "Białoruski", + "Bemba (Zambia)" : "Bemba (Zambia)", + "Bemba" : "Bemba", + "Bena (Tanzania)" : "Bena (Tanzania)", + "Bena" : "Bena", + "Bengali (Bangladesh)" : "Bengalski (Bangladesz)", + "Bengali (India)" : "Bengalski (Indie)", + "Bengali" : "Bengalski", + "Bosnian (Bosnia and Herzegovina)" : "Bośniacki (Bośnia i Hercegowina)", + "Bosnian" : "Bośniacki", + "Bulgarian (Bulgaria)" : "Bułgarski (Bułgaria)", + "Bulgarian" : "Bułgarski", + "Burmese (Myanmar [Burma])" : "Birmański (Myanmar [Birma])", + "Burmese" : "Birmański", + "Catalan (Spain)" : "Kataloński (Hiszpania)", + "Catalan" : "Kataloński", + "Central Morocco Tamazight (Latin)" : "Środkowy Maroko Tamazight (Łacina)", + "Central Morocco Tamazight (Latin, Morocco)" : "Maroko Środkowe Tamazight (Łacina, Maroko)", + "Central Morocco Tamazight" : "Środkowy Maroko Tamazight", + "Cherokee (United States)" : "Cherokee (Stany Zjednoczone)", + "Cherokee" : "Cherokee", + "Chiga (Uganda)" : "Chiga (Uganda)", + "Chiga" : "Chiga", + "Chinese (Simplified Han)" : "Chiński (Uproszczony Han)", + "Chinese (Simplified Han, China)" : "Chiński (Uproszczony Han, Chiny)", + "Chinese (Simplified Han, Hong Kong SAR China)" : "Chiński (Uproszczony Han, Hongkong SAR Chiny)", + "Chinese (Simplified Han, Macau SAR China)" : "Chiński (Uproszczony Han, Macau SAR Chiny)", + "Chinese (Simplified Han, Singapore)" : "Chiński (Uproszczony Han, Singapur)", + "Chinese (Traditional Han)" : "Chiński (Tradycyjny Han)", + "Chinese (Traditional Han, Hong Kong SAR China)" : "Chiński (Tradycyjny Han, Hongkong SAR Chiny)", + "Chinese (Traditional Han, Macau SAR China)" : "Chiński (Tradycyjny Han, Macau SAR Chiny)", + "Chinese (Traditional Han, Taiwan)" : "Chiński (Tradycyjny Han, Tajwan)", + "Chinese" : "Chiński", + "Cornish (United Kingdom)" : "Cornish (Wielka Brytania)", + "Cornish" : "Cornish", + "Croatian (Croatia)" : "Chorwacki (Chorwacja)", + "Croatian" : "Chorwacki", + "Czech (Czech Republic)" : "Czeski (Republika Czeska)", + "Czech" : "Czeski", + "Danish (Denmark)" : "Duński (Dania)", + "Danish" : "Duński", + "Dutch (Belgium)" : "Holenderski (Belgia)", + "Dutch (Netherlands)" : "Holenderski (Holandia)", + "Dutch" : "Holenderski", + "Embu (Kenya)" : "Embu (Kenia)", + "Embu" : "Embu", + "English (American Samoa)" : "Angielski (Samoa Amerykańskie)", + "English (Australia)" : "Angielski (Australia)", + "English (Belgium)" : "Angielski (Belgia)", + "English (Belize)" : "Angielski (Belize)", + "English (Botswana)" : "Angielski (Botswana)", + "English (Canada)" : "Angielski (Kanada)", + "English (Guam)" : "Angielski (Guam)", + "English (Hong Kong SAR China)" : "Angielski (Hongkong SAR Chiny)", + "English (India)" : "Angielski (Indie)", + "English (Ireland)" : "Angielski (Irlandia)", + "English (Jamaica)" : "Angielski (Jamajka)", + "English (Malta)" : "Angielski (Malta)", + "English (Marshall Islands)" : "Angielski (Wyspy Marshalla)", + "English (Mauritius)" : "Angielski (Mauritius)", + "English (Namibia)" : "Angielski (Namibia)", + "English (New Zealand)" : "Angielski (Nowa Zelandia)", + "English (Northern Mariana Islands)" : "Angielski (Mariany Północne)", + "English (Pakistan)" : "Angielski (Pakistan)", + "English (Philippines)" : "Angielski (Filipiny)", + "English (Singapore)" : "Angielski (Singapur)", + "English (South Africa)" : "Angielski (Południowa Afryka)", + "English (Trinidad and Tobago)" : "Angielski (Trynidad i Tobago)", + "English (U.S. Minor Outlying Islands)" : "Angielski (Dalekie Wyspy Mniejsze Stanów Zjednoczonych)", + "English (U.S. Virgin Islands)" : "Angielski (Wyspy Dziewicze Stanów Zjednoczonych)", + "English (United Kingdom)" : "Angielski (Zjednoczone Królestwo)", + "English (United States)" : "Angielski (Stany Zjednoczone)", + "English (Zimbabwe)" : "Angielski (Zimbabwe)", + "English" : "Angielski", + "Esperanto" : "Esperanto", + "Estonian (Estonia)" : "Estoński (Estonia)", + "Estonian" : "Estoński", + "Ewe (Ghana)" : "Ewe (Ghana)", + "Ewe (Togo)" : "Ewe (Togo)", + "Ewe" : "Ewe", + "Faroese (Faroe Islands)" : "Farerski (Wyspy Owcze)", + "Faroese" : "Farerski", + "Filipino (Philippines)" : "Filipiński (Filipiny)", + "Filipino" : "Filipiński", + "Finnish (Finland)" : "Fiński (Finlandia)", + "Finnish" : "Fiński", + "French (Belgium)" : "Francuski (Belgia)", + "French (Benin)" : "Francuski (Benin)", + "French (Burkina Faso)" : "Francuski (Burkina Faso)", + "French (Burundi)" : "Francuski (Burundi)", + "French (Cameroon)" : "Francuski (Kamerun)", + "French (Canada)" : "Francuski (Kanada)", + "French (Central African Republic)" : "Francuski (Republika Środkowoafrykańska)", + "French (Chad)" : "Francuski (Czad)", + "French (Comoros)" : "Francuski (Komory)", + "French (Congo - Brazzaville)" : "Francuski (Kongo - Brazzaville)", + "French (Congo - Kinshasa)" : "Francuski (Kongo - Kinszasa)", + "French (Côte d’Ivoire)" : "Francuski (Wybrzeże Kości Słoniowej)", + "French (Djibouti)" : "Francuski (Dżibuti)", + "French (Equatorial Guinea)" : "Francuski (Gwinea Równikowa)", + "French (France)" : "Francuski (Francja)", + "French (Gabon)" : "Francuski (Gabon)", + "French (Guadeloupe)" : "Francuski (Gwadelupa)", + "French (Guinea)" : "Francuski (Gwinea)", + "French (Luxembourg)" : "Francuski (Luksemburg)", + "French (Madagascar)" : "Francuski (Madagaskar)", + "French (Mali)" : "Francuski (Mali)", + "French (Martinique)" : "Francuski (Martynika)", + "French (Monaco)" : "Francuski (Monako)", + "French (Niger)" : "Francuski (Niger)", + "French (Rwanda)" : "Francuski (Rwanda)", + "French (Réunion)" : "Francuski (Reunion)", + "French (Saint Barthélemy)" : "Francuski (Saint Barthélemy)", + "French (Saint Martin)" : "Francuski (Saint Martin)", + "French (Senegal)" : "Francuski (Senegal)", + "French (Switzerland)" : "Francuski (Szwajcaria)", + "French (Togo)" : "Francuski (Togo)", + "French" : "Francuski", + "Fulah (Senegal)" : "Fulah (Senegal)", + "Fulah" : "Fulah", + "Galician (Spain)" : "Galicyjski (Hiszpania)", + "Galician" : "Galicyjski", + "Ganda (Uganda)" : "Ganda (Uganda)", + "Ganda" : "Ganda", + "Georgian (Georgia)" : "Gruziński (Gruzja)", + "Georgian" : "Gruziński", + "German (Austria)" : "Niemiecki (Austria)", + "German (Belgium)" : "Niemiecki (Belgia)", + "German (Germany)" : "Niemiecki (Niemcy)", + "German (Liechtenstein)" : "Niemiecki (Liechtenstein)", + "German (Luxembourg)" : "Niemiecki (Luksemburg)", + "German (Switzerland)" : "Niemiecki (Szwajcaria)", + "German" : "Niemiecki", + "Greek (Cyprus)" : "Grecki (Cypr)", + "Greek (Greece)" : "Grecki (Grecja)", + "Greek" : "Grecki", + "Gujarati (India)" : "Gudżarati (Indie)", + "Gujarati" : "Gudżarati", + "Gusii (Kenya)" : "Gusii (Kenia)", + "Gusii" : "Gusii", + "Hausa (Latin)" : "Hausa (Łacina)", + "Hausa (Latin, Ghana)" : "Hausa (Łacina, Ghana)", + "Hausa (Latin, Niger)" : "Hausa (Łacina, Niger)", + "Hausa (Latin, Nigeria)" : "Hausa (Łacina, Nigeria)", + "Hausa" : "Hausa", + "Hawaiian (United States)" : "Hawajski (Stany Zjednoczone)", + "Hawaiian" : "Hawajski", + "Hebrew (Israel)" : "Hebrajski (Izrael)", + "Hebrew" : "Hebrajski", + "Hindi (India)" : "Hindi (Indie)", + "Hindi" : "Hindi", + "Hungarian (Hungary)" : "Węgierski (Węgry)", + "Hungarian" : "Węgierski", + "Icelandic (Iceland)" : "Islandzki (Islandia)", + "Icelandic" : "Islandzki", + "Igbo (Nigeria)" : "Igbo (Nigeria)", + "Igbo" : "Igbo", + "Indonesian (Indonesia)" : "Indonezyjski (Indonezja)", + "Indonesian" : "Indonezyjski", + "Irish (Ireland)" : "Irlandzki (Irlandia)", + "Irish" : "Irlandzki", + "Italian (Italy)" : "Włoski (Włochy)", + "Italian (Switzerland)" : "Włoski (Szwajcaria)", + "Italian" : "Włoski", + "Japanese (Japan)" : "Japoński (Japonia)", + "Japanese" : "Japoński", + "Kabuverdianu (Cape Verde)" : "Kabuverdianu (Zielony Przylądek)", + "Kabuverdianu" : "Kabuverdianu", + "Kabyle (Algeria)" : "Kabyle (Algieria)", + "Kabyle" : "Kabyle", + "Kalaallisut (Greenland)" : "Kalaallisut (Grenlandia)", + "Kalaallisut" : "Kalaallisut", + "Kalenjin (Kenya)" : "Kalenjin (Kenia)", + "Kalenjin" : "Kalenjin", + "Kamba (Kenya)" : "Kamba (Kenia)", + "Kamba" : "Kamba", + "Kannada (India)" : "Kannada (Indie)", + "Kannada" : "Kannada", + "Kazakh (Cyrillic)" : "Kazachski (Cyrylica)", + "Kazakh (Cyrillic, Kazakhstan)" : "Kazachski (Cyrylica, Kazachstan)", + "Kazakh" : "Kazachski", + "Khmer (Cambodia)" : "Khmer (Kambodża)", + "Khmer" : "Khmer", + "Kikuyu (Kenya)" : "Kikuyu (Kenia)", + "Kikuyu" : "Kikuyu", + "Kinyarwanda (Rwanda)" : "Kinyarwanda (Rwanda)", + "Kinyarwanda" : "Kinyarwanda", + "Konkani (India)" : "Konkani (Indie)", + "Konkani" : "Konkani", + "Korean (South Korea)" : "Koreański (Korea Południowa)", + "Korean" : "Koreański", + "Koyra Chiini (Mali)" : "Koyra Chiini (Mali)", + "Koyra Chiini" : "Koyra Chiini", + "Koyraboro Senni (Mali)" : "Koyraboro Senni (Mali)", + "Koyraboro Senni" : "Koyraboro Senni", + "Langi (Tanzania)" : "Langi (Tanzania)", + "Langi" : "Langi", + "Latvian (Latvia)" : "Łotewski (Łotwa)", + "Latvian" : "Łotewski", + "Lithuanian (Lithuania)" : "Litewski (Litwa)", + "Lithuanian" : "Litewski", + "Luo (Kenya)" : "Luo (Kenia)", + "Luo" : "Luo", + "Luyia (Kenya)" : "Luyia (Kenia)", + "Luyia" : "Luyia", + "Macedonian (Macedonia)" : "Macedoński (Macedonia)", + "Macedonian" : "Macedoński", + "Machame (Tanzania)" : "Machame (Tanzania)", + "Machame" : "Machame", + "Makonde (Tanzania)" : "Makonde (Tanzania)", + "Makonde" : "Makonde", + "Malagasy (Madagascar)" : "Malgaski (Madagaskar)", + "Malagasy" : "Malgaski", + "Malay (Brunei)" : "Malajski (Brunei)", + "Malay (Malaysia)" : "Malajski (Malezja)", + "Malay" : "Malajski", + "Malayalam (India)" : "Malajalam (Indie)", + "Malayalam" : "Malayalam", + "Maltese (Malta)" : "Maltański (Malta)", + "Maltese" : "Maltański", + "Manx (United Kingdom)" : "Manx (Wielka Brytania)", + "Manx" : "Manx", + "Marathi (India)" : "Marathi (Indie)", + "Marathi" : "Marathi", + "Masai (Kenya)" : "Masai (Kenia)", + "Masai (Tanzania)" : "Masai (Tanzania)", + "Masai" : "Masai", + "Meru (Kenya)" : "Meru (Kenia)", + "Meru" : "Meru", + "Morisyen (Mauritius)" : "Morisyen (Mauritius)", + "Morisyen" : "Morisyen", + "Nama (Namibia)" : "Nama (Namibia)", + "Nama" : "Nama", + "Nepali (India)" : "Nepalski (Indie)", + "Nepali (Nepal)" : "Nepalski (Nepal)", + "Nepali" : "Nepalski", + "North Ndebele (Zimbabwe)" : "North Ndebele (Zimbabwe)", + "North Ndebele" : "North Ndebele", + "Norwegian Bokmål (Norway)" : "Norweski Bokmål (Norwegia)", + "Norwegian Bokmål" : "Norweski Bokmål", + "Norwegian Nynorsk (Norway)" : "Norweski Nynorsk (Norwegia)", + "Norwegian Nynorsk" : "Norweski Nynorsk", + "Nyankole (Uganda)" : "Nyankole (Uganda)", + "Nyankole" : "Nyankole", + "Oriya (India)" : "Oriya (Indie)", + "Oriya" : "Oriya", + "Oromo (Ethiopia)" : "Oromo (Etiopia)", + "Oromo (Kenya)" : "Oromo (Kenia)", + "Oromo" : "Oromo", + "Pashto (Afghanistan)" : "Paszto (Afganistan)", + "Pashto" : "Paszto", + "Persian (Afghanistan)" : "Perski (Afganistan)", + "Persian (Iran)" : "Perski (Iran)", + "Persian" : "Perski", + "Polish (Poland)" : "Polski (Polska)", + "Polish" : "Polski", + "Portuguese (Brazil)" : "Portugalski (Brazylia)", + "Portuguese (Guinea-Bissau)" : "Portugalski (Gwinea Bissau)", + "Portuguese (Mozambique)" : "Portugalski (Mozambik)", + "Portuguese (Portugal)" : "Portugalski (Portugalia)", + "Portuguese" : "Portugalski", + "Punjabi (Arabic)" : "Punjabi (Arabski)", + "Punjabi (Arabic, Pakistan)" : "Punjabi (Arabski, Pakistan)", + "Punjabi (Gurmukhi)" : "Punjabi (Gurmukhi)", + "Punjabi (Gurmukhi, India)" : "Punjabi (Gurmukhi, Indie)", + "Punjabi" : "Punjabi", + "Romanian (Moldova)" : "Rumuński (Mołdawia)", + "Romanian (Romania)" : "Rumuński (Rumunia)", + "Romanian" : "Rumuński", + "Romansh (Switzerland)" : "Romansh (Szwajcaria)", + "Romansh" : "Romansh", + "Rombo (Tanzania)" : "Rombo (Tanzania)", + "Rombo" : "Rombo", + "Russian (Moldova)" : "Rosyjski (Mołdawia)", + "Russian (Russia)" : "Rosyjski (Rosja)", + "Russian (Ukraine)" : "Rosyjski (Ukraina)", + "Russian" : "Rosyjski", + "Rwa (Tanzania)" : "Rwa (Tanzania)", + "Rwa" : "Rwa", + "Samburu (Kenya)" : "Samburu (Kenia)", + "Samburu" : "Samburu", + "Sango (Central African Republic)" : "Sango (Republika Środkowoafrykańska)", + "Sango" : "Sango", + "Sena (Mozambique)" : "Sena (Mozambik)", + "Sena" : "Sena", + "Serbian (Cyrillic)" : "Serbski (Cyrylica)", + "Serbian (Cyrillic, Bosnia and Herzegovina)" : "Serbski (Cyrylica, Bośnia i Hercegowina)", + "Serbian (Cyrillic, Montenegro)" : "Serbski (Cyrylica, Czarnogóra)", + "Serbian (Cyrillic, Serbia)" : "Serbski (Cyrylica, Serbia)", + "Serbian (Latin)" : "Serbski (Łacina)", + "Serbian (Latin, Bosnia and Herzegovina)" : "Serbski (Łacina, Bośnia i Hercegowina)", + "Serbian (Latin, Montenegro)" : "Serbski (Łacina, Czarnogóra)", + "Serbian (Latin, Serbia)" : "Serbski (Łacina, Serbia)", + "Serbian" : "Serbski", + "Shona (Zimbabwe)" : "Shona (Zimbabwe)", + "Shona" : "Shona", + "Sichuan Yi (China)" : "Syczuan Yi (Chiny)", + "Sichuan Yi" : "Sichuan Yi", + "Sinhala (Sri Lanka)" : "Syngaleski (Sri Lanka)", + "Sinhala" : "Syngaleski", + "Slovak (Slovakia)" : "Słowacki (Słowacja)", + "Slovak" : "Słowacki", + "Slovenian (Slovenia)" : "Słoweński (Słowenia)", + "Slovenian" : "Słoweński", + "Soga (Uganda)" : "Soga (Uganda)", + "Soga" : "Soga", + "Somali (Djibouti)" : "Somalijski (Dżibuti)", + "Somali (Ethiopia)" : "Somalijski (Etiopia)", + "Somali (Kenya)" : "Somalijski (Kenia)", + "Somali (Somalia)" : "Somalijski (Somalia)", + "Somali" : "Somalijski", + "Spanish (Argentina)" : "Hiszpański (Argentyna)", + "Spanish (Bolivia)" : "Hiszpański (Boliwia)", + "Spanish (Chile)" : "Hiszpański (Chile)", + "Spanish (Colombia)" : "Hiszpański (Kolumbia)", + "Spanish (Costa Rica)" : "Hiszpański (Kostaryka)", + "Spanish (Dominican Republic)" : "Hiszpański (Republika Dominikany)", + "Spanish (Ecuador)" : "Hiszpański (Ekwador)", + "Spanish (El Salvador)" : "Hiszpański (Salwador)", + "Spanish (Equatorial Guinea)" : "Hiszpański (Gwinea Równikowa)", + "Spanish (Guatemala)" : "Hiszpański (Gwatemala)", + "Spanish (Honduras)" : "Hiszpański (Honduras)", + "Spanish (Latin America)" : "Hiszpański (Ameryka Łacińska)", + "Spanish (Mexico)" : "Hiszpański (Meksyk)", + "Spanish (Nicaragua)" : "Hiszpański (Nikaragua)", + "Spanish (Panama)" : "Hiszpański (Panama)", + "Spanish (Paraguay)" : "Hiszpański (Paragwaj)", + "Spanish (Peru)" : "Hiszpański (Peru)", + "Spanish (Puerto Rico)" : "Hiszpański (Portoryko)", + "Spanish (Spain)" : "Hiszpański (Hiszpania)", + "Spanish (United States)" : "Hiszpański (Stany Zjednoczone)", + "Spanish (Uruguay)" : "Hiszpański (Urugwaj)", + "Spanish (Venezuela)" : "Hiszpański (Wenezuela)", + "Spanish" : "Hiszpański", + "Swahili (Kenya)" : "Swahili (Kenia)", + "Swahili (Tanzania)" : "Swahili (Tanzania)", + "Swahili" : "Swahili", + "Swedish (Finland)" : "Szwedzki (Finlandia)", + "Swedish (Sweden)" : "Szwedzki (Szwecja)", + "Swedish" : "Szwedzki", + "Swiss German (Switzerland)" : "Szwajcarski Niemiecki (Szwajcaria)", + "Swiss German" : "Szwajcarski Niemiecki", + "Tachelhit (Latin)" : "Tachelhit (Łacina)", + "Tachelhit (Latin, Morocco)" : "Tachelhit (Łacina, Maroko)", + "Tachelhit (Tifinagh)" : "Tachelhit (Tifinagh)", + "Tachelhit (Tifinagh, Morocco)" : "Tachelhit (Tifinagh, Maroko)", + "Tachelhit" : "Tachelhit", + "Taita (Kenya)" : "Taita (Kenia)", + "Taita" : "Taita", + "Tamil (India)" : "Tamil (Indie)", + "Tamil (Sri Lanka)" : "Tamil (Sri Lanka)", + "Tamil" : "Tamil", + "Telugu (India)" : "Telugu (Indie)", + "Telugu" : "Telugu", + "Teso (Kenya)" : "Teso (Kenia)", + "Teso (Uganda)" : "Teso (Uganda)", + "Teso" : "Teso", + "Thai (Thailand)" : "Tajski (Tajlandia)", + "Thai" : "Tajski", + "Tibetan (China)" : "Tybetański (Chiny)", + "Tibetan (India)" : "Tybetański (Indie)", + "Tibetan" : "Tybetański", + "Tigrinya (Eritrea)" : "Tigrinya (Erytrea)", + "Tigrinya (Ethiopia)" : "Tigrinya (Etiopia)", + "Tigrinya" : "Tigrinya", + "Tonga (Tonga)" : "Tonga (Tonga)", + "Tonga" : "Tonga", + "Turkish (Turkey)" : "Turecki (Turcja)", + "Turkish" : "Turecki", + "Ukrainian (Ukraine)" : "Ukraiński (Ukraina)", + "Ukrainian" : "Ukraiński", + "Urdu (India)" : "Urdu (Indie)", + "Urdu (Pakistan)" : "Urdu (Pakistan)", + "Urdu" : "Urdu", + "Uzbek (Arabic)" : "Uzbecki (Arabski)", + "Uzbek (Arabic, Afghanistan)" : "Uzbecki (Arabski, Afganistan)", + "Uzbek (Cyrillic)" : "Uzbecki (Cyrylica)", + "Uzbek (Cyrillic, Uzbekistan)" : "Uzbecki (Cyrylica, Uzbekistan)", + "Uzbek (Latin)" : "Uzbecki (Łacina)", + "Uzbek (Latin, Uzbekistan)" : "Uzbecki (Łacina, Uzbekistan)", + "Uzbek" : "Uzbecki", + "Vietnamese (Vietnam)" : "Wietnamski (Wietnam)", + "Vietnamese" : "Wietnamski", + "Vunjo (Tanzania)" : "Vunjo (Tanzania)", + "Vunjo" : "Vunjo", + "Welsh (United Kingdom)" : "Walijski (Wielka Brytania)", + "Welsh" : "Walijski", + "Yoruba (Nigeria)" : "Joruba (Nigeria)", + "Yoruba" : "Joruba", + "Zulu (South Africa)" : "Zulu (Republika Południowej Afryki)", + "Zulu" : "Zulu", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Uwierzytelnianie dwuskładnikowe może być wymuszane dla wszystkich\tużytkowników i określonych grup. Jeśli nie mają skonfigurowanego dostawcy logowania dwuskładnikowego, nie będą mogli zalogować się do systemu.", + "Enforce two-factor authentication" : "Wymuś uwierzytelnianie dwuskładnikowe", + "Limit to groups" : "Ogranicz do grup", + "Enforcement of two-factor authentication can be set for certain groups only." : "Wymuszanie uwierzytelniania dwuskładnikowego można ustawić tylko dla niektórych grup.", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "Uwierzytelnianie dwuskładnikowe jest wymuszane dla wszystkich\tczłonków następujących grup.", + "Enforced groups" : "Wymuszone grupy", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "Uwierzytelnianie dwuskładnikowe nie jest wymuszane dla\tczłonków następujących grup.", + "Excluded groups" : "Wyłączone grupy", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "Gdy grupy są wybierane/wykluczane, używają następującej logiki do określenia, czy użytkownik ma wymuszone 2FA: Jeśli nie wybrano żadnych grup, 2FA jest włączone dla wszystkich, z wyjątkiem członków grup wykluczonych. Jeśli wybrane są grupy, opcja 2FA jest włączona dla wszystkich członków. Jeśli użytkownik znajduje się zarówno w grupie wybranej, jak i wykluczonej, wybrane ma pierwszeństwo, a 2FA jest wymuszone.", + "Save changes" : "Zapisz zmiany", + "Marked for remote wipe" : "Oznaczone do zdalnego czyszczenia", + "Device settings" : "Ustawienia urządzenia", + "Allow filesystem access" : "Zezwalaj na dostęp do systemu plików", + "Rename" : "Zmień nazwę", + "Revoke" : "Cofnij", + "Wipe device" : "Wyczyść urządzenie", + "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Unieważnienie tego tokena wstrzyma czyszczenie urządzenia, jeśli jeszcze nie rozpoczął.", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome dla Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Aplikacja Nextcloud iOS", + "Nextcloud Android app" : "Aplikacja Nextcloud Android", + "Nextcloud Talk for iOS" : "Nextcloud Talk dla iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk dla Android", + "Sync client - {os}" : "Klient synchronizacji - {os}", + "This session" : "Ta sesja", + "Device" : "Urządzenie", + "Last activity" : "Ostatnia aktywność", + "Devices & sessions" : "Urządzenia i sesje", + "Web, desktop and mobile clients currently logged in to your account." : "Klienci internetowi, desktopowi i mobilni są obecnie zalogowani na Twoim koncie.", + "Do you really want to wipe your data from this device?" : "Czy na pewno chcesz usunąć dane z tego urządzenia?", + "Confirm wipe" : "Potwierdzenie usunięcia", + "Error while creating device token" : "Błąd podczas tworzenia tokena urządzenia", + "Error while updating device token scope" : "Błąd podczas aktualizacji zakresu tokena urządzenia", + "Error while updating device token name" : "Błąd podczas aktualizacji nazwy tokena urządzenia", + "Error while deleting the token" : "Błąd podczas usuwania tokena", + "Error while wiping the device with the token" : "Błąd podczas czyszczenia urządzenia za pomocą tokena", + "App name" : "Nazwa aplikacji", + "Create new app password" : "Utwórz nowe hasło aplikacji", + "Use the credentials below to configure your app or device." : "Użyj poniższych poświadczeń, aby skonfigurować aplikację lub urządzenie.", + "For security reasons this password will only be shown once." : "Ze względów bezpieczeństwa hasło zostanie pokazane tylko raz.", + "Username" : "Nazwa użytkownika", + "Password" : "Hasło", + "Done" : "Ukończono", + "Show QR code for mobile apps" : "Pokaż kod QR dla aplikacji mobilnych", + "Copied!" : "Skopiowano!", + "Copy" : "Kopiuj", + "Could not copy app password. Please copy it manually." : "Nie można skopiować hasła do aplikacji. Skopiuj go ręcznie.", + "This app is supported via your current Nextcloud subscription." : "Ta aplikacja jest obsługiwana za pośrednictwem bieżącej subskrypcji Nextcloud.", + "Supported" : "Wspierany", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Oficjalne aplikacje są tworzone przez społeczność. Oferują główną funkcjonalność i są gotowe do użycia w produkcji.", + "Official" : "Oficjalna", + "by" : "przez", + "Update to {version}" : "Aktualizuj do {version}", + "Remove" : "Usuń", + "Disable" : "Wyłącz", + "All" : "Wszystkie", + "Limit app usage to groups" : "Ogranicz korzystanie z aplikacji dla grup", + "No results" : "Brak wyników", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Ta aplikacja nie ma przypisanej minimalnej wersji Nextcloud. W przyszłości będzie to błąd.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Ta aplikacja nie ma przypisanej maksymalnej wersji Nextcloud. W przyszłości będzie to błąd.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Ta aplikacja nie może być zainstalowana, ponieważ nie są spełnione następujące zależności:", + "View in store" : "Zobacz w sklepie", + "Visit website" : "Odwiedź stronę", + "Report a bug" : "Zgłoś błąd", + "User documentation" : "Dokumentacja użytkownika", + "Admin documentation" : "Dokumentacja administratora", + "Developer documentation" : "Dokumentacja dewelopera", + "Update to {update}" : "Aktualizuj do {update}", + "Results from other categories" : "Wyniki z innych kategorii", + "No apps found for your version" : "Nie znaleziono aplikacji dla Twojej wersji", + "Disable all" : "Wyłącz wszystkie", + "Enable all" : "Włącz wszystkie", + "Download and enable" : "Zainstaluj i włącz", + "Enable" : "Włącz", + "Enable untested app" : "Włącz nietestowaną aplikację", + "The app will be downloaded from the app store" : "Aplikacja zostanie pobrana z App Store", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Ta aplikacja jest niezgodna z wersją Nextcloud. Przy dalszej kontynuacji, możesz pozwolić na zainstalowanie tej aplikacji. Pamiętaj, że aplikacja może nie działać zgodnie z oczekiwaniami.", + "You do not have permissions to see the details of this user" : "Nie masz uprawnień aby zobaczyć informacje o tym użytkowniku", + "The backend does not support changing the display name" : "System zaplecza nie obsługuje zmiany nazwy wyświetlanej", + "New password" : "Nowe hasło", + "Add user in group" : "Dodaj użytkownika do grupy", + "Set user as admin for" : "Ustaw administratora dla", + "Select user quota" : "Wybierz limit dla użytkownika", + "No language set" : "Nie ustawiono języka", + "Never" : "Nigdy", + "Delete user" : "Usuń użytkownika", + "Wipe all devices" : "Wyczyść wszystkie urządzenia", + "Disable user" : "Zablokuj użytkownika", + "Enable user" : "Odblokuj użytkownika", + "Resend welcome email" : "Wyślij ponownie wiadomość powitalną", + "{size} used" : "Wykorzystane: {size}", + "Welcome mail sent!" : "Wysłano wiadomość powitalną!", + "Display name" : "Nazwa wyświetlana", + "Email" : "E-mail", + "Group admin for" : "Administrator grupy", + "Quota" : "Limit", + "Language" : "Język", + "Storage location" : "Lokalizacja magazynu", + "User backend" : "Moduł użytkownika", + "Last login" : "Ostatnio zalogowany", + "Will be autogenerated" : "Zostanie automatycznie wygenerowany", + "Default language" : "Domyślny język", + "Add a new user" : "Dodaj użytkownika", + "No users in here" : "Brak użytkowników", + "Default quota" : "Domyślny limit", + "Password change is disabled because the master key is disabled" : "Zmiana hasła jest zablokowana z powodu włączenia klucza głównego.", + "Common languages" : "Popularne języki", + "All languages" : "Wszystkie języki", + "Your apps" : "Twoje aplikacje", + "Active apps" : "Aktywne aplikacje", + "Disabled apps" : "Wyłączone aplikacje", + "Updates" : "Aktualizacje", + "App bundles" : "Zestawy aplikacji", + "{license}-licensed" : "Na licencji {license}", + "New user" : "Nowy użytkownik", + "Default quota:" : "Domyślny limit:", + "Select default quota" : "Wybierz domyślny limit", + "Show Languages" : "Pokaż języki", + "Show last login" : "Pokaż ostatnie logowanie", + "Show user backend" : "Pokaż moduł użytkownika", + "Show storage path" : "Pokaż ścieżkę przechowywania", + "You are about to remove the group {group}. The users will NOT be deleted." : "Zamierzasz usunąć grupę {group}. Użytkownicy NIE zostaną usunięci.", + "Please confirm the group removal " : "Potwierdź usunięcie grupy", + "Remove group" : "Usuń grupę", + "Admins" : "Administratorzy", + "Disabled users" : "Zablokowani użytkownicy", + "Everyone" : "Wszyscy", + "Add group" : "Dodaj grupę", + "An error occured during the request. Unable to proceed." : "Wystąpił błąd zapytania. Nie można kontynuować.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Aplikacja została włączona, ponieważ wymaga aktualizacji. Za 5 sekund nastąpi przekierowanie do strony aktualizacji.", + "App update" : "Aktualizacja aplikacji", + "Error: This app can not be enabled because it makes the server unstable" : "Błąd: ta aplikacja nie zostanie włączona ze względu na możliwość niestabilnej pracy serwera.", + "SSL Root Certificates" : "Certyfikaty główne SSL", + "Common Name" : "Nazwa CN", + "Valid until" : "Ważny do", + "Issued By" : "Wydany przez", + "Valid until %s" : "Ważny do %s", + "Import root certificate" : "Importuj certyfikat główny", + "Administrator documentation" : "Dokumentacja administratora", + "Documentation" : "Dokumentacja", + "Forum" : "Forum", + "None" : "Brak", + "Login" : "Login", + "Plain" : "Czysty tekst", + "NT LAN Manager" : "NT LAN Manager", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Serwer poczty", + "Open documentation" : "Otwórz dokumentację", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Należy skonfigurować ten serwer, aby umożliwić wysyłanie wiadomości e-mail z powiadomieniami i resetowaniem hasła.", + "Send mode" : "Sposób wysyłania", + "Encryption" : "Szyfrowanie", + "Sendmail mode" : "Tryb Sendmail", + "From address" : "Z adresu", + "mail" : "poczta", + "Authentication method" : "Metoda uwierzytelnienia", + "Authentication required" : "Wymagana autoryzacja", + "Server address" : "Adres serwera", + "Port" : "Port", + "Credentials" : "Poświadczenia", + "SMTP Username" : "Użytkownik SMTP", + "SMTP Password" : "Hasło SMTP", + "Save" : "Zapisz", + "Test email settings" : "Przetestuj ustawienia poczty e-mail", + "Send email" : "Wyślij e-mail", + "Security & setup warnings" : "Ostrzeżenia bezpieczeństwa i konfiguracji", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Poprawna konfiguracja jest ważna dla bezpieczeństwa i wydajności Twojej instancji. W celach pomocniczych przeprowadzane jest automatyczne sprawdzanie. Więcej informacji możesz znaleźć w dokumentacji.", + "All checks passed." : "Wszystkie testy konfiguracji zakończyły się pomyślnie.", + "There are some errors regarding your setup." : "Występują błędy dotyczące konfiguracji.", + "There are some warnings regarding your setup." : "Znaleziono zastrzeżenia w Twojej konfiguracji.", + "Checking for system and security issues." : "Sprawdzanie błędów systemu i bezpieczeństwa.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Sprawdź dokładnie <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">instrukcje instalacji ↗</a> oraz sprawdź, czy nie ma błędów lub ostrzeżeń w <a href=\"%2$s\">logach</a>.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Sprawdź bezpieczeństwo swojego serwera Nextcloud <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">naszym skanerem bezpieczeństwa ↗</a>.", + "Version" : "Wersja", + "Two-Factor Authentication" : "Autoryzacja dwuskładnikowa", + "Server-side encryption" : "Szyfrowanie po stronie serwera", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Szyfrowanie po stronie serwera umożliwia szyfrowanie plików przesyłanych na ten serwer. Posiada ograniczenia takie jak obniżenie wydajności, więc włącz tylko w razie potrzeby.", + "Enable server-side encryption" : "Włącz szyfrowanie po stronie serwera", + "Please read carefully before activating server-side encryption: " : "Przeczytaj uważnie przed aktywacją szyfrowania po stronie serwera:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Po włączeniu szyfrowania wszystkie pliki przesłane na serwer od tej chwili będą szyfrowane na serwerze. Wyłączenie szyfrowania będzie możliwe dopiero, gdy aktywny moduł szyfrowania wykona tę funkcję oraz wszystkie poprzednie warunki będą spełnione (np. ustawienie klucza odzyskiwania).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Samo szyfrowanie nie gwarantuje bezpieczeństwa systemu. Więcej informacji na temat działania aplikacji szyfrującej i użycia wspieranych przypadków można znaleźć w dokumentacji.", + "Be aware that encryption always increases the file size." : "Należy pamiętać, że szyfrowanie zawsze zwiększa rozmiar pliku.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Zawsze dobrze jest regularnie wykonywać kopie zapasowe swoich danych. W przypadku szyfrowania upewnij się, aby kopie zapasowe kluczy szyfrowania były wraz z danymi.", + "This is the final warning: Do you really want to enable encryption?" : "To ostatnie ostrzeżenie: Czy na pewno chcesz włączyć szyfrowanie?", + "Enable encryption" : "Włącz szyfrowanie", + "No encryption module loaded, please enable an encryption module in the app menu." : "Moduł szyfrowania nie jest załadowany, należy włączyć moduł szyfrowania w menu aplikacji.", + "Select default encryption module:" : "Wybierz domyślny moduł szyfrowania:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Musisz zmigrować swoje klucze szyfrujące ze starego szyfrowania (ownCloud <= 8.0) do nowego. Włącz \"Domyślny moduł szyfrowania\" i uruchom 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Musisz zmigrować swoje klucze szyfrujące ze starego szyfrowania (ownCloud <= 8.0) do nowego.", + "Start migration" : "Rozpocznij migrację", + "Background jobs" : "Zadania w tle", + "Last job ran %s." : "Ostatnie zadanie wykonano %s.", + "Last job execution ran %s. Something seems wrong." : "Ostatnie zadanie wykonano %s. Coś poszło nie tak.", + "Background job didn’t run yet!" : "Zadanie w tle nie zostało wykonane ani razu!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Dla optymalnej wydajności należy poprawnie skonfigurować zadania w tle. Dla większych instancji zalecane jest użycie usługi 'Cron'. Więcej informacji można znaleźć w dokumentacji.", + "Pick background job setting" : "Wybierz ustawienie zadania w tle", + "Execute one task with each page loaded" : "Wykonuj jedno zadanie wraz z każdą wczytaną stroną", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "Użyj cron.php, który jest zarejestrowany w usłudze webcron, aby wywoływać cron.php co 5 minut przez HTTP.", + "Use system cron service to call the cron.php file every 5 minutes." : "Użyj usługi systemowej cron, aby wywoływać plik cron.php co 5 minut.", + "The cron.php needs to be executed by the system user \"%s\"." : "Cron.php musi zostać wykonywany przez użytkownika systemu \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Dla uruchomienia tego potrzebujesz rozszerzenia PHP POSIX. Zobacz {linkstart}dokumentację PHP{linkend}, aby uzyskać więcej szczegółów.", + "Sharing" : "Udostępnianie", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Jako administrator możesz zoptymalizować ustawienia udostępniania. Szczegółowe informacje znajdziesz w dokumentacji.", + "Allow apps to use the Share API" : "Zezwalaj aplikacjom na korzystanie z API udostępniania", + "Allow users to share via link" : "Zezwalaj użytkownikom na udostępnianie za pośrednictwem linku", + "Allow public uploads" : "Zezwalaj na publiczne wysyłanie", + "Always ask for a password" : "Zawsze pytaj o hasło", + "Enforce password protection" : "Wymuszaj zabezpieczenie hasłem", + "Set default expiration date" : "Ustaw domyślną datę wygaśnięcia", + "Expire after " : "Wygaś po ", + "days" : "dniach", + "Enforce expiration date" : "Wymuszaj datę wygaśnięcia", + "Allow resharing" : "Zezwalaj na ponowne udostępnianie", + "Allow sharing with groups" : "Zezwalaj na udostępnianie grupom", + "Restrict users to only share with users in their groups" : "Ogranicz użytkownikom możliwość udostępniania, pozwól tylko w swoich grupach", + "Exclude groups from sharing" : "Wyklucz grupy z udostępniania", + "These groups will still be able to receive shares, but not to initiate them." : "Grupy te nadal będą mogły otrzymywać udostępnienia, ale nie będą mogły ich tworzyć.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Zezwalaj na automatyczne uzupełnianie nazwy użytkownika w oknie dialogowym udostępniania. Jeśli opcja jest wyłączona, należy podać pełną nazwę użytkownika lub adres e-mail.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Pokaż tekst zastrzeżenia na stronie przesyłania linków publicznych. (Wyświetlane tylko, gdy lista plików jest ukryta).", + "This text will be shown on the public link upload page when the file list is hidden." : "Ten tekst zostanie wyświetlony na stronie przesyłania linków publicznych, gdy lista plików jest ukryta.", + "Default share permissions" : "Domyślne uprawnienia dla udostępnień", + "Personal" : "Osobiste", + "Administration" : "Administracja", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Opracowane przez {communityopen}społeczność Nextcloud{linkclose}, {githubopen}kod źródłowy{linkclose} jest objęty licencją {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Polub nas na Facebook'u", + "Follow us on Twitter" : "Bądź z nami na Twitterze", + "Follow us on Mastodon" : "Bądź z nami na Mastodonie", + "Check out our blog" : "Sprawdź nasz blog", + "Subscribe to our newsletter" : "Subskrybuj nasz newsletter", + "Profile picture" : "Zdjęcie profilowe", + "Upload new" : "Wczytaj nowe", + "Select from Files" : "Wybierz z Plików", + "Remove image" : "Usuń zdjęcie", + "png or jpg, max. 20 MB" : "png lub jpg, maks. 20 MB", + "Picture provided by original account" : "Zdjęcie dostarczone przez oryginalne konto", + "Cancel" : "Anuluj", + "Choose as profile picture" : "Wybierz zdjęcie profilowe", + "Details" : "Szczegóły", + "You are a member of the following groups:" : "Należysz do następujących grup:", + "You are using <strong>%s</strong>" : "Używasz: <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Używasz: <strong>%1$s</strong> z <strong>%2$s</strong> (<strong>%3$s %%</strong>)", + "Full name" : "Pełna nazwa", + "No display name set" : "Brak wyświetlanej nazwy", + "Your email address" : "Twój adres e-mail", + "No email address set" : "Brak adresu e-mail", + "For password reset and notifications" : "Dla powiadomień i resetowania hasła", + "Phone number" : "Numer telefonu", + "Your phone number" : "Twój numer telefonu", + "Address" : "Adres", + "Your postal address" : "Twój adres pocztowy", + "Website" : "Strona internetowa", + "It can take up to 24 hours before the account is displayed as verified." : "Do 24 godzin konto będzie widoczne jako zweryfikowane.", + "Link https://…" : "Link https://…", + "Twitter" : "Twitter", + "Twitter handle @…" : "Twitter @…", + "Help translate" : "Pomóż w tłumaczeniu", + "Locale" : "Region", + "Current password" : "Bieżące hasło", + "Change password" : "Zmień hasło", + "Use a second factor besides your password to increase security for your account." : "Użyj drugiego zabezpieczenia oprócz hasła, aby zwiększyć bezpieczeństwo konta.", + "Disconnect" : "Rozłącz", + "Not supported!" : "Niewspierany!", + "Press ⌘-C to copy." : "Naciśnij ⌘-C, aby skopiować.", + "Press Ctrl-C to copy." : "Naciśnij Ctrl-C, aby skopiować.", + "Error while loading browser sessions and device tokens" : "Błąd podczas ładowania sesji przeglądarki i tokenów urządzenia", + "Store credentials" : "Zapisz poświadczenia", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "Użyj cron.php, który jest zarejestrowany w usłudze webcron, aby wywoływać cron.php co 15 minut przez HTTP.", + "Use system cron service to call the cron.php file every 15 minutes." : "Użyj usługi systemowej cron, aby wywoływać plik cron.php co 15 minut.", + "Follow us on Google+" : "Bądź z nami na Google+" +}, +"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);"); diff --git a/apps/settings/l10n/pl.json b/apps/settings/l10n/pl.json new file mode 100644 index 00000000000..a541d4851fd --- /dev/null +++ b/apps/settings/l10n/pl.json @@ -0,0 +1,821 @@ +{ "translations": { + "{actor} added you to group {group}" : "{actor} dodał Cię do grupy {group}", + "You added {user} to group {group}" : "Dodałeś {user} do grupy {group}", + "{actor} added {user} to group {group}" : "{actor} dodał {user} do grupy {group}", + "An administrator added you to group {group}" : "Administrator dodał Cię do grupy {group}", + "An administrator added {user} to group {group}" : "Administrator dodał {user} do grupy {group}", + "{actor} removed you from group {group}" : "{actor} usunął Cię z grupy {group}", + "You removed {user} from group {group}" : "Usunąłeś {user} z grupy {group}", + "{actor} removed {user} from group {group}" : "{actor} usunął {user} z grupy {group}", + "An administrator removed you from group {group}" : "Administrator usunął Cię z grupy {group}", + "An administrator removed {user} from group {group}" : "Administrator usunął {user} z grupy {group}", + "Your <strong>group memberships</strong> were modified" : "Twoja <strong>przynależność do grupy</strong> została zmodyfikowana", + "{actor} changed your password" : "{actor} zmienił Twoje hasło", + "You changed your password" : "Zmieniłeś swoje hasło", + "Your password was reset by an administrator" : "Twoje hasło zostało zresetowane przez administratora", + "{actor} changed your email address" : "{actor} zmienił Twój adres e-mail", + "You changed your email address" : "Zmieniłeś swój adres e-mail", + "Your email address was changed by an administrator" : "Twój adres e-mail został zmieniony przez administratora", + "You created app password \"{token}\"" : "Utworzono hasło aplikacji \"{token}\"", + "You deleted app password \"{token}\"" : "Usunięto hasło aplikacji \"{token}\"", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Zmieniłeś hasło aplikacji \"{token}\" na \"{newToken}\"", + "You granted filesystem access to app password \"{token}\"" : "Udzieliłeś dostępu do systemu plików dla hasła aplikacji \"{token}\"", + "You revoked filesystem access from app password \"{token}\"" : "Cofnąłeś dostęp do systemu plików dla hasła aplikacji \"{token}\"", + "Security" : "Bezpieczeństwo", + "You successfully logged in using two-factor authentication (%1$s)" : "Pomyślnie zalogowano się za pomocą uwierzytelniania dwuskładnikowego (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Próba logowania przy użyciu uwierzytelniania dwuskładnikowego nie powiodła się (%1$s)", + "Remote wipe was started on %1$s" : "Zdalne czyszczenie zostało uruchomione w %1$s", + "Remote wipe has finished on %1$s" : "Zdalne czyszczenie zakończyło się w %1$s", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Twoje <strong>hasło</strong> lub <strong>e-mail</strong> został zmieniony", + "Couldn't remove app." : "Nie można usunąć aplikacji.", + "Couldn't update app." : "Nie można zaktualizować aplikacji.", + "Wrong password" : "Złe hasło", + "Saved" : "Zapisano", + "No user supplied" : "Brak użytkownika", + "Unable to change password" : "Nie można zmienić hasła", + "Authentication error" : "Błąd uwierzytelniania", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Podaj hasło odzyskiwania administratora; w przeciwnym razie wszystkie dane użytkownika zostaną utracone.", + "Wrong admin recovery password. Please check the password and try again." : "Błędne hasło odzyskiwania administratora. Sprawdź hasło i spróbuj ponownie.", + "Backend doesn't support password change, but the user's encryption key was updated." : "System zaplecza nie obsługuje zmiany hasła, ale klucz szyfrowania użytkownika został zaktualizowany.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "instalowanie i aktualizowanie aplikacji za pośrednictwem sklepu z aplikacjami lub Udostępnionej Chmury Federacyjnej", + "Federated Cloud Sharing" : "Udostępnianie Chmury Federacyjnej", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL używa nieaktualnej %1$s wersji (%2$s). Zaktualizuj system operacyjny lub funkcje takie jak %3$s nie będą działać prawidłowo.", + "Invalid SMTP password." : "Nieprawidłowe hasło SMTP.", + "Email setting test" : "Test ustawień e-mail", + "Well done, %s!" : "Dobra robota, %s!", + "If you received this email, the email configuration seems to be correct." : "Jeśli otrzymałeś/-aś ten e-mail, to wydaje się, że konfiguracja e-maila jest prawidłowa.", + "Email could not be sent. Check your mail server log" : "E-mail nie został wysłany. Sprawdź logi swojego serwera poczty", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Wystąpił problem podczas wysyłania wiadomości e-mail. Zmień ustawienia. (Błąd: %s)", + "You need to set your user email before being able to send test emails." : "Musisz ustawić e-mail użytkownika, aby móc wysyłać e-maile testowe.", + "Invalid mail address" : "Nieprawidłowy adres e-mail", + "Settings saved" : "Zapisano ustawienia", + "Unable to change full name" : "Nie można zmienić pełnej nazwy", + "Unable to change email address" : "Nie można zmienić adresu e-mail", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Aby zweryfikować swoje konto Twittera, wyślij poniższego tweeta (upewnij się, że cały tekst zawiera się w jednej linii):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Aby zweryfikować swoją stronę umieść poniższą zawartość w katalogu głównym serwera pod adresem '.well-known/CloudIdVerificationCode.txt' (upewnij się, że cały tekst zawiera się w jednej linii):", + "%1$s changed your password on %2$s." : "%1$s zmienił Twoje hasło w %2$s.", + "Your password on %s was changed." : "Twoje hasło w %s zostało zmienione.", + "Your password on %s was reset by an administrator." : "Twoje hasło w %s zostało zresetowane przez administratora", + "Password for %1$s changed on %2$s" : "Hasło dla %1$s zostało zmienione w %2$s", + "Password changed for %s" : "Hasło zmieniono dla %s", + "If you did not request this, please contact an administrator." : "Jeśli nie żądałeś tego, skontaktuj się z administratorem.", + "Your email address on %s was changed." : "Twój adres e-mail w %s został zmieniony.", + "Your email address on %s was changed by an administrator." : "Twój adres e-mail w %s został zmieniony przez administratora.", + "Email address for %1$s changed on %2$s" : "Adres e-mail dla %1$s został zmieniony w %2$s", + "Email address changed for %s" : "Został zmieniony adres e-mail dla %s", + "The new email address is %s" : "Nowy adres e-mail to %s", + "Your %s account was created" : "Twoje konto %s zostało utworzone", + "Welcome aboard" : "Witamy na pokładzie", + "Welcome aboard %s" : "Witamy na pokładzie %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Witamy na koncie %s, możesz dodawać, chronić i udostępniać swoje dane.", + "Your username is: %s" : "Twoja nazwa użytkownika to: %s", + "Set your password" : "Ustaw hasło", + "Go to %s" : "Idź do: %s", + "Install Client" : "Zainstaluj klienta", + "Logged in user must be a subadmin" : "Zalogowany użytkownik musi być współadminem", + "Create" : "Utwórz", + "Change" : "Zmień", + "Delete" : "Usuń", + "Share" : "Udostępnij", + "Unlimited" : "Bez limitu", + "Verifying" : "Sprawdzanie", + "Verifying …" : "Weryfikacja…", + "Verify" : "Zweryfikuj", + "Migration in progress. Please wait until the migration is finished" : "Trwa migracja. Proszę poczekać, aż migracja dobiegnie końca.", + "Migration started …" : "Migracja rozpoczęta…", + "Not saved" : "Nie zapisany", + "Sending…" : "Wysyłam…", + "Email sent" : "E-mail wysłany", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Wystąpił błąd. Proszę przesłać certyfikat PEM w kodowaniu ASCII.", + "Valid until {date}" : "Ważny do {date}", + "Local" : "Lokalny", + "Private" : "Prywatny", + "Only visible to local users" : "Widoczne tylko dla użytkowników lokalnych", + "Only visible to you" : "Widoczne tylko dla Ciebie", + "Contacts" : "Kontakty", + "Visible to local users and to trusted servers" : "Widoczne dla lokalnych użytkowników i zaufanych serwerów", + "Public" : "Publiczny", + "Will be synced to a global and public address book" : "Synchronizacja z globalną i publiczną książką adresową", + "Very weak password" : "Bardzo słabe hasło", + "Weak password" : "Słabe hasło", + "So-so password" : "Mało skomplikowane hasło", + "Good password" : "Dobre hasło", + "Strong password" : "Mocne hasło", + "An error occurred while changing your language. Please reload the page and try again." : "Wystąpił błąd podczas zmiany języka. Proszę przeładować stronę i spróbować ponownie.", + "An error occurred while changing your locale. Please reload the page and try again." : "Wystąpił błąd podczas zmiany ustawień lokalnych. Proszę przeładować stronę i spróbować ponownie.", + "Select a profile picture" : "Wybierz zdjęcie profilowe", + "Week starts on {fdow}" : "Tydzień zaczyna się w {fdow}", + "Groups" : "Grupy", + "Group list is empty" : "Lista grup jest pusta", + "Unable to retrieve the group list" : "Nie można pobrać listy grup", + "Afrikaans (Namibia)" : "Afrykański (Namibia)", + "Afrikaans (South Africa)" : "Afrykański (Południowa Afryka)", + "Afrikaans" : "Afrykański", + "Akan (Ghana)" : "Akan (Ghana)", + "Akan" : "Akan", + "Albanian (Albania)" : "Albański (Albania)", + "Albanian" : "Albański", + "Amharic (Ethiopia)" : "Amharski (Etiopia)", + "Amharic" : "Amharski", + "Arabic (Algeria)" : "Arabski (Algieria)", + "Arabic (Bahrain)" : "Arabski (Bahrajn)", + "Arabic (Egypt)" : "Arabski (Egipt)", + "Arabic (Iraq)" : "Arabski (Irak)", + "Arabic (Jordan)" : "Arabski (Jordania)", + "Arabic (Kuwait)" : "Arabski (Kuwejt)", + "Arabic (Lebanon)" : "Arabski (Liban)", + "Arabic (Libya)" : "Arabski (Libia)", + "Arabic (Morocco)" : "Arabski (Maroko)", + "Arabic (Oman)" : "Arabski (Oman)", + "Arabic (Qatar)" : "Arabski (Katar)", + "Arabic (Saudi Arabia)" : "Arabski (Arabia Saudyjska)", + "Arabic (Sudan)" : "Arabski (Sudan)", + "Arabic (Syria)" : "Arabski (Syria)", + "Arabic (Tunisia)" : "Arabski (Tunezja)", + "Arabic (United Arab Emirates)" : "Arabski (Zjednoczone Emiraty Arabskie)", + "Arabic (Yemen)" : "Arabski (Jemen)", + "Arabic" : "Arabski", + "Armenian (Armenia)" : "Ormiański (Armenia)", + "Armenian" : "Ormiański", + "Assamese (India)" : "Assamese (Indie)", + "Assamese" : "Assamese", + "Asu (Tanzania)" : "Asu (Tanzania)", + "Asu" : "Asu", + "Azerbaijani (Cyrillic)" : "Azerbejdżański (cyrylica)", + "Azerbaijani (Cyrillic, Azerbaijan)" : "Azerbejdżański (Cyrylica, Azerbejdżan)", + "Azerbaijani (Latin)" : "Azerbejdżański (Łacina)", + "Azerbaijani (Latin, Azerbaijan)" : "Azerbejdżański (Łacina, Azerbejdżan)", + "Azerbaijani" : "Azerbejdżański", + "Bambara (Mali)" : "Bambara (Mali)", + "Bambara" : "Bambara", + "Basque (Spain)" : "Baskijski (Hiszpania)", + "Basque" : "Baskijski", + "Belarusian (Belarus)" : "Białoruski (Białoruś)", + "Belarusian" : "Białoruski", + "Bemba (Zambia)" : "Bemba (Zambia)", + "Bemba" : "Bemba", + "Bena (Tanzania)" : "Bena (Tanzania)", + "Bena" : "Bena", + "Bengali (Bangladesh)" : "Bengalski (Bangladesz)", + "Bengali (India)" : "Bengalski (Indie)", + "Bengali" : "Bengalski", + "Bosnian (Bosnia and Herzegovina)" : "Bośniacki (Bośnia i Hercegowina)", + "Bosnian" : "Bośniacki", + "Bulgarian (Bulgaria)" : "Bułgarski (Bułgaria)", + "Bulgarian" : "Bułgarski", + "Burmese (Myanmar [Burma])" : "Birmański (Myanmar [Birma])", + "Burmese" : "Birmański", + "Catalan (Spain)" : "Kataloński (Hiszpania)", + "Catalan" : "Kataloński", + "Central Morocco Tamazight (Latin)" : "Środkowy Maroko Tamazight (Łacina)", + "Central Morocco Tamazight (Latin, Morocco)" : "Maroko Środkowe Tamazight (Łacina, Maroko)", + "Central Morocco Tamazight" : "Środkowy Maroko Tamazight", + "Cherokee (United States)" : "Cherokee (Stany Zjednoczone)", + "Cherokee" : "Cherokee", + "Chiga (Uganda)" : "Chiga (Uganda)", + "Chiga" : "Chiga", + "Chinese (Simplified Han)" : "Chiński (Uproszczony Han)", + "Chinese (Simplified Han, China)" : "Chiński (Uproszczony Han, Chiny)", + "Chinese (Simplified Han, Hong Kong SAR China)" : "Chiński (Uproszczony Han, Hongkong SAR Chiny)", + "Chinese (Simplified Han, Macau SAR China)" : "Chiński (Uproszczony Han, Macau SAR Chiny)", + "Chinese (Simplified Han, Singapore)" : "Chiński (Uproszczony Han, Singapur)", + "Chinese (Traditional Han)" : "Chiński (Tradycyjny Han)", + "Chinese (Traditional Han, Hong Kong SAR China)" : "Chiński (Tradycyjny Han, Hongkong SAR Chiny)", + "Chinese (Traditional Han, Macau SAR China)" : "Chiński (Tradycyjny Han, Macau SAR Chiny)", + "Chinese (Traditional Han, Taiwan)" : "Chiński (Tradycyjny Han, Tajwan)", + "Chinese" : "Chiński", + "Cornish (United Kingdom)" : "Cornish (Wielka Brytania)", + "Cornish" : "Cornish", + "Croatian (Croatia)" : "Chorwacki (Chorwacja)", + "Croatian" : "Chorwacki", + "Czech (Czech Republic)" : "Czeski (Republika Czeska)", + "Czech" : "Czeski", + "Danish (Denmark)" : "Duński (Dania)", + "Danish" : "Duński", + "Dutch (Belgium)" : "Holenderski (Belgia)", + "Dutch (Netherlands)" : "Holenderski (Holandia)", + "Dutch" : "Holenderski", + "Embu (Kenya)" : "Embu (Kenia)", + "Embu" : "Embu", + "English (American Samoa)" : "Angielski (Samoa Amerykańskie)", + "English (Australia)" : "Angielski (Australia)", + "English (Belgium)" : "Angielski (Belgia)", + "English (Belize)" : "Angielski (Belize)", + "English (Botswana)" : "Angielski (Botswana)", + "English (Canada)" : "Angielski (Kanada)", + "English (Guam)" : "Angielski (Guam)", + "English (Hong Kong SAR China)" : "Angielski (Hongkong SAR Chiny)", + "English (India)" : "Angielski (Indie)", + "English (Ireland)" : "Angielski (Irlandia)", + "English (Jamaica)" : "Angielski (Jamajka)", + "English (Malta)" : "Angielski (Malta)", + "English (Marshall Islands)" : "Angielski (Wyspy Marshalla)", + "English (Mauritius)" : "Angielski (Mauritius)", + "English (Namibia)" : "Angielski (Namibia)", + "English (New Zealand)" : "Angielski (Nowa Zelandia)", + "English (Northern Mariana Islands)" : "Angielski (Mariany Północne)", + "English (Pakistan)" : "Angielski (Pakistan)", + "English (Philippines)" : "Angielski (Filipiny)", + "English (Singapore)" : "Angielski (Singapur)", + "English (South Africa)" : "Angielski (Południowa Afryka)", + "English (Trinidad and Tobago)" : "Angielski (Trynidad i Tobago)", + "English (U.S. Minor Outlying Islands)" : "Angielski (Dalekie Wyspy Mniejsze Stanów Zjednoczonych)", + "English (U.S. Virgin Islands)" : "Angielski (Wyspy Dziewicze Stanów Zjednoczonych)", + "English (United Kingdom)" : "Angielski (Zjednoczone Królestwo)", + "English (United States)" : "Angielski (Stany Zjednoczone)", + "English (Zimbabwe)" : "Angielski (Zimbabwe)", + "English" : "Angielski", + "Esperanto" : "Esperanto", + "Estonian (Estonia)" : "Estoński (Estonia)", + "Estonian" : "Estoński", + "Ewe (Ghana)" : "Ewe (Ghana)", + "Ewe (Togo)" : "Ewe (Togo)", + "Ewe" : "Ewe", + "Faroese (Faroe Islands)" : "Farerski (Wyspy Owcze)", + "Faroese" : "Farerski", + "Filipino (Philippines)" : "Filipiński (Filipiny)", + "Filipino" : "Filipiński", + "Finnish (Finland)" : "Fiński (Finlandia)", + "Finnish" : "Fiński", + "French (Belgium)" : "Francuski (Belgia)", + "French (Benin)" : "Francuski (Benin)", + "French (Burkina Faso)" : "Francuski (Burkina Faso)", + "French (Burundi)" : "Francuski (Burundi)", + "French (Cameroon)" : "Francuski (Kamerun)", + "French (Canada)" : "Francuski (Kanada)", + "French (Central African Republic)" : "Francuski (Republika Środkowoafrykańska)", + "French (Chad)" : "Francuski (Czad)", + "French (Comoros)" : "Francuski (Komory)", + "French (Congo - Brazzaville)" : "Francuski (Kongo - Brazzaville)", + "French (Congo - Kinshasa)" : "Francuski (Kongo - Kinszasa)", + "French (Côte d’Ivoire)" : "Francuski (Wybrzeże Kości Słoniowej)", + "French (Djibouti)" : "Francuski (Dżibuti)", + "French (Equatorial Guinea)" : "Francuski (Gwinea Równikowa)", + "French (France)" : "Francuski (Francja)", + "French (Gabon)" : "Francuski (Gabon)", + "French (Guadeloupe)" : "Francuski (Gwadelupa)", + "French (Guinea)" : "Francuski (Gwinea)", + "French (Luxembourg)" : "Francuski (Luksemburg)", + "French (Madagascar)" : "Francuski (Madagaskar)", + "French (Mali)" : "Francuski (Mali)", + "French (Martinique)" : "Francuski (Martynika)", + "French (Monaco)" : "Francuski (Monako)", + "French (Niger)" : "Francuski (Niger)", + "French (Rwanda)" : "Francuski (Rwanda)", + "French (Réunion)" : "Francuski (Reunion)", + "French (Saint Barthélemy)" : "Francuski (Saint Barthélemy)", + "French (Saint Martin)" : "Francuski (Saint Martin)", + "French (Senegal)" : "Francuski (Senegal)", + "French (Switzerland)" : "Francuski (Szwajcaria)", + "French (Togo)" : "Francuski (Togo)", + "French" : "Francuski", + "Fulah (Senegal)" : "Fulah (Senegal)", + "Fulah" : "Fulah", + "Galician (Spain)" : "Galicyjski (Hiszpania)", + "Galician" : "Galicyjski", + "Ganda (Uganda)" : "Ganda (Uganda)", + "Ganda" : "Ganda", + "Georgian (Georgia)" : "Gruziński (Gruzja)", + "Georgian" : "Gruziński", + "German (Austria)" : "Niemiecki (Austria)", + "German (Belgium)" : "Niemiecki (Belgia)", + "German (Germany)" : "Niemiecki (Niemcy)", + "German (Liechtenstein)" : "Niemiecki (Liechtenstein)", + "German (Luxembourg)" : "Niemiecki (Luksemburg)", + "German (Switzerland)" : "Niemiecki (Szwajcaria)", + "German" : "Niemiecki", + "Greek (Cyprus)" : "Grecki (Cypr)", + "Greek (Greece)" : "Grecki (Grecja)", + "Greek" : "Grecki", + "Gujarati (India)" : "Gudżarati (Indie)", + "Gujarati" : "Gudżarati", + "Gusii (Kenya)" : "Gusii (Kenia)", + "Gusii" : "Gusii", + "Hausa (Latin)" : "Hausa (Łacina)", + "Hausa (Latin, Ghana)" : "Hausa (Łacina, Ghana)", + "Hausa (Latin, Niger)" : "Hausa (Łacina, Niger)", + "Hausa (Latin, Nigeria)" : "Hausa (Łacina, Nigeria)", + "Hausa" : "Hausa", + "Hawaiian (United States)" : "Hawajski (Stany Zjednoczone)", + "Hawaiian" : "Hawajski", + "Hebrew (Israel)" : "Hebrajski (Izrael)", + "Hebrew" : "Hebrajski", + "Hindi (India)" : "Hindi (Indie)", + "Hindi" : "Hindi", + "Hungarian (Hungary)" : "Węgierski (Węgry)", + "Hungarian" : "Węgierski", + "Icelandic (Iceland)" : "Islandzki (Islandia)", + "Icelandic" : "Islandzki", + "Igbo (Nigeria)" : "Igbo (Nigeria)", + "Igbo" : "Igbo", + "Indonesian (Indonesia)" : "Indonezyjski (Indonezja)", + "Indonesian" : "Indonezyjski", + "Irish (Ireland)" : "Irlandzki (Irlandia)", + "Irish" : "Irlandzki", + "Italian (Italy)" : "Włoski (Włochy)", + "Italian (Switzerland)" : "Włoski (Szwajcaria)", + "Italian" : "Włoski", + "Japanese (Japan)" : "Japoński (Japonia)", + "Japanese" : "Japoński", + "Kabuverdianu (Cape Verde)" : "Kabuverdianu (Zielony Przylądek)", + "Kabuverdianu" : "Kabuverdianu", + "Kabyle (Algeria)" : "Kabyle (Algieria)", + "Kabyle" : "Kabyle", + "Kalaallisut (Greenland)" : "Kalaallisut (Grenlandia)", + "Kalaallisut" : "Kalaallisut", + "Kalenjin (Kenya)" : "Kalenjin (Kenia)", + "Kalenjin" : "Kalenjin", + "Kamba (Kenya)" : "Kamba (Kenia)", + "Kamba" : "Kamba", + "Kannada (India)" : "Kannada (Indie)", + "Kannada" : "Kannada", + "Kazakh (Cyrillic)" : "Kazachski (Cyrylica)", + "Kazakh (Cyrillic, Kazakhstan)" : "Kazachski (Cyrylica, Kazachstan)", + "Kazakh" : "Kazachski", + "Khmer (Cambodia)" : "Khmer (Kambodża)", + "Khmer" : "Khmer", + "Kikuyu (Kenya)" : "Kikuyu (Kenia)", + "Kikuyu" : "Kikuyu", + "Kinyarwanda (Rwanda)" : "Kinyarwanda (Rwanda)", + "Kinyarwanda" : "Kinyarwanda", + "Konkani (India)" : "Konkani (Indie)", + "Konkani" : "Konkani", + "Korean (South Korea)" : "Koreański (Korea Południowa)", + "Korean" : "Koreański", + "Koyra Chiini (Mali)" : "Koyra Chiini (Mali)", + "Koyra Chiini" : "Koyra Chiini", + "Koyraboro Senni (Mali)" : "Koyraboro Senni (Mali)", + "Koyraboro Senni" : "Koyraboro Senni", + "Langi (Tanzania)" : "Langi (Tanzania)", + "Langi" : "Langi", + "Latvian (Latvia)" : "Łotewski (Łotwa)", + "Latvian" : "Łotewski", + "Lithuanian (Lithuania)" : "Litewski (Litwa)", + "Lithuanian" : "Litewski", + "Luo (Kenya)" : "Luo (Kenia)", + "Luo" : "Luo", + "Luyia (Kenya)" : "Luyia (Kenia)", + "Luyia" : "Luyia", + "Macedonian (Macedonia)" : "Macedoński (Macedonia)", + "Macedonian" : "Macedoński", + "Machame (Tanzania)" : "Machame (Tanzania)", + "Machame" : "Machame", + "Makonde (Tanzania)" : "Makonde (Tanzania)", + "Makonde" : "Makonde", + "Malagasy (Madagascar)" : "Malgaski (Madagaskar)", + "Malagasy" : "Malgaski", + "Malay (Brunei)" : "Malajski (Brunei)", + "Malay (Malaysia)" : "Malajski (Malezja)", + "Malay" : "Malajski", + "Malayalam (India)" : "Malajalam (Indie)", + "Malayalam" : "Malayalam", + "Maltese (Malta)" : "Maltański (Malta)", + "Maltese" : "Maltański", + "Manx (United Kingdom)" : "Manx (Wielka Brytania)", + "Manx" : "Manx", + "Marathi (India)" : "Marathi (Indie)", + "Marathi" : "Marathi", + "Masai (Kenya)" : "Masai (Kenia)", + "Masai (Tanzania)" : "Masai (Tanzania)", + "Masai" : "Masai", + "Meru (Kenya)" : "Meru (Kenia)", + "Meru" : "Meru", + "Morisyen (Mauritius)" : "Morisyen (Mauritius)", + "Morisyen" : "Morisyen", + "Nama (Namibia)" : "Nama (Namibia)", + "Nama" : "Nama", + "Nepali (India)" : "Nepalski (Indie)", + "Nepali (Nepal)" : "Nepalski (Nepal)", + "Nepali" : "Nepalski", + "North Ndebele (Zimbabwe)" : "North Ndebele (Zimbabwe)", + "North Ndebele" : "North Ndebele", + "Norwegian Bokmål (Norway)" : "Norweski Bokmål (Norwegia)", + "Norwegian Bokmål" : "Norweski Bokmål", + "Norwegian Nynorsk (Norway)" : "Norweski Nynorsk (Norwegia)", + "Norwegian Nynorsk" : "Norweski Nynorsk", + "Nyankole (Uganda)" : "Nyankole (Uganda)", + "Nyankole" : "Nyankole", + "Oriya (India)" : "Oriya (Indie)", + "Oriya" : "Oriya", + "Oromo (Ethiopia)" : "Oromo (Etiopia)", + "Oromo (Kenya)" : "Oromo (Kenia)", + "Oromo" : "Oromo", + "Pashto (Afghanistan)" : "Paszto (Afganistan)", + "Pashto" : "Paszto", + "Persian (Afghanistan)" : "Perski (Afganistan)", + "Persian (Iran)" : "Perski (Iran)", + "Persian" : "Perski", + "Polish (Poland)" : "Polski (Polska)", + "Polish" : "Polski", + "Portuguese (Brazil)" : "Portugalski (Brazylia)", + "Portuguese (Guinea-Bissau)" : "Portugalski (Gwinea Bissau)", + "Portuguese (Mozambique)" : "Portugalski (Mozambik)", + "Portuguese (Portugal)" : "Portugalski (Portugalia)", + "Portuguese" : "Portugalski", + "Punjabi (Arabic)" : "Punjabi (Arabski)", + "Punjabi (Arabic, Pakistan)" : "Punjabi (Arabski, Pakistan)", + "Punjabi (Gurmukhi)" : "Punjabi (Gurmukhi)", + "Punjabi (Gurmukhi, India)" : "Punjabi (Gurmukhi, Indie)", + "Punjabi" : "Punjabi", + "Romanian (Moldova)" : "Rumuński (Mołdawia)", + "Romanian (Romania)" : "Rumuński (Rumunia)", + "Romanian" : "Rumuński", + "Romansh (Switzerland)" : "Romansh (Szwajcaria)", + "Romansh" : "Romansh", + "Rombo (Tanzania)" : "Rombo (Tanzania)", + "Rombo" : "Rombo", + "Russian (Moldova)" : "Rosyjski (Mołdawia)", + "Russian (Russia)" : "Rosyjski (Rosja)", + "Russian (Ukraine)" : "Rosyjski (Ukraina)", + "Russian" : "Rosyjski", + "Rwa (Tanzania)" : "Rwa (Tanzania)", + "Rwa" : "Rwa", + "Samburu (Kenya)" : "Samburu (Kenia)", + "Samburu" : "Samburu", + "Sango (Central African Republic)" : "Sango (Republika Środkowoafrykańska)", + "Sango" : "Sango", + "Sena (Mozambique)" : "Sena (Mozambik)", + "Sena" : "Sena", + "Serbian (Cyrillic)" : "Serbski (Cyrylica)", + "Serbian (Cyrillic, Bosnia and Herzegovina)" : "Serbski (Cyrylica, Bośnia i Hercegowina)", + "Serbian (Cyrillic, Montenegro)" : "Serbski (Cyrylica, Czarnogóra)", + "Serbian (Cyrillic, Serbia)" : "Serbski (Cyrylica, Serbia)", + "Serbian (Latin)" : "Serbski (Łacina)", + "Serbian (Latin, Bosnia and Herzegovina)" : "Serbski (Łacina, Bośnia i Hercegowina)", + "Serbian (Latin, Montenegro)" : "Serbski (Łacina, Czarnogóra)", + "Serbian (Latin, Serbia)" : "Serbski (Łacina, Serbia)", + "Serbian" : "Serbski", + "Shona (Zimbabwe)" : "Shona (Zimbabwe)", + "Shona" : "Shona", + "Sichuan Yi (China)" : "Syczuan Yi (Chiny)", + "Sichuan Yi" : "Sichuan Yi", + "Sinhala (Sri Lanka)" : "Syngaleski (Sri Lanka)", + "Sinhala" : "Syngaleski", + "Slovak (Slovakia)" : "Słowacki (Słowacja)", + "Slovak" : "Słowacki", + "Slovenian (Slovenia)" : "Słoweński (Słowenia)", + "Slovenian" : "Słoweński", + "Soga (Uganda)" : "Soga (Uganda)", + "Soga" : "Soga", + "Somali (Djibouti)" : "Somalijski (Dżibuti)", + "Somali (Ethiopia)" : "Somalijski (Etiopia)", + "Somali (Kenya)" : "Somalijski (Kenia)", + "Somali (Somalia)" : "Somalijski (Somalia)", + "Somali" : "Somalijski", + "Spanish (Argentina)" : "Hiszpański (Argentyna)", + "Spanish (Bolivia)" : "Hiszpański (Boliwia)", + "Spanish (Chile)" : "Hiszpański (Chile)", + "Spanish (Colombia)" : "Hiszpański (Kolumbia)", + "Spanish (Costa Rica)" : "Hiszpański (Kostaryka)", + "Spanish (Dominican Republic)" : "Hiszpański (Republika Dominikany)", + "Spanish (Ecuador)" : "Hiszpański (Ekwador)", + "Spanish (El Salvador)" : "Hiszpański (Salwador)", + "Spanish (Equatorial Guinea)" : "Hiszpański (Gwinea Równikowa)", + "Spanish (Guatemala)" : "Hiszpański (Gwatemala)", + "Spanish (Honduras)" : "Hiszpański (Honduras)", + "Spanish (Latin America)" : "Hiszpański (Ameryka Łacińska)", + "Spanish (Mexico)" : "Hiszpański (Meksyk)", + "Spanish (Nicaragua)" : "Hiszpański (Nikaragua)", + "Spanish (Panama)" : "Hiszpański (Panama)", + "Spanish (Paraguay)" : "Hiszpański (Paragwaj)", + "Spanish (Peru)" : "Hiszpański (Peru)", + "Spanish (Puerto Rico)" : "Hiszpański (Portoryko)", + "Spanish (Spain)" : "Hiszpański (Hiszpania)", + "Spanish (United States)" : "Hiszpański (Stany Zjednoczone)", + "Spanish (Uruguay)" : "Hiszpański (Urugwaj)", + "Spanish (Venezuela)" : "Hiszpański (Wenezuela)", + "Spanish" : "Hiszpański", + "Swahili (Kenya)" : "Swahili (Kenia)", + "Swahili (Tanzania)" : "Swahili (Tanzania)", + "Swahili" : "Swahili", + "Swedish (Finland)" : "Szwedzki (Finlandia)", + "Swedish (Sweden)" : "Szwedzki (Szwecja)", + "Swedish" : "Szwedzki", + "Swiss German (Switzerland)" : "Szwajcarski Niemiecki (Szwajcaria)", + "Swiss German" : "Szwajcarski Niemiecki", + "Tachelhit (Latin)" : "Tachelhit (Łacina)", + "Tachelhit (Latin, Morocco)" : "Tachelhit (Łacina, Maroko)", + "Tachelhit (Tifinagh)" : "Tachelhit (Tifinagh)", + "Tachelhit (Tifinagh, Morocco)" : "Tachelhit (Tifinagh, Maroko)", + "Tachelhit" : "Tachelhit", + "Taita (Kenya)" : "Taita (Kenia)", + "Taita" : "Taita", + "Tamil (India)" : "Tamil (Indie)", + "Tamil (Sri Lanka)" : "Tamil (Sri Lanka)", + "Tamil" : "Tamil", + "Telugu (India)" : "Telugu (Indie)", + "Telugu" : "Telugu", + "Teso (Kenya)" : "Teso (Kenia)", + "Teso (Uganda)" : "Teso (Uganda)", + "Teso" : "Teso", + "Thai (Thailand)" : "Tajski (Tajlandia)", + "Thai" : "Tajski", + "Tibetan (China)" : "Tybetański (Chiny)", + "Tibetan (India)" : "Tybetański (Indie)", + "Tibetan" : "Tybetański", + "Tigrinya (Eritrea)" : "Tigrinya (Erytrea)", + "Tigrinya (Ethiopia)" : "Tigrinya (Etiopia)", + "Tigrinya" : "Tigrinya", + "Tonga (Tonga)" : "Tonga (Tonga)", + "Tonga" : "Tonga", + "Turkish (Turkey)" : "Turecki (Turcja)", + "Turkish" : "Turecki", + "Ukrainian (Ukraine)" : "Ukraiński (Ukraina)", + "Ukrainian" : "Ukraiński", + "Urdu (India)" : "Urdu (Indie)", + "Urdu (Pakistan)" : "Urdu (Pakistan)", + "Urdu" : "Urdu", + "Uzbek (Arabic)" : "Uzbecki (Arabski)", + "Uzbek (Arabic, Afghanistan)" : "Uzbecki (Arabski, Afganistan)", + "Uzbek (Cyrillic)" : "Uzbecki (Cyrylica)", + "Uzbek (Cyrillic, Uzbekistan)" : "Uzbecki (Cyrylica, Uzbekistan)", + "Uzbek (Latin)" : "Uzbecki (Łacina)", + "Uzbek (Latin, Uzbekistan)" : "Uzbecki (Łacina, Uzbekistan)", + "Uzbek" : "Uzbecki", + "Vietnamese (Vietnam)" : "Wietnamski (Wietnam)", + "Vietnamese" : "Wietnamski", + "Vunjo (Tanzania)" : "Vunjo (Tanzania)", + "Vunjo" : "Vunjo", + "Welsh (United Kingdom)" : "Walijski (Wielka Brytania)", + "Welsh" : "Walijski", + "Yoruba (Nigeria)" : "Joruba (Nigeria)", + "Yoruba" : "Joruba", + "Zulu (South Africa)" : "Zulu (Republika Południowej Afryki)", + "Zulu" : "Zulu", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Uwierzytelnianie dwuskładnikowe może być wymuszane dla wszystkich\tużytkowników i określonych grup. Jeśli nie mają skonfigurowanego dostawcy logowania dwuskładnikowego, nie będą mogli zalogować się do systemu.", + "Enforce two-factor authentication" : "Wymuś uwierzytelnianie dwuskładnikowe", + "Limit to groups" : "Ogranicz do grup", + "Enforcement of two-factor authentication can be set for certain groups only." : "Wymuszanie uwierzytelniania dwuskładnikowego można ustawić tylko dla niektórych grup.", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "Uwierzytelnianie dwuskładnikowe jest wymuszane dla wszystkich\tczłonków następujących grup.", + "Enforced groups" : "Wymuszone grupy", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "Uwierzytelnianie dwuskładnikowe nie jest wymuszane dla\tczłonków następujących grup.", + "Excluded groups" : "Wyłączone grupy", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "Gdy grupy są wybierane/wykluczane, używają następującej logiki do określenia, czy użytkownik ma wymuszone 2FA: Jeśli nie wybrano żadnych grup, 2FA jest włączone dla wszystkich, z wyjątkiem członków grup wykluczonych. Jeśli wybrane są grupy, opcja 2FA jest włączona dla wszystkich członków. Jeśli użytkownik znajduje się zarówno w grupie wybranej, jak i wykluczonej, wybrane ma pierwszeństwo, a 2FA jest wymuszone.", + "Save changes" : "Zapisz zmiany", + "Marked for remote wipe" : "Oznaczone do zdalnego czyszczenia", + "Device settings" : "Ustawienia urządzenia", + "Allow filesystem access" : "Zezwalaj na dostęp do systemu plików", + "Rename" : "Zmień nazwę", + "Revoke" : "Cofnij", + "Wipe device" : "Wyczyść urządzenie", + "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Unieważnienie tego tokena wstrzyma czyszczenie urządzenia, jeśli jeszcze nie rozpoczął.", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome dla Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Aplikacja Nextcloud iOS", + "Nextcloud Android app" : "Aplikacja Nextcloud Android", + "Nextcloud Talk for iOS" : "Nextcloud Talk dla iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk dla Android", + "Sync client - {os}" : "Klient synchronizacji - {os}", + "This session" : "Ta sesja", + "Device" : "Urządzenie", + "Last activity" : "Ostatnia aktywność", + "Devices & sessions" : "Urządzenia i sesje", + "Web, desktop and mobile clients currently logged in to your account." : "Klienci internetowi, desktopowi i mobilni są obecnie zalogowani na Twoim koncie.", + "Do you really want to wipe your data from this device?" : "Czy na pewno chcesz usunąć dane z tego urządzenia?", + "Confirm wipe" : "Potwierdzenie usunięcia", + "Error while creating device token" : "Błąd podczas tworzenia tokena urządzenia", + "Error while updating device token scope" : "Błąd podczas aktualizacji zakresu tokena urządzenia", + "Error while updating device token name" : "Błąd podczas aktualizacji nazwy tokena urządzenia", + "Error while deleting the token" : "Błąd podczas usuwania tokena", + "Error while wiping the device with the token" : "Błąd podczas czyszczenia urządzenia za pomocą tokena", + "App name" : "Nazwa aplikacji", + "Create new app password" : "Utwórz nowe hasło aplikacji", + "Use the credentials below to configure your app or device." : "Użyj poniższych poświadczeń, aby skonfigurować aplikację lub urządzenie.", + "For security reasons this password will only be shown once." : "Ze względów bezpieczeństwa hasło zostanie pokazane tylko raz.", + "Username" : "Nazwa użytkownika", + "Password" : "Hasło", + "Done" : "Ukończono", + "Show QR code for mobile apps" : "Pokaż kod QR dla aplikacji mobilnych", + "Copied!" : "Skopiowano!", + "Copy" : "Kopiuj", + "Could not copy app password. Please copy it manually." : "Nie można skopiować hasła do aplikacji. Skopiuj go ręcznie.", + "This app is supported via your current Nextcloud subscription." : "Ta aplikacja jest obsługiwana za pośrednictwem bieżącej subskrypcji Nextcloud.", + "Supported" : "Wspierany", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Oficjalne aplikacje są tworzone przez społeczność. Oferują główną funkcjonalność i są gotowe do użycia w produkcji.", + "Official" : "Oficjalna", + "by" : "przez", + "Update to {version}" : "Aktualizuj do {version}", + "Remove" : "Usuń", + "Disable" : "Wyłącz", + "All" : "Wszystkie", + "Limit app usage to groups" : "Ogranicz korzystanie z aplikacji dla grup", + "No results" : "Brak wyników", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Ta aplikacja nie ma przypisanej minimalnej wersji Nextcloud. W przyszłości będzie to błąd.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Ta aplikacja nie ma przypisanej maksymalnej wersji Nextcloud. W przyszłości będzie to błąd.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Ta aplikacja nie może być zainstalowana, ponieważ nie są spełnione następujące zależności:", + "View in store" : "Zobacz w sklepie", + "Visit website" : "Odwiedź stronę", + "Report a bug" : "Zgłoś błąd", + "User documentation" : "Dokumentacja użytkownika", + "Admin documentation" : "Dokumentacja administratora", + "Developer documentation" : "Dokumentacja dewelopera", + "Update to {update}" : "Aktualizuj do {update}", + "Results from other categories" : "Wyniki z innych kategorii", + "No apps found for your version" : "Nie znaleziono aplikacji dla Twojej wersji", + "Disable all" : "Wyłącz wszystkie", + "Enable all" : "Włącz wszystkie", + "Download and enable" : "Zainstaluj i włącz", + "Enable" : "Włącz", + "Enable untested app" : "Włącz nietestowaną aplikację", + "The app will be downloaded from the app store" : "Aplikacja zostanie pobrana z App Store", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Ta aplikacja jest niezgodna z wersją Nextcloud. Przy dalszej kontynuacji, możesz pozwolić na zainstalowanie tej aplikacji. Pamiętaj, że aplikacja może nie działać zgodnie z oczekiwaniami.", + "You do not have permissions to see the details of this user" : "Nie masz uprawnień aby zobaczyć informacje o tym użytkowniku", + "The backend does not support changing the display name" : "System zaplecza nie obsługuje zmiany nazwy wyświetlanej", + "New password" : "Nowe hasło", + "Add user in group" : "Dodaj użytkownika do grupy", + "Set user as admin for" : "Ustaw administratora dla", + "Select user quota" : "Wybierz limit dla użytkownika", + "No language set" : "Nie ustawiono języka", + "Never" : "Nigdy", + "Delete user" : "Usuń użytkownika", + "Wipe all devices" : "Wyczyść wszystkie urządzenia", + "Disable user" : "Zablokuj użytkownika", + "Enable user" : "Odblokuj użytkownika", + "Resend welcome email" : "Wyślij ponownie wiadomość powitalną", + "{size} used" : "Wykorzystane: {size}", + "Welcome mail sent!" : "Wysłano wiadomość powitalną!", + "Display name" : "Nazwa wyświetlana", + "Email" : "E-mail", + "Group admin for" : "Administrator grupy", + "Quota" : "Limit", + "Language" : "Język", + "Storage location" : "Lokalizacja magazynu", + "User backend" : "Moduł użytkownika", + "Last login" : "Ostatnio zalogowany", + "Will be autogenerated" : "Zostanie automatycznie wygenerowany", + "Default language" : "Domyślny język", + "Add a new user" : "Dodaj użytkownika", + "No users in here" : "Brak użytkowników", + "Default quota" : "Domyślny limit", + "Password change is disabled because the master key is disabled" : "Zmiana hasła jest zablokowana z powodu włączenia klucza głównego.", + "Common languages" : "Popularne języki", + "All languages" : "Wszystkie języki", + "Your apps" : "Twoje aplikacje", + "Active apps" : "Aktywne aplikacje", + "Disabled apps" : "Wyłączone aplikacje", + "Updates" : "Aktualizacje", + "App bundles" : "Zestawy aplikacji", + "{license}-licensed" : "Na licencji {license}", + "New user" : "Nowy użytkownik", + "Default quota:" : "Domyślny limit:", + "Select default quota" : "Wybierz domyślny limit", + "Show Languages" : "Pokaż języki", + "Show last login" : "Pokaż ostatnie logowanie", + "Show user backend" : "Pokaż moduł użytkownika", + "Show storage path" : "Pokaż ścieżkę przechowywania", + "You are about to remove the group {group}. The users will NOT be deleted." : "Zamierzasz usunąć grupę {group}. Użytkownicy NIE zostaną usunięci.", + "Please confirm the group removal " : "Potwierdź usunięcie grupy", + "Remove group" : "Usuń grupę", + "Admins" : "Administratorzy", + "Disabled users" : "Zablokowani użytkownicy", + "Everyone" : "Wszyscy", + "Add group" : "Dodaj grupę", + "An error occured during the request. Unable to proceed." : "Wystąpił błąd zapytania. Nie można kontynuować.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Aplikacja została włączona, ponieważ wymaga aktualizacji. Za 5 sekund nastąpi przekierowanie do strony aktualizacji.", + "App update" : "Aktualizacja aplikacji", + "Error: This app can not be enabled because it makes the server unstable" : "Błąd: ta aplikacja nie zostanie włączona ze względu na możliwość niestabilnej pracy serwera.", + "SSL Root Certificates" : "Certyfikaty główne SSL", + "Common Name" : "Nazwa CN", + "Valid until" : "Ważny do", + "Issued By" : "Wydany przez", + "Valid until %s" : "Ważny do %s", + "Import root certificate" : "Importuj certyfikat główny", + "Administrator documentation" : "Dokumentacja administratora", + "Documentation" : "Dokumentacja", + "Forum" : "Forum", + "None" : "Brak", + "Login" : "Login", + "Plain" : "Czysty tekst", + "NT LAN Manager" : "NT LAN Manager", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Serwer poczty", + "Open documentation" : "Otwórz dokumentację", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Należy skonfigurować ten serwer, aby umożliwić wysyłanie wiadomości e-mail z powiadomieniami i resetowaniem hasła.", + "Send mode" : "Sposób wysyłania", + "Encryption" : "Szyfrowanie", + "Sendmail mode" : "Tryb Sendmail", + "From address" : "Z adresu", + "mail" : "poczta", + "Authentication method" : "Metoda uwierzytelnienia", + "Authentication required" : "Wymagana autoryzacja", + "Server address" : "Adres serwera", + "Port" : "Port", + "Credentials" : "Poświadczenia", + "SMTP Username" : "Użytkownik SMTP", + "SMTP Password" : "Hasło SMTP", + "Save" : "Zapisz", + "Test email settings" : "Przetestuj ustawienia poczty e-mail", + "Send email" : "Wyślij e-mail", + "Security & setup warnings" : "Ostrzeżenia bezpieczeństwa i konfiguracji", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Poprawna konfiguracja jest ważna dla bezpieczeństwa i wydajności Twojej instancji. W celach pomocniczych przeprowadzane jest automatyczne sprawdzanie. Więcej informacji możesz znaleźć w dokumentacji.", + "All checks passed." : "Wszystkie testy konfiguracji zakończyły się pomyślnie.", + "There are some errors regarding your setup." : "Występują błędy dotyczące konfiguracji.", + "There are some warnings regarding your setup." : "Znaleziono zastrzeżenia w Twojej konfiguracji.", + "Checking for system and security issues." : "Sprawdzanie błędów systemu i bezpieczeństwa.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Sprawdź dokładnie <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">instrukcje instalacji ↗</a> oraz sprawdź, czy nie ma błędów lub ostrzeżeń w <a href=\"%2$s\">logach</a>.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Sprawdź bezpieczeństwo swojego serwera Nextcloud <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">naszym skanerem bezpieczeństwa ↗</a>.", + "Version" : "Wersja", + "Two-Factor Authentication" : "Autoryzacja dwuskładnikowa", + "Server-side encryption" : "Szyfrowanie po stronie serwera", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Szyfrowanie po stronie serwera umożliwia szyfrowanie plików przesyłanych na ten serwer. Posiada ograniczenia takie jak obniżenie wydajności, więc włącz tylko w razie potrzeby.", + "Enable server-side encryption" : "Włącz szyfrowanie po stronie serwera", + "Please read carefully before activating server-side encryption: " : "Przeczytaj uważnie przed aktywacją szyfrowania po stronie serwera:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Po włączeniu szyfrowania wszystkie pliki przesłane na serwer od tej chwili będą szyfrowane na serwerze. Wyłączenie szyfrowania będzie możliwe dopiero, gdy aktywny moduł szyfrowania wykona tę funkcję oraz wszystkie poprzednie warunki będą spełnione (np. ustawienie klucza odzyskiwania).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Samo szyfrowanie nie gwarantuje bezpieczeństwa systemu. Więcej informacji na temat działania aplikacji szyfrującej i użycia wspieranych przypadków można znaleźć w dokumentacji.", + "Be aware that encryption always increases the file size." : "Należy pamiętać, że szyfrowanie zawsze zwiększa rozmiar pliku.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Zawsze dobrze jest regularnie wykonywać kopie zapasowe swoich danych. W przypadku szyfrowania upewnij się, aby kopie zapasowe kluczy szyfrowania były wraz z danymi.", + "This is the final warning: Do you really want to enable encryption?" : "To ostatnie ostrzeżenie: Czy na pewno chcesz włączyć szyfrowanie?", + "Enable encryption" : "Włącz szyfrowanie", + "No encryption module loaded, please enable an encryption module in the app menu." : "Moduł szyfrowania nie jest załadowany, należy włączyć moduł szyfrowania w menu aplikacji.", + "Select default encryption module:" : "Wybierz domyślny moduł szyfrowania:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Musisz zmigrować swoje klucze szyfrujące ze starego szyfrowania (ownCloud <= 8.0) do nowego. Włącz \"Domyślny moduł szyfrowania\" i uruchom 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Musisz zmigrować swoje klucze szyfrujące ze starego szyfrowania (ownCloud <= 8.0) do nowego.", + "Start migration" : "Rozpocznij migrację", + "Background jobs" : "Zadania w tle", + "Last job ran %s." : "Ostatnie zadanie wykonano %s.", + "Last job execution ran %s. Something seems wrong." : "Ostatnie zadanie wykonano %s. Coś poszło nie tak.", + "Background job didn’t run yet!" : "Zadanie w tle nie zostało wykonane ani razu!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Dla optymalnej wydajności należy poprawnie skonfigurować zadania w tle. Dla większych instancji zalecane jest użycie usługi 'Cron'. Więcej informacji można znaleźć w dokumentacji.", + "Pick background job setting" : "Wybierz ustawienie zadania w tle", + "Execute one task with each page loaded" : "Wykonuj jedno zadanie wraz z każdą wczytaną stroną", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "Użyj cron.php, który jest zarejestrowany w usłudze webcron, aby wywoływać cron.php co 5 minut przez HTTP.", + "Use system cron service to call the cron.php file every 5 minutes." : "Użyj usługi systemowej cron, aby wywoływać plik cron.php co 5 minut.", + "The cron.php needs to be executed by the system user \"%s\"." : "Cron.php musi zostać wykonywany przez użytkownika systemu \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Dla uruchomienia tego potrzebujesz rozszerzenia PHP POSIX. Zobacz {linkstart}dokumentację PHP{linkend}, aby uzyskać więcej szczegółów.", + "Sharing" : "Udostępnianie", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Jako administrator możesz zoptymalizować ustawienia udostępniania. Szczegółowe informacje znajdziesz w dokumentacji.", + "Allow apps to use the Share API" : "Zezwalaj aplikacjom na korzystanie z API udostępniania", + "Allow users to share via link" : "Zezwalaj użytkownikom na udostępnianie za pośrednictwem linku", + "Allow public uploads" : "Zezwalaj na publiczne wysyłanie", + "Always ask for a password" : "Zawsze pytaj o hasło", + "Enforce password protection" : "Wymuszaj zabezpieczenie hasłem", + "Set default expiration date" : "Ustaw domyślną datę wygaśnięcia", + "Expire after " : "Wygaś po ", + "days" : "dniach", + "Enforce expiration date" : "Wymuszaj datę wygaśnięcia", + "Allow resharing" : "Zezwalaj na ponowne udostępnianie", + "Allow sharing with groups" : "Zezwalaj na udostępnianie grupom", + "Restrict users to only share with users in their groups" : "Ogranicz użytkownikom możliwość udostępniania, pozwól tylko w swoich grupach", + "Exclude groups from sharing" : "Wyklucz grupy z udostępniania", + "These groups will still be able to receive shares, but not to initiate them." : "Grupy te nadal będą mogły otrzymywać udostępnienia, ale nie będą mogły ich tworzyć.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Zezwalaj na automatyczne uzupełnianie nazwy użytkownika w oknie dialogowym udostępniania. Jeśli opcja jest wyłączona, należy podać pełną nazwę użytkownika lub adres e-mail.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Pokaż tekst zastrzeżenia na stronie przesyłania linków publicznych. (Wyświetlane tylko, gdy lista plików jest ukryta).", + "This text will be shown on the public link upload page when the file list is hidden." : "Ten tekst zostanie wyświetlony na stronie przesyłania linków publicznych, gdy lista plików jest ukryta.", + "Default share permissions" : "Domyślne uprawnienia dla udostępnień", + "Personal" : "Osobiste", + "Administration" : "Administracja", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Opracowane przez {communityopen}społeczność Nextcloud{linkclose}, {githubopen}kod źródłowy{linkclose} jest objęty licencją {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Polub nas na Facebook'u", + "Follow us on Twitter" : "Bądź z nami na Twitterze", + "Follow us on Mastodon" : "Bądź z nami na Mastodonie", + "Check out our blog" : "Sprawdź nasz blog", + "Subscribe to our newsletter" : "Subskrybuj nasz newsletter", + "Profile picture" : "Zdjęcie profilowe", + "Upload new" : "Wczytaj nowe", + "Select from Files" : "Wybierz z Plików", + "Remove image" : "Usuń zdjęcie", + "png or jpg, max. 20 MB" : "png lub jpg, maks. 20 MB", + "Picture provided by original account" : "Zdjęcie dostarczone przez oryginalne konto", + "Cancel" : "Anuluj", + "Choose as profile picture" : "Wybierz zdjęcie profilowe", + "Details" : "Szczegóły", + "You are a member of the following groups:" : "Należysz do następujących grup:", + "You are using <strong>%s</strong>" : "Używasz: <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Używasz: <strong>%1$s</strong> z <strong>%2$s</strong> (<strong>%3$s %%</strong>)", + "Full name" : "Pełna nazwa", + "No display name set" : "Brak wyświetlanej nazwy", + "Your email address" : "Twój adres e-mail", + "No email address set" : "Brak adresu e-mail", + "For password reset and notifications" : "Dla powiadomień i resetowania hasła", + "Phone number" : "Numer telefonu", + "Your phone number" : "Twój numer telefonu", + "Address" : "Adres", + "Your postal address" : "Twój adres pocztowy", + "Website" : "Strona internetowa", + "It can take up to 24 hours before the account is displayed as verified." : "Do 24 godzin konto będzie widoczne jako zweryfikowane.", + "Link https://…" : "Link https://…", + "Twitter" : "Twitter", + "Twitter handle @…" : "Twitter @…", + "Help translate" : "Pomóż w tłumaczeniu", + "Locale" : "Region", + "Current password" : "Bieżące hasło", + "Change password" : "Zmień hasło", + "Use a second factor besides your password to increase security for your account." : "Użyj drugiego zabezpieczenia oprócz hasła, aby zwiększyć bezpieczeństwo konta.", + "Disconnect" : "Rozłącz", + "Not supported!" : "Niewspierany!", + "Press ⌘-C to copy." : "Naciśnij ⌘-C, aby skopiować.", + "Press Ctrl-C to copy." : "Naciśnij Ctrl-C, aby skopiować.", + "Error while loading browser sessions and device tokens" : "Błąd podczas ładowania sesji przeglądarki i tokenów urządzenia", + "Store credentials" : "Zapisz poświadczenia", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "Użyj cron.php, który jest zarejestrowany w usłudze webcron, aby wywoływać cron.php co 15 minut przez HTTP.", + "Use system cron service to call the cron.php file every 15 minutes." : "Użyj usługi systemowej cron, aby wywoływać plik cron.php co 15 minut.", + "Follow us on Google+" : "Bądź z nami na Google+" +},"pluralForm" :"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);" +} \ No newline at end of file diff --git a/apps/settings/l10n/pt_BR.js b/apps/settings/l10n/pt_BR.js new file mode 100644 index 00000000000..9a3a0d343fc --- /dev/null +++ b/apps/settings/l10n/pt_BR.js @@ -0,0 +1,823 @@ +OC.L10N.register( + "settings", + { + "{actor} added you to group {group}" : "{actor} adicionou você ao grupo {group}", + "You added {user} to group {group}" : "Você adicionou {user} ao grupo {group}", + "{actor} added {user} to group {group}" : "{actor} adicionou {user} ao grupo {group}", + "An administrator added you to group {group}" : "Um administrador adicionou você ao grupo {group}", + "An administrator added {user} to group {group}" : "Um administrador adicionou {user} ao grupo {group}", + "{actor} removed you from group {group}" : "{actor} removeu você do grupo {group}", + "You removed {user} from group {group}" : "Você removeu {user} do grupo {group}", + "{actor} removed {user} from group {group}" : "{actor} removeu {user} do grupo {group}", + "An administrator removed you from group {group}" : "Um administrador removeu você do grupo {group}", + "An administrator removed {user} from group {group}" : "Um administrador removeu {user} do grupo {group}", + "Your <strong>group memberships</strong> were modified" : "Seus <strong>membros do grupo</strong> foram alterados", + "{actor} changed your password" : "{actor} alterou sua senha", + "You changed your password" : "Você alterou sua senha", + "Your password was reset by an administrator" : "Sua senha foi redefinida pelo administrador", + "{actor} changed your email address" : "{actor} alterou seu endereço de e-mail", + "You changed your email address" : "Você alterou seu e-mail", + "Your email address was changed by an administrator" : "Seu e-mail foi alterado pelo administrador", + "You created app password \"{token}\"" : "Você criou a senha de aplicativo \"{token}\"", + "You deleted app password \"{token}\"" : "Você excluiu a senha de aplicativo \"{token}\"", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Você renomeou a senha do aplicativo \"{token}\" para \"{newToken}\"", + "You granted filesystem access to app password \"{token}\"" : "Você concedeu acesso ao sistema de arquivos para a senha do aplicativo \"{token}\"", + "You revoked filesystem access from app password \"{token}\"" : "Você revogou o acesso ao sistema de arquivos da senha do aplicativo \"{token}\"", + "Security" : "Segurança", + "You successfully logged in using two-factor authentication (%1$s)" : "Você conectou com sucesso usando a autenticação de dois fatores (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "A tentativa de login usando autenticação de dois fatores falhou (%1$s)", + "Remote wipe was started on %1$s" : "Limpeza remota iniciou em %1$s", + "Remote wipe has finished on %1$s" : "Limpeza remota terminou em %1$s", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Sua <strong>senha</strong> ou <strong>e-mail</strong> foram alterados", + "Couldn't remove app." : "Não foi possível excluir aplicativos.", + "Couldn't update app." : "Não foi possível atualizar o aplicativo", + "Wrong password" : "Senha incorreta", + "Saved" : "Salvo", + "No user supplied" : "Nenhum usuário fornecido", + "Unable to change password" : "Não foi possível alterar a senha", + "Authentication error" : "Erro de autenticação", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Por favor, forneça uma senha de recuperação do administrador, caso contrário todos os dados serão perdidos.", + "Wrong admin recovery password. Please check the password and try again." : "Senha de recuperação do administrador incorreta. Verifique a senha e tente novamente.", + "Backend doesn't support password change, but the user's encryption key was updated." : "A plataforma de serviço não suporta alteração de senha mas a chave de criptografia do usuário foi alterada.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "instalando e atualizando aplicativos via loja de aplicativos ou Nuvem Compartilhada Federada", + "Federated Cloud Sharing" : "Compartilhamento de Nuvem Federada", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL está usando uma versão %1$s desatualizada (%2$s). Atualize seu sistema operacional ou recursos como %3$s não funcionarão adequadamente.", + "Invalid SMTP password." : "Senha SMTP incorreta.", + "Email setting test" : "Teste da configuração de e-mail", + "Well done, %s!" : "Bom trabalho %s!", + "If you received this email, the email configuration seems to be correct." : "Se você recebeu este e-mail, é sinal que a configuração do servidor de e-mail está correta.", + "Email could not be sent. Check your mail server log" : "O e-mail não pôde ser enviado. Verifique o log do servidor de e-mail", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Ocorreu um problema ao enviar o e-mail. Por favor, revise suas configurações. (Erro: %s)", + "You need to set your user email before being able to send test emails." : "Você precisa configurar seu e-mail de usuário antes de ser capaz de enviar e-mails de teste.", + "Invalid mail address" : "Endereço de e-mail inválido", + "Settings saved" : "Configurações salvas", + "Unable to change full name" : "Não foi possível alterar o nome completo", + "Unable to change email address" : "Não foi possível alterar o endereço de e-mail", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "A fim de verificar sua conta no Twitter, poste o seguinte tweet no Twitter (certifique-se de postar sem nenhuma quebra de linha):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "A fim de verificar seu Website, armazene o seguinte conteúdo na página raiz em '.well-known/CloudIdVerificationCode.txt' (certifique-se que o texto inteiro esteja em uma só linha):", + "%1$s changed your password on %2$s." : "%1$s mudou sua senha em %2$s.", + "Your password on %s was changed." : "Sua senha em %s foi alterada.", + "Your password on %s was reset by an administrator." : "Sua senha em %s foi redefinida por um administrador.", + "Password for %1$s changed on %2$s" : "Senha para %1$s alterada em %2$s", + "Password changed for %s" : "Senha alterada para %s", + "If you did not request this, please contact an administrator." : "Se você não solicitou isso, por favor contacte o administrador.", + "Your email address on %s was changed." : "Seu e-mail em %s foi alterado.", + "Your email address on %s was changed by an administrator." : "Seu e-mail em %s foi alterado por um administrador.", + "Email address for %1$s changed on %2$s" : "O endereço de e-mail para %1$s foi alterado em %2$s", + "Email address changed for %s" : "E-mail alterado para %s", + "The new email address is %s" : "O novo e-mail é %s", + "Your %s account was created" : "Sua conta %s foi criada", + "Welcome aboard" : "Bem-vindo a bordo", + "Welcome aboard %s" : "%s, bem-vindo a bordo", + "Welcome to your %s account, you can add, protect, and share your data." : "Bem-vindo à sua conta %s. Você pode adicionar, proteger e compartilhar seus dados.", + "Your username is: %s" : "Seu nome de usuário é: %s", + "Set your password" : "Defina sua senha", + "Go to %s" : "Ir para %s", + "Install Client" : "Instalar Cliente", + "Logged in user must be a subadmin" : "Usuário logado deve ser um subadministrador", + "Create" : "Criar", + "Change" : "Alterar", + "Delete" : "Excluir", + "Share" : "Compartilhar", + "Unlimited" : "Ilimitado", + "Verifying" : "Verificando", + "Verifying …" : "Verificando...", + "Verify" : "Verificar", + "Migration in progress. Please wait until the migration is finished" : "Migração em progresso. Por favor, aguarde até esteja finalizada", + "Migration started …" : "Migração iniciada...", + "Not saved" : "Não salvo", + "Sending…" : "Enviando...", + "Email sent" : "E-mail enviado", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Ocorreu um erro. Por favor envie um certificado ASCII-encoded PEM", + "Valid until {date}" : "Válido até {date}", + "Local" : "Local", + "Private" : "Privado", + "Only visible to local users" : "Visível somente para usuários locais", + "Only visible to you" : "Visível somente para você", + "Contacts" : "Contatos", + "Visible to local users and to trusted servers" : "Visível para usuários locais e servidores confiáveis", + "Public" : "Público", + "Will be synced to a global and public address book" : "Será sincronizado com livro de endereços público e global", + "Very weak password" : "Senha muito fraca", + "Weak password" : "Senha fraca", + "So-so password" : "Senha mais ou menos", + "Good password" : "Boa senha", + "Strong password" : "Senha forte", + "An error occurred while changing your language. Please reload the page and try again." : "Ocorreu um erro ao alterar seu idioma. Recarregue a página e tente novamente.", + "An error occurred while changing your locale. Please reload the page and try again." : "Ocorreu um erro ao alterar sua localidade. Rrecarregue a página e tente novamente.", + "Select a profile picture" : "Selecione uma imagem para o perfil", + "Week starts on {fdow}" : "A semana começa em {fdow}", + "Groups" : "Grupos", + "Group list is empty" : "A lista de grupos está vazia", + "Unable to retrieve the group list" : "Não é possível recuperar a lista de grupos", + "Afrikaans (Namibia)" : "Africâner (Namíbia)", + "Afrikaans (South Africa)" : "Africâner (África do Sul)", + "Afrikaans" : "Africâner", + "Akan (Ghana)" : "Akan (Gana)", + "Akan" : "Akan", + "Albanian (Albania)" : "Albanês (Albânia)", + "Albanian" : "Albanês", + "Amharic (Ethiopia)" : "Amárico (Etiópia)", + "Amharic" : "Amárico", + "Arabic (Algeria)" : "Árabe (Algéria)", + "Arabic (Bahrain)" : "Árabe (Barém)", + "Arabic (Egypt)" : "Árabe (Egito)", + "Arabic (Iraq)" : "Árabe (Iraque)", + "Arabic (Jordan)" : "Árabe (Jordânia)", + "Arabic (Kuwait)" : "Árabe (Kuwait)", + "Arabic (Lebanon)" : "Árabe (Líbano)", + "Arabic (Libya)" : "Árabe (Líbia)", + "Arabic (Morocco)" : "Árabe (Marocos)", + "Arabic (Oman)" : "Árabe (Omã)", + "Arabic (Qatar)" : "Árabe (Catar)", + "Arabic (Saudi Arabia)" : "Árabe (Arábia Saudita)", + "Arabic (Sudan)" : "Árabe (Sudão)", + "Arabic (Syria)" : "Árabe (Síria)", + "Arabic (Tunisia)" : "Árabe (Tunísia)", + "Arabic (United Arab Emirates)" : "Árabe (Emirados Árabes Unidos)", + "Arabic (Yemen)" : "Árabe (Iêmen)", + "Arabic" : "Árabe", + "Armenian (Armenia)" : "Armênio (Armênia)", + "Armenian" : "Armênio", + "Assamese (India)" : "Assamês (Índia)", + "Assamese" : "Assamês", + "Asu (Tanzania)" : "Asu (Tanzânia)", + "Asu" : "Asu", + "Azerbaijani (Cyrillic)" : "Azerbaijano (Cirílico)", + "Azerbaijani (Cyrillic, Azerbaijan)" : "Azerbaijano (Cirílico, Azerbaijão)", + "Azerbaijani (Latin)" : "Azerbaijano (Latim)", + "Azerbaijani (Latin, Azerbaijan)" : "Azerbaijano (Latim, Azerbaijão)", + "Azerbaijani" : "Azerbaijanês", + "Bambara (Mali)" : "Bambara (Mali)", + "Bambara" : "Bambara", + "Basque (Spain)" : "Basco (Espanha)", + "Basque" : "Basco", + "Belarusian (Belarus)" : "Bielorrusso (Bielorrússia)", + "Belarusian" : "Bielorrusso", + "Bemba (Zambia)" : "Bemba (Zâmbia)", + "Bemba" : "Bemba", + "Bena (Tanzania)" : "Bena (Tanzânia)", + "Bena" : "Bena", + "Bengali (Bangladesh)" : "Bengali (Bangladesh)", + "Bengali (India)" : "Bengali (Índia)", + "Bengali" : "Bengali", + "Bosnian (Bosnia and Herzegovina)" : "Bósnio (Bósnia e Herzegovina)", + "Bosnian" : "Bósnio", + "Bulgarian (Bulgaria)" : "Búlgaro (Bulgária)", + "Bulgarian" : "Búlgaro", + "Burmese (Myanmar [Burma])" : "Birmanês (Mianmar [Birmânia])", + "Burmese" : "Birmanês", + "Catalan (Spain)" : "Catalão (Espanha)", + "Catalan" : "Catalão", + "Central Morocco Tamazight (Latin)" : "Tamazigue do Atlas Central de Marrocos (Latim)", + "Central Morocco Tamazight (Latin, Morocco)" : "Marrocos Central Tamazight (Latim, Marrocos)", + "Central Morocco Tamazight" : "Tamazight do Marrocos Central", + "Cherokee (United States)" : "Cherokee (Estados Unidos da América)", + "Cherokee" : "Cherokee", + "Chiga (Uganda)" : "Chiga (Uganda)", + "Chiga" : "Chiga", + "Chinese (Simplified Han)" : "Chinês (Simplificado)", + "Chinese (Simplified Han, China)" : "Chinês (Simplificado, China)", + "Chinese (Simplified Han, Hong Kong SAR China)" : "Chinês (Simplificado, Hong Kong SAR China)", + "Chinese (Simplified Han, Macau SAR China)" : "Chinês (Simplificado, Macau SAR China)", + "Chinese (Simplified Han, Singapore)" : "Chinês (Simplificado, Singapore)", + "Chinese (Traditional Han)" : "Chinês (Tradicional)", + "Chinese (Traditional Han, Hong Kong SAR China)" : "Chinês (Traditional, Hong Kong SAR China)", + "Chinese (Traditional Han, Macau SAR China)" : "Chinês (Traditional, Macau SAR China)", + "Chinese (Traditional Han, Taiwan)" : "Chinês (Tradicional, Taiwan)", + "Chinese" : "Chinês", + "Cornish (United Kingdom)" : "Córnico (Reino Unido)", + "Cornish" : "Córnico", + "Croatian (Croatia)" : "Croata (Croácia)", + "Croatian" : "Croata", + "Czech (Czech Republic)" : "Checo (República Checa)", + "Czech" : "Tcheco", + "Danish (Denmark)" : "Dinamarquês (Dinamarca)", + "Danish" : "Dinamarquês", + "Dutch (Belgium)" : "Holandês (Bélgica)", + "Dutch (Netherlands)" : "Holandês (Holanda)", + "Dutch" : "Holandês", + "Embu (Kenya)" : "Embu (Quênia)", + "Embu" : "Embu", + "English (American Samoa)" : "Inglês (Samoa Americana)", + "English (Australia)" : "Inglês (Austrália)", + "English (Belgium)" : "Inglês (Bélgica)", + "English (Belize)" : "Inglês (Belize)", + "English (Botswana)" : "Inglês (Botsuana)", + "English (Canada)" : "Inglês (Canadá)", + "English (Guam)" : "Inglês (Guame)", + "English (Hong Kong SAR China)" : "Inglês (Hong Kong SAR China)", + "English (India)" : "Inglês (Índia)", + "English (Ireland)" : "Inglês (Irlanda)", + "English (Jamaica)" : "Inglês (Jamaica)", + "English (Malta)" : "Inglês (Malta)", + "English (Marshall Islands)" : "Inglês (Ilhas Marshall)", + "English (Mauritius)" : "Inglês (Maurícia)", + "English (Namibia)" : "Inglês (Namíbia)", + "English (New Zealand)" : "Inglês (Nova Zelândia)", + "English (Northern Mariana Islands)" : "Inglês (Ilhas Marianas do Norte)", + "English (Pakistan)" : "Inglês (Paquistão)", + "English (Philippines)" : "Inglês (Filipinas)", + "English (Singapore)" : "Inglês (Singapura)", + "English (South Africa)" : "Inglês (África do Sul)", + "English (Trinidad and Tobago)" : "Inglês (Trinidad e Tobago)", + "English (U.S. Minor Outlying Islands)" : "Inglês (Ilhas Menores Distantes dos EUA)", + "English (U.S. Virgin Islands)" : "Inglês (Ilhas Virgens Americanas)", + "English (United Kingdom)" : "Inglês (Reino Unido)", + "English (United States)" : "Inglês (Estados Unidos da América)", + "English (Zimbabwe)" : "Inglês (Zimbábue)", + "English" : "Inglês", + "Esperanto" : "Esperanto", + "Estonian (Estonia)" : "Estoniano (Estônia)", + "Estonian" : "Estoniano", + "Ewe (Ghana)" : "Ewe (Gana)", + "Ewe (Togo)" : "Ewe (Togo)", + "Ewe" : "Ewe", + "Faroese (Faroe Islands)" : "Feroesa (Ilhas Feroé)", + "Faroese" : "Feroês", + "Filipino (Philippines)" : "Filipino (Filipinas)", + "Filipino" : "Filipino", + "Finnish (Finland)" : "Finlandês (Finlândia)", + "Finnish" : "Finlandês", + "French (Belgium)" : "Francês (Bélgica)", + "French (Benin)" : "Francês (Benin)", + "French (Burkina Faso)" : "Francês (Burkina Faso)", + "French (Burundi)" : "Francês (Burundi)", + "French (Cameroon)" : "Francês (Camarões)", + "French (Canada)" : "Francês (Canadá)", + "French (Central African Republic)" : "Francês (República da África Central)", + "French (Chad)" : "Francês (Chade)", + "French (Comoros)" : "Francês (Camarões)", + "French (Congo - Brazzaville)" : "Francês (Congo - Brazzavile)", + "French (Congo - Kinshasa)" : "Francês (Congo - Kinshasa)", + "French (Côte d’Ivoire)" : "Francês (Costa do Marfim)", + "French (Djibouti)" : "Francês (Djibuti)", + "French (Equatorial Guinea)" : "Francês (Guiné Equatorial)", + "French (France)" : "Francês (França)", + "French (Gabon)" : "Francês (Gabão)", + "French (Guadeloupe)" : "Francês (Guadalupe)", + "French (Guinea)" : "Francês (Guiné)", + "French (Luxembourg)" : "Francês (Luxemburgo)", + "French (Madagascar)" : "Francês (Madagascar)", + "French (Mali)" : "Francês (Mali)", + "French (Martinique)" : "Francês (Martinica)", + "French (Monaco)" : "Francês (Mônaco)", + "French (Niger)" : "Francês (Nigéria)", + "French (Rwanda)" : "Francês (Ruanda)", + "French (Réunion)" : "Francês (Reunião)", + "French (Saint Barthélemy)" : "Francês (São Bartolomeu)", + "French (Saint Martin)" : "Francês (San Martin)", + "French (Senegal)" : "França (Senegal)", + "French (Switzerland)" : "Francês (Suíça)", + "French (Togo)" : "Francês (Togo)", + "French" : "Francês", + "Fulah (Senegal)" : "Fula (Senegal)", + "Fulah" : "Fula", + "Galician (Spain)" : "Galego (Espanha)", + "Galician" : "Galego", + "Ganda (Uganda)" : "Ganda (Uganda)", + "Ganda" : "Ganda", + "Georgian (Georgia)" : "Georgiano (Geórgia)", + "Georgian" : "Georgiano", + "German (Austria)" : "Alemão (Áustria)", + "German (Belgium)" : "Alemão (Bélgica)", + "German (Germany)" : "Alemão (Alemanha)", + "German (Liechtenstein)" : "Alemão (Liechtenstein)", + "German (Luxembourg)" : "Alemão (Luxemburgo)", + "German (Switzerland)" : "Alemão (Suíça)", + "German" : "Alemão", + "Greek (Cyprus)" : "Grego (Chipre)", + "Greek (Greece)" : "Grego (Grécia)", + "Greek" : "Grego", + "Gujarati (India)" : "Guzerate (Índia)", + "Gujarati" : "Guzerate", + "Gusii (Kenya)" : "Gusii (Quênia)", + "Gusii" : "Gusii", + "Hausa (Latin)" : "Hauçá (Latim)", + "Hausa (Latin, Ghana)" : "Hauçá (Latim, Gana)", + "Hausa (Latin, Niger)" : "Hauçá (Latim, Nígeria)", + "Hausa (Latin, Nigeria)" : "Hauçá (Latim, Nigéria)", + "Hausa" : "Hauçá", + "Hawaiian (United States)" : "Havaiano (Estados Unidos da América)", + "Hawaiian" : "Havaiano", + "Hebrew (Israel)" : "Hebraico (Israel)", + "Hebrew" : "Hebraico", + "Hindi (India)" : "Hindi (Índia)", + "Hindi" : "Hindi", + "Hungarian (Hungary)" : "Húngaro (Hungria)", + "Hungarian" : "Húngaro", + "Icelandic (Iceland)" : "Islandês (Islândia)", + "Icelandic" : "Islandês", + "Igbo (Nigeria)" : "Igbo (Nigéria)", + "Igbo" : "Igbo", + "Indonesian (Indonesia)" : "Indonésio (Indonésia)", + "Indonesian" : "Indonésio", + "Irish (Ireland)" : "Irlandês (Irlanda)", + "Irish" : "Irlandês", + "Italian (Italy)" : "Italiano (Itália)", + "Italian (Switzerland)" : "Italiano (Suíça)", + "Italian" : "Italiano", + "Japanese (Japan)" : "Japonês (Japão)", + "Japanese" : "Japonês", + "Kabuverdianu (Cape Verde)" : "Português (Cabo Verde)", + "Kabuverdianu" : "Português", + "Kabyle (Algeria)" : "Cabila (Argélia)", + "Kabyle" : "Cabila", + "Kalaallisut (Greenland)" : "Groenlandês (Groenlândia)", + "Kalaallisut" : "Groenlandês", + "Kalenjin (Kenya)" : "Kalenjin (Quênia)", + "Kalenjin" : "Kalenjin", + "Kamba (Kenya)" : "Quicamba (Quênia)", + "Kamba" : "Quicamba", + "Kannada (India)" : "Canarim (Índia)", + "Kannada" : "Canarim", + "Kazakh (Cyrillic)" : "Cazaque (Cirílico)", + "Kazakh (Cyrillic, Kazakhstan)" : "Cazaque (Cirílico, Cazaquistão)", + "Kazakh" : "Cazaque", + "Khmer (Cambodia)" : "Khmer (Camboja)", + "Khmer" : "Kmer", + "Kikuyu (Kenya)" : "Quicuio (Quênia)", + "Kikuyu" : "Quicuio", + "Kinyarwanda (Rwanda)" : "Quiniaruanda (Ruanda)", + "Kinyarwanda" : "Quiniaruanda", + "Konkani (India)" : "Concani (Índia)", + "Konkani" : "Concani", + "Korean (South Korea)" : "Coreano (Coreia do Sul)", + "Korean" : "Coreano", + "Koyra Chiini (Mali)" : "Koyra Chiini (Mali)", + "Koyra Chiini" : "Koyra Chiini", + "Koyraboro Senni (Mali)" : "Koyraboro Senni (Mali)", + "Koyraboro Senni" : "Koyraboro Senni", + "Langi (Tanzania)" : "Langi (Tanzânia)", + "Langi" : "Langu", + "Latvian (Latvia)" : "Letão (Letônia)", + "Latvian" : "Letão", + "Lithuanian (Lithuania)" : "Lituano (Lituânia)", + "Lithuanian" : "Lituano", + "Luo (Kenya)" : "Luo (Quênia)", + "Luo" : "Luo", + "Luyia (Kenya)" : "Luia (Quênia)", + "Luyia" : "Luia", + "Macedonian (Macedonia)" : "Macedônio (Macedônia)", + "Macedonian" : "Macedônio", + "Machame (Tanzania)" : "Machame (Tanzânia)", + "Machame" : "Machame", + "Makonde (Tanzania)" : "Maconde (Tanzânia)", + "Makonde" : "Maconde", + "Malagasy (Madagascar)" : "Malgaxe (Madagascar)", + "Malagasy" : "Malgaxe", + "Malay (Brunei)" : "Malaio (Brunei)", + "Malay (Malaysia)" : "Malaio (Malásia)", + "Malay" : "Malaio", + "Malayalam (India)" : "Malaiala (India)", + "Malayalam" : "Malaiala", + "Maltese (Malta)" : "Maltês (Malta)", + "Maltese" : "Maltês", + "Manx (United Kingdom)" : "Manês (Reino Unido)", + "Manx" : "Manês", + "Marathi (India)" : "Marata (Índia)", + "Marathi" : "Marati", + "Masai (Kenya)" : "Massai (Quênia)", + "Masai (Tanzania)" : "Massai (Tanzânia)", + "Masai" : "Massai", + "Meru (Kenya)" : "Meru (Quênia)", + "Meru" : "Meru", + "Morisyen (Mauritius)" : "Crioulo Mauritânio (Maurícia)", + "Morisyen" : "Crioulo Mauritânio", + "Nama (Namibia)" : "Nama (Namíbia)", + "Nama" : "Nama", + "Nepali (India)" : "Nepalês (Índia)", + "Nepali (Nepal)" : "Nepalês (Nepal)", + "Nepali" : "Nepalês", + "North Ndebele (Zimbabwe)" : "Sindebele (Zimbábue)", + "North Ndebele" : "Sindebele", + "Norwegian Bokmål (Norway)" : "Norueguês Bokmål (Noruega)", + "Norwegian Bokmål" : "Bokmål Norueguês", + "Norwegian Nynorsk (Norway)" : "Novo Norueguês (Noruega)", + "Norwegian Nynorsk" : "Nynorsk Norueguês", + "Nyankole (Uganda)" : "Nyankole (Uganda)", + "Nyankole" : "Nyankole", + "Oriya (India)" : "Oria (Índia)", + "Oriya" : "Oria", + "Oromo (Ethiopia)" : "Oromo (Etiópia)", + "Oromo (Kenya)" : "Oromo (Quênia)", + "Oromo" : "Oromo", + "Pashto (Afghanistan)" : "Pachto (Afeganistão)", + "Pashto" : "Pachto", + "Persian (Afghanistan)" : "Persa (Afeganistão)", + "Persian (Iran)" : "Persa (Irã)", + "Persian" : "Persa", + "Polish (Poland)" : "Polonês (Polônia)", + "Polish" : "Polonês", + "Portuguese (Brazil)" : "Português (Brasil)", + "Portuguese (Guinea-Bissau)" : "Português (Guiné-Bissau)", + "Portuguese (Mozambique)" : "Português (Moçambique)", + "Portuguese (Portugal)" : "Português (Portugal)", + "Portuguese" : "Português", + "Punjabi (Arabic)" : "Panjábi (Árabe)", + "Punjabi (Arabic, Pakistan)" : "Panjábi (Árabe, Paquistão)", + "Punjabi (Gurmukhi)" : "Panjábi (Gurmukhi)", + "Punjabi (Gurmukhi, India)" : "Panjábi (Gurmukhi, Índia)", + "Punjabi" : "Panjábi", + "Romanian (Moldova)" : "Romeno (Moldávia)", + "Romanian (Romania)" : "Romeno (Romênia)", + "Romanian" : "Romeno", + "Romansh (Switzerland)" : "Romanche (Suíça)", + "Romansh" : "Romanche", + "Rombo (Tanzania)" : "Rombo (Tanzânia)", + "Rombo" : "Rombo", + "Russian (Moldova)" : "Russo (Moldávia)", + "Russian (Russia)" : "Russo (Rússia)", + "Russian (Ukraine)" : "Russo (Ucrânia)", + "Russian" : "Russo", + "Rwa (Tanzania)" : "Rwa (Tanzânia)", + "Rwa" : "Rwa", + "Samburu (Kenya)" : "Samburu (Quênia)", + "Samburu" : "Samburu", + "Sango (Central African Republic)" : "Sango (República Centro-Africana)", + "Sango" : "Sango", + "Sena (Mozambique)" : "Sena (Moçambique)", + "Sena" : "Sena", + "Serbian (Cyrillic)" : "Sérvio (Cirílico)", + "Serbian (Cyrillic, Bosnia and Herzegovina)" : "Sérvio (Cirílico, Bósnia e Herzegovina)", + "Serbian (Cyrillic, Montenegro)" : "Sérvio (Cirílico, Montenegro)", + "Serbian (Cyrillic, Serbia)" : "Sérvio (Cirílico, Sérvia)", + "Serbian (Latin)" : "Sérvio (Latim)", + "Serbian (Latin, Bosnia and Herzegovina)" : "Sérvio (Latim, Bósnia e Herzegovina)", + "Serbian (Latin, Montenegro)" : "Sérvio (Latim, Montenegro)", + "Serbian (Latin, Serbia)" : "Sérvio (Latim, Sérvia)", + "Serbian" : "Sérvio", + "Shona (Zimbabwe)" : "Xona (Zimbábue)", + "Shona" : "Xona", + "Sichuan Yi (China)" : "Sichuan Yi (China)", + "Sichuan Yi" : "Sichuan Yi", + "Sinhala (Sri Lanka)" : "Cingalês (Sri Lanka)", + "Sinhala" : "Cingalês", + "Slovak (Slovakia)" : "Eslovaco (Eslováquia)", + "Slovak" : "Eslovaco", + "Slovenian (Slovenia)" : "Esloveno (Eslovênia)", + "Slovenian" : "Esloveno", + "Soga (Uganda)" : "Soga (Uganda)", + "Soga" : "Soga", + "Somali (Djibouti)" : "Somali (Djibuti)", + "Somali (Ethiopia)" : "Somali (Etiópia)", + "Somali (Kenya)" : "Somali (Quênia)", + "Somali (Somalia)" : "Somali (Somália)", + "Somali" : "Somali", + "Spanish (Argentina)" : "Espanhol (Argentina)", + "Spanish (Bolivia)" : "Espanhol (Bolívia)", + "Spanish (Chile)" : "Espanhol (Chile)", + "Spanish (Colombia)" : "Espanhol (Colômbia)", + "Spanish (Costa Rica)" : "Espanhol (Costa Rica)", + "Spanish (Dominican Republic)" : "Espanhol (República Dominicana)", + "Spanish (Ecuador)" : "Espanhol (Equador)", + "Spanish (El Salvador)" : "Espanhol (El Salvador)", + "Spanish (Equatorial Guinea)" : "Espanhol (Guiné Equatorial)", + "Spanish (Guatemala)" : "Espanhol (Guatemala)", + "Spanish (Honduras)" : "Espanhol (Honduras)", + "Spanish (Latin America)" : "Espanhol (América Latina)", + "Spanish (Mexico)" : "Espanhol (Mexico)", + "Spanish (Nicaragua)" : "Espanhol (Nicarágua)", + "Spanish (Panama)" : "Espanhol (Panamá)", + "Spanish (Paraguay)" : "Espanhol (Paraguay)", + "Spanish (Peru)" : "Espanhol (Peru)", + "Spanish (Puerto Rico)" : "Espanhol (Porto Rico)", + "Spanish (Spain)" : "Espanhol (Espanha)", + "Spanish (United States)" : "Espanhol (Estados Unidos da América)", + "Spanish (Uruguay)" : "Espanhol (Uruguai)", + "Spanish (Venezuela)" : "Espanhol (Venezuela)", + "Spanish" : "Espanhol", + "Swahili (Kenya)" : "Suaíli (Quênia)", + "Swahili (Tanzania)" : "Suaíli (Tanzânia)", + "Swahili" : "Suaíli", + "Swedish (Finland)" : "Sueco (Finlândia)", + "Swedish (Sweden)" : "Sueco (Suécia)", + "Swedish" : "Sueco", + "Swiss German (Switzerland)" : "Alemão Suíço (Suíça)", + "Swiss German" : "Suíço Alemão", + "Tachelhit (Latin)" : "Tachelhit (Latim)", + "Tachelhit (Latin, Morocco)" : "tachelhit (Latim, Marrocos)", + "Tachelhit (Tifinagh)" : "Tachelhit (Tifinagh)", + "Tachelhit (Tifinagh, Morocco)" : "Tachelhit (Tifinague, Marrocos)", + "Tachelhit" : "Tachelhit", + "Taita (Kenya)" : "Taita (Quênia)", + "Taita" : "Taita", + "Tamil (India)" : "Tâmil (Índia)", + "Tamil (Sri Lanka)" : "Tâmil (Sri Lanka)", + "Tamil" : "Tâmil", + "Telugu (India)" : "Telugo (Índia)", + "Telugu" : "Télugo", + "Teso (Kenya)" : "Teso (Quênia)", + "Teso (Uganda)" : "Teso (Uganda)", + "Teso" : "Teso", + "Thai (Thailand)" : "Tailandês (Tailândia)", + "Thai" : "Tailandês", + "Tibetan (China)" : "Tibetano (China)", + "Tibetan (India)" : "Tibetano (Índia)", + "Tibetan" : "Tibetano", + "Tigrinya (Eritrea)" : "Tigrínia (Eritreia)", + "Tigrinya (Ethiopia)" : "Tigrínia (Etiópia)", + "Tigrinya" : "Tigrínia", + "Tonga (Tonga)" : "Tonganês (Tonga)", + "Tonga" : "Tonganês", + "Turkish (Turkey)" : "Turco (Turquia)", + "Turkish" : "Turco", + "Ukrainian (Ukraine)" : "Ucraniano (Ucrânia)", + "Ukrainian" : "Ucraniano", + "Urdu (India)" : "Urdu (Índia)", + "Urdu (Pakistan)" : "Urdu (Paquistão)", + "Urdu" : "Urdu", + "Uzbek (Arabic)" : "Uzbeque (Árabe)", + "Uzbek (Arabic, Afghanistan)" : "Uzbeque (Árabe, Afeganistão)", + "Uzbek (Cyrillic)" : "Uzbeque (Cirílico)", + "Uzbek (Cyrillic, Uzbekistan)" : "Uzbeque (Cirílico, Uzbequistão)", + "Uzbek (Latin)" : "Usbeque (Latim)", + "Uzbek (Latin, Uzbekistan)" : "Uzbeque (Latim, Uzbequistão)", + "Uzbek" : "Uzbeque", + "Vietnamese (Vietnam)" : "Vietnamita (Vietnã)", + "Vietnamese" : "Vietnamita", + "Vunjo (Tanzania)" : "Vunjo (Tanzânia)", + "Vunjo" : "Vunjo", + "Welsh (United Kingdom)" : "Galês (Reino Unido)", + "Welsh" : "Galês", + "Yoruba (Nigeria)" : "Ioruba (Nigéria)", + "Yoruba" : "Ioruba", + "Zulu (South Africa)" : "Zulu (África do Sul)", + "Zulu" : "Zulu", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Autenticação de dois fatores pode ser aplicada para todos\tos usuários e grupos específicos. Se eles não tiverem um provedor de dois fatores configurado, eles não poderão efetuar login no sistema.", + "Enforce two-factor authentication" : "Aplicar autenticação de dois fatores", + "Limit to groups" : "Limitado a grupos", + "Enforcement of two-factor authentication can be set for certain groups only." : "A obrigatoriedade da autenticação de dois fatores pode ser definida para determinados grupos apenas.", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "A autenticação de dois fatores é obrigatória a todos\tmembros dos seguintes grupos.", + "Enforced groups" : "Grupos obrigatórios", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "A autenticação de dois fatores não é aplicada para\tmembros dos seguintes grupos.", + "Excluded groups" : "Grupos excluídos", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "Quando grupos são selecionados/excluídos, eles usam a seguinte lógica para determinar se um usuário tem 2FA forçado: Se nenhum grupo for selecionado, 2FA será habilitado para todos, exceto membros dos grupos excluídos. Se grupos são selecionados, 2FA é ativado para todos os membros deles. Se um usuário estiver em um grupo selecionado e excluído, o selecionado terá precedência e o 2FA será forçado.", + "Save changes" : "Salvar mudanças", + "Marked for remote wipe" : "Marcado para limpeza remota", + "Device settings" : "Configuração dos dispositivos", + "Allow filesystem access" : "Permitir acesso ao sistema de arquivos", + "Rename" : "Renomear", + "Revoke" : "Revogar", + "Wipe device" : "Limpar o dispositivo", + "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "A revogação desse token pode impedir a limpeza do seu dispositivo, caso ainda não a tenha iniciado.", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome para Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Aplicativo iOS Nextcloud", + "Nextcloud Android app" : "Aplicativo Android Nextcloud", + "Nextcloud Talk for iOS" : "Nextcloud Talk para iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk para Android", + "Sync client - {os}" : "Sincronizar cliente - {os}", + "This session" : "Esta sessão", + "Device" : "Dispositivo", + "Last activity" : "Última atividade", + "Devices & sessions" : "Dispositivos & sessões", + "Web, desktop and mobile clients currently logged in to your account." : "Clientes web, desktop e móvel que estão conectados à sua conta.", + "Do you really want to wipe your data from this device?" : "Quer realmente limpar seus dados deste dispositivo?", + "Confirm wipe" : "Confirmar a limpeza", + "Error while creating device token" : "Erro ao criar token de dispositivo", + "Error while updating device token scope" : "Erro ao atualizar o escopo do token do dispositivo", + "Error while updating device token name" : "Erro ao atualizar o nome do token do dispositivo", + "Error while deleting the token" : "Erro ao excluir o token", + "Error while wiping the device with the token" : "Erro ao limpar o dispositivo com o token", + "App name" : "Nome do aplicativo", + "Create new app password" : "Criar nova senha de aplicativo", + "Use the credentials below to configure your app or device." : "Use as credenciais abaixo para configurar seu aplicativo ou dispositivo.", + "For security reasons this password will only be shown once." : "Por motivo de segurança, esta senha só será exibida uma vez.", + "Username" : "Nome de Usuário", + "Password" : "Senha", + "Done" : "Concluído", + "Show QR code for mobile apps" : "Exibir código QR para aplicativos móveis", + "Copied!" : "Copiado!", + "Copy" : "Copiar", + "Could not copy app password. Please copy it manually." : "Não foi possível copiar a senha do aplicativo. Copie-a manualmente.", + "This app is supported via your current Nextcloud subscription." : "Este aplicativo é suportado pela sua assinatura atual do Nextcloud.", + "Supported" : "Suportado", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Os aplicativos oficiais são desenvolvidos pela comunidade e dentro dela. Eles oferecem funcionalidades centrais e estão prontos para uso em produção.", + "Official" : "Oficial", + "by" : "por", + "Update to {version}" : "Atualizar para {version}", + "Remove" : "Excluir", + "Disable" : "Desativar", + "All" : "Todos", + "Limit app usage to groups" : "Limitar o uso de aplicativos a grupos", + "No results" : "Sem resultados", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Este aplicativo não possui uma versão mínima atribuída para uso no Nextcloud. Isto poderá se converter em um erro no futuro.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Este aplicativo não possui uma versão máxima atribuida para uso no Nextcloud. Isto poderá se converter em um erro no futuro.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Este aplicativo não pode ser instalado pois as seguintes dependências não forão cumpridas:", + "View in store" : "Ver na loja", + "Visit website" : "Visitar website", + "Report a bug" : "Reportar um erro", + "User documentation" : "Documentação do usuário", + "Admin documentation" : "Documentação do administrador", + "Developer documentation" : "Documentação do desenvolvedor", + "Update to {update}" : "Atualizar para {update}", + "Results from other categories" : "Resultados de outras categorias", + "No apps found for your version" : "Nenhum aplicativo encontrado para a sua versão", + "Disable all" : "Desativar tudo", + "Enable all" : "Ativar tudo", + "Download and enable" : "Baixar e ativar", + "Enable" : "Ativar", + "Enable untested app" : "Ativar aplicativo não testado", + "The app will be downloaded from the app store" : "O aplicativo será baixado da loja de aplicativos", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Este aplicativo não está marcado como compatível com sua versão do Nextcloud. Se você continuar, ainda poderá instalar o aplicativo mas poderá não funcionar como esperado.", + "You do not have permissions to see the details of this user" : "Você não tem permissão para ver os detalhes deste usuário", + "The backend does not support changing the display name" : "O backend não suporta a alteração do nome de exibição", + "New password" : "Nova senha", + "Add user in group" : "Adicionar o usuário no grupo", + "Set user as admin for" : "Definir o usuário como administrador para", + "Select user quota" : "Selecionar a cota de usuário", + "No language set" : "Nenhum conjunto de idiomas", + "Never" : "Nunca", + "Delete user" : "Excluir usuário", + "Wipe all devices" : "Limpar todos os dispositivos", + "Disable user" : "Desativar usuário", + "Enable user" : "Ativar usuário", + "Resend welcome email" : "Reenviar e-mail de boas-vindas", + "{size} used" : "{size} usado", + "Welcome mail sent!" : "E-mail de boas-vindas enviado!", + "Display name" : "Exibir nome", + "Email" : "E-mail", + "Group admin for" : "Grupo administrativo para", + "Quota" : "Cota", + "Language" : "Idioma", + "Storage location" : "Local do armazenamento", + "User backend" : "Plataforma de serviço de usuário", + "Last login" : "Último acesso", + "Will be autogenerated" : "Será autogerado", + "Default language" : "Idioma padrão", + "Add a new user" : "Adicione um novo usuário", + "No users in here" : "Nenhum usuário aqui", + "Default quota" : "Cota padrão", + "Password change is disabled because the master key is disabled" : "A alteração de senha está desativada porque a chave mestra está desativada", + "Common languages" : "Idiomas comuns", + "All languages" : "Todos os idiomas", + "Your apps" : "Seus aplicativos", + "Active apps" : "Aplicativos ativados", + "Disabled apps" : "Aplicativos desativados", + "Updates" : "Atualizações", + "App bundles" : "Pacotes de aplicativos", + "{license}-licensed" : "{license}-licenciado", + "New user" : "Novo usuário", + "Default quota:" : "Cota padrão:", + "Select default quota" : "Selecionar a cota padrão", + "Show Languages" : "Exibir idiomas", + "Show last login" : "Exibir último login", + "Show user backend" : "Exibir plataforma de serviço de usuário", + "Show storage path" : "Exibir caminho de armazenamento", + "You are about to remove the group {group}. The users will NOT be deleted." : "Você está prestes a excluir o grupo {group}. Os usuários NÃO serão excluídos.", + "Please confirm the group removal " : "Confirme a remoção do grupo", + "Remove group" : "Excluir grupo", + "Admins" : "Administradores", + "Disabled users" : "Desativar usuários", + "Everyone" : "Para todos", + "Add group" : "Adicionar grupo", + "An error occured during the request. Unable to proceed." : "Ocorreu um erro durante a requisição. Impossível continuar.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "O aplicativo foi ativado, mas precisa ser atualizado. Você será redirecionado para a página de atualização em 5 segundos.", + "App update" : "Atualizar aplicativo", + "Error: This app can not be enabled because it makes the server unstable" : "Erro: Este aplicativo não pode ser ativado porque torna o servidor instável", + "SSL Root Certificates" : "Certificados Raiz SSL", + "Common Name" : "Nome comum", + "Valid until" : "Válido até", + "Issued By" : "Emitido por", + "Valid until %s" : "Válido até %s", + "Import root certificate" : "Importar certificado raiz", + "Administrator documentation" : "Documentação do administrador", + "Documentation" : "Documentação", + "Forum" : "Fórum", + "None" : "Nenhuma", + "Login" : "Login", + "Plain" : "Plano", + "NT LAN Manager" : "Gerenciador NT LAN", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Servidor de e-mail", + "Open documentation" : "Abrir documentação", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "É importante configurar este servidor para poder enviar e-mails para redefinir a senha e notificações.", + "Send mode" : "Modo de envio", + "Encryption" : "Criptografia", + "Sendmail mode" : "Modo do sendmail", + "From address" : "Endereço \"From\"", + "mail" : "e-mail", + "Authentication method" : "Método de autenticação", + "Authentication required" : "Autenticação é requerida", + "Server address" : "Endereço do servidor", + "Port" : "Porto", + "Credentials" : "Credenciais", + "SMTP Username" : "Nome do Usuário SMTP", + "SMTP Password" : "Senha SMTP", + "Save" : "Salvar", + "Test email settings" : "Configurações do e-mail de teste", + "Send email" : "Enviar e-mail", + "Security & setup warnings" : "Segurança & avisos de configuração", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "É importante para a segurança e desempenho da sua instalação que tudo esteja configurado corretamente. Para ajudá-lo com isso, estamos fazendo algumas verificações automáticas. Por favor, consulte a documentação para mais informações.", + "All checks passed." : "Todas as verificações passaram.", + "There are some errors regarding your setup." : "Existem alguns erros na configuração.", + "There are some warnings regarding your setup." : "Existem alguns avisos na configuração.", + "Checking for system and security issues." : "Verificando problemas de sistema e segurança.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Verifique novamente os <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">manuais de instalação ↗</a> e procure por erros ou avisos no <a href=\"%2$s\">log</a>.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Verifique a segurança do seu Nextcloud em <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">nossa verificação de segurança ↗</a>.", + "Version" : "Versão", + "Two-Factor Authentication" : "Autenticação de Dois Fatores", + "Server-side encryption" : "Criptografia do lado do servidor", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "A criptografia do lado do servidor torna possível criptografar arquivos que são carregados para este servidor. Isso diminui um pouco o desempenho portanto habilite apenas se necessário.", + "Enable server-side encryption" : "Ativar a criptografia do lado do servidor", + "Please read carefully before activating server-side encryption: " : "Por favor, leia com atenção antes de ativar a criptografia do lado do servidor:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Uma vez que a criptografia é ativada, todos os arquivos enviados ao servidor a partir desse ponto em diante serão criptografados e assim ficarão no servidor. Só será possível desativar a criptografia em uma data posterior se o módulo de criptografia ativo suportar essa função e todas as pré-condições sejam cumpridas (ex., defininindo uma chave de recuperação).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Criptografia por si só não garante a segurança do sistema. Por favor, veja a documentação para mais informações sobe como o aplicativo de criptografia funciona e os casos de uso suportados.", + "Be aware that encryption always increases the file size." : "Esteja ciente de que a criptografia sempre aumenta o tamanho do arquivo.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "É sempre bom criar backups regulares dos seus dados. No caso de criptografia, certifique-se de fazer backup das chaves de criptografia juntamente com os seus dados.", + "This is the final warning: Do you really want to enable encryption?" : "Este é o aviso final: Você realmente quer ativar a criptografia?", + "Enable encryption" : "Ativar criptografia", + "No encryption module loaded, please enable an encryption module in the app menu." : "Nenhum módulo de criptografia carregado. Por favor, ative um deles no menu de aplicativos.", + "Select default encryption module:" : "Selecione o módulo de criptografia padrão:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Você precisa migrar suas chaves de criptografia da antiga criptografia (ownCloud <= 8,0) para a nova. Por favor, ative o \"Módulo de criptografia padrão\" e execute 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Você precisa migrar suas chaves de criptografia a partir da antiga criptografia (ownCloud <= 8,0) para a nova.", + "Start migration" : "Iniciar migração", + "Background jobs" : "Tarefas em segundo plano", + "Last job ran %s." : "Última tarefa rodou há %s.", + "Last job execution ran %s. Something seems wrong." : "Última tarefa rodou há %s. Algo parece errado.", + "Background job didn’t run yet!" : "O job em segundo plano ainda não rodou!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para um desempenho ideal, é importante configurar corretamente os trabalhos em segundo plano. Para instâncias maiores, 'Cron' é a configuração recomendada. Consulte a documentação para obter mais informações.", + "Pick background job setting" : "Configuração de trabalhos em segundo plano", + "Execute one task with each page loaded" : "Execute uma tarefa com cada página carregada", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "O cron.php está registrado num webcron para chamar cron.php a cada 5 minutos em HTTP.", + "Use system cron service to call the cron.php file every 5 minutes." : "Use o serviço cron do sistema para chamar o arquivo cron.php a cada 5 minutos.", + "The cron.php needs to be executed by the system user \"%s\"." : "O cron.php precisa ser executado pelo usuário de sistema \"%s\"", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para executar isso, você precisa da extensão PHP POSIX. Veja a {linkstart} documentação do PHP {linkend} para mais detalhes.", + "Sharing" : "Compartilhamento", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, você pode ajustar o comportamento dos compartilhamentos. Consulte a documentação para obter mais informações.", + "Allow apps to use the Share API" : "Permitir que aplicativos usem a API de compartilhamento", + "Allow users to share via link" : "Permitir que os usuários compartilhem por link", + "Allow public uploads" : "Permitir envio público", + "Always ask for a password" : "Sempre pedir a senha", + "Enforce password protection" : "Reforce a proteção por senha", + "Set default expiration date" : "Configurar a data de expiração", + "Expire after " : "Expirar depois de", + "days" : "dias", + "Enforce expiration date" : "Fazer cumprir a data de expiração", + "Allow resharing" : "Permitir o recompartilhamento", + "Allow sharing with groups" : "Permitir o compartilhamento com grupos", + "Restrict users to only share with users in their groups" : "Restringir os usuários a compartilhar somente com os usuários em seus grupos", + "Exclude groups from sharing" : "Excluir grupos do compartilhamento", + "These groups will still be able to receive shares, but not to initiate them." : "Esses grupos ainda serão capazes de receber compartilhamentos, mas não iniciá-los.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Permitir autocompletar o nome do usuário na tela de compartilhamento. Se desabilitado, o nome completo ou e-mail deverá ser digitado.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Exibir o texto de aviso na página pública do link de envio (só é mostrado quando a lista de arquivos está oculta).", + "This text will be shown on the public link upload page when the file list is hidden." : "Este texto será mostrado na página de envio do link público quando a lista de arquivos está oculta.", + "Default share permissions" : "Permissões padrão de compartilhamento", + "Personal" : "Pessoal", + "Administration" : "Administração", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Desenvolvido pela {communityopen}comunidade Nextcloud{linkclose}. O {githubopen}código-fonte{linkclose} é licenciado sob a {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Curta nossa página no Facebook", + "Follow us on Twitter" : "Siga-nos no Twitter", + "Follow us on Mastodon" : "Siga-nos no Mastodon", + "Check out our blog" : "Confira nosso blog", + "Subscribe to our newsletter" : "Assine nosso boletim informativo", + "Profile picture" : "Imagem para o perfil", + "Upload new" : "Enviar novo", + "Select from Files" : "Selecionar de Arquivos", + "Remove image" : "Remover imagem", + "png or jpg, max. 20 MB" : "png ou jpg, max. 20 MB", + "Picture provided by original account" : "Imagem fornecida pela conta original", + "Cancel" : "Cancelar", + "Choose as profile picture" : "Escolha como imagem de perfil", + "Details" : "Detalhes", + "You are a member of the following groups:" : "Você é membro dos seguintes grupos:", + "You are using <strong>%s</strong>" : "Você está usando <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Você está usando <strong>%1$s</strong> de <strong>%2$s</strong> (<strong>%3$s %%</strong>)", + "Full name" : "Nome completo", + "No display name set" : "Nenhum nome de exibição definido", + "Your email address" : "Seu endereço de e-mail", + "No email address set" : "Nenhum endereço de e-mail foi configurado", + "For password reset and notifications" : "Para redefinição de senha e notificações", + "Phone number" : "Número de telefone", + "Your phone number" : "Seu número de telefone", + "Address" : "Endereço", + "Your postal address" : "Seu endereço postal", + "Website" : "Website", + "It can take up to 24 hours before the account is displayed as verified." : "Pode levar até 24 horas para que a conta seja mostrada como verificada.", + "Link https://…" : "Link https://…", + "Twitter" : "Twitter", + "Twitter handle @…" : "Twitter handle @…", + "Help translate" : "Ajude a traduzir", + "Locale" : "Localização", + "Current password" : "Senha atual", + "Change password" : "Alterar senha", + "Use a second factor besides your password to increase security for your account." : "Use um segundo fator além de sua senha para aumentar a segurança da conta.", + "Disconnect" : "Desconectar", + "Not supported!" : "Não suportado!", + "Press ⌘-C to copy." : "Pressione ⌘-C para copiar.", + "Press Ctrl-C to copy." : "Pressione Ctrl-C para copiar.", + "Error while loading browser sessions and device tokens" : "Erro ao carregar as sessões do browser e tokens do dispositivo", + "Store credentials" : "Salvar credenciais", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php está registrado em um serviço webcron para chamar cron.php a cada 15 minutos em HTTP.", + "Use system cron service to call the cron.php file every 15 minutes." : "Usar o serviço cron para chamar o arquivo cron.php a cada 15 minutos.", + "Follow us on Google+" : "Siga-nos no Google+" +}, +"nplurals=2; plural=(n > 1);"); diff --git a/apps/settings/l10n/pt_BR.json b/apps/settings/l10n/pt_BR.json new file mode 100644 index 00000000000..4941fd22a9f --- /dev/null +++ b/apps/settings/l10n/pt_BR.json @@ -0,0 +1,821 @@ +{ "translations": { + "{actor} added you to group {group}" : "{actor} adicionou você ao grupo {group}", + "You added {user} to group {group}" : "Você adicionou {user} ao grupo {group}", + "{actor} added {user} to group {group}" : "{actor} adicionou {user} ao grupo {group}", + "An administrator added you to group {group}" : "Um administrador adicionou você ao grupo {group}", + "An administrator added {user} to group {group}" : "Um administrador adicionou {user} ao grupo {group}", + "{actor} removed you from group {group}" : "{actor} removeu você do grupo {group}", + "You removed {user} from group {group}" : "Você removeu {user} do grupo {group}", + "{actor} removed {user} from group {group}" : "{actor} removeu {user} do grupo {group}", + "An administrator removed you from group {group}" : "Um administrador removeu você do grupo {group}", + "An administrator removed {user} from group {group}" : "Um administrador removeu {user} do grupo {group}", + "Your <strong>group memberships</strong> were modified" : "Seus <strong>membros do grupo</strong> foram alterados", + "{actor} changed your password" : "{actor} alterou sua senha", + "You changed your password" : "Você alterou sua senha", + "Your password was reset by an administrator" : "Sua senha foi redefinida pelo administrador", + "{actor} changed your email address" : "{actor} alterou seu endereço de e-mail", + "You changed your email address" : "Você alterou seu e-mail", + "Your email address was changed by an administrator" : "Seu e-mail foi alterado pelo administrador", + "You created app password \"{token}\"" : "Você criou a senha de aplicativo \"{token}\"", + "You deleted app password \"{token}\"" : "Você excluiu a senha de aplicativo \"{token}\"", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Você renomeou a senha do aplicativo \"{token}\" para \"{newToken}\"", + "You granted filesystem access to app password \"{token}\"" : "Você concedeu acesso ao sistema de arquivos para a senha do aplicativo \"{token}\"", + "You revoked filesystem access from app password \"{token}\"" : "Você revogou o acesso ao sistema de arquivos da senha do aplicativo \"{token}\"", + "Security" : "Segurança", + "You successfully logged in using two-factor authentication (%1$s)" : "Você conectou com sucesso usando a autenticação de dois fatores (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "A tentativa de login usando autenticação de dois fatores falhou (%1$s)", + "Remote wipe was started on %1$s" : "Limpeza remota iniciou em %1$s", + "Remote wipe has finished on %1$s" : "Limpeza remota terminou em %1$s", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Sua <strong>senha</strong> ou <strong>e-mail</strong> foram alterados", + "Couldn't remove app." : "Não foi possível excluir aplicativos.", + "Couldn't update app." : "Não foi possível atualizar o aplicativo", + "Wrong password" : "Senha incorreta", + "Saved" : "Salvo", + "No user supplied" : "Nenhum usuário fornecido", + "Unable to change password" : "Não foi possível alterar a senha", + "Authentication error" : "Erro de autenticação", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Por favor, forneça uma senha de recuperação do administrador, caso contrário todos os dados serão perdidos.", + "Wrong admin recovery password. Please check the password and try again." : "Senha de recuperação do administrador incorreta. Verifique a senha e tente novamente.", + "Backend doesn't support password change, but the user's encryption key was updated." : "A plataforma de serviço não suporta alteração de senha mas a chave de criptografia do usuário foi alterada.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "instalando e atualizando aplicativos via loja de aplicativos ou Nuvem Compartilhada Federada", + "Federated Cloud Sharing" : "Compartilhamento de Nuvem Federada", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL está usando uma versão %1$s desatualizada (%2$s). Atualize seu sistema operacional ou recursos como %3$s não funcionarão adequadamente.", + "Invalid SMTP password." : "Senha SMTP incorreta.", + "Email setting test" : "Teste da configuração de e-mail", + "Well done, %s!" : "Bom trabalho %s!", + "If you received this email, the email configuration seems to be correct." : "Se você recebeu este e-mail, é sinal que a configuração do servidor de e-mail está correta.", + "Email could not be sent. Check your mail server log" : "O e-mail não pôde ser enviado. Verifique o log do servidor de e-mail", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Ocorreu um problema ao enviar o e-mail. Por favor, revise suas configurações. (Erro: %s)", + "You need to set your user email before being able to send test emails." : "Você precisa configurar seu e-mail de usuário antes de ser capaz de enviar e-mails de teste.", + "Invalid mail address" : "Endereço de e-mail inválido", + "Settings saved" : "Configurações salvas", + "Unable to change full name" : "Não foi possível alterar o nome completo", + "Unable to change email address" : "Não foi possível alterar o endereço de e-mail", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "A fim de verificar sua conta no Twitter, poste o seguinte tweet no Twitter (certifique-se de postar sem nenhuma quebra de linha):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "A fim de verificar seu Website, armazene o seguinte conteúdo na página raiz em '.well-known/CloudIdVerificationCode.txt' (certifique-se que o texto inteiro esteja em uma só linha):", + "%1$s changed your password on %2$s." : "%1$s mudou sua senha em %2$s.", + "Your password on %s was changed." : "Sua senha em %s foi alterada.", + "Your password on %s was reset by an administrator." : "Sua senha em %s foi redefinida por um administrador.", + "Password for %1$s changed on %2$s" : "Senha para %1$s alterada em %2$s", + "Password changed for %s" : "Senha alterada para %s", + "If you did not request this, please contact an administrator." : "Se você não solicitou isso, por favor contacte o administrador.", + "Your email address on %s was changed." : "Seu e-mail em %s foi alterado.", + "Your email address on %s was changed by an administrator." : "Seu e-mail em %s foi alterado por um administrador.", + "Email address for %1$s changed on %2$s" : "O endereço de e-mail para %1$s foi alterado em %2$s", + "Email address changed for %s" : "E-mail alterado para %s", + "The new email address is %s" : "O novo e-mail é %s", + "Your %s account was created" : "Sua conta %s foi criada", + "Welcome aboard" : "Bem-vindo a bordo", + "Welcome aboard %s" : "%s, bem-vindo a bordo", + "Welcome to your %s account, you can add, protect, and share your data." : "Bem-vindo à sua conta %s. Você pode adicionar, proteger e compartilhar seus dados.", + "Your username is: %s" : "Seu nome de usuário é: %s", + "Set your password" : "Defina sua senha", + "Go to %s" : "Ir para %s", + "Install Client" : "Instalar Cliente", + "Logged in user must be a subadmin" : "Usuário logado deve ser um subadministrador", + "Create" : "Criar", + "Change" : "Alterar", + "Delete" : "Excluir", + "Share" : "Compartilhar", + "Unlimited" : "Ilimitado", + "Verifying" : "Verificando", + "Verifying …" : "Verificando...", + "Verify" : "Verificar", + "Migration in progress. Please wait until the migration is finished" : "Migração em progresso. Por favor, aguarde até esteja finalizada", + "Migration started …" : "Migração iniciada...", + "Not saved" : "Não salvo", + "Sending…" : "Enviando...", + "Email sent" : "E-mail enviado", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Ocorreu um erro. Por favor envie um certificado ASCII-encoded PEM", + "Valid until {date}" : "Válido até {date}", + "Local" : "Local", + "Private" : "Privado", + "Only visible to local users" : "Visível somente para usuários locais", + "Only visible to you" : "Visível somente para você", + "Contacts" : "Contatos", + "Visible to local users and to trusted servers" : "Visível para usuários locais e servidores confiáveis", + "Public" : "Público", + "Will be synced to a global and public address book" : "Será sincronizado com livro de endereços público e global", + "Very weak password" : "Senha muito fraca", + "Weak password" : "Senha fraca", + "So-so password" : "Senha mais ou menos", + "Good password" : "Boa senha", + "Strong password" : "Senha forte", + "An error occurred while changing your language. Please reload the page and try again." : "Ocorreu um erro ao alterar seu idioma. Recarregue a página e tente novamente.", + "An error occurred while changing your locale. Please reload the page and try again." : "Ocorreu um erro ao alterar sua localidade. Rrecarregue a página e tente novamente.", + "Select a profile picture" : "Selecione uma imagem para o perfil", + "Week starts on {fdow}" : "A semana começa em {fdow}", + "Groups" : "Grupos", + "Group list is empty" : "A lista de grupos está vazia", + "Unable to retrieve the group list" : "Não é possível recuperar a lista de grupos", + "Afrikaans (Namibia)" : "Africâner (Namíbia)", + "Afrikaans (South Africa)" : "Africâner (África do Sul)", + "Afrikaans" : "Africâner", + "Akan (Ghana)" : "Akan (Gana)", + "Akan" : "Akan", + "Albanian (Albania)" : "Albanês (Albânia)", + "Albanian" : "Albanês", + "Amharic (Ethiopia)" : "Amárico (Etiópia)", + "Amharic" : "Amárico", + "Arabic (Algeria)" : "Árabe (Algéria)", + "Arabic (Bahrain)" : "Árabe (Barém)", + "Arabic (Egypt)" : "Árabe (Egito)", + "Arabic (Iraq)" : "Árabe (Iraque)", + "Arabic (Jordan)" : "Árabe (Jordânia)", + "Arabic (Kuwait)" : "Árabe (Kuwait)", + "Arabic (Lebanon)" : "Árabe (Líbano)", + "Arabic (Libya)" : "Árabe (Líbia)", + "Arabic (Morocco)" : "Árabe (Marocos)", + "Arabic (Oman)" : "Árabe (Omã)", + "Arabic (Qatar)" : "Árabe (Catar)", + "Arabic (Saudi Arabia)" : "Árabe (Arábia Saudita)", + "Arabic (Sudan)" : "Árabe (Sudão)", + "Arabic (Syria)" : "Árabe (Síria)", + "Arabic (Tunisia)" : "Árabe (Tunísia)", + "Arabic (United Arab Emirates)" : "Árabe (Emirados Árabes Unidos)", + "Arabic (Yemen)" : "Árabe (Iêmen)", + "Arabic" : "Árabe", + "Armenian (Armenia)" : "Armênio (Armênia)", + "Armenian" : "Armênio", + "Assamese (India)" : "Assamês (Índia)", + "Assamese" : "Assamês", + "Asu (Tanzania)" : "Asu (Tanzânia)", + "Asu" : "Asu", + "Azerbaijani (Cyrillic)" : "Azerbaijano (Cirílico)", + "Azerbaijani (Cyrillic, Azerbaijan)" : "Azerbaijano (Cirílico, Azerbaijão)", + "Azerbaijani (Latin)" : "Azerbaijano (Latim)", + "Azerbaijani (Latin, Azerbaijan)" : "Azerbaijano (Latim, Azerbaijão)", + "Azerbaijani" : "Azerbaijanês", + "Bambara (Mali)" : "Bambara (Mali)", + "Bambara" : "Bambara", + "Basque (Spain)" : "Basco (Espanha)", + "Basque" : "Basco", + "Belarusian (Belarus)" : "Bielorrusso (Bielorrússia)", + "Belarusian" : "Bielorrusso", + "Bemba (Zambia)" : "Bemba (Zâmbia)", + "Bemba" : "Bemba", + "Bena (Tanzania)" : "Bena (Tanzânia)", + "Bena" : "Bena", + "Bengali (Bangladesh)" : "Bengali (Bangladesh)", + "Bengali (India)" : "Bengali (Índia)", + "Bengali" : "Bengali", + "Bosnian (Bosnia and Herzegovina)" : "Bósnio (Bósnia e Herzegovina)", + "Bosnian" : "Bósnio", + "Bulgarian (Bulgaria)" : "Búlgaro (Bulgária)", + "Bulgarian" : "Búlgaro", + "Burmese (Myanmar [Burma])" : "Birmanês (Mianmar [Birmânia])", + "Burmese" : "Birmanês", + "Catalan (Spain)" : "Catalão (Espanha)", + "Catalan" : "Catalão", + "Central Morocco Tamazight (Latin)" : "Tamazigue do Atlas Central de Marrocos (Latim)", + "Central Morocco Tamazight (Latin, Morocco)" : "Marrocos Central Tamazight (Latim, Marrocos)", + "Central Morocco Tamazight" : "Tamazight do Marrocos Central", + "Cherokee (United States)" : "Cherokee (Estados Unidos da América)", + "Cherokee" : "Cherokee", + "Chiga (Uganda)" : "Chiga (Uganda)", + "Chiga" : "Chiga", + "Chinese (Simplified Han)" : "Chinês (Simplificado)", + "Chinese (Simplified Han, China)" : "Chinês (Simplificado, China)", + "Chinese (Simplified Han, Hong Kong SAR China)" : "Chinês (Simplificado, Hong Kong SAR China)", + "Chinese (Simplified Han, Macau SAR China)" : "Chinês (Simplificado, Macau SAR China)", + "Chinese (Simplified Han, Singapore)" : "Chinês (Simplificado, Singapore)", + "Chinese (Traditional Han)" : "Chinês (Tradicional)", + "Chinese (Traditional Han, Hong Kong SAR China)" : "Chinês (Traditional, Hong Kong SAR China)", + "Chinese (Traditional Han, Macau SAR China)" : "Chinês (Traditional, Macau SAR China)", + "Chinese (Traditional Han, Taiwan)" : "Chinês (Tradicional, Taiwan)", + "Chinese" : "Chinês", + "Cornish (United Kingdom)" : "Córnico (Reino Unido)", + "Cornish" : "Córnico", + "Croatian (Croatia)" : "Croata (Croácia)", + "Croatian" : "Croata", + "Czech (Czech Republic)" : "Checo (República Checa)", + "Czech" : "Tcheco", + "Danish (Denmark)" : "Dinamarquês (Dinamarca)", + "Danish" : "Dinamarquês", + "Dutch (Belgium)" : "Holandês (Bélgica)", + "Dutch (Netherlands)" : "Holandês (Holanda)", + "Dutch" : "Holandês", + "Embu (Kenya)" : "Embu (Quênia)", + "Embu" : "Embu", + "English (American Samoa)" : "Inglês (Samoa Americana)", + "English (Australia)" : "Inglês (Austrália)", + "English (Belgium)" : "Inglês (Bélgica)", + "English (Belize)" : "Inglês (Belize)", + "English (Botswana)" : "Inglês (Botsuana)", + "English (Canada)" : "Inglês (Canadá)", + "English (Guam)" : "Inglês (Guame)", + "English (Hong Kong SAR China)" : "Inglês (Hong Kong SAR China)", + "English (India)" : "Inglês (Índia)", + "English (Ireland)" : "Inglês (Irlanda)", + "English (Jamaica)" : "Inglês (Jamaica)", + "English (Malta)" : "Inglês (Malta)", + "English (Marshall Islands)" : "Inglês (Ilhas Marshall)", + "English (Mauritius)" : "Inglês (Maurícia)", + "English (Namibia)" : "Inglês (Namíbia)", + "English (New Zealand)" : "Inglês (Nova Zelândia)", + "English (Northern Mariana Islands)" : "Inglês (Ilhas Marianas do Norte)", + "English (Pakistan)" : "Inglês (Paquistão)", + "English (Philippines)" : "Inglês (Filipinas)", + "English (Singapore)" : "Inglês (Singapura)", + "English (South Africa)" : "Inglês (África do Sul)", + "English (Trinidad and Tobago)" : "Inglês (Trinidad e Tobago)", + "English (U.S. Minor Outlying Islands)" : "Inglês (Ilhas Menores Distantes dos EUA)", + "English (U.S. Virgin Islands)" : "Inglês (Ilhas Virgens Americanas)", + "English (United Kingdom)" : "Inglês (Reino Unido)", + "English (United States)" : "Inglês (Estados Unidos da América)", + "English (Zimbabwe)" : "Inglês (Zimbábue)", + "English" : "Inglês", + "Esperanto" : "Esperanto", + "Estonian (Estonia)" : "Estoniano (Estônia)", + "Estonian" : "Estoniano", + "Ewe (Ghana)" : "Ewe (Gana)", + "Ewe (Togo)" : "Ewe (Togo)", + "Ewe" : "Ewe", + "Faroese (Faroe Islands)" : "Feroesa (Ilhas Feroé)", + "Faroese" : "Feroês", + "Filipino (Philippines)" : "Filipino (Filipinas)", + "Filipino" : "Filipino", + "Finnish (Finland)" : "Finlandês (Finlândia)", + "Finnish" : "Finlandês", + "French (Belgium)" : "Francês (Bélgica)", + "French (Benin)" : "Francês (Benin)", + "French (Burkina Faso)" : "Francês (Burkina Faso)", + "French (Burundi)" : "Francês (Burundi)", + "French (Cameroon)" : "Francês (Camarões)", + "French (Canada)" : "Francês (Canadá)", + "French (Central African Republic)" : "Francês (República da África Central)", + "French (Chad)" : "Francês (Chade)", + "French (Comoros)" : "Francês (Camarões)", + "French (Congo - Brazzaville)" : "Francês (Congo - Brazzavile)", + "French (Congo - Kinshasa)" : "Francês (Congo - Kinshasa)", + "French (Côte d’Ivoire)" : "Francês (Costa do Marfim)", + "French (Djibouti)" : "Francês (Djibuti)", + "French (Equatorial Guinea)" : "Francês (Guiné Equatorial)", + "French (France)" : "Francês (França)", + "French (Gabon)" : "Francês (Gabão)", + "French (Guadeloupe)" : "Francês (Guadalupe)", + "French (Guinea)" : "Francês (Guiné)", + "French (Luxembourg)" : "Francês (Luxemburgo)", + "French (Madagascar)" : "Francês (Madagascar)", + "French (Mali)" : "Francês (Mali)", + "French (Martinique)" : "Francês (Martinica)", + "French (Monaco)" : "Francês (Mônaco)", + "French (Niger)" : "Francês (Nigéria)", + "French (Rwanda)" : "Francês (Ruanda)", + "French (Réunion)" : "Francês (Reunião)", + "French (Saint Barthélemy)" : "Francês (São Bartolomeu)", + "French (Saint Martin)" : "Francês (San Martin)", + "French (Senegal)" : "França (Senegal)", + "French (Switzerland)" : "Francês (Suíça)", + "French (Togo)" : "Francês (Togo)", + "French" : "Francês", + "Fulah (Senegal)" : "Fula (Senegal)", + "Fulah" : "Fula", + "Galician (Spain)" : "Galego (Espanha)", + "Galician" : "Galego", + "Ganda (Uganda)" : "Ganda (Uganda)", + "Ganda" : "Ganda", + "Georgian (Georgia)" : "Georgiano (Geórgia)", + "Georgian" : "Georgiano", + "German (Austria)" : "Alemão (Áustria)", + "German (Belgium)" : "Alemão (Bélgica)", + "German (Germany)" : "Alemão (Alemanha)", + "German (Liechtenstein)" : "Alemão (Liechtenstein)", + "German (Luxembourg)" : "Alemão (Luxemburgo)", + "German (Switzerland)" : "Alemão (Suíça)", + "German" : "Alemão", + "Greek (Cyprus)" : "Grego (Chipre)", + "Greek (Greece)" : "Grego (Grécia)", + "Greek" : "Grego", + "Gujarati (India)" : "Guzerate (Índia)", + "Gujarati" : "Guzerate", + "Gusii (Kenya)" : "Gusii (Quênia)", + "Gusii" : "Gusii", + "Hausa (Latin)" : "Hauçá (Latim)", + "Hausa (Latin, Ghana)" : "Hauçá (Latim, Gana)", + "Hausa (Latin, Niger)" : "Hauçá (Latim, Nígeria)", + "Hausa (Latin, Nigeria)" : "Hauçá (Latim, Nigéria)", + "Hausa" : "Hauçá", + "Hawaiian (United States)" : "Havaiano (Estados Unidos da América)", + "Hawaiian" : "Havaiano", + "Hebrew (Israel)" : "Hebraico (Israel)", + "Hebrew" : "Hebraico", + "Hindi (India)" : "Hindi (Índia)", + "Hindi" : "Hindi", + "Hungarian (Hungary)" : "Húngaro (Hungria)", + "Hungarian" : "Húngaro", + "Icelandic (Iceland)" : "Islandês (Islândia)", + "Icelandic" : "Islandês", + "Igbo (Nigeria)" : "Igbo (Nigéria)", + "Igbo" : "Igbo", + "Indonesian (Indonesia)" : "Indonésio (Indonésia)", + "Indonesian" : "Indonésio", + "Irish (Ireland)" : "Irlandês (Irlanda)", + "Irish" : "Irlandês", + "Italian (Italy)" : "Italiano (Itália)", + "Italian (Switzerland)" : "Italiano (Suíça)", + "Italian" : "Italiano", + "Japanese (Japan)" : "Japonês (Japão)", + "Japanese" : "Japonês", + "Kabuverdianu (Cape Verde)" : "Português (Cabo Verde)", + "Kabuverdianu" : "Português", + "Kabyle (Algeria)" : "Cabila (Argélia)", + "Kabyle" : "Cabila", + "Kalaallisut (Greenland)" : "Groenlandês (Groenlândia)", + "Kalaallisut" : "Groenlandês", + "Kalenjin (Kenya)" : "Kalenjin (Quênia)", + "Kalenjin" : "Kalenjin", + "Kamba (Kenya)" : "Quicamba (Quênia)", + "Kamba" : "Quicamba", + "Kannada (India)" : "Canarim (Índia)", + "Kannada" : "Canarim", + "Kazakh (Cyrillic)" : "Cazaque (Cirílico)", + "Kazakh (Cyrillic, Kazakhstan)" : "Cazaque (Cirílico, Cazaquistão)", + "Kazakh" : "Cazaque", + "Khmer (Cambodia)" : "Khmer (Camboja)", + "Khmer" : "Kmer", + "Kikuyu (Kenya)" : "Quicuio (Quênia)", + "Kikuyu" : "Quicuio", + "Kinyarwanda (Rwanda)" : "Quiniaruanda (Ruanda)", + "Kinyarwanda" : "Quiniaruanda", + "Konkani (India)" : "Concani (Índia)", + "Konkani" : "Concani", + "Korean (South Korea)" : "Coreano (Coreia do Sul)", + "Korean" : "Coreano", + "Koyra Chiini (Mali)" : "Koyra Chiini (Mali)", + "Koyra Chiini" : "Koyra Chiini", + "Koyraboro Senni (Mali)" : "Koyraboro Senni (Mali)", + "Koyraboro Senni" : "Koyraboro Senni", + "Langi (Tanzania)" : "Langi (Tanzânia)", + "Langi" : "Langu", + "Latvian (Latvia)" : "Letão (Letônia)", + "Latvian" : "Letão", + "Lithuanian (Lithuania)" : "Lituano (Lituânia)", + "Lithuanian" : "Lituano", + "Luo (Kenya)" : "Luo (Quênia)", + "Luo" : "Luo", + "Luyia (Kenya)" : "Luia (Quênia)", + "Luyia" : "Luia", + "Macedonian (Macedonia)" : "Macedônio (Macedônia)", + "Macedonian" : "Macedônio", + "Machame (Tanzania)" : "Machame (Tanzânia)", + "Machame" : "Machame", + "Makonde (Tanzania)" : "Maconde (Tanzânia)", + "Makonde" : "Maconde", + "Malagasy (Madagascar)" : "Malgaxe (Madagascar)", + "Malagasy" : "Malgaxe", + "Malay (Brunei)" : "Malaio (Brunei)", + "Malay (Malaysia)" : "Malaio (Malásia)", + "Malay" : "Malaio", + "Malayalam (India)" : "Malaiala (India)", + "Malayalam" : "Malaiala", + "Maltese (Malta)" : "Maltês (Malta)", + "Maltese" : "Maltês", + "Manx (United Kingdom)" : "Manês (Reino Unido)", + "Manx" : "Manês", + "Marathi (India)" : "Marata (Índia)", + "Marathi" : "Marati", + "Masai (Kenya)" : "Massai (Quênia)", + "Masai (Tanzania)" : "Massai (Tanzânia)", + "Masai" : "Massai", + "Meru (Kenya)" : "Meru (Quênia)", + "Meru" : "Meru", + "Morisyen (Mauritius)" : "Crioulo Mauritânio (Maurícia)", + "Morisyen" : "Crioulo Mauritânio", + "Nama (Namibia)" : "Nama (Namíbia)", + "Nama" : "Nama", + "Nepali (India)" : "Nepalês (Índia)", + "Nepali (Nepal)" : "Nepalês (Nepal)", + "Nepali" : "Nepalês", + "North Ndebele (Zimbabwe)" : "Sindebele (Zimbábue)", + "North Ndebele" : "Sindebele", + "Norwegian Bokmål (Norway)" : "Norueguês Bokmål (Noruega)", + "Norwegian Bokmål" : "Bokmål Norueguês", + "Norwegian Nynorsk (Norway)" : "Novo Norueguês (Noruega)", + "Norwegian Nynorsk" : "Nynorsk Norueguês", + "Nyankole (Uganda)" : "Nyankole (Uganda)", + "Nyankole" : "Nyankole", + "Oriya (India)" : "Oria (Índia)", + "Oriya" : "Oria", + "Oromo (Ethiopia)" : "Oromo (Etiópia)", + "Oromo (Kenya)" : "Oromo (Quênia)", + "Oromo" : "Oromo", + "Pashto (Afghanistan)" : "Pachto (Afeganistão)", + "Pashto" : "Pachto", + "Persian (Afghanistan)" : "Persa (Afeganistão)", + "Persian (Iran)" : "Persa (Irã)", + "Persian" : "Persa", + "Polish (Poland)" : "Polonês (Polônia)", + "Polish" : "Polonês", + "Portuguese (Brazil)" : "Português (Brasil)", + "Portuguese (Guinea-Bissau)" : "Português (Guiné-Bissau)", + "Portuguese (Mozambique)" : "Português (Moçambique)", + "Portuguese (Portugal)" : "Português (Portugal)", + "Portuguese" : "Português", + "Punjabi (Arabic)" : "Panjábi (Árabe)", + "Punjabi (Arabic, Pakistan)" : "Panjábi (Árabe, Paquistão)", + "Punjabi (Gurmukhi)" : "Panjábi (Gurmukhi)", + "Punjabi (Gurmukhi, India)" : "Panjábi (Gurmukhi, Índia)", + "Punjabi" : "Panjábi", + "Romanian (Moldova)" : "Romeno (Moldávia)", + "Romanian (Romania)" : "Romeno (Romênia)", + "Romanian" : "Romeno", + "Romansh (Switzerland)" : "Romanche (Suíça)", + "Romansh" : "Romanche", + "Rombo (Tanzania)" : "Rombo (Tanzânia)", + "Rombo" : "Rombo", + "Russian (Moldova)" : "Russo (Moldávia)", + "Russian (Russia)" : "Russo (Rússia)", + "Russian (Ukraine)" : "Russo (Ucrânia)", + "Russian" : "Russo", + "Rwa (Tanzania)" : "Rwa (Tanzânia)", + "Rwa" : "Rwa", + "Samburu (Kenya)" : "Samburu (Quênia)", + "Samburu" : "Samburu", + "Sango (Central African Republic)" : "Sango (República Centro-Africana)", + "Sango" : "Sango", + "Sena (Mozambique)" : "Sena (Moçambique)", + "Sena" : "Sena", + "Serbian (Cyrillic)" : "Sérvio (Cirílico)", + "Serbian (Cyrillic, Bosnia and Herzegovina)" : "Sérvio (Cirílico, Bósnia e Herzegovina)", + "Serbian (Cyrillic, Montenegro)" : "Sérvio (Cirílico, Montenegro)", + "Serbian (Cyrillic, Serbia)" : "Sérvio (Cirílico, Sérvia)", + "Serbian (Latin)" : "Sérvio (Latim)", + "Serbian (Latin, Bosnia and Herzegovina)" : "Sérvio (Latim, Bósnia e Herzegovina)", + "Serbian (Latin, Montenegro)" : "Sérvio (Latim, Montenegro)", + "Serbian (Latin, Serbia)" : "Sérvio (Latim, Sérvia)", + "Serbian" : "Sérvio", + "Shona (Zimbabwe)" : "Xona (Zimbábue)", + "Shona" : "Xona", + "Sichuan Yi (China)" : "Sichuan Yi (China)", + "Sichuan Yi" : "Sichuan Yi", + "Sinhala (Sri Lanka)" : "Cingalês (Sri Lanka)", + "Sinhala" : "Cingalês", + "Slovak (Slovakia)" : "Eslovaco (Eslováquia)", + "Slovak" : "Eslovaco", + "Slovenian (Slovenia)" : "Esloveno (Eslovênia)", + "Slovenian" : "Esloveno", + "Soga (Uganda)" : "Soga (Uganda)", + "Soga" : "Soga", + "Somali (Djibouti)" : "Somali (Djibuti)", + "Somali (Ethiopia)" : "Somali (Etiópia)", + "Somali (Kenya)" : "Somali (Quênia)", + "Somali (Somalia)" : "Somali (Somália)", + "Somali" : "Somali", + "Spanish (Argentina)" : "Espanhol (Argentina)", + "Spanish (Bolivia)" : "Espanhol (Bolívia)", + "Spanish (Chile)" : "Espanhol (Chile)", + "Spanish (Colombia)" : "Espanhol (Colômbia)", + "Spanish (Costa Rica)" : "Espanhol (Costa Rica)", + "Spanish (Dominican Republic)" : "Espanhol (República Dominicana)", + "Spanish (Ecuador)" : "Espanhol (Equador)", + "Spanish (El Salvador)" : "Espanhol (El Salvador)", + "Spanish (Equatorial Guinea)" : "Espanhol (Guiné Equatorial)", + "Spanish (Guatemala)" : "Espanhol (Guatemala)", + "Spanish (Honduras)" : "Espanhol (Honduras)", + "Spanish (Latin America)" : "Espanhol (América Latina)", + "Spanish (Mexico)" : "Espanhol (Mexico)", + "Spanish (Nicaragua)" : "Espanhol (Nicarágua)", + "Spanish (Panama)" : "Espanhol (Panamá)", + "Spanish (Paraguay)" : "Espanhol (Paraguay)", + "Spanish (Peru)" : "Espanhol (Peru)", + "Spanish (Puerto Rico)" : "Espanhol (Porto Rico)", + "Spanish (Spain)" : "Espanhol (Espanha)", + "Spanish (United States)" : "Espanhol (Estados Unidos da América)", + "Spanish (Uruguay)" : "Espanhol (Uruguai)", + "Spanish (Venezuela)" : "Espanhol (Venezuela)", + "Spanish" : "Espanhol", + "Swahili (Kenya)" : "Suaíli (Quênia)", + "Swahili (Tanzania)" : "Suaíli (Tanzânia)", + "Swahili" : "Suaíli", + "Swedish (Finland)" : "Sueco (Finlândia)", + "Swedish (Sweden)" : "Sueco (Suécia)", + "Swedish" : "Sueco", + "Swiss German (Switzerland)" : "Alemão Suíço (Suíça)", + "Swiss German" : "Suíço Alemão", + "Tachelhit (Latin)" : "Tachelhit (Latim)", + "Tachelhit (Latin, Morocco)" : "tachelhit (Latim, Marrocos)", + "Tachelhit (Tifinagh)" : "Tachelhit (Tifinagh)", + "Tachelhit (Tifinagh, Morocco)" : "Tachelhit (Tifinague, Marrocos)", + "Tachelhit" : "Tachelhit", + "Taita (Kenya)" : "Taita (Quênia)", + "Taita" : "Taita", + "Tamil (India)" : "Tâmil (Índia)", + "Tamil (Sri Lanka)" : "Tâmil (Sri Lanka)", + "Tamil" : "Tâmil", + "Telugu (India)" : "Telugo (Índia)", + "Telugu" : "Télugo", + "Teso (Kenya)" : "Teso (Quênia)", + "Teso (Uganda)" : "Teso (Uganda)", + "Teso" : "Teso", + "Thai (Thailand)" : "Tailandês (Tailândia)", + "Thai" : "Tailandês", + "Tibetan (China)" : "Tibetano (China)", + "Tibetan (India)" : "Tibetano (Índia)", + "Tibetan" : "Tibetano", + "Tigrinya (Eritrea)" : "Tigrínia (Eritreia)", + "Tigrinya (Ethiopia)" : "Tigrínia (Etiópia)", + "Tigrinya" : "Tigrínia", + "Tonga (Tonga)" : "Tonganês (Tonga)", + "Tonga" : "Tonganês", + "Turkish (Turkey)" : "Turco (Turquia)", + "Turkish" : "Turco", + "Ukrainian (Ukraine)" : "Ucraniano (Ucrânia)", + "Ukrainian" : "Ucraniano", + "Urdu (India)" : "Urdu (Índia)", + "Urdu (Pakistan)" : "Urdu (Paquistão)", + "Urdu" : "Urdu", + "Uzbek (Arabic)" : "Uzbeque (Árabe)", + "Uzbek (Arabic, Afghanistan)" : "Uzbeque (Árabe, Afeganistão)", + "Uzbek (Cyrillic)" : "Uzbeque (Cirílico)", + "Uzbek (Cyrillic, Uzbekistan)" : "Uzbeque (Cirílico, Uzbequistão)", + "Uzbek (Latin)" : "Usbeque (Latim)", + "Uzbek (Latin, Uzbekistan)" : "Uzbeque (Latim, Uzbequistão)", + "Uzbek" : "Uzbeque", + "Vietnamese (Vietnam)" : "Vietnamita (Vietnã)", + "Vietnamese" : "Vietnamita", + "Vunjo (Tanzania)" : "Vunjo (Tanzânia)", + "Vunjo" : "Vunjo", + "Welsh (United Kingdom)" : "Galês (Reino Unido)", + "Welsh" : "Galês", + "Yoruba (Nigeria)" : "Ioruba (Nigéria)", + "Yoruba" : "Ioruba", + "Zulu (South Africa)" : "Zulu (África do Sul)", + "Zulu" : "Zulu", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Autenticação de dois fatores pode ser aplicada para todos\tos usuários e grupos específicos. Se eles não tiverem um provedor de dois fatores configurado, eles não poderão efetuar login no sistema.", + "Enforce two-factor authentication" : "Aplicar autenticação de dois fatores", + "Limit to groups" : "Limitado a grupos", + "Enforcement of two-factor authentication can be set for certain groups only." : "A obrigatoriedade da autenticação de dois fatores pode ser definida para determinados grupos apenas.", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "A autenticação de dois fatores é obrigatória a todos\tmembros dos seguintes grupos.", + "Enforced groups" : "Grupos obrigatórios", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "A autenticação de dois fatores não é aplicada para\tmembros dos seguintes grupos.", + "Excluded groups" : "Grupos excluídos", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "Quando grupos são selecionados/excluídos, eles usam a seguinte lógica para determinar se um usuário tem 2FA forçado: Se nenhum grupo for selecionado, 2FA será habilitado para todos, exceto membros dos grupos excluídos. Se grupos são selecionados, 2FA é ativado para todos os membros deles. Se um usuário estiver em um grupo selecionado e excluído, o selecionado terá precedência e o 2FA será forçado.", + "Save changes" : "Salvar mudanças", + "Marked for remote wipe" : "Marcado para limpeza remota", + "Device settings" : "Configuração dos dispositivos", + "Allow filesystem access" : "Permitir acesso ao sistema de arquivos", + "Rename" : "Renomear", + "Revoke" : "Revogar", + "Wipe device" : "Limpar o dispositivo", + "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "A revogação desse token pode impedir a limpeza do seu dispositivo, caso ainda não a tenha iniciado.", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome para Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Aplicativo iOS Nextcloud", + "Nextcloud Android app" : "Aplicativo Android Nextcloud", + "Nextcloud Talk for iOS" : "Nextcloud Talk para iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk para Android", + "Sync client - {os}" : "Sincronizar cliente - {os}", + "This session" : "Esta sessão", + "Device" : "Dispositivo", + "Last activity" : "Última atividade", + "Devices & sessions" : "Dispositivos & sessões", + "Web, desktop and mobile clients currently logged in to your account." : "Clientes web, desktop e móvel que estão conectados à sua conta.", + "Do you really want to wipe your data from this device?" : "Quer realmente limpar seus dados deste dispositivo?", + "Confirm wipe" : "Confirmar a limpeza", + "Error while creating device token" : "Erro ao criar token de dispositivo", + "Error while updating device token scope" : "Erro ao atualizar o escopo do token do dispositivo", + "Error while updating device token name" : "Erro ao atualizar o nome do token do dispositivo", + "Error while deleting the token" : "Erro ao excluir o token", + "Error while wiping the device with the token" : "Erro ao limpar o dispositivo com o token", + "App name" : "Nome do aplicativo", + "Create new app password" : "Criar nova senha de aplicativo", + "Use the credentials below to configure your app or device." : "Use as credenciais abaixo para configurar seu aplicativo ou dispositivo.", + "For security reasons this password will only be shown once." : "Por motivo de segurança, esta senha só será exibida uma vez.", + "Username" : "Nome de Usuário", + "Password" : "Senha", + "Done" : "Concluído", + "Show QR code for mobile apps" : "Exibir código QR para aplicativos móveis", + "Copied!" : "Copiado!", + "Copy" : "Copiar", + "Could not copy app password. Please copy it manually." : "Não foi possível copiar a senha do aplicativo. Copie-a manualmente.", + "This app is supported via your current Nextcloud subscription." : "Este aplicativo é suportado pela sua assinatura atual do Nextcloud.", + "Supported" : "Suportado", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Os aplicativos oficiais são desenvolvidos pela comunidade e dentro dela. Eles oferecem funcionalidades centrais e estão prontos para uso em produção.", + "Official" : "Oficial", + "by" : "por", + "Update to {version}" : "Atualizar para {version}", + "Remove" : "Excluir", + "Disable" : "Desativar", + "All" : "Todos", + "Limit app usage to groups" : "Limitar o uso de aplicativos a grupos", + "No results" : "Sem resultados", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Este aplicativo não possui uma versão mínima atribuída para uso no Nextcloud. Isto poderá se converter em um erro no futuro.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Este aplicativo não possui uma versão máxima atribuida para uso no Nextcloud. Isto poderá se converter em um erro no futuro.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Este aplicativo não pode ser instalado pois as seguintes dependências não forão cumpridas:", + "View in store" : "Ver na loja", + "Visit website" : "Visitar website", + "Report a bug" : "Reportar um erro", + "User documentation" : "Documentação do usuário", + "Admin documentation" : "Documentação do administrador", + "Developer documentation" : "Documentação do desenvolvedor", + "Update to {update}" : "Atualizar para {update}", + "Results from other categories" : "Resultados de outras categorias", + "No apps found for your version" : "Nenhum aplicativo encontrado para a sua versão", + "Disable all" : "Desativar tudo", + "Enable all" : "Ativar tudo", + "Download and enable" : "Baixar e ativar", + "Enable" : "Ativar", + "Enable untested app" : "Ativar aplicativo não testado", + "The app will be downloaded from the app store" : "O aplicativo será baixado da loja de aplicativos", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Este aplicativo não está marcado como compatível com sua versão do Nextcloud. Se você continuar, ainda poderá instalar o aplicativo mas poderá não funcionar como esperado.", + "You do not have permissions to see the details of this user" : "Você não tem permissão para ver os detalhes deste usuário", + "The backend does not support changing the display name" : "O backend não suporta a alteração do nome de exibição", + "New password" : "Nova senha", + "Add user in group" : "Adicionar o usuário no grupo", + "Set user as admin for" : "Definir o usuário como administrador para", + "Select user quota" : "Selecionar a cota de usuário", + "No language set" : "Nenhum conjunto de idiomas", + "Never" : "Nunca", + "Delete user" : "Excluir usuário", + "Wipe all devices" : "Limpar todos os dispositivos", + "Disable user" : "Desativar usuário", + "Enable user" : "Ativar usuário", + "Resend welcome email" : "Reenviar e-mail de boas-vindas", + "{size} used" : "{size} usado", + "Welcome mail sent!" : "E-mail de boas-vindas enviado!", + "Display name" : "Exibir nome", + "Email" : "E-mail", + "Group admin for" : "Grupo administrativo para", + "Quota" : "Cota", + "Language" : "Idioma", + "Storage location" : "Local do armazenamento", + "User backend" : "Plataforma de serviço de usuário", + "Last login" : "Último acesso", + "Will be autogenerated" : "Será autogerado", + "Default language" : "Idioma padrão", + "Add a new user" : "Adicione um novo usuário", + "No users in here" : "Nenhum usuário aqui", + "Default quota" : "Cota padrão", + "Password change is disabled because the master key is disabled" : "A alteração de senha está desativada porque a chave mestra está desativada", + "Common languages" : "Idiomas comuns", + "All languages" : "Todos os idiomas", + "Your apps" : "Seus aplicativos", + "Active apps" : "Aplicativos ativados", + "Disabled apps" : "Aplicativos desativados", + "Updates" : "Atualizações", + "App bundles" : "Pacotes de aplicativos", + "{license}-licensed" : "{license}-licenciado", + "New user" : "Novo usuário", + "Default quota:" : "Cota padrão:", + "Select default quota" : "Selecionar a cota padrão", + "Show Languages" : "Exibir idiomas", + "Show last login" : "Exibir último login", + "Show user backend" : "Exibir plataforma de serviço de usuário", + "Show storage path" : "Exibir caminho de armazenamento", + "You are about to remove the group {group}. The users will NOT be deleted." : "Você está prestes a excluir o grupo {group}. Os usuários NÃO serão excluídos.", + "Please confirm the group removal " : "Confirme a remoção do grupo", + "Remove group" : "Excluir grupo", + "Admins" : "Administradores", + "Disabled users" : "Desativar usuários", + "Everyone" : "Para todos", + "Add group" : "Adicionar grupo", + "An error occured during the request. Unable to proceed." : "Ocorreu um erro durante a requisição. Impossível continuar.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "O aplicativo foi ativado, mas precisa ser atualizado. Você será redirecionado para a página de atualização em 5 segundos.", + "App update" : "Atualizar aplicativo", + "Error: This app can not be enabled because it makes the server unstable" : "Erro: Este aplicativo não pode ser ativado porque torna o servidor instável", + "SSL Root Certificates" : "Certificados Raiz SSL", + "Common Name" : "Nome comum", + "Valid until" : "Válido até", + "Issued By" : "Emitido por", + "Valid until %s" : "Válido até %s", + "Import root certificate" : "Importar certificado raiz", + "Administrator documentation" : "Documentação do administrador", + "Documentation" : "Documentação", + "Forum" : "Fórum", + "None" : "Nenhuma", + "Login" : "Login", + "Plain" : "Plano", + "NT LAN Manager" : "Gerenciador NT LAN", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Servidor de e-mail", + "Open documentation" : "Abrir documentação", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "É importante configurar este servidor para poder enviar e-mails para redefinir a senha e notificações.", + "Send mode" : "Modo de envio", + "Encryption" : "Criptografia", + "Sendmail mode" : "Modo do sendmail", + "From address" : "Endereço \"From\"", + "mail" : "e-mail", + "Authentication method" : "Método de autenticação", + "Authentication required" : "Autenticação é requerida", + "Server address" : "Endereço do servidor", + "Port" : "Porto", + "Credentials" : "Credenciais", + "SMTP Username" : "Nome do Usuário SMTP", + "SMTP Password" : "Senha SMTP", + "Save" : "Salvar", + "Test email settings" : "Configurações do e-mail de teste", + "Send email" : "Enviar e-mail", + "Security & setup warnings" : "Segurança & avisos de configuração", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "É importante para a segurança e desempenho da sua instalação que tudo esteja configurado corretamente. Para ajudá-lo com isso, estamos fazendo algumas verificações automáticas. Por favor, consulte a documentação para mais informações.", + "All checks passed." : "Todas as verificações passaram.", + "There are some errors regarding your setup." : "Existem alguns erros na configuração.", + "There are some warnings regarding your setup." : "Existem alguns avisos na configuração.", + "Checking for system and security issues." : "Verificando problemas de sistema e segurança.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Verifique novamente os <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">manuais de instalação ↗</a> e procure por erros ou avisos no <a href=\"%2$s\">log</a>.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Verifique a segurança do seu Nextcloud em <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">nossa verificação de segurança ↗</a>.", + "Version" : "Versão", + "Two-Factor Authentication" : "Autenticação de Dois Fatores", + "Server-side encryption" : "Criptografia do lado do servidor", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "A criptografia do lado do servidor torna possível criptografar arquivos que são carregados para este servidor. Isso diminui um pouco o desempenho portanto habilite apenas se necessário.", + "Enable server-side encryption" : "Ativar a criptografia do lado do servidor", + "Please read carefully before activating server-side encryption: " : "Por favor, leia com atenção antes de ativar a criptografia do lado do servidor:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Uma vez que a criptografia é ativada, todos os arquivos enviados ao servidor a partir desse ponto em diante serão criptografados e assim ficarão no servidor. Só será possível desativar a criptografia em uma data posterior se o módulo de criptografia ativo suportar essa função e todas as pré-condições sejam cumpridas (ex., defininindo uma chave de recuperação).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Criptografia por si só não garante a segurança do sistema. Por favor, veja a documentação para mais informações sobe como o aplicativo de criptografia funciona e os casos de uso suportados.", + "Be aware that encryption always increases the file size." : "Esteja ciente de que a criptografia sempre aumenta o tamanho do arquivo.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "É sempre bom criar backups regulares dos seus dados. No caso de criptografia, certifique-se de fazer backup das chaves de criptografia juntamente com os seus dados.", + "This is the final warning: Do you really want to enable encryption?" : "Este é o aviso final: Você realmente quer ativar a criptografia?", + "Enable encryption" : "Ativar criptografia", + "No encryption module loaded, please enable an encryption module in the app menu." : "Nenhum módulo de criptografia carregado. Por favor, ative um deles no menu de aplicativos.", + "Select default encryption module:" : "Selecione o módulo de criptografia padrão:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Você precisa migrar suas chaves de criptografia da antiga criptografia (ownCloud <= 8,0) para a nova. Por favor, ative o \"Módulo de criptografia padrão\" e execute 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Você precisa migrar suas chaves de criptografia a partir da antiga criptografia (ownCloud <= 8,0) para a nova.", + "Start migration" : "Iniciar migração", + "Background jobs" : "Tarefas em segundo plano", + "Last job ran %s." : "Última tarefa rodou há %s.", + "Last job execution ran %s. Something seems wrong." : "Última tarefa rodou há %s. Algo parece errado.", + "Background job didn’t run yet!" : "O job em segundo plano ainda não rodou!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para um desempenho ideal, é importante configurar corretamente os trabalhos em segundo plano. Para instâncias maiores, 'Cron' é a configuração recomendada. Consulte a documentação para obter mais informações.", + "Pick background job setting" : "Configuração de trabalhos em segundo plano", + "Execute one task with each page loaded" : "Execute uma tarefa com cada página carregada", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "O cron.php está registrado num webcron para chamar cron.php a cada 5 minutos em HTTP.", + "Use system cron service to call the cron.php file every 5 minutes." : "Use o serviço cron do sistema para chamar o arquivo cron.php a cada 5 minutos.", + "The cron.php needs to be executed by the system user \"%s\"." : "O cron.php precisa ser executado pelo usuário de sistema \"%s\"", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para executar isso, você precisa da extensão PHP POSIX. Veja a {linkstart} documentação do PHP {linkend} para mais detalhes.", + "Sharing" : "Compartilhamento", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador, você pode ajustar o comportamento dos compartilhamentos. Consulte a documentação para obter mais informações.", + "Allow apps to use the Share API" : "Permitir que aplicativos usem a API de compartilhamento", + "Allow users to share via link" : "Permitir que os usuários compartilhem por link", + "Allow public uploads" : "Permitir envio público", + "Always ask for a password" : "Sempre pedir a senha", + "Enforce password protection" : "Reforce a proteção por senha", + "Set default expiration date" : "Configurar a data de expiração", + "Expire after " : "Expirar depois de", + "days" : "dias", + "Enforce expiration date" : "Fazer cumprir a data de expiração", + "Allow resharing" : "Permitir o recompartilhamento", + "Allow sharing with groups" : "Permitir o compartilhamento com grupos", + "Restrict users to only share with users in their groups" : "Restringir os usuários a compartilhar somente com os usuários em seus grupos", + "Exclude groups from sharing" : "Excluir grupos do compartilhamento", + "These groups will still be able to receive shares, but not to initiate them." : "Esses grupos ainda serão capazes de receber compartilhamentos, mas não iniciá-los.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Permitir autocompletar o nome do usuário na tela de compartilhamento. Se desabilitado, o nome completo ou e-mail deverá ser digitado.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Exibir o texto de aviso na página pública do link de envio (só é mostrado quando a lista de arquivos está oculta).", + "This text will be shown on the public link upload page when the file list is hidden." : "Este texto será mostrado na página de envio do link público quando a lista de arquivos está oculta.", + "Default share permissions" : "Permissões padrão de compartilhamento", + "Personal" : "Pessoal", + "Administration" : "Administração", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Desenvolvido pela {communityopen}comunidade Nextcloud{linkclose}. O {githubopen}código-fonte{linkclose} é licenciado sob a {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Curta nossa página no Facebook", + "Follow us on Twitter" : "Siga-nos no Twitter", + "Follow us on Mastodon" : "Siga-nos no Mastodon", + "Check out our blog" : "Confira nosso blog", + "Subscribe to our newsletter" : "Assine nosso boletim informativo", + "Profile picture" : "Imagem para o perfil", + "Upload new" : "Enviar novo", + "Select from Files" : "Selecionar de Arquivos", + "Remove image" : "Remover imagem", + "png or jpg, max. 20 MB" : "png ou jpg, max. 20 MB", + "Picture provided by original account" : "Imagem fornecida pela conta original", + "Cancel" : "Cancelar", + "Choose as profile picture" : "Escolha como imagem de perfil", + "Details" : "Detalhes", + "You are a member of the following groups:" : "Você é membro dos seguintes grupos:", + "You are using <strong>%s</strong>" : "Você está usando <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Você está usando <strong>%1$s</strong> de <strong>%2$s</strong> (<strong>%3$s %%</strong>)", + "Full name" : "Nome completo", + "No display name set" : "Nenhum nome de exibição definido", + "Your email address" : "Seu endereço de e-mail", + "No email address set" : "Nenhum endereço de e-mail foi configurado", + "For password reset and notifications" : "Para redefinição de senha e notificações", + "Phone number" : "Número de telefone", + "Your phone number" : "Seu número de telefone", + "Address" : "Endereço", + "Your postal address" : "Seu endereço postal", + "Website" : "Website", + "It can take up to 24 hours before the account is displayed as verified." : "Pode levar até 24 horas para que a conta seja mostrada como verificada.", + "Link https://…" : "Link https://…", + "Twitter" : "Twitter", + "Twitter handle @…" : "Twitter handle @…", + "Help translate" : "Ajude a traduzir", + "Locale" : "Localização", + "Current password" : "Senha atual", + "Change password" : "Alterar senha", + "Use a second factor besides your password to increase security for your account." : "Use um segundo fator além de sua senha para aumentar a segurança da conta.", + "Disconnect" : "Desconectar", + "Not supported!" : "Não suportado!", + "Press ⌘-C to copy." : "Pressione ⌘-C para copiar.", + "Press Ctrl-C to copy." : "Pressione Ctrl-C para copiar.", + "Error while loading browser sessions and device tokens" : "Erro ao carregar as sessões do browser e tokens do dispositivo", + "Store credentials" : "Salvar credenciais", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php está registrado em um serviço webcron para chamar cron.php a cada 15 minutos em HTTP.", + "Use system cron service to call the cron.php file every 15 minutes." : "Usar o serviço cron para chamar o arquivo cron.php a cada 15 minutos.", + "Follow us on Google+" : "Siga-nos no Google+" +},"pluralForm" :"nplurals=2; plural=(n > 1);" +} \ No newline at end of file diff --git a/apps/settings/l10n/pt_PT.js b/apps/settings/l10n/pt_PT.js new file mode 100644 index 00000000000..fb4f74b0803 --- /dev/null +++ b/apps/settings/l10n/pt_PT.js @@ -0,0 +1,260 @@ +OC.L10N.register( + "settings", + { + "{actor} changed your password" : "{actor} alterou a sua senha", + "You changed your password" : "Você alterou a sua senha", + "Your password was reset by an administrator" : "A sua senha foi alterada por um administrador", + "{actor} changed your email address" : "{actor} alterou o seu endereço de e-mail", + "You changed your email address" : "Você alterou o seu endereço de e-mail", + "Your email address was changed by an administrator" : "O seu endereço de e-mail foi alterado por um administrador", + "Security" : "Segurança", + "You successfully logged in using two-factor authentication (%1$s)" : "Autenticado com sucesso utilizando autenticação de dois factores (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Tentativa falhada de autenticação utilizando dois factores (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "A <strong>password</strong> ou <strong>email</strong> foram modificados", + "Couldn't remove app." : "Não foi possível remover a aplicação.", + "Couldn't update app." : "Não foi possível atualizar a app.", + "Wrong password" : "Palavra-passe errada", + "Saved" : "Guardado", + "No user supplied" : "Nenhum utilizador especificado", + "Unable to change password" : "Não é possível alterar a sua palavra-passe ", + "Authentication error" : "Erro na autenticação", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Por favor introduza uma senha administrativa de recuperação ou todos os dados de utilizador serão perdidos.", + "Wrong admin recovery password. Please check the password and try again." : "Palavra-passe de recuperação do administrador errada. Por favor, verifique a palavra-passe e tente novamente.", + "Backend doesn't support password change, but the user's encryption key was updated." : "O Backend não suporta modificar senhas, mas a chave de cifra do utilizador foi actualizada.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "A instalar e a atualizar as aplicações através da loja de aplicações ou Federated Cloud Sharing", + "Federated Cloud Sharing" : "Federated Cloud Sharing", + "Invalid SMTP password." : "Senha de SMTP inválida.", + "Email setting test" : "Teste definições de email", + "Well done, %s!" : "Muito bem, %s!", + "If you received this email, the email configuration seems to be correct." : "Se recebeu este email, a configuração do serviço de email deverá estar correcta.", + "Email could not be sent. Check your mail server log" : "O email não pode ser enviado. Por favor verifique os logs do seu servidor de e-mail.", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Ocorreu um problema ao enviar o e-mail. Por favor verifique as suas definições. (Erro: %s)", + "You need to set your user email before being able to send test emails." : "Você tem de configurar o seu e-mail de utilizador antes de ser capaz de enviar e-mails de teste", + "Invalid mail address" : "Endereço de correio eletrónico inválido", + "Settings saved" : "Definições guardadas", + "Unable to change full name" : "Não foi possível alterar o seu nome completo", + "Unable to change email address" : "Não foi possível alterar o seu endereço de e-mail", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Por forma a validar a sua conta de Twitter, por favor publique o seguinte Twitter ( garanta que a publicação não contém quebras de linha):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Por forma de validar o Website, por favor publique o conteúdo seguinte na sua raiz em 'well-known/CloudIdVerificationCode.txt' (garanta que o texto completo se encontra numa única linha):", + "%1$s changed your password on %2$s." : "%1$s modificou a sua senha em %2$s.", + "Your password on %s was changed." : "A sua senha para %s foi modificada.", + "Your password on %s was reset by an administrator." : "A sua senha para %s foi redefinida pelo administrador.", + "Password for %1$s changed on %2$s" : "A senha para %1$s foi modificada em %2$s", + "Password changed for %s" : "Senha modificada para %s", + "If you did not request this, please contact an administrator." : "Se não requereu isto por favor contacte um administrador.", + "Your email address on %s was changed." : "O endereço de e-mail me %s foi modificado.", + "Your email address on %s was changed by an administrator." : "O seu endereço de email em %s foi modificado por um administrador.", + "Email address for %1$s changed on %2$s" : "Endereço de e-mail para %1$s modificado em %2$s", + "Email address changed for %s" : "Endereço de e-mail modificado para %s", + "The new email address is %s" : "O novo endereço de e-mail é %s", + "Your %s account was created" : "A tua conta %s foi criada", + "Welcome aboard" : "Bem-vindo a bordo", + "Welcome aboard %s" : "Bem-vindo a bordo %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Bem-vindo à conta %s, aqui pode adicionar, proteger e partilhar os seus dados.", + "Your username is: %s" : "O seu utilizador é: %s", + "Set your password" : "Escolher senha", + "Go to %s" : "Ir para %s", + "Install Client" : "Instalar cliente", + "Delete" : "Apagar", + "Unlimited" : "Ilimitado", + "Verifying …" : "A verificar...", + "Verify" : "Verificar", + "Migration in progress. Please wait until the migration is finished" : "Migração em progresso. Por favor, aguarde até que a mesma esteja concluída..", + "Migration started …" : "Migração iniciada...", + "Not saved" : "Não guardado", + "Sending…" : "A enviar...", + "Email sent" : "Mensagem de correio eletrónico enviada", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Ocorreu um erro. Por favor, envie um certificado PEM codificado em ASCII.", + "Valid until {date}" : "Válida até {date}", + "Local" : "Local", + "Private" : "Privado", + "Only visible to local users" : "Apenas visível para utilizadores locais", + "Only visible to you" : "Apenas visível por si", + "Contacts" : "Contactos", + "Visible to local users and to trusted servers" : "Visível por utilizadores locais e servidores confiáveis", + "Public" : "Público", + "Will be synced to a global and public address book" : "Será sincronizado com um livro de endereços público e global", + "Very weak password" : "Palavra-passe muito fraca", + "Weak password" : "Palavra-passe fraca", + "So-so password" : "Palavra-passe aceitável", + "Good password" : "Palavra-passe boa", + "Strong password" : "Palavra-passe forte", + "Select a profile picture" : "Selecione uma fotografia de perfil", + "Groups" : "Grupos", + "Limit to groups" : "Limitado a grupos", + "Allow filesystem access" : "Permitir acesso ao sistema de ficheiros", + "Revoke" : "Revogar", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Microsoft Edge", + "Firefox" : "Mozilla Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome para Android", + "Sync client - {os}" : "Sincronizar cliente - {so}", + "This session" : "Esta sessão", + "Device" : "Dispositivo", + "Last activity" : "Última atividade", + "Web, desktop and mobile clients currently logged in to your account." : "Clientes web, desktop e clientes móveis estão actualmente autenticados na sua conta.", + "Error while creating device token" : "Erro durante a criação do token do dispositivo", + "Error while deleting the token" : "Erro durante a eliminação do token", + "App name" : "Nome da App", + "Create new app password" : "Criar nova palavra-passe de aplicação", + "Use the credentials below to configure your app or device." : "Use as credenciais abaixo para configurar a sua app ou dispositivo.", + "For security reasons this password will only be shown once." : "Por motivos de segurança a sua password só será mostrada uma vez.", + "Username" : "Nome de utilizador", + "Password" : "Palavra-passe", + "Done" : "Concluído", + "Copied!" : "Copiado!", + "Copy" : "Copiar", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "As apps oficiais são desenvolvidas de e para a comunidade. Oferecem um repositório central de funcionalidades e estão preparadas para uso em produção.", + "Official" : "Oficial", + "Remove" : "Remover", + "Disable" : "Desativar", + "All" : "Todos", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Esta app não tem a versão mínima do Nextcloud atribuída. Isto será um erro no futuro.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Esta app não tem a versão máxima do Nextcloud atribuída. Isto será um erro no futuro.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Esta aplicação não pode ser instalada porque as seguintes dependências não podem ser realizadas:", + "View in store" : "Ver na loja", + "Visit website" : "Visitar o website", + "Report a bug" : "Reportar um erro", + "User documentation" : "Documentação de Utilizador", + "Admin documentation" : "Documentação do Administrador", + "Developer documentation" : "Documentação de Programador", + "No apps found for your version" : "Nenhuma aplicação encontrada para a sua versão", + "Enable all" : "Ativar todas", + "Download and enable" : "Transferir e ativar", + "Enable" : "Ativar", + "The app will be downloaded from the app store" : "A aplicação será transferida da loja de aplicações", + "New password" : "Nova palavra-passe", + "{size} used" : "{size} utilizado", + "Email" : "Email", + "Group admin for" : "Administrador de grupo para", + "Quota" : "Quota", + "Language" : "Idioma", + "Storage location" : "Localização do armazenamento", + "User backend" : "Backend do utilizador", + "Last login" : "Último início de sessão", + "Default quota" : "Quota padrão", + "Your apps" : "As suas apps", + "Disabled apps" : "Apps desativadas", + "Updates" : "Actualizações", + "App bundles" : "Pacotes de apps", + "Show last login" : "Mostrar último login", + "Show user backend" : "Mostrar interface do utilizador", + "Admins" : "Administrador", + "Everyone" : "Para todos", + "Add group" : "Adicionar grupo", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "A app foi activada mas necessita ser actualizada. Irá ser redireccionado para a página de actualização em 5 segundos.", + "App update" : "Actualização de app", + "Error: This app can not be enabled because it makes the server unstable" : "Erro: Esta app não pode ser activada porque torna o servidor instável.", + "SSL Root Certificates" : "Certificados SSL Root", + "Common Name" : "Nome Comum", + "Valid until" : "Válido até", + "Issued By" : "Emitido Por", + "Valid until %s" : "Válido até %s", + "Import root certificate" : "Importar certificado root", + "Administrator documentation" : "Documentação de Administrador.", + "Forum" : "Fórum", + "None" : "Nenhum", + "Login" : "Iniciar Sessão", + "Plain" : "Plano", + "NT LAN Manager" : "Gestor de REDE NT", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Servidor de Correio Eletrónico", + "Open documentation" : "Abrir documentação", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "É importante configurar este servidor para ser possível enviar emails, possibilitando enviar notificações bem como possibilitar a recuperação de senhas.", + "Send mode" : "Modo de Envio", + "Encryption" : "Encriptação", + "From address" : "Do endereço", + "mail" : "Correio", + "Authentication method" : "Método de Autenticação", + "Authentication required" : "Autenticação necessária", + "Server address" : "Endereço do Servidor", + "Port" : "Porta", + "Credentials" : "Credenciais", + "SMTP Username" : "Nome de utilizador SMTP", + "SMTP Password" : "Palavra-passe SMTP", + "Test email settings" : "Testar definições de e-mail", + "Send email" : "Enviar email", + "Security & setup warnings" : "Avisos de configuração e segurança", + "All checks passed." : "Todas as verificações passaram.", + "Version" : "Versão", + "Server-side encryption" : "Atualizar App", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "A cifra do lado do servidor possibilita cifrar os ficheiros que serão enviados para este servidor. Isto implica um impacto no desempenho e só deverá ser activo quando necessário.", + "Enable server-side encryption" : "Ativar encriptação do lado do servidor", + "Please read carefully before activating server-side encryption: " : "Por favor, leia cuidadosamente antes de ativar a encriptação do lado do servidor:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Uma vez ativada a encriptação, todos os ficheiros carregados para o servidor a partir deste ponto serão encriptados pelo servidor. Só será possível desativar a encriptação numa data mais tarde se o módulo de encriptação ativo suportar essa função, assim como todas as pré-condições (e.g. definir chave de recuperação) sejam cumpridas.", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "A cifra por si só não garante a segurança do sistema. Por favor consulte a documentação para mais detalhes sobre a aplicação de cifra e os casos de uso suportados.", + "Be aware that encryption always increases the file size." : "Tenha em conta que a encriptação aumenta sempre o tamanho do ficheiro.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "É sempre bom criar cópias de segurança regulares dos seus dados, em caso de encriptação tenha a certeza de que faz cópia das chaves de encriptação em conjunto com os seus dados.", + "This is the final warning: Do you really want to enable encryption?" : "Este é o aviso final: quer mesmo ativar a encriptação?", + "Enable encryption" : "Ativar a encriptação", + "No encryption module loaded, please enable an encryption module in the app menu." : "Nenhum módulo de encriptação carregador, por favor ative um módulo de encriptação no menu das aplicações.", + "Select default encryption module:" : "Selecionar o módulo de encriptação predefinido:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Precisa de migrar as suas chaves de encriptação da encriptação antiga (ownCloud <= 8.0) para a nova. Por favor, ative o \"Módulo de encriptação predefinido\" e execute 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Precisa de migrar as suas chaves de encriptação da encriptação antiga (ownCloud <= 8.0) para a nova.", + "Start migration" : "Iniciar migração", + "Background jobs" : "Tarefas de segundo plano", + "Last job ran %s." : "Última tarefa executada: %s.", + "Last job execution ran %s. Something seems wrong." : "Última execução da tarefa: %s. Houve algum problema. ", + "Background job didn’t run yet!" : "Tarefa de segundo plano ainda não foi executada!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para desempenho óptimo é importante que configura as tarefas de segundo plano correctamente. Para maiores instâncias a definição recomendada é 'Cron'. Por favor veja a documentação para mais informações.", + "Execute one task with each page loaded" : "Executar uma tarefa com cada página carregada", + "The cron.php needs to be executed by the system user \"%s\"." : "O cron.php precisa de ser executado pelo utilizador do sistema \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para esta execução precisa da extensão PHP POSIX. Veja {iniciodaligação}documentação PHP{fimdaligação} para mais mais detalhes.", + "Sharing" : "Partilha", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador pode afinar o comportamento de partilha. Por favor veja a documentação para mais informação.", + "Allow apps to use the Share API" : "Permitir que os utilizadores usem a API de partilha", + "Allow users to share via link" : "Permitir que os utilizadores partilhem através do link", + "Allow public uploads" : "Permitir Envios Públicos", + "Always ask for a password" : "Pedir sempre a senha", + "Enforce password protection" : "Forçar proteção por palavra-passe", + "Set default expiration date" : "Especificar a data padrão de expiração", + "Expire after " : "Expira após", + "days" : "dias", + "Enforce expiration date" : "Forçar a data de expiração", + "Allow resharing" : "Permitir repartilha", + "Allow sharing with groups" : "Permitir partilha com grupos.", + "Restrict users to only share with users in their groups" : "Restringe os utilizadores só a partilhar com utilizadores do seu grupo", + "Exclude groups from sharing" : "Excluir grupos das partilhas", + "These groups will still be able to receive shares, but not to initiate them." : "Estes grupos poderão receber partilhas, mas não poderão iniciá-las.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "permitir completar automáticamente nome do utilizador no diálogo de partilha. Se isto estiver inactivo é necessário introduzir o nome do utilizador ou o endereço de e-mail completo. ", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Mostrar aviso legal na página de carregamento de ligações públicas. (Mostrar apenas quando a lista de ficheiros estiver oculta.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Este texto será exibido na página de carregamento de ligações públicas quando a lista de ficheiros estiver oculta. ", + "Personal" : "Pessoal", + "Administration" : "Administração", + "Like our Facebook page" : "Deixe um Gosto na nossa página do Facebook", + "Follow us on Twitter" : "Siga-nos no Twitter", + "Check out our blog" : "Veja o nosso blog", + "Subscribe to our newsletter" : "Subscreva as nossas notícias", + "Profile picture" : "Foto do perfil", + "Upload new" : "Carregar novo", + "Select from Files" : "Seleccione dos Ficheiros", + "Remove image" : "Remover imagem", + "png or jpg, max. 20 MB" : "png ou jpg, máx. 20 MB", + "Picture provided by original account" : "Imagem fornecida pela conta original", + "Cancel" : "Cancelar", + "Choose as profile picture" : "Escolher como fotografia de perfil", + "Full name" : "Nome completo", + "No display name set" : "Nenhum nome display estabelecido", + "Your email address" : "O seu endereço de email", + "No email address set" : "Nenhum endereço de email estabelecido", + "For password reset and notifications" : "Para recuperação de senhas e notificações", + "Phone number" : "Número de telefone", + "Your phone number" : "O seu número de telefone", + "Address" : "Morada", + "Your postal address" : "A sua morada", + "Website" : "Website", + "It can take up to 24 hours before the account is displayed as verified." : "Pode levar até 24 horas para que a conta seja mostrada como verificada.", + "Link https://…" : "Ligação https:// ...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Identificador do Twitter @...", + "Help translate" : "Ajude a traduzir", + "Current password" : "Palavra-passe atual", + "Change password" : "Alterar palavra-passe", + "Store credentials" : "Armazenar credenciais", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php está registada num serviço webcron para chamar cron.php a cada 15 minutos através de HTTP.", + "Use system cron service to call the cron.php file every 15 minutes." : "Use o serviço de tarefas automáticas para chamar o ficheiro cron.php a cada 15 minutos." +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/pt_PT.json b/apps/settings/l10n/pt_PT.json new file mode 100644 index 00000000000..3480a4099c4 --- /dev/null +++ b/apps/settings/l10n/pt_PT.json @@ -0,0 +1,258 @@ +{ "translations": { + "{actor} changed your password" : "{actor} alterou a sua senha", + "You changed your password" : "Você alterou a sua senha", + "Your password was reset by an administrator" : "A sua senha foi alterada por um administrador", + "{actor} changed your email address" : "{actor} alterou o seu endereço de e-mail", + "You changed your email address" : "Você alterou o seu endereço de e-mail", + "Your email address was changed by an administrator" : "O seu endereço de e-mail foi alterado por um administrador", + "Security" : "Segurança", + "You successfully logged in using two-factor authentication (%1$s)" : "Autenticado com sucesso utilizando autenticação de dois factores (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Tentativa falhada de autenticação utilizando dois factores (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "A <strong>password</strong> ou <strong>email</strong> foram modificados", + "Couldn't remove app." : "Não foi possível remover a aplicação.", + "Couldn't update app." : "Não foi possível atualizar a app.", + "Wrong password" : "Palavra-passe errada", + "Saved" : "Guardado", + "No user supplied" : "Nenhum utilizador especificado", + "Unable to change password" : "Não é possível alterar a sua palavra-passe ", + "Authentication error" : "Erro na autenticação", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Por favor introduza uma senha administrativa de recuperação ou todos os dados de utilizador serão perdidos.", + "Wrong admin recovery password. Please check the password and try again." : "Palavra-passe de recuperação do administrador errada. Por favor, verifique a palavra-passe e tente novamente.", + "Backend doesn't support password change, but the user's encryption key was updated." : "O Backend não suporta modificar senhas, mas a chave de cifra do utilizador foi actualizada.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "A instalar e a atualizar as aplicações através da loja de aplicações ou Federated Cloud Sharing", + "Federated Cloud Sharing" : "Federated Cloud Sharing", + "Invalid SMTP password." : "Senha de SMTP inválida.", + "Email setting test" : "Teste definições de email", + "Well done, %s!" : "Muito bem, %s!", + "If you received this email, the email configuration seems to be correct." : "Se recebeu este email, a configuração do serviço de email deverá estar correcta.", + "Email could not be sent. Check your mail server log" : "O email não pode ser enviado. Por favor verifique os logs do seu servidor de e-mail.", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Ocorreu um problema ao enviar o e-mail. Por favor verifique as suas definições. (Erro: %s)", + "You need to set your user email before being able to send test emails." : "Você tem de configurar o seu e-mail de utilizador antes de ser capaz de enviar e-mails de teste", + "Invalid mail address" : "Endereço de correio eletrónico inválido", + "Settings saved" : "Definições guardadas", + "Unable to change full name" : "Não foi possível alterar o seu nome completo", + "Unable to change email address" : "Não foi possível alterar o seu endereço de e-mail", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Por forma a validar a sua conta de Twitter, por favor publique o seguinte Twitter ( garanta que a publicação não contém quebras de linha):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Por forma de validar o Website, por favor publique o conteúdo seguinte na sua raiz em 'well-known/CloudIdVerificationCode.txt' (garanta que o texto completo se encontra numa única linha):", + "%1$s changed your password on %2$s." : "%1$s modificou a sua senha em %2$s.", + "Your password on %s was changed." : "A sua senha para %s foi modificada.", + "Your password on %s was reset by an administrator." : "A sua senha para %s foi redefinida pelo administrador.", + "Password for %1$s changed on %2$s" : "A senha para %1$s foi modificada em %2$s", + "Password changed for %s" : "Senha modificada para %s", + "If you did not request this, please contact an administrator." : "Se não requereu isto por favor contacte um administrador.", + "Your email address on %s was changed." : "O endereço de e-mail me %s foi modificado.", + "Your email address on %s was changed by an administrator." : "O seu endereço de email em %s foi modificado por um administrador.", + "Email address for %1$s changed on %2$s" : "Endereço de e-mail para %1$s modificado em %2$s", + "Email address changed for %s" : "Endereço de e-mail modificado para %s", + "The new email address is %s" : "O novo endereço de e-mail é %s", + "Your %s account was created" : "A tua conta %s foi criada", + "Welcome aboard" : "Bem-vindo a bordo", + "Welcome aboard %s" : "Bem-vindo a bordo %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Bem-vindo à conta %s, aqui pode adicionar, proteger e partilhar os seus dados.", + "Your username is: %s" : "O seu utilizador é: %s", + "Set your password" : "Escolher senha", + "Go to %s" : "Ir para %s", + "Install Client" : "Instalar cliente", + "Delete" : "Apagar", + "Unlimited" : "Ilimitado", + "Verifying …" : "A verificar...", + "Verify" : "Verificar", + "Migration in progress. Please wait until the migration is finished" : "Migração em progresso. Por favor, aguarde até que a mesma esteja concluída..", + "Migration started …" : "Migração iniciada...", + "Not saved" : "Não guardado", + "Sending…" : "A enviar...", + "Email sent" : "Mensagem de correio eletrónico enviada", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Ocorreu um erro. Por favor, envie um certificado PEM codificado em ASCII.", + "Valid until {date}" : "Válida até {date}", + "Local" : "Local", + "Private" : "Privado", + "Only visible to local users" : "Apenas visível para utilizadores locais", + "Only visible to you" : "Apenas visível por si", + "Contacts" : "Contactos", + "Visible to local users and to trusted servers" : "Visível por utilizadores locais e servidores confiáveis", + "Public" : "Público", + "Will be synced to a global and public address book" : "Será sincronizado com um livro de endereços público e global", + "Very weak password" : "Palavra-passe muito fraca", + "Weak password" : "Palavra-passe fraca", + "So-so password" : "Palavra-passe aceitável", + "Good password" : "Palavra-passe boa", + "Strong password" : "Palavra-passe forte", + "Select a profile picture" : "Selecione uma fotografia de perfil", + "Groups" : "Grupos", + "Limit to groups" : "Limitado a grupos", + "Allow filesystem access" : "Permitir acesso ao sistema de ficheiros", + "Revoke" : "Revogar", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Microsoft Edge", + "Firefox" : "Mozilla Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome para Android", + "Sync client - {os}" : "Sincronizar cliente - {so}", + "This session" : "Esta sessão", + "Device" : "Dispositivo", + "Last activity" : "Última atividade", + "Web, desktop and mobile clients currently logged in to your account." : "Clientes web, desktop e clientes móveis estão actualmente autenticados na sua conta.", + "Error while creating device token" : "Erro durante a criação do token do dispositivo", + "Error while deleting the token" : "Erro durante a eliminação do token", + "App name" : "Nome da App", + "Create new app password" : "Criar nova palavra-passe de aplicação", + "Use the credentials below to configure your app or device." : "Use as credenciais abaixo para configurar a sua app ou dispositivo.", + "For security reasons this password will only be shown once." : "Por motivos de segurança a sua password só será mostrada uma vez.", + "Username" : "Nome de utilizador", + "Password" : "Palavra-passe", + "Done" : "Concluído", + "Copied!" : "Copiado!", + "Copy" : "Copiar", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "As apps oficiais são desenvolvidas de e para a comunidade. Oferecem um repositório central de funcionalidades e estão preparadas para uso em produção.", + "Official" : "Oficial", + "Remove" : "Remover", + "Disable" : "Desativar", + "All" : "Todos", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Esta app não tem a versão mínima do Nextcloud atribuída. Isto será um erro no futuro.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Esta app não tem a versão máxima do Nextcloud atribuída. Isto será um erro no futuro.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Esta aplicação não pode ser instalada porque as seguintes dependências não podem ser realizadas:", + "View in store" : "Ver na loja", + "Visit website" : "Visitar o website", + "Report a bug" : "Reportar um erro", + "User documentation" : "Documentação de Utilizador", + "Admin documentation" : "Documentação do Administrador", + "Developer documentation" : "Documentação de Programador", + "No apps found for your version" : "Nenhuma aplicação encontrada para a sua versão", + "Enable all" : "Ativar todas", + "Download and enable" : "Transferir e ativar", + "Enable" : "Ativar", + "The app will be downloaded from the app store" : "A aplicação será transferida da loja de aplicações", + "New password" : "Nova palavra-passe", + "{size} used" : "{size} utilizado", + "Email" : "Email", + "Group admin for" : "Administrador de grupo para", + "Quota" : "Quota", + "Language" : "Idioma", + "Storage location" : "Localização do armazenamento", + "User backend" : "Backend do utilizador", + "Last login" : "Último início de sessão", + "Default quota" : "Quota padrão", + "Your apps" : "As suas apps", + "Disabled apps" : "Apps desativadas", + "Updates" : "Actualizações", + "App bundles" : "Pacotes de apps", + "Show last login" : "Mostrar último login", + "Show user backend" : "Mostrar interface do utilizador", + "Admins" : "Administrador", + "Everyone" : "Para todos", + "Add group" : "Adicionar grupo", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "A app foi activada mas necessita ser actualizada. Irá ser redireccionado para a página de actualização em 5 segundos.", + "App update" : "Actualização de app", + "Error: This app can not be enabled because it makes the server unstable" : "Erro: Esta app não pode ser activada porque torna o servidor instável.", + "SSL Root Certificates" : "Certificados SSL Root", + "Common Name" : "Nome Comum", + "Valid until" : "Válido até", + "Issued By" : "Emitido Por", + "Valid until %s" : "Válido até %s", + "Import root certificate" : "Importar certificado root", + "Administrator documentation" : "Documentação de Administrador.", + "Forum" : "Fórum", + "None" : "Nenhum", + "Login" : "Iniciar Sessão", + "Plain" : "Plano", + "NT LAN Manager" : "Gestor de REDE NT", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Servidor de Correio Eletrónico", + "Open documentation" : "Abrir documentação", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "É importante configurar este servidor para ser possível enviar emails, possibilitando enviar notificações bem como possibilitar a recuperação de senhas.", + "Send mode" : "Modo de Envio", + "Encryption" : "Encriptação", + "From address" : "Do endereço", + "mail" : "Correio", + "Authentication method" : "Método de Autenticação", + "Authentication required" : "Autenticação necessária", + "Server address" : "Endereço do Servidor", + "Port" : "Porta", + "Credentials" : "Credenciais", + "SMTP Username" : "Nome de utilizador SMTP", + "SMTP Password" : "Palavra-passe SMTP", + "Test email settings" : "Testar definições de e-mail", + "Send email" : "Enviar email", + "Security & setup warnings" : "Avisos de configuração e segurança", + "All checks passed." : "Todas as verificações passaram.", + "Version" : "Versão", + "Server-side encryption" : "Atualizar App", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "A cifra do lado do servidor possibilita cifrar os ficheiros que serão enviados para este servidor. Isto implica um impacto no desempenho e só deverá ser activo quando necessário.", + "Enable server-side encryption" : "Ativar encriptação do lado do servidor", + "Please read carefully before activating server-side encryption: " : "Por favor, leia cuidadosamente antes de ativar a encriptação do lado do servidor:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Uma vez ativada a encriptação, todos os ficheiros carregados para o servidor a partir deste ponto serão encriptados pelo servidor. Só será possível desativar a encriptação numa data mais tarde se o módulo de encriptação ativo suportar essa função, assim como todas as pré-condições (e.g. definir chave de recuperação) sejam cumpridas.", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "A cifra por si só não garante a segurança do sistema. Por favor consulte a documentação para mais detalhes sobre a aplicação de cifra e os casos de uso suportados.", + "Be aware that encryption always increases the file size." : "Tenha em conta que a encriptação aumenta sempre o tamanho do ficheiro.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "É sempre bom criar cópias de segurança regulares dos seus dados, em caso de encriptação tenha a certeza de que faz cópia das chaves de encriptação em conjunto com os seus dados.", + "This is the final warning: Do you really want to enable encryption?" : "Este é o aviso final: quer mesmo ativar a encriptação?", + "Enable encryption" : "Ativar a encriptação", + "No encryption module loaded, please enable an encryption module in the app menu." : "Nenhum módulo de encriptação carregador, por favor ative um módulo de encriptação no menu das aplicações.", + "Select default encryption module:" : "Selecionar o módulo de encriptação predefinido:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Precisa de migrar as suas chaves de encriptação da encriptação antiga (ownCloud <= 8.0) para a nova. Por favor, ative o \"Módulo de encriptação predefinido\" e execute 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Precisa de migrar as suas chaves de encriptação da encriptação antiga (ownCloud <= 8.0) para a nova.", + "Start migration" : "Iniciar migração", + "Background jobs" : "Tarefas de segundo plano", + "Last job ran %s." : "Última tarefa executada: %s.", + "Last job execution ran %s. Something seems wrong." : "Última execução da tarefa: %s. Houve algum problema. ", + "Background job didn’t run yet!" : "Tarefa de segundo plano ainda não foi executada!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Para desempenho óptimo é importante que configura as tarefas de segundo plano correctamente. Para maiores instâncias a definição recomendada é 'Cron'. Por favor veja a documentação para mais informações.", + "Execute one task with each page loaded" : "Executar uma tarefa com cada página carregada", + "The cron.php needs to be executed by the system user \"%s\"." : "O cron.php precisa de ser executado pelo utilizador do sistema \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para esta execução precisa da extensão PHP POSIX. Veja {iniciodaligação}documentação PHP{fimdaligação} para mais mais detalhes.", + "Sharing" : "Partilha", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador pode afinar o comportamento de partilha. Por favor veja a documentação para mais informação.", + "Allow apps to use the Share API" : "Permitir que os utilizadores usem a API de partilha", + "Allow users to share via link" : "Permitir que os utilizadores partilhem através do link", + "Allow public uploads" : "Permitir Envios Públicos", + "Always ask for a password" : "Pedir sempre a senha", + "Enforce password protection" : "Forçar proteção por palavra-passe", + "Set default expiration date" : "Especificar a data padrão de expiração", + "Expire after " : "Expira após", + "days" : "dias", + "Enforce expiration date" : "Forçar a data de expiração", + "Allow resharing" : "Permitir repartilha", + "Allow sharing with groups" : "Permitir partilha com grupos.", + "Restrict users to only share with users in their groups" : "Restringe os utilizadores só a partilhar com utilizadores do seu grupo", + "Exclude groups from sharing" : "Excluir grupos das partilhas", + "These groups will still be able to receive shares, but not to initiate them." : "Estes grupos poderão receber partilhas, mas não poderão iniciá-las.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "permitir completar automáticamente nome do utilizador no diálogo de partilha. Se isto estiver inactivo é necessário introduzir o nome do utilizador ou o endereço de e-mail completo. ", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Mostrar aviso legal na página de carregamento de ligações públicas. (Mostrar apenas quando a lista de ficheiros estiver oculta.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Este texto será exibido na página de carregamento de ligações públicas quando a lista de ficheiros estiver oculta. ", + "Personal" : "Pessoal", + "Administration" : "Administração", + "Like our Facebook page" : "Deixe um Gosto na nossa página do Facebook", + "Follow us on Twitter" : "Siga-nos no Twitter", + "Check out our blog" : "Veja o nosso blog", + "Subscribe to our newsletter" : "Subscreva as nossas notícias", + "Profile picture" : "Foto do perfil", + "Upload new" : "Carregar novo", + "Select from Files" : "Seleccione dos Ficheiros", + "Remove image" : "Remover imagem", + "png or jpg, max. 20 MB" : "png ou jpg, máx. 20 MB", + "Picture provided by original account" : "Imagem fornecida pela conta original", + "Cancel" : "Cancelar", + "Choose as profile picture" : "Escolher como fotografia de perfil", + "Full name" : "Nome completo", + "No display name set" : "Nenhum nome display estabelecido", + "Your email address" : "O seu endereço de email", + "No email address set" : "Nenhum endereço de email estabelecido", + "For password reset and notifications" : "Para recuperação de senhas e notificações", + "Phone number" : "Número de telefone", + "Your phone number" : "O seu número de telefone", + "Address" : "Morada", + "Your postal address" : "A sua morada", + "Website" : "Website", + "It can take up to 24 hours before the account is displayed as verified." : "Pode levar até 24 horas para que a conta seja mostrada como verificada.", + "Link https://…" : "Ligação https:// ...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Identificador do Twitter @...", + "Help translate" : "Ajude a traduzir", + "Current password" : "Palavra-passe atual", + "Change password" : "Alterar palavra-passe", + "Store credentials" : "Armazenar credenciais", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php está registada num serviço webcron para chamar cron.php a cada 15 minutos através de HTTP.", + "Use system cron service to call the cron.php file every 15 minutes." : "Use o serviço de tarefas automáticas para chamar o ficheiro cron.php a cada 15 minutos." +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} \ No newline at end of file diff --git a/apps/settings/l10n/ro.js b/apps/settings/l10n/ro.js new file mode 100644 index 00000000000..78741edd1b8 --- /dev/null +++ b/apps/settings/l10n/ro.js @@ -0,0 +1,314 @@ +OC.L10N.register( + "settings", + { + "{actor} added you to group {group}" : "{actor} te-a adăugat în grupul {group}", + "You added {user} to group {group}" : "Ai adăugat {user} în grupul {group}", + "{actor} added {user} to group {group}" : "{actor} a adăugat pe {user} în grupul {group}", + "An administrator added you to group {group}" : "Un administrator te-a adăugat în grupul {group}", + "An administrator added {user} to group {group}" : "Un administrator a adăugat pe {user} în grupul {group} ", + "{actor} removed you from group {group}" : "{actor} te-a eliminat din grupul {group}", + "You removed {user} from group {group}" : "Ai eliminat {user} din grupul {group}", + "An administrator removed you from group {group}" : "Un administrator te-a eliminat din grupul {group}", + "An administrator removed {user} from group {group}" : "Un administrator a eliminat {user} din groupul {group}", + "{actor} changed your password" : "{actor} ți-a schimbat parola", + "You changed your password" : "Ți-ai schimbat parola", + "Your password was reset by an administrator" : "Parola dumneavoastră a fost resetată de un administrator", + "{actor} changed your email address" : "{actor} ți-a schimbat adresa de email", + "You changed your email address" : "Ți-ai schimbat adresa de email", + "Your email address was changed by an administrator" : "Adresa ta de email a fost modificată de un administrator", + "You created app password \"{token}\"" : "Ai creat parola aplicației \"{token}\"", + "You deleted app password \"{token}\"" : "Ai șters parola aplicației \"{token}\"", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Ai redenumit parola aplicației \"{token}\" în \"{newToken}\"", + "Security" : "Securitate", + "You successfully logged in using two-factor authentication (%1$s)" : "Te-ai conectat cu succes utilizând autentificarea cu doi factori (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "O încercare de autentificare utilizând autentificarea cu doi factori a eșuat (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "<strong>Parola </strong> sau <strong>mailul </strong>a fost modificat", + "Couldn't remove app." : "Nu s-a putut înlătura aplicația.", + "Couldn't update app." : "Aplicaţia nu s-a putut actualiza.", + "Wrong password" : "Parolă greșită", + "Saved" : "Salvat", + "No user supplied" : "Nu a fost furnizat niciun utilizator", + "Unable to change password" : "Imposibil de schimbat parola", + "Authentication error" : "Eroare la autentificare", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Furnizează o parolă administrativă de recuperare, altfel toate datele utilizatorilor vor fi pierdute", + "Wrong admin recovery password. Please check the password and try again." : "Parolă administrativă de recuperare greșită. Verifică parola și încearcă din nou.", + "Federated Cloud Sharing" : "Partajare federalizata cloud", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL utilizează o versiune %1$sneupdatată (%2$s). Vă rugăm să updatați sistemul de operare sau actualizați caracteristicile %3$scare nu funcționează în mod fiabil.", + "Invalid SMTP password." : "Parolă SMTP invalidă.", + "Email setting test" : "Test setări email", + "Well done, %s!" : "Felicitări, %s!", + "If you received this email, the email configuration seems to be correct." : "Daca primești acest mail, configurările de email au fost efectuate corect.", + "Email could not be sent. Check your mail server log" : "Mailul nu a putut fi trimis. Verifică logul serverului de mail.", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : " A apărut o problemă la trimiterea emailului. Verifică-ți setărie. (Eroare: %s)", + "You need to set your user email before being able to send test emails." : "Trebuie să îți setezi emailul de utilizator înainte de a putea să trimiți emailuri.", + "Invalid mail address" : "Adresa mail invalidă", + "Settings saved" : "Setările au fost salvate", + "Unable to change full name" : "Nu s-a putut schimba numele complet", + "Unable to change email address" : "Nu s-a putut schimba adresa email", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Pentru a putea verifica contul de Twitter, postați următorul tweet (asigurați-vă că îl postați fără spații):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Pentru a verifica site-ul dvs., stocați următorul conținut în root-ul siteului web la \".well-known / CloudIdVerificationCode.txt\" (asigurați-vă că textul complet este compus dintr-o singură linie):", + "%1$s changed your password on %2$s." : "%1$s ți-a schimbat parola pe %2$s.", + "Your password on %s was changed." : "Parola ta pe %s a fost modificată.", + "Your password on %s was reset by an administrator." : "Parola ta pe %s a fost resetată de către un administrator.", + "Password for %1$s changed on %2$s" : "Parola pentru %1$s modificată pe %2$s", + "Password changed for %s" : "Parolă modificată pentru %s", + "If you did not request this, please contact an administrator." : "Dacă nu ai solicitat aceasta, te rugăm să contactezi un administrator.", + "Your email address on %s was changed." : "Adresa de mail pe %s a fost modificată.", + "Your email address on %s was changed by an administrator." : "Adresa de mail pe %s a fost modificată de către un administrator.", + "Email address for %1$s changed on %2$s" : "Adresa de mail pentru %1$s a fost modificată pe %2$s", + "Email address changed for %s" : "Adresa de email schimbată în %s", + "The new email address is %s" : "Adresa de email nouă este%s", + "Your %s account was created" : "Contul tău %s a fost creat", + "Welcome aboard" : "Bun venit la bord", + "Welcome aboard %s" : "Bun venit la bord %s", + "Your username is: %s" : "Utilizatorul tău este: %s", + "Set your password" : "Setează parola", + "Install Client" : "Instalează client", + "Delete" : "Șterge", + "Unlimited" : "Nelimitată", + "Verifying …" : "Se verifică ...", + "Verify" : "Verifică", + "Migration in progress. Please wait until the migration is finished" : "Migrare în progres. Așteaptă până când migrarea este finalizată", + "Migration started …" : "Migrarea a început...", + "Not saved" : "Nu a fost salvat", + "Sending…" : "Se trimite...", + "Email sent" : "Mesajul a fost expediat", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "A apărut o eroare. Te rugăm să uploadezi un certificat PEM în format ASCII.", + "Valid until {date}" : "Valabil până la {date}", + "Local" : "Local", + "Private" : "Privat", + "Only visible to local users" : "Vizibil userilor locali", + "Only visible to you" : "Vizibil doar pentru tine", + "Contacts" : "Contacte", + "Visible to local users and to trusted servers" : "Vizibil userilor locali si serverelor de încredere", + "Public" : "Public", + "Will be synced to a global and public address book" : "Va fi sincronizat cu o agendă de adrese publice și globale", + "Very weak password" : "Parolă foarte slabă", + "Weak password" : "Parolă slabă", + "So-so password" : "Parolă medie", + "Good password" : "Parolă bună", + "Strong password" : "Parolă puternică", + "An error occurred while changing your language. Please reload the page and try again." : "A apărut o eroare la schimbarea limbii. Reîncărcați pagina și încercați din nou.", + "An error occurred while changing your locale. Please reload the page and try again." : "A apărut o eroare la schimbarea locației. Reîncărcați pagina și încercați din nou.", + "Select a profile picture" : "Selectează o imagine de profil", + "Week starts on {fdow}" : "Săptămâna începe {fdow}", + "Groups" : "Grupuri", + "Group list is empty" : "Lista de grupuri este goală", + "Unable to retrieve the group list" : "Nu s-a putut obține lista de grupuri", + "Afrikaans (Namibia)" : "Afrikaans (Namibia)", + "Afrikaans (South Africa)" : "Afrikaans (South Africa)", + "Afrikaans" : "Afrikaans", + "Akan (Ghana)" : "Akan (Ghana)", + "Akan" : "Akan", + "Albanian (Albania)" : "Albanian (Albania)", + "Albanian" : "Albanian", + "Amharic (Ethiopia)" : "Amharic (Ethiopia)", + "Amharic" : "Amharic", + "Arabic (Algeria)" : "Arabic (Algeria)", + "Arabic (Bahrain)" : "Arabic (Bahrain)", + "Arabic (Egypt)" : "Arabic (Egypt)", + "Arabic (Iraq)" : "Arabic (Iraq)", + "Arabic (Jordan)" : "Arabic (Jordan)", + "Arabic (Kuwait)" : "Arabic (Kuwait)", + "Arabic (Lebanon)" : "Arabic (Lebanon)", + "Arabic (Libya)" : "Arabic (Libya)", + "Arabic (Morocco)" : "Arabic (Morocco)", + "Arabic (Oman)" : "Arabic (Oman)", + "Arabic (Qatar)" : "Arabic (Qatar)", + "Arabic (Saudi Arabia)" : "Arabic (Saudi Arabia)", + "Arabic (Sudan)" : "Arabic (Sudan)", + "Arabic (Syria)" : "Arabic (Syria)", + "Arabic (Tunisia)" : "Arabic (Tunisia)", + "Arabic (United Arab Emirates)" : "Arabic (United Arab Emirates)", + "Arabic (Yemen)" : "Arabic (Yemen)", + "Arabic" : "Arabic", + "Armenian (Armenia)" : "Armenian (Armenia)", + "Armenian" : "Armenian", + "Assamese (India)" : "Assamese (India)", + "Assamese" : "Assamese", + "Asu (Tanzania)" : "Asu (Tanzania)", + "Asu" : "Asu", + "Azerbaijani (Cyrillic)" : "Azerbaijani (Cyrillic)", + "Azerbaijani (Cyrillic, Azerbaijan)" : "Azerbaijani (Cyrillic, Azerbaijan)", + "Azerbaijani (Latin)" : "Azerbaijani (Latin)", + "Azerbaijani (Latin, Azerbaijan)" : "Azerbaijani (Latin, Azerbaijan)", + "Azerbaijani" : "Azerbaijani", + "Bambara (Mali)" : "Bambara (Mali)", + "Bambara" : "Bambara", + "Basque (Spain)" : "Basque (Spain)", + "Basque" : "Basque", + "Belarusian (Belarus)" : "Belarusian (Belarus)", + "Belarusian" : "Belarusian", + "Bemba (Zambia)" : "Bemba (Zambia)", + "Bemba" : "Bemba", + "Bena (Tanzania)" : "Bena (Tanzania)", + "Bena" : "Bena", + "Bengali (Bangladesh)" : "Bengali (Bangladesh)", + "Bengali (India)" : "Bengali (India)", + "Bengali" : "Bengali", + "Bosnian (Bosnia and Herzegovina)" : "Bosnian (Bosnia and Herzegovina)", + "Bosnian" : "Bosnian", + "Bulgarian (Bulgaria)" : "Bulgarian (Bulgaria)", + "Bulgarian" : "Bulgarian", + "Burmese (Myanmar [Burma])" : "Burmese (Myanmar [Burma])", + "Burmese" : "Burmese", + "Catalan (Spain)" : "Catalan (Spain)", + "Catalan" : "Catalan", + "Central Morocco Tamazight (Latin)" : "Central Morocco Tamazight (Latin)", + "Central Morocco Tamazight (Latin, Morocco)" : "Central Morocco Tamazight (Latin, Morocco)", + "Central Morocco Tamazight" : "Central Morocco Tamazight", + "Cherokee (United States)" : "Cherokee (United States)", + "Cherokee" : "Cherokee", + "Chiga (Uganda)" : "Chiga (Uganda)", + "Chiga" : "Chiga", + "Chinese (Simplified Han)" : "Chineză (Simplified Han)", + "Chinese (Simplified Han, China)" : "Chineză (Simplified Han, China)", + "Chinese (Simplified Han, Hong Kong SAR China)" : "Chineză (Han Simplificată, Hong Kong SAR China)", + "Chinese (Simplified Han, Macau SAR China)" : "Chineză (Han Simplificată, Macau SAR China)", + "Chinese (Simplified Han, Singapore)" : "Chineză (Han Simplificată, Singapore)", + "Chinese (Traditional Han)" : "Chineză (Han Traditională)", + "Chinese (Traditional Han, Hong Kong SAR China)" : "Chineză (Han Traditională, Hong Kong SAR China)", + "Chinese (Traditional Han, Macau SAR China)" : "Chineză (Han Traditională, Macau SAR China)", + "Chinese (Traditional Han, Taiwan)" : "Chineză (Han Traditională, Taiwan)", + "Chinese" : "Chineză", + "Cornish (United Kingdom)" : "Cornish (United Kingdom)", + "Cornish" : "Cornish", + "Croatian (Croatia)" : "Croatian (Croatia)", + "Croatian" : "Croatian", + "Czech (Czech Republic)" : "Chehă (Republica Chehă)", + "Czech" : "Chehă", + "Enforce two-factor authentication" : "Forțează autentificarea cu doi factori", + "Limit to groups" : "Limitează pentru grupuri", + "Enforcement of two-factor authentication can be set for certain groups only." : "Forțarea autentificării cu doi factori poate fi setată doar pentru anumite grupuri.", + "Save changes" : "Salvează modificările", + "Device settings" : "Setările dispozitivului", + "Allow filesystem access" : "Permite accesul la fișierele de sistem", + "Rename" : "Redenumește", + "Revoke" : "Revocă", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome for Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Aplicația Nextcloud pentru iOS", + "Nextcloud Android app" : "Aplicația Nextcloud pentru Android", + "Nextcloud Talk for iOS" : "Nextcloud Talk pentru iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk pentru Android", + "This session" : "Această sesiune", + "Device" : "Dispozitiv", + "Last activity" : "Ultima activitate", + "Devices & sessions" : "Dispozitive și sesiuni", + "Error while deleting the token" : "Eroare de ștergere token", + "App name" : "Numele aplicației", + "Create new app password" : "Crează o nouă parolă pentru aplicație", + "Username" : "Nume utilizator", + "Password" : "Parolă", + "Done" : "Realizat", + "Copied!" : "S-a copiat!", + "Copy" : "Copiază", + "Official" : "Oficial", + "Disable" : "Dezactivați", + "All" : "Toate ", + "Visit website" : "Viziteaza pagina web", + "Report a bug" : "Raportează un defect", + "User documentation" : "Documentație utilizator", + "Admin documentation" : "Documentație pentru administrare", + "Developer documentation" : "Documentație pentru dezvoltatori", + "No apps found for your version" : "Nu au fost găsite aplicații pentru versiunea ta", + "Enable" : "Activare", + "The app will be downloaded from the app store" : "Aplicația va fi descărcată din magazin", + "You do not have permissions to see the details of this user" : "Nu aveți permisiuni pentru a vedea detaliile acestui utilizator", + "New password" : "Noua parolă", + "{size} used" : "{size} folosită", + "Email" : "Email", + "Quota" : "Cotă", + "Language" : "Limba", + "Default language" : "Limba implicită", + "Your apps" : "Aplicațiile tale", + "Disabled apps" : "Aplicații inactive", + "Updates" : "Actualizări", + "Show user backend" : "Arată administrare utilizator", + "Admins" : "Administratori", + "Everyone" : "Toți", + "Add group" : "Adaugă grup", + "SSL Root Certificates" : "Certificate SSL rădăcină", + "Common Name" : "Nume comun", + "Valid until" : "Valabil până la", + "Issued By" : "Emis de", + "Valid until %s" : "Valabil până la %s", + "Import root certificate" : "Importă certificat rădăcină", + "Administrator documentation" : "Documentație pentru administrare", + "Forum" : "Forum", + "None" : "Niciuna", + "Login" : "Autentificare", + "Plain" : "Plain", + "NT LAN Manager" : "NT LAN Manager", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Server de email", + "Open documentation" : "Deschide documentația", + "Send mode" : "Modul de expediere", + "Encryption" : "Încriptare", + "From address" : "De la adresa", + "mail" : "poștă", + "Authentication method" : "Modul de autentificare", + "Authentication required" : "Autentificare necesară", + "Server address" : "Adresa server-ului", + "Port" : "Portul", + "Credentials" : "Detalii de autentificare", + "SMTP Username" : "Nume utilizator SMTP", + "SMTP Password" : "Parolă SMTP", + "Test email settings" : "Verifică setările de e-mail", + "Send email" : "Expediază mesajul", + "Security & setup warnings" : "Alerte de securitate & configurare", + "All checks passed." : "Toate verificările s-au terminat fără erori.", + "Version" : "Versiunea", + "Server-side encryption" : "Criptare la nivel de server", + "Enable server-side encryption" : "Activează criptarea pe server", + "Please read carefully before activating server-side encryption: " : "Citește cu atenție înainte să activezi criptarea pe server:", + "This is the final warning: Do you really want to enable encryption?" : "Aceasta este avertizarea finală: Chiar vrei să activezi criptarea?", + "Enable encryption" : "Activează criptarea", + "Select default encryption module:" : "Selectează modulul implicit de criptare:", + "Start migration" : "Pornește migrarea", + "Execute one task with each page loaded" : "Execută o sarcină la fiecare pagină încărcată", + "Sharing" : "Partajare", + "Allow apps to use the Share API" : "Permite aplicațiilor să folosească API-ul de partajare", + "Allow users to share via link" : "Permite utilizatorilor să partajeze via link", + "Allow public uploads" : "Permite încărcări publice", + "Enforce password protection" : "Impune protecția prin parolă", + "Set default expiration date" : "Setează data implicită de expirare", + "Expire after " : "Expiră după", + "days" : "zile", + "Enforce expiration date" : "Impune data de expirare", + "Allow resharing" : "Permite repartajarea", + "Allow sharing with groups" : "Permite partajarea cu grupuri", + "Exclude groups from sharing" : "Exclude grupuri de la partajare", + "Administration" : "Administrare", + "Profile picture" : "Imagine de profil", + "Upload new" : "Încarcă una nouă", + "Select from Files" : "Selectează din fișiere", + "Remove image" : "Înlătură imagine", + "png or jpg, max. 20 MB" : "png sau jpg, max. 20 MB", + "Cancel" : "Anulare", + "Choose as profile picture" : "Alege ca imagine de profil", + "Details" : "Detalii", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Utilizezi <strong>%1$s</strong> din <strong>%2$s</strong> (<strong>%3$s %%</strong>)", + "Full name" : "Nume complet", + "Your email address" : "Adresa ta de email", + "No email address set" : "Fără adresă de email setată", + "Phone number" : "Număr telefon", + "Your phone number" : "Numărul tău de telefon", + "Address" : "Adresă", + "Your postal address" : "Adresă poștală", + "Website" : "Site web", + "Link https://…" : "Link https://…", + "Twitter" : "Twitter", + "Help translate" : "Ajută la traducere", + "Current password" : "Parola curentă", + "Change password" : "Schimbă parola", + "Store credentials" : "Stochează datele de autentificare" +}, +"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));"); diff --git a/apps/settings/l10n/ro.json b/apps/settings/l10n/ro.json new file mode 100644 index 00000000000..84baa84a8c3 --- /dev/null +++ b/apps/settings/l10n/ro.json @@ -0,0 +1,312 @@ +{ "translations": { + "{actor} added you to group {group}" : "{actor} te-a adăugat în grupul {group}", + "You added {user} to group {group}" : "Ai adăugat {user} în grupul {group}", + "{actor} added {user} to group {group}" : "{actor} a adăugat pe {user} în grupul {group}", + "An administrator added you to group {group}" : "Un administrator te-a adăugat în grupul {group}", + "An administrator added {user} to group {group}" : "Un administrator a adăugat pe {user} în grupul {group} ", + "{actor} removed you from group {group}" : "{actor} te-a eliminat din grupul {group}", + "You removed {user} from group {group}" : "Ai eliminat {user} din grupul {group}", + "An administrator removed you from group {group}" : "Un administrator te-a eliminat din grupul {group}", + "An administrator removed {user} from group {group}" : "Un administrator a eliminat {user} din groupul {group}", + "{actor} changed your password" : "{actor} ți-a schimbat parola", + "You changed your password" : "Ți-ai schimbat parola", + "Your password was reset by an administrator" : "Parola dumneavoastră a fost resetată de un administrator", + "{actor} changed your email address" : "{actor} ți-a schimbat adresa de email", + "You changed your email address" : "Ți-ai schimbat adresa de email", + "Your email address was changed by an administrator" : "Adresa ta de email a fost modificată de un administrator", + "You created app password \"{token}\"" : "Ai creat parola aplicației \"{token}\"", + "You deleted app password \"{token}\"" : "Ai șters parola aplicației \"{token}\"", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Ai redenumit parola aplicației \"{token}\" în \"{newToken}\"", + "Security" : "Securitate", + "You successfully logged in using two-factor authentication (%1$s)" : "Te-ai conectat cu succes utilizând autentificarea cu doi factori (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "O încercare de autentificare utilizând autentificarea cu doi factori a eșuat (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "<strong>Parola </strong> sau <strong>mailul </strong>a fost modificat", + "Couldn't remove app." : "Nu s-a putut înlătura aplicația.", + "Couldn't update app." : "Aplicaţia nu s-a putut actualiza.", + "Wrong password" : "Parolă greșită", + "Saved" : "Salvat", + "No user supplied" : "Nu a fost furnizat niciun utilizator", + "Unable to change password" : "Imposibil de schimbat parola", + "Authentication error" : "Eroare la autentificare", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Furnizează o parolă administrativă de recuperare, altfel toate datele utilizatorilor vor fi pierdute", + "Wrong admin recovery password. Please check the password and try again." : "Parolă administrativă de recuperare greșită. Verifică parola și încearcă din nou.", + "Federated Cloud Sharing" : "Partajare federalizata cloud", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL utilizează o versiune %1$sneupdatată (%2$s). Vă rugăm să updatați sistemul de operare sau actualizați caracteristicile %3$scare nu funcționează în mod fiabil.", + "Invalid SMTP password." : "Parolă SMTP invalidă.", + "Email setting test" : "Test setări email", + "Well done, %s!" : "Felicitări, %s!", + "If you received this email, the email configuration seems to be correct." : "Daca primești acest mail, configurările de email au fost efectuate corect.", + "Email could not be sent. Check your mail server log" : "Mailul nu a putut fi trimis. Verifică logul serverului de mail.", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : " A apărut o problemă la trimiterea emailului. Verifică-ți setărie. (Eroare: %s)", + "You need to set your user email before being able to send test emails." : "Trebuie să îți setezi emailul de utilizator înainte de a putea să trimiți emailuri.", + "Invalid mail address" : "Adresa mail invalidă", + "Settings saved" : "Setările au fost salvate", + "Unable to change full name" : "Nu s-a putut schimba numele complet", + "Unable to change email address" : "Nu s-a putut schimba adresa email", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Pentru a putea verifica contul de Twitter, postați următorul tweet (asigurați-vă că îl postați fără spații):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Pentru a verifica site-ul dvs., stocați următorul conținut în root-ul siteului web la \".well-known / CloudIdVerificationCode.txt\" (asigurați-vă că textul complet este compus dintr-o singură linie):", + "%1$s changed your password on %2$s." : "%1$s ți-a schimbat parola pe %2$s.", + "Your password on %s was changed." : "Parola ta pe %s a fost modificată.", + "Your password on %s was reset by an administrator." : "Parola ta pe %s a fost resetată de către un administrator.", + "Password for %1$s changed on %2$s" : "Parola pentru %1$s modificată pe %2$s", + "Password changed for %s" : "Parolă modificată pentru %s", + "If you did not request this, please contact an administrator." : "Dacă nu ai solicitat aceasta, te rugăm să contactezi un administrator.", + "Your email address on %s was changed." : "Adresa de mail pe %s a fost modificată.", + "Your email address on %s was changed by an administrator." : "Adresa de mail pe %s a fost modificată de către un administrator.", + "Email address for %1$s changed on %2$s" : "Adresa de mail pentru %1$s a fost modificată pe %2$s", + "Email address changed for %s" : "Adresa de email schimbată în %s", + "The new email address is %s" : "Adresa de email nouă este%s", + "Your %s account was created" : "Contul tău %s a fost creat", + "Welcome aboard" : "Bun venit la bord", + "Welcome aboard %s" : "Bun venit la bord %s", + "Your username is: %s" : "Utilizatorul tău este: %s", + "Set your password" : "Setează parola", + "Install Client" : "Instalează client", + "Delete" : "Șterge", + "Unlimited" : "Nelimitată", + "Verifying …" : "Se verifică ...", + "Verify" : "Verifică", + "Migration in progress. Please wait until the migration is finished" : "Migrare în progres. Așteaptă până când migrarea este finalizată", + "Migration started …" : "Migrarea a început...", + "Not saved" : "Nu a fost salvat", + "Sending…" : "Se trimite...", + "Email sent" : "Mesajul a fost expediat", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "A apărut o eroare. Te rugăm să uploadezi un certificat PEM în format ASCII.", + "Valid until {date}" : "Valabil până la {date}", + "Local" : "Local", + "Private" : "Privat", + "Only visible to local users" : "Vizibil userilor locali", + "Only visible to you" : "Vizibil doar pentru tine", + "Contacts" : "Contacte", + "Visible to local users and to trusted servers" : "Vizibil userilor locali si serverelor de încredere", + "Public" : "Public", + "Will be synced to a global and public address book" : "Va fi sincronizat cu o agendă de adrese publice și globale", + "Very weak password" : "Parolă foarte slabă", + "Weak password" : "Parolă slabă", + "So-so password" : "Parolă medie", + "Good password" : "Parolă bună", + "Strong password" : "Parolă puternică", + "An error occurred while changing your language. Please reload the page and try again." : "A apărut o eroare la schimbarea limbii. Reîncărcați pagina și încercați din nou.", + "An error occurred while changing your locale. Please reload the page and try again." : "A apărut o eroare la schimbarea locației. Reîncărcați pagina și încercați din nou.", + "Select a profile picture" : "Selectează o imagine de profil", + "Week starts on {fdow}" : "Săptămâna începe {fdow}", + "Groups" : "Grupuri", + "Group list is empty" : "Lista de grupuri este goală", + "Unable to retrieve the group list" : "Nu s-a putut obține lista de grupuri", + "Afrikaans (Namibia)" : "Afrikaans (Namibia)", + "Afrikaans (South Africa)" : "Afrikaans (South Africa)", + "Afrikaans" : "Afrikaans", + "Akan (Ghana)" : "Akan (Ghana)", + "Akan" : "Akan", + "Albanian (Albania)" : "Albanian (Albania)", + "Albanian" : "Albanian", + "Amharic (Ethiopia)" : "Amharic (Ethiopia)", + "Amharic" : "Amharic", + "Arabic (Algeria)" : "Arabic (Algeria)", + "Arabic (Bahrain)" : "Arabic (Bahrain)", + "Arabic (Egypt)" : "Arabic (Egypt)", + "Arabic (Iraq)" : "Arabic (Iraq)", + "Arabic (Jordan)" : "Arabic (Jordan)", + "Arabic (Kuwait)" : "Arabic (Kuwait)", + "Arabic (Lebanon)" : "Arabic (Lebanon)", + "Arabic (Libya)" : "Arabic (Libya)", + "Arabic (Morocco)" : "Arabic (Morocco)", + "Arabic (Oman)" : "Arabic (Oman)", + "Arabic (Qatar)" : "Arabic (Qatar)", + "Arabic (Saudi Arabia)" : "Arabic (Saudi Arabia)", + "Arabic (Sudan)" : "Arabic (Sudan)", + "Arabic (Syria)" : "Arabic (Syria)", + "Arabic (Tunisia)" : "Arabic (Tunisia)", + "Arabic (United Arab Emirates)" : "Arabic (United Arab Emirates)", + "Arabic (Yemen)" : "Arabic (Yemen)", + "Arabic" : "Arabic", + "Armenian (Armenia)" : "Armenian (Armenia)", + "Armenian" : "Armenian", + "Assamese (India)" : "Assamese (India)", + "Assamese" : "Assamese", + "Asu (Tanzania)" : "Asu (Tanzania)", + "Asu" : "Asu", + "Azerbaijani (Cyrillic)" : "Azerbaijani (Cyrillic)", + "Azerbaijani (Cyrillic, Azerbaijan)" : "Azerbaijani (Cyrillic, Azerbaijan)", + "Azerbaijani (Latin)" : "Azerbaijani (Latin)", + "Azerbaijani (Latin, Azerbaijan)" : "Azerbaijani (Latin, Azerbaijan)", + "Azerbaijani" : "Azerbaijani", + "Bambara (Mali)" : "Bambara (Mali)", + "Bambara" : "Bambara", + "Basque (Spain)" : "Basque (Spain)", + "Basque" : "Basque", + "Belarusian (Belarus)" : "Belarusian (Belarus)", + "Belarusian" : "Belarusian", + "Bemba (Zambia)" : "Bemba (Zambia)", + "Bemba" : "Bemba", + "Bena (Tanzania)" : "Bena (Tanzania)", + "Bena" : "Bena", + "Bengali (Bangladesh)" : "Bengali (Bangladesh)", + "Bengali (India)" : "Bengali (India)", + "Bengali" : "Bengali", + "Bosnian (Bosnia and Herzegovina)" : "Bosnian (Bosnia and Herzegovina)", + "Bosnian" : "Bosnian", + "Bulgarian (Bulgaria)" : "Bulgarian (Bulgaria)", + "Bulgarian" : "Bulgarian", + "Burmese (Myanmar [Burma])" : "Burmese (Myanmar [Burma])", + "Burmese" : "Burmese", + "Catalan (Spain)" : "Catalan (Spain)", + "Catalan" : "Catalan", + "Central Morocco Tamazight (Latin)" : "Central Morocco Tamazight (Latin)", + "Central Morocco Tamazight (Latin, Morocco)" : "Central Morocco Tamazight (Latin, Morocco)", + "Central Morocco Tamazight" : "Central Morocco Tamazight", + "Cherokee (United States)" : "Cherokee (United States)", + "Cherokee" : "Cherokee", + "Chiga (Uganda)" : "Chiga (Uganda)", + "Chiga" : "Chiga", + "Chinese (Simplified Han)" : "Chineză (Simplified Han)", + "Chinese (Simplified Han, China)" : "Chineză (Simplified Han, China)", + "Chinese (Simplified Han, Hong Kong SAR China)" : "Chineză (Han Simplificată, Hong Kong SAR China)", + "Chinese (Simplified Han, Macau SAR China)" : "Chineză (Han Simplificată, Macau SAR China)", + "Chinese (Simplified Han, Singapore)" : "Chineză (Han Simplificată, Singapore)", + "Chinese (Traditional Han)" : "Chineză (Han Traditională)", + "Chinese (Traditional Han, Hong Kong SAR China)" : "Chineză (Han Traditională, Hong Kong SAR China)", + "Chinese (Traditional Han, Macau SAR China)" : "Chineză (Han Traditională, Macau SAR China)", + "Chinese (Traditional Han, Taiwan)" : "Chineză (Han Traditională, Taiwan)", + "Chinese" : "Chineză", + "Cornish (United Kingdom)" : "Cornish (United Kingdom)", + "Cornish" : "Cornish", + "Croatian (Croatia)" : "Croatian (Croatia)", + "Croatian" : "Croatian", + "Czech (Czech Republic)" : "Chehă (Republica Chehă)", + "Czech" : "Chehă", + "Enforce two-factor authentication" : "Forțează autentificarea cu doi factori", + "Limit to groups" : "Limitează pentru grupuri", + "Enforcement of two-factor authentication can be set for certain groups only." : "Forțarea autentificării cu doi factori poate fi setată doar pentru anumite grupuri.", + "Save changes" : "Salvează modificările", + "Device settings" : "Setările dispozitivului", + "Allow filesystem access" : "Permite accesul la fișierele de sistem", + "Rename" : "Redenumește", + "Revoke" : "Revocă", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome for Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Aplicația Nextcloud pentru iOS", + "Nextcloud Android app" : "Aplicația Nextcloud pentru Android", + "Nextcloud Talk for iOS" : "Nextcloud Talk pentru iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk pentru Android", + "This session" : "Această sesiune", + "Device" : "Dispozitiv", + "Last activity" : "Ultima activitate", + "Devices & sessions" : "Dispozitive și sesiuni", + "Error while deleting the token" : "Eroare de ștergere token", + "App name" : "Numele aplicației", + "Create new app password" : "Crează o nouă parolă pentru aplicație", + "Username" : "Nume utilizator", + "Password" : "Parolă", + "Done" : "Realizat", + "Copied!" : "S-a copiat!", + "Copy" : "Copiază", + "Official" : "Oficial", + "Disable" : "Dezactivați", + "All" : "Toate ", + "Visit website" : "Viziteaza pagina web", + "Report a bug" : "Raportează un defect", + "User documentation" : "Documentație utilizator", + "Admin documentation" : "Documentație pentru administrare", + "Developer documentation" : "Documentație pentru dezvoltatori", + "No apps found for your version" : "Nu au fost găsite aplicații pentru versiunea ta", + "Enable" : "Activare", + "The app will be downloaded from the app store" : "Aplicația va fi descărcată din magazin", + "You do not have permissions to see the details of this user" : "Nu aveți permisiuni pentru a vedea detaliile acestui utilizator", + "New password" : "Noua parolă", + "{size} used" : "{size} folosită", + "Email" : "Email", + "Quota" : "Cotă", + "Language" : "Limba", + "Default language" : "Limba implicită", + "Your apps" : "Aplicațiile tale", + "Disabled apps" : "Aplicații inactive", + "Updates" : "Actualizări", + "Show user backend" : "Arată administrare utilizator", + "Admins" : "Administratori", + "Everyone" : "Toți", + "Add group" : "Adaugă grup", + "SSL Root Certificates" : "Certificate SSL rădăcină", + "Common Name" : "Nume comun", + "Valid until" : "Valabil până la", + "Issued By" : "Emis de", + "Valid until %s" : "Valabil până la %s", + "Import root certificate" : "Importă certificat rădăcină", + "Administrator documentation" : "Documentație pentru administrare", + "Forum" : "Forum", + "None" : "Niciuna", + "Login" : "Autentificare", + "Plain" : "Plain", + "NT LAN Manager" : "NT LAN Manager", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Server de email", + "Open documentation" : "Deschide documentația", + "Send mode" : "Modul de expediere", + "Encryption" : "Încriptare", + "From address" : "De la adresa", + "mail" : "poștă", + "Authentication method" : "Modul de autentificare", + "Authentication required" : "Autentificare necesară", + "Server address" : "Adresa server-ului", + "Port" : "Portul", + "Credentials" : "Detalii de autentificare", + "SMTP Username" : "Nume utilizator SMTP", + "SMTP Password" : "Parolă SMTP", + "Test email settings" : "Verifică setările de e-mail", + "Send email" : "Expediază mesajul", + "Security & setup warnings" : "Alerte de securitate & configurare", + "All checks passed." : "Toate verificările s-au terminat fără erori.", + "Version" : "Versiunea", + "Server-side encryption" : "Criptare la nivel de server", + "Enable server-side encryption" : "Activează criptarea pe server", + "Please read carefully before activating server-side encryption: " : "Citește cu atenție înainte să activezi criptarea pe server:", + "This is the final warning: Do you really want to enable encryption?" : "Aceasta este avertizarea finală: Chiar vrei să activezi criptarea?", + "Enable encryption" : "Activează criptarea", + "Select default encryption module:" : "Selectează modulul implicit de criptare:", + "Start migration" : "Pornește migrarea", + "Execute one task with each page loaded" : "Execută o sarcină la fiecare pagină încărcată", + "Sharing" : "Partajare", + "Allow apps to use the Share API" : "Permite aplicațiilor să folosească API-ul de partajare", + "Allow users to share via link" : "Permite utilizatorilor să partajeze via link", + "Allow public uploads" : "Permite încărcări publice", + "Enforce password protection" : "Impune protecția prin parolă", + "Set default expiration date" : "Setează data implicită de expirare", + "Expire after " : "Expiră după", + "days" : "zile", + "Enforce expiration date" : "Impune data de expirare", + "Allow resharing" : "Permite repartajarea", + "Allow sharing with groups" : "Permite partajarea cu grupuri", + "Exclude groups from sharing" : "Exclude grupuri de la partajare", + "Administration" : "Administrare", + "Profile picture" : "Imagine de profil", + "Upload new" : "Încarcă una nouă", + "Select from Files" : "Selectează din fișiere", + "Remove image" : "Înlătură imagine", + "png or jpg, max. 20 MB" : "png sau jpg, max. 20 MB", + "Cancel" : "Anulare", + "Choose as profile picture" : "Alege ca imagine de profil", + "Details" : "Detalii", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Utilizezi <strong>%1$s</strong> din <strong>%2$s</strong> (<strong>%3$s %%</strong>)", + "Full name" : "Nume complet", + "Your email address" : "Adresa ta de email", + "No email address set" : "Fără adresă de email setată", + "Phone number" : "Număr telefon", + "Your phone number" : "Numărul tău de telefon", + "Address" : "Adresă", + "Your postal address" : "Adresă poștală", + "Website" : "Site web", + "Link https://…" : "Link https://…", + "Twitter" : "Twitter", + "Help translate" : "Ajută la traducere", + "Current password" : "Parola curentă", + "Change password" : "Schimbă parola", + "Store credentials" : "Stochează datele de autentificare" +},"pluralForm" :"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));" +} \ No newline at end of file diff --git a/apps/settings/l10n/ru.js b/apps/settings/l10n/ru.js new file mode 100644 index 00000000000..4c2bb7acbfe --- /dev/null +++ b/apps/settings/l10n/ru.js @@ -0,0 +1,822 @@ +OC.L10N.register( + "settings", + { + "{actor} added you to group {group}" : "{actor} добавил(а) вас в группу {group}", + "You added {user} to group {group}" : "Вы добавили {user} в группу {group}", + "{actor} added {user} to group {group}" : "{actor} добавил(а) {user} в группу {group}", + "An administrator added you to group {group}" : "Администратор добавил вас в группу {group}", + "An administrator added {user} to group {group}" : "Администратор добавил {user} в группу {group}", + "{actor} removed you from group {group}" : "{actor} удалил(а) вас из группы {group}", + "You removed {user} from group {group}" : "Вы удалили {user} из группы {group}", + "{actor} removed {user} from group {group}" : "{actor} удалил(а) {user} из группы {group}", + "An administrator removed you from group {group}" : "Администратор удалил вас из группы {group}", + "An administrator removed {user} from group {group}" : "Администратор исключил пользователя {user} из группы {group}", + "Your <strong>group memberships</strong> were modified" : "Ваше <strong>членство в группе</strong> было изменено", + "{actor} changed your password" : "{actor} сменил(а) ваш пароль", + "You changed your password" : "Вы изменили свой пароль", + "Your password was reset by an administrator" : "Ваш пароль был сброшен администратором", + "{actor} changed your email address" : "{actor} изменил(а) ваш адрес электронной почты", + "You changed your email address" : "Вы изменили свой адрес электронной почты", + "Your email address was changed by an administrator" : "Ваш адрес электронной почты был изменён администратором", + "You created app password \"{token}\"" : "Вы создали пароль приложения «{token}»", + "You deleted app password \"{token}\"" : "Вы удалили пароль приложения «{token}»", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Вы переименовали пароль приложения «{token}» в «{newToken}»", + "You granted filesystem access to app password \"{token}\"" : "Вы разрешили доступ к файлам приложению «{token}»", + "You revoked filesystem access from app password \"{token}\"" : "Вы закрыли доступ к файлам приложению «{token}»", + "Security" : "Безопасность", + "You successfully logged in using two-factor authentication (%1$s)" : "Вы успешно вошли в систему используя двухфакторную аутентификацию (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Сбой при попытке входа с использованием двухфакторной аутентификации (%1$s)", + "Remote wipe was started on %1$s" : "Удаленная очистка была запущена на устройстве %1$s", + "Remote wipe has finished on %1$s" : "Удаленная очистка была закончена на устройстве %1$s", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Ваш <strong>пароль</strong> или <strong>адрес электронной почты</strong> были изменены", + "Couldn't remove app." : "Не удалось удалить приложение.", + "Couldn't update app." : "Не удалось обновить приложение.", + "Wrong password" : "Неправильный пароль", + "Saved" : "Сохранено", + "No user supplied" : "Не выбран пользователь", + "Unable to change password" : "Невозможно изменить пароль", + "Authentication error" : "Ошибка аутентификации", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Введите пароль восстановления администратора, в противном случае все пользовательские данные будут утеряны.", + "Wrong admin recovery password. Please check the password and try again." : "Неправильный пароль восстановления администратора. Проверьте пароль и попробуйте еще раз.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Используемый механизм не поддерживает смену паролей, но пользовательский ключ шифрования был обновлён.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "установка и обновление приложений через магазин приложений или федерацию облачных хранилищ", + "Federated Cloud Sharing" : "Федерация облачных хранилищ", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL использует %1$s устаревшей версии %2$s. Обновите операционную систему, иначе такие возможности, как %3$s, не будут работать корректно.", + "Invalid SMTP password." : "Неверный пароль SMTP.", + "Email setting test" : "Проверка настроек электронной почты", + "Well done, %s!" : "Отлично, %s!", + "If you received this email, the email configuration seems to be correct." : "Если вы получили это сообщение, значит электронная почта настроена правильно.", + "Email could not be sent. Check your mail server log" : "Не удалось отправить сообщение электронной почты. Проверьте журнал ошибок почтового сервера", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Во время отправки письма произошла ошибка. Пожалуйста проверьте настройки. (Ошибка: %s)", + "You need to set your user email before being able to send test emails." : "Вы должны настроить ваш собственный адрес электронной почты прежде чем отправлять тестовые сообщения.", + "Invalid mail address" : "Некорректный адрес электронной почты", + "Settings saved" : "Настройки сохранены", + "Unable to change full name" : "Невозможно изменить полное имя", + "Unable to change email address" : "Невозможно изменить адрес электронной почты", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Для подтверждения владения аккаунтом Twitter, опубликуйте следующий твит (убедитесь, что разместили его без разрыва строки):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Для подтверждения владения сайтом поместите в корневом каталоге по пути «.well-known/CloudIdVerificationCode.txt» следующее содержимое (убедитесь, что разместили весь текст в одну строку): ", + "%1$s changed your password on %2$s." : "%1$s сменил ваш пароль для сервера %2$s.", + "Your password on %s was changed." : "Ваш пароль на сервере %s был изменён", + "Your password on %s was reset by an administrator." : "Ваш пароль на сервере %s был сброшен администратором.", + "Password for %1$s changed on %2$s" : "Пароль %1$s изменен на сервере %2$s", + "Password changed for %s" : "Пароль изменён для %s", + "If you did not request this, please contact an administrator." : "В случае, если вы не запрашивали это действие, свяжитесь с администратором.", + "Your email address on %s was changed." : "На сервере %s был изменён адрес электронной почты Вашей учётной записи.", + "Your email address on %s was changed by an administrator." : "Ваш адрес электронной почты на сервере %s был изменён администратором.", + "Email address for %1$s changed on %2$s" : "Адрес электронной почты %1$s изменён на %2$s", + "Email address changed for %s" : "Изменён адрес электронной почты пользователя %s.", + "The new email address is %s" : "Новый адрес электронной почты: %s.", + "Your %s account was created" : "Создана ваша учётная запись %s ", + "Welcome aboard" : "Добро пожаловать", + "Welcome aboard %s" : "Добро пожаловать, %s!", + "Welcome to your %s account, you can add, protect, and share your data." : "%s, добро пожаловать в свою учётную запись!\nТеперь Вы можете добавить свои данные, а после настроить и открыть совместный доступ.", + "Your username is: %s" : "Ваше имя пользователя: %s", + "Set your password" : "Задайте свой пароль", + "Go to %s" : "Перейти к %s", + "Install Client" : "Установить программу-клиент", + "Logged in user must be a subadmin" : "Вошедший в систему пользователь должен обладать правами суб-администратора", + "Create" : "Создать", + "Change" : "Изменить", + "Delete" : "Удалить", + "Share" : "Поделиться", + "Unlimited" : "Неограничено", + "Verifying" : "Проверка", + "Verifying …" : "Выполняется проверка…", + "Verify" : "Проверить", + "Migration in progress. Please wait until the migration is finished" : "Перенос выполняется, дождитесь завершения", + "Migration started …" : "Перенос начат…", + "Not saved" : "Не сохранено", + "Sending…" : "Отправка…", + "Email sent" : "Письмо отправлено", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Произошла ошибка. Пожалуйста загрузите сертификат PEM в ASCII кодировке.", + "Valid until {date}" : "Действительно до {дата}", + "Local" : "Локально", + "Private" : "Закрытый", + "Only visible to local users" : "Виден только локальным пользователям", + "Only visible to you" : "Виден только вам", + "Contacts" : "Контакты", + "Visible to local users and to trusted servers" : "Виден локальным пользователям и доверенным серверам", + "Public" : "Открытый", + "Will be synced to a global and public address book" : "Будет синхронизирован с глобальной и открытой адресной книгой", + "Very weak password" : "Очень слабый пароль", + "Weak password" : "Слабый пароль", + "So-so password" : "Так себе пароль", + "Good password" : "Хороший пароль", + "Strong password" : "Надёжный пароль", + "An error occurred while changing your language. Please reload the page and try again." : "При переключении языка произошла ошибка. Перезагрузите эту страницу и попробуйте ещё раз.", + "An error occurred while changing your locale. Please reload the page and try again." : "При переключении региональных стандартов произошла ошибка. Перезагрузите страницу и попробуйте ещё раз.", + "Select a profile picture" : "Выберите аватар", + "Week starts on {fdow}" : "Начало недели: {fdow}", + "Groups" : "Участник групп", + "Group list is empty" : "Список групп пуст", + "Unable to retrieve the group list" : "Не удалось получить список групп", + "Afrikaans (Namibia)" : "Африкаанс (Намибия)", + "Afrikaans (South Africa)" : "Африкаанс (Южная Африка)", + "Afrikaans" : "Африкаанс", + "Akan (Ghana)" : "Акан (Гана)", + "Akan" : "Акан", + "Albanian (Albania)" : "Албанский (Албания)", + "Albanian" : "Албанский", + "Amharic (Ethiopia)" : "Амхарский (Эфиопия)", + "Amharic" : "Амхарский", + "Arabic (Algeria)" : "Арабский (Алжир)", + "Arabic (Bahrain)" : "Арабский (Бахрейн)", + "Arabic (Egypt)" : "Арабский (Египет)", + "Arabic (Iraq)" : "Арабский (Ирак)", + "Arabic (Jordan)" : "Арабский (Иордания)", + "Arabic (Kuwait)" : "Арабский (Кувейт)", + "Arabic (Lebanon)" : "Арабский (Ливан)", + "Arabic (Libya)" : "Арабский (Ливия)", + "Arabic (Morocco)" : "Арабский (Марокко)", + "Arabic (Oman)" : "Арабский (Оман)", + "Arabic (Qatar)" : "Арабский (Катар)", + "Arabic (Saudi Arabia)" : "Арабский (Саудовская Аравия)", + "Arabic (Sudan)" : "Арабский (Судан)", + "Arabic (Syria)" : "Арабский (Сирия)", + "Arabic (Tunisia)" : "Арабский (Тунис)", + "Arabic (United Arab Emirates)" : "Арабский (Объединенные Арабские Эмираты)", + "Arabic (Yemen)" : "Арабский (Йемен)", + "Arabic" : "Арабский", + "Armenian (Armenia)" : "Армянский (Армения)", + "Armenian" : "Армянский", + "Assamese (India)" : "Ассамский (Индия)", + "Assamese" : "Ассамский", + "Asu (Tanzania)" : "Асу (Танзания)", + "Asu" : "Асу", + "Azerbaijani (Cyrillic)" : "Азербайджанский (кириллица)", + "Azerbaijani (Cyrillic, Azerbaijan)" : "Азербайджанский (кириллица, Азербайджан)", + "Azerbaijani (Latin)" : "Азербайджанский (латиница)", + "Azerbaijani (Latin, Azerbaijan)" : "Азербайджанский (латиница, Азербайджан)", + "Azerbaijani" : "Азербайджанский", + "Bambara (Mali)" : "Бамана (Мали)", + "Bambara" : "Бамана", + "Basque (Spain)" : "Баскский (Испания)", + "Basque" : "Баскский", + "Belarusian (Belarus)" : "Белорусский (Беларусь)", + "Belarusian" : "Белорусский", + "Bemba (Zambia)" : "Бемба (Замбия)", + "Bemba" : "Бемба", + "Bena (Tanzania)" : "Бена (Танзания)", + "Bena" : "Бена", + "Bengali (Bangladesh)" : "Бенгальский (Бангладеш)", + "Bengali (India)" : "Бенгальский (Индия)", + "Bengali" : "Бенгальский", + "Bosnian (Bosnia and Herzegovina)" : "Боснийский (Босния и Герцеговина)", + "Bosnian" : "Боснийский", + "Bulgarian (Bulgaria)" : "Болгарский (Болгария)", + "Bulgarian" : "Болгарский", + "Burmese (Myanmar [Burma])" : "Бирманский (Мьянма [Бирма])", + "Burmese" : "Бирманский", + "Catalan (Spain)" : "Каталанский (Испания)", + "Catalan" : "Каталанский", + "Central Morocco Tamazight (Latin)" : "Среднеатласский тамазигхтский (латиница)", + "Central Morocco Tamazight (Latin, Morocco)" : "Среднеатласский тамазигхтский (латиница, Марокко)", + "Central Morocco Tamazight" : "Среднеатласский тамазигхтский", + "Cherokee (United States)" : "Чероки (Соединенные Штаты Америки)", + "Cherokee" : "Чероки", + "Chiga (Uganda)" : "Кига (Уганда)", + "Chiga" : "Кига", + "Chinese (Simplified Han)" : "Китайский (упрощенный)", + "Chinese (Simplified Han, China)" : "Китайский (упрощенный, Китай)", + "Chinese (Simplified Han, Hong Kong SAR China)" : "Китайский (упрощенный, САР Гонконг, Китай)", + "Chinese (Simplified Han, Macau SAR China)" : "Китайский (упрощенный, САР Макао, Китай)", + "Chinese (Simplified Han, Singapore)" : "Китайский (упрощенный, Сингапур)", + "Chinese (Traditional Han)" : "Китайский (традиционный)", + "Chinese (Traditional Han, Hong Kong SAR China)" : "Китайский (традиционный, САР Гонконг, Китай)", + "Chinese (Traditional Han, Macau SAR China)" : "Китайский (традиционный, САР Макао, Китай)", + "Chinese (Traditional Han, Taiwan)" : "Китайский (традиционный, Тайвань)", + "Chinese" : "Китайский", + "Cornish (United Kingdom)" : "Корнский (Великобритания)", + "Cornish" : "Корнский", + "Croatian (Croatia)" : "Хорватский (Хорватия)", + "Croatian" : "Хорватский", + "Czech (Czech Republic)" : "Чешский (Чехия)", + "Czech" : "Чешский", + "Danish (Denmark)" : "Датский (Дания)", + "Danish" : "Датский", + "Dutch (Belgium)" : "Нидерландский (Бельгия)", + "Dutch (Netherlands)" : "Нидерландский (Нидерланды)", + "Dutch" : "Нидерландский", + "Embu (Kenya)" : "Эмбу (Кения)", + "Embu" : "Эмбу", + "English (American Samoa)" : "Английский (Американское Самоа)", + "English (Australia)" : "Английский (Австралия)", + "English (Belgium)" : "Английский (Бельгия)", + "English (Belize)" : "Английский (Белиз)", + "English (Botswana)" : "Английский (Ботсвана)", + "English (Canada)" : "Английский (Канада)", + "English (Guam)" : "Английский (Гуам)", + "English (Hong Kong SAR China)" : "Английский (САР Гонконг, Китай)", + "English (India)" : "Английский (Индия)", + "English (Ireland)" : "Английский (Ирландия)", + "English (Jamaica)" : "Английский (Ямайка)", + "English (Malta)" : "Английский (Мальта)", + "English (Marshall Islands)" : "Английский (Маршалловы Острова)", + "English (Mauritius)" : "Английский (Маврикий)", + "English (Namibia)" : "Английский (Намибия)", + "English (New Zealand)" : "Английский (Новая Зеландия)", + "English (Northern Mariana Islands)" : "Английский (Северные Марианские Острова)", + "English (Pakistan)" : "Английский (Пакистан)", + "English (Philippines)" : "Английский (Филиппины)", + "English (Singapore)" : "Английский (Сингапур)", + "English (South Africa)" : "Английский (Южная Африка)", + "English (Trinidad and Tobago)" : "Английский (Тринидад и Тобаго)", + "English (U.S. Minor Outlying Islands)" : "Английский (Внешние малые острова США)", + "English (U.S. Virgin Islands)" : "Английский (Виргинские острова США)", + "English (United Kingdom)" : "Английский (Великобритания)", + "English (United States)" : "Английский (Соединенные Штаты Америки)", + "English (Zimbabwe)" : "Английский (Зимбабве)", + "English" : "Английский", + "Esperanto" : "Эсперанто", + "Estonian (Estonia)" : "Эстонский (Эстония)", + "Estonian" : "Эстонский", + "Ewe (Ghana)" : "Эве (Гана)", + "Ewe (Togo)" : "Эве (Того)", + "Ewe" : "Эве", + "Faroese (Faroe Islands)" : "Фарерский (Фарерские острова)", + "Faroese" : "Фарерский", + "Filipino (Philippines)" : "Филиппинский (Филиппины)", + "Filipino" : "Филиппинский", + "Finnish (Finland)" : "Финский (Финляндия)", + "Finnish" : "Финский", + "French (Belgium)" : "Французский (Бельгия)", + "French (Benin)" : "Французский (Бенин)", + "French (Burkina Faso)" : "Французский (Буркина-Фасо)", + "French (Burundi)" : "Французский (Бурунди)", + "French (Cameroon)" : "Французский (Камерун)", + "French (Canada)" : "Французский (Канада)", + "French (Central African Republic)" : "Французский (Центральная Африканская Республика)", + "French (Chad)" : "Французский (Чад)", + "French (Comoros)" : "Французский (Коморы)", + "French (Congo - Brazzaville)" : "Французский (Конго - Браззавиль)", + "French (Congo - Kinshasa)" : "Французский (Конго - Киншаса)", + "French (Côte d’Ivoire)" : "Французский (Кот-д’Ивуар)", + "French (Djibouti)" : "Французский (Джибути)", + "French (Equatorial Guinea)" : "Французский (Экваториальная Гвинея)", + "French (France)" : "Французский (Франция)", + "French (Gabon)" : "Французский (Габон)", + "French (Guadeloupe)" : "Французский (Гваделупа)", + "French (Guinea)" : "Французский (Гвинея)", + "French (Luxembourg)" : "Французский (Люксембург)", + "French (Madagascar)" : "Французский (Мадагаскар)", + "French (Mali)" : "Французский (Мали)", + "French (Martinique)" : "Французский (Мартиника)", + "French (Monaco)" : "Французский (Монако)", + "French (Niger)" : "Французский (Нигер)", + "French (Rwanda)" : "Французский (Руанда)", + "French (Réunion)" : "Французский (Реюньон)", + "French (Saint Barthélemy)" : "Французский (Сен-Бартелеми)", + "French (Saint Martin)" : "Французский (Сен-Мартен)", + "French (Senegal)" : "Французский (Сенегал)", + "French (Switzerland)" : "Французский (Швейцария)", + "French (Togo)" : "Французский (Того)", + "French" : "Французский", + "Fulah (Senegal)" : "Фула (Сенегал)", + "Fulah" : "Фула", + "Galician (Spain)" : "Галисийский (Испания)", + "Galician" : "Галисийский", + "Ganda (Uganda)" : "Га'анда (Уганда)", + "Ganda" : "Га’анда", + "Georgian (Georgia)" : "Грузинский (Грузия)", + "Georgian" : "Грузинский", + "German (Austria)" : "Немецкий (Австрия)", + "German (Belgium)" : "Немецкий (Бельгия)", + "German (Germany)" : "Немецкий (Германия)", + "German (Liechtenstein)" : "Немецкий (Лихтенштейн)", + "German (Luxembourg)" : "Немецкий (Люксембург)", + "German (Switzerland)" : "Немецкий (Швейцария)", + "German" : "Немецкий", + "Greek (Cyprus)" : "Греческий (Кипр)", + "Greek (Greece)" : "Греческий (Греция)", + "Greek" : "Греческий", + "Gujarati (India)" : "Гуджарати (Индия)", + "Gujarati" : "Гуджарати", + "Gusii (Kenya)" : "Гусии (Кения)", + "Gusii" : "Гусии", + "Hausa (Latin)" : "Хауса (латиница)", + "Hausa (Latin, Ghana)" : "Хауса (латиница, Гана)", + "Hausa (Latin, Niger)" : "Хауса (латиница, Нигер)", + "Hausa (Latin, Nigeria)" : "Хауса (латиница, Нигерия)", + "Hausa" : "Хауса", + "Hawaiian (United States)" : "Гавайский (Соединенные Штаты Америки)", + "Hawaiian" : "Гавайский", + "Hebrew (Israel)" : "Иврит (Израиль)", + "Hebrew" : "Иврит", + "Hindi (India)" : "Хинди (Индия)", + "Hindi" : "Хинди", + "Hungarian (Hungary)" : "Венгерский (Венгрия)", + "Hungarian" : "Венгерский", + "Icelandic (Iceland)" : "Исландский (Исландия)", + "Icelandic" : "Исландский", + "Igbo (Nigeria)" : "Игбо (Нигерия)", + "Igbo" : "Игбо", + "Indonesian (Indonesia)" : "Индонезийский (Индонезия)", + "Indonesian" : "Индонезийский", + "Irish (Ireland)" : "Ирландский (Ирландия)", + "Irish" : "Ирландский", + "Italian (Italy)" : "Итальянский (Италия)", + "Italian (Switzerland)" : "Итальянский (Швейцария)", + "Italian" : "Итальянский", + "Japanese (Japan)" : "Японский (Япония)", + "Japanese" : "Японский", + "Kabuverdianu (Cape Verde)" : "Кабувердьяну (Кабо-Верде)", + "Kabuverdianu" : "Кабувердьяну", + "Kabyle (Algeria)" : "Кабильский (Алжир)", + "Kabyle" : "Кабильский", + "Kalaallisut (Greenland)" : "Гренландский (Гренландия)", + "Kalaallisut" : "Гренландский", + "Kalenjin (Kenya)" : "Календжин (Кения)", + "Kalenjin" : "Календжин", + "Kamba (Kenya)" : "Камба (Кения)", + "Kamba" : "Камба", + "Kannada (India)" : "Каннада (Индия)", + "Kannada" : "Каннада", + "Kazakh (Cyrillic)" : "Казахский (кириллица)", + "Kazakh (Cyrillic, Kazakhstan)" : "Казахский (кириллица, Казахстан)", + "Kazakh" : "Казахский", + "Khmer (Cambodia)" : "Кхмерский (Камбожда)", + "Khmer" : "Кхмерский", + "Kikuyu (Kenya)" : "Кикуйю (Кения)", + "Kikuyu" : "Кикуйю", + "Kinyarwanda (Rwanda)" : "Киньяруанда (Руанда)", + "Kinyarwanda" : "Киньяруанда", + "Konkani (India)" : "Конкани (Индия)", + "Konkani" : "Конкани", + "Korean (South Korea)" : "Корейский (Республика Корея)", + "Korean" : "Корейский", + "Koyra Chiini (Mali)" : "Койра Чиини (Мали)", + "Koyra Chiini" : "Койра Чиини", + "Koyraboro Senni (Mali)" : "Койраборо Сенни (Мали)", + "Koyraboro Senni" : "Койраборо Сенни", + "Langi (Tanzania)" : "Ланго (Танзания)", + "Langi" : "Ланго", + "Latvian (Latvia)" : "Латвийский (Латвия)", + "Latvian" : "Латвийский", + "Lithuanian (Lithuania)" : "Литовский (Литва)", + "Lithuanian" : "Литовский", + "Luo (Kenya)" : "Луо (Кения)", + "Luo" : "Луо", + "Luyia (Kenya)" : "Луйя (Кения)", + "Luyia" : "Луйя", + "Macedonian (Macedonia)" : "Македонский (Македония)", + "Macedonian" : "Македонский", + "Machame (Tanzania)" : "Мачаме (Танзания)", + "Machame" : "Мачаме", + "Makonde (Tanzania)" : "Маконде (Танзания)", + "Makonde" : "Маконде", + "Malagasy (Madagascar)" : "Малагасийский (Мадагаскар)", + "Malagasy" : "Малагасийский", + "Malay (Brunei)" : "Малайский (Бруней)", + "Malay (Malaysia)" : "Малайский (Малайзия)", + "Malay" : "Малайский", + "Malayalam (India)" : "Малаялам (Индия)", + "Malayalam" : "Малаялам", + "Maltese (Malta)" : "Мальтийский (Мальта)", + "Maltese" : "Мальтийский", + "Manx (United Kingdom)" : "Мэнский (Великобритания)", + "Manx" : "Мэнский", + "Marathi (India)" : "Маратхи (Индия)", + "Marathi" : "Маратхи", + "Masai (Kenya)" : "Масаи (Кения)", + "Masai (Tanzania)" : "Масаи (Танзания)", + "Masai" : "Масаи", + "Meru (Kenya)" : "Меру (Кения)", + "Meru" : "Меру", + "Morisyen (Mauritius)" : "Маврикийский креольский (Маврикий)", + "Morisyen" : "Маврикийский креольский", + "Nama (Namibia)" : "Нама (Намибия)", + "Nama" : "Нама", + "Nepali (India)" : "Непальский (Индия)", + "Nepali (Nepal)" : "Непальский (Непал)", + "Nepali" : "Непальский", + "North Ndebele (Zimbabwe)" : "Северный Ндебеле (Зимбабве)", + "North Ndebele" : "Северный Ндебеле", + "Norwegian Bokmål (Norway)" : "Норвежский букмол (Норвегия)", + "Norwegian Bokmål" : "Норвежский букмол", + "Norwegian Nynorsk (Norway)" : "Норвежский нюношк (Норвегия)", + "Norwegian Nynorsk" : "Норвежский нюношк", + "Nyankole (Uganda)" : "Ньянколе (Уганда)", + "Nyankole" : "Ньянколе", + "Oriya (India)" : "Ория (Индия)", + "Oriya" : "Ория", + "Oromo (Ethiopia)" : "Оромо (Эфиопия)", + "Oromo (Kenya)" : "Оромо (Кения)", + "Oromo" : "Оромо", + "Pashto (Afghanistan)" : "Пушту (Афганистан)", + "Pashto" : "Пушту", + "Persian (Afghanistan)" : "Персидский (Афганистан)", + "Persian (Iran)" : "Персидский (Иран)", + "Persian" : "Персидский", + "Polish (Poland)" : "Польский (Польша)", + "Polish" : "Польский", + "Portuguese (Brazil)" : "Португальский (Бразилия)", + "Portuguese (Guinea-Bissau)" : "Португальский (Гвинея-Бисау)", + "Portuguese (Mozambique)" : "Португальский (Мозамбик)", + "Portuguese (Portugal)" : "Португальский (Португалия)", + "Portuguese" : "Португальский", + "Punjabi (Arabic)" : "Панджаби (арабский алфавит)", + "Punjabi (Arabic, Pakistan)" : "Панджаби (арабский алфавит, Пакистан)", + "Punjabi (Gurmukhi)" : "Панджаби (гурмукхи)", + "Punjabi (Gurmukhi, India)" : "Панджаби (гурмукхи, Индия)", + "Punjabi" : "Панджаби", + "Romanian (Moldova)" : "Румынский (Молдова)", + "Romanian (Romania)" : "Румынский (Румыния)", + "Romanian" : "Румынский", + "Romansh (Switzerland)" : "Романшский (Швейцария)", + "Romansh" : "Романшский", + "Rombo (Tanzania)" : "Ромбо (Танзания)", + "Rombo" : "Ромбо", + "Russian (Moldova)" : "Русский (Молдова)", + "Russian (Russia)" : "Русский (Россия)", + "Russian (Ukraine)" : "Русский (Украина)", + "Russian" : "Русский", + "Rwa (Tanzania)" : "Руа (Танзания)", + "Rwa" : "Руа", + "Samburu (Kenya)" : "Самбуру (Кения)", + "Samburu" : "Самбуру", + "Sango (Central African Republic)" : "Санго (Центральноафриканская Республика)", + "Sango" : "Санго", + "Sena (Mozambique)" : "Сена (Мозамбик)", + "Sena" : "Сена", + "Serbian (Cyrillic)" : "Сербский (кириллица)", + "Serbian (Cyrillic, Bosnia and Herzegovina)" : "Сербский (кириллица, Босния и Герцеговина)", + "Serbian (Cyrillic, Montenegro)" : "Сербский (кириллица, Черногория)", + "Serbian (Cyrillic, Serbia)" : "Сербский (кириллица, Сербия)", + "Serbian (Latin)" : "Сербский (латиница)", + "Serbian (Latin, Bosnia and Herzegovina)" : "Сербский (латиница, Босния и Герцеговина)", + "Serbian (Latin, Montenegro)" : "Сербский (латиница, Черногория)", + "Serbian (Latin, Serbia)" : "Сербский (латиница, Сербия)", + "Serbian" : "Сербский", + "Shona (Zimbabwe)" : "Шона (Зимбабве)", + "Shona" : "Шона", + "Sichuan Yi (China)" : "Носу (Китай)", + "Sichuan Yi" : "Носу", + "Sinhala (Sri Lanka)" : "Сингальский (Шри-Ланка)", + "Sinhala" : "Сингальский", + "Slovak (Slovakia)" : "Словацкий (Словакия)", + "Slovak" : "Словацкий", + "Slovenian (Slovenia)" : "Словенский (Словения)", + "Slovenian" : "Словенский", + "Soga (Uganda)" : "Сога (Уганда)", + "Soga" : "Сога", + "Somali (Djibouti)" : "Сомалийский (Джибути)", + "Somali (Ethiopia)" : "Сомалийский (Эфиопия)", + "Somali (Kenya)" : "Сомалийский (Кения)", + "Somali (Somalia)" : "Сомалийский (Сомали)", + "Somali" : "Сомалийский", + "Spanish (Argentina)" : "Испанский (Аргентина)", + "Spanish (Bolivia)" : "Испанский (Боливия)", + "Spanish (Chile)" : "Испанский (Чили)", + "Spanish (Colombia)" : "Испанский (Колумбия)", + "Spanish (Costa Rica)" : "Испанский (Коста-Рика)", + "Spanish (Dominican Republic)" : "Испанский (Доминиканская Республика)", + "Spanish (Ecuador)" : "Испанский (Эквадор)", + "Spanish (El Salvador)" : "Испанский (Сальвадор)", + "Spanish (Equatorial Guinea)" : "Испанский (Экваториальная Гвинея)", + "Spanish (Guatemala)" : "Испанский (Гватемала)", + "Spanish (Honduras)" : "Испанский (Гондурас)", + "Spanish (Latin America)" : "Испанский (Латинская Америка)", + "Spanish (Mexico)" : "Испанский (Мексика)", + "Spanish (Nicaragua)" : "Испанский (Никарагуа)", + "Spanish (Panama)" : "Испанский (Панама)", + "Spanish (Paraguay)" : "Испанский (Парагвай)", + "Spanish (Peru)" : "Испанский (Перу)", + "Spanish (Puerto Rico)" : "Испанский (Пуэрто-Рико)", + "Spanish (Spain)" : "Испанский (Испания)", + "Spanish (United States)" : "Испанский (Соединенные Штаты Америки)", + "Spanish (Uruguay)" : "Испанский (Уругвай)", + "Spanish (Venezuela)" : "Испанский (Венесуэла)", + "Spanish" : "Испанский", + "Swahili (Kenya)" : "Суахили (Кения)", + "Swahili (Tanzania)" : "Суахили (Танзания)", + "Swahili" : "Суахили", + "Swedish (Finland)" : "Шведский (Финляндия)", + "Swedish (Sweden)" : "Шведский (Швеция)", + "Swedish" : "Шведский", + "Swiss German (Switzerland)" : "Швейцарский немецкий (Швейцария)", + "Swiss German" : "Швейцарский немецкий", + "Tachelhit (Latin)" : "Ташельхит (латиница)", + "Tachelhit (Latin, Morocco)" : "Ташельхит (латиница, Марокко)", + "Tachelhit (Tifinagh)" : "Ташельхит (тифинаг)", + "Tachelhit (Tifinagh, Morocco)" : "Ташельхит (тифинаг, Марокко)", + "Tachelhit" : "Ташельхит", + "Taita (Kenya)" : "Тайта (Кения)", + "Taita" : "Тайта", + "Tamil (India)" : "Тамильский (Индия)", + "Tamil (Sri Lanka)" : "Тамильский (Шри-Ланка)", + "Tamil" : "Тамильский", + "Telugu (India)" : "Телугу (Индия)", + "Telugu" : "Телугу", + "Teso (Kenya)" : "Тесо (Кения)", + "Teso (Uganda)" : "Тесо (Уганда)", + "Teso" : "Тесо", + "Thai (Thailand)" : "Тайский (Тайланд)", + "Thai" : "Тайский", + "Tibetan (China)" : "Тибетский (Китай)", + "Tibetan (India)" : "Тибетский (Индия)", + "Tibetan" : "Тибетский", + "Tigrinya (Eritrea)" : "Тигринья (Эритрея)", + "Tigrinya (Ethiopia)" : "Тигринья (Эфиопия)", + "Tigrinya" : "Тигринья", + "Tonga (Tonga)" : "Тонганский (Тонга)", + "Tonga" : "Тонганский", + "Turkish (Turkey)" : "Турецкий (Турция)", + "Turkish" : "Турецкий", + "Ukrainian (Ukraine)" : "Украинский (Украина)", + "Ukrainian" : "Украинский", + "Urdu (India)" : "Урду (Индия)", + "Urdu (Pakistan)" : "Урду (Пакистан)", + "Urdu" : "Урду", + "Uzbek (Arabic)" : "Узбекский (арабский алфавит)", + "Uzbek (Arabic, Afghanistan)" : "Узбекский (арабский алфавит, Афганистан)", + "Uzbek (Cyrillic)" : "Узбекский (кириллица)", + "Uzbek (Cyrillic, Uzbekistan)" : "Узбекский (кириллица, Узбекистан)", + "Uzbek (Latin)" : "Узбекский (латиница)", + "Uzbek (Latin, Uzbekistan)" : "Узбекский (латиница, Узбекистан)", + "Uzbek" : "Узбекский", + "Vietnamese (Vietnam)" : "Вьетнамский (Вьетнам)", + "Vietnamese" : "Вьетнамский", + "Vunjo (Tanzania)" : "Вунджо (Танзания)", + "Vunjo" : "Вунджо", + "Welsh (United Kingdom)" : "Валлийский (Великобритания)", + "Welsh" : "Валлийский", + "Yoruba (Nigeria)" : "Йоруба (Нигерия)", + "Yoruba" : "Йоруба", + "Zulu (South Africa)" : "Зулусский (Южная Африка)", + "Zulu" : "Зулусский", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Двухфаторная аутентификация может быть принудительна включена для всех пользователей и выбранных групп. В случае, если у пользователя не настроен механизм подтверждения подлинности вторым фактором, он не сможет войти в систему.", + "Enforce two-factor authentication" : "Требовать двухфакторую аунтефикацию", + "Limit to groups" : "Ограничить группами", + "Enforcement of two-factor authentication can be set for certain groups only." : "Требование использовать двухфакторную аутентификацию может быть применено только к определённым группам. ", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "Двухфаторная аутентификация требуется для всех пользователей следующих групп.", + "Enforced groups" : "Группы с требованием использования двухфакторной аутентификации", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "Двухфаторная аутентификация не требуется для пользователей следующих групп.", + "Excluded groups" : "Группы без требования использования двухфакторной аутентификации", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "Если выбрано включение или отключение использования двух-факторной проверки подлинности для групп, то для определения, требуется ли от пользователя использовать её, применяются следующие правила: \\n\n - если группы не включены в список, то двух-факторная проверка включена для всех их участников, кроме тех, кто также состоит в группах, проверка для которых отключена;\n - если группы включены в список, то двух-факторная проверка включена для всех участников таких групп;\n- если пользователь состоит одновременно и в группе, проверка для которой включена и группе, проверка для которой отключена, то приоритет получает использование двухфакторной проверки.", + "Save changes" : "Сохранить изменения", + "Marked for remote wipe" : "Отмечено для удаленной очистки", + "Device settings" : "Параметры устройства", + "Allow filesystem access" : "Разрешить доступ к файлам", + "Rename" : "Переименовать", + "Revoke" : "Отозвать", + "Wipe device" : "Очистить устройство", + "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Отмена этого токена может предотвратить очистку вашего устройства, если оно еще не было запущено.", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome для Android", + "iPhone" : "iPhone", + "iPad" : "iPad iOS", + "Nextcloud iOS app" : "Приложение Nextcloud для iOS", + "Nextcloud Android app" : "Приложение Nextcloud для Android", + "Nextcloud Talk for iOS" : "Nextcloud Talk для iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk для Android", + "Sync client - {os}" : "Клиент синхронизации - {os}", + "This session" : "Этот сеанс работы", + "Device" : "Устройство", + "Last activity" : "Последние действия", + "Devices & sessions" : "Активные устройства и сеансы", + "Web, desktop and mobile clients currently logged in to your account." : "Веб, настольные и мобильные клиенты, которые в настоящий момент авторизованы вашей учётной записью.", + "Do you really want to wipe your data from this device?" : "Вы действительно хотите стереть свои данные с этого устройства?", + "Confirm wipe" : "Подтвердить очистку", + "Error while creating device token" : "Ошибка при создании токена для устройства", + "Error while updating device token scope" : "Ошибка при обновлении разрешений токена устройства", + "Error while updating device token name" : "Ошибка при обновлении имени токена устройства", + "Error while deleting the token" : "Ошибка при удалении токена устройства", + "Error while wiping the device with the token" : "Ошибка при очистке устройства с данным токеном", + "App name" : "Название приложения", + "Create new app password" : "Создать пароль приложения", + "Use the credentials below to configure your app or device." : "Используйте учётные данные ниже для настройки вашего приложения или устройства.", + "For security reasons this password will only be shown once." : "По соображениям безопасности этот пароль будет показан лишь один раз.", + "Username" : "Имя пользователя", + "Password" : "Пароль", + "Done" : "Выполнено", + "Show QR code for mobile apps" : "Показать QR-код для мобильных приложений", + "Copied!" : "Скопировано!", + "Copy" : "Копировать", + "Could not copy app password. Please copy it manually." : "Не удалось скопировать пароль приложения. Пожалуйста, скопируйте его вручную.", + "This app is supported via your current Nextcloud subscription." : "Это приложение поддерживается через вашу текущую подписку Nextcloud.", + "Supported" : "Поддерживается", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Официальные приложения разработаны вместе с сообществом. Они предлагают базовую функциональность и готовы для использования.", + "Official" : "Официальное", + "by" : "автор", + "Update to {version}" : "Обновление до {version}", + "Remove" : "Удалить", + "Disable" : "Отключить", + "All" : "Все", + "Limit app usage to groups" : "Ограничить использование приложения заданными группами", + "No results" : "Результаты отсутствуют", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Для этого приложения не указана минимальная поддерживаемая версия Nextcloud, в будущем это будет считаться ошибкой.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Для этого приложения не указана максимальная поддерживаемая версия Nextcloud, в будущем это будет считаться ошибкой.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Приложение не может быть установлено, следующие зависимости не удовлетворены:", + "View in store" : "Посмотреть в магазине приложений", + "Visit website" : "Посетите веб-сайт", + "Report a bug" : "Сообщить об ошибке", + "User documentation" : "Пользовательская документация", + "Admin documentation" : "Документация для администратора", + "Developer documentation" : "Документация для разработчиков", + "Update to {update}" : "Обновить до {update}", + "Results from other categories" : "Результаты из других категорий", + "No apps found for your version" : "Приложений, совместимых с установленной версией Nextcloud, не найдено", + "Disable all" : "Отключить все", + "Enable all" : "Включить все", + "Download and enable" : "Скачать и включить", + "Enable" : "Включить", + "Enable untested app" : "Включить непроверенное приложение", + "The app will be downloaded from the app store" : "Приложение будет скачано из магазина приложений", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Это приложение не отмечено как совместимое с вашей версией Nextcloud. Если вы продолжите, вы сможете установить это приложение, однако оно может работать не так, как ожидается.", + "You do not have permissions to see the details of this user" : "У вас нет прав на просмотр данных об этом пользователе", + "The backend does not support changing the display name" : "Используемый механизм не поддерживает смену отображаемого имени", + "New password" : "Новый пароль", + "Add user in group" : "Добавить в группу", + "Set user as admin for" : "Назначить администратором", + "Select user quota" : "Квота пользователя", + "No language set" : "Язык не задан", + "Never" : "Никогда", + "Delete user" : "Удалить пользователя", + "Wipe all devices" : "Очистить все устройства", + "Disable user" : "Отключить пользователя", + "Enable user" : "Включить пользователя", + "Resend welcome email" : "Отправить приглашение ещё раз", + "{size} used" : "использовано {size}", + "Welcome mail sent!" : "Приглашение отправлено!", + "Display name" : "Отображаемое имя", + "Email" : "Адрес эл. почты", + "Group admin for" : "Администратор групп", + "Quota" : "Квота", + "Language" : "Язык", + "Storage location" : "Расположение хранилища", + "User backend" : "Механизм учёта", + "Last login" : "Последний вход", + "Will be autogenerated" : "Будет сгенерирован автоматически", + "Default language" : "Язык по умолчанию", + "Add a new user" : "Создать пользователя", + "No users in here" : "Здесь нет ни одного пользователя", + "Default quota" : "Квота по умолчанию", + "Password change is disabled because the master key is disabled" : "Смена пароля невозможна при отключённом мастер-ключе", + "Common languages" : "Основные языки", + "All languages" : "Все языки", + "Your apps" : "Ваши приложения", + "Active apps" : "Активные приложения", + "Disabled apps" : "Отключённые приложения", + "Updates" : "Обновления", + "App bundles" : "Пакеты приложений", + "{license}-licensed" : "Лицензия: {license}", + "New user" : "Новый пользователь", + "Default quota:" : "Квота по умолчанию: ", + "Select default quota" : "Квота по умолчанию", + "Show Languages" : "Показывать язык", + "Show last login" : "Время последнего входа в систему", + "Show user backend" : "Механизм учёта", + "Show storage path" : "Путь хранилища", + "You are about to remove the group {group}. The users will NOT be deleted." : "Группа «{group}» будет удалена, но это НЕ приведёт к удалению пользователей.", + "Please confirm the group removal " : "Подтвердите удаление группы", + "Remove group" : "Удалить группу", + "Admins" : "Администраторы", + "Disabled users" : "Отключённые пользователи", + "Everyone" : "Все", + "Add group" : "Добавить группу", + "An error occured during the request. Unable to proceed." : "Во время запроса произошла ошибка. Продолжение невозможно", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Приложение было включено, но нуждается в обновлении. В течении 5 секунд будет выполнено перенаправление на страницу обновления.", + "App update" : "Обновление приложения", + "Error: This app can not be enabled because it makes the server unstable" : "Ошибка: это приложение не может быть включено, так как оно сделает сервер нестабильным", + "SSL Root Certificates" : "Корневые сертификаты SSL", + "Common Name" : "Общепринятое имя", + "Valid until" : "Дата истечения", + "Issued By" : "Издатель", + "Valid until %s" : "Действительно до %s", + "Import root certificate" : "Импорт корневого сертификата", + "Administrator documentation" : "Документация администратора", + "Documentation" : "Документация", + "Forum" : "Форум", + "None" : "Отсутствует", + "Login" : "Логин", + "Plain" : "Простой", + "NT LAN Manager" : "Менеджер NT LAN", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Почтовый сервер", + "Open documentation" : "Открыть документацию", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Важно предоставить этому серверу возможность отправлять электронные письма, например, для сброса пароля и уведомлений.", + "Send mode" : "Способ отправки", + "Encryption" : "Шифрование", + "Sendmail mode" : "Режим sendmail", + "From address" : "Адрес отправителя", + "mail" : "почта", + "Authentication method" : "Метод проверки подлинности", + "Authentication required" : "Требуется аутентификация ", + "Server address" : "Адрес сервера", + "Port" : "Порт", + "Credentials" : "Учётные данные", + "SMTP Username" : "Пользователь SMTP", + "SMTP Password" : "Пароль SMTP", + "Test email settings" : "Проверка настроек эл.почты", + "Send email" : "Отправить сообщение", + "Security & setup warnings" : "Проверка безопасности и параметров", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Для обеспечения безопасности и производительности важно, чтобы всё было настроено правильно. Чтобы убедиться в этом, мы выполняем некоторые автоматические проверки. Для получения дополнительной информации обратитесь к соответствующему разделу документации.", + "All checks passed." : "Все проверки пройдены.", + "There are some errors regarding your setup." : "Были обнаружены ошибки конфигурации.", + "There are some warnings regarding your setup." : "Предупреждения о текущей конфигурации.", + "Checking for system and security issues." : "Проверка системы и возможных уязвимостей.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Ещё раз внимательно прочитайте <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">руководство по установке ↗</a> и проверьте <a href=\"%2$s\">журнал</a> на наличие ошибок и предупреждений.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Проверить безопасность Nextcloud <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">нашим сканером ↗</a>.", + "Version" : "Версия", + "Two-Factor Authentication" : "Двухфакторная аутентификация", + "Server-side encryption" : "Шифрование на стороне сервера", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Шифрование на стороне сервера позволяет шифровать файлы, которые загружаются на этот сервер. Это связано с ограничениями, такими как снижение производительности, поэтому включите его только в случае необходимости.", + "Enable server-side encryption" : "Включить шифрование на стороне сервера", + "Please read carefully before activating server-side encryption: " : "Внимательно изучите следующее перед включением шифрования на стороне сервера:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "После включения шифрования, все файлы, загруженные с этого момента на сервер, будут сохраняться в зашифрованном виде. Отключить шифрование в дальнейшем возможно только в случае, если использованный модуль шифрования поддерживает такую функцию, а также при соблюдении всех дополнительных условий (например, настроен ключ восстановления).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Шифрование само по себе не гарантирует безопасность системы. В документации приведена дополнительная информация о работе приложения «Шифрование» и примеры его использования.", + "Be aware that encryption always increases the file size." : "Шифрование всегда увеличивает размер файлов.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Регулярно создавайте резервные копии данных. При использовании шифрования сохраняйте не только данные, но и ключи.", + "This is the final warning: Do you really want to enable encryption?" : "Это последнее предупреждение: действительно включить шифрование?", + "Enable encryption" : "Включить шифрование", + "No encryption module loaded, please enable an encryption module in the app menu." : "Модуль шифрования не загружен, пожалуйста включите модуль шифрования в меню приложений.", + "Select default encryption module:" : "Выберите модуль шифрования по умолчанию:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Вам необходимо произвести преобразование ключей шифрования из старого формата (ownCloud <= 8.0) в новый. Пожалуйста включите \"Модуль шифрования по умолчанию\" и запустите команду 'occ encryption:migrate'.", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Вам необходимо произвести конвертацию ключей шифрования из старого формата (ownCloud <= 8.0) в новый.", + "Start migration" : "Запустить миграцию", + "Background jobs" : "Фоновые задания", + "Last job ran %s." : "Последнее задание выполнено %s.", + "Last job execution ran %s. Something seems wrong." : "Последнее задание было выполнено %s. Похоже, что-то не в порядке.", + "Background job didn’t run yet!" : "Фоновые задания ещё не выполнялись!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Для оптимальной производительности важно правильно настроить выполнение задач в фоновом режиме. Для крупных развёртываний рекомендуется использовать параметр «Cron». Обратитесь к документации для получения дополнительной информации.", + "Pick background job setting" : "Выбрать параметр выполнения фоновых задач", + "Execute one task with each page loaded" : "Выполнять одно задание с каждой загруженной страницей", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php зарегистрирован в службе webcron и будет вызываться каждые 5 минут по HTTP.", + "Use system cron service to call the cron.php file every 5 minutes." : "Использовать системный cron для вызова файла cron.php каждые 5 минут.", + "The cron.php needs to be executed by the system user \"%s\"." : "cron.php должен исполняться из под пользователя \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Для запуска требуется расширение POSIX для PHP. Обратитесь к {linkstart}документации по PHP{linkend} для получения дополнительной информации.", + "Sharing" : "Общий доступ", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Администратор может тонко настроить поведение механизма предоставления общего доступа. Обратитесь к документации для получения дополнительной информации.", + "Allow apps to use the Share API" : "Позволить приложениям использовать API общего доступа", + "Allow users to share via link" : "Разрешить пользователям публикации через ссылки", + "Allow public uploads" : "Разрешить открытые/публичные загрузки", + "Always ask for a password" : "Всегда запрашивать пароль", + "Enforce password protection" : "Защита паролем обязательна", + "Set default expiration date" : "Установить дату истечения по умолчанию", + "Expire after " : "Истечение через", + "days" : "дней", + "Enforce expiration date" : "Срок действия обязателен", + "Allow resharing" : "Разрешить повторное открытие общего доступа", + "Allow sharing with groups" : "Разрешить делиться с группами", + "Restrict users to only share with users in their groups" : "Запретить делиться с пользователями из других групп", + "Exclude groups from sharing" : "Запретить выбранным группам предоставлять общий доступ", + "These groups will still be able to receive shares, but not to initiate them." : "Эти группы смогут получать общие ресурсы, но не могут их создавать.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Включить автоматическое завершение имен пользователей в диалоге предоставления общего доступа. Если отключено, то необходимо вводить полное имя или адрес эл. почты.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Показывать текст об отказе на странице загрузки публичной ссылки (Показывать только когда список файлов скрыт)", + "This text will be shown on the public link upload page when the file list is hidden." : "Этот текст будет показан при переходе по публичной ссылке на загрузку при скрытом списке файлов", + "Default share permissions" : "Права общего доступа по умолчанию", + "Personal" : "Личное", + "Administration" : "Администрирование", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Разработано {communityopen}сообществом Nextcloud{linkclose}, {githubopen}исходный код{linkclose} лицензируется в соответствии с {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Посмотрите нашу страницу на Facebook", + "Follow us on Twitter" : "Следите за нашими новостями в Twitter", + "Follow us on Mastodon" : "Следите за нашими новостями в Mastodon", + "Check out our blog" : "Просмотрите наш блог", + "Subscribe to our newsletter" : "Подписывайтесь на нашу новостную рассылку", + "Profile picture" : "Аватар", + "Upload new" : "Загрузить аватар", + "Select from Files" : "Выбрать из файлов", + "Remove image" : "Удалить аватар", + "png or jpg, max. 20 MB" : "png или jpg, макс. 20 МБ", + "Picture provided by original account" : "Картинка из исходной учетной записи", + "Cancel" : "Отмена", + "Choose as profile picture" : "Выбрать в качестве картинки профиля", + "Details" : "Подробные сведения", + "You are a member of the following groups:" : "Вы являетесь участником следующих групп:", + "You are using <strong>%s</strong>" : "Вы используете <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Вы используете <strong>%1$s</strong> из <strong>%2$s</strong> (<strong>%3$s %%</strong>)", + "Full name" : "Полное имя", + "No display name set" : "Отображаемое имя не указано", + "Your email address" : "Ваш адрес электронной почты", + "No email address set" : "Адрес не указан", + "For password reset and notifications" : "Для сброса пароля и уведомлений", + "Phone number" : "Номер телефона", + "Your phone number" : "Ваш номер телефона", + "Address" : "Адрес", + "Your postal address" : "Ваш почтовый адрес", + "Website" : "Сайт", + "It can take up to 24 hours before the account is displayed as verified." : "До момента подтверждения аккаунта может пройти до 24 часов.", + "Link https://…" : "Ссылка https://…", + "Twitter" : "Twitter", + "Twitter handle @…" : "Имя в Twitter @…", + "Help translate" : "Помочь с переводом", + "Locale" : "Региональные стандарты", + "Current password" : "Текущий пароль", + "Change password" : "Сменить пароль", + "Use a second factor besides your password to increase security for your account." : "Чтобы повысить безопасность своей учётной записи, помимо пароля используйте второй фактор проверки подлинности.", + "Disconnect" : "Отключить", + "Not supported!" : "Не поддерживается!", + "Press ⌘-C to copy." : "Нажмите ⌘-C для копирования. ", + "Press Ctrl-C to copy." : "Нажмите Ctrl-C для копирования.", + "Error while loading browser sessions and device tokens" : "Ошибка при загрузке сеансов работы браузера и токенов устройств", + "Store credentials" : "Сохранить учётные данные", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php зарегистрирован в службе webcron и будет вызываться каждые 15 минут по HTTP.", + "Use system cron service to call the cron.php file every 15 minutes." : "Использовать системный cron для вызова файла cron.php каждые 15 минут.", + "Follow us on Google+" : "Следите за нашими новостями в Google+" +}, +"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"); diff --git a/apps/settings/l10n/ru.json b/apps/settings/l10n/ru.json new file mode 100644 index 00000000000..fa69388cda8 --- /dev/null +++ b/apps/settings/l10n/ru.json @@ -0,0 +1,820 @@ +{ "translations": { + "{actor} added you to group {group}" : "{actor} добавил(а) вас в группу {group}", + "You added {user} to group {group}" : "Вы добавили {user} в группу {group}", + "{actor} added {user} to group {group}" : "{actor} добавил(а) {user} в группу {group}", + "An administrator added you to group {group}" : "Администратор добавил вас в группу {group}", + "An administrator added {user} to group {group}" : "Администратор добавил {user} в группу {group}", + "{actor} removed you from group {group}" : "{actor} удалил(а) вас из группы {group}", + "You removed {user} from group {group}" : "Вы удалили {user} из группы {group}", + "{actor} removed {user} from group {group}" : "{actor} удалил(а) {user} из группы {group}", + "An administrator removed you from group {group}" : "Администратор удалил вас из группы {group}", + "An administrator removed {user} from group {group}" : "Администратор исключил пользователя {user} из группы {group}", + "Your <strong>group memberships</strong> were modified" : "Ваше <strong>членство в группе</strong> было изменено", + "{actor} changed your password" : "{actor} сменил(а) ваш пароль", + "You changed your password" : "Вы изменили свой пароль", + "Your password was reset by an administrator" : "Ваш пароль был сброшен администратором", + "{actor} changed your email address" : "{actor} изменил(а) ваш адрес электронной почты", + "You changed your email address" : "Вы изменили свой адрес электронной почты", + "Your email address was changed by an administrator" : "Ваш адрес электронной почты был изменён администратором", + "You created app password \"{token}\"" : "Вы создали пароль приложения «{token}»", + "You deleted app password \"{token}\"" : "Вы удалили пароль приложения «{token}»", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Вы переименовали пароль приложения «{token}» в «{newToken}»", + "You granted filesystem access to app password \"{token}\"" : "Вы разрешили доступ к файлам приложению «{token}»", + "You revoked filesystem access from app password \"{token}\"" : "Вы закрыли доступ к файлам приложению «{token}»", + "Security" : "Безопасность", + "You successfully logged in using two-factor authentication (%1$s)" : "Вы успешно вошли в систему используя двухфакторную аутентификацию (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Сбой при попытке входа с использованием двухфакторной аутентификации (%1$s)", + "Remote wipe was started on %1$s" : "Удаленная очистка была запущена на устройстве %1$s", + "Remote wipe has finished on %1$s" : "Удаленная очистка была закончена на устройстве %1$s", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Ваш <strong>пароль</strong> или <strong>адрес электронной почты</strong> были изменены", + "Couldn't remove app." : "Не удалось удалить приложение.", + "Couldn't update app." : "Не удалось обновить приложение.", + "Wrong password" : "Неправильный пароль", + "Saved" : "Сохранено", + "No user supplied" : "Не выбран пользователь", + "Unable to change password" : "Невозможно изменить пароль", + "Authentication error" : "Ошибка аутентификации", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Введите пароль восстановления администратора, в противном случае все пользовательские данные будут утеряны.", + "Wrong admin recovery password. Please check the password and try again." : "Неправильный пароль восстановления администратора. Проверьте пароль и попробуйте еще раз.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Используемый механизм не поддерживает смену паролей, но пользовательский ключ шифрования был обновлён.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "установка и обновление приложений через магазин приложений или федерацию облачных хранилищ", + "Federated Cloud Sharing" : "Федерация облачных хранилищ", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL использует %1$s устаревшей версии %2$s. Обновите операционную систему, иначе такие возможности, как %3$s, не будут работать корректно.", + "Invalid SMTP password." : "Неверный пароль SMTP.", + "Email setting test" : "Проверка настроек электронной почты", + "Well done, %s!" : "Отлично, %s!", + "If you received this email, the email configuration seems to be correct." : "Если вы получили это сообщение, значит электронная почта настроена правильно.", + "Email could not be sent. Check your mail server log" : "Не удалось отправить сообщение электронной почты. Проверьте журнал ошибок почтового сервера", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Во время отправки письма произошла ошибка. Пожалуйста проверьте настройки. (Ошибка: %s)", + "You need to set your user email before being able to send test emails." : "Вы должны настроить ваш собственный адрес электронной почты прежде чем отправлять тестовые сообщения.", + "Invalid mail address" : "Некорректный адрес электронной почты", + "Settings saved" : "Настройки сохранены", + "Unable to change full name" : "Невозможно изменить полное имя", + "Unable to change email address" : "Невозможно изменить адрес электронной почты", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Для подтверждения владения аккаунтом Twitter, опубликуйте следующий твит (убедитесь, что разместили его без разрыва строки):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Для подтверждения владения сайтом поместите в корневом каталоге по пути «.well-known/CloudIdVerificationCode.txt» следующее содержимое (убедитесь, что разместили весь текст в одну строку): ", + "%1$s changed your password on %2$s." : "%1$s сменил ваш пароль для сервера %2$s.", + "Your password on %s was changed." : "Ваш пароль на сервере %s был изменён", + "Your password on %s was reset by an administrator." : "Ваш пароль на сервере %s был сброшен администратором.", + "Password for %1$s changed on %2$s" : "Пароль %1$s изменен на сервере %2$s", + "Password changed for %s" : "Пароль изменён для %s", + "If you did not request this, please contact an administrator." : "В случае, если вы не запрашивали это действие, свяжитесь с администратором.", + "Your email address on %s was changed." : "На сервере %s был изменён адрес электронной почты Вашей учётной записи.", + "Your email address on %s was changed by an administrator." : "Ваш адрес электронной почты на сервере %s был изменён администратором.", + "Email address for %1$s changed on %2$s" : "Адрес электронной почты %1$s изменён на %2$s", + "Email address changed for %s" : "Изменён адрес электронной почты пользователя %s.", + "The new email address is %s" : "Новый адрес электронной почты: %s.", + "Your %s account was created" : "Создана ваша учётная запись %s ", + "Welcome aboard" : "Добро пожаловать", + "Welcome aboard %s" : "Добро пожаловать, %s!", + "Welcome to your %s account, you can add, protect, and share your data." : "%s, добро пожаловать в свою учётную запись!\nТеперь Вы можете добавить свои данные, а после настроить и открыть совместный доступ.", + "Your username is: %s" : "Ваше имя пользователя: %s", + "Set your password" : "Задайте свой пароль", + "Go to %s" : "Перейти к %s", + "Install Client" : "Установить программу-клиент", + "Logged in user must be a subadmin" : "Вошедший в систему пользователь должен обладать правами суб-администратора", + "Create" : "Создать", + "Change" : "Изменить", + "Delete" : "Удалить", + "Share" : "Поделиться", + "Unlimited" : "Неограничено", + "Verifying" : "Проверка", + "Verifying …" : "Выполняется проверка…", + "Verify" : "Проверить", + "Migration in progress. Please wait until the migration is finished" : "Перенос выполняется, дождитесь завершения", + "Migration started …" : "Перенос начат…", + "Not saved" : "Не сохранено", + "Sending…" : "Отправка…", + "Email sent" : "Письмо отправлено", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Произошла ошибка. Пожалуйста загрузите сертификат PEM в ASCII кодировке.", + "Valid until {date}" : "Действительно до {дата}", + "Local" : "Локально", + "Private" : "Закрытый", + "Only visible to local users" : "Виден только локальным пользователям", + "Only visible to you" : "Виден только вам", + "Contacts" : "Контакты", + "Visible to local users and to trusted servers" : "Виден локальным пользователям и доверенным серверам", + "Public" : "Открытый", + "Will be synced to a global and public address book" : "Будет синхронизирован с глобальной и открытой адресной книгой", + "Very weak password" : "Очень слабый пароль", + "Weak password" : "Слабый пароль", + "So-so password" : "Так себе пароль", + "Good password" : "Хороший пароль", + "Strong password" : "Надёжный пароль", + "An error occurred while changing your language. Please reload the page and try again." : "При переключении языка произошла ошибка. Перезагрузите эту страницу и попробуйте ещё раз.", + "An error occurred while changing your locale. Please reload the page and try again." : "При переключении региональных стандартов произошла ошибка. Перезагрузите страницу и попробуйте ещё раз.", + "Select a profile picture" : "Выберите аватар", + "Week starts on {fdow}" : "Начало недели: {fdow}", + "Groups" : "Участник групп", + "Group list is empty" : "Список групп пуст", + "Unable to retrieve the group list" : "Не удалось получить список групп", + "Afrikaans (Namibia)" : "Африкаанс (Намибия)", + "Afrikaans (South Africa)" : "Африкаанс (Южная Африка)", + "Afrikaans" : "Африкаанс", + "Akan (Ghana)" : "Акан (Гана)", + "Akan" : "Акан", + "Albanian (Albania)" : "Албанский (Албания)", + "Albanian" : "Албанский", + "Amharic (Ethiopia)" : "Амхарский (Эфиопия)", + "Amharic" : "Амхарский", + "Arabic (Algeria)" : "Арабский (Алжир)", + "Arabic (Bahrain)" : "Арабский (Бахрейн)", + "Arabic (Egypt)" : "Арабский (Египет)", + "Arabic (Iraq)" : "Арабский (Ирак)", + "Arabic (Jordan)" : "Арабский (Иордания)", + "Arabic (Kuwait)" : "Арабский (Кувейт)", + "Arabic (Lebanon)" : "Арабский (Ливан)", + "Arabic (Libya)" : "Арабский (Ливия)", + "Arabic (Morocco)" : "Арабский (Марокко)", + "Arabic (Oman)" : "Арабский (Оман)", + "Arabic (Qatar)" : "Арабский (Катар)", + "Arabic (Saudi Arabia)" : "Арабский (Саудовская Аравия)", + "Arabic (Sudan)" : "Арабский (Судан)", + "Arabic (Syria)" : "Арабский (Сирия)", + "Arabic (Tunisia)" : "Арабский (Тунис)", + "Arabic (United Arab Emirates)" : "Арабский (Объединенные Арабские Эмираты)", + "Arabic (Yemen)" : "Арабский (Йемен)", + "Arabic" : "Арабский", + "Armenian (Armenia)" : "Армянский (Армения)", + "Armenian" : "Армянский", + "Assamese (India)" : "Ассамский (Индия)", + "Assamese" : "Ассамский", + "Asu (Tanzania)" : "Асу (Танзания)", + "Asu" : "Асу", + "Azerbaijani (Cyrillic)" : "Азербайджанский (кириллица)", + "Azerbaijani (Cyrillic, Azerbaijan)" : "Азербайджанский (кириллица, Азербайджан)", + "Azerbaijani (Latin)" : "Азербайджанский (латиница)", + "Azerbaijani (Latin, Azerbaijan)" : "Азербайджанский (латиница, Азербайджан)", + "Azerbaijani" : "Азербайджанский", + "Bambara (Mali)" : "Бамана (Мали)", + "Bambara" : "Бамана", + "Basque (Spain)" : "Баскский (Испания)", + "Basque" : "Баскский", + "Belarusian (Belarus)" : "Белорусский (Беларусь)", + "Belarusian" : "Белорусский", + "Bemba (Zambia)" : "Бемба (Замбия)", + "Bemba" : "Бемба", + "Bena (Tanzania)" : "Бена (Танзания)", + "Bena" : "Бена", + "Bengali (Bangladesh)" : "Бенгальский (Бангладеш)", + "Bengali (India)" : "Бенгальский (Индия)", + "Bengali" : "Бенгальский", + "Bosnian (Bosnia and Herzegovina)" : "Боснийский (Босния и Герцеговина)", + "Bosnian" : "Боснийский", + "Bulgarian (Bulgaria)" : "Болгарский (Болгария)", + "Bulgarian" : "Болгарский", + "Burmese (Myanmar [Burma])" : "Бирманский (Мьянма [Бирма])", + "Burmese" : "Бирманский", + "Catalan (Spain)" : "Каталанский (Испания)", + "Catalan" : "Каталанский", + "Central Morocco Tamazight (Latin)" : "Среднеатласский тамазигхтский (латиница)", + "Central Morocco Tamazight (Latin, Morocco)" : "Среднеатласский тамазигхтский (латиница, Марокко)", + "Central Morocco Tamazight" : "Среднеатласский тамазигхтский", + "Cherokee (United States)" : "Чероки (Соединенные Штаты Америки)", + "Cherokee" : "Чероки", + "Chiga (Uganda)" : "Кига (Уганда)", + "Chiga" : "Кига", + "Chinese (Simplified Han)" : "Китайский (упрощенный)", + "Chinese (Simplified Han, China)" : "Китайский (упрощенный, Китай)", + "Chinese (Simplified Han, Hong Kong SAR China)" : "Китайский (упрощенный, САР Гонконг, Китай)", + "Chinese (Simplified Han, Macau SAR China)" : "Китайский (упрощенный, САР Макао, Китай)", + "Chinese (Simplified Han, Singapore)" : "Китайский (упрощенный, Сингапур)", + "Chinese (Traditional Han)" : "Китайский (традиционный)", + "Chinese (Traditional Han, Hong Kong SAR China)" : "Китайский (традиционный, САР Гонконг, Китай)", + "Chinese (Traditional Han, Macau SAR China)" : "Китайский (традиционный, САР Макао, Китай)", + "Chinese (Traditional Han, Taiwan)" : "Китайский (традиционный, Тайвань)", + "Chinese" : "Китайский", + "Cornish (United Kingdom)" : "Корнский (Великобритания)", + "Cornish" : "Корнский", + "Croatian (Croatia)" : "Хорватский (Хорватия)", + "Croatian" : "Хорватский", + "Czech (Czech Republic)" : "Чешский (Чехия)", + "Czech" : "Чешский", + "Danish (Denmark)" : "Датский (Дания)", + "Danish" : "Датский", + "Dutch (Belgium)" : "Нидерландский (Бельгия)", + "Dutch (Netherlands)" : "Нидерландский (Нидерланды)", + "Dutch" : "Нидерландский", + "Embu (Kenya)" : "Эмбу (Кения)", + "Embu" : "Эмбу", + "English (American Samoa)" : "Английский (Американское Самоа)", + "English (Australia)" : "Английский (Австралия)", + "English (Belgium)" : "Английский (Бельгия)", + "English (Belize)" : "Английский (Белиз)", + "English (Botswana)" : "Английский (Ботсвана)", + "English (Canada)" : "Английский (Канада)", + "English (Guam)" : "Английский (Гуам)", + "English (Hong Kong SAR China)" : "Английский (САР Гонконг, Китай)", + "English (India)" : "Английский (Индия)", + "English (Ireland)" : "Английский (Ирландия)", + "English (Jamaica)" : "Английский (Ямайка)", + "English (Malta)" : "Английский (Мальта)", + "English (Marshall Islands)" : "Английский (Маршалловы Острова)", + "English (Mauritius)" : "Английский (Маврикий)", + "English (Namibia)" : "Английский (Намибия)", + "English (New Zealand)" : "Английский (Новая Зеландия)", + "English (Northern Mariana Islands)" : "Английский (Северные Марианские Острова)", + "English (Pakistan)" : "Английский (Пакистан)", + "English (Philippines)" : "Английский (Филиппины)", + "English (Singapore)" : "Английский (Сингапур)", + "English (South Africa)" : "Английский (Южная Африка)", + "English (Trinidad and Tobago)" : "Английский (Тринидад и Тобаго)", + "English (U.S. Minor Outlying Islands)" : "Английский (Внешние малые острова США)", + "English (U.S. Virgin Islands)" : "Английский (Виргинские острова США)", + "English (United Kingdom)" : "Английский (Великобритания)", + "English (United States)" : "Английский (Соединенные Штаты Америки)", + "English (Zimbabwe)" : "Английский (Зимбабве)", + "English" : "Английский", + "Esperanto" : "Эсперанто", + "Estonian (Estonia)" : "Эстонский (Эстония)", + "Estonian" : "Эстонский", + "Ewe (Ghana)" : "Эве (Гана)", + "Ewe (Togo)" : "Эве (Того)", + "Ewe" : "Эве", + "Faroese (Faroe Islands)" : "Фарерский (Фарерские острова)", + "Faroese" : "Фарерский", + "Filipino (Philippines)" : "Филиппинский (Филиппины)", + "Filipino" : "Филиппинский", + "Finnish (Finland)" : "Финский (Финляндия)", + "Finnish" : "Финский", + "French (Belgium)" : "Французский (Бельгия)", + "French (Benin)" : "Французский (Бенин)", + "French (Burkina Faso)" : "Французский (Буркина-Фасо)", + "French (Burundi)" : "Французский (Бурунди)", + "French (Cameroon)" : "Французский (Камерун)", + "French (Canada)" : "Французский (Канада)", + "French (Central African Republic)" : "Французский (Центральная Африканская Республика)", + "French (Chad)" : "Французский (Чад)", + "French (Comoros)" : "Французский (Коморы)", + "French (Congo - Brazzaville)" : "Французский (Конго - Браззавиль)", + "French (Congo - Kinshasa)" : "Французский (Конго - Киншаса)", + "French (Côte d’Ivoire)" : "Французский (Кот-д’Ивуар)", + "French (Djibouti)" : "Французский (Джибути)", + "French (Equatorial Guinea)" : "Французский (Экваториальная Гвинея)", + "French (France)" : "Французский (Франция)", + "French (Gabon)" : "Французский (Габон)", + "French (Guadeloupe)" : "Французский (Гваделупа)", + "French (Guinea)" : "Французский (Гвинея)", + "French (Luxembourg)" : "Французский (Люксембург)", + "French (Madagascar)" : "Французский (Мадагаскар)", + "French (Mali)" : "Французский (Мали)", + "French (Martinique)" : "Французский (Мартиника)", + "French (Monaco)" : "Французский (Монако)", + "French (Niger)" : "Французский (Нигер)", + "French (Rwanda)" : "Французский (Руанда)", + "French (Réunion)" : "Французский (Реюньон)", + "French (Saint Barthélemy)" : "Французский (Сен-Бартелеми)", + "French (Saint Martin)" : "Французский (Сен-Мартен)", + "French (Senegal)" : "Французский (Сенегал)", + "French (Switzerland)" : "Французский (Швейцария)", + "French (Togo)" : "Французский (Того)", + "French" : "Французский", + "Fulah (Senegal)" : "Фула (Сенегал)", + "Fulah" : "Фула", + "Galician (Spain)" : "Галисийский (Испания)", + "Galician" : "Галисийский", + "Ganda (Uganda)" : "Га'анда (Уганда)", + "Ganda" : "Га’анда", + "Georgian (Georgia)" : "Грузинский (Грузия)", + "Georgian" : "Грузинский", + "German (Austria)" : "Немецкий (Австрия)", + "German (Belgium)" : "Немецкий (Бельгия)", + "German (Germany)" : "Немецкий (Германия)", + "German (Liechtenstein)" : "Немецкий (Лихтенштейн)", + "German (Luxembourg)" : "Немецкий (Люксембург)", + "German (Switzerland)" : "Немецкий (Швейцария)", + "German" : "Немецкий", + "Greek (Cyprus)" : "Греческий (Кипр)", + "Greek (Greece)" : "Греческий (Греция)", + "Greek" : "Греческий", + "Gujarati (India)" : "Гуджарати (Индия)", + "Gujarati" : "Гуджарати", + "Gusii (Kenya)" : "Гусии (Кения)", + "Gusii" : "Гусии", + "Hausa (Latin)" : "Хауса (латиница)", + "Hausa (Latin, Ghana)" : "Хауса (латиница, Гана)", + "Hausa (Latin, Niger)" : "Хауса (латиница, Нигер)", + "Hausa (Latin, Nigeria)" : "Хауса (латиница, Нигерия)", + "Hausa" : "Хауса", + "Hawaiian (United States)" : "Гавайский (Соединенные Штаты Америки)", + "Hawaiian" : "Гавайский", + "Hebrew (Israel)" : "Иврит (Израиль)", + "Hebrew" : "Иврит", + "Hindi (India)" : "Хинди (Индия)", + "Hindi" : "Хинди", + "Hungarian (Hungary)" : "Венгерский (Венгрия)", + "Hungarian" : "Венгерский", + "Icelandic (Iceland)" : "Исландский (Исландия)", + "Icelandic" : "Исландский", + "Igbo (Nigeria)" : "Игбо (Нигерия)", + "Igbo" : "Игбо", + "Indonesian (Indonesia)" : "Индонезийский (Индонезия)", + "Indonesian" : "Индонезийский", + "Irish (Ireland)" : "Ирландский (Ирландия)", + "Irish" : "Ирландский", + "Italian (Italy)" : "Итальянский (Италия)", + "Italian (Switzerland)" : "Итальянский (Швейцария)", + "Italian" : "Итальянский", + "Japanese (Japan)" : "Японский (Япония)", + "Japanese" : "Японский", + "Kabuverdianu (Cape Verde)" : "Кабувердьяну (Кабо-Верде)", + "Kabuverdianu" : "Кабувердьяну", + "Kabyle (Algeria)" : "Кабильский (Алжир)", + "Kabyle" : "Кабильский", + "Kalaallisut (Greenland)" : "Гренландский (Гренландия)", + "Kalaallisut" : "Гренландский", + "Kalenjin (Kenya)" : "Календжин (Кения)", + "Kalenjin" : "Календжин", + "Kamba (Kenya)" : "Камба (Кения)", + "Kamba" : "Камба", + "Kannada (India)" : "Каннада (Индия)", + "Kannada" : "Каннада", + "Kazakh (Cyrillic)" : "Казахский (кириллица)", + "Kazakh (Cyrillic, Kazakhstan)" : "Казахский (кириллица, Казахстан)", + "Kazakh" : "Казахский", + "Khmer (Cambodia)" : "Кхмерский (Камбожда)", + "Khmer" : "Кхмерский", + "Kikuyu (Kenya)" : "Кикуйю (Кения)", + "Kikuyu" : "Кикуйю", + "Kinyarwanda (Rwanda)" : "Киньяруанда (Руанда)", + "Kinyarwanda" : "Киньяруанда", + "Konkani (India)" : "Конкани (Индия)", + "Konkani" : "Конкани", + "Korean (South Korea)" : "Корейский (Республика Корея)", + "Korean" : "Корейский", + "Koyra Chiini (Mali)" : "Койра Чиини (Мали)", + "Koyra Chiini" : "Койра Чиини", + "Koyraboro Senni (Mali)" : "Койраборо Сенни (Мали)", + "Koyraboro Senni" : "Койраборо Сенни", + "Langi (Tanzania)" : "Ланго (Танзания)", + "Langi" : "Ланго", + "Latvian (Latvia)" : "Латвийский (Латвия)", + "Latvian" : "Латвийский", + "Lithuanian (Lithuania)" : "Литовский (Литва)", + "Lithuanian" : "Литовский", + "Luo (Kenya)" : "Луо (Кения)", + "Luo" : "Луо", + "Luyia (Kenya)" : "Луйя (Кения)", + "Luyia" : "Луйя", + "Macedonian (Macedonia)" : "Македонский (Македония)", + "Macedonian" : "Македонский", + "Machame (Tanzania)" : "Мачаме (Танзания)", + "Machame" : "Мачаме", + "Makonde (Tanzania)" : "Маконде (Танзания)", + "Makonde" : "Маконде", + "Malagasy (Madagascar)" : "Малагасийский (Мадагаскар)", + "Malagasy" : "Малагасийский", + "Malay (Brunei)" : "Малайский (Бруней)", + "Malay (Malaysia)" : "Малайский (Малайзия)", + "Malay" : "Малайский", + "Malayalam (India)" : "Малаялам (Индия)", + "Malayalam" : "Малаялам", + "Maltese (Malta)" : "Мальтийский (Мальта)", + "Maltese" : "Мальтийский", + "Manx (United Kingdom)" : "Мэнский (Великобритания)", + "Manx" : "Мэнский", + "Marathi (India)" : "Маратхи (Индия)", + "Marathi" : "Маратхи", + "Masai (Kenya)" : "Масаи (Кения)", + "Masai (Tanzania)" : "Масаи (Танзания)", + "Masai" : "Масаи", + "Meru (Kenya)" : "Меру (Кения)", + "Meru" : "Меру", + "Morisyen (Mauritius)" : "Маврикийский креольский (Маврикий)", + "Morisyen" : "Маврикийский креольский", + "Nama (Namibia)" : "Нама (Намибия)", + "Nama" : "Нама", + "Nepali (India)" : "Непальский (Индия)", + "Nepali (Nepal)" : "Непальский (Непал)", + "Nepali" : "Непальский", + "North Ndebele (Zimbabwe)" : "Северный Ндебеле (Зимбабве)", + "North Ndebele" : "Северный Ндебеле", + "Norwegian Bokmål (Norway)" : "Норвежский букмол (Норвегия)", + "Norwegian Bokmål" : "Норвежский букмол", + "Norwegian Nynorsk (Norway)" : "Норвежский нюношк (Норвегия)", + "Norwegian Nynorsk" : "Норвежский нюношк", + "Nyankole (Uganda)" : "Ньянколе (Уганда)", + "Nyankole" : "Ньянколе", + "Oriya (India)" : "Ория (Индия)", + "Oriya" : "Ория", + "Oromo (Ethiopia)" : "Оромо (Эфиопия)", + "Oromo (Kenya)" : "Оромо (Кения)", + "Oromo" : "Оромо", + "Pashto (Afghanistan)" : "Пушту (Афганистан)", + "Pashto" : "Пушту", + "Persian (Afghanistan)" : "Персидский (Афганистан)", + "Persian (Iran)" : "Персидский (Иран)", + "Persian" : "Персидский", + "Polish (Poland)" : "Польский (Польша)", + "Polish" : "Польский", + "Portuguese (Brazil)" : "Португальский (Бразилия)", + "Portuguese (Guinea-Bissau)" : "Португальский (Гвинея-Бисау)", + "Portuguese (Mozambique)" : "Португальский (Мозамбик)", + "Portuguese (Portugal)" : "Португальский (Португалия)", + "Portuguese" : "Португальский", + "Punjabi (Arabic)" : "Панджаби (арабский алфавит)", + "Punjabi (Arabic, Pakistan)" : "Панджаби (арабский алфавит, Пакистан)", + "Punjabi (Gurmukhi)" : "Панджаби (гурмукхи)", + "Punjabi (Gurmukhi, India)" : "Панджаби (гурмукхи, Индия)", + "Punjabi" : "Панджаби", + "Romanian (Moldova)" : "Румынский (Молдова)", + "Romanian (Romania)" : "Румынский (Румыния)", + "Romanian" : "Румынский", + "Romansh (Switzerland)" : "Романшский (Швейцария)", + "Romansh" : "Романшский", + "Rombo (Tanzania)" : "Ромбо (Танзания)", + "Rombo" : "Ромбо", + "Russian (Moldova)" : "Русский (Молдова)", + "Russian (Russia)" : "Русский (Россия)", + "Russian (Ukraine)" : "Русский (Украина)", + "Russian" : "Русский", + "Rwa (Tanzania)" : "Руа (Танзания)", + "Rwa" : "Руа", + "Samburu (Kenya)" : "Самбуру (Кения)", + "Samburu" : "Самбуру", + "Sango (Central African Republic)" : "Санго (Центральноафриканская Республика)", + "Sango" : "Санго", + "Sena (Mozambique)" : "Сена (Мозамбик)", + "Sena" : "Сена", + "Serbian (Cyrillic)" : "Сербский (кириллица)", + "Serbian (Cyrillic, Bosnia and Herzegovina)" : "Сербский (кириллица, Босния и Герцеговина)", + "Serbian (Cyrillic, Montenegro)" : "Сербский (кириллица, Черногория)", + "Serbian (Cyrillic, Serbia)" : "Сербский (кириллица, Сербия)", + "Serbian (Latin)" : "Сербский (латиница)", + "Serbian (Latin, Bosnia and Herzegovina)" : "Сербский (латиница, Босния и Герцеговина)", + "Serbian (Latin, Montenegro)" : "Сербский (латиница, Черногория)", + "Serbian (Latin, Serbia)" : "Сербский (латиница, Сербия)", + "Serbian" : "Сербский", + "Shona (Zimbabwe)" : "Шона (Зимбабве)", + "Shona" : "Шона", + "Sichuan Yi (China)" : "Носу (Китай)", + "Sichuan Yi" : "Носу", + "Sinhala (Sri Lanka)" : "Сингальский (Шри-Ланка)", + "Sinhala" : "Сингальский", + "Slovak (Slovakia)" : "Словацкий (Словакия)", + "Slovak" : "Словацкий", + "Slovenian (Slovenia)" : "Словенский (Словения)", + "Slovenian" : "Словенский", + "Soga (Uganda)" : "Сога (Уганда)", + "Soga" : "Сога", + "Somali (Djibouti)" : "Сомалийский (Джибути)", + "Somali (Ethiopia)" : "Сомалийский (Эфиопия)", + "Somali (Kenya)" : "Сомалийский (Кения)", + "Somali (Somalia)" : "Сомалийский (Сомали)", + "Somali" : "Сомалийский", + "Spanish (Argentina)" : "Испанский (Аргентина)", + "Spanish (Bolivia)" : "Испанский (Боливия)", + "Spanish (Chile)" : "Испанский (Чили)", + "Spanish (Colombia)" : "Испанский (Колумбия)", + "Spanish (Costa Rica)" : "Испанский (Коста-Рика)", + "Spanish (Dominican Republic)" : "Испанский (Доминиканская Республика)", + "Spanish (Ecuador)" : "Испанский (Эквадор)", + "Spanish (El Salvador)" : "Испанский (Сальвадор)", + "Spanish (Equatorial Guinea)" : "Испанский (Экваториальная Гвинея)", + "Spanish (Guatemala)" : "Испанский (Гватемала)", + "Spanish (Honduras)" : "Испанский (Гондурас)", + "Spanish (Latin America)" : "Испанский (Латинская Америка)", + "Spanish (Mexico)" : "Испанский (Мексика)", + "Spanish (Nicaragua)" : "Испанский (Никарагуа)", + "Spanish (Panama)" : "Испанский (Панама)", + "Spanish (Paraguay)" : "Испанский (Парагвай)", + "Spanish (Peru)" : "Испанский (Перу)", + "Spanish (Puerto Rico)" : "Испанский (Пуэрто-Рико)", + "Spanish (Spain)" : "Испанский (Испания)", + "Spanish (United States)" : "Испанский (Соединенные Штаты Америки)", + "Spanish (Uruguay)" : "Испанский (Уругвай)", + "Spanish (Venezuela)" : "Испанский (Венесуэла)", + "Spanish" : "Испанский", + "Swahili (Kenya)" : "Суахили (Кения)", + "Swahili (Tanzania)" : "Суахили (Танзания)", + "Swahili" : "Суахили", + "Swedish (Finland)" : "Шведский (Финляндия)", + "Swedish (Sweden)" : "Шведский (Швеция)", + "Swedish" : "Шведский", + "Swiss German (Switzerland)" : "Швейцарский немецкий (Швейцария)", + "Swiss German" : "Швейцарский немецкий", + "Tachelhit (Latin)" : "Ташельхит (латиница)", + "Tachelhit (Latin, Morocco)" : "Ташельхит (латиница, Марокко)", + "Tachelhit (Tifinagh)" : "Ташельхит (тифинаг)", + "Tachelhit (Tifinagh, Morocco)" : "Ташельхит (тифинаг, Марокко)", + "Tachelhit" : "Ташельхит", + "Taita (Kenya)" : "Тайта (Кения)", + "Taita" : "Тайта", + "Tamil (India)" : "Тамильский (Индия)", + "Tamil (Sri Lanka)" : "Тамильский (Шри-Ланка)", + "Tamil" : "Тамильский", + "Telugu (India)" : "Телугу (Индия)", + "Telugu" : "Телугу", + "Teso (Kenya)" : "Тесо (Кения)", + "Teso (Uganda)" : "Тесо (Уганда)", + "Teso" : "Тесо", + "Thai (Thailand)" : "Тайский (Тайланд)", + "Thai" : "Тайский", + "Tibetan (China)" : "Тибетский (Китай)", + "Tibetan (India)" : "Тибетский (Индия)", + "Tibetan" : "Тибетский", + "Tigrinya (Eritrea)" : "Тигринья (Эритрея)", + "Tigrinya (Ethiopia)" : "Тигринья (Эфиопия)", + "Tigrinya" : "Тигринья", + "Tonga (Tonga)" : "Тонганский (Тонга)", + "Tonga" : "Тонганский", + "Turkish (Turkey)" : "Турецкий (Турция)", + "Turkish" : "Турецкий", + "Ukrainian (Ukraine)" : "Украинский (Украина)", + "Ukrainian" : "Украинский", + "Urdu (India)" : "Урду (Индия)", + "Urdu (Pakistan)" : "Урду (Пакистан)", + "Urdu" : "Урду", + "Uzbek (Arabic)" : "Узбекский (арабский алфавит)", + "Uzbek (Arabic, Afghanistan)" : "Узбекский (арабский алфавит, Афганистан)", + "Uzbek (Cyrillic)" : "Узбекский (кириллица)", + "Uzbek (Cyrillic, Uzbekistan)" : "Узбекский (кириллица, Узбекистан)", + "Uzbek (Latin)" : "Узбекский (латиница)", + "Uzbek (Latin, Uzbekistan)" : "Узбекский (латиница, Узбекистан)", + "Uzbek" : "Узбекский", + "Vietnamese (Vietnam)" : "Вьетнамский (Вьетнам)", + "Vietnamese" : "Вьетнамский", + "Vunjo (Tanzania)" : "Вунджо (Танзания)", + "Vunjo" : "Вунджо", + "Welsh (United Kingdom)" : "Валлийский (Великобритания)", + "Welsh" : "Валлийский", + "Yoruba (Nigeria)" : "Йоруба (Нигерия)", + "Yoruba" : "Йоруба", + "Zulu (South Africa)" : "Зулусский (Южная Африка)", + "Zulu" : "Зулусский", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Двухфаторная аутентификация может быть принудительна включена для всех пользователей и выбранных групп. В случае, если у пользователя не настроен механизм подтверждения подлинности вторым фактором, он не сможет войти в систему.", + "Enforce two-factor authentication" : "Требовать двухфакторую аунтефикацию", + "Limit to groups" : "Ограничить группами", + "Enforcement of two-factor authentication can be set for certain groups only." : "Требование использовать двухфакторную аутентификацию может быть применено только к определённым группам. ", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "Двухфаторная аутентификация требуется для всех пользователей следующих групп.", + "Enforced groups" : "Группы с требованием использования двухфакторной аутентификации", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "Двухфаторная аутентификация не требуется для пользователей следующих групп.", + "Excluded groups" : "Группы без требования использования двухфакторной аутентификации", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "Если выбрано включение или отключение использования двух-факторной проверки подлинности для групп, то для определения, требуется ли от пользователя использовать её, применяются следующие правила: \\n\n - если группы не включены в список, то двух-факторная проверка включена для всех их участников, кроме тех, кто также состоит в группах, проверка для которых отключена;\n - если группы включены в список, то двух-факторная проверка включена для всех участников таких групп;\n- если пользователь состоит одновременно и в группе, проверка для которой включена и группе, проверка для которой отключена, то приоритет получает использование двухфакторной проверки.", + "Save changes" : "Сохранить изменения", + "Marked for remote wipe" : "Отмечено для удаленной очистки", + "Device settings" : "Параметры устройства", + "Allow filesystem access" : "Разрешить доступ к файлам", + "Rename" : "Переименовать", + "Revoke" : "Отозвать", + "Wipe device" : "Очистить устройство", + "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Отмена этого токена может предотвратить очистку вашего устройства, если оно еще не было запущено.", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome для Android", + "iPhone" : "iPhone", + "iPad" : "iPad iOS", + "Nextcloud iOS app" : "Приложение Nextcloud для iOS", + "Nextcloud Android app" : "Приложение Nextcloud для Android", + "Nextcloud Talk for iOS" : "Nextcloud Talk для iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk для Android", + "Sync client - {os}" : "Клиент синхронизации - {os}", + "This session" : "Этот сеанс работы", + "Device" : "Устройство", + "Last activity" : "Последние действия", + "Devices & sessions" : "Активные устройства и сеансы", + "Web, desktop and mobile clients currently logged in to your account." : "Веб, настольные и мобильные клиенты, которые в настоящий момент авторизованы вашей учётной записью.", + "Do you really want to wipe your data from this device?" : "Вы действительно хотите стереть свои данные с этого устройства?", + "Confirm wipe" : "Подтвердить очистку", + "Error while creating device token" : "Ошибка при создании токена для устройства", + "Error while updating device token scope" : "Ошибка при обновлении разрешений токена устройства", + "Error while updating device token name" : "Ошибка при обновлении имени токена устройства", + "Error while deleting the token" : "Ошибка при удалении токена устройства", + "Error while wiping the device with the token" : "Ошибка при очистке устройства с данным токеном", + "App name" : "Название приложения", + "Create new app password" : "Создать пароль приложения", + "Use the credentials below to configure your app or device." : "Используйте учётные данные ниже для настройки вашего приложения или устройства.", + "For security reasons this password will only be shown once." : "По соображениям безопасности этот пароль будет показан лишь один раз.", + "Username" : "Имя пользователя", + "Password" : "Пароль", + "Done" : "Выполнено", + "Show QR code for mobile apps" : "Показать QR-код для мобильных приложений", + "Copied!" : "Скопировано!", + "Copy" : "Копировать", + "Could not copy app password. Please copy it manually." : "Не удалось скопировать пароль приложения. Пожалуйста, скопируйте его вручную.", + "This app is supported via your current Nextcloud subscription." : "Это приложение поддерживается через вашу текущую подписку Nextcloud.", + "Supported" : "Поддерживается", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Официальные приложения разработаны вместе с сообществом. Они предлагают базовую функциональность и готовы для использования.", + "Official" : "Официальное", + "by" : "автор", + "Update to {version}" : "Обновление до {version}", + "Remove" : "Удалить", + "Disable" : "Отключить", + "All" : "Все", + "Limit app usage to groups" : "Ограничить использование приложения заданными группами", + "No results" : "Результаты отсутствуют", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Для этого приложения не указана минимальная поддерживаемая версия Nextcloud, в будущем это будет считаться ошибкой.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Для этого приложения не указана максимальная поддерживаемая версия Nextcloud, в будущем это будет считаться ошибкой.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Приложение не может быть установлено, следующие зависимости не удовлетворены:", + "View in store" : "Посмотреть в магазине приложений", + "Visit website" : "Посетите веб-сайт", + "Report a bug" : "Сообщить об ошибке", + "User documentation" : "Пользовательская документация", + "Admin documentation" : "Документация для администратора", + "Developer documentation" : "Документация для разработчиков", + "Update to {update}" : "Обновить до {update}", + "Results from other categories" : "Результаты из других категорий", + "No apps found for your version" : "Приложений, совместимых с установленной версией Nextcloud, не найдено", + "Disable all" : "Отключить все", + "Enable all" : "Включить все", + "Download and enable" : "Скачать и включить", + "Enable" : "Включить", + "Enable untested app" : "Включить непроверенное приложение", + "The app will be downloaded from the app store" : "Приложение будет скачано из магазина приложений", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Это приложение не отмечено как совместимое с вашей версией Nextcloud. Если вы продолжите, вы сможете установить это приложение, однако оно может работать не так, как ожидается.", + "You do not have permissions to see the details of this user" : "У вас нет прав на просмотр данных об этом пользователе", + "The backend does not support changing the display name" : "Используемый механизм не поддерживает смену отображаемого имени", + "New password" : "Новый пароль", + "Add user in group" : "Добавить в группу", + "Set user as admin for" : "Назначить администратором", + "Select user quota" : "Квота пользователя", + "No language set" : "Язык не задан", + "Never" : "Никогда", + "Delete user" : "Удалить пользователя", + "Wipe all devices" : "Очистить все устройства", + "Disable user" : "Отключить пользователя", + "Enable user" : "Включить пользователя", + "Resend welcome email" : "Отправить приглашение ещё раз", + "{size} used" : "использовано {size}", + "Welcome mail sent!" : "Приглашение отправлено!", + "Display name" : "Отображаемое имя", + "Email" : "Адрес эл. почты", + "Group admin for" : "Администратор групп", + "Quota" : "Квота", + "Language" : "Язык", + "Storage location" : "Расположение хранилища", + "User backend" : "Механизм учёта", + "Last login" : "Последний вход", + "Will be autogenerated" : "Будет сгенерирован автоматически", + "Default language" : "Язык по умолчанию", + "Add a new user" : "Создать пользователя", + "No users in here" : "Здесь нет ни одного пользователя", + "Default quota" : "Квота по умолчанию", + "Password change is disabled because the master key is disabled" : "Смена пароля невозможна при отключённом мастер-ключе", + "Common languages" : "Основные языки", + "All languages" : "Все языки", + "Your apps" : "Ваши приложения", + "Active apps" : "Активные приложения", + "Disabled apps" : "Отключённые приложения", + "Updates" : "Обновления", + "App bundles" : "Пакеты приложений", + "{license}-licensed" : "Лицензия: {license}", + "New user" : "Новый пользователь", + "Default quota:" : "Квота по умолчанию: ", + "Select default quota" : "Квота по умолчанию", + "Show Languages" : "Показывать язык", + "Show last login" : "Время последнего входа в систему", + "Show user backend" : "Механизм учёта", + "Show storage path" : "Путь хранилища", + "You are about to remove the group {group}. The users will NOT be deleted." : "Группа «{group}» будет удалена, но это НЕ приведёт к удалению пользователей.", + "Please confirm the group removal " : "Подтвердите удаление группы", + "Remove group" : "Удалить группу", + "Admins" : "Администраторы", + "Disabled users" : "Отключённые пользователи", + "Everyone" : "Все", + "Add group" : "Добавить группу", + "An error occured during the request. Unable to proceed." : "Во время запроса произошла ошибка. Продолжение невозможно", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Приложение было включено, но нуждается в обновлении. В течении 5 секунд будет выполнено перенаправление на страницу обновления.", + "App update" : "Обновление приложения", + "Error: This app can not be enabled because it makes the server unstable" : "Ошибка: это приложение не может быть включено, так как оно сделает сервер нестабильным", + "SSL Root Certificates" : "Корневые сертификаты SSL", + "Common Name" : "Общепринятое имя", + "Valid until" : "Дата истечения", + "Issued By" : "Издатель", + "Valid until %s" : "Действительно до %s", + "Import root certificate" : "Импорт корневого сертификата", + "Administrator documentation" : "Документация администратора", + "Documentation" : "Документация", + "Forum" : "Форум", + "None" : "Отсутствует", + "Login" : "Логин", + "Plain" : "Простой", + "NT LAN Manager" : "Менеджер NT LAN", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Почтовый сервер", + "Open documentation" : "Открыть документацию", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Важно предоставить этому серверу возможность отправлять электронные письма, например, для сброса пароля и уведомлений.", + "Send mode" : "Способ отправки", + "Encryption" : "Шифрование", + "Sendmail mode" : "Режим sendmail", + "From address" : "Адрес отправителя", + "mail" : "почта", + "Authentication method" : "Метод проверки подлинности", + "Authentication required" : "Требуется аутентификация ", + "Server address" : "Адрес сервера", + "Port" : "Порт", + "Credentials" : "Учётные данные", + "SMTP Username" : "Пользователь SMTP", + "SMTP Password" : "Пароль SMTP", + "Test email settings" : "Проверка настроек эл.почты", + "Send email" : "Отправить сообщение", + "Security & setup warnings" : "Проверка безопасности и параметров", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Для обеспечения безопасности и производительности важно, чтобы всё было настроено правильно. Чтобы убедиться в этом, мы выполняем некоторые автоматические проверки. Для получения дополнительной информации обратитесь к соответствующему разделу документации.", + "All checks passed." : "Все проверки пройдены.", + "There are some errors regarding your setup." : "Были обнаружены ошибки конфигурации.", + "There are some warnings regarding your setup." : "Предупреждения о текущей конфигурации.", + "Checking for system and security issues." : "Проверка системы и возможных уязвимостей.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Ещё раз внимательно прочитайте <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">руководство по установке ↗</a> и проверьте <a href=\"%2$s\">журнал</a> на наличие ошибок и предупреждений.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Проверить безопасность Nextcloud <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">нашим сканером ↗</a>.", + "Version" : "Версия", + "Two-Factor Authentication" : "Двухфакторная аутентификация", + "Server-side encryption" : "Шифрование на стороне сервера", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Шифрование на стороне сервера позволяет шифровать файлы, которые загружаются на этот сервер. Это связано с ограничениями, такими как снижение производительности, поэтому включите его только в случае необходимости.", + "Enable server-side encryption" : "Включить шифрование на стороне сервера", + "Please read carefully before activating server-side encryption: " : "Внимательно изучите следующее перед включением шифрования на стороне сервера:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "После включения шифрования, все файлы, загруженные с этого момента на сервер, будут сохраняться в зашифрованном виде. Отключить шифрование в дальнейшем возможно только в случае, если использованный модуль шифрования поддерживает такую функцию, а также при соблюдении всех дополнительных условий (например, настроен ключ восстановления).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Шифрование само по себе не гарантирует безопасность системы. В документации приведена дополнительная информация о работе приложения «Шифрование» и примеры его использования.", + "Be aware that encryption always increases the file size." : "Шифрование всегда увеличивает размер файлов.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Регулярно создавайте резервные копии данных. При использовании шифрования сохраняйте не только данные, но и ключи.", + "This is the final warning: Do you really want to enable encryption?" : "Это последнее предупреждение: действительно включить шифрование?", + "Enable encryption" : "Включить шифрование", + "No encryption module loaded, please enable an encryption module in the app menu." : "Модуль шифрования не загружен, пожалуйста включите модуль шифрования в меню приложений.", + "Select default encryption module:" : "Выберите модуль шифрования по умолчанию:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Вам необходимо произвести преобразование ключей шифрования из старого формата (ownCloud <= 8.0) в новый. Пожалуйста включите \"Модуль шифрования по умолчанию\" и запустите команду 'occ encryption:migrate'.", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Вам необходимо произвести конвертацию ключей шифрования из старого формата (ownCloud <= 8.0) в новый.", + "Start migration" : "Запустить миграцию", + "Background jobs" : "Фоновые задания", + "Last job ran %s." : "Последнее задание выполнено %s.", + "Last job execution ran %s. Something seems wrong." : "Последнее задание было выполнено %s. Похоже, что-то не в порядке.", + "Background job didn’t run yet!" : "Фоновые задания ещё не выполнялись!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Для оптимальной производительности важно правильно настроить выполнение задач в фоновом режиме. Для крупных развёртываний рекомендуется использовать параметр «Cron». Обратитесь к документации для получения дополнительной информации.", + "Pick background job setting" : "Выбрать параметр выполнения фоновых задач", + "Execute one task with each page loaded" : "Выполнять одно задание с каждой загруженной страницей", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php зарегистрирован в службе webcron и будет вызываться каждые 5 минут по HTTP.", + "Use system cron service to call the cron.php file every 5 minutes." : "Использовать системный cron для вызова файла cron.php каждые 5 минут.", + "The cron.php needs to be executed by the system user \"%s\"." : "cron.php должен исполняться из под пользователя \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Для запуска требуется расширение POSIX для PHP. Обратитесь к {linkstart}документации по PHP{linkend} для получения дополнительной информации.", + "Sharing" : "Общий доступ", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Администратор может тонко настроить поведение механизма предоставления общего доступа. Обратитесь к документации для получения дополнительной информации.", + "Allow apps to use the Share API" : "Позволить приложениям использовать API общего доступа", + "Allow users to share via link" : "Разрешить пользователям публикации через ссылки", + "Allow public uploads" : "Разрешить открытые/публичные загрузки", + "Always ask for a password" : "Всегда запрашивать пароль", + "Enforce password protection" : "Защита паролем обязательна", + "Set default expiration date" : "Установить дату истечения по умолчанию", + "Expire after " : "Истечение через", + "days" : "дней", + "Enforce expiration date" : "Срок действия обязателен", + "Allow resharing" : "Разрешить повторное открытие общего доступа", + "Allow sharing with groups" : "Разрешить делиться с группами", + "Restrict users to only share with users in their groups" : "Запретить делиться с пользователями из других групп", + "Exclude groups from sharing" : "Запретить выбранным группам предоставлять общий доступ", + "These groups will still be able to receive shares, but not to initiate them." : "Эти группы смогут получать общие ресурсы, но не могут их создавать.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Включить автоматическое завершение имен пользователей в диалоге предоставления общего доступа. Если отключено, то необходимо вводить полное имя или адрес эл. почты.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Показывать текст об отказе на странице загрузки публичной ссылки (Показывать только когда список файлов скрыт)", + "This text will be shown on the public link upload page when the file list is hidden." : "Этот текст будет показан при переходе по публичной ссылке на загрузку при скрытом списке файлов", + "Default share permissions" : "Права общего доступа по умолчанию", + "Personal" : "Личное", + "Administration" : "Администрирование", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Разработано {communityopen}сообществом Nextcloud{linkclose}, {githubopen}исходный код{linkclose} лицензируется в соответствии с {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Посмотрите нашу страницу на Facebook", + "Follow us on Twitter" : "Следите за нашими новостями в Twitter", + "Follow us on Mastodon" : "Следите за нашими новостями в Mastodon", + "Check out our blog" : "Просмотрите наш блог", + "Subscribe to our newsletter" : "Подписывайтесь на нашу новостную рассылку", + "Profile picture" : "Аватар", + "Upload new" : "Загрузить аватар", + "Select from Files" : "Выбрать из файлов", + "Remove image" : "Удалить аватар", + "png or jpg, max. 20 MB" : "png или jpg, макс. 20 МБ", + "Picture provided by original account" : "Картинка из исходной учетной записи", + "Cancel" : "Отмена", + "Choose as profile picture" : "Выбрать в качестве картинки профиля", + "Details" : "Подробные сведения", + "You are a member of the following groups:" : "Вы являетесь участником следующих групп:", + "You are using <strong>%s</strong>" : "Вы используете <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Вы используете <strong>%1$s</strong> из <strong>%2$s</strong> (<strong>%3$s %%</strong>)", + "Full name" : "Полное имя", + "No display name set" : "Отображаемое имя не указано", + "Your email address" : "Ваш адрес электронной почты", + "No email address set" : "Адрес не указан", + "For password reset and notifications" : "Для сброса пароля и уведомлений", + "Phone number" : "Номер телефона", + "Your phone number" : "Ваш номер телефона", + "Address" : "Адрес", + "Your postal address" : "Ваш почтовый адрес", + "Website" : "Сайт", + "It can take up to 24 hours before the account is displayed as verified." : "До момента подтверждения аккаунта может пройти до 24 часов.", + "Link https://…" : "Ссылка https://…", + "Twitter" : "Twitter", + "Twitter handle @…" : "Имя в Twitter @…", + "Help translate" : "Помочь с переводом", + "Locale" : "Региональные стандарты", + "Current password" : "Текущий пароль", + "Change password" : "Сменить пароль", + "Use a second factor besides your password to increase security for your account." : "Чтобы повысить безопасность своей учётной записи, помимо пароля используйте второй фактор проверки подлинности.", + "Disconnect" : "Отключить", + "Not supported!" : "Не поддерживается!", + "Press ⌘-C to copy." : "Нажмите ⌘-C для копирования. ", + "Press Ctrl-C to copy." : "Нажмите Ctrl-C для копирования.", + "Error while loading browser sessions and device tokens" : "Ошибка при загрузке сеансов работы браузера и токенов устройств", + "Store credentials" : "Сохранить учётные данные", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php зарегистрирован в службе webcron и будет вызываться каждые 15 минут по HTTP.", + "Use system cron service to call the cron.php file every 15 minutes." : "Использовать системный cron для вызова файла cron.php каждые 15 минут.", + "Follow us on Google+" : "Следите за нашими новостями в Google+" +},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);" +} \ No newline at end of file diff --git a/apps/settings/l10n/sk.js b/apps/settings/l10n/sk.js new file mode 100644 index 00000000000..815825e2501 --- /dev/null +++ b/apps/settings/l10n/sk.js @@ -0,0 +1,362 @@ +OC.L10N.register( + "settings", + { + "{actor} added you to group {group}" : "používateľ {actor} vás pridal do skupiny {group}", + "You added {user} to group {group}" : "Pridali ste používateľa {actor} do skupiny {group}", + "{actor} added {user} to group {group}" : "{actor} pridal(a) používateľa {user} do skupiny {group}", + "An administrator added you to group {group}" : "Správca vás pridal do skupiny {group}", + "An administrator added {user} to group {group}" : "Správca pridal používateľa {user} do skupiny {group}", + "{actor} removed you from group {group}" : "{actor} vás odobral(a) zo skupiny {group}", + "You removed {user} from group {group}" : "Odobrali ste používateľa {user} zo skupiny {group}", + "{actor} removed {user} from group {group}" : "{actor} odobral(a) používateľa {user} ze skupiny {group}", + "An administrator removed you from group {group}" : "Správca vás odobral ze skupiny {group}", + "An administrator removed {user} from group {group}" : "Správca odobral používateľa {user} zo skupiny {group}", + "Your <strong>group memberships</strong> were modified" : "Bolo upravené vaše <strong>členstvo v skupinách</strong>", + "{actor} changed your password" : "{actor} zmenil Vaše heslo", + "You changed your password" : "Zmenili ste si heslo", + "Your password was reset by an administrator" : "Vaše heslo bolo resetované administrátorom", + "{actor} changed your email address" : "{actor} zmenil Vašu emailovú adresu", + "You changed your email address" : "Zmenili ste si emailovú adresu", + "Your email address was changed by an administrator" : "Vaša emailová adresa bola zmenená administrátorom", + "You created app password \"{token}\"" : "Vytvorili ste heslo pre aplikáciu \"{token}\"", + "You deleted app password \"{token}\"" : "Vymazali ste heslo pre aplikáciu \"{token}\"", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Premenovali ste heslo aplikácie \"{token}\" na \"{newToken}\"", + "You granted filesystem access to app password \"{token}\"" : "Povolili ste prístup k súborovému systému aplikácii, používajúcej heslo \"{token}\"", + "You revoked filesystem access from app password \"{token}\"" : "Zrušili ste prístup k súborovému systému pre aplikáciu, používajúcej heslo \"{token}\"", + "Security" : "Zabezpečenie", + "You successfully logged in using two-factor authentication (%1$s)" : "Úspešne ste sa prihlásili pomocou dvoj-faktorovej autentizácie (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Pokus o prihlásenie s použitím dvoj-faktorovej autentizácie zlyhal (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Vaše <strong>heslo</strong> alebo <strong>email</strong> bolo zmenené", + "Couldn't remove app." : "Nemožno odstrániť aplikáciu.", + "Couldn't update app." : "Nemožno aktualizovať aplikáciu.", + "Wrong password" : "Nesprávne heslo", + "Saved" : "Uložené", + "No user supplied" : "Nebol uvedený používateľ", + "Unable to change password" : "Zmena hesla sa nepodarila", + "Authentication error" : "Chyba autentifikácie", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Zadajte administrátorské heslo pre obnovu, inak budú všetky používateľské dáta stratené.", + "Wrong admin recovery password. Please check the password and try again." : "Chybné administrátorské heslo pre obnovu. Skontrolujte správnosť hesla a skúste to znovu.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Backend nepodporuje zmenu hesla, ale šifrovací kľúč používateľa bol zmenený.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Inštalovať a aktualizovať aplikácia pomocou obchodu alebo Zdieľaného Cloudového Úložiska", + "Federated Cloud Sharing" : "Sprístupnenie prostredníctvom Federated Cloud", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL používa zastaralú %1$s verziu (%2$s). Prosím aktualizujte si operačný systém pretože %3$s nebude fungovať spoľahlivo.", + "Invalid SMTP password." : "Nesprávne heslo pre SMTP.", + "Email setting test" : "Test nastavení emailu", + "Well done, %s!" : "Dobrá práca, %s!", + "If you received this email, the email configuration seems to be correct." : "Ak ste prijali tento email, emailová konfigurácia sa zdá byť správna.", + "Email could not be sent. Check your mail server log" : "Nepodarilo sa odoslať email. Skontrolujte log Vášho mail servera", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Vyskytol sa problém pri odosielaní emailu. Prosím, znovu skontrolujte svoje nastavenia. (Chyba: %s)", + "You need to set your user email before being able to send test emails." : "Musíte nastaviť svoj po​​užívateľský email, než budete môcť odoslať testovací email.", + "Invalid mail address" : "Neplatná emailová adresa", + "Settings saved" : "Nastavenia uložené", + "Unable to change full name" : "Nemožno zmeniť meno a priezvisko", + "Unable to change email address" : "Nemožno zmeniť emailovú adresu", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Ak chcete overiť svoj Twitter účet, napíšte nasledujúci tweet (uistite sa, že ho zasielate bez zalomenia riadkov):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Pre verifikáciu vašich webových stránok uložte nasledujúci obsah v koreňovom adresári webovej stránky v umiestnení '.well-known/CloudIdVerificationCode.txt' (uistite sa, že bol text vložený ako jediný riadok)", + "%1$s changed your password on %2$s." : "%1$s zmenil Vaše heslo na %2$s.", + "Your password on %s was changed." : "Vaše heslo na %s bolo zmenené.", + "Your password on %s was reset by an administrator." : "Vaše heslo na %s bolo resetované administrátorom.", + "Password for %1$s changed on %2$s" : "Heslo pre %1$s bolo zmenené na %2$s", + "Password changed for %s" : "Heslo zmenené pre %s", + "If you did not request this, please contact an administrator." : "Ak ste to nevyžadovali, prosím kontaktujte administrátora.", + "Your email address on %s was changed." : "Vaša emailová adresa na %s bola zmenená.", + "Your email address on %s was changed by an administrator." : "Vaša emailová adresa na %s bola zmenená administrátorom.", + "Email address for %1$s changed on %2$s" : "Emailová adresa pre %1$s zmenená na %2$s", + "Email address changed for %s" : "Emailová adresa zmenená pre %s", + "The new email address is %s" : "Nová emailová adresa je %s", + "Your %s account was created" : "Váš účet %s bol vytvorený", + "Welcome aboard" : "Vitajte na palube", + "Welcome aboard %s" : "Vitajte na palube %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Vitajte vo vašom %s účte, môžete pridávať, chrániť a zdieľať svoje dáta.", + "Your username is: %s" : "Vaše používateľské meno je: %s", + "Set your password" : "Nastavte si heslo", + "Go to %s" : "Prejsť na %s", + "Install Client" : "Inštalácia klienta", + "Logged in user must be a subadmin" : "Prihlásený používateľ musí byť sub-správca", + "Delete" : "Zmazať", + "Unlimited" : "Nelimitované", + "Verifying …" : "Overovanie ...", + "Verify" : "Overiť", + "Migration in progress. Please wait until the migration is finished" : "Prebieha migrácia. Počkajte prosím, kým sa skončí", + "Migration started …" : "Migrácia spustená ...", + "Not saved" : "Neuložené", + "Sending…" : "Odosielam...", + "Email sent" : "Email odoslaný", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Vyskytla sa chyba. Nahrajte prosím PEM certifikát v ASCII kódovaní.", + "Valid until {date}" : "Platný do {date}", + "Local" : "Lokálny", + "Private" : "Súkromný", + "Only visible to local users" : "Viditeľné iba pre lokálnych používateľov", + "Only visible to you" : "Viditeľné iba pre seba", + "Contacts" : "Kontakty", + "Visible to local users and to trusted servers" : "Viditeľné pre lokálnych používateľov a dôveryhodné servery", + "Public" : "Verejné", + "Will be synced to a global and public address book" : "Bude synchronizované s globálnym a verejným adresárom", + "Very weak password" : "Veľmi slabé heslo", + "Weak password" : "Slabé heslo", + "So-so password" : "Priemerné heslo", + "Good password" : "Dobré heslo", + "Strong password" : "Silné heslo", + "An error occurred while changing your language. Please reload the page and try again." : "Počas zmeny jazyka sa vyskytla chyba. Prosím obnovte stránku a skúste znova.", + "An error occurred while changing your locale. Please reload the page and try again." : "Počas zmeny jazyka sa vyskytla chyba. Prosím obnovte stránku a skúste znova.", + "Select a profile picture" : "Vybrať avatara", + "Week starts on {fdow}" : "Den začína v {fdow}", + "Groups" : "Skupiny", + "Group list is empty" : "Zoznam skupín je prázdny", + "Unable to retrieve the group list" : "Nie je možné načítať zoznam skupín", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Dvojzložkové overovanie je možné vynútiť pre všetkých\tpoužívateľov a konkrétne skupiny. Ak nemajú nastaveného poskytovateľa dvojzložkového overovania, nebudú sa môcť prihlásiť do systému.", + "Enforce two-factor authentication" : "Vynútiť dvojzložkové overovanie", + "Limit to groups" : "Povoľ len pre skupiny", + "Enforcement of two-factor authentication can be set for certain groups only." : "Vynútenie dvojzložkového overovania je možné nastaviť len pre určité skupiny.", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "Dvojzložkové overovanie je vynucované pre všetkých\tčlenov nasledujúcich skupín.", + "Enforced groups" : "Vynútené skupiny", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "Dvojzložkové overovanie nie je povinné pre\tčlenov nasledovných skupín.", + "Excluded groups" : "Vynechané skupiny", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "Pokiaľ sú skupiny vybraté/vynechané, je pre zisťovanie či je používateľovi vynútené dvojzložkové (2FA) overovanie použitá nasledovná logika: Ak nie sú vybraté žiadne skupiny, je 2FA zapnuté pre všetkých okrem členov vynechaných skupín. Ak sú nejaké skupiny vybraté, je 2FA zapnuté pre všetkých jej členov. Ak je používateľ členom ako vybratej, tak aj vynechanej skupiny, potom má vybratá skupina prednosť a 2FA je vynútené.", + "Save changes" : "Uložiť zmeny", + "Device settings" : "Nastavenia zariadenia", + "Allow filesystem access" : "Povoliť prístup ku súborovému systému", + "Rename" : "Premenovať", + "Revoke" : "Odvolať", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome pre Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Apka Nextcloud pre iOS", + "Nextcloud Android app" : "Apka Nextcloud pre Android", + "Nextcloud Talk for iOS" : "Nextcloud Talk pre iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk pre Android", + "Sync client - {os}" : "Sync client - {os}", + "This session" : "Táto relácia", + "Device" : "Zariadenie", + "Last activity" : "Posledná aktivita", + "Devices & sessions" : "Zariadenia a relácie", + "Web, desktop and mobile clients currently logged in to your account." : "Weboví, desktopoví, alebo mobilní klienti práve prihlásení na váš účet.", + "Error while creating device token" : "Chyba pri vytváraní tokenov zariadenia", + "Error while updating device token scope" : "Chyba pri aktualizácii rozsahu tokenu zariadenia", + "Error while updating device token name" : "Chyba pri aktualizácii názvu tokenu zariadenia", + "Error while deleting the token" : "Chyba pri mazaní tokenu", + "App name" : "Názov aplikácie", + "Create new app password" : "Vytvoriť nové heslo aplikácie", + "Use the credentials below to configure your app or device." : "Pre konfiguráciu vašej aplikácie, alebo zariadenia použite nižšie uvedené prihlasovacie údaje.", + "For security reasons this password will only be shown once." : "Z dôvodu bezpečnosti toto heslo bude zobrazené iba jeden krát.", + "Username" : "Používateľské meno", + "Password" : "Heslo", + "Done" : "Hotovo", + "Show QR code for mobile apps" : "Zobraziť QR kód pre mobilné apky", + "Copied!" : "Skopírované!", + "Copy" : "Kopírovať", + "Could not copy app password. Please copy it manually." : "Nie je možné skopírovať heslo pre aplikáciu. Skopírujte ho ručne.", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Oficiálne aplikácie sú vyvíjané komunitou. Poskytujú centrálnu funkcionalitu a sú pripravené pre produkčné nasadenie.", + "Official" : "Oficiálny", + "by" : "od", + "Update to {version}" : "Aktualizovať na {version}", + "Remove" : "Odstrániť", + "Disable" : "Zakázať", + "All" : "Všetky", + "Limit app usage to groups" : "Obmedziť používanie aplikácií pre skupiny", + "No results" : "Žiadne výsledky", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Pre túto aplikáciu nie je zadaná minimálna verzia Nextcloudu. Toto v budúcnosti spôsobí chybu.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Pre túto aplikáciu nie je zadaná maximálna verzia Nextcloudu. Toto v budúcnosti spôsobí chybu.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Túto aplikáciu nemožno nainštalovať, pretože nie sú splnené nasledovné závislosti:", + "View in store" : "Zobraz v obchode", + "Visit website" : "Navštíviť webstránku", + "Report a bug" : "Nahlásiť chybu", + "User documentation" : "Príručka používateľa", + "Admin documentation" : "Príručka administrátora", + "Developer documentation" : "Dokumentácia vývojára", + "Update to {update}" : "Aktualizovať na {update}", + "Results from other categories" : "Výsledku z ostatných kategórií", + "No apps found for your version" : "Aplikácie pre vašu verziu sa nenašli", + "Disable all" : "Zakázať všetko", + "Enable all" : "Povoliť všetko", + "Download and enable" : "Stiahnuť a povoliť", + "Enable" : "Zapnúť", + "The app will be downloaded from the app store" : "Aplikácia bude stiahnutá z obchodu", + "You do not have permissions to see the details of this user" : "Nemáte oprávnenie vidieť detaily tohoto používateľa", + "The backend does not support changing the display name" : "Backend nepodporuje zmenu zobrazovaného názvu", + "New password" : "Nové heslo", + "Add user in group" : "Pridať používateľa do skupiny", + "Set user as admin for" : "Nastaviť používateľa ako správcu pre", + "Select user quota" : "Zvoliť kvótu používateľa", + "No language set" : "Nie je nastavený žiadny jazyk", + "Never" : "Nikdy", + "Delete user" : "Zmazať používateľa", + "Disable user" : "Zablokovať používateľa", + "Enable user" : "Odblokovať používateľa", + "Resend welcome email" : "Znova odoslať privítací email", + "{size} used" : "{size} použité", + "Welcome mail sent!" : "Privítací email odoslaný", + "Display name" : "Zobrazované meno", + "Email" : "Email", + "Group admin for" : "Administrátor skupiny pre", + "Quota" : "Kvóta", + "Language" : "Jazyk", + "Storage location" : "Umiestnenie úložiska", + "User backend" : "Backend používateľa", + "Last login" : "Posledné prihlásenie", + "Default language" : "Predvolený jazyk", + "Add a new user" : "Pridať nového používateľa", + "No users in here" : "Nie sú tu žiadni používatelia", + "Default quota" : "Predvolená kvóta", + "Password change is disabled because the master key is disabled" : "Zmena hesla je zablokovaná pretože hlavný kľúč je vypnutý", + "Common languages" : "Spoločné jazyky", + "All languages" : "Všetky jazyky", + "Your apps" : "Vaše aplikácie", + "Active apps" : "Aktívne aplikácie", + "Disabled apps" : "Zakázané aplikácie", + "Updates" : "Aktualizácie", + "App bundles" : "Aplikačné balíky", + "{license}-licensed" : "{license}-licencovaný", + "New user" : "Nový používateľ", + "Default quota:" : "Predvolená kvóta:", + "Select default quota" : "Vybrať predvolenú kvótu", + "Show Languages" : "Zobraziť jazyky", + "Show last login" : "Zobraziť posledné prihlásenie", + "Show user backend" : "Zobraziť backend používateľa", + "Show storage path" : "Zobraziť popis umiestnenia úložiska", + "You are about to remove the group {group}. The users will NOT be deleted." : "Chystáte sa odstrániť skupinu {group}. Používatelia NEBUDÚ vymazaní.", + "Please confirm the group removal " : "Prosím potvrďte vymazanie skupiny.", + "Remove group" : "Odstrániť skupinu", + "Admins" : "Administrátori", + "Disabled users" : "Zablokovaní používatelia", + "Everyone" : "Všetci", + "Add group" : "Pridať skupinu", + "An error occured during the request. Unable to proceed." : "Počas vykonania požiadavky nastala chyba. Nie je možné pokračovať.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Aplikácia bola povolená, ale vyžaduje sa aktualizácia. Presmerovanie na stránku aktualizácie o 5 sekúnd.", + "App update" : "Aktualizácia aplikácie", + "Error: This app can not be enabled because it makes the server unstable" : "Chyba: aplikáciu nie je možné povoliť, lebo naruší stabilitu servera", + "SSL Root Certificates" : "Koreňové certifikáty SSL", + "Common Name" : "Bežný názov", + "Valid until" : "Platný do", + "Issued By" : "Vydal", + "Valid until %s" : "Platný do %s", + "Import root certificate" : "Importovať koreňový certifikát", + "Administrator documentation" : "Príručka administrátora", + "Documentation" : "Dokumentácia", + "Forum" : "Fórum", + "None" : "Žiadny", + "Login" : "Prihlásenie", + "Plain" : "Neformátovaný", + "NT LAN Manager" : "NT LAN Manager", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Email server", + "Open documentation" : "Otvoriť dokumentáciu", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Je dôležité nastaviť aby server vedel odosielať emaily, napríklad pre nastavenie hesla a notifikácie.", + "Send mode" : "Mód odosielania", + "Encryption" : "Šifrovanie", + "Sendmail mode" : "Režim sendmail", + "From address" : "Z adresy", + "mail" : "email", + "Authentication method" : "Autentifikačná metóda", + "Authentication required" : "Vyžaduje sa overenie", + "Server address" : "Adresa servera", + "Port" : "Port", + "Credentials" : "Prihlasovanie údaje", + "SMTP Username" : "SMTP používateľské meno", + "SMTP Password" : "SMTP heslo", + "Test email settings" : "Nastavenia testovacieho emailu", + "Send email" : "Odoslať email", + "Security & setup warnings" : "Bezpečnosť a nastavenia upozornení", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Z hľadiska bezpečnosti a výkonu Vašej inštalácie je dôležité, že všetko je správne nastavené. Robíme automatickú kontrolu, ktorá Vám s tým pomáha. Pre ďalšie informácie nahliadnite do priloženej dokumentácie.", + "All checks passed." : "Všetky kontroly prešli úspešne.", + "There are some errors regarding your setup." : "Vo Vašom nastavení sú nejaké chyby.", + "There are some warnings regarding your setup." : "Vo Vašom nastavení sú nejaké varovania.", + "Checking for system and security issues." : "Kontrolujú sa existenicia systémových a bezpečnostných problémov.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Prosím skontrolujte <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">inštalačnú dokumentáciu</a> a skontrolujte existenciu chýb a upozornení v <a href=\"%2$s\">logu</a>.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Skontrolujte bezpečnosť Vášho Nextcloud pomocou <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">nášho bezpečnostného scanu</a>.", + "Version" : "Verzia", + "Two-Factor Authentication" : "Dvojzložkové overovanie", + "Server-side encryption" : "Šifrovanie na serveri", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Šifrovanie na strane servera umožňuje zašifrovať súbory, ktoré sú na tento server nahrávané. To prináša obmedzenia ako napr. výkonnostné obmedzenie, takže to povoľte len ak je to naozaj potrebné.", + "Enable server-side encryption" : "Povoliť šifrovanie na serveri", + "Please read carefully before activating server-side encryption: " : "Prečítajte prosím pozorne pred použitím šifrovania na serveri:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Potom ako sa zapne šifrovanie sú od toho bodu všetky nahrávané súbory šifrované serverom. Vypnutie šifrovania bude možné až vtedy, keď bude šifrovací modul túto možnosť podporovať a po splnení všetkých nutných podmenok (tzn. nastavenie kľúčov pre obnovenie).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Samotné šifrovanie negarantuje bezpečnosť systému. Ak sa chcete dozvedieť viac o tom ako funguje aplikácia pre šifrovanie a aké sú podporované prípady použitia, prečítajte si prosím dokumentáciu.", + "Be aware that encryption always increases the file size." : "Majte na vedomí, že šifrovanie vždy zväčší veľkosť súborov.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Je dobré vytvárať pravidelné zálohy vašich dát, uistite sa, že v prípade šifrovania spolu s vašimi dátami zálohujete aj šifrovacie kľúče.", + "This is the final warning: Do you really want to enable encryption?" : "Toto je posledné varovanie: Vážne si prajete povoliť šifrovanie?", + "Enable encryption" : "Povoliť šifrovanie", + "No encryption module loaded, please enable an encryption module in the app menu." : "Nebol načítaný žiadny šifrovací modul, povoľte prosím šifrovací modul v menu aplikácií.", + "Select default encryption module:" : "Vybrať predvolený šifrovací modul:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Musíte migrovať vaše šifrovacie kľúče zo starého šifrovania (ownCloud <= 8,0) na nové. Prosím zapnite \"Predvolený šifrovací modul\" a spustite „occ encryption:migrate“", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Musíte preniesť svoje šifrovacie kľúče zo starej verzie šifrovania (ownCloud <= 8.0) na novú.", + "Start migration" : "Začať migráciu", + "Background jobs" : "Úlohy na pozadí", + "Last job ran %s." : "Úloha naposledy prebehla %s.", + "Last job execution ran %s. Something seems wrong." : "Úloha naposledy prebehla %s. Zdá sa, že niečo nie je v poriadku.", + "Background job didn’t run yet!" : "Úloha na pozadí ešte nebežala!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Pre optimálny výkon je dôležité nakonfigurovať úlohy na pozadí správne. Pre väčšie inštancie sa odporúča 'Cron'. Viac informácií je možné nájsť v dokumentácii.", + "Pick background job setting" : "Vybrať nastavenie úlohy na pozadí", + "Execute one task with each page loaded" : "Vykonať jednu úlohu s každým načítaní stránky", + "The cron.php needs to be executed by the system user \"%s\"." : "Je potrebné, aby cron.php bol spustený systémovým používateľom \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Pre spustenie potrebujete mať rozšírenie PHP POSIX. Viac detailov v {linkstart}PHP dokumentácii{linkend}.", + "Sharing" : "Sprístupňovanie", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Ako administrátor môžete nastaviť správanie sprístupňovania. Pre viac informácií pozrite dokumentáciu.", + "Allow apps to use the Share API" : "Povoliť aplikáciám používať API pre sprístupňovanie", + "Allow users to share via link" : "Povoliť používateľom sprístupňovanie obsahu pomocou odkazov", + "Allow public uploads" : "Povoliť verejné nahrávanie súborov", + "Always ask for a password" : "Vždy vyžadovať heslo", + "Enforce password protection" : "Vynútiť ochranu heslom", + "Set default expiration date" : "Nastaviť predvolený dátum expirácie", + "Expire after " : "Platnosť do", + "days" : "dni", + "Enforce expiration date" : "Vynútiť dátum expirácie", + "Allow resharing" : "Povoliť sprístupňovanie ďalej", + "Allow sharing with groups" : "Povoliť sprístupnenie so skupinami", + "Restrict users to only share with users in their groups" : "Povoliť používateľom sprístupňovanie obsahu len v rámci ich skupiny", + "Exclude groups from sharing" : "Nesprístupniť obsah skupinám", + "These groups will still be able to receive shares, but not to initiate them." : "Tieto skupiny nebudú mocť sprístupňovať obsah, môžu však stále čítať sprístupnené súbory.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Umožni automatické dopĺňanie používateľského mena pri sprístupňovaní. Ak je vypnuté, musí byť zadané celé meno alebo emailová adresa používateľa.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Zobraziť text upozornenia na stránke pre nahrávanie verejného odkazu (zobraziť len ak je zoznam súborov skrytý).", + "This text will be shown on the public link upload page when the file list is hidden." : "Ak nebude zoznam súborov skrytý, tento text sa zobrazí na stránke pre nahrávanie verejného odkazu.", + "Default share permissions" : "Prednastavené povolenia pre zdieľanie", + "Personal" : "Osobné", + "Administration" : "Administrácia", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Vyvíjané {communityopen}komunitou Nextcloud{linkclose}, {githubopen}zdrojové kódy{linkclose} sú licencované pod licenciou {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Sleduj nás na Facebook-u", + "Follow us on Twitter" : "Sleduj nás na Twitter-i", + "Follow us on Mastodon" : "Sledujte nás na Mastodon", + "Check out our blog" : "Pozri si náš blog", + "Subscribe to our newsletter" : "Prihlás sa na odber noviniek emailom", + "Profile picture" : "Avatar", + "Upload new" : "Nahrať nový", + "Select from Files" : "Vybrať zo súborov", + "Remove image" : "Zmazať obrázok", + "png or jpg, max. 20 MB" : "png alebo jpg, max. 20 MB", + "Picture provided by original account" : "Obrázok poskytnutý originálnym účtom", + "Cancel" : "Zrušiť", + "Choose as profile picture" : "Použiť ako obrázok avatara", + "Details" : "Detaily", + "You are a member of the following groups:" : "Ste členom nasledovných skupín:", + "You are using <strong>%s</strong>" : "Využívate <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Využívate <strong>%1$s</strong> z <strong>%2$s</strong> (<strong>%3$s%%</strong>)", + "Full name" : "Meno a priezvisko", + "No display name set" : "Zobrazované meno nie je nastavené", + "Your email address" : "Vaša emailová adresa", + "No email address set" : "Emailová adresa nie je nastavená", + "For password reset and notifications" : "Na znovu-nastavenie hesla a upozornenia", + "Phone number" : "Telefónne číslo", + "Your phone number" : "Vaše telefónne číslo", + "Address" : "Adresa", + "Your postal address" : "Vaša poštová adresa", + "Website" : "Webstránka", + "It can take up to 24 hours before the account is displayed as verified." : "Môže trvať až 24 hodín než sa účet zobrazí ako overený.", + "Link https://…" : "Linka https://…", + "Twitter" : "Twitter", + "Twitter handle @…" : "Prezývka na Twitteri @…", + "Help translate" : "Pomôcť s prekladom", + "Locale" : "Miestne nastavenie", + "Current password" : "Aktuálne heslo", + "Change password" : "Zmeniť heslo", + "Use a second factor besides your password to increase security for your account." : "Pre zlepšenie zabezpečenia vášho účtu použite okrem hesla aj druhý faktor.", + "Store credentials" : "Ukladať prihlasovacie údaje", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php je zaregistrované v službe webcron a zavolá cron.php každých 15 minút cez HTTP.", + "Use system cron service to call the cron.php file every 15 minutes." : "Použiť systémovú službu cron na spúšťanie súboru cron.php každých 15 minút." +}, +"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/settings/l10n/sk.json b/apps/settings/l10n/sk.json new file mode 100644 index 00000000000..06fc8b65dc3 --- /dev/null +++ b/apps/settings/l10n/sk.json @@ -0,0 +1,360 @@ +{ "translations": { + "{actor} added you to group {group}" : "používateľ {actor} vás pridal do skupiny {group}", + "You added {user} to group {group}" : "Pridali ste používateľa {actor} do skupiny {group}", + "{actor} added {user} to group {group}" : "{actor} pridal(a) používateľa {user} do skupiny {group}", + "An administrator added you to group {group}" : "Správca vás pridal do skupiny {group}", + "An administrator added {user} to group {group}" : "Správca pridal používateľa {user} do skupiny {group}", + "{actor} removed you from group {group}" : "{actor} vás odobral(a) zo skupiny {group}", + "You removed {user} from group {group}" : "Odobrali ste používateľa {user} zo skupiny {group}", + "{actor} removed {user} from group {group}" : "{actor} odobral(a) používateľa {user} ze skupiny {group}", + "An administrator removed you from group {group}" : "Správca vás odobral ze skupiny {group}", + "An administrator removed {user} from group {group}" : "Správca odobral používateľa {user} zo skupiny {group}", + "Your <strong>group memberships</strong> were modified" : "Bolo upravené vaše <strong>členstvo v skupinách</strong>", + "{actor} changed your password" : "{actor} zmenil Vaše heslo", + "You changed your password" : "Zmenili ste si heslo", + "Your password was reset by an administrator" : "Vaše heslo bolo resetované administrátorom", + "{actor} changed your email address" : "{actor} zmenil Vašu emailovú adresu", + "You changed your email address" : "Zmenili ste si emailovú adresu", + "Your email address was changed by an administrator" : "Vaša emailová adresa bola zmenená administrátorom", + "You created app password \"{token}\"" : "Vytvorili ste heslo pre aplikáciu \"{token}\"", + "You deleted app password \"{token}\"" : "Vymazali ste heslo pre aplikáciu \"{token}\"", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Premenovali ste heslo aplikácie \"{token}\" na \"{newToken}\"", + "You granted filesystem access to app password \"{token}\"" : "Povolili ste prístup k súborovému systému aplikácii, používajúcej heslo \"{token}\"", + "You revoked filesystem access from app password \"{token}\"" : "Zrušili ste prístup k súborovému systému pre aplikáciu, používajúcej heslo \"{token}\"", + "Security" : "Zabezpečenie", + "You successfully logged in using two-factor authentication (%1$s)" : "Úspešne ste sa prihlásili pomocou dvoj-faktorovej autentizácie (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Pokus o prihlásenie s použitím dvoj-faktorovej autentizácie zlyhal (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Vaše <strong>heslo</strong> alebo <strong>email</strong> bolo zmenené", + "Couldn't remove app." : "Nemožno odstrániť aplikáciu.", + "Couldn't update app." : "Nemožno aktualizovať aplikáciu.", + "Wrong password" : "Nesprávne heslo", + "Saved" : "Uložené", + "No user supplied" : "Nebol uvedený používateľ", + "Unable to change password" : "Zmena hesla sa nepodarila", + "Authentication error" : "Chyba autentifikácie", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Zadajte administrátorské heslo pre obnovu, inak budú všetky používateľské dáta stratené.", + "Wrong admin recovery password. Please check the password and try again." : "Chybné administrátorské heslo pre obnovu. Skontrolujte správnosť hesla a skúste to znovu.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Backend nepodporuje zmenu hesla, ale šifrovací kľúč používateľa bol zmenený.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Inštalovať a aktualizovať aplikácia pomocou obchodu alebo Zdieľaného Cloudového Úložiska", + "Federated Cloud Sharing" : "Sprístupnenie prostredníctvom Federated Cloud", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL používa zastaralú %1$s verziu (%2$s). Prosím aktualizujte si operačný systém pretože %3$s nebude fungovať spoľahlivo.", + "Invalid SMTP password." : "Nesprávne heslo pre SMTP.", + "Email setting test" : "Test nastavení emailu", + "Well done, %s!" : "Dobrá práca, %s!", + "If you received this email, the email configuration seems to be correct." : "Ak ste prijali tento email, emailová konfigurácia sa zdá byť správna.", + "Email could not be sent. Check your mail server log" : "Nepodarilo sa odoslať email. Skontrolujte log Vášho mail servera", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Vyskytol sa problém pri odosielaní emailu. Prosím, znovu skontrolujte svoje nastavenia. (Chyba: %s)", + "You need to set your user email before being able to send test emails." : "Musíte nastaviť svoj po​​užívateľský email, než budete môcť odoslať testovací email.", + "Invalid mail address" : "Neplatná emailová adresa", + "Settings saved" : "Nastavenia uložené", + "Unable to change full name" : "Nemožno zmeniť meno a priezvisko", + "Unable to change email address" : "Nemožno zmeniť emailovú adresu", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Ak chcete overiť svoj Twitter účet, napíšte nasledujúci tweet (uistite sa, že ho zasielate bez zalomenia riadkov):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Pre verifikáciu vašich webových stránok uložte nasledujúci obsah v koreňovom adresári webovej stránky v umiestnení '.well-known/CloudIdVerificationCode.txt' (uistite sa, že bol text vložený ako jediný riadok)", + "%1$s changed your password on %2$s." : "%1$s zmenil Vaše heslo na %2$s.", + "Your password on %s was changed." : "Vaše heslo na %s bolo zmenené.", + "Your password on %s was reset by an administrator." : "Vaše heslo na %s bolo resetované administrátorom.", + "Password for %1$s changed on %2$s" : "Heslo pre %1$s bolo zmenené na %2$s", + "Password changed for %s" : "Heslo zmenené pre %s", + "If you did not request this, please contact an administrator." : "Ak ste to nevyžadovali, prosím kontaktujte administrátora.", + "Your email address on %s was changed." : "Vaša emailová adresa na %s bola zmenená.", + "Your email address on %s was changed by an administrator." : "Vaša emailová adresa na %s bola zmenená administrátorom.", + "Email address for %1$s changed on %2$s" : "Emailová adresa pre %1$s zmenená na %2$s", + "Email address changed for %s" : "Emailová adresa zmenená pre %s", + "The new email address is %s" : "Nová emailová adresa je %s", + "Your %s account was created" : "Váš účet %s bol vytvorený", + "Welcome aboard" : "Vitajte na palube", + "Welcome aboard %s" : "Vitajte na palube %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Vitajte vo vašom %s účte, môžete pridávať, chrániť a zdieľať svoje dáta.", + "Your username is: %s" : "Vaše používateľské meno je: %s", + "Set your password" : "Nastavte si heslo", + "Go to %s" : "Prejsť na %s", + "Install Client" : "Inštalácia klienta", + "Logged in user must be a subadmin" : "Prihlásený používateľ musí byť sub-správca", + "Delete" : "Zmazať", + "Unlimited" : "Nelimitované", + "Verifying …" : "Overovanie ...", + "Verify" : "Overiť", + "Migration in progress. Please wait until the migration is finished" : "Prebieha migrácia. Počkajte prosím, kým sa skončí", + "Migration started …" : "Migrácia spustená ...", + "Not saved" : "Neuložené", + "Sending…" : "Odosielam...", + "Email sent" : "Email odoslaný", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Vyskytla sa chyba. Nahrajte prosím PEM certifikát v ASCII kódovaní.", + "Valid until {date}" : "Platný do {date}", + "Local" : "Lokálny", + "Private" : "Súkromný", + "Only visible to local users" : "Viditeľné iba pre lokálnych používateľov", + "Only visible to you" : "Viditeľné iba pre seba", + "Contacts" : "Kontakty", + "Visible to local users and to trusted servers" : "Viditeľné pre lokálnych používateľov a dôveryhodné servery", + "Public" : "Verejné", + "Will be synced to a global and public address book" : "Bude synchronizované s globálnym a verejným adresárom", + "Very weak password" : "Veľmi slabé heslo", + "Weak password" : "Slabé heslo", + "So-so password" : "Priemerné heslo", + "Good password" : "Dobré heslo", + "Strong password" : "Silné heslo", + "An error occurred while changing your language. Please reload the page and try again." : "Počas zmeny jazyka sa vyskytla chyba. Prosím obnovte stránku a skúste znova.", + "An error occurred while changing your locale. Please reload the page and try again." : "Počas zmeny jazyka sa vyskytla chyba. Prosím obnovte stránku a skúste znova.", + "Select a profile picture" : "Vybrať avatara", + "Week starts on {fdow}" : "Den začína v {fdow}", + "Groups" : "Skupiny", + "Group list is empty" : "Zoznam skupín je prázdny", + "Unable to retrieve the group list" : "Nie je možné načítať zoznam skupín", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Dvojzložkové overovanie je možné vynútiť pre všetkých\tpoužívateľov a konkrétne skupiny. Ak nemajú nastaveného poskytovateľa dvojzložkového overovania, nebudú sa môcť prihlásiť do systému.", + "Enforce two-factor authentication" : "Vynútiť dvojzložkové overovanie", + "Limit to groups" : "Povoľ len pre skupiny", + "Enforcement of two-factor authentication can be set for certain groups only." : "Vynútenie dvojzložkového overovania je možné nastaviť len pre určité skupiny.", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "Dvojzložkové overovanie je vynucované pre všetkých\tčlenov nasledujúcich skupín.", + "Enforced groups" : "Vynútené skupiny", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "Dvojzložkové overovanie nie je povinné pre\tčlenov nasledovných skupín.", + "Excluded groups" : "Vynechané skupiny", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "Pokiaľ sú skupiny vybraté/vynechané, je pre zisťovanie či je používateľovi vynútené dvojzložkové (2FA) overovanie použitá nasledovná logika: Ak nie sú vybraté žiadne skupiny, je 2FA zapnuté pre všetkých okrem členov vynechaných skupín. Ak sú nejaké skupiny vybraté, je 2FA zapnuté pre všetkých jej členov. Ak je používateľ členom ako vybratej, tak aj vynechanej skupiny, potom má vybratá skupina prednosť a 2FA je vynútené.", + "Save changes" : "Uložiť zmeny", + "Device settings" : "Nastavenia zariadenia", + "Allow filesystem access" : "Povoliť prístup ku súborovému systému", + "Rename" : "Premenovať", + "Revoke" : "Odvolať", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome pre Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Apka Nextcloud pre iOS", + "Nextcloud Android app" : "Apka Nextcloud pre Android", + "Nextcloud Talk for iOS" : "Nextcloud Talk pre iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk pre Android", + "Sync client - {os}" : "Sync client - {os}", + "This session" : "Táto relácia", + "Device" : "Zariadenie", + "Last activity" : "Posledná aktivita", + "Devices & sessions" : "Zariadenia a relácie", + "Web, desktop and mobile clients currently logged in to your account." : "Weboví, desktopoví, alebo mobilní klienti práve prihlásení na váš účet.", + "Error while creating device token" : "Chyba pri vytváraní tokenov zariadenia", + "Error while updating device token scope" : "Chyba pri aktualizácii rozsahu tokenu zariadenia", + "Error while updating device token name" : "Chyba pri aktualizácii názvu tokenu zariadenia", + "Error while deleting the token" : "Chyba pri mazaní tokenu", + "App name" : "Názov aplikácie", + "Create new app password" : "Vytvoriť nové heslo aplikácie", + "Use the credentials below to configure your app or device." : "Pre konfiguráciu vašej aplikácie, alebo zariadenia použite nižšie uvedené prihlasovacie údaje.", + "For security reasons this password will only be shown once." : "Z dôvodu bezpečnosti toto heslo bude zobrazené iba jeden krát.", + "Username" : "Používateľské meno", + "Password" : "Heslo", + "Done" : "Hotovo", + "Show QR code for mobile apps" : "Zobraziť QR kód pre mobilné apky", + "Copied!" : "Skopírované!", + "Copy" : "Kopírovať", + "Could not copy app password. Please copy it manually." : "Nie je možné skopírovať heslo pre aplikáciu. Skopírujte ho ručne.", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Oficiálne aplikácie sú vyvíjané komunitou. Poskytujú centrálnu funkcionalitu a sú pripravené pre produkčné nasadenie.", + "Official" : "Oficiálny", + "by" : "od", + "Update to {version}" : "Aktualizovať na {version}", + "Remove" : "Odstrániť", + "Disable" : "Zakázať", + "All" : "Všetky", + "Limit app usage to groups" : "Obmedziť používanie aplikácií pre skupiny", + "No results" : "Žiadne výsledky", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Pre túto aplikáciu nie je zadaná minimálna verzia Nextcloudu. Toto v budúcnosti spôsobí chybu.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Pre túto aplikáciu nie je zadaná maximálna verzia Nextcloudu. Toto v budúcnosti spôsobí chybu.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Túto aplikáciu nemožno nainštalovať, pretože nie sú splnené nasledovné závislosti:", + "View in store" : "Zobraz v obchode", + "Visit website" : "Navštíviť webstránku", + "Report a bug" : "Nahlásiť chybu", + "User documentation" : "Príručka používateľa", + "Admin documentation" : "Príručka administrátora", + "Developer documentation" : "Dokumentácia vývojára", + "Update to {update}" : "Aktualizovať na {update}", + "Results from other categories" : "Výsledku z ostatných kategórií", + "No apps found for your version" : "Aplikácie pre vašu verziu sa nenašli", + "Disable all" : "Zakázať všetko", + "Enable all" : "Povoliť všetko", + "Download and enable" : "Stiahnuť a povoliť", + "Enable" : "Zapnúť", + "The app will be downloaded from the app store" : "Aplikácia bude stiahnutá z obchodu", + "You do not have permissions to see the details of this user" : "Nemáte oprávnenie vidieť detaily tohoto používateľa", + "The backend does not support changing the display name" : "Backend nepodporuje zmenu zobrazovaného názvu", + "New password" : "Nové heslo", + "Add user in group" : "Pridať používateľa do skupiny", + "Set user as admin for" : "Nastaviť používateľa ako správcu pre", + "Select user quota" : "Zvoliť kvótu používateľa", + "No language set" : "Nie je nastavený žiadny jazyk", + "Never" : "Nikdy", + "Delete user" : "Zmazať používateľa", + "Disable user" : "Zablokovať používateľa", + "Enable user" : "Odblokovať používateľa", + "Resend welcome email" : "Znova odoslať privítací email", + "{size} used" : "{size} použité", + "Welcome mail sent!" : "Privítací email odoslaný", + "Display name" : "Zobrazované meno", + "Email" : "Email", + "Group admin for" : "Administrátor skupiny pre", + "Quota" : "Kvóta", + "Language" : "Jazyk", + "Storage location" : "Umiestnenie úložiska", + "User backend" : "Backend používateľa", + "Last login" : "Posledné prihlásenie", + "Default language" : "Predvolený jazyk", + "Add a new user" : "Pridať nového používateľa", + "No users in here" : "Nie sú tu žiadni používatelia", + "Default quota" : "Predvolená kvóta", + "Password change is disabled because the master key is disabled" : "Zmena hesla je zablokovaná pretože hlavný kľúč je vypnutý", + "Common languages" : "Spoločné jazyky", + "All languages" : "Všetky jazyky", + "Your apps" : "Vaše aplikácie", + "Active apps" : "Aktívne aplikácie", + "Disabled apps" : "Zakázané aplikácie", + "Updates" : "Aktualizácie", + "App bundles" : "Aplikačné balíky", + "{license}-licensed" : "{license}-licencovaný", + "New user" : "Nový používateľ", + "Default quota:" : "Predvolená kvóta:", + "Select default quota" : "Vybrať predvolenú kvótu", + "Show Languages" : "Zobraziť jazyky", + "Show last login" : "Zobraziť posledné prihlásenie", + "Show user backend" : "Zobraziť backend používateľa", + "Show storage path" : "Zobraziť popis umiestnenia úložiska", + "You are about to remove the group {group}. The users will NOT be deleted." : "Chystáte sa odstrániť skupinu {group}. Používatelia NEBUDÚ vymazaní.", + "Please confirm the group removal " : "Prosím potvrďte vymazanie skupiny.", + "Remove group" : "Odstrániť skupinu", + "Admins" : "Administrátori", + "Disabled users" : "Zablokovaní používatelia", + "Everyone" : "Všetci", + "Add group" : "Pridať skupinu", + "An error occured during the request. Unable to proceed." : "Počas vykonania požiadavky nastala chyba. Nie je možné pokračovať.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Aplikácia bola povolená, ale vyžaduje sa aktualizácia. Presmerovanie na stránku aktualizácie o 5 sekúnd.", + "App update" : "Aktualizácia aplikácie", + "Error: This app can not be enabled because it makes the server unstable" : "Chyba: aplikáciu nie je možné povoliť, lebo naruší stabilitu servera", + "SSL Root Certificates" : "Koreňové certifikáty SSL", + "Common Name" : "Bežný názov", + "Valid until" : "Platný do", + "Issued By" : "Vydal", + "Valid until %s" : "Platný do %s", + "Import root certificate" : "Importovať koreňový certifikát", + "Administrator documentation" : "Príručka administrátora", + "Documentation" : "Dokumentácia", + "Forum" : "Fórum", + "None" : "Žiadny", + "Login" : "Prihlásenie", + "Plain" : "Neformátovaný", + "NT LAN Manager" : "NT LAN Manager", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Email server", + "Open documentation" : "Otvoriť dokumentáciu", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Je dôležité nastaviť aby server vedel odosielať emaily, napríklad pre nastavenie hesla a notifikácie.", + "Send mode" : "Mód odosielania", + "Encryption" : "Šifrovanie", + "Sendmail mode" : "Režim sendmail", + "From address" : "Z adresy", + "mail" : "email", + "Authentication method" : "Autentifikačná metóda", + "Authentication required" : "Vyžaduje sa overenie", + "Server address" : "Adresa servera", + "Port" : "Port", + "Credentials" : "Prihlasovanie údaje", + "SMTP Username" : "SMTP používateľské meno", + "SMTP Password" : "SMTP heslo", + "Test email settings" : "Nastavenia testovacieho emailu", + "Send email" : "Odoslať email", + "Security & setup warnings" : "Bezpečnosť a nastavenia upozornení", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Z hľadiska bezpečnosti a výkonu Vašej inštalácie je dôležité, že všetko je správne nastavené. Robíme automatickú kontrolu, ktorá Vám s tým pomáha. Pre ďalšie informácie nahliadnite do priloženej dokumentácie.", + "All checks passed." : "Všetky kontroly prešli úspešne.", + "There are some errors regarding your setup." : "Vo Vašom nastavení sú nejaké chyby.", + "There are some warnings regarding your setup." : "Vo Vašom nastavení sú nejaké varovania.", + "Checking for system and security issues." : "Kontrolujú sa existenicia systémových a bezpečnostných problémov.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Prosím skontrolujte <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">inštalačnú dokumentáciu</a> a skontrolujte existenciu chýb a upozornení v <a href=\"%2$s\">logu</a>.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Skontrolujte bezpečnosť Vášho Nextcloud pomocou <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">nášho bezpečnostného scanu</a>.", + "Version" : "Verzia", + "Two-Factor Authentication" : "Dvojzložkové overovanie", + "Server-side encryption" : "Šifrovanie na serveri", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Šifrovanie na strane servera umožňuje zašifrovať súbory, ktoré sú na tento server nahrávané. To prináša obmedzenia ako napr. výkonnostné obmedzenie, takže to povoľte len ak je to naozaj potrebné.", + "Enable server-side encryption" : "Povoliť šifrovanie na serveri", + "Please read carefully before activating server-side encryption: " : "Prečítajte prosím pozorne pred použitím šifrovania na serveri:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Potom ako sa zapne šifrovanie sú od toho bodu všetky nahrávané súbory šifrované serverom. Vypnutie šifrovania bude možné až vtedy, keď bude šifrovací modul túto možnosť podporovať a po splnení všetkých nutných podmenok (tzn. nastavenie kľúčov pre obnovenie).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Samotné šifrovanie negarantuje bezpečnosť systému. Ak sa chcete dozvedieť viac o tom ako funguje aplikácia pre šifrovanie a aké sú podporované prípady použitia, prečítajte si prosím dokumentáciu.", + "Be aware that encryption always increases the file size." : "Majte na vedomí, že šifrovanie vždy zväčší veľkosť súborov.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Je dobré vytvárať pravidelné zálohy vašich dát, uistite sa, že v prípade šifrovania spolu s vašimi dátami zálohujete aj šifrovacie kľúče.", + "This is the final warning: Do you really want to enable encryption?" : "Toto je posledné varovanie: Vážne si prajete povoliť šifrovanie?", + "Enable encryption" : "Povoliť šifrovanie", + "No encryption module loaded, please enable an encryption module in the app menu." : "Nebol načítaný žiadny šifrovací modul, povoľte prosím šifrovací modul v menu aplikácií.", + "Select default encryption module:" : "Vybrať predvolený šifrovací modul:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Musíte migrovať vaše šifrovacie kľúče zo starého šifrovania (ownCloud <= 8,0) na nové. Prosím zapnite \"Predvolený šifrovací modul\" a spustite „occ encryption:migrate“", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Musíte preniesť svoje šifrovacie kľúče zo starej verzie šifrovania (ownCloud <= 8.0) na novú.", + "Start migration" : "Začať migráciu", + "Background jobs" : "Úlohy na pozadí", + "Last job ran %s." : "Úloha naposledy prebehla %s.", + "Last job execution ran %s. Something seems wrong." : "Úloha naposledy prebehla %s. Zdá sa, že niečo nie je v poriadku.", + "Background job didn’t run yet!" : "Úloha na pozadí ešte nebežala!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Pre optimálny výkon je dôležité nakonfigurovať úlohy na pozadí správne. Pre väčšie inštancie sa odporúča 'Cron'. Viac informácií je možné nájsť v dokumentácii.", + "Pick background job setting" : "Vybrať nastavenie úlohy na pozadí", + "Execute one task with each page loaded" : "Vykonať jednu úlohu s každým načítaní stránky", + "The cron.php needs to be executed by the system user \"%s\"." : "Je potrebné, aby cron.php bol spustený systémovým používateľom \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Pre spustenie potrebujete mať rozšírenie PHP POSIX. Viac detailov v {linkstart}PHP dokumentácii{linkend}.", + "Sharing" : "Sprístupňovanie", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Ako administrátor môžete nastaviť správanie sprístupňovania. Pre viac informácií pozrite dokumentáciu.", + "Allow apps to use the Share API" : "Povoliť aplikáciám používať API pre sprístupňovanie", + "Allow users to share via link" : "Povoliť používateľom sprístupňovanie obsahu pomocou odkazov", + "Allow public uploads" : "Povoliť verejné nahrávanie súborov", + "Always ask for a password" : "Vždy vyžadovať heslo", + "Enforce password protection" : "Vynútiť ochranu heslom", + "Set default expiration date" : "Nastaviť predvolený dátum expirácie", + "Expire after " : "Platnosť do", + "days" : "dni", + "Enforce expiration date" : "Vynútiť dátum expirácie", + "Allow resharing" : "Povoliť sprístupňovanie ďalej", + "Allow sharing with groups" : "Povoliť sprístupnenie so skupinami", + "Restrict users to only share with users in their groups" : "Povoliť používateľom sprístupňovanie obsahu len v rámci ich skupiny", + "Exclude groups from sharing" : "Nesprístupniť obsah skupinám", + "These groups will still be able to receive shares, but not to initiate them." : "Tieto skupiny nebudú mocť sprístupňovať obsah, môžu však stále čítať sprístupnené súbory.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Umožni automatické dopĺňanie používateľského mena pri sprístupňovaní. Ak je vypnuté, musí byť zadané celé meno alebo emailová adresa používateľa.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Zobraziť text upozornenia na stránke pre nahrávanie verejného odkazu (zobraziť len ak je zoznam súborov skrytý).", + "This text will be shown on the public link upload page when the file list is hidden." : "Ak nebude zoznam súborov skrytý, tento text sa zobrazí na stránke pre nahrávanie verejného odkazu.", + "Default share permissions" : "Prednastavené povolenia pre zdieľanie", + "Personal" : "Osobné", + "Administration" : "Administrácia", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Vyvíjané {communityopen}komunitou Nextcloud{linkclose}, {githubopen}zdrojové kódy{linkclose} sú licencované pod licenciou {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Sleduj nás na Facebook-u", + "Follow us on Twitter" : "Sleduj nás na Twitter-i", + "Follow us on Mastodon" : "Sledujte nás na Mastodon", + "Check out our blog" : "Pozri si náš blog", + "Subscribe to our newsletter" : "Prihlás sa na odber noviniek emailom", + "Profile picture" : "Avatar", + "Upload new" : "Nahrať nový", + "Select from Files" : "Vybrať zo súborov", + "Remove image" : "Zmazať obrázok", + "png or jpg, max. 20 MB" : "png alebo jpg, max. 20 MB", + "Picture provided by original account" : "Obrázok poskytnutý originálnym účtom", + "Cancel" : "Zrušiť", + "Choose as profile picture" : "Použiť ako obrázok avatara", + "Details" : "Detaily", + "You are a member of the following groups:" : "Ste členom nasledovných skupín:", + "You are using <strong>%s</strong>" : "Využívate <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Využívate <strong>%1$s</strong> z <strong>%2$s</strong> (<strong>%3$s%%</strong>)", + "Full name" : "Meno a priezvisko", + "No display name set" : "Zobrazované meno nie je nastavené", + "Your email address" : "Vaša emailová adresa", + "No email address set" : "Emailová adresa nie je nastavená", + "For password reset and notifications" : "Na znovu-nastavenie hesla a upozornenia", + "Phone number" : "Telefónne číslo", + "Your phone number" : "Vaše telefónne číslo", + "Address" : "Adresa", + "Your postal address" : "Vaša poštová adresa", + "Website" : "Webstránka", + "It can take up to 24 hours before the account is displayed as verified." : "Môže trvať až 24 hodín než sa účet zobrazí ako overený.", + "Link https://…" : "Linka https://…", + "Twitter" : "Twitter", + "Twitter handle @…" : "Prezývka na Twitteri @…", + "Help translate" : "Pomôcť s prekladom", + "Locale" : "Miestne nastavenie", + "Current password" : "Aktuálne heslo", + "Change password" : "Zmeniť heslo", + "Use a second factor besides your password to increase security for your account." : "Pre zlepšenie zabezpečenia vášho účtu použite okrem hesla aj druhý faktor.", + "Store credentials" : "Ukladať prihlasovacie údaje", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php je zaregistrované v službe webcron a zavolá cron.php každých 15 minút cez HTTP.", + "Use system cron service to call the cron.php file every 15 minutes." : "Použiť systémovú službu cron na spúšťanie súboru cron.php každých 15 minút." +},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);" +} \ No newline at end of file diff --git a/apps/settings/l10n/sl.js b/apps/settings/l10n/sl.js new file mode 100644 index 00000000000..ce154461da0 --- /dev/null +++ b/apps/settings/l10n/sl.js @@ -0,0 +1,297 @@ +OC.L10N.register( + "settings", + { + "You added {user} to group {group}" : "Uporabnika {user} ste dodali v skupino {group}", + "An administrator added you to group {group}" : "Administrator vas je dodal v skupino {group}", + "An administrator added {user} to group {group}" : "Administrator je dodal uporabnika {user} v skupino {group}", + "{actor} changed your password" : "{actor} spremeni moje geslo", + "You changed your password" : "Spremenili ste vaše geslo", + "Your password was reset by an administrator" : "Skrbnik sistema je ponastavil staro geslo", + "{actor} changed your email address" : "{actor} spremeni moj elektronski naslov", + "Security" : "Varnost", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Spremenjeno je bilo <strong>geslo</strong> oziroma <strong>elektronski naslov</strong>", + "Couldn't remove app." : "Programa ni mogoče odstraniti.", + "Couldn't update app." : "Programa ni mogoče posodobiti.", + "Wrong password" : "Napačno geslo", + "Saved" : "Shranjeno", + "No user supplied" : "Ni navedenega uporabnika", + "Unable to change password" : "Ni mogoče spremeniti gesla", + "Authentication error" : "Napaka med overjanjem", + "Wrong admin recovery password. Please check the password and try again." : "Napačno navedeno skrbniško obnovitveno geslo. Preverite geslo in poskusite znova.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "nameščanje in posodabljanje programov prek programske zbirke ali zveznega oblaka", + "Federated Cloud Sharing" : "Souporaba zveznega oblaka", + "Invalid SMTP password." : "Neveljavno geslo SMTP", + "Email setting test" : "Preizkus nastavitev elektronske pošte", + "Well done, %s!" : "Odlično, %s!", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Med pošiljanjem sporočila se je prišlo do napake. Preverite nastavitve (napaka: %s).", + "You need to set your user email before being able to send test emails." : "Pred preizkusnim pošiljanjem sporočil je treba nastaviti elektronski naslov uporabnika.", + "Invalid mail address" : "Neveljaven elektronski naslov", + "Settings saved" : "Nastavitve so shranjene.", + "Unable to change full name" : "Ni mogoče spremeniti polnega imena", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Za overitev računa Twitter, objavite sporočilo (prepričajte se, da ni nobenega preloma vrstice):", + "Your %s account was created" : "Račun %s je uspešno ustvarjen.", + "Set your password" : "Določitev gesla", + "Create" : "Ustvari", + "Change" : "Spremeni", + "Delete" : "Izbriši", + "Unlimited" : "Neomejeno", + "Verifying …" : "Poteka overjanje ...", + "Verify" : "Overi", + "Migration in progress. Please wait until the migration is finished" : "V teku je selitev. Počakajte, da se zaključi.", + "Migration started …" : "Selitev je začeta ...", + "Sending…" : "Poteka pošiljanje ...", + "Email sent" : "Elektronsko sporočilo je poslano", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Prišlo je do napake. Uvoziti je treba ustrezno ASCII kodirano potrdilo PEM.", + "Valid until {date}" : "Veljavno do {date}", + "Local" : "Krajevno", + "Private" : "Zasebno", + "Only visible to local users" : "Vidno le krajevnim uporabnikom", + "Contacts" : "Stiki", + "Visible to local users and to trusted servers" : "Vidno le krajevnim uporabnikom in odobrenim strežnikom", + "Public" : "Javno", + "Very weak password" : "Zelo šibko geslo", + "Weak password" : "Slabo geslo", + "So-so password" : "Šibko geslo", + "Good password" : "Dobro geslo", + "Strong password" : "Odlično geslo", + "Select a profile picture" : "Izbor slike profila", + "Week starts on {fdow}" : "Začetek tedna je {fdow}", + "Groups" : "Skupine", + "Group list is empty" : "Seznam skupin je prazen", + "Unable to retrieve the group list" : "Ni mogoče pridobiti seznama skupin", + "Afrikaans (Namibia)" : "Afrikanščina (Namibia)", + "Afrikaans (South Africa)" : "Afrikanščina (Južna Afrika)", + "Afrikaans" : "Afrikanščina", + "Akan (Ghana)" : "Akanščina (Gana)", + "Akan" : "Akanščina", + "Albanian (Albania)" : "Albanščina (Albanija)", + "Albanian" : "Albanščina", + "Amharic (Ethiopia)" : "Amharščina (Etiopija)", + "Amharic" : "Amharščina", + "Arabic (Algeria)" : "Arabščina (Alžirija)", + "Arabic (Bahrain)" : "Arabščina (Bahrain)", + "Arabic (Egypt)" : "Arabščina (Egipt)", + "Arabic (Iraq)" : "Arabščina (Irak)", + "Arabic (Jordan)" : "Arabščina (Jordanija)", + "Arabic (Kuwait)" : "Arabščina (Kuvajt)", + "Arabic (Lebanon)" : "Arabščina (Libanon)", + "Arabic (Libya)" : "Arabščina (Libija)", + "Arabic (Morocco)" : "Arabščina (Maroko)", + "Arabic (Oman)" : "Arabščina (Oman)", + "Arabic (Qatar)" : "Arabščina (Katar)", + "Arabic (Saudi Arabia)" : "Arabščina (Savdova arabija)", + "Arabic (Sudan)" : "Arabščina (Sudan)", + "Arabic (Syria)" : "Arabščina (Sirija)", + "Arabic (Tunisia)" : "Arabščina (Tunizija)", + "Arabic (United Arab Emirates)" : "Arabščina (Združeni Emirati)", + "Arabic (Yemen)" : "Arabščina (Jemen)", + "Arabic" : "Arabščina", + "Armenian (Armenia)" : "Armenščina (Armenija)", + "Armenian" : "Armenščina", + "Assamese (India)" : "Asamščina (Indija)", + "Assamese" : "Asamščina", + "Asu (Tanzania)" : "Asujščina (Tanzanija)", + "Asu" : "Asujščina", + "English" : "Angleščina", + "Esperanto" : "Esperanto", + "Estonian" : "Estonščina", + "Faroese" : "Farščina", + "Finnish" : "Finščina", + "French" : "Francoščina", + "Limit to groups" : "Omeji na skupine", + "Save changes" : "Shrani spremembe", + "Device settings" : "Nastavitve naprave", + "Allow filesystem access" : "Dovoli dostop do datotečnega sistema", + "Rename" : "Preimenuj", + "Revoke" : "Prekliči", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Microsoft Edge", + "Firefox" : "Mozilla Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome za Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "This session" : "Ta seja", + "Device" : "Naprava", + "Last activity" : "Zadnja dejavnost", + "Devices & sessions" : "Naprave in seje", + "Web, desktop and mobile clients currently logged in to your account." : "Spletne, namizne in mobilne naprave, ki so trenutno povezane z računom.", + "Error while creating device token" : " Napaka med ustvarjanjem žetona naprave", + "Error while deleting the token" : " Napaka med brisanjem žetona", + "App name" : "Ime programa", + "Create new app password" : "Ustvari novo geslo programa", + "Username" : "Uporabniško ime", + "Password" : "Geslo", + "Done" : "Končano", + "Copied!" : "Kopirano!", + "Copy" : "Kopiraj", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Uradne programe razvijajo posamezniki, ki sodelujejo s skupnostjo. Paketi vključujejo osrednje zmožnosti programa, uporaba pa je namenjena tudi končnim uporabnikom.", + "Official" : "Uradno", + "Update to {version}" : "Posodobi na različico {version}", + "Remove" : "Odstrani", + "Disable" : "Onemogoči", + "All" : "Vsi", + "No results" : "Ni zadetkov", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Program nima določene omejitve različice okolja NextCloud. V prihodnosti se bo manjkajoči podatek pokazal kot napaka.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Program nima določene omejitve različice okolja NextCloud. V prihodnosti se bo manjkajoči podatek pokazal kot napaka.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Programa ni mogoče namestiti zaradi nerešenih odvisnosti:", + "View in store" : "Pokaži v trgovini", + "Visit website" : "Odpri spletno stran", + "Report a bug" : "Pošlji poročilo o hrošču", + "User documentation" : "Uporabniška dokumentacija", + "Admin documentation" : "Skrbniška dokumentacija", + "Developer documentation" : "Dokumentacija za razvijalce", + "Update to {update}" : "Posodobi na {update}", + "Results from other categories" : "Rezultati iskanja med drugimi kategorijami", + "No apps found for your version" : "Za nameščeno različico oziroma iskalni niz ni nobenega programa", + "Disable all" : "Onemogoči vse", + "Enable all" : "Omogoči vse", + "Download and enable" : "Prejmi in omogoči", + "Enable" : "Omogoči", + "The app will be downloaded from the app store" : "Program bo prejet iz zbirke programov", + "New password" : "Novo geslo", + "Add user in group" : "Dodaj uporabnika v skupino", + "No language set" : "Jezik ni nastavljen", + "Never" : "Nikoli", + "Delete user" : "Izbriši uporabnika", + "Disable user" : "Onemogoči uporabnika", + "Enable user" : "Omogoči uporabnika", + "Email" : "Elektronski naslov", + "Group admin for" : "Skrbnik skupine za", + "Quota" : "Količinska omejitev", + "Language" : "Jezik", + "Storage location" : "Mesto shrambe", + "Last login" : "Zadnja prijava", + "Add a new user" : "Dodaj uporabnika", + "No users in here" : "Ni še vključenih uporabnikov", + "Default quota" : "Privzeta količinska omejitev", + "All languages" : "Vsi jeziki", + "Your apps" : "Vsi programi", + "Active apps" : "Zagnani programi", + "Disabled apps" : "Onemogočeni programi", + "Updates" : "Posodobitve", + "App bundles" : "Paketi programov", + "New user" : "Nov uporabnik", + "Default quota:" : "Privzeta količinska omejitev :", + "Select default quota" : "Izbor količinske omejitve", + "Show Languages" : "Pokaži jezike", + "Show last login" : "Pokaži zadnjo prijavo", + "Show user backend" : "Pokaži ozadnji program", + "Remove group" : "Odstrani skupino", + "Admins" : "Skrbniki", + "Disabled users" : "Onemogočeni uporabniki", + "Everyone" : "Vsi", + "Add group" : "Dodaj skupino", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Program je omogočen, vendar zahteva posodobitev. Po nekaj sekundah boste preusmerjeni na stran za posodobitev.", + "SSL Root Certificates" : "Korenska potrdila SSL", + "Common Name" : "Splošno ime", + "Valid until" : "Veljavno do", + "Issued By" : "Izdajatelj", + "Valid until %s" : "Veljavno do %s", + "Import root certificate" : "Uvozi korensko potrdilo", + "Administrator documentation" : "Skrbniška dokumentacija", + "Forum" : "Forum", + "None" : "Brez", + "Login" : "Prijava", + "Plain" : "Besedilno", + "NT LAN Manager" : "Upravljalnik NT LAN", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Poštni strežnik", + "Open documentation" : "Odprta dokumentacija", + "Send mode" : "Način pošiljanja", + "Encryption" : "Šifriranje", + "From address" : "Naslov pošiljatelja", + "mail" : "pošta", + "Authentication method" : "Način overitve", + "Authentication required" : "Zahtevana je overitev", + "Server address" : "Naslov strežnika", + "Port" : "Vrata", + "Credentials" : "Poverila", + "SMTP Username" : "Uporabniško ime SMTP", + "SMTP Password" : "Geslo SMTP", + "Test email settings" : "Preizkus nastavitev elektronske pošte", + "Send email" : "Pošlji elektronsko sporočilo", + "Security & setup warnings" : "Varnost in namestitvena opozorila", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Zaradi varnosti in optimizacije delovanja je pomembno, da je sistem pravilno nastavljen. Za pomoč pri preverjanju se samodejno izvajajo nekateri preizkusi. Več podrobnosti o tem je zabeleženih v dokumentaciji. ", + "All checks passed." : "Vsa preverjanja so uspešno zaključena.", + "There are some errors regarding your setup." : "Med preverjanjem je bilo zaznanih je nekaj napak namestitve.", + "There are some warnings regarding your setup." : "Med preverjanjem je bilo javljenih nekaj opozoril.", + "Checking for system and security issues." : "Preverjanje sistemskih in varnostnih nastavitev.", + "Version" : "Različica", + "Two-Factor Authentication" : "Dvo-stopenjska overitev", + "Server-side encryption" : "Šifriranje na strežniku", + "Enable server-side encryption" : "Omogoči šifriranje na strežniku", + "Please read carefully before activating server-side encryption: " : "Pred omogočanjem strežniškega šifriranja pozorno preberite opombe:", + "Be aware that encryption always increases the file size." : " Upoštevajte, da šifriranje poveča velikost datoteke.", + "This is the final warning: Do you really want to enable encryption?" : "To je zadnje opozorilo. Ali res želite omogočiti šifriranje?", + "Enable encryption" : "Omogoči šifriranje", + "No encryption module loaded, please enable an encryption module in the app menu." : "Modul za šifriranje ni naložen. Pred nadaljevanjem je treba modul določiti v seznamu programov.", + "Select default encryption module:" : "Izbor privzetega modula za šifriranje:", + "Start migration" : "Začni selitev", + "Background jobs" : "Opravila v ozadju", + "Execute one task with each page loaded" : "Izvedi eno nalogo z vsako naloženo stranjo.", + "Sharing" : "Souporaba", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Skrbnik lahko prilagodi možnosti souporabe. Več podrobnosti je zapisanih v dokumentaciji.", + "Allow apps to use the Share API" : "Dovoli programom uporabo vmesnika API souporabe", + "Allow users to share via link" : "Uporabnikom dovoli omogočanje souporabe s povezavami", + "Allow public uploads" : "Dovoli javno pošiljanje datotek v oblak", + "Always ask for a password" : "Vedno zahtevaj za geslo", + "Enforce password protection" : "Vsili zaščito z geslom", + "Set default expiration date" : "Samodejno nastavi datuma poteka", + "Expire after " : "Povezava naj poteče po", + "days" : "dneh.", + "Enforce expiration date" : "Vsili datum preteka", + "Allow resharing" : "Dovoli nadaljnjo souporabo", + "Allow sharing with groups" : "Dovoli souporabo s skupinami", + "Restrict users to only share with users in their groups" : "Uporabnikom dovoli omogočanje souporabe le znotraj njihove skupine", + "Exclude groups from sharing" : "Izloči izbrane skupine iz souporabe", + "These groups will still be able to receive shares, but not to initiate them." : "Te skupine lahko sprejemajo mape v souporabo, nimajo pa dovoljenja za omogočanje souporabe.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Dovoli samodejno dokončanje uporabniškega imena v pogovornem oknu souporabe. Z onemogočeno možnostjo je treba v celoti vpisati uporabniško ime oziroma geslo.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Pokaži besedilo izjave o omejitvi odgovornosti na javnih povezavah za pošiljanje (če je onemogočen prikaz seznama datotek).", + "This text will be shown on the public link upload page when the file list is hidden." : "Besedilo izjave o omejitvi odgovornosti, ki bo izpisano v oknu za pošiljanje, ko je možnost prikaza seznama datotek onemogočena.", + "Default share permissions" : "Privzeta dovoljenja souporabe", + "Personal" : "Osebno", + "Administration" : "Skrbništvo", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Okolje razvija {communityopen}skupnost Nextcloud{linkclose}, {githubopen}izvorna koda{linkclose} pa je objavljena pod pogoji dovoljenja {licenseopen}AGPL{linkclose}.", + "Follow us on Twitter" : "Sledite nam na Twitter!", + "Follow us on Mastodon" : "Sledite nam na Mastodon", + "Profile picture" : "Slika profila", + "Upload new" : "Pošlji novo", + "Select from Files" : "Izbor iz datotek", + "Remove image" : "Odstrani sliko", + "png or jpg, max. 20 MB" : "png ali jpg, največ. 20 MB", + "Picture provided by original account" : "Slika iz originalnega računa", + "Cancel" : "Prekliči", + "Choose as profile picture" : "Izberi kot sliko profila", + "Details" : "Podrobnosti", + "You are a member of the following groups:" : "Omogočeno je članstvo v skupinah:", + "You are using <strong>%s</strong>" : "Uporabljate <strong>%s</strong>", + "Full name" : "Polno ime", + "No display name set" : "Prikazno ime ni nastavljeno", + "Your email address" : "Osebni elektronski naslov", + "No email address set" : "Poštni naslov ni nastavljen", + "For password reset and notifications" : "Za ponastavitev gesla in obveščanje", + "Phone number" : "Telefonska številka", + "Your phone number" : "Vaša telefonska številka", + "Address" : "Naslov", + "Your postal address" : "Vaš poštni naslov", + "Website" : "Spletna stran", + "Link https://…" : "Povezava https:// …", + "Twitter" : "Račun Twitter", + "Twitter handle @…" : "Twitter @ …", + "Help translate" : "Sodelujte pri prevajanju", + "Locale" : "Jezikovne nastavitve", + "Current password" : "Trenutno geslo", + "Change password" : "Spremeni geslo", + "Use a second factor besides your password to increase security for your account." : "Ob geslu je priporočljivo uporabiti tudi drugo-stopenjsko overitev za večjo varnost računa.", + "Disconnect" : "Prekinjeni povezavo", + "Not supported!" : "Ni podprto!", + "Press ⌘-C to copy." : "Pritisnite ⌘-C za kopiranje.", + "Press Ctrl-C to copy." : "Pritisnite Ctrl-C za kopiranje.", + "Error while loading browser sessions and device tokens" : " Napaka med nalaganjem sej brskalnika in žetonov naprave", + "Store credentials" : "Shrani poverila", + "Follow us on Google+" : "Sledite nam na Google+" +}, +"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"); diff --git a/apps/settings/l10n/sl.json b/apps/settings/l10n/sl.json new file mode 100644 index 00000000000..53ffe4a5708 --- /dev/null +++ b/apps/settings/l10n/sl.json @@ -0,0 +1,295 @@ +{ "translations": { + "You added {user} to group {group}" : "Uporabnika {user} ste dodali v skupino {group}", + "An administrator added you to group {group}" : "Administrator vas je dodal v skupino {group}", + "An administrator added {user} to group {group}" : "Administrator je dodal uporabnika {user} v skupino {group}", + "{actor} changed your password" : "{actor} spremeni moje geslo", + "You changed your password" : "Spremenili ste vaše geslo", + "Your password was reset by an administrator" : "Skrbnik sistema je ponastavil staro geslo", + "{actor} changed your email address" : "{actor} spremeni moj elektronski naslov", + "Security" : "Varnost", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Spremenjeno je bilo <strong>geslo</strong> oziroma <strong>elektronski naslov</strong>", + "Couldn't remove app." : "Programa ni mogoče odstraniti.", + "Couldn't update app." : "Programa ni mogoče posodobiti.", + "Wrong password" : "Napačno geslo", + "Saved" : "Shranjeno", + "No user supplied" : "Ni navedenega uporabnika", + "Unable to change password" : "Ni mogoče spremeniti gesla", + "Authentication error" : "Napaka med overjanjem", + "Wrong admin recovery password. Please check the password and try again." : "Napačno navedeno skrbniško obnovitveno geslo. Preverite geslo in poskusite znova.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "nameščanje in posodabljanje programov prek programske zbirke ali zveznega oblaka", + "Federated Cloud Sharing" : "Souporaba zveznega oblaka", + "Invalid SMTP password." : "Neveljavno geslo SMTP", + "Email setting test" : "Preizkus nastavitev elektronske pošte", + "Well done, %s!" : "Odlično, %s!", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Med pošiljanjem sporočila se je prišlo do napake. Preverite nastavitve (napaka: %s).", + "You need to set your user email before being able to send test emails." : "Pred preizkusnim pošiljanjem sporočil je treba nastaviti elektronski naslov uporabnika.", + "Invalid mail address" : "Neveljaven elektronski naslov", + "Settings saved" : "Nastavitve so shranjene.", + "Unable to change full name" : "Ni mogoče spremeniti polnega imena", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Za overitev računa Twitter, objavite sporočilo (prepričajte se, da ni nobenega preloma vrstice):", + "Your %s account was created" : "Račun %s je uspešno ustvarjen.", + "Set your password" : "Določitev gesla", + "Create" : "Ustvari", + "Change" : "Spremeni", + "Delete" : "Izbriši", + "Unlimited" : "Neomejeno", + "Verifying …" : "Poteka overjanje ...", + "Verify" : "Overi", + "Migration in progress. Please wait until the migration is finished" : "V teku je selitev. Počakajte, da se zaključi.", + "Migration started …" : "Selitev je začeta ...", + "Sending…" : "Poteka pošiljanje ...", + "Email sent" : "Elektronsko sporočilo je poslano", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Prišlo je do napake. Uvoziti je treba ustrezno ASCII kodirano potrdilo PEM.", + "Valid until {date}" : "Veljavno do {date}", + "Local" : "Krajevno", + "Private" : "Zasebno", + "Only visible to local users" : "Vidno le krajevnim uporabnikom", + "Contacts" : "Stiki", + "Visible to local users and to trusted servers" : "Vidno le krajevnim uporabnikom in odobrenim strežnikom", + "Public" : "Javno", + "Very weak password" : "Zelo šibko geslo", + "Weak password" : "Slabo geslo", + "So-so password" : "Šibko geslo", + "Good password" : "Dobro geslo", + "Strong password" : "Odlično geslo", + "Select a profile picture" : "Izbor slike profila", + "Week starts on {fdow}" : "Začetek tedna je {fdow}", + "Groups" : "Skupine", + "Group list is empty" : "Seznam skupin je prazen", + "Unable to retrieve the group list" : "Ni mogoče pridobiti seznama skupin", + "Afrikaans (Namibia)" : "Afrikanščina (Namibia)", + "Afrikaans (South Africa)" : "Afrikanščina (Južna Afrika)", + "Afrikaans" : "Afrikanščina", + "Akan (Ghana)" : "Akanščina (Gana)", + "Akan" : "Akanščina", + "Albanian (Albania)" : "Albanščina (Albanija)", + "Albanian" : "Albanščina", + "Amharic (Ethiopia)" : "Amharščina (Etiopija)", + "Amharic" : "Amharščina", + "Arabic (Algeria)" : "Arabščina (Alžirija)", + "Arabic (Bahrain)" : "Arabščina (Bahrain)", + "Arabic (Egypt)" : "Arabščina (Egipt)", + "Arabic (Iraq)" : "Arabščina (Irak)", + "Arabic (Jordan)" : "Arabščina (Jordanija)", + "Arabic (Kuwait)" : "Arabščina (Kuvajt)", + "Arabic (Lebanon)" : "Arabščina (Libanon)", + "Arabic (Libya)" : "Arabščina (Libija)", + "Arabic (Morocco)" : "Arabščina (Maroko)", + "Arabic (Oman)" : "Arabščina (Oman)", + "Arabic (Qatar)" : "Arabščina (Katar)", + "Arabic (Saudi Arabia)" : "Arabščina (Savdova arabija)", + "Arabic (Sudan)" : "Arabščina (Sudan)", + "Arabic (Syria)" : "Arabščina (Sirija)", + "Arabic (Tunisia)" : "Arabščina (Tunizija)", + "Arabic (United Arab Emirates)" : "Arabščina (Združeni Emirati)", + "Arabic (Yemen)" : "Arabščina (Jemen)", + "Arabic" : "Arabščina", + "Armenian (Armenia)" : "Armenščina (Armenija)", + "Armenian" : "Armenščina", + "Assamese (India)" : "Asamščina (Indija)", + "Assamese" : "Asamščina", + "Asu (Tanzania)" : "Asujščina (Tanzanija)", + "Asu" : "Asujščina", + "English" : "Angleščina", + "Esperanto" : "Esperanto", + "Estonian" : "Estonščina", + "Faroese" : "Farščina", + "Finnish" : "Finščina", + "French" : "Francoščina", + "Limit to groups" : "Omeji na skupine", + "Save changes" : "Shrani spremembe", + "Device settings" : "Nastavitve naprave", + "Allow filesystem access" : "Dovoli dostop do datotečnega sistema", + "Rename" : "Preimenuj", + "Revoke" : "Prekliči", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Microsoft Edge", + "Firefox" : "Mozilla Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome za Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "This session" : "Ta seja", + "Device" : "Naprava", + "Last activity" : "Zadnja dejavnost", + "Devices & sessions" : "Naprave in seje", + "Web, desktop and mobile clients currently logged in to your account." : "Spletne, namizne in mobilne naprave, ki so trenutno povezane z računom.", + "Error while creating device token" : " Napaka med ustvarjanjem žetona naprave", + "Error while deleting the token" : " Napaka med brisanjem žetona", + "App name" : "Ime programa", + "Create new app password" : "Ustvari novo geslo programa", + "Username" : "Uporabniško ime", + "Password" : "Geslo", + "Done" : "Končano", + "Copied!" : "Kopirano!", + "Copy" : "Kopiraj", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Uradne programe razvijajo posamezniki, ki sodelujejo s skupnostjo. Paketi vključujejo osrednje zmožnosti programa, uporaba pa je namenjena tudi končnim uporabnikom.", + "Official" : "Uradno", + "Update to {version}" : "Posodobi na različico {version}", + "Remove" : "Odstrani", + "Disable" : "Onemogoči", + "All" : "Vsi", + "No results" : "Ni zadetkov", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Program nima določene omejitve različice okolja NextCloud. V prihodnosti se bo manjkajoči podatek pokazal kot napaka.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Program nima določene omejitve različice okolja NextCloud. V prihodnosti se bo manjkajoči podatek pokazal kot napaka.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Programa ni mogoče namestiti zaradi nerešenih odvisnosti:", + "View in store" : "Pokaži v trgovini", + "Visit website" : "Odpri spletno stran", + "Report a bug" : "Pošlji poročilo o hrošču", + "User documentation" : "Uporabniška dokumentacija", + "Admin documentation" : "Skrbniška dokumentacija", + "Developer documentation" : "Dokumentacija za razvijalce", + "Update to {update}" : "Posodobi na {update}", + "Results from other categories" : "Rezultati iskanja med drugimi kategorijami", + "No apps found for your version" : "Za nameščeno različico oziroma iskalni niz ni nobenega programa", + "Disable all" : "Onemogoči vse", + "Enable all" : "Omogoči vse", + "Download and enable" : "Prejmi in omogoči", + "Enable" : "Omogoči", + "The app will be downloaded from the app store" : "Program bo prejet iz zbirke programov", + "New password" : "Novo geslo", + "Add user in group" : "Dodaj uporabnika v skupino", + "No language set" : "Jezik ni nastavljen", + "Never" : "Nikoli", + "Delete user" : "Izbriši uporabnika", + "Disable user" : "Onemogoči uporabnika", + "Enable user" : "Omogoči uporabnika", + "Email" : "Elektronski naslov", + "Group admin for" : "Skrbnik skupine za", + "Quota" : "Količinska omejitev", + "Language" : "Jezik", + "Storage location" : "Mesto shrambe", + "Last login" : "Zadnja prijava", + "Add a new user" : "Dodaj uporabnika", + "No users in here" : "Ni še vključenih uporabnikov", + "Default quota" : "Privzeta količinska omejitev", + "All languages" : "Vsi jeziki", + "Your apps" : "Vsi programi", + "Active apps" : "Zagnani programi", + "Disabled apps" : "Onemogočeni programi", + "Updates" : "Posodobitve", + "App bundles" : "Paketi programov", + "New user" : "Nov uporabnik", + "Default quota:" : "Privzeta količinska omejitev :", + "Select default quota" : "Izbor količinske omejitve", + "Show Languages" : "Pokaži jezike", + "Show last login" : "Pokaži zadnjo prijavo", + "Show user backend" : "Pokaži ozadnji program", + "Remove group" : "Odstrani skupino", + "Admins" : "Skrbniki", + "Disabled users" : "Onemogočeni uporabniki", + "Everyone" : "Vsi", + "Add group" : "Dodaj skupino", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Program je omogočen, vendar zahteva posodobitev. Po nekaj sekundah boste preusmerjeni na stran za posodobitev.", + "SSL Root Certificates" : "Korenska potrdila SSL", + "Common Name" : "Splošno ime", + "Valid until" : "Veljavno do", + "Issued By" : "Izdajatelj", + "Valid until %s" : "Veljavno do %s", + "Import root certificate" : "Uvozi korensko potrdilo", + "Administrator documentation" : "Skrbniška dokumentacija", + "Forum" : "Forum", + "None" : "Brez", + "Login" : "Prijava", + "Plain" : "Besedilno", + "NT LAN Manager" : "Upravljalnik NT LAN", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Poštni strežnik", + "Open documentation" : "Odprta dokumentacija", + "Send mode" : "Način pošiljanja", + "Encryption" : "Šifriranje", + "From address" : "Naslov pošiljatelja", + "mail" : "pošta", + "Authentication method" : "Način overitve", + "Authentication required" : "Zahtevana je overitev", + "Server address" : "Naslov strežnika", + "Port" : "Vrata", + "Credentials" : "Poverila", + "SMTP Username" : "Uporabniško ime SMTP", + "SMTP Password" : "Geslo SMTP", + "Test email settings" : "Preizkus nastavitev elektronske pošte", + "Send email" : "Pošlji elektronsko sporočilo", + "Security & setup warnings" : "Varnost in namestitvena opozorila", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Zaradi varnosti in optimizacije delovanja je pomembno, da je sistem pravilno nastavljen. Za pomoč pri preverjanju se samodejno izvajajo nekateri preizkusi. Več podrobnosti o tem je zabeleženih v dokumentaciji. ", + "All checks passed." : "Vsa preverjanja so uspešno zaključena.", + "There are some errors regarding your setup." : "Med preverjanjem je bilo zaznanih je nekaj napak namestitve.", + "There are some warnings regarding your setup." : "Med preverjanjem je bilo javljenih nekaj opozoril.", + "Checking for system and security issues." : "Preverjanje sistemskih in varnostnih nastavitev.", + "Version" : "Različica", + "Two-Factor Authentication" : "Dvo-stopenjska overitev", + "Server-side encryption" : "Šifriranje na strežniku", + "Enable server-side encryption" : "Omogoči šifriranje na strežniku", + "Please read carefully before activating server-side encryption: " : "Pred omogočanjem strežniškega šifriranja pozorno preberite opombe:", + "Be aware that encryption always increases the file size." : " Upoštevajte, da šifriranje poveča velikost datoteke.", + "This is the final warning: Do you really want to enable encryption?" : "To je zadnje opozorilo. Ali res želite omogočiti šifriranje?", + "Enable encryption" : "Omogoči šifriranje", + "No encryption module loaded, please enable an encryption module in the app menu." : "Modul za šifriranje ni naložen. Pred nadaljevanjem je treba modul določiti v seznamu programov.", + "Select default encryption module:" : "Izbor privzetega modula za šifriranje:", + "Start migration" : "Začni selitev", + "Background jobs" : "Opravila v ozadju", + "Execute one task with each page loaded" : "Izvedi eno nalogo z vsako naloženo stranjo.", + "Sharing" : "Souporaba", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Skrbnik lahko prilagodi možnosti souporabe. Več podrobnosti je zapisanih v dokumentaciji.", + "Allow apps to use the Share API" : "Dovoli programom uporabo vmesnika API souporabe", + "Allow users to share via link" : "Uporabnikom dovoli omogočanje souporabe s povezavami", + "Allow public uploads" : "Dovoli javno pošiljanje datotek v oblak", + "Always ask for a password" : "Vedno zahtevaj za geslo", + "Enforce password protection" : "Vsili zaščito z geslom", + "Set default expiration date" : "Samodejno nastavi datuma poteka", + "Expire after " : "Povezava naj poteče po", + "days" : "dneh.", + "Enforce expiration date" : "Vsili datum preteka", + "Allow resharing" : "Dovoli nadaljnjo souporabo", + "Allow sharing with groups" : "Dovoli souporabo s skupinami", + "Restrict users to only share with users in their groups" : "Uporabnikom dovoli omogočanje souporabe le znotraj njihove skupine", + "Exclude groups from sharing" : "Izloči izbrane skupine iz souporabe", + "These groups will still be able to receive shares, but not to initiate them." : "Te skupine lahko sprejemajo mape v souporabo, nimajo pa dovoljenja za omogočanje souporabe.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Dovoli samodejno dokončanje uporabniškega imena v pogovornem oknu souporabe. Z onemogočeno možnostjo je treba v celoti vpisati uporabniško ime oziroma geslo.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Pokaži besedilo izjave o omejitvi odgovornosti na javnih povezavah za pošiljanje (če je onemogočen prikaz seznama datotek).", + "This text will be shown on the public link upload page when the file list is hidden." : "Besedilo izjave o omejitvi odgovornosti, ki bo izpisano v oknu za pošiljanje, ko je možnost prikaza seznama datotek onemogočena.", + "Default share permissions" : "Privzeta dovoljenja souporabe", + "Personal" : "Osebno", + "Administration" : "Skrbništvo", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Okolje razvija {communityopen}skupnost Nextcloud{linkclose}, {githubopen}izvorna koda{linkclose} pa je objavljena pod pogoji dovoljenja {licenseopen}AGPL{linkclose}.", + "Follow us on Twitter" : "Sledite nam na Twitter!", + "Follow us on Mastodon" : "Sledite nam na Mastodon", + "Profile picture" : "Slika profila", + "Upload new" : "Pošlji novo", + "Select from Files" : "Izbor iz datotek", + "Remove image" : "Odstrani sliko", + "png or jpg, max. 20 MB" : "png ali jpg, največ. 20 MB", + "Picture provided by original account" : "Slika iz originalnega računa", + "Cancel" : "Prekliči", + "Choose as profile picture" : "Izberi kot sliko profila", + "Details" : "Podrobnosti", + "You are a member of the following groups:" : "Omogočeno je članstvo v skupinah:", + "You are using <strong>%s</strong>" : "Uporabljate <strong>%s</strong>", + "Full name" : "Polno ime", + "No display name set" : "Prikazno ime ni nastavljeno", + "Your email address" : "Osebni elektronski naslov", + "No email address set" : "Poštni naslov ni nastavljen", + "For password reset and notifications" : "Za ponastavitev gesla in obveščanje", + "Phone number" : "Telefonska številka", + "Your phone number" : "Vaša telefonska številka", + "Address" : "Naslov", + "Your postal address" : "Vaš poštni naslov", + "Website" : "Spletna stran", + "Link https://…" : "Povezava https:// …", + "Twitter" : "Račun Twitter", + "Twitter handle @…" : "Twitter @ …", + "Help translate" : "Sodelujte pri prevajanju", + "Locale" : "Jezikovne nastavitve", + "Current password" : "Trenutno geslo", + "Change password" : "Spremeni geslo", + "Use a second factor besides your password to increase security for your account." : "Ob geslu je priporočljivo uporabiti tudi drugo-stopenjsko overitev za večjo varnost računa.", + "Disconnect" : "Prekinjeni povezavo", + "Not supported!" : "Ni podprto!", + "Press ⌘-C to copy." : "Pritisnite ⌘-C za kopiranje.", + "Press Ctrl-C to copy." : "Pritisnite Ctrl-C za kopiranje.", + "Error while loading browser sessions and device tokens" : " Napaka med nalaganjem sej brskalnika in žetonov naprave", + "Store credentials" : "Shrani poverila", + "Follow us on Google+" : "Sledite nam na Google+" +},"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);" +} \ No newline at end of file diff --git a/apps/settings/l10n/sq.js b/apps/settings/l10n/sq.js new file mode 100644 index 00000000000..289fb0bc834 --- /dev/null +++ b/apps/settings/l10n/sq.js @@ -0,0 +1,256 @@ +OC.L10N.register( + "settings", + { + "{actor} changed your password" : "{actor} ndryshoi fjalëkalimin tuaj ", + "You changed your password" : "Ju ndëruat fjalëkalimin", + "Your password was reset by an administrator" : "Fjalëkalimi juaj është rivendosur nga administratori", + "{actor} changed your email address" : "{aktori} ndërroi emailin tuaj ", + "You changed your email address" : "Ju ndryshuat adresën e emailit tuaj", + "Your email address was changed by an administrator" : "Adresa juaj e email-it është ndryshuar nga një administrator", + "Security" : "Siguria", + "You successfully logged in using two-factor authentication (%1$s)" : "Ju keni hyrë me sukses duke përdorur autentifikimin me dy faktorë ( %1$s )", + "A login attempt using two-factor authentication failed (%1$s)" : "Një përpjekje e identifikimit me anë të autentifikimit me dy faktorë dështoi ( %1$s )", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "<strong>fjalëkalimi</strong> ose <strong>emaili</strong> juaj është modifikuar", + "Couldn't remove app." : "S’hoqi dot aplikacionin.", + "Couldn't update app." : "S’përditësoi dot aplikacionin.", + "Wrong password" : "Fjalëkalim i gabuar", + "Saved" : "U ruajt", + "No user supplied" : "S’u dha përdorues", + "Unable to change password" : "S’arrin të ndryshojë fjalëkalimin", + "Authentication error" : "Gabim mirëfilltësimi", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Ju lutemi siguro një fjalëkalim të rikuperueshëm admini; përndryshe, të gjithë të dhënat e përdoruesit do të humbasin ", + "Wrong admin recovery password. Please check the password and try again." : "Fjalëkalim i gabuar rikthimesh për përgjegjësin. Ju lutemi, kontrolloni fjalëkalimin dhe provoni përsëri.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Programi klient s’mbulon ndryshime fjalëkalimi, por kyçi i përdoruesi për fshehtëzime u përditësua me sukses.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "instalim dhe përditësim aplikacionesh përmes shitores së aplikacioneve ose Federated Cloud Sharing", + "Federated Cloud Sharing" : "Ndarje Në Re të Federuar ", + "Invalid SMTP password." : "Fjalëkalim SMTP i pavlefshëm", + "Email setting test" : "Test i konfigurimeve të Email-it", + "Well done, %s!" : "U krye, %s!", + "If you received this email, the email configuration seems to be correct." : "Nëse keni marrë këtë email, konfigurimi i email-it duket të jetë i saktë.", + "Email could not be sent. Check your mail server log" : "Email nuk mund të dërgohej. Kontrolloni logun e serverit tuaj të postës", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Ndodhi një gabim gjatë dërgimit të email-it. Ju lutemi, rishikoni rregullimet tuaja. (Error: %s)", + "You need to set your user email before being able to send test emails." : "Lypset të caktoni email-in tuaj si përdorues, përpara se të jeni në gjendje të dërgoni email-e provë.", + "Invalid mail address" : "Adresë email e pavlefshme", + "Settings saved" : "Konfigurimet u ruajtën", + "Unable to change full name" : "S’arrin të ndryshojë emrin e plotë", + "Unable to change email address" : "Nuk mund të ndryshohet adresa e email-it", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Në mënyrë që të verifikoni llogarinë tuaj në Twitter, postojeni tweet-in e mëposhtme në Twitter (ju lutemi sigurohuni që ta postoni atë pa asnjë ndërprerje rrjeshti):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Në mënyrë që të verifikoni faqen tuaj të internetit, ruani përmbajtjen e mëposhtme në rrënjën tuaj të internetit në '.well-known / CloudIdVerificationCode.txt' (ju lutemi sigurohuni që teksti i plotë të jetë në një vijë):", + "%1$s changed your password on %2$s." : "%1$s ju ka ndryshuar fjalëkalmin në %2$s.", + "Your password on %s was changed." : "Fjalëkalimi juaj në %s u ndryshua. ", + "Your password on %s was reset by an administrator." : "Fjalëkalimi juaj në %s u rivendos nga një administrator.", + "Password for %1$s changed on %2$s" : "Fjalëkalimi për %1$s ndryshojë në %2$s", + "Password changed for %s" : "Fjalëkalimi ndryshojë për %s", + "If you did not request this, please contact an administrator." : "Nëse ju nuk e keni kërkuar këtë, ju lutem kontaktoni një administrator.", + "Your email address on %s was changed." : "Adresa e juaj e email-it në %s u ndryshua", + "Your email address on %s was changed by an administrator." : "Adresa e juaj e email-it në %s u ndryshua nga një adminstrator.", + "Email address for %1$s changed on %2$s" : "Adresa e email-it për %1$s ndryshojë në %2$s", + "Email address changed for %s" : "Adresa e email-it ndryshojë për %s", + "The new email address is %s" : "Adresa e re e email-it është %s", + "Your %s account was created" : "Llogaria juaj %s u krijua", + "Welcome aboard" : "Mirë se vini në bord", + "Welcome aboard %s" : "Mirë se vini në bord %s", + "Your username is: %s" : "Emri juaj i përdoruesit është: %s", + "Set your password" : "Vendos fjalëkalimin tënd", + "Go to %s" : "Shko tek %s", + "Install Client" : "Instalo Klient", + "Delete" : "Fshij", + "Unlimited" : "E pakufizuar", + "Verifying …" : "Duke verifikuar ...", + "Verify" : "Verifiko", + "Migration in progress. Please wait until the migration is finished" : "Migrimi në rrugë e sipër. Ju lutemi, pritni, teksa migrimi përfundon", + "Migration started …" : "Migrimi filloi …", + "Not saved" : "Nuk u ruajt", + "Sending…" : "dërgim", + "Email sent" : "Email-i u dërgua", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Ndodhi një gabim. Ju lutemi, ngarkoni një dëshmi PEM të koduar me ASCII.", + "Valid until {date}" : "E vlefshme deri më {date}", + "Local" : "Lokale", + "Private" : "Private", + "Only visible to local users" : "E dukshme vetëm për përdoruesit lokal", + "Only visible to you" : "E dukshme vetëm për ju", + "Contacts" : "Kontaktet", + "Visible to local users and to trusted servers" : "E dukshme për përdoruesit lokal dhe serverat e besuar", + "Public" : "Publiku", + "Will be synced to a global and public address book" : "Do të sinkronizohet te një libër adresash publik dhe global", + "Very weak password" : "Fjalëkalim shumë i dobët", + "Weak password" : "Fjalëkalim i dobët", + "So-so password" : "Fjalëkalim çka", + "Good password" : "Fjalëkalim i mirë", + "Strong password" : "Fjalëkalim i fortë", + "Select a profile picture" : "Përzgjidhni një foto profili", + "Groups" : "Grupe", + "Limit to groups" : "Kufizo grupet", + "Allow filesystem access" : "Lejo aksesin e sistemit të skedarëve", + "Revoke" : "Anulo", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome për Android", + "Sync client - {os}" : "Sinkronizo klientin - {os}", + "This session" : "Ky sesion", + "Device" : "Pajisje", + "Last activity" : "Aktiviteti i fundit", + "Web, desktop and mobile clients currently logged in to your account." : "Klientë në rrjet, desktop dhe celular kanë hyrë aktualisht në llogarinë tuaj.", + "Error while creating device token" : "Gabim gjatë krijimit të token-ëve të pajisjejeve", + "Error while deleting the token" : "Gabim gjatë fshirjes së token-it", + "App name" : "Emër aplikacioni", + "Create new app password" : "Krijoni fjalëkalim aplikacioni të ri", + "Use the credentials below to configure your app or device." : "Përdorni kredencialet e mëposhtme për të konfiguruar aplikacionin apo pajisjen tuaj.", + "For security reasons this password will only be shown once." : "Për arsye siguri ky fjalëkalim do të shofaqet vetëm një herv.", + "Username" : "Emër përdoruesi", + "Password" : "Fjalëkalim", + "Done" : "U bë", + "Copied!" : "U kopjua!", + "Copy" : "Kopjo", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Aplikacionet zyrtare zhvillohen nga komuniteti dhe brenta tij. Ato ofrojnë funksionalitet qëndror dhe janë gati për përdorim.", + "Official" : "Zyrtare", + "Remove" : "Hiqe", + "Disable" : "Çaktivizoje", + "All" : "Krejt", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Ky aplikacion nuk ka të caktuar një minimum versioni të Nextcloud. Ky do të jetë një gabim në të ardhmen.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Ky aplikacion nuk ka të caktuar një maksimum versioni të Nextcloud. Ky do të jetë një gabim në të ardhmen.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Ky aplikacion s’mund të instalohet, ngaqë për të nuk plotësohen varësitë vijuese:", + "View in store" : "Shiko në dyqan", + "Visit website" : "Vizitoni sajtin", + "Report a bug" : "Njoftoni një të metë", + "User documentation" : "Dokumentim për përdoruesit", + "Admin documentation" : "Dokumentim për përgjegjësit", + "Developer documentation" : "Dokumentim për zhvillues", + "No apps found for your version" : "S’u gjetën aplikacione për versionin tuaj", + "Enable all" : "Aktivizoi të gjitha", + "Enable" : "Aktivizoje", + "The app will be downloaded from the app store" : "Aplikacioni do të shkarkohet nga shitorja e aplikacioneve", + "New password" : "Fjalëkalimi i ri", + "{size} used" : "{madhësia} e përdorur", + "Email" : "Email", + "Group admin for" : "Administratori i grupit për", + "Quota" : "Kuota", + "Language" : "Gjuhë", + "Storage location" : "Vendndodhje Depozite", + "User backend" : "Program klient i përdoruesit", + "Last login" : "Hyrja e fundit", + "Default quota" : "Kuota Parazgjedhje", + "Your apps" : "Aplikacionet tuaja ", + "Disabled apps" : "Aplikacionet pa aftësi ", + "App bundles" : "Pako e aplikacionit ", + "Show last login" : "Shfaq hyrjen e fundit", + "Show user backend" : "Shfaq programin klient të përdoruesit", + "Admins" : "Administratorë", + "Everyone" : "Kushdo", + "Add group" : "Shto grup", + "Error: This app can not be enabled because it makes the server unstable" : "Gabim: Ky aplikacion s’u aktivizua dot, ngaqë e bën shërbyesin të paqëndrueshëm.", + "SSL Root Certificates" : "Dëshmi SSL Rrënjë", + "Common Name" : "Emër i Rëndomtë", + "Valid until" : "E vlefshme deri më", + "Issued By" : "Lëshuar Nga", + "Valid until %s" : "E vlefshme deri më %s", + "Import root certificate" : "Importoni dëshmi rrënjë", + "Administrator documentation" : "Dokumentim për përgjegjës", + "Forum" : "Forum", + "None" : "Asnjë", + "Login" : "Hyrje", + "Plain" : "E thjeshtë", + "NT LAN Manager" : "Përgjegjës Rrjeti NT", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Shërbyes email-esh", + "Open documentation" : "Hapni dokumentimin", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Është e rëndësishme të ngrini këtë server për të qenë në gjendje të dërgoni email, si për rivendosjen e fjalëkalimeve dhe për njoftimet.", + "Send mode" : "Mënyrë dërgimi", + "Encryption" : "Fshehtëzim", + "From address" : "Nga adresa", + "mail" : "email", + "Authentication method" : "Metodë mirëfilltësimi", + "Authentication required" : "Lypset mirëfilltësim", + "Server address" : "Adresë shërbyesi", + "Port" : "Portë", + "Credentials" : "Kredenciale", + "SMTP Username" : "Emër përdoruesi SMTP", + "SMTP Password" : "Fjalëkalim SMTP", + "Test email settings" : "Testoni rregullimet e email-it", + "Send email" : "Dërgo email", + "Security & setup warnings" : "Sinjalizime sigurie & rregullimi", + "All checks passed." : "I kaloi krejt kontrollet.", + "Version" : "Version", + "Server-side encryption" : "Fshehtëzim më anë shërbyesi", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Enkriptimi nga ana e serverit bën të mundur enkriptimin e skedarëve të ngarkuar në këtë server. Kjo vjen me kufizime si një ndëshkim për performancën, prandaj e lejoni këtë vetëm nëse është e nevojshme.", + "Enable server-side encryption" : "Aktivizo fshehtëzim më anë të shërbyesit", + "Please read carefully before activating server-side encryption: " : "Ju lutemi, lexoni me kujdes përpara aktivizimit të fshehtëzimeve më anë shërbyesi: ", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Pasi të jetë aktivizuar fshehtëzimi, krejt kartelat e ngarkuara te shërbyesi nga kjo pikë e tutje do të fshehtëzohen pasi të jenë depozituar në shërbyes. Çaktivizimi i fshehtëzimit në një datë të mëvonshme do të jetë i mundur vetëm nëse moduli aktiv i fshehtëzimeve e mbulon këtë funksion, dhe nëse plotësohen krejt parakushtet (p.sh. caktimi i një kyçi rimarrjesh).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Vetëm shifrimi nuk garaton sigurinë e sistemit. Ju lutem shikoni dokumentimin për më shumë informacion mbi mënyrën si applikacioni punon, dhe përdorimin e rasteve të suportuara.", + "Be aware that encryption always increases the file size." : "Kini parasysh që fshehtëzimi e rrit gjithnjë madhësinë e kartelës.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Është gjithmonë ide e mirë të krijohen kopjeruajtje të rregullta të të dhënave tuaja, në rast fshehtëzimi sigurohuni që bëni kopjeruajtje të kyçeve të fshehtëzimit, tok me të dhënat tuaja.", + "This is the final warning: Do you really want to enable encryption?" : "Ky është sinjalizimi përfundimtar: Doni vërtet të aktivizohet fshehtëzimi?", + "Enable encryption" : "Aktivizoni fshehtëzim", + "No encryption module loaded, please enable an encryption module in the app menu." : "S’ka të ngarkuar modul fshehtëzimi, ju lutemi, aktivizoni një modul fshehtëzimi që nga menuja e aplikacionit.", + "Select default encryption module:" : "Përzgjidhni modul parazgjedhje fshehtëzimi:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Lypset të migroni kyçet tuaj të fshehtëzimit nga fshehtëzimi i vjetër (ownCloud <= 8.0) te i riu. Ju lutemi, aktivizoni \"Modul parazgjedhje fshehtëzimesh\" dhe ekzekutoni 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Lypset të migroni kyçet tuaj të fshehtëzimit nga fshehtëzimi i vjetër (ownCloud <= 8.0) te i riu.", + "Start migration" : "Fillo migrimin", + "Background jobs" : "Punët në background", + "Last job ran %s." : "Puna e fundit vazhdoi %s.", + "Last job execution ran %s. Something seems wrong." : "Ekzekutimi i punës së fundit vazhdoi %s. Diçka shkoi keq.", + "Background job didn’t run yet!" : "Puna ne background nuk ka filluar akoma!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Për performancë optimale është e rëndësishme të konfigurosh punë të sfondit në mënyrë korrekte. Për raste më të mëdha 'Cron' është konfigurimi i rekomanduar. Ju lutem shih dokumentacionin për më shumë informacion.", + "Execute one task with each page loaded" : "Kryeni vetëm një veprim me secilën prej faqeve të ngarkuara", + "The cron.php needs to be executed by the system user \"%s\"." : "con.php duhet të ekzekutohet bga përdoruesi i sistemit \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Për të bërë këtë ekzekutim ju duhet shtesa PHP POSIX. Shikoni {linkstart} dokumentacionin e PHP {linkend} pë më shumë detaje.", + "Sharing" : "Ndarje me të tjerët", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Si admin ju mund të rregulloni mirë sjelljen e ndarjes. Ju lutem shih dokumentacionin për më shumë informacion.", + "Allow apps to use the Share API" : "Lejoni aplikacionet të përdorin API Share", + "Allow users to share via link" : "Lejoji përdoruesit të ndajnë me të tjerët përmes lidhjesh", + "Allow public uploads" : "Lejo ngarkime publike", + "Always ask for a password" : "Gjithmonë pyet për një fjalëkalim", + "Enforce password protection" : "Detyro mbrojtje me fjalëkalim", + "Set default expiration date" : "Caktoni datë parazgjedhje skadimi", + "Expire after " : "Skadon pas ", + "days" : "ditësh", + "Enforce expiration date" : "Detyro datë skadimi", + "Allow resharing" : "Lejo rindarje", + "Allow sharing with groups" : "Lejoni ndarje me grupe", + "Restrict users to only share with users in their groups" : "Përdoruesve kufizoju të ndajnë gjëra vetëm me përdorues në grupin e tyre", + "Exclude groups from sharing" : "Përjashtoni grupe nga ndarjet", + "These groups will still be able to receive shares, but not to initiate them." : "Këto grupe prapë do të jenë në gjendje të marrin ndarje nga të tjerët, por jo të fillojnë të tilla.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Shfaqni tekstin e mospranimit në linkun publik të faqes së ngarkuar. (Shfaqet vetëm kur lista e skedarit është e fshehur.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Ky tekst do të shfaqet në linkun publik të faqes së ngarkuar kur lista e skedarit të jetë e fshehur.", + "Personal" : "Personale", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Zhvilluar nga {communityopen}komuniteti Nextcloud {linkclose}, {githubopen}kodi i hapur{linkclose} iështë licensuar sipar {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Pëlqeni faqen tonë në Facebook", + "Follow us on Twitter" : "Na ndiqni në Twitter", + "Check out our blog" : "Shikoni blogun tonë", + "Subscribe to our newsletter" : "Abonohu në gazeten tonë", + "Profile picture" : "Foto profili", + "Upload new" : "Ngarko të re", + "Select from Files" : "Përzgjidhni prej Kartelash", + "Remove image" : "Hiqe figurën", + "png or jpg, max. 20 MB" : "png ose jpg, maks. 20 MB", + "Picture provided by original account" : "Foto e prurë nga llogaria origjinale", + "Cancel" : "Anuloje", + "Choose as profile picture" : "Zgjidhni një foto profili", + "Details" : "Detaje", + "You are using <strong>%s</strong>" : "Ju po përdorni <strong>%s</strong>", + "Full name" : "Emër i plotë", + "No display name set" : "S’është caktuar emër për në ekran", + "Your email address" : "Adresa juaj email", + "No email address set" : "S’është caktuar adresë email", + "For password reset and notifications" : "Për të rivendosur fjalëkalimin dhe njoftimet", + "Phone number" : "Numri i telefonit", + "Your phone number" : "Numri juaj i telefonit", + "Address" : "Adresa", + "Your postal address" : "Adresa juaj postale", + "Website" : "Faqe web-i", + "It can take up to 24 hours before the account is displayed as verified." : "Kjo mund të marrë mbi 24 orë, përpara se llogaria të shfaqet si e verifikuar.", + "Link https://…" : "Linku https://…", + "Twitter" : "Twitter", + "Twitter handle @…" : "Përdoruesi i Twitter @ ...", + "Help translate" : "Ndihmoni në përkthim", + "Current password" : "Fjalëkalimi i tanishëm", + "Change password" : "Ndrysho fjalëkalimin", + "Store credentials" : "Depozitoji kredencialet", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php është regjistruar në një server webcron për të thirrur cron.php çdo 15 minuta mbi HTTP.", + "Use system cron service to call the cron.php file every 15 minutes." : "Përdor shërbimin cron të sistemit për të thirrur skedarin cron.php çdo 15 minuta." +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/sq.json b/apps/settings/l10n/sq.json new file mode 100644 index 00000000000..06e51bb9aea --- /dev/null +++ b/apps/settings/l10n/sq.json @@ -0,0 +1,254 @@ +{ "translations": { + "{actor} changed your password" : "{actor} ndryshoi fjalëkalimin tuaj ", + "You changed your password" : "Ju ndëruat fjalëkalimin", + "Your password was reset by an administrator" : "Fjalëkalimi juaj është rivendosur nga administratori", + "{actor} changed your email address" : "{aktori} ndërroi emailin tuaj ", + "You changed your email address" : "Ju ndryshuat adresën e emailit tuaj", + "Your email address was changed by an administrator" : "Adresa juaj e email-it është ndryshuar nga një administrator", + "Security" : "Siguria", + "You successfully logged in using two-factor authentication (%1$s)" : "Ju keni hyrë me sukses duke përdorur autentifikimin me dy faktorë ( %1$s )", + "A login attempt using two-factor authentication failed (%1$s)" : "Një përpjekje e identifikimit me anë të autentifikimit me dy faktorë dështoi ( %1$s )", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "<strong>fjalëkalimi</strong> ose <strong>emaili</strong> juaj është modifikuar", + "Couldn't remove app." : "S’hoqi dot aplikacionin.", + "Couldn't update app." : "S’përditësoi dot aplikacionin.", + "Wrong password" : "Fjalëkalim i gabuar", + "Saved" : "U ruajt", + "No user supplied" : "S’u dha përdorues", + "Unable to change password" : "S’arrin të ndryshojë fjalëkalimin", + "Authentication error" : "Gabim mirëfilltësimi", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Ju lutemi siguro një fjalëkalim të rikuperueshëm admini; përndryshe, të gjithë të dhënat e përdoruesit do të humbasin ", + "Wrong admin recovery password. Please check the password and try again." : "Fjalëkalim i gabuar rikthimesh për përgjegjësin. Ju lutemi, kontrolloni fjalëkalimin dhe provoni përsëri.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Programi klient s’mbulon ndryshime fjalëkalimi, por kyçi i përdoruesi për fshehtëzime u përditësua me sukses.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "instalim dhe përditësim aplikacionesh përmes shitores së aplikacioneve ose Federated Cloud Sharing", + "Federated Cloud Sharing" : "Ndarje Në Re të Federuar ", + "Invalid SMTP password." : "Fjalëkalim SMTP i pavlefshëm", + "Email setting test" : "Test i konfigurimeve të Email-it", + "Well done, %s!" : "U krye, %s!", + "If you received this email, the email configuration seems to be correct." : "Nëse keni marrë këtë email, konfigurimi i email-it duket të jetë i saktë.", + "Email could not be sent. Check your mail server log" : "Email nuk mund të dërgohej. Kontrolloni logun e serverit tuaj të postës", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Ndodhi një gabim gjatë dërgimit të email-it. Ju lutemi, rishikoni rregullimet tuaja. (Error: %s)", + "You need to set your user email before being able to send test emails." : "Lypset të caktoni email-in tuaj si përdorues, përpara se të jeni në gjendje të dërgoni email-e provë.", + "Invalid mail address" : "Adresë email e pavlefshme", + "Settings saved" : "Konfigurimet u ruajtën", + "Unable to change full name" : "S’arrin të ndryshojë emrin e plotë", + "Unable to change email address" : "Nuk mund të ndryshohet adresa e email-it", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Në mënyrë që të verifikoni llogarinë tuaj në Twitter, postojeni tweet-in e mëposhtme në Twitter (ju lutemi sigurohuni që ta postoni atë pa asnjë ndërprerje rrjeshti):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Në mënyrë që të verifikoni faqen tuaj të internetit, ruani përmbajtjen e mëposhtme në rrënjën tuaj të internetit në '.well-known / CloudIdVerificationCode.txt' (ju lutemi sigurohuni që teksti i plotë të jetë në një vijë):", + "%1$s changed your password on %2$s." : "%1$s ju ka ndryshuar fjalëkalmin në %2$s.", + "Your password on %s was changed." : "Fjalëkalimi juaj në %s u ndryshua. ", + "Your password on %s was reset by an administrator." : "Fjalëkalimi juaj në %s u rivendos nga një administrator.", + "Password for %1$s changed on %2$s" : "Fjalëkalimi për %1$s ndryshojë në %2$s", + "Password changed for %s" : "Fjalëkalimi ndryshojë për %s", + "If you did not request this, please contact an administrator." : "Nëse ju nuk e keni kërkuar këtë, ju lutem kontaktoni një administrator.", + "Your email address on %s was changed." : "Adresa e juaj e email-it në %s u ndryshua", + "Your email address on %s was changed by an administrator." : "Adresa e juaj e email-it në %s u ndryshua nga një adminstrator.", + "Email address for %1$s changed on %2$s" : "Adresa e email-it për %1$s ndryshojë në %2$s", + "Email address changed for %s" : "Adresa e email-it ndryshojë për %s", + "The new email address is %s" : "Adresa e re e email-it është %s", + "Your %s account was created" : "Llogaria juaj %s u krijua", + "Welcome aboard" : "Mirë se vini në bord", + "Welcome aboard %s" : "Mirë se vini në bord %s", + "Your username is: %s" : "Emri juaj i përdoruesit është: %s", + "Set your password" : "Vendos fjalëkalimin tënd", + "Go to %s" : "Shko tek %s", + "Install Client" : "Instalo Klient", + "Delete" : "Fshij", + "Unlimited" : "E pakufizuar", + "Verifying …" : "Duke verifikuar ...", + "Verify" : "Verifiko", + "Migration in progress. Please wait until the migration is finished" : "Migrimi në rrugë e sipër. Ju lutemi, pritni, teksa migrimi përfundon", + "Migration started …" : "Migrimi filloi …", + "Not saved" : "Nuk u ruajt", + "Sending…" : "dërgim", + "Email sent" : "Email-i u dërgua", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Ndodhi një gabim. Ju lutemi, ngarkoni një dëshmi PEM të koduar me ASCII.", + "Valid until {date}" : "E vlefshme deri më {date}", + "Local" : "Lokale", + "Private" : "Private", + "Only visible to local users" : "E dukshme vetëm për përdoruesit lokal", + "Only visible to you" : "E dukshme vetëm për ju", + "Contacts" : "Kontaktet", + "Visible to local users and to trusted servers" : "E dukshme për përdoruesit lokal dhe serverat e besuar", + "Public" : "Publiku", + "Will be synced to a global and public address book" : "Do të sinkronizohet te një libër adresash publik dhe global", + "Very weak password" : "Fjalëkalim shumë i dobët", + "Weak password" : "Fjalëkalim i dobët", + "So-so password" : "Fjalëkalim çka", + "Good password" : "Fjalëkalim i mirë", + "Strong password" : "Fjalëkalim i fortë", + "Select a profile picture" : "Përzgjidhni një foto profili", + "Groups" : "Grupe", + "Limit to groups" : "Kufizo grupet", + "Allow filesystem access" : "Lejo aksesin e sistemit të skedarëve", + "Revoke" : "Anulo", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome për Android", + "Sync client - {os}" : "Sinkronizo klientin - {os}", + "This session" : "Ky sesion", + "Device" : "Pajisje", + "Last activity" : "Aktiviteti i fundit", + "Web, desktop and mobile clients currently logged in to your account." : "Klientë në rrjet, desktop dhe celular kanë hyrë aktualisht në llogarinë tuaj.", + "Error while creating device token" : "Gabim gjatë krijimit të token-ëve të pajisjejeve", + "Error while deleting the token" : "Gabim gjatë fshirjes së token-it", + "App name" : "Emër aplikacioni", + "Create new app password" : "Krijoni fjalëkalim aplikacioni të ri", + "Use the credentials below to configure your app or device." : "Përdorni kredencialet e mëposhtme për të konfiguruar aplikacionin apo pajisjen tuaj.", + "For security reasons this password will only be shown once." : "Për arsye siguri ky fjalëkalim do të shofaqet vetëm një herv.", + "Username" : "Emër përdoruesi", + "Password" : "Fjalëkalim", + "Done" : "U bë", + "Copied!" : "U kopjua!", + "Copy" : "Kopjo", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Aplikacionet zyrtare zhvillohen nga komuniteti dhe brenta tij. Ato ofrojnë funksionalitet qëndror dhe janë gati për përdorim.", + "Official" : "Zyrtare", + "Remove" : "Hiqe", + "Disable" : "Çaktivizoje", + "All" : "Krejt", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Ky aplikacion nuk ka të caktuar një minimum versioni të Nextcloud. Ky do të jetë një gabim në të ardhmen.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Ky aplikacion nuk ka të caktuar një maksimum versioni të Nextcloud. Ky do të jetë një gabim në të ardhmen.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Ky aplikacion s’mund të instalohet, ngaqë për të nuk plotësohen varësitë vijuese:", + "View in store" : "Shiko në dyqan", + "Visit website" : "Vizitoni sajtin", + "Report a bug" : "Njoftoni një të metë", + "User documentation" : "Dokumentim për përdoruesit", + "Admin documentation" : "Dokumentim për përgjegjësit", + "Developer documentation" : "Dokumentim për zhvillues", + "No apps found for your version" : "S’u gjetën aplikacione për versionin tuaj", + "Enable all" : "Aktivizoi të gjitha", + "Enable" : "Aktivizoje", + "The app will be downloaded from the app store" : "Aplikacioni do të shkarkohet nga shitorja e aplikacioneve", + "New password" : "Fjalëkalimi i ri", + "{size} used" : "{madhësia} e përdorur", + "Email" : "Email", + "Group admin for" : "Administratori i grupit për", + "Quota" : "Kuota", + "Language" : "Gjuhë", + "Storage location" : "Vendndodhje Depozite", + "User backend" : "Program klient i përdoruesit", + "Last login" : "Hyrja e fundit", + "Default quota" : "Kuota Parazgjedhje", + "Your apps" : "Aplikacionet tuaja ", + "Disabled apps" : "Aplikacionet pa aftësi ", + "App bundles" : "Pako e aplikacionit ", + "Show last login" : "Shfaq hyrjen e fundit", + "Show user backend" : "Shfaq programin klient të përdoruesit", + "Admins" : "Administratorë", + "Everyone" : "Kushdo", + "Add group" : "Shto grup", + "Error: This app can not be enabled because it makes the server unstable" : "Gabim: Ky aplikacion s’u aktivizua dot, ngaqë e bën shërbyesin të paqëndrueshëm.", + "SSL Root Certificates" : "Dëshmi SSL Rrënjë", + "Common Name" : "Emër i Rëndomtë", + "Valid until" : "E vlefshme deri më", + "Issued By" : "Lëshuar Nga", + "Valid until %s" : "E vlefshme deri më %s", + "Import root certificate" : "Importoni dëshmi rrënjë", + "Administrator documentation" : "Dokumentim për përgjegjës", + "Forum" : "Forum", + "None" : "Asnjë", + "Login" : "Hyrje", + "Plain" : "E thjeshtë", + "NT LAN Manager" : "Përgjegjës Rrjeti NT", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Shërbyes email-esh", + "Open documentation" : "Hapni dokumentimin", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Është e rëndësishme të ngrini këtë server për të qenë në gjendje të dërgoni email, si për rivendosjen e fjalëkalimeve dhe për njoftimet.", + "Send mode" : "Mënyrë dërgimi", + "Encryption" : "Fshehtëzim", + "From address" : "Nga adresa", + "mail" : "email", + "Authentication method" : "Metodë mirëfilltësimi", + "Authentication required" : "Lypset mirëfilltësim", + "Server address" : "Adresë shërbyesi", + "Port" : "Portë", + "Credentials" : "Kredenciale", + "SMTP Username" : "Emër përdoruesi SMTP", + "SMTP Password" : "Fjalëkalim SMTP", + "Test email settings" : "Testoni rregullimet e email-it", + "Send email" : "Dërgo email", + "Security & setup warnings" : "Sinjalizime sigurie & rregullimi", + "All checks passed." : "I kaloi krejt kontrollet.", + "Version" : "Version", + "Server-side encryption" : "Fshehtëzim më anë shërbyesi", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Enkriptimi nga ana e serverit bën të mundur enkriptimin e skedarëve të ngarkuar në këtë server. Kjo vjen me kufizime si një ndëshkim për performancën, prandaj e lejoni këtë vetëm nëse është e nevojshme.", + "Enable server-side encryption" : "Aktivizo fshehtëzim më anë të shërbyesit", + "Please read carefully before activating server-side encryption: " : "Ju lutemi, lexoni me kujdes përpara aktivizimit të fshehtëzimeve më anë shërbyesi: ", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Pasi të jetë aktivizuar fshehtëzimi, krejt kartelat e ngarkuara te shërbyesi nga kjo pikë e tutje do të fshehtëzohen pasi të jenë depozituar në shërbyes. Çaktivizimi i fshehtëzimit në një datë të mëvonshme do të jetë i mundur vetëm nëse moduli aktiv i fshehtëzimeve e mbulon këtë funksion, dhe nëse plotësohen krejt parakushtet (p.sh. caktimi i një kyçi rimarrjesh).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Vetëm shifrimi nuk garaton sigurinë e sistemit. Ju lutem shikoni dokumentimin për më shumë informacion mbi mënyrën si applikacioni punon, dhe përdorimin e rasteve të suportuara.", + "Be aware that encryption always increases the file size." : "Kini parasysh që fshehtëzimi e rrit gjithnjë madhësinë e kartelës.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Është gjithmonë ide e mirë të krijohen kopjeruajtje të rregullta të të dhënave tuaja, në rast fshehtëzimi sigurohuni që bëni kopjeruajtje të kyçeve të fshehtëzimit, tok me të dhënat tuaja.", + "This is the final warning: Do you really want to enable encryption?" : "Ky është sinjalizimi përfundimtar: Doni vërtet të aktivizohet fshehtëzimi?", + "Enable encryption" : "Aktivizoni fshehtëzim", + "No encryption module loaded, please enable an encryption module in the app menu." : "S’ka të ngarkuar modul fshehtëzimi, ju lutemi, aktivizoni një modul fshehtëzimi që nga menuja e aplikacionit.", + "Select default encryption module:" : "Përzgjidhni modul parazgjedhje fshehtëzimi:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Lypset të migroni kyçet tuaj të fshehtëzimit nga fshehtëzimi i vjetër (ownCloud <= 8.0) te i riu. Ju lutemi, aktivizoni \"Modul parazgjedhje fshehtëzimesh\" dhe ekzekutoni 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Lypset të migroni kyçet tuaj të fshehtëzimit nga fshehtëzimi i vjetër (ownCloud <= 8.0) te i riu.", + "Start migration" : "Fillo migrimin", + "Background jobs" : "Punët në background", + "Last job ran %s." : "Puna e fundit vazhdoi %s.", + "Last job execution ran %s. Something seems wrong." : "Ekzekutimi i punës së fundit vazhdoi %s. Diçka shkoi keq.", + "Background job didn’t run yet!" : "Puna ne background nuk ka filluar akoma!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "Për performancë optimale është e rëndësishme të konfigurosh punë të sfondit në mënyrë korrekte. Për raste më të mëdha 'Cron' është konfigurimi i rekomanduar. Ju lutem shih dokumentacionin për më shumë informacion.", + "Execute one task with each page loaded" : "Kryeni vetëm një veprim me secilën prej faqeve të ngarkuara", + "The cron.php needs to be executed by the system user \"%s\"." : "con.php duhet të ekzekutohet bga përdoruesi i sistemit \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Për të bërë këtë ekzekutim ju duhet shtesa PHP POSIX. Shikoni {linkstart} dokumentacionin e PHP {linkend} pë më shumë detaje.", + "Sharing" : "Ndarje me të tjerët", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Si admin ju mund të rregulloni mirë sjelljen e ndarjes. Ju lutem shih dokumentacionin për më shumë informacion.", + "Allow apps to use the Share API" : "Lejoni aplikacionet të përdorin API Share", + "Allow users to share via link" : "Lejoji përdoruesit të ndajnë me të tjerët përmes lidhjesh", + "Allow public uploads" : "Lejo ngarkime publike", + "Always ask for a password" : "Gjithmonë pyet për një fjalëkalim", + "Enforce password protection" : "Detyro mbrojtje me fjalëkalim", + "Set default expiration date" : "Caktoni datë parazgjedhje skadimi", + "Expire after " : "Skadon pas ", + "days" : "ditësh", + "Enforce expiration date" : "Detyro datë skadimi", + "Allow resharing" : "Lejo rindarje", + "Allow sharing with groups" : "Lejoni ndarje me grupe", + "Restrict users to only share with users in their groups" : "Përdoruesve kufizoju të ndajnë gjëra vetëm me përdorues në grupin e tyre", + "Exclude groups from sharing" : "Përjashtoni grupe nga ndarjet", + "These groups will still be able to receive shares, but not to initiate them." : "Këto grupe prapë do të jenë në gjendje të marrin ndarje nga të tjerët, por jo të fillojnë të tilla.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Shfaqni tekstin e mospranimit në linkun publik të faqes së ngarkuar. (Shfaqet vetëm kur lista e skedarit është e fshehur.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Ky tekst do të shfaqet në linkun publik të faqes së ngarkuar kur lista e skedarit të jetë e fshehur.", + "Personal" : "Personale", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Zhvilluar nga {communityopen}komuniteti Nextcloud {linkclose}, {githubopen}kodi i hapur{linkclose} iështë licensuar sipar {licenseopen}AGPL{linkclose}.", + "Like our Facebook page" : "Pëlqeni faqen tonë në Facebook", + "Follow us on Twitter" : "Na ndiqni në Twitter", + "Check out our blog" : "Shikoni blogun tonë", + "Subscribe to our newsletter" : "Abonohu në gazeten tonë", + "Profile picture" : "Foto profili", + "Upload new" : "Ngarko të re", + "Select from Files" : "Përzgjidhni prej Kartelash", + "Remove image" : "Hiqe figurën", + "png or jpg, max. 20 MB" : "png ose jpg, maks. 20 MB", + "Picture provided by original account" : "Foto e prurë nga llogaria origjinale", + "Cancel" : "Anuloje", + "Choose as profile picture" : "Zgjidhni një foto profili", + "Details" : "Detaje", + "You are using <strong>%s</strong>" : "Ju po përdorni <strong>%s</strong>", + "Full name" : "Emër i plotë", + "No display name set" : "S’është caktuar emër për në ekran", + "Your email address" : "Adresa juaj email", + "No email address set" : "S’është caktuar adresë email", + "For password reset and notifications" : "Për të rivendosur fjalëkalimin dhe njoftimet", + "Phone number" : "Numri i telefonit", + "Your phone number" : "Numri juaj i telefonit", + "Address" : "Adresa", + "Your postal address" : "Adresa juaj postale", + "Website" : "Faqe web-i", + "It can take up to 24 hours before the account is displayed as verified." : "Kjo mund të marrë mbi 24 orë, përpara se llogaria të shfaqet si e verifikuar.", + "Link https://…" : "Linku https://…", + "Twitter" : "Twitter", + "Twitter handle @…" : "Përdoruesi i Twitter @ ...", + "Help translate" : "Ndihmoni në përkthim", + "Current password" : "Fjalëkalimi i tanishëm", + "Change password" : "Ndrysho fjalëkalimin", + "Store credentials" : "Depozitoji kredencialet", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php është regjistruar në një server webcron për të thirrur cron.php çdo 15 minuta mbi HTTP.", + "Use system cron service to call the cron.php file every 15 minutes." : "Përdor shërbimin cron të sistemit për të thirrur skedarin cron.php çdo 15 minuta." +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} \ No newline at end of file diff --git a/apps/settings/l10n/sr.js b/apps/settings/l10n/sr.js new file mode 100644 index 00000000000..59fcf221368 --- /dev/null +++ b/apps/settings/l10n/sr.js @@ -0,0 +1,822 @@ +OC.L10N.register( + "settings", + { + "{actor} added you to group {group}" : "{actor} Вас је додао у групу {group}", + "You added {user} to group {group}" : "Додали сте корисника {user} у групу {group}", + "{actor} added {user} to group {group}" : "{actor} је додао корисника {user} у групу {group}", + "An administrator added you to group {group}" : "Администратор Вас је додао у групу {group}", + "An administrator added {user} to group {group}" : "Администратор је додао корисника {user} у групу {group}", + "{actor} removed you from group {group}" : "{actor} Вас је уклонио из групе {group}", + "You removed {user} from group {group}" : "Уклонили сте корисника {user} из групе {group}", + "{actor} removed {user} from group {group}" : "{actor} је уклонио корисника {user} из групе {group}", + "An administrator removed you from group {group}" : "Администратор Вас је уклонио из групе {group}", + "An administrator removed {user} from group {group}" : "Администратор је уклонио корисника {user} из групе {group}", + "Your <strong>group memberships</strong> were modified" : "Ваше <strong>чланство у групи</strong> је измењено", + "{actor} changed your password" : "{actor} је променио Вашу лозинку", + "You changed your password" : "Променили сте лозинку", + "Your password was reset by an administrator" : "Администратор је ресетовао Вашу лозинку", + "{actor} changed your email address" : "{actor} је изменио адресу Ваше е-поште", + "You changed your email address" : "Променили сте адресу е-поште", + "Your email address was changed by an administrator" : "Администратор је изменио адресу Ваше е-поште", + "You created app password \"{token}\"" : "Направили сте апликативну лозинку „{token}“", + "You deleted app password \"{token}\"" : "Обрисали сте апликативну лозинку „{token}“", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Преименовали сте апликативну лозинку „{token}“ у „{newToken}“", + "You granted filesystem access to app password \"{token}\"" : "Апликативном токену „{token}“ сте одобрили приступ систему фајлова", + "You revoked filesystem access from app password \"{token}\"" : "Апликативном токену „{token}“ сте укинули одобрење приступу систему фајлова", + "Security" : "Безбедност", + "You successfully logged in using two-factor authentication (%1$s)" : "Успешно сте се пријавили са двофакторском провером идентитета (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Пријава са двофакторском провером идентитета неуспела (%1$s)", + "Remote wipe was started on %1$s" : "Удаљено брисање је започето %1$s", + "Remote wipe has finished on %1$s" : "Удаљено брисање је завршено %1$s", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Ваша <strong>лозинка</strong> или <strong>адреса е-поште</strong> је измењена", + "Couldn't remove app." : "Не могу да уклоним апликацију.", + "Couldn't update app." : "Не могу да ажурирам апликацију.", + "Wrong password" : "Погрешна лозинка", + "Saved" : "Сачувано", + "No user supplied" : "Није наведен корисник", + "Unable to change password" : "Не могу да променим лозинку", + "Authentication error" : "Грешка при провери идентитета", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Наведите администраторску лозинку опоравка; у супротном, сви кориснички подаци биће изгубљени.", + "Wrong admin recovery password. Please check the password and try again." : "Погрешна администраторска лозинка опоравка. Проверите лозинку и покушајте поново.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Позадина не подржава измену лозинке, али кориснички кључеви за шифровање су успешно ажурирани.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Инсталирање и ажурирање апликација кроз продавницу или здруженом дељењу у облаку", + "Federated Cloud Sharing" : "Здружено дељење у облаку", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL користи застарелу верзију %1$s (%2$s). Ажурирајте оперативни систем или функционалности као што је %3$s неће радити поуздано.", + "Invalid SMTP password." : "Неисправна SMTP лозинка.", + "Email setting test" : "Тестирај поставке е-поште", + "Well done, %s!" : "Свака част, %s!", + "If you received this email, the email configuration seems to be correct." : "Ако добијате ову е-пошту, подешавања е-поште су вам исправна.", + "Email could not be sent. Check your mail server log" : "Не могу да пошаљем Е-пошта. Погледајте записнике сервера е-поште", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Појавио се проблем приликом слања е-поште. Проверите ваше поставке. (Грешка: %s)", + "You need to set your user email before being able to send test emails." : "Морате поставити адресу е-поште пре слања тестне поруке.", + "Invalid mail address" : "Неисправна е-адреса", + "Settings saved" : "Подешавања сачувана", + "Unable to change full name" : "Не могу да променим пуно име", + "Unable to change email address" : "Не могу да изменим адресу е-поште", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Да бисте верификовали Ваш Твитер налог, окачите следећи твит (пазите само да не преламате редове у твиту):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Да бисте верификовали веб сајт, поставите следећи садржај у корени директоријум веб сајта на '.well-known/CloudIdVerificationCode.txt' (пазите само да је цео текст у једној линији):", + "%1$s changed your password on %2$s." : "%1$s је изменио Вашу лозинку на %2$s.", + "Your password on %s was changed." : "Ваша лозинка на %s је измењена.", + "Your password on %s was reset by an administrator." : "Администратор на %s је ресетовао Вашу лозинку.", + "Password for %1$s changed on %2$s" : "Лозинка за %1$s промењена на %2$s", + "Password changed for %s" : "Лозинка на %s промењена.", + "If you did not request this, please contact an administrator." : "Ако нисте Ви ово захтевали, контактирајте администратора.", + "Your email address on %s was changed." : "Адреса Ваше е-поште на %s је измењена.", + "Your email address on %s was changed by an administrator." : "Администратор на %s је изменио адресу Ваше е-поште.", + "Email address for %1$s changed on %2$s" : "Адреса е-поште за %1$s промењена на %2$s", + "Email address changed for %s" : "Адреса е-поште на %s промењена", + "The new email address is %s" : "Адреса е-поште је сад %s", + "Your %s account was created" : "Ваш %s налог је направљен", + "Welcome aboard" : "Добродошли", + "Welcome aboard %s" : "Добродошли %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Добродошли у Ваш %s налог, сада можете додавати, штитити и делити Ваше податке.", + "Your username is: %s" : "Ваше корисничко име је: %s", + "Set your password" : "Поставите лозинку", + "Go to %s" : "Иди на %s", + "Install Client" : "Инсталирајте клијенте", + "Logged in user must be a subadmin" : "Пријављени корисник мора бити подадминистратор", + "Create" : "Направи", + "Change" : "Измени", + "Delete" : "Обриши", + "Share" : "Подели", + "Unlimited" : "Неограничено", + "Verifying" : "Проверавам", + "Verifying …" : "Проверавам …", + "Verify" : "Провери", + "Migration in progress. Please wait until the migration is finished" : "Пресељење је у току. Сачекајте док се не заврши", + "Migration started …" : "Пресељење покренуто...", + "Not saved" : "Несачувано", + "Sending…" : "Шаљем…", + "Email sent" : "Порука је послата", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Дошло је до грешке. Отпремите ASCII кодирани PEM сертификат.", + "Valid until {date}" : "Важи до {date}", + "Local" : "Локално", + "Private" : "Приватно", + "Only visible to local users" : "Видљиво само локалним корисницима", + "Only visible to you" : "Видљиво само Вама", + "Contacts" : "Контакти", + "Visible to local users and to trusted servers" : "Видљиво локалним корисницима и серверима од поверења", + "Public" : "Јавно", + "Will be synced to a global and public address book" : "Биће синхронизовано на глобални и јавни именик", + "Very weak password" : "Веома слаба лозинка", + "Weak password" : "Слаба лозинка", + "So-so password" : "Осредња лозинка", + "Good password" : "Добра лозинка", + "Strong password" : "Јака лозинка", + "An error occurred while changing your language. Please reload the page and try again." : "Грешка приликом промене језика. Освежите страну и покушајте поново.", + "An error occurred while changing your locale. Please reload the page and try again." : "Грешка приликом промене локалитета. Освежите страну и покушајте поново.", + "Select a profile picture" : "Изаберите слику профила", + "Week starts on {fdow}" : "Недеља почиње у {fdow}", + "Groups" : "Групе", + "Group list is empty" : "Списак група је празан", + "Unable to retrieve the group list" : "Није могуће дохватити списак група", + "Afrikaans (Namibia)" : "Африканс (Намибија)", + "Afrikaans (South Africa)" : "Африканс (Јужноафричка република)", + "Afrikaans" : "Африканс", + "Akan (Ghana)" : "Акански (Гана)", + "Akan" : "Акански", + "Albanian (Albania)" : "Албански (Албанија)", + "Albanian" : "Албански", + "Amharic (Ethiopia)" : "Амхарски (Етиопија)", + "Amharic" : "Амхарски", + "Arabic (Algeria)" : "Арапски (Алжир)", + "Arabic (Bahrain)" : "Арапски (Бахреин)", + "Arabic (Egypt)" : "Арапски (Египат)", + "Arabic (Iraq)" : "Арапски (Ирак)", + "Arabic (Jordan)" : "Арапски (Јордан)", + "Arabic (Kuwait)" : "Арапски (Кувајт)", + "Arabic (Lebanon)" : "Арапски (Либан)", + "Arabic (Libya)" : "Арапски (Либија)", + "Arabic (Morocco)" : "Арапски (Мароко)", + "Arabic (Oman)" : "Арапски (Оман)", + "Arabic (Qatar)" : "Арапски (Катар)", + "Arabic (Saudi Arabia)" : "Арапски (Саудијска Арабија)", + "Arabic (Sudan)" : "Арапски (Судан)", + "Arabic (Syria)" : "Арапски (Сирија)", + "Arabic (Tunisia)" : "Арапски (Тунис)", + "Arabic (United Arab Emirates)" : "Арапски (Уједињени Арапски Емирати)", + "Arabic (Yemen)" : "Арапски (Јемен)", + "Arabic" : "Арапски", + "Armenian (Armenia)" : "Јерменски (Јерменија)", + "Armenian" : "Јерменски", + "Assamese (India)" : "Асамски (Индија)", + "Assamese" : "Асамски", + "Asu (Tanzania)" : "Асу (Танзанија)", + "Asu" : "Асу", + "Azerbaijani (Cyrillic)" : "Азерски (ћирилица)", + "Azerbaijani (Cyrillic, Azerbaijan)" : "Азерски (ћирилица, Азербејџан)", + "Azerbaijani (Latin)" : "Азерски (латиница)", + "Azerbaijani (Latin, Azerbaijan)" : "Азерски (латиница, Азербејџан)", + "Azerbaijani" : "Азерски", + "Bambara (Mali)" : "Бамананкан (Мали)", + "Bambara" : "Бамананкан", + "Basque (Spain)" : "Баскијски (Шпанија)", + "Basque" : "Баскијски", + "Belarusian (Belarus)" : "Белоруски (Белорусија)", + "Belarusian" : "Белоруски", + "Bemba (Zambia)" : "Бемба (Замбија)", + "Bemba" : "Бемба", + "Bena (Tanzania)" : "Бена (Танзанија)", + "Bena" : "Бена", + "Bengali (Bangladesh)" : "Бенгалски (Бангладеш)", + "Bengali (India)" : "Бенгалски (Индија)", + "Bengali" : "Бенгалски", + "Bosnian (Bosnia and Herzegovina)" : "Бошњачки (Босна и Херцеговина)", + "Bosnian" : "Бошњачки", + "Bulgarian (Bulgaria)" : "Бугарски (Бугарска)", + "Bulgarian" : "Бугарски", + "Burmese (Myanmar [Burma])" : "Бурмански (Мјанмар [Бурма])", + "Burmese" : "Бурмански", + "Catalan (Spain)" : "Каталонски (Шпанија)", + "Catalan" : "Каталонски", + "Central Morocco Tamazight (Latin)" : "Централноатласки Тамазихт (латиница)", + "Central Morocco Tamazight (Latin, Morocco)" : "Централноатласки Тамазихт (латиница, Мароко)", + "Central Morocco Tamazight" : "Централноатласки Тамазихт", + "Cherokee (United States)" : "Чероки (Сједињене Америчке Државе)", + "Cherokee" : "Чероки", + "Chiga (Uganda)" : "Чига (Уганда)", + "Chiga" : "Чига", + "Chinese (Simplified Han)" : "Кинески (упрошћено писмо)", + "Chinese (Simplified Han, China)" : "Кинески (упрошћено писмо, Кина)", + "Chinese (Simplified Han, Hong Kong SAR China)" : "Кинески (упрошћено писмо, Хонг Конг спец. адм. област НР Кине)", + "Chinese (Simplified Han, Macau SAR China)" : "Кинески (упрошћено писмо, Макао спец. адм. област НР Кине)", + "Chinese (Simplified Han, Singapore)" : "Кинески (традиционално писмо, Сингапур)", + "Chinese (Traditional Han)" : "Кинески (традиционално писмо)", + "Chinese (Traditional Han, Hong Kong SAR China)" : "Кинески (традиционално писмо, Хонг Конг спец. адм. област НР Кине)", + "Chinese (Traditional Han, Macau SAR China)" : "Кинески (традиционално писмо, Макао спец. адм. област НР Кине)", + "Chinese (Traditional Han, Taiwan)" : "Кинески (традиционално писмо, Тајван)", + "Chinese" : "Кинески", + "Cornish (United Kingdom)" : "Корнишки (Уједињено Краљевство)", + "Cornish" : "Корнишки", + "Croatian (Croatia)" : "Хрватски (Хрватска)", + "Croatian" : "Хрватски", + "Czech (Czech Republic)" : "Чешки (Чешка)", + "Czech" : "Чешки", + "Danish (Denmark)" : "Дански (Данска)", + "Danish" : "Дански", + "Dutch (Belgium)" : "Холандски (Белгија)", + "Dutch (Netherlands)" : "Холандски (Холандија)", + "Dutch" : "Холандски", + "Embu (Kenya)" : "Киембу (Кенија)", + "Embu" : "Киембу", + "English (American Samoa)" : "Енглески (Америчка Самоа)", + "English (Australia)" : "Енглески (Аустралија)", + "English (Belgium)" : "Енглески (Белгија)", + "English (Belize)" : "Енглески (Белизе)", + "English (Botswana)" : "Енглески (Боцвана)", + "English (Canada)" : "Енглески (Канада)", + "English (Guam)" : "Енглески (Гвам)", + "English (Hong Kong SAR China)" : "Енглески (Хонг Конг спец. адм. област НР Кине)", + "English (India)" : "Енглески (Индија)", + "English (Ireland)" : "Енглески (Ирска)", + "English (Jamaica)" : "Енглески (Јамајка)", + "English (Malta)" : "Енглески (Малта)", + "English (Marshall Islands)" : "Енглески (Маршалска Острва)", + "English (Mauritius)" : "Енглески (Маурицијус)", + "English (Namibia)" : "Енглески (Намибија)", + "English (New Zealand)" : "Енглески (Нови Зеланд)", + "English (Northern Mariana Islands)" : "Енглески (Северна Маријанска Острва)", + "English (Pakistan)" : "Енглески (Пакистан)", + "English (Philippines)" : "Енглески (Филипини)", + "English (Singapore)" : "Енглески (Сингапур)", + "English (South Africa)" : "Енглески (Јужноафричка република)", + "English (Trinidad and Tobago)" : "Енглески (Тринидад и Тобаго)", + "English (U.S. Minor Outlying Islands)" : "Енглески (Мала спољна острва Сједињених Држава)", + "English (U.S. Virgin Islands)" : "Енглески (Америчка Девичанска Острва)", + "English (United Kingdom)" : "Енглески (Уједињено Краљевство) ", + "English (United States)" : "Енглески (Сједињене Америчке Државе)", + "English (Zimbabwe)" : "Енглески (Зимбабве)", + "English" : "Енглески", + "Esperanto" : "Есперанто", + "Estonian (Estonia)" : "Естонски (Естонија)", + "Estonian" : "Естонски", + "Ewe (Ghana)" : "Еве (Гана)", + "Ewe (Togo)" : "Еве (Того)", + "Ewe" : "Еве", + "Faroese (Faroe Islands)" : "Фарски (Фарска Острва)", + "Faroese" : "Фарски", + "Filipino (Philippines)" : "Филипински (Филипини)", + "Filipino" : "Филипински", + "Finnish (Finland)" : "Фински (Финска)", + "Finnish" : "Фински", + "French (Belgium)" : "Француски (Белгија)", + "French (Benin)" : "Француски (Бенин)", + "French (Burkina Faso)" : "Француски (Буркина Фасо)", + "French (Burundi)" : "Француски (Бурунди)", + "French (Cameroon)" : "Француски (Камерун)", + "French (Canada)" : "Француски (Канада)", + "French (Central African Republic)" : "Француски (Централноафричка Република)", + "French (Chad)" : "Француски (Чад)", + "French (Comoros)" : "Француски (Комори)", + "French (Congo - Brazzaville)" : "Француски (Конго Бразавил)", + "French (Congo - Kinshasa)" : "Француски (Конго Киншаса)", + "French (Côte d’Ivoire)" : "Француски (Обала Слоноваче)", + "French (Djibouti)" : "Француски (Џибути)", + "French (Equatorial Guinea)" : "Француски (Екваторијална Гвинеја)", + "French (France)" : "Француски (Француска)", + "French (Gabon)" : "Француски (Габон)", + "French (Guadeloupe)" : "Француски (Гвадалупе)", + "French (Guinea)" : "Француски (Гвинеја)", + "French (Luxembourg)" : "Француски (Луксембург)", + "French (Madagascar)" : "Француски (Мадагаскар)", + "French (Mali)" : "Француски (Мали)", + "French (Martinique)" : "Француски (Мартиник)", + "French (Monaco)" : "Француски (Монако)", + "French (Niger)" : "Француски (Нигер)", + "French (Rwanda)" : "Француски (Руанда)", + "French (Réunion)" : "Француски (Реинион)", + "French (Saint Barthélemy)" : "Француски (Сент Бартелеми)", + "French (Saint Martin)" : "Француски (Свети Мартин)", + "French (Senegal)" : "Француски (Сенегал)", + "French (Switzerland)" : "Француски (Швајцарска)", + "French (Togo)" : "Француски (Того)", + "French" : "Француски", + "Fulah (Senegal)" : "Фулски (Сенегал)", + "Fulah" : "Фулски", + "Galician (Spain)" : "Галицијски (Шпанија)", + "Galician" : "Галицијски", + "Ganda (Uganda)" : "Луганда (Уганда)", + "Ganda" : "Луганда", + "Georgian (Georgia)" : "Грузијски (Грузија)", + "Georgian" : "Грузијски", + "German (Austria)" : "Немачки (Аустрија)", + "German (Belgium)" : "Немачки (Белгија)", + "German (Germany)" : "Немачки (Немачка)", + "German (Liechtenstein)" : "Немачки (Лихтенштајн)", + "German (Luxembourg)" : "Немачки (Луксембург)", + "German (Switzerland)" : "Немачки (Швајцарска)", + "German" : "Немачки", + "Greek (Cyprus)" : "Грчки (Кипар)", + "Greek (Greece)" : "Грчки (Грчка)", + "Greek" : "Грчки", + "Gujarati (India)" : "Гуџарати (Индија)", + "Gujarati" : "Гуџарати", + "Gusii (Kenya)" : "Гуси (Кенија)", + "Gusii" : "Гуси", + "Hausa (Latin)" : "Хауса (латиница)", + "Hausa (Latin, Ghana)" : "Хауса (латиница, Гана)", + "Hausa (Latin, Niger)" : "Хауса (латиница, Нигер)", + "Hausa (Latin, Nigeria)" : "Хауса (латиница, Нигерија)", + "Hausa" : "Хауса", + "Hawaiian (United States)" : "Хавајски (Сједињене Америчке Државе)", + "Hawaiian" : "Хавајски", + "Hebrew (Israel)" : "Јеврејски (Израел)", + "Hebrew" : "Јеврејски", + "Hindi (India)" : "Хинду (Индија)", + "Hindi" : "Хинду", + "Hungarian (Hungary)" : "Мађарски (Мађарска)", + "Hungarian" : "Мађарски", + "Icelandic (Iceland)" : "Исландски (Исланд)", + "Icelandic" : "Исландски", + "Igbo (Nigeria)" : "Игбо (Нигерија)", + "Igbo" : "Игбо", + "Indonesian (Indonesia)" : "Индонежански (Индонезија)", + "Indonesian" : "Индонежански", + "Irish (Ireland)" : "Ирски (Ирска)", + "Irish" : "Ирски", + "Italian (Italy)" : "Италијански (Италија)", + "Italian (Switzerland)" : "Италијански (Швајцарска)", + "Italian" : "Италијански", + "Japanese (Japan)" : "Јапански (Јапан)", + "Japanese" : "Јапански", + "Kabuverdianu (Cape Verde)" : "Кабовердијански (Зеленортска Острва)", + "Kabuverdianu" : "Кабовердијански", + "Kabyle (Algeria)" : "Кабилски (Алжир)", + "Kabyle" : "Кабилски", + "Kalaallisut (Greenland)" : "Гренландски (Гренланд)", + "Kalaallisut" : "Гренландски", + "Kalenjin (Kenya)" : "Каленџин (Кенија)", + "Kalenjin" : "Каленџин", + "Kamba (Kenya)" : "Кикамба (Кенија)", + "Kamba" : "Кикамба", + "Kannada (India)" : "Канада (Индија)", + "Kannada" : "Канада", + "Kazakh (Cyrillic)" : "Казашки (ћирилица)", + "Kazakh (Cyrillic, Kazakhstan)" : "Казашки (ћирилица, Казахстан)", + "Kazakh" : "Казашки", + "Khmer (Cambodia)" : "Кмерски (Камбоџа)", + "Khmer" : "Кмерски", + "Kikuyu (Kenya)" : "Гикују (Кенија)", + "Kikuyu" : "Гикују", + "Kinyarwanda (Rwanda)" : "Кињаруанда (Руанда)", + "Kinyarwanda" : "Кињаруанда", + "Konkani (India)" : "Конкани (Индија)", + "Konkani" : "Конкани", + "Korean (South Korea)" : "Корејски (Јужна Кореја)", + "Korean" : "Корејски", + "Koyra Chiini (Mali)" : "Којра Чини (Мали)", + "Koyra Chiini" : "Којра Чини", + "Koyraboro Senni (Mali)" : "Којра Сени (Мали)", + "Koyraboro Senni" : "Којра Сени", + "Langi (Tanzania)" : "Ланги (Танзанија)", + "Langi" : "Ланги", + "Latvian (Latvia)" : "Летонски (Летонија)", + "Latvian" : "Летонски", + "Lithuanian (Lithuania)" : "Литвански (Литванија)", + "Lithuanian" : "Литвански", + "Luo (Kenya)" : "Луо (Кенија)", + "Luo" : "Луо", + "Luyia (Kenya)" : "Луја (Кенија)", + "Luyia" : "Луја", + "Macedonian (Macedonia)" : "Македонски (Македонија)", + "Macedonian" : "Македонски", + "Machame (Tanzania)" : "Мачаме (Танзанија)", + "Machame" : "Мачаме", + "Makonde (Tanzania)" : "Маконде (Танзанија)", + "Makonde" : "Маконде", + "Malagasy (Madagascar)" : "Малгашки (Мадагаскар)", + "Malagasy" : "Малгашки", + "Malay (Brunei)" : "Малајски (Брунеј)", + "Malay (Malaysia)" : "Малајски (Малезија)", + "Malay" : "Малајски", + "Malayalam (India)" : "Малајалам (Индија)", + "Malayalam" : "Малајалам", + "Maltese (Malta)" : "Малтешки (Малта)", + "Maltese" : "Малтешки", + "Manx (United Kingdom)" : "Манкс (Уједињено Краљевство)", + "Manx" : "Манкс", + "Marathi (India)" : "Марати (Индија)", + "Marathi" : "Марати", + "Masai (Kenya)" : "Масаји (Кенија)", + "Masai (Tanzania)" : "Масаји (Танзанија)", + "Masai" : "Масаји", + "Meru (Kenya)" : "Меру (Кенија)", + "Meru" : "Меру", + "Morisyen (Mauritius)" : "Маурицијски креолски (Маурицијус)", + "Morisyen" : "Маурицијски креолски", + "Nama (Namibia)" : "Нама (Намибија)", + "Nama" : "Нама", + "Nepali (India)" : "Непалски (Индија)", + "Nepali (Nepal)" : "Непалски (Непал)", + "Nepali" : "Непалски", + "North Ndebele (Zimbabwe)" : "Северни Ндебеле (Зимбабве)", + "North Ndebele" : "Северни Ндебеле", + "Norwegian Bokmål (Norway)" : "Норвешки књижевни (Норвешка)", + "Norwegian Bokmål" : "Норвешки књижевни ", + "Norwegian Nynorsk (Norway)" : "Новонорвешки (Норвешка)", + "Norwegian Nynorsk" : "Новонорвешки", + "Nyankole (Uganda)" : "Њанколе (Уганда)", + "Nyankole" : "Њанколе", + "Oriya (India)" : "Одија (Индија)", + "Oriya" : "Одија", + "Oromo (Ethiopia)" : "Оромо (Етиопија)", + "Oromo (Kenya)" : "Оромо (Кенија)", + "Oromo" : "Оромо", + "Pashto (Afghanistan)" : "Паштунски (Авганистан)", + "Pashto" : "Паштунски", + "Persian (Afghanistan)" : "Персијски (Авганистан)", + "Persian (Iran)" : "Персијски (Иран)", + "Persian" : "Персијски", + "Polish (Poland)" : "Пољски (Пољска)", + "Polish" : "Пољски", + "Portuguese (Brazil)" : "Португалски (Бразил)", + "Portuguese (Guinea-Bissau)" : "Португалски (Гвинеја Бисао)", + "Portuguese (Mozambique)" : "Португалски (Мозамбик)", + "Portuguese (Portugal)" : "Португалски (Португалија)", + "Portuguese" : "Португалски", + "Punjabi (Arabic)" : "Панџаби (арапско писмо)", + "Punjabi (Arabic, Pakistan)" : "Панџаби (арапско писмо, Пакистан)", + "Punjabi (Gurmukhi)" : "Панџаби (гурмуки писмо)", + "Punjabi (Gurmukhi, India)" : "Панџаби (гурмуки писмо, Индија)", + "Punjabi" : "Панџаби", + "Romanian (Moldova)" : "Румунски (Молдавија)", + "Romanian (Romania)" : "Румунски (Румунија)", + "Romanian" : "Румунски", + "Romansh (Switzerland)" : "Романш (Швајцарска)", + "Romansh" : "Романш", + "Rombo (Tanzania)" : "Ромбо (Танзанија)", + "Rombo" : "Ромбо", + "Russian (Moldova)" : "Руски (Молдавија)", + "Russian (Russia)" : "Руски (Русија)", + "Russian (Ukraine)" : "Руски (Украјина)", + "Russian" : "Руски", + "Rwa (Tanzania)" : "Рва (Танзанија)", + "Rwa" : "Рва", + "Samburu (Kenya)" : "Самбуру (Кенија)", + "Samburu" : "Самбуру", + "Sango (Central African Republic)" : "Санго (Централноафричка Република)", + "Sango" : "Санго", + "Sena (Mozambique)" : "Сена (Мозамбик)", + "Sena" : "Сена", + "Serbian (Cyrillic)" : "Српски (ћирилица)", + "Serbian (Cyrillic, Bosnia and Herzegovina)" : "Српски (ћирилица, Босна и Херцеговина)", + "Serbian (Cyrillic, Montenegro)" : "Српски (ћирилица, Црна Гора)", + "Serbian (Cyrillic, Serbia)" : "Српски (ћирилица, Србија)", + "Serbian (Latin)" : "Српски (латиница)", + "Serbian (Latin, Bosnia and Herzegovina)" : "Српски (латиница, Босна и Херцеговина)", + "Serbian (Latin, Montenegro)" : "Српски (латиница, Црна Гора)", + "Serbian (Latin, Serbia)" : "Српски (латиница, Србија)", + "Serbian" : "Српски", + "Shona (Zimbabwe)" : "Шона (Зимбабве)", + "Shona" : "Шона", + "Sichuan Yi (China)" : "Носу (Кина)", + "Sichuan Yi" : "Носу", + "Sinhala (Sri Lanka)" : "Синхалески (Шри Ланка)", + "Sinhala" : "Синхалески", + "Slovak (Slovakia)" : "Словачки (Словачка)", + "Slovak" : "Словачки", + "Slovenian (Slovenia)" : "Словеначки (Словенија)", + "Slovenian" : "Словеначки", + "Soga (Uganda)" : "Сога (Уганда)", + "Soga" : "Сога", + "Somali (Djibouti)" : "Сомалијски (Џибути)", + "Somali (Ethiopia)" : "Сомалијски (Етиопија)", + "Somali (Kenya)" : "Сомалијски (Кенија)", + "Somali (Somalia)" : "Сомалијски (Сомалија)", + "Somali" : "Сомалијски", + "Spanish (Argentina)" : "Шпански (Аргентина)", + "Spanish (Bolivia)" : "Шпански (Боливија)", + "Spanish (Chile)" : "Шпански (Чиле)", + "Spanish (Colombia)" : "Шпански (Колумбија)", + "Spanish (Costa Rica)" : "Шпански (Костарика)", + "Spanish (Dominican Republic)" : "Шпански (Доминиканска Република)", + "Spanish (Ecuador)" : "Шпански (Еквадор)", + "Spanish (El Salvador)" : "Шпански (Ел Салвадор)", + "Spanish (Equatorial Guinea)" : "Шпански (Екваторијална Гвинеја)", + "Spanish (Guatemala)" : "Шпански (Гватемала)", + "Spanish (Honduras)" : "Шпански (Хондурас)", + "Spanish (Latin America)" : "Шпански (Латинска Америка)", + "Spanish (Mexico)" : "Шпански (Мексико)", + "Spanish (Nicaragua)" : "Шпански (Никарагва)", + "Spanish (Panama)" : "Шпански (Панама)", + "Spanish (Paraguay)" : "Шпански (Парагвај)", + "Spanish (Peru)" : "Шпански (Перу)", + "Spanish (Puerto Rico)" : "Шпански (Порторико)", + "Spanish (Spain)" : "Шпански (Шпанија)", + "Spanish (United States)" : "Шпански (Сједињене Америчке Државе)", + "Spanish (Uruguay)" : "Шпански (Уругвај)", + "Spanish (Venezuela)" : "Шпански (Венецуела)", + "Spanish" : "Шпански", + "Swahili (Kenya)" : "Свахили (Кенија)", + "Swahili (Tanzania)" : "Свахили (Танзанија)", + "Swahili" : "Свахили", + "Swedish (Finland)" : "Шведски (Финска)", + "Swedish (Sweden)" : "Шведски (Шведска)", + "Swedish" : "Шведски", + "Swiss German (Switzerland)" : "Швајцарски немачки (Швајцарска)", + "Swiss German" : "Швајцарски немачки", + "Tachelhit (Latin)" : "Ташелит (латиница)", + "Tachelhit (Latin, Morocco)" : "Ташелит (латиница, Мароко)", + "Tachelhit (Tifinagh)" : "Ташелит (тифинар)", + "Tachelhit (Tifinagh, Morocco)" : "Ташелит (тифинар, Мароко)", + "Tachelhit" : "Ташелит", + "Taita (Kenya)" : "Дабида (Кенија)", + "Taita" : "Дабида", + "Tamil (India)" : "Тамилски (Индија)", + "Tamil (Sri Lanka)" : "Тамилски (Шри Ланка)", + "Tamil" : "Тамилски", + "Telugu (India)" : "Телугу (Индија)", + "Telugu" : "Телугу", + "Teso (Kenya)" : "Тесо (Кенија)", + "Teso (Uganda)" : "Тесо (Уганда)", + "Teso" : "Тесо", + "Thai (Thailand)" : "Тајландски (Тајланд)", + "Thai" : "Тајландски", + "Tibetan (China)" : "Тибетски (Кина)", + "Tibetan (India)" : "Тибетски (Индија)", + "Tibetan" : "Тибетски", + "Tigrinya (Eritrea)" : "Тиграња (Еритреја)", + "Tigrinya (Ethiopia)" : "Тиграња (Етиопија)", + "Tigrinya" : "Тиграња", + "Tonga (Tonga)" : "Тонга (Тонга)", + "Tonga" : "Тонга", + "Turkish (Turkey)" : "Турски (Турска)", + "Turkish" : "Турски", + "Ukrainian (Ukraine)" : "Украјински (Украјина)", + "Ukrainian" : "Украјински", + "Urdu (India)" : "Урду (Индија)", + "Urdu (Pakistan)" : "Урду (Пакистан)", + "Urdu" : "Урду", + "Uzbek (Arabic)" : "Узбекистански (арапско писмо)", + "Uzbek (Arabic, Afghanistan)" : "Узбекистански (арапско писмо, Авганистан)", + "Uzbek (Cyrillic)" : "Узбекистански (ћирилица)", + "Uzbek (Cyrillic, Uzbekistan)" : "Узбекистански (ћирилица, Узбекистан)", + "Uzbek (Latin)" : "Узбекистански (латиница)", + "Uzbek (Latin, Uzbekistan)" : "Узбекистански (латиница, Узбекистан)", + "Uzbek" : "Узбекистански", + "Vietnamese (Vietnam)" : "Вијетнамски (Вијетнам)", + "Vietnamese" : "Вијетнамски", + "Vunjo (Tanzania)" : "Вуњо (Танзанија)", + "Vunjo" : "Вуњо", + "Welsh (United Kingdom)" : "Велшки (Уједињено Краљевство)", + "Welsh" : "Велшки", + "Yoruba (Nigeria)" : "Јоруба (Нигерија)", + "Yoruba" : "Јоруба", + "Zulu (South Africa)" : "Зулу (Јужна Африка)", + "Zulu" : "Зулу", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Двофакторска провера идентитета се може захтевати свим\tкорисницима и и одређеним групама. Ако немају већ подешеног провајдера другог фактора, неће моћи да се пријаве на систем.", + "Enforce two-factor authentication" : "Захтевај двофакторску проверу идентитета", + "Limit to groups" : "Ограничи на групе", + "Enforcement of two-factor authentication can be set for certain groups only." : "Двофакторска провера идентитета се може захтевати за само поједине групе.", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "Двофакторска провера идентитета се захтева за све\tчланове следећих група.", + "Enforced groups" : "Групе којима се захтева", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "Двофакторска провера идентитета се не захтева за\tчланове следећих група.", + "Excluded groups" : "Искључене групе", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "Када се групе означе/искључе, користи се следећа логика да се закључи да ли се захтева 2FA: ако није одабрана ниједна група, 2FA је укључен свима осим члановима искључених група. Ако има одабраних група, 2FA је укључен само њиховим члановима. Ако је корисник у исто време у одабраној и у искљученој групи, одабрана група има предност и 2FA се захтева.", + "Save changes" : "Сними измене", + "Marked for remote wipe" : "Означено за удаљено брисање", + "Device settings" : "Подешавања уређаја", + "Allow filesystem access" : "Дозволи приступ фајловима", + "Rename" : "Преименуј", + "Revoke" : "Повуци", + "Wipe device" : "Очисти уређај", + "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Повлачење овог токена може онемогућити удаљено брисање овог уређаја, ако оно још није започето.", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome за Андроид", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Некстклауд iOS апликација", + "Nextcloud Android app" : "Некстклауд Андроид апликација", + "Nextcloud Talk for iOS" : "Nextcloud Talk за iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk за Андроид", + "Sync client - {os}" : "Клијент за синхронизовање - {os}", + "This session" : "Ова сесија", + "Device" : "Уређај", + "Last activity" : "Последња активност", + "Devices & sessions" : "Уређаји & сесије", + "Web, desktop and mobile clients currently logged in to your account." : "Веб, рачунарски и мобилни клијенти тренутно пријављени на Ваш налог.", + "Do you really want to wipe your data from this device?" : "Да ли стварно желите да обришете податке са овог уређаја?", + "Confirm wipe" : "Потврда брисања", + "Error while creating device token" : "Грешка при прављењу токена на уређају", + "Error while updating device token scope" : "Грешка при ажурирању домета токена уређаја", + "Error while updating device token name" : "Грешка при ажурирању имена токена уређаја", + "Error while deleting the token" : "Грешка при брисању токена", + "Error while wiping the device with the token" : "Грешка приликом удаљеног брисања уређаја са овим токеном", + "App name" : "Име апликације", + "Create new app password" : "Направите нову лозинку апликације", + "Use the credentials below to configure your app or device." : "Употребите акредитиве наведене испод да подесите Вашу апликацију или уређај.", + "For security reasons this password will only be shown once." : "Из безбедносних разлога, ова лозинка ће бити приказана само једном.", + "Username" : "Корисничко име", + "Password" : "Лозинка", + "Done" : "Завршено", + "Show QR code for mobile apps" : "Прикажи QR код за мобилне апликације", + "Copied!" : "Копирано!", + "Copy" : "Копирај", + "Could not copy app password. Please copy it manually." : "Не могу да копирам апликативну лозинку. Копирајте је ручно.", + "This app is supported via your current Nextcloud subscription." : "Ова апликација је подржана са Вашом тренутном Некстклауд претплатом.", + "Supported" : "Подржана", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Званичне апликације су развијене за и од стране заједнице. Нуде главне функционалности и спремне су за продукциону употребу.", + "Official" : "Званичне", + "by" : "од", + "Update to {version}" : "Ажурирај на верзију {version}", + "Remove" : "Уклони", + "Disable" : "Искључи", + "All" : "Све", + "Limit app usage to groups" : "Ограничи коришћење апликације на групе", + "No results" : "Нема резултата", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Ова апликација нема дефинисану минималну верзију Некстклауда на којој ради. Ово ће у будућности постати грешка.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Ова апликација нема дефинисану максималну верзију Некстклауда на којој ради. Ово ће у будућности постати грешка.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Апликација се не може инсталирати јер следеће зависности нису испуњене:", + "View in store" : "Погледај у продавници", + "Visit website" : "Посети веб сајт", + "Report a bug" : "Пријави проблем", + "User documentation" : "Корисничка документација", + "Admin documentation" : "Администраторска документација", + "Developer documentation" : "Програмерска документација", + "Update to {update}" : "Ажурирај на {update}", + "Results from other categories" : "Резултати из других категорија", + "No apps found for your version" : "Нема апликација за вашу верзију", + "Disable all" : "Искључи све", + "Enable all" : "Укључи све", + "Download and enable" : "Скини и укључи", + "Enable" : "Укључи", + "Enable untested app" : "Омогући нетестиране апликације", + "The app will be downloaded from the app store" : "Апликација ће бити скинута са продавнице", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Ова апликација није означена као компатибилна са Вашом верзијом Некстклауда. Ако наставите, моћи ћете свеједно да инсталирате апликацију. Врло је могуће да апликација неће радити како је планирано.", + "You do not have permissions to see the details of this user" : "Немате дозволе да видите детаље о овом кориснику", + "The backend does not support changing the display name" : "Позадински мотор не дозвољава промену имена за приказ", + "New password" : "Нова лозинка", + "Add user in group" : "Додај корисника у групу", + "Set user as admin for" : "Додај корисника као администратора за", + "Select user quota" : "Одаберите корисничку квоту", + "No language set" : "Ниједан језик није постављен", + "Never" : "Никад", + "Delete user" : "Обриши корисника", + "Wipe all devices" : "Обриши све уређаје", + "Disable user" : "Искључи корисника", + "Enable user" : "Укључи корисника", + "Resend welcome email" : "Поново пошаљи е-пошту добродошлице", + "{size} used" : "{size} искоршћенп", + "Welcome mail sent!" : "Е-пошта добродошлице послата!", + "Display name" : "Име за приказ", + "Email" : "Е-пошта", + "Group admin for" : "Администратор групе за", + "Quota" : "Квота", + "Language" : "Језик", + "Storage location" : "Локација складишта", + "User backend" : "Позадина за кориснике", + "Last login" : "Последња пријава", + "Will be autogenerated" : "Биће генерисано аутоматски", + "Default language" : "Подразумевани језик", + "Add a new user" : "Додај новог корисника", + "No users in here" : "Овде нема корисника", + "Default quota" : "Подразумевана квота", + "Password change is disabled because the master key is disabled" : "Промена лозинке је искључена пошто је главни кључ искључен", + "Common languages" : "Најкоришћенији језици", + "All languages" : "Сви језици", + "Your apps" : "Ваше апликације", + "Active apps" : "Активне апликације", + "Disabled apps" : "Искључене апликације", + "Updates" : "Ажурирања", + "App bundles" : "Пакети апликација", + "{license}-licensed" : "{license}-лиценцирано", + "New user" : "Нови корисник", + "Default quota:" : "Подразумевана квота:", + "Select default quota" : "Одаберите подразумевану квоту", + "Show Languages" : "Прикажи језике", + "Show last login" : "Прикажи последњу пријаву", + "Show user backend" : "Прикажи позадину за кориснике", + "Show storage path" : "Прикажи путању до складишта", + "You are about to remove the group {group}. The users will NOT be deleted." : "Управо ћете уклонити групу {group}. Корисници НЕЋЕ бити избрисани.", + "Please confirm the group removal " : "Потврдите уклањање групе", + "Remove group" : "Уклони групу", + "Admins" : "Администратори", + "Disabled users" : "Искључени корисници", + "Everyone" : "Сви", + "Add group" : "Додај групу", + "An error occured during the request. Unable to proceed." : "Догодила се грешка за време захтева. Не може се наставити.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Апликација је укључена, али треба да се ажурира. Бићете преусмерени на страну са ажурирањем за 5 секунди.", + "App update" : "Ажурирање апликације", + "Error: This app can not be enabled because it makes the server unstable" : "Грешка: ова апликација не може да се укључи јер је због ње цео сервер нестабилан", + "SSL Root Certificates" : "SSL корени сертификат", + "Common Name" : "Уобичајено име", + "Valid until" : "Важи до", + "Issued By" : "Издавач", + "Valid until %s" : "Важи до %s", + "Import root certificate" : "Увоз кореног сертификата", + "Administrator documentation" : "Администраторска документација", + "Documentation" : "Документација", + "Forum" : "Форум", + "None" : "Ништа", + "Login" : "Пријава", + "Plain" : "Обичан", + "NT LAN Manager" : "НТ ЛАН менаџер", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Сервер е-поште", + "Open documentation" : "Отвори документацију", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Важно је да подесите сервер да може да шаље е-пошту, када нпр. треба послати ресетовање лозинке или нека обавештења.", + "Send mode" : "Режим слања", + "Encryption" : "Шифровање", + "Sendmail mode" : "Sendmail режим", + "From address" : "Са адресе", + "mail" : "пошта", + "Authentication method" : "Начин провере идентитета", + "Authentication required" : "Неопходна провера идентитета", + "Server address" : "Адреса сервера", + "Port" : "Порт", + "Credentials" : "Акредитиви", + "SMTP Username" : "SMTP корисничко име", + "SMTP Password" : "SMTP лозинка", + "Test email settings" : "Тестирај поставке е-поште", + "Send email" : "Пошаљи е-пошту", + "Security & setup warnings" : "Безбедносна и упозорења поставе", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Због безбедности и перформанси Ваше инстанце сервера, важно је да је све подешено исправно. Да бисмо Вам помогли у томе, радићемо неке аутоматске провере. Погледајте увезану документацију за више информација.", + "All checks passed." : "Све провере успешно прошле.", + "There are some errors regarding your setup." : "Постоје неке грешке у вези са Вашом инсталацијом.", + "There are some warnings regarding your setup." : "Постоје нека упозорења у вези са Вашом инсталацијом.", + "Checking for system and security issues." : "Проверавам за системске и безбедноносне проблеме.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Добро погледајте <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">инсталациону документацију ↗</a> и проверите за било какве грешке или упозорења у <a href=\"%2$s\">записнику</a>.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Проверите безбедност Вашег Некстклауда на <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">нашем безбедоносном скенирању↗</a>.", + "Version" : "Верзија", + "Two-Factor Authentication" : "Двофакторска провера идентитета", + "Server-side encryption" : "Шифровање на страни сервера", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Шифровање на страни сервера омогућава да шифрујете фајлове који се стављају на овај сервер. Цена за ово се плаћа кроз лошије перформансе, тако да треба да омогућите ово само ако Вам је стварно потребно.", + "Enable server-side encryption" : "Укључи шифровање на страни сервера", + "Please read carefully before activating server-side encryption: " : "Молимо прочитајте пажљиво пре него што укључите ово шифровање:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Једном кад се шифровање укључи, сви фајлови окачени на сервер од тог тренутка ће бити шифровани на серверу. Једини начин да искључите шифровање касније је да активни шифрарски модул то подржава и сви остали услови су задовољени (нпр. постављање кључа за опоравак).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Шифровање само по себи не гарантује безбедност система. Погледајте документацију за више инфромација како шифровање функционише и подржане начине коришћења.", + "Be aware that encryption always increases the file size." : "Водите рачуна и да шифровање повећава величину фајлова.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Увек је паметно да правите редовне резервне копије података. У случају када су подаци шифровани, онда поред њих и резервне копије кључева за шифровања.", + "This is the final warning: Do you really want to enable encryption?" : "Ово је последње упозорење: Да ли стварно желите да укључите шифровање?", + "Enable encryption" : "Укључи шифровање", + "No encryption module loaded, please enable an encryption module in the app menu." : "Шифрарски модул није учитан. Укључите га у менију апликација", + "Select default encryption module:" : "Изаберите подразумевани шифрарски модул:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Морате да пребаците старе шифрарске кључеве (оунКлауд <= 8.0) на нове. Укључите „оунКлауд подразумевани шифрарски модул“ и покрените 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Морате да преселите шифрарске кључеве старог шифровања (оунКлауд <= 8.0) на нове.", + "Start migration" : "Покрени пресељење", + "Background jobs" : "Послови у позадини", + "Last job ran %s." : "Последњи посао покренут %s.", + "Last job execution ran %s. Something seems wrong." : "Последњи извршени посао је радио %s. Нешто изгледа није у реду.", + "Background job didn’t run yet!" : "Послови у позадини се још нису извршили!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "За оптималне перформансе, битно је да правилно подесите послове у позадини. За веће инстанце, 'крон' је препоручено подешавање. Погледајте документацију за више информација.", + "Pick background job setting" : "Одаберите поставке позадинског посла", + "Execute one task with each page loaded" : "Изврши један задатак са сваком учитаном страницом", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php је регистрован код вебкрон сервиса за позивање cron.php сваких 5 минута преко HTTP протокола.", + "Use system cron service to call the cron.php file every 5 minutes." : "Користите системски крон сервис за позивање cron.php фајла сваких 5 минута.", + "The cron.php needs to be executed by the system user \"%s\"." : "cron.php треба да се извршава као системски корисник „%s“.", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Да бисте ово покренули, потребна је PHP POSIX екстензија. Погледајте {linkstart}PHP документацију{linkend} за више детаља.", + "Sharing" : "Дељење", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Као администратор, можете фино подешавати понашања дељења. Погледајте документацију за више информација.", + "Allow apps to use the Share API" : "Дозвољава апликацијама да користе АПИ дељења", + "Allow users to share via link" : "Дозволи корисницима да деле путем везе", + "Allow public uploads" : "Дозволи јавна отпремања", + "Always ask for a password" : "Увек питај за лозинку", + "Enforce password protection" : "Захтевај заштиту лозинком", + "Set default expiration date" : "Постави подразумевано време истека", + "Expire after " : "Истиче након", + "days" : "дана", + "Enforce expiration date" : "Захтевај датум истека", + "Allow resharing" : "Дозволи дељење даље", + "Allow sharing with groups" : "Дозволи дељење са групама", + "Restrict users to only share with users in their groups" : "Ограничи кориснике да могу да деле само унутар групе", + "Exclude groups from sharing" : "Изузми групе из дељења", + "These groups will still be able to receive shares, but not to initiate them." : "Ове групе ће моћи да примају дељења, али не и да их праве.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Дозволи самодовршавање корисничких имена у дијалогу за дељење. Ако је ово искључено, корисник ће морати да унесе пуно корисничко име или адресу е-поште.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Прикажи текст о ограђивању на јавној страни за отпремање (приказан је само када је сакривена листа фајлова)", + "This text will be shown on the public link upload page when the file list is hidden." : "Овај текст ће бити приказан на јавној страни отпремања када је скривен листа фајлова.", + "Default share permissions" : "Подразумеване дозволе за дељење", + "Personal" : "Лично", + "Administration" : "Администрација", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Развијено од стране {communityopen}Некстклауд заједнице{linkclose}, {githubopen}изворни код{linkclose} је под {licenseopen}AGPL{linkclose} лиценцом.", + "Like our Facebook page" : "Лајкујте нашу Фејсбук страну", + "Follow us on Twitter" : "Пратите нас на Твитеру", + "Follow us on Mastodon" : "Запратите нас на Мастадонту", + "Check out our blog" : "Баците поглед на наш блог", + "Subscribe to our newsletter" : "Пријавите се на наше новине", + "Profile picture" : "Слика профила", + "Upload new" : "Отпреми нову", + "Select from Files" : "Изабери из фајлова", + "Remove image" : "Уклони слику", + "png or jpg, max. 20 MB" : "png или jpg, макс. 20 MB", + "Picture provided by original account" : "Слика оригиналног налога", + "Cancel" : "Одустани", + "Choose as profile picture" : "Одаберите слику профила", + "Details" : "Детаљи", + "You are a member of the following groups:" : "Члан сте следећих група:", + "You are using <strong>%s</strong>" : "Користите <strong>%s</strong>.", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Користите <strong>%1$s</strong> од <strong>%2$s</strong> (<strong>%3$s%%</strong>)", + "Full name" : "Пуно име", + "No display name set" : "Није постављено име за приказ", + "Your email address" : "Адреса Ваше е-поште", + "No email address set" : "Није постављена адреса е-поште", + "For password reset and notifications" : "За ресетовање лозинке и обавештења", + "Phone number" : "Број телефона", + "Your phone number" : "Ваш број телефона", + "Address" : "Адреса", + "Your postal address" : "Ваша адреса становања", + "Website" : "Веб сајт", + "It can take up to 24 hours before the account is displayed as verified." : "Може да прође и до 24h пре него што налог буде потврђен.", + "Link https://…" : "Веза https://…", + "Twitter" : "Твитер", + "Twitter handle @…" : "Твитер надимак @…", + "Help translate" : " Помозите у превођењу", + "Locale" : "Локалитет", + "Current password" : "Тренутна лозинка", + "Change password" : "Измени лозинку", + "Use a second factor besides your password to increase security for your account." : "Поред лозинке, користите и други фактор да повећате безбедност Вашег налога.", + "Disconnect" : "Раскачи се", + "Not supported!" : "Није подржано! ", + "Press ⌘-C to copy." : "Притисните ⌘-C за копирање.", + "Press Ctrl-C to copy." : "Притисни Ctrl-C за копирање.", + "Error while loading browser sessions and device tokens" : "Грешка при учитавању сесија веб читача и токена са уређаја", + "Store credentials" : "Сачувај акредитиве", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php је регистрован код вебкрон сервиса за позивање cron.php сваких 15 минута преко протокола HTTP.", + "Use system cron service to call the cron.php file every 15 minutes." : "Користите системски крон сервис за позивање cron.php фајла сваких 15 минута.", + "Follow us on Google+" : "Пратите нас на Google+-у" +}, +"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/settings/l10n/sr.json b/apps/settings/l10n/sr.json new file mode 100644 index 00000000000..7bbe7a062b9 --- /dev/null +++ b/apps/settings/l10n/sr.json @@ -0,0 +1,820 @@ +{ "translations": { + "{actor} added you to group {group}" : "{actor} Вас је додао у групу {group}", + "You added {user} to group {group}" : "Додали сте корисника {user} у групу {group}", + "{actor} added {user} to group {group}" : "{actor} је додао корисника {user} у групу {group}", + "An administrator added you to group {group}" : "Администратор Вас је додао у групу {group}", + "An administrator added {user} to group {group}" : "Администратор је додао корисника {user} у групу {group}", + "{actor} removed you from group {group}" : "{actor} Вас је уклонио из групе {group}", + "You removed {user} from group {group}" : "Уклонили сте корисника {user} из групе {group}", + "{actor} removed {user} from group {group}" : "{actor} је уклонио корисника {user} из групе {group}", + "An administrator removed you from group {group}" : "Администратор Вас је уклонио из групе {group}", + "An administrator removed {user} from group {group}" : "Администратор је уклонио корисника {user} из групе {group}", + "Your <strong>group memberships</strong> were modified" : "Ваше <strong>чланство у групи</strong> је измењено", + "{actor} changed your password" : "{actor} је променио Вашу лозинку", + "You changed your password" : "Променили сте лозинку", + "Your password was reset by an administrator" : "Администратор је ресетовао Вашу лозинку", + "{actor} changed your email address" : "{actor} је изменио адресу Ваше е-поште", + "You changed your email address" : "Променили сте адресу е-поште", + "Your email address was changed by an administrator" : "Администратор је изменио адресу Ваше е-поште", + "You created app password \"{token}\"" : "Направили сте апликативну лозинку „{token}“", + "You deleted app password \"{token}\"" : "Обрисали сте апликативну лозинку „{token}“", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Преименовали сте апликативну лозинку „{token}“ у „{newToken}“", + "You granted filesystem access to app password \"{token}\"" : "Апликативном токену „{token}“ сте одобрили приступ систему фајлова", + "You revoked filesystem access from app password \"{token}\"" : "Апликативном токену „{token}“ сте укинули одобрење приступу систему фајлова", + "Security" : "Безбедност", + "You successfully logged in using two-factor authentication (%1$s)" : "Успешно сте се пријавили са двофакторском провером идентитета (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Пријава са двофакторском провером идентитета неуспела (%1$s)", + "Remote wipe was started on %1$s" : "Удаљено брисање је започето %1$s", + "Remote wipe has finished on %1$s" : "Удаљено брисање је завршено %1$s", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Ваша <strong>лозинка</strong> или <strong>адреса е-поште</strong> је измењена", + "Couldn't remove app." : "Не могу да уклоним апликацију.", + "Couldn't update app." : "Не могу да ажурирам апликацију.", + "Wrong password" : "Погрешна лозинка", + "Saved" : "Сачувано", + "No user supplied" : "Није наведен корисник", + "Unable to change password" : "Не могу да променим лозинку", + "Authentication error" : "Грешка при провери идентитета", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Наведите администраторску лозинку опоравка; у супротном, сви кориснички подаци биће изгубљени.", + "Wrong admin recovery password. Please check the password and try again." : "Погрешна администраторска лозинка опоравка. Проверите лозинку и покушајте поново.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Позадина не подржава измену лозинке, али кориснички кључеви за шифровање су успешно ажурирани.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Инсталирање и ажурирање апликација кроз продавницу или здруженом дељењу у облаку", + "Federated Cloud Sharing" : "Здружено дељење у облаку", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL користи застарелу верзију %1$s (%2$s). Ажурирајте оперативни систем или функционалности као што је %3$s неће радити поуздано.", + "Invalid SMTP password." : "Неисправна SMTP лозинка.", + "Email setting test" : "Тестирај поставке е-поште", + "Well done, %s!" : "Свака част, %s!", + "If you received this email, the email configuration seems to be correct." : "Ако добијате ову е-пошту, подешавања е-поште су вам исправна.", + "Email could not be sent. Check your mail server log" : "Не могу да пошаљем Е-пошта. Погледајте записнике сервера е-поште", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Појавио се проблем приликом слања е-поште. Проверите ваше поставке. (Грешка: %s)", + "You need to set your user email before being able to send test emails." : "Морате поставити адресу е-поште пре слања тестне поруке.", + "Invalid mail address" : "Неисправна е-адреса", + "Settings saved" : "Подешавања сачувана", + "Unable to change full name" : "Не могу да променим пуно име", + "Unable to change email address" : "Не могу да изменим адресу е-поште", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Да бисте верификовали Ваш Твитер налог, окачите следећи твит (пазите само да не преламате редове у твиту):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Да бисте верификовали веб сајт, поставите следећи садржај у корени директоријум веб сајта на '.well-known/CloudIdVerificationCode.txt' (пазите само да је цео текст у једној линији):", + "%1$s changed your password on %2$s." : "%1$s је изменио Вашу лозинку на %2$s.", + "Your password on %s was changed." : "Ваша лозинка на %s је измењена.", + "Your password on %s was reset by an administrator." : "Администратор на %s је ресетовао Вашу лозинку.", + "Password for %1$s changed on %2$s" : "Лозинка за %1$s промењена на %2$s", + "Password changed for %s" : "Лозинка на %s промењена.", + "If you did not request this, please contact an administrator." : "Ако нисте Ви ово захтевали, контактирајте администратора.", + "Your email address on %s was changed." : "Адреса Ваше е-поште на %s је измењена.", + "Your email address on %s was changed by an administrator." : "Администратор на %s је изменио адресу Ваше е-поште.", + "Email address for %1$s changed on %2$s" : "Адреса е-поште за %1$s промењена на %2$s", + "Email address changed for %s" : "Адреса е-поште на %s промењена", + "The new email address is %s" : "Адреса е-поште је сад %s", + "Your %s account was created" : "Ваш %s налог је направљен", + "Welcome aboard" : "Добродошли", + "Welcome aboard %s" : "Добродошли %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Добродошли у Ваш %s налог, сада можете додавати, штитити и делити Ваше податке.", + "Your username is: %s" : "Ваше корисничко име је: %s", + "Set your password" : "Поставите лозинку", + "Go to %s" : "Иди на %s", + "Install Client" : "Инсталирајте клијенте", + "Logged in user must be a subadmin" : "Пријављени корисник мора бити подадминистратор", + "Create" : "Направи", + "Change" : "Измени", + "Delete" : "Обриши", + "Share" : "Подели", + "Unlimited" : "Неограничено", + "Verifying" : "Проверавам", + "Verifying …" : "Проверавам …", + "Verify" : "Провери", + "Migration in progress. Please wait until the migration is finished" : "Пресељење је у току. Сачекајте док се не заврши", + "Migration started …" : "Пресељење покренуто...", + "Not saved" : "Несачувано", + "Sending…" : "Шаљем…", + "Email sent" : "Порука је послата", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Дошло је до грешке. Отпремите ASCII кодирани PEM сертификат.", + "Valid until {date}" : "Важи до {date}", + "Local" : "Локално", + "Private" : "Приватно", + "Only visible to local users" : "Видљиво само локалним корисницима", + "Only visible to you" : "Видљиво само Вама", + "Contacts" : "Контакти", + "Visible to local users and to trusted servers" : "Видљиво локалним корисницима и серверима од поверења", + "Public" : "Јавно", + "Will be synced to a global and public address book" : "Биће синхронизовано на глобални и јавни именик", + "Very weak password" : "Веома слаба лозинка", + "Weak password" : "Слаба лозинка", + "So-so password" : "Осредња лозинка", + "Good password" : "Добра лозинка", + "Strong password" : "Јака лозинка", + "An error occurred while changing your language. Please reload the page and try again." : "Грешка приликом промене језика. Освежите страну и покушајте поново.", + "An error occurred while changing your locale. Please reload the page and try again." : "Грешка приликом промене локалитета. Освежите страну и покушајте поново.", + "Select a profile picture" : "Изаберите слику профила", + "Week starts on {fdow}" : "Недеља почиње у {fdow}", + "Groups" : "Групе", + "Group list is empty" : "Списак група је празан", + "Unable to retrieve the group list" : "Није могуће дохватити списак група", + "Afrikaans (Namibia)" : "Африканс (Намибија)", + "Afrikaans (South Africa)" : "Африканс (Јужноафричка република)", + "Afrikaans" : "Африканс", + "Akan (Ghana)" : "Акански (Гана)", + "Akan" : "Акански", + "Albanian (Albania)" : "Албански (Албанија)", + "Albanian" : "Албански", + "Amharic (Ethiopia)" : "Амхарски (Етиопија)", + "Amharic" : "Амхарски", + "Arabic (Algeria)" : "Арапски (Алжир)", + "Arabic (Bahrain)" : "Арапски (Бахреин)", + "Arabic (Egypt)" : "Арапски (Египат)", + "Arabic (Iraq)" : "Арапски (Ирак)", + "Arabic (Jordan)" : "Арапски (Јордан)", + "Arabic (Kuwait)" : "Арапски (Кувајт)", + "Arabic (Lebanon)" : "Арапски (Либан)", + "Arabic (Libya)" : "Арапски (Либија)", + "Arabic (Morocco)" : "Арапски (Мароко)", + "Arabic (Oman)" : "Арапски (Оман)", + "Arabic (Qatar)" : "Арапски (Катар)", + "Arabic (Saudi Arabia)" : "Арапски (Саудијска Арабија)", + "Arabic (Sudan)" : "Арапски (Судан)", + "Arabic (Syria)" : "Арапски (Сирија)", + "Arabic (Tunisia)" : "Арапски (Тунис)", + "Arabic (United Arab Emirates)" : "Арапски (Уједињени Арапски Емирати)", + "Arabic (Yemen)" : "Арапски (Јемен)", + "Arabic" : "Арапски", + "Armenian (Armenia)" : "Јерменски (Јерменија)", + "Armenian" : "Јерменски", + "Assamese (India)" : "Асамски (Индија)", + "Assamese" : "Асамски", + "Asu (Tanzania)" : "Асу (Танзанија)", + "Asu" : "Асу", + "Azerbaijani (Cyrillic)" : "Азерски (ћирилица)", + "Azerbaijani (Cyrillic, Azerbaijan)" : "Азерски (ћирилица, Азербејџан)", + "Azerbaijani (Latin)" : "Азерски (латиница)", + "Azerbaijani (Latin, Azerbaijan)" : "Азерски (латиница, Азербејџан)", + "Azerbaijani" : "Азерски", + "Bambara (Mali)" : "Бамананкан (Мали)", + "Bambara" : "Бамананкан", + "Basque (Spain)" : "Баскијски (Шпанија)", + "Basque" : "Баскијски", + "Belarusian (Belarus)" : "Белоруски (Белорусија)", + "Belarusian" : "Белоруски", + "Bemba (Zambia)" : "Бемба (Замбија)", + "Bemba" : "Бемба", + "Bena (Tanzania)" : "Бена (Танзанија)", + "Bena" : "Бена", + "Bengali (Bangladesh)" : "Бенгалски (Бангладеш)", + "Bengali (India)" : "Бенгалски (Индија)", + "Bengali" : "Бенгалски", + "Bosnian (Bosnia and Herzegovina)" : "Бошњачки (Босна и Херцеговина)", + "Bosnian" : "Бошњачки", + "Bulgarian (Bulgaria)" : "Бугарски (Бугарска)", + "Bulgarian" : "Бугарски", + "Burmese (Myanmar [Burma])" : "Бурмански (Мјанмар [Бурма])", + "Burmese" : "Бурмански", + "Catalan (Spain)" : "Каталонски (Шпанија)", + "Catalan" : "Каталонски", + "Central Morocco Tamazight (Latin)" : "Централноатласки Тамазихт (латиница)", + "Central Morocco Tamazight (Latin, Morocco)" : "Централноатласки Тамазихт (латиница, Мароко)", + "Central Morocco Tamazight" : "Централноатласки Тамазихт", + "Cherokee (United States)" : "Чероки (Сједињене Америчке Државе)", + "Cherokee" : "Чероки", + "Chiga (Uganda)" : "Чига (Уганда)", + "Chiga" : "Чига", + "Chinese (Simplified Han)" : "Кинески (упрошћено писмо)", + "Chinese (Simplified Han, China)" : "Кинески (упрошћено писмо, Кина)", + "Chinese (Simplified Han, Hong Kong SAR China)" : "Кинески (упрошћено писмо, Хонг Конг спец. адм. област НР Кине)", + "Chinese (Simplified Han, Macau SAR China)" : "Кинески (упрошћено писмо, Макао спец. адм. област НР Кине)", + "Chinese (Simplified Han, Singapore)" : "Кинески (традиционално писмо, Сингапур)", + "Chinese (Traditional Han)" : "Кинески (традиционално писмо)", + "Chinese (Traditional Han, Hong Kong SAR China)" : "Кинески (традиционално писмо, Хонг Конг спец. адм. област НР Кине)", + "Chinese (Traditional Han, Macau SAR China)" : "Кинески (традиционално писмо, Макао спец. адм. област НР Кине)", + "Chinese (Traditional Han, Taiwan)" : "Кинески (традиционално писмо, Тајван)", + "Chinese" : "Кинески", + "Cornish (United Kingdom)" : "Корнишки (Уједињено Краљевство)", + "Cornish" : "Корнишки", + "Croatian (Croatia)" : "Хрватски (Хрватска)", + "Croatian" : "Хрватски", + "Czech (Czech Republic)" : "Чешки (Чешка)", + "Czech" : "Чешки", + "Danish (Denmark)" : "Дански (Данска)", + "Danish" : "Дански", + "Dutch (Belgium)" : "Холандски (Белгија)", + "Dutch (Netherlands)" : "Холандски (Холандија)", + "Dutch" : "Холандски", + "Embu (Kenya)" : "Киембу (Кенија)", + "Embu" : "Киембу", + "English (American Samoa)" : "Енглески (Америчка Самоа)", + "English (Australia)" : "Енглески (Аустралија)", + "English (Belgium)" : "Енглески (Белгија)", + "English (Belize)" : "Енглески (Белизе)", + "English (Botswana)" : "Енглески (Боцвана)", + "English (Canada)" : "Енглески (Канада)", + "English (Guam)" : "Енглески (Гвам)", + "English (Hong Kong SAR China)" : "Енглески (Хонг Конг спец. адм. област НР Кине)", + "English (India)" : "Енглески (Индија)", + "English (Ireland)" : "Енглески (Ирска)", + "English (Jamaica)" : "Енглески (Јамајка)", + "English (Malta)" : "Енглески (Малта)", + "English (Marshall Islands)" : "Енглески (Маршалска Острва)", + "English (Mauritius)" : "Енглески (Маурицијус)", + "English (Namibia)" : "Енглески (Намибија)", + "English (New Zealand)" : "Енглески (Нови Зеланд)", + "English (Northern Mariana Islands)" : "Енглески (Северна Маријанска Острва)", + "English (Pakistan)" : "Енглески (Пакистан)", + "English (Philippines)" : "Енглески (Филипини)", + "English (Singapore)" : "Енглески (Сингапур)", + "English (South Africa)" : "Енглески (Јужноафричка република)", + "English (Trinidad and Tobago)" : "Енглески (Тринидад и Тобаго)", + "English (U.S. Minor Outlying Islands)" : "Енглески (Мала спољна острва Сједињених Држава)", + "English (U.S. Virgin Islands)" : "Енглески (Америчка Девичанска Острва)", + "English (United Kingdom)" : "Енглески (Уједињено Краљевство) ", + "English (United States)" : "Енглески (Сједињене Америчке Државе)", + "English (Zimbabwe)" : "Енглески (Зимбабве)", + "English" : "Енглески", + "Esperanto" : "Есперанто", + "Estonian (Estonia)" : "Естонски (Естонија)", + "Estonian" : "Естонски", + "Ewe (Ghana)" : "Еве (Гана)", + "Ewe (Togo)" : "Еве (Того)", + "Ewe" : "Еве", + "Faroese (Faroe Islands)" : "Фарски (Фарска Острва)", + "Faroese" : "Фарски", + "Filipino (Philippines)" : "Филипински (Филипини)", + "Filipino" : "Филипински", + "Finnish (Finland)" : "Фински (Финска)", + "Finnish" : "Фински", + "French (Belgium)" : "Француски (Белгија)", + "French (Benin)" : "Француски (Бенин)", + "French (Burkina Faso)" : "Француски (Буркина Фасо)", + "French (Burundi)" : "Француски (Бурунди)", + "French (Cameroon)" : "Француски (Камерун)", + "French (Canada)" : "Француски (Канада)", + "French (Central African Republic)" : "Француски (Централноафричка Република)", + "French (Chad)" : "Француски (Чад)", + "French (Comoros)" : "Француски (Комори)", + "French (Congo - Brazzaville)" : "Француски (Конго Бразавил)", + "French (Congo - Kinshasa)" : "Француски (Конго Киншаса)", + "French (Côte d’Ivoire)" : "Француски (Обала Слоноваче)", + "French (Djibouti)" : "Француски (Џибути)", + "French (Equatorial Guinea)" : "Француски (Екваторијална Гвинеја)", + "French (France)" : "Француски (Француска)", + "French (Gabon)" : "Француски (Габон)", + "French (Guadeloupe)" : "Француски (Гвадалупе)", + "French (Guinea)" : "Француски (Гвинеја)", + "French (Luxembourg)" : "Француски (Луксембург)", + "French (Madagascar)" : "Француски (Мадагаскар)", + "French (Mali)" : "Француски (Мали)", + "French (Martinique)" : "Француски (Мартиник)", + "French (Monaco)" : "Француски (Монако)", + "French (Niger)" : "Француски (Нигер)", + "French (Rwanda)" : "Француски (Руанда)", + "French (Réunion)" : "Француски (Реинион)", + "French (Saint Barthélemy)" : "Француски (Сент Бартелеми)", + "French (Saint Martin)" : "Француски (Свети Мартин)", + "French (Senegal)" : "Француски (Сенегал)", + "French (Switzerland)" : "Француски (Швајцарска)", + "French (Togo)" : "Француски (Того)", + "French" : "Француски", + "Fulah (Senegal)" : "Фулски (Сенегал)", + "Fulah" : "Фулски", + "Galician (Spain)" : "Галицијски (Шпанија)", + "Galician" : "Галицијски", + "Ganda (Uganda)" : "Луганда (Уганда)", + "Ganda" : "Луганда", + "Georgian (Georgia)" : "Грузијски (Грузија)", + "Georgian" : "Грузијски", + "German (Austria)" : "Немачки (Аустрија)", + "German (Belgium)" : "Немачки (Белгија)", + "German (Germany)" : "Немачки (Немачка)", + "German (Liechtenstein)" : "Немачки (Лихтенштајн)", + "German (Luxembourg)" : "Немачки (Луксембург)", + "German (Switzerland)" : "Немачки (Швајцарска)", + "German" : "Немачки", + "Greek (Cyprus)" : "Грчки (Кипар)", + "Greek (Greece)" : "Грчки (Грчка)", + "Greek" : "Грчки", + "Gujarati (India)" : "Гуџарати (Индија)", + "Gujarati" : "Гуџарати", + "Gusii (Kenya)" : "Гуси (Кенија)", + "Gusii" : "Гуси", + "Hausa (Latin)" : "Хауса (латиница)", + "Hausa (Latin, Ghana)" : "Хауса (латиница, Гана)", + "Hausa (Latin, Niger)" : "Хауса (латиница, Нигер)", + "Hausa (Latin, Nigeria)" : "Хауса (латиница, Нигерија)", + "Hausa" : "Хауса", + "Hawaiian (United States)" : "Хавајски (Сједињене Америчке Државе)", + "Hawaiian" : "Хавајски", + "Hebrew (Israel)" : "Јеврејски (Израел)", + "Hebrew" : "Јеврејски", + "Hindi (India)" : "Хинду (Индија)", + "Hindi" : "Хинду", + "Hungarian (Hungary)" : "Мађарски (Мађарска)", + "Hungarian" : "Мађарски", + "Icelandic (Iceland)" : "Исландски (Исланд)", + "Icelandic" : "Исландски", + "Igbo (Nigeria)" : "Игбо (Нигерија)", + "Igbo" : "Игбо", + "Indonesian (Indonesia)" : "Индонежански (Индонезија)", + "Indonesian" : "Индонежански", + "Irish (Ireland)" : "Ирски (Ирска)", + "Irish" : "Ирски", + "Italian (Italy)" : "Италијански (Италија)", + "Italian (Switzerland)" : "Италијански (Швајцарска)", + "Italian" : "Италијански", + "Japanese (Japan)" : "Јапански (Јапан)", + "Japanese" : "Јапански", + "Kabuverdianu (Cape Verde)" : "Кабовердијански (Зеленортска Острва)", + "Kabuverdianu" : "Кабовердијански", + "Kabyle (Algeria)" : "Кабилски (Алжир)", + "Kabyle" : "Кабилски", + "Kalaallisut (Greenland)" : "Гренландски (Гренланд)", + "Kalaallisut" : "Гренландски", + "Kalenjin (Kenya)" : "Каленџин (Кенија)", + "Kalenjin" : "Каленџин", + "Kamba (Kenya)" : "Кикамба (Кенија)", + "Kamba" : "Кикамба", + "Kannada (India)" : "Канада (Индија)", + "Kannada" : "Канада", + "Kazakh (Cyrillic)" : "Казашки (ћирилица)", + "Kazakh (Cyrillic, Kazakhstan)" : "Казашки (ћирилица, Казахстан)", + "Kazakh" : "Казашки", + "Khmer (Cambodia)" : "Кмерски (Камбоџа)", + "Khmer" : "Кмерски", + "Kikuyu (Kenya)" : "Гикују (Кенија)", + "Kikuyu" : "Гикују", + "Kinyarwanda (Rwanda)" : "Кињаруанда (Руанда)", + "Kinyarwanda" : "Кињаруанда", + "Konkani (India)" : "Конкани (Индија)", + "Konkani" : "Конкани", + "Korean (South Korea)" : "Корејски (Јужна Кореја)", + "Korean" : "Корејски", + "Koyra Chiini (Mali)" : "Којра Чини (Мали)", + "Koyra Chiini" : "Којра Чини", + "Koyraboro Senni (Mali)" : "Којра Сени (Мали)", + "Koyraboro Senni" : "Којра Сени", + "Langi (Tanzania)" : "Ланги (Танзанија)", + "Langi" : "Ланги", + "Latvian (Latvia)" : "Летонски (Летонија)", + "Latvian" : "Летонски", + "Lithuanian (Lithuania)" : "Литвански (Литванија)", + "Lithuanian" : "Литвански", + "Luo (Kenya)" : "Луо (Кенија)", + "Luo" : "Луо", + "Luyia (Kenya)" : "Луја (Кенија)", + "Luyia" : "Луја", + "Macedonian (Macedonia)" : "Македонски (Македонија)", + "Macedonian" : "Македонски", + "Machame (Tanzania)" : "Мачаме (Танзанија)", + "Machame" : "Мачаме", + "Makonde (Tanzania)" : "Маконде (Танзанија)", + "Makonde" : "Маконде", + "Malagasy (Madagascar)" : "Малгашки (Мадагаскар)", + "Malagasy" : "Малгашки", + "Malay (Brunei)" : "Малајски (Брунеј)", + "Malay (Malaysia)" : "Малајски (Малезија)", + "Malay" : "Малајски", + "Malayalam (India)" : "Малајалам (Индија)", + "Malayalam" : "Малајалам", + "Maltese (Malta)" : "Малтешки (Малта)", + "Maltese" : "Малтешки", + "Manx (United Kingdom)" : "Манкс (Уједињено Краљевство)", + "Manx" : "Манкс", + "Marathi (India)" : "Марати (Индија)", + "Marathi" : "Марати", + "Masai (Kenya)" : "Масаји (Кенија)", + "Masai (Tanzania)" : "Масаји (Танзанија)", + "Masai" : "Масаји", + "Meru (Kenya)" : "Меру (Кенија)", + "Meru" : "Меру", + "Morisyen (Mauritius)" : "Маурицијски креолски (Маурицијус)", + "Morisyen" : "Маурицијски креолски", + "Nama (Namibia)" : "Нама (Намибија)", + "Nama" : "Нама", + "Nepali (India)" : "Непалски (Индија)", + "Nepali (Nepal)" : "Непалски (Непал)", + "Nepali" : "Непалски", + "North Ndebele (Zimbabwe)" : "Северни Ндебеле (Зимбабве)", + "North Ndebele" : "Северни Ндебеле", + "Norwegian Bokmål (Norway)" : "Норвешки књижевни (Норвешка)", + "Norwegian Bokmål" : "Норвешки књижевни ", + "Norwegian Nynorsk (Norway)" : "Новонорвешки (Норвешка)", + "Norwegian Nynorsk" : "Новонорвешки", + "Nyankole (Uganda)" : "Њанколе (Уганда)", + "Nyankole" : "Њанколе", + "Oriya (India)" : "Одија (Индија)", + "Oriya" : "Одија", + "Oromo (Ethiopia)" : "Оромо (Етиопија)", + "Oromo (Kenya)" : "Оромо (Кенија)", + "Oromo" : "Оромо", + "Pashto (Afghanistan)" : "Паштунски (Авганистан)", + "Pashto" : "Паштунски", + "Persian (Afghanistan)" : "Персијски (Авганистан)", + "Persian (Iran)" : "Персијски (Иран)", + "Persian" : "Персијски", + "Polish (Poland)" : "Пољски (Пољска)", + "Polish" : "Пољски", + "Portuguese (Brazil)" : "Португалски (Бразил)", + "Portuguese (Guinea-Bissau)" : "Португалски (Гвинеја Бисао)", + "Portuguese (Mozambique)" : "Португалски (Мозамбик)", + "Portuguese (Portugal)" : "Португалски (Португалија)", + "Portuguese" : "Португалски", + "Punjabi (Arabic)" : "Панџаби (арапско писмо)", + "Punjabi (Arabic, Pakistan)" : "Панџаби (арапско писмо, Пакистан)", + "Punjabi (Gurmukhi)" : "Панџаби (гурмуки писмо)", + "Punjabi (Gurmukhi, India)" : "Панџаби (гурмуки писмо, Индија)", + "Punjabi" : "Панџаби", + "Romanian (Moldova)" : "Румунски (Молдавија)", + "Romanian (Romania)" : "Румунски (Румунија)", + "Romanian" : "Румунски", + "Romansh (Switzerland)" : "Романш (Швајцарска)", + "Romansh" : "Романш", + "Rombo (Tanzania)" : "Ромбо (Танзанија)", + "Rombo" : "Ромбо", + "Russian (Moldova)" : "Руски (Молдавија)", + "Russian (Russia)" : "Руски (Русија)", + "Russian (Ukraine)" : "Руски (Украјина)", + "Russian" : "Руски", + "Rwa (Tanzania)" : "Рва (Танзанија)", + "Rwa" : "Рва", + "Samburu (Kenya)" : "Самбуру (Кенија)", + "Samburu" : "Самбуру", + "Sango (Central African Republic)" : "Санго (Централноафричка Република)", + "Sango" : "Санго", + "Sena (Mozambique)" : "Сена (Мозамбик)", + "Sena" : "Сена", + "Serbian (Cyrillic)" : "Српски (ћирилица)", + "Serbian (Cyrillic, Bosnia and Herzegovina)" : "Српски (ћирилица, Босна и Херцеговина)", + "Serbian (Cyrillic, Montenegro)" : "Српски (ћирилица, Црна Гора)", + "Serbian (Cyrillic, Serbia)" : "Српски (ћирилица, Србија)", + "Serbian (Latin)" : "Српски (латиница)", + "Serbian (Latin, Bosnia and Herzegovina)" : "Српски (латиница, Босна и Херцеговина)", + "Serbian (Latin, Montenegro)" : "Српски (латиница, Црна Гора)", + "Serbian (Latin, Serbia)" : "Српски (латиница, Србија)", + "Serbian" : "Српски", + "Shona (Zimbabwe)" : "Шона (Зимбабве)", + "Shona" : "Шона", + "Sichuan Yi (China)" : "Носу (Кина)", + "Sichuan Yi" : "Носу", + "Sinhala (Sri Lanka)" : "Синхалески (Шри Ланка)", + "Sinhala" : "Синхалески", + "Slovak (Slovakia)" : "Словачки (Словачка)", + "Slovak" : "Словачки", + "Slovenian (Slovenia)" : "Словеначки (Словенија)", + "Slovenian" : "Словеначки", + "Soga (Uganda)" : "Сога (Уганда)", + "Soga" : "Сога", + "Somali (Djibouti)" : "Сомалијски (Џибути)", + "Somali (Ethiopia)" : "Сомалијски (Етиопија)", + "Somali (Kenya)" : "Сомалијски (Кенија)", + "Somali (Somalia)" : "Сомалијски (Сомалија)", + "Somali" : "Сомалијски", + "Spanish (Argentina)" : "Шпански (Аргентина)", + "Spanish (Bolivia)" : "Шпански (Боливија)", + "Spanish (Chile)" : "Шпански (Чиле)", + "Spanish (Colombia)" : "Шпански (Колумбија)", + "Spanish (Costa Rica)" : "Шпански (Костарика)", + "Spanish (Dominican Republic)" : "Шпански (Доминиканска Република)", + "Spanish (Ecuador)" : "Шпански (Еквадор)", + "Spanish (El Salvador)" : "Шпански (Ел Салвадор)", + "Spanish (Equatorial Guinea)" : "Шпански (Екваторијална Гвинеја)", + "Spanish (Guatemala)" : "Шпански (Гватемала)", + "Spanish (Honduras)" : "Шпански (Хондурас)", + "Spanish (Latin America)" : "Шпански (Латинска Америка)", + "Spanish (Mexico)" : "Шпански (Мексико)", + "Spanish (Nicaragua)" : "Шпански (Никарагва)", + "Spanish (Panama)" : "Шпански (Панама)", + "Spanish (Paraguay)" : "Шпански (Парагвај)", + "Spanish (Peru)" : "Шпански (Перу)", + "Spanish (Puerto Rico)" : "Шпански (Порторико)", + "Spanish (Spain)" : "Шпански (Шпанија)", + "Spanish (United States)" : "Шпански (Сједињене Америчке Државе)", + "Spanish (Uruguay)" : "Шпански (Уругвај)", + "Spanish (Venezuela)" : "Шпански (Венецуела)", + "Spanish" : "Шпански", + "Swahili (Kenya)" : "Свахили (Кенија)", + "Swahili (Tanzania)" : "Свахили (Танзанија)", + "Swahili" : "Свахили", + "Swedish (Finland)" : "Шведски (Финска)", + "Swedish (Sweden)" : "Шведски (Шведска)", + "Swedish" : "Шведски", + "Swiss German (Switzerland)" : "Швајцарски немачки (Швајцарска)", + "Swiss German" : "Швајцарски немачки", + "Tachelhit (Latin)" : "Ташелит (латиница)", + "Tachelhit (Latin, Morocco)" : "Ташелит (латиница, Мароко)", + "Tachelhit (Tifinagh)" : "Ташелит (тифинар)", + "Tachelhit (Tifinagh, Morocco)" : "Ташелит (тифинар, Мароко)", + "Tachelhit" : "Ташелит", + "Taita (Kenya)" : "Дабида (Кенија)", + "Taita" : "Дабида", + "Tamil (India)" : "Тамилски (Индија)", + "Tamil (Sri Lanka)" : "Тамилски (Шри Ланка)", + "Tamil" : "Тамилски", + "Telugu (India)" : "Телугу (Индија)", + "Telugu" : "Телугу", + "Teso (Kenya)" : "Тесо (Кенија)", + "Teso (Uganda)" : "Тесо (Уганда)", + "Teso" : "Тесо", + "Thai (Thailand)" : "Тајландски (Тајланд)", + "Thai" : "Тајландски", + "Tibetan (China)" : "Тибетски (Кина)", + "Tibetan (India)" : "Тибетски (Индија)", + "Tibetan" : "Тибетски", + "Tigrinya (Eritrea)" : "Тиграња (Еритреја)", + "Tigrinya (Ethiopia)" : "Тиграња (Етиопија)", + "Tigrinya" : "Тиграња", + "Tonga (Tonga)" : "Тонга (Тонга)", + "Tonga" : "Тонга", + "Turkish (Turkey)" : "Турски (Турска)", + "Turkish" : "Турски", + "Ukrainian (Ukraine)" : "Украјински (Украјина)", + "Ukrainian" : "Украјински", + "Urdu (India)" : "Урду (Индија)", + "Urdu (Pakistan)" : "Урду (Пакистан)", + "Urdu" : "Урду", + "Uzbek (Arabic)" : "Узбекистански (арапско писмо)", + "Uzbek (Arabic, Afghanistan)" : "Узбекистански (арапско писмо, Авганистан)", + "Uzbek (Cyrillic)" : "Узбекистански (ћирилица)", + "Uzbek (Cyrillic, Uzbekistan)" : "Узбекистански (ћирилица, Узбекистан)", + "Uzbek (Latin)" : "Узбекистански (латиница)", + "Uzbek (Latin, Uzbekistan)" : "Узбекистански (латиница, Узбекистан)", + "Uzbek" : "Узбекистански", + "Vietnamese (Vietnam)" : "Вијетнамски (Вијетнам)", + "Vietnamese" : "Вијетнамски", + "Vunjo (Tanzania)" : "Вуњо (Танзанија)", + "Vunjo" : "Вуњо", + "Welsh (United Kingdom)" : "Велшки (Уједињено Краљевство)", + "Welsh" : "Велшки", + "Yoruba (Nigeria)" : "Јоруба (Нигерија)", + "Yoruba" : "Јоруба", + "Zulu (South Africa)" : "Зулу (Јужна Африка)", + "Zulu" : "Зулу", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Двофакторска провера идентитета се може захтевати свим\tкорисницима и и одређеним групама. Ако немају већ подешеног провајдера другог фактора, неће моћи да се пријаве на систем.", + "Enforce two-factor authentication" : "Захтевај двофакторску проверу идентитета", + "Limit to groups" : "Ограничи на групе", + "Enforcement of two-factor authentication can be set for certain groups only." : "Двофакторска провера идентитета се може захтевати за само поједине групе.", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "Двофакторска провера идентитета се захтева за све\tчланове следећих група.", + "Enforced groups" : "Групе којима се захтева", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "Двофакторска провера идентитета се не захтева за\tчланове следећих група.", + "Excluded groups" : "Искључене групе", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "Када се групе означе/искључе, користи се следећа логика да се закључи да ли се захтева 2FA: ако није одабрана ниједна група, 2FA је укључен свима осим члановима искључених група. Ако има одабраних група, 2FA је укључен само њиховим члановима. Ако је корисник у исто време у одабраној и у искљученој групи, одабрана група има предност и 2FA се захтева.", + "Save changes" : "Сними измене", + "Marked for remote wipe" : "Означено за удаљено брисање", + "Device settings" : "Подешавања уређаја", + "Allow filesystem access" : "Дозволи приступ фајловима", + "Rename" : "Преименуј", + "Revoke" : "Повуци", + "Wipe device" : "Очисти уређај", + "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Повлачење овог токена може онемогућити удаљено брисање овог уређаја, ако оно још није започето.", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome за Андроид", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Некстклауд iOS апликација", + "Nextcloud Android app" : "Некстклауд Андроид апликација", + "Nextcloud Talk for iOS" : "Nextcloud Talk за iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk за Андроид", + "Sync client - {os}" : "Клијент за синхронизовање - {os}", + "This session" : "Ова сесија", + "Device" : "Уређај", + "Last activity" : "Последња активност", + "Devices & sessions" : "Уређаји & сесије", + "Web, desktop and mobile clients currently logged in to your account." : "Веб, рачунарски и мобилни клијенти тренутно пријављени на Ваш налог.", + "Do you really want to wipe your data from this device?" : "Да ли стварно желите да обришете податке са овог уређаја?", + "Confirm wipe" : "Потврда брисања", + "Error while creating device token" : "Грешка при прављењу токена на уређају", + "Error while updating device token scope" : "Грешка при ажурирању домета токена уређаја", + "Error while updating device token name" : "Грешка при ажурирању имена токена уређаја", + "Error while deleting the token" : "Грешка при брисању токена", + "Error while wiping the device with the token" : "Грешка приликом удаљеног брисања уређаја са овим токеном", + "App name" : "Име апликације", + "Create new app password" : "Направите нову лозинку апликације", + "Use the credentials below to configure your app or device." : "Употребите акредитиве наведене испод да подесите Вашу апликацију или уређај.", + "For security reasons this password will only be shown once." : "Из безбедносних разлога, ова лозинка ће бити приказана само једном.", + "Username" : "Корисничко име", + "Password" : "Лозинка", + "Done" : "Завршено", + "Show QR code for mobile apps" : "Прикажи QR код за мобилне апликације", + "Copied!" : "Копирано!", + "Copy" : "Копирај", + "Could not copy app password. Please copy it manually." : "Не могу да копирам апликативну лозинку. Копирајте је ручно.", + "This app is supported via your current Nextcloud subscription." : "Ова апликација је подржана са Вашом тренутном Некстклауд претплатом.", + "Supported" : "Подржана", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Званичне апликације су развијене за и од стране заједнице. Нуде главне функционалности и спремне су за продукциону употребу.", + "Official" : "Званичне", + "by" : "од", + "Update to {version}" : "Ажурирај на верзију {version}", + "Remove" : "Уклони", + "Disable" : "Искључи", + "All" : "Све", + "Limit app usage to groups" : "Ограничи коришћење апликације на групе", + "No results" : "Нема резултата", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Ова апликација нема дефинисану минималну верзију Некстклауда на којој ради. Ово ће у будућности постати грешка.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Ова апликација нема дефинисану максималну верзију Некстклауда на којој ради. Ово ће у будућности постати грешка.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Апликација се не може инсталирати јер следеће зависности нису испуњене:", + "View in store" : "Погледај у продавници", + "Visit website" : "Посети веб сајт", + "Report a bug" : "Пријави проблем", + "User documentation" : "Корисничка документација", + "Admin documentation" : "Администраторска документација", + "Developer documentation" : "Програмерска документација", + "Update to {update}" : "Ажурирај на {update}", + "Results from other categories" : "Резултати из других категорија", + "No apps found for your version" : "Нема апликација за вашу верзију", + "Disable all" : "Искључи све", + "Enable all" : "Укључи све", + "Download and enable" : "Скини и укључи", + "Enable" : "Укључи", + "Enable untested app" : "Омогући нетестиране апликације", + "The app will be downloaded from the app store" : "Апликација ће бити скинута са продавнице", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Ова апликација није означена као компатибилна са Вашом верзијом Некстклауда. Ако наставите, моћи ћете свеједно да инсталирате апликацију. Врло је могуће да апликација неће радити како је планирано.", + "You do not have permissions to see the details of this user" : "Немате дозволе да видите детаље о овом кориснику", + "The backend does not support changing the display name" : "Позадински мотор не дозвољава промену имена за приказ", + "New password" : "Нова лозинка", + "Add user in group" : "Додај корисника у групу", + "Set user as admin for" : "Додај корисника као администратора за", + "Select user quota" : "Одаберите корисничку квоту", + "No language set" : "Ниједан језик није постављен", + "Never" : "Никад", + "Delete user" : "Обриши корисника", + "Wipe all devices" : "Обриши све уређаје", + "Disable user" : "Искључи корисника", + "Enable user" : "Укључи корисника", + "Resend welcome email" : "Поново пошаљи е-пошту добродошлице", + "{size} used" : "{size} искоршћенп", + "Welcome mail sent!" : "Е-пошта добродошлице послата!", + "Display name" : "Име за приказ", + "Email" : "Е-пошта", + "Group admin for" : "Администратор групе за", + "Quota" : "Квота", + "Language" : "Језик", + "Storage location" : "Локација складишта", + "User backend" : "Позадина за кориснике", + "Last login" : "Последња пријава", + "Will be autogenerated" : "Биће генерисано аутоматски", + "Default language" : "Подразумевани језик", + "Add a new user" : "Додај новог корисника", + "No users in here" : "Овде нема корисника", + "Default quota" : "Подразумевана квота", + "Password change is disabled because the master key is disabled" : "Промена лозинке је искључена пошто је главни кључ искључен", + "Common languages" : "Најкоришћенији језици", + "All languages" : "Сви језици", + "Your apps" : "Ваше апликације", + "Active apps" : "Активне апликације", + "Disabled apps" : "Искључене апликације", + "Updates" : "Ажурирања", + "App bundles" : "Пакети апликација", + "{license}-licensed" : "{license}-лиценцирано", + "New user" : "Нови корисник", + "Default quota:" : "Подразумевана квота:", + "Select default quota" : "Одаберите подразумевану квоту", + "Show Languages" : "Прикажи језике", + "Show last login" : "Прикажи последњу пријаву", + "Show user backend" : "Прикажи позадину за кориснике", + "Show storage path" : "Прикажи путању до складишта", + "You are about to remove the group {group}. The users will NOT be deleted." : "Управо ћете уклонити групу {group}. Корисници НЕЋЕ бити избрисани.", + "Please confirm the group removal " : "Потврдите уклањање групе", + "Remove group" : "Уклони групу", + "Admins" : "Администратори", + "Disabled users" : "Искључени корисници", + "Everyone" : "Сви", + "Add group" : "Додај групу", + "An error occured during the request. Unable to proceed." : "Догодила се грешка за време захтева. Не може се наставити.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Апликација је укључена, али треба да се ажурира. Бићете преусмерени на страну са ажурирањем за 5 секунди.", + "App update" : "Ажурирање апликације", + "Error: This app can not be enabled because it makes the server unstable" : "Грешка: ова апликација не може да се укључи јер је због ње цео сервер нестабилан", + "SSL Root Certificates" : "SSL корени сертификат", + "Common Name" : "Уобичајено име", + "Valid until" : "Важи до", + "Issued By" : "Издавач", + "Valid until %s" : "Важи до %s", + "Import root certificate" : "Увоз кореног сертификата", + "Administrator documentation" : "Администраторска документација", + "Documentation" : "Документација", + "Forum" : "Форум", + "None" : "Ништа", + "Login" : "Пријава", + "Plain" : "Обичан", + "NT LAN Manager" : "НТ ЛАН менаџер", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Сервер е-поште", + "Open documentation" : "Отвори документацију", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Важно је да подесите сервер да може да шаље е-пошту, када нпр. треба послати ресетовање лозинке или нека обавештења.", + "Send mode" : "Режим слања", + "Encryption" : "Шифровање", + "Sendmail mode" : "Sendmail режим", + "From address" : "Са адресе", + "mail" : "пошта", + "Authentication method" : "Начин провере идентитета", + "Authentication required" : "Неопходна провера идентитета", + "Server address" : "Адреса сервера", + "Port" : "Порт", + "Credentials" : "Акредитиви", + "SMTP Username" : "SMTP корисничко име", + "SMTP Password" : "SMTP лозинка", + "Test email settings" : "Тестирај поставке е-поште", + "Send email" : "Пошаљи е-пошту", + "Security & setup warnings" : "Безбедносна и упозорења поставе", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Због безбедности и перформанси Ваше инстанце сервера, важно је да је све подешено исправно. Да бисмо Вам помогли у томе, радићемо неке аутоматске провере. Погледајте увезану документацију за више информација.", + "All checks passed." : "Све провере успешно прошле.", + "There are some errors regarding your setup." : "Постоје неке грешке у вези са Вашом инсталацијом.", + "There are some warnings regarding your setup." : "Постоје нека упозорења у вези са Вашом инсталацијом.", + "Checking for system and security issues." : "Проверавам за системске и безбедноносне проблеме.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Добро погледајте <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">инсталациону документацију ↗</a> и проверите за било какве грешке или упозорења у <a href=\"%2$s\">записнику</a>.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Проверите безбедност Вашег Некстклауда на <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">нашем безбедоносном скенирању↗</a>.", + "Version" : "Верзија", + "Two-Factor Authentication" : "Двофакторска провера идентитета", + "Server-side encryption" : "Шифровање на страни сервера", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Шифровање на страни сервера омогућава да шифрујете фајлове који се стављају на овај сервер. Цена за ово се плаћа кроз лошије перформансе, тако да треба да омогућите ово само ако Вам је стварно потребно.", + "Enable server-side encryption" : "Укључи шифровање на страни сервера", + "Please read carefully before activating server-side encryption: " : "Молимо прочитајте пажљиво пре него што укључите ово шифровање:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Једном кад се шифровање укључи, сви фајлови окачени на сервер од тог тренутка ће бити шифровани на серверу. Једини начин да искључите шифровање касније је да активни шифрарски модул то подржава и сви остали услови су задовољени (нпр. постављање кључа за опоравак).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Шифровање само по себи не гарантује безбедност система. Погледајте документацију за више инфромација како шифровање функционише и подржане начине коришћења.", + "Be aware that encryption always increases the file size." : "Водите рачуна и да шифровање повећава величину фајлова.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Увек је паметно да правите редовне резервне копије података. У случају када су подаци шифровани, онда поред њих и резервне копије кључева за шифровања.", + "This is the final warning: Do you really want to enable encryption?" : "Ово је последње упозорење: Да ли стварно желите да укључите шифровање?", + "Enable encryption" : "Укључи шифровање", + "No encryption module loaded, please enable an encryption module in the app menu." : "Шифрарски модул није учитан. Укључите га у менију апликација", + "Select default encryption module:" : "Изаберите подразумевани шифрарски модул:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Морате да пребаците старе шифрарске кључеве (оунКлауд <= 8.0) на нове. Укључите „оунКлауд подразумевани шифрарски модул“ и покрените 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Морате да преселите шифрарске кључеве старог шифровања (оунКлауд <= 8.0) на нове.", + "Start migration" : "Покрени пресељење", + "Background jobs" : "Послови у позадини", + "Last job ran %s." : "Последњи посао покренут %s.", + "Last job execution ran %s. Something seems wrong." : "Последњи извршени посао је радио %s. Нешто изгледа није у реду.", + "Background job didn’t run yet!" : "Послови у позадини се још нису извршили!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "За оптималне перформансе, битно је да правилно подесите послове у позадини. За веће инстанце, 'крон' је препоручено подешавање. Погледајте документацију за више информација.", + "Pick background job setting" : "Одаберите поставке позадинског посла", + "Execute one task with each page loaded" : "Изврши један задатак са сваком учитаном страницом", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php је регистрован код вебкрон сервиса за позивање cron.php сваких 5 минута преко HTTP протокола.", + "Use system cron service to call the cron.php file every 5 minutes." : "Користите системски крон сервис за позивање cron.php фајла сваких 5 минута.", + "The cron.php needs to be executed by the system user \"%s\"." : "cron.php треба да се извршава као системски корисник „%s“.", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Да бисте ово покренули, потребна је PHP POSIX екстензија. Погледајте {linkstart}PHP документацију{linkend} за више детаља.", + "Sharing" : "Дељење", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Као администратор, можете фино подешавати понашања дељења. Погледајте документацију за више информација.", + "Allow apps to use the Share API" : "Дозвољава апликацијама да користе АПИ дељења", + "Allow users to share via link" : "Дозволи корисницима да деле путем везе", + "Allow public uploads" : "Дозволи јавна отпремања", + "Always ask for a password" : "Увек питај за лозинку", + "Enforce password protection" : "Захтевај заштиту лозинком", + "Set default expiration date" : "Постави подразумевано време истека", + "Expire after " : "Истиче након", + "days" : "дана", + "Enforce expiration date" : "Захтевај датум истека", + "Allow resharing" : "Дозволи дељење даље", + "Allow sharing with groups" : "Дозволи дељење са групама", + "Restrict users to only share with users in their groups" : "Ограничи кориснике да могу да деле само унутар групе", + "Exclude groups from sharing" : "Изузми групе из дељења", + "These groups will still be able to receive shares, but not to initiate them." : "Ове групе ће моћи да примају дељења, али не и да их праве.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Дозволи самодовршавање корисничких имена у дијалогу за дељење. Ако је ово искључено, корисник ће морати да унесе пуно корисничко име или адресу е-поште.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Прикажи текст о ограђивању на јавној страни за отпремање (приказан је само када је сакривена листа фајлова)", + "This text will be shown on the public link upload page when the file list is hidden." : "Овај текст ће бити приказан на јавној страни отпремања када је скривен листа фајлова.", + "Default share permissions" : "Подразумеване дозволе за дељење", + "Personal" : "Лично", + "Administration" : "Администрација", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Развијено од стране {communityopen}Некстклауд заједнице{linkclose}, {githubopen}изворни код{linkclose} је под {licenseopen}AGPL{linkclose} лиценцом.", + "Like our Facebook page" : "Лајкујте нашу Фејсбук страну", + "Follow us on Twitter" : "Пратите нас на Твитеру", + "Follow us on Mastodon" : "Запратите нас на Мастадонту", + "Check out our blog" : "Баците поглед на наш блог", + "Subscribe to our newsletter" : "Пријавите се на наше новине", + "Profile picture" : "Слика профила", + "Upload new" : "Отпреми нову", + "Select from Files" : "Изабери из фајлова", + "Remove image" : "Уклони слику", + "png or jpg, max. 20 MB" : "png или jpg, макс. 20 MB", + "Picture provided by original account" : "Слика оригиналног налога", + "Cancel" : "Одустани", + "Choose as profile picture" : "Одаберите слику профила", + "Details" : "Детаљи", + "You are a member of the following groups:" : "Члан сте следећих група:", + "You are using <strong>%s</strong>" : "Користите <strong>%s</strong>.", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Користите <strong>%1$s</strong> од <strong>%2$s</strong> (<strong>%3$s%%</strong>)", + "Full name" : "Пуно име", + "No display name set" : "Није постављено име за приказ", + "Your email address" : "Адреса Ваше е-поште", + "No email address set" : "Није постављена адреса е-поште", + "For password reset and notifications" : "За ресетовање лозинке и обавештења", + "Phone number" : "Број телефона", + "Your phone number" : "Ваш број телефона", + "Address" : "Адреса", + "Your postal address" : "Ваша адреса становања", + "Website" : "Веб сајт", + "It can take up to 24 hours before the account is displayed as verified." : "Може да прође и до 24h пре него што налог буде потврђен.", + "Link https://…" : "Веза https://…", + "Twitter" : "Твитер", + "Twitter handle @…" : "Твитер надимак @…", + "Help translate" : " Помозите у превођењу", + "Locale" : "Локалитет", + "Current password" : "Тренутна лозинка", + "Change password" : "Измени лозинку", + "Use a second factor besides your password to increase security for your account." : "Поред лозинке, користите и други фактор да повећате безбедност Вашег налога.", + "Disconnect" : "Раскачи се", + "Not supported!" : "Није подржано! ", + "Press ⌘-C to copy." : "Притисните ⌘-C за копирање.", + "Press Ctrl-C to copy." : "Притисни Ctrl-C за копирање.", + "Error while loading browser sessions and device tokens" : "Грешка при учитавању сесија веб читача и токена са уређаја", + "Store credentials" : "Сачувај акредитиве", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php је регистрован код вебкрон сервиса за позивање cron.php сваких 15 минута преко протокола HTTP.", + "Use system cron service to call the cron.php file every 15 minutes." : "Користите системски крон сервис за позивање cron.php фајла сваких 15 минута.", + "Follow us on Google+" : "Пратите нас на Google+-у" +},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" +} \ No newline at end of file diff --git a/apps/settings/l10n/sv.js b/apps/settings/l10n/sv.js new file mode 100644 index 00000000000..433199d8d2e --- /dev/null +++ b/apps/settings/l10n/sv.js @@ -0,0 +1,823 @@ +OC.L10N.register( + "settings", + { + "{actor} added you to group {group}" : "{actor} adderade dig till gruppen {group}", + "You added {user} to group {group}" : "Du adderade {user} till gruppen {group}", + "{actor} added {user} to group {group}" : "{actor} adderade {user} till gruppen {group}", + "An administrator added you to group {group}" : "En administratör adderade dig till gruppen {group}", + "An administrator added {user} to group {group}" : "En administratör adderade {user} till gruppen {group}", + "{actor} removed you from group {group}" : "{actor} tog bort dig från gruppen {group}", + "You removed {user} from group {group}" : "Du tog bort {user} från gruppen {group}", + "{actor} removed {user} from group {group}" : "{actor} tog bort {user} från gruppen {group}", + "An administrator removed you from group {group}" : "En administratör tog bort dig från gruppen {group}", + "An administrator removed {user} from group {group}" : "En administratör tog bort {user} från gruppen {group}", + "Your <strong>group memberships</strong> were modified" : "Dina <strong>gruppmedlemskaper</strong> har ändrats", + "{actor} changed your password" : "{actor} ändrade ditt lösenord", + "You changed your password" : "Du ändrade ditt lösenord", + "Your password was reset by an administrator" : "Ditt lösenord återställdes av en administratör", + "{actor} changed your email address" : "{actor} ändrade din e-postadress", + "You changed your email address" : "Du ändrade din e-postadress", + "Your email address was changed by an administrator" : "Din e-postadress ändrades av en administratör", + "You created app password \"{token}\"" : "Du skapade app-lösenord \"{token}\"", + "You deleted app password \"{token}\"" : "Du raderade app-lösenord \"{token}\"", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Du ändrade namn på app-lösenord \"{token}\" till \"{newToken}\"", + "You granted filesystem access to app password \"{token}\"" : "Du tilldelade filsystem-åtkomst till app-lösenord \"{token}\"", + "You revoked filesystem access from app password \"{token}\"" : "Du återkallade filsystem-åtkomst från app-lösenord \"{token}\"", + "Security" : "Säkerhet", + "You successfully logged in using two-factor authentication (%1$s)" : "Du loggade in med tvåfaktorautentisering (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Ett inloggningsförsök med tvåfaktorautentisering misslyckades (%1$s)", + "Remote wipe was started on %1$s" : "Fjärrensning startades på %1$s", + "Remote wipe has finished on %1$s" : "Fjärrensning slutfördes på %1$s", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Ditt <strong>lösenord</strong> eller <strong>e-postadress</strong> har ändrats", + "Couldn't remove app." : "Kunde inte ta bort applikationen.", + "Couldn't update app." : "Kunde inte uppdatera appen.", + "Wrong password" : "Fel lösenord", + "Saved" : "Sparad", + "No user supplied" : "Ingen användare angiven", + "Unable to change password" : "Kunde inte ändra lösenord", + "Authentication error" : "Fel vid autentisering", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Vänligen ange ett återställningslösenord; annars kommer all din data att försvinna.", + "Wrong admin recovery password. Please check the password and try again." : "Felaktigt återställningslösenord för administratör. Kolla lösenordet och prova igen.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Backend stödjer inte att lösenord ändras men användarens krypteringsnyckel uppdaterades.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "installering och uppdatering av applikationer eller Federerad Moln-delning.", + "Federated Cloud Sharing" : "Federerad Moln-delning", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL använder en föråldrad %1$s version (%2$s). Uppdatera ditt operativsystem annars kommer inte funktioner som %3$s fungera pålitligt.", + "Invalid SMTP password." : "Ogiltigt SMTP-lösenord.", + "Email setting test" : "E-postinställningar test", + "Well done, %s!" : "Bra gjort, %s!", + "If you received this email, the email configuration seems to be correct." : "Om du får detta e-postmeddelande så har du ställt in e-postinställningarna rätt.", + "Email could not be sent. Check your mail server log" : "E-post kunde inte skickas. Titta i din e-postserverlogg", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Ett problem uppstod när e-post försökte skickas. Var god kontrollera dina inställningar. (Fel: %s)", + "You need to set your user email before being able to send test emails." : "Du behöver ställa in din användares e-postadress före du kan skicka test e-post.", + "Invalid mail address" : "Ogiltig e-postadress", + "Settings saved" : "Inställningar sparade", + "Unable to change full name" : "Kunde inte ändra namn", + "Unable to change email address" : "Kunde inte ändra e-postadress", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "För att verifiera dit Twitter-konto, posta följande tweet på Twitter (Var säker att det postas utan radbrytningar):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "För att verifiera din webbplats, lagra följande innehåll i din webbrot på '.well-known/CloudIdVerificationCode.txt' (Vänligen säkerställ att hela texten ryms på en rad):", + "%1$s changed your password on %2$s." : "%1$s ändrade ditt lösenord på %2$s", + "Your password on %s was changed." : "Ditt lösenord på %s har ändrats.", + "Your password on %s was reset by an administrator." : "Ditt lösenord på %s har blivit återställt av en administratör.", + "Password for %1$s changed on %2$s" : "Lösenord för %1$s ändrades %2$s", + "Password changed for %s" : "Lösenord ändrat för %s", + "If you did not request this, please contact an administrator." : "Om du inte har begärt detta, vänligen kontakta en administratör.", + "Your email address on %s was changed." : "Din e-postadress på %s har ändrats.", + "Your email address on %s was changed by an administrator." : "Din e-postadress på %s har ändrats av en administratör.", + "Email address for %1$s changed on %2$s" : "E-postadressen för %1$s ändrades %2$s", + "Email address changed for %s" : "E-postadress ändrad för %s", + "The new email address is %s" : "Nya e-postadressen är %s", + "Your %s account was created" : "Ditt %s konto skapades", + "Welcome aboard" : "Välkommen ombord", + "Welcome aboard %s" : "Välkommen ombord %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Välkommen till ditt %s konto, du kan lägga till, skydda och dela din data.", + "Your username is: %s" : "Ditt användarnamn är: %s", + "Set your password" : "Ställ in ditt lösenord", + "Go to %s" : "Gå till %s", + "Install Client" : "Installera Klient", + "Logged in user must be a subadmin" : "Inloggad användare måste vara en del-administratör", + "Create" : "Skapa", + "Change" : "Ändra", + "Delete" : "Radera", + "Share" : "Dela", + "Unlimited" : "Obegränsat", + "Verifying" : "Verifiera", + "Verifying …" : "Verifierar ...", + "Verify" : "Verifiera", + "Migration in progress. Please wait until the migration is finished" : "Migrering pågår. Var god vänta tills migreringen är färdigställd.", + "Migration started …" : "Migrering påbörjad ...", + "Not saved" : "Inte sparad", + "Sending…" : "Skickar...", + "Email sent" : "E-post skickad", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Ett fel uppstod. Var god ladda upp ett ASCII-kodad PEM-certifikat.", + "Valid until {date}" : "Giltig t.o.m. {date}", + "Local" : "Lokal", + "Private" : "Privat", + "Only visible to local users" : "Endast synlig för lokala användare", + "Only visible to you" : "Endast synlig för dig", + "Contacts" : "Kontakter", + "Visible to local users and to trusted servers" : "Synlig för lokala användare och tillförlitliga servrar", + "Public" : "Offentlig", + "Will be synced to a global and public address book" : "Kommer att synkroniseras till global och offentlig adressbok", + "Very weak password" : "Väldigt svagt lösenord", + "Weak password" : "Svagt lösenord", + "So-so password" : "Okej lösenord", + "Good password" : "Bra lösenord", + "Strong password" : "Starkt lösenord", + "An error occurred while changing your language. Please reload the page and try again." : "Ett fel inträffade när ditt språk ändrades. Ladda om sidan och försök igen.", + "An error occurred while changing your locale. Please reload the page and try again." : "Ett fel inträffade när din plats ändrades. Ladda om sidan och försök igen.", + "Select a profile picture" : "Välj en profilbild", + "Week starts on {fdow}" : "Veckan börjar på {fdow}", + "Groups" : "Grupper", + "Group list is empty" : "Grupplistan är tom", + "Unable to retrieve the group list" : "Kan inte hämta grupplistan", + "Afrikaans (Namibia)" : "Afrikaans (Namibia)", + "Afrikaans (South Africa)" : "Afrikaans (Sydafrika)", + "Afrikaans" : "Afrikaans", + "Akan (Ghana)" : "Akan (Ghana)", + "Akan" : "Akan", + "Albanian (Albania)" : "Albanian (Albania)", + "Albanian" : "Albanian", + "Amharic (Ethiopia)" : "Amharic (Ethiopia)", + "Amharic" : "Amharic", + "Arabic (Algeria)" : "Arabic (Algeria)", + "Arabic (Bahrain)" : "Arabic (Bahrain)", + "Arabic (Egypt)" : "Arabic (Egypten)", + "Arabic (Iraq)" : "Arabic (Irak)", + "Arabic (Jordan)" : "Arabic (Jordanien)", + "Arabic (Kuwait)" : "Arabic (Kuwait)", + "Arabic (Lebanon)" : "Arabic (Libanon)", + "Arabic (Libya)" : "Arabic (Libyen)", + "Arabic (Morocco)" : "Arabic (Marocko)", + "Arabic (Oman)" : "Arabic (Oman)", + "Arabic (Qatar)" : "Arabic (Qatar)", + "Arabic (Saudi Arabia)" : "Arabic (Saudiarabien)", + "Arabic (Sudan)" : "Arabic (Sudan)", + "Arabic (Syria)" : "Arabic (Syrien)", + "Arabic (Tunisia)" : "Arabic (Tunisien)", + "Arabic (United Arab Emirates)" : "Arabic (Förenade arabemiraten)", + "Arabic (Yemen)" : "Arabic (Jemen)", + "Arabic" : "Arabic", + "Armenian (Armenia)" : "Armenian (Armenien)", + "Armenian" : "Armenian", + "Assamese (India)" : "Assamese (Indien)", + "Assamese" : "Assamese", + "Asu (Tanzania)" : "Asu (Tanzania)", + "Asu" : "Asu", + "Azerbaijani (Cyrillic)" : "Azerbaijani (Cyrillic)", + "Azerbaijani (Cyrillic, Azerbaijan)" : "Azerbaijani (Cyrillic, Azerbaijan)", + "Azerbaijani (Latin)" : "Azerbaijani (Latin)", + "Azerbaijani (Latin, Azerbaijan)" : "Azerbaijani (Latin, Azerbaijan)", + "Azerbaijani" : "Azerbaijani", + "Bambara (Mali)" : "Bambara (Mali)", + "Bambara" : "Bambara", + "Basque (Spain)" : "Basque (Spain)", + "Basque" : "Basque", + "Belarusian (Belarus)" : "Belarusian (Belarus)", + "Belarusian" : "Belarusian", + "Bemba (Zambia)" : "Bemba (Zambia)", + "Bemba" : "Bemba", + "Bena (Tanzania)" : "Bena (Tanzania)", + "Bena" : "Bena", + "Bengali (Bangladesh)" : "Bengali (Bangladesh)", + "Bengali (India)" : "Bengali (India)", + "Bengali" : "Bengali", + "Bosnian (Bosnia and Herzegovina)" : "Bosnian (Bosnia and Herzegovina)", + "Bosnian" : "Bosnian", + "Bulgarian (Bulgaria)" : "Bulgarian (Bulgaria)", + "Bulgarian" : "Bulgarian", + "Burmese (Myanmar [Burma])" : "Burmese (Myanmar [Burma])", + "Burmese" : "Burmese", + "Catalan (Spain)" : "Catalan (Spain)", + "Catalan" : "Catalan", + "Central Morocco Tamazight (Latin)" : "Central Morocco Tamazight (Latin)", + "Central Morocco Tamazight (Latin, Morocco)" : "Central Morocco Tamazight (Latin, Morocco)", + "Central Morocco Tamazight" : "Central Morocco Tamazight", + "Cherokee (United States)" : "Cherokee (United States)", + "Cherokee" : "Cherokee", + "Chiga (Uganda)" : "Chiga (Uganda)", + "Chiga" : "Chiga", + "Chinese (Simplified Han)" : "Chinese (Simplified Han)", + "Chinese (Simplified Han, China)" : "Chinese (Simplified Han, China)", + "Chinese (Simplified Han, Hong Kong SAR China)" : "Chinese (Simplified Han, Hong Kong SAR China)", + "Chinese (Simplified Han, Macau SAR China)" : "Chinese (Simplified Han, Macau SAR China)", + "Chinese (Simplified Han, Singapore)" : "Chinese (Simplified Han, Singapore)", + "Chinese (Traditional Han)" : "Chinese (Traditional Han)", + "Chinese (Traditional Han, Hong Kong SAR China)" : "Chinese (Traditional Han, Hong Kong SAR China)", + "Chinese (Traditional Han, Macau SAR China)" : "Chinese (Traditional Han, Macau SAR China)", + "Chinese (Traditional Han, Taiwan)" : "Chinese (Traditional Han, Taiwan)", + "Chinese" : "Chinese", + "Cornish (United Kingdom)" : "Cornish (United Kingdom)", + "Cornish" : "Cornish", + "Croatian (Croatia)" : "Croatian (Croatia)", + "Croatian" : "Croatian", + "Czech (Czech Republic)" : "Czech (Czech Republic)", + "Czech" : "Czech", + "Danish (Denmark)" : "Danish (Danmark)", + "Danish" : "Dansk", + "Dutch (Belgium)" : "Dutch (Belgium)", + "Dutch (Netherlands)" : "Dutch (Netherlands)", + "Dutch" : "Dutch", + "Embu (Kenya)" : "Embu (Kenya)", + "Embu" : "Embu", + "English (American Samoa)" : "English (American Samoa)", + "English (Australia)" : "English (Australia)", + "English (Belgium)" : "English (Belgium)", + "English (Belize)" : "English (Belize)", + "English (Botswana)" : "English (Botswana)", + "English (Canada)" : "English (Canada)", + "English (Guam)" : "English (Guam)", + "English (Hong Kong SAR China)" : "English (Hong Kong SAR China)", + "English (India)" : "English (India)", + "English (Ireland)" : "English (Ireland)", + "English (Jamaica)" : "English (Jamaica)", + "English (Malta)" : "English (Malta)", + "English (Marshall Islands)" : "English (Marshall Islands)", + "English (Mauritius)" : "English (Mauritius)", + "English (Namibia)" : "English (Namibia)", + "English (New Zealand)" : "English (New Zealand)", + "English (Northern Mariana Islands)" : "English (Northern Mariana Islands)", + "English (Pakistan)" : "English (Pakistan)", + "English (Philippines)" : "English (Philippines)", + "English (Singapore)" : "English (Singapore)", + "English (South Africa)" : "English (South Africa)", + "English (Trinidad and Tobago)" : "English (Trinidad and Tobago)", + "English (U.S. Minor Outlying Islands)" : "English (U.S. Minor Outlying Islands)", + "English (U.S. Virgin Islands)" : "English (U.S. Virgin Islands)", + "English (United Kingdom)" : "English (Storbritannien)", + "English (United States)" : "English (United States)", + "English (Zimbabwe)" : "English (Zimbabwe)", + "English" : "English", + "Esperanto" : "Esperanto", + "Estonian (Estonia)" : "Estonian (Estonia)", + "Estonian" : "Estonian", + "Ewe (Ghana)" : "Ewe (Ghana)", + "Ewe (Togo)" : "Ewe (Togo)", + "Ewe" : "Ewe", + "Faroese (Faroe Islands)" : "Faroese (Faroe Islands)", + "Faroese" : "Faroese", + "Filipino (Philippines)" : "Filipino (Philippines)", + "Filipino" : "Filipino", + "Finnish (Finland)" : "Finsk (Finland)", + "Finnish" : "Finsk", + "French (Belgium)" : "French (Belgium)", + "French (Benin)" : "French (Benin)", + "French (Burkina Faso)" : "French (Burkina Faso)", + "French (Burundi)" : "French (Burundi)", + "French (Cameroon)" : "French (Cameroon)", + "French (Canada)" : "French (Canada)", + "French (Central African Republic)" : "French (Central African Republic)", + "French (Chad)" : "French (Chad)", + "French (Comoros)" : "French (Comoros)", + "French (Congo - Brazzaville)" : "French (Congo - Brazzaville)", + "French (Congo - Kinshasa)" : "French (Congo - Kinshasa)", + "French (Côte d’Ivoire)" : "French (Côte d’Ivoire)", + "French (Djibouti)" : "French (Djibouti)", + "French (Equatorial Guinea)" : "French (Equatorial Guinea)", + "French (France)" : "French (France)", + "French (Gabon)" : "French (Gabon)", + "French (Guadeloupe)" : "French (Guadeloupe)", + "French (Guinea)" : "French (Guinea)", + "French (Luxembourg)" : "French (Luxembourg)", + "French (Madagascar)" : "French (Madagascar)", + "French (Mali)" : "French (Mali)", + "French (Martinique)" : "French (Martinique)", + "French (Monaco)" : "French (Monaco)", + "French (Niger)" : "French (Niger)", + "French (Rwanda)" : "French (Rwanda)", + "French (Réunion)" : "French (Réunion)", + "French (Saint Barthélemy)" : "French (Saint Barthélemy)", + "French (Saint Martin)" : "French (Saint Martin)", + "French (Senegal)" : "French (Senegal)", + "French (Switzerland)" : "French (Switzerland)", + "French (Togo)" : "French (Togo)", + "French" : "French", + "Fulah (Senegal)" : "Fulah (Senegal)", + "Fulah" : "Fulah", + "Galician (Spain)" : "Galician (Spain)", + "Galician" : "Galician", + "Ganda (Uganda)" : "Ganda (Uganda)", + "Ganda" : "Ganda", + "Georgian (Georgia)" : "Georgian (Georgia)", + "Georgian" : "Georgian", + "German (Austria)" : "German (Austria)", + "German (Belgium)" : "German (Belgium)", + "German (Germany)" : "German (Germany)", + "German (Liechtenstein)" : "German (Liechtenstein)", + "German (Luxembourg)" : "German (Luxembourg)", + "German (Switzerland)" : "German (Switzerland)", + "German" : "German", + "Greek (Cyprus)" : "Greek (Cyprus)", + "Greek (Greece)" : "Greek (Greece)", + "Greek" : "Greek", + "Gujarati (India)" : "Gujarati (India)", + "Gujarati" : "Gujarati", + "Gusii (Kenya)" : "Gusii (Kenya)", + "Gusii" : "Gusii", + "Hausa (Latin)" : "Hausa (Latin)", + "Hausa (Latin, Ghana)" : "Hausa (Latin, Ghana)", + "Hausa (Latin, Niger)" : "Hausa (Latin, Niger)", + "Hausa (Latin, Nigeria)" : "Hausa (Latin, Nigeria)", + "Hausa" : "Hausa", + "Hawaiian (United States)" : "Hawaiian (United States)", + "Hawaiian" : "Hawaiian", + "Hebrew (Israel)" : "Hebrew (Israel)", + "Hebrew" : "Hebrew", + "Hindi (India)" : "Hindi (India)", + "Hindi" : "Hindi", + "Hungarian (Hungary)" : "Hungarian (Hungary)", + "Hungarian" : "Hungarian", + "Icelandic (Iceland)" : "Icelandic (Iceland)", + "Icelandic" : "Icelandic", + "Igbo (Nigeria)" : "Igbo (Nigeria)", + "Igbo" : "Igbo", + "Indonesian (Indonesia)" : "Indonesian (Indonesia)", + "Indonesian" : "Indonesian", + "Irish (Ireland)" : "Irish (Ireland)", + "Irish" : "Irish", + "Italian (Italy)" : "Italian (Italy)", + "Italian (Switzerland)" : "Italian (Switzerland)", + "Italian" : "Italian", + "Japanese (Japan)" : "Japanese (Japan)", + "Japanese" : "Japanese", + "Kabuverdianu (Cape Verde)" : "Kabuverdianu (Cape Verde)", + "Kabuverdianu" : "Kabuverdianu", + "Kabyle (Algeria)" : "Kabyle (Algeria)", + "Kabyle" : "Kabyle", + "Kalaallisut (Greenland)" : "Kalaallisut (Greenland)", + "Kalaallisut" : "Kalaallisut", + "Kalenjin (Kenya)" : "Kalenjin (Kenya)", + "Kalenjin" : "Kalenjin", + "Kamba (Kenya)" : "Kamba (Kenya)", + "Kamba" : "Kamba", + "Kannada (India)" : "Kannada (India)", + "Kannada" : "Kannada", + "Kazakh (Cyrillic)" : "Kazakh (Cyrillic)", + "Kazakh (Cyrillic, Kazakhstan)" : "Kazakh (Cyrillic, Kazakhstan)", + "Kazakh" : "Kazakh", + "Khmer (Cambodia)" : "Khmer (Cambodia)", + "Khmer" : "Khmer", + "Kikuyu (Kenya)" : "Kikuyu (Kenya)", + "Kikuyu" : "Kikuyu", + "Kinyarwanda (Rwanda)" : "Kinyarwanda (Rwanda)", + "Kinyarwanda" : "Kinyarwanda", + "Konkani (India)" : "Konkani (India)", + "Konkani" : "Konkani", + "Korean (South Korea)" : "Korean (South Korea)", + "Korean" : "Korean", + "Koyra Chiini (Mali)" : "Koyra Chiini (Mali)", + "Koyra Chiini" : "Koyra Chiini", + "Koyraboro Senni (Mali)" : "Koyraboro Senni (Mali)", + "Koyraboro Senni" : "Koyraboro Senni", + "Langi (Tanzania)" : "Langi (Tanzania)", + "Langi" : "Langi", + "Latvian (Latvia)" : "Latvian (Latvia)", + "Latvian" : "Latvian", + "Lithuanian (Lithuania)" : "Lithuanian (Lithuania)", + "Lithuanian" : "Lithuanian", + "Luo (Kenya)" : "Luo (Kenya)", + "Luo" : "Luo", + "Luyia (Kenya)" : "Luyia (Kenya)", + "Luyia" : "Luyia", + "Macedonian (Macedonia)" : "Macedonian (Macedonia)", + "Macedonian" : "Macedonian", + "Machame (Tanzania)" : "Machame (Tanzania)", + "Machame" : "Machame", + "Makonde (Tanzania)" : "Makonde (Tanzania)", + "Makonde" : "Makonde", + "Malagasy (Madagascar)" : "Malagasy (Madagascar)", + "Malagasy" : "Malagasy", + "Malay (Brunei)" : "Malay (Brunei)", + "Malay (Malaysia)" : "Malay (Malaysia)", + "Malay" : "Malay", + "Malayalam (India)" : "Malayalam (India)", + "Malayalam" : "Malayalam", + "Maltese (Malta)" : "Maltese (Malta)", + "Maltese" : "Maltese", + "Manx (United Kingdom)" : "Manx (United Kingdom)", + "Manx" : "Manx", + "Marathi (India)" : "Marathi (India)", + "Marathi" : "Marathi", + "Masai (Kenya)" : "Masai (Kenya)", + "Masai (Tanzania)" : "Masai (Tanzania)", + "Masai" : "Masai", + "Meru (Kenya)" : "Meru (Kenya)", + "Meru" : "Meru", + "Morisyen (Mauritius)" : "Morisyen (Mauritius)", + "Morisyen" : "Morisyen", + "Nama (Namibia)" : "Nama (Namibia)", + "Nama" : "Nama", + "Nepali (India)" : "Nepali (India)", + "Nepali (Nepal)" : "Nepali (Nepal)", + "Nepali" : "Nepali", + "North Ndebele (Zimbabwe)" : "North Ndebele (Zimbabwe)", + "North Ndebele" : "North Ndebele", + "Norwegian Bokmål (Norway)" : "Norwegian Bokmål (Norway)", + "Norwegian Bokmål" : "Norwegian Bokmål", + "Norwegian Nynorsk (Norway)" : "Norwegian Nynorsk (Norway)", + "Norwegian Nynorsk" : "Norwegian Nynorsk", + "Nyankole (Uganda)" : "Nyankole (Uganda)", + "Nyankole" : "Nyankole", + "Oriya (India)" : "Oriya (India)", + "Oriya" : "Oriya", + "Oromo (Ethiopia)" : "Oromo (Ethiopia)", + "Oromo (Kenya)" : "Oromo (Kenya)", + "Oromo" : "Oromo", + "Pashto (Afghanistan)" : "Pashto (Afghanistan)", + "Pashto" : "Pashto", + "Persian (Afghanistan)" : "Persian (Afghanistan)", + "Persian (Iran)" : "Persian (Iran)", + "Persian" : "Persian", + "Polish (Poland)" : "Polish (Poland)", + "Polish" : "Polish", + "Portuguese (Brazil)" : "Portuguese (Brazil)", + "Portuguese (Guinea-Bissau)" : "Portuguese (Guinea-Bissau)", + "Portuguese (Mozambique)" : "Portuguese (Mozambique)", + "Portuguese (Portugal)" : "Portuguese (Portugal)", + "Portuguese" : "Portuguese", + "Punjabi (Arabic)" : "Punjabi (Arabic)", + "Punjabi (Arabic, Pakistan)" : "Punjabi (Arabic, Pakistan)", + "Punjabi (Gurmukhi)" : "Punjabi (Gurmukhi)", + "Punjabi (Gurmukhi, India)" : "Punjabi (Gurmukhi, India)", + "Punjabi" : "Punjabi", + "Romanian (Moldova)" : "Romanian (Moldova)", + "Romanian (Romania)" : "Romanian (Romania)", + "Romanian" : "Romanian", + "Romansh (Switzerland)" : "Romansh (Switzerland)", + "Romansh" : "Romansh", + "Rombo (Tanzania)" : "Rombo (Tanzania)", + "Rombo" : "Rombo", + "Russian (Moldova)" : "Russian (Moldova)", + "Russian (Russia)" : "Russian (Russia)", + "Russian (Ukraine)" : "Russian (Ukraine)", + "Russian" : "Russian", + "Rwa (Tanzania)" : "Rwa (Tanzania)", + "Rwa" : "Rwa", + "Samburu (Kenya)" : "Samburu (Kenya)", + "Samburu" : "Samburu", + "Sango (Central African Republic)" : "Sango (Central African Republic)", + "Sango" : "Sango", + "Sena (Mozambique)" : "Sena (Mozambique)", + "Sena" : "Sena", + "Serbian (Cyrillic)" : "Serbian (Cyrillic)", + "Serbian (Cyrillic, Bosnia and Herzegovina)" : "Serbian (Cyrillic, Bosnia and Herzegovina)", + "Serbian (Cyrillic, Montenegro)" : "Serbian (Cyrillic, Montenegro)", + "Serbian (Cyrillic, Serbia)" : "Serbian (Cyrillic, Serbia)", + "Serbian (Latin)" : "Serbian (Latin)", + "Serbian (Latin, Bosnia and Herzegovina)" : "Serbian (Latin, Bosnia and Herzegovina)", + "Serbian (Latin, Montenegro)" : "Serbian (Latin, Montenegro)", + "Serbian (Latin, Serbia)" : "Serbian (Latin, Serbia)", + "Serbian" : "Serbian", + "Shona (Zimbabwe)" : "Shona (Zimbabwe)", + "Shona" : "Shona", + "Sichuan Yi (China)" : "Sichuan Yi (China)", + "Sichuan Yi" : "Sichuan Yi", + "Sinhala (Sri Lanka)" : "Sinhala (Sri Lanka)", + "Sinhala" : "Sinhala", + "Slovak (Slovakia)" : "Slovak (Slovakia)", + "Slovak" : "Slovak", + "Slovenian (Slovenia)" : "Slovenian (Slovenia)", + "Slovenian" : "Slovenian", + "Soga (Uganda)" : "Soga (Uganda)", + "Soga" : "Soga", + "Somali (Djibouti)" : "Somali (Djibouti)", + "Somali (Ethiopia)" : "Somali (Ethiopia)", + "Somali (Kenya)" : "Somali (Kenya)", + "Somali (Somalia)" : "Somali (Somalia)", + "Somali" : "Somali", + "Spanish (Argentina)" : "Spanish (Argentina)", + "Spanish (Bolivia)" : "Spanish (Bolivia)", + "Spanish (Chile)" : "Spanish (Chile)", + "Spanish (Colombia)" : "Spanish (Colombia)", + "Spanish (Costa Rica)" : "Spanish (Costa Rica)", + "Spanish (Dominican Republic)" : "Spanish (Dominican Republic)", + "Spanish (Ecuador)" : "Spanish (Ecuador)", + "Spanish (El Salvador)" : "Spanish (El Salvador)", + "Spanish (Equatorial Guinea)" : "Spanish (Equatorial Guinea)", + "Spanish (Guatemala)" : "Spanish (Guatemala)", + "Spanish (Honduras)" : "Spanish (Honduras)", + "Spanish (Latin America)" : "Spanish (Latin America)", + "Spanish (Mexico)" : "Spanish (Mexico)", + "Spanish (Nicaragua)" : "Spanish (Nicaragua)", + "Spanish (Panama)" : "Spanish (Panama)", + "Spanish (Paraguay)" : "Spanish (Paraguay)", + "Spanish (Peru)" : "Spanish (Peru)", + "Spanish (Puerto Rico)" : "Spanish (Puerto Rico)", + "Spanish (Spain)" : "Spanish (Spain)", + "Spanish (United States)" : "Spanish (United States)", + "Spanish (Uruguay)" : "Spanish (Uruguay)", + "Spanish (Venezuela)" : "Spanish (Venezuela)", + "Spanish" : "Spanish", + "Swahili (Kenya)" : "Swahili (Kenya)", + "Swahili (Tanzania)" : "Swahili (Tanzania)", + "Swahili" : "Swahili", + "Swedish (Finland)" : "Svensk (Finland)", + "Swedish (Sweden)" : "Svensk (Sverige)", + "Swedish" : "Svensk", + "Swiss German (Switzerland)" : "Swiss German (Switzerland)", + "Swiss German" : "Swiss German", + "Tachelhit (Latin)" : "Tachelhit (Latin)", + "Tachelhit (Latin, Morocco)" : "Tachelhit (Latin, Morocco)", + "Tachelhit (Tifinagh)" : "Tachelhit (Tifinagh)", + "Tachelhit (Tifinagh, Morocco)" : "Tachelhit (Tifinagh, Morocco)", + "Tachelhit" : "Tachelhit", + "Taita (Kenya)" : "Taita (Kenya)", + "Taita" : "Taita", + "Tamil (India)" : "Tamil (India)", + "Tamil (Sri Lanka)" : "Tamil (Sri Lanka)", + "Tamil" : "Tamil", + "Telugu (India)" : "Telugu (India)", + "Telugu" : "Telugu", + "Teso (Kenya)" : "Teso (Kenya)", + "Teso (Uganda)" : "Teso (Uganda)", + "Teso" : "Teso", + "Thai (Thailand)" : "Thai (Thailand)", + "Thai" : "Thai", + "Tibetan (China)" : "Tibetan (China)", + "Tibetan (India)" : "Tibetan (India)", + "Tibetan" : "Tibetan", + "Tigrinya (Eritrea)" : "Tigrinya (Eritrea)", + "Tigrinya (Ethiopia)" : "Tigrinya (Ethiopia)", + "Tigrinya" : "Tigrinya", + "Tonga (Tonga)" : "Tonga (Tonga)", + "Tonga" : "Tonga", + "Turkish (Turkey)" : "Turkish (Turkey)", + "Turkish" : "Turkish", + "Ukrainian (Ukraine)" : "Ukrainian (Ukraine)", + "Ukrainian" : "Ukrainian", + "Urdu (India)" : "Urdu (India)", + "Urdu (Pakistan)" : "Urdu (Pakistan)", + "Urdu" : "Urdu", + "Uzbek (Arabic)" : "Uzbek (Arabic)", + "Uzbek (Arabic, Afghanistan)" : "Uzbek (Arabic, Afghanistan)", + "Uzbek (Cyrillic)" : "Uzbek (Cyrillic)", + "Uzbek (Cyrillic, Uzbekistan)" : "Uzbek (Cyrillic, Uzbekistan)", + "Uzbek (Latin)" : "Uzbek (Latin)", + "Uzbek (Latin, Uzbekistan)" : "Uzbek (Latin, Uzbekistan)", + "Uzbek" : "Uzbek", + "Vietnamese (Vietnam)" : "Vietnamese (Vietnam)", + "Vietnamese" : "Vietnamese", + "Vunjo (Tanzania)" : "Vunjo (Tanzania)", + "Vunjo" : "Vunjo", + "Welsh (United Kingdom)" : "Welsh (United Kingdom)", + "Welsh" : "Welsh", + "Yoruba (Nigeria)" : "Yoruba (Nigeria)", + "Yoruba" : "Yoruba", + "Zulu (South Africa)" : "Zulu (South Africa)", + "Zulu" : "Zulu", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Tvåfaktorsautentisering kan påtvingas för alla\tanvändare och specifika grupper. Om de inte har en tvåfaktorsleverantör konfigurerad kommer de inte att kunna logga in i systemet.", + "Enforce two-factor authentication" : "Påtvinga tvåfaktorsautentisering", + "Limit to groups" : "Begränsa till grupper", + "Enforcement of two-factor authentication can be set for certain groups only." : "Påtvingad tvåfaktorsautentisering kan bara aktiveras för vissa grupper.", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "Tvåfaktorsautentisering är påtvingad för alla\tmedlemmar i följande grupper.", + "Enforced groups" : "Påtvingade grupper", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "Tvåfaktorsautentisering är inte påtvingad för\tmedlemmar i följande grupper.", + "Excluded groups" : "Exkluderade grupper", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "När grupper väljs/exkluderas används följande logik för att avgöra om en användare har 2FA påtvingad: Om inga grupper väljs är 2FA aktiverat för alla förutom medlemmar i exkluderade grupper. Om grupper väljs är 2FA aktiverat för alla medlemmar i dessa grupper. Om en användare är medlem i både en vald och exkluderad grupp, har den valda företräde och 2FA påtvingas.", + "Save changes" : "Spara ändringar", + "Marked for remote wipe" : "Markerad för fjärrensning", + "Device settings" : "Enhetsinställningar", + "Allow filesystem access" : "Tillåt åtkomst till filsystemet", + "Rename" : "Byt namn", + "Revoke" : "Återkalla", + "Wipe device" : "Rensa enhet", + "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Återkallning kan förhindra att enheten rensas om inte rensningen redan har startat.", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome för Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Nextcloud iOS-app", + "Nextcloud Android app" : "Nextcloud Android-app", + "Nextcloud Talk for iOS" : "Nextcloud Talk för iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk för Android", + "Sync client - {os}" : "Synkklient - {os}", + "This session" : "Denna session ", + "Device" : "Enhet", + "Last activity" : "Senaste aktivitet", + "Devices & sessions" : "Enheter & sessioner", + "Web, desktop and mobile clients currently logged in to your account." : "Webb, skrivbordsklienter och mobila klienter som är inloggade på ditt konto just nu.", + "Do you really want to wipe your data from this device?" : "Vill du verkligen radera dina data från den här enheten?", + "Confirm wipe" : "Bekräfta radering", + "Error while creating device token" : "Fel vid skapande av enhetstoken", + "Error while updating device token scope" : "Fel vid uppdatering av enhetstokens omfång", + "Error while updating device token name" : "Fel vid uppdatering av enhetstokens namn", + "Error while deleting the token" : "Fel vid borttagning av token", + "Error while wiping the device with the token" : "Fel uppstod vid rensning av enheten", + "App name" : "Appnamn", + "Create new app password" : "Skapa nytt applösenord", + "Use the credentials below to configure your app or device." : "Använd följande autentiseringsuppgifter för att konfigurera din app eller enhet", + "For security reasons this password will only be shown once." : "Av säkerhetsskäl kommer lösenordet endast att visas en gång", + "Username" : "Användarnamn", + "Password" : "Lösenord", + "Done" : "Färdig", + "Show QR code for mobile apps" : "Visa QR-kod för mobila appar", + "Copied!" : "Kopierad!", + "Copy" : "Kopiera", + "Could not copy app password. Please copy it manually." : "Det gick inte att kopiera app-lösenordet. Kopiera det manuellt.", + "This app is supported via your current Nextcloud subscription." : "Den här appen stöds via din nuvarande Nextcloud-prenumeration.", + "Supported" : "Stöds", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Officiella appar är utvecklade av och inom gemenskapen. De erbjuder central funktionalitet och är redo för att användas i produktion.", + "Official" : "Officiell", + "by" : "av", + "Update to {version}" : "Uppdatera till {version}", + "Remove" : "Ta bort", + "Disable" : "Inaktivera", + "All" : "Alla", + "Limit app usage to groups" : "Begränsa app-användning till grupper", + "No results" : "Inga resultat", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Denna app har ingen lägsta Nextcloud-version tilldelad. Detta kommer att innebära ett problem i framtiden.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Denna app har ingen minimum Nextcloud-version tilldelad. Detta kommer att innebära ett problem i framtiden.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Denna applikation kan inte installeras då följande beroenden inte är uppfyllda: %s", + "View in store" : "Visa i butik", + "Visit website" : "Besök webbsida", + "Report a bug" : "Rapportera ett problem", + "User documentation" : "Användardokumentation", + "Admin documentation" : "Administratörsdokumentation", + "Developer documentation" : "Utvecklardokumentation", + "Update to {update}" : "Uppdatera till {update}", + "Results from other categories" : "Resultat från andra kategorier", + "No apps found for your version" : "Inga appar funna för din version", + "Disable all" : "Inaktivera alla", + "Enable all" : "Aktivera alla", + "Download and enable" : "Ladda ned och aktivera", + "Enable" : "Aktivera", + "Enable untested app" : "Aktivera ej testad app", + "The app will be downloaded from the app store" : "Appen kommer hämtas från appstore", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Den här appen är inte markerad som kompatibel med din Nextcloud-version. Om du fortsätter kan du fortfarande installera appen. Observera att appen kanske inte fungerar som förväntat.", + "You do not have permissions to see the details of this user" : "Du har inte behörighet att se detaljerna för den här användaren", + "The backend does not support changing the display name" : "Servern stöder inte ändring av visningsnamn", + "New password" : "Nytt lösenord", + "Add user in group" : "Lägg till användare i grupp", + "Set user as admin for" : "Gör användare till admin för", + "Select user quota" : "Välj användarens quota", + "No language set" : "Inget språk angivet", + "Never" : "Aldrig", + "Delete user" : "Radera användare", + "Wipe all devices" : "Rensa alla enheter", + "Disable user" : "Stäng av användare", + "Enable user" : "Aktivera användare", + "Resend welcome email" : "Skicka om välkomstmeddelande via e-post", + "{size} used" : "{size} använt", + "Welcome mail sent!" : "Välkomstmeddelande skickat via e-post!", + "Display name" : "Visningsnamn", + "Email" : "E-post", + "Group admin for" : "Gruppadministratör för", + "Quota" : "Lagringsutrymme", + "Language" : "Språk", + "Storage location" : "Lagringsplats", + "User backend" : "Användarbackend", + "Last login" : "Senaste inloggning", + "Will be autogenerated" : "Kommer att autogenereras", + "Default language" : "Standardspråk", + "Add a new user" : "Lägg till ny användare", + "No users in here" : "Inga användare här", + "Default quota" : "Förvalt lagringsutrymme", + "Password change is disabled because the master key is disabled" : "Lösenordsbyte är inaktiverat eftersom huvudnyckeln är inaktiverad", + "Common languages" : "Vanliga språk", + "All languages" : "Alla språk", + "Your apps" : "Dina appar", + "Active apps" : "Aktiva appar", + "Disabled apps" : "Inaktiverade appar", + "Updates" : "Uppdateringar", + "App bundles" : "App paket", + "{license}-licensed" : "{license}-licensierad", + "New user" : "Ny användare", + "Default quota:" : "Standardkvot:", + "Select default quota" : "Välj förvalt lagringsutrymme", + "Show Languages" : "Visa språk", + "Show last login" : "Visa senaste inloggning", + "Show user backend" : "Visa användar-backend", + "Show storage path" : "Visa lagringsväg", + "You are about to remove the group {group}. The users will NOT be deleted." : "Du håller på att ta bort gruppen {group}. Användarna kommer INTE att raderas.", + "Please confirm the group removal " : "Bekräfta borttagning av gruppen", + "Remove group" : "Radera grupp", + "Admins" : "Administratörer", + "Disabled users" : "Inaktiva användare", + "Everyone" : "Alla", + "Add group" : "Lägg till grupp", + "An error occured during the request. Unable to proceed." : "Ett fel uppstod under förfrågan. Kan inte fortsätta.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Appen har aktiverats men måste uppdateras. Du kommer att omdirigeras till uppdateringssidan om 5 sekunder.", + "App update" : "Appuppdatering", + "Error: This app can not be enabled because it makes the server unstable" : "Fel: Denna app kan inte aktiveras eftersom det gör servern instabil", + "SSL Root Certificates" : "SSL Root certifikat", + "Common Name" : "Vanligt namn", + "Valid until" : "Giltigt till", + "Issued By" : "Utfärdat av", + "Valid until %s" : "Giltigt till %s", + "Import root certificate" : "Importera rotcertifikat", + "Administrator documentation" : "Administratörsdokumentation", + "Documentation" : "Dokumentation", + "Forum" : "Forum", + "None" : "Ingen", + "Login" : "Logga in", + "Plain" : "Enkel", + "NT LAN Manager" : "NT LAN Manager", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "E-postserver", + "Open documentation" : "Öppna dokumentation", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Det är viktigt att sätta upp denna server för att kunna sända e-post, exempelvis lösenordsåterställningar och notifieringar.", + "Send mode" : "Sändningsläge", + "Encryption" : "Kryptering", + "Sendmail mode" : "Sendmail-läge", + "From address" : "Från adress", + "mail" : "e-post", + "Authentication method" : "Autentiseringsmetod", + "Authentication required" : "Autentisering krävs", + "Server address" : "Serveradress", + "Port" : "Port", + "Credentials" : "Inloggningsuppgifter", + "SMTP Username" : "SMTP-användarnamn", + "SMTP Password" : "SMTP-lösenord", + "Save" : "Spara", + "Test email settings" : "Testa e-postinställningar", + "Send email" : "Skicka e-post", + "Security & setup warnings" : "Säkerhet & systemvarningar", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Det är viktigt för säkerhet och prestanda av din instans att allt är korrekt konfigurerat. För att hjälpa dig med det gör vi några automatiska kontroller. Se den länkade dokumentationen för mer information.", + "All checks passed." : "Alla kontroller lyckades!", + "There are some errors regarding your setup." : "Det finns några fel angående din inställning.", + "There are some warnings regarding your setup." : "Det finns några varningar angående din inställning.", + "Checking for system and security issues." : "Kontrollerar system och säkerhetsproblem.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Dubbelkolla <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installationsguiderna ↗</a>, och kontrollera eventuella fel eller varningar i <a href=\"%2$s\">loggen</a>.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Kontrollera säkerheten för ditt Nextcloud över <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">vår säkerhetsgenomsökning ↗</a>.", + "Version" : "Version", + "Two-Factor Authentication" : "Tvåfaktorsautentisering", + "Server-side encryption" : "Serverkryptering", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Kryptering från servern möjliggör kryptering av filer som är uppladdade till servern. Detta innebär vissa begränsningar som prestandaförluster, så aktivera bara om det behövs.", + "Enable server-side encryption" : "Aktivera kryptering på server.", + "Please read carefully before activating server-side encryption: " : "OBS: Var god läs noga innan kryptering aktiveras på servern.", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "När kryptering är aktiverat, så kommer alla filer som laddas upp till servern från den tidpunkt och framåt bli krypterad på servern. Det kommer bara vara möjligt att inaktivera kryptering vid ett senare tillfälle om krypteringsmodulen stödjer den funktionen och alla förvillkor (exempelvis använder återställningsnyckel) är mötta.", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Enbart kryptering garanterar inte säkerhet i systemet. Vänligen se dokumentationen för ytterligare information om hur krypteringsappen fungerar, och de supporterade användarfallen.", + "Be aware that encryption always increases the file size." : "OBS! Observera att kryptering alltid ökar filstorleken", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Det är alltid en god ide att skapa regelbundna säkerhetskopior av din data, om kryptering används var säker på att även krypteringsnycklarna säkerhetskopieras tillsammans med din data.", + "This is the final warning: Do you really want to enable encryption?" : "Detta är en slutgiltig varning: Vill du verkligen aktivera kryptering?", + "Enable encryption" : "Aktivera kryptering", + "No encryption module loaded, please enable an encryption module in the app menu." : "Ingen krypteringsmodul laddad, var god aktivera krypteringsmodulen i applikationsmenyn.", + "Select default encryption module:" : "Välj krypteringsmodul:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Du behöver migrera dina krypteringsnycklar från den gamla krypteringen (owncloud <= 8.0) till den nya. Var god aktivera \"Default encryption module\" och kör 'occ encryption:migrate'.", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Du behöver migrera dina krypteringsnycklar från den gamla krypteringen (owncloud <= 8.0) till den nya.", + "Start migration" : "Starta migrering", + "Background jobs" : "Bakgrundsjobb", + "Last job ran %s." : "Sista jobbet kördes %s.", + "Last job execution ran %s. Something seems wrong." : "Sista jobbexekveringen körde %s. Något verkar vara fel.", + "Background job didn’t run yet!" : "Bakgrundsjobb har inte kört ännu!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "För optimal prestanda är det viktigt att konfigurera bakgrundsjobb korrekt. För större instanser 'Cron' är den rekommenderade inställningen. Vänligen se dokumentationen för mer information.", + "Pick background job setting" : "Välj inställning för bakgrundsjobb", + "Execute one task with each page loaded" : "Exekvera en uppgift vid varje sidladdning", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php är registrerat hos en webcron-tjänst att köra cron.php var 5: e minut över HTTP.", + "Use system cron service to call the cron.php file every 5 minutes." : "Använd systemets cron-tjänst för att anropa cron.php var 5: e minut.", + "The cron.php needs to be executed by the system user \"%s\"." : "Cron.php behöver exekveras av systemanvändaren \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "För att köra detta behöver du PHP POSIX-tillägget. Se {linkstart}PHP dokumentation{linkend} för mer detaljer.", + "Sharing" : "Dela", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Som administratör kan du fininställa delningsbeteendet. Vänligen se dokumentationen för mer information.", + "Allow apps to use the Share API" : "Tillåt applikationer att använda API för delning", + "Allow users to share via link" : "Tillåt användare att dela via länk", + "Allow public uploads" : "Tillåt offentlig uppladdning", + "Always ask for a password" : "Fråga alltid efter lösenord", + "Enforce password protection" : "Tillämpa lösenordskydd", + "Set default expiration date" : "Ställ in standardutgångsdatum", + "Expire after " : "Förfaller efter", + "days" : "dagar", + "Enforce expiration date" : "Tillämpa förfallodatum", + "Allow resharing" : "Tillåt vidaredelning", + "Allow sharing with groups" : "Tillåt delning med grupper", + "Restrict users to only share with users in their groups" : "Begränsa användare till att enbart kunna dela med användare i deras grupper", + "Exclude groups from sharing" : "Exkludera grupp från att dela", + "These groups will still be able to receive shares, but not to initiate them." : "Dessa grupper kommer fortfarande kunna ta emot delningar, men inte skapa delningar.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Tillåt autokomplettering av användarnamn i delningsdialogen. Om detta är inaktiverat måste fullständigt användarnamn och epostadress anges.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Visa friskrivningstext på offentliga uppladdningssidan. (Visas endast när fil-listan är gömd.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Denna text kommer att visa på den offentliga uppladdnings-sidan när fil-listan är gömd.", + "Default share permissions" : "Standardrättigheter för delning", + "Personal" : "Privat", + "Administration" : "Administration", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Utvecklat av {communityopen}Nextcloud-gemenskapen{linkclose}, {githubopen}källkoden{linkclose} är licensierad enligt {licenseopen}AGPL-standard{linkclose}.", + "Like our Facebook page" : "Gilla vår Facebook-sida", + "Follow us on Twitter" : "Följ oss på Twitter", + "Follow us on Mastodon" : "Följ oss på Mastodon", + "Check out our blog" : "Kolla in vår blogg", + "Subscribe to our newsletter" : "Prenumerera på vårt nyhetsbrev", + "Profile picture" : "Profilbild", + "Upload new" : "Ladda upp ny", + "Select from Files" : "Välj från Filer", + "Remove image" : "Radera bild", + "png or jpg, max. 20 MB" : "png eller jpg, max 20 MB", + "Picture provided by original account" : "Bild gjordes tillgänglig av orginalkonto", + "Cancel" : "Avbryt", + "Choose as profile picture" : "Välj som profilbild", + "Details" : "Detaljer", + "You are a member of the following groups:" : "Du är medlem i följande grupper:", + "You are using <strong>%s</strong>" : "Du använder <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Du använder <strong>%1$s</strong> av <strong>%2$s</strong> (<strong>%3$s %%</strong>)", + "Full name" : "Namn", + "No display name set" : "Inget visningsnamn angivet", + "Your email address" : "Din e-postadress", + "No email address set" : "Ingen e-postadress angiven", + "For password reset and notifications" : "För lösenordsåterställning och notifikationer", + "Phone number" : "Telefonnummer", + "Your phone number" : "Ditt telefonnummer", + "Address" : "Ort/Stad", + "Your postal address" : "Ort/Stad", + "Website" : "Webbsida", + "It can take up to 24 hours before the account is displayed as verified." : "Det kan ta upp till 24 timmar innan kontot visas som verifierat.", + "Link https://…" : "Länk https://...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Twitter handle @…", + "Help translate" : "Hjälp oss att översätta", + "Locale" : "Plats", + "Current password" : "Nuvarande lösenord", + "Change password" : "Ändra lösenord", + "Use a second factor besides your password to increase security for your account." : "Använd en andra faktor förutom ditt lösenord för att öka säkerheten för ditt konto.", + "Disconnect" : "Koppla från", + "Not supported!" : "Stöds inte!", + "Press ⌘-C to copy." : "Tryck ⌘-C för att kopiera.", + "Press Ctrl-C to copy." : "Tryck Ctrl-C för att kopiera.", + "Error while loading browser sessions and device tokens" : "Fel vid inläsning av webbläsarsessioner och enhetstoken.", + "Store credentials" : "Lagra inloggningsuppgifter", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php är registrerat hos en webcron-tjänst att köra cron.php varje kvart över HTTP.", + "Use system cron service to call the cron.php file every 15 minutes." : "Använd systemets cron-tjänst för att anropa cron.php varje kvart.", + "Follow us on Google+" : "Följ oss på Google+" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/sv.json b/apps/settings/l10n/sv.json new file mode 100644 index 00000000000..ae7b0101e95 --- /dev/null +++ b/apps/settings/l10n/sv.json @@ -0,0 +1,821 @@ +{ "translations": { + "{actor} added you to group {group}" : "{actor} adderade dig till gruppen {group}", + "You added {user} to group {group}" : "Du adderade {user} till gruppen {group}", + "{actor} added {user} to group {group}" : "{actor} adderade {user} till gruppen {group}", + "An administrator added you to group {group}" : "En administratör adderade dig till gruppen {group}", + "An administrator added {user} to group {group}" : "En administratör adderade {user} till gruppen {group}", + "{actor} removed you from group {group}" : "{actor} tog bort dig från gruppen {group}", + "You removed {user} from group {group}" : "Du tog bort {user} från gruppen {group}", + "{actor} removed {user} from group {group}" : "{actor} tog bort {user} från gruppen {group}", + "An administrator removed you from group {group}" : "En administratör tog bort dig från gruppen {group}", + "An administrator removed {user} from group {group}" : "En administratör tog bort {user} från gruppen {group}", + "Your <strong>group memberships</strong> were modified" : "Dina <strong>gruppmedlemskaper</strong> har ändrats", + "{actor} changed your password" : "{actor} ändrade ditt lösenord", + "You changed your password" : "Du ändrade ditt lösenord", + "Your password was reset by an administrator" : "Ditt lösenord återställdes av en administratör", + "{actor} changed your email address" : "{actor} ändrade din e-postadress", + "You changed your email address" : "Du ändrade din e-postadress", + "Your email address was changed by an administrator" : "Din e-postadress ändrades av en administratör", + "You created app password \"{token}\"" : "Du skapade app-lösenord \"{token}\"", + "You deleted app password \"{token}\"" : "Du raderade app-lösenord \"{token}\"", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Du ändrade namn på app-lösenord \"{token}\" till \"{newToken}\"", + "You granted filesystem access to app password \"{token}\"" : "Du tilldelade filsystem-åtkomst till app-lösenord \"{token}\"", + "You revoked filesystem access from app password \"{token}\"" : "Du återkallade filsystem-åtkomst från app-lösenord \"{token}\"", + "Security" : "Säkerhet", + "You successfully logged in using two-factor authentication (%1$s)" : "Du loggade in med tvåfaktorautentisering (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Ett inloggningsförsök med tvåfaktorautentisering misslyckades (%1$s)", + "Remote wipe was started on %1$s" : "Fjärrensning startades på %1$s", + "Remote wipe has finished on %1$s" : "Fjärrensning slutfördes på %1$s", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Ditt <strong>lösenord</strong> eller <strong>e-postadress</strong> har ändrats", + "Couldn't remove app." : "Kunde inte ta bort applikationen.", + "Couldn't update app." : "Kunde inte uppdatera appen.", + "Wrong password" : "Fel lösenord", + "Saved" : "Sparad", + "No user supplied" : "Ingen användare angiven", + "Unable to change password" : "Kunde inte ändra lösenord", + "Authentication error" : "Fel vid autentisering", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Vänligen ange ett återställningslösenord; annars kommer all din data att försvinna.", + "Wrong admin recovery password. Please check the password and try again." : "Felaktigt återställningslösenord för administratör. Kolla lösenordet och prova igen.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Backend stödjer inte att lösenord ändras men användarens krypteringsnyckel uppdaterades.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "installering och uppdatering av applikationer eller Federerad Moln-delning.", + "Federated Cloud Sharing" : "Federerad Moln-delning", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL använder en föråldrad %1$s version (%2$s). Uppdatera ditt operativsystem annars kommer inte funktioner som %3$s fungera pålitligt.", + "Invalid SMTP password." : "Ogiltigt SMTP-lösenord.", + "Email setting test" : "E-postinställningar test", + "Well done, %s!" : "Bra gjort, %s!", + "If you received this email, the email configuration seems to be correct." : "Om du får detta e-postmeddelande så har du ställt in e-postinställningarna rätt.", + "Email could not be sent. Check your mail server log" : "E-post kunde inte skickas. Titta i din e-postserverlogg", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Ett problem uppstod när e-post försökte skickas. Var god kontrollera dina inställningar. (Fel: %s)", + "You need to set your user email before being able to send test emails." : "Du behöver ställa in din användares e-postadress före du kan skicka test e-post.", + "Invalid mail address" : "Ogiltig e-postadress", + "Settings saved" : "Inställningar sparade", + "Unable to change full name" : "Kunde inte ändra namn", + "Unable to change email address" : "Kunde inte ändra e-postadress", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "För att verifiera dit Twitter-konto, posta följande tweet på Twitter (Var säker att det postas utan radbrytningar):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "För att verifiera din webbplats, lagra följande innehåll i din webbrot på '.well-known/CloudIdVerificationCode.txt' (Vänligen säkerställ att hela texten ryms på en rad):", + "%1$s changed your password on %2$s." : "%1$s ändrade ditt lösenord på %2$s", + "Your password on %s was changed." : "Ditt lösenord på %s har ändrats.", + "Your password on %s was reset by an administrator." : "Ditt lösenord på %s har blivit återställt av en administratör.", + "Password for %1$s changed on %2$s" : "Lösenord för %1$s ändrades %2$s", + "Password changed for %s" : "Lösenord ändrat för %s", + "If you did not request this, please contact an administrator." : "Om du inte har begärt detta, vänligen kontakta en administratör.", + "Your email address on %s was changed." : "Din e-postadress på %s har ändrats.", + "Your email address on %s was changed by an administrator." : "Din e-postadress på %s har ändrats av en administratör.", + "Email address for %1$s changed on %2$s" : "E-postadressen för %1$s ändrades %2$s", + "Email address changed for %s" : "E-postadress ändrad för %s", + "The new email address is %s" : "Nya e-postadressen är %s", + "Your %s account was created" : "Ditt %s konto skapades", + "Welcome aboard" : "Välkommen ombord", + "Welcome aboard %s" : "Välkommen ombord %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Välkommen till ditt %s konto, du kan lägga till, skydda och dela din data.", + "Your username is: %s" : "Ditt användarnamn är: %s", + "Set your password" : "Ställ in ditt lösenord", + "Go to %s" : "Gå till %s", + "Install Client" : "Installera Klient", + "Logged in user must be a subadmin" : "Inloggad användare måste vara en del-administratör", + "Create" : "Skapa", + "Change" : "Ändra", + "Delete" : "Radera", + "Share" : "Dela", + "Unlimited" : "Obegränsat", + "Verifying" : "Verifiera", + "Verifying …" : "Verifierar ...", + "Verify" : "Verifiera", + "Migration in progress. Please wait until the migration is finished" : "Migrering pågår. Var god vänta tills migreringen är färdigställd.", + "Migration started …" : "Migrering påbörjad ...", + "Not saved" : "Inte sparad", + "Sending…" : "Skickar...", + "Email sent" : "E-post skickad", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Ett fel uppstod. Var god ladda upp ett ASCII-kodad PEM-certifikat.", + "Valid until {date}" : "Giltig t.o.m. {date}", + "Local" : "Lokal", + "Private" : "Privat", + "Only visible to local users" : "Endast synlig för lokala användare", + "Only visible to you" : "Endast synlig för dig", + "Contacts" : "Kontakter", + "Visible to local users and to trusted servers" : "Synlig för lokala användare och tillförlitliga servrar", + "Public" : "Offentlig", + "Will be synced to a global and public address book" : "Kommer att synkroniseras till global och offentlig adressbok", + "Very weak password" : "Väldigt svagt lösenord", + "Weak password" : "Svagt lösenord", + "So-so password" : "Okej lösenord", + "Good password" : "Bra lösenord", + "Strong password" : "Starkt lösenord", + "An error occurred while changing your language. Please reload the page and try again." : "Ett fel inträffade när ditt språk ändrades. Ladda om sidan och försök igen.", + "An error occurred while changing your locale. Please reload the page and try again." : "Ett fel inträffade när din plats ändrades. Ladda om sidan och försök igen.", + "Select a profile picture" : "Välj en profilbild", + "Week starts on {fdow}" : "Veckan börjar på {fdow}", + "Groups" : "Grupper", + "Group list is empty" : "Grupplistan är tom", + "Unable to retrieve the group list" : "Kan inte hämta grupplistan", + "Afrikaans (Namibia)" : "Afrikaans (Namibia)", + "Afrikaans (South Africa)" : "Afrikaans (Sydafrika)", + "Afrikaans" : "Afrikaans", + "Akan (Ghana)" : "Akan (Ghana)", + "Akan" : "Akan", + "Albanian (Albania)" : "Albanian (Albania)", + "Albanian" : "Albanian", + "Amharic (Ethiopia)" : "Amharic (Ethiopia)", + "Amharic" : "Amharic", + "Arabic (Algeria)" : "Arabic (Algeria)", + "Arabic (Bahrain)" : "Arabic (Bahrain)", + "Arabic (Egypt)" : "Arabic (Egypten)", + "Arabic (Iraq)" : "Arabic (Irak)", + "Arabic (Jordan)" : "Arabic (Jordanien)", + "Arabic (Kuwait)" : "Arabic (Kuwait)", + "Arabic (Lebanon)" : "Arabic (Libanon)", + "Arabic (Libya)" : "Arabic (Libyen)", + "Arabic (Morocco)" : "Arabic (Marocko)", + "Arabic (Oman)" : "Arabic (Oman)", + "Arabic (Qatar)" : "Arabic (Qatar)", + "Arabic (Saudi Arabia)" : "Arabic (Saudiarabien)", + "Arabic (Sudan)" : "Arabic (Sudan)", + "Arabic (Syria)" : "Arabic (Syrien)", + "Arabic (Tunisia)" : "Arabic (Tunisien)", + "Arabic (United Arab Emirates)" : "Arabic (Förenade arabemiraten)", + "Arabic (Yemen)" : "Arabic (Jemen)", + "Arabic" : "Arabic", + "Armenian (Armenia)" : "Armenian (Armenien)", + "Armenian" : "Armenian", + "Assamese (India)" : "Assamese (Indien)", + "Assamese" : "Assamese", + "Asu (Tanzania)" : "Asu (Tanzania)", + "Asu" : "Asu", + "Azerbaijani (Cyrillic)" : "Azerbaijani (Cyrillic)", + "Azerbaijani (Cyrillic, Azerbaijan)" : "Azerbaijani (Cyrillic, Azerbaijan)", + "Azerbaijani (Latin)" : "Azerbaijani (Latin)", + "Azerbaijani (Latin, Azerbaijan)" : "Azerbaijani (Latin, Azerbaijan)", + "Azerbaijani" : "Azerbaijani", + "Bambara (Mali)" : "Bambara (Mali)", + "Bambara" : "Bambara", + "Basque (Spain)" : "Basque (Spain)", + "Basque" : "Basque", + "Belarusian (Belarus)" : "Belarusian (Belarus)", + "Belarusian" : "Belarusian", + "Bemba (Zambia)" : "Bemba (Zambia)", + "Bemba" : "Bemba", + "Bena (Tanzania)" : "Bena (Tanzania)", + "Bena" : "Bena", + "Bengali (Bangladesh)" : "Bengali (Bangladesh)", + "Bengali (India)" : "Bengali (India)", + "Bengali" : "Bengali", + "Bosnian (Bosnia and Herzegovina)" : "Bosnian (Bosnia and Herzegovina)", + "Bosnian" : "Bosnian", + "Bulgarian (Bulgaria)" : "Bulgarian (Bulgaria)", + "Bulgarian" : "Bulgarian", + "Burmese (Myanmar [Burma])" : "Burmese (Myanmar [Burma])", + "Burmese" : "Burmese", + "Catalan (Spain)" : "Catalan (Spain)", + "Catalan" : "Catalan", + "Central Morocco Tamazight (Latin)" : "Central Morocco Tamazight (Latin)", + "Central Morocco Tamazight (Latin, Morocco)" : "Central Morocco Tamazight (Latin, Morocco)", + "Central Morocco Tamazight" : "Central Morocco Tamazight", + "Cherokee (United States)" : "Cherokee (United States)", + "Cherokee" : "Cherokee", + "Chiga (Uganda)" : "Chiga (Uganda)", + "Chiga" : "Chiga", + "Chinese (Simplified Han)" : "Chinese (Simplified Han)", + "Chinese (Simplified Han, China)" : "Chinese (Simplified Han, China)", + "Chinese (Simplified Han, Hong Kong SAR China)" : "Chinese (Simplified Han, Hong Kong SAR China)", + "Chinese (Simplified Han, Macau SAR China)" : "Chinese (Simplified Han, Macau SAR China)", + "Chinese (Simplified Han, Singapore)" : "Chinese (Simplified Han, Singapore)", + "Chinese (Traditional Han)" : "Chinese (Traditional Han)", + "Chinese (Traditional Han, Hong Kong SAR China)" : "Chinese (Traditional Han, Hong Kong SAR China)", + "Chinese (Traditional Han, Macau SAR China)" : "Chinese (Traditional Han, Macau SAR China)", + "Chinese (Traditional Han, Taiwan)" : "Chinese (Traditional Han, Taiwan)", + "Chinese" : "Chinese", + "Cornish (United Kingdom)" : "Cornish (United Kingdom)", + "Cornish" : "Cornish", + "Croatian (Croatia)" : "Croatian (Croatia)", + "Croatian" : "Croatian", + "Czech (Czech Republic)" : "Czech (Czech Republic)", + "Czech" : "Czech", + "Danish (Denmark)" : "Danish (Danmark)", + "Danish" : "Dansk", + "Dutch (Belgium)" : "Dutch (Belgium)", + "Dutch (Netherlands)" : "Dutch (Netherlands)", + "Dutch" : "Dutch", + "Embu (Kenya)" : "Embu (Kenya)", + "Embu" : "Embu", + "English (American Samoa)" : "English (American Samoa)", + "English (Australia)" : "English (Australia)", + "English (Belgium)" : "English (Belgium)", + "English (Belize)" : "English (Belize)", + "English (Botswana)" : "English (Botswana)", + "English (Canada)" : "English (Canada)", + "English (Guam)" : "English (Guam)", + "English (Hong Kong SAR China)" : "English (Hong Kong SAR China)", + "English (India)" : "English (India)", + "English (Ireland)" : "English (Ireland)", + "English (Jamaica)" : "English (Jamaica)", + "English (Malta)" : "English (Malta)", + "English (Marshall Islands)" : "English (Marshall Islands)", + "English (Mauritius)" : "English (Mauritius)", + "English (Namibia)" : "English (Namibia)", + "English (New Zealand)" : "English (New Zealand)", + "English (Northern Mariana Islands)" : "English (Northern Mariana Islands)", + "English (Pakistan)" : "English (Pakistan)", + "English (Philippines)" : "English (Philippines)", + "English (Singapore)" : "English (Singapore)", + "English (South Africa)" : "English (South Africa)", + "English (Trinidad and Tobago)" : "English (Trinidad and Tobago)", + "English (U.S. Minor Outlying Islands)" : "English (U.S. Minor Outlying Islands)", + "English (U.S. Virgin Islands)" : "English (U.S. Virgin Islands)", + "English (United Kingdom)" : "English (Storbritannien)", + "English (United States)" : "English (United States)", + "English (Zimbabwe)" : "English (Zimbabwe)", + "English" : "English", + "Esperanto" : "Esperanto", + "Estonian (Estonia)" : "Estonian (Estonia)", + "Estonian" : "Estonian", + "Ewe (Ghana)" : "Ewe (Ghana)", + "Ewe (Togo)" : "Ewe (Togo)", + "Ewe" : "Ewe", + "Faroese (Faroe Islands)" : "Faroese (Faroe Islands)", + "Faroese" : "Faroese", + "Filipino (Philippines)" : "Filipino (Philippines)", + "Filipino" : "Filipino", + "Finnish (Finland)" : "Finsk (Finland)", + "Finnish" : "Finsk", + "French (Belgium)" : "French (Belgium)", + "French (Benin)" : "French (Benin)", + "French (Burkina Faso)" : "French (Burkina Faso)", + "French (Burundi)" : "French (Burundi)", + "French (Cameroon)" : "French (Cameroon)", + "French (Canada)" : "French (Canada)", + "French (Central African Republic)" : "French (Central African Republic)", + "French (Chad)" : "French (Chad)", + "French (Comoros)" : "French (Comoros)", + "French (Congo - Brazzaville)" : "French (Congo - Brazzaville)", + "French (Congo - Kinshasa)" : "French (Congo - Kinshasa)", + "French (Côte d’Ivoire)" : "French (Côte d’Ivoire)", + "French (Djibouti)" : "French (Djibouti)", + "French (Equatorial Guinea)" : "French (Equatorial Guinea)", + "French (France)" : "French (France)", + "French (Gabon)" : "French (Gabon)", + "French (Guadeloupe)" : "French (Guadeloupe)", + "French (Guinea)" : "French (Guinea)", + "French (Luxembourg)" : "French (Luxembourg)", + "French (Madagascar)" : "French (Madagascar)", + "French (Mali)" : "French (Mali)", + "French (Martinique)" : "French (Martinique)", + "French (Monaco)" : "French (Monaco)", + "French (Niger)" : "French (Niger)", + "French (Rwanda)" : "French (Rwanda)", + "French (Réunion)" : "French (Réunion)", + "French (Saint Barthélemy)" : "French (Saint Barthélemy)", + "French (Saint Martin)" : "French (Saint Martin)", + "French (Senegal)" : "French (Senegal)", + "French (Switzerland)" : "French (Switzerland)", + "French (Togo)" : "French (Togo)", + "French" : "French", + "Fulah (Senegal)" : "Fulah (Senegal)", + "Fulah" : "Fulah", + "Galician (Spain)" : "Galician (Spain)", + "Galician" : "Galician", + "Ganda (Uganda)" : "Ganda (Uganda)", + "Ganda" : "Ganda", + "Georgian (Georgia)" : "Georgian (Georgia)", + "Georgian" : "Georgian", + "German (Austria)" : "German (Austria)", + "German (Belgium)" : "German (Belgium)", + "German (Germany)" : "German (Germany)", + "German (Liechtenstein)" : "German (Liechtenstein)", + "German (Luxembourg)" : "German (Luxembourg)", + "German (Switzerland)" : "German (Switzerland)", + "German" : "German", + "Greek (Cyprus)" : "Greek (Cyprus)", + "Greek (Greece)" : "Greek (Greece)", + "Greek" : "Greek", + "Gujarati (India)" : "Gujarati (India)", + "Gujarati" : "Gujarati", + "Gusii (Kenya)" : "Gusii (Kenya)", + "Gusii" : "Gusii", + "Hausa (Latin)" : "Hausa (Latin)", + "Hausa (Latin, Ghana)" : "Hausa (Latin, Ghana)", + "Hausa (Latin, Niger)" : "Hausa (Latin, Niger)", + "Hausa (Latin, Nigeria)" : "Hausa (Latin, Nigeria)", + "Hausa" : "Hausa", + "Hawaiian (United States)" : "Hawaiian (United States)", + "Hawaiian" : "Hawaiian", + "Hebrew (Israel)" : "Hebrew (Israel)", + "Hebrew" : "Hebrew", + "Hindi (India)" : "Hindi (India)", + "Hindi" : "Hindi", + "Hungarian (Hungary)" : "Hungarian (Hungary)", + "Hungarian" : "Hungarian", + "Icelandic (Iceland)" : "Icelandic (Iceland)", + "Icelandic" : "Icelandic", + "Igbo (Nigeria)" : "Igbo (Nigeria)", + "Igbo" : "Igbo", + "Indonesian (Indonesia)" : "Indonesian (Indonesia)", + "Indonesian" : "Indonesian", + "Irish (Ireland)" : "Irish (Ireland)", + "Irish" : "Irish", + "Italian (Italy)" : "Italian (Italy)", + "Italian (Switzerland)" : "Italian (Switzerland)", + "Italian" : "Italian", + "Japanese (Japan)" : "Japanese (Japan)", + "Japanese" : "Japanese", + "Kabuverdianu (Cape Verde)" : "Kabuverdianu (Cape Verde)", + "Kabuverdianu" : "Kabuverdianu", + "Kabyle (Algeria)" : "Kabyle (Algeria)", + "Kabyle" : "Kabyle", + "Kalaallisut (Greenland)" : "Kalaallisut (Greenland)", + "Kalaallisut" : "Kalaallisut", + "Kalenjin (Kenya)" : "Kalenjin (Kenya)", + "Kalenjin" : "Kalenjin", + "Kamba (Kenya)" : "Kamba (Kenya)", + "Kamba" : "Kamba", + "Kannada (India)" : "Kannada (India)", + "Kannada" : "Kannada", + "Kazakh (Cyrillic)" : "Kazakh (Cyrillic)", + "Kazakh (Cyrillic, Kazakhstan)" : "Kazakh (Cyrillic, Kazakhstan)", + "Kazakh" : "Kazakh", + "Khmer (Cambodia)" : "Khmer (Cambodia)", + "Khmer" : "Khmer", + "Kikuyu (Kenya)" : "Kikuyu (Kenya)", + "Kikuyu" : "Kikuyu", + "Kinyarwanda (Rwanda)" : "Kinyarwanda (Rwanda)", + "Kinyarwanda" : "Kinyarwanda", + "Konkani (India)" : "Konkani (India)", + "Konkani" : "Konkani", + "Korean (South Korea)" : "Korean (South Korea)", + "Korean" : "Korean", + "Koyra Chiini (Mali)" : "Koyra Chiini (Mali)", + "Koyra Chiini" : "Koyra Chiini", + "Koyraboro Senni (Mali)" : "Koyraboro Senni (Mali)", + "Koyraboro Senni" : "Koyraboro Senni", + "Langi (Tanzania)" : "Langi (Tanzania)", + "Langi" : "Langi", + "Latvian (Latvia)" : "Latvian (Latvia)", + "Latvian" : "Latvian", + "Lithuanian (Lithuania)" : "Lithuanian (Lithuania)", + "Lithuanian" : "Lithuanian", + "Luo (Kenya)" : "Luo (Kenya)", + "Luo" : "Luo", + "Luyia (Kenya)" : "Luyia (Kenya)", + "Luyia" : "Luyia", + "Macedonian (Macedonia)" : "Macedonian (Macedonia)", + "Macedonian" : "Macedonian", + "Machame (Tanzania)" : "Machame (Tanzania)", + "Machame" : "Machame", + "Makonde (Tanzania)" : "Makonde (Tanzania)", + "Makonde" : "Makonde", + "Malagasy (Madagascar)" : "Malagasy (Madagascar)", + "Malagasy" : "Malagasy", + "Malay (Brunei)" : "Malay (Brunei)", + "Malay (Malaysia)" : "Malay (Malaysia)", + "Malay" : "Malay", + "Malayalam (India)" : "Malayalam (India)", + "Malayalam" : "Malayalam", + "Maltese (Malta)" : "Maltese (Malta)", + "Maltese" : "Maltese", + "Manx (United Kingdom)" : "Manx (United Kingdom)", + "Manx" : "Manx", + "Marathi (India)" : "Marathi (India)", + "Marathi" : "Marathi", + "Masai (Kenya)" : "Masai (Kenya)", + "Masai (Tanzania)" : "Masai (Tanzania)", + "Masai" : "Masai", + "Meru (Kenya)" : "Meru (Kenya)", + "Meru" : "Meru", + "Morisyen (Mauritius)" : "Morisyen (Mauritius)", + "Morisyen" : "Morisyen", + "Nama (Namibia)" : "Nama (Namibia)", + "Nama" : "Nama", + "Nepali (India)" : "Nepali (India)", + "Nepali (Nepal)" : "Nepali (Nepal)", + "Nepali" : "Nepali", + "North Ndebele (Zimbabwe)" : "North Ndebele (Zimbabwe)", + "North Ndebele" : "North Ndebele", + "Norwegian Bokmål (Norway)" : "Norwegian Bokmål (Norway)", + "Norwegian Bokmål" : "Norwegian Bokmål", + "Norwegian Nynorsk (Norway)" : "Norwegian Nynorsk (Norway)", + "Norwegian Nynorsk" : "Norwegian Nynorsk", + "Nyankole (Uganda)" : "Nyankole (Uganda)", + "Nyankole" : "Nyankole", + "Oriya (India)" : "Oriya (India)", + "Oriya" : "Oriya", + "Oromo (Ethiopia)" : "Oromo (Ethiopia)", + "Oromo (Kenya)" : "Oromo (Kenya)", + "Oromo" : "Oromo", + "Pashto (Afghanistan)" : "Pashto (Afghanistan)", + "Pashto" : "Pashto", + "Persian (Afghanistan)" : "Persian (Afghanistan)", + "Persian (Iran)" : "Persian (Iran)", + "Persian" : "Persian", + "Polish (Poland)" : "Polish (Poland)", + "Polish" : "Polish", + "Portuguese (Brazil)" : "Portuguese (Brazil)", + "Portuguese (Guinea-Bissau)" : "Portuguese (Guinea-Bissau)", + "Portuguese (Mozambique)" : "Portuguese (Mozambique)", + "Portuguese (Portugal)" : "Portuguese (Portugal)", + "Portuguese" : "Portuguese", + "Punjabi (Arabic)" : "Punjabi (Arabic)", + "Punjabi (Arabic, Pakistan)" : "Punjabi (Arabic, Pakistan)", + "Punjabi (Gurmukhi)" : "Punjabi (Gurmukhi)", + "Punjabi (Gurmukhi, India)" : "Punjabi (Gurmukhi, India)", + "Punjabi" : "Punjabi", + "Romanian (Moldova)" : "Romanian (Moldova)", + "Romanian (Romania)" : "Romanian (Romania)", + "Romanian" : "Romanian", + "Romansh (Switzerland)" : "Romansh (Switzerland)", + "Romansh" : "Romansh", + "Rombo (Tanzania)" : "Rombo (Tanzania)", + "Rombo" : "Rombo", + "Russian (Moldova)" : "Russian (Moldova)", + "Russian (Russia)" : "Russian (Russia)", + "Russian (Ukraine)" : "Russian (Ukraine)", + "Russian" : "Russian", + "Rwa (Tanzania)" : "Rwa (Tanzania)", + "Rwa" : "Rwa", + "Samburu (Kenya)" : "Samburu (Kenya)", + "Samburu" : "Samburu", + "Sango (Central African Republic)" : "Sango (Central African Republic)", + "Sango" : "Sango", + "Sena (Mozambique)" : "Sena (Mozambique)", + "Sena" : "Sena", + "Serbian (Cyrillic)" : "Serbian (Cyrillic)", + "Serbian (Cyrillic, Bosnia and Herzegovina)" : "Serbian (Cyrillic, Bosnia and Herzegovina)", + "Serbian (Cyrillic, Montenegro)" : "Serbian (Cyrillic, Montenegro)", + "Serbian (Cyrillic, Serbia)" : "Serbian (Cyrillic, Serbia)", + "Serbian (Latin)" : "Serbian (Latin)", + "Serbian (Latin, Bosnia and Herzegovina)" : "Serbian (Latin, Bosnia and Herzegovina)", + "Serbian (Latin, Montenegro)" : "Serbian (Latin, Montenegro)", + "Serbian (Latin, Serbia)" : "Serbian (Latin, Serbia)", + "Serbian" : "Serbian", + "Shona (Zimbabwe)" : "Shona (Zimbabwe)", + "Shona" : "Shona", + "Sichuan Yi (China)" : "Sichuan Yi (China)", + "Sichuan Yi" : "Sichuan Yi", + "Sinhala (Sri Lanka)" : "Sinhala (Sri Lanka)", + "Sinhala" : "Sinhala", + "Slovak (Slovakia)" : "Slovak (Slovakia)", + "Slovak" : "Slovak", + "Slovenian (Slovenia)" : "Slovenian (Slovenia)", + "Slovenian" : "Slovenian", + "Soga (Uganda)" : "Soga (Uganda)", + "Soga" : "Soga", + "Somali (Djibouti)" : "Somali (Djibouti)", + "Somali (Ethiopia)" : "Somali (Ethiopia)", + "Somali (Kenya)" : "Somali (Kenya)", + "Somali (Somalia)" : "Somali (Somalia)", + "Somali" : "Somali", + "Spanish (Argentina)" : "Spanish (Argentina)", + "Spanish (Bolivia)" : "Spanish (Bolivia)", + "Spanish (Chile)" : "Spanish (Chile)", + "Spanish (Colombia)" : "Spanish (Colombia)", + "Spanish (Costa Rica)" : "Spanish (Costa Rica)", + "Spanish (Dominican Republic)" : "Spanish (Dominican Republic)", + "Spanish (Ecuador)" : "Spanish (Ecuador)", + "Spanish (El Salvador)" : "Spanish (El Salvador)", + "Spanish (Equatorial Guinea)" : "Spanish (Equatorial Guinea)", + "Spanish (Guatemala)" : "Spanish (Guatemala)", + "Spanish (Honduras)" : "Spanish (Honduras)", + "Spanish (Latin America)" : "Spanish (Latin America)", + "Spanish (Mexico)" : "Spanish (Mexico)", + "Spanish (Nicaragua)" : "Spanish (Nicaragua)", + "Spanish (Panama)" : "Spanish (Panama)", + "Spanish (Paraguay)" : "Spanish (Paraguay)", + "Spanish (Peru)" : "Spanish (Peru)", + "Spanish (Puerto Rico)" : "Spanish (Puerto Rico)", + "Spanish (Spain)" : "Spanish (Spain)", + "Spanish (United States)" : "Spanish (United States)", + "Spanish (Uruguay)" : "Spanish (Uruguay)", + "Spanish (Venezuela)" : "Spanish (Venezuela)", + "Spanish" : "Spanish", + "Swahili (Kenya)" : "Swahili (Kenya)", + "Swahili (Tanzania)" : "Swahili (Tanzania)", + "Swahili" : "Swahili", + "Swedish (Finland)" : "Svensk (Finland)", + "Swedish (Sweden)" : "Svensk (Sverige)", + "Swedish" : "Svensk", + "Swiss German (Switzerland)" : "Swiss German (Switzerland)", + "Swiss German" : "Swiss German", + "Tachelhit (Latin)" : "Tachelhit (Latin)", + "Tachelhit (Latin, Morocco)" : "Tachelhit (Latin, Morocco)", + "Tachelhit (Tifinagh)" : "Tachelhit (Tifinagh)", + "Tachelhit (Tifinagh, Morocco)" : "Tachelhit (Tifinagh, Morocco)", + "Tachelhit" : "Tachelhit", + "Taita (Kenya)" : "Taita (Kenya)", + "Taita" : "Taita", + "Tamil (India)" : "Tamil (India)", + "Tamil (Sri Lanka)" : "Tamil (Sri Lanka)", + "Tamil" : "Tamil", + "Telugu (India)" : "Telugu (India)", + "Telugu" : "Telugu", + "Teso (Kenya)" : "Teso (Kenya)", + "Teso (Uganda)" : "Teso (Uganda)", + "Teso" : "Teso", + "Thai (Thailand)" : "Thai (Thailand)", + "Thai" : "Thai", + "Tibetan (China)" : "Tibetan (China)", + "Tibetan (India)" : "Tibetan (India)", + "Tibetan" : "Tibetan", + "Tigrinya (Eritrea)" : "Tigrinya (Eritrea)", + "Tigrinya (Ethiopia)" : "Tigrinya (Ethiopia)", + "Tigrinya" : "Tigrinya", + "Tonga (Tonga)" : "Tonga (Tonga)", + "Tonga" : "Tonga", + "Turkish (Turkey)" : "Turkish (Turkey)", + "Turkish" : "Turkish", + "Ukrainian (Ukraine)" : "Ukrainian (Ukraine)", + "Ukrainian" : "Ukrainian", + "Urdu (India)" : "Urdu (India)", + "Urdu (Pakistan)" : "Urdu (Pakistan)", + "Urdu" : "Urdu", + "Uzbek (Arabic)" : "Uzbek (Arabic)", + "Uzbek (Arabic, Afghanistan)" : "Uzbek (Arabic, Afghanistan)", + "Uzbek (Cyrillic)" : "Uzbek (Cyrillic)", + "Uzbek (Cyrillic, Uzbekistan)" : "Uzbek (Cyrillic, Uzbekistan)", + "Uzbek (Latin)" : "Uzbek (Latin)", + "Uzbek (Latin, Uzbekistan)" : "Uzbek (Latin, Uzbekistan)", + "Uzbek" : "Uzbek", + "Vietnamese (Vietnam)" : "Vietnamese (Vietnam)", + "Vietnamese" : "Vietnamese", + "Vunjo (Tanzania)" : "Vunjo (Tanzania)", + "Vunjo" : "Vunjo", + "Welsh (United Kingdom)" : "Welsh (United Kingdom)", + "Welsh" : "Welsh", + "Yoruba (Nigeria)" : "Yoruba (Nigeria)", + "Yoruba" : "Yoruba", + "Zulu (South Africa)" : "Zulu (South Africa)", + "Zulu" : "Zulu", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Tvåfaktorsautentisering kan påtvingas för alla\tanvändare och specifika grupper. Om de inte har en tvåfaktorsleverantör konfigurerad kommer de inte att kunna logga in i systemet.", + "Enforce two-factor authentication" : "Påtvinga tvåfaktorsautentisering", + "Limit to groups" : "Begränsa till grupper", + "Enforcement of two-factor authentication can be set for certain groups only." : "Påtvingad tvåfaktorsautentisering kan bara aktiveras för vissa grupper.", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "Tvåfaktorsautentisering är påtvingad för alla\tmedlemmar i följande grupper.", + "Enforced groups" : "Påtvingade grupper", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "Tvåfaktorsautentisering är inte påtvingad för\tmedlemmar i följande grupper.", + "Excluded groups" : "Exkluderade grupper", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "När grupper väljs/exkluderas används följande logik för att avgöra om en användare har 2FA påtvingad: Om inga grupper väljs är 2FA aktiverat för alla förutom medlemmar i exkluderade grupper. Om grupper väljs är 2FA aktiverat för alla medlemmar i dessa grupper. Om en användare är medlem i både en vald och exkluderad grupp, har den valda företräde och 2FA påtvingas.", + "Save changes" : "Spara ändringar", + "Marked for remote wipe" : "Markerad för fjärrensning", + "Device settings" : "Enhetsinställningar", + "Allow filesystem access" : "Tillåt åtkomst till filsystemet", + "Rename" : "Byt namn", + "Revoke" : "Återkalla", + "Wipe device" : "Rensa enhet", + "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Återkallning kan förhindra att enheten rensas om inte rensningen redan har startat.", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome för Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Nextcloud iOS-app", + "Nextcloud Android app" : "Nextcloud Android-app", + "Nextcloud Talk for iOS" : "Nextcloud Talk för iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk för Android", + "Sync client - {os}" : "Synkklient - {os}", + "This session" : "Denna session ", + "Device" : "Enhet", + "Last activity" : "Senaste aktivitet", + "Devices & sessions" : "Enheter & sessioner", + "Web, desktop and mobile clients currently logged in to your account." : "Webb, skrivbordsklienter och mobila klienter som är inloggade på ditt konto just nu.", + "Do you really want to wipe your data from this device?" : "Vill du verkligen radera dina data från den här enheten?", + "Confirm wipe" : "Bekräfta radering", + "Error while creating device token" : "Fel vid skapande av enhetstoken", + "Error while updating device token scope" : "Fel vid uppdatering av enhetstokens omfång", + "Error while updating device token name" : "Fel vid uppdatering av enhetstokens namn", + "Error while deleting the token" : "Fel vid borttagning av token", + "Error while wiping the device with the token" : "Fel uppstod vid rensning av enheten", + "App name" : "Appnamn", + "Create new app password" : "Skapa nytt applösenord", + "Use the credentials below to configure your app or device." : "Använd följande autentiseringsuppgifter för att konfigurera din app eller enhet", + "For security reasons this password will only be shown once." : "Av säkerhetsskäl kommer lösenordet endast att visas en gång", + "Username" : "Användarnamn", + "Password" : "Lösenord", + "Done" : "Färdig", + "Show QR code for mobile apps" : "Visa QR-kod för mobila appar", + "Copied!" : "Kopierad!", + "Copy" : "Kopiera", + "Could not copy app password. Please copy it manually." : "Det gick inte att kopiera app-lösenordet. Kopiera det manuellt.", + "This app is supported via your current Nextcloud subscription." : "Den här appen stöds via din nuvarande Nextcloud-prenumeration.", + "Supported" : "Stöds", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Officiella appar är utvecklade av och inom gemenskapen. De erbjuder central funktionalitet och är redo för att användas i produktion.", + "Official" : "Officiell", + "by" : "av", + "Update to {version}" : "Uppdatera till {version}", + "Remove" : "Ta bort", + "Disable" : "Inaktivera", + "All" : "Alla", + "Limit app usage to groups" : "Begränsa app-användning till grupper", + "No results" : "Inga resultat", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Denna app har ingen lägsta Nextcloud-version tilldelad. Detta kommer att innebära ett problem i framtiden.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Denna app har ingen minimum Nextcloud-version tilldelad. Detta kommer att innebära ett problem i framtiden.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Denna applikation kan inte installeras då följande beroenden inte är uppfyllda: %s", + "View in store" : "Visa i butik", + "Visit website" : "Besök webbsida", + "Report a bug" : "Rapportera ett problem", + "User documentation" : "Användardokumentation", + "Admin documentation" : "Administratörsdokumentation", + "Developer documentation" : "Utvecklardokumentation", + "Update to {update}" : "Uppdatera till {update}", + "Results from other categories" : "Resultat från andra kategorier", + "No apps found for your version" : "Inga appar funna för din version", + "Disable all" : "Inaktivera alla", + "Enable all" : "Aktivera alla", + "Download and enable" : "Ladda ned och aktivera", + "Enable" : "Aktivera", + "Enable untested app" : "Aktivera ej testad app", + "The app will be downloaded from the app store" : "Appen kommer hämtas från appstore", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Den här appen är inte markerad som kompatibel med din Nextcloud-version. Om du fortsätter kan du fortfarande installera appen. Observera att appen kanske inte fungerar som förväntat.", + "You do not have permissions to see the details of this user" : "Du har inte behörighet att se detaljerna för den här användaren", + "The backend does not support changing the display name" : "Servern stöder inte ändring av visningsnamn", + "New password" : "Nytt lösenord", + "Add user in group" : "Lägg till användare i grupp", + "Set user as admin for" : "Gör användare till admin för", + "Select user quota" : "Välj användarens quota", + "No language set" : "Inget språk angivet", + "Never" : "Aldrig", + "Delete user" : "Radera användare", + "Wipe all devices" : "Rensa alla enheter", + "Disable user" : "Stäng av användare", + "Enable user" : "Aktivera användare", + "Resend welcome email" : "Skicka om välkomstmeddelande via e-post", + "{size} used" : "{size} använt", + "Welcome mail sent!" : "Välkomstmeddelande skickat via e-post!", + "Display name" : "Visningsnamn", + "Email" : "E-post", + "Group admin for" : "Gruppadministratör för", + "Quota" : "Lagringsutrymme", + "Language" : "Språk", + "Storage location" : "Lagringsplats", + "User backend" : "Användarbackend", + "Last login" : "Senaste inloggning", + "Will be autogenerated" : "Kommer att autogenereras", + "Default language" : "Standardspråk", + "Add a new user" : "Lägg till ny användare", + "No users in here" : "Inga användare här", + "Default quota" : "Förvalt lagringsutrymme", + "Password change is disabled because the master key is disabled" : "Lösenordsbyte är inaktiverat eftersom huvudnyckeln är inaktiverad", + "Common languages" : "Vanliga språk", + "All languages" : "Alla språk", + "Your apps" : "Dina appar", + "Active apps" : "Aktiva appar", + "Disabled apps" : "Inaktiverade appar", + "Updates" : "Uppdateringar", + "App bundles" : "App paket", + "{license}-licensed" : "{license}-licensierad", + "New user" : "Ny användare", + "Default quota:" : "Standardkvot:", + "Select default quota" : "Välj förvalt lagringsutrymme", + "Show Languages" : "Visa språk", + "Show last login" : "Visa senaste inloggning", + "Show user backend" : "Visa användar-backend", + "Show storage path" : "Visa lagringsväg", + "You are about to remove the group {group}. The users will NOT be deleted." : "Du håller på att ta bort gruppen {group}. Användarna kommer INTE att raderas.", + "Please confirm the group removal " : "Bekräfta borttagning av gruppen", + "Remove group" : "Radera grupp", + "Admins" : "Administratörer", + "Disabled users" : "Inaktiva användare", + "Everyone" : "Alla", + "Add group" : "Lägg till grupp", + "An error occured during the request. Unable to proceed." : "Ett fel uppstod under förfrågan. Kan inte fortsätta.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Appen har aktiverats men måste uppdateras. Du kommer att omdirigeras till uppdateringssidan om 5 sekunder.", + "App update" : "Appuppdatering", + "Error: This app can not be enabled because it makes the server unstable" : "Fel: Denna app kan inte aktiveras eftersom det gör servern instabil", + "SSL Root Certificates" : "SSL Root certifikat", + "Common Name" : "Vanligt namn", + "Valid until" : "Giltigt till", + "Issued By" : "Utfärdat av", + "Valid until %s" : "Giltigt till %s", + "Import root certificate" : "Importera rotcertifikat", + "Administrator documentation" : "Administratörsdokumentation", + "Documentation" : "Dokumentation", + "Forum" : "Forum", + "None" : "Ingen", + "Login" : "Logga in", + "Plain" : "Enkel", + "NT LAN Manager" : "NT LAN Manager", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "E-postserver", + "Open documentation" : "Öppna dokumentation", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Det är viktigt att sätta upp denna server för att kunna sända e-post, exempelvis lösenordsåterställningar och notifieringar.", + "Send mode" : "Sändningsläge", + "Encryption" : "Kryptering", + "Sendmail mode" : "Sendmail-läge", + "From address" : "Från adress", + "mail" : "e-post", + "Authentication method" : "Autentiseringsmetod", + "Authentication required" : "Autentisering krävs", + "Server address" : "Serveradress", + "Port" : "Port", + "Credentials" : "Inloggningsuppgifter", + "SMTP Username" : "SMTP-användarnamn", + "SMTP Password" : "SMTP-lösenord", + "Save" : "Spara", + "Test email settings" : "Testa e-postinställningar", + "Send email" : "Skicka e-post", + "Security & setup warnings" : "Säkerhet & systemvarningar", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Det är viktigt för säkerhet och prestanda av din instans att allt är korrekt konfigurerat. För att hjälpa dig med det gör vi några automatiska kontroller. Se den länkade dokumentationen för mer information.", + "All checks passed." : "Alla kontroller lyckades!", + "There are some errors regarding your setup." : "Det finns några fel angående din inställning.", + "There are some warnings regarding your setup." : "Det finns några varningar angående din inställning.", + "Checking for system and security issues." : "Kontrollerar system och säkerhetsproblem.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Dubbelkolla <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installationsguiderna ↗</a>, och kontrollera eventuella fel eller varningar i <a href=\"%2$s\">loggen</a>.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Kontrollera säkerheten för ditt Nextcloud över <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">vår säkerhetsgenomsökning ↗</a>.", + "Version" : "Version", + "Two-Factor Authentication" : "Tvåfaktorsautentisering", + "Server-side encryption" : "Serverkryptering", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Kryptering från servern möjliggör kryptering av filer som är uppladdade till servern. Detta innebär vissa begränsningar som prestandaförluster, så aktivera bara om det behövs.", + "Enable server-side encryption" : "Aktivera kryptering på server.", + "Please read carefully before activating server-side encryption: " : "OBS: Var god läs noga innan kryptering aktiveras på servern.", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "När kryptering är aktiverat, så kommer alla filer som laddas upp till servern från den tidpunkt och framåt bli krypterad på servern. Det kommer bara vara möjligt att inaktivera kryptering vid ett senare tillfälle om krypteringsmodulen stödjer den funktionen och alla förvillkor (exempelvis använder återställningsnyckel) är mötta.", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Enbart kryptering garanterar inte säkerhet i systemet. Vänligen se dokumentationen för ytterligare information om hur krypteringsappen fungerar, och de supporterade användarfallen.", + "Be aware that encryption always increases the file size." : "OBS! Observera att kryptering alltid ökar filstorleken", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Det är alltid en god ide att skapa regelbundna säkerhetskopior av din data, om kryptering används var säker på att även krypteringsnycklarna säkerhetskopieras tillsammans med din data.", + "This is the final warning: Do you really want to enable encryption?" : "Detta är en slutgiltig varning: Vill du verkligen aktivera kryptering?", + "Enable encryption" : "Aktivera kryptering", + "No encryption module loaded, please enable an encryption module in the app menu." : "Ingen krypteringsmodul laddad, var god aktivera krypteringsmodulen i applikationsmenyn.", + "Select default encryption module:" : "Välj krypteringsmodul:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Du behöver migrera dina krypteringsnycklar från den gamla krypteringen (owncloud <= 8.0) till den nya. Var god aktivera \"Default encryption module\" och kör 'occ encryption:migrate'.", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Du behöver migrera dina krypteringsnycklar från den gamla krypteringen (owncloud <= 8.0) till den nya.", + "Start migration" : "Starta migrering", + "Background jobs" : "Bakgrundsjobb", + "Last job ran %s." : "Sista jobbet kördes %s.", + "Last job execution ran %s. Something seems wrong." : "Sista jobbexekveringen körde %s. Något verkar vara fel.", + "Background job didn’t run yet!" : "Bakgrundsjobb har inte kört ännu!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "För optimal prestanda är det viktigt att konfigurera bakgrundsjobb korrekt. För större instanser 'Cron' är den rekommenderade inställningen. Vänligen se dokumentationen för mer information.", + "Pick background job setting" : "Välj inställning för bakgrundsjobb", + "Execute one task with each page loaded" : "Exekvera en uppgift vid varje sidladdning", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php är registrerat hos en webcron-tjänst att köra cron.php var 5: e minut över HTTP.", + "Use system cron service to call the cron.php file every 5 minutes." : "Använd systemets cron-tjänst för att anropa cron.php var 5: e minut.", + "The cron.php needs to be executed by the system user \"%s\"." : "Cron.php behöver exekveras av systemanvändaren \"%s\".", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "För att köra detta behöver du PHP POSIX-tillägget. Se {linkstart}PHP dokumentation{linkend} för mer detaljer.", + "Sharing" : "Dela", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Som administratör kan du fininställa delningsbeteendet. Vänligen se dokumentationen för mer information.", + "Allow apps to use the Share API" : "Tillåt applikationer att använda API för delning", + "Allow users to share via link" : "Tillåt användare att dela via länk", + "Allow public uploads" : "Tillåt offentlig uppladdning", + "Always ask for a password" : "Fråga alltid efter lösenord", + "Enforce password protection" : "Tillämpa lösenordskydd", + "Set default expiration date" : "Ställ in standardutgångsdatum", + "Expire after " : "Förfaller efter", + "days" : "dagar", + "Enforce expiration date" : "Tillämpa förfallodatum", + "Allow resharing" : "Tillåt vidaredelning", + "Allow sharing with groups" : "Tillåt delning med grupper", + "Restrict users to only share with users in their groups" : "Begränsa användare till att enbart kunna dela med användare i deras grupper", + "Exclude groups from sharing" : "Exkludera grupp från att dela", + "These groups will still be able to receive shares, but not to initiate them." : "Dessa grupper kommer fortfarande kunna ta emot delningar, men inte skapa delningar.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Tillåt autokomplettering av användarnamn i delningsdialogen. Om detta är inaktiverat måste fullständigt användarnamn och epostadress anges.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Visa friskrivningstext på offentliga uppladdningssidan. (Visas endast när fil-listan är gömd.)", + "This text will be shown on the public link upload page when the file list is hidden." : "Denna text kommer att visa på den offentliga uppladdnings-sidan när fil-listan är gömd.", + "Default share permissions" : "Standardrättigheter för delning", + "Personal" : "Privat", + "Administration" : "Administration", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Utvecklat av {communityopen}Nextcloud-gemenskapen{linkclose}, {githubopen}källkoden{linkclose} är licensierad enligt {licenseopen}AGPL-standard{linkclose}.", + "Like our Facebook page" : "Gilla vår Facebook-sida", + "Follow us on Twitter" : "Följ oss på Twitter", + "Follow us on Mastodon" : "Följ oss på Mastodon", + "Check out our blog" : "Kolla in vår blogg", + "Subscribe to our newsletter" : "Prenumerera på vårt nyhetsbrev", + "Profile picture" : "Profilbild", + "Upload new" : "Ladda upp ny", + "Select from Files" : "Välj från Filer", + "Remove image" : "Radera bild", + "png or jpg, max. 20 MB" : "png eller jpg, max 20 MB", + "Picture provided by original account" : "Bild gjordes tillgänglig av orginalkonto", + "Cancel" : "Avbryt", + "Choose as profile picture" : "Välj som profilbild", + "Details" : "Detaljer", + "You are a member of the following groups:" : "Du är medlem i följande grupper:", + "You are using <strong>%s</strong>" : "Du använder <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Du använder <strong>%1$s</strong> av <strong>%2$s</strong> (<strong>%3$s %%</strong>)", + "Full name" : "Namn", + "No display name set" : "Inget visningsnamn angivet", + "Your email address" : "Din e-postadress", + "No email address set" : "Ingen e-postadress angiven", + "For password reset and notifications" : "För lösenordsåterställning och notifikationer", + "Phone number" : "Telefonnummer", + "Your phone number" : "Ditt telefonnummer", + "Address" : "Ort/Stad", + "Your postal address" : "Ort/Stad", + "Website" : "Webbsida", + "It can take up to 24 hours before the account is displayed as verified." : "Det kan ta upp till 24 timmar innan kontot visas som verifierat.", + "Link https://…" : "Länk https://...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Twitter handle @…", + "Help translate" : "Hjälp oss att översätta", + "Locale" : "Plats", + "Current password" : "Nuvarande lösenord", + "Change password" : "Ändra lösenord", + "Use a second factor besides your password to increase security for your account." : "Använd en andra faktor förutom ditt lösenord för att öka säkerheten för ditt konto.", + "Disconnect" : "Koppla från", + "Not supported!" : "Stöds inte!", + "Press ⌘-C to copy." : "Tryck ⌘-C för att kopiera.", + "Press Ctrl-C to copy." : "Tryck Ctrl-C för att kopiera.", + "Error while loading browser sessions and device tokens" : "Fel vid inläsning av webbläsarsessioner och enhetstoken.", + "Store credentials" : "Lagra inloggningsuppgifter", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php är registrerat hos en webcron-tjänst att köra cron.php varje kvart över HTTP.", + "Use system cron service to call the cron.php file every 15 minutes." : "Använd systemets cron-tjänst för att anropa cron.php varje kvart.", + "Follow us on Google+" : "Följ oss på Google+" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} \ No newline at end of file diff --git a/apps/settings/l10n/tr.js b/apps/settings/l10n/tr.js new file mode 100644 index 00000000000..9cf465a469f --- /dev/null +++ b/apps/settings/l10n/tr.js @@ -0,0 +1,823 @@ +OC.L10N.register( + "settings", + { + "{actor} added you to group {group}" : "{actor} sizi {group} grubuna ekledi", + "You added {user} to group {group}" : "{user} kullanıcısını {group} grubuna eklediniz", + "{actor} added {user} to group {group}" : "{actor} {user} kullanıcısını {group} grubuna ekledi", + "An administrator added you to group {group}" : "Bir yönetici sizi {group} grubuna ekledi", + "An administrator added {user} to group {group}" : "Bir yönetici {user} kullanıcısını {group} grubuna ekledi", + "{actor} removed you from group {group}" : "{actor} sizi {group} grubundan çıkardı", + "You removed {user} from group {group}" : "{user} kullanıcısını {group} grubundan çıkardınız", + "{actor} removed {user} from group {group}" : "{actor} {user} kullanıcısını {group} grubundan çıkardı", + "An administrator removed you from group {group}" : "Bir yönetici sizi {group} grubundan çıkardı", + "An administrator removed {user} from group {group}" : "Bir yönetici {user} kullanıcısını {group} grubundan çıkardı", + "Your <strong>group memberships</strong> were modified" : "<strong>Grup üyelikleriniz</strong> değiştirildi", + "{actor} changed your password" : "{actor} parolanızı değiştirdi", + "You changed your password" : "Parolanızı değiştirdiniz", + "Your password was reset by an administrator" : "Parolanız bir yönetici tarafından sıfırlandı", + "{actor} changed your email address" : "{actor} e-posta adresinizi değiştirdi", + "You changed your email address" : "E-posta adresinizi değiştirdiniz", + "Your email address was changed by an administrator" : "E-posta adresiniz bir yönetici tarafından değiştirildi", + "You created app password \"{token}\"" : "\"{token}\" uygulama parolasını oluşturdunuz", + "You deleted app password \"{token}\"" : "\"{token}\" uygulama parolasını sildiniz", + "You renamed app password \"{token}\" to \"{newToken}\"" : "\"{token}\" olan uygulama parolasını \"{newToken}\" olarak yeniden adlandırdınız", + "You granted filesystem access to app password \"{token}\"" : "\"{token}\" uygulama parolasına dosya sistemi erişim izni verdiniz", + "You revoked filesystem access from app password \"{token}\"" : "\"{token}\" uygulama parolasından dosya sistemi erişim iznini kaldırdınız", + "Security" : "Güvenlik", + "You successfully logged in using two-factor authentication (%1$s)" : "İki aşamalı kimlik doğrulama ile oturum açtınız (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "İki aşamalı kimlik doğrulama ile oturum açma girişimi reddedildi (%1$s)", + "Remote wipe was started on %1$s" : "Uzaktan silme işlemi %1$s zamanında başlatıldı", + "Remote wipe has finished on %1$s" : "Uzaktan silme işlemi %1$s zamanında tamamlandı", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "<strong>Parolanız</strong> ya da <strong>e-posta adresiniz</strong> değiştirildi", + "Couldn't remove app." : "Uygulama kaldırılamadı.", + "Couldn't update app." : "Uygulama güncellenemedi.", + "Wrong password" : "Parola yanlış", + "Saved" : "Kaydedildi", + "No user supplied" : "Kullanıcı belirtilmemiş", + "Unable to change password" : "Parola değiştirilemedi", + "Authentication error" : "Kimlik doğrulama sorunu", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Lütfen bir yönetici kurtarma parolası yazın, yoksa tüm kullanıcı verileri kaybolur", + "Wrong admin recovery password. Please check the password and try again." : "Yönetici kurtarma parolası yanlış. Lütfen parolayı denetleyip yeniden deneyin.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Yönetim bölümünden parola değişikliği yapılamaz, ancak kullanıcının şifreleme anahtarı güncellendi.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Uygulama mağazası ve Birleşik Bulut Paylaşımından uygulama kurma ve güncelleme", + "Federated Cloud Sharing" : "Birleşik Bulut Paylaşımı", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL eski bir %1$s sürümü kullanıyor (%2$s). Lütfen işletim sisteminizi güncelleyin, yoksa %3$s gibi özellikler düzgün çalışmaz.", + "Invalid SMTP password." : "SMTP parolası geçersiz.", + "Email setting test" : "E-posta ayarları sınaması", + "Well done, %s!" : "Tamamdır %s!", + "If you received this email, the email configuration seems to be correct." : "Bu e-postayı aldıysanız e-posta ayarları doğru olarak yapılmıştır.", + "Email could not be sent. Check your mail server log" : "E-posta gönderilemedi. E-posta sunucunuzun günlüklerine bakın", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "E-posta gönderilirken bir sorun çıktı. Lütfen ayarlarınızı gözden geçirin. (Hata: %s)", + "You need to set your user email before being able to send test emails." : "Sınama e-postaları göndermeden önce kullanıcı e-postasını ayarlamalısınız.", + "Invalid mail address" : "Posta adresi geçersiz", + "Settings saved" : "Ayarlar kaydedildi", + "Unable to change full name" : "Tam adınız değiştirilemedi", + "Unable to change email address" : "E-posta adresi değiştirilemedi", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Twitter hesabınızı doğrulamak için şu iletiyi Twitter üzerine gönderin (satır sonu olmadan gönderdiğinizden emin olun):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Web sitenizi doğrulamak için şu içeriği web sitenizin kök klasörüne '.well-known/CloudIdVerificationCode.txt' dosyası içine ekleyin (tüm içeriğin tek bir satır olarak eklendiğinden emin olun):", + "%1$s changed your password on %2$s." : "%1$s, %2$s üzerindeki parolanızı değiştirdi.", + "Your password on %s was changed." : "%s üzerindeki parolanız değiştirildi.", + "Your password on %s was reset by an administrator." : "%s üzerindeki parolanız bir yönetici tarafından sıfırlandı.", + "Password for %1$s changed on %2$s" : "%2$s üzerindeki %1$s parolası değiştirildi", + "Password changed for %s" : "%s parolası değiştirildi", + "If you did not request this, please contact an administrator." : "Bu işlemi siz başlatmadıysanız lütfen bir yönetici ile görüşün.", + "Your email address on %s was changed." : "%s üzerindeki e-posta adresiniz değiştirildi.", + "Your email address on %s was changed by an administrator." : "%s üzerindeki e-posta adresiniz bir yönetici tarafından değiştirildi.", + "Email address for %1$s changed on %2$s" : "%2$s üzerindeki %1$s e-posta değiştirildi", + "Email address changed for %s" : "%s e-posta adresi değiştirildi", + "The new email address is %s" : "Yeni e-posta adresi: %s", + "Your %s account was created" : "%s hesabınız oluşturuldu", + "Welcome aboard" : "Panonuza hoş geldiniz", + "Welcome aboard %s" : "%s panonuza hoş geldiniz", + "Welcome to your %s account, you can add, protect, and share your data." : "%s hesabınıza hoş geldiniz. Verilerinizi ekleyip koruyabilir ve paylaşabilirsiniz.", + "Your username is: %s" : "Kullanıcı adınız: %s", + "Set your password" : "Parolanızı ayarlayın", + "Go to %s" : "%s sayfasına gidin", + "Install Client" : "İstemciyi Yükleyin", + "Logged in user must be a subadmin" : "Oturum açmış kullanıcı bir alt yönetici olmalıdır", + "Create" : "Ekle", + "Change" : "Değiştir", + "Delete" : "Sil", + "Share" : "Paylaş", + "Unlimited" : "Sınırsız", + "Verifying" : "Doğrulanıyor", + "Verifying …" : "Doğrulanıyor...", + "Verify" : "Doğrula", + "Migration in progress. Please wait until the migration is finished" : "Aktarılıyor. Lütfen işlem tamamlanana kadar bekleyin", + "Migration started …" : "Aktarım başladı ...", + "Not saved" : "Kaydedilmedi", + "Sending…" : "Gönderiliyor...", + "Email sent" : "E-posta gönderildi", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Bir sorun çıktı. Lütfen ASCII olarak kodlanmış PEM sertifikasını yükleyin.", + "Valid until {date}" : "{date} tarihine kadar geçerli", + "Local" : "Yerel", + "Private" : "Özel", + "Only visible to local users" : "Yalnız yerel kullanıcılar görebilir", + "Only visible to you" : "Yalnız siz görebilirsiniz", + "Contacts" : "Kişiler", + "Visible to local users and to trusted servers" : "Yerel kullanıcı ve güvenilen sunucular görebilir", + "Public" : "Herkese açık", + "Will be synced to a global and public address book" : "Genel ve herkese açık bir adres defteri ile eşitlenir", + "Very weak password" : "Parola çok zayıf", + "Weak password" : "Parola zayıf", + "So-so password" : "Parola idare eder", + "Good password" : "Parola iyi", + "Strong password" : "Parola güçlü", + "An error occurred while changing your language. Please reload the page and try again." : "Dil değiştirilirken bir sorun çıktı. Lütfen sayfayı yeniden yükleyerek yeniden deneyin.", + "An error occurred while changing your locale. Please reload the page and try again." : "Yerel ayarlarınız değiştirilirken bir sorun çıktı. Lütfen sayfayı yeniden yükleyerek yeniden deneyin.", + "Select a profile picture" : "Bir profil fotoğrafı seçin", + "Week starts on {fdow}" : "Hafta başlangıcı {fdow}", + "Groups" : "Gruplar", + "Group list is empty" : "Grup listesi boş", + "Unable to retrieve the group list" : "Grup listesi alınamadı", + "Afrikaans (Namibia)" : "Afrikaans (Namibya)", + "Afrikaans (South Africa)" : "Afrikaans (Güney Afrika)", + "Afrikaans" : "Afrikaans", + "Akan (Ghana)" : "Akan (Gana)", + "Akan" : "Akan", + "Albanian (Albania)" : "Arnavutça (Arnavutluk)", + "Albanian" : "Arnavutça", + "Amharic (Ethiopia)" : "Amharic (Etiyopya)", + "Amharic" : "Amharic", + "Arabic (Algeria)" : "Arapça (Cezayir)", + "Arabic (Bahrain)" : "Arapça (Bahreyn)", + "Arabic (Egypt)" : "Arapça (Mısır)", + "Arabic (Iraq)" : "Arapça (Irak)", + "Arabic (Jordan)" : "Arapça (Ürdün)", + "Arabic (Kuwait)" : "Arapça (Kuveyt)", + "Arabic (Lebanon)" : "Arapça (Lübnan)", + "Arabic (Libya)" : "Arapça (Libya)", + "Arabic (Morocco)" : "Arapça (Fas)", + "Arabic (Oman)" : "Arapça (Umman)", + "Arabic (Qatar)" : "Arapça (Katar)", + "Arabic (Saudi Arabia)" : "Arapça (Suudi Arabistan)", + "Arabic (Sudan)" : "Arapça (Sudan)", + "Arabic (Syria)" : "Arapça (Suriye)", + "Arabic (Tunisia)" : "Arapça (Tunus)", + "Arabic (United Arab Emirates)" : "Arapça (Birleşik Arap Emirlikleri)", + "Arabic (Yemen)" : "Arapça (Yemen)", + "Arabic" : "Arapça", + "Armenian (Armenia)" : "Ermenice (Ermenistan)", + "Armenian" : "Ermenice", + "Assamese (India)" : "Assamca (Hindistan)", + "Assamese" : "Assamca", + "Asu (Tanzania)" : "Asu (Tanzanya)", + "Asu" : "Asu", + "Azerbaijani (Cyrillic)" : "Azerice (Kiril)", + "Azerbaijani (Cyrillic, Azerbaijan)" : "Azerice (Kiril, Azerbaycan)", + "Azerbaijani (Latin)" : "Azerice (Latin)", + "Azerbaijani (Latin, Azerbaijan)" : "Azerice (Latin, Azerbaycan)", + "Azerbaijani" : "Azerice", + "Bambara (Mali)" : "Bambara (Mali)", + "Bambara" : "Bambara", + "Basque (Spain)" : "Bask (İspanya)", + "Basque" : "Bask", + "Belarusian (Belarus)" : "Belarusça (Belarus)", + "Belarusian" : "Belarusça", + "Bemba (Zambia)" : "Bemba (Zambia)", + "Bemba" : "Bemba", + "Bena (Tanzania)" : "Bena (Tanzanya)", + "Bena" : "Bena", + "Bengali (Bangladesh)" : "Bengalce (Bangladeş)", + "Bengali (India)" : "Bengalce (Hindistan)", + "Bengali" : "Bengalce", + "Bosnian (Bosnia and Herzegovina)" : "Boşnakça (Bosna ve Hersek)", + "Bosnian" : "Boşnakça", + "Bulgarian (Bulgaria)" : "Bulgarca (Bulgaristan)", + "Bulgarian" : "Bulgarca", + "Burmese (Myanmar [Burma])" : "Birmanca (Myanmar [Burma])", + "Burmese" : "Birmanca", + "Catalan (Spain)" : "Katalanca (İspanya)", + "Catalan" : "Katalanca", + "Central Morocco Tamazight (Latin)" : "Orta Fas Tamazight (Latin)", + "Central Morocco Tamazight (Latin, Morocco)" : "Orta Fas Tamazight (Latin, Fas)", + "Central Morocco Tamazight" : "Orta Fas Tamazight", + "Cherokee (United States)" : "Çerokice (Birleşik Devletler)", + "Cherokee" : "Çerokice", + "Chiga (Uganda)" : "Chiga (Uganda)", + "Chiga" : "Chiga", + "Chinese (Simplified Han)" : "Çince (Basitleştirilmiş Han)", + "Chinese (Simplified Han, China)" : "Çince (Basitleştirilmiş Han, Çin)", + "Chinese (Simplified Han, Hong Kong SAR China)" : "Çince (Basitleştirilmiş Han, Hong Kong SAR Çin)", + "Chinese (Simplified Han, Macau SAR China)" : "Çince (Basitleştirilmiş Han, Macau SAR Çin)", + "Chinese (Simplified Han, Singapore)" : "Çince (Basitleştirilmiş Han, Singapur)", + "Chinese (Traditional Han)" : "Çince (Geleneksel Han)", + "Chinese (Traditional Han, Hong Kong SAR China)" : "Çince (Geleneksel Han, Hong Kong SAR Çin)", + "Chinese (Traditional Han, Macau SAR China)" : "Çince (Geleneksel Han, Macau SAR Çin)", + "Chinese (Traditional Han, Taiwan)" : "Çince (Geleneksel Han, Tayvan)", + "Chinese" : "Çince", + "Cornish (United Kingdom)" : "Kernevekçe (Birleşik Krallık)", + "Cornish" : "Kernevekçe", + "Croatian (Croatia)" : "Hırvatça (Hırvatistan)", + "Croatian" : "Hırvatça", + "Czech (Czech Republic)" : "Çekce (Çekya)", + "Czech" : "Çekce", + "Danish (Denmark)" : "Danca (Danimarka)", + "Danish" : "Danca", + "Dutch (Belgium)" : "Felemenkçe (Belçika)", + "Dutch (Netherlands)" : "Felemenkçe (Hollanda)", + "Dutch" : "Felemenkçe", + "Embu (Kenya)" : "Embu (Kenya)", + "Embu" : "Embu", + "English (American Samoa)" : "İngilizce (Amerikan Samoası)", + "English (Australia)" : "İngilizce (Avustralya)", + "English (Belgium)" : "İngilizce (Belçika)", + "English (Belize)" : "İngilizce (Belize)", + "English (Botswana)" : "İngilizce (Botswana)", + "English (Canada)" : "İngilizce (Kanada)", + "English (Guam)" : "İngilizce (Guam)", + "English (Hong Kong SAR China)" : "İngilizce (Hong Kong SAR Çin)", + "English (India)" : "İngilizce (Hindistan)", + "English (Ireland)" : "İngilizce (İrlanda)", + "English (Jamaica)" : "İngilizce (Jamaica)", + "English (Malta)" : "İngilizce (Malta)", + "English (Marshall Islands)" : "İngilizce (Marshall Adaları)", + "English (Mauritius)" : "İngilizce (Mauritius)", + "English (Namibia)" : "İngilizce (Namibya)", + "English (New Zealand)" : "İngilizce (Yeni Zelanda)", + "English (Northern Mariana Islands)" : "İngilizce (Kuzey Mariana Adaları)", + "English (Pakistan)" : "İngilizce (Pakistan)", + "English (Philippines)" : "İngilizce (Filipinler)", + "English (Singapore)" : "İngilizce (Singapur)", + "English (South Africa)" : "English (Güney Afrika)", + "English (Trinidad and Tobago)" : "İngilizce (Trinidad ve Tobago)", + "English (U.S. Minor Outlying Islands)" : "İngilizce (Birleşik Devletler Küçük Dış Adaları)", + "English (U.S. Virgin Islands)" : "İngilizce (Birleşik Devletler Virgin Adaları)", + "English (United Kingdom)" : "İngilizce (Birleşik Krallık)", + "English (United States)" : "İngilizce (Birleşik Devletler)", + "English (Zimbabwe)" : "İngilizce (Zimbabwe)", + "English" : "İngilizce", + "Esperanto" : "Esperanto", + "Estonian (Estonia)" : "Estonca (Estonya)", + "Estonian" : "Estonca", + "Ewe (Ghana)" : "Ewe (Gana)", + "Ewe (Togo)" : "Ewe (Togo)", + "Ewe" : "Ewe", + "Faroese (Faroe Islands)" : "Faroece (Faroe Adaları)", + "Faroese" : "Faroece", + "Filipino (Philippines)" : "Filipince (Filipinler)", + "Filipino" : "Filipince", + "Finnish (Finland)" : "Fince (Finlandiya)", + "Finnish" : "Fince", + "French (Belgium)" : "Fransızca (Belçika)", + "French (Benin)" : "Fransızca (Benin)", + "French (Burkina Faso)" : "Fransızca (Burkina Faso)", + "French (Burundi)" : "Fransızca (Burundi)", + "French (Cameroon)" : "Fransızca (Kamerun)", + "French (Canada)" : "Fransızca (Kanada)", + "French (Central African Republic)" : "Fransızca (Orta Afrika Cumhuriyeti)", + "French (Chad)" : "Fransızca (Çad)", + "French (Comoros)" : "Fransızca (Komoros)", + "French (Congo - Brazzaville)" : "Fransızca (Kongo - Brazzaville)", + "French (Congo - Kinshasa)" : "Fransızca (Kongo - Kinşasa)", + "French (Côte d’Ivoire)" : "Fransızca (Fildişi Sahili)", + "French (Djibouti)" : "Fransızca (Cibuti)", + "French (Equatorial Guinea)" : "Fransızca (Ekvator Ginesi)", + "French (France)" : "Fransızca (Fransa)", + "French (Gabon)" : "Fransızca (Gabon)", + "French (Guadeloupe)" : "Fransızca (Guadalup)", + "French (Guinea)" : "Fransızca (Gine)", + "French (Luxembourg)" : "Fransızca (Lüksemburg)", + "French (Madagascar)" : "Fransızca (Madagaskar)", + "French (Mali)" : "Fransızca (Mali)", + "French (Martinique)" : "Fransızca (Martinik)", + "French (Monaco)" : "Fransızca (Monako)", + "French (Niger)" : "Fransızca (Nijer)", + "French (Rwanda)" : "Fransızca (Ruanda)", + "French (Réunion)" : "Fransızca (Réunion)", + "French (Saint Barthélemy)" : "Fransızca (Saint Barthélemy)", + "French (Saint Martin)" : "Fransızca (Saint Martin)", + "French (Senegal)" : "Fransızca (Senegal)", + "French (Switzerland)" : "Fransızca (İsviçre)", + "French (Togo)" : "Fransızca (Togo)", + "French" : "Fransızca", + "Fulah (Senegal)" : "Fula (Senegal)", + "Fulah" : "Fula", + "Galician (Spain)" : "Galiçyaca (İspanya)", + "Galician" : "Galiçyaca", + "Ganda (Uganda)" : "Ganda (Uganda)", + "Ganda" : "Ganda", + "Georgian (Georgia)" : "Gürcüce (Gürcistan)", + "Georgian" : "Gürcüce", + "German (Austria)" : "Almanca (Avusturya)", + "German (Belgium)" : "Almanca (Belçika)", + "German (Germany)" : "Almanca (Almanya)", + "German (Liechtenstein)" : "Almanca (Lihtenştayn)", + "German (Luxembourg)" : "Almanca (Lüksemburg)", + "German (Switzerland)" : "Almanca (İsviçre)", + "German" : "Almanca", + "Greek (Cyprus)" : "Yunanca (Kıbrıs)", + "Greek (Greece)" : "Yunanca (Yunanistan)", + "Greek" : "Yunanca", + "Gujarati (India)" : "Guceratça (Hindistan)", + "Gujarati" : "Guceratça", + "Gusii (Kenya)" : "Gusii (Kenya)", + "Gusii" : "Gusii", + "Hausa (Latin)" : "Hausaca (Latin)", + "Hausa (Latin, Ghana)" : "Hausaca (Latin, Gana)", + "Hausa (Latin, Niger)" : "Hausaca (Latin, Nijer)", + "Hausa (Latin, Nigeria)" : "Hausaca (Latin, Nijerya)", + "Hausa" : "Hausaca", + "Hawaiian (United States)" : "Hawaice (Birleşik Devletler)", + "Hawaiian" : "Hawaice", + "Hebrew (Israel)" : "İbranice (İsrail)", + "Hebrew" : "İbranice", + "Hindi (India)" : "Hintçe (Hindistan)", + "Hindi" : "Hintçe", + "Hungarian (Hungary)" : "Macarca (Macaristan)", + "Hungarian" : "Macarca", + "Icelandic (Iceland)" : "İzlandaca (İzlanda)", + "Icelandic" : "İzlandaca", + "Igbo (Nigeria)" : "Igbo (Nijerya)", + "Igbo" : "Igbo", + "Indonesian (Indonesia)" : "Endonezce (Endonezya)", + "Indonesian" : "Endonezce", + "Irish (Ireland)" : "İrlandaca (İrlanda)", + "Irish" : "İrlandaca", + "Italian (Italy)" : "İtalyanca (İtalya)", + "Italian (Switzerland)" : "İtalyanca (İsviçre)", + "Italian" : "İtalyanca", + "Japanese (Japan)" : "Japonca (Japonya)", + "Japanese" : "Japonca", + "Kabuverdianu (Cape Verde)" : "Kabuverdianu (Cape Verde)", + "Kabuverdianu" : "Kabuverdianu", + "Kabyle (Algeria)" : "Berberice (Cezayir)", + "Kabyle" : "Berberice", + "Kalaallisut (Greenland)" : "Grönlandca (Grönland)", + "Kalaallisut" : "Grönlandca", + "Kalenjin (Kenya)" : "Kalenjin (Kenya)", + "Kalenjin" : "Kalenjin", + "Kamba (Kenya)" : "Kamba (Kenya)", + "Kamba" : "Kamba", + "Kannada (India)" : "Kannada (Hindistan)", + "Kannada" : "Kannada", + "Kazakh (Cyrillic)" : "Kazakça (Kiril)", + "Kazakh (Cyrillic, Kazakhstan)" : "Kazakça (Kiril, Kazakistan)", + "Kazakh" : "Kazakça", + "Khmer (Cambodia)" : "Kmerce (Kamboçya)", + "Khmer" : "Kmerce", + "Kikuyu (Kenya)" : "Kikuyu (Kenya)", + "Kikuyu" : "Kikuyu", + "Kinyarwanda (Rwanda)" : "Ruandaca (Ruanda)", + "Kinyarwanda" : "Ruandaca", + "Konkani (India)" : "Konkani (Hindistan)", + "Konkani" : "Konkani", + "Korean (South Korea)" : "Korece (Güney Kore)", + "Korean" : "Korece", + "Koyra Chiini (Mali)" : "Koyra Chiini (Mali)", + "Koyra Chiini" : "Koyra Chiini", + "Koyraboro Senni (Mali)" : "Koyraboro Senni (Mali)", + "Koyraboro Senni" : "Koyraboro Senni", + "Langi (Tanzania)" : "Langi (Tanzanya)", + "Langi" : "Langi", + "Latvian (Latvia)" : "Letonca (Letonya)", + "Latvian" : "Letonca", + "Lithuanian (Lithuania)" : "Litvanca (Litvanya)", + "Lithuanian" : "Litvanca", + "Luo (Kenya)" : "Luo (Kenya)", + "Luo" : "Luo", + "Luyia (Kenya)" : "Luyia (Kenya)", + "Luyia" : "Luyia", + "Macedonian (Macedonia)" : "Makedonca (Makedonya)", + "Macedonian" : "Makedonca", + "Machame (Tanzania)" : "Machame (Tanzanya)", + "Machame" : "Machame", + "Makonde (Tanzania)" : "Makonde (Tanzanya)", + "Makonde" : "Makonde", + "Malagasy (Madagascar)" : "Malagazca (Madagaskar)", + "Malagasy" : "Malagazca", + "Malay (Brunei)" : "Malayca (Brunei)", + "Malay (Malaysia)" : "Malayca (Malezya)", + "Malay" : "Malayca", + "Malayalam (India)" : "Malayamca (Hindistan)", + "Malayalam" : "Malayamca", + "Maltese (Malta)" : "Maltaca (Malta)", + "Maltese" : "Maltaca", + "Manx (United Kingdom)" : "Man (Birleşik Krallık)", + "Manx" : "Man", + "Marathi (India)" : "Marathi (Hi)ndistan", + "Marathi" : "Marathi", + "Masai (Kenya)" : "Masai (Kenya)", + "Masai (Tanzania)" : "Masai (Tanzanya)", + "Masai" : "Masai", + "Meru (Kenya)" : "Meru (Kenya)", + "Meru" : "Meru", + "Morisyen (Mauritius)" : "Morisyen (Mauritius)", + "Morisyen" : "Morisyen", + "Nama (Namibia)" : "Nama (Namibya)", + "Nama" : "Nama", + "Nepali (India)" : "Nepalce (Hindistan)", + "Nepali (Nepal)" : "Nepalce (Nepal)", + "Nepali" : "Nepalce", + "North Ndebele (Zimbabwe)" : "Kuzey Ndebele (Zimbabve)", + "North Ndebele" : "Kuzey Ndebele", + "Norwegian Bokmål (Norway)" : "Norveç Bokmål (Norveç)", + "Norwegian Bokmål" : "Norveç Bokmål", + "Norwegian Nynorsk (Norway)" : "Norveç Nynorsk (Norveç)", + "Norwegian Nynorsk" : "Norveç Nynorsk", + "Nyankole (Uganda)" : "Nyankole (Uganda)", + "Nyankole" : "Nyankole", + "Oriya (India)" : "Oriya (Hindistan)", + "Oriya" : "Oriya", + "Oromo (Ethiopia)" : "Oromo (Etiyopya)", + "Oromo (Kenya)" : "Oromo (Kenya)", + "Oromo" : "Oromo", + "Pashto (Afghanistan)" : "Peştuca (Afganistan)", + "Pashto" : "Peştuca", + "Persian (Afghanistan)" : "Farsça (Afganistan)", + "Persian (Iran)" : "Farsça (İran)", + "Persian" : "Farsça", + "Polish (Poland)" : "Lehçe (Polonya)", + "Polish" : "Lehçe", + "Portuguese (Brazil)" : "Portekizce (Brezilya)", + "Portuguese (Guinea-Bissau)" : "Portekizce (Gine Bissau)", + "Portuguese (Mozambique)" : "Portekizce (Mozambik)", + "Portuguese (Portugal)" : "Portekizce (Portekiz)", + "Portuguese" : "Portekizce", + "Punjabi (Arabic)" : "Pencapça (Arap)", + "Punjabi (Arabic, Pakistan)" : "Pencapça (Arap, Pakistan)", + "Punjabi (Gurmukhi)" : "Pencapça (Gurmukhi)", + "Punjabi (Gurmukhi, India)" : "Pencapça (Gurmukhi, Hindistan)", + "Punjabi" : "Pencapça", + "Romanian (Moldova)" : "Romence (Moldova)", + "Romanian (Romania)" : "Romence (Romanya)", + "Romanian" : "Romence", + "Romansh (Switzerland)" : "Romanşça (İsviçre)", + "Romansh" : "Romanşça", + "Rombo (Tanzania)" : "Rombo (Tanzanya)", + "Rombo" : "Rombo", + "Russian (Moldova)" : "Rusça (Moldova)", + "Russian (Russia)" : "Rusça (Rusya)", + "Russian (Ukraine)" : "Rusça (Ukrayna)", + "Russian" : "Rusça", + "Rwa (Tanzania)" : "Rwa (Tanzanya)", + "Rwa" : "Rwa", + "Samburu (Kenya)" : "Samburu (Kenya)", + "Samburu" : "Samburu", + "Sango (Central African Republic)" : "Sango (Orta Afrika Cumhuriyeti)", + "Sango" : "Sango", + "Sena (Mozambique)" : "Sena (Mozambik)", + "Sena" : "Sena", + "Serbian (Cyrillic)" : "Sırpça (Kiril)", + "Serbian (Cyrillic, Bosnia and Herzegovina)" : "Sıpça (Kiril, Bosna Hersek)", + "Serbian (Cyrillic, Montenegro)" : "Sırpça (Kiril, Montenegro)", + "Serbian (Cyrillic, Serbia)" : "Sırpça (Kiril, Sırbistan)", + "Serbian (Latin)" : "Sırpça (Latin)", + "Serbian (Latin, Bosnia and Herzegovina)" : "Sırpça (Latin, Bosna Hersek)", + "Serbian (Latin, Montenegro)" : "Sırpça (Latin, Montenegro)", + "Serbian (Latin, Serbia)" : "Sırpça (Latin, Sırbistan)", + "Serbian" : "Sırpça", + "Shona (Zimbabwe)" : "Şona (Zimbabve)", + "Shona" : "Şona", + "Sichuan Yi (China)" : "Sichuan Yi (Çin)", + "Sichuan Yi" : "Sichuan Yi", + "Sinhala (Sri Lanka)" : "Sinhala (Sri Lanka)", + "Sinhala" : "Sinhala", + "Slovak (Slovakia)" : "Slovakça (Slovakya)", + "Slovak" : "Slovakça", + "Slovenian (Slovenia)" : "Slovence (Slovenya)", + "Slovenian" : "Slovence", + "Soga (Uganda)" : "Soga (Uganda)", + "Soga" : "Soga", + "Somali (Djibouti)" : "Somali (Cibuti)", + "Somali (Ethiopia)" : "Somali (Etiyopya)", + "Somali (Kenya)" : "Somali (Kenya)", + "Somali (Somalia)" : "Somali (Somali)", + "Somali" : "Somali", + "Spanish (Argentina)" : "İspanyolca (Arjantin)", + "Spanish (Bolivia)" : "İspanyolca (Bolivya)", + "Spanish (Chile)" : "İspanyolca (Şili)", + "Spanish (Colombia)" : "İspanyolca (Kolombiya)", + "Spanish (Costa Rica)" : "İspanyolca (Kosta Rika)", + "Spanish (Dominican Republic)" : "İspanyolca (Dominik Cumhuriyeti)", + "Spanish (Ecuador)" : "İspanyolca (Ekvator)", + "Spanish (El Salvador)" : "İspanyolca (El Salvador)", + "Spanish (Equatorial Guinea)" : "İspanyolca (Ekvator Ginesi)", + "Spanish (Guatemala)" : "İspanyolca (Guatemala)", + "Spanish (Honduras)" : "İspanyolca (Honduras)", + "Spanish (Latin America)" : "İspanyolca (Latin Amerika)", + "Spanish (Mexico)" : "İspanyolca (Meksika)", + "Spanish (Nicaragua)" : "İspanyolca (Nikaragua)", + "Spanish (Panama)" : "İspanyolca (Panama)", + "Spanish (Paraguay)" : "İspanyolca (Paraguay)", + "Spanish (Peru)" : "İspanyolca (Peru)", + "Spanish (Puerto Rico)" : "İspanyolca (Porto Riko)", + "Spanish (Spain)" : "İspanyolca (İspanya)", + "Spanish (United States)" : "İspanyolca (Birleşik Devletler)", + "Spanish (Uruguay)" : "İspanyolca (Uruguay)", + "Spanish (Venezuela)" : "İspanyolca (Venezuela)", + "Spanish" : "İspanyolca", + "Swahili (Kenya)" : "Svahili (Kenya)", + "Swahili (Tanzania)" : "Svahili (Tanzanya)", + "Swahili" : "Svahili", + "Swedish (Finland)" : "İsveçce (Finlandiya)", + "Swedish (Sweden)" : "İsveçce (İsveç)", + "Swedish" : "İsveç", + "Swiss German (Switzerland)" : "İsviçre Almancası (İsviçre)", + "Swiss German" : "İsviçre Almancası", + "Tachelhit (Latin)" : "Tachelhit (Latin)", + "Tachelhit (Latin, Morocco)" : "Tachelhit (Latin, Fas)", + "Tachelhit (Tifinagh)" : "Tachelhit (Tifinag)", + "Tachelhit (Tifinagh, Morocco)" : "Tachelhit (Tifinag, Fas)", + "Tachelhit" : "Tachelhit", + "Taita (Kenya)" : "Taita (Kenya)", + "Taita" : "Taita", + "Tamil (India)" : "Tamilce (Hindistan)", + "Tamil (Sri Lanka)" : "Tamilce (Sri Lanka)", + "Tamil" : "Tamilce", + "Telugu (India)" : "Teluguca (Hindistan)", + "Telugu" : "Teluguca", + "Teso (Kenya)" : "Teso (Kenya)", + "Teso (Uganda)" : "Teso (Uganda)", + "Teso" : "Teso", + "Thai (Thailand)" : "Tay (Tayland)", + "Thai" : "Tay", + "Tibetan (China)" : "Tibetçe (Çin)", + "Tibetan (India)" : "Tibetçe (Hindistan)", + "Tibetan" : "Tibetçe", + "Tigrinya (Eritrea)" : "Tigrinya (Eritre)", + "Tigrinya (Ethiopia)" : "Tigrinya (Etiyopya)", + "Tigrinya" : "Tigrinya", + "Tonga (Tonga)" : "Tonga (Tonga)", + "Tonga" : "Tonga", + "Turkish (Turkey)" : "Türkçe (Türkiye)", + "Turkish" : "Türkçe", + "Ukrainian (Ukraine)" : "Ukraynaca (Ukrayna)", + "Ukrainian" : "Ukraynaca", + "Urdu (India)" : "Urdu (Hindistan)", + "Urdu (Pakistan)" : "Urdu (Pakistan)", + "Urdu" : "Urdu", + "Uzbek (Arabic)" : "Özbekçe (Arap)", + "Uzbek (Arabic, Afghanistan)" : "Özbekçe (Arap, Afganistan)", + "Uzbek (Cyrillic)" : "Özbekçe (Kiril)", + "Uzbek (Cyrillic, Uzbekistan)" : "Özbekçe (Kiril, Özbekistan)", + "Uzbek (Latin)" : "Özbekçe (Latin)", + "Uzbek (Latin, Uzbekistan)" : "Özbekçe (Latin, Özbekistan)", + "Uzbek" : "Özbekçe", + "Vietnamese (Vietnam)" : "Vietnamca (Vietnam)", + "Vietnamese" : "Vietnamca", + "Vunjo (Tanzania)" : "Vunjo (Tanzanya)", + "Vunjo" : "Vunjo", + "Welsh (United Kingdom)" : "Galce (Birleşik Krallık)", + "Welsh" : "Galce", + "Yoruba (Nigeria)" : "Yoruba (Nijerya)", + "Yoruba" : "Yoruba", + "Zulu (South Africa)" : "Zulu (Güney Afrika)", + "Zulu" : "Zulu", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Tüm kullanıcılar ve belirli gruplar için iki aşamalı\tkimlik doğrulama kullanılır. Yapılandırılmış bir iki aşamalı kimlik doğrulama hizmeti sağlayıcısı olmayan kullanıcılar oturum açamaz.", + "Enforce two-factor authentication" : "İki aşamalı kimlik doğrulama dayatılsın", + "Limit to groups" : "Şu gruplarla sınırla", + "Enforcement of two-factor authentication can be set for certain groups only." : "İki aşamalı kimlik doğrulaması yalnız belirli gruplara dayatılabilir.", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "İki aşamalı kimlik doğrulaması şu grupların tüm üyelerine dayatılır.", + "Enforced groups" : "Dayatılan gruplar", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "Şu grupların üyeleri için iki aşamalı kimlik doğrulaması\tdayatılmaz.", + "Excluded groups" : "Dayatılmayan gruplar", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "Gruplar katıldığında ya da katılmadığında, bir kullanıcının İki Aşamalı Kimlik Doğrulaması kullanıp kullanmayacağına karar verilmesi için şu mantık yürütülür. Herhangi bir grup seçilmemiş ise, katılmayan grupların üyeleri dışındaki tüm üyeler için İki Aşamalı Kimlik Doğrulaması kullanılır. Seçilmiş gruplar varsa, İki Aşamalı Kimlik Doğrulaması katılan bu grupların üyeleri için kullanılır. Bir kullanıcının hem katılmış hem de katılmamış gruplarda üyeliği varsa, katılmış grupların önceliği vardır ve İki Aşamalı Kimlik Doğrulaması kullanılır.", + "Save changes" : "Değişiklikleri kaydet", + "Marked for remote wipe" : "Uzaktan silme için işaretlendi", + "Device settings" : "Aygıt ayarları", + "Allow filesystem access" : "Dosya sistemine erişilebilsin", + "Rename" : "Yeniden Adlandır", + "Revoke" : "Geri Al", + "Wipe device" : "Aygıtı sil", + "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Silme işlemi henüz başlamamış ise bu kodun geri çekilmesi aygıtınızın silinmesini engelleyebilir.", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Android için Google Chrome", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Nextcloud iOS uygulaması", + "Nextcloud Android app" : "Nextcloud Android uygulaması", + "Nextcloud Talk for iOS" : "iOS için Nextcloud Talk", + "Nextcloud Talk for Android" : "Android için Nextcloud Talk", + "Sync client - {os}" : "Eşitleme istemcisi - {os}", + "This session" : "Bu oturum", + "Device" : "Aygıt", + "Last activity" : "Son işlem", + "Devices & sessions" : "Aygıt ve oturumlar", + "Web, desktop and mobile clients currently logged in to your account." : "Şu anda hesabınıza oturum açmış web, masaüstü ve mobil istemciler.", + "Do you really want to wipe your data from this device?" : "Bu aygıt üzerindeki verilerinizi silmek istediğinize emin misiniz?", + "Confirm wipe" : "Silmeyi onayla", + "Error while creating device token" : "Aygıt kodu oluşturulurken sorun çıktı", + "Error while updating device token scope" : "Aygıt kodu aralığı güncellenirken sorun çıktı", + "Error while updating device token name" : "Aygıt kodu adı güncellenirken sorun çıktı", + "Error while deleting the token" : "Kod silinirken sorun çıktı", + "Error while wiping the device with the token" : "Aygıtın kod ile silinmesinde sorun çıktı", + "App name" : "Uygulama adı", + "Create new app password" : "Yeni uygulama parolası oluştur", + "Use the credentials below to configure your app or device." : "Uygulama ya da aygıtınızı yapılandırmak için aşağıdaki kimlik doğrulama bilgileri kullanılır.", + "For security reasons this password will only be shown once." : "Güvenlik nedenleriyle bu parola yalnız bir kez görüntülenir.", + "Username" : "Kullanıcı Adı", + "Password" : "Parola", + "Done" : "Tamam", + "Show QR code for mobile apps" : "Mobil uygulamalar için QR kodu görüntülensin", + "Copied!" : "Kopyalandı!", + "Copy" : "Kopyala", + "Could not copy app password. Please copy it manually." : "Uygulama parolası kopyalanamadı. Lütfen el ile kopyalayın.", + "This app is supported via your current Nextcloud subscription." : "Bu uygulamanın desteği geçerli Nextcloud aboneliğiniz ile sağlanır.", + "Supported" : "Destekleniyor", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Resmi uygulamalar topluluk tarafından geliştirilmiştir. Merkezi işlevleri yerine getirdikleri gibi kullanıma da hazırdırlar.", + "Official" : "Resmi", + "by" : "Kişi:", + "Update to {version}" : "{version} sürümüne güncelle", + "Remove" : "Kaldır", + "Disable" : "Devre Dışı Bırak", + "All" : "Tümü", + "Limit app usage to groups" : "Uygulama kullanımını şu gruplarla sınırla", + "No results" : "Herhangi bir sonuç bulunamadı", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Bu uygulama için en düşük Nextcloud sürümü belirtilmemiş. Bu durum ileride sorun çıkarır.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Bu uygulama için en yüksek Nextcloud sürümü belirtilmemiş. Bu durum ileride sorun çıkarır.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Aşağıdaki bağımlılıklar sağlanmadığından bu uygulama kurulamıyor:", + "View in store" : "Mağazada görüntüle", + "Visit website" : "Web sayfasına bakın", + "Report a bug" : "Hata bildirin", + "User documentation" : "Kullanıcı belgeleri", + "Admin documentation" : "Yönetici belgeleri", + "Developer documentation" : "Geliştirici belgeleri", + "Update to {update}" : "{update} sürümüne güncelle", + "Results from other categories" : "Diğer kategorilerden sonuçlar", + "No apps found for your version" : "Sürümünüze uygun bir uygulama bulunamadı", + "Disable all" : "Tümünü devre dışı bırak", + "Enable all" : "Tümünü Etkinleştir", + "Download and enable" : "İndir ve etkinleştir", + "Enable" : "Etkinleştir", + "Enable untested app" : "Denenmemiş uygulamalar kullanılabilsin", + "The app will be downloaded from the app store" : "Uygulama uygulama mağazasından indirilecek", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Bu uygulamanın kullandığınız Nextcloud sürümü ile uyumluluğu denetlenmemiş. Devam ederseniz uygulamayı kurabilirsiniz. Ancak uygulama beklendiği gibi çalışmayabilir.", + "You do not have permissions to see the details of this user" : "Bu kullanıcının ayrıntılarını görüntüleme izniniz yok", + "The backend does not support changing the display name" : "Yönetim bölümünden görüntülenecek ad değiştirilemiyor", + "New password" : "Yeni parola", + "Add user in group" : "Gruba kullanıcı ekle", + "Set user as admin for" : "Kullanıcıyı şurada yönetici yap", + "Select user quota" : "Kullanıcı kotasını seçin", + "No language set" : "Herhangi bir dil ayarlanmamış", + "Never" : "Asla", + "Delete user" : "Kullanıcıyı Sil", + "Wipe all devices" : "Tüm aygıtları sil", + "Disable user" : "Kullanıcıyı devre dışı bırak", + "Enable user" : "Kullanıcıyı etkinleştir", + "Resend welcome email" : "Karşılama e-postasını yeniden gönder", + "{size} used" : "{size} kullanılmış", + "Welcome mail sent!" : "Karşılama e-postası gönderildi!", + "Display name" : "Görüntülenecek ad", + "Email" : "E-posta", + "Group admin for" : "Şunun grup yöneticisi", + "Quota" : "Kota", + "Language" : "Dil", + "Storage location" : "Depolama konumu", + "User backend" : "Kullanıcı Arka Ucu", + "Last login" : "Son oturum açma", + "Will be autogenerated" : "Otomatik olarak oluşturulacak", + "Default language" : "Varsayılan dil", + "Add a new user" : "Kullanıcı ekle", + "No users in here" : "Henüz herhangi bir kullanıcı eklenmemiş", + "Default quota" : "Varsayılan kota", + "Password change is disabled because the master key is disabled" : "Ana anahtar devre dışı bırakıldığından parola değişikliği devre dışı bırakıldı.", + "Common languages" : "Sık kullanılan diller", + "All languages" : "Tüm diller", + "Your apps" : "Uygulamalarınız", + "Active apps" : "Etkin uygulamalar", + "Disabled apps" : "Devre Dışı Uygulamalar", + "Updates" : "Güncellemeler", + "App bundles" : "Uygulama Paketleri", + "{license}-licensed" : "{license}-lisanslı", + "New user" : "Yeni kullanıcı", + "Default quota:" : "Varsayılan kota:", + "Select default quota" : "Varsayılan kota değerini seçin", + "Show Languages" : "Dilleri Görüntüle", + "Show last login" : "Son oturum açma zamanı görüntülensin", + "Show user backend" : "Kullanıcı arka ucu görüntülensin", + "Show storage path" : "Depolama yolu görüntülensin", + "You are about to remove the group {group}. The users will NOT be deleted." : "{group} grubunu silmek üzeresiniz. Kullanıcılar SİLİNMEYECEK.", + "Please confirm the group removal " : "Grubu silme işlemini onaylayın", + "Remove group" : "Grubu Sil", + "Admins" : "Yöneticiler", + "Disabled users" : "Devre dışı bırakılmış kullanıcılar", + "Everyone" : "Herkes", + "Add group" : "Grup ekle", + "An error occured during the request. Unable to proceed." : "İstek sırasında bir sorun çıktı. İşlem sürdürülemiyor.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Uygulama etkinleştirilmiş fakat güncellenmesi gerekiyor. 5 saniye içinde güncelleme sayfasına yönlendirileceksiniz.", + "App update" : "Uygulama güncellemesi", + "Error: This app can not be enabled because it makes the server unstable" : "Hata: Bu uygulama sunucuda kararsızlığa yol açtığından etkinleştirilemez", + "SSL Root Certificates" : "SSL Kök Sertifikaları", + "Common Name" : "Ortak Ad", + "Valid until" : "Geçerlilik", + "Issued By" : "Yayınlayan", + "Valid until %s" : "%s tarihine kadar geçerli", + "Import root certificate" : "Kök sertifikasını içe aktar", + "Administrator documentation" : "Yönetici belgeleri", + "Documentation" : "Belgeler", + "Forum" : "Forum", + "None" : "Yok", + "Login" : "Oturum Açın", + "Plain" : "Düz", + "NT LAN Manager" : "NT Ağ Yöneticisi", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "E-posta sunucusu", + "Open documentation" : "Belgeleri aç", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Bu sunucunun parola sıfırlama ve bildirim işlemleri için e-posta gönderebilecek şekilde ayarlanmış olması önemlidir.", + "Send mode" : "Gönderim kipi", + "Encryption" : "Şifreleme", + "Sendmail mode" : "Sendmail kipi", + "From address" : "Kimden adresi", + "mail" : "posta", + "Authentication method" : "Kimlik doğrulama yöntemi", + "Authentication required" : "Kimlik doğrulaması gerekli", + "Server address" : "Sunucu adresi", + "Port" : "Kapı Numarası", + "Credentials" : "Kimlik Doğrulama Bilgileri", + "SMTP Username" : "SMTP Kullanıcı Adı", + "SMTP Password" : "SMTP Parolası", + "Save" : "Kaydet", + "Test email settings" : "E-posta ayarlarını sına", + "Send email" : "E-posta gönder", + "Security & setup warnings" : "Güvenlik ve kurulum uyarıları", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Kopyanızın güvenli ve yüksek başarımla çalışması için ayarların doğru yapılmış olması önemlidir. Bunu sağlamak için bazı otomatik denetimler yapılır. Ayrıntılı bilgi almak için İpuçları bölümüne ve belgelere bakın.", + "All checks passed." : "Tüm denetimlerden geçti.", + "There are some errors regarding your setup." : "Kurulumunuz ile ilgili bazı sorunlar var.", + "There are some warnings regarding your setup." : "Kurulumunuz ile ilgili bazı uyarılar var.", + "Checking for system and security issues." : "Sistem ve güvenlik sorunları denetleniyor.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Lütfen <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">kurulum rehberlerini↗</a> yeniden gözden geçirin ve <a href=\"%2$s\">günlük</a> kayıtlarındaki hata ve uyarılara bakın.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">Güvenlik sınamamızdan ↗</a> geçirerek Nextcloud güvenliğinizi denetleyin.", + "Version" : "Sürüm", + "Two-Factor Authentication" : "İki Aşamalı Kimlik Doğrulama", + "Server-side encryption" : "Sunucu tarafı şifreleme", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Sunucu tarafındaki şifreleme, sunucuya yüklenen dosyaların şifrelenebilmesini sağlar. Bu özellik genel başarımı düşürdüğünden yalnız gerek varsa etkinleştirin.", + "Enable server-side encryption" : "Sunucu tarafı şifreleme kullanılsın", + "Please read carefully before activating server-side encryption: " : "Lütfen sunucu tarafında şifrelemeyi etkinleştirmeden önce dikkatlice okuyun: ", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Şifreleme etkinleştirildiğinde, etkinleştirme anından sonra sunucuya yüklenen tüm dosyalar şifrelenir. Şifreleme daha sonra devre dışı bırakılmak istenirse, etkin şifreleme modülünün bu özelliği desteklemesi ve tüm ön koşulların (örneğin kurtarma anahtarı oluşturulması) yerine getirilmesi gerekir.", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Şifreleme tek başına sistemin güvenliğini garanti etmez. Lütfen şifreleme uygulamasının nasıl çalıştığı ve desteklenen kullanım şekilleri hakkında ayrıntılı bilgi almak için belgelere bakabilirsiniz.", + "Be aware that encryption always increases the file size." : "Şifreleme işleminin dosya boyutlarını büyüteceğini unutmayın.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Verilerinizi düzenli yedekleyin ve şifreleme kullanıyorsanız şifreleme anahtarlarınızın da verilerinizle birlikte yedeklendiğinden emin olun.", + "This is the final warning: Do you really want to enable encryption?" : "Son uyarı: Şifrelemeyi etkinleştirmek istiyor musunuz?", + "Enable encryption" : "Şifreleme kullanılsın", + "No encryption module loaded, please enable an encryption module in the app menu." : "Herhangi bir şifrelenme modülü yüklenmemiş. Lütfen uygulama menüsünden bir şifreleme modülünü etkinleştirin.", + "Select default encryption module:" : "Varsayılan şifreleme modülünü seçin:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Şifreleme anahtarlarınızı eski şifrelemeden (ownCloud <= 8.0) yenisine aktarmalısınız. Lütfen \"Varsayılan şifreleme modülü\"nü etkinleştirip 'occ encryption:migrate' komutunu yürütün", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Şifreleme anahtarlarınızı eski şifrelemeden (ownCloud <= 8.0) yenisine aktarmalısınız.", + "Start migration" : "Aktarmayı başlat", + "Background jobs" : "Arka plan görevleri", + "Last job ran %s." : "Son görev çalışması: %s.", + "Last job execution ran %s. Something seems wrong." : "Son görev yürütülmesi: %s. Yanlış bir şeyler var.", + "Background job didn’t run yet!" : "Arka plan görevi henüz yürütülmemiş!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "En iyi başarım için arka plan görevlerinin doğru şekilde ayarlanması önemlidir. Büyük kurulumlar için 'Cron' ayarı önerilir. Ayrıntılı bilgi almak için belgelere bakabilirsiniz.", + "Pick background job setting" : "Arka plan görevi ayarlarını seçin", + "Execute one task with each page loaded" : "Her sayfa yüklemesinde bir görev yürütülsün", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php, HTTP üzerinden 5 dakikada bir yürütülmesi için webcron hizmetine kaydedildi.", + "Use system cron service to call the cron.php file every 5 minutes." : "5 dakikada bir cron.php dosyasının çağrılması için sistem cron hizmeti kullanılsın.", + "The cron.php needs to be executed by the system user \"%s\"." : "cron.php dosyası \"%s\" sistem kullanıcısı tarafından yürütülmelidir.", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Bunu çalıştıraiblmek için PHP POSIX eklentisi gereklidir. Ayrıntılı bilgi almak için {linkstart}PHP belgelerine{linkend} bakabilirsiniz.", + "Sharing" : "Paylaşım", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Yönetici olarak paylaşma davranışı ile ilgili ince ayarları yapabilirsiniz. Ayrıntılı bilgi almak için belgelere bakabilirsiniz.", + "Allow apps to use the Share API" : "Uygulamalar Paylaşım API kullanabilsin", + "Allow users to share via link" : "Kullanıcıların bağlantı ile paylaşabilsin", + "Allow public uploads" : "Herkes yükleyebilsin", + "Always ask for a password" : "Her zaman parola sorulsun", + "Enforce password protection" : "Parola koruması dayatılsın", + "Set default expiration date" : "Varsayılan son kullanma tarihini ayarla", + "Expire after " : "Kullanım süresi", + "days" : "gün sonra dolsun", + "Enforce expiration date" : "Son kullanma tarihi dayatılsın", + "Allow resharing" : "Yeniden paylaşılabilsin", + "Allow sharing with groups" : "Gruplar ile paylaşılabilsin", + "Restrict users to only share with users in their groups" : "Kullanıcılar, yalnız kendi gruplarındaki kullanıcılarla paylaşabilsin", + "Exclude groups from sharing" : "Gruplar paylaşıma katılmasın", + "These groups will still be able to receive shares, but not to initiate them." : "Bu gruplar paylaşımları alabilir ancak başlatamaz.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Bu seçenek etkinleştirildiğinde, paylaşma penceresindeki kullanıcı adı otomatik olarak tamamlanır. Devre dışı bırakıldığında tam kullanıcı adının ya da e-posta adresinin yazılması gerekir.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Herkese açık bağlantı yükleme sayfasındaki sorumluluk reddi bildirim metni (yalnız dosya listesi gizli iken görüntülenir).", + "This text will be shown on the public link upload page when the file list is hidden." : "Dosya listesi gizli iken herkese açık bağlantı yükleme sayfasında görüntülenecek sorumluluk reddi bildirimi metni.", + "Default share permissions" : "Varsayılan paylaşım izinleri", + "Personal" : "Kişisel", + "Administration" : "Yönetim", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "{communityopen}Nextcloud topluluğu tarafından geliştirilmiştir{linkclose}.  {githubopen}Kaynak kodu{linkclose} {licenseopen}AGPL{linkclose} koşulları altında lisanslanmıştır.", + "Like our Facebook page" : "Facebook sayfamızı beğenin", + "Follow us on Twitter" : "Bizi Twitter üzerinde izleyin", + "Follow us on Mastodon" : "Bizi Mastodon üzerinde izleyin", + "Check out our blog" : "Bloğumuza bakın", + "Subscribe to our newsletter" : " Bültenimize abone olun", + "Profile picture" : "Profil görseli", + "Upload new" : "Yeni yükle", + "Select from Files" : "Dosyalardan seç", + "Remove image" : "Görseli kaldır", + "png or jpg, max. 20 MB" : "png ya da jpg, en fazla 20 MB", + "Picture provided by original account" : "Görsel özgün hesabınız tarafından sağlanıyor", + "Cancel" : "İptal", + "Choose as profile picture" : "Profil görseli olarak seç", + "Details" : "Ayrıntılar", + "You are a member of the following groups:" : "Şu gruplara üyesiniz:", + "You are using <strong>%s</strong>" : "<strong>%s</strong> kullanıyorsunuz", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Kullandığınız: <strong>%1$s</strong> Kullanabileceğiniz: <strong>%2$s</strong> (<strong>%3$s %%</strong>)", + "Full name" : "Tam ad", + "No display name set" : "Görüntülenecek ad belirtilmemiş", + "Your email address" : "E-posta adresiniz", + "No email address set" : "E-posta adresi belirtilmemiş", + "For password reset and notifications" : "Parola sıfırlama ve bildirimler için", + "Phone number" : "Telefon numarası", + "Your phone number" : "Telefon numaranız", + "Address" : "Adres", + "Your postal address" : "Posta adresiniz", + "Website" : "Web sitesi", + "It can take up to 24 hours before the account is displayed as verified." : "Hesabın doğrulanması ve görüntülenmesi 24 saate kadar zaman alabilir.", + "Link https://…" : "Bağlantı https://…", + "Twitter" : "Twitter", + "Twitter handle @…" : "Twitter kodu @…", + "Help translate" : "Çeviriye yardım edin", + "Locale" : "Yerel Ayar", + "Current password" : "Geçerli parola", + "Change password" : "Parola değiştir", + "Use a second factor besides your password to increase security for your account." : "Parolanızın yanında ikinci bir doğrulama kullanarak hesabınızın güvenliğini arttırabilirsiniz.", + "Disconnect" : "Bağlantıyı Kes", + "Not supported!" : "Desteklenmiyor!", + "Press ⌘-C to copy." : "Kopyalamak için ⌘-C tuşlarına basın.", + "Press Ctrl-C to copy." : "Kopyalamak için Ctrl-C tuşlarına basın.", + "Error while loading browser sessions and device tokens" : "Tarayıcı oturumu ve aygıt kodları yüklenirken sorun çıktı", + "Store credentials" : "Kimlik bilgileri kaydedilsin", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php, HTTP üzerinden 15 dakikada bir yürütülmesi için webcron hizmetine kaydedildi.", + "Use system cron service to call the cron.php file every 15 minutes." : "15 dakikada bir cron.php dosyasının çağrılması için sistem cron hizmeti kullanılsın.", + "Follow us on Google+" : "Bizi Google+ üzerinde izleyin" +}, +"nplurals=2; plural=(n > 1);"); diff --git a/apps/settings/l10n/tr.json b/apps/settings/l10n/tr.json new file mode 100644 index 00000000000..a7eae8e7182 --- /dev/null +++ b/apps/settings/l10n/tr.json @@ -0,0 +1,821 @@ +{ "translations": { + "{actor} added you to group {group}" : "{actor} sizi {group} grubuna ekledi", + "You added {user} to group {group}" : "{user} kullanıcısını {group} grubuna eklediniz", + "{actor} added {user} to group {group}" : "{actor} {user} kullanıcısını {group} grubuna ekledi", + "An administrator added you to group {group}" : "Bir yönetici sizi {group} grubuna ekledi", + "An administrator added {user} to group {group}" : "Bir yönetici {user} kullanıcısını {group} grubuna ekledi", + "{actor} removed you from group {group}" : "{actor} sizi {group} grubundan çıkardı", + "You removed {user} from group {group}" : "{user} kullanıcısını {group} grubundan çıkardınız", + "{actor} removed {user} from group {group}" : "{actor} {user} kullanıcısını {group} grubundan çıkardı", + "An administrator removed you from group {group}" : "Bir yönetici sizi {group} grubundan çıkardı", + "An administrator removed {user} from group {group}" : "Bir yönetici {user} kullanıcısını {group} grubundan çıkardı", + "Your <strong>group memberships</strong> were modified" : "<strong>Grup üyelikleriniz</strong> değiştirildi", + "{actor} changed your password" : "{actor} parolanızı değiştirdi", + "You changed your password" : "Parolanızı değiştirdiniz", + "Your password was reset by an administrator" : "Parolanız bir yönetici tarafından sıfırlandı", + "{actor} changed your email address" : "{actor} e-posta adresinizi değiştirdi", + "You changed your email address" : "E-posta adresinizi değiştirdiniz", + "Your email address was changed by an administrator" : "E-posta adresiniz bir yönetici tarafından değiştirildi", + "You created app password \"{token}\"" : "\"{token}\" uygulama parolasını oluşturdunuz", + "You deleted app password \"{token}\"" : "\"{token}\" uygulama parolasını sildiniz", + "You renamed app password \"{token}\" to \"{newToken}\"" : "\"{token}\" olan uygulama parolasını \"{newToken}\" olarak yeniden adlandırdınız", + "You granted filesystem access to app password \"{token}\"" : "\"{token}\" uygulama parolasına dosya sistemi erişim izni verdiniz", + "You revoked filesystem access from app password \"{token}\"" : "\"{token}\" uygulama parolasından dosya sistemi erişim iznini kaldırdınız", + "Security" : "Güvenlik", + "You successfully logged in using two-factor authentication (%1$s)" : "İki aşamalı kimlik doğrulama ile oturum açtınız (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "İki aşamalı kimlik doğrulama ile oturum açma girişimi reddedildi (%1$s)", + "Remote wipe was started on %1$s" : "Uzaktan silme işlemi %1$s zamanında başlatıldı", + "Remote wipe has finished on %1$s" : "Uzaktan silme işlemi %1$s zamanında tamamlandı", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "<strong>Parolanız</strong> ya da <strong>e-posta adresiniz</strong> değiştirildi", + "Couldn't remove app." : "Uygulama kaldırılamadı.", + "Couldn't update app." : "Uygulama güncellenemedi.", + "Wrong password" : "Parola yanlış", + "Saved" : "Kaydedildi", + "No user supplied" : "Kullanıcı belirtilmemiş", + "Unable to change password" : "Parola değiştirilemedi", + "Authentication error" : "Kimlik doğrulama sorunu", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Lütfen bir yönetici kurtarma parolası yazın, yoksa tüm kullanıcı verileri kaybolur", + "Wrong admin recovery password. Please check the password and try again." : "Yönetici kurtarma parolası yanlış. Lütfen parolayı denetleyip yeniden deneyin.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Yönetim bölümünden parola değişikliği yapılamaz, ancak kullanıcının şifreleme anahtarı güncellendi.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Uygulama mağazası ve Birleşik Bulut Paylaşımından uygulama kurma ve güncelleme", + "Federated Cloud Sharing" : "Birleşik Bulut Paylaşımı", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL eski bir %1$s sürümü kullanıyor (%2$s). Lütfen işletim sisteminizi güncelleyin, yoksa %3$s gibi özellikler düzgün çalışmaz.", + "Invalid SMTP password." : "SMTP parolası geçersiz.", + "Email setting test" : "E-posta ayarları sınaması", + "Well done, %s!" : "Tamamdır %s!", + "If you received this email, the email configuration seems to be correct." : "Bu e-postayı aldıysanız e-posta ayarları doğru olarak yapılmıştır.", + "Email could not be sent. Check your mail server log" : "E-posta gönderilemedi. E-posta sunucunuzun günlüklerine bakın", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "E-posta gönderilirken bir sorun çıktı. Lütfen ayarlarınızı gözden geçirin. (Hata: %s)", + "You need to set your user email before being able to send test emails." : "Sınama e-postaları göndermeden önce kullanıcı e-postasını ayarlamalısınız.", + "Invalid mail address" : "Posta adresi geçersiz", + "Settings saved" : "Ayarlar kaydedildi", + "Unable to change full name" : "Tam adınız değiştirilemedi", + "Unable to change email address" : "E-posta adresi değiştirilemedi", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Twitter hesabınızı doğrulamak için şu iletiyi Twitter üzerine gönderin (satır sonu olmadan gönderdiğinizden emin olun):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Web sitenizi doğrulamak için şu içeriği web sitenizin kök klasörüne '.well-known/CloudIdVerificationCode.txt' dosyası içine ekleyin (tüm içeriğin tek bir satır olarak eklendiğinden emin olun):", + "%1$s changed your password on %2$s." : "%1$s, %2$s üzerindeki parolanızı değiştirdi.", + "Your password on %s was changed." : "%s üzerindeki parolanız değiştirildi.", + "Your password on %s was reset by an administrator." : "%s üzerindeki parolanız bir yönetici tarafından sıfırlandı.", + "Password for %1$s changed on %2$s" : "%2$s üzerindeki %1$s parolası değiştirildi", + "Password changed for %s" : "%s parolası değiştirildi", + "If you did not request this, please contact an administrator." : "Bu işlemi siz başlatmadıysanız lütfen bir yönetici ile görüşün.", + "Your email address on %s was changed." : "%s üzerindeki e-posta adresiniz değiştirildi.", + "Your email address on %s was changed by an administrator." : "%s üzerindeki e-posta adresiniz bir yönetici tarafından değiştirildi.", + "Email address for %1$s changed on %2$s" : "%2$s üzerindeki %1$s e-posta değiştirildi", + "Email address changed for %s" : "%s e-posta adresi değiştirildi", + "The new email address is %s" : "Yeni e-posta adresi: %s", + "Your %s account was created" : "%s hesabınız oluşturuldu", + "Welcome aboard" : "Panonuza hoş geldiniz", + "Welcome aboard %s" : "%s panonuza hoş geldiniz", + "Welcome to your %s account, you can add, protect, and share your data." : "%s hesabınıza hoş geldiniz. Verilerinizi ekleyip koruyabilir ve paylaşabilirsiniz.", + "Your username is: %s" : "Kullanıcı adınız: %s", + "Set your password" : "Parolanızı ayarlayın", + "Go to %s" : "%s sayfasına gidin", + "Install Client" : "İstemciyi Yükleyin", + "Logged in user must be a subadmin" : "Oturum açmış kullanıcı bir alt yönetici olmalıdır", + "Create" : "Ekle", + "Change" : "Değiştir", + "Delete" : "Sil", + "Share" : "Paylaş", + "Unlimited" : "Sınırsız", + "Verifying" : "Doğrulanıyor", + "Verifying …" : "Doğrulanıyor...", + "Verify" : "Doğrula", + "Migration in progress. Please wait until the migration is finished" : "Aktarılıyor. Lütfen işlem tamamlanana kadar bekleyin", + "Migration started …" : "Aktarım başladı ...", + "Not saved" : "Kaydedilmedi", + "Sending…" : "Gönderiliyor...", + "Email sent" : "E-posta gönderildi", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Bir sorun çıktı. Lütfen ASCII olarak kodlanmış PEM sertifikasını yükleyin.", + "Valid until {date}" : "{date} tarihine kadar geçerli", + "Local" : "Yerel", + "Private" : "Özel", + "Only visible to local users" : "Yalnız yerel kullanıcılar görebilir", + "Only visible to you" : "Yalnız siz görebilirsiniz", + "Contacts" : "Kişiler", + "Visible to local users and to trusted servers" : "Yerel kullanıcı ve güvenilen sunucular görebilir", + "Public" : "Herkese açık", + "Will be synced to a global and public address book" : "Genel ve herkese açık bir adres defteri ile eşitlenir", + "Very weak password" : "Parola çok zayıf", + "Weak password" : "Parola zayıf", + "So-so password" : "Parola idare eder", + "Good password" : "Parola iyi", + "Strong password" : "Parola güçlü", + "An error occurred while changing your language. Please reload the page and try again." : "Dil değiştirilirken bir sorun çıktı. Lütfen sayfayı yeniden yükleyerek yeniden deneyin.", + "An error occurred while changing your locale. Please reload the page and try again." : "Yerel ayarlarınız değiştirilirken bir sorun çıktı. Lütfen sayfayı yeniden yükleyerek yeniden deneyin.", + "Select a profile picture" : "Bir profil fotoğrafı seçin", + "Week starts on {fdow}" : "Hafta başlangıcı {fdow}", + "Groups" : "Gruplar", + "Group list is empty" : "Grup listesi boş", + "Unable to retrieve the group list" : "Grup listesi alınamadı", + "Afrikaans (Namibia)" : "Afrikaans (Namibya)", + "Afrikaans (South Africa)" : "Afrikaans (Güney Afrika)", + "Afrikaans" : "Afrikaans", + "Akan (Ghana)" : "Akan (Gana)", + "Akan" : "Akan", + "Albanian (Albania)" : "Arnavutça (Arnavutluk)", + "Albanian" : "Arnavutça", + "Amharic (Ethiopia)" : "Amharic (Etiyopya)", + "Amharic" : "Amharic", + "Arabic (Algeria)" : "Arapça (Cezayir)", + "Arabic (Bahrain)" : "Arapça (Bahreyn)", + "Arabic (Egypt)" : "Arapça (Mısır)", + "Arabic (Iraq)" : "Arapça (Irak)", + "Arabic (Jordan)" : "Arapça (Ürdün)", + "Arabic (Kuwait)" : "Arapça (Kuveyt)", + "Arabic (Lebanon)" : "Arapça (Lübnan)", + "Arabic (Libya)" : "Arapça (Libya)", + "Arabic (Morocco)" : "Arapça (Fas)", + "Arabic (Oman)" : "Arapça (Umman)", + "Arabic (Qatar)" : "Arapça (Katar)", + "Arabic (Saudi Arabia)" : "Arapça (Suudi Arabistan)", + "Arabic (Sudan)" : "Arapça (Sudan)", + "Arabic (Syria)" : "Arapça (Suriye)", + "Arabic (Tunisia)" : "Arapça (Tunus)", + "Arabic (United Arab Emirates)" : "Arapça (Birleşik Arap Emirlikleri)", + "Arabic (Yemen)" : "Arapça (Yemen)", + "Arabic" : "Arapça", + "Armenian (Armenia)" : "Ermenice (Ermenistan)", + "Armenian" : "Ermenice", + "Assamese (India)" : "Assamca (Hindistan)", + "Assamese" : "Assamca", + "Asu (Tanzania)" : "Asu (Tanzanya)", + "Asu" : "Asu", + "Azerbaijani (Cyrillic)" : "Azerice (Kiril)", + "Azerbaijani (Cyrillic, Azerbaijan)" : "Azerice (Kiril, Azerbaycan)", + "Azerbaijani (Latin)" : "Azerice (Latin)", + "Azerbaijani (Latin, Azerbaijan)" : "Azerice (Latin, Azerbaycan)", + "Azerbaijani" : "Azerice", + "Bambara (Mali)" : "Bambara (Mali)", + "Bambara" : "Bambara", + "Basque (Spain)" : "Bask (İspanya)", + "Basque" : "Bask", + "Belarusian (Belarus)" : "Belarusça (Belarus)", + "Belarusian" : "Belarusça", + "Bemba (Zambia)" : "Bemba (Zambia)", + "Bemba" : "Bemba", + "Bena (Tanzania)" : "Bena (Tanzanya)", + "Bena" : "Bena", + "Bengali (Bangladesh)" : "Bengalce (Bangladeş)", + "Bengali (India)" : "Bengalce (Hindistan)", + "Bengali" : "Bengalce", + "Bosnian (Bosnia and Herzegovina)" : "Boşnakça (Bosna ve Hersek)", + "Bosnian" : "Boşnakça", + "Bulgarian (Bulgaria)" : "Bulgarca (Bulgaristan)", + "Bulgarian" : "Bulgarca", + "Burmese (Myanmar [Burma])" : "Birmanca (Myanmar [Burma])", + "Burmese" : "Birmanca", + "Catalan (Spain)" : "Katalanca (İspanya)", + "Catalan" : "Katalanca", + "Central Morocco Tamazight (Latin)" : "Orta Fas Tamazight (Latin)", + "Central Morocco Tamazight (Latin, Morocco)" : "Orta Fas Tamazight (Latin, Fas)", + "Central Morocco Tamazight" : "Orta Fas Tamazight", + "Cherokee (United States)" : "Çerokice (Birleşik Devletler)", + "Cherokee" : "Çerokice", + "Chiga (Uganda)" : "Chiga (Uganda)", + "Chiga" : "Chiga", + "Chinese (Simplified Han)" : "Çince (Basitleştirilmiş Han)", + "Chinese (Simplified Han, China)" : "Çince (Basitleştirilmiş Han, Çin)", + "Chinese (Simplified Han, Hong Kong SAR China)" : "Çince (Basitleştirilmiş Han, Hong Kong SAR Çin)", + "Chinese (Simplified Han, Macau SAR China)" : "Çince (Basitleştirilmiş Han, Macau SAR Çin)", + "Chinese (Simplified Han, Singapore)" : "Çince (Basitleştirilmiş Han, Singapur)", + "Chinese (Traditional Han)" : "Çince (Geleneksel Han)", + "Chinese (Traditional Han, Hong Kong SAR China)" : "Çince (Geleneksel Han, Hong Kong SAR Çin)", + "Chinese (Traditional Han, Macau SAR China)" : "Çince (Geleneksel Han, Macau SAR Çin)", + "Chinese (Traditional Han, Taiwan)" : "Çince (Geleneksel Han, Tayvan)", + "Chinese" : "Çince", + "Cornish (United Kingdom)" : "Kernevekçe (Birleşik Krallık)", + "Cornish" : "Kernevekçe", + "Croatian (Croatia)" : "Hırvatça (Hırvatistan)", + "Croatian" : "Hırvatça", + "Czech (Czech Republic)" : "Çekce (Çekya)", + "Czech" : "Çekce", + "Danish (Denmark)" : "Danca (Danimarka)", + "Danish" : "Danca", + "Dutch (Belgium)" : "Felemenkçe (Belçika)", + "Dutch (Netherlands)" : "Felemenkçe (Hollanda)", + "Dutch" : "Felemenkçe", + "Embu (Kenya)" : "Embu (Kenya)", + "Embu" : "Embu", + "English (American Samoa)" : "İngilizce (Amerikan Samoası)", + "English (Australia)" : "İngilizce (Avustralya)", + "English (Belgium)" : "İngilizce (Belçika)", + "English (Belize)" : "İngilizce (Belize)", + "English (Botswana)" : "İngilizce (Botswana)", + "English (Canada)" : "İngilizce (Kanada)", + "English (Guam)" : "İngilizce (Guam)", + "English (Hong Kong SAR China)" : "İngilizce (Hong Kong SAR Çin)", + "English (India)" : "İngilizce (Hindistan)", + "English (Ireland)" : "İngilizce (İrlanda)", + "English (Jamaica)" : "İngilizce (Jamaica)", + "English (Malta)" : "İngilizce (Malta)", + "English (Marshall Islands)" : "İngilizce (Marshall Adaları)", + "English (Mauritius)" : "İngilizce (Mauritius)", + "English (Namibia)" : "İngilizce (Namibya)", + "English (New Zealand)" : "İngilizce (Yeni Zelanda)", + "English (Northern Mariana Islands)" : "İngilizce (Kuzey Mariana Adaları)", + "English (Pakistan)" : "İngilizce (Pakistan)", + "English (Philippines)" : "İngilizce (Filipinler)", + "English (Singapore)" : "İngilizce (Singapur)", + "English (South Africa)" : "English (Güney Afrika)", + "English (Trinidad and Tobago)" : "İngilizce (Trinidad ve Tobago)", + "English (U.S. Minor Outlying Islands)" : "İngilizce (Birleşik Devletler Küçük Dış Adaları)", + "English (U.S. Virgin Islands)" : "İngilizce (Birleşik Devletler Virgin Adaları)", + "English (United Kingdom)" : "İngilizce (Birleşik Krallık)", + "English (United States)" : "İngilizce (Birleşik Devletler)", + "English (Zimbabwe)" : "İngilizce (Zimbabwe)", + "English" : "İngilizce", + "Esperanto" : "Esperanto", + "Estonian (Estonia)" : "Estonca (Estonya)", + "Estonian" : "Estonca", + "Ewe (Ghana)" : "Ewe (Gana)", + "Ewe (Togo)" : "Ewe (Togo)", + "Ewe" : "Ewe", + "Faroese (Faroe Islands)" : "Faroece (Faroe Adaları)", + "Faroese" : "Faroece", + "Filipino (Philippines)" : "Filipince (Filipinler)", + "Filipino" : "Filipince", + "Finnish (Finland)" : "Fince (Finlandiya)", + "Finnish" : "Fince", + "French (Belgium)" : "Fransızca (Belçika)", + "French (Benin)" : "Fransızca (Benin)", + "French (Burkina Faso)" : "Fransızca (Burkina Faso)", + "French (Burundi)" : "Fransızca (Burundi)", + "French (Cameroon)" : "Fransızca (Kamerun)", + "French (Canada)" : "Fransızca (Kanada)", + "French (Central African Republic)" : "Fransızca (Orta Afrika Cumhuriyeti)", + "French (Chad)" : "Fransızca (Çad)", + "French (Comoros)" : "Fransızca (Komoros)", + "French (Congo - Brazzaville)" : "Fransızca (Kongo - Brazzaville)", + "French (Congo - Kinshasa)" : "Fransızca (Kongo - Kinşasa)", + "French (Côte d’Ivoire)" : "Fransızca (Fildişi Sahili)", + "French (Djibouti)" : "Fransızca (Cibuti)", + "French (Equatorial Guinea)" : "Fransızca (Ekvator Ginesi)", + "French (France)" : "Fransızca (Fransa)", + "French (Gabon)" : "Fransızca (Gabon)", + "French (Guadeloupe)" : "Fransızca (Guadalup)", + "French (Guinea)" : "Fransızca (Gine)", + "French (Luxembourg)" : "Fransızca (Lüksemburg)", + "French (Madagascar)" : "Fransızca (Madagaskar)", + "French (Mali)" : "Fransızca (Mali)", + "French (Martinique)" : "Fransızca (Martinik)", + "French (Monaco)" : "Fransızca (Monako)", + "French (Niger)" : "Fransızca (Nijer)", + "French (Rwanda)" : "Fransızca (Ruanda)", + "French (Réunion)" : "Fransızca (Réunion)", + "French (Saint Barthélemy)" : "Fransızca (Saint Barthélemy)", + "French (Saint Martin)" : "Fransızca (Saint Martin)", + "French (Senegal)" : "Fransızca (Senegal)", + "French (Switzerland)" : "Fransızca (İsviçre)", + "French (Togo)" : "Fransızca (Togo)", + "French" : "Fransızca", + "Fulah (Senegal)" : "Fula (Senegal)", + "Fulah" : "Fula", + "Galician (Spain)" : "Galiçyaca (İspanya)", + "Galician" : "Galiçyaca", + "Ganda (Uganda)" : "Ganda (Uganda)", + "Ganda" : "Ganda", + "Georgian (Georgia)" : "Gürcüce (Gürcistan)", + "Georgian" : "Gürcüce", + "German (Austria)" : "Almanca (Avusturya)", + "German (Belgium)" : "Almanca (Belçika)", + "German (Germany)" : "Almanca (Almanya)", + "German (Liechtenstein)" : "Almanca (Lihtenştayn)", + "German (Luxembourg)" : "Almanca (Lüksemburg)", + "German (Switzerland)" : "Almanca (İsviçre)", + "German" : "Almanca", + "Greek (Cyprus)" : "Yunanca (Kıbrıs)", + "Greek (Greece)" : "Yunanca (Yunanistan)", + "Greek" : "Yunanca", + "Gujarati (India)" : "Guceratça (Hindistan)", + "Gujarati" : "Guceratça", + "Gusii (Kenya)" : "Gusii (Kenya)", + "Gusii" : "Gusii", + "Hausa (Latin)" : "Hausaca (Latin)", + "Hausa (Latin, Ghana)" : "Hausaca (Latin, Gana)", + "Hausa (Latin, Niger)" : "Hausaca (Latin, Nijer)", + "Hausa (Latin, Nigeria)" : "Hausaca (Latin, Nijerya)", + "Hausa" : "Hausaca", + "Hawaiian (United States)" : "Hawaice (Birleşik Devletler)", + "Hawaiian" : "Hawaice", + "Hebrew (Israel)" : "İbranice (İsrail)", + "Hebrew" : "İbranice", + "Hindi (India)" : "Hintçe (Hindistan)", + "Hindi" : "Hintçe", + "Hungarian (Hungary)" : "Macarca (Macaristan)", + "Hungarian" : "Macarca", + "Icelandic (Iceland)" : "İzlandaca (İzlanda)", + "Icelandic" : "İzlandaca", + "Igbo (Nigeria)" : "Igbo (Nijerya)", + "Igbo" : "Igbo", + "Indonesian (Indonesia)" : "Endonezce (Endonezya)", + "Indonesian" : "Endonezce", + "Irish (Ireland)" : "İrlandaca (İrlanda)", + "Irish" : "İrlandaca", + "Italian (Italy)" : "İtalyanca (İtalya)", + "Italian (Switzerland)" : "İtalyanca (İsviçre)", + "Italian" : "İtalyanca", + "Japanese (Japan)" : "Japonca (Japonya)", + "Japanese" : "Japonca", + "Kabuverdianu (Cape Verde)" : "Kabuverdianu (Cape Verde)", + "Kabuverdianu" : "Kabuverdianu", + "Kabyle (Algeria)" : "Berberice (Cezayir)", + "Kabyle" : "Berberice", + "Kalaallisut (Greenland)" : "Grönlandca (Grönland)", + "Kalaallisut" : "Grönlandca", + "Kalenjin (Kenya)" : "Kalenjin (Kenya)", + "Kalenjin" : "Kalenjin", + "Kamba (Kenya)" : "Kamba (Kenya)", + "Kamba" : "Kamba", + "Kannada (India)" : "Kannada (Hindistan)", + "Kannada" : "Kannada", + "Kazakh (Cyrillic)" : "Kazakça (Kiril)", + "Kazakh (Cyrillic, Kazakhstan)" : "Kazakça (Kiril, Kazakistan)", + "Kazakh" : "Kazakça", + "Khmer (Cambodia)" : "Kmerce (Kamboçya)", + "Khmer" : "Kmerce", + "Kikuyu (Kenya)" : "Kikuyu (Kenya)", + "Kikuyu" : "Kikuyu", + "Kinyarwanda (Rwanda)" : "Ruandaca (Ruanda)", + "Kinyarwanda" : "Ruandaca", + "Konkani (India)" : "Konkani (Hindistan)", + "Konkani" : "Konkani", + "Korean (South Korea)" : "Korece (Güney Kore)", + "Korean" : "Korece", + "Koyra Chiini (Mali)" : "Koyra Chiini (Mali)", + "Koyra Chiini" : "Koyra Chiini", + "Koyraboro Senni (Mali)" : "Koyraboro Senni (Mali)", + "Koyraboro Senni" : "Koyraboro Senni", + "Langi (Tanzania)" : "Langi (Tanzanya)", + "Langi" : "Langi", + "Latvian (Latvia)" : "Letonca (Letonya)", + "Latvian" : "Letonca", + "Lithuanian (Lithuania)" : "Litvanca (Litvanya)", + "Lithuanian" : "Litvanca", + "Luo (Kenya)" : "Luo (Kenya)", + "Luo" : "Luo", + "Luyia (Kenya)" : "Luyia (Kenya)", + "Luyia" : "Luyia", + "Macedonian (Macedonia)" : "Makedonca (Makedonya)", + "Macedonian" : "Makedonca", + "Machame (Tanzania)" : "Machame (Tanzanya)", + "Machame" : "Machame", + "Makonde (Tanzania)" : "Makonde (Tanzanya)", + "Makonde" : "Makonde", + "Malagasy (Madagascar)" : "Malagazca (Madagaskar)", + "Malagasy" : "Malagazca", + "Malay (Brunei)" : "Malayca (Brunei)", + "Malay (Malaysia)" : "Malayca (Malezya)", + "Malay" : "Malayca", + "Malayalam (India)" : "Malayamca (Hindistan)", + "Malayalam" : "Malayamca", + "Maltese (Malta)" : "Maltaca (Malta)", + "Maltese" : "Maltaca", + "Manx (United Kingdom)" : "Man (Birleşik Krallık)", + "Manx" : "Man", + "Marathi (India)" : "Marathi (Hi)ndistan", + "Marathi" : "Marathi", + "Masai (Kenya)" : "Masai (Kenya)", + "Masai (Tanzania)" : "Masai (Tanzanya)", + "Masai" : "Masai", + "Meru (Kenya)" : "Meru (Kenya)", + "Meru" : "Meru", + "Morisyen (Mauritius)" : "Morisyen (Mauritius)", + "Morisyen" : "Morisyen", + "Nama (Namibia)" : "Nama (Namibya)", + "Nama" : "Nama", + "Nepali (India)" : "Nepalce (Hindistan)", + "Nepali (Nepal)" : "Nepalce (Nepal)", + "Nepali" : "Nepalce", + "North Ndebele (Zimbabwe)" : "Kuzey Ndebele (Zimbabve)", + "North Ndebele" : "Kuzey Ndebele", + "Norwegian Bokmål (Norway)" : "Norveç Bokmål (Norveç)", + "Norwegian Bokmål" : "Norveç Bokmål", + "Norwegian Nynorsk (Norway)" : "Norveç Nynorsk (Norveç)", + "Norwegian Nynorsk" : "Norveç Nynorsk", + "Nyankole (Uganda)" : "Nyankole (Uganda)", + "Nyankole" : "Nyankole", + "Oriya (India)" : "Oriya (Hindistan)", + "Oriya" : "Oriya", + "Oromo (Ethiopia)" : "Oromo (Etiyopya)", + "Oromo (Kenya)" : "Oromo (Kenya)", + "Oromo" : "Oromo", + "Pashto (Afghanistan)" : "Peştuca (Afganistan)", + "Pashto" : "Peştuca", + "Persian (Afghanistan)" : "Farsça (Afganistan)", + "Persian (Iran)" : "Farsça (İran)", + "Persian" : "Farsça", + "Polish (Poland)" : "Lehçe (Polonya)", + "Polish" : "Lehçe", + "Portuguese (Brazil)" : "Portekizce (Brezilya)", + "Portuguese (Guinea-Bissau)" : "Portekizce (Gine Bissau)", + "Portuguese (Mozambique)" : "Portekizce (Mozambik)", + "Portuguese (Portugal)" : "Portekizce (Portekiz)", + "Portuguese" : "Portekizce", + "Punjabi (Arabic)" : "Pencapça (Arap)", + "Punjabi (Arabic, Pakistan)" : "Pencapça (Arap, Pakistan)", + "Punjabi (Gurmukhi)" : "Pencapça (Gurmukhi)", + "Punjabi (Gurmukhi, India)" : "Pencapça (Gurmukhi, Hindistan)", + "Punjabi" : "Pencapça", + "Romanian (Moldova)" : "Romence (Moldova)", + "Romanian (Romania)" : "Romence (Romanya)", + "Romanian" : "Romence", + "Romansh (Switzerland)" : "Romanşça (İsviçre)", + "Romansh" : "Romanşça", + "Rombo (Tanzania)" : "Rombo (Tanzanya)", + "Rombo" : "Rombo", + "Russian (Moldova)" : "Rusça (Moldova)", + "Russian (Russia)" : "Rusça (Rusya)", + "Russian (Ukraine)" : "Rusça (Ukrayna)", + "Russian" : "Rusça", + "Rwa (Tanzania)" : "Rwa (Tanzanya)", + "Rwa" : "Rwa", + "Samburu (Kenya)" : "Samburu (Kenya)", + "Samburu" : "Samburu", + "Sango (Central African Republic)" : "Sango (Orta Afrika Cumhuriyeti)", + "Sango" : "Sango", + "Sena (Mozambique)" : "Sena (Mozambik)", + "Sena" : "Sena", + "Serbian (Cyrillic)" : "Sırpça (Kiril)", + "Serbian (Cyrillic, Bosnia and Herzegovina)" : "Sıpça (Kiril, Bosna Hersek)", + "Serbian (Cyrillic, Montenegro)" : "Sırpça (Kiril, Montenegro)", + "Serbian (Cyrillic, Serbia)" : "Sırpça (Kiril, Sırbistan)", + "Serbian (Latin)" : "Sırpça (Latin)", + "Serbian (Latin, Bosnia and Herzegovina)" : "Sırpça (Latin, Bosna Hersek)", + "Serbian (Latin, Montenegro)" : "Sırpça (Latin, Montenegro)", + "Serbian (Latin, Serbia)" : "Sırpça (Latin, Sırbistan)", + "Serbian" : "Sırpça", + "Shona (Zimbabwe)" : "Şona (Zimbabve)", + "Shona" : "Şona", + "Sichuan Yi (China)" : "Sichuan Yi (Çin)", + "Sichuan Yi" : "Sichuan Yi", + "Sinhala (Sri Lanka)" : "Sinhala (Sri Lanka)", + "Sinhala" : "Sinhala", + "Slovak (Slovakia)" : "Slovakça (Slovakya)", + "Slovak" : "Slovakça", + "Slovenian (Slovenia)" : "Slovence (Slovenya)", + "Slovenian" : "Slovence", + "Soga (Uganda)" : "Soga (Uganda)", + "Soga" : "Soga", + "Somali (Djibouti)" : "Somali (Cibuti)", + "Somali (Ethiopia)" : "Somali (Etiyopya)", + "Somali (Kenya)" : "Somali (Kenya)", + "Somali (Somalia)" : "Somali (Somali)", + "Somali" : "Somali", + "Spanish (Argentina)" : "İspanyolca (Arjantin)", + "Spanish (Bolivia)" : "İspanyolca (Bolivya)", + "Spanish (Chile)" : "İspanyolca (Şili)", + "Spanish (Colombia)" : "İspanyolca (Kolombiya)", + "Spanish (Costa Rica)" : "İspanyolca (Kosta Rika)", + "Spanish (Dominican Republic)" : "İspanyolca (Dominik Cumhuriyeti)", + "Spanish (Ecuador)" : "İspanyolca (Ekvator)", + "Spanish (El Salvador)" : "İspanyolca (El Salvador)", + "Spanish (Equatorial Guinea)" : "İspanyolca (Ekvator Ginesi)", + "Spanish (Guatemala)" : "İspanyolca (Guatemala)", + "Spanish (Honduras)" : "İspanyolca (Honduras)", + "Spanish (Latin America)" : "İspanyolca (Latin Amerika)", + "Spanish (Mexico)" : "İspanyolca (Meksika)", + "Spanish (Nicaragua)" : "İspanyolca (Nikaragua)", + "Spanish (Panama)" : "İspanyolca (Panama)", + "Spanish (Paraguay)" : "İspanyolca (Paraguay)", + "Spanish (Peru)" : "İspanyolca (Peru)", + "Spanish (Puerto Rico)" : "İspanyolca (Porto Riko)", + "Spanish (Spain)" : "İspanyolca (İspanya)", + "Spanish (United States)" : "İspanyolca (Birleşik Devletler)", + "Spanish (Uruguay)" : "İspanyolca (Uruguay)", + "Spanish (Venezuela)" : "İspanyolca (Venezuela)", + "Spanish" : "İspanyolca", + "Swahili (Kenya)" : "Svahili (Kenya)", + "Swahili (Tanzania)" : "Svahili (Tanzanya)", + "Swahili" : "Svahili", + "Swedish (Finland)" : "İsveçce (Finlandiya)", + "Swedish (Sweden)" : "İsveçce (İsveç)", + "Swedish" : "İsveç", + "Swiss German (Switzerland)" : "İsviçre Almancası (İsviçre)", + "Swiss German" : "İsviçre Almancası", + "Tachelhit (Latin)" : "Tachelhit (Latin)", + "Tachelhit (Latin, Morocco)" : "Tachelhit (Latin, Fas)", + "Tachelhit (Tifinagh)" : "Tachelhit (Tifinag)", + "Tachelhit (Tifinagh, Morocco)" : "Tachelhit (Tifinag, Fas)", + "Tachelhit" : "Tachelhit", + "Taita (Kenya)" : "Taita (Kenya)", + "Taita" : "Taita", + "Tamil (India)" : "Tamilce (Hindistan)", + "Tamil (Sri Lanka)" : "Tamilce (Sri Lanka)", + "Tamil" : "Tamilce", + "Telugu (India)" : "Teluguca (Hindistan)", + "Telugu" : "Teluguca", + "Teso (Kenya)" : "Teso (Kenya)", + "Teso (Uganda)" : "Teso (Uganda)", + "Teso" : "Teso", + "Thai (Thailand)" : "Tay (Tayland)", + "Thai" : "Tay", + "Tibetan (China)" : "Tibetçe (Çin)", + "Tibetan (India)" : "Tibetçe (Hindistan)", + "Tibetan" : "Tibetçe", + "Tigrinya (Eritrea)" : "Tigrinya (Eritre)", + "Tigrinya (Ethiopia)" : "Tigrinya (Etiyopya)", + "Tigrinya" : "Tigrinya", + "Tonga (Tonga)" : "Tonga (Tonga)", + "Tonga" : "Tonga", + "Turkish (Turkey)" : "Türkçe (Türkiye)", + "Turkish" : "Türkçe", + "Ukrainian (Ukraine)" : "Ukraynaca (Ukrayna)", + "Ukrainian" : "Ukraynaca", + "Urdu (India)" : "Urdu (Hindistan)", + "Urdu (Pakistan)" : "Urdu (Pakistan)", + "Urdu" : "Urdu", + "Uzbek (Arabic)" : "Özbekçe (Arap)", + "Uzbek (Arabic, Afghanistan)" : "Özbekçe (Arap, Afganistan)", + "Uzbek (Cyrillic)" : "Özbekçe (Kiril)", + "Uzbek (Cyrillic, Uzbekistan)" : "Özbekçe (Kiril, Özbekistan)", + "Uzbek (Latin)" : "Özbekçe (Latin)", + "Uzbek (Latin, Uzbekistan)" : "Özbekçe (Latin, Özbekistan)", + "Uzbek" : "Özbekçe", + "Vietnamese (Vietnam)" : "Vietnamca (Vietnam)", + "Vietnamese" : "Vietnamca", + "Vunjo (Tanzania)" : "Vunjo (Tanzanya)", + "Vunjo" : "Vunjo", + "Welsh (United Kingdom)" : "Galce (Birleşik Krallık)", + "Welsh" : "Galce", + "Yoruba (Nigeria)" : "Yoruba (Nijerya)", + "Yoruba" : "Yoruba", + "Zulu (South Africa)" : "Zulu (Güney Afrika)", + "Zulu" : "Zulu", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Tüm kullanıcılar ve belirli gruplar için iki aşamalı\tkimlik doğrulama kullanılır. Yapılandırılmış bir iki aşamalı kimlik doğrulama hizmeti sağlayıcısı olmayan kullanıcılar oturum açamaz.", + "Enforce two-factor authentication" : "İki aşamalı kimlik doğrulama dayatılsın", + "Limit to groups" : "Şu gruplarla sınırla", + "Enforcement of two-factor authentication can be set for certain groups only." : "İki aşamalı kimlik doğrulaması yalnız belirli gruplara dayatılabilir.", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "İki aşamalı kimlik doğrulaması şu grupların tüm üyelerine dayatılır.", + "Enforced groups" : "Dayatılan gruplar", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "Şu grupların üyeleri için iki aşamalı kimlik doğrulaması\tdayatılmaz.", + "Excluded groups" : "Dayatılmayan gruplar", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "Gruplar katıldığında ya da katılmadığında, bir kullanıcının İki Aşamalı Kimlik Doğrulaması kullanıp kullanmayacağına karar verilmesi için şu mantık yürütülür. Herhangi bir grup seçilmemiş ise, katılmayan grupların üyeleri dışındaki tüm üyeler için İki Aşamalı Kimlik Doğrulaması kullanılır. Seçilmiş gruplar varsa, İki Aşamalı Kimlik Doğrulaması katılan bu grupların üyeleri için kullanılır. Bir kullanıcının hem katılmış hem de katılmamış gruplarda üyeliği varsa, katılmış grupların önceliği vardır ve İki Aşamalı Kimlik Doğrulaması kullanılır.", + "Save changes" : "Değişiklikleri kaydet", + "Marked for remote wipe" : "Uzaktan silme için işaretlendi", + "Device settings" : "Aygıt ayarları", + "Allow filesystem access" : "Dosya sistemine erişilebilsin", + "Rename" : "Yeniden Adlandır", + "Revoke" : "Geri Al", + "Wipe device" : "Aygıtı sil", + "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Silme işlemi henüz başlamamış ise bu kodun geri çekilmesi aygıtınızın silinmesini engelleyebilir.", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Android için Google Chrome", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Nextcloud iOS uygulaması", + "Nextcloud Android app" : "Nextcloud Android uygulaması", + "Nextcloud Talk for iOS" : "iOS için Nextcloud Talk", + "Nextcloud Talk for Android" : "Android için Nextcloud Talk", + "Sync client - {os}" : "Eşitleme istemcisi - {os}", + "This session" : "Bu oturum", + "Device" : "Aygıt", + "Last activity" : "Son işlem", + "Devices & sessions" : "Aygıt ve oturumlar", + "Web, desktop and mobile clients currently logged in to your account." : "Şu anda hesabınıza oturum açmış web, masaüstü ve mobil istemciler.", + "Do you really want to wipe your data from this device?" : "Bu aygıt üzerindeki verilerinizi silmek istediğinize emin misiniz?", + "Confirm wipe" : "Silmeyi onayla", + "Error while creating device token" : "Aygıt kodu oluşturulurken sorun çıktı", + "Error while updating device token scope" : "Aygıt kodu aralığı güncellenirken sorun çıktı", + "Error while updating device token name" : "Aygıt kodu adı güncellenirken sorun çıktı", + "Error while deleting the token" : "Kod silinirken sorun çıktı", + "Error while wiping the device with the token" : "Aygıtın kod ile silinmesinde sorun çıktı", + "App name" : "Uygulama adı", + "Create new app password" : "Yeni uygulama parolası oluştur", + "Use the credentials below to configure your app or device." : "Uygulama ya da aygıtınızı yapılandırmak için aşağıdaki kimlik doğrulama bilgileri kullanılır.", + "For security reasons this password will only be shown once." : "Güvenlik nedenleriyle bu parola yalnız bir kez görüntülenir.", + "Username" : "Kullanıcı Adı", + "Password" : "Parola", + "Done" : "Tamam", + "Show QR code for mobile apps" : "Mobil uygulamalar için QR kodu görüntülensin", + "Copied!" : "Kopyalandı!", + "Copy" : "Kopyala", + "Could not copy app password. Please copy it manually." : "Uygulama parolası kopyalanamadı. Lütfen el ile kopyalayın.", + "This app is supported via your current Nextcloud subscription." : "Bu uygulamanın desteği geçerli Nextcloud aboneliğiniz ile sağlanır.", + "Supported" : "Destekleniyor", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Resmi uygulamalar topluluk tarafından geliştirilmiştir. Merkezi işlevleri yerine getirdikleri gibi kullanıma da hazırdırlar.", + "Official" : "Resmi", + "by" : "Kişi:", + "Update to {version}" : "{version} sürümüne güncelle", + "Remove" : "Kaldır", + "Disable" : "Devre Dışı Bırak", + "All" : "Tümü", + "Limit app usage to groups" : "Uygulama kullanımını şu gruplarla sınırla", + "No results" : "Herhangi bir sonuç bulunamadı", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Bu uygulama için en düşük Nextcloud sürümü belirtilmemiş. Bu durum ileride sorun çıkarır.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Bu uygulama için en yüksek Nextcloud sürümü belirtilmemiş. Bu durum ileride sorun çıkarır.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Aşağıdaki bağımlılıklar sağlanmadığından bu uygulama kurulamıyor:", + "View in store" : "Mağazada görüntüle", + "Visit website" : "Web sayfasına bakın", + "Report a bug" : "Hata bildirin", + "User documentation" : "Kullanıcı belgeleri", + "Admin documentation" : "Yönetici belgeleri", + "Developer documentation" : "Geliştirici belgeleri", + "Update to {update}" : "{update} sürümüne güncelle", + "Results from other categories" : "Diğer kategorilerden sonuçlar", + "No apps found for your version" : "Sürümünüze uygun bir uygulama bulunamadı", + "Disable all" : "Tümünü devre dışı bırak", + "Enable all" : "Tümünü Etkinleştir", + "Download and enable" : "İndir ve etkinleştir", + "Enable" : "Etkinleştir", + "Enable untested app" : "Denenmemiş uygulamalar kullanılabilsin", + "The app will be downloaded from the app store" : "Uygulama uygulama mağazasından indirilecek", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Bu uygulamanın kullandığınız Nextcloud sürümü ile uyumluluğu denetlenmemiş. Devam ederseniz uygulamayı kurabilirsiniz. Ancak uygulama beklendiği gibi çalışmayabilir.", + "You do not have permissions to see the details of this user" : "Bu kullanıcının ayrıntılarını görüntüleme izniniz yok", + "The backend does not support changing the display name" : "Yönetim bölümünden görüntülenecek ad değiştirilemiyor", + "New password" : "Yeni parola", + "Add user in group" : "Gruba kullanıcı ekle", + "Set user as admin for" : "Kullanıcıyı şurada yönetici yap", + "Select user quota" : "Kullanıcı kotasını seçin", + "No language set" : "Herhangi bir dil ayarlanmamış", + "Never" : "Asla", + "Delete user" : "Kullanıcıyı Sil", + "Wipe all devices" : "Tüm aygıtları sil", + "Disable user" : "Kullanıcıyı devre dışı bırak", + "Enable user" : "Kullanıcıyı etkinleştir", + "Resend welcome email" : "Karşılama e-postasını yeniden gönder", + "{size} used" : "{size} kullanılmış", + "Welcome mail sent!" : "Karşılama e-postası gönderildi!", + "Display name" : "Görüntülenecek ad", + "Email" : "E-posta", + "Group admin for" : "Şunun grup yöneticisi", + "Quota" : "Kota", + "Language" : "Dil", + "Storage location" : "Depolama konumu", + "User backend" : "Kullanıcı Arka Ucu", + "Last login" : "Son oturum açma", + "Will be autogenerated" : "Otomatik olarak oluşturulacak", + "Default language" : "Varsayılan dil", + "Add a new user" : "Kullanıcı ekle", + "No users in here" : "Henüz herhangi bir kullanıcı eklenmemiş", + "Default quota" : "Varsayılan kota", + "Password change is disabled because the master key is disabled" : "Ana anahtar devre dışı bırakıldığından parola değişikliği devre dışı bırakıldı.", + "Common languages" : "Sık kullanılan diller", + "All languages" : "Tüm diller", + "Your apps" : "Uygulamalarınız", + "Active apps" : "Etkin uygulamalar", + "Disabled apps" : "Devre Dışı Uygulamalar", + "Updates" : "Güncellemeler", + "App bundles" : "Uygulama Paketleri", + "{license}-licensed" : "{license}-lisanslı", + "New user" : "Yeni kullanıcı", + "Default quota:" : "Varsayılan kota:", + "Select default quota" : "Varsayılan kota değerini seçin", + "Show Languages" : "Dilleri Görüntüle", + "Show last login" : "Son oturum açma zamanı görüntülensin", + "Show user backend" : "Kullanıcı arka ucu görüntülensin", + "Show storage path" : "Depolama yolu görüntülensin", + "You are about to remove the group {group}. The users will NOT be deleted." : "{group} grubunu silmek üzeresiniz. Kullanıcılar SİLİNMEYECEK.", + "Please confirm the group removal " : "Grubu silme işlemini onaylayın", + "Remove group" : "Grubu Sil", + "Admins" : "Yöneticiler", + "Disabled users" : "Devre dışı bırakılmış kullanıcılar", + "Everyone" : "Herkes", + "Add group" : "Grup ekle", + "An error occured during the request. Unable to proceed." : "İstek sırasında bir sorun çıktı. İşlem sürdürülemiyor.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Uygulama etkinleştirilmiş fakat güncellenmesi gerekiyor. 5 saniye içinde güncelleme sayfasına yönlendirileceksiniz.", + "App update" : "Uygulama güncellemesi", + "Error: This app can not be enabled because it makes the server unstable" : "Hata: Bu uygulama sunucuda kararsızlığa yol açtığından etkinleştirilemez", + "SSL Root Certificates" : "SSL Kök Sertifikaları", + "Common Name" : "Ortak Ad", + "Valid until" : "Geçerlilik", + "Issued By" : "Yayınlayan", + "Valid until %s" : "%s tarihine kadar geçerli", + "Import root certificate" : "Kök sertifikasını içe aktar", + "Administrator documentation" : "Yönetici belgeleri", + "Documentation" : "Belgeler", + "Forum" : "Forum", + "None" : "Yok", + "Login" : "Oturum Açın", + "Plain" : "Düz", + "NT LAN Manager" : "NT Ağ Yöneticisi", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "E-posta sunucusu", + "Open documentation" : "Belgeleri aç", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Bu sunucunun parola sıfırlama ve bildirim işlemleri için e-posta gönderebilecek şekilde ayarlanmış olması önemlidir.", + "Send mode" : "Gönderim kipi", + "Encryption" : "Şifreleme", + "Sendmail mode" : "Sendmail kipi", + "From address" : "Kimden adresi", + "mail" : "posta", + "Authentication method" : "Kimlik doğrulama yöntemi", + "Authentication required" : "Kimlik doğrulaması gerekli", + "Server address" : "Sunucu adresi", + "Port" : "Kapı Numarası", + "Credentials" : "Kimlik Doğrulama Bilgileri", + "SMTP Username" : "SMTP Kullanıcı Adı", + "SMTP Password" : "SMTP Parolası", + "Save" : "Kaydet", + "Test email settings" : "E-posta ayarlarını sına", + "Send email" : "E-posta gönder", + "Security & setup warnings" : "Güvenlik ve kurulum uyarıları", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Kopyanızın güvenli ve yüksek başarımla çalışması için ayarların doğru yapılmış olması önemlidir. Bunu sağlamak için bazı otomatik denetimler yapılır. Ayrıntılı bilgi almak için İpuçları bölümüne ve belgelere bakın.", + "All checks passed." : "Tüm denetimlerden geçti.", + "There are some errors regarding your setup." : "Kurulumunuz ile ilgili bazı sorunlar var.", + "There are some warnings regarding your setup." : "Kurulumunuz ile ilgili bazı uyarılar var.", + "Checking for system and security issues." : "Sistem ve güvenlik sorunları denetleniyor.", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Lütfen <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">kurulum rehberlerini↗</a> yeniden gözden geçirin ve <a href=\"%2$s\">günlük</a> kayıtlarındaki hata ve uyarılara bakın.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">Güvenlik sınamamızdan ↗</a> geçirerek Nextcloud güvenliğinizi denetleyin.", + "Version" : "Sürüm", + "Two-Factor Authentication" : "İki Aşamalı Kimlik Doğrulama", + "Server-side encryption" : "Sunucu tarafı şifreleme", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Sunucu tarafındaki şifreleme, sunucuya yüklenen dosyaların şifrelenebilmesini sağlar. Bu özellik genel başarımı düşürdüğünden yalnız gerek varsa etkinleştirin.", + "Enable server-side encryption" : "Sunucu tarafı şifreleme kullanılsın", + "Please read carefully before activating server-side encryption: " : "Lütfen sunucu tarafında şifrelemeyi etkinleştirmeden önce dikkatlice okuyun: ", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Şifreleme etkinleştirildiğinde, etkinleştirme anından sonra sunucuya yüklenen tüm dosyalar şifrelenir. Şifreleme daha sonra devre dışı bırakılmak istenirse, etkin şifreleme modülünün bu özelliği desteklemesi ve tüm ön koşulların (örneğin kurtarma anahtarı oluşturulması) yerine getirilmesi gerekir.", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Şifreleme tek başına sistemin güvenliğini garanti etmez. Lütfen şifreleme uygulamasının nasıl çalıştığı ve desteklenen kullanım şekilleri hakkında ayrıntılı bilgi almak için belgelere bakabilirsiniz.", + "Be aware that encryption always increases the file size." : "Şifreleme işleminin dosya boyutlarını büyüteceğini unutmayın.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Verilerinizi düzenli yedekleyin ve şifreleme kullanıyorsanız şifreleme anahtarlarınızın da verilerinizle birlikte yedeklendiğinden emin olun.", + "This is the final warning: Do you really want to enable encryption?" : "Son uyarı: Şifrelemeyi etkinleştirmek istiyor musunuz?", + "Enable encryption" : "Şifreleme kullanılsın", + "No encryption module loaded, please enable an encryption module in the app menu." : "Herhangi bir şifrelenme modülü yüklenmemiş. Lütfen uygulama menüsünden bir şifreleme modülünü etkinleştirin.", + "Select default encryption module:" : "Varsayılan şifreleme modülünü seçin:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Şifreleme anahtarlarınızı eski şifrelemeden (ownCloud <= 8.0) yenisine aktarmalısınız. Lütfen \"Varsayılan şifreleme modülü\"nü etkinleştirip 'occ encryption:migrate' komutunu yürütün", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Şifreleme anahtarlarınızı eski şifrelemeden (ownCloud <= 8.0) yenisine aktarmalısınız.", + "Start migration" : "Aktarmayı başlat", + "Background jobs" : "Arka plan görevleri", + "Last job ran %s." : "Son görev çalışması: %s.", + "Last job execution ran %s. Something seems wrong." : "Son görev yürütülmesi: %s. Yanlış bir şeyler var.", + "Background job didn’t run yet!" : "Arka plan görevi henüz yürütülmemiş!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "En iyi başarım için arka plan görevlerinin doğru şekilde ayarlanması önemlidir. Büyük kurulumlar için 'Cron' ayarı önerilir. Ayrıntılı bilgi almak için belgelere bakabilirsiniz.", + "Pick background job setting" : "Arka plan görevi ayarlarını seçin", + "Execute one task with each page loaded" : "Her sayfa yüklemesinde bir görev yürütülsün", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php, HTTP üzerinden 5 dakikada bir yürütülmesi için webcron hizmetine kaydedildi.", + "Use system cron service to call the cron.php file every 5 minutes." : "5 dakikada bir cron.php dosyasının çağrılması için sistem cron hizmeti kullanılsın.", + "The cron.php needs to be executed by the system user \"%s\"." : "cron.php dosyası \"%s\" sistem kullanıcısı tarafından yürütülmelidir.", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Bunu çalıştıraiblmek için PHP POSIX eklentisi gereklidir. Ayrıntılı bilgi almak için {linkstart}PHP belgelerine{linkend} bakabilirsiniz.", + "Sharing" : "Paylaşım", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Yönetici olarak paylaşma davranışı ile ilgili ince ayarları yapabilirsiniz. Ayrıntılı bilgi almak için belgelere bakabilirsiniz.", + "Allow apps to use the Share API" : "Uygulamalar Paylaşım API kullanabilsin", + "Allow users to share via link" : "Kullanıcıların bağlantı ile paylaşabilsin", + "Allow public uploads" : "Herkes yükleyebilsin", + "Always ask for a password" : "Her zaman parola sorulsun", + "Enforce password protection" : "Parola koruması dayatılsın", + "Set default expiration date" : "Varsayılan son kullanma tarihini ayarla", + "Expire after " : "Kullanım süresi", + "days" : "gün sonra dolsun", + "Enforce expiration date" : "Son kullanma tarihi dayatılsın", + "Allow resharing" : "Yeniden paylaşılabilsin", + "Allow sharing with groups" : "Gruplar ile paylaşılabilsin", + "Restrict users to only share with users in their groups" : "Kullanıcılar, yalnız kendi gruplarındaki kullanıcılarla paylaşabilsin", + "Exclude groups from sharing" : "Gruplar paylaşıma katılmasın", + "These groups will still be able to receive shares, but not to initiate them." : "Bu gruplar paylaşımları alabilir ancak başlatamaz.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Bu seçenek etkinleştirildiğinde, paylaşma penceresindeki kullanıcı adı otomatik olarak tamamlanır. Devre dışı bırakıldığında tam kullanıcı adının ya da e-posta adresinin yazılması gerekir.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Herkese açık bağlantı yükleme sayfasındaki sorumluluk reddi bildirim metni (yalnız dosya listesi gizli iken görüntülenir).", + "This text will be shown on the public link upload page when the file list is hidden." : "Dosya listesi gizli iken herkese açık bağlantı yükleme sayfasında görüntülenecek sorumluluk reddi bildirimi metni.", + "Default share permissions" : "Varsayılan paylaşım izinleri", + "Personal" : "Kişisel", + "Administration" : "Yönetim", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "{communityopen}Nextcloud topluluğu tarafından geliştirilmiştir{linkclose}.  {githubopen}Kaynak kodu{linkclose} {licenseopen}AGPL{linkclose} koşulları altında lisanslanmıştır.", + "Like our Facebook page" : "Facebook sayfamızı beğenin", + "Follow us on Twitter" : "Bizi Twitter üzerinde izleyin", + "Follow us on Mastodon" : "Bizi Mastodon üzerinde izleyin", + "Check out our blog" : "Bloğumuza bakın", + "Subscribe to our newsletter" : " Bültenimize abone olun", + "Profile picture" : "Profil görseli", + "Upload new" : "Yeni yükle", + "Select from Files" : "Dosyalardan seç", + "Remove image" : "Görseli kaldır", + "png or jpg, max. 20 MB" : "png ya da jpg, en fazla 20 MB", + "Picture provided by original account" : "Görsel özgün hesabınız tarafından sağlanıyor", + "Cancel" : "İptal", + "Choose as profile picture" : "Profil görseli olarak seç", + "Details" : "Ayrıntılar", + "You are a member of the following groups:" : "Şu gruplara üyesiniz:", + "You are using <strong>%s</strong>" : "<strong>%s</strong> kullanıyorsunuz", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Kullandığınız: <strong>%1$s</strong> Kullanabileceğiniz: <strong>%2$s</strong> (<strong>%3$s %%</strong>)", + "Full name" : "Tam ad", + "No display name set" : "Görüntülenecek ad belirtilmemiş", + "Your email address" : "E-posta adresiniz", + "No email address set" : "E-posta adresi belirtilmemiş", + "For password reset and notifications" : "Parola sıfırlama ve bildirimler için", + "Phone number" : "Telefon numarası", + "Your phone number" : "Telefon numaranız", + "Address" : "Adres", + "Your postal address" : "Posta adresiniz", + "Website" : "Web sitesi", + "It can take up to 24 hours before the account is displayed as verified." : "Hesabın doğrulanması ve görüntülenmesi 24 saate kadar zaman alabilir.", + "Link https://…" : "Bağlantı https://…", + "Twitter" : "Twitter", + "Twitter handle @…" : "Twitter kodu @…", + "Help translate" : "Çeviriye yardım edin", + "Locale" : "Yerel Ayar", + "Current password" : "Geçerli parola", + "Change password" : "Parola değiştir", + "Use a second factor besides your password to increase security for your account." : "Parolanızın yanında ikinci bir doğrulama kullanarak hesabınızın güvenliğini arttırabilirsiniz.", + "Disconnect" : "Bağlantıyı Kes", + "Not supported!" : "Desteklenmiyor!", + "Press ⌘-C to copy." : "Kopyalamak için ⌘-C tuşlarına basın.", + "Press Ctrl-C to copy." : "Kopyalamak için Ctrl-C tuşlarına basın.", + "Error while loading browser sessions and device tokens" : "Tarayıcı oturumu ve aygıt kodları yüklenirken sorun çıktı", + "Store credentials" : "Kimlik bilgileri kaydedilsin", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php, HTTP üzerinden 15 dakikada bir yürütülmesi için webcron hizmetine kaydedildi.", + "Use system cron service to call the cron.php file every 15 minutes." : "15 dakikada bir cron.php dosyasının çağrılması için sistem cron hizmeti kullanılsın.", + "Follow us on Google+" : "Bizi Google+ üzerinde izleyin" +},"pluralForm" :"nplurals=2; plural=(n > 1);" +} \ No newline at end of file diff --git a/apps/settings/l10n/uk.js b/apps/settings/l10n/uk.js new file mode 100644 index 00000000000..1dbfaad617e --- /dev/null +++ b/apps/settings/l10n/uk.js @@ -0,0 +1,312 @@ +OC.L10N.register( + "settings", + { + "{actor} added you to group {group}" : "{actor} додав вас до групи {group}", + "You added {user} to group {group}" : "Ви додали {user} до групи {group}", + "{actor} added {user} to group {group}" : "{actor} додав {user} до групи {group}", + "An administrator added you to group {group}" : "Адміністратор додав вас до групи {group}", + "An administrator added {user} to group {group}" : "Адміністратор додав {user} до групи {group}", + "{actor} removed you from group {group}" : "{actor} вилучив вас із групи {group}", + "You removed {user} from group {group}" : "Ви вилучили {user} з групи {group}", + "{actor} removed {user} from group {group}" : "{actor} вилучив {user} з групи {group}", + "An administrator removed you from group {group}" : "Адміністратор вилучив вас з групи {group}", + "An administrator removed {user} from group {group}" : "Адміністратор вилучив {user} з групи {group}", + "Your <strong>group memberships</strong> were modified" : "Парамеири вашої <strong>участі в групі</strong> оновлено", + "{actor} changed your password" : "{actor} змінив ваш пароль", + "You changed your password" : "Ви змінили свій пароль", + "Your password was reset by an administrator" : "Ваш пароль був скинутий адміністратором", + "{actor} changed your email address" : "{actor} змінив вашу email адресу", + "You changed your email address" : "Ви змінили вашу email адресу", + "Your email address was changed by an administrator" : "Ваша email адреса змінена адміністратором", + "Security" : "Безпека", + "You successfully logged in using two-factor authentication (%1$s)" : "Ви успішно увійшли, використовуючи двофакторну аутентифікацію (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Помилка спроби входу в систему, використовуючи двофакторну аутентифікацію (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Ваш <strong>пароль</strong> чи <strong>електронна пошта</strong> були змінені", + "Couldn't remove app." : "Неможливо вилучити застосунок.", + "Couldn't update app." : "Не вдалося оновити застосунок.", + "Wrong password" : "Неправильний пароль", + "Saved" : "Збережено", + "No user supplied" : "Користувача не вказано", + "Unable to change password" : "Неможливо змінити пароль", + "Authentication error" : "Помилка автентифікації", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Будь ласка, введіть пароль відновлення адміністратора; інакше всі дані користувача будуть втрачені.", + "Wrong admin recovery password. Please check the password and try again." : "Невірний пароль відновлення адміністратора. Будь ласка, перевірте пароль та спробуйте ще раз.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Бекенд не підтримує зміну пароля, але ключ шифрування користувача був оновлений.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "встановлення та оновлення додатків через магазин додатків або Об’єднання хмарних сховищ", + "Federated Cloud Sharing" : "Об’єднання хмарних сховищ", + "Invalid SMTP password." : "Недійсний пароль SMTP.", + "Email setting test" : "Тестування параметрів електронної пошти", + "Well done, %s!" : "Молодець, %s!", + "If you received this email, the email configuration seems to be correct." : "Якщо ви отримали цей електронний лист, то налаштування електронної пошти правильні.", + "Email could not be sent. Check your mail server log" : "Не вдалося надіслати електронну пошту. Перевірте журнал поштового сервера", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Під час надсилання email сталася помилка. Будь ласка перевірте налаштування. (Помилка: %s)", + "You need to set your user email before being able to send test emails." : "Перед надсиланням тестових листів ви повинні вказати свою email адресу.", + "Invalid mail address" : "Неправильна email адреса", + "Settings saved" : "Налаштування збережено", + "Unable to change full name" : "Неможливо змінити повне ім'я", + "Unable to change email address" : "Неможливо змінити електронну адресу", + "%1$s changed your password on %2$s." : "%1$s змінив ваш пароль для сервера %2$s.", + "Your password on %s was changed." : "Ваш пароль на сервері %s був змінений.", + "Your password on %s was reset by an administrator." : "Ваш пароль на сервері %s був скинутий адміністратором", + "Password for %1$s changed on %2$s" : "Пароль %1$s змінений на сервері %2$s", + "Password changed for %s" : "Пароль змінено для %s", + "If you did not request this, please contact an administrator." : "Якщо ви цього не просили, зв'яжіться з адміністратором.", + "Your email address on %s was changed." : "Ваша електронна адреса на сервері %s була змінена.", + "Your email address on %s was changed by an administrator." : "Ваша електронна адреса на сервері %s була змінена адміністратором.", + "Email address for %1$s changed on %2$s" : "Електронна адреса %1$s змінена на %2$s", + "Email address changed for %s" : "Адресу електронної пошти змінено для %s", + "The new email address is %s" : "Нова адреса електронної пошти: %s", + "Your %s account was created" : "Ваш обліковий запис %s створено", + "Welcome aboard" : "Ласкаво просимо на борт", + "Welcome aboard %s" : "Ласкаво просимо на борт, %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Ласкаво просимо до вашого облікового запису, %s, ви можете додавати, захищати та ділитися своїми даними.", + "Your username is: %s" : "Ваше ім'я користувача: %s", + "Set your password" : "Встановіть свій пароль", + "Go to %s" : "Перейти до %s", + "Install Client" : "Встановити Клієнт", + "Delete" : "Видалити", + "Unlimited" : "Необмежено", + "Verifying …" : "Перевірка ...", + "Verify" : "Перевірити", + "Migration in progress. Please wait until the migration is finished" : "Міграція триває. Будь ласка, зачекайте доки процес міграції завершиться", + "Migration started …" : "Міграцію розпочато ...", + "Not saved" : "Не збережено", + "Sending…" : "Відправка...", + "Email sent" : "Лист надіслано", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Виникла помилка. Будь ласка вивантажте PEM сертифікат в ASCII-кодуванні.", + "Valid until {date}" : "Дійсно до {date}", + "Local" : "Локально", + "Private" : "Закритий", + "Only visible to local users" : "Видимий тільки для локальних користувачів", + "Only visible to you" : "Видимий тільки вам", + "Contacts" : "Контакти", + "Visible to local users and to trusted servers" : "Видимий тільки локальним користувачам і довіреним серверам", + "Public" : "Відкритий", + "Will be synced to a global and public address book" : "Буде синхронізовано з глобальною та відкритою адресною книгою", + "Very weak password" : "Дуже слабкий пароль", + "Weak password" : "Слабкий пароль", + "So-so password" : "Такий собі пароль", + "Good password" : "Добрий пароль", + "Strong password" : "Надійний пароль", + "An error occurred while changing your language. Please reload the page and try again." : "Виникла помилка при зміні мови. Перезавантажте сторінку та повторіть спробу.", + "An error occurred while changing your locale. Please reload the page and try again." : "Виникла помилка при зміні локалі. Перезавантажте сторінку та повторіть спробу.", + "Select a profile picture" : "Обрати зображення облікового запису", + "Week starts on {fdow}" : "Тиждень починається в {fdow}", + "Groups" : "Групи", + "Group list is empty" : "Список груп порожній", + "Unable to retrieve the group list" : "Неможливо отримати список груп", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Двофакторна автентифікація може застосовуватися для всіх \t користувачів і конкретних груп. Якщо вони не мають налаштованого двофакторного провайдера для входу, вони не зможуть увійти в систему.", + "Enforce two-factor authentication" : "Примусова двофакторна аутентифікація", + "Limit to groups" : "Обмежити групами", + "Save changes" : "Зберегти зміни", + "Device settings" : "Налаштування пристрою", + "Allow filesystem access" : "Дозволити доступ до файлової системи", + "Revoke" : "Відкликати", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome для Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Додаток Nextcloud для iOS", + "Nextcloud Android app" : "Додаток Nextcloud для Android", + "Nextcloud Talk for iOS" : "Додаток Talk для iOS", + "Nextcloud Talk for Android" : "Додаток Talk для Android", + "Sync client - {os}" : "Клієнт синхронізації - {os}", + "This session" : "Цей сеанс", + "Device" : "Пристрій", + "Last activity" : "Остання активність", + "Devices & sessions" : "Пристрої та сеанси", + "Web, desktop and mobile clients currently logged in to your account." : "Веб, настільні та мобільні клієнти в даний час авторизовані у вашому обліковому записі", + "Error while creating device token" : "Помилка під час створення токена пристрою", + "Error while deleting the token" : "Помилка при видаленні токену", + "App name" : "Ім'я додатку", + "Create new app password" : "Створіть новий пароль додатка", + "Username" : "Ім'я користувача", + "Password" : "Пароль", + "Done" : "Готово", + "Copied!" : "Скопійовано!", + "Copy" : "Копіювати", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Офіційні додатки розробляються спільнотою та в межах спільноти. Вони пропонують основну функціональність і готові до використання в продакшні.", + "Official" : "Офіційні", + "Update to {version}" : "Оновити до {version}", + "Remove" : "Видалити", + "Disable" : "Вимкнути", + "All" : "Всі", + "Limit app usage to groups" : "Обмежити використання додатку заданими групами", + "No results" : "Немає результатів", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Ця програма не може бути встановлено, так як наступні залежності не будуть виконані:", + "View in store" : "Переглянути в магазині додатків", + "Visit website" : "Відвідати веб-сайт", + "Report a bug" : "Повідомити про помилку", + "User documentation" : "Користувацька документація", + "Admin documentation" : "Документація адміністратора", + "Developer documentation" : "Документація для розробників", + "No apps found for your version" : "Немає додатків для вашої версії", + "Disable all" : "Вимкнути все", + "Enable all" : "Увімкнути все", + "Download and enable" : "Завантажити та увімкнути", + "Enable" : "Увімкнути", + "The app will be downloaded from the app store" : "Додаток буде завантажено з магазину додатків", + "You do not have permissions to see the details of this user" : "Ви не маєте прав для перегляду деталей про цього користувача", + "The backend does not support changing the display name" : "Бекенд не підтримує зміну відображуваного імені", + "New password" : "Новий пароль", + "Add user in group" : "Додати користувача в групу", + "Set user as admin for" : "Встановити користувача як адміністратора для", + "Select user quota" : "Виберіть квоту користувача", + "No language set" : "Мова не встановлена", + "Never" : "Ніколи", + "Delete user" : "Видалити користувача", + "Disable user" : "Вимкнути користувача", + "Enable user" : "Увімкнути користувача", + "Resend welcome email" : "Відправити запрошення ще раз", + "{size} used" : "{size} використано", + "Welcome mail sent!" : "Запрошення надіслано!", + "Display name" : "Ім'я для відображення", + "Email" : "E-mail", + "Group admin for" : "Адміністратор групи для", + "Quota" : "Квота", + "Language" : "Мова", + "Storage location" : "Місце розташування сховища", + "Last login" : "Останній вхід", + "Default language" : "Мова за замовчуванням", + "Add a new user" : "Додати нового користувача", + "No users in here" : "Немає користувачів", + "Default quota" : "Квота за замовчуванням", + "Password change is disabled because the master key is disabled" : "Зміну пароля вимкнено, оскільки майстер-ключ відключений", + "Common languages" : "Основні мови", + "All languages" : "Всі мови", + "Your apps" : "Ваші додатки", + "Active apps" : "Активні додатки", + "Disabled apps" : "Відключені додатки", + "Updates" : "Оновлення", + "App bundles" : "Набори програм", + "{license}-licensed" : "Ліцензія: {license}", + "New user" : "Новий користувач", + "Default quota:" : "Квота за замовчуванням:", + "Select default quota" : "Виберіть квоту за замовчуванням", + "Show Languages" : "Показати мови", + "Show last login" : "Показати останній вхід", + "Show user backend" : "Показати користувача", + "Show storage path" : "Показати шлях до сховища", + "You are about to remove the group {group}. The users will NOT be deleted." : "Ви збираєтеся видалити групу {group}. Користувачі групи НЕ будуть видалені.", + "Please confirm the group removal " : "Будь ласка, підтвердьте видалення групи", + "Remove group" : "Видалити групу", + "Admins" : "Адміністратори", + "Disabled users" : "Вимкнені користувачі", + "Everyone" : "Всі", + "Add group" : "Додати групу", + "An error occured during the request. Unable to proceed." : "Під час запиту сталася помилка. Не вдається продовжити.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Додаток активовано, але його потрібно оновити. Ви будете перенаправлені на сторінку оновлення через 5 секунд.", + "App update" : "Оновлення додатку", + "Error: This app can not be enabled because it makes the server unstable" : "Помилка: цей додаток неможливо ввімкнути, оскільки він робить сервер нестабільним", + "SSL Root Certificates" : "Кореневі сертифікати SSL", + "Common Name" : "Ім'я (CN)", + "Valid until" : "Дійсно до", + "Issued By" : "Випущено", + "Valid until %s" : "Дійсно до %s", + "Import root certificate" : "Імпортувати кореневий сертифікат", + "Administrator documentation" : "Документація адміністратора", + "Documentation" : "Документація", + "Forum" : "Форум", + "None" : "Відсутній", + "Login" : "Логін", + "Plain" : "Звичайний", + "NT LAN Manager" : "Менеджер NT LAN", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Сервер електронної пошти", + "Open documentation" : "Відкрити документацію", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Важливо налаштувати цей сервер, для надсилання електронних листів, наприклад, для скидання пароля та сповіщень.", + "Send mode" : "Режим надсилання", + "Encryption" : "Шифрування", + "From address" : "Адреса відправника", + "mail" : "пошта", + "Authentication method" : "Спосіб аутентифікації", + "Authentication required" : "Потрібна аутентифікація", + "Server address" : "Адреса сервера", + "Port" : "Порт", + "Credentials" : "Облікові дані", + "SMTP Username" : "Ім'я користувача SMTP", + "SMTP Password" : "Пароль SMTP", + "Test email settings" : "Тестувати налаштування ел. пошти", + "Send email" : "Надіслати листа", + "Security & setup warnings" : "Попередження безпеки та налаштування", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Для безпеки та продуктивності вашого сервера важливо, щоб все було налаштовано правильно. Щоб допомогти вам, ми робимо деякі автоматичні перевірки. Будь ласка, перегляньте пов'язану документацію для отримання додаткової інформації.", + "All checks passed." : "Всі перевірки пройдено.", + "There are some errors regarding your setup." : "У ваших налаштуваннях є деякі помилки.", + "There are some warnings regarding your setup." : "У ваших налаштуваннях є деякі застереження.", + "Checking for system and security issues." : "Перевірка проблем системи та безпеки.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Перевірте безпеку вашого Nextcloud <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">скануваннм безпеки ↗</a>.", + "Version" : "Версія", + "Two-Factor Authentication" : "Двофакторна аутентифікація", + "Server-side encryption" : "Шифрування на сервері", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Шифрування на стороні сервера дозволяє шифрувати файли, завантажені на цей сервер. Це має свою ціну, таку як зниження продуктивності, тому ввімкніть його лише за потреби.", + "Enable server-side encryption" : "Увімкнути шифрування на сервері", + "Please read carefully before activating server-side encryption: " : "Будьте обережні під час активування шифрування на сервері:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Після активації шифрування, всі файли завантажені на сервер з цього моменту, будуть зашифровані на сервері. Відключити шифрування пізніше можна буде тільки якщо активний модуль шифрування підтримує цю функцію, і при виконанні певних умов (наприклад, налаштований ключ відновлення).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Саме по собі шифрування не гарантує безпеку системи. Будь ласка, перегляньте документацію, щоб отримати додаткову інформацію про те, як працює додаток для шифрування, та про приклади його використання.", + "Be aware that encryption always increases the file size." : "Майте на увазі, що шифрування завжди збільшує розмір файлів.", + "Enable encryption" : "Увімкнути шифрування", + "Select default encryption module:" : "Обрати модуль шифрування за замовчуванням:", + "Start migration" : "Розпочати міграцію", + "Background jobs" : "Фонові завдання", + "Last job ran %s." : "Останнє завдання запускалось %s.", + "Execute one task with each page loaded" : "Виконати одне завдання для кожної завантаженої сторінки ", + "Sharing" : "Спільний доступ", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Як адміністратор ви можете точно налаштувати поведінку спільного використання. Будь ласка, перегляньте документацію для отримання додаткової інформації.", + "Allow apps to use the Share API" : "Дозволити програмам використовувати API спільного доступу", + "Allow users to share via link" : "Дозволити користувачам ділитися через посилання", + "Allow public uploads" : "Дозволити публічне завантаження", + "Always ask for a password" : "Завжди запитувати пароль", + "Enforce password protection" : "Захист паролем обов'язковий", + "Set default expiration date" : "Встановити термін дії за замовчуванням", + "Expire after " : "Скінчиться через", + "days" : "днів", + "Enforce expiration date" : "Термін дії обов'язковий", + "Allow resharing" : "Дозволити перевідкривати спільний доступ", + "Allow sharing with groups" : "Дозволити спільне використання групами", + "Restrict users to only share with users in their groups" : "Дозволити користувачам відкривати спільний доступ лише для користувачів з їхньої групи", + "Exclude groups from sharing" : "Виключити групи зі спільного доступу", + "These groups will still be able to receive shares, but not to initiate them." : "Ці групи зможуть отримувати спільні файли, але не зможуть відправляти їх.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Дозволити автоматичне доповнення користувача в діалозі обміну. Якщо вимкнено, потрібно ввести ім'я користувача чи електронну адресу повністю.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Показати текст відмови від відповідальності на сторінці завантаження загальнодоступного посилання. (Показується лише тоді, коли список файлів приховано.)", + "Default share permissions" : "Дозволи на публікування по замовчуванню", + "Personal" : "Особисте", + "Administration" : "Адміністрування", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Розроблено {communityopen}спільнотою Nextcloud{linkclose}, {githubopen}сирцевий код{linkclose} ліцензований під ліцензією {licenseopen}AGPL{linkclose}.", + "Profile picture" : "Зображення облікового запису", + "Upload new" : "Завантажити нове", + "Select from Files" : "Вибрати з файлів", + "Remove image" : "Видалити зображення", + "png or jpg, max. 20 MB" : "png або jpg, макс. 20 МБ", + "Picture provided by original account" : "Картинка надана оригінальним обліковим записом", + "Cancel" : "Відмінити", + "Choose as profile picture" : "Обрати як зображення для профілю", + "Details" : "Деталі", + "You are a member of the following groups:" : "Ви є членом наступних груп:", + "You are using <strong>%s</strong>" : "Ви використовуєте <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Ви використовуєте <strong>%1$s</strong> з <strong>%2$s</strong> (<strong>%3$s %%</strong>)", + "Full name" : "Повне ім'я", + "No display name set" : "Ім'я для відображення не вказано", + "Your email address" : "Ваша адреса електронної пошти", + "No email address set" : "E-mail не вказано", + "For password reset and notifications" : "Для скидання пароля та сповіщень", + "Phone number" : "Номер телефону", + "Your phone number" : "Ваш номер телефону", + "Address" : "Адреса", + "Your postal address" : "Ваша поштова адреса", + "Website" : "Веб-сайт", + "It can take up to 24 hours before the account is displayed as verified." : "Підтвердження облікового запису може тривати до 24 годин.", + "Link https://…" : "Посилання https://…", + "Twitter" : "Twitter", + "Twitter handle @…" : "Ім'я в Twitter @…", + "Help translate" : "Допомогти з перекладом", + "Locale" : "Регіональні станадрти", + "Current password" : "Поточний пароль", + "Change password" : "Змінити пароль", + "Store credentials" : "Зберігати облікові дані" +}, +"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);"); diff --git a/apps/settings/l10n/uk.json b/apps/settings/l10n/uk.json new file mode 100644 index 00000000000..bdabfd6139e --- /dev/null +++ b/apps/settings/l10n/uk.json @@ -0,0 +1,310 @@ +{ "translations": { + "{actor} added you to group {group}" : "{actor} додав вас до групи {group}", + "You added {user} to group {group}" : "Ви додали {user} до групи {group}", + "{actor} added {user} to group {group}" : "{actor} додав {user} до групи {group}", + "An administrator added you to group {group}" : "Адміністратор додав вас до групи {group}", + "An administrator added {user} to group {group}" : "Адміністратор додав {user} до групи {group}", + "{actor} removed you from group {group}" : "{actor} вилучив вас із групи {group}", + "You removed {user} from group {group}" : "Ви вилучили {user} з групи {group}", + "{actor} removed {user} from group {group}" : "{actor} вилучив {user} з групи {group}", + "An administrator removed you from group {group}" : "Адміністратор вилучив вас з групи {group}", + "An administrator removed {user} from group {group}" : "Адміністратор вилучив {user} з групи {group}", + "Your <strong>group memberships</strong> were modified" : "Парамеири вашої <strong>участі в групі</strong> оновлено", + "{actor} changed your password" : "{actor} змінив ваш пароль", + "You changed your password" : "Ви змінили свій пароль", + "Your password was reset by an administrator" : "Ваш пароль був скинутий адміністратором", + "{actor} changed your email address" : "{actor} змінив вашу email адресу", + "You changed your email address" : "Ви змінили вашу email адресу", + "Your email address was changed by an administrator" : "Ваша email адреса змінена адміністратором", + "Security" : "Безпека", + "You successfully logged in using two-factor authentication (%1$s)" : "Ви успішно увійшли, використовуючи двофакторну аутентифікацію (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Помилка спроби входу в систему, використовуючи двофакторну аутентифікацію (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Ваш <strong>пароль</strong> чи <strong>електронна пошта</strong> були змінені", + "Couldn't remove app." : "Неможливо вилучити застосунок.", + "Couldn't update app." : "Не вдалося оновити застосунок.", + "Wrong password" : "Неправильний пароль", + "Saved" : "Збережено", + "No user supplied" : "Користувача не вказано", + "Unable to change password" : "Неможливо змінити пароль", + "Authentication error" : "Помилка автентифікації", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Будь ласка, введіть пароль відновлення адміністратора; інакше всі дані користувача будуть втрачені.", + "Wrong admin recovery password. Please check the password and try again." : "Невірний пароль відновлення адміністратора. Будь ласка, перевірте пароль та спробуйте ще раз.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Бекенд не підтримує зміну пароля, але ключ шифрування користувача був оновлений.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "встановлення та оновлення додатків через магазин додатків або Об’єднання хмарних сховищ", + "Federated Cloud Sharing" : "Об’єднання хмарних сховищ", + "Invalid SMTP password." : "Недійсний пароль SMTP.", + "Email setting test" : "Тестування параметрів електронної пошти", + "Well done, %s!" : "Молодець, %s!", + "If you received this email, the email configuration seems to be correct." : "Якщо ви отримали цей електронний лист, то налаштування електронної пошти правильні.", + "Email could not be sent. Check your mail server log" : "Не вдалося надіслати електронну пошту. Перевірте журнал поштового сервера", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Під час надсилання email сталася помилка. Будь ласка перевірте налаштування. (Помилка: %s)", + "You need to set your user email before being able to send test emails." : "Перед надсиланням тестових листів ви повинні вказати свою email адресу.", + "Invalid mail address" : "Неправильна email адреса", + "Settings saved" : "Налаштування збережено", + "Unable to change full name" : "Неможливо змінити повне ім'я", + "Unable to change email address" : "Неможливо змінити електронну адресу", + "%1$s changed your password on %2$s." : "%1$s змінив ваш пароль для сервера %2$s.", + "Your password on %s was changed." : "Ваш пароль на сервері %s був змінений.", + "Your password on %s was reset by an administrator." : "Ваш пароль на сервері %s був скинутий адміністратором", + "Password for %1$s changed on %2$s" : "Пароль %1$s змінений на сервері %2$s", + "Password changed for %s" : "Пароль змінено для %s", + "If you did not request this, please contact an administrator." : "Якщо ви цього не просили, зв'яжіться з адміністратором.", + "Your email address on %s was changed." : "Ваша електронна адреса на сервері %s була змінена.", + "Your email address on %s was changed by an administrator." : "Ваша електронна адреса на сервері %s була змінена адміністратором.", + "Email address for %1$s changed on %2$s" : "Електронна адреса %1$s змінена на %2$s", + "Email address changed for %s" : "Адресу електронної пошти змінено для %s", + "The new email address is %s" : "Нова адреса електронної пошти: %s", + "Your %s account was created" : "Ваш обліковий запис %s створено", + "Welcome aboard" : "Ласкаво просимо на борт", + "Welcome aboard %s" : "Ласкаво просимо на борт, %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Ласкаво просимо до вашого облікового запису, %s, ви можете додавати, захищати та ділитися своїми даними.", + "Your username is: %s" : "Ваше ім'я користувача: %s", + "Set your password" : "Встановіть свій пароль", + "Go to %s" : "Перейти до %s", + "Install Client" : "Встановити Клієнт", + "Delete" : "Видалити", + "Unlimited" : "Необмежено", + "Verifying …" : "Перевірка ...", + "Verify" : "Перевірити", + "Migration in progress. Please wait until the migration is finished" : "Міграція триває. Будь ласка, зачекайте доки процес міграції завершиться", + "Migration started …" : "Міграцію розпочато ...", + "Not saved" : "Не збережено", + "Sending…" : "Відправка...", + "Email sent" : "Лист надіслано", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Виникла помилка. Будь ласка вивантажте PEM сертифікат в ASCII-кодуванні.", + "Valid until {date}" : "Дійсно до {date}", + "Local" : "Локально", + "Private" : "Закритий", + "Only visible to local users" : "Видимий тільки для локальних користувачів", + "Only visible to you" : "Видимий тільки вам", + "Contacts" : "Контакти", + "Visible to local users and to trusted servers" : "Видимий тільки локальним користувачам і довіреним серверам", + "Public" : "Відкритий", + "Will be synced to a global and public address book" : "Буде синхронізовано з глобальною та відкритою адресною книгою", + "Very weak password" : "Дуже слабкий пароль", + "Weak password" : "Слабкий пароль", + "So-so password" : "Такий собі пароль", + "Good password" : "Добрий пароль", + "Strong password" : "Надійний пароль", + "An error occurred while changing your language. Please reload the page and try again." : "Виникла помилка при зміні мови. Перезавантажте сторінку та повторіть спробу.", + "An error occurred while changing your locale. Please reload the page and try again." : "Виникла помилка при зміні локалі. Перезавантажте сторінку та повторіть спробу.", + "Select a profile picture" : "Обрати зображення облікового запису", + "Week starts on {fdow}" : "Тиждень починається в {fdow}", + "Groups" : "Групи", + "Group list is empty" : "Список груп порожній", + "Unable to retrieve the group list" : "Неможливо отримати список груп", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Двофакторна автентифікація може застосовуватися для всіх \t користувачів і конкретних груп. Якщо вони не мають налаштованого двофакторного провайдера для входу, вони не зможуть увійти в систему.", + "Enforce two-factor authentication" : "Примусова двофакторна аутентифікація", + "Limit to groups" : "Обмежити групами", + "Save changes" : "Зберегти зміни", + "Device settings" : "Налаштування пристрою", + "Allow filesystem access" : "Дозволити доступ до файлової системи", + "Revoke" : "Відкликати", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome для Android", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Додаток Nextcloud для iOS", + "Nextcloud Android app" : "Додаток Nextcloud для Android", + "Nextcloud Talk for iOS" : "Додаток Talk для iOS", + "Nextcloud Talk for Android" : "Додаток Talk для Android", + "Sync client - {os}" : "Клієнт синхронізації - {os}", + "This session" : "Цей сеанс", + "Device" : "Пристрій", + "Last activity" : "Остання активність", + "Devices & sessions" : "Пристрої та сеанси", + "Web, desktop and mobile clients currently logged in to your account." : "Веб, настільні та мобільні клієнти в даний час авторизовані у вашому обліковому записі", + "Error while creating device token" : "Помилка під час створення токена пристрою", + "Error while deleting the token" : "Помилка при видаленні токену", + "App name" : "Ім'я додатку", + "Create new app password" : "Створіть новий пароль додатка", + "Username" : "Ім'я користувача", + "Password" : "Пароль", + "Done" : "Готово", + "Copied!" : "Скопійовано!", + "Copy" : "Копіювати", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Офіційні додатки розробляються спільнотою та в межах спільноти. Вони пропонують основну функціональність і готові до використання в продакшні.", + "Official" : "Офіційні", + "Update to {version}" : "Оновити до {version}", + "Remove" : "Видалити", + "Disable" : "Вимкнути", + "All" : "Всі", + "Limit app usage to groups" : "Обмежити використання додатку заданими групами", + "No results" : "Немає результатів", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Ця програма не може бути встановлено, так як наступні залежності не будуть виконані:", + "View in store" : "Переглянути в магазині додатків", + "Visit website" : "Відвідати веб-сайт", + "Report a bug" : "Повідомити про помилку", + "User documentation" : "Користувацька документація", + "Admin documentation" : "Документація адміністратора", + "Developer documentation" : "Документація для розробників", + "No apps found for your version" : "Немає додатків для вашої версії", + "Disable all" : "Вимкнути все", + "Enable all" : "Увімкнути все", + "Download and enable" : "Завантажити та увімкнути", + "Enable" : "Увімкнути", + "The app will be downloaded from the app store" : "Додаток буде завантажено з магазину додатків", + "You do not have permissions to see the details of this user" : "Ви не маєте прав для перегляду деталей про цього користувача", + "The backend does not support changing the display name" : "Бекенд не підтримує зміну відображуваного імені", + "New password" : "Новий пароль", + "Add user in group" : "Додати користувача в групу", + "Set user as admin for" : "Встановити користувача як адміністратора для", + "Select user quota" : "Виберіть квоту користувача", + "No language set" : "Мова не встановлена", + "Never" : "Ніколи", + "Delete user" : "Видалити користувача", + "Disable user" : "Вимкнути користувача", + "Enable user" : "Увімкнути користувача", + "Resend welcome email" : "Відправити запрошення ще раз", + "{size} used" : "{size} використано", + "Welcome mail sent!" : "Запрошення надіслано!", + "Display name" : "Ім'я для відображення", + "Email" : "E-mail", + "Group admin for" : "Адміністратор групи для", + "Quota" : "Квота", + "Language" : "Мова", + "Storage location" : "Місце розташування сховища", + "Last login" : "Останній вхід", + "Default language" : "Мова за замовчуванням", + "Add a new user" : "Додати нового користувача", + "No users in here" : "Немає користувачів", + "Default quota" : "Квота за замовчуванням", + "Password change is disabled because the master key is disabled" : "Зміну пароля вимкнено, оскільки майстер-ключ відключений", + "Common languages" : "Основні мови", + "All languages" : "Всі мови", + "Your apps" : "Ваші додатки", + "Active apps" : "Активні додатки", + "Disabled apps" : "Відключені додатки", + "Updates" : "Оновлення", + "App bundles" : "Набори програм", + "{license}-licensed" : "Ліцензія: {license}", + "New user" : "Новий користувач", + "Default quota:" : "Квота за замовчуванням:", + "Select default quota" : "Виберіть квоту за замовчуванням", + "Show Languages" : "Показати мови", + "Show last login" : "Показати останній вхід", + "Show user backend" : "Показати користувача", + "Show storage path" : "Показати шлях до сховища", + "You are about to remove the group {group}. The users will NOT be deleted." : "Ви збираєтеся видалити групу {group}. Користувачі групи НЕ будуть видалені.", + "Please confirm the group removal " : "Будь ласка, підтвердьте видалення групи", + "Remove group" : "Видалити групу", + "Admins" : "Адміністратори", + "Disabled users" : "Вимкнені користувачі", + "Everyone" : "Всі", + "Add group" : "Додати групу", + "An error occured during the request. Unable to proceed." : "Під час запиту сталася помилка. Не вдається продовжити.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Додаток активовано, але його потрібно оновити. Ви будете перенаправлені на сторінку оновлення через 5 секунд.", + "App update" : "Оновлення додатку", + "Error: This app can not be enabled because it makes the server unstable" : "Помилка: цей додаток неможливо ввімкнути, оскільки він робить сервер нестабільним", + "SSL Root Certificates" : "Кореневі сертифікати SSL", + "Common Name" : "Ім'я (CN)", + "Valid until" : "Дійсно до", + "Issued By" : "Випущено", + "Valid until %s" : "Дійсно до %s", + "Import root certificate" : "Імпортувати кореневий сертифікат", + "Administrator documentation" : "Документація адміністратора", + "Documentation" : "Документація", + "Forum" : "Форум", + "None" : "Відсутній", + "Login" : "Логін", + "Plain" : "Звичайний", + "NT LAN Manager" : "Менеджер NT LAN", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Сервер електронної пошти", + "Open documentation" : "Відкрити документацію", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "Важливо налаштувати цей сервер, для надсилання електронних листів, наприклад, для скидання пароля та сповіщень.", + "Send mode" : "Режим надсилання", + "Encryption" : "Шифрування", + "From address" : "Адреса відправника", + "mail" : "пошта", + "Authentication method" : "Спосіб аутентифікації", + "Authentication required" : "Потрібна аутентифікація", + "Server address" : "Адреса сервера", + "Port" : "Порт", + "Credentials" : "Облікові дані", + "SMTP Username" : "Ім'я користувача SMTP", + "SMTP Password" : "Пароль SMTP", + "Test email settings" : "Тестувати налаштування ел. пошти", + "Send email" : "Надіслати листа", + "Security & setup warnings" : "Попередження безпеки та налаштування", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Для безпеки та продуктивності вашого сервера важливо, щоб все було налаштовано правильно. Щоб допомогти вам, ми робимо деякі автоматичні перевірки. Будь ласка, перегляньте пов'язану документацію для отримання додаткової інформації.", + "All checks passed." : "Всі перевірки пройдено.", + "There are some errors regarding your setup." : "У ваших налаштуваннях є деякі помилки.", + "There are some warnings regarding your setup." : "У ваших налаштуваннях є деякі застереження.", + "Checking for system and security issues." : "Перевірка проблем системи та безпеки.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Перевірте безпеку вашого Nextcloud <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">скануваннм безпеки ↗</a>.", + "Version" : "Версія", + "Two-Factor Authentication" : "Двофакторна аутентифікація", + "Server-side encryption" : "Шифрування на сервері", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Шифрування на стороні сервера дозволяє шифрувати файли, завантажені на цей сервер. Це має свою ціну, таку як зниження продуктивності, тому ввімкніть його лише за потреби.", + "Enable server-side encryption" : "Увімкнути шифрування на сервері", + "Please read carefully before activating server-side encryption: " : "Будьте обережні під час активування шифрування на сервері:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Після активації шифрування, всі файли завантажені на сервер з цього моменту, будуть зашифровані на сервері. Відключити шифрування пізніше можна буде тільки якщо активний модуль шифрування підтримує цю функцію, і при виконанні певних умов (наприклад, налаштований ключ відновлення).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Саме по собі шифрування не гарантує безпеку системи. Будь ласка, перегляньте документацію, щоб отримати додаткову інформацію про те, як працює додаток для шифрування, та про приклади його використання.", + "Be aware that encryption always increases the file size." : "Майте на увазі, що шифрування завжди збільшує розмір файлів.", + "Enable encryption" : "Увімкнути шифрування", + "Select default encryption module:" : "Обрати модуль шифрування за замовчуванням:", + "Start migration" : "Розпочати міграцію", + "Background jobs" : "Фонові завдання", + "Last job ran %s." : "Останнє завдання запускалось %s.", + "Execute one task with each page loaded" : "Виконати одне завдання для кожної завантаженої сторінки ", + "Sharing" : "Спільний доступ", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Як адміністратор ви можете точно налаштувати поведінку спільного використання. Будь ласка, перегляньте документацію для отримання додаткової інформації.", + "Allow apps to use the Share API" : "Дозволити програмам використовувати API спільного доступу", + "Allow users to share via link" : "Дозволити користувачам ділитися через посилання", + "Allow public uploads" : "Дозволити публічне завантаження", + "Always ask for a password" : "Завжди запитувати пароль", + "Enforce password protection" : "Захист паролем обов'язковий", + "Set default expiration date" : "Встановити термін дії за замовчуванням", + "Expire after " : "Скінчиться через", + "days" : "днів", + "Enforce expiration date" : "Термін дії обов'язковий", + "Allow resharing" : "Дозволити перевідкривати спільний доступ", + "Allow sharing with groups" : "Дозволити спільне використання групами", + "Restrict users to only share with users in their groups" : "Дозволити користувачам відкривати спільний доступ лише для користувачів з їхньої групи", + "Exclude groups from sharing" : "Виключити групи зі спільного доступу", + "These groups will still be able to receive shares, but not to initiate them." : "Ці групи зможуть отримувати спільні файли, але не зможуть відправляти їх.", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "Дозволити автоматичне доповнення користувача в діалозі обміну. Якщо вимкнено, потрібно ввести ім'я користувача чи електронну адресу повністю.", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "Показати текст відмови від відповідальності на сторінці завантаження загальнодоступного посилання. (Показується лише тоді, коли список файлів приховано.)", + "Default share permissions" : "Дозволи на публікування по замовчуванню", + "Personal" : "Особисте", + "Administration" : "Адміністрування", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Розроблено {communityopen}спільнотою Nextcloud{linkclose}, {githubopen}сирцевий код{linkclose} ліцензований під ліцензією {licenseopen}AGPL{linkclose}.", + "Profile picture" : "Зображення облікового запису", + "Upload new" : "Завантажити нове", + "Select from Files" : "Вибрати з файлів", + "Remove image" : "Видалити зображення", + "png or jpg, max. 20 MB" : "png або jpg, макс. 20 МБ", + "Picture provided by original account" : "Картинка надана оригінальним обліковим записом", + "Cancel" : "Відмінити", + "Choose as profile picture" : "Обрати як зображення для профілю", + "Details" : "Деталі", + "You are a member of the following groups:" : "Ви є членом наступних груп:", + "You are using <strong>%s</strong>" : "Ви використовуєте <strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Ви використовуєте <strong>%1$s</strong> з <strong>%2$s</strong> (<strong>%3$s %%</strong>)", + "Full name" : "Повне ім'я", + "No display name set" : "Ім'я для відображення не вказано", + "Your email address" : "Ваша адреса електронної пошти", + "No email address set" : "E-mail не вказано", + "For password reset and notifications" : "Для скидання пароля та сповіщень", + "Phone number" : "Номер телефону", + "Your phone number" : "Ваш номер телефону", + "Address" : "Адреса", + "Your postal address" : "Ваша поштова адреса", + "Website" : "Веб-сайт", + "It can take up to 24 hours before the account is displayed as verified." : "Підтвердження облікового запису може тривати до 24 годин.", + "Link https://…" : "Посилання https://…", + "Twitter" : "Twitter", + "Twitter handle @…" : "Ім'я в Twitter @…", + "Help translate" : "Допомогти з перекладом", + "Locale" : "Регіональні станадрти", + "Current password" : "Поточний пароль", + "Change password" : "Змінити пароль", + "Store credentials" : "Зберігати облікові дані" +},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);" +} \ No newline at end of file diff --git a/apps/settings/l10n/vi.js b/apps/settings/l10n/vi.js new file mode 100644 index 00000000000..1403000a47b --- /dev/null +++ b/apps/settings/l10n/vi.js @@ -0,0 +1,263 @@ +OC.L10N.register( + "settings", + { + "{actor} added you to group {group}" : "{actor} đã thêm bạn vào nhóm {group}", + "You added {user} to group {group}" : "Bạn đã thêm {user} vào nhóm {group}", + "{actor} added {user} to group {group}" : "{actor} đã thêm {user} vào nhóm {group}", + "An administrator added you to group {group}" : "Quản trị viên đã thêm bạn vào nhóm {group}", + "An administrator added {user} to group {group}" : "Quản trị viên đã thêm {user} vào nhóm {group}", + "{actor} removed you from group {group}" : "{actor} đã xóa bạn khỏi nhóm {group}", + "You removed {user} from group {group}" : "Bạn đã xóa {user} khỏi nhóm {group}", + "{actor} removed {user} from group {group}" : "{actor} đã xóa {user} khỏi nhóm {group}", + "An administrator removed you from group {group}" : "Quản trị viên đã xóa bạn khỏi nhóm {group}", + "An administrator removed {user} from group {group}" : "Quản trị viên đã xóa {user} khỏi nhóm {group}", + "Your <strong>group memberships</strong> were modified" : "<strong>quyền thành viên nhóm</strong> của bạn đã bị thay đổi", + "{actor} changed your password" : "{actor} đã thay đổi mật khẩu của bạn", + "You changed your password" : "Bạn đã thay đổi mật khẩu", + "Your password was reset by an administrator" : "Mật khẩu của bạn đã được khôi phục bởi quản trị viên", + "{actor} changed your email address" : "{actor} đã thay đổi địa chỉ email của bạn", + "You changed your email address" : "Bạn đã thay đổi địa chỉ email", + "Your email address was changed by an administrator" : "Địa chỉ email của bạn đã được thay đổi bởi quản trị viên", + "You created app password \"{token}\"" : "Bạn đã tạo ứng dụng mật khẩu \"{token}\"", + "You deleted app password \"{token}\"" : "Bạn đã xóa ứng dụng mật khẩu \"{token}\"", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Bạn đã đổi tên ứng dụng mật khẩu \"{token}\" thành \"{newToken}\"", + "You granted filesystem access to app password \"{token}\"" : "Bạn đã cấp quyền truy cập hệ thống tệp cho ứng dụng mật khẩu \"{token}\"", + "You revoked filesystem access from app password \"{token}\"" : "Bạn đã thu hồi quyền truy cập hệ thống tệp từ ứng dụng mật khẩu \"{token}\"", + "Security" : "Bảo mật", + "You successfully logged in using two-factor authentication (%1$s)" : "Bạn đã đăng nhập thành công bằng xác thực hai yếu tố (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Thử đăng nhập bằng xác thực hai yếu tố không thành công (%1$s)", + "Remote wipe was started on %1$s" : "Xóa từ xa đã được bắt đầu vào %1$s", + "Remote wipe has finished on %1$s" : "Xóa từ xa đã kết thúc vào %1$s", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "<strong>mật khẩu</strong> hoặc <strong>email</strong> đã được sửa đổi", + "Couldn't remove app." : "Không thể xóa ứng dụng", + "Couldn't update app." : "Không thể cập nhật ứng dụng", + "Wrong password" : "Mật khẩu không chính xác", + "Saved" : "Đã lưu", + "No user supplied" : "Không có người dùng cung cấp", + "Unable to change password" : "Không thể thay đổi mật khẩu", + "Authentication error" : "Lỗi xác thực", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Vui lòng cung cấp mật khẩu khôi phục quản trị viên; nếu không, tất cả dữ liệu người dùng sẽ bị mất.", + "Wrong admin recovery password. Please check the password and try again." : "Sai mật khẩu khôi phục quản trị viên. Vui lòng kiểm tra mật khẩu và thử lại.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Trang quản trị không hỗ trợ thay đổi mật khẩu, nhưng khóa mã hóa của người dùng đã được cập nhật.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Đang cài đặt và cập nhật ứng dụng từ app store hoặc Federated Cloud Sharing", + "Federated Cloud Sharing" : "Federated Cloud Sharing", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL đang sử dụng đã lâu không cập nhật %1$s phiên bản (%2$s). Vui lòng cập nhật hệ điều hành hoặc các tính năng như %3$s sẽ không hoạt động đáng tin cậy.", + "Invalid SMTP password." : "Mật khẩu SMTT không chính xác.", + "Email setting test" : "Kiểm tra cài đặt email", + "Well done, %s!" : "Làm rất tốt, %s!", + "If you received this email, the email configuration seems to be correct." : "Nếu bạn nhận được email này, cấu hình email có vẻ đúng.", + "Email could not be sent. Check your mail server log" : "Email không thể gửi được. Kiểm tra nhật ký máy chủ email của bạn", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Một vấn đề xảy ra trong khi gửi email. Vui lòng sửa lại cài đặt của bạn. (Lỗi: %s)", + "You need to set your user email before being able to send test emails." : "Bạn cần cài đặt email người dùng trước khi có thể gửi email kiểm tra.", + "Invalid mail address" : "Địa chỉ email không hợp lệ", + "Settings saved" : "Cấu hình đã được lưu", + "Unable to change full name" : "Họ và tên không thể thay đổi ", + "Unable to change email address" : "Không thể thay đổi địa chỉ email", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Để xác minh tài khoản Twitter của bạn, hãy đăng tweet sau đây trên Twitter (vui lòng đảm bảo đăng nó mà không có bất kỳ ngắt dòng nào):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Để xác minh trang web của bạn, hãy lưu trữ nội dung sau trong web-root của bạn tại '.well-known/CloudIdVerificationCode.txt' (vui lòng đảm bảo rằng văn bản hoàn chỉnh nằm trong một dòng):", + "%1$s changed your password on %2$s." : "%1$s đã thay đổi mật khẩu của bạn trên %2$s", + "Your password on %s was changed." : "Mật khẩu của bạn trên %s đã được thay đổi.", + "Your password on %s was reset by an administrator." : "Mật khẩu của bạn trên %s đã được quản trị viên đặt lại.", + "Password for %1$s changed on %2$s" : "Mật khẩu cho %1$s đã thay đổi trên %2$s", + "Password changed for %s" : "Mật khẩu đã thay đổi cho %s", + "If you did not request this, please contact an administrator." : "Nếu bạn không yêu cầu điều này, xin vui lòng liên hệ với quản trị viên.", + "Your email address on %s was changed." : "Địa chỉ email của bạn trên %s đã được thay đổi.", + "Your email address on %s was changed by an administrator." : "Địa chỉ email của bạn trên %s đã được thay đổi bởi quản trị viên.", + "Email address for %1$s changed on %2$s" : "Địa chỉ email cho %1$s đã được thay đổi trên %2$s", + "Email address changed for %s" : "Địa chỉ email đã được thay đổi cho %s", + "The new email address is %s" : "Địa chỉ email mới là %s", + "Your %s account was created" : "Tài khoản %s của bạn đã được tạo", + "Welcome aboard" : "Chào mừng bạn", + "Welcome aboard %s" : "Chào mừng bạn %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Chào mừng bạn đến với tài khoản %s của bạn, bạn có thể thêm, bảo vệ và chia sẻ dữ liệu của mình.", + "Your username is: %s" : "Tên người dùng của bạn là : %s", + "Set your password" : "Đặt mật khẩu của bạn", + "Go to %s" : "Đi tới %s", + "Install Client" : "Cài đặt máy khách", + "Logged in user must be a subadmin" : "Người dùng đã đăng nhập phải là một subadmin", + "Create" : "Tạo mới", + "Change" : "Chỉnh sửa", + "Delete" : "Xóa", + "Share" : "Chia sẻ", + "Unlimited" : "Không giới hạn", + "Verifying" : "Đang xác minh", + "Verifying …" : "Đang xác minh ...", + "Verify" : "Xác minh", + "Migration in progress. Please wait until the migration is finished" : "Chuyển đổi dữ liệu đang tiến hành. Vui lòng đợi cho đến khi quá trình di chuyển kết thúc", + "Migration started …" : "Chuyển đổi dữ liệu đã bắt đầu ...", + "Not saved" : "Chưa được lưu", + "Sending…" : "Đang gửi...", + "Email sent" : "Email đã được gửi", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Xảy ra lỗi Vui lòng tải lên chứng chỉ PEM được mã hóa ASCII.", + "Valid until {date}" : "Có hiệu lực cho đến {date}", + "Private" : "Riêng tư", + "Only visible to local users" : "Chỉ hiển thị cho người dùng local", + "Only visible to you" : "Chỉ hiển thị với tôi", + "Contacts" : "Liên hệ", + "Visible to local users and to trusted servers" : "Hiển thị với local users và trusted servers", + "Public" : "Công khai", + "Will be synced to a global and public address book" : "Sẽ được đồng bộ hóa với công cộng và một sổ địa chỉ công khai", + "Very weak password" : "Mật khẩu rất yếu", + "Weak password" : "Mật khẩu yếu", + "So-so password" : "Mật khẩu tương tự", + "Good password" : "Mật khẩu tốt", + "Strong password" : "Mật khẩu mạnh", + "An error occurred while changing your language. Please reload the page and try again." : "Đã xảy ra lỗi trong khi thay đổi ngôn ngữ của bạn. Hãy tải lại trang và thử lại.", + "An error occurred while changing your locale. Please reload the page and try again." : "Đã xảy ra lỗi trong khi thay đổi ngôn ngữ của bạn. Hãy tải lại trang và thử lại.", + "Select a profile picture" : "Chọn một hình ảnh đại diện", + "Week starts on {fdow}" : "Tuần bắt đầu vào {fdow}", + "Groups" : "Nhóm", + "Group list is empty" : "Danh sách nhóm trống", + "Unable to retrieve the group list" : "Không thể truy xuất danh sách nhóm", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Xác thực hai yếu tố có thể được thi hành cho tất cả \t người dùng và các nhóm cụ thể. Nếu họ không có cấu hình hỗ trợ xác thực hai yếu tố, họ sẽ không thể đăng nhập vào hệ thống.", + "Enforce two-factor authentication" : "Thực thi xác thực hai yếu tố", + "Limit to groups" : "Giới hạn nhóm", + "Enforcement of two-factor authentication can be set for certain groups only." : "Việc thực thi xác thực hai yếu tố chỉ có thể được đặt cho một số nhóm nhất định.", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "Xác thực hai yếu tố được thi hành cho tất cả \t thành viên của các nhóm đang theo dõi.", + "Enforced groups" : "Các nhóm thực thi", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "Xác thực hai yếu tố không được thi hành cho tất cả \t thành viên của các nhóm đang theo dõi.", + "Excluded groups" : "Các nhóm bị loại trừ", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "Khi các nhóm được chọn / loại trừ, họ sử dụng logic sau để xác định xem người dùng có thực thi 2FA hay không: Nếu không có nhóm nào được chọn, 2FA được bật cho mọi người trừ các thành viên của các nhóm bị loại trừ. Nếu các nhóm được chọn, 2FA được bật cho tất cả các thành viên trong số này. Nếu người dùng ở cả hai nhóm được chọn và bị loại trừ, quyền được chọn sẽ được ưu tiên và 2FA được thi hành.", + "Save changes" : "Lưu thay đổi", + "Marked for remote wipe" : "Đánh dấu để xóa từ xa", + "Device settings" : "Cài đặt thiết bị", + "Allow filesystem access" : "Cho phép truy cập file hệ thống", + "Rename" : "Đổi tên", + "Revoke" : "Thu hồi", + "Wipe device" : "Xóa thiết bị", + "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Việc thu hồi mã thông báo này có thể ngăn việc xóa thiết bị của bạn nếu thiết bị chưa bắt đầu xóa.", + "This session" : "Phiên này", + "Device" : "Thiết bị", + "Last activity" : "Hoạt động cuối", + "Devices & sessions" : "Thiết bị và phiên truy cập", + "Web, desktop and mobile clients currently logged in to your account." : "Web, máy tính để bàn và máy khách di động hiện đang đăng nhập vào tài khoản của bạn.", + "Do you really want to wipe your data from this device?" : "Bạn có thực sự muốn xóa dữ liệu của bạn khỏi thiết bị này?", + "Confirm wipe" : "Xác nhận xóa", + "Error while creating device token" : "Lỗi trong khi tạo mã thông báo thiết bị", + "Error while updating device token scope" : "Lỗi trong khi cập nhật phạm vi mã thông báo thiết bị", + "Error while updating device token name" : "Lỗi trong khi cập nhật tên mã thông báo thiết bị", + "Error while deleting the token" : "Lỗi trong khi xóa mã thông báo", + "Error while wiping the device with the token" : "Lỗi trong khi xóa thiết bị bằng mã thông báo", + "App name" : "Tên ứng dụng", + "Create new app password" : "Tạo ứng dụng mật khẩu mới", + "Use the credentials below to configure your app or device." : "Sử dụng thông tin đăng nhập dưới đây để định cấu hình ứng dụng hoặc thiết bị của bạn.", + "For security reasons this password will only be shown once." : "Vì lý do bảo mật, mật khẩu này sẽ chỉ được hiển thị một lần.", + "Username" : "Tên đăng nhập", + "Password" : "Mật khẩu", + "Done" : "Hoàn thành", + "Show QR code for mobile apps" : "Hiển thị mã QR cho ứng dụng di động", + "Copied!" : "Đã sao chép!", + "Copy" : "Sao chép", + "Could not copy app password. Please copy it manually." : "Không thể sao chép ứng dụng mật khẩu. Vui lòng sao chép thủ công.", + "This app is supported via your current Nextcloud subscription." : "Ứng dụng này được hỗ trợ thông qua thuê bao Nextcloud hiện tại của bạn.", + "Supported" : "Đã hỗ trợ", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Các ứng dụng chính thức được phát triển bởi và trong cộng đồng. Họ cung cấp chức năng trung tâm và sẵn sàng để sử dụng sản xuất.", + "Official" : "Chính thức", + "by" : "bởi", + "Update to {version}" : "Cập nhật tới {version}", + "Remove" : "Xóa", + "Disable" : "Tắt", + "All" : "Tất cả", + "Limit app usage to groups" : "Giới hạn sử dụng ứng dụng cho các nhóm", + "No results" : "Không có kết quả", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Ứng dụng này không có phiên bản Nextcloud tối thiểu được chỉ định. Đây sẽ là một lỗi trong tương lai.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Ứng dụng này không có phiên bản Nextcloud tối đa được chỉ định. Đây sẽ là một lỗi trong tương lai.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Ứng dụng này không thể được cài đặt vì các điều kiện phụ thuộc sau không được đáp ứng:", + "View in store" : "Xem tại cửa hàng", + "Visit website" : "Truy cập trang web", + "Report a bug" : "Báo cáo lỗi", + "User documentation" : "Tài liệu người dùng", + "Admin documentation" : "Tài liệu quản trị", + "Developer documentation" : "Tài liệu dành cho nhà phát triển", + "Update to {update}" : "Cập nhật tới {update}", + "Results from other categories" : "Kết quả từ các danh mục khác", + "No apps found for your version" : "Không tìm thấy ứng dụng nào cho phiên bản của bạn", + "Disable all" : "Vô hiệu hóa tất cả", + "Enable all" : "Kích hoạt tất cả", + "Download and enable" : "Tải xuống và kích hoạt", + "Enable" : "Bật", + "Enable untested app" : "Bật ứng dụng chưa được kiểm tra", + "The app will be downloaded from the app store" : "Ứng dụng sẽ được tải xuống từ cửa hàng ứng dụng", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Ứng dụng này không được đánh dấu là tương thích với phiên bản Nextcloud của bạn. Nếu bạn tiếp tục, bạn vẫn có thể cài đặt ứng dụng. Lưu ý rằng ứng dụng có thể không hoạt động như mong đợi.", + "You do not have permissions to see the details of this user" : "Bạn không có quyền xem chi tiết của người dùng này", + "The backend does not support changing the display name" : "Trang cài đặt không hỗ trợ thay đổi tên hiển thị", + "New password" : "Mật khẩu mới", + "Add user in group" : "Thêm người dùng vào nhóm", + "Set user as admin for" : "Đặt người dùng làm quản trị viên cho", + "Select user quota" : "Chọn hạn ngạch người dùng", + "No language set" : "Không có ngôn ngữ", + "Never" : "Không bao giờ", + "Delete user" : "Xóa người dùng", + "Wipe all devices" : "Xóa sạch tất cả các thiết bị", + "Disable user" : "Vô hiệu hóa người dùng", + "Enable user" : "Kích hoạt người dùng", + "Resend welcome email" : "Gửi lại email chào mừng", + "{size} used" : "{size} đã sử dụng", + "Welcome mail sent!" : "Thư chào mừng đã được gửi!", + "Display name" : "Tên hiển thị", + "Email" : "Email", + "Group admin for" : "Quản trị viên nhóm", + "Quota" : "Hạn ngạch", + "Language" : "Ngôn ngữ", + "Storage location" : "Khu vực lưu trữ", + "User backend" : "Trang cài đặt người dùng", + "Last login" : "Lần đăng nhập cuối", + "Will be autogenerated" : "Sẽ được tạo tự động", + "Default language" : "Ngôn ngữ mặc định", + "Add a new user" : "Thêm người dùng mới", + "No users in here" : "Không có người dùng nào tại đây", + "Default quota" : "Hạn ngạch mặc định", + "Password change is disabled because the master key is disabled" : "Thay đổi mật khẩu bị vô hiệu hóa vì khóa chính bị vô hiệu hóa", + "Common languages" : "Ngôn ngữ thông dụng", + "All languages" : "Tất cả ngôn ngữ", + "Your apps" : "Ứng dụng của bạn", + "Active apps" : "Ứng dụng kích hoạt", + "Disabled apps" : "Ứng dụng vô hiệu hóa", + "Updates" : "Cập nhật", + "App bundles" : "Gói ứng dụng", + "New user" : "Người dùng mới", + "Default quota:" : "Hạn ngạch mặc định:", + "Select default quota" : "Chọn hạn ngạch mặc định", + "Show Languages" : "Hiển thị ngôn ngữ", + "Show last login" : "Hiển thị lần cuối đăng nhập", + "Show user backend" : "Hiển thị cài đặt người dùng", + "Show storage path" : "Hiển thị đường dẫn lưu trữ", + "You are about to remove the group {group}. The users will NOT be deleted." : "Bạn sắp xóa nhóm {group}. Người dùng sẽ KHÔNG bị xóa.", + "Please confirm the group removal " : "Vui lòng xác nhận xóa nhóm", + "Remove group" : "Xóa nhóm", + "Disabled users" : "Người dùng đã bị vô hiệu hóa", + "Everyone" : "Tất cả mọi người", + "Add group" : "Thêm nhóm", + "An error occured during the request. Unable to proceed." : "Đã xảy ra lỗi trong khi yêu cầu. Không thể tiến hành.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Ứng dụng đã được kích hoạt nhưng cần được cập nhật. Bạn sẽ được chuyển hướng đến trang cập nhật sau 5 giây.", + "App update" : "Cập nhật ứng dụng", + "Error: This app can not be enabled because it makes the server unstable" : "Lỗi: Không thể bật ứng dụng này vì nó làm cho máy chủ không ổn định", + "Common Name" : "Tên thông dụng", + "Valid until" : "Có hiệu lực đến", + "Issued By" : "Phát hành bởi", + "Valid until %s" : "Có hiệu lực đến %s", + "Import root certificate" : "Nhập root certificate", + "Administrator documentation" : "Tài liệu quản trị viên", + "Documentation" : "Tài liệu", + "Forum" : "Diễn đàn", + "None" : "Không gì cả", + "Login" : "Đăng nhập", + "Encryption" : "Mã hóa", + "Server address" : "Địa chỉ máy chủ", + "Port" : "Cổng", + "Credentials" : "Giấy chứng nhận", + "Security & setup warnings" : "Bảo mật và thiết lập cảnh báo", + "Version" : "Phiên bản", + "Execute one task with each page loaded" : "Thực thi tác vụ mỗi khi trang được tải", + "Sharing" : "Chia sẻ", + "Allow apps to use the Share API" : "Cho phép các ứng dụng sử dụng chia sẻ API", + "Allow resharing" : "Cho phép chia sẻ lại", + "Upload new" : "Tải lên", + "Remove image" : "Xóa ", + "Cancel" : "Hủy", + "Your email address" : "Email của bạn", + "Help translate" : "Hỗ trợ dịch thuật", + "Current password" : "Mật khẩu cũ", + "Change password" : "Đổi mật khẩu" +}, +"nplurals=1; plural=0;"); diff --git a/apps/settings/l10n/vi.json b/apps/settings/l10n/vi.json new file mode 100644 index 00000000000..8723c8ba9d6 --- /dev/null +++ b/apps/settings/l10n/vi.json @@ -0,0 +1,261 @@ +{ "translations": { + "{actor} added you to group {group}" : "{actor} đã thêm bạn vào nhóm {group}", + "You added {user} to group {group}" : "Bạn đã thêm {user} vào nhóm {group}", + "{actor} added {user} to group {group}" : "{actor} đã thêm {user} vào nhóm {group}", + "An administrator added you to group {group}" : "Quản trị viên đã thêm bạn vào nhóm {group}", + "An administrator added {user} to group {group}" : "Quản trị viên đã thêm {user} vào nhóm {group}", + "{actor} removed you from group {group}" : "{actor} đã xóa bạn khỏi nhóm {group}", + "You removed {user} from group {group}" : "Bạn đã xóa {user} khỏi nhóm {group}", + "{actor} removed {user} from group {group}" : "{actor} đã xóa {user} khỏi nhóm {group}", + "An administrator removed you from group {group}" : "Quản trị viên đã xóa bạn khỏi nhóm {group}", + "An administrator removed {user} from group {group}" : "Quản trị viên đã xóa {user} khỏi nhóm {group}", + "Your <strong>group memberships</strong> were modified" : "<strong>quyền thành viên nhóm</strong> của bạn đã bị thay đổi", + "{actor} changed your password" : "{actor} đã thay đổi mật khẩu của bạn", + "You changed your password" : "Bạn đã thay đổi mật khẩu", + "Your password was reset by an administrator" : "Mật khẩu của bạn đã được khôi phục bởi quản trị viên", + "{actor} changed your email address" : "{actor} đã thay đổi địa chỉ email của bạn", + "You changed your email address" : "Bạn đã thay đổi địa chỉ email", + "Your email address was changed by an administrator" : "Địa chỉ email của bạn đã được thay đổi bởi quản trị viên", + "You created app password \"{token}\"" : "Bạn đã tạo ứng dụng mật khẩu \"{token}\"", + "You deleted app password \"{token}\"" : "Bạn đã xóa ứng dụng mật khẩu \"{token}\"", + "You renamed app password \"{token}\" to \"{newToken}\"" : "Bạn đã đổi tên ứng dụng mật khẩu \"{token}\" thành \"{newToken}\"", + "You granted filesystem access to app password \"{token}\"" : "Bạn đã cấp quyền truy cập hệ thống tệp cho ứng dụng mật khẩu \"{token}\"", + "You revoked filesystem access from app password \"{token}\"" : "Bạn đã thu hồi quyền truy cập hệ thống tệp từ ứng dụng mật khẩu \"{token}\"", + "Security" : "Bảo mật", + "You successfully logged in using two-factor authentication (%1$s)" : "Bạn đã đăng nhập thành công bằng xác thực hai yếu tố (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Thử đăng nhập bằng xác thực hai yếu tố không thành công (%1$s)", + "Remote wipe was started on %1$s" : "Xóa từ xa đã được bắt đầu vào %1$s", + "Remote wipe has finished on %1$s" : "Xóa từ xa đã kết thúc vào %1$s", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "<strong>mật khẩu</strong> hoặc <strong>email</strong> đã được sửa đổi", + "Couldn't remove app." : "Không thể xóa ứng dụng", + "Couldn't update app." : "Không thể cập nhật ứng dụng", + "Wrong password" : "Mật khẩu không chính xác", + "Saved" : "Đã lưu", + "No user supplied" : "Không có người dùng cung cấp", + "Unable to change password" : "Không thể thay đổi mật khẩu", + "Authentication error" : "Lỗi xác thực", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Vui lòng cung cấp mật khẩu khôi phục quản trị viên; nếu không, tất cả dữ liệu người dùng sẽ bị mất.", + "Wrong admin recovery password. Please check the password and try again." : "Sai mật khẩu khôi phục quản trị viên. Vui lòng kiểm tra mật khẩu và thử lại.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Trang quản trị không hỗ trợ thay đổi mật khẩu, nhưng khóa mã hóa của người dùng đã được cập nhật.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "Đang cài đặt và cập nhật ứng dụng từ app store hoặc Federated Cloud Sharing", + "Federated Cloud Sharing" : "Federated Cloud Sharing", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL đang sử dụng đã lâu không cập nhật %1$s phiên bản (%2$s). Vui lòng cập nhật hệ điều hành hoặc các tính năng như %3$s sẽ không hoạt động đáng tin cậy.", + "Invalid SMTP password." : "Mật khẩu SMTT không chính xác.", + "Email setting test" : "Kiểm tra cài đặt email", + "Well done, %s!" : "Làm rất tốt, %s!", + "If you received this email, the email configuration seems to be correct." : "Nếu bạn nhận được email này, cấu hình email có vẻ đúng.", + "Email could not be sent. Check your mail server log" : "Email không thể gửi được. Kiểm tra nhật ký máy chủ email của bạn", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Một vấn đề xảy ra trong khi gửi email. Vui lòng sửa lại cài đặt của bạn. (Lỗi: %s)", + "You need to set your user email before being able to send test emails." : "Bạn cần cài đặt email người dùng trước khi có thể gửi email kiểm tra.", + "Invalid mail address" : "Địa chỉ email không hợp lệ", + "Settings saved" : "Cấu hình đã được lưu", + "Unable to change full name" : "Họ và tên không thể thay đổi ", + "Unable to change email address" : "Không thể thay đổi địa chỉ email", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Để xác minh tài khoản Twitter của bạn, hãy đăng tweet sau đây trên Twitter (vui lòng đảm bảo đăng nó mà không có bất kỳ ngắt dòng nào):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Để xác minh trang web của bạn, hãy lưu trữ nội dung sau trong web-root của bạn tại '.well-known/CloudIdVerificationCode.txt' (vui lòng đảm bảo rằng văn bản hoàn chỉnh nằm trong một dòng):", + "%1$s changed your password on %2$s." : "%1$s đã thay đổi mật khẩu của bạn trên %2$s", + "Your password on %s was changed." : "Mật khẩu của bạn trên %s đã được thay đổi.", + "Your password on %s was reset by an administrator." : "Mật khẩu của bạn trên %s đã được quản trị viên đặt lại.", + "Password for %1$s changed on %2$s" : "Mật khẩu cho %1$s đã thay đổi trên %2$s", + "Password changed for %s" : "Mật khẩu đã thay đổi cho %s", + "If you did not request this, please contact an administrator." : "Nếu bạn không yêu cầu điều này, xin vui lòng liên hệ với quản trị viên.", + "Your email address on %s was changed." : "Địa chỉ email của bạn trên %s đã được thay đổi.", + "Your email address on %s was changed by an administrator." : "Địa chỉ email của bạn trên %s đã được thay đổi bởi quản trị viên.", + "Email address for %1$s changed on %2$s" : "Địa chỉ email cho %1$s đã được thay đổi trên %2$s", + "Email address changed for %s" : "Địa chỉ email đã được thay đổi cho %s", + "The new email address is %s" : "Địa chỉ email mới là %s", + "Your %s account was created" : "Tài khoản %s của bạn đã được tạo", + "Welcome aboard" : "Chào mừng bạn", + "Welcome aboard %s" : "Chào mừng bạn %s", + "Welcome to your %s account, you can add, protect, and share your data." : "Chào mừng bạn đến với tài khoản %s của bạn, bạn có thể thêm, bảo vệ và chia sẻ dữ liệu của mình.", + "Your username is: %s" : "Tên người dùng của bạn là : %s", + "Set your password" : "Đặt mật khẩu của bạn", + "Go to %s" : "Đi tới %s", + "Install Client" : "Cài đặt máy khách", + "Logged in user must be a subadmin" : "Người dùng đã đăng nhập phải là một subadmin", + "Create" : "Tạo mới", + "Change" : "Chỉnh sửa", + "Delete" : "Xóa", + "Share" : "Chia sẻ", + "Unlimited" : "Không giới hạn", + "Verifying" : "Đang xác minh", + "Verifying …" : "Đang xác minh ...", + "Verify" : "Xác minh", + "Migration in progress. Please wait until the migration is finished" : "Chuyển đổi dữ liệu đang tiến hành. Vui lòng đợi cho đến khi quá trình di chuyển kết thúc", + "Migration started …" : "Chuyển đổi dữ liệu đã bắt đầu ...", + "Not saved" : "Chưa được lưu", + "Sending…" : "Đang gửi...", + "Email sent" : "Email đã được gửi", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Xảy ra lỗi Vui lòng tải lên chứng chỉ PEM được mã hóa ASCII.", + "Valid until {date}" : "Có hiệu lực cho đến {date}", + "Private" : "Riêng tư", + "Only visible to local users" : "Chỉ hiển thị cho người dùng local", + "Only visible to you" : "Chỉ hiển thị với tôi", + "Contacts" : "Liên hệ", + "Visible to local users and to trusted servers" : "Hiển thị với local users và trusted servers", + "Public" : "Công khai", + "Will be synced to a global and public address book" : "Sẽ được đồng bộ hóa với công cộng và một sổ địa chỉ công khai", + "Very weak password" : "Mật khẩu rất yếu", + "Weak password" : "Mật khẩu yếu", + "So-so password" : "Mật khẩu tương tự", + "Good password" : "Mật khẩu tốt", + "Strong password" : "Mật khẩu mạnh", + "An error occurred while changing your language. Please reload the page and try again." : "Đã xảy ra lỗi trong khi thay đổi ngôn ngữ của bạn. Hãy tải lại trang và thử lại.", + "An error occurred while changing your locale. Please reload the page and try again." : "Đã xảy ra lỗi trong khi thay đổi ngôn ngữ của bạn. Hãy tải lại trang và thử lại.", + "Select a profile picture" : "Chọn một hình ảnh đại diện", + "Week starts on {fdow}" : "Tuần bắt đầu vào {fdow}", + "Groups" : "Nhóm", + "Group list is empty" : "Danh sách nhóm trống", + "Unable to retrieve the group list" : "Không thể truy xuất danh sách nhóm", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Xác thực hai yếu tố có thể được thi hành cho tất cả \t người dùng và các nhóm cụ thể. Nếu họ không có cấu hình hỗ trợ xác thực hai yếu tố, họ sẽ không thể đăng nhập vào hệ thống.", + "Enforce two-factor authentication" : "Thực thi xác thực hai yếu tố", + "Limit to groups" : "Giới hạn nhóm", + "Enforcement of two-factor authentication can be set for certain groups only." : "Việc thực thi xác thực hai yếu tố chỉ có thể được đặt cho một số nhóm nhất định.", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "Xác thực hai yếu tố được thi hành cho tất cả \t thành viên của các nhóm đang theo dõi.", + "Enforced groups" : "Các nhóm thực thi", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "Xác thực hai yếu tố không được thi hành cho tất cả \t thành viên của các nhóm đang theo dõi.", + "Excluded groups" : "Các nhóm bị loại trừ", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "Khi các nhóm được chọn / loại trừ, họ sử dụng logic sau để xác định xem người dùng có thực thi 2FA hay không: Nếu không có nhóm nào được chọn, 2FA được bật cho mọi người trừ các thành viên của các nhóm bị loại trừ. Nếu các nhóm được chọn, 2FA được bật cho tất cả các thành viên trong số này. Nếu người dùng ở cả hai nhóm được chọn và bị loại trừ, quyền được chọn sẽ được ưu tiên và 2FA được thi hành.", + "Save changes" : "Lưu thay đổi", + "Marked for remote wipe" : "Đánh dấu để xóa từ xa", + "Device settings" : "Cài đặt thiết bị", + "Allow filesystem access" : "Cho phép truy cập file hệ thống", + "Rename" : "Đổi tên", + "Revoke" : "Thu hồi", + "Wipe device" : "Xóa thiết bị", + "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Việc thu hồi mã thông báo này có thể ngăn việc xóa thiết bị của bạn nếu thiết bị chưa bắt đầu xóa.", + "This session" : "Phiên này", + "Device" : "Thiết bị", + "Last activity" : "Hoạt động cuối", + "Devices & sessions" : "Thiết bị và phiên truy cập", + "Web, desktop and mobile clients currently logged in to your account." : "Web, máy tính để bàn và máy khách di động hiện đang đăng nhập vào tài khoản của bạn.", + "Do you really want to wipe your data from this device?" : "Bạn có thực sự muốn xóa dữ liệu của bạn khỏi thiết bị này?", + "Confirm wipe" : "Xác nhận xóa", + "Error while creating device token" : "Lỗi trong khi tạo mã thông báo thiết bị", + "Error while updating device token scope" : "Lỗi trong khi cập nhật phạm vi mã thông báo thiết bị", + "Error while updating device token name" : "Lỗi trong khi cập nhật tên mã thông báo thiết bị", + "Error while deleting the token" : "Lỗi trong khi xóa mã thông báo", + "Error while wiping the device with the token" : "Lỗi trong khi xóa thiết bị bằng mã thông báo", + "App name" : "Tên ứng dụng", + "Create new app password" : "Tạo ứng dụng mật khẩu mới", + "Use the credentials below to configure your app or device." : "Sử dụng thông tin đăng nhập dưới đây để định cấu hình ứng dụng hoặc thiết bị của bạn.", + "For security reasons this password will only be shown once." : "Vì lý do bảo mật, mật khẩu này sẽ chỉ được hiển thị một lần.", + "Username" : "Tên đăng nhập", + "Password" : "Mật khẩu", + "Done" : "Hoàn thành", + "Show QR code for mobile apps" : "Hiển thị mã QR cho ứng dụng di động", + "Copied!" : "Đã sao chép!", + "Copy" : "Sao chép", + "Could not copy app password. Please copy it manually." : "Không thể sao chép ứng dụng mật khẩu. Vui lòng sao chép thủ công.", + "This app is supported via your current Nextcloud subscription." : "Ứng dụng này được hỗ trợ thông qua thuê bao Nextcloud hiện tại của bạn.", + "Supported" : "Đã hỗ trợ", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Các ứng dụng chính thức được phát triển bởi và trong cộng đồng. Họ cung cấp chức năng trung tâm và sẵn sàng để sử dụng sản xuất.", + "Official" : "Chính thức", + "by" : "bởi", + "Update to {version}" : "Cập nhật tới {version}", + "Remove" : "Xóa", + "Disable" : "Tắt", + "All" : "Tất cả", + "Limit app usage to groups" : "Giới hạn sử dụng ứng dụng cho các nhóm", + "No results" : "Không có kết quả", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Ứng dụng này không có phiên bản Nextcloud tối thiểu được chỉ định. Đây sẽ là một lỗi trong tương lai.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Ứng dụng này không có phiên bản Nextcloud tối đa được chỉ định. Đây sẽ là một lỗi trong tương lai.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Ứng dụng này không thể được cài đặt vì các điều kiện phụ thuộc sau không được đáp ứng:", + "View in store" : "Xem tại cửa hàng", + "Visit website" : "Truy cập trang web", + "Report a bug" : "Báo cáo lỗi", + "User documentation" : "Tài liệu người dùng", + "Admin documentation" : "Tài liệu quản trị", + "Developer documentation" : "Tài liệu dành cho nhà phát triển", + "Update to {update}" : "Cập nhật tới {update}", + "Results from other categories" : "Kết quả từ các danh mục khác", + "No apps found for your version" : "Không tìm thấy ứng dụng nào cho phiên bản của bạn", + "Disable all" : "Vô hiệu hóa tất cả", + "Enable all" : "Kích hoạt tất cả", + "Download and enable" : "Tải xuống và kích hoạt", + "Enable" : "Bật", + "Enable untested app" : "Bật ứng dụng chưa được kiểm tra", + "The app will be downloaded from the app store" : "Ứng dụng sẽ được tải xuống từ cửa hàng ứng dụng", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Ứng dụng này không được đánh dấu là tương thích với phiên bản Nextcloud của bạn. Nếu bạn tiếp tục, bạn vẫn có thể cài đặt ứng dụng. Lưu ý rằng ứng dụng có thể không hoạt động như mong đợi.", + "You do not have permissions to see the details of this user" : "Bạn không có quyền xem chi tiết của người dùng này", + "The backend does not support changing the display name" : "Trang cài đặt không hỗ trợ thay đổi tên hiển thị", + "New password" : "Mật khẩu mới", + "Add user in group" : "Thêm người dùng vào nhóm", + "Set user as admin for" : "Đặt người dùng làm quản trị viên cho", + "Select user quota" : "Chọn hạn ngạch người dùng", + "No language set" : "Không có ngôn ngữ", + "Never" : "Không bao giờ", + "Delete user" : "Xóa người dùng", + "Wipe all devices" : "Xóa sạch tất cả các thiết bị", + "Disable user" : "Vô hiệu hóa người dùng", + "Enable user" : "Kích hoạt người dùng", + "Resend welcome email" : "Gửi lại email chào mừng", + "{size} used" : "{size} đã sử dụng", + "Welcome mail sent!" : "Thư chào mừng đã được gửi!", + "Display name" : "Tên hiển thị", + "Email" : "Email", + "Group admin for" : "Quản trị viên nhóm", + "Quota" : "Hạn ngạch", + "Language" : "Ngôn ngữ", + "Storage location" : "Khu vực lưu trữ", + "User backend" : "Trang cài đặt người dùng", + "Last login" : "Lần đăng nhập cuối", + "Will be autogenerated" : "Sẽ được tạo tự động", + "Default language" : "Ngôn ngữ mặc định", + "Add a new user" : "Thêm người dùng mới", + "No users in here" : "Không có người dùng nào tại đây", + "Default quota" : "Hạn ngạch mặc định", + "Password change is disabled because the master key is disabled" : "Thay đổi mật khẩu bị vô hiệu hóa vì khóa chính bị vô hiệu hóa", + "Common languages" : "Ngôn ngữ thông dụng", + "All languages" : "Tất cả ngôn ngữ", + "Your apps" : "Ứng dụng của bạn", + "Active apps" : "Ứng dụng kích hoạt", + "Disabled apps" : "Ứng dụng vô hiệu hóa", + "Updates" : "Cập nhật", + "App bundles" : "Gói ứng dụng", + "New user" : "Người dùng mới", + "Default quota:" : "Hạn ngạch mặc định:", + "Select default quota" : "Chọn hạn ngạch mặc định", + "Show Languages" : "Hiển thị ngôn ngữ", + "Show last login" : "Hiển thị lần cuối đăng nhập", + "Show user backend" : "Hiển thị cài đặt người dùng", + "Show storage path" : "Hiển thị đường dẫn lưu trữ", + "You are about to remove the group {group}. The users will NOT be deleted." : "Bạn sắp xóa nhóm {group}. Người dùng sẽ KHÔNG bị xóa.", + "Please confirm the group removal " : "Vui lòng xác nhận xóa nhóm", + "Remove group" : "Xóa nhóm", + "Disabled users" : "Người dùng đã bị vô hiệu hóa", + "Everyone" : "Tất cả mọi người", + "Add group" : "Thêm nhóm", + "An error occured during the request. Unable to proceed." : "Đã xảy ra lỗi trong khi yêu cầu. Không thể tiến hành.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Ứng dụng đã được kích hoạt nhưng cần được cập nhật. Bạn sẽ được chuyển hướng đến trang cập nhật sau 5 giây.", + "App update" : "Cập nhật ứng dụng", + "Error: This app can not be enabled because it makes the server unstable" : "Lỗi: Không thể bật ứng dụng này vì nó làm cho máy chủ không ổn định", + "Common Name" : "Tên thông dụng", + "Valid until" : "Có hiệu lực đến", + "Issued By" : "Phát hành bởi", + "Valid until %s" : "Có hiệu lực đến %s", + "Import root certificate" : "Nhập root certificate", + "Administrator documentation" : "Tài liệu quản trị viên", + "Documentation" : "Tài liệu", + "Forum" : "Diễn đàn", + "None" : "Không gì cả", + "Login" : "Đăng nhập", + "Encryption" : "Mã hóa", + "Server address" : "Địa chỉ máy chủ", + "Port" : "Cổng", + "Credentials" : "Giấy chứng nhận", + "Security & setup warnings" : "Bảo mật và thiết lập cảnh báo", + "Version" : "Phiên bản", + "Execute one task with each page loaded" : "Thực thi tác vụ mỗi khi trang được tải", + "Sharing" : "Chia sẻ", + "Allow apps to use the Share API" : "Cho phép các ứng dụng sử dụng chia sẻ API", + "Allow resharing" : "Cho phép chia sẻ lại", + "Upload new" : "Tải lên", + "Remove image" : "Xóa ", + "Cancel" : "Hủy", + "Your email address" : "Email của bạn", + "Help translate" : "Hỗ trợ dịch thuật", + "Current password" : "Mật khẩu cũ", + "Change password" : "Đổi mật khẩu" +},"pluralForm" :"nplurals=1; plural=0;" +} \ No newline at end of file diff --git a/apps/settings/l10n/zh_CN.js b/apps/settings/l10n/zh_CN.js new file mode 100644 index 00000000000..ada0bc36a34 --- /dev/null +++ b/apps/settings/l10n/zh_CN.js @@ -0,0 +1,823 @@ +OC.L10N.register( + "settings", + { + "{actor} added you to group {group}" : "{actor} 将您加入分组 {group}", + "You added {user} to group {group}" : "您将 {user} 加入分组 {group}", + "{actor} added {user} to group {group}" : "{actor} 将 {user} 加入分组 {group}", + "An administrator added you to group {group}" : "一个管理员将您加入分组 {group}", + "An administrator added {user} to group {group}" : "一个管理员将 {user} 加入分组 {group}", + "{actor} removed you from group {group}" : "{actor} 将您从分组 {group} 中移除", + "You removed {user} from group {group}" : "您已将 {user} 从 群组 {group} 中移除", + "{actor} removed {user} from group {group}" : "{actor} 将 {user} 从分组 {group} 中移除", + "An administrator removed you from group {group}" : "一个管理员将你从分组 {group} 中移除", + "An administrator removed {user} from group {group}" : "一个管理员将 {user} 从分组 {group} 中移除", + "Your <strong>group memberships</strong> were modified" : "您的<strong>分组成员关系</strong>已被修改。", + "{actor} changed your password" : "{actor} 已更改您的密码", + "You changed your password" : "您已更改您的密码", + "Your password was reset by an administrator" : "您的密码已被管理员重置", + "{actor} changed your email address" : "{actor} 已更改您的电子邮件地址", + "You changed your email address" : "您已更改您的电子邮件地址", + "Your email address was changed by an administrator" : "您的电子邮件地址已被管理员更改", + "You created app password \"{token}\"" : "您创建了应用密码 \"{token}\"", + "You deleted app password \"{token}\"" : "您删除了应用密码 \"{token}\"", + "You renamed app password \"{token}\" to \"{newToken}\"" : "您将应用密码 \"{token}\" 重命名为 \"{newToken}\"", + "You granted filesystem access to app password \"{token}\"" : "您将文件系统访问权限授予了应用密码 \"{token}\"", + "You revoked filesystem access from app password \"{token}\"" : "您撤销了应用密码 \"{token}\" 的文件系统访问权限", + "Security" : "安全", + "You successfully logged in using two-factor authentication (%1$s)" : "您使用两步验证登录成功(%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "使用两步验证登录失败的尝试 (%1$s)", + "Remote wipe was started on %1$s" : "%1$s上的远程擦除已开始", + "Remote wipe has finished on %1$s" : "%1$s上的远程擦除已完成", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "您的 <strong>密码</strong> 或 <strong>邮箱</strong> 已被更改", + "Couldn't remove app." : "无法删除应用。", + "Couldn't update app." : "无法更新应用。", + "Wrong password" : "密码错误", + "Saved" : "已保存", + "No user supplied" : "没有满足的用户", + "Unable to change password" : "无法修改密码", + "Authentication error" : "认证错误", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "请提供管理员恢复密码,否则所有用户的数据都将丢失。", + "Wrong admin recovery password. Please check the password and try again." : "错误的管理员恢复密码。请检查密码并重试。", + "Backend doesn't support password change, but the user's encryption key was updated." : "后端不支持密码更改,但用户的加密密钥已更新。", + "installing and updating apps via the app store or Federated Cloud Sharing" : "通过应用程序商店或联合云共享安装和更新应用程序", + "Federated Cloud Sharing" : "联合云共享", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL正使用一个过时的%1$s 版本 (%2$s)。请升级您的操作系统,否则像 %3$s 这样的特性将无法可靠地工作。", + "Invalid SMTP password." : "无效的 SMTP 密码", + "Email setting test" : "电子邮件设置测试", + "Well done, %s!" : "已完成,%s!", + "If you received this email, the email configuration seems to be correct." : "如果您收到了这封邮件,电子邮件配置应该就是正确的。", + "Email could not be sent. Check your mail server log" : "邮件无法发送。检查您的邮件服务器日志", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "在发送电子邮件时出现问题。请修正您的设置。(错误:%s)", + "You need to set your user email before being able to send test emails." : "在发送测试邮件前您需要设置您的电子邮件地址。", + "Invalid mail address" : "无效的电子邮件地址", + "Settings saved" : "设置已保存", + "Unable to change full name" : "无法修改全名", + "Unable to change email address" : "无法修改电子邮箱地址", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "为了验证您的 Twitter 帐户,请在 Twitter 上发布以下推文(请确保发布没有任何换行符):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "为了验证您的网站,请将以下内容存储在“.well-known / CloudIdVerificationCode.txt”的网络根目录中(请确保完整的文本在一行中):", + "%1$s changed your password on %2$s." : "%1$s 更改了您在 %2$s 上的密码。", + "Your password on %s was changed." : "您在 %s 上的密码已被更改。", + "Your password on %s was reset by an administrator." : "您在 %s 上的密码已被管理员重置。", + "Password for %1$s changed on %2$s" : "%2$s %1$s 的密码已更改", + "Password changed for %s" : "%s 的密码已更改", + "If you did not request this, please contact an administrator." : "如果这不是您发起的请求,请联系管理员。", + "Your email address on %s was changed." : "您在 %s 上的电子邮件地址已更改。", + "Your email address on %s was changed by an administrator." : "您在 %s 上的电子邮件地址已被管理员修改", + "Email address for %1$s changed on %2$s" : "%2$s 上 %1$s 的电子邮件地址已更改", + "Email address changed for %s" : "%s 的电子邮件地址已更改", + "The new email address is %s" : "新的电子邮件地址是%s", + "Your %s account was created" : "您的 %s 帐户已创建", + "Welcome aboard" : "欢迎使用", + "Welcome aboard %s" : "%s,欢迎使用", + "Welcome to your %s account, you can add, protect, and share your data." : "欢迎使用您的 %s 帐户,您可以添加、保护和共享您的数据。", + "Your username is: %s" : "您的用户名是:%s", + "Set your password" : "设置您的密码", + "Go to %s" : "访问 %s", + "Install Client" : "安装客户端", + "Logged in user must be a subadmin" : "当前登录用户必须为子管理员", + "Create" : "创建", + "Change" : "修改", + "Delete" : "删除", + "Share" : "共享", + "Unlimited" : "无限", + "Verifying" : "正在验证", + "Verifying …" : "正在验证...", + "Verify" : "验证", + "Migration in progress. Please wait until the migration is finished" : "正在进行迁移。请稍等,直到迁移完成", + "Migration started …" : "迁移开始...", + "Not saved" : "未保存", + "Sending…" : "正在发送…", + "Email sent" : "邮件已发送", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "发生错误。请上传 ASCII 编码的 PEM 证书。", + "Valid until {date}" : "有效期至 {date}", + "Local" : "本地", + "Private" : "私有", + "Only visible to local users" : "仅对本地用户可见", + "Only visible to you" : "仅您自己可见", + "Contacts" : "联系人", + "Visible to local users and to trusted servers" : "仅对本地用户和信任的服务器可见", + "Public" : "公开", + "Will be synced to a global and public address book" : "将同步到全局和公开地址簿中", + "Very weak password" : "非常弱的密码", + "Weak password" : "弱密码", + "So-so password" : "一般强度的密码", + "Good password" : "较强的密码", + "Strong password" : "强密码", + "An error occurred while changing your language. Please reload the page and try again." : "修改您的语言时遇到错误。请重新载入页面后再试。", + "An error occurred while changing your locale. Please reload the page and try again." : "修改您的地区时遇到错误。请重新载入页面后再试。", + "Select a profile picture" : "选择个人头像", + "Week starts on {fdow}" : "周开始于 {fdow}", + "Groups" : "分组", + "Group list is empty" : "群组列表为空", + "Unable to retrieve the group list" : "无法获取分组列表", + "Afrikaans (Namibia)" : "南非语(纳米比亚)", + "Afrikaans (South Africa)" : "南非语(南非)", + "Afrikaans" : "南非语", + "Akan (Ghana)" : "阿肯语(加纳)", + "Akan" : "阿肯语", + "Albanian (Albania)" : "阿尔巴尼亚语(阿尔巴尼亚)", + "Albanian" : "阿尔巴尼亚语", + "Amharic (Ethiopia)" : "阿姆哈拉语(埃塞俄比亚)", + "Amharic" : "阿姆哈拉语", + "Arabic (Algeria)" : "阿拉伯语(阿尔及利亚)", + "Arabic (Bahrain)" : "阿拉伯语(巴林)", + "Arabic (Egypt)" : "阿拉伯语(埃及)", + "Arabic (Iraq)" : "阿拉伯语(伊拉克)", + "Arabic (Jordan)" : "阿拉伯语(约旦)", + "Arabic (Kuwait)" : "阿拉伯语(科威特)", + "Arabic (Lebanon)" : "阿拉伯语(黎巴嫩)", + "Arabic (Libya)" : "阿拉伯语(利比亚)", + "Arabic (Morocco)" : "阿拉伯语(摩洛哥)", + "Arabic (Oman)" : "阿拉伯语(阿曼)", + "Arabic (Qatar)" : "阿拉伯语(卡塔尔)", + "Arabic (Saudi Arabia)" : "阿拉伯语(沙特阿拉伯)", + "Arabic (Sudan)" : "阿拉伯语(苏丹)", + "Arabic (Syria)" : "阿拉伯语(叙利亚)", + "Arabic (Tunisia)" : "阿拉伯语(突尼斯)", + "Arabic (United Arab Emirates)" : "阿拉伯语(阿联酋)", + "Arabic (Yemen)" : "阿拉伯语(也门)", + "Arabic" : "阿拉伯语", + "Armenian (Armenia)" : "亚美尼亚语(亚美尼亚)", + "Armenian" : "亚美尼亚", + "Assamese (India)" : "阿萨姆语(印度)", + "Assamese" : "阿萨姆语", + "Asu (Tanzania)" : "阿苏语(坦桑尼亚)", + "Asu" : "阿苏语", + "Azerbaijani (Cyrillic)" : "阿塞拜疆语(西里尔文)", + "Azerbaijani (Cyrillic, Azerbaijan)" : "阿塞拜疆语(西里尔文,阿塞拜疆)", + "Azerbaijani (Latin)" : "阿塞拜疆语(拉丁文)", + "Azerbaijani (Latin, Azerbaijan)" : "阿塞拜疆语(拉丁文,阿塞拜疆)", + "Azerbaijani" : "阿塞拜疆语", + "Bambara (Mali)" : "班巴拉语(马里)", + "Bambara" : "班巴拉语", + "Basque (Spain)" : "巴斯克语(西班牙)", + "Basque" : "巴斯克语", + "Belarusian (Belarus)" : "白俄罗斯语(白俄罗斯)", + "Belarusian" : "白俄罗斯语", + "Bemba (Zambia)" : "本巴语(赞比亚)", + "Bemba" : "本巴语", + "Bena (Tanzania)" : "贝纳语(坦桑尼亚)", + "Bena" : "贝纳语", + "Bengali (Bangladesh)" : "孟加拉语(孟加拉国)", + "Bengali (India)" : "孟加拉语(印度)", + "Bengali" : "孟加拉语", + "Bosnian (Bosnia and Herzegovina)" : "波斯尼亚语(波黑)", + "Bosnian" : "波斯尼亚语", + "Bulgarian (Bulgaria)" : "保加利亚语(保加利亚)", + "Bulgarian" : "保加利亚语", + "Burmese (Myanmar [Burma])" : "缅甸语(缅甸[缅甸])", + "Burmese" : "缅甸语", + "Catalan (Spain)" : "加泰罗尼亚语(西班牙)", + "Catalan" : "加泰罗尼亚语", + "Central Morocco Tamazight (Latin)" : "中摩洛哥柏柏尔语(拉丁文)", + "Central Morocco Tamazight (Latin, Morocco)" : "中摩洛哥柏柏尔语(拉丁文,摩洛哥)", + "Central Morocco Tamazight" : "中摩洛哥柏柏尔语", + "Cherokee (United States)" : "切诺基语(美国)", + "Cherokee" : "切诺基语", + "Chiga (Uganda)" : "奇加语(乌干达)", + "Chiga" : "奇加语", + "Chinese (Simplified Han)" : "中文(简体)", + "Chinese (Simplified Han, China)" : "中文(简体,中国)", + "Chinese (Simplified Han, Hong Kong SAR China)" : "中文(简体,中国香港特别行政区)", + "Chinese (Simplified Han, Macau SAR China)" : "中文(简体,中国澳门特别行政区)", + "Chinese (Simplified Han, Singapore)" : "中文(简体,新加坡)", + "Chinese (Traditional Han)" : "中文(繁体)", + "Chinese (Traditional Han, Hong Kong SAR China)" : "中文(繁体,中国香港特别行政区)", + "Chinese (Traditional Han, Macau SAR China)" : "中文(繁体,中国澳门特别行政区)", + "Chinese (Traditional Han, Taiwan)" : "中文(繁体,台湾)", + "Chinese" : "中文", + "Cornish (United Kingdom)" : "康沃尔语(英国)", + "Cornish" : "康沃尔语", + "Croatian (Croatia)" : "克罗地亚语(克罗地亚)", + "Croatian" : "克罗地亚语", + "Czech (Czech Republic)" : "捷克语(捷克共和国)", + "Czech" : "捷克语", + "Danish (Denmark)" : "丹麦语(丹麦)", + "Danish" : "丹麦语", + "Dutch (Belgium)" : "荷兰语(比利时)", + "Dutch (Netherlands)" : "荷兰语(荷兰)", + "Dutch" : "荷兰语", + "Embu (Kenya)" : "恩布语(肯尼亚)", + "Embu" : "恩布语", + "English (American Samoa)" : "英语(美属萨摩亚)", + "English (Australia)" : "英语(澳大利亚)", + "English (Belgium)" : "英语(比利时)", + "English (Belize)" : "英语(伯利兹)", + "English (Botswana)" : "英语(博茨瓦纳)", + "English (Canada)" : "英语(加拿大)", + "English (Guam)" : "英语(关岛)", + "English (Hong Kong SAR China)" : "英语(中国香港特别行政区)", + "English (India)" : "英语(印度)", + "English (Ireland)" : "英语(爱尔兰)", + "English (Jamaica)" : "英语(牙买加)", + "English (Malta)" : "英语(马耳他)", + "English (Marshall Islands)" : "英语(马绍尔群岛)", + "English (Mauritius)" : "英语(毛里求斯)", + "English (Namibia)" : "英语(纳米比亚)", + "English (New Zealand)" : "英语(新西兰)", + "English (Northern Mariana Islands)" : "英语(北马里亚纳群岛)", + "English (Pakistan)" : "英语(巴基斯坦)", + "English (Philippines)" : "英语(菲律宾)", + "English (Singapore)" : "英语(新加坡)", + "English (South Africa)" : "英语(南非)", + "English (Trinidad and Tobago)" : "英语(特立尼达和多巴哥)", + "English (U.S. Minor Outlying Islands)" : "英语(美国本土外小岛屿)", + "English (U.S. Virgin Islands)" : "英语(美属维尔京群岛)", + "English (United Kingdom)" : "英语(英国)", + "English (United States)" : "英语(美国)", + "English (Zimbabwe)" : "英语(津巴布韦)", + "English" : "英语", + "Esperanto" : "世界语", + "Estonian (Estonia)" : "爱沙尼亚语(爱沙尼亚)", + "Estonian" : "爱沙尼亚语", + "Ewe (Ghana)" : "艾韦语(加纳)", + "Ewe (Togo)" : "艾韦语(多哥)", + "Ewe" : "艾韦语", + "Faroese (Faroe Islands)" : "法罗语(法罗群岛)", + "Faroese" : "法罗语", + "Filipino (Philippines)" : "菲律宾语(菲律宾)", + "Filipino" : "菲律宾语", + "Finnish (Finland)" : "芬兰语(芬兰)", + "Finnish" : "芬兰语", + "French (Belgium)" : "法语(比利时)", + "French (Benin)" : "法语(贝宁)", + "French (Burkina Faso)" : "法语(布基纳法索)", + "French (Burundi)" : "法语(布隆迪)", + "French (Cameroon)" : "法语(喀麦隆)", + "French (Canada)" : "法语(加拿大)", + "French (Central African Republic)" : "法语(中非共和国)", + "French (Chad)" : "法语(乍得)", + "French (Comoros)" : "法语(科摩罗)", + "French (Congo - Brazzaville)" : "法语(刚果-布拉柴维尔)", + "French (Congo - Kinshasa)" : "法语(刚果-金沙萨)", + "French (Côte d’Ivoire)" : "法语(科特迪瓦)", + "French (Djibouti)" : "法语(吉布提)", + "French (Equatorial Guinea)" : "法语(赤道几内亚)", + "French (France)" : "法语(法国)", + "French (Gabon)" : "法语(加蓬)", + "French (Guadeloupe)" : "法语(瓜德罗普)", + "French (Guinea)" : "法语(几内亚)", + "French (Luxembourg)" : "法语(卢森堡)", + "French (Madagascar)" : "法语(马达加斯加)", + "French (Mali)" : "法语(马里)", + "French (Martinique)" : "法语(马提尼克)", + "French (Monaco)" : "法语(摩纳哥)", + "French (Niger)" : "法语(尼日尔)", + "French (Rwanda)" : "法语(卢旺达)", + "French (Réunion)" : "法语(Réunion)", + "French (Saint Barthélemy)" : "法语(圣巴泰勒米)", + "French (Saint Martin)" : "法语(圣马丁)", + "French (Senegal)" : "法语(塞内加尔)", + "French (Switzerland)" : "法语(瑞士)", + "French (Togo)" : "法语(多哥)", + "French" : "法语", + "Fulah (Senegal)" : "富拉语(塞内加尔)", + "Fulah" : "富拉语", + "Galician (Spain)" : "加利西亚语(西班牙)", + "Galician" : "加利西亚语", + "Ganda (Uganda)" : "干达语(乌干达)", + "Ganda" : "干达语", + "Georgian (Georgia)" : "格鲁吉亚语(格鲁吉亚)", + "Georgian" : "格鲁吉亚语", + "German (Austria)" : "德语(奥地利)", + "German (Belgium)" : "德语(比利时)", + "German (Germany)" : "德语(德国)", + "German (Liechtenstein)" : "德语(列支敦士登)", + "German (Luxembourg)" : "德语(卢森堡)", + "German (Switzerland)" : "德语(瑞士)", + "German" : "德语", + "Greek (Cyprus)" : "希腊语(赛浦路斯)", + "Greek (Greece)" : "希腊语(希腊)", + "Greek" : "希腊语", + "Gujarati (India)" : "古吉拉特语(印度)", + "Gujarati" : "古吉拉特语", + "Gusii (Kenya)" : "古斯利语(肯尼亚)", + "Gusii" : "古斯利语", + "Hausa (Latin)" : "豪萨语(拉丁文)", + "Hausa (Latin, Ghana)" : "豪萨语(拉丁文,加纳)", + "Hausa (Latin, Niger)" : "豪萨语(拉丁文,尼日尔)", + "Hausa (Latin, Nigeria)" : "豪萨语(拉丁文,尼日利亚)", + "Hausa" : "豪萨语", + "Hawaiian (United States)" : "夏威夷语(美国)", + "Hawaiian" : "夏威夷语", + "Hebrew (Israel)" : "希伯来语(以色列)", + "Hebrew" : "希伯来语", + "Hindi (India)" : "印地语(印度)", + "Hindi" : "印地语", + "Hungarian (Hungary)" : "匈牙利语(匈牙利)", + "Hungarian" : "匈牙利语", + "Icelandic (Iceland)" : "冰岛语(冰岛)", + "Icelandic" : "冰岛语", + "Igbo (Nigeria)" : "伊博语(尼日利亚)", + "Igbo" : "伊博语", + "Indonesian (Indonesia)" : "印度尼西亚语(印度尼西亚)", + "Indonesian" : "印度尼西亚语", + "Irish (Ireland)" : "爱尔兰语(爱尔兰)", + "Irish" : "爱尔兰语", + "Italian (Italy)" : "意大利语(意大利)", + "Italian (Switzerland)" : "意大利语(瑞士)", + "Italian" : "意大利语", + "Japanese (Japan)" : "日语(日本)", + "Japanese" : "日语", + "Kabuverdianu (Cape Verde)" : "Kabuverdianu语(佛得角)", + "Kabuverdianu" : "Kabuverdianu语", + "Kabyle (Algeria)" : "卡拜尔语(阿尔及利亚)", + "Kabyle" : "卡拜尔语", + "Kalaallisut (Greenland)" : "格陵兰语(格陵兰)", + "Kalaallisut" : "格陵兰语", + "Kalenjin (Kenya)" : "卡伦津语(肯尼亚)", + "Kalenjin" : "卡伦津语", + "Kamba (Kenya)" : "坎巴语(肯尼亚)", + "Kamba" : "坎巴语", + "Kannada (India)" : "坎纳德语(印度)", + "Kannada" : "坎纳德语", + "Kazakh (Cyrillic)" : "哈萨克语(西里尔文)", + "Kazakh (Cyrillic, Kazakhstan)" : "哈萨克语(西里尔文,哈萨克斯坦)", + "Kazakh" : "哈萨克语", + "Khmer (Cambodia)" : "高棉语(柬埔寨)", + "Khmer" : "高棉语", + "Kikuyu (Kenya)" : "基库尤语(肯尼亚)", + "Kikuyu" : "基库尤语", + "Kinyarwanda (Rwanda)" : "卢旺达语(卢旺达)", + "Kinyarwanda" : "卢旺达语", + "Konkani (India)" : "孔卡尼语(印度)", + "Konkani" : "孔卡尼语", + "Korean (South Korea)" : "朝鲜语(南朝鲜)", + "Korean" : "朝鲜语", + "Koyra Chiini (Mali)" : "Koyra Chiini语(马里)", + "Koyra Chiini" : "Koyra Chiini语", + "Koyraboro Senni (Mali)" : "Koyraboro Senni语(马里)", + "Koyraboro Senni" : "Koyraboro Senni语", + "Langi (Tanzania)" : "兰吉语(坦桑尼亚)", + "Langi" : "兰吉语", + "Latvian (Latvia)" : "拉脱维亚语(拉脱维亚)", + "Latvian" : "拉脱维亚语", + "Lithuanian (Lithuania)" : "立陶宛语(立陶宛)", + "Lithuanian" : "立陶宛语", + "Luo (Kenya)" : "罗语(肯尼亚)", + "Luo" : "罗语", + "Luyia (Kenya)" : "Luyia语(肯尼亚)", + "Luyia" : "Luyia语", + "Macedonian (Macedonia)" : "马其顿语(马其顿)", + "Macedonian" : "马其顿语", + "Machame (Tanzania)" : "Machame语(坦桑尼亚)", + "Machame" : "Machame语", + "Makonde (Tanzania)" : "马孔达语(坦桑尼亚)", + "Makonde" : "马孔达语", + "Malagasy (Madagascar)" : "马尔加什语(马达加斯加)", + "Malagasy" : "马尔加什语", + "Malay (Brunei)" : "马来语(文莱)", + "Malay (Malaysia)" : "马来语(马来西亚)", + "Malay" : "马来语", + "Malayalam (India)" : "Malayalam语(印度)", + "Malayalam" : "Malayalam语", + "Maltese (Malta)" : "马耳他语(马耳他)", + "Maltese" : "马耳他语", + "Manx (United Kingdom)" : "曼克斯语(英国)", + "Manx" : "曼克斯语", + "Marathi (India)" : "马拉地语(印度)", + "Marathi" : "马拉地语", + "Masai (Kenya)" : "马赛语(肯尼亚)", + "Masai (Tanzania)" : "马赛语(坦桑尼亚)", + "Masai" : "马赛语", + "Meru (Kenya)" : "梅鲁语(肯尼亚)", + "Meru" : "梅鲁语", + "Morisyen (Mauritius)" : "Morisyen语(毛里求斯)", + "Morisyen" : "Morisyen语", + "Nama (Namibia)" : "那马语(纳米比亚)", + "Nama" : "那马语", + "Nepali (India)" : "尼泊尔语(印度)", + "Nepali (Nepal)" : "尼泊尔语(尼泊尔)", + "Nepali" : "尼泊尔语", + "North Ndebele (Zimbabwe)" : "北恩德贝勒语(津巴布韦)", + "North Ndebele" : "北恩德贝勒语", + "Norwegian Bokmål (Norway)" : "挪威Bokmål语(挪威)", + "Norwegian Bokmål" : "挪威Bokmål语", + "Norwegian Nynorsk (Norway)" : "挪威Nynorsk语(挪威)", + "Norwegian Nynorsk" : "挪威Nynorsk语", + "Nyankole (Uganda)" : "尼扬科勒语(乌干达)", + "Nyankole" : "尼扬科勒语", + "Oriya (India)" : "奥里亚语(印度)", + "Oriya" : "奥里亚语", + "Oromo (Ethiopia)" : "奥罗莫语(埃塞俄比亚)", + "Oromo (Kenya)" : "奥罗莫语(肯尼亚)", + "Oromo" : "奥罗莫语", + "Pashto (Afghanistan)" : "普什图语(阿富汗)", + "Pashto" : "普什图语", + "Persian (Afghanistan)" : "波斯语(阿富汗)", + "Persian (Iran)" : "波斯语(伊朗)", + "Persian" : "波斯语", + "Polish (Poland)" : "波兰语(波兰)", + "Polish" : "波兰语", + "Portuguese (Brazil)" : "葡萄牙语(巴西)", + "Portuguese (Guinea-Bissau)" : "葡萄牙语(几内亚-比绍)", + "Portuguese (Mozambique)" : "葡萄牙语(莫桑比克)", + "Portuguese (Portugal)" : "葡萄牙语(葡萄牙)", + "Portuguese" : "葡萄牙语", + "Punjabi (Arabic)" : "旁遮普语(阿拉伯文)", + "Punjabi (Arabic, Pakistan)" : "旁遮普语(阿拉伯文,巴基斯坦)", + "Punjabi (Gurmukhi)" : "旁遮普语(古尔穆基文)", + "Punjabi (Gurmukhi, India)" : "旁遮普语(古尔穆基文,印度)", + "Punjabi" : "旁遮普语", + "Romanian (Moldova)" : "罗马尼亚语(摩尔多瓦)", + "Romanian (Romania)" : "罗马尼亚语(罗马尼亚)", + "Romanian" : "罗马尼亚语", + "Romansh (Switzerland)" : "罗曼什语(瑞士)", + "Romansh" : "罗曼什语", + "Rombo (Tanzania)" : "龙博语(坦桑尼亚)", + "Rombo" : "龙博语", + "Russian (Moldova)" : "俄语(摩尔多瓦)", + "Russian (Russia)" : "俄语(俄罗斯)", + "Russian (Ukraine)" : "俄语(乌克兰)", + "Russian" : "俄语", + "Rwa (Tanzania)" : "Rwa语(坦桑尼亚)", + "Rwa" : "Rwa语", + "Samburu (Kenya)" : "桑布鲁语(肯尼亚)", + "Samburu" : "桑布鲁语", + "Sango (Central African Republic)" : "桑戈语(中非共和国)", + "Sango" : "桑戈语", + "Sena (Mozambique)" : "塞纳语(莫桑比克)", + "Sena" : "塞纳语", + "Serbian (Cyrillic)" : "塞尔维亚语(西里尔文)", + "Serbian (Cyrillic, Bosnia and Herzegovina)" : "塞尔维亚语(西里尔文,波黑)", + "Serbian (Cyrillic, Montenegro)" : "塞尔维亚语(西里尔文,黑山)", + "Serbian (Cyrillic, Serbia)" : "塞尔维亚语(西里尔文,塞尔维亚)", + "Serbian (Latin)" : "塞尔维亚语(拉丁文)", + "Serbian (Latin, Bosnia and Herzegovina)" : "塞尔维亚语(拉丁文,波黑)", + "Serbian (Latin, Montenegro)" : "塞尔维亚语(拉丁文,黑山)", + "Serbian (Latin, Serbia)" : "塞尔维亚语(拉丁文,塞尔维亚)", + "Serbian" : "塞尔维亚语", + "Shona (Zimbabwe)" : "绍纳语(津巴布韦)", + "Shona" : "绍纳语", + "Sichuan Yi (China)" : "四川彝语(中国)", + "Sichuan Yi" : "四川彝语", + "Sinhala (Sri Lanka)" : "僧伽罗语(斯里兰卡)", + "Sinhala" : "僧伽罗语", + "Slovak (Slovakia)" : "斯洛伐克语(斯洛伐克)", + "Slovak" : "斯洛伐克语", + "Slovenian (Slovenia)" : "斯洛文尼亚语(斯洛文尼亚)", + "Slovenian" : "斯洛文尼亚语", + "Soga (Uganda)" : "索加语(乌干达)", + "Soga" : "索加语", + "Somali (Djibouti)" : "索马里语(吉布提)", + "Somali (Ethiopia)" : "索马里语(埃塞俄比亚)", + "Somali (Kenya)" : "索马里语(肯尼亚)", + "Somali (Somalia)" : "索马里语(索马里)", + "Somali" : "索马里语", + "Spanish (Argentina)" : "西班牙语(阿根廷)", + "Spanish (Bolivia)" : "西班牙语(玻利维亚)", + "Spanish (Chile)" : "西班牙语(智利)", + "Spanish (Colombia)" : "西班牙语(哥伦比亚)", + "Spanish (Costa Rica)" : "西班牙语(哥斯达黎加)", + "Spanish (Dominican Republic)" : "西班牙语(多米尼克共和国)", + "Spanish (Ecuador)" : "西班牙语(厄瓜多尔)", + "Spanish (El Salvador)" : "西班牙语(萨尔瓦多)", + "Spanish (Equatorial Guinea)" : "西班牙语(赤道几内亚)", + "Spanish (Guatemala)" : "西班牙语(危地马拉)", + "Spanish (Honduras)" : "西班牙语(洪都拉斯)", + "Spanish (Latin America)" : "西班牙语(拉丁美洲)", + "Spanish (Mexico)" : "西班牙语(墨西哥)", + "Spanish (Nicaragua)" : "西班牙语(尼加拉瓜)", + "Spanish (Panama)" : "西班牙语(巴拿马)", + "Spanish (Paraguay)" : "西班牙语(巴拉圭)", + "Spanish (Peru)" : "西班牙语(秘鲁)", + "Spanish (Puerto Rico)" : "西班牙语(波多黎各)", + "Spanish (Spain)" : "西班牙语(西班牙)", + "Spanish (United States)" : "西班牙语(美国)", + "Spanish (Uruguay)" : "西班牙语(乌拉圭)", + "Spanish (Venezuela)" : "西班牙语(委内瑞拉)", + "Spanish" : "西班牙语", + "Swahili (Kenya)" : "斯瓦希里语(肯尼亚)", + "Swahili (Tanzania)" : "斯瓦希里语(坦桑尼亚)", + "Swahili" : "斯瓦希里语", + "Swedish (Finland)" : "瑞典语(芬兰)", + "Swedish (Sweden)" : "瑞典语(瑞典)", + "Swedish" : "瑞典语", + "Swiss German (Switzerland)" : "瑞士德语(瑞士)", + "Swiss German" : "瑞士德语", + "Tachelhit (Latin)" : "Tachelhit语(拉丁文)", + "Tachelhit (Latin, Morocco)" : "Tachelhit语(拉丁文,摩洛哥)", + "Tachelhit (Tifinagh)" : "Tachelhit语(提弗纳文)", + "Tachelhit (Tifinagh, Morocco)" : "Tachelhit语(提弗纳文,摩洛哥)", + "Tachelhit" : "Tachelhit语", + "Taita (Kenya)" : "Taita语(肯尼亚)", + "Taita" : "Taita语", + "Tamil (India)" : "泰米尔语 (印度)", + "Tamil (Sri Lanka)" : "泰米尔语(斯里兰卡)", + "Tamil" : "泰米尔语", + "Telugu (India)" : "泰卢固语(印度)", + "Telugu" : "泰卢固语", + "Teso (Kenya)" : "Teso语(肯尼亚)", + "Teso (Uganda)" : "Teso语(乌干达)", + "Teso" : "Teso语", + "Thai (Thailand)" : "泰语(泰国)", + "Thai" : "泰语", + "Tibetan (China)" : "藏语(中国)", + "Tibetan (India)" : "藏语(印度)", + "Tibetan" : "藏语", + "Tigrinya (Eritrea)" : "提格雷语(厄立特里亚)", + "Tigrinya (Ethiopia)" : "提格雷语(埃塞俄比亚)", + "Tigrinya" : "提格雷语", + "Tonga (Tonga)" : "汤加语(汤加)", + "Tonga" : "汤加语", + "Turkish (Turkey)" : "土耳其语(土耳其)", + "Turkish" : "土耳其语", + "Ukrainian (Ukraine)" : "乌克兰语(乌克兰)", + "Ukrainian" : "乌克兰语", + "Urdu (India)" : "乌尔都语(印度)", + "Urdu (Pakistan)" : "乌尔都语(巴基斯坦)", + "Urdu" : "乌尔都语", + "Uzbek (Arabic)" : "乌兹别克语(阿拉伯文)", + "Uzbek (Arabic, Afghanistan)" : "乌兹别克语(阿拉伯文,阿富汗)", + "Uzbek (Cyrillic)" : "乌兹别克语(西里尔文)", + "Uzbek (Cyrillic, Uzbekistan)" : "乌兹别克语(西里尔文,乌兹别克斯坦)", + "Uzbek (Latin)" : "乌兹别克语(拉丁文)", + "Uzbek (Latin, Uzbekistan)" : "乌兹别克语(拉丁文,乌兹别克斯坦)", + "Uzbek" : "乌兹别克语", + "Vietnamese (Vietnam)" : "越南语(越南)", + "Vietnamese" : "越南语", + "Vunjo (Tanzania)" : "Vunjo语(坦桑尼亚)", + "Vunjo" : "Vunjo语", + "Welsh (United Kingdom)" : "威尔士语(英国)", + "Welsh" : "威尔士语", + "Yoruba (Nigeria)" : "约鲁巴语(尼日利亚)", + "Yoruba" : "约鲁巴语", + "Zulu (South Africa)" : "祖鲁语(南非)", + "Zulu" : "祖鲁语", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "两步验证可以对于所有用户和特定组启用。如果没有设置两步验证方式提供者,他们则不能登录到系统。", + "Enforce two-factor authentication" : "强制启用两步验证", + "Limit to groups" : "限制于组", + "Enforcement of two-factor authentication can be set for certain groups only." : "可以仅为某些组设置两步验证的强制执行。", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "两步验证对以下分组的所有成员强制启用。", + "Enforced groups" : "强制群组", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "两步验证不对以下分组的成员强制启用。", + "Excluded groups" : "排除群组", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "当分组被选择/排除时,将使用以下逻辑来确定一个用户是否强制启用两步验证:如果没有选择分组,两步验证将对被排除分组成员外的所有用户启用。如果选择了分组,两步验证将对被选择分组的成员启用。如果一个用户同时属于被选择和被排除分组,被选择分组将拥有优先权,两步验证将对该用户强制启用。", + "Save changes" : "保存修改", + "Marked for remote wipe" : "标记为远程擦除", + "Device settings" : "设备设置", + "Allow filesystem access" : "允许访问文件系统", + "Rename" : "重命名", + "Revoke" : "撤销", + "Wipe device" : "擦除设备", + "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "如果擦除操作还未开始,撤销此令牌可能会妨碍对您设备的擦除操作", + "Internet Explorer" : "IE 浏览器", + "Edge" : "Edge 浏览器", + "Firefox" : "火狐浏览器", + "Google Chrome" : "谷歌浏览器", + "Safari" : "Safari 浏览器", + "Google Chrome for Android" : "安卓版谷歌浏览器", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Nextcloud iOS 应用", + "Nextcloud Android app" : "Nextcloud Android 应用", + "Nextcloud Talk for iOS" : "Nextcloud Talk for iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk for Android", + "Sync client - {os}" : "同步客户端 - {os}", + "This session" : "当前会话", + "Device" : "设备", + "Last activity" : "最后活跃", + "Devices & sessions" : "设备和活动链接", + "Web, desktop and mobile clients currently logged in to your account." : "您账号当前登录的 Web 页面,桌面和移动客户端。", + "Do you really want to wipe your data from this device?" : "您真的要从此设备擦除您的数据吗?", + "Confirm wipe" : "确认擦除", + "Error while creating device token" : "创建设备令牌时出错", + "Error while updating device token scope" : "更新设备令牌范围时出错", + "Error while updating device token name" : "更新设备令牌名称时出错", + "Error while deleting the token" : "删除令牌时出错", + "Error while wiping the device with the token" : "使用令牌擦除设备时出错", + "App name" : "应用名", + "Create new app password" : "创建新应用密码", + "Use the credentials below to configure your app or device." : "使用下述凭据配置您的应用或设备。", + "For security reasons this password will only be shown once." : "由于安全原因,密码仅会显示一次。", + "Username" : "用户名", + "Password" : "密码", + "Done" : "完成", + "Show QR code for mobile apps" : "为移动应用展示QR二维码", + "Copied!" : "已复制!", + "Copy" : "复制", + "Could not copy app password. Please copy it manually." : "无法复制应用密码。请手动复制。", + "This app is supported via your current Nextcloud subscription." : "根据您的Nextcloud订阅,此应用受到支持。", + "Supported" : "受支持", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "官方应用由社区和内部开发。其可以提供核心功能并保证生产用途。", + "Official" : "官方", + "by" : "由", + "Update to {version}" : "更新至 {version}", + "Remove" : "移除", + "Disable" : "禁用", + "All" : "全部", + "Limit app usage to groups" : "限制可使用应用的分组", + "No results" : "没有结果", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "该应用没有指定支持的 Nextcloud 最低版本。可能会在将来出现问题。", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "该应用没有指定支持的 Nextcloud 最高版本。可能会在将来出现问题。", + "This app cannot be installed because the following dependencies are not fulfilled:" : "无法安装应用,因为无法满足下列依赖:", + "View in store" : "在商店中查看", + "Visit website" : "访问网站", + "Report a bug" : "报告问题", + "User documentation" : "用户文档", + "Admin documentation" : "管理员文档", + "Developer documentation" : "开发者文档", + "Update to {update}" : "更新至 {update}", + "Results from other categories" : "来自其他类别的结果", + "No apps found for your version" : "未找到适合当前版本的应用", + "Disable all" : "禁用全部", + "Enable all" : "启用所有", + "Download and enable" : "下载并启用", + "Enable" : "启用", + "Enable untested app" : "启用未经测试的应用", + "The app will be downloaded from the app store" : "该应用将从应用商店下载", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "此应用被标记为与您的Nextcloud版本不兼容。如果您要继续,您仍可安装此应用。请注意此应用可能不会正常工作。", + "You do not have permissions to see the details of this user" : "您没有权限查看该用户的详细信息", + "The backend does not support changing the display name" : "此后端不支持修改显示名称", + "New password" : "新密码", + "Add user in group" : "向群组中添加用户", + "Set user as admin for" : "设置用户为管理员", + "Select user quota" : "选择用户容量限额", + "No language set" : "没有设置语言", + "Never" : "从不", + "Delete user" : "删除用户", + "Wipe all devices" : "擦除所有设备", + "Disable user" : "禁用用户", + "Enable user" : "启用用户", + "Resend welcome email" : "重新发送欢迎邮件", + "{size} used" : "{size} 已使用", + "Welcome mail sent!" : "欢迎邮件已经发送!", + "Display name" : "显示名称", + "Email" : "电子邮件", + "Group admin for" : "分组管理员", + "Quota" : "配额", + "Language" : "语言", + "Storage location" : "存储位置", + "User backend" : "用户来源", + "Last login" : "最后登录", + "Will be autogenerated" : "将自动生成", + "Default language" : "默认语言", + "Add a new user" : "添加新用户", + "No users in here" : "这里没有用户", + "Default quota" : "默认配额", + "Password change is disabled because the master key is disabled" : "密码修改被禁用,因为主密码被禁用", + "Common languages" : "常用语言", + "All languages" : "所有语言", + "Your apps" : "您的应用", + "Active apps" : "已启用的应用", + "Disabled apps" : "已禁用的应用", + "Updates" : "更新", + "App bundles" : "应用软件包", + "{license}-licensed" : "{license}-许可协议", + "New user" : "新建用户", + "Default quota:" : "默认配额:", + "Select default quota" : "选择默认存储限额", + "Show Languages" : "显示语言", + "Show last login" : "显示最后登录", + "Show user backend" : "显示用户来源", + "Show storage path" : "显示存储路径", + "You are about to remove the group {group}. The users will NOT be deleted." : "您正在删除 {group} 组。组中的用户将不会被删除。", + "Please confirm the group removal " : "请确认分组删除", + "Remove group" : "删除分组", + "Admins" : "管理员", + "Disabled users" : "已禁用的用户", + "Everyone" : "所有人", + "Add group" : "添加分组", + "An error occured during the request. Unable to proceed." : "请求期间发生错误。 无法继续。", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "该应用已启用,但是需要更新。5秒后将跳转到更新页面。", + "App update" : "更新应用", + "Error: This app can not be enabled because it makes the server unstable" : "错误:无法启用应用因为它会导致服务器不稳定", + "SSL Root Certificates" : "SSL 根证书", + "Common Name" : "通用名称", + "Valid until" : "有效期至", + "Issued By" : "授权由", + "Valid until %s" : "有效期至 %s", + "Import root certificate" : "导入根证书", + "Administrator documentation" : "管理员文档", + "Documentation" : "文档", + "Forum" : "论坛", + "None" : "无", + "Login" : "登录", + "Plain" : "明文", + "NT LAN Manager" : "NT LAN 管理器", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "电子邮件服务器", + "Open documentation" : "打开文档", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "设置此服务器以能够发送电子邮件(例如密码重置和通知)非常重要。", + "Send mode" : "发送模式", + "Encryption" : "加密", + "Sendmail mode" : "邮件发送模式", + "From address" : "来自地址", + "mail" : "邮件", + "Authentication method" : "认证方法", + "Authentication required" : "需要认证", + "Server address" : "服务器地址", + "Port" : "端口", + "Credentials" : "凭证", + "SMTP Username" : "SMTP 用户名", + "SMTP Password" : "SMTP 密码", + "Save" : "保存", + "Test email settings" : "测试电子邮件设置", + "Send email" : "发送邮件", + "Security & setup warnings" : "安全及设置警告", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "您的每项配置对于实例的安全性和性能都至关重要。 为了帮助您,我们正在做一些自动检查。 有关详细信息,请参阅文档链接。", + "All checks passed." : "所有检查已通过。", + "There are some errors regarding your setup." : "关于您的设置有一些错误。", + "There are some warnings regarding your setup." : "关于您的设置有一些警告。", + "Checking for system and security issues." : "正在检查系统和安全问题。", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "请仔细检查<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">安装指南↗</a>,并检查<a href=\"%2$s\">日志</a>中是否有错误或警告。", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "通过<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">我们的安全检查 ↗</a>检查您 Nextcloud 的安全", + "Version" : "版本", + "Two-Factor Authentication" : "两步验证", + "Server-side encryption" : "服务器端加密", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "服务器端加密可以加密上传到此服务器的文件。这带来了诸如性能损失的限制,因此仅在需要时启用此功能。", + "Enable server-side encryption" : "启用服务器端加密", + "Please read carefully before activating server-side encryption: " : "在激活服务器端加密之前,请仔细阅读:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "一旦加密被启用,之后上传到服务器的所有文件都将服务器上加密。只有当启用状态的加密模块支持解密并且所有前提都满足时(例如:设定恢复密钥)才能解除加密。", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "单独的加密不能保证系统的安全性。请参考加密应用工作原理和支持的用例的文档获取更多信息。", + "Be aware that encryption always increases the file size." : "请注意,加密会增加文件大小。", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "定期备份数据有助于保证数据完整,并且确保备份您的加密数据和加密密钥。", + "This is the final warning: Do you really want to enable encryption?" : "这是最后一次警告:您确定要启用加密?", + "Enable encryption" : "启用加密", + "No encryption module loaded, please enable an encryption module in the app menu." : "没有加载加密模块,请在 APP 应用菜单中启用加密模块。", + "Select default encryption module:" : "选择默认的加密模块:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "您需要从旧版本(ownCloud <= 8.0)迁移您的加密密钥。请在应用中启用 \\\"Default encryption module\\\" 并运行 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "您需要从旧版本(ownCloud<=8.0)迁移您的加密密钥。", + "Start migration" : "开始迁移", + "Background jobs" : "后台任务", + "Last job ran %s." : "上次定时任务执行于:%s。", + "Last job execution ran %s. Something seems wrong." : "上次定时任务执行于:%s。但存在一些问题。", + "Background job didn’t run yet!" : "后台任务当前没有运行!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "为了优化性能,正确配置后台任务非常重要。对于较大的实例,推荐配置为 'Cron'。详情请参考相关文档。", + "Pick background job setting" : "选择后台任务设置", + "Execute one task with each page loaded" : "每个页面加载后执行一个任务", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php注册到 webcron 服务上,每5分钟通过HTTP执行一次cron.php。", + "Use system cron service to call the cron.php file every 5 minutes." : "使用系统定时任务服务每5分钟执行一次cron.php文件。", + "The cron.php needs to be executed by the system user \"%s\"." : "cron.php 需要被系统用户 \"%s\" 执行。", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "为了运行该功能,您需要 PHP posix 扩展。请参考 {linkstart}PHP 文档{linkend} 获取更多信息。", + "Sharing" : "共享", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "作为管理员,您可以调整共享行为。 有关详细信息,请参阅文档。", + "Allow apps to use the Share API" : "允许应用使用共享 API", + "Allow users to share via link" : "允许用户通过链接共享文件", + "Allow public uploads" : "允许公开上传", + "Always ask for a password" : "一直要求输入密码", + "Enforce password protection" : "强制密码保护", + "Set default expiration date" : "设置默认过期日期", + "Expire after " : "过期于", + "days" : "天", + "Enforce expiration date" : "强制过期日期", + "Allow resharing" : "允许二次共享", + "Allow sharing with groups" : "允许群组共享", + "Restrict users to only share with users in their groups" : "限制仅与组内用户共享", + "Exclude groups from sharing" : "在共享中排除组", + "These groups will still be able to receive shares, but not to initiate them." : "这些组将仍可以获取共享,但无法向他人共享。", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "在共享对话框中允许用户名自动完成。 如果被禁用,则需要输入完整的用户名或电子邮件地址。", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "在公开链接上传页中显示免责声明。(仅当文件列表隐藏时显示。)", + "This text will be shown on the public link upload page when the file list is hidden." : "这些内容将在公开链接上传页中当文件列表隐藏时显示。", + "Default share permissions" : "默认共享权限", + "Personal" : "个人", + "Administration" : "管理", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "由 {communityopen}Nextcloud community{linkclose} 开发,{githubopen}源代码{linkclose} 基于 {licenseopen}AGPL{linkclose} 许可协议。", + "Like our Facebook page" : "点赞我们 facebook 页面!", + "Follow us on Twitter" : "在 Twitter 上关注我们!", + "Follow us on Mastodon" : "在Mastodon上关注我们", + "Check out our blog" : "浏览我们的博客!", + "Subscribe to our newsletter" : "订阅我们的最新消息!", + "Profile picture" : "个人头像", + "Upload new" : "上传", + "Select from Files" : "选择文件", + "Remove image" : "删除图片", + "png or jpg, max. 20 MB" : "png 或 jpg 格式,最大 20MB", + "Picture provided by original account" : "初始账号提供的图片", + "Cancel" : "取消", + "Choose as profile picture" : "选择个人头像", + "Details" : "详情", + "You are a member of the following groups:" : "您是以下群组的成员:", + "You are using <strong>%s</strong>" : "您正在使用<strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "您正在使用 <strong>%1$s</strong> ,来自 <strong>%2$s</strong> (<strong>%3$s %%</strong>)", + "Full name" : "全名", + "No display name set" : "不显示名称设置", + "Your email address" : "您的电子邮件", + "No email address set" : "尚未设置 Email 地址", + "For password reset and notifications" : "用于密码重置和通知", + "Phone number" : "电话号码", + "Your phone number" : "您的电话号码", + "Address" : "地址", + "Your postal address" : "您的邮寄地址", + "Website" : "网站", + "It can take up to 24 hours before the account is displayed as verified." : "在帐户显示为验证之前最多可能需要24小时。", + "Link https://…" : "链接 https://…", + "Twitter" : "推特", + "Twitter handle @…" : "推特用户名@…", + "Help translate" : "帮助翻译", + "Locale" : "本地", + "Current password" : "当前密码", + "Change password" : "修改密码", + "Use a second factor besides your password to increase security for your account." : "使用除您密码之外的第二种方法来增强您账号的安全性。", + "Disconnect" : "断开连接", + "Not supported!" : "不支持!", + "Press ⌘-C to copy." : "按 ⌘-C 复制。", + "Press Ctrl-C to copy." : "按 Ctrl-C 复制。", + "Error while loading browser sessions and device tokens" : "加载浏览器会话和设备令牌时出错", + "Store credentials" : "存储凭据", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php 注册到 webcron 服务上,通过 http 每 15 分钟执行 cron.php。", + "Use system cron service to call the cron.php file every 15 minutes." : "使用系统定时任务服务每 15 分钟执行一次 cron.php 文件。", + "Follow us on Google+" : "在 Google+ 上关注我们" +}, +"nplurals=1; plural=0;"); diff --git a/apps/settings/l10n/zh_CN.json b/apps/settings/l10n/zh_CN.json new file mode 100644 index 00000000000..0071dec914e --- /dev/null +++ b/apps/settings/l10n/zh_CN.json @@ -0,0 +1,821 @@ +{ "translations": { + "{actor} added you to group {group}" : "{actor} 将您加入分组 {group}", + "You added {user} to group {group}" : "您将 {user} 加入分组 {group}", + "{actor} added {user} to group {group}" : "{actor} 将 {user} 加入分组 {group}", + "An administrator added you to group {group}" : "一个管理员将您加入分组 {group}", + "An administrator added {user} to group {group}" : "一个管理员将 {user} 加入分组 {group}", + "{actor} removed you from group {group}" : "{actor} 将您从分组 {group} 中移除", + "You removed {user} from group {group}" : "您已将 {user} 从 群组 {group} 中移除", + "{actor} removed {user} from group {group}" : "{actor} 将 {user} 从分组 {group} 中移除", + "An administrator removed you from group {group}" : "一个管理员将你从分组 {group} 中移除", + "An administrator removed {user} from group {group}" : "一个管理员将 {user} 从分组 {group} 中移除", + "Your <strong>group memberships</strong> were modified" : "您的<strong>分组成员关系</strong>已被修改。", + "{actor} changed your password" : "{actor} 已更改您的密码", + "You changed your password" : "您已更改您的密码", + "Your password was reset by an administrator" : "您的密码已被管理员重置", + "{actor} changed your email address" : "{actor} 已更改您的电子邮件地址", + "You changed your email address" : "您已更改您的电子邮件地址", + "Your email address was changed by an administrator" : "您的电子邮件地址已被管理员更改", + "You created app password \"{token}\"" : "您创建了应用密码 \"{token}\"", + "You deleted app password \"{token}\"" : "您删除了应用密码 \"{token}\"", + "You renamed app password \"{token}\" to \"{newToken}\"" : "您将应用密码 \"{token}\" 重命名为 \"{newToken}\"", + "You granted filesystem access to app password \"{token}\"" : "您将文件系统访问权限授予了应用密码 \"{token}\"", + "You revoked filesystem access from app password \"{token}\"" : "您撤销了应用密码 \"{token}\" 的文件系统访问权限", + "Security" : "安全", + "You successfully logged in using two-factor authentication (%1$s)" : "您使用两步验证登录成功(%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "使用两步验证登录失败的尝试 (%1$s)", + "Remote wipe was started on %1$s" : "%1$s上的远程擦除已开始", + "Remote wipe has finished on %1$s" : "%1$s上的远程擦除已完成", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "您的 <strong>密码</strong> 或 <strong>邮箱</strong> 已被更改", + "Couldn't remove app." : "无法删除应用。", + "Couldn't update app." : "无法更新应用。", + "Wrong password" : "密码错误", + "Saved" : "已保存", + "No user supplied" : "没有满足的用户", + "Unable to change password" : "无法修改密码", + "Authentication error" : "认证错误", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "请提供管理员恢复密码,否则所有用户的数据都将丢失。", + "Wrong admin recovery password. Please check the password and try again." : "错误的管理员恢复密码。请检查密码并重试。", + "Backend doesn't support password change, but the user's encryption key was updated." : "后端不支持密码更改,但用户的加密密钥已更新。", + "installing and updating apps via the app store or Federated Cloud Sharing" : "通过应用程序商店或联合云共享安装和更新应用程序", + "Federated Cloud Sharing" : "联合云共享", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL正使用一个过时的%1$s 版本 (%2$s)。请升级您的操作系统,否则像 %3$s 这样的特性将无法可靠地工作。", + "Invalid SMTP password." : "无效的 SMTP 密码", + "Email setting test" : "电子邮件设置测试", + "Well done, %s!" : "已完成,%s!", + "If you received this email, the email configuration seems to be correct." : "如果您收到了这封邮件,电子邮件配置应该就是正确的。", + "Email could not be sent. Check your mail server log" : "邮件无法发送。检查您的邮件服务器日志", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "在发送电子邮件时出现问题。请修正您的设置。(错误:%s)", + "You need to set your user email before being able to send test emails." : "在发送测试邮件前您需要设置您的电子邮件地址。", + "Invalid mail address" : "无效的电子邮件地址", + "Settings saved" : "设置已保存", + "Unable to change full name" : "无法修改全名", + "Unable to change email address" : "无法修改电子邮箱地址", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "为了验证您的 Twitter 帐户,请在 Twitter 上发布以下推文(请确保发布没有任何换行符):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "为了验证您的网站,请将以下内容存储在“.well-known / CloudIdVerificationCode.txt”的网络根目录中(请确保完整的文本在一行中):", + "%1$s changed your password on %2$s." : "%1$s 更改了您在 %2$s 上的密码。", + "Your password on %s was changed." : "您在 %s 上的密码已被更改。", + "Your password on %s was reset by an administrator." : "您在 %s 上的密码已被管理员重置。", + "Password for %1$s changed on %2$s" : "%2$s %1$s 的密码已更改", + "Password changed for %s" : "%s 的密码已更改", + "If you did not request this, please contact an administrator." : "如果这不是您发起的请求,请联系管理员。", + "Your email address on %s was changed." : "您在 %s 上的电子邮件地址已更改。", + "Your email address on %s was changed by an administrator." : "您在 %s 上的电子邮件地址已被管理员修改", + "Email address for %1$s changed on %2$s" : "%2$s 上 %1$s 的电子邮件地址已更改", + "Email address changed for %s" : "%s 的电子邮件地址已更改", + "The new email address is %s" : "新的电子邮件地址是%s", + "Your %s account was created" : "您的 %s 帐户已创建", + "Welcome aboard" : "欢迎使用", + "Welcome aboard %s" : "%s,欢迎使用", + "Welcome to your %s account, you can add, protect, and share your data." : "欢迎使用您的 %s 帐户,您可以添加、保护和共享您的数据。", + "Your username is: %s" : "您的用户名是:%s", + "Set your password" : "设置您的密码", + "Go to %s" : "访问 %s", + "Install Client" : "安装客户端", + "Logged in user must be a subadmin" : "当前登录用户必须为子管理员", + "Create" : "创建", + "Change" : "修改", + "Delete" : "删除", + "Share" : "共享", + "Unlimited" : "无限", + "Verifying" : "正在验证", + "Verifying …" : "正在验证...", + "Verify" : "验证", + "Migration in progress. Please wait until the migration is finished" : "正在进行迁移。请稍等,直到迁移完成", + "Migration started …" : "迁移开始...", + "Not saved" : "未保存", + "Sending…" : "正在发送…", + "Email sent" : "邮件已发送", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "发生错误。请上传 ASCII 编码的 PEM 证书。", + "Valid until {date}" : "有效期至 {date}", + "Local" : "本地", + "Private" : "私有", + "Only visible to local users" : "仅对本地用户可见", + "Only visible to you" : "仅您自己可见", + "Contacts" : "联系人", + "Visible to local users and to trusted servers" : "仅对本地用户和信任的服务器可见", + "Public" : "公开", + "Will be synced to a global and public address book" : "将同步到全局和公开地址簿中", + "Very weak password" : "非常弱的密码", + "Weak password" : "弱密码", + "So-so password" : "一般强度的密码", + "Good password" : "较强的密码", + "Strong password" : "强密码", + "An error occurred while changing your language. Please reload the page and try again." : "修改您的语言时遇到错误。请重新载入页面后再试。", + "An error occurred while changing your locale. Please reload the page and try again." : "修改您的地区时遇到错误。请重新载入页面后再试。", + "Select a profile picture" : "选择个人头像", + "Week starts on {fdow}" : "周开始于 {fdow}", + "Groups" : "分组", + "Group list is empty" : "群组列表为空", + "Unable to retrieve the group list" : "无法获取分组列表", + "Afrikaans (Namibia)" : "南非语(纳米比亚)", + "Afrikaans (South Africa)" : "南非语(南非)", + "Afrikaans" : "南非语", + "Akan (Ghana)" : "阿肯语(加纳)", + "Akan" : "阿肯语", + "Albanian (Albania)" : "阿尔巴尼亚语(阿尔巴尼亚)", + "Albanian" : "阿尔巴尼亚语", + "Amharic (Ethiopia)" : "阿姆哈拉语(埃塞俄比亚)", + "Amharic" : "阿姆哈拉语", + "Arabic (Algeria)" : "阿拉伯语(阿尔及利亚)", + "Arabic (Bahrain)" : "阿拉伯语(巴林)", + "Arabic (Egypt)" : "阿拉伯语(埃及)", + "Arabic (Iraq)" : "阿拉伯语(伊拉克)", + "Arabic (Jordan)" : "阿拉伯语(约旦)", + "Arabic (Kuwait)" : "阿拉伯语(科威特)", + "Arabic (Lebanon)" : "阿拉伯语(黎巴嫩)", + "Arabic (Libya)" : "阿拉伯语(利比亚)", + "Arabic (Morocco)" : "阿拉伯语(摩洛哥)", + "Arabic (Oman)" : "阿拉伯语(阿曼)", + "Arabic (Qatar)" : "阿拉伯语(卡塔尔)", + "Arabic (Saudi Arabia)" : "阿拉伯语(沙特阿拉伯)", + "Arabic (Sudan)" : "阿拉伯语(苏丹)", + "Arabic (Syria)" : "阿拉伯语(叙利亚)", + "Arabic (Tunisia)" : "阿拉伯语(突尼斯)", + "Arabic (United Arab Emirates)" : "阿拉伯语(阿联酋)", + "Arabic (Yemen)" : "阿拉伯语(也门)", + "Arabic" : "阿拉伯语", + "Armenian (Armenia)" : "亚美尼亚语(亚美尼亚)", + "Armenian" : "亚美尼亚", + "Assamese (India)" : "阿萨姆语(印度)", + "Assamese" : "阿萨姆语", + "Asu (Tanzania)" : "阿苏语(坦桑尼亚)", + "Asu" : "阿苏语", + "Azerbaijani (Cyrillic)" : "阿塞拜疆语(西里尔文)", + "Azerbaijani (Cyrillic, Azerbaijan)" : "阿塞拜疆语(西里尔文,阿塞拜疆)", + "Azerbaijani (Latin)" : "阿塞拜疆语(拉丁文)", + "Azerbaijani (Latin, Azerbaijan)" : "阿塞拜疆语(拉丁文,阿塞拜疆)", + "Azerbaijani" : "阿塞拜疆语", + "Bambara (Mali)" : "班巴拉语(马里)", + "Bambara" : "班巴拉语", + "Basque (Spain)" : "巴斯克语(西班牙)", + "Basque" : "巴斯克语", + "Belarusian (Belarus)" : "白俄罗斯语(白俄罗斯)", + "Belarusian" : "白俄罗斯语", + "Bemba (Zambia)" : "本巴语(赞比亚)", + "Bemba" : "本巴语", + "Bena (Tanzania)" : "贝纳语(坦桑尼亚)", + "Bena" : "贝纳语", + "Bengali (Bangladesh)" : "孟加拉语(孟加拉国)", + "Bengali (India)" : "孟加拉语(印度)", + "Bengali" : "孟加拉语", + "Bosnian (Bosnia and Herzegovina)" : "波斯尼亚语(波黑)", + "Bosnian" : "波斯尼亚语", + "Bulgarian (Bulgaria)" : "保加利亚语(保加利亚)", + "Bulgarian" : "保加利亚语", + "Burmese (Myanmar [Burma])" : "缅甸语(缅甸[缅甸])", + "Burmese" : "缅甸语", + "Catalan (Spain)" : "加泰罗尼亚语(西班牙)", + "Catalan" : "加泰罗尼亚语", + "Central Morocco Tamazight (Latin)" : "中摩洛哥柏柏尔语(拉丁文)", + "Central Morocco Tamazight (Latin, Morocco)" : "中摩洛哥柏柏尔语(拉丁文,摩洛哥)", + "Central Morocco Tamazight" : "中摩洛哥柏柏尔语", + "Cherokee (United States)" : "切诺基语(美国)", + "Cherokee" : "切诺基语", + "Chiga (Uganda)" : "奇加语(乌干达)", + "Chiga" : "奇加语", + "Chinese (Simplified Han)" : "中文(简体)", + "Chinese (Simplified Han, China)" : "中文(简体,中国)", + "Chinese (Simplified Han, Hong Kong SAR China)" : "中文(简体,中国香港特别行政区)", + "Chinese (Simplified Han, Macau SAR China)" : "中文(简体,中国澳门特别行政区)", + "Chinese (Simplified Han, Singapore)" : "中文(简体,新加坡)", + "Chinese (Traditional Han)" : "中文(繁体)", + "Chinese (Traditional Han, Hong Kong SAR China)" : "中文(繁体,中国香港特别行政区)", + "Chinese (Traditional Han, Macau SAR China)" : "中文(繁体,中国澳门特别行政区)", + "Chinese (Traditional Han, Taiwan)" : "中文(繁体,台湾)", + "Chinese" : "中文", + "Cornish (United Kingdom)" : "康沃尔语(英国)", + "Cornish" : "康沃尔语", + "Croatian (Croatia)" : "克罗地亚语(克罗地亚)", + "Croatian" : "克罗地亚语", + "Czech (Czech Republic)" : "捷克语(捷克共和国)", + "Czech" : "捷克语", + "Danish (Denmark)" : "丹麦语(丹麦)", + "Danish" : "丹麦语", + "Dutch (Belgium)" : "荷兰语(比利时)", + "Dutch (Netherlands)" : "荷兰语(荷兰)", + "Dutch" : "荷兰语", + "Embu (Kenya)" : "恩布语(肯尼亚)", + "Embu" : "恩布语", + "English (American Samoa)" : "英语(美属萨摩亚)", + "English (Australia)" : "英语(澳大利亚)", + "English (Belgium)" : "英语(比利时)", + "English (Belize)" : "英语(伯利兹)", + "English (Botswana)" : "英语(博茨瓦纳)", + "English (Canada)" : "英语(加拿大)", + "English (Guam)" : "英语(关岛)", + "English (Hong Kong SAR China)" : "英语(中国香港特别行政区)", + "English (India)" : "英语(印度)", + "English (Ireland)" : "英语(爱尔兰)", + "English (Jamaica)" : "英语(牙买加)", + "English (Malta)" : "英语(马耳他)", + "English (Marshall Islands)" : "英语(马绍尔群岛)", + "English (Mauritius)" : "英语(毛里求斯)", + "English (Namibia)" : "英语(纳米比亚)", + "English (New Zealand)" : "英语(新西兰)", + "English (Northern Mariana Islands)" : "英语(北马里亚纳群岛)", + "English (Pakistan)" : "英语(巴基斯坦)", + "English (Philippines)" : "英语(菲律宾)", + "English (Singapore)" : "英语(新加坡)", + "English (South Africa)" : "英语(南非)", + "English (Trinidad and Tobago)" : "英语(特立尼达和多巴哥)", + "English (U.S. Minor Outlying Islands)" : "英语(美国本土外小岛屿)", + "English (U.S. Virgin Islands)" : "英语(美属维尔京群岛)", + "English (United Kingdom)" : "英语(英国)", + "English (United States)" : "英语(美国)", + "English (Zimbabwe)" : "英语(津巴布韦)", + "English" : "英语", + "Esperanto" : "世界语", + "Estonian (Estonia)" : "爱沙尼亚语(爱沙尼亚)", + "Estonian" : "爱沙尼亚语", + "Ewe (Ghana)" : "艾韦语(加纳)", + "Ewe (Togo)" : "艾韦语(多哥)", + "Ewe" : "艾韦语", + "Faroese (Faroe Islands)" : "法罗语(法罗群岛)", + "Faroese" : "法罗语", + "Filipino (Philippines)" : "菲律宾语(菲律宾)", + "Filipino" : "菲律宾语", + "Finnish (Finland)" : "芬兰语(芬兰)", + "Finnish" : "芬兰语", + "French (Belgium)" : "法语(比利时)", + "French (Benin)" : "法语(贝宁)", + "French (Burkina Faso)" : "法语(布基纳法索)", + "French (Burundi)" : "法语(布隆迪)", + "French (Cameroon)" : "法语(喀麦隆)", + "French (Canada)" : "法语(加拿大)", + "French (Central African Republic)" : "法语(中非共和国)", + "French (Chad)" : "法语(乍得)", + "French (Comoros)" : "法语(科摩罗)", + "French (Congo - Brazzaville)" : "法语(刚果-布拉柴维尔)", + "French (Congo - Kinshasa)" : "法语(刚果-金沙萨)", + "French (Côte d’Ivoire)" : "法语(科特迪瓦)", + "French (Djibouti)" : "法语(吉布提)", + "French (Equatorial Guinea)" : "法语(赤道几内亚)", + "French (France)" : "法语(法国)", + "French (Gabon)" : "法语(加蓬)", + "French (Guadeloupe)" : "法语(瓜德罗普)", + "French (Guinea)" : "法语(几内亚)", + "French (Luxembourg)" : "法语(卢森堡)", + "French (Madagascar)" : "法语(马达加斯加)", + "French (Mali)" : "法语(马里)", + "French (Martinique)" : "法语(马提尼克)", + "French (Monaco)" : "法语(摩纳哥)", + "French (Niger)" : "法语(尼日尔)", + "French (Rwanda)" : "法语(卢旺达)", + "French (Réunion)" : "法语(Réunion)", + "French (Saint Barthélemy)" : "法语(圣巴泰勒米)", + "French (Saint Martin)" : "法语(圣马丁)", + "French (Senegal)" : "法语(塞内加尔)", + "French (Switzerland)" : "法语(瑞士)", + "French (Togo)" : "法语(多哥)", + "French" : "法语", + "Fulah (Senegal)" : "富拉语(塞内加尔)", + "Fulah" : "富拉语", + "Galician (Spain)" : "加利西亚语(西班牙)", + "Galician" : "加利西亚语", + "Ganda (Uganda)" : "干达语(乌干达)", + "Ganda" : "干达语", + "Georgian (Georgia)" : "格鲁吉亚语(格鲁吉亚)", + "Georgian" : "格鲁吉亚语", + "German (Austria)" : "德语(奥地利)", + "German (Belgium)" : "德语(比利时)", + "German (Germany)" : "德语(德国)", + "German (Liechtenstein)" : "德语(列支敦士登)", + "German (Luxembourg)" : "德语(卢森堡)", + "German (Switzerland)" : "德语(瑞士)", + "German" : "德语", + "Greek (Cyprus)" : "希腊语(赛浦路斯)", + "Greek (Greece)" : "希腊语(希腊)", + "Greek" : "希腊语", + "Gujarati (India)" : "古吉拉特语(印度)", + "Gujarati" : "古吉拉特语", + "Gusii (Kenya)" : "古斯利语(肯尼亚)", + "Gusii" : "古斯利语", + "Hausa (Latin)" : "豪萨语(拉丁文)", + "Hausa (Latin, Ghana)" : "豪萨语(拉丁文,加纳)", + "Hausa (Latin, Niger)" : "豪萨语(拉丁文,尼日尔)", + "Hausa (Latin, Nigeria)" : "豪萨语(拉丁文,尼日利亚)", + "Hausa" : "豪萨语", + "Hawaiian (United States)" : "夏威夷语(美国)", + "Hawaiian" : "夏威夷语", + "Hebrew (Israel)" : "希伯来语(以色列)", + "Hebrew" : "希伯来语", + "Hindi (India)" : "印地语(印度)", + "Hindi" : "印地语", + "Hungarian (Hungary)" : "匈牙利语(匈牙利)", + "Hungarian" : "匈牙利语", + "Icelandic (Iceland)" : "冰岛语(冰岛)", + "Icelandic" : "冰岛语", + "Igbo (Nigeria)" : "伊博语(尼日利亚)", + "Igbo" : "伊博语", + "Indonesian (Indonesia)" : "印度尼西亚语(印度尼西亚)", + "Indonesian" : "印度尼西亚语", + "Irish (Ireland)" : "爱尔兰语(爱尔兰)", + "Irish" : "爱尔兰语", + "Italian (Italy)" : "意大利语(意大利)", + "Italian (Switzerland)" : "意大利语(瑞士)", + "Italian" : "意大利语", + "Japanese (Japan)" : "日语(日本)", + "Japanese" : "日语", + "Kabuverdianu (Cape Verde)" : "Kabuverdianu语(佛得角)", + "Kabuverdianu" : "Kabuverdianu语", + "Kabyle (Algeria)" : "卡拜尔语(阿尔及利亚)", + "Kabyle" : "卡拜尔语", + "Kalaallisut (Greenland)" : "格陵兰语(格陵兰)", + "Kalaallisut" : "格陵兰语", + "Kalenjin (Kenya)" : "卡伦津语(肯尼亚)", + "Kalenjin" : "卡伦津语", + "Kamba (Kenya)" : "坎巴语(肯尼亚)", + "Kamba" : "坎巴语", + "Kannada (India)" : "坎纳德语(印度)", + "Kannada" : "坎纳德语", + "Kazakh (Cyrillic)" : "哈萨克语(西里尔文)", + "Kazakh (Cyrillic, Kazakhstan)" : "哈萨克语(西里尔文,哈萨克斯坦)", + "Kazakh" : "哈萨克语", + "Khmer (Cambodia)" : "高棉语(柬埔寨)", + "Khmer" : "高棉语", + "Kikuyu (Kenya)" : "基库尤语(肯尼亚)", + "Kikuyu" : "基库尤语", + "Kinyarwanda (Rwanda)" : "卢旺达语(卢旺达)", + "Kinyarwanda" : "卢旺达语", + "Konkani (India)" : "孔卡尼语(印度)", + "Konkani" : "孔卡尼语", + "Korean (South Korea)" : "朝鲜语(南朝鲜)", + "Korean" : "朝鲜语", + "Koyra Chiini (Mali)" : "Koyra Chiini语(马里)", + "Koyra Chiini" : "Koyra Chiini语", + "Koyraboro Senni (Mali)" : "Koyraboro Senni语(马里)", + "Koyraboro Senni" : "Koyraboro Senni语", + "Langi (Tanzania)" : "兰吉语(坦桑尼亚)", + "Langi" : "兰吉语", + "Latvian (Latvia)" : "拉脱维亚语(拉脱维亚)", + "Latvian" : "拉脱维亚语", + "Lithuanian (Lithuania)" : "立陶宛语(立陶宛)", + "Lithuanian" : "立陶宛语", + "Luo (Kenya)" : "罗语(肯尼亚)", + "Luo" : "罗语", + "Luyia (Kenya)" : "Luyia语(肯尼亚)", + "Luyia" : "Luyia语", + "Macedonian (Macedonia)" : "马其顿语(马其顿)", + "Macedonian" : "马其顿语", + "Machame (Tanzania)" : "Machame语(坦桑尼亚)", + "Machame" : "Machame语", + "Makonde (Tanzania)" : "马孔达语(坦桑尼亚)", + "Makonde" : "马孔达语", + "Malagasy (Madagascar)" : "马尔加什语(马达加斯加)", + "Malagasy" : "马尔加什语", + "Malay (Brunei)" : "马来语(文莱)", + "Malay (Malaysia)" : "马来语(马来西亚)", + "Malay" : "马来语", + "Malayalam (India)" : "Malayalam语(印度)", + "Malayalam" : "Malayalam语", + "Maltese (Malta)" : "马耳他语(马耳他)", + "Maltese" : "马耳他语", + "Manx (United Kingdom)" : "曼克斯语(英国)", + "Manx" : "曼克斯语", + "Marathi (India)" : "马拉地语(印度)", + "Marathi" : "马拉地语", + "Masai (Kenya)" : "马赛语(肯尼亚)", + "Masai (Tanzania)" : "马赛语(坦桑尼亚)", + "Masai" : "马赛语", + "Meru (Kenya)" : "梅鲁语(肯尼亚)", + "Meru" : "梅鲁语", + "Morisyen (Mauritius)" : "Morisyen语(毛里求斯)", + "Morisyen" : "Morisyen语", + "Nama (Namibia)" : "那马语(纳米比亚)", + "Nama" : "那马语", + "Nepali (India)" : "尼泊尔语(印度)", + "Nepali (Nepal)" : "尼泊尔语(尼泊尔)", + "Nepali" : "尼泊尔语", + "North Ndebele (Zimbabwe)" : "北恩德贝勒语(津巴布韦)", + "North Ndebele" : "北恩德贝勒语", + "Norwegian Bokmål (Norway)" : "挪威Bokmål语(挪威)", + "Norwegian Bokmål" : "挪威Bokmål语", + "Norwegian Nynorsk (Norway)" : "挪威Nynorsk语(挪威)", + "Norwegian Nynorsk" : "挪威Nynorsk语", + "Nyankole (Uganda)" : "尼扬科勒语(乌干达)", + "Nyankole" : "尼扬科勒语", + "Oriya (India)" : "奥里亚语(印度)", + "Oriya" : "奥里亚语", + "Oromo (Ethiopia)" : "奥罗莫语(埃塞俄比亚)", + "Oromo (Kenya)" : "奥罗莫语(肯尼亚)", + "Oromo" : "奥罗莫语", + "Pashto (Afghanistan)" : "普什图语(阿富汗)", + "Pashto" : "普什图语", + "Persian (Afghanistan)" : "波斯语(阿富汗)", + "Persian (Iran)" : "波斯语(伊朗)", + "Persian" : "波斯语", + "Polish (Poland)" : "波兰语(波兰)", + "Polish" : "波兰语", + "Portuguese (Brazil)" : "葡萄牙语(巴西)", + "Portuguese (Guinea-Bissau)" : "葡萄牙语(几内亚-比绍)", + "Portuguese (Mozambique)" : "葡萄牙语(莫桑比克)", + "Portuguese (Portugal)" : "葡萄牙语(葡萄牙)", + "Portuguese" : "葡萄牙语", + "Punjabi (Arabic)" : "旁遮普语(阿拉伯文)", + "Punjabi (Arabic, Pakistan)" : "旁遮普语(阿拉伯文,巴基斯坦)", + "Punjabi (Gurmukhi)" : "旁遮普语(古尔穆基文)", + "Punjabi (Gurmukhi, India)" : "旁遮普语(古尔穆基文,印度)", + "Punjabi" : "旁遮普语", + "Romanian (Moldova)" : "罗马尼亚语(摩尔多瓦)", + "Romanian (Romania)" : "罗马尼亚语(罗马尼亚)", + "Romanian" : "罗马尼亚语", + "Romansh (Switzerland)" : "罗曼什语(瑞士)", + "Romansh" : "罗曼什语", + "Rombo (Tanzania)" : "龙博语(坦桑尼亚)", + "Rombo" : "龙博语", + "Russian (Moldova)" : "俄语(摩尔多瓦)", + "Russian (Russia)" : "俄语(俄罗斯)", + "Russian (Ukraine)" : "俄语(乌克兰)", + "Russian" : "俄语", + "Rwa (Tanzania)" : "Rwa语(坦桑尼亚)", + "Rwa" : "Rwa语", + "Samburu (Kenya)" : "桑布鲁语(肯尼亚)", + "Samburu" : "桑布鲁语", + "Sango (Central African Republic)" : "桑戈语(中非共和国)", + "Sango" : "桑戈语", + "Sena (Mozambique)" : "塞纳语(莫桑比克)", + "Sena" : "塞纳语", + "Serbian (Cyrillic)" : "塞尔维亚语(西里尔文)", + "Serbian (Cyrillic, Bosnia and Herzegovina)" : "塞尔维亚语(西里尔文,波黑)", + "Serbian (Cyrillic, Montenegro)" : "塞尔维亚语(西里尔文,黑山)", + "Serbian (Cyrillic, Serbia)" : "塞尔维亚语(西里尔文,塞尔维亚)", + "Serbian (Latin)" : "塞尔维亚语(拉丁文)", + "Serbian (Latin, Bosnia and Herzegovina)" : "塞尔维亚语(拉丁文,波黑)", + "Serbian (Latin, Montenegro)" : "塞尔维亚语(拉丁文,黑山)", + "Serbian (Latin, Serbia)" : "塞尔维亚语(拉丁文,塞尔维亚)", + "Serbian" : "塞尔维亚语", + "Shona (Zimbabwe)" : "绍纳语(津巴布韦)", + "Shona" : "绍纳语", + "Sichuan Yi (China)" : "四川彝语(中国)", + "Sichuan Yi" : "四川彝语", + "Sinhala (Sri Lanka)" : "僧伽罗语(斯里兰卡)", + "Sinhala" : "僧伽罗语", + "Slovak (Slovakia)" : "斯洛伐克语(斯洛伐克)", + "Slovak" : "斯洛伐克语", + "Slovenian (Slovenia)" : "斯洛文尼亚语(斯洛文尼亚)", + "Slovenian" : "斯洛文尼亚语", + "Soga (Uganda)" : "索加语(乌干达)", + "Soga" : "索加语", + "Somali (Djibouti)" : "索马里语(吉布提)", + "Somali (Ethiopia)" : "索马里语(埃塞俄比亚)", + "Somali (Kenya)" : "索马里语(肯尼亚)", + "Somali (Somalia)" : "索马里语(索马里)", + "Somali" : "索马里语", + "Spanish (Argentina)" : "西班牙语(阿根廷)", + "Spanish (Bolivia)" : "西班牙语(玻利维亚)", + "Spanish (Chile)" : "西班牙语(智利)", + "Spanish (Colombia)" : "西班牙语(哥伦比亚)", + "Spanish (Costa Rica)" : "西班牙语(哥斯达黎加)", + "Spanish (Dominican Republic)" : "西班牙语(多米尼克共和国)", + "Spanish (Ecuador)" : "西班牙语(厄瓜多尔)", + "Spanish (El Salvador)" : "西班牙语(萨尔瓦多)", + "Spanish (Equatorial Guinea)" : "西班牙语(赤道几内亚)", + "Spanish (Guatemala)" : "西班牙语(危地马拉)", + "Spanish (Honduras)" : "西班牙语(洪都拉斯)", + "Spanish (Latin America)" : "西班牙语(拉丁美洲)", + "Spanish (Mexico)" : "西班牙语(墨西哥)", + "Spanish (Nicaragua)" : "西班牙语(尼加拉瓜)", + "Spanish (Panama)" : "西班牙语(巴拿马)", + "Spanish (Paraguay)" : "西班牙语(巴拉圭)", + "Spanish (Peru)" : "西班牙语(秘鲁)", + "Spanish (Puerto Rico)" : "西班牙语(波多黎各)", + "Spanish (Spain)" : "西班牙语(西班牙)", + "Spanish (United States)" : "西班牙语(美国)", + "Spanish (Uruguay)" : "西班牙语(乌拉圭)", + "Spanish (Venezuela)" : "西班牙语(委内瑞拉)", + "Spanish" : "西班牙语", + "Swahili (Kenya)" : "斯瓦希里语(肯尼亚)", + "Swahili (Tanzania)" : "斯瓦希里语(坦桑尼亚)", + "Swahili" : "斯瓦希里语", + "Swedish (Finland)" : "瑞典语(芬兰)", + "Swedish (Sweden)" : "瑞典语(瑞典)", + "Swedish" : "瑞典语", + "Swiss German (Switzerland)" : "瑞士德语(瑞士)", + "Swiss German" : "瑞士德语", + "Tachelhit (Latin)" : "Tachelhit语(拉丁文)", + "Tachelhit (Latin, Morocco)" : "Tachelhit语(拉丁文,摩洛哥)", + "Tachelhit (Tifinagh)" : "Tachelhit语(提弗纳文)", + "Tachelhit (Tifinagh, Morocco)" : "Tachelhit语(提弗纳文,摩洛哥)", + "Tachelhit" : "Tachelhit语", + "Taita (Kenya)" : "Taita语(肯尼亚)", + "Taita" : "Taita语", + "Tamil (India)" : "泰米尔语 (印度)", + "Tamil (Sri Lanka)" : "泰米尔语(斯里兰卡)", + "Tamil" : "泰米尔语", + "Telugu (India)" : "泰卢固语(印度)", + "Telugu" : "泰卢固语", + "Teso (Kenya)" : "Teso语(肯尼亚)", + "Teso (Uganda)" : "Teso语(乌干达)", + "Teso" : "Teso语", + "Thai (Thailand)" : "泰语(泰国)", + "Thai" : "泰语", + "Tibetan (China)" : "藏语(中国)", + "Tibetan (India)" : "藏语(印度)", + "Tibetan" : "藏语", + "Tigrinya (Eritrea)" : "提格雷语(厄立特里亚)", + "Tigrinya (Ethiopia)" : "提格雷语(埃塞俄比亚)", + "Tigrinya" : "提格雷语", + "Tonga (Tonga)" : "汤加语(汤加)", + "Tonga" : "汤加语", + "Turkish (Turkey)" : "土耳其语(土耳其)", + "Turkish" : "土耳其语", + "Ukrainian (Ukraine)" : "乌克兰语(乌克兰)", + "Ukrainian" : "乌克兰语", + "Urdu (India)" : "乌尔都语(印度)", + "Urdu (Pakistan)" : "乌尔都语(巴基斯坦)", + "Urdu" : "乌尔都语", + "Uzbek (Arabic)" : "乌兹别克语(阿拉伯文)", + "Uzbek (Arabic, Afghanistan)" : "乌兹别克语(阿拉伯文,阿富汗)", + "Uzbek (Cyrillic)" : "乌兹别克语(西里尔文)", + "Uzbek (Cyrillic, Uzbekistan)" : "乌兹别克语(西里尔文,乌兹别克斯坦)", + "Uzbek (Latin)" : "乌兹别克语(拉丁文)", + "Uzbek (Latin, Uzbekistan)" : "乌兹别克语(拉丁文,乌兹别克斯坦)", + "Uzbek" : "乌兹别克语", + "Vietnamese (Vietnam)" : "越南语(越南)", + "Vietnamese" : "越南语", + "Vunjo (Tanzania)" : "Vunjo语(坦桑尼亚)", + "Vunjo" : "Vunjo语", + "Welsh (United Kingdom)" : "威尔士语(英国)", + "Welsh" : "威尔士语", + "Yoruba (Nigeria)" : "约鲁巴语(尼日利亚)", + "Yoruba" : "约鲁巴语", + "Zulu (South Africa)" : "祖鲁语(南非)", + "Zulu" : "祖鲁语", + "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "两步验证可以对于所有用户和特定组启用。如果没有设置两步验证方式提供者,他们则不能登录到系统。", + "Enforce two-factor authentication" : "强制启用两步验证", + "Limit to groups" : "限制于组", + "Enforcement of two-factor authentication can be set for certain groups only." : "可以仅为某些组设置两步验证的强制执行。", + "Two-factor authentication is enforced for all\tmembers of the following groups." : "两步验证对以下分组的所有成员强制启用。", + "Enforced groups" : "强制群组", + "Two-factor authentication is not enforced for\tmembers of the following groups." : "两步验证不对以下分组的成员强制启用。", + "Excluded groups" : "排除群组", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "当分组被选择/排除时,将使用以下逻辑来确定一个用户是否强制启用两步验证:如果没有选择分组,两步验证将对被排除分组成员外的所有用户启用。如果选择了分组,两步验证将对被选择分组的成员启用。如果一个用户同时属于被选择和被排除分组,被选择分组将拥有优先权,两步验证将对该用户强制启用。", + "Save changes" : "保存修改", + "Marked for remote wipe" : "标记为远程擦除", + "Device settings" : "设备设置", + "Allow filesystem access" : "允许访问文件系统", + "Rename" : "重命名", + "Revoke" : "撤销", + "Wipe device" : "擦除设备", + "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "如果擦除操作还未开始,撤销此令牌可能会妨碍对您设备的擦除操作", + "Internet Explorer" : "IE 浏览器", + "Edge" : "Edge 浏览器", + "Firefox" : "火狐浏览器", + "Google Chrome" : "谷歌浏览器", + "Safari" : "Safari 浏览器", + "Google Chrome for Android" : "安卓版谷歌浏览器", + "iPhone" : "iPhone", + "iPad" : "iPad", + "Nextcloud iOS app" : "Nextcloud iOS 应用", + "Nextcloud Android app" : "Nextcloud Android 应用", + "Nextcloud Talk for iOS" : "Nextcloud Talk for iOS", + "Nextcloud Talk for Android" : "Nextcloud Talk for Android", + "Sync client - {os}" : "同步客户端 - {os}", + "This session" : "当前会话", + "Device" : "设备", + "Last activity" : "最后活跃", + "Devices & sessions" : "设备和活动链接", + "Web, desktop and mobile clients currently logged in to your account." : "您账号当前登录的 Web 页面,桌面和移动客户端。", + "Do you really want to wipe your data from this device?" : "您真的要从此设备擦除您的数据吗?", + "Confirm wipe" : "确认擦除", + "Error while creating device token" : "创建设备令牌时出错", + "Error while updating device token scope" : "更新设备令牌范围时出错", + "Error while updating device token name" : "更新设备令牌名称时出错", + "Error while deleting the token" : "删除令牌时出错", + "Error while wiping the device with the token" : "使用令牌擦除设备时出错", + "App name" : "应用名", + "Create new app password" : "创建新应用密码", + "Use the credentials below to configure your app or device." : "使用下述凭据配置您的应用或设备。", + "For security reasons this password will only be shown once." : "由于安全原因,密码仅会显示一次。", + "Username" : "用户名", + "Password" : "密码", + "Done" : "完成", + "Show QR code for mobile apps" : "为移动应用展示QR二维码", + "Copied!" : "已复制!", + "Copy" : "复制", + "Could not copy app password. Please copy it manually." : "无法复制应用密码。请手动复制。", + "This app is supported via your current Nextcloud subscription." : "根据您的Nextcloud订阅,此应用受到支持。", + "Supported" : "受支持", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "官方应用由社区和内部开发。其可以提供核心功能并保证生产用途。", + "Official" : "官方", + "by" : "由", + "Update to {version}" : "更新至 {version}", + "Remove" : "移除", + "Disable" : "禁用", + "All" : "全部", + "Limit app usage to groups" : "限制可使用应用的分组", + "No results" : "没有结果", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "该应用没有指定支持的 Nextcloud 最低版本。可能会在将来出现问题。", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "该应用没有指定支持的 Nextcloud 最高版本。可能会在将来出现问题。", + "This app cannot be installed because the following dependencies are not fulfilled:" : "无法安装应用,因为无法满足下列依赖:", + "View in store" : "在商店中查看", + "Visit website" : "访问网站", + "Report a bug" : "报告问题", + "User documentation" : "用户文档", + "Admin documentation" : "管理员文档", + "Developer documentation" : "开发者文档", + "Update to {update}" : "更新至 {update}", + "Results from other categories" : "来自其他类别的结果", + "No apps found for your version" : "未找到适合当前版本的应用", + "Disable all" : "禁用全部", + "Enable all" : "启用所有", + "Download and enable" : "下载并启用", + "Enable" : "启用", + "Enable untested app" : "启用未经测试的应用", + "The app will be downloaded from the app store" : "该应用将从应用商店下载", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "此应用被标记为与您的Nextcloud版本不兼容。如果您要继续,您仍可安装此应用。请注意此应用可能不会正常工作。", + "You do not have permissions to see the details of this user" : "您没有权限查看该用户的详细信息", + "The backend does not support changing the display name" : "此后端不支持修改显示名称", + "New password" : "新密码", + "Add user in group" : "向群组中添加用户", + "Set user as admin for" : "设置用户为管理员", + "Select user quota" : "选择用户容量限额", + "No language set" : "没有设置语言", + "Never" : "从不", + "Delete user" : "删除用户", + "Wipe all devices" : "擦除所有设备", + "Disable user" : "禁用用户", + "Enable user" : "启用用户", + "Resend welcome email" : "重新发送欢迎邮件", + "{size} used" : "{size} 已使用", + "Welcome mail sent!" : "欢迎邮件已经发送!", + "Display name" : "显示名称", + "Email" : "电子邮件", + "Group admin for" : "分组管理员", + "Quota" : "配额", + "Language" : "语言", + "Storage location" : "存储位置", + "User backend" : "用户来源", + "Last login" : "最后登录", + "Will be autogenerated" : "将自动生成", + "Default language" : "默认语言", + "Add a new user" : "添加新用户", + "No users in here" : "这里没有用户", + "Default quota" : "默认配额", + "Password change is disabled because the master key is disabled" : "密码修改被禁用,因为主密码被禁用", + "Common languages" : "常用语言", + "All languages" : "所有语言", + "Your apps" : "您的应用", + "Active apps" : "已启用的应用", + "Disabled apps" : "已禁用的应用", + "Updates" : "更新", + "App bundles" : "应用软件包", + "{license}-licensed" : "{license}-许可协议", + "New user" : "新建用户", + "Default quota:" : "默认配额:", + "Select default quota" : "选择默认存储限额", + "Show Languages" : "显示语言", + "Show last login" : "显示最后登录", + "Show user backend" : "显示用户来源", + "Show storage path" : "显示存储路径", + "You are about to remove the group {group}. The users will NOT be deleted." : "您正在删除 {group} 组。组中的用户将不会被删除。", + "Please confirm the group removal " : "请确认分组删除", + "Remove group" : "删除分组", + "Admins" : "管理员", + "Disabled users" : "已禁用的用户", + "Everyone" : "所有人", + "Add group" : "添加分组", + "An error occured during the request. Unable to proceed." : "请求期间发生错误。 无法继续。", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "该应用已启用,但是需要更新。5秒后将跳转到更新页面。", + "App update" : "更新应用", + "Error: This app can not be enabled because it makes the server unstable" : "错误:无法启用应用因为它会导致服务器不稳定", + "SSL Root Certificates" : "SSL 根证书", + "Common Name" : "通用名称", + "Valid until" : "有效期至", + "Issued By" : "授权由", + "Valid until %s" : "有效期至 %s", + "Import root certificate" : "导入根证书", + "Administrator documentation" : "管理员文档", + "Documentation" : "文档", + "Forum" : "论坛", + "None" : "无", + "Login" : "登录", + "Plain" : "明文", + "NT LAN Manager" : "NT LAN 管理器", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "电子邮件服务器", + "Open documentation" : "打开文档", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "设置此服务器以能够发送电子邮件(例如密码重置和通知)非常重要。", + "Send mode" : "发送模式", + "Encryption" : "加密", + "Sendmail mode" : "邮件发送模式", + "From address" : "来自地址", + "mail" : "邮件", + "Authentication method" : "认证方法", + "Authentication required" : "需要认证", + "Server address" : "服务器地址", + "Port" : "端口", + "Credentials" : "凭证", + "SMTP Username" : "SMTP 用户名", + "SMTP Password" : "SMTP 密码", + "Save" : "保存", + "Test email settings" : "测试电子邮件设置", + "Send email" : "发送邮件", + "Security & setup warnings" : "安全及设置警告", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "您的每项配置对于实例的安全性和性能都至关重要。 为了帮助您,我们正在做一些自动检查。 有关详细信息,请参阅文档链接。", + "All checks passed." : "所有检查已通过。", + "There are some errors regarding your setup." : "关于您的设置有一些错误。", + "There are some warnings regarding your setup." : "关于您的设置有一些警告。", + "Checking for system and security issues." : "正在检查系统和安全问题。", + "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "请仔细检查<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">安装指南↗</a>,并检查<a href=\"%2$s\">日志</a>中是否有错误或警告。", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "通过<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">我们的安全检查 ↗</a>检查您 Nextcloud 的安全", + "Version" : "版本", + "Two-Factor Authentication" : "两步验证", + "Server-side encryption" : "服务器端加密", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "服务器端加密可以加密上传到此服务器的文件。这带来了诸如性能损失的限制,因此仅在需要时启用此功能。", + "Enable server-side encryption" : "启用服务器端加密", + "Please read carefully before activating server-side encryption: " : "在激活服务器端加密之前,请仔细阅读:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "一旦加密被启用,之后上传到服务器的所有文件都将服务器上加密。只有当启用状态的加密模块支持解密并且所有前提都满足时(例如:设定恢复密钥)才能解除加密。", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "单独的加密不能保证系统的安全性。请参考加密应用工作原理和支持的用例的文档获取更多信息。", + "Be aware that encryption always increases the file size." : "请注意,加密会增加文件大小。", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "定期备份数据有助于保证数据完整,并且确保备份您的加密数据和加密密钥。", + "This is the final warning: Do you really want to enable encryption?" : "这是最后一次警告:您确定要启用加密?", + "Enable encryption" : "启用加密", + "No encryption module loaded, please enable an encryption module in the app menu." : "没有加载加密模块,请在 APP 应用菜单中启用加密模块。", + "Select default encryption module:" : "选择默认的加密模块:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "您需要从旧版本(ownCloud <= 8.0)迁移您的加密密钥。请在应用中启用 \\\"Default encryption module\\\" 并运行 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "您需要从旧版本(ownCloud<=8.0)迁移您的加密密钥。", + "Start migration" : "开始迁移", + "Background jobs" : "后台任务", + "Last job ran %s." : "上次定时任务执行于:%s。", + "Last job execution ran %s. Something seems wrong." : "上次定时任务执行于:%s。但存在一些问题。", + "Background job didn’t run yet!" : "后台任务当前没有运行!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "为了优化性能,正确配置后台任务非常重要。对于较大的实例,推荐配置为 'Cron'。详情请参考相关文档。", + "Pick background job setting" : "选择后台任务设置", + "Execute one task with each page loaded" : "每个页面加载后执行一个任务", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP." : "cron.php注册到 webcron 服务上,每5分钟通过HTTP执行一次cron.php。", + "Use system cron service to call the cron.php file every 5 minutes." : "使用系统定时任务服务每5分钟执行一次cron.php文件。", + "The cron.php needs to be executed by the system user \"%s\"." : "cron.php 需要被系统用户 \"%s\" 执行。", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "为了运行该功能,您需要 PHP posix 扩展。请参考 {linkstart}PHP 文档{linkend} 获取更多信息。", + "Sharing" : "共享", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "作为管理员,您可以调整共享行为。 有关详细信息,请参阅文档。", + "Allow apps to use the Share API" : "允许应用使用共享 API", + "Allow users to share via link" : "允许用户通过链接共享文件", + "Allow public uploads" : "允许公开上传", + "Always ask for a password" : "一直要求输入密码", + "Enforce password protection" : "强制密码保护", + "Set default expiration date" : "设置默认过期日期", + "Expire after " : "过期于", + "days" : "天", + "Enforce expiration date" : "强制过期日期", + "Allow resharing" : "允许二次共享", + "Allow sharing with groups" : "允许群组共享", + "Restrict users to only share with users in their groups" : "限制仅与组内用户共享", + "Exclude groups from sharing" : "在共享中排除组", + "These groups will still be able to receive shares, but not to initiate them." : "这些组将仍可以获取共享,但无法向他人共享。", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "在共享对话框中允许用户名自动完成。 如果被禁用,则需要输入完整的用户名或电子邮件地址。", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "在公开链接上传页中显示免责声明。(仅当文件列表隐藏时显示。)", + "This text will be shown on the public link upload page when the file list is hidden." : "这些内容将在公开链接上传页中当文件列表隐藏时显示。", + "Default share permissions" : "默认共享权限", + "Personal" : "个人", + "Administration" : "管理", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "由 {communityopen}Nextcloud community{linkclose} 开发,{githubopen}源代码{linkclose} 基于 {licenseopen}AGPL{linkclose} 许可协议。", + "Like our Facebook page" : "点赞我们 facebook 页面!", + "Follow us on Twitter" : "在 Twitter 上关注我们!", + "Follow us on Mastodon" : "在Mastodon上关注我们", + "Check out our blog" : "浏览我们的博客!", + "Subscribe to our newsletter" : "订阅我们的最新消息!", + "Profile picture" : "个人头像", + "Upload new" : "上传", + "Select from Files" : "选择文件", + "Remove image" : "删除图片", + "png or jpg, max. 20 MB" : "png 或 jpg 格式,最大 20MB", + "Picture provided by original account" : "初始账号提供的图片", + "Cancel" : "取消", + "Choose as profile picture" : "选择个人头像", + "Details" : "详情", + "You are a member of the following groups:" : "您是以下群组的成员:", + "You are using <strong>%s</strong>" : "您正在使用<strong>%s</strong>", + "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "您正在使用 <strong>%1$s</strong> ,来自 <strong>%2$s</strong> (<strong>%3$s %%</strong>)", + "Full name" : "全名", + "No display name set" : "不显示名称设置", + "Your email address" : "您的电子邮件", + "No email address set" : "尚未设置 Email 地址", + "For password reset and notifications" : "用于密码重置和通知", + "Phone number" : "电话号码", + "Your phone number" : "您的电话号码", + "Address" : "地址", + "Your postal address" : "您的邮寄地址", + "Website" : "网站", + "It can take up to 24 hours before the account is displayed as verified." : "在帐户显示为验证之前最多可能需要24小时。", + "Link https://…" : "链接 https://…", + "Twitter" : "推特", + "Twitter handle @…" : "推特用户名@…", + "Help translate" : "帮助翻译", + "Locale" : "本地", + "Current password" : "当前密码", + "Change password" : "修改密码", + "Use a second factor besides your password to increase security for your account." : "使用除您密码之外的第二种方法来增强您账号的安全性。", + "Disconnect" : "断开连接", + "Not supported!" : "不支持!", + "Press ⌘-C to copy." : "按 ⌘-C 复制。", + "Press Ctrl-C to copy." : "按 Ctrl-C 复制。", + "Error while loading browser sessions and device tokens" : "加载浏览器会话和设备令牌时出错", + "Store credentials" : "存储凭据", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php 注册到 webcron 服务上,通过 http 每 15 分钟执行 cron.php。", + "Use system cron service to call the cron.php file every 15 minutes." : "使用系统定时任务服务每 15 分钟执行一次 cron.php 文件。", + "Follow us on Google+" : "在 Google+ 上关注我们" +},"pluralForm" :"nplurals=1; plural=0;" +} \ No newline at end of file diff --git a/apps/settings/l10n/zh_TW.js b/apps/settings/l10n/zh_TW.js new file mode 100644 index 00000000000..78e84c784bb --- /dev/null +++ b/apps/settings/l10n/zh_TW.js @@ -0,0 +1,257 @@ +OC.L10N.register( + "settings", + { + "{actor} removed you from group {group}" : "{actor} 將你從 {group} 群組中移除", + "{actor} changed your password" : "{actor} 變更了您的密碼", + "You changed your password" : "您已變更您的密碼", + "Your password was reset by an administrator" : "您的密碼已被管理員重設", + "{actor} changed your email address" : "{actor} 變更了您的電子郵件地址", + "You changed your email address" : "您已更改您的電子郵件地址", + "Your email address was changed by an administrator" : "您的電子郵件已被管理員變更", + "Security" : "安全性", + "You successfully logged in using two-factor authentication (%1$s)" : "你已成功使用兩步驟驗證進行登入 (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "使用兩步驟驗證登入失敗 (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "你的 <strong>密碼</strong> 或 <strong>email</strong> 已更動。", + "Couldn't remove app." : "無法移除應用程式", + "Couldn't update app." : "無法更新應用程式", + "Wrong password" : "密碼錯誤", + "Saved" : "已儲存", + "No user supplied" : "未提供使用者", + "Unable to change password" : "無法修改密碼", + "Authentication error" : "認證錯誤", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "請提供一個admin管理者恢復密碼,否則將會失去所有使用者資料。", + "Wrong admin recovery password. Please check the password and try again." : "錯誤的管理者還原密碼", + "Backend doesn't support password change, but the user's encryption key was updated." : "使用者資料後端不支援變更密碼,但使用者的加密金鑰已經更新。", + "installing and updating apps via the app store or Federated Cloud Sharing" : "透過應用程式中心或是聯盟式雲端分享來安裝、更新應用程式", + "Federated Cloud Sharing" : "聯盟式雲端分享", + "Invalid SMTP password." : "無效的 SMTP 密碼", + "Email setting test" : "測試郵件設定", + "Well done, %s!" : "太棒了, %s!", + "If you received this email, the email configuration seems to be correct." : "如果你收到這封 email,代表 email 設定是正確的。", + "Email could not be sent. Check your mail server log" : "郵件無法寄出,請查閱郵件伺服器記錄檔", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "寄出郵件時發生問題,請檢查您的設定(錯誤訊息:%s)", + "You need to set your user email before being able to send test emails." : "在寄出測試郵件前您需要設定信箱位址", + "Invalid mail address" : "無效的 email 地址", + "Settings saved" : "設定已儲存", + "Unable to change full name" : "無法變更全名", + "Unable to change email address" : "無法變更電子郵件地址", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "為了驗證您的推特帳號,請在推特上發佈下列推文(請確認推文內容沒有斷行):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "為了驗證您的網站,請將下列內容存至您網站的根目錄下路徑為:\".well-known/CloudIdVerificationCode.txt\" 的檔案(請確保全文以一行的格式儲存)", + "%1$s changed your password on %2$s." : "%1$s 在 %2$s 時更改了您的密碼", + "Your password on %s was changed." : "你在 %s 的密碼已變更", + "Your password on %s was reset by an administrator." : "您在 %s 的密碼已被管理員重設", + "Password for %1$s changed on %2$s" : "%1$s 在 %2$s 的密碼已變更", + "Password changed for %s" : "%s 的密碼已變更", + "If you did not request this, please contact an administrator." : "如果你未發送此請求 ,請聯絡系統管理員", + "Your email address on %s was changed." : "您在 %s 的電子郵件地址已變更", + "Your email address on %s was changed by an administrator." : "您在 %s 的電子郵件地址已被管理員變更", + "Email address for %1$s changed on %2$s" : "%1$s 的電子郵件地址在 %2$s 變更", + "Email address changed for %s" : "%s 的電子郵件地址已變更", + "The new email address is %s" : "新的電子郵件地址為 %s", + "Your %s account was created" : "您的 %s 帳號已經建立", + "Welcome aboard" : "歡迎加入", + "Welcome aboard %s" : "歡迎加入 %s", + "Welcome to your %s account, you can add, protect, and share your data." : "歡迎使用您的 %s 帳戶,您可以加入、保存、分享您的資料", + "Your username is: %s" : "您的使用者名稱為: %s", + "Set your password" : "設定您的密碼", + "Go to %s" : "前往 %s", + "Install Client" : "安裝客戶端程式", + "Delete" : "刪除", + "Unlimited" : "無限制", + "Verifying …" : "驗證中…", + "Verify" : "驗證", + "Migration in progress. Please wait until the migration is finished" : "資料搬移中,請耐心等候直到資料搬移結束", + "Migration started …" : "開始遷移…", + "Not saved" : "未儲存", + "Sending…" : "傳送中…", + "Email sent" : "Email 已寄出", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "發生錯誤,請您上傳 ASCII 編碼的 PEM 憑證", + "Valid until {date}" : "{date} 前有效", + "Local" : "本地", + "Private" : "私人的", + "Only visible to local users" : "僅本地用戶可見", + "Only visible to you" : "僅你可見", + "Contacts" : "聯絡人", + "Visible to local users and to trusted servers" : "僅本地用戶與信任的伺服器可見", + "Public" : "公開", + "Will be synced to a global and public address book" : "將會同步到全域公開的通訊錄", + "Very weak password" : "密碼強度非常弱", + "Weak password" : "密碼強度弱", + "So-so password" : "密碼強度普通", + "Good password" : "密碼強度佳", + "Strong password" : "密碼強度極佳", + "Select a profile picture" : "選擇大頭貼照", + "Groups" : "群組", + "Limit to groups" : "限制給特定群組", + "Allow filesystem access" : "允許檔案系統的存取", + "Revoke" : "撤銷", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome for Android", + "Sync client - {os}" : "同步客戶端 - {os}", + "This session" : "目前的工作階段", + "Device" : "裝置", + "Last activity" : "上次活動", + "Web, desktop and mobile clients currently logged in to your account." : "目前登入您的帳號的網頁、桌面和行動裝置客戶端", + "Error while creating device token" : "建立裝置 token 時發生錯誤", + "Error while deleting the token" : "刪除 token 時發生錯誤", + "App name" : "應用程式名稱", + "Create new app password" : "建立新的應用程式密碼", + "Use the credentials below to configure your app or device." : "請使用下方的登入資訊來設定您的應用程式或是裝置", + "For security reasons this password will only be shown once." : "基於安全性考量,這個密碼只會顯示一次", + "Username" : "使用者名稱", + "Password" : "密碼", + "Done" : "完成", + "Copied!" : "已複製", + "Copy" : "複製", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "官方應用程序是由社區內部和內部開發的。 它們提供核心功能,並可在正式成品使用。", + "Official" : "官方", + "Remove" : "移除", + "Disable" : "停用", + "All" : "所有", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "此應用程式並未配置最低的Nextcloud版本,未來將會產生問題。", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "此應用程式並未配置最高的Nextcloud版本,未來將會產生問題。", + "This app cannot be installed because the following dependencies are not fulfilled:" : "這個應用程式無法被安裝,因為欠缺下列相依套件:", + "View in store" : "在商店中檢視", + "Visit website" : "開啟網站", + "Report a bug" : "回報問題", + "User documentation" : "用戶說明文件", + "Admin documentation" : "管理者文件", + "Developer documentation" : "開發者說明文件", + "No apps found for your version" : "沒有找到適合您的版本的應用程式", + "Enable all" : "全部啟用", + "Enable" : "啟用", + "The app will be downloaded from the app store" : "將會從應用程式商店下載這個應用程式", + "New password" : "新密碼", + "{size} used" : "{size} 已使用", + "Email" : "信箱", + "Group admin for" : "群組管理員", + "Quota" : "容量限制", + "Language" : "語言", + "Storage location" : "儲存位址", + "User backend" : "使用者資料後端", + "Default quota" : "預設儲存容量限制", + "Your apps" : "您的應用程式", + "Disabled apps" : "已停用應用程式", + "Updates" : "更新", + "App bundles" : "應用程式套裝", + "Show last login" : "顯示上次登入時間", + "Show user backend" : "顯示使用者資料後端", + "Admins" : "管理者", + "Everyone" : "所有人", + "Add group" : "新增群組", + "Error: This app can not be enabled because it makes the server unstable" : "錯誤:此應用程序無法啟用,因為它造成伺服器不穩定", + "SSL Root Certificates" : "SSL 根憑證", + "Common Name" : "Common Name", + "Valid until" : "到期日", + "Issued By" : "發行者:", + "Valid until %s" : "有效至 %s", + "Import root certificate" : "匯入根憑證", + "Administrator documentation" : "管理者說明文件", + "Forum" : "論壇", + "None" : "無", + "Login" : "登入", + "Plain" : "Plain", + "NT LAN Manager" : "NT LAN Manager", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "郵件伺服器", + "Open documentation" : "開啟說明文件", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "設定伺服器可以寄送電子郵件非常重要,使用者通知和密碼重設將會需要", + "Send mode" : "寄送模式", + "Encryption" : "加密", + "From address" : "寄件地址", + "mail" : "電子郵件", + "Authentication method" : "認證方式", + "Authentication required" : "需要認證", + "Server address" : "伺服器位址", + "Port" : "連接埠", + "Credentials" : "帳密", + "SMTP Username" : "SMTP 帳號", + "SMTP Password" : "SMTP 密碼", + "Test email settings" : "測試郵件設定", + "Send email" : "寄送郵件", + "Security & setup warnings" : "安全及設定警告", + "All checks passed." : "所有檢查正常", + "Version" : "版本", + "Server-side encryption" : "伺服器端加密", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "伺服器端加密可以加密所有上傳到此伺服器的檔案,但這會讓檔案操作時間增加,降低效能,請審慎評估後再啟用。", + "Enable server-side encryption" : "啟用伺服器端加密", + "Please read carefully before activating server-side encryption: " : "在您啟動伺服器端加密之前,請仔細閱讀:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "一旦加密模式啟動,從各地上傳到伺服器端的檔案都會被加密,若日後要停用加密,需要加密模組的支援,而且所有的設定(例如:還原金鑰)都正確", + "Be aware that encryption always increases the file size." : "請注意,加密一定會增加檔案的大小", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "定時備份您的資料沒有壞處,若您有啟用加密,請確保您也有備份加密金鑰", + "This is the final warning: Do you really want to enable encryption?" : "這是最後的警告:請問您真的要開啟加密模式?", + "Enable encryption" : "啟用加密", + "No encryption module loaded, please enable an encryption module in the app menu." : "沒有載入加密模組,請您在應用程式清單中啟用加密模組", + "Select default encryption module:" : "選擇預設的加密模組:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : " 您需要遷移您的加密金鑰從舊版的加密 (ownCloud <= 8.0) 到新版,請啟用「預設加密模組」並執行 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : " 您需要遷移您的加密金鑰從舊版的加密 (ownCloud <= 8.0) 到新版", + "Start migration" : "開始遷移", + "Background jobs" : "背景工作", + "Last job ran %s." : "上次背景工作執行於 %s", + "Last job execution ran %s. Something seems wrong." : "上次背景工作執行於 %s ,似乎有點問題", + "Background job didn’t run yet!" : "背景工作從未執行!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "為了獲得最佳的效能,設定背景工作非常重要,對於比較大的服務來說,建議使用 Cron 設定,請查閱說明文件以獲得更多資訊。", + "Execute one task with each page loaded" : "每個頁面載入時執行", + "The cron.php needs to be executed by the system user \"%s\"." : "cron.php 必須由系統使用者 \"%s\" 來執行", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "要執行這個,您需要 PHP POSIX 擴充元件,請查閱 {linkstart}PHP 說明文件{linkend} 以獲得更多細節。", + "Sharing" : "分享", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "系統管理員可以微調分享行為,請查閱說明文件以獲得更多資訊。", + "Allow apps to use the Share API" : "允許 apps 使用分享 API", + "Allow users to share via link" : "允許使用者透過連結分享", + "Allow public uploads" : "允許公開上傳", + "Always ask for a password" : "總是詢問密碼", + "Enforce password protection" : "強制分享連結使用密碼保護", + "Set default expiration date" : "設定預設到期日", + "Expire after " : "在什麼時候過期", + "days" : "天", + "Enforce expiration date" : "強制分享連結設定到期日", + "Allow resharing" : "允許轉貼分享", + "Allow sharing with groups" : "允許與群組分享", + "Restrict users to only share with users in their groups" : "限制使用者只能分享給群組裡的其他使用者", + "Exclude groups from sharing" : "禁止特定群組分享檔案", + "These groups will still be able to receive shares, but not to initiate them." : "這些群組仍然能接受其他人的分享,但是沒有辦法發起分享", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "允許使用者名稱自動補齊在分享對話框,如果停用這個功能,必須輸入完整的使用者名稱或電子郵件地址", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "在公開的檔案連結和上傳頁面顯示免責聲明(只有在檔案清單隱藏的時候才會顯示)", + "This text will be shown on the public link upload page when the file list is hidden." : "這段文字會在公開檔案上傳頁面檔案清單被隱藏的時候顯示", + "Personal" : "個人", + "Administration" : "管理", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "由 {communityopen}Nextcloud 社群{linkclose}開發,{githubopen}原始碼{linkclose}以 {licenseopen}AGPL 授權{linkclose}釋出", + "Like our Facebook page" : "到我們的 Facebook 頁面按讚", + "Follow us on Twitter" : "在 Twitter 上面追蹤我們", + "Check out our blog" : "逛逛我們的部落格", + "Subscribe to our newsletter" : "訂閱我們的電子報", + "Profile picture" : "大頭貼照", + "Upload new" : "上傳新的", + "Select from Files" : "從雲端檔案選擇", + "Remove image" : "移除圖片", + "png or jpg, max. 20 MB" : "png 或 jpg ,最大 20 MB", + "Picture provided by original account" : "原本的帳戶提供的圖片", + "Cancel" : "取消", + "Choose as profile picture" : "設定為大頭貼照", + "Full name" : "全名", + "No display name set" : "未設定顯示名稱", + "Your email address" : "您的電子郵件信箱", + "No email address set" : "未設定電子郵件信箱", + "For password reset and notifications" : "用於密碼重設和通知信件", + "Phone number" : "電話號碼", + "Your phone number" : "您的電話號碼", + "Address" : "地址", + "Your postal address" : "您的郵遞地址", + "Website" : "網站", + "Link https://…" : "連結 https://...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Twitter 用戶名 @...", + "Help translate" : "幫助翻譯", + "Locale" : "所在地", + "Current password" : "目前密碼", + "Change password" : "變更密碼", + "Store credentials" : "儲存帳密", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php 已經在一個 webcron 服務中註冊,每 15 分鐘將會透過 HTTP 呼叫 cron.php", + "Use system cron service to call the cron.php file every 15 minutes." : "使用系統的 cron 服務來每隔 15 分鐘呼叫 cron.php" +}, +"nplurals=1; plural=0;"); diff --git a/apps/settings/l10n/zh_TW.json b/apps/settings/l10n/zh_TW.json new file mode 100644 index 00000000000..691e30da6f6 --- /dev/null +++ b/apps/settings/l10n/zh_TW.json @@ -0,0 +1,255 @@ +{ "translations": { + "{actor} removed you from group {group}" : "{actor} 將你從 {group} 群組中移除", + "{actor} changed your password" : "{actor} 變更了您的密碼", + "You changed your password" : "您已變更您的密碼", + "Your password was reset by an administrator" : "您的密碼已被管理員重設", + "{actor} changed your email address" : "{actor} 變更了您的電子郵件地址", + "You changed your email address" : "您已更改您的電子郵件地址", + "Your email address was changed by an administrator" : "您的電子郵件已被管理員變更", + "Security" : "安全性", + "You successfully logged in using two-factor authentication (%1$s)" : "你已成功使用兩步驟驗證進行登入 (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "使用兩步驟驗證登入失敗 (%1$s)", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "你的 <strong>密碼</strong> 或 <strong>email</strong> 已更動。", + "Couldn't remove app." : "無法移除應用程式", + "Couldn't update app." : "無法更新應用程式", + "Wrong password" : "密碼錯誤", + "Saved" : "已儲存", + "No user supplied" : "未提供使用者", + "Unable to change password" : "無法修改密碼", + "Authentication error" : "認證錯誤", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "請提供一個admin管理者恢復密碼,否則將會失去所有使用者資料。", + "Wrong admin recovery password. Please check the password and try again." : "錯誤的管理者還原密碼", + "Backend doesn't support password change, but the user's encryption key was updated." : "使用者資料後端不支援變更密碼,但使用者的加密金鑰已經更新。", + "installing and updating apps via the app store or Federated Cloud Sharing" : "透過應用程式中心或是聯盟式雲端分享來安裝、更新應用程式", + "Federated Cloud Sharing" : "聯盟式雲端分享", + "Invalid SMTP password." : "無效的 SMTP 密碼", + "Email setting test" : "測試郵件設定", + "Well done, %s!" : "太棒了, %s!", + "If you received this email, the email configuration seems to be correct." : "如果你收到這封 email,代表 email 設定是正確的。", + "Email could not be sent. Check your mail server log" : "郵件無法寄出,請查閱郵件伺服器記錄檔", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "寄出郵件時發生問題,請檢查您的設定(錯誤訊息:%s)", + "You need to set your user email before being able to send test emails." : "在寄出測試郵件前您需要設定信箱位址", + "Invalid mail address" : "無效的 email 地址", + "Settings saved" : "設定已儲存", + "Unable to change full name" : "無法變更全名", + "Unable to change email address" : "無法變更電子郵件地址", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "為了驗證您的推特帳號,請在推特上發佈下列推文(請確認推文內容沒有斷行):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "為了驗證您的網站,請將下列內容存至您網站的根目錄下路徑為:\".well-known/CloudIdVerificationCode.txt\" 的檔案(請確保全文以一行的格式儲存)", + "%1$s changed your password on %2$s." : "%1$s 在 %2$s 時更改了您的密碼", + "Your password on %s was changed." : "你在 %s 的密碼已變更", + "Your password on %s was reset by an administrator." : "您在 %s 的密碼已被管理員重設", + "Password for %1$s changed on %2$s" : "%1$s 在 %2$s 的密碼已變更", + "Password changed for %s" : "%s 的密碼已變更", + "If you did not request this, please contact an administrator." : "如果你未發送此請求 ,請聯絡系統管理員", + "Your email address on %s was changed." : "您在 %s 的電子郵件地址已變更", + "Your email address on %s was changed by an administrator." : "您在 %s 的電子郵件地址已被管理員變更", + "Email address for %1$s changed on %2$s" : "%1$s 的電子郵件地址在 %2$s 變更", + "Email address changed for %s" : "%s 的電子郵件地址已變更", + "The new email address is %s" : "新的電子郵件地址為 %s", + "Your %s account was created" : "您的 %s 帳號已經建立", + "Welcome aboard" : "歡迎加入", + "Welcome aboard %s" : "歡迎加入 %s", + "Welcome to your %s account, you can add, protect, and share your data." : "歡迎使用您的 %s 帳戶,您可以加入、保存、分享您的資料", + "Your username is: %s" : "您的使用者名稱為: %s", + "Set your password" : "設定您的密碼", + "Go to %s" : "前往 %s", + "Install Client" : "安裝客戶端程式", + "Delete" : "刪除", + "Unlimited" : "無限制", + "Verifying …" : "驗證中…", + "Verify" : "驗證", + "Migration in progress. Please wait until the migration is finished" : "資料搬移中,請耐心等候直到資料搬移結束", + "Migration started …" : "開始遷移…", + "Not saved" : "未儲存", + "Sending…" : "傳送中…", + "Email sent" : "Email 已寄出", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "發生錯誤,請您上傳 ASCII 編碼的 PEM 憑證", + "Valid until {date}" : "{date} 前有效", + "Local" : "本地", + "Private" : "私人的", + "Only visible to local users" : "僅本地用戶可見", + "Only visible to you" : "僅你可見", + "Contacts" : "聯絡人", + "Visible to local users and to trusted servers" : "僅本地用戶與信任的伺服器可見", + "Public" : "公開", + "Will be synced to a global and public address book" : "將會同步到全域公開的通訊錄", + "Very weak password" : "密碼強度非常弱", + "Weak password" : "密碼強度弱", + "So-so password" : "密碼強度普通", + "Good password" : "密碼強度佳", + "Strong password" : "密碼強度極佳", + "Select a profile picture" : "選擇大頭貼照", + "Groups" : "群組", + "Limit to groups" : "限制給特定群組", + "Allow filesystem access" : "允許檔案系統的存取", + "Revoke" : "撤銷", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome for Android", + "Sync client - {os}" : "同步客戶端 - {os}", + "This session" : "目前的工作階段", + "Device" : "裝置", + "Last activity" : "上次活動", + "Web, desktop and mobile clients currently logged in to your account." : "目前登入您的帳號的網頁、桌面和行動裝置客戶端", + "Error while creating device token" : "建立裝置 token 時發生錯誤", + "Error while deleting the token" : "刪除 token 時發生錯誤", + "App name" : "應用程式名稱", + "Create new app password" : "建立新的應用程式密碼", + "Use the credentials below to configure your app or device." : "請使用下方的登入資訊來設定您的應用程式或是裝置", + "For security reasons this password will only be shown once." : "基於安全性考量,這個密碼只會顯示一次", + "Username" : "使用者名稱", + "Password" : "密碼", + "Done" : "完成", + "Copied!" : "已複製", + "Copy" : "複製", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "官方應用程序是由社區內部和內部開發的。 它們提供核心功能,並可在正式成品使用。", + "Official" : "官方", + "Remove" : "移除", + "Disable" : "停用", + "All" : "所有", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "此應用程式並未配置最低的Nextcloud版本,未來將會產生問題。", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "此應用程式並未配置最高的Nextcloud版本,未來將會產生問題。", + "This app cannot be installed because the following dependencies are not fulfilled:" : "這個應用程式無法被安裝,因為欠缺下列相依套件:", + "View in store" : "在商店中檢視", + "Visit website" : "開啟網站", + "Report a bug" : "回報問題", + "User documentation" : "用戶說明文件", + "Admin documentation" : "管理者文件", + "Developer documentation" : "開發者說明文件", + "No apps found for your version" : "沒有找到適合您的版本的應用程式", + "Enable all" : "全部啟用", + "Enable" : "啟用", + "The app will be downloaded from the app store" : "將會從應用程式商店下載這個應用程式", + "New password" : "新密碼", + "{size} used" : "{size} 已使用", + "Email" : "信箱", + "Group admin for" : "群組管理員", + "Quota" : "容量限制", + "Language" : "語言", + "Storage location" : "儲存位址", + "User backend" : "使用者資料後端", + "Default quota" : "預設儲存容量限制", + "Your apps" : "您的應用程式", + "Disabled apps" : "已停用應用程式", + "Updates" : "更新", + "App bundles" : "應用程式套裝", + "Show last login" : "顯示上次登入時間", + "Show user backend" : "顯示使用者資料後端", + "Admins" : "管理者", + "Everyone" : "所有人", + "Add group" : "新增群組", + "Error: This app can not be enabled because it makes the server unstable" : "錯誤:此應用程序無法啟用,因為它造成伺服器不穩定", + "SSL Root Certificates" : "SSL 根憑證", + "Common Name" : "Common Name", + "Valid until" : "到期日", + "Issued By" : "發行者:", + "Valid until %s" : "有效至 %s", + "Import root certificate" : "匯入根憑證", + "Administrator documentation" : "管理者說明文件", + "Forum" : "論壇", + "None" : "無", + "Login" : "登入", + "Plain" : "Plain", + "NT LAN Manager" : "NT LAN Manager", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "郵件伺服器", + "Open documentation" : "開啟說明文件", + "It is important to set up this server to be able to send emails, like for password reset and notifications." : "設定伺服器可以寄送電子郵件非常重要,使用者通知和密碼重設將會需要", + "Send mode" : "寄送模式", + "Encryption" : "加密", + "From address" : "寄件地址", + "mail" : "電子郵件", + "Authentication method" : "認證方式", + "Authentication required" : "需要認證", + "Server address" : "伺服器位址", + "Port" : "連接埠", + "Credentials" : "帳密", + "SMTP Username" : "SMTP 帳號", + "SMTP Password" : "SMTP 密碼", + "Test email settings" : "測試郵件設定", + "Send email" : "寄送郵件", + "Security & setup warnings" : "安全及設定警告", + "All checks passed." : "所有檢查正常", + "Version" : "版本", + "Server-side encryption" : "伺服器端加密", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "伺服器端加密可以加密所有上傳到此伺服器的檔案,但這會讓檔案操作時間增加,降低效能,請審慎評估後再啟用。", + "Enable server-side encryption" : "啟用伺服器端加密", + "Please read carefully before activating server-side encryption: " : "在您啟動伺服器端加密之前,請仔細閱讀:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "一旦加密模式啟動,從各地上傳到伺服器端的檔案都會被加密,若日後要停用加密,需要加密模組的支援,而且所有的設定(例如:還原金鑰)都正確", + "Be aware that encryption always increases the file size." : "請注意,加密一定會增加檔案的大小", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "定時備份您的資料沒有壞處,若您有啟用加密,請確保您也有備份加密金鑰", + "This is the final warning: Do you really want to enable encryption?" : "這是最後的警告:請問您真的要開啟加密模式?", + "Enable encryption" : "啟用加密", + "No encryption module loaded, please enable an encryption module in the app menu." : "沒有載入加密模組,請您在應用程式清單中啟用加密模組", + "Select default encryption module:" : "選擇預設的加密模組:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : " 您需要遷移您的加密金鑰從舊版的加密 (ownCloud <= 8.0) 到新版,請啟用「預設加密模組」並執行 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : " 您需要遷移您的加密金鑰從舊版的加密 (ownCloud <= 8.0) 到新版", + "Start migration" : "開始遷移", + "Background jobs" : "背景工作", + "Last job ran %s." : "上次背景工作執行於 %s", + "Last job execution ran %s. Something seems wrong." : "上次背景工作執行於 %s ,似乎有點問題", + "Background job didn’t run yet!" : "背景工作從未執行!", + "For optimal performance it's important to configure background jobs correctly. For bigger instances 'Cron' is the recommended setting. Please see the documentation for more information." : "為了獲得最佳的效能,設定背景工作非常重要,對於比較大的服務來說,建議使用 Cron 設定,請查閱說明文件以獲得更多資訊。", + "Execute one task with each page loaded" : "每個頁面載入時執行", + "The cron.php needs to be executed by the system user \"%s\"." : "cron.php 必須由系統使用者 \"%s\" 來執行", + "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "要執行這個,您需要 PHP POSIX 擴充元件,請查閱 {linkstart}PHP 說明文件{linkend} 以獲得更多細節。", + "Sharing" : "分享", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "系統管理員可以微調分享行為,請查閱說明文件以獲得更多資訊。", + "Allow apps to use the Share API" : "允許 apps 使用分享 API", + "Allow users to share via link" : "允許使用者透過連結分享", + "Allow public uploads" : "允許公開上傳", + "Always ask for a password" : "總是詢問密碼", + "Enforce password protection" : "強制分享連結使用密碼保護", + "Set default expiration date" : "設定預設到期日", + "Expire after " : "在什麼時候過期", + "days" : "天", + "Enforce expiration date" : "強制分享連結設定到期日", + "Allow resharing" : "允許轉貼分享", + "Allow sharing with groups" : "允許與群組分享", + "Restrict users to only share with users in their groups" : "限制使用者只能分享給群組裡的其他使用者", + "Exclude groups from sharing" : "禁止特定群組分享檔案", + "These groups will still be able to receive shares, but not to initiate them." : "這些群組仍然能接受其他人的分享,但是沒有辦法發起分享", + "Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered." : "允許使用者名稱自動補齊在分享對話框,如果停用這個功能,必須輸入完整的使用者名稱或電子郵件地址", + "Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)" : "在公開的檔案連結和上傳頁面顯示免責聲明(只有在檔案清單隱藏的時候才會顯示)", + "This text will be shown on the public link upload page when the file list is hidden." : "這段文字會在公開檔案上傳頁面檔案清單被隱藏的時候顯示", + "Personal" : "個人", + "Administration" : "管理", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "由 {communityopen}Nextcloud 社群{linkclose}開發,{githubopen}原始碼{linkclose}以 {licenseopen}AGPL 授權{linkclose}釋出", + "Like our Facebook page" : "到我們的 Facebook 頁面按讚", + "Follow us on Twitter" : "在 Twitter 上面追蹤我們", + "Check out our blog" : "逛逛我們的部落格", + "Subscribe to our newsletter" : "訂閱我們的電子報", + "Profile picture" : "大頭貼照", + "Upload new" : "上傳新的", + "Select from Files" : "從雲端檔案選擇", + "Remove image" : "移除圖片", + "png or jpg, max. 20 MB" : "png 或 jpg ,最大 20 MB", + "Picture provided by original account" : "原本的帳戶提供的圖片", + "Cancel" : "取消", + "Choose as profile picture" : "設定為大頭貼照", + "Full name" : "全名", + "No display name set" : "未設定顯示名稱", + "Your email address" : "您的電子郵件信箱", + "No email address set" : "未設定電子郵件信箱", + "For password reset and notifications" : "用於密碼重設和通知信件", + "Phone number" : "電話號碼", + "Your phone number" : "您的電話號碼", + "Address" : "地址", + "Your postal address" : "您的郵遞地址", + "Website" : "網站", + "Link https://…" : "連結 https://...", + "Twitter" : "Twitter", + "Twitter handle @…" : "Twitter 用戶名 @...", + "Help translate" : "幫助翻譯", + "Locale" : "所在地", + "Current password" : "目前密碼", + "Change password" : "變更密碼", + "Store credentials" : "儲存帳密", + "cron.php is registered at a webcron service to call cron.php every 15 minutes over HTTP." : "cron.php 已經在一個 webcron 服務中註冊,每 15 分鐘將會透過 HTTP 呼叫 cron.php", + "Use system cron service to call the cron.php file every 15 minutes." : "使用系統的 cron 服務來每隔 15 分鐘呼叫 cron.php" +},"pluralForm" :"nplurals=1; plural=0;" +} \ No newline at end of file diff --git a/apps/settings/lib/Activity/GroupProvider.php b/apps/settings/lib/Activity/GroupProvider.php new file mode 100644 index 00000000000..eaf125fcdeb --- /dev/null +++ b/apps/settings/lib/Activity/GroupProvider.php @@ -0,0 +1,202 @@ +<?php +/** + * @copyright Copyright (c) 2016 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @author Christoph Wurst <christoph@owncloud.com> + * @author Joas Schilling <coding@schilljs.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\Settings\Activity; + +use InvalidArgumentException; +use OCP\Activity\IEvent; +use OCP\Activity\IManager; +use OCP\Activity\IProvider; +use OCP\IGroup; +use OCP\IGroupManager; +use OCP\IURLGenerator; +use OCP\IUser; +use OCP\IUserManager; +use OCP\L10N\IFactory as L10nFactory; + +class GroupProvider implements IProvider { + + public const ADDED_TO_GROUP = 'group_added'; + public const REMOVED_FROM_GROUP = 'group_removed'; + + /** @var L10nFactory */ + private $l10n; + /** @var IURLGenerator */ + private $urlGenerator; + /** @var IManager */ + private $activityManager; + /** @var IUserManager */ + protected $userManager; + /** @var IGroupManager */ + protected $groupManager; + + /** @var string[] */ + protected $groupDisplayNames = []; + /** @var string[] */ + protected $userDisplayNames = []; + + + public function __construct(L10nFactory $l10n, + IURLGenerator $urlGenerator, + IManager $activityManager, + IUserManager $userManager, + IGroupManager $groupManager) { + $this->urlGenerator = $urlGenerator; + $this->l10n = $l10n; + $this->activityManager = $activityManager; + $this->userManager = $userManager; + $this->groupManager = $groupManager; + } + + public function parse($language, IEvent $event, IEvent $previousEvent = null) { + if ($event->getType() !== 'group_settings') { + throw new InvalidArgumentException(); + } + + $l = $this->l10n->get('settings', $language); + + $params = $event->getSubjectParameters(); + $parsedParameters = [ + 'user' => $this->generateUserParameter($params['user']), + 'group' => $this->generateGroupParameter($params['group']), + ]; + + if (isset($params['actor'])) { + $parsedParameters['actor'] = $this->generateUserParameter($params['actor']); + } + + switch ($event->getSubject()) { + case self::ADDED_TO_GROUP: + if (isset($parsedParameters['actor'])) { + if ($this->activityManager->getCurrentUserId() === $params['user']) { + $subject = $l->t('{actor} added you to group {group}'); + } elseif (isset($params['actor']) && $this->activityManager->getCurrentUserId() === $params['actor']) { + $subject = $l->t('You added {user} to group {group}'); + } else { + $subject = $l->t('{actor} added {user} to group {group}'); + } + } else if ($this->activityManager->getCurrentUserId() === $params['user']) { + $subject = $l->t('An administrator added you to group {group}'); + } else { + $subject = $l->t('An administrator added {user} to group {group}'); + } + break; + case self::REMOVED_FROM_GROUP: + if (isset($parsedParameters['actor'])) { + if ($this->activityManager->getCurrentUserId() === $params['user']) { + $subject = $l->t('{actor} removed you from group {group}'); + } elseif (isset($params['actor']) && $this->activityManager->getCurrentUserId() === $params['actor']) { + $subject = $l->t('You removed {user} from group {group}'); + } else { + $subject = $l->t('{actor} removed {user} from group {group}'); + } + } else if ($this->activityManager->getCurrentUserId() === $params['user']) { + $subject = $l->t('An administrator removed you from group {group}'); + } else { + $subject = $l->t('An administrator removed {user} from group {group}'); + } + break; + default: + throw new InvalidArgumentException(); + } + + $this->setSubjects($event, $subject, $parsedParameters); + + return $event; + } + + /** + * @param IEvent $event + * @param string $subject + * @param array $parameters + * @throws \InvalidArgumentException + */ + protected function setSubjects(IEvent $event, string $subject, array $parameters): void { + $placeholders = $replacements = []; + foreach ($parameters as $placeholder => $parameter) { + $placeholders[] = '{' . $placeholder . '}'; + $replacements[] = $parameter['name']; + } + + $event->setParsedSubject(str_replace($placeholders, $replacements, $subject)) + ->setRichSubject($subject, $parameters); + } + + /** + * @param string $gid + * @return array + */ + protected function generateGroupParameter(string $gid): array { + if (!isset($this->groupDisplayNames[$gid])) { + $this->groupDisplayNames[$gid] = $this->getGroupDisplayName($gid); + } + + return [ + 'type' => 'user-group', + 'id' => $gid, + 'name' => $this->groupDisplayNames[$gid], + ]; + } + + /** + * @param string $gid + * @return string + */ + protected function getGroupDisplayName(string $gid): string { + $group = $this->groupManager->get($gid); + if ($group instanceof IGroup) { + return $group->getDisplayName(); + } + return $gid; + } + + /** + * @param string $uid + * @return array + */ + protected function generateUserParameter(string $uid): array { + if (!isset($this->displayNames[$uid])) { + $this->userDisplayNames[$uid] = $this->getDisplayName($uid); + } + + return [ + 'type' => 'user', + 'id' => $uid, + 'name' => $this->userDisplayNames[$uid], + ]; + } + + /** + * @param string $uid + * @return string + */ + protected function getDisplayName(string $uid): string { + $user = $this->userManager->get($uid); + if ($user instanceof IUser) { + return $user->getDisplayName(); + } else { + return $uid; + } + } +} diff --git a/apps/settings/lib/Activity/GroupSetting.php b/apps/settings/lib/Activity/GroupSetting.php new file mode 100644 index 00000000000..c22ea60cf78 --- /dev/null +++ b/apps/settings/lib/Activity/GroupSetting.php @@ -0,0 +1,98 @@ +<?php +/** + * @copyright Copyright (c) 2017 Joas Schilling <coding@schilljs.com> + * + * @author Joas Schilling <coding@schilljs.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\Settings\Activity; + +use OCP\Activity\ISetting; +use OCP\IL10N; + +class GroupSetting implements ISetting { + + /** @var IL10N */ + protected $l; + + /** + * @param IL10N $l10n + */ + public function __construct(IL10N $l10n) { + $this->l = $l10n; + } + + /** + * @return string Lowercase a-z and underscore only identifier + * @since 11.0.0 + */ + public function getIdentifier(): string { + return 'group_settings'; + } + + /** + * @return string A translated string + * @since 11.0.0 + */ + public function getName(): string { + return $this->l->t('Your <strong>group memberships</strong> were modified'); + } + + /** + * @return int whether the filter should be rather on the top or bottom of + * the admin section. The filters are arranged in ascending order of the + * priority values. It is required to return a value between 0 and 100. + * @since 11.0.0 + */ + public function getPriority(): int { + return 0; + } + + /** + * @return bool True when the option can be changed for the stream + * @since 11.0.0 + */ + public function canChangeStream(): bool { + return false; + } + + /** + * @return bool True when the option can be changed for the stream + * @since 11.0.0 + */ + public function isDefaultEnabledStream(): bool { + return true; + } + + /** + * @return bool True when the option can be changed for the mail + * @since 11.0.0 + */ + public function canChangeMail(): bool { + return false; + } + + /** + * @return bool True when the option can be changed for the stream + * @since 11.0.0 + */ + public function isDefaultEnabledMail(): bool { + return true; + } +} diff --git a/apps/settings/lib/Activity/Provider.php b/apps/settings/lib/Activity/Provider.php new file mode 100644 index 00000000000..73cf81d3506 --- /dev/null +++ b/apps/settings/lib/Activity/Provider.php @@ -0,0 +1,220 @@ +<?php +declare(strict_types=1); +/** + * @copyright Copyright (c) 2017 Joas Schilling <coding@schilljs.com> + * + * @author Joas Schilling <coding@schilljs.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\Settings\Activity; + +use OCP\Activity\IEvent; +use OCP\Activity\IManager; +use OCP\Activity\IProvider; +use OCP\IL10N; +use OCP\IURLGenerator; +use OCP\IUser; +use OCP\IUserManager; +use OCP\L10N\IFactory; + +class Provider implements IProvider { + + public const PASSWORD_CHANGED_BY = 'password_changed_by'; + public const PASSWORD_CHANGED_SELF = 'password_changed_self'; + public const PASSWORD_RESET = 'password_changed'; + public const EMAIL_CHANGED_BY = 'email_changed_by'; + public const EMAIL_CHANGED_SELF = 'email_changed_self'; + public const EMAIL_CHANGED = 'email_changed'; + public const APP_TOKEN_CREATED = 'app_token_created'; + public const APP_TOKEN_DELETED = 'app_token_deleted'; + public const APP_TOKEN_RENAMED = 'app_token_renamed'; + public const APP_TOKEN_FILESYSTEM_GRANTED = 'app_token_filesystem_granted'; + public const APP_TOKEN_FILESYSTEM_REVOKED = 'app_token_filesystem_revoked'; + + /** @var IFactory */ + protected $languageFactory; + + /** @var IL10N */ + protected $l; + + /** @var IURLGenerator */ + protected $url; + + /** @var IUserManager */ + protected $userManager; + + /** @var IManager */ + private $activityManager; + + /** @var string[] cached displayNames - key is the UID and value the displayname */ + protected $displayNames = []; + + public function __construct(IFactory $languageFactory, + IURLGenerator $url, + IUserManager $userManager, + IManager $activityManager) { + $this->languageFactory = $languageFactory; + $this->url = $url; + $this->userManager = $userManager; + $this->activityManager = $activityManager; + } + + /** + * @param string $language + * @param IEvent $event + * @param IEvent|null $previousEvent + * @return IEvent + * @throws \InvalidArgumentException + * @since 11.0.0 + */ + public function parse($language, IEvent $event, IEvent $previousEvent = null): IEvent { + if ($event->getApp() !== 'settings') { + throw new \InvalidArgumentException('Unknown app'); + } + + $this->l = $this->languageFactory->get('settings', $language); + + if ($this->activityManager->getRequirePNG()) { + $event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('settings', 'personal.png'))); + } else { + $event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('settings', 'personal.svg'))); + } + + if ($event->getSubject() === self::PASSWORD_CHANGED_BY) { + $subject = $this->l->t('{actor} changed your password'); + } else if ($event->getSubject() === self::PASSWORD_CHANGED_SELF) { + $subject = $this->l->t('You changed your password'); + } else if ($event->getSubject() === self::PASSWORD_RESET) { + $subject = $this->l->t('Your password was reset by an administrator'); + + } else if ($event->getSubject() === self::EMAIL_CHANGED_BY) { + $subject = $this->l->t('{actor} changed your email address'); + } else if ($event->getSubject() === self::EMAIL_CHANGED_SELF) { + $subject = $this->l->t('You changed your email address'); + } else if ($event->getSubject() === self::EMAIL_CHANGED) { + $subject = $this->l->t('Your email address was changed by an administrator'); + + } else if ($event->getSubject() === self::APP_TOKEN_CREATED) { + $subject = $this->l->t('You created app password "{token}"'); + } else if ($event->getSubject() === self::APP_TOKEN_DELETED) { + $subject = $this->l->t('You deleted app password "{token}"'); + } else if ($event->getSubject() === self::APP_TOKEN_RENAMED) { + $subject = $this->l->t('You renamed app password "{token}" to "{newToken}"'); + } else if ($event->getSubject() === self::APP_TOKEN_FILESYSTEM_GRANTED) { + $subject = $this->l->t('You granted filesystem access to app password "{token}"'); + } else if ($event->getSubject() === self::APP_TOKEN_FILESYSTEM_REVOKED) { + $subject = $this->l->t('You revoked filesystem access from app password "{token}"'); + + } else { + throw new \InvalidArgumentException('Unknown subject'); + } + + $parsedParameters = $this->getParameters($event); + $this->setSubjects($event, $subject, $parsedParameters); + + return $event; + } + + /** + * @param IEvent $event + * @return array + * @throws \InvalidArgumentException + */ + protected function getParameters(IEvent $event): array { + $subject = $event->getSubject(); + $parameters = $event->getSubjectParameters(); + + switch ($subject) { + case self::PASSWORD_CHANGED_SELF: + case self::PASSWORD_RESET: + case self::EMAIL_CHANGED_SELF: + case self::EMAIL_CHANGED: + return []; + case self::PASSWORD_CHANGED_BY: + case self::EMAIL_CHANGED_BY: + return [ + 'actor' => $this->generateUserParameter($parameters[0]), + ]; + case self::APP_TOKEN_CREATED: + case self::APP_TOKEN_DELETED: + case self::APP_TOKEN_FILESYSTEM_GRANTED: + case self::APP_TOKEN_FILESYSTEM_REVOKED: + return [ + 'token' => [ + 'type' => 'highlight', + 'id' => $event->getObjectId(), + 'name' => $parameters['name'], + ] + ]; + case self::APP_TOKEN_RENAMED: + return [ + 'token' => [ + 'type' => 'highlight', + 'id' => $event->getObjectId(), + 'name' => $parameters['name'], + ], + 'newToken' => [ + 'type' => 'highlight', + 'id' => $event->getObjectId(), + 'name' => $parameters['newName'], + ] + ]; + } + + throw new \InvalidArgumentException('Unknown subject'); + } + + /** + * @param IEvent $event + * @param string $subject + * @param array $parameters + * @throws \InvalidArgumentException + */ + protected function setSubjects(IEvent $event, string $subject, array $parameters): void { + $placeholders = $replacements = []; + foreach ($parameters as $placeholder => $parameter) { + $placeholders[] = '{' . $placeholder . '}'; + $replacements[] = $parameter['name']; + } + + $event->setParsedSubject(str_replace($placeholders, $replacements, $subject)) + ->setRichSubject($subject, $parameters); + } + + protected function generateUserParameter(string $uid): array { + if (!isset($this->displayNames[$uid])) { + $this->displayNames[$uid] = $this->getDisplayName($uid); + } + + return [ + 'type' => 'user', + 'id' => $uid, + 'name' => $this->displayNames[$uid], + ]; + } + + protected function getDisplayName(string $uid): string { + $user = $this->userManager->get($uid); + if ($user instanceof IUser) { + return $user->getDisplayName(); + } + + return $uid; + } +} diff --git a/apps/settings/lib/Activity/SecurityFilter.php b/apps/settings/lib/Activity/SecurityFilter.php new file mode 100644 index 00000000000..1352925b687 --- /dev/null +++ b/apps/settings/lib/Activity/SecurityFilter.php @@ -0,0 +1,67 @@ +<?php +/** + * + * + * @author Christoph Wurst <christoph@owncloud.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\Settings\Activity; + +use OCP\Activity\IFilter; +use OCP\IL10N; +use OCP\IURLGenerator; + +class SecurityFilter implements IFilter { + + /** @var IURLGenerator */ + private $urlGenerator; + + /** @var IL10N */ + private $l10n; + + public function __construct(IURLGenerator $urlGenerator, IL10N $l10n) { + $this->urlGenerator = $urlGenerator; + $this->l10n = $l10n; + } + + public function allowedApps() { + return []; + } + + public function filterTypes(array $types) { + return array_intersect(['security'], $types); + } + + public function getIcon() { + return $this->urlGenerator->getAbsoluteURL($this->urlGenerator->imagePath('core', 'actions/password.svg')); + } + + public function getIdentifier() { + return 'security'; + } + + public function getName() { + return $this->l10n->t('Security'); + } + + public function getPriority() { + return 30; + } + +} diff --git a/apps/settings/lib/Activity/SecurityProvider.php b/apps/settings/lib/Activity/SecurityProvider.php new file mode 100644 index 00000000000..b7cce5d7364 --- /dev/null +++ b/apps/settings/lib/Activity/SecurityProvider.php @@ -0,0 +1,112 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright Copyright (c) 2016 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @author Christoph Wurst <christoph@owncloud.com> + * @author Joas Schilling <coding@schilljs.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\Settings\Activity; + +use InvalidArgumentException; +use OCP\Activity\IEvent; +use OCP\Activity\IManager; +use OCP\Activity\IProvider; +use OCP\IURLGenerator; +use OCP\L10N\IFactory as L10nFactory; + +class SecurityProvider implements IProvider { + + /** @var L10nFactory */ + private $l10n; + + /** @var IURLGenerator */ + private $urlGenerator; + + /** @var IManager */ + private $activityManager; + + public function __construct(L10nFactory $l10n, IURLGenerator $urlGenerator, IManager $activityManager) { + $this->urlGenerator = $urlGenerator; + $this->l10n = $l10n; + $this->activityManager = $activityManager; + } + + public function parse($language, IEvent $event, IEvent $previousEvent = null) { + if ($event->getType() !== 'security') { + throw new InvalidArgumentException(); + } + + $l = $this->l10n->get('settings', $language); + + switch ($event->getSubject()) { + case 'twofactor_success': + $params = $event->getSubjectParameters(); + $event->setParsedSubject($l->t('You successfully logged in using two-factor authentication (%1$s)', [ + $params['provider'], + ])); + if ($this->activityManager->getRequirePNG()) { + $event->setIcon($this->urlGenerator->getAbsoluteURL($this->urlGenerator->imagePath('core', 'actions/password.png'))); + } else { + $event->setIcon($this->urlGenerator->getAbsoluteURL($this->urlGenerator->imagePath('core', 'actions/password.svg'))); + } + break; + case 'twofactor_failed': + $params = $event->getSubjectParameters(); + $event->setParsedSubject($l->t('A login attempt using two-factor authentication failed (%1$s)', [ + $params['provider'], + ])); + if ($this->activityManager->getRequirePNG()) { + $event->setIcon($this->urlGenerator->getAbsoluteURL($this->urlGenerator->imagePath('core', 'actions/password.png'))); + } else { + $event->setIcon($this->urlGenerator->getAbsoluteURL($this->urlGenerator->imagePath('core', 'actions/password.svg'))); + } + break; + case 'remote_wipe_start': + $params = $event->getSubjectParameters(); + $event->setParsedSubject($l->t('Remote wipe was started on %1$s', [ + $params['name'], + ])); + if ($this->activityManager->getRequirePNG()) { + $event->setIcon($this->urlGenerator->getAbsoluteURL($this->urlGenerator->imagePath('core', 'actions/delete.png'))); + } else { + $event->setIcon($this->urlGenerator->getAbsoluteURL($this->urlGenerator->imagePath('core', 'actions/delete.svg'))); + } + break; + case 'remote_wipe_finish': + $params = $event->getSubjectParameters(); + $event->setParsedSubject($l->t('Remote wipe has finished on %1$s', [ + $params['name'], + ])); + if ($this->activityManager->getRequirePNG()) { + $event->setIcon($this->urlGenerator->getAbsoluteURL($this->urlGenerator->imagePath('core', 'actions/delete.png'))); + } else { + $event->setIcon($this->urlGenerator->getAbsoluteURL($this->urlGenerator->imagePath('core', 'actions/delete.svg'))); + } + break; + default: + throw new InvalidArgumentException(); + } + return $event; + } + +} diff --git a/apps/settings/lib/Activity/SecuritySetting.php b/apps/settings/lib/Activity/SecuritySetting.php new file mode 100644 index 00000000000..92c288c0f88 --- /dev/null +++ b/apps/settings/lib/Activity/SecuritySetting.php @@ -0,0 +1,66 @@ +<?php +/** + * @copyright Copyright (c) 2016 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @author Christoph Wurst <christoph@owncloud.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\Settings\Activity; + +use OCP\Activity\ISetting; +use OCP\IL10N; + +class SecuritySetting implements ISetting { + + /** @var IL10N */ + private $l10n; + + public function __construct(IL10N $l10n) { + $this->l10n = $l10n; + } + + public function canChangeMail() { + return false; + } + + public function canChangeStream() { + return false; + } + + public function getIdentifier() { + return 'security'; + } + + public function getName() { + return $this->l10n->t('Security'); + } + + public function getPriority() { + return 30; + } + + public function isDefaultEnabledMail() { + return true; + } + + public function isDefaultEnabledStream() { + return true; + } + +} diff --git a/apps/settings/lib/Activity/Setting.php b/apps/settings/lib/Activity/Setting.php new file mode 100644 index 00000000000..5220697b614 --- /dev/null +++ b/apps/settings/lib/Activity/Setting.php @@ -0,0 +1,98 @@ +<?php +/** + * @copyright Copyright (c) 2017 Joas Schilling <coding@schilljs.com> + * + * @author Joas Schilling <coding@schilljs.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\Settings\Activity; + +use OCP\Activity\ISetting; +use OCP\IL10N; + +class Setting implements ISetting { + + /** @var IL10N */ + protected $l; + + /** + * @param IL10N $l10n + */ + public function __construct(IL10N $l10n) { + $this->l = $l10n; + } + + /** + * @return string Lowercase a-z and underscore only identifier + * @since 11.0.0 + */ + public function getIdentifier() { + return 'personal_settings'; + } + + /** + * @return string A translated string + * @since 11.0.0 + */ + public function getName() { + return $this->l->t('Your <strong>password</strong> or <strong>email</strong> was modified'); + } + + /** + * @return int whether the filter should be rather on the top or bottom of + * the admin section. The filters are arranged in ascending order of the + * priority values. It is required to return a value between 0 and 100. + * @since 11.0.0 + */ + public function getPriority() { + return 0; + } + + /** + * @return bool True when the option can be changed for the stream + * @since 11.0.0 + */ + public function canChangeStream() { + return false; + } + + /** + * @return bool True when the option can be changed for the stream + * @since 11.0.0 + */ + public function isDefaultEnabledStream() { + return true; + } + + /** + * @return bool True when the option can be changed for the mail + * @since 11.0.0 + */ + public function canChangeMail() { + return false; + } + + /** + * @return bool True when the option can be changed for the stream + * @since 11.0.0 + */ + public function isDefaultEnabledMail() { + return false; + } +} diff --git a/apps/settings/lib/AppInfo/Application.php b/apps/settings/lib/AppInfo/Application.php new file mode 100644 index 00000000000..0a564cacc8e --- /dev/null +++ b/apps/settings/lib/AppInfo/Application.php @@ -0,0 +1,229 @@ +<?php +/** + * @copyright Copyright (c) 2016, ownCloud, Inc. + * + * @author Arthur Schiwon <blizzz@arthur-schiwon.de> + * @author Björn Schießle <bjoern@schiessle.org> + * @author Christoph Wurst <christoph@owncloud.com> + * @author Joas Schilling <coding@schilljs.com> + * @author Lukas Reschke <lukas@statuscode.ch> + * @author Morris Jobke <hey@morrisjobke.de> + * @author Robin Appelman <robin@icewind.nl> + * + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace OCA\Settings\AppInfo; + +use BadMethodCallException; +use OC\AppFramework\Utility\TimeFactory; +use OC\Authentication\Token\IProvider; +use OC\Authentication\Token\IToken; +use OC\Server; +use OCA\Settings\Activity\GroupProvider; +use OCA\Settings\Activity\GroupSetting; +use OCA\Settings\Activity\Provider; +use OCA\Settings\Activity\SecurityFilter; +use OCA\Settings\Activity\SecurityProvider; +use OCA\Settings\Activity\SecuritySetting; +use OCA\Settings\Activity\Setting; +use OCA\Settings\Hooks; +use OCA\Settings\Mailer\NewUserMailHelper; +use OCA\Settings\Middleware\SubadminMiddleware; +use OCP\Activity\IManager as IActivityManager; +use OCP\AppFramework\App; +use OCP\Defaults; +use OCP\IContainer; +use OCP\IGroup; +use OCP\ILogger; +use OCP\IUser; +use OCP\Settings\IManager; +use OCP\Util; +use Symfony\Component\EventDispatcher\EventDispatcherInterface; +use Symfony\Component\EventDispatcher\GenericEvent; + +class Application extends App { + + + /** + * @param array $urlParams + */ + public function __construct(array $urlParams=[]){ + parent::__construct('settings', $urlParams); + + $container = $this->getContainer(); + + // Register Middleware + $container->registerAlias('SubadminMiddleware', SubadminMiddleware::class); + $container->registerMiddleWare('SubadminMiddleware'); + + /** + * Core class wrappers + */ + /** FIXME: Remove once OC_User is non-static and mockable */ + $container->registerService('isAdmin', function() { + return \OC_User::isAdminUser(\OC_User::getUser()); + }); + /** FIXME: Remove once OC_SubAdmin is non-static and mockable */ + $container->registerService('isSubAdmin', function(IContainer $c) { + $userObject = \OC::$server->getUserSession()->getUser(); + $isSubAdmin = false; + if($userObject !== null) { + $isSubAdmin = \OC::$server->getGroupManager()->getSubAdmin()->isSubAdmin($userObject); + } + return $isSubAdmin; + }); + $container->registerService('userCertificateManager', function(IContainer $c) { + return $c->query('ServerContainer')->getCertificateManager(); + }, false); + $container->registerService('systemCertificateManager', function (IContainer $c) { + return $c->query('ServerContainer')->getCertificateManager(null); + }, false); + $container->registerService(IProvider::class, function (IContainer $c) { + return $c->query('ServerContainer')->query(IProvider::class); + }); + $container->registerService(IManager::class, function (IContainer $c) { + return $c->query('ServerContainer')->getSettingsManager(); + }); + + $container->registerService(NewUserMailHelper::class, function (IContainer $c) { + /** @var Server $server */ + $server = $c->query('ServerContainer'); + /** @var Defaults $defaults */ + $defaults = $server->query(Defaults::class); + + return new NewUserMailHelper( + $defaults, + $server->getURLGenerator(), + $server->getL10NFactory(), + $server->getMailer(), + $server->getSecureRandom(), + new TimeFactory(), + $server->getConfig(), + $server->getCrypto(), + Util::getDefaultEmailAddress('no-reply') + ); + }); + + /** @var EventDispatcherInterface $eventDispatcher */ + $eventDispatcher = $container->getServer()->getEventDispatcher(); + $eventDispatcher->addListener('app_password_created', function (GenericEvent $event) use ($container) { + if (($token = $event->getSubject()) instanceof IToken) { + /** @var IActivityManager $activityManager */ + $activityManager = $container->query(IActivityManager::class); + /** @var ILogger $logger */ + $logger = $container->query(ILogger::class); + + $activity = $activityManager->generateEvent(); + $activity->setApp('settings') + ->setType('security') + ->setAffectedUser($token->getUID()) + ->setAuthor($token->getUID()) + ->setSubject(Provider::APP_TOKEN_CREATED, ['name' => $token->getName()]) + ->setObject('app_token', $token->getId()); + + try { + $activityManager->publish($activity); + } catch (BadMethodCallException $e) { + $logger->logException($e, ['message' => 'could not publish activity', 'level' => ILogger::WARN]); + } + } + }); + } + + public function register() { + $activityManager = $this->getContainer()->getServer()->getActivityManager(); + $activityManager->registerSetting(Setting::class); // FIXME move to info.xml + $activityManager->registerProvider(Provider::class); // FIXME move to info.xml + $activityManager->registerFilter(SecurityFilter::class); // FIXME move to info.xml + $activityManager->registerSetting(SecuritySetting::class); // FIXME move to info.xml + $activityManager->registerProvider(SecurityProvider::class); // FIXME move to info.xml + $activityManager->registerSetting(GroupSetting::class); // FIXME move to info.xml + $activityManager->registerProvider(GroupProvider::class); // FIXME move to info.xml + + Util::connectHook('OC_User', 'post_setPassword', $this, 'onChangePassword'); + Util::connectHook('OC_User', 'changeUser', $this, 'onChangeInfo'); + + $groupManager = $this->getContainer()->getServer()->getGroupManager(); + $groupManager->listen('\OC\Group', 'postRemoveUser', [$this, 'removeUserFromGroup']); + $groupManager->listen('\OC\Group', 'postAddUser', [$this, 'addUserToGroup']); + + Util::connectHook('\OCP\Config', 'js', $this, 'extendJsConfig'); + } + + public function addUserToGroup(IGroup $group, IUser $user): void { + /** @var Hooks $hooks */ + $hooks = $this->getContainer()->query(Hooks::class); + $hooks->addUserToGroup($group, $user); + + } + + public function removeUserFromGroup(IGroup $group, IUser $user): void { + /** @var Hooks $hooks */ + $hooks = $this->getContainer()->query(Hooks::class); + $hooks->removeUserFromGroup($group, $user); + } + + + /** + * @param array $parameters + * @throws \InvalidArgumentException + * @throws \BadMethodCallException + * @throws \Exception + * @throws \OCP\AppFramework\QueryException + */ + public function onChangePassword(array $parameters) { + /** @var Hooks $hooks */ + $hooks = $this->getContainer()->query(Hooks::class); + $hooks->onChangePassword($parameters['uid']); + } + + /** + * @param array $parameters + * @throws \InvalidArgumentException + * @throws \BadMethodCallException + * @throws \Exception + * @throws \OCP\AppFramework\QueryException + */ + public function onChangeInfo(array $parameters) { + if ($parameters['feature'] !== 'eMailAddress') { + return; + } + + /** @var Hooks $hooks */ + $hooks = $this->getContainer()->query(Hooks::class); + $hooks->onChangeEmail($parameters['user'], $parameters['old_value']); + } + + /** + * @param array $settings + */ + public function extendJsConfig(array $settings) { + $appConfig = json_decode($settings['array']['oc_appconfig'], true); + + $publicWebFinger = \OC::$server->getConfig()->getAppValue('core', 'public_webfinger', ''); + if (!empty($publicWebFinger)) { + $appConfig['core']['public_webfinger'] = $publicWebFinger; + } + + $publicNodeInfo = \OC::$server->getConfig()->getAppValue('core', 'public_nodeinfo', ''); + if (!empty($publicNodeInfo)) { + $appConfig['core']['public_nodeinfo'] = $publicNodeInfo; + } + + $settings['array']['oc_appconfig'] = json_encode($appConfig); + } +} diff --git a/apps/settings/lib/BackgroundJobs/VerifyUserData.php b/apps/settings/lib/BackgroundJobs/VerifyUserData.php new file mode 100644 index 00000000000..caac35f2de4 --- /dev/null +++ b/apps/settings/lib/BackgroundJobs/VerifyUserData.php @@ -0,0 +1,301 @@ +<?php +/** + * @copyright Copyright (c) 2017 Bjoern Schiessle <bjoern@schiessle.org> + * + * @author Bjoern Schiessle <bjoern@schiessle.org> + * @author Lukas Reschke <lukas@statuscode.ch> + * @author Patrik Kernstock <info@pkern.at> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + + +namespace OCA\Settings\BackgroundJobs; + + +use OC\Accounts\AccountManager; +use OC\BackgroundJob\Job; +use OC\BackgroundJob\JobList; +use OCP\AppFramework\Http; +use OCP\BackgroundJob\IJobList; +use OCP\Http\Client\IClientService; +use OCP\IConfig; +use OCP\ILogger; +use OCP\IUserManager; + +class VerifyUserData extends Job { + + /** @var bool */ + private $retainJob = true; + + /** @var int max number of attempts to send the request */ + private $maxTry = 24; + + /** @var int how much time should be between two tries (1 hour) */ + private $interval = 3600; + + /** @var AccountManager */ + private $accountManager; + + /** @var IUserManager */ + private $userManager; + + /** @var IClientService */ + private $httpClientService; + + /** @var ILogger */ + private $logger; + + /** @var string */ + private $lookupServerUrl; + + /** @var IConfig */ + private $config; + + /** + * VerifyUserData constructor. + * + * @param AccountManager $accountManager + * @param IUserManager $userManager + * @param IClientService $clientService + * @param ILogger $logger + * @param IConfig $config + */ + public function __construct(AccountManager $accountManager, + IUserManager $userManager, + IClientService $clientService, + ILogger $logger, + IConfig $config + ) { + $this->accountManager = $accountManager; + $this->userManager = $userManager; + $this->httpClientService = $clientService; + $this->logger = $logger; + + $lookupServerUrl = $config->getSystemValue('lookup_server', 'https://lookup.nextcloud.com'); + $this->lookupServerUrl = rtrim($lookupServerUrl, '/'); + $this->config = $config; + } + + /** + * run the job, then remove it from the jobList + * + * @param JobList $jobList + * @param ILogger|null $logger + */ + public function execute($jobList, ILogger $logger = null) { + + if ($this->shouldRun($this->argument)) { + parent::execute($jobList, $logger); + $jobList->remove($this, $this->argument); + if ($this->retainJob) { + $this->reAddJob($jobList, $this->argument); + } else { + $this->resetVerificationState(); + } + } + + } + + protected function run($argument) { + + $try = (int)$argument['try'] + 1; + + switch($argument['type']) { + case AccountManager::PROPERTY_WEBSITE: + $result = $this->verifyWebsite($argument); + break; + case AccountManager::PROPERTY_TWITTER: + case AccountManager::PROPERTY_EMAIL: + $result = $this->verifyViaLookupServer($argument, $argument['type']); + break; + default: + // no valid type given, no need to retry + $this->logger->error($argument['type'] . ' is no valid type for user account data.'); + $result = true; + } + + if ($result === true || $try > $this->maxTry) { + $this->retainJob = false; + } + } + + /** + * verify web page + * + * @param array $argument + * @return bool true if we could check the verification code, otherwise false + */ + protected function verifyWebsite(array $argument) { + + $result = false; + + $url = rtrim($argument['data'], '/') . '/.well-known/' . 'CloudIdVerificationCode.txt'; + + $client = $this->httpClientService->newClient(); + try { + $response = $client->get($url); + } catch (\Exception $e) { + return false; + } + + if ($response->getStatusCode() === Http::STATUS_OK) { + $result = true; + $publishedCode = $response->getBody(); + // remove new lines and spaces + $publishedCodeSanitized = trim(preg_replace('/\s\s+/', ' ', $publishedCode)); + $user = $this->userManager->get($argument['uid']); + // we don't check a valid user -> give up + if ($user === null) { + $this->logger->error($argument['uid'] . ' doesn\'t exist, can\'t verify user data.'); + return $result; + } + $userData = $this->accountManager->getUser($user); + + if ($publishedCodeSanitized === $argument['verificationCode']) { + $userData[AccountManager::PROPERTY_WEBSITE]['verified'] = AccountManager::VERIFIED; + } else { + $userData[AccountManager::PROPERTY_WEBSITE]['verified'] = AccountManager::NOT_VERIFIED; + } + + $this->accountManager->updateUser($user, $userData); + } + + return $result; + } + + /** + * verify email address + * + * @param array $argument + * @param string $dataType + * @return bool true if we could check the verification code, otherwise false + */ + protected function verifyViaLookupServer(array $argument, $dataType) { + if(empty($this->lookupServerUrl) || + $this->config->getAppValue('files_sharing', 'lookupServerUploadEnabled', 'yes') !== 'yes' || + $this->config->getSystemValue('has_internet_connection', true) === false) { + return false; + } + + $user = $this->userManager->get($argument['uid']); + + // we don't check a valid user -> give up + if ($user === null) { + $this->logger->info($argument['uid'] . ' doesn\'t exist, can\'t verify user data.'); + return true; + } + + $localUserData = $this->accountManager->getUser($user); + $cloudId = $user->getCloudId(); + + // ask lookup-server for user data + $lookupServerData = $this->queryLookupServer($cloudId); + + // for some reasons we couldn't read any data from the lookup server, try again later + if (empty($lookupServerData) || empty($lookupServerData[$dataType])) { + return false; + } + + // lookup server has verification data for wrong user data (e.g. email address), try again later + if ($lookupServerData[$dataType]['value'] !== $argument['data']) { + return false; + } + + // lookup server hasn't verified the email address so far, try again later + if ($lookupServerData[$dataType]['verified'] === AccountManager::NOT_VERIFIED) { + return false; + } + + $localUserData[$dataType]['verified'] = AccountManager::VERIFIED; + $this->accountManager->updateUser($user, $localUserData); + + return true; + } + + /** + * @param string $cloudId + * @return array + */ + protected function queryLookupServer($cloudId) { + try { + $client = $this->httpClientService->newClient(); + $response = $client->get( + $this->lookupServerUrl . '/users?search=' . urlencode($cloudId) . '&exactCloudId=1', + [ + 'timeout' => 10, + 'connect_timeout' => 3, + ] + ); + + $body = json_decode($response->getBody(), true); + + if (is_array($body) && isset($body['federationId']) && $body['federationId'] === $cloudId) { + return $body; + } + + } catch (\Exception $e) { + // do nothing, we will just re-try later + } + + return []; + } + + /** + * re-add background job with new arguments + * + * @param IJobList $jobList + * @param array $argument + */ + protected function reAddJob(IJobList $jobList, array $argument) { + $jobList->add(VerifyUserData::class, + [ + 'verificationCode' => $argument['verificationCode'], + 'data' => $argument['data'], + 'type' => $argument['type'], + 'uid' => $argument['uid'], + 'try' => (int)$argument['try'] + 1, + 'lastRun' => time() + ] + ); + } + + /** + * test if it is time for the next run + * + * @param array $argument + * @return bool + */ + protected function shouldRun(array $argument) { + $lastRun = (int)$argument['lastRun']; + return ((time() - $lastRun) > $this->interval); + } + + + /** + * reset verification state after max tries are reached + */ + protected function resetVerificationState() { + $user = $this->userManager->get($this->argument['uid']); + if ($user !== null) { + $accountData = $this->accountManager->getUser($user); + $accountData[$this->argument['type']]['verified'] = AccountManager::NOT_VERIFIED; + $this->accountManager->updateUser($user, $accountData); + } + } + +} diff --git a/apps/settings/lib/Controller/AdminSettingsController.php b/apps/settings/lib/Controller/AdminSettingsController.php new file mode 100644 index 00000000000..0217abf3858 --- /dev/null +++ b/apps/settings/lib/Controller/AdminSettingsController.php @@ -0,0 +1,121 @@ +<?php +/** + * @copyright Copyright (c) 2016 Arthur Schiwon <blizzz@arthur-schiwon.de> + * + * @author Arthur Schiwon <blizzz@arthur-schiwon.de> + * @author Lukas Reschke <lukas@statuscode.ch> + * @author Robin Appelman <robin@icewind.nl> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\Settings\Controller; + +use OCP\AppFramework\Controller; +use OCP\AppFramework\Http\TemplateResponse; +use OCP\Group\ISubAdmin; +use OCP\IGroupManager; +use OCP\INavigationManager; +use OCP\IRequest; +use OCP\IUser; +use OCP\IUserSession; +use OCP\Settings\IManager as ISettingsManager; +use OCP\Template; + +class AdminSettingsController extends Controller { + use CommonSettingsTrait; + + public function __construct( + $appName, + IRequest $request, + INavigationManager $navigationManager, + ISettingsManager $settingsManager, + IUserSession $userSession, + IGroupManager $groupManager, + ISubAdmin $subAdmin + ) { + parent::__construct($appName, $request); + $this->navigationManager = $navigationManager; + $this->settingsManager = $settingsManager; + $this->userSession = $userSession; + $this->groupManager = $groupManager; + $this->subAdmin = $subAdmin; + } + + /** + * @param string $section + * @return TemplateResponse + * + * @NoCSRFRequired + * @SubAdminRequired + */ + public function index($section) { + return $this->getIndexResponse('admin', $section); + } + + /** + * @param string $section + * @return array + */ + protected function getSettings($section) { + /** @var IUser $user */ + $user = $this->userSession->getUser(); + $isSubAdmin = !$this->groupManager->isAdmin($user->getUID()) && $this->subAdmin->isSubAdmin($user); + $settings = $this->settingsManager->getAdminSettings( + $section, + $isSubAdmin + ); + $formatted = $this->formatSettings($settings); + // Do not show legacy forms for sub admins + if($section === 'additional' && !$isSubAdmin) { + $formatted['content'] .= $this->getLegacyForms(); + } + return $formatted; + } + + /** + * @return bool|string + */ + private function getLegacyForms() { + $forms = \OC_App::getForms('admin'); + + $forms = array_map(function ($form) { + if (preg_match('%(<h2(?P<class>[^>]*)>.*?</h2>)%i', $form, $regs)) { + $sectionName = str_replace('<h2' . $regs['class'] . '>', '', $regs[0]); + $sectionName = str_replace('</h2>', '', $sectionName); + $anchor = strtolower($sectionName); + $anchor = str_replace(' ', '-', $anchor); + + return array( + 'anchor' => $anchor, + 'section-name' => $sectionName, + 'form' => $form + ); + } + return array( + 'form' => $form + ); + }, $forms); + + $out = new Template('settings', 'settings/additional'); + $out->assign('forms', $forms); + + return $out->fetchPage(); + } + + +} diff --git a/apps/settings/lib/Controller/AppSettingsController.php b/apps/settings/lib/Controller/AppSettingsController.php new file mode 100644 index 00000000000..93bb2cbb423 --- /dev/null +++ b/apps/settings/lib/Controller/AppSettingsController.php @@ -0,0 +1,563 @@ +<?php +/** + * @copyright Copyright (c) 2016, ownCloud, Inc. + * @copyright Copyright (c) 2016, Lukas Reschke <lukas@statuscode.ch> + * + * @author Christoph Wurst <christoph@owncloud.com> + * @author Felix A. Epp <work@felixepp.de> + * @author Jan-Christoph Borchardt <hey@jancborchardt.net> + * @author Joas Schilling <coding@schilljs.com> + * @author Julius Härtl <jus@bitgrid.net> + * @author Lukas Reschke <lukas@statuscode.ch> + * @author Morris Jobke <hey@morrisjobke.de> + * @author Roeland Jago Douma <roeland@famdouma.nl> + * @author Thomas Müller <thomas.mueller@tmit.eu> + * + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace OCA\Settings\Controller; + +use OC\App\AppStore\Bundles\BundleFetcher; +use OC\App\AppStore\Fetcher\AppFetcher; +use OC\App\AppStore\Fetcher\CategoryFetcher; +use OC\App\AppStore\Version\VersionParser; +use OC\App\DependencyAnalyzer; +use OC\App\Platform; +use OC\Installer; +use OC_App; +use OCP\App\IAppManager; +use \OCP\AppFramework\Controller; +use OCP\AppFramework\Http; +use OCP\AppFramework\Http\ContentSecurityPolicy; +use OCP\AppFramework\Http\JSONResponse; +use OCP\AppFramework\Http\TemplateResponse; +use OCP\ILogger; +use OCP\INavigationManager; +use OCP\IRequest; +use OCP\IL10N; +use OCP\IConfig; +use OCP\IURLGenerator; +use OCP\L10N\IFactory; + +class AppSettingsController extends Controller { + + /** @var \OCP\IL10N */ + private $l10n; + /** @var IConfig */ + private $config; + /** @var INavigationManager */ + private $navigationManager; + /** @var IAppManager */ + private $appManager; + /** @var CategoryFetcher */ + private $categoryFetcher; + /** @var AppFetcher */ + private $appFetcher; + /** @var IFactory */ + private $l10nFactory; + /** @var BundleFetcher */ + private $bundleFetcher; + /** @var Installer */ + private $installer; + /** @var IURLGenerator */ + private $urlGenerator; + /** @var ILogger */ + private $logger; + + /** @var array */ + private $allApps = []; + + /** + * @param string $appName + * @param IRequest $request + * @param IL10N $l10n + * @param IConfig $config + * @param INavigationManager $navigationManager + * @param IAppManager $appManager + * @param CategoryFetcher $categoryFetcher + * @param AppFetcher $appFetcher + * @param IFactory $l10nFactory + * @param BundleFetcher $bundleFetcher + * @param Installer $installer + * @param IURLGenerator $urlGenerator + * @param ILogger $logger + */ + public function __construct(string $appName, + IRequest $request, + IL10N $l10n, + IConfig $config, + INavigationManager $navigationManager, + IAppManager $appManager, + CategoryFetcher $categoryFetcher, + AppFetcher $appFetcher, + IFactory $l10nFactory, + BundleFetcher $bundleFetcher, + Installer $installer, + IURLGenerator $urlGenerator, + ILogger $logger) { + parent::__construct($appName, $request); + $this->l10n = $l10n; + $this->config = $config; + $this->navigationManager = $navigationManager; + $this->appManager = $appManager; + $this->categoryFetcher = $categoryFetcher; + $this->appFetcher = $appFetcher; + $this->l10nFactory = $l10nFactory; + $this->bundleFetcher = $bundleFetcher; + $this->installer = $installer; + $this->urlGenerator = $urlGenerator; + $this->logger = $logger; + } + + /** + * @NoCSRFRequired + * + * @return TemplateResponse + */ + public function viewApps(): TemplateResponse { + \OC_Util::addScript('settings', 'apps'); + $params = []; + $params['appstoreEnabled'] = $this->config->getSystemValue('appstoreenabled', true) === true; + $params['updateCount'] = count($this->getAppsWithUpdates()); + $params['developerDocumentation'] = $this->urlGenerator->linkToDocs('developer-manual'); + $params['bundles'] = $this->getBundles(); + $this->navigationManager->setActiveEntry('core_apps'); + + $templateResponse = new TemplateResponse('settings', 'settings-vue', ['serverData' => $params]); + $policy = new ContentSecurityPolicy(); + $policy->addAllowedImageDomain('https://usercontent.apps.nextcloud.com'); + $templateResponse->setContentSecurityPolicy($policy); + + return $templateResponse; + } + + private function getAppsWithUpdates() { + $appClass = new \OC_App(); + $apps = $appClass->listAllApps(); + foreach($apps as $key => $app) { + $newVersion = $this->installer->isUpdateAvailable($app['id']); + if($newVersion === false) { + unset($apps[$key]); + } + } + return $apps; + } + + private function getBundles() { + $result = []; + $bundles = $this->bundleFetcher->getBundles(); + foreach ($bundles as $bundle) { + $result[] = [ + 'name' => $bundle->getName(), + 'id' => $bundle->getIdentifier(), + 'appIdentifiers' => $bundle->getAppIdentifiers() + ]; + } + return $result; + + } + + /** + * Get all available categories + * + * @return JSONResponse + */ + public function listCategories(): JSONResponse { + return new JSONResponse($this->getAllCategories()); + } + + private function getAllCategories() { + $currentLanguage = substr($this->l10nFactory->findLanguage(), 0, 2); + + $formattedCategories = []; + $categories = $this->categoryFetcher->get(); + foreach($categories as $category) { + $formattedCategories[] = [ + 'id' => $category['id'], + 'ident' => $category['id'], + 'displayName' => isset($category['translations'][$currentLanguage]['name']) ? $category['translations'][$currentLanguage]['name'] : $category['translations']['en']['name'], + ]; + } + + return $formattedCategories; + } + + private function fetchApps() { + $appClass = new \OC_App(); + $apps = $appClass->listAllApps(); + foreach ($apps as $app) { + $app['installed'] = true; + $this->allApps[$app['id']] = $app; + } + + $apps = $this->getAppsForCategory(''); + foreach ($apps as $app) { + $app['appstore'] = true; + if (!array_key_exists($app['id'], $this->allApps)) { + $this->allApps[$app['id']] = $app; + } else { + $this->allApps[$app['id']] = array_merge($app, $this->allApps[$app['id']]); + } + } + + // add bundle information + $bundles = $this->bundleFetcher->getBundles(); + foreach($bundles as $bundle) { + foreach($bundle->getAppIdentifiers() as $identifier) { + foreach($this->allApps as &$app) { + if($app['id'] === $identifier) { + $app['bundleId'] = $bundle->getIdentifier(); + continue; + } + } + } + } + } + + private function getAllApps() { + return $this->allApps; + } + /** + * Get all available apps in a category + * + * @param string $category + * @return JSONResponse + * @throws \Exception + */ + public function listApps(): JSONResponse { + + $this->fetchApps(); + $apps = $this->getAllApps(); + + $dependencyAnalyzer = new DependencyAnalyzer(new Platform($this->config), $this->l10n); + + // Extend existing app details + $apps = array_map(function($appData) use ($dependencyAnalyzer) { + if (isset($appData['appstoreData'])) { + $appstoreData = $appData['appstoreData']; + $appData['screenshot'] = isset($appstoreData['screenshots'][0]['url']) ? 'https://usercontent.apps.nextcloud.com/' . base64_encode($appstoreData['screenshots'][0]['url']) : ''; + $appData['category'] = $appstoreData['categories']; + } + + $newVersion = $this->installer->isUpdateAvailable($appData['id']); + if($newVersion) { + $appData['update'] = $newVersion; + } + + // fix groups to be an array + $groups = array(); + if (is_string($appData['groups'])) { + $groups = json_decode($appData['groups']); + } + $appData['groups'] = $groups; + $appData['canUnInstall'] = !$appData['active'] && $appData['removable']; + + // fix licence vs license + if (isset($appData['license']) && !isset($appData['licence'])) { + $appData['licence'] = $appData['license']; + } + + $ignoreMaxApps = $this->config->getSystemValue('app_install_overwrite', []); + $ignoreMax = in_array($appData['id'], $ignoreMaxApps); + + // analyse dependencies + $missing = $dependencyAnalyzer->analyze($appData, $ignoreMax); + $appData['canInstall'] = empty($missing); + $appData['missingDependencies'] = $missing; + + $appData['missingMinOwnCloudVersion'] = !isset($appData['dependencies']['nextcloud']['@attributes']['min-version']); + $appData['missingMaxOwnCloudVersion'] = !isset($appData['dependencies']['nextcloud']['@attributes']['max-version']); + $appData['isCompatible'] = $dependencyAnalyzer->isMarkedCompatible($appData); + + return $appData; + }, $apps); + + usort($apps, [$this, 'sortApps']); + + return new JSONResponse(['apps' => $apps, 'status' => 'success']); + } + + /** + * Get all apps for a category from the app store + * + * @param string $requestedCategory + * @return array + * @throws \Exception + */ + private function getAppsForCategory($requestedCategory = ''): array { + $versionParser = new VersionParser(); + $formattedApps = []; + $apps = $this->appFetcher->get(); + foreach($apps as $app) { + // Skip all apps not in the requested category + if ($requestedCategory !== '') { + $isInCategory = false; + foreach($app['categories'] as $category) { + if($category === $requestedCategory) { + $isInCategory = true; + } + } + if(!$isInCategory) { + continue; + } + } + + if (!isset($app['releases'][0]['rawPlatformVersionSpec'])) { + continue; + } + $nextCloudVersion = $versionParser->getVersion($app['releases'][0]['rawPlatformVersionSpec']); + $nextCloudVersionDependencies = []; + if($nextCloudVersion->getMinimumVersion() !== '') { + $nextCloudVersionDependencies['nextcloud']['@attributes']['min-version'] = $nextCloudVersion->getMinimumVersion(); + } + if($nextCloudVersion->getMaximumVersion() !== '') { + $nextCloudVersionDependencies['nextcloud']['@attributes']['max-version'] = $nextCloudVersion->getMaximumVersion(); + } + $phpVersion = $versionParser->getVersion($app['releases'][0]['rawPhpVersionSpec']); + $existsLocally = \OC_App::getAppPath($app['id']) !== false; + $phpDependencies = []; + if($phpVersion->getMinimumVersion() !== '') { + $phpDependencies['php']['@attributes']['min-version'] = $phpVersion->getMinimumVersion(); + } + if($phpVersion->getMaximumVersion() !== '') { + $phpDependencies['php']['@attributes']['max-version'] = $phpVersion->getMaximumVersion(); + } + if(isset($app['releases'][0]['minIntSize'])) { + $phpDependencies['php']['@attributes']['min-int-size'] = $app['releases'][0]['minIntSize']; + } + $authors = ''; + foreach($app['authors'] as $key => $author) { + $authors .= $author['name']; + if($key !== count($app['authors']) - 1) { + $authors .= ', '; + } + } + + $currentLanguage = substr(\OC::$server->getL10NFactory()->findLanguage(), 0, 2); + $enabledValue = $this->config->getAppValue($app['id'], 'enabled', 'no'); + $groups = null; + if($enabledValue !== 'no' && $enabledValue !== 'yes') { + $groups = $enabledValue; + } + + $currentVersion = ''; + if($this->appManager->isInstalled($app['id'])) { + $currentVersion = $this->appManager->getAppVersion($app['id']); + } else { + $currentLanguage = $app['releases'][0]['version']; + } + + $formattedApps[] = [ + 'id' => $app['id'], + 'name' => isset($app['translations'][$currentLanguage]['name']) ? $app['translations'][$currentLanguage]['name'] : $app['translations']['en']['name'], + 'description' => isset($app['translations'][$currentLanguage]['description']) ? $app['translations'][$currentLanguage]['description'] : $app['translations']['en']['description'], + 'summary' => isset($app['translations'][$currentLanguage]['summary']) ? $app['translations'][$currentLanguage]['summary'] : $app['translations']['en']['summary'], + 'license' => $app['releases'][0]['licenses'], + 'author' => $authors, + 'shipped' => false, + 'version' => $currentVersion, + 'default_enable' => '', + 'types' => [], + 'documentation' => [ + 'admin' => $app['adminDocs'], + 'user' => $app['userDocs'], + 'developer' => $app['developerDocs'] + ], + 'website' => $app['website'], + 'bugs' => $app['issueTracker'], + 'detailpage' => $app['website'], + 'dependencies' => array_merge( + $nextCloudVersionDependencies, + $phpDependencies + ), + 'level' => ($app['isFeatured'] === true) ? 200 : 100, + 'missingMaxOwnCloudVersion' => false, + 'missingMinOwnCloudVersion' => false, + 'canInstall' => true, + 'screenshot' => isset($app['screenshots'][0]['url']) ? 'https://usercontent.apps.nextcloud.com/'.base64_encode($app['screenshots'][0]['url']) : '', + 'score' => $app['ratingOverall'], + 'ratingNumOverall' => $app['ratingNumOverall'], + 'ratingNumThresholdReached' => $app['ratingNumOverall'] > 5, + 'removable' => $existsLocally, + 'active' => $this->appManager->isEnabledForUser($app['id']), + 'needsDownload' => !$existsLocally, + 'groups' => $groups, + 'fromAppStore' => true, + 'appstoreData' => $app, + ]; + } + + return $formattedApps; + } + + /** + * @PasswordConfirmationRequired + * + * @param string $appId + * @param array $groups + * @return JSONResponse + */ + public function enableApp(string $appId, array $groups = []): JSONResponse { + return $this->enableApps([$appId], $groups); + } + + /** + * Enable one or more apps + * + * apps will be enabled for specific groups only if $groups is defined + * + * @PasswordConfirmationRequired + * @param array $appIds + * @param array $groups + * @return JSONResponse + */ + public function enableApps(array $appIds, array $groups = []): JSONResponse { + try { + $updateRequired = false; + + foreach ($appIds as $appId) { + $appId = OC_App::cleanAppId($appId); + + // Check if app is already downloaded + /** @var Installer $installer */ + $installer = \OC::$server->query(Installer::class); + $isDownloaded = $installer->isDownloaded($appId); + + if(!$isDownloaded) { + $installer->downloadApp($appId); + } + + $installer->installApp($appId); + + if (count($groups) > 0) { + $this->appManager->enableAppForGroups($appId, $this->getGroupList($groups)); + } else { + $this->appManager->enableApp($appId); + } + if (\OC_App::shouldUpgrade($appId)) { + $updateRequired = true; + } + } + return new JSONResponse(['data' => ['update_required' => $updateRequired]]); + + } catch (\Exception $e) { + $this->logger->logException($e); + return new JSONResponse(['data' => ['message' => $e->getMessage()]], Http::STATUS_INTERNAL_SERVER_ERROR); + } + } + + private function getGroupList(array $groups) { + $groupManager = \OC::$server->getGroupManager(); + $groupsList = []; + foreach ($groups as $group) { + $groupItem = $groupManager->get($group); + if ($groupItem instanceof \OCP\IGroup) { + $groupsList[] = $groupManager->get($group); + } + } + return $groupsList; + } + + /** + * @PasswordConfirmationRequired + * + * @param string $appId + * @return JSONResponse + */ + public function disableApp(string $appId): JSONResponse { + return $this->disableApps([$appId]); + } + + /** + * @PasswordConfirmationRequired + * + * @param array $appIds + * @return JSONResponse + */ + public function disableApps(array $appIds): JSONResponse { + try { + foreach ($appIds as $appId) { + $appId = OC_App::cleanAppId($appId); + $this->appManager->disableApp($appId); + } + return new JSONResponse([]); + } catch (\Exception $e) { + $this->logger->logException($e); + return new JSONResponse(['data' => ['message' => $e->getMessage()]], Http::STATUS_INTERNAL_SERVER_ERROR); + } + } + + /** + * @PasswordConfirmationRequired + * + * @param string $appId + * @return JSONResponse + */ + public function uninstallApp(string $appId): JSONResponse { + $appId = OC_App::cleanAppId($appId); + $result = $this->installer->removeApp($appId); + if($result !== false) { + $this->appManager->clearAppsCache(); + return new JSONResponse(['data' => ['appid' => $appId]]); + } + return new JSONResponse(['data' => ['message' => $this->l10n->t('Couldn\'t remove app.')]], Http::STATUS_INTERNAL_SERVER_ERROR); + } + + /** + * @param string $appId + * @return JSONResponse + */ + public function updateApp(string $appId): JSONResponse { + $appId = OC_App::cleanAppId($appId); + + $this->config->setSystemValue('maintenance', true); + try { + $result = $this->installer->updateAppstoreApp($appId); + $this->config->setSystemValue('maintenance', false); + } catch (\Exception $ex) { + $this->config->setSystemValue('maintenance', false); + return new JSONResponse(['data' => ['message' => $ex->getMessage()]], Http::STATUS_INTERNAL_SERVER_ERROR); + } + + if ($result !== false) { + return new JSONResponse(['data' => ['appid' => $appId]]); + } + return new JSONResponse(['data' => ['message' => $this->l10n->t('Couldn\'t update app.')]], Http::STATUS_INTERNAL_SERVER_ERROR); + } + + private function sortApps($a, $b) { + $a = (string)$a['name']; + $b = (string)$b['name']; + if ($a === $b) { + return 0; + } + return ($a < $b) ? -1 : 1; + } + + public function force(string $appId): JSONResponse { + $appId = OC_App::cleanAppId($appId); + + $ignoreMaxApps = $this->config->getSystemValue('app_install_overwrite', []); + if (!in_array($appId, $ignoreMaxApps, true)) { + $ignoreMaxApps[] = $appId; + $this->config->setSystemValue('app_install_overwrite', $ignoreMaxApps); + } + + return new JSONResponse(); + } + +} diff --git a/apps/settings/lib/Controller/AuthSettingsController.php b/apps/settings/lib/Controller/AuthSettingsController.php new file mode 100644 index 00000000000..b948cd5065d --- /dev/null +++ b/apps/settings/lib/Controller/AuthSettingsController.php @@ -0,0 +1,289 @@ +<?php +/** + * @copyright Copyright (c) 2016, ownCloud, Inc. + * + * @author Christoph Wurst <christoph@owncloud.com> + * @author Fabrizio Steiner <fabrizio.steiner@gmail.com> + * @author Joas Schilling <coding@schilljs.com> + * @author Lukas Reschke <lukas@statuscode.ch> + * @author Marcel Waldvogel <marcel.waldvogel@uni-konstanz.de> + * @author Robin Appelman <robin@icewind.nl> + * + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace OCA\Settings\Controller; + +use BadMethodCallException; +use OC\Authentication\Exceptions\InvalidTokenException; +use OC\Authentication\Exceptions\PasswordlessTokenException; +use OC\Authentication\Exceptions\WipeTokenException; +use OC\Authentication\Token\INamedToken; +use OC\Authentication\Token\IProvider; +use OC\Authentication\Token\IToken; +use OC\Authentication\Token\IWipeableToken; +use OC\Authentication\Token\RemoteWipe; +use OCA\Settings\Activity\Provider; +use OCP\Activity\IManager; +use OCP\AppFramework\Controller; +use OCP\AppFramework\Http; +use OCP\AppFramework\Http\JSONResponse; +use OCP\ILogger; +use OCP\IRequest; +use OCP\ISession; +use OCP\IUserSession; +use OCP\Security\ISecureRandom; +use OCP\Session\Exceptions\SessionNotAvailableException; + +class AuthSettingsController extends Controller { + + /** @var IProvider */ + private $tokenProvider; + + /** @var ISession */ + private $session; + + /** IUserSession */ + private $userSession; + + /** @var string */ + private $uid; + + /** @var ISecureRandom */ + private $random; + + /** @var IManager */ + private $activityManager; + + /** @var RemoteWipe */ + private $remoteWipe; + + /** @var ILogger */ + private $logger; + + /** + * @param string $appName + * @param IRequest $request + * @param IProvider $tokenProvider + * @param ISession $session + * @param ISecureRandom $random + * @param string|null $userId + * @param IUserSession $userSession + * @param IManager $activityManager + * @param RemoteWipe $remoteWipe + * @param ILogger $logger + */ + public function __construct(string $appName, + IRequest $request, + IProvider $tokenProvider, + ISession $session, + ISecureRandom $random, + ?string $userId, + IUserSession $userSession, + IManager $activityManager, + RemoteWipe $remoteWipe, + ILogger $logger) { + parent::__construct($appName, $request); + $this->tokenProvider = $tokenProvider; + $this->uid = $userId; + $this->userSession = $userSession; + $this->session = $session; + $this->random = $random; + $this->activityManager = $activityManager; + $this->remoteWipe = $remoteWipe; + $this->logger = $logger; + } + + /** + * @NoAdminRequired + * @NoSubadminRequired + * @PasswordConfirmationRequired + * + * @param string $name + * @return JSONResponse + */ + public function create($name) { + try { + $sessionId = $this->session->getId(); + } catch (SessionNotAvailableException $ex) { + return $this->getServiceNotAvailableResponse(); + } + if ($this->userSession->getImpersonatingUserID() !== null) + { + return $this->getServiceNotAvailableResponse(); + } + + try { + $sessionToken = $this->tokenProvider->getToken($sessionId); + $loginName = $sessionToken->getLoginName(); + try { + $password = $this->tokenProvider->getPassword($sessionToken, $sessionId); + } catch (PasswordlessTokenException $ex) { + $password = null; + } + } catch (InvalidTokenException $ex) { + return $this->getServiceNotAvailableResponse(); + } + + $token = $this->generateRandomDeviceToken(); + $deviceToken = $this->tokenProvider->generateToken($token, $this->uid, $loginName, $password, $name, IToken::PERMANENT_TOKEN); + $tokenData = $deviceToken->jsonSerialize(); + $tokenData['canDelete'] = true; + $tokenData['canRename'] = true; + + $this->publishActivity(Provider::APP_TOKEN_CREATED, $deviceToken->getId(), ['name' => $deviceToken->getName()]); + + return new JSONResponse([ + 'token' => $token, + 'loginName' => $loginName, + 'deviceToken' => $tokenData, + ]); + } + + /** + * @return JSONResponse + */ + private function getServiceNotAvailableResponse() { + $resp = new JSONResponse(); + $resp->setStatus(Http::STATUS_SERVICE_UNAVAILABLE); + return $resp; + } + + /** + * Return a 25 digit device password + * + * Example: AbCdE-fGhJk-MnPqR-sTwXy-23456 + * + * @return string + */ + private function generateRandomDeviceToken() { + $groups = []; + for ($i = 0; $i < 5; $i++) { + $groups[] = $this->random->generate(5, ISecureRandom::CHAR_HUMAN_READABLE); + } + return implode('-', $groups); + } + + /** + * @NoAdminRequired + * @NoSubadminRequired + * + * @param int $id + * @return array|JSONResponse + */ + public function destroy($id) { + try { + $token = $this->findTokenByIdAndUser($id); + } catch (WipeTokenException $e) { + //continue as we can destroy tokens in wipe + $token = $e->getToken(); + } catch (InvalidTokenException $e) { + return new JSONResponse([], Http::STATUS_NOT_FOUND); + } + + $this->tokenProvider->invalidateTokenById($this->uid, $token->getId()); + $this->publishActivity(Provider::APP_TOKEN_DELETED, $token->getId(), ['name' => $token->getName()]); + return []; + } + + /** + * @NoAdminRequired + * @NoSubadminRequired + * + * @param int $id + * @param array $scope + * @param string $name + * @return array|JSONResponse + */ + public function update($id, array $scope, string $name) { + try { + $token = $this->findTokenByIdAndUser($id); + } catch (InvalidTokenException $e) { + return new JSONResponse([], Http::STATUS_NOT_FOUND); + } + + $currentName = $token->getName(); + + if ($scope !== $token->getScopeAsArray()) { + $token->setScope(['filesystem' => $scope['filesystem']]); + $this->publishActivity($scope['filesystem'] ? Provider::APP_TOKEN_FILESYSTEM_GRANTED : Provider::APP_TOKEN_FILESYSTEM_REVOKED, $token->getId(), ['name' => $currentName]); + } + + if ($token instanceof INamedToken && $name !== $currentName) { + $token->setName($name); + $this->publishActivity(Provider::APP_TOKEN_RENAMED, $token->getId(), ['name' => $currentName, 'newName' => $name]); + } + + $this->tokenProvider->updateToken($token); + return []; + } + + /** + * @param string $subject + * @param int $id + * @param array $parameters + */ + private function publishActivity(string $subject, int $id, array $parameters = []): void { + $event = $this->activityManager->generateEvent(); + $event->setApp('settings') + ->setType('security') + ->setAffectedUser($this->uid) + ->setAuthor($this->uid) + ->setSubject($subject, $parameters) + ->setObject('app_token', $id, 'App Password'); + + try { + $this->activityManager->publish($event); + } catch (BadMethodCallException $e) { + $this->logger->warning('could not publish activity'); + $this->logger->logException($e); + } + } + + /** + * Find a token by given id and check if uid for current session belongs to this token + * + * @param int $id + * @return IToken + * @throws InvalidTokenException + * @throws \OC\Authentication\Exceptions\ExpiredTokenException + */ + private function findTokenByIdAndUser(int $id): IToken { + $token = $this->tokenProvider->getTokenById($id); + if ($token->getUID() !== $this->uid) { + throw new InvalidTokenException('This token does not belong to you!'); + } + return $token; + } + + /** + * @NoAdminRequired + * @NoSubadminRequired + * @PasswordConfirmationRequired + * + * @param int $id + * @return JSONResponse + * @throws InvalidTokenException + * @throws \OC\Authentication\Exceptions\ExpiredTokenException + */ + public function wipe(int $id): JSONResponse { + if (!$this->remoteWipe->markTokenForWipe($id)) { + return new JSONResponse([], Http::STATUS_BAD_REQUEST); + } + + return new JSONResponse([]); + } +} diff --git a/apps/settings/lib/Controller/CertificateController.php b/apps/settings/lib/Controller/CertificateController.php new file mode 100644 index 00000000000..c3f291c0982 --- /dev/null +++ b/apps/settings/lib/Controller/CertificateController.php @@ -0,0 +1,178 @@ +<?php +/** + * @copyright Copyright (c) 2016, ownCloud, Inc. + * + * @author Björn Schießle <bjoern@schiessle.org> + * @author Lukas Reschke <lukas@statuscode.ch> + * @author Robin Appelman <robin@icewind.nl> + * @author Roeland Jago Douma <roeland@famdouma.nl> + * @author Vincent Petry <pvince81@owncloud.com> + * + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace OCA\Settings\Controller; + +use OCP\App\IAppManager; +use OCP\AppFramework\Controller; +use OCP\AppFramework\Http; +use OCP\AppFramework\Http\DataResponse; +use OCP\ICertificateManager; +use OCP\IL10N; +use OCP\IRequest; + +class CertificateController extends Controller { + /** @var ICertificateManager */ + private $userCertificateManager; + /** @var ICertificateManager */ + private $systemCertificateManager; + /** @var IL10N */ + private $l10n; + /** @var IAppManager */ + private $appManager; + + /** + * @param string $appName + * @param IRequest $request + * @param ICertificateManager $userCertificateManager + * @param ICertificateManager $systemCertificateManager + * @param IL10N $l10n + * @param IAppManager $appManager + */ + public function __construct($appName, + IRequest $request, + ICertificateManager $userCertificateManager, + ICertificateManager $systemCertificateManager, + IL10N $l10n, + IAppManager $appManager) { + parent::__construct($appName, $request); + $this->userCertificateManager = $userCertificateManager; + $this->systemCertificateManager = $systemCertificateManager; + $this->l10n = $l10n; + $this->appManager = $appManager; + } + + /** + * Add a new personal root certificate to the users' trust store + * + * @NoAdminRequired + * @NoSubadminRequired + * @return DataResponse + */ + public function addPersonalRootCertificate() { + return $this->addCertificate($this->userCertificateManager); + } + + /** + * Add a new root certificate to a trust store + * + * @param ICertificateManager $certificateManager + * @return DataResponse + */ + private function addCertificate(ICertificateManager $certificateManager) { + $headers = []; + + if ($this->isCertificateImportAllowed() === false) { + return new DataResponse(['message' => 'Individual certificate management disabled'], Http::STATUS_FORBIDDEN, $headers); + } + + $file = $this->request->getUploadedFile('rootcert_import'); + if (empty($file)) { + return new DataResponse(['message' => 'No file uploaded'], Http::STATUS_UNPROCESSABLE_ENTITY, $headers); + } + + try { + $certificate = $certificateManager->addCertificate(file_get_contents($file['tmp_name']), $file['name']); + return new DataResponse( + [ + 'name' => $certificate->getName(), + 'commonName' => $certificate->getCommonName(), + 'organization' => $certificate->getOrganization(), + 'validFrom' => $certificate->getIssueDate()->getTimestamp(), + 'validTill' => $certificate->getExpireDate()->getTimestamp(), + 'validFromString' => $this->l10n->l('date', $certificate->getIssueDate()), + 'validTillString' => $this->l10n->l('date', $certificate->getExpireDate()), + 'issuer' => $certificate->getIssuerName(), + 'issuerOrganization' => $certificate->getIssuerOrganization(), + ], + Http::STATUS_OK, + $headers + ); + } catch (\Exception $e) { + return new DataResponse(['An error occurred.'], Http::STATUS_UNPROCESSABLE_ENTITY, $headers); + } + } + + /** + * Removes a personal root certificate from the users' trust store + * + * @NoAdminRequired + * @NoSubadminRequired + * @param string $certificateIdentifier + * @return DataResponse + */ + public function removePersonalRootCertificate($certificateIdentifier) { + + if ($this->isCertificateImportAllowed() === false) { + return new DataResponse(['Individual certificate management disabled'], Http::STATUS_FORBIDDEN); + } + + $this->userCertificateManager->removeCertificate($certificateIdentifier); + return new DataResponse(); + } + + /** + * check if certificate import is allowed + * + * @return bool + */ + protected function isCertificateImportAllowed() { + $externalStorageEnabled = $this->appManager->isEnabledForUser('files_external'); + if ($externalStorageEnabled) { + /** @var \OCA\Files_External\Service\BackendService $backendService */ + $backendService = \OC_Mount_Config::$app->getContainer()->query('\OCA\Files_External\Service\BackendService'); + if ($backendService->isUserMountingAllowed()) { + return true; + } + } + return false; + } + + /** + * Add a new personal root certificate to the system's trust store + * + * @return DataResponse + */ + public function addSystemRootCertificate() { + return $this->addCertificate($this->systemCertificateManager); + } + + /** + * Removes a personal root certificate from the users' trust store + * + * @param string $certificateIdentifier + * @return DataResponse + */ + public function removeSystemRootCertificate($certificateIdentifier) { + + if ($this->isCertificateImportAllowed() === false) { + return new DataResponse(['Individual certificate management disabled'], Http::STATUS_FORBIDDEN); + } + + $this->systemCertificateManager->removeCertificate($certificateIdentifier); + return new DataResponse(); + } +} diff --git a/apps/settings/lib/Controller/ChangePasswordController.php b/apps/settings/lib/Controller/ChangePasswordController.php new file mode 100644 index 00000000000..96b8867fff8 --- /dev/null +++ b/apps/settings/lib/Controller/ChangePasswordController.php @@ -0,0 +1,275 @@ +<?php +// FIXME: disabled for now to be able to inject IGroupManager and also use +// getSubAdmin() +//declare(strict_types=1); +/** + * + * + * @author Joas Schilling <coding@schilljs.com> + * @author Lukas Reschke <lukas@statuscode.ch> + * @author Matthew Setter <matthew@matthewsetter.com> + * @author Morris Jobke <hey@morrisjobke.de> + * @author Roeland Jago Douma <roeland@famdouma.nl> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +namespace OCA\Settings\Controller; + +use OC\HintException; +use OC\User\Session; +use OCP\App\IAppManager; +use OCP\AppFramework\Controller; +use OCP\AppFramework\Http\JSONResponse; +use OCP\IGroupManager; +use OCP\IL10N; +use OCP\IRequest; +use OCP\IUser; +use OCP\IUserManager; +use OCP\IUserSession; + +class ChangePasswordController extends Controller { + + /** @var string */ + private $userId; + + /** @var IUserManager */ + private $userManager; + + /** @var IL10N */ + private $l; + + /** @var IGroupManager */ + private $groupManager; + + /** @var Session */ + private $userSession; + + /** @var IAppManager */ + private $appManager; + + public function __construct(string $appName, + IRequest $request, + string $userId, + IUserManager $userManager, + IUserSession $userSession, + IGroupManager $groupManager, + IAppManager $appManager, + IL10N $l) { + parent::__construct($appName, $request); + + $this->userId = $userId; + $this->userManager = $userManager; + $this->userSession = $userSession; + $this->groupManager = $groupManager; + $this->appManager = $appManager; + $this->l = $l; + } + + /** + * @NoAdminRequired + * @NoSubadminRequired + * @BruteForceProtection(action=changePersonalPassword) + */ + public function changePersonalPassword(string $oldpassword = '', string $newpassword = null): JSONResponse { + /** @var IUser $user */ + $user = $this->userManager->checkPassword($this->userId, $oldpassword); + if ($user === false) { + $response = new JSONResponse([ + 'status' => 'error', + 'data' => [ + 'message' => $this->l->t('Wrong password'), + ], + ]); + $response->throttle(); + return $response; + } + + try { + if ($newpassword === null || $user->setPassword($newpassword) === false) { + return new JSONResponse([ + 'status' => 'error' + ]); + } + // password policy app throws exception + } catch(HintException $e) { + return new JSONResponse([ + 'status' => 'error', + 'data' => [ + 'message' => $e->getHint(), + ], + ]); + } + + $this->userSession->updateSessionTokenPassword($newpassword); + + return new JSONResponse([ + 'status' => 'success', + 'data' => [ + 'message' => $this->l->t('Saved'), + ], + ]); + } + + /** + * @NoAdminRequired + * @PasswordConfirmationRequired + */ + public function changeUserPassword(string $username = null, string $password = null, string $recoveryPassword = null): JSONResponse { + if ($username === null) { + return new JSONResponse([ + 'status' => 'error', + 'data' => [ + 'message' => $this->l->t('No user supplied'), + ], + ]); + } + + if ($password === null) { + return new JSONResponse([ + 'status' => 'error', + 'data' => [ + 'message' => $this->l->t('Unable to change password'), + ], + ]); + } + + $currentUser = $this->userSession->getUser(); + $targetUser = $this->userManager->get($username); + if ($currentUser === null || $targetUser === null || + !($this->groupManager->isAdmin($this->userId) || + $this->groupManager->getSubAdmin()->isUserAccessible($currentUser, $targetUser)) + ) { + return new JSONResponse([ + 'status' => 'error', + 'data' => [ + 'message' => $this->l->t('Authentication error'), + ], + ]); + } + + if ($this->appManager->isEnabledForUser('encryption')) { + //handle the recovery case + $crypt = new \OCA\Encryption\Crypto\Crypt( + \OC::$server->getLogger(), + \OC::$server->getUserSession(), + \OC::$server->getConfig(), + \OC::$server->getL10N('encryption')); + $keyStorage = \OC::$server->getEncryptionKeyStorage(); + $util = new \OCA\Encryption\Util( + new \OC\Files\View(), + $crypt, + \OC::$server->getLogger(), + \OC::$server->getUserSession(), + \OC::$server->getConfig(), + \OC::$server->getUserManager()); + $keyManager = new \OCA\Encryption\KeyManager( + $keyStorage, + $crypt, + \OC::$server->getConfig(), + \OC::$server->getUserSession(), + new \OCA\Encryption\Session(\OC::$server->getSession()), + \OC::$server->getLogger(), + $util); + $recovery = new \OCA\Encryption\Recovery( + \OC::$server->getUserSession(), + $crypt, + \OC::$server->getSecureRandom(), + $keyManager, + \OC::$server->getConfig(), + $keyStorage, + \OC::$server->getEncryptionFilesHelper(), + new \OC\Files\View()); + $recoveryAdminEnabled = $recovery->isRecoveryKeyEnabled(); + + $validRecoveryPassword = false; + $recoveryEnabledForUser = false; + if ($recoveryAdminEnabled) { + $validRecoveryPassword = $keyManager->checkRecoveryPassword($recoveryPassword); + $recoveryEnabledForUser = $recovery->isRecoveryEnabledForUser($username); + } + + if ($recoveryEnabledForUser && $recoveryPassword === '') { + return new JSONResponse([ + 'status' => 'error', + 'data' => [ + 'message' => $this->l->t('Please provide an admin recovery password; otherwise, all user data will be lost.'), + ] + ]); + } elseif ($recoveryEnabledForUser && ! $validRecoveryPassword) { + return new JSONResponse([ + 'status' => 'error', + 'data' => [ + 'message' => $this->l->t('Wrong admin recovery password. Please check the password and try again.'), + ] + ]); + } else { // now we know that everything is fine regarding the recovery password, let's try to change the password + try { + $result = $targetUser->setPassword($password, $recoveryPassword); + // password policy app throws exception + } catch(HintException $e) { + return new JSONResponse([ + 'status' => 'error', + 'data' => [ + 'message' => $e->getHint(), + ], + ]); + } + if (!$result && $recoveryEnabledForUser) { + return new JSONResponse([ + 'status' => 'error', + 'data' => [ + 'message' => $this->l->t('Backend doesn\'t support password change, but the user\'s encryption key was updated.'), + ] + ]); + } elseif (!$result && !$recoveryEnabledForUser) { + return new JSONResponse([ + 'status' => 'error', + 'data' => [ + 'message' => $this->l->t('Unable to change password'), + ] + ]); + } + } + } else { + try { + if ($targetUser->setPassword($password) === false) { + return new JSONResponse([ + 'status' => 'error', + 'data' => [ + 'message' => $this->l->t('Unable to change password'), + ], + ]); + } + // password policy app throws exception + } catch(HintException $e) { + return new JSONResponse([ + 'status' => 'error', + 'data' => [ + 'message' => $e->getHint(), + ], + ]); + } + } + + return new JSONResponse([ + 'status' => 'success', + 'data' => [ + 'username' => $username, + ], + ]); + } +} diff --git a/apps/settings/lib/Controller/CheckSetupController.php b/apps/settings/lib/Controller/CheckSetupController.php new file mode 100644 index 00000000000..620920f777b --- /dev/null +++ b/apps/settings/lib/Controller/CheckSetupController.php @@ -0,0 +1,701 @@ +<?php +/** + * @copyright Copyright (c) 2016, ownCloud, Inc. + * + * @author Arthur Schiwon <blizzz@arthur-schiwon.de> + * @author Bjoern Schiessle <bjoern@schiessle.org> + * @author Derek <derek.kelly27@gmail.com> + * @author Joas Schilling <coding@schilljs.com> + * @author Ko- <k.stoffelen@cs.ru.nl> + * @author Lukas Reschke <lukas@statuscode.ch> + * @author Morris Jobke <hey@morrisjobke.de> + * @author Robin McCorkell <robin@mccorkell.me.uk> + * @author Roeland Jago Douma <roeland@famdouma.nl> + * + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace OCA\Settings\Controller; + +use bantu\IniGetWrapper\IniGetWrapper; +use DirectoryIterator; +use Doctrine\DBAL\DBALException; +use Doctrine\DBAL\Platforms\SqlitePlatform; +use Doctrine\DBAL\Types\Type; +use GuzzleHttp\Exception\ClientException; +use OC; +use OC\AppFramework\Http; +use OC\DB\Connection; +use OC\DB\MissingIndexInformation; +use OC\DB\SchemaWrapper; +use OC\IntegrityCheck\Checker; +use OC\Lock\NoopLockingProvider; +use OC\MemoryInfo; +use OCP\AppFramework\Controller; +use OCP\AppFramework\Http\DataDisplayResponse; +use OCP\AppFramework\Http\DataResponse; +use OCP\AppFramework\Http\RedirectResponse; +use OCP\Http\Client\IClientService; +use OCP\IConfig; +use OCP\IDateTimeFormatter; +use OCP\IDBConnection; +use OCP\IL10N; +use OCP\ILogger; +use OCP\IRequest; +use OCP\IURLGenerator; +use OCP\Lock\ILockingProvider; +use OCP\Security\ISecureRandom; +use Symfony\Component\EventDispatcher\EventDispatcherInterface; +use Symfony\Component\EventDispatcher\GenericEvent; + +class CheckSetupController extends Controller { + /** @var IConfig */ + private $config; + /** @var IClientService */ + private $clientService; + /** @var IURLGenerator */ + private $urlGenerator; + /** @var IL10N */ + private $l10n; + /** @var Checker */ + private $checker; + /** @var ILogger */ + private $logger; + /** @var EventDispatcherInterface */ + private $dispatcher; + /** @var IDBConnection|Connection */ + private $db; + /** @var ILockingProvider */ + private $lockingProvider; + /** @var IDateTimeFormatter */ + private $dateTimeFormatter; + /** @var MemoryInfo */ + private $memoryInfo; + /** @var ISecureRandom */ + private $secureRandom; + + public function __construct($AppName, + IRequest $request, + IConfig $config, + IClientService $clientService, + IURLGenerator $urlGenerator, + IL10N $l10n, + Checker $checker, + ILogger $logger, + EventDispatcherInterface $dispatcher, + IDBConnection $db, + ILockingProvider $lockingProvider, + IDateTimeFormatter $dateTimeFormatter, + MemoryInfo $memoryInfo, + ISecureRandom $secureRandom) { + parent::__construct($AppName, $request); + $this->config = $config; + $this->clientService = $clientService; + $this->urlGenerator = $urlGenerator; + $this->l10n = $l10n; + $this->checker = $checker; + $this->logger = $logger; + $this->dispatcher = $dispatcher; + $this->db = $db; + $this->lockingProvider = $lockingProvider; + $this->dateTimeFormatter = $dateTimeFormatter; + $this->memoryInfo = $memoryInfo; + $this->secureRandom = $secureRandom; + } + + /** + * Checks if the server can connect to the internet using HTTPS and HTTP + * @return bool + */ + private function hasInternetConnectivityProblems(): bool { + if ($this->config->getSystemValue('has_internet_connection', true) === false) { + return false; + } + + $siteArray = $this->config->getSystemValue('connectivity_check_domains', [ + 'www.nextcloud.com', 'www.startpage.com', 'www.eff.org', 'www.edri.org' + ]); + + foreach($siteArray as $site) { + if ($this->isSiteReachable($site)) { + return false; + } + } + return true; + } + + /** + * Checks if the Nextcloud server can connect to a specific URL using both HTTPS and HTTP + * @return bool + */ + private function isSiteReachable($sitename) { + $httpSiteName = 'http://' . $sitename . '/'; + $httpsSiteName = 'https://' . $sitename . '/'; + + try { + $client = $this->clientService->newClient(); + $client->get($httpSiteName); + $client->get($httpsSiteName); + } catch (\Exception $e) { + $this->logger->logException($e, ['app' => 'internet_connection_check']); + return false; + } + return true; + } + + /** + * Checks whether a local memcache is installed or not + * @return bool + */ + private function isMemcacheConfigured() { + return $this->config->getSystemValue('memcache.local', null) !== null; + } + + /** + * Whether PHP can generate "secure" pseudorandom integers + * + * @return bool + */ + private function isRandomnessSecure() { + try { + $this->secureRandom->generate(1); + } catch (\Exception $ex) { + return false; + } + return true; + } + + /** + * Public for the sake of unit-testing + * + * @return array + */ + protected function getCurlVersion() { + return curl_version(); + } + + /** + * Check if the used SSL lib is outdated. Older OpenSSL and NSS versions do + * have multiple bugs which likely lead to problems in combination with + * functionality required by ownCloud such as SNI. + * + * @link https://github.com/owncloud/core/issues/17446#issuecomment-122877546 + * @link https://bugzilla.redhat.com/show_bug.cgi?id=1241172 + * @return string + */ + private function isUsedTlsLibOutdated() { + // Don't run check when: + // 1. Server has `has_internet_connection` set to false + // 2. AppStore AND S2S is disabled + if(!$this->config->getSystemValue('has_internet_connection', true)) { + return ''; + } + if(!$this->config->getSystemValue('appstoreenabled', true) + && $this->config->getAppValue('files_sharing', 'outgoing_server2server_share_enabled', 'yes') === 'no' + && $this->config->getAppValue('files_sharing', 'incoming_server2server_share_enabled', 'yes') === 'no') { + return ''; + } + + $versionString = $this->getCurlVersion(); + if(isset($versionString['ssl_version'])) { + $versionString = $versionString['ssl_version']; + } else { + return ''; + } + + $features = (string)$this->l10n->t('installing and updating apps via the app store or Federated Cloud Sharing'); + if(!$this->config->getSystemValue('appstoreenabled', true)) { + $features = (string)$this->l10n->t('Federated Cloud Sharing'); + } + + // Check if at least OpenSSL after 1.01d or 1.0.2b + if(strpos($versionString, 'OpenSSL/') === 0) { + $majorVersion = substr($versionString, 8, 5); + $patchRelease = substr($versionString, 13, 6); + + if(($majorVersion === '1.0.1' && ord($patchRelease) < ord('d')) || + ($majorVersion === '1.0.2' && ord($patchRelease) < ord('b'))) { + return $this->l10n->t('cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably.', ['OpenSSL', $versionString, $features]); + } + } + + // Check if NSS and perform heuristic check + if(strpos($versionString, 'NSS/') === 0) { + try { + $firstClient = $this->clientService->newClient(); + $firstClient->get('https://nextcloud.com/'); + + $secondClient = $this->clientService->newClient(); + $secondClient->get('https://nextcloud.com/'); + } catch (ClientException $e) { + if($e->getResponse()->getStatusCode() === 400) { + return $this->l10n->t('cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably.', ['NSS', $versionString, $features]); + } + } + } + + return ''; + } + + /** + * Whether the version is outdated + * + * @return bool + */ + protected function isPhpOutdated() { + if (version_compare(PHP_VERSION, '7.1.0', '<')) { + return true; + } + + return false; + } + + /** + * Whether the php version is still supported (at time of release) + * according to: https://secure.php.net/supported-versions.php + * + * @return array + */ + private function isPhpSupported() { + return ['eol' => $this->isPhpOutdated(), 'version' => PHP_VERSION]; + } + + /** + * Check if the reverse proxy configuration is working as expected + * + * @return bool + */ + private function forwardedForHeadersWorking() { + $trustedProxies = $this->config->getSystemValue('trusted_proxies', []); + $remoteAddress = $this->request->getHeader('REMOTE_ADDR'); + + if (empty($trustedProxies) && $this->request->getHeader('X-Forwarded-Host') !== '') { + return false; + } + + if (\is_array($trustedProxies) && \in_array($remoteAddress, $trustedProxies, true)) { + return $remoteAddress !== $this->request->getRemoteAddress(); + } + + // either not enabled or working correctly + return true; + } + + /** + * Checks if the correct memcache module for PHP is installed. Only + * fails if memcached is configured and the working module is not installed. + * + * @return bool + */ + private function isCorrectMemcachedPHPModuleInstalled() { + if ($this->config->getSystemValue('memcache.distributed', null) !== '\OC\Memcache\Memcached') { + return true; + } + + // there are two different memcached modules for PHP + // we only support memcached and not memcache + // https://code.google.com/p/memcached/wiki/PHPClientComparison + return !(!extension_loaded('memcached') && extension_loaded('memcache')); + } + + /** + * Checks if set_time_limit is not disabled. + * + * @return bool + */ + private function isSettimelimitAvailable() { + if (function_exists('set_time_limit') + && strpos(@ini_get('disable_functions'), 'set_time_limit') === false) { + return true; + } + + return false; + } + + /** + * @return RedirectResponse + */ + public function rescanFailedIntegrityCheck() { + $this->checker->runInstanceVerification(); + return new RedirectResponse( + $this->urlGenerator->linkToRoute('settings.AdminSettings.index', ['section' => 'overview']) + ); + } + + /** + * @NoCSRFRequired + * @return DataResponse + */ + public function getFailedIntegrityCheckFiles() { + if(!$this->checker->isCodeCheckEnforced()) { + return new DataDisplayResponse('Integrity checker has been disabled. Integrity cannot be verified.'); + } + + $completeResults = $this->checker->getResults(); + + if(!empty($completeResults)) { + $formattedTextResponse = 'Technical information +===================== +The following list covers which files have failed the integrity check. Please read +the previous linked documentation to learn more about the errors and how to fix +them. + +Results +======= +'; + foreach($completeResults as $context => $contextResult) { + $formattedTextResponse .= "- $context\n"; + + foreach($contextResult as $category => $result) { + $formattedTextResponse .= "\t- $category\n"; + if($category !== 'EXCEPTION') { + foreach ($result as $key => $results) { + $formattedTextResponse .= "\t\t- $key\n"; + } + } else { + foreach ($result as $key => $results) { + $formattedTextResponse .= "\t\t- $results\n"; + } + } + + } + } + + $formattedTextResponse .= ' +Raw output +========== +'; + $formattedTextResponse .= print_r($completeResults, true); + } else { + $formattedTextResponse = 'No errors have been found.'; + } + + + $response = new DataDisplayResponse( + $formattedTextResponse, + Http::STATUS_OK, + [ + 'Content-Type' => 'text/plain', + ] + ); + + return $response; + } + + /** + * Checks whether a PHP opcache is properly set up + * @return bool + */ + protected function isOpcacheProperlySetup() { + $iniWrapper = new IniGetWrapper(); + + if(!$iniWrapper->getBool('opcache.enable')) { + return false; + } + + if(!$iniWrapper->getBool('opcache.save_comments')) { + return false; + } + + if($iniWrapper->getNumeric('opcache.max_accelerated_files') < 10000) { + return false; + } + + if($iniWrapper->getNumeric('opcache.memory_consumption') < 128) { + return false; + } + + if($iniWrapper->getNumeric('opcache.interned_strings_buffer') < 8) { + return false; + } + + return true; + } + + /** + * Check if the required FreeType functions are present + * @return bool + */ + protected function hasFreeTypeSupport() { + return function_exists('imagettfbbox') && function_exists('imagettftext'); + } + + protected function hasMissingIndexes(): array { + $indexInfo = new MissingIndexInformation(); + // Dispatch event so apps can also hint for pending index updates if needed + $event = new GenericEvent($indexInfo); + $this->dispatcher->dispatch(IDBConnection::CHECK_MISSING_INDEXES_EVENT, $event); + + return $indexInfo->getListOfMissingIndexes(); + } + + protected function isSqliteUsed() { + return strpos($this->config->getSystemValue('dbtype'), 'sqlite') !== false; + } + + protected function isReadOnlyConfig(): bool { + return \OC_Helper::isReadOnlyConfigEnabled(); + } + + protected function hasValidTransactionIsolationLevel(): bool { + try { + if ($this->db->getDatabasePlatform() instanceof SqlitePlatform) { + return true; + } + + return $this->db->getTransactionIsolation() === Connection::TRANSACTION_READ_COMMITTED; + } catch (DBALException $e) { + // ignore + } + + return true; + } + + protected function hasFileinfoInstalled(): bool { + return \OC_Util::fileInfoLoaded(); + } + + protected function hasWorkingFileLocking(): bool { + return !($this->lockingProvider instanceof NoopLockingProvider); + } + + protected function getSuggestedOverwriteCliURL(): string { + $suggestedOverwriteCliUrl = ''; + if ($this->config->getSystemValue('overwrite.cli.url', '') === '') { + $suggestedOverwriteCliUrl = $this->request->getServerProtocol() . '://' . $this->request->getInsecureServerHost() . \OC::$WEBROOT; + if (!$this->config->getSystemValue('config_is_read_only', false)) { + // Set the overwrite URL when it was not set yet. + $this->config->setSystemValue('overwrite.cli.url', $suggestedOverwriteCliUrl); + $suggestedOverwriteCliUrl = ''; + } + } + return $suggestedOverwriteCliUrl; + } + + protected function getLastCronInfo(): array { + $lastCronRun = $this->config->getAppValue('core', 'lastcron', 0); + return [ + 'diffInSeconds' => time() - $lastCronRun, + 'relativeTime' => $this->dateTimeFormatter->formatTimeSpan($lastCronRun), + 'backgroundJobsUrl' => $this->urlGenerator->linkToRoute('settings.AdminSettings.index', ['section' => 'server']) . '#backgroundjobs', + ]; + } + + protected function getCronErrors() { + $errors = json_decode($this->config->getAppValue('core', 'cronErrors', ''), true); + + if (is_array($errors)) { + return $errors; + } + + return []; + } + + protected function isPHPMailerUsed(): bool { + return $this->config->getSystemValue('mail_smtpmode', 'smtp') === 'php'; + } + + protected function hasOpcacheLoaded(): bool { + return function_exists('opcache_get_status'); + } + + /** + * Iterates through the configured app roots and + * tests if the subdirectories are owned by the same user than the current user. + * + * @return array + */ + protected function getAppDirsWithDifferentOwner(): array { + $currentUser = posix_getuid(); + $appDirsWithDifferentOwner = [[]]; + + foreach (OC::$APPSROOTS as $appRoot) { + if ($appRoot['writable'] === true) { + $appDirsWithDifferentOwner[] = $this->getAppDirsWithDifferentOwnerForAppRoot($currentUser, $appRoot); + } + } + + $appDirsWithDifferentOwner = array_merge(...$appDirsWithDifferentOwner); + sort($appDirsWithDifferentOwner); + + return $appDirsWithDifferentOwner; + } + + /** + * Tests if the directories for one apps directory are writable by the current user. + * + * @param int $currentUser The current user + * @param array $appRoot The app root config + * @return string[] The none writable directory paths inside the app root + */ + private function getAppDirsWithDifferentOwnerForAppRoot(int $currentUser, array $appRoot): array { + $appDirsWithDifferentOwner = []; + $appsPath = $appRoot['path']; + $appsDir = new DirectoryIterator($appRoot['path']); + + foreach ($appsDir as $fileInfo) { + if ($fileInfo->isDir() && !$fileInfo->isDot()) { + $absAppPath = $appsPath . DIRECTORY_SEPARATOR . $fileInfo->getFilename(); + $appDirUser = fileowner($absAppPath); + if ($appDirUser !== $currentUser) { + $appDirsWithDifferentOwner[] = $absAppPath; + } + } + } + + return $appDirsWithDifferentOwner; + } + + /** + * Checks for potential PHP modules that would improve the instance + * + * @return string[] A list of PHP modules that is recommended + */ + protected function hasRecommendedPHPModules(): array { + $recommendedPHPModules = []; + + if (!extension_loaded('intl')) { + $recommendedPHPModules[] = 'intl'; + } + + if ($this->config->getAppValue('theming', 'enabled', 'no') === 'yes') { + if (!extension_loaded('imagick')) { + $recommendedPHPModules[] = 'imagick'; + } + } + + return $recommendedPHPModules; + } + + protected function isMysqlUsedWithoutUTF8MB4(): bool { + return ($this->config->getSystemValue('dbtype', 'sqlite') === 'mysql') && ($this->config->getSystemValue('mysql.utf8mb4', false) === false); + } + + protected function hasBigIntConversionPendingColumns(): array { + // copy of ConvertFilecacheBigInt::getColumnsByTable() + $tables = [ + 'activity' => ['activity_id', 'object_id'], + 'activity_mq' => ['mail_id'], + 'filecache' => ['fileid', 'storage', 'parent', 'mimetype', 'mimepart', 'mtime', 'storage_mtime'], + 'mimetypes' => ['id'], + 'storages' => ['numeric_id'], + ]; + + $schema = new SchemaWrapper($this->db); + $isSqlite = $this->db->getDatabasePlatform() instanceof SqlitePlatform; + $pendingColumns = []; + + foreach ($tables as $tableName => $columns) { + if (!$schema->hasTable($tableName)) { + continue; + } + + $table = $schema->getTable($tableName); + foreach ($columns as $columnName) { + $column = $table->getColumn($columnName); + $isAutoIncrement = $column->getAutoincrement(); + $isAutoIncrementOnSqlite = $isSqlite && $isAutoIncrement; + if ($column->getType()->getName() !== Type::BIGINT && !$isAutoIncrementOnSqlite) { + $pendingColumns[] = $tableName . '.' . $columnName; + } + } + } + + return $pendingColumns; + } + + protected function isEnoughTempSpaceAvailableIfS3PrimaryStorageIsUsed(): bool { + $objectStore = $this->config->getSystemValue('objectstore', null); + $objectStoreMultibucket = $this->config->getSystemValue('objectstore_multibucket', null); + + if (!isset($objectStoreMultibucket) && !isset($objectStore)) { + return true; + } + + if (isset($objectStoreMultibucket['class']) && $objectStoreMultibucket['class'] !== 'OC\\Files\\ObjectStore\\S3') { + return true; + } + + if (isset($objectStore['class']) && $objectStore['class'] !== 'OC\\Files\\ObjectStore\\S3') { + return true; + } + + $tempPath = sys_get_temp_dir(); + if (!is_dir($tempPath)) { + $this->logger->error('Error while checking the temporary PHP path - it was not properly set to a directory. value: ' . $tempPath); + return false; + } + $freeSpaceInTemp = disk_free_space($tempPath); + if ($freeSpaceInTemp === false) { + $this->logger->error('Error while checking the available disk space of temporary PHP path - no free disk space returned. temporary path: ' . $tempPath); + return false; + } + + $freeSpaceInTempInGB = $freeSpaceInTemp / 1024 / 1024 / 1024; + if ($freeSpaceInTempInGB > 50) { + return true; + } + + $this->logger->warning('Checking the available space in the temporary path resulted in ' . round($freeSpaceInTempInGB, 1) . ' GB instead of the recommended 50GB. Path: ' . $tempPath); + return false; + } + + /** + * @return DataResponse + */ + public function check() { + return new DataResponse( + [ + 'isGetenvServerWorking' => !empty(getenv('PATH')), + 'isReadOnlyConfig' => $this->isReadOnlyConfig(), + 'hasValidTransactionIsolationLevel' => $this->hasValidTransactionIsolationLevel(), + 'hasFileinfoInstalled' => $this->hasFileinfoInstalled(), + 'hasWorkingFileLocking' => $this->hasWorkingFileLocking(), + 'suggestedOverwriteCliURL' => $this->getSuggestedOverwriteCliURL(), + 'cronInfo' => $this->getLastCronInfo(), + 'cronErrors' => $this->getCronErrors(), + 'serverHasInternetConnectionProblems' => $this->hasInternetConnectivityProblems(), + 'isMemcacheConfigured' => $this->isMemcacheConfigured(), + 'memcacheDocs' => $this->urlGenerator->linkToDocs('admin-performance'), + 'isRandomnessSecure' => $this->isRandomnessSecure(), + 'securityDocs' => $this->urlGenerator->linkToDocs('admin-security'), + 'isUsedTlsLibOutdated' => $this->isUsedTlsLibOutdated(), + 'phpSupported' => $this->isPhpSupported(), + 'forwardedForHeadersWorking' => $this->forwardedForHeadersWorking(), + 'reverseProxyDocs' => $this->urlGenerator->linkToDocs('admin-reverse-proxy'), + 'isCorrectMemcachedPHPModuleInstalled' => $this->isCorrectMemcachedPHPModuleInstalled(), + 'hasPassedCodeIntegrityCheck' => $this->checker->hasPassedCheck(), + 'codeIntegrityCheckerDocumentation' => $this->urlGenerator->linkToDocs('admin-code-integrity'), + 'isOpcacheProperlySetup' => $this->isOpcacheProperlySetup(), + 'hasOpcacheLoaded' => $this->hasOpcacheLoaded(), + 'phpOpcacheDocumentation' => $this->urlGenerator->linkToDocs('admin-php-opcache'), + 'isSettimelimitAvailable' => $this->isSettimelimitAvailable(), + 'hasFreeTypeSupport' => $this->hasFreeTypeSupport(), + 'missingIndexes' => $this->hasMissingIndexes(), + 'isSqliteUsed' => $this->isSqliteUsed(), + 'databaseConversionDocumentation' => $this->urlGenerator->linkToDocs('admin-db-conversion'), + 'isPHPMailerUsed' => $this->isPHPMailerUsed(), + 'mailSettingsDocumentation' => $this->urlGenerator->getAbsoluteURL('index.php/settings/admin'), + 'isMemoryLimitSufficient' => $this->memoryInfo->isMemoryLimitSufficient(), + 'appDirsWithDifferentOwner' => $this->getAppDirsWithDifferentOwner(), + 'recommendedPHPModules' => $this->hasRecommendedPHPModules(), + 'pendingBigIntConversionColumns' => $this->hasBigIntConversionPendingColumns(), + 'isMysqlUsedWithoutUTF8MB4' => $this->isMysqlUsedWithoutUTF8MB4(), + 'isEnoughTempSpaceAvailableIfS3PrimaryStorageIsUsed' => $this->isEnoughTempSpaceAvailableIfS3PrimaryStorageIsUsed(), + ] + ); + } +} diff --git a/apps/settings/lib/Controller/CommonSettingsTrait.php b/apps/settings/lib/Controller/CommonSettingsTrait.php new file mode 100644 index 00000000000..69fe28d6fe5 --- /dev/null +++ b/apps/settings/lib/Controller/CommonSettingsTrait.php @@ -0,0 +1,154 @@ +<?php +/** + * @copyright Copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de> + * + * @author Arthur Schiwon <blizzz@arthur-schiwon.de> + * @author Robin Appelman <robin@icewind.nl> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\Settings\Controller; + +use OCP\AppFramework\Http\TemplateResponse; +use OCP\Group\ISubAdmin; +use OCP\IGroupManager; +use OCP\INavigationManager; +use OCP\IUser; +use OCP\IUserSession; +use OCP\Settings\IManager as ISettingsManager; +use OCP\Settings\IIconSection; +use OCP\Settings\ISettings; + +trait CommonSettingsTrait { + + /** @var ISettingsManager */ + private $settingsManager; + + /** @var INavigationManager */ + private $navigationManager; + + /** @var IUserSession */ + private $userSession; + + /** @var IGroupManager */ + private $groupManager; + + /** @var ISubAdmin */ + private $subAdmin; + + /** + * @param string $currentSection + * @return array + */ + private function getNavigationParameters($currentType, $currentSection) { + $templateParameters = [ + 'personal' => $this->formatPersonalSections($currentType, $currentSection), + 'admin' => [] + ]; + + /** @var IUser $user */ + $user = $this->userSession->getUser(); + $isAdmin = $this->groupManager->isAdmin($user->getUID()); + $isSubAdmin = $this->subAdmin->isSubAdmin($user); + if ($isAdmin || $isSubAdmin) { + $templateParameters['admin'] = $this->formatAdminSections( + $currentType, + $currentSection, + !$isAdmin && $isSubAdmin + ); + } + + return [ + 'forms' => $templateParameters + ]; + } + + protected function formatSections($sections, $currentSection, $type, $currentType, bool $subAdminOnly = false) { + $templateParameters = []; + /** @var \OCP\Settings\ISection[] $prioritizedSections */ + foreach($sections as $prioritizedSections) { + foreach ($prioritizedSections as $section) { + if($type === 'admin') { + $settings = $this->settingsManager->getAdminSettings($section->getID(), $subAdminOnly); + } else if($type === 'personal') { + $settings = $this->settingsManager->getPersonalSettings($section->getID()); + } + if (empty($settings) && !($section->getID() === 'additional' && count(\OC_App::getForms('admin')) > 0)) { + continue; + } + + $icon = ''; + if ($section instanceof IIconSection) { + $icon = $section->getIcon(); + } + + $active = $section->getID() === $currentSection + && $type === $currentType; + + $templateParameters[] = [ + 'anchor' => $section->getID(), + 'section-name' => $section->getName(), + 'active' => $active, + 'icon' => $icon, + ]; + } + } + return $templateParameters; + } + + protected function formatPersonalSections($currentType, $currentSections) { + $sections = $this->settingsManager->getPersonalSections(); + $templateParameters = $this->formatSections($sections, $currentSections, 'personal', $currentType); + + return $templateParameters; + } + + protected function formatAdminSections($currentType, $currentSections, bool $subAdminOnly) { + $sections = $this->settingsManager->getAdminSections(); + $templateParameters = $this->formatSections($sections, $currentSections, 'admin', $currentType, $subAdminOnly); + + return $templateParameters; + } + + /** + * @param ISettings[] $settings + * @return array + */ + private function formatSettings($settings) { + $html = ''; + foreach ($settings as $prioritizedSettings) { + foreach ($prioritizedSettings as $setting) { + /** @var \OCP\Settings\ISettings $setting */ + $form = $setting->getForm(); + $html .= $form->renderAs('')->render(); + } + } + return ['content' => $html]; + } + + private function getIndexResponse($type, $section) { + $this->navigationManager->setActiveEntry('settings'); + $templateParams = []; + $templateParams = array_merge($templateParams, $this->getNavigationParameters($type, $section)); + $templateParams = array_merge($templateParams, $this->getSettings($section)); + + return new TemplateResponse('settings', 'settings/frame', $templateParams); + } + + abstract protected function getSettings($section); +} diff --git a/apps/settings/lib/Controller/LogSettingsController.php b/apps/settings/lib/Controller/LogSettingsController.php new file mode 100644 index 00000000000..67f2953bf29 --- /dev/null +++ b/apps/settings/lib/Controller/LogSettingsController.php @@ -0,0 +1,60 @@ +<?php +/** + * @copyright Copyright (c) 2016, ownCloud, Inc. + * + * @author Georg Ehrke <oc.list@georgehrke.com> + * @author Lukas Reschke <lukas@statuscode.ch> + * @author Morris Jobke <hey@morrisjobke.de> + * @author Thomas Müller <thomas.mueller@tmit.eu> + * @author Thomas Pulzer <t.pulzer@kniel.de> + * + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace OCA\Settings\Controller; + +use OC\Log; +use OCP\AppFramework\Controller; +use OCP\AppFramework\Http\StreamResponse; +use OCP\IRequest; + +class LogSettingsController extends Controller { + + /** @var Log */ + private $log; + + public function __construct(string $appName, IRequest $request, Log $logger) { + parent::__construct($appName, $request); + $this->log = $logger; + } + + /** + * download logfile + * + * @NoCSRFRequired + * + * @return StreamResponse + */ + public function download() { + if(!$this->log instanceof Log) { + throw new \UnexpectedValueException('Log file not available'); + } + $resp = new StreamResponse($this->log->getLogPath()); + $resp->addHeader('Content-Type', 'application/octet-stream'); + $resp->addHeader('Content-Disposition', 'attachment; filename="nextcloud.log"'); + return $resp; + } +} diff --git a/apps/settings/lib/Controller/MailSettingsController.php b/apps/settings/lib/Controller/MailSettingsController.php new file mode 100644 index 00000000000..3f91586b98e --- /dev/null +++ b/apps/settings/lib/Controller/MailSettingsController.php @@ -0,0 +1,169 @@ +<?php +/** + * @copyright Copyright (c) 2017 Joas Schilling <coding@schilljs.com> + * @copyright Copyright (c) 2016, ownCloud, Inc. + * + * @author Joas Schilling <coding@schilljs.com> + * @author Lukas Reschke <lukas@statuscode.ch> + * @author Morris Jobke <hey@morrisjobke.de> + * + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace OCA\Settings\Controller; + +use OCP\AppFramework\Controller; +use OCP\AppFramework\Http; +use OCP\AppFramework\Http\DataResponse; +use OCP\IRequest; +use OCP\IL10N; +use OCP\IConfig; +use OCP\IUserSession; +use OCP\Mail\IMailer; + +class MailSettingsController extends Controller { + + /** @var IL10N */ + private $l10n; + /** @var IConfig */ + private $config; + /** @var IUserSession */ + private $userSession; + /** @var IMailer */ + private $mailer; + + /** + * @param string $appName + * @param IRequest $request + * @param IL10N $l10n + * @param IConfig $config + * @param IUserSession $userSession + * @param IMailer $mailer + */ + public function __construct($appName, + IRequest $request, + IL10N $l10n, + IConfig $config, + IUserSession $userSession, + IMailer $mailer) { + parent::__construct($appName, $request); + $this->l10n = $l10n; + $this->config = $config; + $this->userSession = $userSession; + $this->mailer = $mailer; + } + + /** + * Sets the email settings + * + * @PasswordConfirmationRequired + * + * @param string $mail_domain + * @param string $mail_from_address + * @param string $mail_smtpmode + * @param string $mail_smtpsecure + * @param string $mail_smtphost + * @param string $mail_smtpauthtype + * @param int $mail_smtpauth + * @param string $mail_smtpport + * @return DataResponse + */ + public function setMailSettings($mail_domain, + $mail_from_address, + $mail_smtpmode, + $mail_smtpsecure, + $mail_smtphost, + $mail_smtpauthtype, + $mail_smtpauth, + $mail_smtpport, + $mail_sendmailmode) { + + $params = get_defined_vars(); + $configs = []; + foreach($params as $key => $value) { + $configs[$key] = empty($value) ? null : $value; + } + + // Delete passwords from config in case no auth is specified + if ($params['mail_smtpauth'] !== 1) { + $configs['mail_smtpname'] = null; + $configs['mail_smtppassword'] = null; + } + + $this->config->setSystemValues($configs); + + return new DataResponse(); + } + + /** + * Store the credentials used for SMTP in the config + * + * @PasswordConfirmationRequired + * + * @param string $mail_smtpname + * @param string $mail_smtppassword + * @return DataResponse + */ + public function storeCredentials($mail_smtpname, $mail_smtppassword) { + if ($mail_smtppassword === '********') { + return new DataResponse($this->l10n->t('Invalid SMTP password.'), Http::STATUS_BAD_REQUEST); + } + + $this->config->setSystemValues([ + 'mail_smtpname' => $mail_smtpname, + 'mail_smtppassword' => $mail_smtppassword, + ]); + + return new DataResponse(); + } + + /** + * Send a mail to test the settings + * @return DataResponse + */ + public function sendTestMail() { + $email = $this->config->getUserValue($this->userSession->getUser()->getUID(), $this->appName, 'email', ''); + if (!empty($email)) { + try { + $displayName = $this->userSession->getUser()->getDisplayName(); + + $template = $this->mailer->createEMailTemplate('settings.TestEmail', [ + 'displayname' => $displayName, + ]); + + $template->setSubject($this->l10n->t('Email setting test')); + $template->addHeader(); + $template->addHeading($this->l10n->t('Well done, %s!', [$displayName])); + $template->addBodyText($this->l10n->t('If you received this email, the email configuration seems to be correct.')); + $template->addFooter(); + + $message = $this->mailer->createMessage(); + $message->setTo([$email => $displayName]); + $message->useTemplate($template); + $errors = $this->mailer->send($message); + if (!empty($errors)) { + throw new \RuntimeException($this->l10n->t('Email could not be sent. Check your mail server log')); + } + return new DataResponse(); + } catch (\Exception $e) { + return new DataResponse($this->l10n->t('A problem occurred while sending the email. Please revise your settings. (Error: %s)', [$e->getMessage()]), Http::STATUS_BAD_REQUEST); + } + } + + return new DataResponse($this->l10n->t('You need to set your user email before being able to send test emails.'), Http::STATUS_BAD_REQUEST); + } + +} diff --git a/apps/settings/lib/Controller/PersonalSettingsController.php b/apps/settings/lib/Controller/PersonalSettingsController.php new file mode 100644 index 00000000000..74dbfd05ffe --- /dev/null +++ b/apps/settings/lib/Controller/PersonalSettingsController.php @@ -0,0 +1,112 @@ +<?php +/** + * @copyright Copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de> + * + * @author Arthur Schiwon <blizzz@arthur-schiwon.de> + * @author Robin Appelman <robin@icewind.nl> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\Settings\Controller; + +use OCP\AppFramework\Controller; +use OCP\AppFramework\Http\TemplateResponse; +use OCP\Group\ISubAdmin; +use OCP\IGroupManager; +use OCP\INavigationManager; +use OCP\IRequest; +use OCP\IUserSession; +use OCP\Settings\IManager as ISettingsManager; +use OCP\Template; + +class PersonalSettingsController extends Controller { + use CommonSettingsTrait; + + public function __construct( + $appName, + IRequest $request, + INavigationManager $navigationManager, + ISettingsManager $settingsManager, + IUserSession $userSession, + IGroupManager $groupManager, + ISubAdmin $subAdmin + ) { + parent::__construct($appName, $request); + $this->navigationManager = $navigationManager; + $this->settingsManager = $settingsManager; + $this->userSession = $userSession; + $this->subAdmin = $subAdmin; + $this->groupManager = $groupManager; + } + + /** + * @param string $section + * @return TemplateResponse + * + * @NoCSRFRequired + * @NoAdminRequired + * @NoSubadminRequired + */ + public function index($section) { + return $this->getIndexResponse('personal', $section); + + } + + /** + * @param string $section + * @return array + */ + protected function getSettings($section) { + $settings = $this->settingsManager->getPersonalSettings($section); + $formatted = $this->formatSettings($settings); + if($section === 'additional') { + $formatted['content'] .= $this->getLegacyForms(); + } + return $formatted; + } + + /** + * @return bool|string + */ + private function getLegacyForms() { + $forms = \OC_App::getForms('personal'); + + $forms = array_map(function ($form) { + if (preg_match('%(<h2(?P<class>[^>]*)>.*?</h2>)%i', $form, $regs)) { + $sectionName = str_replace('<h2' . $regs['class'] . '>', '', $regs[0]); + $sectionName = str_replace('</h2>', '', $sectionName); + $anchor = strtolower($sectionName); + $anchor = str_replace(' ', '-', $anchor); + + return array( + 'anchor' => $anchor, + 'section-name' => $sectionName, + 'form' => $form + ); + } + return array( + 'form' => $form + ); + }, $forms); + + $out = new Template('settings', 'settings/additional'); + $out->assign('forms', $forms); + + return $out->fetchPage(); + } +} diff --git a/apps/settings/lib/Controller/TwoFactorSettingsController.php b/apps/settings/lib/Controller/TwoFactorSettingsController.php new file mode 100644 index 00000000000..08f8b4264d6 --- /dev/null +++ b/apps/settings/lib/Controller/TwoFactorSettingsController.php @@ -0,0 +1,60 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @author 2018 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\Settings\Controller; + +use OC\Authentication\TwoFactorAuth\EnforcementState; +use OC\Authentication\TwoFactorAuth\MandatoryTwoFactor; +use OCP\AppFramework\Controller; +use OCP\AppFramework\Http\JSONResponse; +use OCP\IRequest; + +class TwoFactorSettingsController extends Controller { + + /** @var MandatoryTwoFactor */ + private $mandatoryTwoFactor; + + public function __construct(string $appName, + IRequest $request, + MandatoryTwoFactor $mandatoryTwoFactor) { + parent::__construct($appName, $request); + + $this->mandatoryTwoFactor = $mandatoryTwoFactor; + } + + public function index(): JSONResponse { + return new JSONResponse($this->mandatoryTwoFactor->getState()); + } + + public function update(bool $enforced, array $enforcedGroups = [], array $excludedGroups = []): JSONResponse { + $this->mandatoryTwoFactor->setState( + new EnforcementState($enforced, $enforcedGroups, $excludedGroups) + ); + + return new JSONResponse($this->mandatoryTwoFactor->getState()); + } + +} diff --git a/apps/settings/lib/Controller/UsersController.php b/apps/settings/lib/Controller/UsersController.php new file mode 100644 index 00000000000..aaa4736087e --- /dev/null +++ b/apps/settings/lib/Controller/UsersController.php @@ -0,0 +1,498 @@ +<?php +// FIXME: disabled for now to be able to inject IGroupManager and also use +// getSubAdmin() +//declare(strict_types=1); +/** + * @copyright Copyright (c) 2016, ownCloud, Inc. + * + * @author Arthur Schiwon <blizzz@arthur-schiwon.de> + * @author Bjoern Schiessle <bjoern@schiessle.org> + * @author Björn Schießle <bjoern@schiessle.org> + * @author Christoph Wurst <christoph@owncloud.com> + * @author Clark Tomlinson <fallen013@gmail.com> + * @author Joas Schilling <coding@schilljs.com> + * @author Lukas Reschke <lukas@statuscode.ch> + * @author Morris Jobke <hey@morrisjobke.de> + * @author Robin Appelman <robin@icewind.nl> + * @author Roeland Jago Douma <roeland@famdouma.nl> + * @author Thomas Müller <thomas.mueller@tmit.eu> + * @author Thomas Pulzer <t.pulzer@kniel.de> + * @author Tobia De Koninck <tobia@ledfan.be> + * @author Tobias Kaminsky <tobias@kaminsky.me> + * @author Vincent Petry <pvince81@owncloud.com> + * + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace OCA\Settings\Controller; + +use OC\Accounts\AccountManager; +use OC\AppFramework\Http; +use OC\Encryption\Exceptions\ModuleDoesNotExistsException; +use OC\ForbiddenException; +use OC\Security\IdentityProof\Manager; +use OCA\User_LDAP\User_Proxy; +use OCP\App\IAppManager; +use OCP\AppFramework\Controller; +use OCP\AppFramework\Http\DataResponse; +use OCP\AppFramework\Http\TemplateResponse; +use OCP\BackgroundJob\IJobList; +use OCP\Encryption\IManager; +use OCP\IConfig; +use OCP\IGroupManager; +use OCP\IL10N; +use OCP\IRequest; +use OCP\IUser; +use OCP\IUserManager; +use OCP\IUserSession; +use OCP\L10N\IFactory; +use OCP\Mail\IMailer; +use OCA\Settings\BackgroundJobs\VerifyUserData; + +class UsersController extends Controller { + /** @var IUserManager */ + private $userManager; + /** @var IGroupManager */ + private $groupManager; + /** @var IUserSession */ + private $userSession; + /** @var IConfig */ + private $config; + /** @var bool */ + private $isAdmin; + /** @var IL10N */ + private $l10n; + /** @var IMailer */ + private $mailer; + /** @var IFactory */ + private $l10nFactory; + /** @var IAppManager */ + private $appManager; + /** @var AccountManager */ + private $accountManager; + /** @var Manager */ + private $keyManager; + /** @var IJobList */ + private $jobList; + /** @var IManager */ + private $encryptionManager; + + + public function __construct(string $appName, + IRequest $request, + IUserManager $userManager, + IGroupManager $groupManager, + IUserSession $userSession, + IConfig $config, + bool $isAdmin, + IL10N $l10n, + IMailer $mailer, + IFactory $l10nFactory, + IAppManager $appManager, + AccountManager $accountManager, + Manager $keyManager, + IJobList $jobList, + IManager $encryptionManager) { + parent::__construct($appName, $request); + $this->userManager = $userManager; + $this->groupManager = $groupManager; + $this->userSession = $userSession; + $this->config = $config; + $this->isAdmin = $isAdmin; + $this->l10n = $l10n; + $this->mailer = $mailer; + $this->l10nFactory = $l10nFactory; + $this->appManager = $appManager; + $this->accountManager = $accountManager; + $this->keyManager = $keyManager; + $this->jobList = $jobList; + $this->encryptionManager = $encryptionManager; + } + + + /** + * @NoCSRFRequired + * @NoAdminRequired + * + * Display users list template + * + * @return TemplateResponse + */ + public function usersListByGroup() { + return $this->usersList(); + } + + /** + * @NoCSRFRequired + * @NoAdminRequired + * + * Display users list template + * + * @return TemplateResponse + */ + public function usersList() { + $user = $this->userSession->getUser(); + $uid = $user->getUID(); + + \OC::$server->getNavigationManager()->setActiveEntry('core_users'); + + /* SORT OPTION: SORT_USERCOUNT or SORT_GROUPNAME */ + $sortGroupsBy = \OC\Group\MetaData::SORT_USERCOUNT; + $isLDAPUsed = false; + if ($this->config->getSystemValue('sort_groups_by_name', false)) { + $sortGroupsBy = \OC\Group\MetaData::SORT_GROUPNAME; + } else { + if ($this->appManager->isEnabledForUser('user_ldap')) { + $isLDAPUsed = + $this->groupManager->isBackendUsed('\OCA\User_LDAP\Group_Proxy'); + if ($isLDAPUsed) { + // LDAP user count can be slow, so we sort by group name here + $sortGroupsBy = \OC\Group\MetaData::SORT_GROUPNAME; + } + } + } + + $canChangePassword = $this->canAdminChangeUserPasswords(); + + /* GROUPS */ + $groupsInfo = new \OC\Group\MetaData( + $uid, + $this->isAdmin, + $this->groupManager, + $this->userSession + ); + + $groupsInfo->setSorting($sortGroupsBy); + list($adminGroup, $groups) = $groupsInfo->get(); + + if(!$isLDAPUsed && $this->appManager->isEnabledForUser('user_ldap')) { + $isLDAPUsed = (bool)array_reduce($this->userManager->getBackends(), function ($ldapFound, $backend) { + return $ldapFound || $backend instanceof User_Proxy; + }); + } + + if ($this->isAdmin) { + $disabledUsers = $isLDAPUsed ? -1 : $this->userManager->countDisabledUsers(); + $userCount = $isLDAPUsed ? 0 : array_reduce($this->userManager->countUsers(), function($v, $w) { + return $v + (int)$w; + }, 0); + } else { + // User is subadmin ! + // Map group list to names to retrieve the countDisabledUsersOfGroups + $userGroups = $this->groupManager->getUserGroups($user); + $groupsNames = []; + $userCount = 0; + + foreach($groups as $key => $group) { + // $userCount += (int)$group['usercount']; + array_push($groupsNames, $group['name']); + // we prevent subadmins from looking up themselves + // so we lower the count of the groups he belongs to + if (array_key_exists($group['id'], $userGroups)) { + $groups[$key]['usercount']--; + $userCount = -1; // we also lower from one the total count + } + }; + $userCount += $isLDAPUsed ? 0 : $this->userManager->countUsersOfGroups($groupsInfo->getGroups()); + $disabledUsers = $isLDAPUsed ? -1 : $this->userManager->countDisabledUsersOfGroups($groupsNames); + } + $disabledUsersGroup = [ + 'id' => 'disabled', + 'name' => 'Disabled users', + 'usercount' => $disabledUsers + ]; + + /* QUOTAS PRESETS */ + $quotaPreset = $this->config->getAppValue('files', 'quota_preset', '1 GB, 5 GB, 10 GB'); + $quotaPreset = explode(',', $quotaPreset); + foreach ($quotaPreset as &$preset) { + $preset = trim($preset); + } + $quotaPreset = array_diff($quotaPreset, array('default', 'none')); + $defaultQuota = $this->config->getAppValue('files', 'default_quota', 'none'); + + \OC::$server->getEventDispatcher()->dispatch('OC\Settings\Users::loadAdditionalScripts'); + + /* LANGUAGES */ + $languages = $this->l10nFactory->getLanguages(); + + /* FINAL DATA */ + $serverData = array(); + // groups + $serverData['groups'] = array_merge_recursive($adminGroup, [$disabledUsersGroup], $groups); + // Various data + $serverData['isAdmin'] = $this->isAdmin; + $serverData['sortGroups'] = $sortGroupsBy; + $serverData['quotaPreset'] = $quotaPreset; + $serverData['userCount'] = $userCount - $disabledUsers; + $serverData['languages'] = $languages; + $serverData['defaultLanguage'] = $this->config->getSystemValue('default_language', 'en'); + // Settings + $serverData['defaultQuota'] = $defaultQuota; + $serverData['canChangePassword'] = $canChangePassword; + $serverData['newUserGenerateUserID'] = $this->config->getAppValue('core', 'newUser.generateUserID', 'no') === 'yes'; + $serverData['newUserRequireEmail'] = $this->config->getAppValue('core', 'newUser.requireEmail', 'no') === 'yes'; + + return new TemplateResponse('settings', 'settings-vue', ['serverData' => $serverData]); + } + + /** + * check if the admin can change the users password + * + * The admin can change the passwords if: + * + * - no encryption module is loaded and encryption is disabled + * - encryption module is loaded but it doesn't require per user keys + * + * The admin can not change the passwords if: + * + * - an encryption module is loaded and it uses per-user keys + * - encryption is enabled but no encryption modules are loaded + * + * @return bool + */ + protected function canAdminChangeUserPasswords() { + $isEncryptionEnabled = $this->encryptionManager->isEnabled(); + try { + $noUserSpecificEncryptionKeys =!$this->encryptionManager->getEncryptionModule()->needDetailedAccessList(); + $isEncryptionModuleLoaded = true; + } catch (ModuleDoesNotExistsException $e) { + $noUserSpecificEncryptionKeys = true; + $isEncryptionModuleLoaded = false; + } + + $canChangePassword = ($isEncryptionEnabled && $isEncryptionModuleLoaded && $noUserSpecificEncryptionKeys) + || (!$isEncryptionEnabled && !$isEncryptionModuleLoaded) + || (!$isEncryptionEnabled && $isEncryptionModuleLoaded && $noUserSpecificEncryptionKeys); + + return $canChangePassword; + } + + /** + * @NoAdminRequired + * @NoSubadminRequired + * @PasswordConfirmationRequired + * + * @param string $avatarScope + * @param string $displayname + * @param string $displaynameScope + * @param string $phone + * @param string $phoneScope + * @param string $email + * @param string $emailScope + * @param string $website + * @param string $websiteScope + * @param string $address + * @param string $addressScope + * @param string $twitter + * @param string $twitterScope + * @return DataResponse + */ + public function setUserSettings($avatarScope, + $displayname, + $displaynameScope, + $phone, + $phoneScope, + $email, + $emailScope, + $website, + $websiteScope, + $address, + $addressScope, + $twitter, + $twitterScope + ) { + if (!empty($email) && !$this->mailer->validateMailAddress($email)) { + return new DataResponse( + [ + 'status' => 'error', + 'data' => [ + 'message' => $this->l10n->t('Invalid mail address') + ] + ], + Http::STATUS_UNPROCESSABLE_ENTITY + ); + } + $user = $this->userSession->getUser(); + $data = $this->accountManager->getUser($user); + $data[AccountManager::PROPERTY_AVATAR] = ['scope' => $avatarScope]; + if ($this->config->getSystemValue('allow_user_to_change_display_name', true) !== false) { + $data[AccountManager::PROPERTY_DISPLAYNAME] = ['value' => $displayname, 'scope' => $displaynameScope]; + $data[AccountManager::PROPERTY_EMAIL] = ['value' => $email, 'scope' => $emailScope]; + } + if ($this->appManager->isEnabledForUser('federatedfilesharing')) { + $federatedFileSharing = new \OCA\FederatedFileSharing\AppInfo\Application(); + $shareProvider = $federatedFileSharing->getFederatedShareProvider(); + if ($shareProvider->isLookupServerUploadEnabled()) { + $data[AccountManager::PROPERTY_WEBSITE] = ['value' => $website, 'scope' => $websiteScope]; + $data[AccountManager::PROPERTY_ADDRESS] = ['value' => $address, 'scope' => $addressScope]; + $data[AccountManager::PROPERTY_PHONE] = ['value' => $phone, 'scope' => $phoneScope]; + $data[AccountManager::PROPERTY_TWITTER] = ['value' => $twitter, 'scope' => $twitterScope]; + } + } + try { + $this->saveUserSettings($user, $data); + return new DataResponse( + [ + 'status' => 'success', + 'data' => [ + 'userId' => $user->getUID(), + 'avatarScope' => $data[AccountManager::PROPERTY_AVATAR]['scope'], + 'displayname' => $data[AccountManager::PROPERTY_DISPLAYNAME]['value'], + 'displaynameScope' => $data[AccountManager::PROPERTY_DISPLAYNAME]['scope'], + 'email' => $data[AccountManager::PROPERTY_EMAIL]['value'], + 'emailScope' => $data[AccountManager::PROPERTY_EMAIL]['scope'], + 'website' => $data[AccountManager::PROPERTY_WEBSITE]['value'], + 'websiteScope' => $data[AccountManager::PROPERTY_WEBSITE]['scope'], + 'address' => $data[AccountManager::PROPERTY_ADDRESS]['value'], + 'addressScope' => $data[AccountManager::PROPERTY_ADDRESS]['scope'], + 'message' => $this->l10n->t('Settings saved') + ] + ], + Http::STATUS_OK + ); + } catch (ForbiddenException $e) { + return new DataResponse([ + 'status' => 'error', + 'data' => [ + 'message' => $e->getMessage() + ], + ]); + } + } + /** + * update account manager with new user data + * + * @param IUser $user + * @param array $data + * @throws ForbiddenException + */ + protected function saveUserSettings(IUser $user, array $data) { + // keep the user back-end up-to-date with the latest display name and email + // address + $oldDisplayName = $user->getDisplayName(); + $oldDisplayName = is_null($oldDisplayName) ? '' : $oldDisplayName; + if (isset($data[AccountManager::PROPERTY_DISPLAYNAME]['value']) + && $oldDisplayName !== $data[AccountManager::PROPERTY_DISPLAYNAME]['value'] + ) { + $result = $user->setDisplayName($data[AccountManager::PROPERTY_DISPLAYNAME]['value']); + if ($result === false) { + throw new ForbiddenException($this->l10n->t('Unable to change full name')); + } + } + $oldEmailAddress = $user->getEMailAddress(); + $oldEmailAddress = is_null($oldEmailAddress) ? '' : $oldEmailAddress; + if (isset($data[AccountManager::PROPERTY_EMAIL]['value']) + && $oldEmailAddress !== $data[AccountManager::PROPERTY_EMAIL]['value'] + ) { + // this is the only permission a backend provides and is also used + // for the permission of setting a email address + if (!$user->canChangeDisplayName()) { + throw new ForbiddenException($this->l10n->t('Unable to change email address')); + } + $user->setEMailAddress($data[AccountManager::PROPERTY_EMAIL]['value']); + } + $this->accountManager->updateUser($user, $data); + } + + /** + * Set the mail address of a user + * + * @NoAdminRequired + * @NoSubadminRequired + * @PasswordConfirmationRequired + * + * @param string $account + * @param bool $onlyVerificationCode only return verification code without updating the data + * @return DataResponse + */ + public function getVerificationCode(string $account, bool $onlyVerificationCode): DataResponse { + + $user = $this->userSession->getUser(); + + if ($user === null) { + return new DataResponse([], Http::STATUS_BAD_REQUEST); + } + + $accountData = $this->accountManager->getUser($user); + $cloudId = $user->getCloudId(); + $message = 'Use my Federated Cloud ID to share with me: ' . $cloudId; + $signature = $this->signMessage($user, $message); + + $code = $message . ' ' . $signature; + $codeMd5 = $message . ' ' . md5($signature); + + switch ($account) { + case 'verify-twitter': + $accountData[AccountManager::PROPERTY_TWITTER]['verified'] = AccountManager::VERIFICATION_IN_PROGRESS; + $msg = $this->l10n->t('In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):'); + $code = $codeMd5; + $type = AccountManager::PROPERTY_TWITTER; + $data = $accountData[AccountManager::PROPERTY_TWITTER]['value']; + $accountData[AccountManager::PROPERTY_TWITTER]['signature'] = $signature; + break; + case 'verify-website': + $accountData[AccountManager::PROPERTY_WEBSITE]['verified'] = AccountManager::VERIFICATION_IN_PROGRESS; + $msg = $this->l10n->t('In order to verify your Website, store the following content in your web-root at \'.well-known/CloudIdVerificationCode.txt\' (please make sure that the complete text is in one line):'); + $type = AccountManager::PROPERTY_WEBSITE; + $data = $accountData[AccountManager::PROPERTY_WEBSITE]['value']; + $accountData[AccountManager::PROPERTY_WEBSITE]['signature'] = $signature; + break; + default: + return new DataResponse([], Http::STATUS_BAD_REQUEST); + } + + if ($onlyVerificationCode === false) { + $this->accountManager->updateUser($user, $accountData); + + $this->jobList->add(VerifyUserData::class, + [ + 'verificationCode' => $code, + 'data' => $data, + 'type' => $type, + 'uid' => $user->getUID(), + 'try' => 0, + 'lastRun' => $this->getCurrentTime() + ] + ); + } + + return new DataResponse(['msg' => $msg, 'code' => $code]); + } + + /** + * get current timestamp + * + * @return int + */ + protected function getCurrentTime(): int { + return time(); + } + + /** + * sign message with users private key + * + * @param IUser $user + * @param string $message + * + * @return string base64 encoded signature + */ + protected function signMessage(IUser $user, string $message): string { + $privateKey = $this->keyManager->getKey($user)->getPrivate(); + openssl_sign(json_encode($message), $signature, $privateKey, OPENSSL_ALGO_SHA512); + return base64_encode($signature); + } +} diff --git a/apps/settings/lib/Hooks.php b/apps/settings/lib/Hooks.php new file mode 100644 index 00000000000..8dae82ef877 --- /dev/null +++ b/apps/settings/lib/Hooks.php @@ -0,0 +1,294 @@ +<?php +/** + * @copyright Copyright (c) 2017 Joas Schilling <coding@schilljs.com> + * + * @author Joas Schilling <coding@schilljs.com> + * @author Lukas Reschke <lukas@statuscode.ch> + * @author Morris Jobke <hey@morrisjobke.de> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\Settings; + +use OCA\Settings\Activity\GroupProvider; +use OCA\Settings\Activity\Provider; +use OCP\Activity\IManager as IActivityManager; +use OCP\IConfig; +use OCP\IGroup; +use OCP\IGroupManager; +use OCP\IL10N; +use OCP\IURLGenerator; +use OCP\IUser; +use OCP\IUserManager; +use OCP\IUserSession; +use OCP\L10N\IFactory; +use OCP\Mail\IMailer; + +class Hooks { + + /** @var IActivityManager */ + protected $activityManager; + /** @var IGroupManager|\OC\Group\Manager */ + protected $groupManager; + /** @var IUserManager */ + protected $userManager; + /** @var IUserSession */ + protected $userSession; + /** @var IURLGenerator */ + protected $urlGenerator; + /** @var IMailer */ + protected $mailer; + /** @var IConfig */ + protected $config; + /** @var IFactory */ + protected $languageFactory; + /** @var IL10N */ + protected $l; + + public function __construct(IActivityManager $activityManager, + IGroupManager $groupManager, + IUserManager $userManager, + IUserSession $userSession, + IURLGenerator $urlGenerator, + IMailer $mailer, + IConfig $config, + IFactory $languageFactory, + IL10N $l) { + $this->activityManager = $activityManager; + $this->groupManager = $groupManager; + $this->userManager = $userManager; + $this->userSession = $userSession; + $this->urlGenerator = $urlGenerator; + $this->mailer = $mailer; + $this->config = $config; + $this->languageFactory = $languageFactory; + $this->l = $l; + } + + /** + * @param string $uid + * @throws \InvalidArgumentException + * @throws \BadMethodCallException + * @throws \Exception + */ + public function onChangePassword($uid) { + $user = $this->userManager->get($uid); + + if (!$user instanceof IUser || $user->getLastLogin() === 0) { + // User didn't login, so don't create activities and emails. + return; + } + + $event = $this->activityManager->generateEvent(); + $event->setApp('settings') + ->setType('personal_settings') + ->setAffectedUser($user->getUID()); + + $instanceUrl = $this->urlGenerator->getAbsoluteURL('/'); + + $actor = $this->userSession->getUser(); + if ($actor instanceof IUser) { + if ($actor->getUID() !== $user->getUID()) { + $this->l = $this->languageFactory->get( + 'settings', + $this->config->getUserValue( + $user->getUID(), 'core', 'lang', + $this->config->getSystemValue('default_language', 'en') + ) + ); + + $text = $this->l->t('%1$s changed your password on %2$s.', [$actor->getDisplayName(), $instanceUrl]); + $event->setAuthor($actor->getUID()) + ->setSubject(Provider::PASSWORD_CHANGED_BY, [$actor->getUID()]); + } else { + $text = $this->l->t('Your password on %s was changed.', [$instanceUrl]); + $event->setAuthor($actor->getUID()) + ->setSubject(Provider::PASSWORD_CHANGED_SELF); + } + } else { + $text = $this->l->t('Your password on %s was reset by an administrator.', [$instanceUrl]); + $event->setSubject(Provider::PASSWORD_RESET); + } + + $this->activityManager->publish($event); + + if ($user->getEMailAddress() !== null) { + $template = $this->mailer->createEMailTemplate('settings.PasswordChanged', [ + 'displayname' => $user->getDisplayName(), + 'emailAddress' => $user->getEMailAddress(), + 'instanceUrl' => $instanceUrl, + ]); + + $template->setSubject($this->l->t('Password for %1$s changed on %2$s', [$user->getDisplayName(), $instanceUrl])); + $template->addHeader(); + $template->addHeading($this->l->t('Password changed for %s', [$user->getDisplayName()]), false); + $template->addBodyText($text . ' ' . $this->l->t('If you did not request this, please contact an administrator.')); + $template->addFooter(); + + + $message = $this->mailer->createMessage(); + $message->setTo([$user->getEMailAddress() => $user->getDisplayName()]); + $message->useTemplate($template); + $this->mailer->send($message); + } + } + + /** + * @param IUser $user + * @param string|null $oldMailAddress + * @throws \InvalidArgumentException + * @throws \BadMethodCallException + */ + public function onChangeEmail(IUser $user, $oldMailAddress) { + + if ($oldMailAddress === $user->getEMailAddress() || + $user->getLastLogin() === 0) { + // Email didn't really change or user didn't login, + // so don't create activities and emails. + return; + } + + $event = $this->activityManager->generateEvent(); + $event->setApp('settings') + ->setType('personal_settings') + ->setAffectedUser($user->getUID()); + + $instanceUrl = $this->urlGenerator->getAbsoluteURL('/'); + + $actor = $this->userSession->getUser(); + if ($actor instanceof IUser) { + $subject = Provider::EMAIL_CHANGED_SELF; + if ($actor->getUID() !== $user->getUID()) { + $this->l = $this->languageFactory->get( + 'settings', + $this->config->getUserValue( + $user->getUID(), 'core', 'lang', + $this->config->getSystemValue('default_language', 'en') + ) + ); + $subject = Provider::EMAIL_CHANGED; + } + $text = $this->l->t('Your email address on %s was changed.', [$instanceUrl]); + $event->setAuthor($actor->getUID()) + ->setSubject($subject); + } else { + $text = $this->l->t('Your email address on %s was changed by an administrator.', [$instanceUrl]); + $event->setSubject(Provider::EMAIL_CHANGED); + } + $this->activityManager->publish($event); + + + if ($oldMailAddress !== null) { + $template = $this->mailer->createEMailTemplate('settings.EmailChanged', [ + 'displayname' => $user->getDisplayName(), + 'newEMailAddress' => $user->getEMailAddress(), + 'oldEMailAddress' => $oldMailAddress, + 'instanceUrl' => $instanceUrl, + ]); + + $template->setSubject($this->l->t('Email address for %1$s changed on %2$s', [$user->getDisplayName(), $instanceUrl])); + $template->addHeader(); + $template->addHeading($this->l->t('Email address changed for %s', [$user->getDisplayName()]), false); + $template->addBodyText($text . ' ' . $this->l->t('If you did not request this, please contact an administrator.')); + if ($user->getEMailAddress()) { + $template->addBodyText($this->l->t('The new email address is %s', [$user->getEMailAddress()])); + } + $template->addFooter(); + + + $message = $this->mailer->createMessage(); + $message->setTo([$oldMailAddress => $user->getDisplayName()]); + $message->useTemplate($template); + $this->mailer->send($message); + } + } + + /** + * @param IGroup $group + * @param IUser $user + * @throws \InvalidArgumentException + * @throws \BadMethodCallException + */ + public function addUserToGroup(IGroup $group, IUser $user): void { + $subAdminManager = $this->groupManager->getSubAdmin(); + $usersToNotify = $subAdminManager->getGroupsSubAdmins($group); + $usersToNotify[] = $user; + + + $event = $this->activityManager->generateEvent(); + $event->setApp('settings') + ->setType('group_settings'); + + $actor = $this->userSession->getUser(); + if ($actor instanceof IUser) { + $event->setAuthor($actor->getUID()) + ->setSubject(GroupProvider::ADDED_TO_GROUP, [ + 'user' => $user->getUID(), + 'group' => $group->getGID(), + 'actor' => $actor->getUID(), + ]); + } else { + $event->setSubject(GroupProvider::ADDED_TO_GROUP, [ + 'user' => $user->getUID(), + 'group' => $group->getGID(), + ]); + } + + foreach ($usersToNotify as $userToNotify) { + $event->setAffectedUser($userToNotify->getUID()); + $this->activityManager->publish($event); + } + } + + /** + * @param IGroup $group + * @param IUser $user + * @throws \InvalidArgumentException + * @throws \BadMethodCallException + */ + public function removeUserFromGroup(IGroup $group, IUser $user): void { + $subAdminManager = $this->groupManager->getSubAdmin(); + $usersToNotify = $subAdminManager->getGroupsSubAdmins($group); + $usersToNotify[] = $user; + + + $event = $this->activityManager->generateEvent(); + $event->setApp('settings') + ->setType('group_settings'); + + $actor = $this->userSession->getUser(); + if ($actor instanceof IUser) { + $event->setAuthor($actor->getUID()) + ->setSubject(GroupProvider::REMOVED_FROM_GROUP, [ + 'user' => $user->getUID(), + 'group' => $group->getGID(), + 'actor' => $actor->getUID(), + ]); + } else { + $event->setSubject(GroupProvider::REMOVED_FROM_GROUP, [ + 'user' => $user->getUID(), + 'group' => $group->getGID(), + ]); + } + + foreach ($usersToNotify as $userToNotify) { + $event->setAffectedUser($userToNotify->getUID()); + $this->activityManager->publish($event); + } + } +} diff --git a/apps/settings/lib/Mailer/NewUserMailHelper.php b/apps/settings/lib/Mailer/NewUserMailHelper.php new file mode 100644 index 00000000000..a927080df92 --- /dev/null +++ b/apps/settings/lib/Mailer/NewUserMailHelper.php @@ -0,0 +1,173 @@ +<?php +/** + * @copyright Copyright (c) 2017 Lukas Reschke <lukas@statuscode.ch> + * + * @author Joas Schilling <coding@schilljs.com> + * @author Leon Klingele <leon@struktur.de> + * @author Lukas Reschke <lukas@statuscode.ch> + * @author Morris Jobke <hey@morrisjobke.de> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\Settings\Mailer; + +use OCP\L10N\IFactory; +use OCP\Mail\IEMailTemplate; +use OCP\AppFramework\Utility\ITimeFactory; +use OCP\Defaults; +use OCP\IConfig; +use OCP\IL10N; +use OCP\IURLGenerator; +use OCP\IUser; +use OCP\Mail\IMailer; +use OCP\Security\ICrypto; +use OCP\Security\ISecureRandom; + +class NewUserMailHelper { + /** @var Defaults */ + private $themingDefaults; + /** @var IURLGenerator */ + private $urlGenerator; + /** @var IFactory */ + private $l10nFactory; + /** @var IMailer */ + private $mailer; + /** @var ISecureRandom */ + private $secureRandom; + /** @var ITimeFactory */ + private $timeFactory; + /** @var IConfig */ + private $config; + /** @var ICrypto */ + private $crypto; + /** @var string */ + private $fromAddress; + + /** + * @param Defaults $themingDefaults + * @param IURLGenerator $urlGenerator + * @param IFactory $l10nFactory + * @param IMailer $mailer + * @param ISecureRandom $secureRandom + * @param ITimeFactory $timeFactory + * @param IConfig $config + * @param ICrypto $crypto + * @param string $fromAddress + */ + public function __construct(Defaults $themingDefaults, + IURLGenerator $urlGenerator, + IFactory $l10nFactory, + IMailer $mailer, + ISecureRandom $secureRandom, + ITimeFactory $timeFactory, + IConfig $config, + ICrypto $crypto, + $fromAddress) { + $this->themingDefaults = $themingDefaults; + $this->urlGenerator = $urlGenerator; + $this->l10nFactory = $l10nFactory; + $this->mailer = $mailer; + $this->secureRandom = $secureRandom; + $this->timeFactory = $timeFactory; + $this->config = $config; + $this->crypto = $crypto; + $this->fromAddress = $fromAddress; + } + + /** + * @param IUser $user + * @param bool $generatePasswordResetToken + * @return IEMailTemplate + */ + public function generateTemplate(IUser $user, $generatePasswordResetToken = false) { + $userId = $user->getUID(); + $lang = $this->config->getUserValue($userId, 'core', 'lang', 'en'); + if (!$this->l10nFactory->languageExists('settings', $lang)) { + $lang = 'en'; + } + + $l10n = $this->l10nFactory->get('settings', $lang); + + if ($generatePasswordResetToken) { + $token = $this->secureRandom->generate( + 21, + ISecureRandom::CHAR_DIGITS . + ISecureRandom::CHAR_LOWER . + ISecureRandom::CHAR_UPPER + ); + $tokenValue = $this->timeFactory->getTime() . ':' . $token; + $mailAddress = (null !== $user->getEMailAddress()) ? $user->getEMailAddress() : ''; + $encryptedValue = $this->crypto->encrypt($tokenValue, $mailAddress . $this->config->getSystemValue('secret')); + $this->config->setUserValue($user->getUID(), 'core', 'lostpassword', $encryptedValue); + $link = $this->urlGenerator->linkToRouteAbsolute('core.lost.resetform', ['userId' => $user->getUID(), 'token' => $token]); + } else { + $link = $this->urlGenerator->getAbsoluteURL('/'); + } + $displayName = $user->getDisplayName(); + + $emailTemplate = $this->mailer->createEMailTemplate('settings.Welcome', [ + 'link' => $link, + 'displayname' => $displayName, + 'userid' => $userId, + 'instancename' => $this->themingDefaults->getName(), + 'resetTokenGenerated' => $generatePasswordResetToken, + ]); + + $emailTemplate->setSubject($l10n->t('Your %s account was created', [$this->themingDefaults->getName()])); + $emailTemplate->addHeader(); + if ($displayName === $userId) { + $emailTemplate->addHeading($l10n->t('Welcome aboard')); + } else { + $emailTemplate->addHeading($l10n->t('Welcome aboard %s', [$displayName])); + } + $emailTemplate->addBodyText($l10n->t('Welcome to your %s account, you can add, protect, and share your data.', [$this->themingDefaults->getName()])); + if($user->getBackendClassName() !== 'LDAP') { + $emailTemplate->addBodyText($l10n->t('Your username is: %s', [$userId])); + } + if ($generatePasswordResetToken) { + $leftButtonText = $l10n->t('Set your password'); + } else { + $leftButtonText = $l10n->t('Go to %s', [$this->themingDefaults->getName()]); + } + $emailTemplate->addBodyButtonGroup( + $leftButtonText, + $link, + $l10n->t('Install Client'), + $this->config->getSystemValue('customclient_desktop', 'https://nextcloud.com/install/#install-clients') + ); + $emailTemplate->addFooter(); + + return $emailTemplate; + } + + /** + * Sends a welcome mail to $user + * + * @param IUser $user + * @param IEmailTemplate $emailTemplate + * @throws \Exception If mail could not be sent + */ + public function sendMail(IUser $user, + IEMailTemplate $emailTemplate) { + $message = $this->mailer->createMessage(); + $message->setTo([$user->getEMailAddress() => $user->getDisplayName()]); + $message->setFrom([$this->fromAddress => $this->themingDefaults->getName()]); + $message->useTemplate($emailTemplate); + $this->mailer->send($message); + } +} diff --git a/apps/settings/lib/Middleware/SubadminMiddleware.php b/apps/settings/lib/Middleware/SubadminMiddleware.php new file mode 100644 index 00000000000..c6f77ac04fe --- /dev/null +++ b/apps/settings/lib/Middleware/SubadminMiddleware.php @@ -0,0 +1,92 @@ +<?php +/** + * @copyright Copyright (c) 2016, ownCloud, Inc. + * + * @author Lukas Reschke <lukas@statuscode.ch> + * @author Morris Jobke <hey@morrisjobke.de> + * @author Roeland Jago Douma <roeland@famdouma.nl> + * + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace OCA\Settings\Middleware; + +use OC\AppFramework\Http; +use OC\AppFramework\Middleware\Security\Exceptions\NotAdminException; +use OC\AppFramework\Utility\ControllerMethodReflector; +use OCP\AppFramework\Controller; +use OCP\AppFramework\Http\TemplateResponse; +use OCP\AppFramework\Middleware; +use OCP\IL10N; + +/** + * Verifies whether an user has at least subadmin rights. + * To bypass use the `@NoSubadminRequired` annotation + */ +class SubadminMiddleware extends Middleware { + /** @var bool */ + protected $isSubAdmin; + /** @var ControllerMethodReflector */ + protected $reflector; + /** @var IL10N */ + private $l10n; + + /** + * @param ControllerMethodReflector $reflector + * @param bool $isSubAdmin + * @param IL10N $l10n + */ + public function __construct(ControllerMethodReflector $reflector, + $isSubAdmin, + IL10N $l10n) { + $this->reflector = $reflector; + $this->isSubAdmin = $isSubAdmin; + $this->l10n = $l10n; + } + + /** + * Check if sharing is enabled before the controllers is executed + * @param Controller $controller + * @param string $methodName + * @throws \Exception + */ + public function beforeController($controller, $methodName) { + if(!$this->reflector->hasAnnotation('NoSubadminRequired')) { + if(!$this->isSubAdmin) { + throw new NotAdminException($this->l10n->t('Logged in user must be a subadmin')); + } + } + } + + /** + * Return 403 page in case of an exception + * @param Controller $controller + * @param string $methodName + * @param \Exception $exception + * @return TemplateResponse + * @throws \Exception + */ + public function afterException($controller, $methodName, \Exception $exception) { + if($exception instanceof NotAdminException) { + $response = new TemplateResponse('core', '403', array(), 'guest'); + $response->setStatus(Http::STATUS_FORBIDDEN); + return $response; + } + + throw $exception; + } + +} diff --git a/apps/settings/lib/Settings/Admin/Mail.php b/apps/settings/lib/Settings/Admin/Mail.php new file mode 100644 index 00000000000..a630bd07d27 --- /dev/null +++ b/apps/settings/lib/Settings/Admin/Mail.php @@ -0,0 +1,91 @@ +<?php +/** + * @copyright Copyright (c) 2016 Arthur Schiwon <blizzz@arthur-schiwon.de> + * + * @author Arthur Schiwon <blizzz@arthur-schiwon.de> + * @author Joas Schilling <coding@schilljs.com> + * @author Lukas Reschke <lukas@statuscode.ch> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\Settings\Admin; + +use OCP\AppFramework\Http\TemplateResponse; +use OCP\IConfig; +use OCP\Settings\ISettings; + +class Mail implements ISettings { + /** @var IConfig */ + private $config; + + /** + * @param IConfig $config + */ + public function __construct(IConfig $config) { + $this->config = $config; + } + + /** + * @return TemplateResponse + */ + public function getForm() { + $parameters = [ + // Mail + 'sendmail_is_available' => (bool) \OC_Helper::findBinaryPath('sendmail'), + 'mail_domain' => $this->config->getSystemValue('mail_domain', ''), + 'mail_from_address' => $this->config->getSystemValue('mail_from_address', ''), + 'mail_smtpmode' => $this->config->getSystemValue('mail_smtpmode', ''), + 'mail_smtpsecure' => $this->config->getSystemValue('mail_smtpsecure', ''), + 'mail_smtphost' => $this->config->getSystemValue('mail_smtphost', ''), + 'mail_smtpport' => $this->config->getSystemValue('mail_smtpport', ''), + 'mail_smtpauthtype' => $this->config->getSystemValue('mail_smtpauthtype', ''), + 'mail_smtpauth' => $this->config->getSystemValue('mail_smtpauth', false), + 'mail_smtpname' => $this->config->getSystemValue('mail_smtpname', ''), + 'mail_smtppassword' => $this->config->getSystemValue('mail_smtppassword', ''), + 'mail_sendmailmode' => $this->config->getSystemValue('mail_sendmailmode', 'smtp'), + ]; + + if ($parameters['mail_smtppassword'] !== '') { + $parameters['mail_smtppassword'] = '********'; + } + + if ($parameters['mail_smtpmode'] === '' || $parameters['mail_smtpmode'] === 'php') { + $parameters['mail_smtpmode'] = 'smtp'; + } + + return new TemplateResponse('settings', 'settings/admin/additional-mail', $parameters, ''); + } + + /** + * @return string the section ID, e.g. 'sharing' + */ + public function getSection() { + return 'server'; + } + + /** + * @return int whether the form should be rather on the top or bottom of + * the admin section. The forms are arranged in ascending order of the + * priority values. It is required to return a value between 0 and 100. + * + * E.g.: 70 + */ + public function getPriority() { + return 10; + } +} diff --git a/apps/settings/lib/Settings/Admin/Overview.php b/apps/settings/lib/Settings/Admin/Overview.php new file mode 100644 index 00000000000..52847d8037c --- /dev/null +++ b/apps/settings/lib/Settings/Admin/Overview.php @@ -0,0 +1,66 @@ +<?php +/** + * @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net> + * + * @author Julius Härtl <jus@bitgrid.net> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\Settings\Admin; + +use OCP\AppFramework\Http\TemplateResponse; +use OCP\IConfig; +use OCP\Settings\ISettings; + +class Overview implements ISettings { + /** @var IConfig */ + private $config; + + public function __construct(IConfig $config) { + $this->config = $config; + } + + /** + * @return TemplateResponse + */ + public function getForm() { + $parameters = [ + 'checkForWorkingWellKnownSetup' => $this->config->getSystemValue('check_for_working_wellknown_setup', true), + ]; + + return new TemplateResponse('settings', 'settings/admin/overview', $parameters, ''); + } + + /** + * @return string the section ID, e.g. 'sharing' + */ + public function getSection() { + return 'overview'; + } + + /** + * @return int whether the form should be rather on the top or bottom of + * the admin section. The forms are arranged in ascending order of the + * priority values. It is required to return a value between 0 and 100. + * + * E.g.: 70 + */ + public function getPriority() { + return 10; + } +} diff --git a/apps/settings/lib/Settings/Admin/Security.php b/apps/settings/lib/Settings/Admin/Security.php new file mode 100644 index 00000000000..b78f6a88dff --- /dev/null +++ b/apps/settings/lib/Settings/Admin/Security.php @@ -0,0 +1,109 @@ +<?php +/** + * @copyright Copyright (c) 2016 Arthur Schiwon <blizzz@arthur-schiwon.de> + * + * @author Arthur Schiwon <blizzz@arthur-schiwon.de> + * @author Lukas Reschke <lukas@statuscode.ch> + * @author Robin Appelman <robin@icewind.nl> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\Settings\Admin; + +use OC\Authentication\TwoFactorAuth\MandatoryTwoFactor; +use OCP\AppFramework\Http\TemplateResponse; +use OCP\Encryption\IManager; +use OCP\IInitialStateService; +use OCP\IUserManager; +use OCP\Settings\ISettings; + +class Security implements ISettings { + + /** @var IManager */ + private $manager; + + /** @var IUserManager */ + private $userManager; + + /** @var MandatoryTwoFactor */ + private $mandatoryTwoFactor; + + /** @var IInitialStateService */ + private $initialState; + + public function __construct(IManager $manager, + IUserManager $userManager, + MandatoryTwoFactor $mandatoryTwoFactor, + IInitialStateService $initialState) { + $this->manager = $manager; + $this->userManager = $userManager; + $this->mandatoryTwoFactor = $mandatoryTwoFactor; + $this->initialState = $initialState; + } + + /** + * @return TemplateResponse + */ + public function getForm() { + $encryptionModules = $this->manager->getEncryptionModules(); + $defaultEncryptionModuleId = $this->manager->getDefaultEncryptionModuleId(); + $encryptionModuleList = []; + foreach ($encryptionModules as $module) { + $encryptionModuleList[$module['id']]['displayName'] = $module['displayName']; + $encryptionModuleList[$module['id']]['default'] = false; + if ($module['id'] === $defaultEncryptionModuleId) { + $encryptionModuleList[$module['id']]['default'] = true; + } + } + + $this->initialState->provideInitialState( + 'settings', + 'mandatory2FAState', + $this->mandatoryTwoFactor->getState() + ); + + $parameters = [ + // Encryption API + 'encryptionEnabled' => $this->manager->isEnabled(), + 'encryptionReady' => $this->manager->isReady(), + 'externalBackendsEnabled' => count($this->userManager->getBackends()) > 1, + // Modules + 'encryptionModules' => $encryptionModuleList, + ]; + + return new TemplateResponse('settings', 'settings/admin/security', $parameters, ''); + } + + /** + * @return string the section ID, e.g. 'sharing' + */ + public function getSection() { + return 'security'; + } + + /** + * @return int whether the form should be rather on the top or bottom of + * the admin section. The forms are arranged in ascending order of the + * priority values. It is required to return a value between 0 and 100. + * + * E.g.: 70 + */ + public function getPriority() { + return 10; + } +} diff --git a/apps/settings/lib/Settings/Admin/Server.php b/apps/settings/lib/Settings/Admin/Server.php new file mode 100644 index 00000000000..956d246479f --- /dev/null +++ b/apps/settings/lib/Settings/Admin/Server.php @@ -0,0 +1,77 @@ +<?php +/** + * @copyright Copyright (c) 2016 Arthur Schiwon <blizzz@arthur-schiwon.de> + * + * @author Arthur Schiwon <blizzz@arthur-schiwon.de> + * @author Joas Schilling <coding@schilljs.com> + * @author Lukas Reschke <lukas@statuscode.ch> + * @author Morris Jobke <hey@morrisjobke.de> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\Settings\Admin; + +use OCP\AppFramework\Http\TemplateResponse; +use OCP\IConfig; +use OCP\Settings\ISettings; + +class Server implements ISettings { + /** @var IConfig */ + private $config; + + /** + * @param IConfig $config + */ + public function __construct(IConfig $config) { + $this->config = $config; + } + + /** + * @return TemplateResponse + */ + public function getForm() { + $parameters = [ + // Background jobs + 'backgroundjobs_mode' => $this->config->getAppValue('core', 'backgroundjobs_mode', 'ajax'), + 'lastcron' => $this->config->getAppValue('core', 'lastcron', false), + 'cronErrors' => $this->config->getAppValue('core', 'cronErrors'), + 'cli_based_cron_possible' => function_exists('posix_getpwuid'), + 'cli_based_cron_user' => function_exists('posix_getpwuid') ? posix_getpwuid(fileowner(\OC::$configDir . 'config.php'))['name'] : '', + ]; + + return new TemplateResponse('settings', 'settings/admin/server', $parameters, ''); + } + + /** + * @return string the section ID, e.g. 'sharing' + */ + public function getSection(): string { + return 'server'; + } + + /** + * @return int whether the form should be rather on the top or bottom of + * the admin section. The forms are arranged in ascending order of the + * priority values. It is required to return a value between 0 and 100. + * + * E.g.: 70 + */ + public function getPriority(): int { + return 0; + } +} diff --git a/apps/settings/lib/Settings/Admin/Sharing.php b/apps/settings/lib/Settings/Admin/Sharing.php new file mode 100644 index 00000000000..18b1f26d9a2 --- /dev/null +++ b/apps/settings/lib/Settings/Admin/Sharing.php @@ -0,0 +1,137 @@ +<?php +/** + * @copyright Copyright (c) 2016 Arthur Schiwon <blizzz@arthur-schiwon.de> + * + * @author Arthur Schiwon <blizzz@arthur-schiwon.de> + * @author Bjoern Schiessle <bjoern@schiessle.org> + * @author Lukas Reschke <lukas@statuscode.ch> + * @author Morris Jobke <hey@morrisjobke.de> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\Settings\Admin; + +use OC\Share\Share; +use OCP\AppFramework\Http\TemplateResponse; +use OCP\Constants; +use OCP\IConfig; +use OCP\IL10N; +use OCP\L10N\IFactory; +use OCP\Settings\ISettings; +use OCP\Share\IManager; +use OCP\Util; + +class Sharing implements ISettings { + /** @var IConfig */ + private $config; + + /** @var IL10N */ + private $l; + + /** @var IManager */ + private $shareManager; + + /** + * @param IConfig $config + */ + public function __construct(IConfig $config, IFactory $l, IManager $shareManager) { + $this->config = $config; + $this->l = $l->get('lib'); + $this->shareManager = $shareManager; + } + + /** + * @return TemplateResponse + */ + public function getForm() { + $excludedGroups = $this->config->getAppValue('core', 'shareapi_exclude_groups_list', ''); + $excludeGroupsList = !is_null(json_decode($excludedGroups)) + ? implode('|', json_decode($excludedGroups, true)) : ''; + + $parameters = [ + // Built-In Sharing + 'allowGroupSharing' => $this->config->getAppValue('core', 'shareapi_allow_group_sharing', 'yes'), + 'allowLinks' => $this->config->getAppValue('core', 'shareapi_allow_links', 'yes'), + 'allowPublicUpload' => $this->config->getAppValue('core', 'shareapi_allow_public_upload', 'yes'), + 'allowResharing' => $this->config->getAppValue('core', 'shareapi_allow_resharing', 'yes'), + 'allowShareDialogUserEnumeration' => $this->config->getAppValue('core', 'shareapi_allow_share_dialog_user_enumeration', 'yes'), + 'enforceLinkPassword' => Util::isPublicLinkPasswordRequired(), + 'onlyShareWithGroupMembers' => $this->shareManager->shareWithGroupMembersOnly(), + 'shareAPIEnabled' => $this->config->getAppValue('core', 'shareapi_enabled', 'yes'), + 'shareDefaultExpireDateSet' => $this->config->getAppValue('core', 'shareapi_default_expire_date', 'no'), + 'shareExpireAfterNDays' => $this->config->getAppValue('core', 'shareapi_expire_after_n_days', '7'), + 'shareEnforceExpireDate' => $this->config->getAppValue('core', 'shareapi_enforce_expire_date', 'no'), + 'shareExcludeGroups' => $this->config->getAppValue('core', 'shareapi_exclude_groups', 'no') === 'yes', + 'shareExcludedGroupsList' => $excludeGroupsList, + 'publicShareDisclaimerText' => $this->config->getAppValue('core', 'shareapi_public_link_disclaimertext', null), + 'enableLinkPasswordByDefault' => $this->config->getAppValue('core', 'shareapi_enable_link_password_by_default', 'no'), + 'shareApiDefaultPermissions' => $this->config->getAppValue('core', 'shareapi_default_permissions', Constants::PERMISSION_ALL), + 'shareApiDefaultPermissionsCheckboxes' => $this->getSharePermissionList(), + ]; + + return new TemplateResponse('settings', 'settings/admin/sharing', $parameters, ''); + } + + /** + * get share permission list for template + * + * @return array + */ + private function getSharePermissionList() { + return [ + [ + 'id' => 'cancreate', + 'label' => $this->l->t('Create'), + 'value' => Constants::PERMISSION_CREATE + ], + [ + 'id' => 'canupdate', + 'label' => $this->l->t('Change'), + 'value' => Constants::PERMISSION_UPDATE + ], + [ + 'id' => 'candelete', + 'label' => $this->l->t('Delete'), + 'value' => Constants::PERMISSION_DELETE + ], + [ + 'id' => 'canshare', + 'label' => $this->l->t('Share'), + 'value' => Constants::PERMISSION_SHARE + ], + ]; + } + + /** + * @return string the section ID, e.g. 'sharing' + */ + public function getSection() { + return 'sharing'; + } + + /** + * @return int whether the form should be rather on the top or bottom of + * the admin section. The forms are arranged in ascending order of the + * priority values. It is required to return a value between 0 and 100. + * + * E.g.: 70 + */ + public function getPriority() { + return 0; + } +} diff --git a/apps/settings/lib/Settings/Personal/Additional.php b/apps/settings/lib/Settings/Personal/Additional.php new file mode 100644 index 00000000000..9fea58301cf --- /dev/null +++ b/apps/settings/lib/Settings/Personal/Additional.php @@ -0,0 +1,59 @@ +<?php +/** + * @copyright Copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de> + * + * @author Arthur Schiwon <blizzz@arthur-schiwon.de> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\Settings\Personal; + + +use OCP\AppFramework\Http\TemplateResponse; +use OCP\Settings\ISettings; + +class Additional implements ISettings { + + /** + * @return TemplateResponse returns the instance with all parameters set, ready to be rendered + * @since 9.1 + */ + public function getForm() { + return new TemplateResponse('settings', 'settings/empty'); + } + + /** + * @return string the section ID, e.g. 'sharing' + * @since 9.1 + */ + public function getSection() { + return 'additional'; + } + + /** + * @return int whether the form should be rather on the top or bottom of + * the admin section. The forms are arranged in ascending order of the + * priority values. It is required to return a value between 0 and 100. + * + * E.g.: 70 + * @since 9.1 + */ + public function getPriority() { + return '5'; + } +} diff --git a/apps/settings/lib/Settings/Personal/PersonalInfo.php b/apps/settings/lib/Settings/Personal/PersonalInfo.php new file mode 100644 index 00000000000..b0c4d6faf48 --- /dev/null +++ b/apps/settings/lib/Settings/Personal/PersonalInfo.php @@ -0,0 +1,280 @@ +<?php +/** + * @copyright Copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de> + * + * @author Arthur Schiwon <blizzz@arthur-schiwon.de> + * @author Morris Jobke <hey@morrisjobke.de> + * @author Thomas Citharel <tcit@tcit.fr> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\Settings\Personal; + +use OC\Accounts\AccountManager; +use OCA\FederatedFileSharing\AppInfo\Application; +use OCP\App\IAppManager; +use OCP\AppFramework\Http\TemplateResponse; +use OCP\Files\FileInfo; +use OCP\IConfig; +use OCP\IGroup; +use OCP\IGroupManager; +use OCP\IL10N; +use OCP\IUser; +use OCP\IUserManager; +use OCP\L10N\IFactory; +use OCP\Settings\ISettings; + +class PersonalInfo implements ISettings { + + /** @var IConfig */ + private $config; + /** @var IUserManager */ + private $userManager; + /** @var AccountManager */ + private $accountManager; + /** @var IGroupManager */ + private $groupManager; + /** @var IAppManager */ + private $appManager; + /** @var IFactory */ + private $l10nFactory; + /** @var IL10N */ + private $l; + + /** + * @param IConfig $config + * @param IUserManager $userManager + * @param IGroupManager $groupManager + * @param AccountManager $accountManager + * @param IFactory $l10nFactory + * @param IL10N $l + */ + public function __construct( + IConfig $config, + IUserManager $userManager, + IGroupManager $groupManager, + AccountManager $accountManager, + IAppManager $appManager, + IFactory $l10nFactory, + IL10N $l + ) { + $this->config = $config; + $this->userManager = $userManager; + $this->accountManager = $accountManager; + $this->groupManager = $groupManager; + $this->appManager = $appManager; + $this->l10nFactory = $l10nFactory; + $this->l = $l; + } + + /** + * @return TemplateResponse returns the instance with all parameters set, ready to be rendered + * @since 9.1 + */ + public function getForm() { + $federatedFileSharingEnabled = $this->appManager->isEnabledForUser('federatedfilesharing'); + $lookupServerUploadEnabled = false; + if($federatedFileSharingEnabled) { + $federatedFileSharing = new Application(); + $shareProvider = $federatedFileSharing->getFederatedShareProvider(); + $lookupServerUploadEnabled = $shareProvider->isLookupServerUploadEnabled(); + } + + $uid = \OC_User::getUser(); + $user = $this->userManager->get($uid); + $userData = $this->accountManager->getUser($user); + + $storageInfo = \OC_Helper::getStorageInfo('/'); + if ($storageInfo['quota'] === FileInfo::SPACE_UNLIMITED) { + $totalSpace = $this->l->t('Unlimited'); + } else { + $totalSpace = \OC_Helper::humanFileSize($storageInfo['total']); + } + + $languageParameters = $this->getLanguages($user); + $localeParameters = $this->getLocales($user); + $messageParameters = $this->getMessageParameters($userData); + + $parameters = [ + 'total_space' => $totalSpace, + 'usage' => \OC_Helper::humanFileSize($storageInfo['used']), + 'usage_relative' => round($storageInfo['relative']), + 'quota' => $storageInfo['quota'], + 'avatarChangeSupported' => $user->canChangeAvatar(), + 'lookupServerUploadEnabled' => $lookupServerUploadEnabled, + 'avatarScope' => $userData[AccountManager::PROPERTY_AVATAR]['scope'], + 'displayNameChangeSupported' => $user->canChangeDisplayName(), + 'displayName' => $userData[AccountManager::PROPERTY_DISPLAYNAME]['value'], + 'displayNameScope' => $userData[AccountManager::PROPERTY_DISPLAYNAME]['scope'], + 'email' => $userData[AccountManager::PROPERTY_EMAIL]['value'], + 'emailScope' => $userData[AccountManager::PROPERTY_EMAIL]['scope'], + 'emailVerification' => $userData[AccountManager::PROPERTY_EMAIL]['verified'], + 'phone' => $userData[AccountManager::PROPERTY_PHONE]['value'], + 'phoneScope' => $userData[AccountManager::PROPERTY_PHONE]['scope'], + 'address' => $userData[AccountManager::PROPERTY_ADDRESS]['value'], + 'addressScope' => $userData[AccountManager::PROPERTY_ADDRESS]['scope'], + 'website' => $userData[AccountManager::PROPERTY_WEBSITE]['value'], + 'websiteScope' => $userData[AccountManager::PROPERTY_WEBSITE]['scope'], + 'websiteVerification' => $userData[AccountManager::PROPERTY_WEBSITE]['verified'], + 'twitter' => $userData[AccountManager::PROPERTY_TWITTER]['value'], + 'twitterScope' => $userData[AccountManager::PROPERTY_TWITTER]['scope'], + 'twitterVerification' => $userData[AccountManager::PROPERTY_TWITTER]['verified'], + 'groups' => $this->getGroups($user), + ] + $messageParameters + $languageParameters + $localeParameters; + + + return new TemplateResponse('settings', 'settings/personal/personal.info', $parameters, ''); + } + + /** + * @return string the section ID, e.g. 'sharing' + * @since 9.1 + */ + public function getSection() { + return 'personal-info'; + } + + /** + * @return int whether the form should be rather on the top or bottom of + * the admin section. The forms are arranged in ascending order of the + * priority values. It is required to return a value between 0 and 100. + * + * E.g.: 70 + * @since 9.1 + */ + public function getPriority() { + return 10; + } + + /** + * returns a sorted list of the user's group GIDs + * + * @param IUser $user + * @return array + */ + private function getGroups(IUser $user) { + $groups = array_map( + function(IGroup $group) { + return $group->getDisplayName(); + }, + $this->groupManager->getUserGroups($user) + ); + sort($groups); + + return $groups; + } + + /** + * returns the user language, common language and other languages in an + * associative array + * + * @param IUser $user + * @return array + */ + private function getLanguages(IUser $user) { + $forceLanguage = $this->config->getSystemValue('force_language', false); + if($forceLanguage !== false) { + return []; + } + + $uid = $user->getUID(); + + $userConfLang = $this->config->getUserValue($uid, 'core', 'lang', $this->l10nFactory->findLanguage()); + $languages = $this->l10nFactory->getLanguages(); + + // associate the user language with the proper array + $userLangIndex = array_search($userConfLang, array_column($languages['commonlanguages'], 'code')); + $userLang = $languages['commonlanguages'][$userLangIndex]; + // search in the other languages + if ($userLangIndex === false) { + $userLangIndex = array_search($userConfLang, array_column($languages['languages'], 'code')); + $userLang = $languages['languages'][$userLangIndex]; + } + // if user language is not available but set somehow: show the actual code as name + if (!is_array($userLang)) { + $userLang = [ + 'code' => $userConfLang, + 'name' => $userConfLang, + ]; + } + + return array_merge( + array('activelanguage' => $userLang), + $languages + ); + } + + private function getLocales(IUser $user) { + $forceLanguage = $this->config->getSystemValue('force_locale', false); + if($forceLanguage !== false) { + return []; + } + + $uid = $user->getUID(); + + $userLocaleString = $this->config->getUserValue($uid, 'core', 'locale', $this->l10nFactory->findLocale()); + + $userLang = $this->config->getUserValue($uid, 'core', 'lang', $this->l10nFactory->findLanguage()); + + $localeCodes = $this->l10nFactory->findAvailableLocales(); + + $userLocale = array_filter($localeCodes, function($value) use ($userLocaleString) { + return $userLocaleString === $value['code']; + }); + + if (!empty($userLocale)) + { + $userLocale = reset($userLocale); + } + + $localesForLanguage = array_filter($localeCodes, function($localeCode) use ($userLang) { + return 0 === strpos($localeCode['code'], $userLang); + }); + + return [ + 'activelocaleLang' => $userLocaleString, + 'activelocale' => $userLocale, + 'locales' => $localeCodes, + 'localesForLanguage' => $localesForLanguage, + ]; + } + + /** + * @param array $userData + * @return array + */ + private function getMessageParameters(array $userData) { + $needVerifyMessage = [AccountManager::PROPERTY_EMAIL, AccountManager::PROPERTY_WEBSITE, AccountManager::PROPERTY_TWITTER]; + $messageParameters = []; + foreach ($needVerifyMessage as $property) { + switch ($userData[$property]['verified']) { + case AccountManager::VERIFIED: + $message = $this->l->t('Verifying'); + break; + case AccountManager::VERIFICATION_IN_PROGRESS: + $message = $this->l->t('Verifying …'); + break; + default: + $message = $this->l->t('Verify'); + } + $messageParameters[$property . 'Message'] = $message; + } + return $messageParameters; + } + +} diff --git a/apps/settings/lib/Settings/Personal/Security.php b/apps/settings/lib/Settings/Personal/Security.php new file mode 100644 index 00000000000..c4c4cd0375c --- /dev/null +++ b/apps/settings/lib/Settings/Personal/Security.php @@ -0,0 +1,128 @@ +<?php +/** + * @copyright Copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de> + * + * @author Arthur Schiwon <blizzz@arthur-schiwon.de> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\Settings\Personal; + + +use function array_filter; +use function array_map; +use function is_null; +use OC\Authentication\Exceptions\InvalidTokenException; +use OC\Authentication\Token\INamedToken; +use OC\Authentication\Token\IProvider as IAuthTokenProvider; +use OC\Authentication\Token\IToken; +use OC\Authentication\TwoFactorAuth\Manager as TwoFactorManager; +use OC\Authentication\TwoFactorAuth\ProviderLoader; +use OCP\AppFramework\Http\TemplateResponse; +use OCP\Authentication\TwoFactorAuth\IProvider; +use OCP\Authentication\TwoFactorAuth\IProvidesPersonalSettings; +use OCP\IInitialStateService; +use OCP\ISession; +use OCP\IUserManager; +use OCP\IUserSession; +use OCP\Session\Exceptions\SessionNotAvailableException; +use OCP\Settings\ISettings; +use OCP\IConfig; + +class Security implements ISettings { + + /** @var IInitialStateService */ + private $initialStateService; + + /** @var IUserManager */ + private $userManager; + + /** @var ProviderLoader */ + private $providerLoader; + + /** @var IUserSession */ + private $userSession; + + /** @var string|null */ + private $uid; + + /** @var IConfig */ + private $config; + + public function __construct(IInitialStateService $initialStateService, + IUserManager $userManager, + ProviderLoader $providerLoader, + IUserSession $userSession, + IConfig $config, + ?string $UserId) { + $this->initialStateService = $initialStateService; + $this->userManager = $userManager; + $this->providerLoader = $providerLoader; + $this->userSession = $userSession; + $this->uid = $UserId; + $this->config = $config; + } + + public function getForm(): TemplateResponse { + $user = $this->userManager->get($this->uid); + $passwordChangeSupported = false; + if ($user !== null) { + $passwordChangeSupported = $user->canChangePassword(); + } + + $this->initialStateService->provideInitialState( + 'settings', + 'can_create_app_token', + $this->userSession->getImpersonatingUserID() === null + ); + + return new TemplateResponse('settings', 'settings/personal/security', [ + 'passwordChangeSupported' => $passwordChangeSupported, + 'twoFactorProviderData' => $this->getTwoFactorProviderData(), + 'themedark' => $this->config->getUserValue($this->uid, 'accessibility', 'theme', false) + ]); + + } + + public function getSection(): string { + return 'security'; + } + + public function getPriority(): int { + return 10; + } + + private function getTwoFactorProviderData(): array { + $user = $this->userSession->getUser(); + if (is_null($user)) { + // Actually impossible, but still … + return []; + } + + return [ + 'providers' => array_map(function (IProvidesPersonalSettings $provider) use ($user) { + return [ + 'provider' => $provider, + 'settings' => $provider->getPersonalSettings($user) + ]; + }, array_filter($this->providerLoader->getProviders($user), function (IProvider $provider) { + return $provider instanceof IProvidesPersonalSettings; + })) + ]; + } +} diff --git a/apps/settings/lib/Settings/Personal/Security/Authtokens.php b/apps/settings/lib/Settings/Personal/Security/Authtokens.php new file mode 100644 index 00000000000..a0c76e88de0 --- /dev/null +++ b/apps/settings/lib/Settings/Personal/Security/Authtokens.php @@ -0,0 +1,107 @@ +<?php +declare(strict_types=1); +/** + * @copyright Copyright (c) 2019, Roeland Jago Douma <roeland@famdouma.nl> + * + * @author Roeland Jago Douma <roeland@famdouma.nl> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\Settings\Personal\Security; + +use function array_map; +use OC\Authentication\Exceptions\InvalidTokenException; +use OC\Authentication\Token\INamedToken; +use OC\Authentication\Token\IProvider as IAuthTokenProvider; +use OC\Authentication\Token\IToken; +use OCP\AppFramework\Http\TemplateResponse; +use OCP\IInitialStateService; +use OCP\ISession; +use OCP\Session\Exceptions\SessionNotAvailableException; +use OCP\Settings\ISettings; + +class Authtokens implements ISettings { + + /** @var IAuthTokenProvider */ + private $tokenProvider; + + /** @var ISession */ + private $session; + + /** @var IInitialStateService */ + private $initialStateService; + + /** @var string|null */ + private $uid; + + public function __construct(IAuthTokenProvider $tokenProvider, + ISession $session, + IInitialStateService $initialStateService, + ?string $UserId) { + $this->tokenProvider = $tokenProvider; + $this->session = $session; + $this->initialStateService = $initialStateService; + $this->uid = $UserId; + } + + public function getForm(): TemplateResponse { + $this->initialStateService->provideInitialState( + 'settings', + 'app_tokens', + $this->getAppTokens() + ); + + return new TemplateResponse('settings', 'settings/personal/security/authtokens'); + } + + public function getSection(): string { + return 'security'; + } + + public function getPriority(): int { + return 100; + } + + private function getAppTokens(): array { + $tokens = $this->tokenProvider->getTokenByUser($this->uid); + + try { + $sessionId = $this->session->getId(); + } catch (SessionNotAvailableException $ex) { + return []; + } + try { + $sessionToken = $this->tokenProvider->getToken($sessionId); + } catch (InvalidTokenException $ex) { + return []; + } + + return array_map(function (IToken $token) use ($sessionToken) { + $data = $token->jsonSerialize(); + $data['canDelete'] = true; + $data['canRename'] = $token instanceof INamedToken; + if ($sessionToken->getId() === $token->getId()) { + $data['canDelete'] = false; + $data['canRename'] = false; + $data['current'] = true; + } + return $data; + }, $tokens); + } + +} diff --git a/apps/settings/lib/Settings/Personal/ServerDevNotice.php b/apps/settings/lib/Settings/Personal/ServerDevNotice.php new file mode 100644 index 00000000000..800bec992a2 --- /dev/null +++ b/apps/settings/lib/Settings/Personal/ServerDevNotice.php @@ -0,0 +1,54 @@ +<?php +/** + * @copyright 2016, Roeland Jago Douma <roeland@famdouma.nl> + * + * @author Arthur Schiwon <blizzz@arthur-schiwon.de> + * @author Roeland Jago Douma <roeland@famdouma.nl> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +namespace OCA\Settings\Personal; + +use OCP\AppFramework\Http\TemplateResponse; +use OCP\Settings\ISettings; + +class ServerDevNotice implements ISettings { + /** + * @return TemplateResponse + */ + public function getForm() { + return new TemplateResponse('settings', 'settings/personal/development.notice'); + } + + /** + * @return string the section ID, e.g. 'sharing' + */ + public function getSection() { + return 'personal-info'; + } + + /** + * @return int whether the form should be rather on the top or bottom of + * the admin section. The forms are arranged in ascending order of the + * priority values. It is required to return a value between 0 and 100. + * + * E.g.: 70 + */ + public function getPriority() { + return 1000; + } +} diff --git a/apps/settings/src/.jshintrc b/apps/settings/src/.jshintrc new file mode 100644 index 00000000000..fc024bea970 --- /dev/null +++ b/apps/settings/src/.jshintrc @@ -0,0 +1,3 @@ +{ + "esversion": 6 +} diff --git a/apps/settings/src/App.vue b/apps/settings/src/App.vue new file mode 100644 index 00000000000..c7c32ba9d63 --- /dev/null +++ b/apps/settings/src/App.vue @@ -0,0 +1,38 @@ +<!-- + - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com> + - + - @author John Molakvoæ <skjnldsv@protonmail.com> + - + - @license GNU AGPL version 3 or any later version + - + - This program is free software: you can redistribute it and/or modify + - it under the terms of the GNU Affero General Public License as + - published by the Free Software Foundation, either version 3 of the + - License, or (at your option) any later version. + - + - This program is distributed in the hope that it will be useful, + - but WITHOUT ANY WARRANTY; without even the implied warranty of + - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + - GNU Affero General Public License for more details. + - + - You should have received a copy of the GNU Affero General Public License + - along with this program. If not, see <http://www.gnu.org/licenses/>. + - + --> + +<template> + <router-view></router-view> +</template> + +<script> +export default { + name: 'App', + beforeMount: function() { + // importing server data into the store + const serverDataElmt = document.getElementById('serverData'); + if (serverDataElmt !== null) { + this.$store.commit('setServerData', JSON.parse(document.getElementById('serverData').dataset.server)); + } + } +} +</script> diff --git a/apps/settings/src/components/AdminTwoFactor.vue b/apps/settings/src/components/AdminTwoFactor.vue new file mode 100644 index 00000000000..a1f28f5cfdd --- /dev/null +++ b/apps/settings/src/components/AdminTwoFactor.vue @@ -0,0 +1,168 @@ +<template> + <div> + <p class="settings-hint"> + {{ t('settings', 'Two-factor authentication can be enforced for all users and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system.') }} + </p> + <p v-if="loading"> + <span class="icon-loading-small two-factor-loading"></span> + <span>{{ t('settings', 'Enforce two-factor authentication') }}</span> + </p> + <p v-else> + <input type="checkbox" + id="two-factor-enforced" + class="checkbox" + v-model="enforced"> + <label for="two-factor-enforced">{{ t('settings', 'Enforce two-factor authentication') }}</label> + </p> + <template v-if="enforced"> + <h3>{{ t('settings', 'Limit to groups') }}</h3> + {{ t('settings', 'Enforcement of two-factor authentication can be set for certain groups only.') }} + <p> + {{ t('settings', 'Two-factor authentication is enforced for all members of the following groups.') }} + </p> + <p> + <Multiselect v-model="enforcedGroups" + :options="groups" + :placeholder="t('settings', 'Enforced groups')" + :disabled="loading" + :multiple="true" + :searchable="true" + @search-change="searchGroup" + :loading="loadingGroups" + :show-no-options="false" + :close-on-select="false"> + </Multiselect> + </p> + <p> + {{ t('settings', 'Two-factor authentication is not enforced for members of the following groups.') }} + </p> + <p> + <Multiselect v-model="excludedGroups" + :options="groups" + :placeholder="t('settings', 'Excluded groups')" + :disabled="loading" + :multiple="true" + :searchable="true" + @search-change="searchGroup" + :loading="loadingGroups" + :show-no-options="false" + :close-on-select="false"> + </Multiselect> + </p> + <p> + <em> + <!-- this text is also found in the documentation. update it there as well if it ever changes --> + {{ t('settings', 'When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced.') }} + </em> + </p> + </template> + <p> + <button class="button primary" + v-if="dirty" + v-on:click="saveChanges" + :disabled="loading"> + {{ t('settings', 'Save changes') }} + </button> + </p> + </div> +</template> + +<script> + import Axios from 'nextcloud-axios' + import { mapState } from 'vuex' + import {Multiselect} from 'nextcloud-vue' + import _ from 'lodash' + + export default { + name: "AdminTwoFactor", + components: { + Multiselect + }, + data () { + return { + loading: false, + dirty: false, + groups: [], + loadingGroups: false, + } + }, + computed: { + enforced: { + get: function () { + return this.$store.state.enforced + }, + set: function (val) { + this.dirty = true + this.$store.commit('setEnforced', val) + } + }, + enforcedGroups: { + get: function () { + return this.$store.state.enforcedGroups + }, + set: function (val) { + this.dirty = true + this.$store.commit('setEnforcedGroups', val) + } + }, + excludedGroups: { + get: function () { + return this.$store.state.excludedGroups + }, + set: function (val) { + this.dirty = true + this.$store.commit('setExcludedGroups', val) + } + }, + }, + mounted () { + // Groups are loaded dynamically, but the assigned ones *should* + // be valid groups, so let's add them as initial state + this.groups = _.sortedUniq(_.uniq(this.enforcedGroups.concat(this.excludedGroups))) + + // Populate the groups with a first set so the dropdown is not empty + // when opening the page the first time + this.searchGroup('') + }, + methods: { + searchGroup: _.debounce(function (query) { + this.loadingGroups = true + Axios.get(OC.linkToOCS(`cloud/groups?offset=0&search=${encodeURIComponent(query)}&limit=20`, 2)) + .then(res => res.data.ocs) + .then(ocs => ocs.data.groups) + .then(groups => this.groups = _.sortedUniq(_.uniq(this.groups.concat(groups)))) + .catch(err => console.error('could not search groups', err)) + .then(() => this.loadingGroups = false) + }, 500), + + saveChanges () { + this.loading = true + + const data = { + enforced: this.enforced, + enforcedGroups: this.enforcedGroups, + excludedGroups: this.excludedGroups, + } + Axios.put(OC.generateUrl('/settings/api/admin/twofactorauth'), data) + .then(resp => resp.data) + .then(state => { + this.state = state + this.dirty = false + }) + .catch(err => { + console.error('could not save changes', err) + }) + .then(() => this.loading = false) + } + } + } +</script> + +<style> + .two-factor-loading { + display: inline-block; + vertical-align: sub; + margin-left: -2px; + margin-right: 1px; + } +</style> diff --git a/apps/settings/src/components/AuthToken.vue b/apps/settings/src/components/AuthToken.vue new file mode 100644 index 00000000000..fb5a331b72e --- /dev/null +++ b/apps/settings/src/components/AuthToken.vue @@ -0,0 +1,306 @@ +<!-- + - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at> + - + - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at> + - + - @license GNU AGPL version 3 or any later version + - + - This program is free software: you can redistribute it and/or modify + - it under the terms of the GNU Affero General Public License as + - published by the Free Software Foundation, either version 3 of the + - License, or (at your option) any later version. + - + - This program is distributed in the hope that it will be useful, + - but WITHOUT ANY WARRANTY; without even the implied warranty of + - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + - GNU Affero General Public License for more details. + - + - You should have received a copy of the GNU Affero General Public License + - along with this program. If not, see <http://www.gnu.org/licenses/>. + --> + +<template> + <tr :data-id="token.id" + :class="wiping"> + <td class="client"> + <div :class="iconName.icon"></div> + </td> + <td class="token-name"> + <input v-if="token.canRename && renaming" + type="text" + ref="input" + v-model="newName" + @keyup.enter="rename" + @blur="cancelRename" + @keyup.esc="cancelRename"> + <span v-else>{{iconName.name}}</span> + <span v-if="wiping" + class="wiping-warning">({{ t('settings', 'Marked for remote wipe') }})</span> + </td> + <td> + <span class="last-activity" v-tooltip="lastActivity">{{lastActivityRelative}}</span> + </td> + <td class="more"> + <Actions v-if="!token.current" + :actions="actions" + :open.sync="actionOpen" + v-tooltip.auto="{ + content: t('settings', 'Device settings'), + container: 'body' + }"> + <ActionCheckbox v-if="token.type === 1" + :checked="token.scope.filesystem" + @change.stop.prevent="$emit('toggleScope', token, 'filesystem', !token.scope.filesystem)"> + <!-- TODO: add text/longtext with some description --> + {{ t('settings', 'Allow filesystem access') }} + </ActionCheckbox> + <ActionButton v-if="token.canRename" + icon="icon-rename" + @click.stop.prevent="startRename"> + <!-- TODO: add text/longtext with some description --> + {{ t('settings', 'Rename') }} + </ActionButton> + + <!-- revoke & wipe --> + <template v-if="token.canDelete"> + <template v-if="token.type !== 2"> + <ActionButton icon="icon-delete" + @click.stop.prevent="revoke"> + <!-- TODO: add text/longtext with some description --> + {{ t('settings', 'Revoke') }} + </ActionButton> + <ActionButton icon="icon-delete" + @click.stop.prevent="wipe"> + {{ t('settings', 'Wipe device') }} + </ActionButton> + </template> + <ActionButton v-else-if="token.type === 2" + icon="icon-delete" + :title="t('settings', 'Revoke')" + @click.stop.prevent="revoke"> + {{ t('settings', 'Revoking this token might prevent the wiping of your device if it hasn\'t started the wipe yet.') }} + </ActionButton> + </template> + </Actions> + </td> + </tr> +</template> + +<script> +import { + Actions, + ActionButton, + ActionCheckbox +} from 'nextcloud-vue'; + +const userAgentMap = { + ie: /(?:MSIE|Trident|Trident\/7.0; rv)[ :](\d+)/, + // Microsoft Edge User Agent from https://msdn.microsoft.com/en-us/library/hh869301(v=vs.85).aspx + edge: /^Mozilla\/5\.0 \([^)]+\) AppleWebKit\/[0-9.]+ \(KHTML, like Gecko\) Chrome\/[0-9.]+ (?:Mobile Safari|Safari)\/[0-9.]+ Edge\/[0-9.]+$/, + // Firefox User Agent from https://developer.mozilla.org/en-US/docs/Web/HTTP/Gecko_user_agent_string_reference + firefox: /^Mozilla\/5\.0 \([^)]*(Windows|OS X|Linux)[^)]+\) Gecko\/[0-9.]+ Firefox\/(\d+)(?:\.\d)?$/, + // Chrome User Agent from https://developer.chrome.com/multidevice/user-agent + chrome: /^Mozilla\/5\.0 \([^)]*(Windows|OS X|Linux)[^)]+\) AppleWebKit\/[0-9.]+ \(KHTML, like Gecko\) Chrome\/(\d+)[0-9.]+ (?:Mobile Safari|Safari)\/[0-9.]+$/, + // Safari User Agent from http://www.useragentstring.com/pages/Safari/ + safari: /^Mozilla\/5\.0 \([^)]*(Windows|OS X)[^)]+\) AppleWebKit\/[0-9.]+ \(KHTML, like Gecko\)(?: Version\/([0-9]+)[0-9.]+)? Safari\/[0-9.A-Z]+$/, + // Android Chrome user agent: https://developers.google.com/chrome/mobile/docs/user-agent + androidChrome: /Android.*(?:; (.*) Build\/).*Chrome\/(\d+)[0-9.]+/, + iphone: / *CPU +iPhone +OS +([0-9]+)_(?:[0-9_])+ +like +Mac +OS +X */, + ipad: /\(iPad\; *CPU +OS +([0-9]+)_(?:[0-9_])+ +like +Mac +OS +X */, + iosClient: /^Mozilla\/5\.0 \(iOS\) (ownCloud|Nextcloud)\-iOS.*$/, + androidClient: /^Mozilla\/5\.0 \(Android\) ownCloud\-android.*$/, + iosTalkClient: /^Mozilla\/5\.0 \(iOS\) Nextcloud\-Talk.*$/, + androidTalkClient: /^Mozilla\/5\.0 \(Android\) Nextcloud\-Talk.*$/, + // DAVdroid/1.2 (2016/07/03; dav4android; okhttp3) Android/6.0.1 + davDroid: /DAV(droid|x5)\/([0-9.]+)/, + // Mozilla/5.0 (U; Linux; Maemo; Jolla; Sailfish; like Android 4.3) AppleWebKit/538.1 (KHTML, like Gecko) WebPirate/2.0 like Mobile Safari/538.1 (compatible) + webPirate: /(Sailfish).*WebPirate\/(\d+)/, + // Mozilla/5.0 (Maemo; Linux; U; Jolla; Sailfish; Mobile; rv:31.0) Gecko/31.0 Firefox/31.0 SailfishBrowser/1.0 + sailfishBrowser: /(Sailfish).*SailfishBrowser\/(\d+)/ +}; +const nameMap = { + ie: t('setting', 'Internet Explorer'), + edge: t('setting', 'Edge'), + firefox: t('setting', 'Firefox'), + chrome: t('setting', 'Google Chrome'), + safari: t('setting', 'Safari'), + androidChrome: t('setting', 'Google Chrome for Android'), + iphone: t('setting', 'iPhone'), + ipad: t('setting', 'iPad'), + iosClient: t('setting', 'Nextcloud iOS app'), + androidClient: t('setting', 'Nextcloud Android app'), + iosTalkClient: t('setting', 'Nextcloud Talk for iOS'), + androidTalkClient: t('setting', 'Nextcloud Talk for Android'), + davDroid: 'DAVdroid', + webPirate: 'WebPirate', + sailfishBrowser: 'SailfishBrowser' +}; +const iconMap = { + ie: 'icon-desktop', + edge: 'icon-desktop', + firefox: 'icon-desktop', + chrome: 'icon-desktop', + safari: 'icon-desktop', + androidChrome: 'icon-phone', + iphone: 'icon-phone', + ipad: 'icon-tablet', + iosClient: 'icon-phone', + androidClient: 'icon-phone', + iosTalkClient: 'icon-phone', + androidTalkClient: 'icon-phone', + davDroid: 'icon-phone', + webPirate: 'icon-link', + sailfishBrowser: 'icon-link' +}; + +export default { + name: "AuthToken", + components: { + Actions, + ActionButton, + ActionCheckbox + }, + props: { + token: { + type: Object, + required: true, + } + }, + computed: { + lastActivityRelative () { + return OC.Util.relativeModifiedDate(this.token.lastActivity * 1000); + }, + lastActivity () { + return OC.Util.formatDate(this.token.lastActivity * 1000, 'LLL'); + }, + iconName () { + // pretty format sync client user agent + let matches = this.token.name.match(/Mozilla\/5\.0 \((\w+)\) (?:mirall|csyncoC)\/(\d+\.\d+\.\d+)/); + + let icon = ''; + if (matches) { + this.token.name = t('settings', 'Sync client - {os}', { + os: matches[1], + version: matches[2] + }); + icon = 'icon-desktop'; + } + + // preserve title for cases where we format it further + const title = this.token.name; + let name = this.token.name; + for (let client in userAgentMap) { + if (matches = title.match(userAgentMap[client])) { + if (matches[2] && matches[1]) { // version number and os + name = nameMap[client] + ' ' + matches[2] + ' - ' + matches[1]; + } else if (matches[1]) { // only version number + name = nameMap[client] + ' ' + matches[1]; + } else { + name = nameMap[client]; + } + + icon = iconMap[client]; + } + } + if (this.token.current) { + name = t('settings', 'This session'); + } + + return { + icon, + name, + }; + }, + wiping() { + return this.token.type === 2; + } + }, + data () { + return { + showMore: this.token.canScope || this.token.canDelete, + renaming: false, + newName: '', + actionOpen: false, + }; + }, + methods: { + startRename() { + // Close action (popover menu) + this.actionOpen = false; + + this.newName = this.token.name; + this.renaming = true; + this.$nextTick(() => { + this.$refs.input.select(); + }); + }, + cancelRename() { + this.renaming = false; + }, + revoke() { + this.actionOpen = false; + this.$emit('delete', this.token) + }, + rename() { + this.renaming = false; + this.$emit('rename', this.token, this.newName); + }, + wipe() { + this.actionOpen = false; + this.$emit('wipe', this.token); + } + } +} +</script> + +<style lang="scss" scoped> + .wiping { + background-color: var(--color-background-darker); + } + + td { + border-top: 1px solid var(--color-border); + max-width: 200px; + white-space: normal; + vertical-align: middle; + position: relative; + + &%icon { + overflow: visible; + position: relative; + width: 44px; + height: 44px; + } + + &.token-name { + padding: 10px 6px; + + &.token-rename { + padding: 0; + } + + input { + width: 100%; + margin: 0; + } + } + &.token-name .wiping-warning { + color: var(--color-text-lighter); + } + + &.more { + @extend %icon; + padding: 0 10px; + } + + &.client { + @extend %icon; + + div { + opacity: 0.57; + width: 44px; + height: 44px; + } + } + } +</style> diff --git a/apps/settings/src/components/AuthTokenList.vue b/apps/settings/src/components/AuthTokenList.vue new file mode 100644 index 00000000000..a7c0faf1b7b --- /dev/null +++ b/apps/settings/src/components/AuthTokenList.vue @@ -0,0 +1,135 @@ +<!-- + - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at> + - + - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at> + - + - @license GNU AGPL version 3 or any later version + - + - This program is free software: you can redistribute it and/or modify + - it under the terms of the GNU Affero General Public License as + - published by the Free Software Foundation, either version 3 of the + - License, or (at your option) any later version. + - + - This program is distributed in the hope that it will be useful, + - but WITHOUT ANY WARRANTY; without even the implied warranty of + - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + - GNU Affero General Public License for more details. + - + - You should have received a copy of the GNU Affero General Public License + - along with this program. If not, see <http://www.gnu.org/licenses/>. + --> + +<template> + <table id="app-tokens-table"> + <thead v-if="tokens.length"> + <tr> + <th></th> + <th>{{ t('settings', 'Device') }}</th> + <th>{{ t('settings', 'Last activity') }}</th> + <th></th> + </tr> + </thead> + <tbody class="token-list"> + <AuthToken v-for="token in sortedTokens" + :key="token.id" + :token="token" + @toggleScope="toggleScope" + @rename="rename" + @delete="onDelete" + @wipe="onWipe" /> + </tbody> + </table> +</template> + +<script> + import AuthToken from './AuthToken'; + + export default { + name: 'AuthTokenList', + components: { + AuthToken + }, + props: { + tokens: { + type: Array, + required: true, + } + }, + computed: { + sortedTokens () { + return this.tokens.sort((t1, t2) => { + var ts1 = parseInt(t1.lastActivity, 10); + var ts2 = parseInt(t2.lastActivity, 10); + return ts2 - ts1; + }) + } + }, + methods: { + toggleScope (token, scope, value) { + // Just pass it on + this.$emit('toggleScope', token, scope, value); + }, + rename (token, newName) { + // Just pass it on + this.$emit('rename', token, newName); + }, + onDelete (token) { + // Just pass it on + this.$emit('delete', token); + }, + onWipe(token) { + // Just pass it on + this.$emit('wipe', token); + } + } + } +</script> + +<style lang="scss" scoped> + table { + width: 100%; + min-height: 50px; + padding-top: 5px; + max-width: 580px; + + th { + opacity: .5; + padding: 10px 10px 10px 0; + } + } + + .token-list { + td > a.icon-more { + transition: opacity var(--animation-quick); + } + + a.icon-more { + padding: 14px; + display: block; + width: 44px; + height: 44px; + opacity: .5; + } + + tr { + &:hover td > a.icon, + td > a.icon:focus, + &.active td > a.icon { + opacity: 1; + } + } + } +</style> + +<!-- some styles are not scoped to make them work on subcomponents --> +<style lang="scss"> + #app-tokens-table { + tr > *:nth-child(2) { + padding-left: 6px; + } + + tr > *:nth-child(3) { + text-align: right; + } + } +</style> diff --git a/apps/settings/src/components/AuthTokenSection.vue b/apps/settings/src/components/AuthTokenSection.vue new file mode 100644 index 00000000000..c53256102d3 --- /dev/null +++ b/apps/settings/src/components/AuthTokenSection.vue @@ -0,0 +1,178 @@ +<!-- + - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at> + - + - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at> + - + - @license GNU AGPL version 3 or any later version + - + - This program is free software: you can redistribute it and/or modify + - it under the terms of the GNU Affero General Public License as + - published by the Free Software Foundation, either version 3 of the + - License, or (at your option) any later version. + - + - This program is distributed in the hope that it will be useful, + - but WITHOUT ANY WARRANTY; without even the implied warranty of + - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + - GNU Affero General Public License for more details. + - + - You should have received a copy of the GNU Affero General Public License + - along with this program. If not, see <http://www.gnu.org/licenses/>. + --> + +<template> + <div id="security" class="section"> + <h2>{{ t('settings', 'Devices & sessions') }}</h2> + <p class="settings-hint hidden-when-empty">{{ t('settings', 'Web, desktop and mobile clients currently logged in to your account.') }}</p> + <AuthTokenList :tokens="tokens" + @toggleScope="toggleTokenScope" + @rename="rename" + @delete="deleteToken" + @wipe="wipeToken" /> + <AuthTokenSetupDialogue v-if="canCreateToken" :add="addNewToken" /> + </div> +</template> + +<script> + import Axios from 'nextcloud-axios'; + import confirmPassword from 'nextcloud-password-confirmation'; + + import AuthTokenList from './AuthTokenList'; + import AuthTokenSetupDialogue from './AuthTokenSetupDialogue'; + + const confirm = () => { + return new Promise(res => { + OC.dialogs.confirm( + t('core', 'Do you really want to wipe your data from this device?'), + t('core', 'Confirm wipe'), + res, + true + ) + }) + } + + /** + * Tap into a promise without losing the value + */ + const tap = cb => val => { + cb(val); + return val; + }; + + export default { + name: "AuthTokenSection", + props: { + tokens: { + type: Array, + required: true, + }, + canCreateToken: { + type: Boolean, + required: true + } + }, + components: { + AuthTokenSetupDialogue, + AuthTokenList + }, + data() { + return { + baseUrl: OC.generateUrl('/settings/personal/authtokens'), + } + }, + methods: { + addNewToken (name) { + console.debug('creating a new app token', name); + + const data = { + name, + }; + return Axios.post(this.baseUrl, data) + .then(resp => resp.data) + .then(tap(() => console.debug('app token created'))) + .then(tap(data => this.tokens.push(data.deviceToken))) + .catch(err => { + console.error.bind('could not create app password', err); + OC.Notification.showTemporary(t('core', 'Error while creating device token')); + throw err; + }); + }, + toggleTokenScope (token, scope, value) { + console.debug('updating app token scope', token.id, scope, value); + + const oldVal = token.scope[scope]; + token.scope[scope] = value; + + return this.updateToken(token) + .then(tap(() => console.debug('app token scope updated'))) + .catch(err => { + console.error.bind('could not update app token scope', err); + OC.Notification.showTemporary(t('core', 'Error while updating device token scope')); + + // Restore + token.scope[scope] = oldVal; + + throw err; + }) + }, + rename (token, newName) { + console.debug('renaming app token', token.id, token.name, newName); + + const oldName = token.name; + token.name = newName; + + return this.updateToken(token) + .then(tap(() => console.debug('app token name updated'))) + .catch(err => { + console.error.bind('could not update app token name', err); + OC.Notification.showTemporary(t('core', 'Error while updating device token name')); + + // Restore + token.name = oldName; + }) + }, + updateToken (token) { + return Axios.put(this.baseUrl + '/' + token.id, token) + .then(resp => resp.data) + }, + deleteToken (token) { + console.debug('deleting app token', token); + + this.tokens = this.tokens.filter(t => t !== token); + + return Axios.delete(this.baseUrl + '/' + token.id) + .then(resp => resp.data) + .then(tap(() => console.debug('app token deleted'))) + .catch(err => { + console.error.bind('could not delete app token', err); + OC.Notification.showTemporary(t('core', 'Error while deleting the token')); + + // Restore + this.tokens.push(token); + }) + }, + async wipeToken(token) { + console.debug('wiping app token', token); + + try { + await confirmPassword() + + if (!(await confirm())) { + console.debug('wipe aborted by user') + return; + } + await Axios.post(this.baseUrl + '/wipe/' + token.id) + console.debug('app token marked for wipe') + + token.type = 2; + } catch (err) { + console.error('could not wipe app token', err); + OC.Notification.showTemporary(t('core', 'Error while wiping the device with the token')); + } + } + } + } +</script> + +<style scoped> + +</style> diff --git a/apps/settings/src/components/AuthTokenSetupDialogue.vue b/apps/settings/src/components/AuthTokenSetupDialogue.vue new file mode 100644 index 00000000000..000e873e659 --- /dev/null +++ b/apps/settings/src/components/AuthTokenSetupDialogue.vue @@ -0,0 +1,204 @@ +<!-- + - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at> + - + - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at> + - + - @license GNU AGPL version 3 or any later version + - + - This program is free software: you can redistribute it and/or modify + - it under the terms of the GNU Affero General Public License as + - published by the Free Software Foundation, either version 3 of the + - License, or (at your option) any later version. + - + - This program is distributed in the hope that it will be useful, + - but WITHOUT ANY WARRANTY; without even the implied warranty of + - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + - GNU Affero General Public License for more details. + - + - You should have received a copy of the GNU Affero General Public License + - along with this program. If not, see <http://www.gnu.org/licenses/>. + --> + +<template> + <div v-if="!adding"> + <input v-model="deviceName" + type="text" + @keydown.enter="submit" + :disabled="loading" + :placeholder="t('settings', 'App name')"> + <button class="button" + :disabled="loading" + @click="submit">{{ t('settings', 'Create new app password') }} + </button> + </div> + <div v-else> + {{ t('settings', 'Use the credentials below to configure your app or device.') }} + {{ t('settings', 'For security reasons this password will only be shown once.') }} + <div class="app-password-row"> + <span class="app-password-label">{{ t('settings', 'Username') }}</span> + <input :value="loginName" + type="text" + class="monospaced" + readonly="readonly" + @focus="selectInput"/> + </div> + <div class="app-password-row"> + <span class="app-password-label">{{ t('settings', 'Password') }}</span> + <input :value="appPassword" + type="text" + class="monospaced" + ref="appPassword" + readonly="readonly" + @focus="selectInput"/> + <a class="icon icon-clippy" + ref="clipboardButton" + v-tooltip="copyTooltipOptions" + @mouseover="hoveringCopyButton = true" + @mouseleave="hoveringCopyButton = false" + v-clipboard:copy="appPassword" + v-clipboard:success="onCopyPassword" + v-clipboard:error="onCopyPasswordFailed"></a> + <button class="button" + @click="reset"> + {{ t('settings', 'Done') }} + </button> + </div> + <div class="app-password-row"> + <span class="app-password-label"></span> + <a v-if="!showQR" + @click="showQR = true"> + {{ t('settings', 'Show QR code for mobile apps') }} + </a> + <QR v-else + :value="qrUrl"></QR> + </div> + </div> +</template> + +<script> + import QR from '@chenfengyuan/vue-qrcode'; + import confirmPassword from 'nextcloud-password-confirmation'; + + export default { + name: 'AuthTokenSetupDialogue', + components: { + QR, + }, + props: { + add: { + type: Function, + required: true, + } + }, + data () { + return { + adding: false, + loading: false, + deviceName: '', + appPassword: '', + loginName: '', + passwordCopied: false, + showQR: false, + qrUrl: '', + hoveringCopyButton: false, + } + }, + computed: { + copyTooltipOptions() { + const base = { + hideOnTargetClick: false, + trigger: 'manual', + }; + + if (this.passwordCopied) { + return { + ...base, + content:t('core', 'Copied!'), + show: true, + } + } else { + return { + ...base, + content: t('core', 'Copy'), + show: this.hoveringCopyButton, + } + } + } + }, + methods: { + selectInput (e) { + e.currentTarget.select(); + }, + submit: function () { + confirmPassword() + .then(() => { + this.loading = true; + return this.add(this.deviceName) + }) + .then(token => { + this.adding = true; + this.loginName = token.loginName; + this.appPassword = token.token; + + const server = window.location.protocol + '//' + window.location.host + OC.getRootPath(); + this.qrUrl = `nc://login/user:${token.loginName}&password:${token.token}&server:${server}`; + + this.$nextTick(() => { + this.$refs.appPassword.select(); + }); + }) + .catch(err => { + console.error('could not create a new app password', err); + OC.Notification.showTemporary(t('core', 'Error while creating device token')); + + this.reset(); + }); + }, + onCopyPassword() { + this.passwordCopied = true; + this.$refs.clipboardButton.blur(); + setTimeout(() => this.passwordCopied = false, 3000); + }, + onCopyPasswordFailed() { + OC.Notification.showTemporary(t('core', 'Could not copy app password. Please copy it manually.')); + }, + reset () { + this.adding = false; + this.loading = false; + this.showQR = false; + this.qrUrl = ''; + this.deviceName = ''; + this.appPassword = ''; + this.loginName = ''; + } + } + } +</script> + +<style lang="scss" scoped> + .app-password-row { + display: table-row; + + .icon { + background-size: 16px 16px; + display: inline-block; + position: relative; + top: 3px; + margin-left: 5px; + margin-right: 8px; + } + + } + + .app-password-label { + display: table-cell; + padding-right: 1em; + text-align: right; + vertical-align: middle; + } + + .monospaced { + width: 245px; + font-family: monospace; + } +</style> diff --git a/apps/settings/src/components/appDetails.vue b/apps/settings/src/components/appDetails.vue new file mode 100644 index 00000000000..9d418564e39 --- /dev/null +++ b/apps/settings/src/components/appDetails.vue @@ -0,0 +1,237 @@ +<!-- + - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net> + - + - @author Julius Härtl <jus@bitgrid.net> + - + - @license GNU AGPL version 3 or any later version + - + - This program is free software: you can redistribute it and/or modify + - it under the terms of the GNU Affero General Public License as + - published by the Free Software Foundation, either version 3 of the + - License, or (at your option) any later version. + - + - This program is distributed in the hope that it will be useful, + - but WITHOUT ANY WARRANTY; without even the implied warranty of + - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + - GNU Affero General Public License for more details. + - + - You should have received a copy of the GNU Affero General Public License + - along with this program. If not, see <http://www.gnu.org/licenses/>. + - + --> + +<template> + <div id="app-details-view" style="padding: 20px;"> + <h2> + <div v-if="!app.preview" class="icon-settings-dark"></div> + <svg v-if="app.previewAsIcon && app.preview" width="32" height="32" viewBox="0 0 32 32"> + <defs><filter :id="filterId"><feColorMatrix in="SourceGraphic" type="matrix" values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0"></feColorMatrix></filter></defs> + <image x="0" y="0" width="32" height="32" preserveAspectRatio="xMinYMin meet" :filter="filterUrl" :xlink:href="app.preview" class="app-icon"></image> + </svg> + {{ app.name }}</h2> + <img v-if="app.screenshot" :src="app.screenshot" width="100%" /> + <div class="app-level" v-if="app.level === 300 || app.level === 200 || hasRating"> + <span class="supported icon-checkmark-color" v-if="app.level === 300" + v-tooltip.auto="t('settings', 'This app is supported via your current Nextcloud subscription.')"> + {{ t('settings', 'Supported') }}</span> + <span class="official icon-checkmark" v-if="app.level === 200" + v-tooltip.auto="t('settings', 'Official apps are developed by and within the community. They offer central functionality and are ready for production use.')"> + {{ t('settings', 'Official') }}</span> + <app-score v-if="hasRating" :score="app.appstoreData.ratingOverall"></app-score> + </div> + + <div class="app-author" v-if="author"> + {{ t('settings', 'by') }} + <span v-for="(a, index) in author"> + <a v-if="a['@attributes'] && a['@attributes']['homepage']" :href="a['@attributes']['homepage']">{{ a['@value'] }}</a><span v-else-if="a['@value']">{{ a['@value'] }}</span><span v-else>{{ a }}</span><span v-if="index+1 < author.length">, </span> + </span> + </div> + <div class="app-licence" v-if="licence">{{ licence }}</div> + <div class="actions"> + <div class="actions-buttons"> + <input v-if="app.update" class="update primary" type="button" :value="t('settings', 'Update to {version}', {version: app.update})" v-on:click="update(app.id)" :disabled="installing || loading(app.id)"/> + <input v-if="app.canUnInstall" class="uninstall" type="button" :value="t('settings', 'Remove')" v-on:click="remove(app.id)" :disabled="installing || loading(app.id)"/> + <input v-if="app.active" class="enable" type="button" :value="t('settings','Disable')" v-on:click="disable(app.id)" :disabled="installing || loading(app.id)" /> + <input v-if="!app.active && (app.canInstall || app.isCompatible)" class="enable primary" type="button" :value="enableButtonText" v-on:click="enable(app.id)" v-tooltip.auto="enableButtonTooltip" :disabled="!app.canInstall || installing || loading(app.id)" /> + <input v-else-if="!app.active" class="enable force" type="button" :value="forceEnableButtonText" v-on:click="forceEnable(app.id)" v-tooltip.auto="forceEnableButtonTooltip" :disabled="installing || loading(app.id)" /> + </div> + <div class="app-groups"> + <div class="groups-enable" v-if="app.active && canLimitToGroups(app)"> + <input type="checkbox" :value="app.id" v-model="groupCheckedAppsData" v-on:change="setGroupLimit" class="groups-enable__checkbox checkbox" :id="prefix('groups_enable', app.id)"> + <label :for="prefix('groups_enable', app.id)">{{ t('settings', 'Limit to groups') }}</label> + <input type="hidden" class="group_select" :title="t('settings', 'All')" value=""> + <multiselect v-if="isLimitedToGroups(app)" :options="groups" :value="appGroups" @select="addGroupLimitation" @remove="removeGroupLimitation" :options-limit="5" + :placeholder="t('settings', 'Limit app usage to groups')" + label="name" track-by="id" class="multiselect-vue" + :multiple="true" :close-on-select="false" + :tag-width="60" @search-change="asyncFindGroup"> + <span slot="noResult">{{t('settings', 'No results')}}</span> + </multiselect> + </div> + </div> + </div> + + <ul class="app-dependencies"> + <li v-if="app.missingMinOwnCloudVersion">{{ t('settings', 'This app has no minimum Nextcloud version assigned. This will be an error in the future.') }}</li> + <li v-if="app.missingMaxOwnCloudVersion">{{ t('settings', 'This app has no maximum Nextcloud version assigned. This will be an error in the future.') }}</li> + <li v-if="!app.canInstall"> + {{ t('settings', 'This app cannot be installed because the following dependencies are not fulfilled:') }} + <ul class="missing-dependencies"> + <li v-for="dep in app.missingDependencies">{{ dep }}</li> + </ul> + </li> + </ul> + + <p class="documentation"> + <a class="appslink" :href="appstoreUrl" v-if="!app.internal" target="_blank" rel="noreferrer noopener">{{ t('settings', 'View in store')}} ↗</a> + + <a class="appslink" v-if="app.website" :href="app.website" target="_blank" rel="noreferrer noopener">{{ t('settings', 'Visit website') }} ↗</a> + <a class="appslink" v-if="app.bugs" :href="app.bugs" target="_blank" rel="noreferrer noopener">{{ t('settings', 'Report a bug') }} ↗</a> + + <a class="appslink" v-if="app.documentation && app.documentation.user" :href="app.documentation.user" target="_blank" rel="noreferrer noopener">{{ t('settings', 'User documentation') }} ↗</a> + <a class="appslink" v-if="app.documentation && app.documentation.admin" :href="app.documentation.admin" target="_blank" rel="noreferrer noopener">{{ t('settings', 'Admin documentation') }} ↗</a> + <a class="appslink" v-if="app.documentation && app.documentation.developer" :href="app.documentation.developer" target="_blank" rel="noreferrer noopener">{{ t('settings', 'Developer documentation') }} ↗</a> + </p> + + <div class="app-description" v-html="renderMarkdown"></div> + </div> +</template> + +<script> +import { Multiselect } from 'nextcloud-vue'; +import marked from 'marked'; +import dompurify from 'dompurify' + +import AppScore from './appList/appScore'; +import AppManagement from './appManagement'; +import prefix from './prefixMixin'; +import SvgFilterMixin from './svgFilterMixin'; + +export default { + mixins: [AppManagement, prefix, SvgFilterMixin], + name: 'appDetails', + props: ['category', 'app'], + components: { + Multiselect, + AppScore + }, + data() { + return { + groupCheckedAppsData: false, + } + }, + mounted() { + if (this.app.groups.length > 0) { + this.groupCheckedAppsData = true; + } + }, + computed: { + appstoreUrl() { + return `https://apps.nextcloud.com/apps/${this.app.id}`; + }, + licence() { + if (this.app.licence) { + return t('settings', '{license}-licensed', { license: ('' + this.app.licence).toUpperCase() } ); + } + return null; + }, + hasRating() { + return this.app.appstoreData && this.app.appstoreData.ratingNumOverall > 5; + }, + author() { + if (typeof this.app.author === 'string') { + return [ + { + '@value': this.app.author + } + ] + } + if (this.app.author['@value']) { + return [this.app.author]; + } + return this.app.author; + }, + appGroups() { + return this.app.groups.map(group => {return {id: group, name: group}}); + }, + groups() { + return this.$store.getters.getGroups + .filter(group => group.id !== 'disabled') + .sort((a, b) => a.name.localeCompare(b.name)); + }, + renderMarkdown() { + var renderer = new marked.Renderer(); + renderer.link = function(href, title, text) { + try { + var prot = decodeURIComponent(unescape(href)) + .replace(/[^\w:]/g, '') + .toLowerCase(); + } catch (e) { + return ''; + } + + if (prot.indexOf('http:') !== 0 && prot.indexOf('https:') !== 0) { + return ''; + } + + var out = '<a href="' + href + '" rel="noreferrer noopener"'; + if (title) { + out += ' title="' + title + '"'; + } + out += '>' + text + '</a>'; + return out; + }; + renderer.image = function(href, title, text) { + if (text) { + return text; + } + return title; + }; + renderer.blockquote = function(quote) { + return quote; + }; + return dompurify.sanitize( + marked(this.app.description.trim(), { + renderer: renderer, + gfm: false, + highlight: false, + tables: false, + breaks: false, + pedantic: false, + sanitize: true, + smartLists: true, + smartypants: false + }), + { + SAFE_FOR_JQUERY: true, + ALLOWED_TAGS: [ + 'strong', + 'p', + 'a', + 'ul', + 'ol', + 'li', + 'em', + 'del', + 'blockquote' + ] + } + ); + } + } +} +</script> + +<style scoped> + .force { + background: var(--color-main-background); + border-color: var(--color-error); + color: var(--color-error); + } + .force:hover, + .force:active { + background: var(--color-error); + border-color: var(--color-error) !important; + color: var(--color-main-background); + } +</style> diff --git a/apps/settings/src/components/appList.vue b/apps/settings/src/components/appList.vue new file mode 100644 index 00000000000..dd693b2fdce --- /dev/null +++ b/apps/settings/src/components/appList.vue @@ -0,0 +1,184 @@ +<!-- + - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net> + - + - @author Julius Härtl <jus@bitgrid.net> + - + - @license GNU AGPL version 3 or any later version + - + - This program is free software: you can redistribute it and/or modify + - it under the terms of the GNU Affero General Public License as + - published by the Free Software Foundation, either version 3 of the + - License, or (at your option) any later version. + - + - This program is distributed in the hope that it will be useful, + - but WITHOUT ANY WARRANTY; without even the implied warranty of + - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + - GNU Affero General Public License for more details. + - + - You should have received a copy of the GNU Affero General Public License + - along with this program. If not, see <http://www.gnu.org/licenses/>. + - + --> + +<template> + <div id="app-content-inner"> + <div id="apps-list" class="apps-list" :class="{installed: (useBundleView || useListView), store: useAppStoreView}"> + <template v-if="useListView"> + <transition-group name="app-list" tag="div" class="apps-list-container"> + <app-item v-for="app in apps" :key="app.id" :app="app" :category="category" /> + </transition-group> + </template> + <template v-for="bundle in bundles" v-if="useBundleView && bundleApps(bundle.id).length > 0"> + <transition-group name="app-list" tag="div" class="apps-list-container"> + + <div class="apps-header" :key="bundle.id"> + <div class="app-image"></div> + <h2>{{ bundle.name }} <input type="button" :value="bundleToggleText(bundle.id)" v-on:click="toggleBundle(bundle.id)"></h2> + <div class="app-version"></div> + <div class="app-level"></div> + <div class="app-groups"></div> + <div class="actions"> </div> + </div> + <app-item v-for="app in bundleApps(bundle.id)" :key="bundle.id + app.id" :app="app" :category="category"/> + </transition-group> + </template> + <template v-if="useAppStoreView"> + <app-item v-for="app in apps" :key="app.id" :app="app" :category="category" :list-view="false" /> + </template> + + </div> + + <div id="apps-list-search" class="apps-list installed"> + <div class="apps-list-container"> + <template v-if="search !== '' && searchApps.length > 0"> + <div class="section"> + <div></div> + <td colspan="5"> + <h2>{{ t('settings', 'Results from other categories') }}</h2> + </td> + </div> + <app-item v-for="app in searchApps" :key="app.id" :app="app" :category="category" :list-view="true" /> + </template> + </div> + </div> + + <div id="apps-list-empty" class="emptycontent emptycontent-search" v-if="search !== '' && !loading && searchApps.length === 0 && apps.length === 0"> + <div id="app-list-empty-icon" class="icon-settings-dark"></div> + <h2>{{ t('settings', 'No apps found for your version')}}</h2> + </div> + + <div id="searchresults"></div> + </div> +</template> + +<script> +import appItem from './appList/appItem'; +import prefix from './prefixMixin'; + +export default { + name: 'appList', + mixins: [prefix], + props: ['category', 'app', 'search'], + components: { + appItem + }, + computed: { + loading() { + return this.$store.getters.loading('list'); + }, + apps() { + let apps = this.$store.getters.getAllApps + .filter(app => app.name.toLowerCase().search(this.search.toLowerCase()) !== -1) + .sort(function (a, b) { + const sortStringA = '' + (a.active ? 0 : 1) + (a.update ? 0 : 1) + a.name; + const sortStringB = '' + (b.active ? 0 : 1) + (b.update ? 0 : 1) + b.name; + return OC.Util.naturalSortCompare(sortStringA, sortStringB); + }); + + if (this.category === 'installed') { + return apps.filter(app => app.installed); + } + if (this.category === 'enabled') { + return apps.filter(app => app.active && app.installed); + } + if (this.category === 'disabled') { + return apps.filter(app => !app.active && app.installed); + } + if (this.category === 'app-bundles') { + return apps.filter(app => app.bundles); + } + if (this.category === 'updates') { + return apps.filter(app => app.update); + } + // filter app store categories + return apps.filter(app => { + return app.appstore && app.category !== undefined && + (app.category === this.category || app.category.indexOf(this.category) > -1); + }); + }, + bundles() { + return this.$store.getters.getServerData.bundles; + }, + bundleApps() { + return function(bundle) { + return this.$store.getters.getAllApps + .filter(app => app.bundleId === bundle); + } + }, + searchApps() { + if (this.search === '') { + return []; + } + return this.$store.getters.getAllApps + .filter(app => { + if (app.name.toLowerCase().search(this.search.toLowerCase()) !== -1) { + return (!this.apps.find(_app => _app.id === app.id)); + } + return false; + }); + }, + useAppStoreView() { + return !this.useListView && !this.useBundleView; + }, + useListView() { + return (this.category === 'installed' || this.category === 'enabled' || this.category === 'disabled' || this.category === 'updates'); + }, + useBundleView() { + return (this.category === 'app-bundles'); + }, + allBundlesEnabled() { + let self = this; + return function(id) { + return self.bundleApps(id).filter(app => !app.active).length === 0; + } + }, + bundleToggleText() { + let self = this; + return function(id) { + if (self.allBundlesEnabled(id)) { + return t('settings', 'Disable all'); + } + return t('settings', 'Enable all'); + } + } + }, + methods: { + toggleBundle(id) { + if (this.allBundlesEnabled(id)) { + return this.disableBundle(id); + } + return this.enableBundle(id); + }, + enableBundle(id) { + let apps = this.bundleApps(id).map(app => app.id); + this.$store.dispatch('enableApp', { appId: apps, groups: [] }) + .catch((error) => { console.log(error); OC.Notification.show(error)}); + }, + disableBundle(id) { + let apps = this.bundleApps(id).map(app => app.id); + this.$store.dispatch('disableApp', { appId: apps, groups: [] }) + .catch((error) => { OC.Notification.show(error)}); + } + }, +} +</script> diff --git a/apps/settings/src/components/appList/appItem.vue b/apps/settings/src/components/appList/appItem.vue new file mode 100644 index 00000000000..daf5ddacc24 --- /dev/null +++ b/apps/settings/src/components/appList/appItem.vue @@ -0,0 +1,136 @@ +<!-- + - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net> + - + - @author Julius Härtl <jus@bitgrid.net> + - + - @license GNU AGPL version 3 or any later version + - + - This program is free software: you can redistribute it and/or modify + - it under the terms of the GNU Affero General Public License as + - published by the Free Software Foundation, either version 3 of the + - License, or (at your option) any later version. + - + - This program is distributed in the hope that it will be useful, + - but WITHOUT ANY WARRANTY; without even the implied warranty of + - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + - GNU Affero General Public License for more details. + - + - You should have received a copy of the GNU Affero General Public License + - along with this program. If not, see <http://www.gnu.org/licenses/>. + - + --> + +<template> + <div class="section" v-bind:class="{ selected: isSelected }" v-on:click="showAppDetails"> + <div class="app-image app-image-icon" v-on:click="showAppDetails"> + <div v-if="(listView && !app.preview) || (!listView && !app.screenshot)" class="icon-settings-dark"></div> + + <svg v-if="listView && app.preview" width="32" height="32" viewBox="0 0 32 32"> + <defs><filter :id="filterId"><feColorMatrix in="SourceGraphic" type="matrix" values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0"></feColorMatrix></filter></defs> + <image x="0" y="0" width="32" height="32" preserveAspectRatio="xMinYMin meet" :filter="filterUrl" :xlink:href="app.preview" class="app-icon"></image> + </svg> + + <img v-if="!listView && app.screenshot" :src="app.screenshot" width="100%" /> + </div> + <div class="app-name" v-on:click="showAppDetails"> + {{ app.name }} + </div> + <div class="app-summary" v-if="!listView">{{ app.summary }}</div> + <div class="app-version" v-if="listView"> + <span v-if="app.version">{{ app.version }}</span> + <span v-else-if="app.appstoreData.releases[0].version">{{ app.appstoreData.releases[0].version }}</span> + </div> + + <div class="app-level"> + <span class="supported icon-checkmark-color" v-if="app.level === 300" + v-tooltip.auto="t('settings', 'This app is supported via your current Nextcloud subscription.')"> + {{ t('settings', 'Supported') }}</span> + <span class="official icon-checkmark" v-if="app.level === 200" + v-tooltip.auto="t('settings', 'Official apps are developed by and within the community. They offer central functionality and are ready for production use.')"> + {{ t('settings', 'Official') }}</span> + <app-score v-if="hasRating && !listView" :score="app.score"></app-score> + </div> + + <div class="actions"> + <div class="warning" v-if="app.error">{{ app.error }}</div> + <div class="icon icon-loading-small" v-if="loading(app.id)"></div> + <input v-if="app.update" class="update primary" type="button" :value="t('settings', 'Update to {update}', {update:app.update})" v-on:click.stop="update(app.id)" :disabled="installing || loading(app.id)" /> + <input v-if="app.canUnInstall" class="uninstall" type="button" :value="t('settings', 'Remove')" v-on:click.stop="remove(app.id)" :disabled="installing || loading(app.id)" /> + <input v-if="app.active" class="enable" type="button" :value="t('settings','Disable')" v-on:click.stop="disable(app.id)" :disabled="installing || loading(app.id)" /> + <input v-if="!app.active && (app.canInstall || app.isCompatible)" class="enable" type="button" :value="enableButtonText" v-on:click.stop="enable(app.id)" v-tooltip.auto="enableButtonTooltip" :disabled="!app.canInstall || installing || loading(app.id)" /> + <input v-else-if="!app.active" class="enable force" type="button" :value="forceEnableButtonText" v-on:click.stop="forceEnable(app.id)" v-tooltip.auto="forceEnableButtonTooltip" :disabled="installing || loading(app.id)" /> + </div> + </div> +</template> + +<script> + import AppScore from './appScore'; + import AppManagement from '../appManagement'; + import SvgFilterMixin from '../svgFilterMixin'; + + export default { + name: 'appItem', + mixins: [AppManagement, SvgFilterMixin], + props: { + app: {}, + category: {}, + listView: { + type: Boolean, + default: true, + } + }, + watch: { + '$route.params.id': function (id) { + this.isSelected = (this.app.id === id); + } + }, + components: { + AppScore, + }, + data() { + return { + isSelected: false, + scrolled: false, + }; + }, + mounted() { + this.isSelected = (this.app.id === this.$route.params.id); + }, + computed: { + hasRating() { + return this.app.appstoreData && this.app.appstoreData.ratingNumOverall > 5; + }, + }, + watchers: { + + }, + methods: { + showAppDetails(event) { + if (event.currentTarget.tagName === 'INPUT' || event.currentTarget.tagName === 'A') { + return; + } + this.$router.push({ + name: 'apps-details', + params: {category: this.category, id: this.app.id} + }); + }, + prefix(prefix, content) { + return prefix + '_' + content; + }, + } + } +</script> + +<style scoped> + .force { + background: var(--color-main-background); + border-color: var(--color-error); + color: var(--color-error); + } + .force:hover, + .force:active { + background: var(--color-error); + border-color: var(--color-error) !important; + color: var(--color-main-background); + } +</style> diff --git a/apps/settings/src/components/appList/appScore.vue b/apps/settings/src/components/appList/appScore.vue new file mode 100644 index 00000000000..bf04c688186 --- /dev/null +++ b/apps/settings/src/components/appList/appScore.vue @@ -0,0 +1,38 @@ +<!-- + - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net> + - + - @author Julius Härtl <jus@bitgrid.net> + - + - @license GNU AGPL version 3 or any later version + - + - This program is free software: you can redistribute it and/or modify + - it under the terms of the GNU Affero General Public License as + - published by the Free Software Foundation, either version 3 of the + - License, or (at your option) any later version. + - + - This program is distributed in the hope that it will be useful, + - but WITHOUT ANY WARRANTY; without even the implied warranty of + - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + - GNU Affero General Public License for more details. + - + - You should have received a copy of the GNU Affero General Public License + - along with this program. If not, see <http://www.gnu.org/licenses/>. + - + --> + +<template> + <img :src="scoreImage" class="app-score-image" /> +</template> +<script> + export default { + name: 'appScore', + props: ['score'], + computed: { + scoreImage() { + let score = Math.round( this.score * 10 ); + let imageName = 'rating/s' + score + '.svg'; + return OC.imagePath('core', imageName); + } + } + }; +</script> \ No newline at end of file diff --git a/apps/settings/src/components/appManagement.vue b/apps/settings/src/components/appManagement.vue new file mode 100644 index 00000000000..79fa0bc75d5 --- /dev/null +++ b/apps/settings/src/components/appManagement.vue @@ -0,0 +1,138 @@ +<!-- + - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net> + - + - @author Julius Härtl <jus@bitgrid.net> + - + - @license GNU AGPL version 3 or any later version + - + - This program is free software: you can redistribute it and/or modify + - it under the terms of the GNU Affero General Public License as + - published by the Free Software Foundation, either version 3 of the + - License, or (at your option) any later version. + - + - This program is distributed in the hope that it will be useful, + - but WITHOUT ANY WARRANTY; without even the implied warranty of + - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + - GNU Affero General Public License for more details. + - + - You should have received a copy of the GNU Affero General Public License + - along with this program. If not, see <http://www.gnu.org/licenses/>. + - + --> + +<script> + export default { + mounted() { + if (this.app.groups.length > 0) { + this.groupCheckedAppsData = true; + } + }, + computed: { + appGroups() { + return this.app.groups.map(group => {return {id: group, name: group}}); + }, + loading() { + let self = this; + return function(id) { + return self.$store.getters.loading(id); + } + }, + installing() { + return this.$store.getters.loading('install'); + }, + enableButtonText() { + if (this.app.needsDownload) { + return t('settings', 'Download and enable'); + } + return t('settings', 'Enable'); + }, + forceEnableButtonText() { + if (this.app.needsDownload) { + return t('settings', 'Enable untested app'); + } + return t('settings', 'Enable untested app'); + }, + enableButtonTooltip() { + if (this.app.needsDownload) { + return t('settings','The app will be downloaded from the app store'); + } + return false; + }, + forceEnableButtonTooltip() { + const base = t('settings', 'This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected.'); + if (this.app.needsDownload) { + return base + ' ' + t('settings','The app will be downloaded from the app store'); + } + return base; + } + }, + methods: { + asyncFindGroup(query) { + return this.$store.dispatch('getGroups', {search: query, limit: 5, offset: 0}); + }, + isLimitedToGroups(app) { + if (this.app.groups.length || this.groupCheckedAppsData) { + return true; + } + return false; + }, + setGroupLimit: function() { + if (!this.groupCheckedAppsData) { + this.$store.dispatch('enableApp', {appId: this.app.id, groups: []}); + } + }, + canLimitToGroups(app) { + if (app.types && app.types.includes('filesystem') + || app.types.includes('prelogin') + || app.types.includes('authentication') + || app.types.includes('logging') + || app.types.includes('prevent_group_restriction')) { + return false; + } + return true; + }, + addGroupLimitation(group) { + let groups = this.app.groups.concat([]).concat([group.id]); + this.$store.dispatch('enableApp', { appId: this.app.id, groups: groups}); + }, + removeGroupLimitation(group) { + let currentGroups = this.app.groups.concat([]); + let index = currentGroups.indexOf(group.id); + if (index > -1) { + currentGroups.splice(index, 1); + } + this.$store.dispatch('enableApp', { appId: this.app.id, groups: currentGroups}); + }, + forceEnable(appId) { + this.$store.dispatch('forceEnableApp', { appId: appId, groups: [] }) + .then((response) => { OC.Settings.Apps.rebuildNavigation(); }) + .catch((error) => { OC.Notification.show(error)}); + }, + enable(appId) { + this.$store.dispatch('enableApp', { appId: appId, groups: [] }) + .then((response) => { OC.Settings.Apps.rebuildNavigation(); }) + .catch((error) => { OC.Notification.show(error)}); + }, + disable(appId) { + this.$store.dispatch('disableApp', { appId: appId }) + .then((response) => { OC.Settings.Apps.rebuildNavigation(); }) + .catch((error) => { OC.Notification.show(error)}); + }, + remove(appId) { + this.$store.dispatch('uninstallApp', { appId: appId }) + .then((response) => { OC.Settings.Apps.rebuildNavigation(); }) + .catch((error) => { OC.Notification.show(error)}); + }, + install(appId) { + this.$store.dispatch('enableApp', { appId: appId }) + .then((response) => { OC.Settings.Apps.rebuildNavigation(); }) + .catch((error) => { OC.Notification.show(error)}); + }, + update(appId) { + this.$store.dispatch('updateApp', { appId: appId }) + .then((response) => { OC.Settings.Apps.rebuildNavigation(); }) + .catch((error) => { OC.Notification.show(error)}); + } + } + } +</script> diff --git a/apps/settings/src/components/popoverMenu.vue b/apps/settings/src/components/popoverMenu.vue new file mode 100644 index 00000000000..dd9a29cc9fe --- /dev/null +++ b/apps/settings/src/components/popoverMenu.vue @@ -0,0 +1,40 @@ +<!-- + - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com> + - + - @author John Molakvoæ <skjnldsv@protonmail.com> + - + - @license GNU AGPL version 3 or any later version + - + - This program is free software: you can redistribute it and/or modify + - it under the terms of the GNU Affero General Public License as + - published by the Free Software Foundation, either version 3 of the + - License, or (at your option) any later version. + - + - This program is distributed in the hope that it will be useful, + - but WITHOUT ANY WARRANTY; without even the implied warranty of + - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + - GNU Affero General Public License for more details. + - + - You should have received a copy of the GNU Affero General Public License + - along with this program. If not, see <http://www.gnu.org/licenses/>. + - + --> + +<template> + <ul> + <popover-item v-for="(item, key) in menu" :item="item" :key="key" /> + </ul> +</template> + + +<script> +import popoverItem from './popoverMenu/popoverItem'; + +export default { + name: 'popoverMenu', + props: ['menu'], + components: { + popoverItem + } +} +</script> diff --git a/apps/settings/src/components/prefixMixin.vue b/apps/settings/src/components/prefixMixin.vue new file mode 100644 index 00000000000..e2feb63276d --- /dev/null +++ b/apps/settings/src/components/prefixMixin.vue @@ -0,0 +1,32 @@ +<!-- + - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net> + - + - @author Julius Härtl <jus@bitgrid.net> + - + - @license GNU AGPL version 3 or any later version + - + - This program is free software: you can redistribute it and/or modify + - it under the terms of the GNU Affero General Public License as + - published by the Free Software Foundation, either version 3 of the + - License, or (at your option) any later version. + - + - This program is distributed in the hope that it will be useful, + - but WITHOUT ANY WARRANTY; without even the implied warranty of + - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + - GNU Affero General Public License for more details. + - + - You should have received a copy of the GNU Affero General Public License + - along with this program. If not, see <http://www.gnu.org/licenses/>. + - + --> + +<script> + export default { + name: 'prefixMixin', + methods: { + prefix (prefix, content) { + return prefix + '_' + content; + }, + } + } +</script> \ No newline at end of file diff --git a/apps/settings/src/components/svgFilterMixin.vue b/apps/settings/src/components/svgFilterMixin.vue new file mode 100644 index 00000000000..1d6e83d4829 --- /dev/null +++ b/apps/settings/src/components/svgFilterMixin.vue @@ -0,0 +1,40 @@ +<!-- + - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net> + - + - @author Julius Härtl <jus@bitgrid.net> + - + - @license GNU AGPL version 3 or any later version + - + - This program is free software: you can redistribute it and/or modify + - it under the terms of the GNU Affero General Public License as + - published by the Free Software Foundation, either version 3 of the + - License, or (at your option) any later version. + - + - This program is distributed in the hope that it will be useful, + - but WITHOUT ANY WARRANTY; without even the implied warranty of + - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + - GNU Affero General Public License for more details. + - + - You should have received a copy of the GNU Affero General Public License + - along with this program. If not, see <http://www.gnu.org/licenses/>. + - + --> + +<script> + export default { + name: 'svgFilterMixin', + mounted() { + this.filterId = 'invertIconApps' + Math.floor((Math.random() * 100 )) + new Date().getSeconds() + new Date().getMilliseconds(); + }, + computed: { + filterUrl () { + return `url(#${this.filterId})`; + }, + }, + data() { + return { + filterId: '', + }; + }, + } +</script> \ No newline at end of file diff --git a/apps/settings/src/components/userList.vue b/apps/settings/src/components/userList.vue new file mode 100644 index 00000000000..7c363b01ae1 --- /dev/null +++ b/apps/settings/src/components/userList.vue @@ -0,0 +1,429 @@ +<!-- + - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com> + - + - @author John Molakvoæ <skjnldsv@protonmail.com> + - + - @license GNU AGPL version 3 or any later version + - + - This program is free software: you can redistribute it and/or modify + - it under the terms of the GNU Affero General Public License as + - published by the Free Software Foundation, either version 3 of the + - License, or (at your option) any later version. + - + - This program is distributed in the hope that it will be useful, + - but WITHOUT ANY WARRANTY; without even the implied warranty of + - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + - GNU Affero General Public License for more details. + - + - You should have received a copy of the GNU Affero General Public License + - along with this program. If not, see <http://www.gnu.org/licenses/>. + - + --> + +<template> + <div id="app-content" class="user-list-grid" v-on:scroll.passive="onScroll"> + <div class="row" id="grid-header" :class="{'sticky': scrolled && !showConfig.showNewUserForm}"> + <div id="headerAvatar" class="avatar"></div> + <div id="headerName" class="name">{{ t('settings', 'Username') }}</div> + <div id="headerDisplayName" class="displayName">{{ t('settings', 'Display name') }}</div> + <div id="headerPassword" class="password">{{ t('settings', 'Password') }}</div> + <div id="headerAddress" class="mailAddress">{{ t('settings', 'Email') }}</div> + <div id="headerGroups" class="groups">{{ t('settings', 'Groups') }}</div> + <div id="headerSubAdmins" class="subadmins" + v-if="subAdminsGroups.length>0 && settings.isAdmin">{{ t('settings', 'Group admin for') }}</div> + <div id="headerQuota" class="quota">{{ t('settings', 'Quota') }}</div> + <div id="headerLanguages" class="languages" + v-if="showConfig.showLanguages">{{ t('settings', 'Language') }}</div> + <div class="headerStorageLocation storageLocation" + v-if="showConfig.showStoragePath">{{ t('settings', 'Storage location') }}</div> + <div class="headerUserBackend userBackend" + v-if="showConfig.showUserBackend">{{ t('settings', 'User backend') }}</div> + <div class="headerLastLogin lastLogin" + v-if="showConfig.showLastLogin">{{ t('settings', 'Last login') }}</div> + <div class="userActions"></div> + </div> + + <form class="row" id="new-user" v-show="showConfig.showNewUserForm" + v-on:submit.prevent="createUser" :disabled="loading.all" + :class="{'sticky': scrolled && showConfig.showNewUserForm}"> + <div :class="loading.all?'icon-loading-small':'icon-add'"></div> + <div class="name"> + <input id="newusername" type="text" required v-model="newUser.id" + :placeholder="this.settings.newUserGenerateUserID + ? t('settings', 'Will be autogenerated') + : t('settings', 'Username')" + name="username" autocomplete="off" autocapitalize="none" + autocorrect="off" ref="newusername" pattern="[a-zA-Z0-9 _\.@\-']+" + :disabled="this.settings.newUserGenerateUserID"> + </div> + <div class="displayName"> + <input id="newdisplayname" type="text" v-model="newUser.displayName" + :placeholder="t('settings', 'Display name')" name="displayname" + autocomplete="off" autocapitalize="none" autocorrect="off"> + </div> + <div class="password"> + <input id="newuserpassword" type="password" v-model="newUser.password" + :required="newUser.mailAddress===''" ref="newuserpassword" + :placeholder="t('settings', 'Password')" name="password" + autocomplete="new-password" autocapitalize="none" autocorrect="off" + :minlength="minPasswordLength"> + </div> + <div class="mailAddress"> + <input id="newemail" type="email" v-model="newUser.mailAddress" + :required="newUser.password==='' || this.settings.newUserRequireEmail" + :placeholder="t('settings', 'Email')" name="email" + autocomplete="off" autocapitalize="none" autocorrect="off"> + </div> + <div class="groups"> + <!-- hidden input trick for vanilla html5 form validation --> + <input type="text" :value="newUser.groups" v-if="!settings.isAdmin" + tabindex="-1" id="newgroups" :required="!settings.isAdmin" + :class="{'icon-loading-small': loading.groups}"/> + <multiselect v-model="newUser.groups" :options="canAddGroups" :disabled="loading.groups||loading.all" + tag-placeholder="create" :placeholder="t('settings', 'Add user in group')" + label="name" track-by="id" class="multiselect-vue" + :multiple="true" :taggable="true" :close-on-select="false" + :tag-width="60" @tag="createGroup"> + <!-- If user is not admin, he is a subadmin. + Subadmins can't create users outside their groups + Therefore, empty select is forbidden --> + <span slot="noResult">{{t('settings', 'No results')}}</span> + </multiselect> + </div> + <div class="subadmins" v-if="subAdminsGroups.length>0 && settings.isAdmin"> + <multiselect :options="subAdminsGroups" v-model="newUser.subAdminsGroups" + :placeholder="t('settings', 'Set user as admin for')" + label="name" track-by="id" class="multiselect-vue" + :multiple="true" :close-on-select="false" :tag-width="60"> + <span slot="noResult">{{t('settings', 'No results')}}</span> + </multiselect> + </div> + <div class="quota"> + <multiselect :options="quotaOptions" v-model="newUser.quota" + :placeholder="t('settings', 'Select user quota')" + label="label" track-by="id" class="multiselect-vue" + :allowEmpty="false" :taggable="true" + @tag="validateQuota" > + </multiselect> + </div> + <div class="languages" v-if="showConfig.showLanguages"> + <multiselect :options="languages" v-model="newUser.language" + :placeholder="t('settings', 'Default language')" + label="name" track-by="code" class="multiselect-vue" + :allowEmpty="false" group-values="languages" group-label="label"> + </multiselect> + </div> + <div class="storageLocation" v-if="showConfig.showStoragePath"></div> + <div class="userBackend" v-if="showConfig.showUserBackend"></div> + <div class="lastLogin" v-if="showConfig.showLastLogin"></div> + <div class="userActions"> + <input type="submit" id="newsubmit" class="button primary icon-checkmark-white has-tooltip" + value="" :title="t('settings', 'Add a new user')"> + </div> + </form> + + <user-row v-for="(user, key) in filteredUsers" :user="user" :key="key" :settings="settings" :showConfig="showConfig" + :groups="groups" :subAdminsGroups="subAdminsGroups" :quotaOptions="quotaOptions" :languages="languages" + :externalActions="externalActions" /> + <infinite-loading @infinite="infiniteHandler" ref="infiniteLoading"> + <div slot="spinner"><div class="users-icon-loading icon-loading"></div></div> + <div slot="no-more"><div class="users-list-end"></div></div> + <div slot="no-results"> + <div id="emptycontent"> + <div class="icon-contacts-dark"></div> + <h2>{{t('settings', 'No users in here')}}</h2> + </div> + </div> + </infinite-loading> + </div> +</template> + +<script> +import userRow from './userList/userRow'; +import { Multiselect } from 'nextcloud-vue' +import InfiniteLoading from 'vue-infinite-loading'; +import Vue from 'vue'; + +const unlimitedQuota = { + id: 'none', + label: t('settings', 'Unlimited') +} +const defaultQuota = { + id: 'default', + label: t('settings', 'Default quota') +} +const newUser = { + id: '', + displayName: '', + password: '', + mailAddress: '', + groups: [], + subAdminsGroups: [], + quota: defaultQuota, + language: { + code: 'en', + name: t('settings', 'Default language') + } +} + +export default { + name: 'userList', + props: ['users', 'showConfig', 'selectedGroup', 'externalActions'], + components: { + userRow, + Multiselect, + InfiniteLoading + }, + data() { + return { + unlimitedQuota, + defaultQuota, + loading: { + all: false, + groups: false + }, + scrolled: false, + searchQuery: '', + newUser: Object.assign({}, newUser) + }; + }, + mounted() { + if (!this.settings.canChangePassword) { + OC.Notification.showTemporary(t('settings', 'Password change is disabled because the master key is disabled')); + } + + /** + * Reset and init new user form + */ + this.resetForm() + + /** + * Register search + */ + this.userSearch = new OCA.Search(this.search, this.resetSearch); + }, + computed: { + settings() { + return this.$store.getters.getServerData; + }, + filteredUsers() { + if (this.selectedGroup === 'disabled') { + let disabledUsers = this.users.filter(user => user.enabled === false); + if (disabledUsers.length === 0 && this.$refs.infiniteLoading && this.$refs.infiniteLoading.isComplete) { + // disabled group is empty, redirection to all users + this.$router.push({ name: 'users' }); + this.$refs.infiniteLoading.stateChanger.reset() + } + return disabledUsers; + } + if (!this.settings.isAdmin) { + // we don't want subadmins to edit themselves + return this.users.filter(user => user.enabled !== false && user.id !== OC.getCurrentUser().uid); + } + return this.users.filter(user => user.enabled !== false); + }, + groups() { + // data provided php side + remove the disabled group + return this.$store.getters.getGroups + .filter(group => group.id !== 'disabled') + .sort((a, b) => a.name.localeCompare(b.name)); + }, + canAddGroups() { + // disabled if no permission to add new users to group + return this.groups.map(group => { + // clone object because we don't want + // to edit the original groups + group = Object.assign({}, group); + group.$isDisabled = group.canAdd === false; + return group; + }); + }, + subAdminsGroups() { + // data provided php side + return this.$store.getters.getSubadminGroups; + }, + quotaOptions() { + // convert the preset array into objects + let quotaPreset = this.settings.quotaPreset.reduce((acc, cur) => acc.concat({id: cur, label: cur}), []); + // add default presets + quotaPreset.unshift(this.unlimitedQuota); + quotaPreset.unshift(this.defaultQuota); + return quotaPreset; + }, + minPasswordLength() { + return this.$store.getters.getPasswordPolicyMinLength; + }, + usersOffset() { + return this.$store.getters.getUsersOffset; + }, + usersLimit() { + return this.$store.getters.getUsersLimit; + }, + usersCount() { + return this.users.length + }, + + /* LANGUAGES */ + languages() { + return Array( + { + label: t('settings', 'Common languages'), + languages: this.settings.languages.commonlanguages + }, + { + label: t('settings', 'All languages'), + languages: this.settings.languages.languages + } + ); + } + }, + watch: { + // watch url change and group select + selectedGroup: function (val, old) { + this.$store.commit('resetUsers'); + this.$refs.infiniteLoading.stateChanger.reset() + this.setNewUserDefaultGroup(val); + }, + + // make sure the infiniteLoading state is changed if we manually + // add/remove data from the store + usersCount: function(val, old) { + // deleting the last user, reset the list + if (val === 0 && old === 1) { + this.$refs.infiniteLoading.stateChanger.reset() + // adding the first user, warn the infiniteLoader that + // the list is not empty anymore (we don't fetch the newly + // added user as we already have all the info we need) + } else if (val === 1 && old === 0) { + this.$refs.infiniteLoading.stateChanger.loaded() + } + } + }, + methods: { + onScroll(event) { + this.scrolled = event.target.scrollTo > 0; + }, + + /** + * Validate quota string to make sure it's a valid human file size + * + * @param {string} quota Quota in readable format '5 GB' + * @returns {Object} + */ + validateQuota(quota) { + // only used for new presets sent through @Tag + let validQuota = OC.Util.computerFileSize(quota); + if (validQuota !== null && validQuota >= 0) { + // unify format output + quota = OC.Util.humanFileSize(OC.Util.computerFileSize(quota)); + return this.newUser.quota = {id: quota, label: quota}; + } + // Default is unlimited + return this.newUser.quota = this.quotaOptions[0]; + }, + + infiniteHandler($state) { + this.$store.dispatch('getUsers', { + offset: this.usersOffset, + limit: this.usersLimit, + group: this.selectedGroup !== 'disabled' ? this.selectedGroup : '', + search: this.searchQuery + }) + .then((response) => { response ? $state.loaded() : $state.complete() }); + }, + + /* SEARCH */ + search(query) { + this.searchQuery = query; + this.$store.commit('resetUsers'); + this.$refs.infiniteLoading.stateChanger.reset() + }, + resetSearch() { + this.search(''); + }, + + resetForm() { + // revert form to original state + this.newUser = Object.assign({}, newUser); + + /** + * Init default language from server data. The use of this.settings + * requires a computed variable, which break the v-model binding of the form, + * this is a much easier solution than getter and setter on a computed var + */ + if (this.settings.defaultLanguage) { + Vue.set(this.newUser.language, 'code', this.settings.defaultLanguage); + } + + /** + * In case the user directly loaded the user list within a group + * the watch won't be triggered. We need to initialize it. + */ + this.setNewUserDefaultGroup(this.selectedGroup); + + this.loading.all = false; + }, + createUser() { + this.loading.all = true; + this.$store.dispatch('addUser', { + userid: this.newUser.id, + password: this.newUser.password, + displayName: this.newUser.displayName, + email: this.newUser.mailAddress, + groups: this.newUser.groups.map(group => group.id), + subadmin: this.newUser.subAdminsGroups.map(group => group.id), + quota: this.newUser.quota.id, + language: this.newUser.language.code, + }) + .then(() => { + this.resetForm() + this.$refs.newusername.focus(); + }) + .catch((error) => { + this.loading.all = false; + if (error.response && error.response.data && error.response.data.ocs && error.response.data.ocs.meta) { + const statuscode = error.response.data.ocs.meta.statuscode + if (statuscode === 102) { + // wrong username + this.$refs.newusername.focus(); + } else if (statuscode === 107) { + // wrong password + this.$refs.newuserpassword.focus(); + } + } + }); + }, + setNewUserDefaultGroup(value) { + if (value && value.length > 0) { + // setting new user default group to the current selected one + let currentGroup = this.groups.find(group => group.id === value); + if (currentGroup) { + this.newUser.groups = [currentGroup]; + return; + } + } + // fallback, empty selected group + this.newUser.groups = []; + }, + + /** + * Create a new group + * + * @param {string} groups Group id + * @returns {Promise} + */ + createGroup(gid) { + this.loading.groups = true; + this.$store.dispatch('addGroup', gid) + .then((group) => { + this.newUser.groups.push(this.groups.find(group => group.id === gid)) + this.loading.groups = false; + }) + .catch(() => { + this.loading.groups = false; + }); + return this.$store.getters.getGroups[this.groups.length]; + } + } +} +</script> diff --git a/apps/settings/src/components/userList/userRow.vue b/apps/settings/src/components/userList/userRow.vue new file mode 100644 index 00000000000..4bcc40965b0 --- /dev/null +++ b/apps/settings/src/components/userList/userRow.vue @@ -0,0 +1,574 @@ +<!-- + - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com> + - + - @author John Molakvoæ <skjnldsv@protonmail.com> + - + - @license GNU AGPL version 3 or any later version + - + - This program is free software: you can redistribute it and/or modify + - it under the terms of the GNU Affero General Public License as + - published by the Free Software Foundation, either version 3 of the + - License, or (at your option) any later version. + - + - This program is distributed in the hope that it will be useful, + - but WITHOUT ANY WARRANTY; without even the implied warranty of + - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + - GNU Affero General Public License for more details. + - + - You should have received a copy of the GNU Affero General Public License + - along with this program. If not, see <http://www.gnu.org/licenses/>. + - + --> + +<template> + <!-- Obfuscated user: Logged in user does not have permissions to see all of the data --> + <div class="row" v-if="Object.keys(user).length ===1" :data-id="user.id"> + <div class="avatar" :class="{'icon-loading-small': loading.delete || loading.disable || loading.wipe}"> + <img alt="" width="32" height="32" :src="generateAvatar(user.id, 32)" + :srcset="generateAvatar(user.id, 64)+' 2x, '+generateAvatar(user.id, 128)+' 4x'" + v-if="!loading.delete && !loading.disable && !loading.wipe"> + </div> + <div class="name">{{user.id}}</div> + <div class="obfuscated">{{t('settings','You do not have permissions to see the details of this user')}}</div> + </div> + + <!-- User full data --> + <div class="row" v-else :class="{'disabled': loading.delete || loading.disable}" :data-id="user.id"> + <div class="avatar" :class="{'icon-loading-small': loading.delete || loading.disable || loading.wipe}"> + <img alt="" width="32" height="32" :src="generateAvatar(user.id, 32)" + :srcset="generateAvatar(user.id, 64)+' 2x, '+generateAvatar(user.id, 128)+' 4x'" + v-if="!loading.delete && !loading.disable && !loading.wipe"> + </div> + <!-- dirty hack to ellipsis on two lines --> + <div class="name">{{user.id}}</div> + <form class="displayName" :class="{'icon-loading-small': loading.displayName}" v-on:submit.prevent="updateDisplayName"> + <template v-if="user.backendCapabilities.setDisplayName"> + <input v-if="user.backendCapabilities.setDisplayName" + :id="'displayName'+user.id+rand" type="text" + :disabled="loading.displayName||loading.all" + :value="user.displayname" ref="displayName" + autocomplete="new-password" autocorrect="off" autocapitalize="off" spellcheck="false" /> + <input v-if="user.backendCapabilities.setDisplayName" type="submit" class="icon-confirm" value="" /> + </template> + <div v-else class="name" v-tooltip.auto="t('settings', 'The backend does not support changing the display name')">{{user.displayname}}</div> + </form> + <form class="password" v-if="settings.canChangePassword && user.backendCapabilities.setPassword" :class="{'icon-loading-small': loading.password}" + v-on:submit.prevent="updatePassword"> + <input :id="'password'+user.id+rand" type="password" required + :disabled="loading.password||loading.all" :minlength="minPasswordLength" + value="" :placeholder="t('settings', 'New password')" ref="password" + autocomplete="new-password" autocorrect="off" autocapitalize="off" spellcheck="false" /> + <input type="submit" class="icon-confirm" value="" /> + </form> + <div v-else></div> + <form class="mailAddress" :class="{'icon-loading-small': loading.mailAddress}" v-on:submit.prevent="updateEmail"> + <input :id="'mailAddress'+user.id+rand" type="email" + :disabled="loading.mailAddress||loading.all" + :value="user.email" ref="mailAddress" + autocomplete="new-password" autocorrect="off" autocapitalize="off" spellcheck="false" /> + <input type="submit" class="icon-confirm" value="" /> + </form> + <div class="groups" :class="{'icon-loading-small': loading.groups}"> + <multiselect :value="userGroups" :options="availableGroups" :disabled="loading.groups||loading.all" + tag-placeholder="create" :placeholder="t('settings', 'Add user in group')" + label="name" track-by="id" class="multiselect-vue" :limit="2" + :multiple="true" :taggable="settings.isAdmin" :closeOnSelect="false" + :tag-width="60" + @tag="createGroup" @select="addUserGroup" @remove="removeUserGroup"> + <span slot="limit" class="multiselect__limit" v-tooltip.auto="formatGroupsTitle(userGroups)">+{{userGroups.length-2}}</span> + <span slot="noResult">{{t('settings', 'No results')}}</span> + </multiselect> + </div> + <div class="subadmins" v-if="subAdminsGroups.length>0 && settings.isAdmin" :class="{'icon-loading-small': loading.subadmins}"> + <multiselect :value="userSubAdminsGroups" :options="subAdminsGroups" :disabled="loading.subadmins||loading.all" + :placeholder="t('settings', 'Set user as admin for')" + label="name" track-by="id" class="multiselect-vue" :limit="2" + :multiple="true" :closeOnSelect="false" :tag-width="60" + @select="addUserSubAdmin" @remove="removeUserSubAdmin"> + <span slot="limit" class="multiselect__limit" v-tooltip.auto="formatGroupsTitle(userSubAdminsGroups)">+{{userSubAdminsGroups.length-2}}</span> + <span slot="noResult">{{t('settings', 'No results')}}</span> + </multiselect> + </div> + <div class="quota" :class="{'icon-loading-small': loading.quota}" v-tooltip.auto="usedSpace"> + <multiselect :value="userQuota" :options="quotaOptions" :disabled="loading.quota||loading.all" + tag-placeholder="create" :placeholder="t('settings', 'Select user quota')" + label="label" track-by="id" class="multiselect-vue" + :allowEmpty="false" :taggable="true" + @tag="validateQuota" @input="setUserQuota"> + </multiselect> + <progress class="quota-user-progress" :class="{'warn':usedQuota>80}" :value="usedQuota" max="100"></progress> + </div> + <div class="languages" :class="{'icon-loading-small': loading.languages}" + v-if="showConfig.showLanguages"> + <multiselect :value="userLanguage" :options="languages" :disabled="loading.languages||loading.all" + :placeholder="t('settings', 'No language set')" + label="name" track-by="code" class="multiselect-vue" + :allowEmpty="false" group-values="languages" group-label="label" + @input="setUserLanguage"> + </multiselect> + </div> + <div class="storageLocation" v-if="showConfig.showStoragePath">{{user.storageLocation}}</div> + <div class="userBackend" v-if="showConfig.showUserBackend">{{user.backend}}</div> + <div class="lastLogin" v-if="showConfig.showLastLogin" v-tooltip.auto="user.lastLogin>0 ? OC.Util.formatDate(user.lastLogin) : ''"> + {{user.lastLogin>0 ? OC.Util.relativeModifiedDate(user.lastLogin) : t('settings','Never')}} + </div> + <div class="userActions"> + <div class="toggleUserActions" v-if="OC.currentUser !== user.id && user.id !== 'admin' && !loading.all"> + <div class="icon-more" v-click-outside="hideMenu" @click="toggleMenu"></div> + <div class="popovermenu" :class="{ 'open': openedMenu }"> + <popover-menu :menu="userActions" /> + </div> + </div> + <div class="feedback" :style="{opacity: feedbackMessage !== '' ? 1 : 0}"> + <div class="icon-checkmark"></div> + {{feedbackMessage}} + </div> + </div> + </div> +</template> + +<script> +import ClickOutside from 'vue-click-outside'; +import Vue from 'vue' +import VTooltip from 'v-tooltip' +import { PopoverMenu, Multiselect } from 'nextcloud-vue' + +Vue.use(VTooltip) + +export default { + name: 'userRow', + props: ['user', 'settings', 'groups', 'subAdminsGroups', 'quotaOptions', 'showConfig', 'languages', 'externalActions'], + components: { + PopoverMenu, + Multiselect + }, + directives: { + ClickOutside + }, + mounted() { + // required if popup needs to stay opened after menu click + // since we only have disable/delete actions, let's close it directly + // this.popupItem = this.$el; + }, + data() { + return { + rand: parseInt(Math.random() * 1000), + openedMenu: false, + feedbackMessage: '', + loading: { + all: false, + displayName: false, + password: false, + mailAddress: false, + groups: false, + subadmins: false, + quota: false, + delete: false, + disable: false, + languages: false, + wipe: false, + } + } + }, + computed: { + /* USER POPOVERMENU ACTIONS */ + userActions() { + let actions = [ + { + icon: 'icon-delete', + text: t('settings', 'Delete user'), + action: this.deleteUser, + }, + { + icon: 'icon-delete', + text: t('settings', 'Wipe all devices'), + action: this.wipeUserDevices, + }, + { + icon: this.user.enabled ? 'icon-close' : 'icon-add', + text: this.user.enabled ? t('settings', 'Disable user') : t('settings', 'Enable user'), + action: this.enableDisableUser, + }, + ]; + if (this.user.email !== null && this.user.email !== '') { + actions.push({ + icon: 'icon-mail', + text: t('settings','Resend welcome email'), + action: this.sendWelcomeMail + }) + } + return actions.concat(this.externalActions); + }, + + /* GROUPS MANAGEMENT */ + userGroups() { + let userGroups = this.groups.filter(group => this.user.groups.includes(group.id)); + return userGroups; + }, + userSubAdminsGroups() { + let userSubAdminsGroups = this.subAdminsGroups.filter(group => this.user.subadmin.includes(group.id)); + return userSubAdminsGroups; + }, + availableGroups() { + return this.groups.map((group) => { + // clone object because we don't want + // to edit the original groups + let groupClone = Object.assign({}, group); + + // two settings here: + // 1. user NOT in group but no permission to add + // 2. user is in group but no permission to remove + groupClone.$isDisabled = + (group.canAdd === false && + !this.user.groups.includes(group.id)) || + (group.canRemove === false && + this.user.groups.includes(group.id)); + return groupClone; + }); + }, + + /* QUOTA MANAGEMENT */ + usedSpace() { + if (this.user.quota.used) { + return t('settings', '{size} used', {size: OC.Util.humanFileSize(this.user.quota.used)}); + } + return t('settings', '{size} used', {size: OC.Util.humanFileSize(0)}); + }, + usedQuota() { + let quota = this.user.quota.quota; + if (quota > 0) { + quota = Math.min(100, Math.round(this.user.quota.used / quota * 100)); + } else { + var usedInGB = this.user.quota.used / (10 * Math.pow(2, 30)); + //asymptotic curve approaching 50% at 10GB to visualize used stace with infinite quota + quota = 95 * (1 - (1 / (usedInGB + 1))); + } + return isNaN(quota) ? 0 : quota; + }, + // Mapping saved values to objects + userQuota() { + if (this.user.quota.quota >= 0) { + // if value is valid, let's map the quotaOptions or return custom quota + let humanQuota = OC.Util.humanFileSize(this.user.quota.quota); + let userQuota = this.quotaOptions.find(quota => quota.id === humanQuota); + return userQuota ? userQuota : {id:humanQuota, label:humanQuota}; + } else if (this.user.quota.quota === 'default') { + // default quota is replaced by the proper value on load + return this.quotaOptions[0]; + } + return this.quotaOptions[1]; // unlimited + }, + + /* PASSWORD POLICY? */ + minPasswordLength() { + return this.$store.getters.getPasswordPolicyMinLength; + }, + + /* LANGUAGE */ + userLanguage() { + let availableLanguages = this.languages[0].languages.concat(this.languages[1].languages); + let userLang = availableLanguages.find(lang => lang.code === this.user.language); + if (typeof userLang !== 'object' && this.user.language !== '') { + return { + code: this.user.language, + name: this.user.language + } + } else if(this.user.language === '') { + return false; + } + return userLang; + } + }, + methods: { + /* MENU HANDLING */ + toggleMenu() { + this.openedMenu = !this.openedMenu; + }, + hideMenu() { + this.openedMenu = false; + }, + + /** + * Generate avatar url + * + * @param {string} user The user name + * @param {int} size Size integer, default 32 + * @returns {string} + */ + generateAvatar(user, size=32) { + return OC.generateUrl( + '/avatar/{user}/{size}?v={version}', + { + user: user, + size: size, + version: oc_userconfig.avatar.version + } + ); + }, + + /** + * Format array of groups objects to a string for the popup + * + * @param {array} groups The groups + * @returns {string} + */ + formatGroupsTitle(groups) { + let names = groups.map(group => group.name); + return names.slice(2,).join(', '); + }, + + wipeUserDevices() { + this.loading.wipe = true; + this.loading.all = true; + let userid = this.user.id; + return this.$store.dispatch('wipeUserDevices', userid) + .then(() => { + this.loading.wipe = false + this.loading.all = false + }); + }, + + deleteUser() { + this.loading.delete = true; + this.loading.all = true; + let userid = this.user.id; + return this.$store.dispatch('deleteUser', userid) + .then(() => { + this.loading.delete = false + this.loading.all = false + }); + }, + + enableDisableUser() { + this.loading.delete = true; + this.loading.all = true; + let userid = this.user.id; + let enabled = !this.user.enabled; + return this.$store.dispatch('enableDisableUser', {userid, enabled}) + .then(() => { + this.loading.delete = false + this.loading.all = false + }); + }, + + /** + * Set user displayName + * + * @param {string} displayName The display name + * @returns {Promise} + */ + updateDisplayName() { + let displayName = this.$refs.displayName.value; + this.loading.displayName = true; + this.$store.dispatch('setUserData', { + userid: this.user.id, + key: 'displayname', + value: displayName + }).then(() => { + this.loading.displayName = false; + this.$refs.displayName.value = displayName; + }); + }, + + /** + * Set user password + * + * @param {string} password The email adress + * @returns {Promise} + */ + updatePassword() { + let password = this.$refs.password.value; + this.loading.password = true; + this.$store.dispatch('setUserData', { + userid: this.user.id, + key: 'password', + value: password + }).then(() => { + this.loading.password = false; + this.$refs.password.value = ''; // empty & show placeholder + }); + }, + + /** + * Set user mailAddress + * + * @param {string} mailAddress The email adress + * @returns {Promise} + */ + updateEmail() { + let mailAddress = this.$refs.mailAddress.value; + this.loading.mailAddress = true; + this.$store.dispatch('setUserData', { + userid: this.user.id, + key: 'email', + value: mailAddress + }).then(() => { + this.loading.mailAddress = false; + this.$refs.mailAddress.value = mailAddress; + }); + }, + + /** + * Create a new group and add user to it + * + * @param {string} groups Group id + * @returns {Promise} + */ + createGroup(gid) { + this.loading = {groups:true, subadmins:true} + this.$store.dispatch('addGroup', gid) + .then(() => { + this.loading = {groups:false, subadmins:false}; + let userid = this.user.id; + this.$store.dispatch('addUserGroup', {userid, gid}); + }) + .catch(() => { + this.loading = {groups:false, subadmins:false}; + }); + return this.$store.getters.getGroups[this.groups.length]; + }, + + /** + * Add user to group + * + * @param {object} group Group object + * @returns {Promise} + */ + addUserGroup(group) { + if (group.canAdd === false) { + return false; + } + this.loading.groups = true; + let userid = this.user.id; + let gid = group.id; + return this.$store.dispatch('addUserGroup', {userid, gid}) + .then(() => this.loading.groups = false); + }, + + /** + * Remove user from group + * + * @param {object} group Group object + * @returns {Promise} + */ + removeUserGroup(group) { + if (group.canRemove === false) { + return false; + } + this.loading.groups = true; + let userid = this.user.id; + let gid = group.id; + return this.$store.dispatch('removeUserGroup', {userid, gid}) + .then(() => { + this.loading.groups = false + // remove user from current list if current list is the removed group + if (this.$route.params.selectedGroup === gid) { + this.$store.commit('deleteUser', userid); + } + }) + .catch(() => { + this.loading.groups = false + }); + }, + + /** + * Add user to group + * + * @param {object} group Group object + * @returns {Promise} + */ + addUserSubAdmin(group) { + this.loading.subadmins = true; + let userid = this.user.id; + let gid = group.id; + return this.$store.dispatch('addUserSubAdmin', {userid, gid}) + .then(() => this.loading.subadmins = false); + }, + + /** + * Remove user from group + * + * @param {object} group Group object + * @returns {Promise} + */ + removeUserSubAdmin(group) { + this.loading.subadmins = true; + let userid = this.user.id; + let gid = group.id; + return this.$store.dispatch('removeUserSubAdmin', {userid, gid}) + .then(() => this.loading.subadmins = false); + }, + + /** + * Dispatch quota set request + * + * @param {string|Object} quota Quota in readable format '5 GB' or Object {id: '5 GB', label: '5GB'} + * @returns {string} + */ + setUserQuota(quota = 'none') { + this.loading.quota = true; + // ensure we only send the preset id + quota = quota.id ? quota.id : quota; + this.$store.dispatch('setUserData', { + userid: this.user.id, + key: 'quota', + value: quota + }).then(() => this.loading.quota = false); + return quota; + }, + + /** + * Validate quota string to make sure it's a valid human file size + * + * @param {string} quota Quota in readable format '5 GB' + * @returns {Promise|boolean} + */ + validateQuota(quota) { + // only used for new presets sent through @Tag + let validQuota = OC.Util.computerFileSize(quota); + if (validQuota !== null && validQuota >= 0) { + // unify format output + return this.setUserQuota(OC.Util.humanFileSize(OC.Util.computerFileSize(quota))); + } + // if no valid do not change + return false; + }, + + /** + * Dispatch language set request + * + * @param {Object} lang language object {code:'en', name:'English'} + * @returns {Object} + */ + setUserLanguage(lang) { + this.loading.languages = true; + // ensure we only send the preset id + this.$store.dispatch('setUserData', { + userid: this.user.id, + key: 'language', + value: lang.code + }).then(() => this.loading.languages = false); + return lang; + }, + + /** + * Dispatch new welcome mail request + */ + sendWelcomeMail() { + this.loading.all = true; + this.$store.dispatch('sendWelcomeMail', this.user.id) + .then(success => { + if (success) { + // Show feedback to indicate the success + this.feedbackMessage = t('setting', 'Welcome mail sent!'); + setTimeout(() => { + this.feedbackMessage = ''; + }, 2000); + } + this.loading.all = false; + }); + } + + } +} +</script> diff --git a/apps/settings/src/main-admin-security.js b/apps/settings/src/main-admin-security.js new file mode 100644 index 00000000000..a728c085b43 --- /dev/null +++ b/apps/settings/src/main-admin-security.js @@ -0,0 +1,21 @@ +import Vue from 'vue' + +import AdminTwoFactor from './components/AdminTwoFactor.vue' +import store from './store/admin-security' + +__webpack_nonce__ = btoa(OC.requestToken) + +Vue.prototype.t = t; + +// Not used here but required for legacy templates +window.OC = window.OC || {}; +window.OC.Settings = window.OC.Settings || {}; + +store.replaceState( + OCP.InitialState.loadState('settings', 'mandatory2FAState') +) + +const View = Vue.extend(AdminTwoFactor) +new View({ + store +}).$mount('#two-factor-auth-settings') diff --git a/apps/settings/src/main-apps-users-management.js b/apps/settings/src/main-apps-users-management.js new file mode 100644 index 00000000000..a8627c2277d --- /dev/null +++ b/apps/settings/src/main-apps-users-management.js @@ -0,0 +1,57 @@ +/** + * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +import Vue from 'vue'; +import VTooltip from 'v-tooltip'; +import { sync } from 'vuex-router-sync'; + +import App from './App.vue'; +import router from './router'; +import store from './store'; + +Vue.use(VTooltip, { defaultHtml: false }); + +sync(store, router); + +// CSP config for webpack dynamic chunk loading +// eslint-disable-next-line +__webpack_nonce__ = btoa(OC.requestToken) + +// Correct the root of the app for chunk loading +// OC.linkTo matches the apps folders +// OC.generateUrl ensure the index.php (or not) +// eslint-disable-next-line +__webpack_public_path__ = OC.linkTo('settings', 'js/') + +// bind to window +Vue.prototype.t = t; +Vue.prototype.OC = OC; +Vue.prototype.OCA = OCA; +Vue.prototype.oc_userconfig = oc_userconfig; + +const app = new Vue({ + router, + store, + render: h => h(App) +}).$mount('#content'); + +export { app, router, store }; diff --git a/apps/settings/src/main-personal-security.js b/apps/settings/src/main-personal-security.js new file mode 100644 index 00000000000..9f020efd5f4 --- /dev/null +++ b/apps/settings/src/main-personal-security.js @@ -0,0 +1,40 @@ +/* + * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +import Vue from 'vue'; +import VueClipboard from 'vue-clipboard2'; +import VTooltip from 'v-tooltip'; + +import AuthTokenSection from './components/AuthTokenSection'; + +__webpack_nonce__ = btoa(OC.requestToken); + +Vue.use(VueClipboard); +Vue.use(VTooltip, { defaultHtml: false }); +Vue.prototype.t = t; + +const View = Vue.extend(AuthTokenSection); +new View({ + propsData: { + tokens: OCP.InitialState.loadState('settings', 'app_tokens'), + canCreateToken: OCP.InitialState.loadState('settings', 'can_create_app_token'), + } +}).$mount('#security-authtokens'); diff --git a/apps/settings/src/router.js b/apps/settings/src/router.js new file mode 100644 index 00000000000..512ab813840 --- /dev/null +++ b/apps/settings/src/router.js @@ -0,0 +1,83 @@ +/* + * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * @author Julius Härtl <jus@bitgrid.net> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +import Vue from 'vue'; +import Router from 'vue-router'; + +// Dynamic loading +const Users = () => import('./views/Users'); +const Apps = () => import('./views/Apps'); + +Vue.use(Router); + +/* + * This is the list of routes where the vuejs app will + * take over php to provide data + * You need to forward the php routing (routes.php) to + * the settings-vue template, where the vue-router will + * ensure the proper route. + * ⚠️ Routes needs to match the php routes. + */ + +export default new Router({ + mode: 'history', + // if index.php is in the url AND we got this far, then it's working: + // let's keep using index.php in the url + base: OC.generateUrl(''), + linkActiveClass: 'active', + routes: [ + { + path: '/:index(index.php/)?settings/users', + component: Users, + props: true, + name: 'users', + children: [ + { + path: ':selectedGroup(.*)', + name: 'group', + component: Users + } + ] + }, + { + path: '/:index(index.php/)?settings/apps', + component: Apps, + props: true, + name: 'apps', + children: [ + { + path: ':category', + name: 'apps-category', + component: Apps, + children: [ + { + path: ':id', + name: 'apps-details', + component: Apps + } + ] + } + ] + } + ] +}); diff --git a/apps/settings/src/store/admin-security.js b/apps/settings/src/store/admin-security.js new file mode 100644 index 00000000000..997aab2af58 --- /dev/null +++ b/apps/settings/src/store/admin-security.js @@ -0,0 +1,63 @@ +/* + * @copyright 2019 Roeland Jago Douma <roeland@famdouma.nl> + * + * @author 2019 Roeland Jago Douma <roeland@famdouma.nl> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +import Vue from 'vue' +import Vuex from 'vuex' + +Vue.use(Vuex) + +export const mutations = { + setEnforced(state, enabled) { + Vue.set(state, 'enforced', enabled) + }, + setEnforcedGroups(state, total) { + Vue.set(state, 'enforcedGroups', total) + }, + setExcludedGroups(state, used) { + Vue.set(state, 'excludedGroups', used) + } +} + +export const actions = { + save ({commit}, ) { + commit('setEnabled', false); + + return generateCodes() + .then(({codes, state}) => { + commit('setEnabled', state.enabled); + commit('setTotal', state.total); + commit('setUsed', state.used); + commit('setCodes', codes); + return true; + }); + } +} + +export default new Vuex.Store({ + strict: process.env.NODE_ENV !== 'production', + state: { + enforced: false, + enforcedGroups: [], + excludedGroups: [], + }, + mutations, + actions +}) diff --git a/apps/settings/src/store/api.js b/apps/settings/src/store/api.js new file mode 100644 index 00000000000..185e80253a3 --- /dev/null +++ b/apps/settings/src/store/api.js @@ -0,0 +1,81 @@ +/** + * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +import axios from 'nextcloud-axios' +import confirmPassword from 'nextcloud-password-confirmation' + +const sanitize = function(url) { + return url.replace(/\/$/, ''); // Remove last url slash +}; + +export default { + + /** + * This Promise is used to chain a request that require an admin password confirmation + * Since chaining Promise have a very precise behavior concerning catch and then, + * you'll need to be careful when using it. + * e.g + * // store + * action(context) { + * return api.requireAdmin().then((response) => { + * return api.get('url') + * .then((response) => {API success}) + * .catch((error) => {API failure}); + * }).catch((error) => {requireAdmin failure}); + * } + * // vue + * this.$store.dispatch('action').then(() => {always executed}) + * + * Since Promise.then().catch().then() will always execute the last then + * this.$store.dispatch('action').then will always be executed + * + * If you want requireAdmin failure to also catch the API request failure + * you will need to throw a new error in the api.get.catch() + * + * e.g + * api.requireAdmin().then((response) => { + * api.get('url') + * .then((response) => {API success}) + * .catch((error) => {throw error;}); + * }).catch((error) => {requireAdmin OR API failure}); + * + * @returns {Promise} + */ + requireAdmin() { + return confirmPassword(); + }, + get(url) { + return axios.get(sanitize(url)); + }, + post(url, data) { + return axios.post(sanitize(url), data); + }, + patch(url, data) { + return axios.patch(sanitize(url), data); + }, + put(url, data) { + return axios.put(sanitize(url), data); + }, + delete(url, data) { + return axios.delete(sanitize(url), { data: data }); + } +}; \ No newline at end of file diff --git a/apps/settings/src/store/apps.js b/apps/settings/src/store/apps.js new file mode 100644 index 00000000000..8074eac2e00 --- /dev/null +++ b/apps/settings/src/store/apps.js @@ -0,0 +1,327 @@ +/* + * @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net> + * + * @author Julius Härtl <jus@bitgrid.net> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +import api from './api'; +import Vue from 'vue'; + +const state = { + apps: [], + categories: [], + updateCount: 0, + loading: {}, + loadingList: false, +}; + +const mutations = { + + APPS_API_FAILURE(state, error) { + OC.Notification.showHtml(t('settings','An error occured during the request. Unable to proceed.')+'<br>'+error.error.response.data.data.message, {timeout: 7}); + console.log(state, error); + }, + + initCategories(state, {categories, updateCount}) { + state.categories = categories; + state.updateCount = updateCount; + }, + + setUpdateCount(state, updateCount) { + state.updateCount = updateCount; + }, + + addCategory(state, category) { + state.categories.push(category); + }, + + appendCategories(state, categoriesArray) { + // convert obj to array + state.categories = categoriesArray; + }, + + setAllApps(state, apps) { + state.apps = apps; + }, + + setError(state, {appId, error}) { + if (!Array.isArray(appId)) { + appId = [appId]; + } + appId.forEach((_id) => { + let app = state.apps.find(app => app.id === _id); + app.error = error; + }); + }, + + clearError(state, {appId, error}) { + let app = state.apps.find(app => app.id === appId); + app.error = null; + }, + + enableApp(state, {appId, groups}) { + let app = state.apps.find(app => app.id === appId); + app.active = true; + app.groups = groups; + }, + + disableApp(state, appId) { + let app = state.apps.find(app => app.id === appId); + app.active = false; + app.groups = []; + if (app.removable) { + app.canUnInstall = true; + } + }, + + uninstallApp(state, appId) { + state.apps.find(app => app.id === appId).active = false; + state.apps.find(app => app.id === appId).groups = []; + state.apps.find(app => app.id === appId).needsDownload = true; + state.apps.find(app => app.id === appId).installed = false; + state.apps.find(app => app.id === appId).canUnInstall = false; + state.apps.find(app => app.id === appId).canInstall = true; + }, + + updateApp(state, appId) { + let app = state.apps.find(app => app.id === appId); + let version = app.update; + app.update = null; + app.version = version; + state.updateCount--; + + }, + + resetApps(state) { + state.apps = []; + }, + reset(state) { + state.apps = []; + state.categories = []; + state.updateCount = 0; + }, + startLoading(state, id) { + if (Array.isArray(id)) { + id.forEach((_id) => { + Vue.set(state.loading, _id, true); + }) + } else { + Vue.set(state.loading, id, true); + } + }, + stopLoading(state, id) { + if (Array.isArray(id)) { + id.forEach((_id) => { + Vue.set(state.loading, _id, false); + }) + } else { + Vue.set(state.loading, id, false); + } + }, +}; + +const getters = { + loading(state) { + return function(id) { + return state.loading[id]; + } + }, + getCategories(state) { + return state.categories; + }, + getAllApps(state) { + return state.apps; + }, + getUpdateCount(state) { + return state.updateCount; + } +}; + +const actions = { + + enableApp(context, { appId, groups }) { + let apps; + if (Array.isArray(appId)) { + apps = appId; + } else { + apps = [appId]; + } + return api.requireAdmin().then((response) => { + context.commit('startLoading', apps); + context.commit('startLoading', 'install'); + return api.post(OC.generateUrl(`settings/apps/enable`), {appIds: apps, groups: groups}) + .then((response) => { + context.commit('stopLoading', apps); + context.commit('stopLoading', 'install'); + apps.forEach(_appId => { + context.commit('enableApp', {appId: _appId, groups: groups}); + }); + + // check for server health + return api.get(OC.generateUrl('apps/files')) + .then(() => { + if (response.data.update_required) { + OC.dialogs.info( + t( + 'settings', + 'The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds.' + ), + t('settings','App update'), + function () { + window.location.reload(); + }, + true + ); + setTimeout(function() { + location.reload(); + }, 5000); + } + }) + .catch((error) => { + if (!Array.isArray(appId)) { + context.commit('setError', { + appId: apps, + error: t('settings', 'Error: This app can not be enabled because it makes the server unstable') + }); + } + }); + }) + .catch((error) => { + context.commit('stopLoading', apps); + context.commit('stopLoading', 'install'); + context.commit('setError', { + appId: apps, + error: error.response.data.data.message + }); + context.commit('APPS_API_FAILURE', { appId, error}); + }) + }).catch((error) => context.commit('API_FAILURE', { appId, error })); + }, + forceEnableApp(context, { appId, groups }) { + let apps; + if (Array.isArray(appId)) { + apps = appId; + } else { + apps = [appId]; + } + return api.requireAdmin().then(() => { + context.commit('startLoading', apps); + context.commit('startLoading', 'install'); + return api.post(OC.generateUrl(`settings/apps/force`), {appId}) + .then((response) => { + // TODO: find a cleaner solution + location.reload(); + }) + .catch((error) => { + context.commit('stopLoading', apps); + context.commit('stopLoading', 'install'); + context.commit('setError', { + appId: apps, + error: error.response.data.data.message + }); + context.commit('APPS_API_FAILURE', { appId, error}); + }) + }).catch((error) => context.commit('API_FAILURE', { appId, error })); + }, + disableApp(context, { appId }) { + let apps; + if (Array.isArray(appId)) { + apps = appId; + } else { + apps = [appId]; + } + return api.requireAdmin().then((response) => { + context.commit('startLoading', apps); + return api.post(OC.generateUrl(`settings/apps/disable`), {appIds: apps}) + .then((response) => { + context.commit('stopLoading', apps); + apps.forEach(_appId => { + context.commit('disableApp', _appId); + }); + return true; + }) + .catch((error) => { + context.commit('stopLoading', apps); + context.commit('APPS_API_FAILURE', { appId, error }) + }) + }).catch((error) => context.commit('API_FAILURE', { appId, error })); + }, + uninstallApp(context, { appId }) { + return api.requireAdmin().then((response) => { + context.commit('startLoading', appId); + return api.get(OC.generateUrl(`settings/apps/uninstall/${appId}`)) + .then((response) => { + context.commit('stopLoading', appId); + context.commit('uninstallApp', appId); + return true; + }) + .catch((error) => { + context.commit('stopLoading', appId); + context.commit('APPS_API_FAILURE', { appId, error }) + }) + }).catch((error) => context.commit('API_FAILURE', { appId, error })); + }, + + updateApp(context, { appId }) { + return api.requireAdmin().then((response) => { + context.commit('startLoading', appId); + context.commit('startLoading', 'install'); + return api.get(OC.generateUrl(`settings/apps/update/${appId}`)) + .then((response) => { + context.commit('stopLoading', 'install'); + context.commit('stopLoading', appId); + context.commit('updateApp', appId); + return true; + }) + .catch((error) => { + context.commit('stopLoading', appId); + context.commit('stopLoading', 'install'); + context.commit('APPS_API_FAILURE', { appId, error }) + }) + }).catch((error) => context.commit('API_FAILURE', { appId, error })); + }, + + getAllApps(context) { + context.commit('startLoading', 'list'); + return api.get(OC.generateUrl(`settings/apps/list`)) + .then((response) => { + context.commit('setAllApps', response.data.apps); + context.commit('stopLoading', 'list'); + return true; + }) + .catch((error) => context.commit('API_FAILURE', error)) + }, + + getCategories(context) { + context.commit('startLoading', 'categories'); + return api.get(OC.generateUrl('settings/apps/categories')) + .then((response) => { + if (response.data.length > 0) { + context.commit('appendCategories', response.data); + context.commit('stopLoading', 'categories'); + return true; + } + return false; + }) + .catch((error) => context.commit('API_FAILURE', error)); + }, + +}; + +export default { state, mutations, getters, actions }; \ No newline at end of file diff --git a/apps/settings/src/store/index.js b/apps/settings/src/store/index.js new file mode 100644 index 00000000000..00bcd67db39 --- /dev/null +++ b/apps/settings/src/store/index.js @@ -0,0 +1,57 @@ +/* + * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * @author Julius Härtl <jus@bitgrid.net> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +import Vue from 'vue'; +import Vuex from 'vuex'; +import users from './users'; +import apps from './apps'; +import settings from './settings'; +import oc from './oc'; + +Vue.use(Vuex) + +const debug = process.env.NODE_ENV !== 'production'; + +const mutations = { + API_FAILURE(state, error) { + try { + let message = error.error.response.data.ocs.meta.message; + OC.Notification.showHtml(t('settings','An error occured during the request. Unable to proceed.')+'<br>'+message, {timeout: 7}); + } catch(e) { + OC.Notification.showTemporary(t('settings','An error occured during the request. Unable to proceed.')); + } + console.log(state, error); + } +}; + +export default new Vuex.Store({ + modules: { + users, + apps, + settings, + oc + }, + strict: debug, + + mutations +}); diff --git a/apps/settings/src/store/oc.js b/apps/settings/src/store/oc.js new file mode 100644 index 00000000000..afa13fe6b18 --- /dev/null +++ b/apps/settings/src/store/oc.js @@ -0,0 +1,47 @@ +/* + * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +import api from './api'; + +const state = {}; +const mutations = {}; +const getters = {}; +const actions = { + /** + * Set application config in database + * + * @param {Object} context + * @param {Object} options + * @param {string} options.app Application name + * @param {boolean} options.key Config key + * @param {boolean} options.value Value to set + * @returns{Promise} + */ + setAppConfig(context, {app, key, value}) { + return api.requireAdmin().then((response) => { + return api.post(OC.linkToOCS(`apps/provisioning_api/api/v1/config/apps/${app}/${key}`, 2), {value: value}) + .catch((error) => {throw error;}); + }).catch((error) => context.commit('API_FAILURE', { app, key, value, error }));; + } +}; + +export default {state, mutations, getters, actions}; diff --git a/apps/settings/src/store/settings.js b/apps/settings/src/store/settings.js new file mode 100644 index 00000000000..5f0bcfa60aa --- /dev/null +++ b/apps/settings/src/store/settings.js @@ -0,0 +1,40 @@ +/* + * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +import api from './api'; + +const state = { + serverData: {} +}; +const mutations = { + setServerData(state, data) { + state.serverData = data; + } +}; +const getters = { + getServerData(state) { + return state.serverData; + } +}; +const actions = {}; + +export default {state, mutations, getters, actions}; diff --git a/apps/settings/src/store/users.js b/apps/settings/src/store/users.js new file mode 100644 index 00000000000..1b174b21bf4 --- /dev/null +++ b/apps/settings/src/store/users.js @@ -0,0 +1,532 @@ +/* + * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +import api from './api'; + +const orderGroups = function(groups, orderBy) { + /* const SORT_USERCOUNT = 1; + * const SORT_GROUPNAME = 2; + * https://github.com/nextcloud/server/blob/208e38e84e1a07a49699aa90dc5b7272d24489f0/lib/private/Group/MetaData.php#L34 + */ + if (orderBy === 1) { + return groups.sort((a, b) => a.usercount-a.disabled < b.usercount - b.disabled); + } else { + return groups.sort((a, b) => a.name.localeCompare(b.name)); + } +}; + +const defaults = { + group: { + id: '', + name: '', + usercount: 0, + disabled: 0, + canAdd: true, + canRemove: true + } +}; + +const state = { + users: [], + groups: [], + orderBy: 1, + minPasswordLength: 0, + usersOffset: 0, + usersLimit: 25, + userCount: 0 +}; + +const mutations = { + appendUsers(state, usersObj) { + // convert obj to array + let users = state.users.concat(Object.keys(usersObj).map(userid => usersObj[userid])); + state.usersOffset += state.usersLimit; + state.users = users; + }, + setPasswordPolicyMinLength(state, length) { + state.minPasswordLength = length!=='' ? length : 0; + }, + initGroups(state, {groups, orderBy, userCount}) { + state.groups = groups.map(group => Object.assign({}, defaults.group, group)); + state.orderBy = orderBy; + state.userCount = userCount; + state.groups = orderGroups(state.groups, state.orderBy); + + }, + addGroup(state, {gid, displayName}) { + try { + if (typeof state.groups.find((group) => group.id === gid) !== 'undefined') { + return; + } + // extend group to default values + let group = Object.assign({}, defaults.group, { + id: gid, + name: displayName, + }); + state.groups.push(group); + state.groups = orderGroups(state.groups, state.orderBy); + } catch (e) { + console.log('Can\'t create group', e); + } + }, + removeGroup(state, gid) { + let groupIndex = state.groups.findIndex(groupSearch => groupSearch.id == gid); + if (groupIndex >= 0) { + state.groups.splice(groupIndex, 1); + } + }, + addUserGroup(state, { userid, gid }) { + let group = state.groups.find(groupSearch => groupSearch.id == gid); + let user = state.users.find(user => user.id == userid); + // increase count if user is enabled + if (group && user.enabled) { + group.usercount++; + } + let groups = user.groups; + groups.push(gid); + state.groups = orderGroups(state.groups, state.orderBy); + }, + removeUserGroup(state, { userid, gid }) { + let group = state.groups.find(groupSearch => groupSearch.id == gid); + let user = state.users.find(user => user.id == userid); + // lower count if user is enabled + if (group && user.enabled) { + group.usercount--; + } + let groups = user.groups; + groups.splice(groups.indexOf(gid),1); + state.groups = orderGroups(state.groups, state.orderBy); + }, + addUserSubAdmin(state, { userid, gid }) { + let groups = state.users.find(user => user.id == userid).subadmin; + groups.push(gid); + }, + removeUserSubAdmin(state, { userid, gid }) { + let groups = state.users.find(user => user.id == userid).subadmin; + groups.splice(groups.indexOf(gid),1); + }, + deleteUser(state, userid) { + let userIndex = state.users.findIndex(user => user.id == userid); + state.users.splice(userIndex, 1); + }, + addUserData(state, response) { + state.users.push(response.data.ocs.data); + }, + enableDisableUser(state, { userid, enabled }) { + let user = state.users.find(user => user.id == userid); + user.enabled = enabled; + // increment or not + state.groups.find(group => group.id == 'disabled').usercount += enabled ? -1 : 1; + state.userCount += enabled ? 1 : -1; + user.groups.forEach(group => { + // Increment disabled count + state.groups.find(groupSearch => groupSearch.id == group).disabled += enabled ? -1 : 1; + }); + }, + setUserData(state, { userid, key, value }) { + if (key === 'quota') { + let humanValue = OC.Util.computerFileSize(value); + state.users.find(user => user.id == userid)[key][key] = humanValue!==null ? humanValue : value; + } else { + state.users.find(user => user.id == userid)[key] = value; + } + }, + + /** + * Reset users list + */ + resetUsers(state) { + state.users = []; + state.usersOffset = 0; + } +}; + +const getters = { + getUsers(state) { + return state.users; + }, + getGroups(state) { + return state.groups; + }, + getSubadminGroups(state) { + // Can't be subadmin of admin or disabled + return state.groups.filter(group => group.id !== 'admin' && group.id !== 'disabled'); + }, + getPasswordPolicyMinLength(state) { + return state.minPasswordLength; + }, + getUsersOffset(state) { + return state.usersOffset; + }, + getUsersLimit(state) { + return state.usersLimit; + }, + getUserCount(state) { + return state.userCount; + } +}; + +const actions = { + + /** + * Get all users with full details + * + * @param {Object} context + * @param {Object} options + * @param {int} options.offset List offset to request + * @param {int} options.limit List number to return from offset + * @param {string} options.search Search amongst users + * @param {string} options.group Get users from group + * @returns {Promise} + */ + getUsers(context, { offset, limit, search, group }) { + search = typeof search === 'string' ? search : ''; + group = typeof group === 'string' ? group : ''; + if (group !== '') { + return api.get(OC.linkToOCS(`cloud/groups/${group}/users/details?offset=${offset}&limit=${limit}&search=${search}`, 2)) + .then((response) => { + if (Object.keys(response.data.ocs.data.users).length > 0) { + context.commit('appendUsers', response.data.ocs.data.users); + return true; + } + return false; + }) + .catch((error) => context.commit('API_FAILURE', error)); + } + + return api.get(OC.linkToOCS(`cloud/users/details?offset=${offset}&limit=${limit}&search=${search}`, 2)) + .then((response) => { + if (Object.keys(response.data.ocs.data.users).length > 0) { + context.commit('appendUsers', response.data.ocs.data.users); + return true; + } + return false; + }) + .catch((error) => context.commit('API_FAILURE', error)); + }, + + getGroups(context, { offset, limit, search }) { + search = typeof search === 'string' ? search : ''; + let limitParam = limit === -1 ? '' : `&limit=${limit}`; + return api.get(OC.linkToOCS(`cloud/groups?offset=${offset}&search=${search}${limitParam}`, 2)) + .then((response) => { + if (Object.keys(response.data.ocs.data.groups).length > 0) { + response.data.ocs.data.groups.forEach(function(group) { + context.commit('addGroup', {gid: group, displayName: group}); + }); + return true; + } + return false; + }) + .catch((error) => context.commit('API_FAILURE', error)); + }, + + /** + * Get all users with full details + * + * @param {Object} context + * @param {Object} options + * @param {int} options.offset List offset to request + * @param {int} options.limit List number to return from offset + * @returns {Promise} + */ + getUsersFromList(context, { offset, limit, search }) { + search = typeof search === 'string' ? search : ''; + return api.get(OC.linkToOCS(`cloud/users/details?offset=${offset}&limit=${limit}&search=${search}`, 2)) + .then((response) => { + if (Object.keys(response.data.ocs.data.users).length > 0) { + context.commit('appendUsers', response.data.ocs.data.users); + return true; + } + return false; + }) + .catch((error) => context.commit('API_FAILURE', error)); + }, + + /** + * Get all users with full details from a groupid + * + * @param {Object} context + * @param {Object} options + * @param {int} options.offset List offset to request + * @param {int} options.limit List number to return from offset + * @returns {Promise} + */ + getUsersFromGroup(context, { groupid, offset, limit }) { + return api.get(OC.linkToOCS(`cloud/users/${groupid}/details?offset=${offset}&limit=${limit}`, 2)) + .then((response) => context.commit('getUsersFromList', response.data.ocs.data.users)) + .catch((error) => context.commit('API_FAILURE', error)); + }, + + + getPasswordPolicyMinLength(context) { + if(OC.getCapabilities().password_policy && OC.getCapabilities().password_policy.minLength) { + context.commit('setPasswordPolicyMinLength', OC.getCapabilities().password_policy.minLength); + return OC.getCapabilities().password_policy.minLength; + } + return false; + }, + + /** + * Add group + * + * @param {Object} context + * @param {string} gid Group id + * @returns {Promise} + */ + addGroup(context, gid) { + return api.requireAdmin().then((response) => { + return api.post(OC.linkToOCS(`cloud/groups`, 2), {groupid: gid}) + .then((response) => { + context.commit('addGroup', {gid: gid, displayName: gid}) + return {gid: gid, displayName: gid} + }) + .catch((error) => {throw error;}); + }).catch((error) => { + context.commit('API_FAILURE', { gid, error }); + // let's throw one more time to prevent the view + // from adding the user to a group that doesn't exists + throw error; + }); + }, + + /** + * Remove group + * + * @param {Object} context + * @param {string} gid Group id + * @returns {Promise} + */ + removeGroup(context, gid) { + return api.requireAdmin().then((response) => { + return api.delete(OC.linkToOCS(`cloud/groups/${gid}`, 2)) + .then((response) => context.commit('removeGroup', gid)) + .catch((error) => {throw error;}); + }).catch((error) => context.commit('API_FAILURE', { gid, error })); + }, + + /** + * Add user to group + * + * @param {Object} context + * @param {Object} options + * @param {string} options.userid User id + * @param {string} options.gid Group id + * @returns {Promise} + */ + addUserGroup(context, { userid, gid }) { + return api.requireAdmin().then((response) => { + return api.post(OC.linkToOCS(`cloud/users/${userid}/groups`, 2), { groupid: gid }) + .then((response) => context.commit('addUserGroup', { userid, gid })) + .catch((error) => {throw error;}); + }).catch((error) => context.commit('API_FAILURE', { userid, error })); + }, + + /** + * Remove user from group + * + * @param {Object} context + * @param {Object} options + * @param {string} options.userid User id + * @param {string} options.gid Group id + * @returns {Promise} + */ + removeUserGroup(context, { userid, gid }) { + return api.requireAdmin().then((response) => { + return api.delete(OC.linkToOCS(`cloud/users/${userid}/groups`, 2), { groupid: gid }) + .then((response) => context.commit('removeUserGroup', { userid, gid })) + .catch((error) => {throw error;}); + }).catch((error) => { + context.commit('API_FAILURE', { userid, error }); + // let's throw one more time to prevent + // the view from removing the user row on failure + throw error; + }); + }, + + /** + * Add user to group admin + * + * @param {Object} context + * @param {Object} options + * @param {string} options.userid User id + * @param {string} options.gid Group id + * @returns {Promise} + */ + addUserSubAdmin(context, { userid, gid }) { + return api.requireAdmin().then((response) => { + return api.post(OC.linkToOCS(`cloud/users/${userid}/subadmins`, 2), { groupid: gid }) + .then((response) => context.commit('addUserSubAdmin', { userid, gid })) + .catch((error) => {throw error;}); + }).catch((error) => context.commit('API_FAILURE', { userid, error })); + }, + + /** + * Remove user from group admin + * + * @param {Object} context + * @param {Object} options + * @param {string} options.userid User id + * @param {string} options.gid Group id + * @returns {Promise} + */ + removeUserSubAdmin(context, { userid, gid }) { + return api.requireAdmin().then((response) => { + return api.delete(OC.linkToOCS(`cloud/users/${userid}/subadmins`, 2), { groupid: gid }) + .then((response) => context.commit('removeUserSubAdmin', { userid, gid })) + .catch((error) => {throw error;}); + }).catch((error) => context.commit('API_FAILURE', { userid, error })); + }, + + /** + * Mark all user devices for remote wipe + * + * @param {Object} context + * @param {string} userid User id + * @returns {Promise} + */ + wipeUserDevices(context, userid) { + return api.requireAdmin().then((response) => { + return api.post(OC.linkToOCS(`cloud/users/${userid}/wipe`, 2)) + .catch((error) => {throw error;}); + }).catch((error) => context.commit('API_FAILURE', { userid, error })); + }, + + /** + * Delete a user + * + * @param {Object} context + * @param {string} userid User id + * @returns {Promise} + */ + deleteUser(context, userid) { + return api.requireAdmin().then((response) => { + return api.delete(OC.linkToOCS(`cloud/users/${userid}`, 2)) + .then((response) => context.commit('deleteUser', userid)) + .catch((error) => {throw error;}); + }).catch((error) => context.commit('API_FAILURE', { userid, error })); + }, + + /** + * Add a user + * + * @param {Object} context + * @param {Object} options + * @param {string} options.userid User id + * @param {string} options.password User password + * @param {string} options.displayName User display name + * @param {string} options.email User email + * @param {string} options.groups User groups + * @param {string} options.subadmin User subadmin groups + * @param {string} options.quota User email + * @returns {Promise} + */ + addUser({commit, dispatch}, { userid, password, displayName, email, groups, subadmin, quota, language }) { + return api.requireAdmin().then((response) => { + return api.post(OC.linkToOCS(`cloud/users`, 2), { userid, password, displayName, email, groups, subadmin, quota, language }) + .then((response) => dispatch('addUserData', userid || response.data.ocs.data.id)) + .catch((error) => {throw error;}); + }).catch((error) => { + commit('API_FAILURE', { userid, error }); + throw error; + }); + }, + + /** + * Get user data and commit addition + * + * @param {Object} context + * @param {string} userid User id + * @returns {Promise} + */ + addUserData(context, userid) { + return api.requireAdmin().then((response) => { + return api.get(OC.linkToOCS(`cloud/users/${userid}`, 2)) + .then((response) => context.commit('addUserData', response)) + .catch((error) => {throw error;}); + }).catch((error) => context.commit('API_FAILURE', { userid, error })); + }, + + /** Enable or disable user + * + * @param {Object} context + * @param {Object} options + * @param {string} options.userid User id + * @param {boolean} options.enabled User enablement status + * @returns {Promise} + */ + enableDisableUser(context, { userid, enabled = true }) { + let userStatus = enabled ? 'enable' : 'disable'; + return api.requireAdmin().then((response) => { + return api.put(OC.linkToOCS(`cloud/users/${userid}/${userStatus}`, 2)) + .then((response) => context.commit('enableDisableUser', { userid, enabled })) + .catch((error) => {throw error;}); + }).catch((error) => context.commit('API_FAILURE', { userid, error })); + }, + + /** + * Edit user data + * + * @param {Object} context + * @param {Object} options + * @param {string} options.userid User id + * @param {string} options.key User field to edit + * @param {string} options.value Value of the change + * @returns {Promise} + */ + setUserData(context, { userid, key, value }) { + let allowedEmpty = ['email', 'displayname']; + if (['email', 'language', 'quota', 'displayname', 'password'].indexOf(key) !== -1) { + // We allow empty email or displayname + if (typeof value === 'string' && + ( + (allowedEmpty.indexOf(key) === -1 && value.length > 0) || + allowedEmpty.indexOf(key) !== -1 + ) + ) { + return api.requireAdmin().then((response) => { + return api.put(OC.linkToOCS(`cloud/users/${userid}`, 2), { key: key, value: value }) + .then((response) => context.commit('setUserData', { userid, key, value })) + .catch((error) => {throw error;}); + }).catch((error) => context.commit('API_FAILURE', { userid, error })); + } + } + return Promise.reject(new Error('Invalid request data')); + }, + + /** + * Send welcome mail + * + * @param {Object} context + * @param {string} userid User id + * @returns {Promise} + */ + sendWelcomeMail(context, userid) { + return api.requireAdmin().then((response) => { + return api.post(OC.linkToOCS(`cloud/users/${userid}/welcome`, 2)) + .then(response => true) + .catch((error) => {throw error;}); + }).catch((error) => context.commit('API_FAILURE', { userid, error })); + } +}; + +export default { state, mutations, getters, actions }; diff --git a/apps/settings/src/views/Apps.vue b/apps/settings/src/views/Apps.vue new file mode 100644 index 00000000000..35caf7cea59 --- /dev/null +++ b/apps/settings/src/views/Apps.vue @@ -0,0 +1,226 @@ +<!-- + - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net> + - + - @author Julius Härtl <jus@bitgrid.net> + - + - @license GNU AGPL version 3 or any later version + - + - This program is free software: you can redistribute it and/or modify + - it under the terms of the GNU Affero General Public License as + - published by the Free Software Foundation, either version 3 of the + - License, or (at your option) any later version. + - + - This program is distributed in the hope that it will be useful, + - but WITHOUT ANY WARRANTY; without even the implied warranty of + - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + - GNU Affero General Public License for more details. + - + - You should have received a copy of the GNU Affero General Public License + - along with this program. If not, see <http://www.gnu.org/licenses/>. + - + --> + +<template> + <Content app-name="settings" :class="{ 'with-app-sidebar': currentApp}" + :content-class="{ 'icon-loading': loadingList }" :navigation-class="{ 'icon-loading': loading }"> + <AppNavigation> + <ul id="appscategories"> + <AppNavigationItem v-for="item in menu" :key="item.key" :item="item" /> + </ul> + </AppNavigation> + <AppContent class="app-settings-content" :class="{ 'icon-loading': loadingList }"> + <AppList :category="category" :app="currentApp" :search="searchQuery" /> + </AppContent> + <AppSidebar v-if="id && currentApp" @close="hideAppDetails"> + <AppDetails :category="category" :app="currentApp" /> + </AppSidebar> + </Content> +</template> + +<script> +import { + AppContent, + AppNavigation, + AppNavigationItem, + AppSidebar, + Content +} from 'nextcloud-vue'; +import AppList from '../components/appList'; +import Vue from 'vue'; +import VueLocalStorage from 'vue-localstorage' +import AppDetails from '../components/appDetails'; + +Vue.use(VueLocalStorage) + +export default { + name: 'Apps', + props: { + category: { + type: String, + default: 'installed', + }, + id: { + type: String, + default: '', + } + }, + components: { + AppContent, + AppNavigation, + AppNavigationItem, + AppSidebar, + Content, + AppDetails, + AppList + }, + methods: { + setSearch(query) { + this.searchQuery = query; + }, + resetSearch() { + this.setSearch(''); + }, + hideAppDetails() { + this.$router.push({ + name: 'apps-category', + params: {category: this.category} + }) + } + }, + beforeMount() { + this.$store.dispatch('getCategories'); + this.$store.dispatch('getAllApps'); + this.$store.dispatch('getGroups', {offset: 0, limit: 5}); + this.$store.commit('setUpdateCount', this.$store.getters.getServerData.updateCount) + }, + mounted() { + /** + * Register search + */ + this.appSearch = new OCA.Search(this.setSearch, this.resetSearch); + }, + data() { + return { + searchQuery: '' + } + }, + watch: { + category: function (val, old) { + this.setSearch(''); + } + }, + computed: { + loading() { + return this.$store.getters.loading('categories'); + }, + loadingList() { + return this.$store.getters.loading('list'); + }, + currentApp() { + return this.apps.find(app => app.id === this.id ); + }, + categories() { + return this.$store.getters.getCategories; + }, + apps() { + return this.$store.getters.getAllApps; + }, + updateCount() { + return this.$store.getters.getUpdateCount; + }, + settings() { + return this.$store.getters.getServerData; + }, + + // BUILD APP NAVIGATION MENU OBJECT + menu() { + // Data provided php side + let categories = this.$store.getters.getCategories; + categories = Array.isArray(categories) ? categories : []; + + // Map groups + categories = categories.map(category => { + let item = {}; + item.id = 'app-category-' + category.ident; + item.icon = 'icon-category-' + category.ident; + item.classes = []; // empty classes, active will be set later + item.router = { // router link to + name: 'apps-category', + params: {category: category.ident} + }; + item.text = category.displayName; + + return item; + }); + + + // Add everyone group + let defaultCategories = [ + { + id: 'app-category-your-apps', + classes: [], + router: {name: 'apps'}, + icon: 'icon-category-installed', + text: t('settings', 'Your apps'), + }, + { + id: 'app-category-enabled', + classes: [], + icon: 'icon-category-enabled', + router: {name: 'apps-category', params: {category: 'enabled'}}, + text: t('settings', 'Active apps'), + }, { + id: 'app-category-disabled', + classes: [], + icon: 'icon-category-disabled', + router: {name: 'apps-category', params: {category: 'disabled'}}, + text: t('settings', 'Disabled apps'), + } + ]; + + if (!this.settings.appstoreEnabled) { + return defaultCategories + } + + if (this.$store.getters.getUpdateCount > 0) { + defaultCategories.push({ + id: 'app-category-updates', + classes: [], + icon: 'icon-download', + router: {name: 'apps-category', params: {category: 'updates'}}, + text: t('settings', 'Updates'), + utils: {counter: this.$store.getters.getUpdateCount} + }); + } + + defaultCategories.push({ + id: 'app-category-app-bundles', + classes: [], + icon: 'icon-category-app-bundles', + router: {name: 'apps-category', params: {category: 'app-bundles'}}, + text: t('settings', 'App bundles'), + }); + + categories = defaultCategories.concat(categories); + + // Set current group as active + let activeGroup = categories.findIndex(group => group.id === 'app-category-' + this.category); + if (activeGroup >= 0) { + categories[activeGroup].classes.push('active'); + } else { + categories[0].classes.push('active'); + } + + categories.push({ + id: 'app-developer-docs', + classes: [], + href: this.settings.developerDocumentation, + text: t('settings', 'Developer documentation') + ' ↗', + }); + + // Return + return categories + }, + } +} +</script> diff --git a/apps/settings/src/views/Users.vue b/apps/settings/src/views/Users.vue new file mode 100644 index 00000000000..dcbef1cd799 --- /dev/null +++ b/apps/settings/src/views/Users.vue @@ -0,0 +1,446 @@ +<!-- + - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com> + - + - @author John Molakvoæ <skjnldsv@protonmail.com> + - + - @license GNU AGPL version 3 or any later version + - + - This program is free software: you can redistribute it and/or modify + - it under the terms of the GNU Affero General Public License as + - published by the Free Software Foundation, either version 3 of the + - License, or (at your option) any later version. + - + - This program is distributed in the hope that it will be useful, + - but WITHOUT ANY WARRANTY; without even the implied warranty of + - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + - GNU Affero General Public License for more details. + - + - You should have received a copy of the GNU Affero General Public License + - along with this program. If not, see <http://www.gnu.org/licenses/>. + - + --> + +<template> + <Content app-name="settings" :navigation-class="{ 'icon-loading': loadingAddGroup }"> + <AppNavigation> + <AppNavigationNew button-id="new-user-button" :text="t('settings','New user')" button-class="icon-add" @click="toggleNewUserMenu" /> + <ul id="usergrouplist"> + <AppNavigationItem v-for="item in menu" :key="item.key" :item="item" /> + </ul> + <AppNavigationSettings> + <div> + <p>{{t('settings', 'Default quota:')}}</p> + <Multiselect :value="defaultQuota" :options="quotaOptions" + tag-placeholder="create" :placeholder="t('settings', 'Select default quota')" + label="label" track-by="id" + :allowEmpty="false" :taggable="true" + @tag="validateQuota" @input="setDefaultQuota"> + </Multiselect> + + </div> + <div> + <input type="checkbox" id="showLanguages" class="checkbox" v-model="showLanguages"> + <label for="showLanguages">{{t('settings', 'Show Languages')}}</label> + </div> + <div> + <input type="checkbox" id="showLastLogin" class="checkbox" v-model="showLastLogin"> + <label for="showLastLogin">{{t('settings', 'Show last login')}}</label> + </div> + <div> + <input type="checkbox" id="showUserBackend" class="checkbox" v-model="showUserBackend"> + <label for="showUserBackend">{{t('settings', 'Show user backend')}}</label> + </div> + <div> + <input type="checkbox" id="showStoragePath" class="checkbox" v-model="showStoragePath"> + <label for="showStoragePath">{{t('settings', 'Show storage path')}}</label> + </div> + </AppNavigationSettings> + </AppNavigation> + <AppContent> + <UserList #content :users="users" :showConfig="showConfig" :selectedGroup="selectedGroup" :externalActions="externalActions" /> + </AppContent> + </Content> +</template> + +<script> +import Vue from 'vue'; +import VueLocalStorage from 'vue-localstorage' +import { + AppContent, + AppNavigation, + AppNavigationItem, + AppNavigationNew, + AppNavigationSettings, + AppSidebar, + Content, + Multiselect +} from 'nextcloud-vue'; +import UserList from '../components/userList'; +import api from '../store/api'; + +Vue.use(VueLocalStorage) + +export default { + name: 'Users', + props: ['selectedGroup'], + components: { + AppContent, + AppNavigation, + AppNavigationItem, + AppNavigationNew, + AppNavigationSettings, + AppSidebar, + Content, + UserList, + Multiselect, + }, + beforeMount() { + this.$store.commit('initGroups', { + groups: this.$store.getters.getServerData.groups, + orderBy: this.$store.getters.getServerData.sortGroups, + userCount: this.$store.getters.getServerData.userCount + }); + this.$store.dispatch('getPasswordPolicyMinLength'); + }, + created() { + // init the OCA.Settings.UserList object + // and add the registerAction method + Object.assign(OCA, { + Settings: { + UserList: { + registerAction: this.registerAction + } + } + }); + }, + data() { + return { + // default quota is set to unlimited + unlimitedQuota: {id: 'none', label: t('settings', 'Unlimited')}, + // temporary value used for multiselect change + selectedQuota: false, + externalActions: [], + showAddGroupEntry: false, + loadingAddGroup: false, + showConfig: { + showStoragePath: false, + showUserBackend: false, + showLastLogin: false, + showNewUserForm: false, + showLanguages: false + } + } + }, + methods: { + toggleNewUserMenu() { + this.showConfig.showNewUserForm = !this.showConfig.showNewUserForm; + if (this.showConfig.showNewUserForm) { + Vue.nextTick(() => { + window.newusername.focus(); + }); + } + }, + getLocalstorage(key) { + // force initialization + let localConfig = this.$localStorage.get(key); + // if localstorage is null, fallback to original values + this.showConfig[key] = localConfig !== null ? localConfig === 'true' : this.showConfig[key]; + return this.showConfig[key]; + }, + setLocalStorage(key, status) { + this.showConfig[key] = status; + this.$localStorage.set(key, status); + return status; + }, + removeGroup(groupid) { + let self = this; + // TODO migrate to a vue js confirm dialog component + OC.dialogs.confirm( + t('settings', 'You are about to remove the group {group}. The users will NOT be deleted.', {group: groupid}), + t('settings','Please confirm the group removal '), + function (success) { + if (success) { + self.$store.dispatch('removeGroup', groupid); + } + } + ); + }, + + /** + * Dispatch default quota set request + * + * @param {string|Object} quota Quota in readable format '5 GB' or Object {id: '5 GB', label: '5GB'} + * @returns {string} + */ + setDefaultQuota(quota = 'none') { + this.$store.dispatch('setAppConfig', { + app: 'files', + key: 'default_quota', + // ensure we only send the preset id + value: quota.id ? quota.id : quota + }).then(() => { + if (typeof quota !== 'object') { + quota = {id: quota, label: quota}; + } + this.defaultQuota = quota; + }); + }, + + /** + * Validate quota string to make sure it's a valid human file size + * + * @param {string} quota Quota in readable format '5 GB' + * @returns {Promise|boolean} + */ + validateQuota(quota) { + // only used for new presets sent through @Tag + let validQuota = OC.Util.computerFileSize(quota); + if (validQuota === null) { + return this.setDefaultQuota('none'); + } else { + // unify format output + return this.setDefaultQuota(OC.Util.humanFileSize(OC.Util.computerFileSize(quota))); + } + // if no valid do not change + return false; + }, + + /** + * Register a new action for the user menu + * + * @param {string} icon the icon class + * @param {string} text the text to display + * @param {function} action the function to run + */ + registerAction(icon, text, action) { + this.externalActions.push({ + icon: icon, + text: text, + action: action + }); + return this.externalActions; + }, + + /** + * Create a new group + * + * @param {Object} event The form submit event + */ + createGroup(event) { + let gid = event.target[0].value; + this.loadingAddGroup = true; + this.$store.dispatch('addGroup', gid) + .then(() => { + this.showAddGroupEntry = false; + this.loadingAddGroup = false; + this.$router.push({ + name: 'group', + params: { + selectedGroup: gid + } + }) + }) + .catch(() => { + this.loadingAddGroup = false; + }); + } + }, + computed: { + users() { + return this.$store.getters.getUsers; + }, + usersOffset() { + return this.$store.getters.getUsersOffset; + }, + usersLimit() { + return this.$store.getters.getUsersLimit; + }, + + // Local settings + showLanguages: { + get: function() {return this.getLocalstorage('showLanguages')}, + set: function(status) { + this.setLocalStorage('showLanguages', status); + } + }, + showLastLogin: { + get: function() {return this.getLocalstorage('showLastLogin')}, + set: function(status) { + this.setLocalStorage('showLastLogin', status); + } + }, + showUserBackend: { + get: function() {return this.getLocalstorage('showUserBackend')}, + set: function(status) { + this.setLocalStorage('showUserBackend', status); + } + }, + showStoragePath: { + get: function() {return this.getLocalstorage('showStoragePath')}, + set: function(status) { + this.setLocalStorage('showStoragePath', status); + } + }, + + userCount() { + return this.$store.getters.getUserCount; + }, + settings() { + return this.$store.getters.getServerData; + }, + + // default quota + quotaOptions() { + // convert the preset array into objects + let quotaPreset = this.settings.quotaPreset.reduce((acc, cur) => acc.concat({id:cur, label:cur}), []); + // add default presets + quotaPreset.unshift(this.unlimitedQuota); + return quotaPreset; + }, + // mapping saved values to objects + defaultQuota: { + get: function() { + if (this.selectedQuota !== false) { + return this.selectedQuota; + } + if (this.settings.defaultQuota !== this.unlimitedQuota.id && OC.Util.computerFileSize(this.settings.defaultQuota) >= 0) { + // if value is valid, let's map the quotaOptions or return custom quota + return {id:this.settings.defaultQuota, label:this.settings.defaultQuota}; + } + return this.unlimitedQuota; // unlimited + }, + set: function(quota) { + this.selectedQuota = quota; + } + + }, + + // BUILD APP NAVIGATION MENU OBJECT + menu() { + // Data provided php side + let self = this; + let groups = this.$store.getters.getGroups; + groups = Array.isArray(groups) ? groups : []; + + // Map groups + groups = groups.map(group => { + let item = {}; + item.id = group.id.replace(' ', '_'); + item.key = item.id; + item.utils = {} + + // router link to + item.router = { + name: 'group', + params: {selectedGroup: group.id} + }; + + // group name + item.text = group.name; + item.title = group.name; + + // users count for all groups + if (group.usercount - group.disabled > 0 || group.usercount === -1) { + item.utils.counter = group.usercount - group.disabled; + } + + if (item.id !== 'admin' && item.id !== 'disabled' && this.settings.isAdmin) { + // add delete button on real groups + item.utils.actions = [{ + icon: 'icon-delete', + text: t('settings', 'Remove group'), + action: function() { + self.removeGroup(group.id) + } + }]; + }; + return item; + }); + + // Every item is added on top of the array, so we're going backward + // Groups, separator, disabled, admin, everyone + + // Add separator + let realGroups = groups.find((group) => {return group.id !== 'disabled' && group.id !== 'admin'}); + realGroups = typeof realGroups === 'undefined' ? [] : realGroups; + realGroups = Array.isArray(realGroups) ? realGroups : [realGroups]; + if (realGroups.length > 0) { + let separator = { + caption: true, + text: t('settings', 'Groups') + }; + groups.unshift(separator); + } + + // Adjust admin and disabled groups + let adminGroup = groups.find(group => group.id == 'admin'); + let disabledGroup = groups.find(group => group.id == 'disabled'); + + // filter out admin and disabled + groups = groups.filter(group => ['admin', 'disabled'].indexOf(group.id) === -1); + + if (adminGroup && adminGroup.text) { + adminGroup.text = t('settings', 'Admins'); // rename admin group + adminGroup.icon = 'icon-user-admin'; // set icon + groups.unshift(adminGroup); // add admin group if present + } + if (disabledGroup && disabledGroup.text) { + disabledGroup.text = t('settings', 'Disabled users'); // rename disabled group + disabledGroup.icon = 'icon-disabled-users'; // set icon + if (disabledGroup.utils && ( + disabledGroup.utils.counter > 0 // add disabled if not empty + || disabledGroup.utils.counter === -1) // add disabled if ldap enabled + ) { + groups.unshift(disabledGroup); + } + } + + + // Add everyone group + let everyoneGroup = { + id: 'everyone', + key: 'everyone', + icon: 'icon-contacts-dark', + router: {name:'users'}, + text: t('settings', 'Everyone'), + }; + // users count + if (this.userCount > 0) { + Vue.set(everyoneGroup, 'utils', { + counter: this.userCount + }); + } + groups.unshift(everyoneGroup); + + let addGroup = { + id: 'addgroup', + key: 'addgroup', + icon: 'icon-add', + text: t('settings', 'Add group'), + classes: this.loadingAddGroup ? 'icon-loading-small' : '' + }; + if (this.showAddGroupEntry) { + Vue.set(addGroup, 'edit', { + text: t('settings', 'Add group'), + action: this.createGroup, + reset: function() { + self.showAddGroupEntry = false + } + }); + addGroup.classes = 'editing'; + } else { + Vue.set(addGroup, 'action', function() { + self.showAddGroupEntry = true + // focus input + Vue.nextTick(() => { + window.addgroup.querySelector('form > input[type="text"]').focus() + }) + }) + } + groups.unshift(addGroup); + + return groups; + }, + } +} +</script> diff --git a/apps/settings/templates/certificates.php b/apps/settings/templates/certificates.php new file mode 100644 index 00000000000..d9587f97946 --- /dev/null +++ b/apps/settings/templates/certificates.php @@ -0,0 +1,44 @@ +<div class="section"> + <h2 data-anchor-name="ssl-root-certificate"><?php p($l->t('SSL Root Certificates')); ?></h2> + <table id="sslCertificate" class="grid" data-type="<?php p($_['type']); ?>"> + <thead> + <tr> + <th><?php p($l->t('Common Name')); ?></th> + <th><?php p($l->t('Valid until')); ?></th> + <th><?php p($l->t('Issued By')); ?></th> + </tr> + </thead> + <tbody> + <?php foreach ($_['certs'] as $rootCert): /**@var \OCP\ICertificate $rootCert */ ?> + <tr class="<?php echo $rootCert->isExpired() ? 'expired' : 'valid' ?>" + data-name="<?php p($rootCert->getName()) ?>"> + <td class="rootCert" + title="<?php p($rootCert->getOrganization()) ?>"> + <?php p($rootCert->getCommonName()) ?> + </td> + <td title="<?php p($l->t('Valid until %s', $l->l('date', $rootCert->getExpireDate()))) ?>"> + <?php echo $l->l('date', $rootCert->getExpireDate()) ?> + </td> + <td title="<?php p($rootCert->getIssuerOrganization()) ?>"> + <?php p($rootCert->getIssuerName()) ?> + </td> + <td <?php if ($rootCert != ''): ?>class="remove" + <?php else: ?>style="visibility:hidden;" + <?php endif; ?>><img alt="<?php p($l->t('Delete')); ?>" + title="<?php p($l->t('Delete')); ?>" + class="action" + src="<?php print_unescaped(image_path('core', 'actions/delete.svg')); ?>"/> + </td> + </tr> + <?php endforeach; ?> + </tbody> + </table> + <form class="uploadButton" method="post" + action="<?php p($_['urlGenerator']->linkToRoute($_['uploadRoute'])); ?>" + target="certUploadFrame"> + <label for="rootcert_import" class="inlineblock button" + id="rootcert_import_button"><?php p($l->t('Import root certificate')); ?></label> + <input type="file" id="rootcert_import" name="rootcert_import" + class="hiddenuploadfield"> + </form> +</div> diff --git a/apps/settings/templates/help.php b/apps/settings/templates/help.php new file mode 100644 index 00000000000..f58fc66f1b2 --- /dev/null +++ b/apps/settings/templates/help.php @@ -0,0 +1,33 @@ +<div id="app-navigation"> + <ul> + <?php if($_['admin']) { ?> + <li> + <a class="icon-user <?php p($_['style1']); ?>" + href="<?php print_unescaped($_['url1']); ?> class= ""> + <?php p($l->t('User documentation')); ?> + </a> + </li> + <li> + <a class="icon-user-admin <?php p($_['style2']); ?>" + href="<?php print_unescaped($_['url2']); ?>"> + <?php p($l->t('Administrator documentation')); ?> + </a> + </li> + <?php } ?> + + <li> + <a href="https://docs.nextcloud.com" class="icon-category-office" target="_blank" rel="noreferrer noopener"> + <?php p($l->t('Documentation')); ?> ↗ + </a> + </li> + <li> + <a href="https://help.nextcloud.com" class="icon-comment" target="_blank" rel="noreferrer noopener"> + <?php p($l->t('Forum')); ?> ↗ + </a> + </li> +</div> + +<div id="app-content" class="help-includes"> + <iframe src="<?php print_unescaped($_['url']); ?>" class="help-iframe"> + </iframe> +</div> diff --git a/apps/settings/templates/settings-vue.php b/apps/settings/templates/settings-vue.php new file mode 100644 index 00000000000..f04d577fdae --- /dev/null +++ b/apps/settings/templates/settings-vue.php @@ -0,0 +1,31 @@ +<?php +/** + * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +script('settings', 'vue-settings-apps-users-management'); +style('settings', 'settings'); + +// Do we have some data to inject ? +if(is_array($_['serverData'])) { +?> +<span id="serverData" data-server="<?php p(json_encode($_['serverData']));?>"></span> +<?php } ?> diff --git a/apps/settings/templates/settings/additional.php b/apps/settings/templates/settings/additional.php new file mode 100644 index 00000000000..3af78adde71 --- /dev/null +++ b/apps/settings/templates/settings/additional.php @@ -0,0 +1,33 @@ +<?php +/** + * @copyright Copyright (c) 2016 Arthur Schiwon <blizzz@arthur-schiwon.de> + * + * @author Arthur Schiwon <blizzz@arthur-schiwon.de> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +/** @var \OCP\IL10N $l */ +/** @var array $_ */ + +?> + +<?php foreach($_['forms'] as $form) { + if (isset($form['form'])) {?> + <div id="<?php isset($form['anchor']) ? p($form['anchor']) : p('');?>"><?php print_unescaped($form['form']);?></div> + <?php } +} ?> diff --git a/apps/settings/templates/settings/admin/additional-mail.php b/apps/settings/templates/settings/admin/additional-mail.php new file mode 100644 index 00000000000..609aa3222d5 --- /dev/null +++ b/apps/settings/templates/settings/admin/additional-mail.php @@ -0,0 +1,152 @@ +<?php +/** + * @copyright Copyright (c) 2016 Arthur Schiwon <blizzz@arthur-schiwon.de> + * + * @author Arthur Schiwon <blizzz@arthur-schiwon.de> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +/** @var \OCP\IL10N $l */ +/** @var array $_ */ + +$mail_smtpauthtype = [ + '' => $l->t('None'), + 'LOGIN' => $l->t('Login'), + 'PLAIN' => $l->t('Plain'), + 'NTLM' => $l->t('NT LAN Manager'), +]; + +$mail_smtpsecure = [ + '' => $l->t('None'), + 'ssl' => $l->t('SSL/TLS'), + 'tls' => $l->t('STARTTLS'), +]; + +$mail_smtpmode = [ + ['smtp', 'SMTP'], +]; +if ($_['sendmail_is_available']) { + $mail_smtpmode[] = ['sendmail', 'Sendmail']; +} +if ($_['mail_smtpmode'] === 'qmail') { + $mail_smtpmode[] = ['qmail', 'qmail']; +} + +$mail_sendmailmode = [ + 'smtp' => 'smtp (-bs)', + 'pipe' => 'pipe (-t)' +]; + +?> + +<div class="section" id="mail_general_settings"> + <form id="mail_general_settings_form" class="mail_settings"> + <h2><?php p($l->t('Email server'));?></h2> + <a target="_blank" rel="noreferrer noopener" class="icon-info" + title="<?php p($l->t('Open documentation'));?>" + href="<?php p(link_to_docs('admin-email')); ?>"></a> + <p class="settings-hint"><?php p($l->t('It is important to set up this server to be able to send emails, like for password reset and notifications.')); ?></p> + <p><span id="mail_settings_msg" class="msg"></span></p> + + <p> + <label for="mail_smtpmode"><?php p($l->t('Send mode')); ?></label> + <select name="mail_smtpmode" id="mail_smtpmode"> + <?php foreach ($mail_smtpmode as $smtpmode): + $selected = ''; + if ($smtpmode[0] == $_['mail_smtpmode']): + $selected = 'selected="selected"'; + endif; ?> + <option value="<?php p($smtpmode[0])?>" <?php p($selected) ?>><?php p($smtpmode[1]) ?></option> + <?php endforeach;?> + </select> + + <label id="mail_smtpsecure_label" for="mail_smtpsecure" + <?php if ($_['mail_smtpmode'] !== 'smtp') print_unescaped(' class="hidden"'); ?>> + <?php p($l->t('Encryption')); ?> + </label> + <select name="mail_smtpsecure" id="mail_smtpsecure" + <?php if ($_['mail_smtpmode'] !== 'smtp') print_unescaped(' class="hidden"'); ?>> + <?php foreach ($mail_smtpsecure as $secure => $name): + $selected = ''; + if ($secure == $_['mail_smtpsecure']): + $selected = 'selected="selected"'; + endif; ?> + <option value="<?php p($secure)?>" <?php p($selected) ?>><?php p($name) ?></option> + <?php endforeach;?> + </select> + + <label id="mail_sendmailmode_label" for="mail_sendmailmode" class="<?= $_['mail_smtpmode'] !== 'sendmail' ? 'hidden' : '' ?>"> + <?php p($l->t('Sendmail mode')); ?> + </label> + <select name="mail_sendmailmode" id="mail_sendmailmode" class="<?= $_['mail_smtpmode'] !== 'sendmail' ? 'hidden' : '' ?>"> + <?php foreach ($mail_sendmailmode as $sendmailmodeValue => $sendmailmodeLabel): ?> + <option value="<?php p($sendmailmodeValue)?>" <?= $sendmailmodeValue === $_['mail_sendmailmode'] ? 'selected="selected"' : '' ?>><?php p($sendmailmodeLabel) ?></option> + <?php endforeach;?> + </select> + </p> + + <p> + <label for="mail_from_address"><?php p($l->t('From address')); ?></label> + <input type="text" name="mail_from_address" id="mail_from_address" placeholder="<?php p($l->t('mail'))?>" + value="<?php p($_['mail_from_address']) ?>" />@ + <input type="text" name="mail_domain" id="mail_domain" placeholder="example.com" + value="<?php p($_['mail_domain']) ?>" /> + </p> + + <p id="setting_smtpauth" <?php if ($_['mail_smtpmode'] !== 'smtp') print_unescaped(' class="hidden"'); ?>> + <label for="mail_smtpauthtype"><?php p($l->t('Authentication method')); ?></label> + <select name="mail_smtpauthtype" id="mail_smtpauthtype"> + <?php foreach ($mail_smtpauthtype as $authtype => $name): + $selected = ''; + if ($authtype == $_['mail_smtpauthtype']): + $selected = 'selected="selected"'; + endif; ?> + <option value="<?php p($authtype)?>" <?php p($selected) ?>><?php p($name) ?></option> + <?php endforeach;?> + </select> + + <input type="checkbox" name="mail_smtpauth" id="mail_smtpauth" class="checkbox" value="1" + <?php if ($_['mail_smtpauth']) print_unescaped('checked="checked"'); ?> /> + <label for="mail_smtpauth"><?php p($l->t('Authentication required')); ?></label> + </p> + + <p id="setting_smtphost" <?php if ($_['mail_smtpmode'] !== 'smtp') print_unescaped(' class="hidden"'); ?>> + <label for="mail_smtphost"><?php p($l->t('Server address')); ?></label> + <input type="text" name="mail_smtphost" id="mail_smtphost" placeholder="smtp.example.com" + value="<?php p($_['mail_smtphost']) ?>" /> + : + <input type="text" name="mail_smtpport" id="mail_smtpport" placeholder="<?php p($l->t('Port'))?>" + value="<?php p($_['mail_smtpport']) ?>" /> + </p> + </form> + <form class="mail_settings" id="mail_credentials_settings"> + <p id="mail_credentials" <?php if (!$_['mail_smtpauth'] || $_['mail_smtpmode'] !== 'smtp') print_unescaped(' class="hidden"'); ?>> + <label for="mail_smtpname"><?php p($l->t('Credentials')); ?></label> + <input type="text" name="mail_smtpname" id="mail_smtpname" placeholder="<?php p($l->t('SMTP Username'))?>" + value="<?php p($_['mail_smtpname']) ?>" /> + <input type="text" name="mail_smtppassword" id="mail_smtppassword" autocomplete="off" + placeholder="<?php p($l->t('SMTP Password'))?>" value="<?php p($_['mail_smtppassword']) ?>" /> + <input id="mail_credentials_settings_submit" type="button" value="<?php p($l->t('Save')) ?>"> + </p> + </form> + + <br /> + <em><?php p($l->t('Test email settings')); ?></em> + <input type="submit" name="sendtestemail" id="sendtestemail" value="<?php p($l->t('Send email')); ?>"/> + <span id="sendtestmail_msg" class="msg"></span> +</div> diff --git a/apps/settings/templates/settings/admin/overview.php b/apps/settings/templates/settings/admin/overview.php new file mode 100644 index 00000000000..cbb7e136da0 --- /dev/null +++ b/apps/settings/templates/settings/admin/overview.php @@ -0,0 +1,66 @@ +<?php +/** + * @copyright Copyright (c) 2016 Arthur Schiwon <blizzz@arthur-schiwon.de> + * + * @author Arthur Schiwon <blizzz@arthur-schiwon.de> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +/** @var \OCP\IL10N $l */ +/** @var array $_ */ +/** @var \OCP\Defaults $theme */ + +?> + +<div id="security-warning" class="section"> + <h2><?php p($l->t('Security & setup warnings'));?></h2> + <p class="settings-hint"><?php p($l->t('It\'s important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information.'));?></p> + + <div id="security-warning-state-ok" class="hidden"> + <span class="icon icon-checkmark-white"></span><span class="message"><?php p($l->t('All checks passed.'));?></span> + </div> + <div id="security-warning-state-failure" class="hidden"> + <span class="icon icon-close-white"></span><span class="message"><?php p($l->t('There are some errors regarding your setup.'));?></span> + </div> + <div id="security-warning-state-warning" class="hidden"> + <span class="icon icon-error-white"></span><span class="message"><?php p($l->t('There are some warnings regarding your setup.'));?></span> + </div> + <div id="security-warning-state-loading"> + <span class="icon loading"></span><span class="message"><?php p($l->t('Checking for system and security issues.'));?></span> + </div> + + <div id="postsetupchecks" data-check-wellknown="<?php if($_['checkForWorkingWellKnownSetup']) { p('true'); } else { p('false'); } ?>"> + <ul class="errors hidden"></ul> + <ul class="warnings hidden"></ul> + <ul class="info hidden"></ul> + </div> + <p id="postsetupchecks-hint" class="hidden"> + <?php print_unescaped($l->t('Please double check the <a target="_blank" rel="noreferrer noopener" href="%1$s">installation guides ↗</a>, and check for any errors or warnings in the <a href="%2$s">log</a>.', [link_to_docs('admin-install'), \OC::$server->getURLGenerator()->linkToRoute('settings.AdminSettings.index', ['section' => 'logging'])] )); ?> + </p> + + <p class="extra-top-margin"> + <?php print_unescaped($l->t('Check the security of your Nextcloud over <a target="_blank" rel="noreferrer noopener" href="%s">our security scan ↗</a>.', ['https://scan.nextcloud.com']));?> + </p> + +</div> + +<div id="version" class="section"> + <!-- should be the last part, so Updater can follow if enabled (it has no heading therefore). --> + <h2><?php p($l->t('Version'));?></h2> + <p><strong><a href="<?php print_unescaped($theme->getBaseUrl()); ?>" rel="noreferrer noopener" target="_blank"><?php p($theme->getTitle()); ?></a> <?php p(OC_Util::getHumanVersion()) ?></strong></p> +</div> diff --git a/apps/settings/templates/settings/admin/security.php b/apps/settings/templates/settings/admin/security.php new file mode 100644 index 00000000000..7d528818e42 --- /dev/null +++ b/apps/settings/templates/settings/admin/security.php @@ -0,0 +1,97 @@ +<?php +/** + * @copyright Copyright (c) 2016 Arthur Schiwon <blizzz@arthur-schiwon.de> + * + * @author Arthur Schiwon <blizzz@arthur-schiwon.de> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +/** @var \OCP\IL10N $l */ +/** @var array $_ */ + +script('settings', 'vue-settings-admin-security'); + +?> + +<div id="two-factor-auth" class="section"> + <h2><?php p($l->t('Two-Factor Authentication'));?></h2> + <div id="two-factor-auth-settings"></div> +</div> + +<div class="section" id='encryptionAPI'> + <h2><?php p($l->t('Server-side encryption')); ?></h2> + <a target="_blank" rel="noreferrer noopener" class="icon-info" + title="<?php p($l->t('Open documentation'));?>" + href="<?php p(link_to_docs('admin-encryption')); ?>"></a> + <p class="settings-hint"><?php p($l->t('Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed.')); ?></p> + <p id="enable"> + <input type="checkbox" + id="enableEncryption" class="checkbox" + value="1" <?php if ($_['encryptionEnabled']) print_unescaped('checked="checked" disabled="disabled"'); ?> /> + <label + for="enableEncryption"><?php p($l->t('Enable server-side encryption')); ?> <span id="startmigration_msg" class="msg"></span> </label><br/> + </p> + + <div id="EncryptionWarning" class="warning hidden"> + <p><?php p($l->t('Please read carefully before activating server-side encryption: ')); ?></p> + <ul> + <li><?php p($l->t('Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met.')); ?></li> + <li><?php p($l->t('Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases.')); ?></li> + <li><?php p($l->t('Be aware that encryption always increases the file size.')); ?></li> + <li><?php p($l->t('It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data.')); ?></li> + </ul> + + <p><?php p($l->t('This is the final warning: Do you really want to enable encryption?')) ?> <input type="button" + id="reallyEnableEncryption" + value="<?php p($l->t("Enable encryption")); ?>" /></p> + </div> + + <div id="EncryptionSettingsArea" class="<?php if (!$_['encryptionEnabled']) p('hidden'); ?>"> + <div id='selectEncryptionModules' class="<?php if (!$_['encryptionReady']) p('hidden'); ?>"> + <?php + if (empty($_['encryptionModules'])) { + p($l->t('No encryption module loaded, please enable an encryption module in the app menu.')); + } else { ?> + <h3><?php p($l->t('Select default encryption module:')) ?></h3> + <fieldset id='encryptionModules'> + <?php foreach ($_['encryptionModules'] as $id => $module): ?> + <input type="radio" id="<?php p($id) ?>" class="radio" + name="default_encryption_module" + value="<?php p($id) ?>" + <?php if ($module['default']) { + p('checked'); + } ?>> + <label + for="<?php p($id) ?>"><?php p($module['displayName']) ?></label> + <br/> + <?php endforeach; ?> + </fieldset> + <?php } ?> + </div> + <div id="migrationWarning" class="<?php if ($_['encryptionReady']) p('hidden'); ?>"> + <?php + if ($_['encryptionReady'] === false && $_['externalBackendsEnabled'] === true) { + p($l->t('You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the "Default encryption module" and run \'occ encryption:migrate\'')); + } elseif ($_['encryptionReady'] === false && $_['externalBackendsEnabled'] === false) { + p($l->t('You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one.')); ?> + <input type="submit" name="startmigration" id="startmigration" + value="<?php p($l->t('Start migration')); ?>"/> + <?php } ?> + </div> + </div> +</div> diff --git a/apps/settings/templates/settings/admin/server.php b/apps/settings/templates/settings/admin/server.php new file mode 100644 index 00000000000..92bf433ca6c --- /dev/null +++ b/apps/settings/templates/settings/admin/server.php @@ -0,0 +1,100 @@ +<?php +/** + * @copyright Copyright (c) 2016 Arthur Schiwon <blizzz@arthur-schiwon.de> + * + * @author Arthur Schiwon <blizzz@arthur-schiwon.de> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +/** @var \OCP\IL10N $l */ +/** @var array $_ */ + +?> + +<div class="section" id="backgroundjobs"> + <h2 class="inlineblock"><?php p($l->t('Background jobs'));?></h2> + <p class="cronlog inlineblock"> + <?php if ($_['lastcron'] !== false): + $relative_time = relative_modified_date($_['lastcron']); + + $formatter = \OC::$server->getDateTimeFormatter(); + $absolute_time = $formatter->formatDateTime($_['lastcron'], 'long', 'long'); + if (time() - $_['lastcron'] <= 600): ?> + <span class="status success"></span> + <span class="crondate" title="<?php p($absolute_time);?>"> + <?php p($l->t("Last job ran %s.", [$relative_time]));?> + </span> + <?php else: ?> + <span class="status error"></span> + <span class="crondate" title="<?php p($absolute_time);?>"> + <?php p($l->t("Last job execution ran %s. Something seems wrong.", [$relative_time]));?> + </span> + <?php endif; + else: ?> + <span class="status error"></span> + <?php p($l->t("Background job didn’t run yet!")); + endif; ?> + </p> + <a target="_blank" rel="noreferrer noopener" class="icon-info" + title="<?php p($l->t('Open documentation'));?>" + href="<?php p(link_to_docs('admin-background-jobs')); ?>"></a> + + <p class="settings-hint"><?php p($l->t('For optimal performance it\'s important to configure background jobs correctly. For bigger instances \'Cron\' is the recommended setting. Please see the documentation for more information.'));?></p> + <form action="#"> + <fieldset> + <legend class="hidden-visually"><?php p($l->t('Pick background job setting'));?></legend> + <p> + <input type="radio" name="mode" value="ajax" class="radio" + id="backgroundjobs_ajax" <?php if ($_['backgroundjobs_mode'] === "ajax") { + print_unescaped('checked="checked"'); + } ?>> + <label for="backgroundjobs_ajax">AJAX</label><br/> + <em><?php p($l->t("Execute one task with each page loaded")); ?></em> + </p> + <p> + <input type="radio" name="mode" value="webcron" class="radio" + id="backgroundjobs_webcron" <?php if ($_['backgroundjobs_mode'] === "webcron") { + print_unescaped('checked="checked"'); + } ?>> + <label for="backgroundjobs_webcron">Webcron</label><br/> + <em><?php p($l->t("cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP.")); ?></em> + </p> + <p> + <input type="radio" name="mode" value="cron" class="radio" + id="backgroundjobs_cron" <?php if ($_['backgroundjobs_mode'] === "cron") { + print_unescaped('checked="checked"'); + } + if (!$_['cli_based_cron_possible']) { + print_unescaped('disabled'); + }?>> + <label for="backgroundjobs_cron">Cron</label><br/> + <em><?php p($l->t("Use system cron service to call the cron.php file every 5 minutes.")); ?> + <?php if($_['cli_based_cron_possible']) { + p($l->t('The cron.php needs to be executed by the system user "%s".', [$_['cli_based_cron_user']])); + } else { + print_unescaped(str_replace( + ['{linkstart}', '{linkend}'], + ['<a href="http://php.net/manual/en/book.posix.php">', ' ↗</a>'], + $l->t('To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details.') + )); + } ?></em> + + </p> + </fieldset> + </form> +</div> diff --git a/apps/settings/templates/settings/admin/sharing.php b/apps/settings/templates/settings/admin/sharing.php new file mode 100644 index 00000000000..5913524be40 --- /dev/null +++ b/apps/settings/templates/settings/admin/sharing.php @@ -0,0 +1,120 @@ +<?php +/** + * @copyright Copyright (c) 2016 Arthur Schiwon <blizzz@arthur-schiwon.de> + * + * @author Arthur Schiwon <blizzz@arthur-schiwon.de> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +/** @var \OCP\IL10N $l */ +/** @var array $_ */ + +?> + +<div class="section" id="shareAPI"> + <h2><?php p($l->t('Sharing'));?></h2> + <a target="_blank" rel="noreferrer noopener" class="icon-info" + title="<?php p($l->t('Open documentation'));?>" + href="<?php p(link_to_docs('admin-sharing')); ?>"></a> + <p class="settings-hint"><?php p($l->t('As admin you can fine-tune the sharing behavior. Please see the documentation for more information.'));?></p> + <p id="enable"> + <input type="checkbox" name="shareapi_enabled" id="shareAPIEnabled" class="checkbox" + value="1" <?php if ($_['shareAPIEnabled'] === 'yes') print_unescaped('checked="checked"'); ?> /> + <label for="shareAPIEnabled"><?php p($l->t('Allow apps to use the Share API'));?></label><br/> + </p> + <p class="<?php if ($_['shareAPIEnabled'] === 'no') p('hidden');?>"> + <input type="checkbox" name="shareapi_allow_links" id="allowLinks" class="checkbox" + value="1" <?php if ($_['allowLinks'] === 'yes') print_unescaped('checked="checked"'); ?> /> + <label for="allowLinks"><?php p($l->t('Allow users to share via link'));?></label><br/> + </p> + + <p id="publicLinkSettings" class="indent <?php if ($_['allowLinks'] !== 'yes' || $_['shareAPIEnabled'] === 'no') p('hidden'); ?>"> + <input type="checkbox" name="shareapi_allow_public_upload" id="allowPublicUpload" class="checkbox" + value="1" <?php if ($_['allowPublicUpload'] == 'yes') print_unescaped('checked="checked"'); ?> /> + <label for="allowPublicUpload"><?php p($l->t('Allow public uploads'));?></label><br/> + <input type="checkbox" name="shareapi_enable_link_password_by_default" id="enableLinkPasswordByDefault" class="checkbox" + value="1" <?php if ($_['enableLinkPasswordByDefault'] === 'yes') print_unescaped('checked="checked"'); ?> /> + <label for="enableLinkPasswordByDefault"><?php p($l->t('Always ask for a password'));?></label><br/> + <input type="checkbox" name="shareapi_enforce_links_password" id="enforceLinkPassword" class="checkbox" + value="1" <?php if ($_['enforceLinkPassword']) print_unescaped('checked="checked"'); ?> /> + <label for="enforceLinkPassword"><?php p($l->t('Enforce password protection'));?></label><br/> + + <input type="checkbox" name="shareapi_default_expire_date" id="shareapiDefaultExpireDate" class="checkbox" + value="1" <?php if ($_['shareDefaultExpireDateSet'] === 'yes') print_unescaped('checked="checked"'); ?> /> + <label for="shareapiDefaultExpireDate"><?php p($l->t('Set default expiration date'));?></label><br/> + + </p> + <p id="setDefaultExpireDate" class="double-indent <?php if ($_['allowLinks'] !== 'yes' || $_['shareDefaultExpireDateSet'] === 'no' || $_['shareAPIEnabled'] === 'no') p('hidden');?>"> + <?php p($l->t( 'Expire after ' )); ?> + <input type="text" name='shareapi_expire_after_n_days' id="shareapiExpireAfterNDays" placeholder="<?php p('7')?>" + value='<?php p($_['shareExpireAfterNDays']) ?>' /> + <?php p($l->t( 'days' )); ?> + <input type="checkbox" name="shareapi_enforce_expire_date" id="shareapiEnforceExpireDate" class="checkbox" + value="1" <?php if ($_['shareEnforceExpireDate'] === 'yes') print_unescaped('checked="checked"'); ?> /> + <label for="shareapiEnforceExpireDate"><?php p($l->t('Enforce expiration date'));?></label><br/> + </p> + <p class="<?php if ($_['shareAPIEnabled'] === 'no') p('hidden');?>"> + <input type="checkbox" name="shareapi_allow_resharing" id="allowResharing" class="checkbox" + value="1" <?php if ($_['allowResharing'] === 'yes') print_unescaped('checked="checked"'); ?> /> + <label for="allowResharing"><?php p($l->t('Allow resharing'));?></label><br/> + </p> + <p class="<?php if ($_['shareAPIEnabled'] === 'no') p('hidden');?>"> + <input type="checkbox" name="shareapi_allow_group_sharing" id="allowGroupSharing" class="checkbox" + value="1" <?php if ($_['allowGroupSharing'] === 'yes') print_unescaped('checked="checked"'); ?> /> + <label for="allowGroupSharing"><?php p($l->t('Allow sharing with groups'));?></label><br /> + </p> + <p class="<?php if ($_['shareAPIEnabled'] === 'no') p('hidden');?>"> + <input type="checkbox" name="shareapi_only_share_with_group_members" id="onlyShareWithGroupMembers" class="checkbox" + value="1" <?php if ($_['onlyShareWithGroupMembers']) print_unescaped('checked="checked"'); ?> /> + <label for="onlyShareWithGroupMembers"><?php p($l->t('Restrict users to only share with users in their groups'));?></label><br/> + </p> + <p class="<?php if ($_['shareAPIEnabled'] === 'no') p('hidden');?>"> + <input type="checkbox" name="shareapi_exclude_groups" id="shareapiExcludeGroups" class="checkbox" + value="1" <?php if ($_['shareExcludeGroups']) print_unescaped('checked="checked"'); ?> /> + <label for="shareapiExcludeGroups"><?php p($l->t('Exclude groups from sharing'));?></label><br/> + </p> + <p id="selectExcludedGroups" class="indent <?php if (!$_['shareExcludeGroups'] || $_['shareAPIEnabled'] === 'no') p('hidden'); ?>"> + <input name="shareapi_exclude_groups_list" type="hidden" id="excludedGroups" value="<?php p($_['shareExcludedGroupsList']) ?>" style="width: 400px" class="noJSAutoUpdate"/> + <br /> + <em><?php p($l->t('These groups will still be able to receive shares, but not to initiate them.')); ?></em> + </p> + <p class="<?php if ($_['shareAPIEnabled'] === 'no') p('hidden');?>"> + <input type="checkbox" name="shareapi_allow_share_dialog_user_enumeration" value="1" id="shareapi_allow_share_dialog_user_enumeration" class="checkbox" + <?php if ($_['allowShareDialogUserEnumeration'] === 'yes') print_unescaped('checked="checked"'); ?> /> + <label for="shareapi_allow_share_dialog_user_enumeration"><?php p($l->t('Allow username autocompletion in share dialog. If this is disabled the full username or email address needs to be entered.'));?></label><br /> + </p> + <p> + <input type="checkbox" id="publicShareDisclaimer" class="checkbox noJSAutoUpdate" + <?php if ($_['publicShareDisclaimerText'] !== null) print_unescaped('checked="checked"'); ?> /> + <label for="publicShareDisclaimer"><?php p($l->t('Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)'));?></label> + <span id="publicShareDisclaimerStatus" class="msg" style="display:none"></span> + <br/> + <textarea placeholder="<?php p($l->t('This text will be shown on the public link upload page when the file list is hidden.')) ?>" id="publicShareDisclaimerText" <?php if ($_['publicShareDisclaimerText'] === null) { print_unescaped('class="hidden"'); } ?>><?php p($_['publicShareDisclaimerText']) ?></textarea> + </p> + + <h3><?php p($l->t('Default share permissions'));?></h3> + <input type="hidden" name="shareapi_default_permissions" id="shareApiDefaultPermissions" class="checkbox" + value="<?php p($_['shareApiDefaultPermissions']) ?>" /> + <p id="shareApiDefaultPermissionsSection" class="indent <?php if ($_['shareAPIEnabled'] === 'no') p('hidden'); ?>"> + <?php foreach ($_['shareApiDefaultPermissionsCheckboxes'] as $perm): ?> + <input type="checkbox" name="shareapi_default_permission_<?php p($perm['id']) ?>" id="shareapi_default_permission_<?php p($perm['id']) ?>" + class="noautosave checkbox" value="<?php p($perm['value']) ?>" <?php if (($_['shareApiDefaultPermissions'] & $perm['value']) !== 0) print_unescaped('checked="checked"'); ?> /> + <label for="shareapi_default_permission_<?php p($perm['id']) ?>"><?php p($perm['label']);?></label> + <?php endforeach ?> + </p> +</div> diff --git a/apps/settings/templates/settings/empty.php b/apps/settings/templates/settings/empty.php new file mode 100644 index 00000000000..0ed8a873d3c --- /dev/null +++ b/apps/settings/templates/settings/empty.php @@ -0,0 +1,25 @@ +<?php +/** + * @copyright Copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de> + * + * @author Arthur Schiwon <blizzz@arthur-schiwon.de> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + + # used for Personal/Additional settings as fallback for legacy settings +?> diff --git a/apps/settings/templates/settings/frame.php b/apps/settings/templates/settings/frame.php new file mode 100644 index 00000000000..e32c4ed2fc9 --- /dev/null +++ b/apps/settings/templates/settings/frame.php @@ -0,0 +1,92 @@ +<?php +/** + * @copyright Copyright (c) 2016 Arthur Schiwon <blizzz@arthur-schiwon.de> + * + * @author Arthur Schiwon <blizzz@arthur-schiwon.de> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +style('settings', 'settings'); +script('settings', [ 'settings', 'admin', 'log', 'certificates'] ); +script('core', 'setupchecks'); +script('files', 'jquery.fileupload'); + +?> + +<div id="app-navigation"> + <ul> + <?php if(!empty($_['forms']['admin'])) { ?> + <li class="app-navigation-caption"><?php p($l->t('Personal')); ?></li> + <?php + } + foreach($_['forms']['personal'] as $form) { + if (isset($form['anchor'])) { + $anchor = \OC::$server->getURLGenerator()->linkToRoute('settings.PersonalSettings.index', ['section' => $form['anchor']]); + $class = 'nav-icon-' . $form['anchor']; + $sectionName = $form['section-name']; + $active = $form['active'] ? ' class="active"' : ''; + ?> + <li <?php print_unescaped($form['active'] ? ' class="active"' : ''); ?>> + <a href="<?php p($anchor); ?>"> + <?php if (!empty($form['icon'])) { ?> + <img alt="" src="<?php print_unescaped($form['icon']); ?>"> + <span><?php p($form['section-name']); ?></span> + <?php } else { ?> + <span class="no-icon"><?php p($form['section-name']); ?></span> + <?php } ?> + </a> + </li> + <?php + } + } + ?> + + <?php + if(!empty($_['forms']['admin'])) { + ?> + <li class="app-navigation-caption"><?php p($l->t('Administration')); ?></li> + <?php + } + foreach($_['forms']['admin'] as $form) { + if (isset($form['anchor'])) { + + $anchor = \OC::$server->getURLGenerator()->linkToRoute('settings.AdminSettings.index', ['section' => $form['anchor']]); + $class = 'nav-icon-' . $form['anchor']; + $sectionName = $form['section-name']; + $active = $form['active'] ? ' class="active"' : ''; + ?> + <li <?php print_unescaped($form['active'] ? ' class="active"' : ''); ?>> + <a href="<?php p($anchor); ?>"> + <?php if (!empty($form['icon'])) { ?> + <img alt="" src="<?php print_unescaped($form['icon']); ?>"> + <span><?php p($form['section-name']); ?></span> + <?php } else { ?> + <span class="no-icon"><?php p($form['section-name']); ?></span> + <?php } ?> + </a> + </li> + <?php + } + } + ?> + </ul> +</div> + +<div id="app-content"> + <?php print_unescaped($_['content']); ?> +</div> diff --git a/apps/settings/templates/settings/personal/development.notice.php b/apps/settings/templates/settings/personal/development.notice.php new file mode 100644 index 00000000000..eac457a5fae --- /dev/null +++ b/apps/settings/templates/settings/personal/development.notice.php @@ -0,0 +1,66 @@ +<div class="followupsection"> + <p> + <?php print_unescaped(str_replace( + [ + '{communityopen}', + '{githubopen}', + '{licenseopen}', + '{linkclose}', + ], + [ + '<a href="https://nextcloud.com/contribute" target="_blank" rel="noreferrer noopener">', + '<a href="https://github.com/nextcloud" target="_blank" rel="noreferrer noopener">', + '<a href="https://www.gnu.org/licenses/agpl-3.0.html" target="_blank" rel="noreferrer noopener">', + '</a>', + ], + $l->t('Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}.') + )); ?> + </p> + + <p class="social-button"> + <?php print_unescaped(str_replace( + [ + '{facebookimage}', + '{twitterimage}', + '{mastodonimage}', + '{rssimage}', + '{mailimage}', + '{facebookopen}', + '{twitteropen}', + '{mastodonopen}', + '{rssopen}', + '{newsletteropen}', + '{linkclose}', + '{facebooktext}', + '{twittertext}', + '{mastodontext}', + '{rsstext}', + '{mailtext}', + ], + [ + image_path('core', 'facebook.svg'), + image_path('core', 'twitter.svg'), + image_path('core', 'mastodon.svg'), + image_path('core', 'rss.svg'), + image_path('core', 'mail.svg'), + '<a target="_blank" rel="noreferrer noopener" href="https://www.facebook.com/Nextclouders/">', + '<a target="_blank" rel="noreferrer noopener" href="https://twitter.com/nextclouders">', + '<a target="_blank" rel="noreferrer noopener" href="https://mastodon.xyz/@nextcloud">', + '<a target="_blank" rel="noreferrer noopener" href="https://nextcloud.com/news/">', + '<a target="_blank" rel="noreferrer noopener" href="https://newsletter.nextcloud.com/?p=subscribe&id=1">', + '</a>', + $l->t('Like our Facebook page'), + $l->t('Follow us on Twitter'), + $l->t('Follow us on Mastodon'), + $l->t('Check out our blog'), + $l->t('Subscribe to our newsletter'), + + ], +'{facebookopen}<img width="50" src="{facebookimage}" title="{facebooktext}" alt="{facebooktext}">{linkclose} +{twitteropen}<img width="50" src="{twitterimage}" title="{twittertext}" alt="{twittertext}">{linkclose} +{mastodonopen}<img width="50" src="{mastodonimage}" title="{mastodontext}" alt="{mastodontext}">{linkclose} +{rssopen}<img class="img-circle" width="50" src="{rssimage}" title="{rsstext}" alt="{rsstext}">{linkclose} +{newsletteropen}<img width="50" src="{mailimage}" title="{mailtext}" alt="{mailtext}">{linkclose}' + )); ?> + </p> +</div> diff --git a/apps/settings/templates/settings/personal/personal.info.php b/apps/settings/templates/settings/personal/personal.info.php new file mode 100644 index 00000000000..ad5f8ac547f --- /dev/null +++ b/apps/settings/templates/settings/personal/personal.info.php @@ -0,0 +1,383 @@ +<?php +/** + * @copyright Copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de> + * + * @author Arthur Schiwon <blizzz@arthur-schiwon.de> + * @author Thomas Citharel <tcit@tcit.fr> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +/** @var \OCP\IL10N $l */ +/** @var array $_ */ + +script('settings', [ + 'usersettings', + 'templates', + 'federationsettingsview', + 'federationscopemenu', + 'settings/personalInfo', +]); +?> + +<div id="personal-settings"> + <div id="personal-settings-avatar-container" class="personal-settings-container"> + <div> + <form id="avatarform" class="section" method="post" action="<?php p(\OC::$server->getURLGenerator()->linkToRoute('core.avatar.postAvatar')); ?>"> + <h3> + <label><?php p($l->t('Profile picture')); ?></label> + <div class="federation-menu" tabindex="0"> + <span class="icon-federation-menu icon-password"> + <span class="icon-triangle-s"></span> + </span> + </div> + </h3> + <div id="displayavatar"> + <div class="avatardiv"></div> + <div class="warning hidden"></div> + <?php if ($_['avatarChangeSupported']): ?> + <label for="uploadavatar" class="inlineblock button icon-upload svg" id="uploadavatarbutton" title="<?php p($l->t('Upload new')); ?>"></label> + <div class="inlineblock button icon-folder svg" id="selectavatar" title="<?php p($l->t('Select from Files')); ?>"></div> + <div class="hidden button icon-delete svg" id="removeavatar" title="<?php p($l->t('Remove image')); ?>"></div> + <input type="file" name="files[]" id="uploadavatar" class="hiddenuploadfield"> + <p><em><?php p($l->t('png or jpg, max. 20 MB')); ?></em></p> + <?php else: ?> + <?php p($l->t('Picture provided by original account')); ?> + <?php endif; ?> + </div> + + <div id="cropper" class="hidden"> + <div class="inner-container"> + <div class="inlineblock button" id="abortcropperbutton"><?php p($l->t('Cancel')); ?></div> + <div class="inlineblock button primary" id="sendcropperbutton"><?php p($l->t('Choose as profile picture')); ?></div> + </div> + </div> + <span class="icon-checkmark hidden"></span> + <?php if($_['lookupServerUploadEnabled']) { ?> + <input type="hidden" id="avatarscope" value="<?php p($_['avatarScope']) ?>"> + <?php } ?> + </form> + </div> + <div class="personal-settings-setting-box personal-settings-group-box section"> + <h3><?php p($l->t('Details')); ?></h3> + <div id="groups" class="personal-info icon-user"> + <p><?php p($l->t('You are a member of the following groups:')); ?></p> + <p id="groups-groups"> + <strong><?php p(implode(', ', $_['groups'])); ?></strong> + </p> + </div> + <div id="quota" class="personal-info icon-quota"> + <div class="quotatext-bg"> + <p class="quotatext"> + <?php if ($_['quota'] === \OCP\Files\FileInfo::SPACE_UNLIMITED): ?> + <?php print_unescaped($l->t('You are using <strong>%s</strong>', + [$_['usage']]));?> + <?php else: ?> + <?php print_unescaped($l->t('You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)', + [$_['usage'], $_['total_space'], $_['usage_relative']]));?> + <?php endif ?> + </p> + </div> + <progress value="<?php p($_['usage_relative']); ?>" max="100"<?php if($_['usage_relative'] > 80): ?> class="warn" <?php endif; ?>></progress> + </div> + </div> + </div> + + <div class="personal-settings-container"> + <div class="personal-settings-setting-box"> + <form id="displaynameform" class="section"> + <h3> + <label for="displayname"><?php p($l->t('Full name')); ?></label> + <div class="federation-menu" tabindex="0"> + <span class="icon-federation-menu icon-password"> + <span class="icon-triangle-s"></span> + </span> + </div> + </h3> + <input type="text" id="displayname" name="displayname" + <?php if(!$_['displayNameChangeSupported']) { print_unescaped('class="hidden"'); } ?> + value="<?php p($_['displayName']) ?>" + autocomplete="on" autocapitalize="none" autocorrect="off" /> + <?php if(!$_['displayNameChangeSupported']) { ?> + <span><?php if(isset($_['displayName']) && !empty($_['displayName'])) { p($_['displayName']); } else { p($l->t('No display name set')); } ?></span> + <?php } ?> + <span class="icon-checkmark hidden"></span> + <span class="icon-error hidden" ></span> + <?php if($_['lookupServerUploadEnabled']) { ?> + <input type="hidden" id="displaynamescope" value="<?php p($_['displayNameScope']) ?>"> + <?php } ?> + </form> + </div> + <div class="personal-settings-setting-box"> + <form id="emailform" class="section"> + <h3> + <label for="email"><?php p($l->t('Email')); ?></label> + <div class="federation-menu" tabindex="0"> + <span class="icon-federation-menu icon-password"> + <span class="icon-triangle-s"></span> + </span> + </div> + </h3> + <div class="verify <?php if ($_['email'] === '' || $_['emailScope'] !== 'public') p('hidden'); ?>"> + <img id="verify-email" title="<?php p($_['emailMessage']); ?>" data-status="<?php p($_['emailVerification']) ?>" src=" + <?php + switch($_['emailVerification']) { + case \OC\Accounts\AccountManager::VERIFICATION_IN_PROGRESS: + p(image_path('core', 'actions/verifying.svg')); + break; + case \OC\Accounts\AccountManager::VERIFIED: + p(image_path('core', 'actions/verified.svg')); + break; + default: + p(image_path('core', 'actions/verify.svg')); + } + ?>"> + </div> + <input type="email" name="email" id="email" value="<?php p($_['email']); ?>" + <?php if(!$_['displayNameChangeSupported']) { print_unescaped('class="hidden"'); } ?> + placeholder="<?php p($l->t('Your email address')); ?>" + autocomplete="on" autocapitalize="none" autocorrect="off" /> + <span class="icon-checkmark hidden"></span> + <span class="icon-error hidden" ></span> + <?php if(!$_['displayNameChangeSupported']) { ?> + <span><?php if(isset($_['email']) && !empty($_['email'])) { p($_['email']); } else { p($l->t('No email address set')); }?></span> + <?php } ?> + <?php if($_['displayNameChangeSupported']) { ?> + <em><?php p($l->t('For password reset and notifications')); ?></em> + <?php } ?> + <?php if($_['lookupServerUploadEnabled']) { ?> + <input type="hidden" id="emailscope" value="<?php p($_['emailScope']) ?>"> + <?php } ?> + </form> + </div> + <?php if (!empty($_['phone']) || $_['lookupServerUploadEnabled']) { ?> + <div class="personal-settings-setting-box"> + <form id="phoneform" class="section"> + <h3> + <label for="phone"><?php p($l->t('Phone number')); ?></label> + <div class="federation-menu" tabindex="0"> + <span class="icon-federation-menu icon-password"> + <span class="icon-triangle-s"></span> + </span> + </div> + </h3> + <input type="tel" id="phone" name="phone" <?php if(!$_['lookupServerUploadEnabled']) print_unescaped('disabled="1"'); ?> + value="<?php p($_['phone']) ?>" + placeholder="<?php p($l->t('Your phone number')); ?>" + autocomplete="on" autocapitalize="none" autocorrect="off" /> + <span class="icon-checkmark hidden"></span> + <?php if($_['lookupServerUploadEnabled']) { ?> + <input type="hidden" id="phonescope" value="<?php p($_['phoneScope']) ?>"> + <?php } ?> + </form> + </div> + <?php } ?> + <?php if (!empty($_['address']) || $_['lookupServerUploadEnabled']) { ?> + <div class="personal-settings-setting-box"> + <form id="addressform" class="section"> + <h3> + <label for="address"><?php p($l->t('Address')); ?></label> + <div class="federation-menu" tabindex="0"> + <span class="icon-federation-menu icon-password"> + <span class="icon-triangle-s"></span> + </span> + </div> + </h3> + <input type="text" id="address" name="address" <?php if(!$_['lookupServerUploadEnabled']) print_unescaped('disabled="1"'); ?> + placeholder="<?php p($l->t('Your postal address')); ?>" + value="<?php p($_['address']) ?>" + autocomplete="on" autocapitalize="none" autocorrect="off" /> + <span class="icon-checkmark hidden"></span> + <?php if($_['lookupServerUploadEnabled']) { ?> + <input type="hidden" id="addressscope" value="<?php p($_['addressScope']) ?>"> + <?php } ?> + </form> + </div> + <?php } ?> + <?php if (!empty($_['website']) || $_['lookupServerUploadEnabled']) { ?> + <div class="personal-settings-setting-box"> + <form id="websiteform" class="section"> + <h3> + <label for="website"><?php p($l->t('Website')); ?></label> + <div class="federation-menu" tabindex="0"> + <span class="icon-federation-menu icon-password"> + <span class="icon-triangle-s"></span> + </span> + </div> + </h3> + <?php if($_['lookupServerUploadEnabled']) { ?> + <div class="verify <?php if ($_['website'] === '' || $_['websiteScope'] !== 'public') p('hidden'); ?>"> + <img id="verify-website" title="<?php p($_['websiteMessage']); ?>" data-status="<?php p($_['websiteVerification']) ?>" src=" + <?php + switch($_['websiteVerification']) { + case \OC\Accounts\AccountManager::VERIFICATION_IN_PROGRESS: + p(image_path('core', 'actions/verifying.svg')); + break; + case \OC\Accounts\AccountManager::VERIFIED: + p(image_path('core', 'actions/verified.svg')); + break; + default: + p(image_path('core', 'actions/verify.svg')); + } + ?>" + <?php if($_['websiteVerification'] === \OC\Accounts\AccountManager::VERIFICATION_IN_PROGRESS || $_['websiteVerification'] === \OC\Accounts\AccountManager::NOT_VERIFIED) print_unescaped(' class="verify-action"') ?> + > + <div class="verification-dialog popovermenu bubble menu"> + <div class="verification-dialog-content"> + <p class="explainVerification"></p> + <p class="verificationCode"></p> + <p><?php p($l->t('It can take up to 24 hours before the account is displayed as verified.'));?></p> + </div> + </div> + </div> + <?php } ?> + <input type="url" name="website" id="website" value="<?php p($_['website']); ?>" + placeholder="<?php p($l->t('Link https://…')); ?>" + autocomplete="on" autocapitalize="none" autocorrect="off" + <?php if(!$_['lookupServerUploadEnabled']) print_unescaped('disabled="1"'); ?> + /> + <span class="icon-checkmark hidden"></span> + <?php if($_['lookupServerUploadEnabled']) { ?> + <input type="hidden" id="websitescope" value="<?php p($_['websiteScope']) ?>"> + <?php } ?> + </form> + </div> + <?php } ?> + <?php if (!empty($_['twitter']) || $_['lookupServerUploadEnabled']) { ?> + <div class="personal-settings-setting-box"> + <form id="twitterform" class="section"> + <h3> + <label for="twitter"><?php p($l->t('Twitter')); ?></label> + <div class="federation-menu" tabindex="0"> + <span class="icon-federation-menu icon-password"> + <span class="icon-triangle-s"></span> + </span> + </div> + </h3> + <?php if($_['lookupServerUploadEnabled']) { ?> + <div class="verify <?php if ($_['twitter'] === '' || $_['twitterScope'] !== 'public') p('hidden'); ?>"> + <img id="verify-twitter" title="<?php p($_['twitterMessage']); ?>" data-status="<?php p($_['twitterVerification']) ?>" src=" + <?php + switch($_['twitterVerification']) { + case \OC\Accounts\AccountManager::VERIFICATION_IN_PROGRESS: + p(image_path('core', 'actions/verifying.svg')); + break; + case \OC\Accounts\AccountManager::VERIFIED: + p(image_path('core', 'actions/verified.svg')); + break; + default: + p(image_path('core', 'actions/verify.svg')); + } + ?>" + <?php if($_['twitterVerification'] === \OC\Accounts\AccountManager::VERIFICATION_IN_PROGRESS || $_['twitterVerification'] === \OC\Accounts\AccountManager::NOT_VERIFIED) print_unescaped(' class="verify-action"') ?> + > + <div class="verification-dialog popovermenu bubble menu"> + <div class="verification-dialog-content"> + <p class="explainVerification"></p> + <p class="verificationCode"></p> + <p><?php p($l->t('It can take up to 24 hours before the account is displayed as verified.'));?></p> + </div> + </div> + </div> + <?php } ?> + <input type="text" name="twitter" id="twitter" value="<?php p($_['twitter']); ?>" + placeholder="<?php p($l->t('Twitter handle @…')); ?>" + autocomplete="on" autocapitalize="none" autocorrect="off" + <?php if(!$_['lookupServerUploadEnabled']) print_unescaped('disabled="1"'); ?> + /> + <span class="icon-checkmark hidden"></span> + <?php if($_['lookupServerUploadEnabled']) { ?> + <input type="hidden" id="twitterscope" value="<?php p($_['twitterScope']) ?>"> + <?php } ?> + </form> + </div> + <?php } ?> + </div> + + <div class="profile-settings-container"> + <div class="personal-settings-setting-box personal-settings-language-box"> + <?php if (isset($_['activelanguage'])) { ?> + <form id="language" class="section"> + <h3> + <label for="languageinput"><?php p($l->t('Language'));?></label> + </h3> + <select id="languageinput" name="lang" data-placeholder="<?php p($l->t('Language'));?>"> + <option value="<?php p($_['activelanguage']['code']);?>"> + <?php p($_['activelanguage']['name']);?> + </option> + <?php foreach($_['commonlanguages'] as $language):?> + <option value="<?php p($language['code']);?>"> + <?php p($language['name']);?> + </option> + <?php endforeach;?> + <optgroup label="––––––––––"></optgroup> + <?php foreach($_['languages'] as $language):?> + <option value="<?php p($language['code']);?>"> + <?php p($language['name']);?> + </option> + <?php endforeach;?> + </select> + <a href="https://www.transifex.com/nextcloud/nextcloud/" + target="_blank" rel="noreferrer noopener"> + <em><?php p($l->t('Help translate'));?></em> + </a> + </form> + <?php } ?> + </div> + <div class="personal-settings-setting-box personal-settings-locale-box"> + <?php if (isset($_['activelocale'])) { ?> + <form id="locale" class="section"> + <h3> + <label for="localeinput"><?php p($l->t('Locale'));?></label> + </h3> + <select id="localeinput" name="lang" data-placeholder="<?php p($l->t('Locale'));?>"> + <option value="<?php p($_['activelocale']['code']);?>"> + <?php p($l->t($_['activelocale']['name']));?> + </option> + <optgroup label="––––––––––"></optgroup> + <?php foreach($_['localesForLanguage'] as $locale):?> + <option value="<?php p($locale['code']);?>"> + <?php p($l->t($locale['name']));?> + </option> + <?php endforeach;?> + <optgroup label="––––––––––"></optgroup> + <option value="<?php p($_['activelocale']['code']);?>"> + <?php p($l->t($_['activelocale']['name']));?> + </option> + <?php foreach($_['locales'] as $locale):?> + <option value="<?php p($locale['code']);?>"> + <?php p($l->t($locale['name']));?> + </option> + <?php endforeach;?> + </select> + <div id="localeexample" class="personal-info icon-timezone"> + <p> + <span id="localeexample-date"></span> <span id="localeexample-time"></span> + </p> + <p id="localeexample-fdow"></p> + </div> + </form> + <?php } ?> + </div> + <span class="msg"></span> + </div> + + <div id="personal-settings-group-container"> + + </div> + +</div> diff --git a/apps/settings/templates/settings/personal/security.php b/apps/settings/templates/settings/personal/security.php new file mode 100644 index 00000000000..e72b443f59b --- /dev/null +++ b/apps/settings/templates/settings/personal/security.php @@ -0,0 +1,106 @@ +<?php +/** + * @copyright Copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de> + * + * @author Arthur Schiwon <blizzz@arthur-schiwon.de> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +script('settings', [ + 'settings', + 'templates', + 'vue-settings-personal-security', +]); + +if($_['passwordChangeSupported']) { + script('settings', 'security_password'); +} + +?> +<?php if($_['passwordChangeSupported']) { ?> +<div id="security-password" class="section"> + <h2 class="inlineblock"><?php p($l->t('Password'));?></h2> + <span id="password-error-msg" class="msg success hidden">Saved</span> + <div class="personal-settings-setting-box personal-settings-password-box"> + <form id="passwordform"> + <label for="pass1" class="hidden-visually"><?php p($l->t('Current password')); ?>: </label> + <input type="password" id="pass1" name="oldpassword" + placeholder="<?php p($l->t('Current password'));?>" + autocomplete="off" autocapitalize="none" autocorrect="off" /> + + <div class="personal-show-container"> + <label for="pass2" class="hidden-visually"><?php p($l->t('New password'));?>: </label> + <input type="password" id="pass2" name="newpassword" + placeholder="<?php p($l->t('New password')); ?>" + data-typetoggle="#personal-show" + autocomplete="off" autocapitalize="none" autocorrect="off" /> + <input type="checkbox" id="personal-show" class="hidden-visually" name="show" /><label for="personal-show" class="personal-show-label"></label> + </div> + + <input id="passwordbutton" type="submit" value="<?php p($l->t('Change password')); ?>" /> + + </form> + </div> + <span class="msg"></span> +</div> +<?php } ?> + +<div id="two-factor-auth" class="section"> + <h2><?php p($l->t('Two-Factor Authentication'));?></h2> + <a target="_blank" rel="noreferrer noopener" class="icon-info" + title="<?php p($l->t('Open documentation'));?>" + href="<?php p(link_to_docs('user-2fa')); ?>"></a> + <p class="settings-hint"><?php p($l->t('Use a second factor besides your password to increase security for your account.'));?></p> + <ul> + <?php foreach ($_['twoFactorProviderData']['providers'] as $data) { ?> + <li> + <?php + + /** @var \OCP\Authentication\TwoFactorAuth\IProvidesPersonalSettings $provider */ + $provider = $data['provider']; + //Handle 2FA provider icons and theme + if ($provider instanceof \OCP\Authentication\TwoFactorAuth\IProvidesIcons) { + if ($_['themedark']) { + $icon = $provider->getLightIcon(); + } + else { + $icon = $provider->getDarkIcon(); + } + //fallback icon if the 2factor provider doesn't provide an icon. + } else { + if ($_['themedark']) { + $icon = image_path('core', 'actions/password-white.svg'); + } + else { + $icon = image_path('core', 'actions/password.svg'); + } + + } + /** @var \OCP\Authentication\TwoFactorAuth\IPersonalProviderSettings $settings */ + $settings = $data['settings']; + ?> + <h3> + <img class="two-factor-provider-settings-icon" src="<?php p($icon) ?>" alt=""> + <?php p($provider->getDisplayName()) ?> + </h3> + <?php print_unescaped($settings->getBody()->fetchPage()) ?> + </li> + <?php } ?> + </ul> +</div> + diff --git a/apps/settings/templates/settings/personal/security/authtokens.php b/apps/settings/templates/settings/personal/security/authtokens.php new file mode 100644 index 00000000000..1db0d91fe69 --- /dev/null +++ b/apps/settings/templates/settings/personal/security/authtokens.php @@ -0,0 +1,31 @@ +<?php +declare(strict_types=1); +/** + * @copyright Copyright (c) 2019, Roeland Jago Douma <roeland@famdouma.nl> + * + * @author Roeland Jago Douma <roeland@famdouma.nl> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +script('settings', [ + 'vue-settings-personal-security', +]); + +?> + +<div id="security-authtokens" class="section"></div> diff --git a/apps/settings/tests/Activity/SecurityFilterTest.php b/apps/settings/tests/Activity/SecurityFilterTest.php new file mode 100644 index 00000000000..f5d25608d66 --- /dev/null +++ b/apps/settings/tests/Activity/SecurityFilterTest.php @@ -0,0 +1,87 @@ +<?php + +/** + * @author Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\Settings\Tests; + +use OCA\Settings\Activity\SecurityFilter; +use OCP\IL10N; +use OCP\IURLGenerator; +use PHPUnit\Framework\MockObject\MockObject; +use Test\TestCase; + +class SecurityFilterTest extends TestCase { + + /** @var IURLGenerator|MockObject */ + private $urlGenerator; + + /** @var IL10N|MockObject */ + private $l10n; + + /** @var SecurityFilter */ + private $filter; + + protected function setUp() { + parent::setUp(); + + $this->urlGenerator = $this->createMock(IURLGenerator::class); + $this->l10n = $this->createMock(IL10N::class); + + $this->filter = new SecurityFilter($this->urlGenerator, $this->l10n); + } + + public function testAllowedApps() { + $this->assertEquals([], $this->filter->allowedApps()); + } + + public function testFilterTypes() { + $this->assertEquals(['security'], $this->filter->filterTypes(['comments', 'security'])); + } + + public function testGetIcon() { + $this->urlGenerator->expects($this->once()) + ->method('imagePath') + ->with('core', 'actions/password.svg') + ->will($this->returnValue('path/to/icon.svg')); + $this->urlGenerator->expects($this->once()) + ->method('getAbsoluteURL') + ->with('path/to/icon.svg') + ->will($this->returnValue('abs/path/to/icon.svg')); + $this->assertEquals('abs/path/to/icon.svg', $this->filter->getIcon()); + } + + public function testGetIdentifier() { + $this->assertEquals('security', $this->filter->getIdentifier()); + } + + public function testGetName() { + $this->l10n->expects($this->once()) + ->method('t') + ->with('Security') + ->will($this->returnValue('translated')); + $this->assertEquals('translated', $this->filter->getName()); + } + + public function testGetPriority() { + $this->assertEquals(30, $this->filter->getPriority()); + } + +} diff --git a/apps/settings/tests/Activity/SecurityProviderTest.php b/apps/settings/tests/Activity/SecurityProviderTest.php new file mode 100644 index 00000000000..143312addc2 --- /dev/null +++ b/apps/settings/tests/Activity/SecurityProviderTest.php @@ -0,0 +1,136 @@ +<?php + +/** + * @author Christoph Wurst <christoph@winzerhof-wurst.at> + * @copyright Copyright (c) 2016 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * Two-factor backup codes + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace OCA\Settings\Tests; + +use InvalidArgumentException; +use OCA\Settings\Activity\SecurityProvider; +use OCP\Activity\IEvent; +use OCP\Activity\IManager; +use OCP\IL10N; +use OCP\IURLGenerator; +use OCP\L10N\IFactory; +use PHPUnit\Framework\MockObject\MockObject; +use Test\TestCase; + +class SecurityProviderTest extends TestCase { + + /** @var IFactory|MockObject */ + private $l10n; + + /** @var IURLGenerator|MockObject */ + private $urlGenerator; + + /** @var IManager|MockObject */ + private $activityManager; + + /** @var SecurityProvider */ + private $provider; + + protected function setUp() { + parent::setUp(); + + $this->l10n = $this->createMock(IFactory::class); + $this->urlGenerator = $this->createMock(IURLGenerator::class); + $this->activityManager = $this->createMock(IManager::class); + + $this->provider = new SecurityProvider($this->l10n, $this->urlGenerator, $this->activityManager); + } + + public function testParseUnrelated() { + $lang = 'ru'; + $event = $this->createMock(IEvent::class); + $event->expects($this->once()) + ->method('getType') + ->willReturn('comments'); + $this->expectException(InvalidArgumentException::class); + + $this->provider->parse($lang, $event); + } + + public function subjectData() { + return [ + ['twofactor_success'], + ['twofactor_failed'], + ]; + } + + /** + * @dataProvider subjectData + */ + public function testParse($subject) { + $lang = 'ru'; + $event = $this->createMock(IEvent::class); + $l = $this->createMock(IL10N::class); + + $event->expects($this->once()) + ->method('getType') + ->willReturn('security'); + $this->l10n->expects($this->once()) + ->method('get') + ->with('settings', $lang) + ->willReturn($l); + $this->urlGenerator->expects($this->once()) + ->method('imagePath') + ->with('core', 'actions/password.svg') + ->willReturn('path/to/image'); + $this->urlGenerator->expects($this->once()) + ->method('getAbsoluteURL') + ->with('path/to/image') + ->willReturn('absolute/path/to/image'); + $event->expects($this->once()) + ->method('setIcon') + ->with('absolute/path/to/image'); + $event->expects($this->once()) + ->method('getSubject') + ->willReturn($subject); + $event->method('getSubjectParameters') + ->willReturn([ + 'provider' => 'myProvider', + ]); + $event->expects($this->once()) + ->method('setParsedSubject'); + + $this->provider->parse($lang, $event); + } + + public function testParseInvalidSubject() { + $lang = 'ru'; + $l = $this->createMock(IL10N::class); + $event = $this->createMock(IEvent::class); + + $event->expects($this->once()) + ->method('getType') + ->willReturn('security'); + $this->l10n->expects($this->once()) + ->method('get') + ->with('settings', $lang) + ->willReturn($l); + $event->expects($this->once()) + ->method('getSubject') + ->willReturn('unrelated'); + + $this->expectException(InvalidArgumentException::class); + $this->provider->parse($lang, $event); + } + +} diff --git a/apps/settings/tests/Activity/SecuritySettingTest.php b/apps/settings/tests/Activity/SecuritySettingTest.php new file mode 100644 index 00000000000..39ca3e2b792 --- /dev/null +++ b/apps/settings/tests/Activity/SecuritySettingTest.php @@ -0,0 +1,73 @@ +<?php + +/** + * @author Christoph Wurst <christoph@winzerhof-wurst.at> + * @copyright Copyright (c) 2016 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * Two-factor backup codes + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace OCA\Settings\Tests; + +use OCA\Settings\Activity\SecuritySetting; +use OCP\IL10N; +use Test\TestCase; + +class SecuritySettingTest extends TestCase { + + private $l10n; + + /** @var SecuritySetting */ + private $setting; + + protected function setUp() { + parent::setUp(); + + $this->l10n = $this->createMock(IL10N::class); + + $this->setting = new SecuritySetting($this->l10n); + } + + public function testCanChangeMail() { + $this->assertFalse($this->setting->canChangeMail()); + } + + public function testCanChangeStream() { + $this->assertFalse($this->setting->canChangeStream()); + } + + public function testGetIdentifier() { + $this->assertEquals('security', $this->setting->getIdentifier()); + } + + public function testGetName() { + $this->l10n->expects($this->once()) + ->method('t') + ->with('Security') + ->will($this->returnValue('Sicherheit')); + $this->assertEquals('Sicherheit', $this->setting->getName()); + } + + public function testGetPriority() { + $this->assertEquals(30, $this->setting->getPriority()); + } + + public function testIsDefaultEnabled() { + $this->assertTrue($this->setting->isDefaultEnabledMail()); + $this->assertTrue($this->setting->isDefaultEnabledStream()); + } + +} diff --git a/apps/settings/tests/AppInfo/ApplicationTest.php b/apps/settings/tests/AppInfo/ApplicationTest.php new file mode 100644 index 00000000000..49ba48f10d2 --- /dev/null +++ b/apps/settings/tests/AppInfo/ApplicationTest.php @@ -0,0 +1,118 @@ +<?php +/** + * @copyright Copyright (c) 2016, Joas Schilling <coding@schilljs.com> + * + * @author Joas Schilling <coding@schilljs.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\Settings\Tests\AppInfo; + + +use OCA\Settings\AppInfo\Application; +use OCA\Settings\Controller\AdminSettingsController; +use OCA\Settings\Controller\AppSettingsController; +use OCA\Settings\Controller\AuthSettingsController; +use OCA\Settings\Controller\CertificateController; +use OCA\Settings\Controller\CheckSetupController; +use OCA\Settings\Controller\LogSettingsController; +use OCA\Settings\Controller\MailSettingsController; +use OCA\Settings\Controller\UsersController; +use OCA\Settings\Middleware\SubadminMiddleware; +use OCP\AppFramework\Controller; +use OCP\AppFramework\IAppContainer; +use OCP\AppFramework\Middleware; +use OCP\IUser; +use OCP\IUserSession; +use Test\TestCase; + +/** + * Class ApplicationTest + * + * @package Tests\Settings + * @group DB + */ +class ApplicationTest extends TestCase { + /** @var Application */ + protected $app; + + /** @var IAppContainer */ + protected $container; + + protected function setUp() { + parent::setUp(); + $this->app = new Application(); + $this->container = $this->app->getContainer(); + } + + public function testContainerAppName() { + $this->app = new Application(); + $this->assertEquals('settings', $this->container->getAppName()); + } + + public function dataContainerQuery() { + return [ + [AdminSettingsController::class, Controller::class], + [AppSettingsController::class, Controller::class], + [AuthSettingsController::class, Controller::class], + // Needs session: [CertificateController::class, Controller::class], + [CheckSetupController::class, Controller::class], + [LogSettingsController::class, Controller::class], + [MailSettingsController::class, Controller::class], + [UsersController::class, Controller::class], + + [SubadminMiddleware::class, Middleware::class], + ]; + } + + /** + * @dataProvider dataContainerQuery + * @param string $service + * @param string $expected + */ + public function testContainerQuery($service, $expected) { + $this->assertTrue($this->container->query($service) instanceof $expected); + } + + public function dataContainerQueryRequiresSession() { + return [ + [CertificateController::class, Controller::class], + ]; + } + + /** + * @dataProvider dataContainerQueryRequiresSession + * @param string $service + * @param string $expected + */ + public function testContainerQueryRequiresSession($service, $expected) { + $user = $this->createMock(IUser::class); + $user->expects($this->once()) + ->method('getUID') + ->willReturn('test'); + + $session = $this->createMock(IUserSession::class); + $session->expects($this->once()) + ->method('getUser') + ->willReturn($user); + + $this->overwriteService('UserSession', $session); + $this->assertTrue($this->container->query($service) instanceof $expected); + $this->restoreService('UserSession'); + } +} diff --git a/apps/settings/tests/Controller/AdminSettingsControllerTest.php b/apps/settings/tests/Controller/AdminSettingsControllerTest.php new file mode 100644 index 00000000000..f1f81c7c75b --- /dev/null +++ b/apps/settings/tests/Controller/AdminSettingsControllerTest.php @@ -0,0 +1,128 @@ +<?php +/** + * @copyright Copyright (c) 2016 Lukas Reschke <lukas@statuscode.ch> + * + * @author Lukas Reschke <lukas@statuscode.ch> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +namespace OCA\Settings\Tests\Controller; + +use OCA\Settings\Personal\ServerDevNotice; +use OCA\Settings\Controller\AdminSettingsController; +use OCP\AppFramework\Http\TemplateResponse; +use OCP\Group\ISubAdmin; +use OCP\IGroupManager; +use OCP\INavigationManager; +use OCP\IRequest; +use OCP\IUser; +use OCP\IUserSession; +use OCP\Settings\IManager; +use PHPUnit\Framework\MockObject\MockObject; +use Test\TestCase; + +/** + * Class AdminSettingsControllerTest + * + * @group DB + * + * @package Tests\Settings\Controller + */ +class AdminSettingsControllerTest extends TestCase { + + /** @var AdminSettingsController */ + private $adminSettingsController; + /** @var IRequest|MockObject */ + private $request; + /** @var INavigationManager|MockObject */ + private $navigationManager; + /** @var IManager|MockObject */ + private $settingsManager; + /** @var IUserSession|MockObject */ + private $userSession; + /** @var IGroupManager|MockObject */ + private $groupManager; + /** @var ISubAdmin|MockObject */ + private $subAdmin; + /** @var string */ + private $adminUid = 'lololo'; + + public function setUp() { + parent::setUp(); + + $this->request = $this->createMock(IRequest::class); + $this->navigationManager = $this->createMock(INavigationManager::class); + $this->settingsManager = $this->createMock(IManager::class); + $this->userSession = $this->createMock(IUserSession::class); + $this->groupManager = $this->createMock(IGroupManager::class); + $this->subAdmin = $this->createMock(ISubAdmin::class); + + $this->adminSettingsController = new AdminSettingsController( + 'settings', + $this->request, + $this->navigationManager, + $this->settingsManager, + $this->userSession, + $this->groupManager, + $this->subAdmin + ); + + $user = \OC::$server->getUserManager()->createUser($this->adminUid, 'olo'); + \OC_User::setUserId($user->getUID()); + \OC::$server->getGroupManager()->createGroup('admin')->addUser($user); + } + + public function tearDown() { + \OC::$server->getUserManager()->get($this->adminUid)->delete(); + + parent::tearDown(); + } + + public function testIndex() { + $user = $this->createMock(IUser::class); + $this->userSession + ->method('getUser') + ->willReturn($user); + $user->method('getUID')->willReturn('user123'); + $this->groupManager + ->method('isAdmin') + ->with('user123') + ->willReturn(true); + $this->subAdmin + ->method('isSubAdmin') + ->with($user) + ->willReturn(false); + $this->settingsManager + ->expects($this->once()) + ->method('getAdminSections') + ->willReturn([]); + $this->settingsManager + ->expects($this->once()) + ->method('getPersonalSections') + ->willReturn([]); + $this->settingsManager + ->expects($this->once()) + ->method('getAdminSettings') + ->with('test') + ->willReturn([5 => new ServerDevNotice()]); + + $idx = $this->adminSettingsController->index('test'); + + $expected = new TemplateResponse('settings', 'settings/frame', ['forms' => ['personal' => [], 'admin' => []], 'content' => '']); + $this->assertEquals($expected, $idx); + } +} diff --git a/apps/settings/tests/Controller/AppSettingsControllerTest.php b/apps/settings/tests/Controller/AppSettingsControllerTest.php new file mode 100644 index 00000000000..449f158ec4a --- /dev/null +++ b/apps/settings/tests/Controller/AppSettingsControllerTest.php @@ -0,0 +1,247 @@ +<?php +/** + * @author Lukas Reschke <lukas@owncloud.com> + * + * @copyright Copyright (c) 2016, Lukas Reschke <lukas@statuscode.ch> + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace OCA\Settings\Tests\Controller; + +use OC\App\AppStore\Bundles\BundleFetcher; +use OC\App\AppStore\Fetcher\AppFetcher; +use OC\App\AppStore\Fetcher\CategoryFetcher; +use OC\Installer; +use OCA\Settings\Controller\AppSettingsController; +use OCP\AppFramework\Http\ContentSecurityPolicy; +use OCP\AppFramework\Http\JSONResponse; +use OCP\AppFramework\Http\TemplateResponse; +use OCP\ILogger; +use OCP\IURLGenerator; +use OCP\L10N\IFactory; +use PHPUnit\Framework\MockObject\MockObject; +use Test\TestCase; +use OCP\IRequest; +use OCP\IL10N; +use OCP\IConfig; +use OCP\INavigationManager; +use OCP\App\IAppManager; + +/** + * Class AppSettingsControllerTest + * + * @package Tests\Settings\Controller + * + * @group DB + */ +class AppSettingsControllerTest extends TestCase { + /** @var AppSettingsController */ + private $appSettingsController; + /** @var IRequest|MockObject */ + private $request; + /** @var IL10N|MockObject */ + private $l10n; + /** @var IConfig|MockObject */ + private $config; + /** @var INavigationManager|MockObject */ + private $navigationManager; + /** @var IAppManager|MockObject */ + private $appManager; + /** @var CategoryFetcher|MockObject */ + private $categoryFetcher; + /** @var AppFetcher|MockObject */ + private $appFetcher; + /** @var IFactory|MockObject */ + private $l10nFactory; + /** @var BundleFetcher|MockObject */ + private $bundleFetcher; + /** @var Installer|MockObject */ + private $installer; + /** @var IURLGenerator|MockObject */ + private $urlGenerator; + /** @var ILogger|MockObject */ + private $logger; + + public function setUp() { + parent::setUp(); + + $this->request = $this->createMock(IRequest::class); + $this->l10n = $this->createMock(IL10N::class); + $this->l10n->expects($this->any()) + ->method('t') + ->will($this->returnArgument(0)); + $this->config = $this->createMock(IConfig::class); + $this->navigationManager = $this->createMock(INavigationManager::class); + $this->appManager = $this->createMock(IAppManager::class); + $this->categoryFetcher = $this->createMock(CategoryFetcher::class); + $this->appFetcher = $this->createMock(AppFetcher::class); + $this->l10nFactory = $this->createMock(IFactory::class); + $this->bundleFetcher = $this->createMock(BundleFetcher::class); + $this->installer = $this->createMock(Installer::class); + $this->urlGenerator = $this->createMock(IURLGenerator::class); + $this->logger = $this->createMock(ILogger::class); + + $this->appSettingsController = new AppSettingsController( + 'settings', + $this->request, + $this->l10n, + $this->config, + $this->navigationManager, + $this->appManager, + $this->categoryFetcher, + $this->appFetcher, + $this->l10nFactory, + $this->bundleFetcher, + $this->installer, + $this->urlGenerator, + $this->logger + ); + } + + public function testListCategories() { + $this->installer->expects($this->any()) + ->method('isUpdateAvailable') + ->willReturn(false); + $expected = new JSONResponse([ + [ + 'id' => 'auth', + 'ident' => 'auth', + 'displayName' => 'Authentication & authorization', + ], + [ + 'id' => 'customization', + 'ident' => 'customization', + 'displayName' => 'Customization', + ], + [ + 'id' => 'files', + 'ident' => 'files', + 'displayName' => 'Files', + ], + [ + 'id' => 'integration', + 'ident' => 'integration', + 'displayName' => 'Integration', + ], + [ + 'id' => 'monitoring', + 'ident' => 'monitoring', + 'displayName' => 'Monitoring', + ], + [ + 'id' => 'multimedia', + 'ident' => 'multimedia', + 'displayName' => 'Multimedia', + ], + [ + 'id' => 'office', + 'ident' => 'office', + 'displayName' => 'Office & text', + ], + [ + 'id' => 'organization', + 'ident' => 'organization', + 'displayName' => 'Organization', + ], + [ + 'id' => 'social', + 'ident' => 'social', + 'displayName' => 'Social & communication', + ], + [ + 'id' => 'tools', + 'ident' => 'tools', + 'displayName' => 'Tools', + ], + ]); + + $this->categoryFetcher + ->expects($this->once()) + ->method('get') + ->willReturn(json_decode('[{"id":"auth","translations":{"cs":{"name":"Autentizace & autorizace","description":"Aplikace poskytující služby dodatečného ověření nebo přihlášení"},"hu":{"name":"Azonosítás és hitelesítés","description":"Apps that provide additional authentication or authorization services"},"de":{"name":"Authentifizierung & Authorisierung","description":"Apps die zusätzliche Autentifizierungs- oder Autorisierungsdienste bereitstellen"},"nl":{"name":"Authenticatie & authorisatie","description":"Apps die aanvullende authenticatie- en autorisatiediensten bieden"},"nb":{"name":"Pålogging og tilgangsstyring","description":"Apper for å tilby ekstra pålogging eller tilgangsstyring"},"it":{"name":"Autenticazione e autorizzazione","description":"Apps that provide additional authentication or authorization services"},"fr":{"name":"Authentification et autorisations","description":"Applications qui fournissent des services d\'authentification ou d\'autorisations additionnels."},"ru":{"name":"Аутентификация и авторизация","description":"Apps that provide additional authentication or authorization services"},"en":{"name":"Authentication & authorization","description":"Apps that provide additional authentication or authorization services"}}},{"id":"customization","translations":{"cs":{"name":"Přizpůsobení","description":"Motivy a aplikace měnící rozvržení a uživatelské rozhraní"},"it":{"name":"Personalizzazione","description":"Applicazioni di temi, modifiche della disposizione e UX"},"de":{"name":"Anpassung","description":"Apps zur Änderung von Themen, Layout und Benutzererfahrung"},"hu":{"name":"Személyre szabás","description":"Témák, elrendezések felhasználói felület módosító alkalmazások"},"nl":{"name":"Maatwerk","description":"Thema\'s, layout en UX aanpassingsapps"},"nb":{"name":"Tilpasning","description":"Apper for å endre Tema, utseende og brukeropplevelse"},"fr":{"name":"Personalisation","description":"Thèmes, apparence et applications modifiant l\'expérience utilisateur"},"ru":{"name":"Настройка","description":"Themes, layout and UX change apps"},"en":{"name":"Customization","description":"Themes, layout and UX change apps"}}},{"id":"files","translations":{"cs":{"name":"Soubory","description":"Aplikace rozšiřující správu souborů nebo aplikaci Soubory"},"it":{"name":"File","description":"Applicazioni di gestione dei file ed estensione dell\'applicazione FIle"},"de":{"name":"Dateien","description":"Dateimanagement sowie Erweiterungs-Apps für die Dateien-App"},"hu":{"name":"Fájlok","description":"Fájl kezelő és kiegészítő alkalmazások"},"nl":{"name":"Bestanden","description":"Bestandebeheer en uitbreidingen van bestand apps"},"nb":{"name":"Filer","description":"Apper for filhåndtering og filer"},"fr":{"name":"Fichiers","description":"Applications de gestion de fichiers et extensions à l\'application Fichiers"},"ru":{"name":"Файлы","description":"Расширение: файлы и управление файлами"},"en":{"name":"Files","description":"File management and Files app extension apps"}}},{"id":"integration","translations":{"it":{"name":"Integrazione","description":"Applicazioni che collegano Nextcloud con altri servizi e piattaforme"},"hu":{"name":"Integráció","description":"Apps that connect Nextcloud with other services and platforms"},"nl":{"name":"Integratie","description":"Apps die Nextcloud verbinden met andere services en platformen"},"nb":{"name":"Integrasjon","description":"Apper som kobler Nextcloud med andre tjenester og plattformer"},"de":{"name":"Integration","description":"Apps die Nextcloud mit anderen Diensten und Plattformen verbinden"},"cs":{"name":"Propojení","description":"Aplikace propojující NextCloud s dalšími službami a platformami"},"fr":{"name":"Intégration","description":"Applications qui connectent Nextcloud avec d\'autres services et plateformes"},"ru":{"name":"Интеграция","description":"Приложения, соединяющие Nextcloud с другими службами и платформами"},"en":{"name":"Integration","description":"Apps that connect Nextcloud with other services and platforms"}}},{"id":"monitoring","translations":{"nb":{"name":"Overvåking","description":"Apper for statistikk, systemdiagnose og aktivitet"},"it":{"name":"Monitoraggio","description":"Applicazioni di statistiche, diagnostica di sistema e attività"},"de":{"name":"Überwachung","description":"Datenstatistiken-, Systemdiagnose- und Aktivitäten-Apps"},"hu":{"name":"Megfigyelés","description":"Data statistics, system diagnostics and activity apps"},"nl":{"name":"Monitoren","description":"Gegevensstatistiek, systeem diagnose en activiteit apps"},"cs":{"name":"Kontrola","description":"Datové statistiky, diagnózy systému a aktivity aplikací"},"fr":{"name":"Surveillance","description":"Applications de statistiques sur les données, de diagnostics systèmes et d\'activité."},"ru":{"name":"Мониторинг","description":"Статистика данных, диагностика системы и активность приложений"},"en":{"name":"Monitoring","description":"Data statistics, system diagnostics and activity apps"}}},{"id":"multimedia","translations":{"nb":{"name":"Multimedia","description":"Apper for lyd, film og bilde"},"it":{"name":"Multimedia","description":"Applicazioni per audio, video e immagini"},"de":{"name":"Multimedia","description":"Audio-, Video- und Bilder-Apps"},"hu":{"name":"Multimédia","description":"Hang, videó és kép alkalmazások"},"nl":{"name":"Multimedia","description":"Audio, video en afbeelding apps"},"en":{"name":"Multimedia","description":"Audio, video and picture apps"},"cs":{"name":"Multimédia","description":"Aplikace audia, videa a obrázků"},"fr":{"name":"Multimédia","description":"Applications audio, vidéo et image"},"ru":{"name":"Мультимедиа","description":"Приложение аудио, видео и изображения"}}},{"id":"office","translations":{"nb":{"name":"Kontorstøtte og tekst","description":"Apper for Kontorstøtte og tekstbehandling"},"it":{"name":"Ufficio e testo","description":"Applicazione per ufficio ed elaborazione di testi"},"de":{"name":"Büro & Text","description":"Büro- und Textverarbeitungs-Apps"},"hu":{"name":"Iroda és szöveg","description":"Irodai és szöveg feldolgozó alkalmazások"},"nl":{"name":"Office & tekst","description":"Office en tekstverwerkingsapps"},"cs":{"name":"Kancelář a text","description":"Aplikace pro kancelář a zpracování textu"},"fr":{"name":"Bureautique & texte","description":"Applications de bureautique et de traitement de texte"},"en":{"name":"Office & text","description":"Office and text processing apps"}}},{"id":"organization","translations":{"nb":{"name":"Organisering","description":"Apper for tidsstyring, oppgaveliste og kalender"},"it":{"name":"Organizzazione","description":"Applicazioni di gestione del tempo, elenco delle cose da fare e calendario"},"hu":{"name":"Szervezet","description":"Időbeosztás, teendő lista és naptár alkalmazások"},"nl":{"name":"Organisatie","description":"Tijdmanagement, takenlijsten en agenda apps"},"cs":{"name":"Organizace","description":"Aplikace pro správu času, plánování a kalendáře"},"de":{"name":"Organisation","description":"Time management, Todo list and calendar apps"},"fr":{"name":"Organisation","description":"Applications de gestion du temps, de listes de tâches et d\'agendas"},"ru":{"name":"Организация","description":"Приложения по управлению временем, список задач и календарь"},"en":{"name":"Organization","description":"Time management, Todo list and calendar apps"}}},{"id":"social","translations":{"nb":{"name":"Sosialt og kommunikasjon","description":"Apper for meldinger, kontakthåndtering og sosiale medier"},"it":{"name":"Sociale e comunicazione","description":"Applicazioni di messaggistica, gestione dei contatti e reti sociali"},"de":{"name":"Kommunikation","description":"Nachrichten-, Kontaktverwaltungs- und Social-Media-Apps"},"hu":{"name":"Közösségi és kommunikáció","description":"Üzenetküldő, kapcsolat kezelő és közösségi média alkalmazások"},"nl":{"name":"Sociaal & communicatie","description":"Messaging, contactbeheer en social media apps"},"cs":{"name":"Sociální sítě a komunikace","description":"Aplikace pro zasílání zpráv, správu kontaktů a sociální sítě"},"fr":{"name":"Social & communication","description":"Applications de messagerie, de gestion de contacts et de réseaux sociaux"},"ru":{"name":"Социальное и связь","description":"Общение, управление контактами и социальное медиа-приложение"},"en":{"name":"Social & communication","description":"Messaging, contact management and social media apps"}}},{"id":"tools","translations":{"nb":{"name":"Verktøy","description":"Alt annet"},"it":{"name":"Strumenti","description":"Tutto il resto"},"hu":{"name":"Eszközök","description":"Minden más"},"nl":{"name":"Tools","description":"De rest"},"de":{"name":"Werkzeuge","description":"Alles Andere"},"en":{"name":"Tools","description":"Everything else"},"cs":{"name":"Nástroje","description":"Vše ostatní"},"fr":{"name":"Outils","description":"Tout le reste"},"ru":{"name":"Приложения","description":"Что-то еще"}}}]', true)); + + $this->assertEquals($expected, $this->appSettingsController->listCategories()); + } + + public function testViewApps() { + $this->bundleFetcher->expects($this->once())->method('getBundles')->willReturn([]); + $this->installer->expects($this->any()) + ->method('isUpdateAvailable') + ->willReturn(false); + $this->config + ->expects($this->once()) + ->method('getSystemValue') + ->with('appstoreenabled', true) + ->will($this->returnValue(true)); + $this->navigationManager + ->expects($this->once()) + ->method('setActiveEntry') + ->with('core_apps'); + + $policy = new ContentSecurityPolicy(); + $policy->addAllowedImageDomain('https://usercontent.apps.nextcloud.com'); + + $expected = new TemplateResponse('settings', + 'settings-vue', + [ + 'serverData' => [ + 'updateCount' => 0, + 'appstoreEnabled' => true, + 'bundles' => [], + 'developerDocumentation' => '' + ] + ], + 'user'); + $expected->setContentSecurityPolicy($policy); + + $this->assertEquals($expected, $this->appSettingsController->viewApps()); + } + + public function testViewAppsAppstoreNotEnabled() { + $this->installer->expects($this->any()) + ->method('isUpdateAvailable') + ->willReturn(false); + $this->bundleFetcher->expects($this->once())->method('getBundles')->willReturn([]); + $this->config + ->expects($this->once()) + ->method('getSystemValue') + ->with('appstoreenabled', true) + ->will($this->returnValue(false)); + $this->navigationManager + ->expects($this->once()) + ->method('setActiveEntry') + ->with('core_apps'); + + $policy = new ContentSecurityPolicy(); + $policy->addAllowedImageDomain('https://usercontent.apps.nextcloud.com'); + + $expected = new TemplateResponse('settings', + 'settings-vue', + [ + 'serverData' => [ + 'updateCount' => 0, + 'appstoreEnabled' => false, + 'bundles' => [], + 'developerDocumentation' => '' + ] + ], + 'user'); + $expected->setContentSecurityPolicy($policy); + + $this->assertEquals($expected, $this->appSettingsController->viewApps()); + } +} diff --git a/apps/settings/tests/Controller/AuthSettingsControllerTest.php b/apps/settings/tests/Controller/AuthSettingsControllerTest.php new file mode 100644 index 00000000000..88913b1f03f --- /dev/null +++ b/apps/settings/tests/Controller/AuthSettingsControllerTest.php @@ -0,0 +1,400 @@ +<?php +/** + * @author Christoph Wurst <christoph@owncloud.com> + * + * @copyright Copyright (c) 2016, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace Test\Settings\Controller; + +use OC\AppFramework\Http; +use OC\Authentication\Exceptions\InvalidTokenException; +use OC\Authentication\Token\DefaultToken; +use OC\Authentication\Token\IProvider; +use OC\Authentication\Token\IToken; +use OC\Authentication\Token\RemoteWipe; +use OCA\Settings\Controller\AuthSettingsController; +use OCP\Activity\IEvent; +use OCP\Activity\IManager; +use OCP\AppFramework\Http\JSONResponse; +use OCP\ILogger; +use OCP\IRequest; +use OCP\ISession; +use OCP\IUserSession; +use OCP\Security\ISecureRandom; +use OCP\Session\Exceptions\SessionNotAvailableException; +use PHPUnit\Framework\MockObject\MockObject; +use Test\TestCase; + +class AuthSettingsControllerTest extends TestCase { + + /** @var AuthSettingsController */ + private $controller; + /** @var IRequest|MockObject */ + private $request; + /** @var IProvider|MockObject */ + private $tokenProvider; + /** @var ISession|MockObject */ + private $session; + /**@var IUserSession|MockObject */ + private $userSession; + /** @var ISecureRandom|MockObject */ + private $secureRandom; + /** @var IManager|MockObject */ + private $activityManager; + /** @var RemoteWipe|MockObject */ + private $remoteWipe; + private $uid = 'jane'; + + protected function setUp() { + parent::setUp(); + + $this->request = $this->createMock(IRequest::class); + $this->tokenProvider = $this->createMock(IProvider::class); + $this->session = $this->createMock(ISession::class); + $this->userSession = $this->createMock(IUserSession::class); + $this->secureRandom = $this->createMock(ISecureRandom::class); + $this->activityManager = $this->createMock(IManager::class); + $this->remoteWipe = $this->createMock(RemoteWipe::class); + /** @var ILogger|MockObject $logger */ + $logger = $this->createMock(ILogger::class); + + $this->controller = new AuthSettingsController( + 'core', + $this->request, + $this->tokenProvider, + $this->session, + $this->secureRandom, + $this->uid, + $this->userSession, + $this->activityManager, + $this->remoteWipe, + $logger + ); + } + + public function testCreate() { + $name = 'Nexus 4'; + $sessionToken = $this->createMock(IToken::class); + $deviceToken = $this->createMock(IToken::class); + $password = '123456'; + + $this->session->expects($this->once()) + ->method('getId') + ->willReturn('sessionid'); + $this->tokenProvider->expects($this->once()) + ->method('getToken') + ->with('sessionid') + ->willReturn($sessionToken); + $this->tokenProvider->expects($this->once()) + ->method('getPassword') + ->with($sessionToken, 'sessionid') + ->willReturn($password); + $sessionToken->expects($this->once()) + ->method('getLoginName') + ->willReturn('User13'); + + $this->secureRandom->expects($this->exactly(5)) + ->method('generate') + ->with(5, ISecureRandom::CHAR_HUMAN_READABLE) + ->willReturn('XXXXX'); + $newToken = 'XXXXX-XXXXX-XXXXX-XXXXX-XXXXX'; + + $this->tokenProvider->expects($this->once()) + ->method('generateToken') + ->with($newToken, $this->uid, 'User13', $password, $name, IToken::PERMANENT_TOKEN) + ->willReturn($deviceToken); + + $deviceToken->expects($this->once()) + ->method('jsonSerialize') + ->willReturn(['dummy' => 'dummy', 'canDelete' => true]); + + $this->mockActivityManager(); + + $expected = [ + 'token' => $newToken, + 'deviceToken' => ['dummy' => 'dummy', 'canDelete' => true, 'canRename' => true], + 'loginName' => 'User13', + ]; + + $response = $this->controller->create($name); + $this->assertInstanceOf(JSONResponse::class, $response); + $this->assertEquals($expected, $response->getData()); + } + + public function testCreateSessionNotAvailable() { + $name = 'personal phone'; + + $this->session->expects($this->once()) + ->method('getId') + ->will($this->throwException(new SessionNotAvailableException())); + + $expected = new JSONResponse(); + $expected->setStatus(Http::STATUS_SERVICE_UNAVAILABLE); + + $this->assertEquals($expected, $this->controller->create($name)); + } + + public function testCreateInvalidToken() { + $name = 'Company IPhone'; + + $this->session->expects($this->once()) + ->method('getId') + ->willReturn('sessionid'); + $this->tokenProvider->expects($this->once()) + ->method('getToken') + ->with('sessionid') + ->will($this->throwException(new InvalidTokenException())); + + $expected = new JSONResponse(); + $expected->setStatus(Http::STATUS_SERVICE_UNAVAILABLE); + + $this->assertEquals($expected, $this->controller->create($name)); + } + + public function testDestroy() { + $tokenId = 124; + $token = $this->createMock(DefaultToken::class); + + $this->mockGetTokenById($tokenId, $token); + $this->mockActivityManager(); + + $token->expects($this->exactly(2)) + ->method('getId') + ->willReturn($tokenId); + + $token->expects($this->once()) + ->method('getUID') + ->willReturn('jane'); + + $this->tokenProvider->expects($this->once()) + ->method('invalidateTokenById') + ->with($this->uid, $tokenId); + + $this->assertEquals([], $this->controller->destroy($tokenId)); + } + + public function testDestroyWrongUser() { + $tokenId = 124; + $token = $this->createMock(DefaultToken::class); + + $this->mockGetTokenById($tokenId, $token); + + $token->expects($this->once()) + ->method('getUID') + ->willReturn('foobar'); + + $response = $this->controller->destroy($tokenId); + $this->assertSame([], $response->getData()); + $this->assertSame(\OCP\AppFramework\Http::STATUS_NOT_FOUND, $response->getStatus()); + } + + public function dataRenameToken(): array { + return [ + 'App password => Other token name' => ['App password', 'Other token name'], + 'Other token name => App password' => ['Other token name', 'App password'], + ]; + } + + /** + * @dataProvider dataRenameToken + * + * @param string $name + * @param string $newName + */ + public function testUpdateRename(string $name, string $newName): void { + $tokenId = 42; + $token = $this->createMock(DefaultToken::class); + + $this->mockGetTokenById($tokenId, $token); + $this->mockActivityManager(); + + $token->expects($this->once()) + ->method('getUID') + ->willReturn('jane'); + + $token->expects($this->once()) + ->method('getName') + ->willReturn($name); + + $token->expects($this->once()) + ->method('getScopeAsArray') + ->willReturn(['filesystem' => true]); + + $token->expects($this->once()) + ->method('setName') + ->with($this->equalTo($newName)); + + $this->tokenProvider->expects($this->once()) + ->method('updateToken') + ->with($this->equalTo($token)); + + $this->assertSame([], $this->controller->update($tokenId, ['filesystem' => true], $newName)); + } + + public function dataUpdateFilesystemScope(): array { + return [ + 'Grant filesystem access' => [false, true], + 'Revoke filesystem access' => [true, false], + ]; + } + + /** + * @dataProvider dataUpdateFilesystemScope + * + * @param bool $filesystem + * @param bool $newFilesystem + */ + public function testUpdateFilesystemScope(bool $filesystem, bool $newFilesystem): void { + $tokenId = 42; + $token = $this->createMock(DefaultToken::class); + + $this->mockGetTokenById($tokenId, $token); + $this->mockActivityManager(); + + $token->expects($this->once()) + ->method('getUID') + ->willReturn('jane'); + + $token->expects($this->once()) + ->method('getName') + ->willReturn('App password'); + + $token->expects($this->once()) + ->method('getScopeAsArray') + ->willReturn(['filesystem' => $filesystem]); + + $token->expects($this->once()) + ->method('setScope') + ->with($this->equalTo(['filesystem' => $newFilesystem])); + + $this->tokenProvider->expects($this->once()) + ->method('updateToken') + ->with($this->equalTo($token)); + + $this->assertSame([], $this->controller->update($tokenId, ['filesystem' => $newFilesystem], 'App password')); + } + + public function testUpdateNoChange(): void { + $tokenId = 42; + $token = $this->createMock(DefaultToken::class); + + $this->mockGetTokenById($tokenId, $token); + + $token->expects($this->once()) + ->method('getUID') + ->willReturn('jane'); + + $token->expects($this->once()) + ->method('getName') + ->willReturn('App password'); + + $token->expects($this->once()) + ->method('getScopeAsArray') + ->willReturn(['filesystem' => true]); + + $token->expects($this->never()) + ->method('setName'); + + $token->expects($this->never()) + ->method('setScope'); + + $this->tokenProvider->expects($this->once()) + ->method('updateToken') + ->with($this->equalTo($token)); + + $this->assertSame([], $this->controller->update($tokenId, ['filesystem' => true], 'App password')); + } + + public function testUpdateTokenWrongUser() { + $tokenId = 42; + $token = $this->createMock(DefaultToken::class); + + $this->mockGetTokenById($tokenId, $token); + + $token->expects($this->once()) + ->method('getUID') + ->willReturn('foobar'); + + $token->expects($this->never()) + ->method('setScope'); + $this->tokenProvider->expects($this->never()) + ->method('updateToken'); + + $response = $this->controller->update($tokenId, ['filesystem' => true], 'App password'); + $this->assertSame([], $response->getData()); + $this->assertSame(\OCP\AppFramework\Http::STATUS_NOT_FOUND, $response->getStatus()); + } + + public function testUpdateTokenNonExisting() { + $this->tokenProvider->expects($this->once()) + ->method('getTokenById') + ->with($this->equalTo(42)) + ->willThrowException(new InvalidTokenException('Token does not exist')); + + $this->tokenProvider->expects($this->never()) + ->method('updateToken'); + + $response = $this->controller->update(42, ['filesystem' => true], 'App password'); + $this->assertSame([], $response->getData()); + $this->assertSame(\OCP\AppFramework\Http::STATUS_NOT_FOUND, $response->getStatus()); + } + + private function mockActivityManager(): void { + $this->activityManager->expects($this->once()) + ->method('generateEvent') + ->willReturn($this->createMock(IEvent::class)); + $this->activityManager->expects($this->once()) + ->method('publish'); + } + + /** + * @param int $tokenId + * @param $token + */ + private function mockGetTokenById(int $tokenId, $token): void { + $this->tokenProvider->expects($this->once()) + ->method('getTokenById') + ->with($this->equalTo($tokenId)) + ->willReturn($token); + } + + public function testRemoteWipeNotSuccessful(): void { + $this->remoteWipe->expects($this->once()) + ->method('markTokenForWipe') + ->with(123) + ->willReturn(false); + + $response = $this->controller->wipe(123); + + $expected = new JSONResponse([], Http::STATUS_BAD_REQUEST); + $this->assertEquals($expected, $response); + } + + public function testRemoteWipeSuccessful(): void { + $this->remoteWipe->expects($this->once()) + ->method('markTokenForWipe') + ->with(123) + ->willReturn(true); + + $response = $this->controller->wipe(123); + + $expected = new JSONResponse([]); + $this->assertEquals($expected, $response); + } + +} diff --git a/apps/settings/tests/Controller/CertificateControllerTest.php b/apps/settings/tests/Controller/CertificateControllerTest.php new file mode 100644 index 00000000000..a36cc201779 --- /dev/null +++ b/apps/settings/tests/Controller/CertificateControllerTest.php @@ -0,0 +1,190 @@ +<?php +/** + * @author Lukas Reschke <lukas@owncloud.com> + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace OCA\Settings\Tests\Controller; + +use OCA\Settings\Controller\CertificateController; +use OCP\App\IAppManager; +use OCP\AppFramework\Http; +use OCP\AppFramework\Http\DataResponse; +use OCP\IRequest; +use OCP\IL10N; +use OCP\ICertificateManager; + +/** + * Class CertificateControllerTest + * + * @package Tests\Settings\Controller + */ +class CertificateControllerTest extends \Test\TestCase { + /** @var CertificateController */ + private $certificateController; + /** @var IRequest */ + private $request; + /** @var ICertificateManager */ + private $certificateManager; + /** @var IL10N */ + private $l10n; + /** @var IAppManager */ + private $appManager; + /** @var ICertificateManager */ + private $systemCertificateManager; + + public function setUp() { + parent::setUp(); + + $this->request = $this->getMockBuilder(IRequest::class)->getMock(); + $this->certificateManager = $this->getMockBuilder(ICertificateManager::class)->getMock(); + $this->systemCertificateManager = $this->getMockBuilder(ICertificateManager::class)->getMock(); + $this->l10n = $this->getMockBuilder(IL10N::class)->getMock(); + $this->appManager = $this->getMockBuilder(IAppManager::class)->getMock(); + + $this->certificateController = $this->getMockBuilder(CertificateController::class) + ->setConstructorArgs( + [ + 'settings', + $this->request, + $this->certificateManager, + $this->systemCertificateManager, + $this->l10n, + $this->appManager + ] + )->setMethods(['isCertificateImportAllowed'])->getMock(); + + $this->certificateController->expects($this->any()) + ->method('isCertificateImportAllowed')->willReturn(true); + } + + public function testAddPersonalRootCertificateWithEmptyFile() { + $this->request + ->expects($this->once()) + ->method('getUploadedFile') + ->with('rootcert_import') + ->will($this->returnValue(null)); + + $expected = new DataResponse(['message' => 'No file uploaded'], Http::STATUS_UNPROCESSABLE_ENTITY); + $this->assertEquals($expected, $this->certificateController->addPersonalRootCertificate()); + } + + public function testAddPersonalRootCertificateValidCertificate() { + $uploadedFile = [ + 'tmp_name' => __DIR__ . '/../../../../tests/data/certificates/goodCertificate.crt', + 'name' => 'goodCertificate.crt', + ]; + + $certificate = $this->getMockBuilder('\OCP\ICertificate')->getMock(); + $certificate + ->expects($this->once()) + ->method('getName') + ->will($this->returnValue('Name')); + $certificate + ->expects($this->once()) + ->method('getCommonName') + ->will($this->returnValue('CommonName')); + $certificate + ->expects($this->once()) + ->method('getOrganization') + ->will($this->returnValue('Organization')); + $certificate + ->expects($this->exactly(2)) + ->method('getIssueDate') + ->will($this->returnValue(new \DateTime('@1429099555'))); + $certificate + ->expects($this->exactly(2)) + ->method('getExpireDate') + ->will($this->returnValue(new \DateTime('@1529099555'))); + $certificate + ->expects($this->once()) + ->method('getIssuerName') + ->will($this->returnValue('Issuer')); + $certificate + ->expects($this->once()) + ->method('getIssuerOrganization') + ->will($this->returnValue('IssuerOrganization')); + + $this->request + ->expects($this->once()) + ->method('getUploadedFile') + ->with('rootcert_import') + ->will($this->returnValue($uploadedFile)); + $this->certificateManager + ->expects($this->once()) + ->method('addCertificate') + ->with(file_get_contents($uploadedFile['tmp_name'], 'goodCertificate.crt')) + ->will($this->returnValue($certificate)); + + $this->l10n + ->expects($this->at(0)) + ->method('l') + ->with('date', new \DateTime('@1429099555')) + ->will($this->returnValue('Valid From as String')); + $this->l10n + ->expects($this->at(1)) + ->method('l') + ->with('date', new \DateTime('@1529099555')) + ->will($this->returnValue('Valid Till as String')); + + + $expected = new DataResponse([ + 'name' => 'Name', + 'commonName' => 'CommonName', + 'organization' => 'Organization', + 'validFrom' => 1429099555, + 'validTill' => 1529099555, + 'validFromString' => 'Valid From as String', + 'validTillString' => 'Valid Till as String', + 'issuer' => 'Issuer', + 'issuerOrganization' => 'IssuerOrganization', + ]); + $this->assertEquals($expected, $this->certificateController->addPersonalRootCertificate()); + } + + public function testAddPersonalRootCertificateInvalidCertificate() { + $uploadedFile = [ + 'tmp_name' => __DIR__ . '/../../../../tests/data/certificates/badCertificate.crt', + 'name' => 'badCertificate.crt', + ]; + + $this->request + ->expects($this->once()) + ->method('getUploadedFile') + ->with('rootcert_import') + ->will($this->returnValue($uploadedFile)); + $this->certificateManager + ->expects($this->once()) + ->method('addCertificate') + ->with(file_get_contents($uploadedFile['tmp_name'], 'badCertificate.crt')) + ->will($this->throwException(new \Exception())); + + $expected = new DataResponse(['An error occurred.'], Http::STATUS_UNPROCESSABLE_ENTITY); + $this->assertEquals($expected, $this->certificateController->addPersonalRootCertificate()); + } + + public function testRemoveCertificate() { + $this->certificateManager + ->expects($this->once()) + ->method('removeCertificate') + ->with('CertificateToRemove'); + + $this->assertEquals(new DataResponse(), $this->certificateController->removePersonalRootCertificate('CertificateToRemove')); + } + +} diff --git a/apps/settings/tests/Controller/CheckSetupControllerTest.php b/apps/settings/tests/Controller/CheckSetupControllerTest.php new file mode 100644 index 00000000000..23e282b6eb4 --- /dev/null +++ b/apps/settings/tests/Controller/CheckSetupControllerTest.php @@ -0,0 +1,1449 @@ +<?php +/** + * @author Lukas Reschke <lukas@owncloud.com> + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace OCA\Settings\Tests\Controller; + +use OC; +use OC\DB\Connection; +use OC\MemoryInfo; +use OC\Security\SecureRandom; +use OCA\Settings\Controller\CheckSetupController; +use OCP\AppFramework\Http; +use OCP\AppFramework\Http\DataDisplayResponse; +use OCP\AppFramework\Http\DataResponse; +use OCP\AppFramework\Http\RedirectResponse; +use OCP\Http\Client\IClientService; +use OCP\IConfig; +use OCP\IDateTimeFormatter; +use OCP\IL10N; +use OCP\ILogger; +use OCP\IRequest; +use OCP\IURLGenerator; +use OCP\Lock\ILockingProvider; +use PHPUnit\Framework\MockObject\MockObject; +use Psr\Http\Message\ResponseInterface; +use Symfony\Component\EventDispatcher\EventDispatcherInterface; +use Test\TestCase; +use OC\IntegrityCheck\Checker; + +/** + * Class CheckSetupControllerTest + * + * @backupStaticAttributes + * @package Tests\Settings\Controller + */ +class CheckSetupControllerTest extends TestCase { + /** @var CheckSetupController | \PHPUnit_Framework_MockObject_MockObject */ + private $checkSetupController; + /** @var IRequest | \PHPUnit_Framework_MockObject_MockObject */ + private $request; + /** @var IConfig | \PHPUnit_Framework_MockObject_MockObject */ + private $config; + /** @var IClientService | \PHPUnit_Framework_MockObject_MockObject*/ + private $clientService; + /** @var IURLGenerator | \PHPUnit_Framework_MockObject_MockObject */ + private $urlGenerator; + /** @var IL10N | \PHPUnit_Framework_MockObject_MockObject */ + private $l10n; + /** @var ILogger */ + private $logger; + /** @var Checker|\PHPUnit_Framework_MockObject_MockObject */ + private $checker; + /** @var EventDispatcherInterface|\PHPUnit_Framework_MockObject_MockObject */ + private $dispatcher; + /** @var Connection|\PHPUnit_Framework_MockObject_MockObject */ + private $db; + /** @var ILockingProvider|\PHPUnit_Framework_MockObject_MockObject */ + private $lockingProvider; + /** @var IDateTimeFormatter|\PHPUnit_Framework_MockObject_MockObject */ + private $dateTimeFormatter; + /** @var MemoryInfo|MockObject */ + private $memoryInfo; + /** @var SecureRandom|\PHPUnit_Framework_MockObject_MockObject */ + private $secureRandom; + + /** + * Holds a list of directories created during tests. + * + * @var array + */ + private $dirsToRemove = []; + + public function setUp() { + parent::setUp(); + + $this->request = $this->getMockBuilder(IRequest::class) + ->disableOriginalConstructor()->getMock(); + $this->config = $this->getMockBuilder(IConfig::class) + ->disableOriginalConstructor()->getMock(); + $this->clientService = $this->getMockBuilder(IClientService::class) + ->disableOriginalConstructor()->getMock(); + $this->urlGenerator = $this->getMockBuilder(IURLGenerator::class) + ->disableOriginalConstructor()->getMock(); + $this->l10n = $this->getMockBuilder(IL10N::class) + ->disableOriginalConstructor()->getMock(); + $this->l10n->expects($this->any()) + ->method('t') + ->will($this->returnCallback(function($message, array $replace) { + return vsprintf($message, $replace); + })); + $this->dispatcher = $this->getMockBuilder(EventDispatcherInterface::class) + ->disableOriginalConstructor()->getMock(); + $this->checker = $this->getMockBuilder('\OC\IntegrityCheck\Checker') + ->disableOriginalConstructor()->getMock(); + $this->logger = $this->getMockBuilder(ILogger::class)->getMock(); + $this->db = $this->getMockBuilder(Connection::class) + ->disableOriginalConstructor()->getMock(); + $this->lockingProvider = $this->getMockBuilder(ILockingProvider::class)->getMock(); + $this->dateTimeFormatter = $this->getMockBuilder(IDateTimeFormatter::class)->getMock(); + $this->memoryInfo = $this->getMockBuilder(MemoryInfo::class) + ->setMethods(['isMemoryLimitSufficient',]) + ->getMock(); + $this->secureRandom = $this->getMockBuilder(SecureRandom::class)->getMock(); + $this->checkSetupController = $this->getMockBuilder(CheckSetupController::class) + ->setConstructorArgs([ + 'settings', + $this->request, + $this->config, + $this->clientService, + $this->urlGenerator, + $this->l10n, + $this->checker, + $this->logger, + $this->dispatcher, + $this->db, + $this->lockingProvider, + $this->dateTimeFormatter, + $this->memoryInfo, + $this->secureRandom, + ]) + ->setMethods([ + 'isReadOnlyConfig', + 'hasValidTransactionIsolationLevel', + 'hasFileinfoInstalled', + 'hasWorkingFileLocking', + 'getLastCronInfo', + 'getSuggestedOverwriteCliURL', + 'getCurlVersion', + 'isPhpOutdated', + 'isOpcacheProperlySetup', + 'hasFreeTypeSupport', + 'hasMissingIndexes', + 'isSqliteUsed', + 'isPHPMailerUsed', + 'hasOpcacheLoaded', + 'getAppDirsWithDifferentOwner', + 'hasRecommendedPHPModules', + 'hasBigIntConversionPendingColumns', + 'isMysqlUsedWithoutUTF8MB4', + 'isEnoughTempSpaceAvailableIfS3PrimaryStorageIsUsed', + ])->getMock(); + } + + /** + * Removes directories created during tests. + * + * @after + * @return void + */ + public function removeTestDirectories() { + foreach ($this->dirsToRemove as $dirToRemove) { + rmdir($dirToRemove); + } + $this->dirsToRemove = []; + } + + public function testIsInternetConnectionWorkingDisabledViaConfig() { + $this->config->expects($this->once()) + ->method('getSystemValue') + ->with('has_internet_connection', true) + ->will($this->returnValue(false)); + + $this->assertFalse( + self::invokePrivate( + $this->checkSetupController, + 'hasInternetConnectivityProblems' + ) + ); + } + + public function testIsInternetConnectionWorkingCorrectly() { + $this->config->expects($this->at(0)) + ->method('getSystemValue') + ->with('has_internet_connection', true) + ->will($this->returnValue(true)); + + $this->config->expects($this->at(1)) + ->method('getSystemValue') + ->with('connectivity_check_domains', ['www.nextcloud.com', 'www.startpage.com', 'www.eff.org', 'www.edri.org']) + ->will($this->returnValue(['www.nextcloud.com', 'www.startpage.com', 'www.eff.org', 'www.edri.org'])); + + $client = $this->getMockBuilder('\OCP\Http\Client\IClient') + ->disableOriginalConstructor()->getMock(); + $client->expects($this->any()) + ->method('get'); + + $this->clientService->expects($this->once()) + ->method('newClient') + ->will($this->returnValue($client)); + + + $this->assertFalse( + self::invokePrivate( + $this->checkSetupController, + 'hasInternetConnectivityProblems' + ) + ); + } + + public function testIsInternetConnectionFail() { + $this->config->expects($this->at(0)) + ->method('getSystemValue') + ->with('has_internet_connection', true) + ->will($this->returnValue(true)); + + $this->config->expects($this->at(1)) + ->method('getSystemValue') + ->with('connectivity_check_domains', ['www.nextcloud.com', 'www.startpage.com', 'www.eff.org', 'www.edri.org']) + ->will($this->returnValue(['www.nextcloud.com', 'www.startpage.com', 'www.eff.org', 'www.edri.org'])); + + $client = $this->getMockBuilder('\OCP\Http\Client\IClient') + ->disableOriginalConstructor()->getMock(); + $client->expects($this->any()) + ->method('get') + ->will($this->throwException(new \Exception())); + + $this->clientService->expects($this->exactly(4)) + ->method('newClient') + ->will($this->returnValue($client)); + + $this->assertTrue( + self::invokePrivate( + $this->checkSetupController, + 'hasInternetConnectivityProblems' + ) + ); + } + + + public function testIsMemcacheConfiguredFalse() { + $this->config->expects($this->once()) + ->method('getSystemValue') + ->with('memcache.local', null) + ->will($this->returnValue(null)); + + $this->assertFalse( + self::invokePrivate( + $this->checkSetupController, + 'isMemcacheConfigured' + ) + ); + } + + public function testIsMemcacheConfiguredTrue() { + $this->config->expects($this->once()) + ->method('getSystemValue') + ->with('memcache.local', null) + ->will($this->returnValue('SomeProvider')); + + $this->assertTrue( + self::invokePrivate( + $this->checkSetupController, + 'isMemcacheConfigured' + ) + ); + } + + public function testIsPhpSupportedFalse() { + $this->checkSetupController + ->expects($this->once()) + ->method('isPhpOutdated') + ->willReturn(true); + + $this->assertEquals( + ['eol' => true, 'version' => PHP_VERSION], + self::invokePrivate($this->checkSetupController, 'isPhpSupported') + ); + } + + public function testIsPhpSupportedTrue() { + $this->checkSetupController + ->expects($this->exactly(2)) + ->method('isPhpOutdated') + ->willReturn(false); + + $this->assertEquals( + ['eol' => false, 'version' => PHP_VERSION], + self::invokePrivate($this->checkSetupController, 'isPhpSupported') + ); + + + $this->assertEquals( + ['eol' => false, 'version' => PHP_VERSION], + self::invokePrivate($this->checkSetupController, 'isPhpSupported') + ); + } + + /** + * @dataProvider dataForwardedForHeadersWorking + * + * @param array $trustedProxies + * @param string $remoteAddrNotForwarded + * @param string $remoteAddr + * @param bool $result + */ + public function testForwardedForHeadersWorking(array $trustedProxies, string $remoteAddrNotForwarded, string $remoteAddr, bool $result) { + $this->config->expects($this->once()) + ->method('getSystemValue') + ->with('trusted_proxies', []) + ->willReturn($trustedProxies); + $this->request->expects($this->atLeastOnce()) + ->method('getHeader') + ->willReturnMap([ + ['REMOTE_ADDR', $remoteAddrNotForwarded], + ['X-Forwarded-Host', ''] + ]); + $this->request->expects($this->any()) + ->method('getRemoteAddress') + ->willReturn($remoteAddr); + + $this->assertEquals( + $result, + self::invokePrivate($this->checkSetupController, 'forwardedForHeadersWorking') + ); + } + + public function dataForwardedForHeadersWorking() { + return [ + // description => trusted proxies, getHeader('REMOTE_ADDR'), getRemoteAddr, expected result + 'no trusted proxies' => [[], '2.2.2.2', '2.2.2.2', true], + 'trusted proxy, remote addr not trusted proxy' => [['1.1.1.1'], '2.2.2.2', '2.2.2.2', true], + 'trusted proxy, remote addr is trusted proxy, x-forwarded-for working' => [['1.1.1.1'], '1.1.1.1', '2.2.2.2', true], + 'trusted proxy, remote addr is trusted proxy, x-forwarded-for not set' => [['1.1.1.1'], '1.1.1.1', '1.1.1.1', false], + ]; + } + + public function testForwardedHostPresentButTrustedProxiesEmpty() { + $this->config->expects($this->once()) + ->method('getSystemValue') + ->with('trusted_proxies', []) + ->willReturn([]); + $this->request->expects($this->atLeastOnce()) + ->method('getHeader') + ->willReturnMap([ + ['REMOTE_ADDR', '1.1.1.1'], + ['X-Forwarded-Host', 'nextcloud.test'] + ]); + $this->request->expects($this->any()) + ->method('getRemoteAddress') + ->willReturn('1.1.1.1'); + + $this->assertEquals( + false, + self::invokePrivate($this->checkSetupController, 'forwardedForHeadersWorking') + ); + } + + public function testCheck() { + $this->config->expects($this->at(0)) + ->method('getAppValue') + ->with('core', 'cronErrors') + ->willReturn(''); + $this->config->expects($this->at(2)) + ->method('getSystemValue') + ->with('connectivity_check_domains', ['www.nextcloud.com', 'www.startpage.com', 'www.eff.org', 'www.edri.org']) + ->will($this->returnValue(['www.nextcloud.com', 'www.startpage.com', 'www.eff.org', 'www.edri.org'])); + $this->config->expects($this->at(3)) + ->method('getSystemValue') + ->with('memcache.local', null) + ->will($this->returnValue('SomeProvider')); + $this->config->expects($this->at(4)) + ->method('getSystemValue') + ->with('has_internet_connection', true) + ->will($this->returnValue(true)); + $this->config->expects($this->at(5)) + ->method('getSystemValue') + ->with('appstoreenabled', true) + ->will($this->returnValue(false)); + + $this->request->expects($this->atLeastOnce()) + ->method('getHeader') + ->willReturnMap([ + ['REMOTE_ADDR', '4.3.2.1'], + ['X-Forwarded-Host', ''] + ]); + + $client = $this->getMockBuilder('\OCP\Http\Client\IClient') + ->disableOriginalConstructor()->getMock(); + $client->expects($this->at(0)) + ->method('get') + ->with('http://www.nextcloud.com/', []) + ->will($this->throwException(new \Exception())); + $client->expects($this->at(1)) + ->method('get') + ->with('http://www.startpage.com/', []) + ->will($this->throwException(new \Exception())); + $client->expects($this->at(2)) + ->method('get') + ->with('http://www.eff.org/', []) + ->will($this->throwException(new \Exception())); + $client->expects($this->at(3)) + ->method('get') + ->with('http://www.edri.org/', []) + ->will($this->throwException(new \Exception())); + $this->clientService->expects($this->exactly(4)) + ->method('newClient') + ->will($this->returnValue($client)); + $this->urlGenerator->expects($this->at(0)) + ->method('linkToDocs') + ->with('admin-performance') + ->willReturn('http://docs.example.org/server/go.php?to=admin-performance'); + $this->urlGenerator->expects($this->at(1)) + ->method('linkToDocs') + ->with('admin-security') + ->willReturn('https://docs.example.org/server/8.1/admin_manual/configuration_server/hardening.html'); + $this->checkSetupController + ->expects($this->once()) + ->method('isPhpOutdated') + ->willReturn(true); + $this->checkSetupController + ->expects($this->once()) + ->method('isOpcacheProperlySetup') + ->willReturn(false); + $this->urlGenerator->expects($this->at(2)) + ->method('linkToDocs') + ->with('admin-reverse-proxy') + ->willReturn('reverse-proxy-doc-link'); + $this->urlGenerator->expects($this->at(3)) + ->method('linkToDocs') + ->with('admin-code-integrity') + ->willReturn('http://docs.example.org/server/go.php?to=admin-code-integrity'); + $this->urlGenerator->expects($this->at(4)) + ->method('linkToDocs') + ->with('admin-php-opcache') + ->willReturn('http://docs.example.org/server/go.php?to=admin-php-opcache'); + $this->urlGenerator->expects($this->at(5)) + ->method('linkToDocs') + ->with('admin-db-conversion') + ->willReturn('http://docs.example.org/server/go.php?to=admin-db-conversion'); + $this->urlGenerator->expects($this->at(6)) + ->method('getAbsoluteURL') + ->with('index.php/settings/admin') + ->willReturn('https://server/index.php/settings/admin'); + $this->checkSetupController + ->method('hasFreeTypeSupport') + ->willReturn(false); + $this->checkSetupController + ->method('hasMissingIndexes') + ->willReturn([]); + $this->checkSetupController + ->method('isSqliteUsed') + ->willReturn(false); + $this->checkSetupController + ->expects($this->once()) + ->method('isReadOnlyConfig') + ->willReturn(false); + $this->checkSetupController + ->expects($this->once()) + ->method('hasValidTransactionIsolationLevel') + ->willReturn(true); + $this->checkSetupController + ->expects($this->once()) + ->method('hasFileinfoInstalled') + ->willReturn(true); + $this->checkSetupController + ->expects($this->once()) + ->method('hasOpcacheLoaded') + ->willReturn(true); + $this->checkSetupController + ->expects($this->once()) + ->method('hasWorkingFileLocking') + ->willReturn(true); + $this->checkSetupController + ->expects($this->once()) + ->method('getSuggestedOverwriteCliURL') + ->willReturn(''); + $this->checkSetupController + ->expects($this->once()) + ->method('getLastCronInfo') + ->willReturn([ + 'diffInSeconds' => 123, + 'relativeTime' => '2 hours ago', + 'backgroundJobsUrl' => 'https://example.org', + ]); + $this->checkSetupController + ->expects($this->once()) + ->method('isPHPMailerUsed') + ->willReturn(false); + $this->checker + ->expects($this->once()) + ->method('hasPassedCheck') + ->willReturn(true); + $this->memoryInfo + ->method('isMemoryLimitSufficient') + ->willReturn(true); + + $this->checkSetupController + ->expects($this->once()) + ->method('getAppDirsWithDifferentOwner') + ->willReturn([]); + + $this->checkSetupController + ->expects($this->once()) + ->method('hasRecommendedPHPModules') + ->willReturn([]); + + $this->checkSetupController + ->expects($this->once()) + ->method('hasBigIntConversionPendingColumns') + ->willReturn([]); + + $this->checkSetupController + ->expects($this->once()) + ->method('isMysqlUsedWithoutUTF8MB4') + ->willReturn(false); + + $this->checkSetupController + ->expects($this->once()) + ->method('isEnoughTempSpaceAvailableIfS3PrimaryStorageIsUsed') + ->willReturn(true); + + $expected = new DataResponse( + [ + 'isGetenvServerWorking' => true, + 'isReadOnlyConfig' => false, + 'hasValidTransactionIsolationLevel' => true, + 'hasFileinfoInstalled' => true, + 'hasWorkingFileLocking' => true, + 'suggestedOverwriteCliURL' => '', + 'cronInfo' => [ + 'diffInSeconds' => 123, + 'relativeTime' => '2 hours ago', + 'backgroundJobsUrl' => 'https://example.org', + ], + 'cronErrors' => [], + 'serverHasInternetConnectionProblems' => true, + 'isMemcacheConfigured' => true, + 'memcacheDocs' => 'http://docs.example.org/server/go.php?to=admin-performance', + 'isRandomnessSecure' => self::invokePrivate($this->checkSetupController, 'isRandomnessSecure'), + 'securityDocs' => 'https://docs.example.org/server/8.1/admin_manual/configuration_server/hardening.html', + 'isUsedTlsLibOutdated' => '', + 'phpSupported' => [ + 'eol' => true, + 'version' => PHP_VERSION + ], + 'forwardedForHeadersWorking' => true, + 'reverseProxyDocs' => 'reverse-proxy-doc-link', + 'isCorrectMemcachedPHPModuleInstalled' => true, + 'hasPassedCodeIntegrityCheck' => true, + 'codeIntegrityCheckerDocumentation' => 'http://docs.example.org/server/go.php?to=admin-code-integrity', + 'isOpcacheProperlySetup' => false, + 'hasOpcacheLoaded' => true, + 'phpOpcacheDocumentation' => 'http://docs.example.org/server/go.php?to=admin-php-opcache', + 'isSettimelimitAvailable' => true, + 'hasFreeTypeSupport' => false, + 'isSqliteUsed' => false, + 'databaseConversionDocumentation' => 'http://docs.example.org/server/go.php?to=admin-db-conversion', + 'missingIndexes' => [], + 'isPHPMailerUsed' => false, + 'mailSettingsDocumentation' => 'https://server/index.php/settings/admin', + 'isMemoryLimitSufficient' => true, + 'appDirsWithDifferentOwner' => [], + 'recommendedPHPModules' => [], + 'pendingBigIntConversionColumns' => [], + 'isMysqlUsedWithoutUTF8MB4' => false, + 'isEnoughTempSpaceAvailableIfS3PrimaryStorageIsUsed' => true, + ] + ); + $this->assertEquals($expected, $this->checkSetupController->check()); + } + + public function testIsPHPMailerUsed() { + $checkSetupController = $this->getMockBuilder(CheckSetupController::class) + ->setConstructorArgs([ + 'settings', + $this->request, + $this->config, + $this->clientService, + $this->urlGenerator, + $this->l10n, + $this->checker, + $this->logger, + $this->dispatcher, + $this->db, + $this->lockingProvider, + $this->dateTimeFormatter, + $this->memoryInfo, + $this->secureRandom, + ]) + ->setMethods(null)->getMock(); + + $this->config->expects($this->at(0)) + ->method('getSystemValue') + ->with('mail_smtpmode', 'smtp') + ->will($this->returnValue('php')); + $this->config->expects($this->at(1)) + ->method('getSystemValue') + ->with('mail_smtpmode', 'smtp') + ->will($this->returnValue('not-php')); + + $this->assertTrue($this->invokePrivate($checkSetupController, 'isPHPMailerUsed')); + $this->assertFalse($this->invokePrivate($checkSetupController, 'isPHPMailerUsed')); + } + + public function testGetCurlVersion() { + $checkSetupController = $this->getMockBuilder(CheckSetupController::class) + ->setConstructorArgs([ + 'settings', + $this->request, + $this->config, + $this->clientService, + $this->urlGenerator, + $this->l10n, + $this->checker, + $this->logger, + $this->dispatcher, + $this->db, + $this->lockingProvider, + $this->dateTimeFormatter, + $this->memoryInfo, + $this->secureRandom, + ]) + ->setMethods(null)->getMock(); + + $this->assertArrayHasKey('ssl_version', $this->invokePrivate($checkSetupController, 'getCurlVersion')); + } + + public function testIsUsedTlsLibOutdatedWithAnotherLibrary() { + $this->config->expects($this->any()) + ->method('getSystemValue') + ->will($this->returnValue(true)); + $this->checkSetupController + ->expects($this->once()) + ->method('getCurlVersion') + ->will($this->returnValue(['ssl_version' => 'SSLlib'])); + $this->assertSame('', $this->invokePrivate($this->checkSetupController, 'isUsedTlsLibOutdated')); + } + + public function testIsUsedTlsLibOutdatedWithMisbehavingCurl() { + $this->config->expects($this->any()) + ->method('getSystemValue') + ->will($this->returnValue(true)); + $this->checkSetupController + ->expects($this->once()) + ->method('getCurlVersion') + ->will($this->returnValue([])); + $this->assertSame('', $this->invokePrivate($this->checkSetupController, 'isUsedTlsLibOutdated')); + } + + public function testIsUsedTlsLibOutdatedWithOlderOpenSsl() { + $this->config->expects($this->any()) + ->method('getSystemValue') + ->will($this->returnValue(true)); + $this->checkSetupController + ->expects($this->once()) + ->method('getCurlVersion') + ->will($this->returnValue(['ssl_version' => 'OpenSSL/1.0.1c'])); + $this->assertSame('cURL is using an outdated OpenSSL version (OpenSSL/1.0.1c). Please update your operating system or features such as installing and updating apps via the app store or Federated Cloud Sharing will not work reliably.', $this->invokePrivate($this->checkSetupController, 'isUsedTlsLibOutdated')); + } + + public function testIsUsedTlsLibOutdatedWithOlderOpenSslAndWithoutAppstore() { + $this->config + ->expects($this->at(0)) + ->method('getSystemValue') + ->with('has_internet_connection', true) + ->will($this->returnValue(true)); + $this->checkSetupController + ->expects($this->once()) + ->method('getCurlVersion') + ->will($this->returnValue(['ssl_version' => 'OpenSSL/1.0.1c'])); + $this->assertSame('cURL is using an outdated OpenSSL version (OpenSSL/1.0.1c). Please update your operating system or features such as Federated Cloud Sharing will not work reliably.', $this->invokePrivate($this->checkSetupController, 'isUsedTlsLibOutdated')); + } + + public function testIsUsedTlsLibOutdatedWithOlderOpenSsl1() { + $this->config->expects($this->any()) + ->method('getSystemValue') + ->will($this->returnValue(true)); + $this->checkSetupController + ->expects($this->once()) + ->method('getCurlVersion') + ->will($this->returnValue(['ssl_version' => 'OpenSSL/1.0.2a'])); + $this->assertSame('cURL is using an outdated OpenSSL version (OpenSSL/1.0.2a). Please update your operating system or features such as installing and updating apps via the app store or Federated Cloud Sharing will not work reliably.', $this->invokePrivate($this->checkSetupController, 'isUsedTlsLibOutdated')); + } + + public function testIsUsedTlsLibOutdatedWithMatchingOpenSslVersion() { + $this->config->expects($this->any()) + ->method('getSystemValue') + ->will($this->returnValue(true)); + $this->checkSetupController + ->expects($this->once()) + ->method('getCurlVersion') + ->will($this->returnValue(['ssl_version' => 'OpenSSL/1.0.1d'])); + $this->assertSame('', $this->invokePrivate($this->checkSetupController, 'isUsedTlsLibOutdated')); + } + + public function testIsUsedTlsLibOutdatedWithMatchingOpenSslVersion1() { + $this->config->expects($this->any()) + ->method('getSystemValue') + ->will($this->returnValue(true)); + $this->checkSetupController + ->expects($this->once()) + ->method('getCurlVersion') + ->will($this->returnValue(['ssl_version' => 'OpenSSL/1.0.2b'])); + $this->assertSame('', $this->invokePrivate($this->checkSetupController, 'isUsedTlsLibOutdated')); + } + + /** + * Setups a temp directory and some subdirectories. + * Then calls the 'getAppDirsWithDifferentOwner' method. + * The result is expected to be empty since + * there are no directories with different owners than the current user. + * + * @return void + */ + public function testAppDirectoryOwnersOk() { + $tempDir = tempnam(sys_get_temp_dir(), 'apps') . 'dir'; + mkdir($tempDir); + mkdir($tempDir . DIRECTORY_SEPARATOR . 'app1'); + mkdir($tempDir . DIRECTORY_SEPARATOR . 'app2'); + $this->dirsToRemove[] = $tempDir . DIRECTORY_SEPARATOR . 'app1'; + $this->dirsToRemove[] = $tempDir . DIRECTORY_SEPARATOR . 'app2'; + $this->dirsToRemove[] = $tempDir; + OC::$APPSROOTS = [ + [ + 'path' => $tempDir, + 'url' => '/apps', + 'writable' => true, + ], + ]; + $this->assertSame( + [], + $this->invokePrivate($this->checkSetupController, 'getAppDirsWithDifferentOwner') + ); + } + + /** + * Calls the check for a none existing app root that is marked as not writable. + * It's expected that no error happens since the check shouldn't apply. + * + * @return void + */ + public function testAppDirectoryOwnersNotWritable() { + $tempDir = tempnam(sys_get_temp_dir(), 'apps') . 'dir'; + OC::$APPSROOTS = [ + [ + 'path' => $tempDir, + 'url' => '/apps', + 'writable' => false, + ], + ]; + $this->assertSame( + [], + $this->invokePrivate($this->checkSetupController, 'getAppDirsWithDifferentOwner') + ); + } + + public function testIsBuggyNss400() { + $this->config->expects($this->any()) + ->method('getSystemValue') + ->will($this->returnValue(true)); + $this->checkSetupController + ->expects($this->once()) + ->method('getCurlVersion') + ->will($this->returnValue(['ssl_version' => 'NSS/1.0.2b'])); + $client = $this->getMockBuilder('\OCP\Http\Client\IClient') + ->disableOriginalConstructor()->getMock(); + $exception = $this->getMockBuilder('\GuzzleHttp\Exception\ClientException') + ->disableOriginalConstructor()->getMock(); + $response = $this->getMockBuilder(ResponseInterface::class) + ->disableOriginalConstructor()->getMock(); + $response->expects($this->once()) + ->method('getStatusCode') + ->will($this->returnValue(400)); + $exception->expects($this->once()) + ->method('getResponse') + ->will($this->returnValue($response)); + + $client->expects($this->at(0)) + ->method('get') + ->with('https://nextcloud.com/', []) + ->will($this->throwException($exception)); + + $this->clientService->expects($this->once()) + ->method('newClient') + ->will($this->returnValue($client)); + + $this->assertSame('cURL is using an outdated NSS version (NSS/1.0.2b). Please update your operating system or features such as installing and updating apps via the app store or Federated Cloud Sharing will not work reliably.', $this->invokePrivate($this->checkSetupController, 'isUsedTlsLibOutdated')); + } + + + public function testIsBuggyNss200() { + $this->config->expects($this->any()) + ->method('getSystemValue') + ->will($this->returnValue(true)); + $this->checkSetupController + ->expects($this->once()) + ->method('getCurlVersion') + ->will($this->returnValue(['ssl_version' => 'NSS/1.0.2b'])); + $client = $this->getMockBuilder('\OCP\Http\Client\IClient') + ->disableOriginalConstructor()->getMock(); + $exception = $this->getMockBuilder('\GuzzleHttp\Exception\ClientException') + ->disableOriginalConstructor()->getMock(); + $response = $this->getMockBuilder(ResponseInterface::class) + ->disableOriginalConstructor()->getMock(); + $response->expects($this->once()) + ->method('getStatusCode') + ->will($this->returnValue(200)); + $exception->expects($this->once()) + ->method('getResponse') + ->will($this->returnValue($response)); + + $client->expects($this->at(0)) + ->method('get') + ->with('https://nextcloud.com/', []) + ->will($this->throwException($exception)); + + $this->clientService->expects($this->once()) + ->method('newClient') + ->will($this->returnValue($client)); + + $this->assertSame('', $this->invokePrivate($this->checkSetupController, 'isUsedTlsLibOutdated')); + } + + public function testIsUsedTlsLibOutdatedWithInternetDisabled() { + $this->config + ->expects($this->at(0)) + ->method('getSystemValue') + ->with('has_internet_connection', true) + ->will($this->returnValue(false)); + $this->assertSame('', $this->invokePrivate($this->checkSetupController, 'isUsedTlsLibOutdated')); + } + + public function testIsUsedTlsLibOutdatedWithAppstoreDisabledAndServerToServerSharingEnabled() { + $this->config + ->expects($this->at(0)) + ->method('getSystemValue') + ->with('has_internet_connection', true) + ->will($this->returnValue(true)); + $this->config + ->expects($this->at(1)) + ->method('getSystemValue') + ->with('appstoreenabled', true) + ->will($this->returnValue(false)); + $this->config + ->expects($this->at(2)) + ->method('getAppValue') + ->with('files_sharing', 'outgoing_server2server_share_enabled', 'yes') + ->will($this->returnValue('no')); + $this->config + ->expects($this->at(3)) + ->method('getAppValue') + ->with('files_sharing', 'incoming_server2server_share_enabled', 'yes') + ->will($this->returnValue('yes')); + + $this->checkSetupController + ->expects($this->once()) + ->method('getCurlVersion') + ->will($this->returnValue([])); + $this->assertSame('', $this->invokePrivate($this->checkSetupController, 'isUsedTlsLibOutdated')); + } + + public function testIsUsedTlsLibOutdatedWithAppstoreDisabledAndServerToServerSharingDisabled() { + $this->config + ->expects($this->at(0)) + ->method('getSystemValue') + ->with('has_internet_connection', true) + ->will($this->returnValue(true)); + $this->config + ->expects($this->at(1)) + ->method('getSystemValue') + ->with('appstoreenabled', true) + ->will($this->returnValue(false)); + $this->config + ->expects($this->at(2)) + ->method('getAppValue') + ->with('files_sharing', 'outgoing_server2server_share_enabled', 'yes') + ->will($this->returnValue('no')); + $this->config + ->expects($this->at(3)) + ->method('getAppValue') + ->with('files_sharing', 'incoming_server2server_share_enabled', 'yes') + ->will($this->returnValue('no')); + + $this->checkSetupController + ->expects($this->never()) + ->method('getCurlVersion') + ->will($this->returnValue([])); + $this->assertSame('', $this->invokePrivate($this->checkSetupController, 'isUsedTlsLibOutdated')); + } + + public function testRescanFailedIntegrityCheck() { + $this->checker + ->expects($this->once()) + ->method('runInstanceVerification'); + $this->urlGenerator + ->expects($this->once()) + ->method('linkToRoute') + ->with('settings.AdminSettings.index') + ->will($this->returnValue('/admin')); + + $expected = new RedirectResponse('/admin'); + $this->assertEquals($expected, $this->checkSetupController->rescanFailedIntegrityCheck()); + } + + public function testGetFailedIntegrityCheckDisabled() { + $this->checker + ->expects($this->once()) + ->method('isCodeCheckEnforced') + ->willReturn(false); + + $expected = new DataDisplayResponse('Integrity checker has been disabled. Integrity cannot be verified.'); + $this->assertEquals($expected, $this->checkSetupController->getFailedIntegrityCheckFiles()); + } + + + public function testGetFailedIntegrityCheckFilesWithNoErrorsFound() { + $this->checker + ->expects($this->once()) + ->method('isCodeCheckEnforced') + ->willReturn(true); + $this->checker + ->expects($this->once()) + ->method('getResults') + ->will($this->returnValue([])); + + $expected = new DataDisplayResponse( + 'No errors have been found.', + Http::STATUS_OK, + [ + 'Content-Type' => 'text/plain', + ] + ); + $this->assertEquals($expected, $this->checkSetupController->getFailedIntegrityCheckFiles()); + } + + public function testGetFailedIntegrityCheckFilesWithSomeErrorsFound() { + $this->checker + ->expects($this->once()) + ->method('isCodeCheckEnforced') + ->willReturn(true); + $this->checker + ->expects($this->once()) + ->method('getResults') + ->will($this->returnValue(array ( 'core' => array ( 'EXTRA_FILE' => array('/testfile' => array()), 'INVALID_HASH' => array ( '/.idea/workspace.xml' => array ( 'expected' => 'f1c5e2630d784bc9cb02d5a28f55d6f24d06dae2a0fee685f3c2521b050955d9d452769f61454c9ddfa9c308146ade10546cfa829794448eaffbc9a04a29d216', 'current' => 'ce08bf30bcbb879a18b49239a9bec6b8702f52452f88a9d32142cad8d2494d5735e6bfa0d8642b2762c62ca5be49f9bf4ec231d4a230559d4f3e2c471d3ea094', ), '/lib/private/integritycheck/checker.php' => array ( 'expected' => 'c5a03bacae8dedf8b239997901ba1fffd2fe51271d13a00cc4b34b09cca5176397a89fc27381cbb1f72855fa18b69b6f87d7d5685c3b45aee373b09be54742ea', 'current' => '88a3a92c11db91dec1ac3be0e1c87f862c95ba6ffaaaa3f2c3b8f682187c66f07af3a3b557a868342ef4a271218fe1c1e300c478e6c156c5955ed53c40d06585', ), '/settings/controller/checksetupcontroller.php' => array ( 'expected' => '3e1de26ce93c7bfe0ede7c19cb6c93cadc010340225b375607a7178812e9de163179b0dc33809f451e01f491d93f6f5aaca7929685d21594cccf8bda732327c4', 'current' => '09563164f9904a837f9ca0b5f626db56c838e5098e0ccc1d8b935f68fa03a25c5ec6f6b2d9e44a868e8b85764dafd1605522b4af8db0ae269d73432e9a01e63a', ), ), ), 'bookmarks' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'dav' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'encryption' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'external' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'federation' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'files' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'files_antivirus' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'files_drop' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'files_external' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'files_pdfviewer' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'files_sharing' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'files_trashbin' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'files_versions' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'files_videoviewer' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'firstrunwizard' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'gitsmart' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'logreader' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature could not get verified.', ), ), 'password_policy' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'provisioning_api' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'sketch' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'threatblock' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'two_factor_auth' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'user_ldap' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'user_shibboleth' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), ))); + + $expected = new DataDisplayResponse( + 'Technical information +===================== +The following list covers which files have failed the integrity check. Please read +the previous linked documentation to learn more about the errors and how to fix +them. + +Results +======= +- core + - EXTRA_FILE + - /testfile + - INVALID_HASH + - /.idea/workspace.xml + - /lib/private/integritycheck/checker.php + - /settings/controller/checksetupcontroller.php +- bookmarks + - EXCEPTION + - OC\IntegrityCheck\Exceptions\InvalidSignatureException + - Signature data not found. +- dav + - EXCEPTION + - OC\IntegrityCheck\Exceptions\InvalidSignatureException + - Signature data not found. +- encryption + - EXCEPTION + - OC\IntegrityCheck\Exceptions\InvalidSignatureException + - Signature data not found. +- external + - EXCEPTION + - OC\IntegrityCheck\Exceptions\InvalidSignatureException + - Signature data not found. +- federation + - EXCEPTION + - OC\IntegrityCheck\Exceptions\InvalidSignatureException + - Signature data not found. +- files + - EXCEPTION + - OC\IntegrityCheck\Exceptions\InvalidSignatureException + - Signature data not found. +- files_antivirus + - EXCEPTION + - OC\IntegrityCheck\Exceptions\InvalidSignatureException + - Signature data not found. +- files_drop + - EXCEPTION + - OC\IntegrityCheck\Exceptions\InvalidSignatureException + - Signature data not found. +- files_external + - EXCEPTION + - OC\IntegrityCheck\Exceptions\InvalidSignatureException + - Signature data not found. +- files_pdfviewer + - EXCEPTION + - OC\IntegrityCheck\Exceptions\InvalidSignatureException + - Signature data not found. +- files_sharing + - EXCEPTION + - OC\IntegrityCheck\Exceptions\InvalidSignatureException + - Signature data not found. +- files_trashbin + - EXCEPTION + - OC\IntegrityCheck\Exceptions\InvalidSignatureException + - Signature data not found. +- files_versions + - EXCEPTION + - OC\IntegrityCheck\Exceptions\InvalidSignatureException + - Signature data not found. +- files_videoviewer + - EXCEPTION + - OC\IntegrityCheck\Exceptions\InvalidSignatureException + - Signature data not found. +- firstrunwizard + - EXCEPTION + - OC\IntegrityCheck\Exceptions\InvalidSignatureException + - Signature data not found. +- gitsmart + - EXCEPTION + - OC\IntegrityCheck\Exceptions\InvalidSignatureException + - Signature data not found. +- logreader + - EXCEPTION + - OC\IntegrityCheck\Exceptions\InvalidSignatureException + - Signature could not get verified. +- password_policy + - EXCEPTION + - OC\IntegrityCheck\Exceptions\InvalidSignatureException + - Signature data not found. +- provisioning_api + - EXCEPTION + - OC\IntegrityCheck\Exceptions\InvalidSignatureException + - Signature data not found. +- sketch + - EXCEPTION + - OC\IntegrityCheck\Exceptions\InvalidSignatureException + - Signature data not found. +- threatblock + - EXCEPTION + - OC\IntegrityCheck\Exceptions\InvalidSignatureException + - Signature data not found. +- two_factor_auth + - EXCEPTION + - OC\IntegrityCheck\Exceptions\InvalidSignatureException + - Signature data not found. +- user_ldap + - EXCEPTION + - OC\IntegrityCheck\Exceptions\InvalidSignatureException + - Signature data not found. +- user_shibboleth + - EXCEPTION + - OC\IntegrityCheck\Exceptions\InvalidSignatureException + - Signature data not found. + +Raw output +========== +Array +( + [core] => Array + ( + [EXTRA_FILE] => Array + ( + [/testfile] => Array + ( + ) + + ) + + [INVALID_HASH] => Array + ( + [/.idea/workspace.xml] => Array + ( + [expected] => f1c5e2630d784bc9cb02d5a28f55d6f24d06dae2a0fee685f3c2521b050955d9d452769f61454c9ddfa9c308146ade10546cfa829794448eaffbc9a04a29d216 + [current] => ce08bf30bcbb879a18b49239a9bec6b8702f52452f88a9d32142cad8d2494d5735e6bfa0d8642b2762c62ca5be49f9bf4ec231d4a230559d4f3e2c471d3ea094 + ) + + [/lib/private/integritycheck/checker.php] => Array + ( + [expected] => c5a03bacae8dedf8b239997901ba1fffd2fe51271d13a00cc4b34b09cca5176397a89fc27381cbb1f72855fa18b69b6f87d7d5685c3b45aee373b09be54742ea + [current] => 88a3a92c11db91dec1ac3be0e1c87f862c95ba6ffaaaa3f2c3b8f682187c66f07af3a3b557a868342ef4a271218fe1c1e300c478e6c156c5955ed53c40d06585 + ) + + [/settings/controller/checksetupcontroller.php] => Array + ( + [expected] => 3e1de26ce93c7bfe0ede7c19cb6c93cadc010340225b375607a7178812e9de163179b0dc33809f451e01f491d93f6f5aaca7929685d21594cccf8bda732327c4 + [current] => 09563164f9904a837f9ca0b5f626db56c838e5098e0ccc1d8b935f68fa03a25c5ec6f6b2d9e44a868e8b85764dafd1605522b4af8db0ae269d73432e9a01e63a + ) + + ) + + ) + + [bookmarks] => Array + ( + [EXCEPTION] => Array + ( + [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException + [message] => Signature data not found. + ) + + ) + + [dav] => Array + ( + [EXCEPTION] => Array + ( + [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException + [message] => Signature data not found. + ) + + ) + + [encryption] => Array + ( + [EXCEPTION] => Array + ( + [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException + [message] => Signature data not found. + ) + + ) + + [external] => Array + ( + [EXCEPTION] => Array + ( + [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException + [message] => Signature data not found. + ) + + ) + + [federation] => Array + ( + [EXCEPTION] => Array + ( + [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException + [message] => Signature data not found. + ) + + ) + + [files] => Array + ( + [EXCEPTION] => Array + ( + [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException + [message] => Signature data not found. + ) + + ) + + [files_antivirus] => Array + ( + [EXCEPTION] => Array + ( + [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException + [message] => Signature data not found. + ) + + ) + + [files_drop] => Array + ( + [EXCEPTION] => Array + ( + [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException + [message] => Signature data not found. + ) + + ) + + [files_external] => Array + ( + [EXCEPTION] => Array + ( + [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException + [message] => Signature data not found. + ) + + ) + + [files_pdfviewer] => Array + ( + [EXCEPTION] => Array + ( + [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException + [message] => Signature data not found. + ) + + ) + + [files_sharing] => Array + ( + [EXCEPTION] => Array + ( + [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException + [message] => Signature data not found. + ) + + ) + + [files_trashbin] => Array + ( + [EXCEPTION] => Array + ( + [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException + [message] => Signature data not found. + ) + + ) + + [files_versions] => Array + ( + [EXCEPTION] => Array + ( + [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException + [message] => Signature data not found. + ) + + ) + + [files_videoviewer] => Array + ( + [EXCEPTION] => Array + ( + [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException + [message] => Signature data not found. + ) + + ) + + [firstrunwizard] => Array + ( + [EXCEPTION] => Array + ( + [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException + [message] => Signature data not found. + ) + + ) + + [gitsmart] => Array + ( + [EXCEPTION] => Array + ( + [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException + [message] => Signature data not found. + ) + + ) + + [logreader] => Array + ( + [EXCEPTION] => Array + ( + [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException + [message] => Signature could not get verified. + ) + + ) + + [password_policy] => Array + ( + [EXCEPTION] => Array + ( + [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException + [message] => Signature data not found. + ) + + ) + + [provisioning_api] => Array + ( + [EXCEPTION] => Array + ( + [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException + [message] => Signature data not found. + ) + + ) + + [sketch] => Array + ( + [EXCEPTION] => Array + ( + [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException + [message] => Signature data not found. + ) + + ) + + [threatblock] => Array + ( + [EXCEPTION] => Array + ( + [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException + [message] => Signature data not found. + ) + + ) + + [two_factor_auth] => Array + ( + [EXCEPTION] => Array + ( + [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException + [message] => Signature data not found. + ) + + ) + + [user_ldap] => Array + ( + [EXCEPTION] => Array + ( + [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException + [message] => Signature data not found. + ) + + ) + + [user_shibboleth] => Array + ( + [EXCEPTION] => Array + ( + [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException + [message] => Signature data not found. + ) + + ) + +) +', + Http::STATUS_OK, + [ + 'Content-Type' => 'text/plain', + ] + ); + $this->assertEquals($expected, $this->checkSetupController->getFailedIntegrityCheckFiles()); + } + + public function dataForIsMysqlUsedWithoutUTF8MB4() { + return [ + ['sqlite', false, false], + ['sqlite', true, false], + ['postgres', false, false], + ['postgres', true, false], + ['oci', false, false], + ['oci', true, false], + ['mysql', false, true], + ['mysql', true, false], + ]; + } + + /** + * @dataProvider dataForIsMysqlUsedWithoutUTF8MB4 + */ + public function testIsMysqlUsedWithoutUTF8MB4(string $db, bool $useUTF8MB4, bool $expected) { + $this->config->method('getSystemValue') + ->will($this->returnCallback(function($key, $default) use ($db, $useUTF8MB4) { + if ($key === 'dbtype') { + return $db; + } + if ($key === 'mysql.utf8mb4') { + return $useUTF8MB4; + } + return $default; + })); + + $checkSetupController = new CheckSetupController( + 'settings', + $this->request, + $this->config, + $this->clientService, + $this->urlGenerator, + $this->l10n, + $this->checker, + $this->logger, + $this->dispatcher, + $this->db, + $this->lockingProvider, + $this->dateTimeFormatter, + $this->memoryInfo, + $this->secureRandom + ); + + $this->assertSame($expected, $this->invokePrivate($checkSetupController, 'isMysqlUsedWithoutUTF8MB4')); + } + + public function dataForIsEnoughTempSpaceAvailableIfS3PrimaryStorageIsUsed() { + return [ + ['singlebucket', 'OC\\Files\\ObjectStore\\Swift', true], + ['multibucket', 'OC\\Files\\ObjectStore\\Swift', true], + ['singlebucket', 'OC\\Files\\ObjectStore\\Custom', true], + ['multibucket', 'OC\Files\\ObjectStore\\Custom', true], + ['singlebucket', 'OC\Files\ObjectStore\Swift', true], + ['multibucket', 'OC\Files\ObjectStore\Swift', true], + ['singlebucket', 'OC\Files\ObjectStore\Custom', true], + ['multibucket', 'OC\Files\ObjectStore\Custom', true], + ]; + } + + /** + * @dataProvider dataForIsEnoughTempSpaceAvailableIfS3PrimaryStorageIsUsed + */ + public function testIsEnoughTempSpaceAvailableIfS3PrimaryStorageIsUsed(string $mode, string $className, bool $expected) { + $this->config->method('getSystemValue') + ->will($this->returnCallback(function($key, $default) use ($mode, $className) { + if ($key === 'objectstore' && $mode === 'singlebucket') { + return ['class' => $className]; + } + if ($key === 'objectstore_multibucket' && $mode === 'multibucket') { + return ['class' => $className]; + } + return $default; + })); + + $checkSetupController = new CheckSetupController( + 'settings', + $this->request, + $this->config, + $this->clientService, + $this->urlGenerator, + $this->l10n, + $this->checker, + $this->logger, + $this->dispatcher, + $this->db, + $this->lockingProvider, + $this->dateTimeFormatter, + $this->memoryInfo, + $this->secureRandom + ); + + $this->assertSame($expected, $this->invokePrivate($checkSetupController, 'isEnoughTempSpaceAvailableIfS3PrimaryStorageIsUsed')); + } +} diff --git a/apps/settings/tests/Controller/MailSettingsControllerTest.php b/apps/settings/tests/Controller/MailSettingsControllerTest.php new file mode 100644 index 00000000000..7b12ca03e6c --- /dev/null +++ b/apps/settings/tests/Controller/MailSettingsControllerTest.php @@ -0,0 +1,178 @@ +<?php +/** + * @copyright 2014 Lukas Reschke lukas@nextcloud.com + * @copyright Copyright (c) 2017 Joas Schilling <coding@schilljs.com> + * + * @author Lukas Reschke <lukas@statuscode.ch> + * @author Joas Schilling <coding@schilljs.com> + * + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OCA\Settings\Tests\Controller; + +use OC\Mail\Message; +use OCA\Settings\Controller\MailSettingsController; +use OCP\AppFramework\Http; +use OCP\IConfig; +use OCP\IL10N; +use OCP\IRequest; +use OCP\IUserSession; +use OCP\Mail\IEMailTemplate; +use OCP\Mail\IMailer; +use OC\User\User; + +/** + * @package Tests\Settings\Controller + */ +class MailSettingsControllerTest extends \Test\TestCase { + + /** @var IConfig|\PHPUnit_Framework_MockObject_MockObject */ + private $config; + /** @var IUserSession|\PHPUnit_Framework_MockObject_MockObject */ + private $userSession; + /** @var IMailer|\PHPUnit_Framework_MockObject_MockObject */ + private $mailer; + /** @var IL10N|\PHPUnit_Framework_MockObject_MockObject */ + private $l; + + /** @var MailSettingsController */ + private $mailController; + + protected function setUp() { + parent::setUp(); + + $this->l = $this->createMock(IL10N::class); + $this->config = $this->createMock(IConfig::class); + $this->userSession = $this->createMock(IUserSession::class); + $this->mailer = $this->createMock(IMailer::class); + /** @var IRequest|\PHPUnit_Framework_MockObject_MockObject $request */ + $request = $this->createMock(IRequest::class); + $this->mailController = new MailSettingsController( + 'settings', + $request, + $this->l, + $this->config, + $this->userSession, + $this->mailer, + 'no-reply@nextcloud.com' + ); + } + + public function testSetMailSettings() { + $this->config->expects($this->exactly(2)) + ->method('setSystemValues') + ->withConsecutive( + [[ + 'mail_domain' => 'nextcloud.com', + 'mail_from_address' => 'demo@nextcloud.com', + 'mail_smtpmode' => 'smtp', + 'mail_smtpsecure' => 'ssl', + 'mail_smtphost' => 'mx.nextcloud.org', + 'mail_smtpauthtype' => 'NTLM', + 'mail_smtpauth' => 1, + 'mail_smtpport' => '25', + 'mail_sendmailmode' => null, + ]], + [[ + 'mail_domain' => 'nextcloud.com', + 'mail_from_address' => 'demo@nextcloud.com', + 'mail_smtpmode' => 'smtp', + 'mail_smtpsecure' => 'ssl', + 'mail_smtphost' => 'mx.nextcloud.org', + 'mail_smtpauthtype' => 'NTLM', + 'mail_smtpauth' => null, + 'mail_smtpport' => '25', + 'mail_smtpname' => null, + 'mail_smtppassword' => null, + 'mail_sendmailmode' => null, + ]] + ); + + // With authentication + $response = $this->mailController->setMailSettings( + 'nextcloud.com', + 'demo@nextcloud.com', + 'smtp', + 'ssl', + 'mx.nextcloud.org', + 'NTLM', + 1, + '25', + null + ); + $this->assertSame(Http::STATUS_OK, $response->getStatus()); + + // Without authentication (testing the deletion of the stored password) + $response = $this->mailController->setMailSettings( + 'nextcloud.com', + 'demo@nextcloud.com', + 'smtp', + 'ssl', + 'mx.nextcloud.org', + 'NTLM', + 0, + '25', + null + ); + $this->assertSame(Http::STATUS_OK, $response->getStatus()); + + } + + public function testStoreCredentials() { + $this->config + ->expects($this->once()) + ->method('setSystemValues') + ->with([ + 'mail_smtpname' => 'UsernameToStore', + 'mail_smtppassword' => 'PasswordToStore', + ]); + + $response = $this->mailController->storeCredentials('UsernameToStore', 'PasswordToStore'); + $this->assertSame(Http::STATUS_OK, $response->getStatus()); + } + + public function testSendTestMail() { + $user = $this->createMock(User::class); + $user->expects($this->any()) + ->method('getUID') + ->will($this->returnValue('Werner')); + $user->expects($this->any()) + ->method('getDisplayName') + ->will($this->returnValue('Werner Brösel')); + + $this->l->expects($this->any()) + ->method('t') + ->willReturnCallback(function($text, $parameters = []) { + return vsprintf($text, $parameters); + }); + $this->userSession + ->expects($this->any()) + ->method('getUser') + ->will($this->returnValue($user)); + + // Ensure that it fails when no mail address has been specified + $response = $this->mailController->sendTestMail(); + $this->assertSame(Http::STATUS_BAD_REQUEST, $response->getStatus()); + $this->assertSame('You need to set your user email before being able to send test emails.', $response->getData()); + + // If no exception is thrown it should work + $this->config + ->expects($this->any()) + ->method('getUserValue') + ->will($this->returnValue('mail@example.invalid')); + $this->mailer->expects($this->once()) + ->method('createMessage') + ->willReturn($this->createMock(Message::class)); + $emailTemplate = $this->createMock(IEMailTemplate::class); + $this->mailer + ->expects($this->once()) + ->method('createEMailTemplate') + ->willReturn($emailTemplate); + $response = $this->mailController->sendTestMail(); + $this->assertSame(Http::STATUS_OK, $response->getStatus(), $response->getData()); + } + +} diff --git a/apps/settings/tests/Controller/TwoFactorSettingsControllerTest.php b/apps/settings/tests/Controller/TwoFactorSettingsControllerTest.php new file mode 100644 index 00000000000..58b82bc0930 --- /dev/null +++ b/apps/settings/tests/Controller/TwoFactorSettingsControllerTest.php @@ -0,0 +1,84 @@ +<?php +/** + * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @author 2018 Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +namespace OCA\Settings\Tests\Controller; + +use OC\Authentication\TwoFactorAuth\EnforcementState; +use OC\Authentication\TwoFactorAuth\MandatoryTwoFactor; +use OCA\Settings\Controller\TwoFactorSettingsController; +use OCP\AppFramework\Http\JSONResponse; +use OCP\IRequest; +use PHPUnit\Framework\MockObject\MockObject; +use Test\TestCase; + +class TwoFactorSettingsControllerTest extends TestCase { + + /** @var IRequest|MockObject */ + private $request; + + /** @var MandatoryTwoFactor|MockObject */ + private $mandatoryTwoFactor; + + /** @var TwoFactorSettingsController */ + private $controller; + + protected function setUp() { + parent::setUp(); + + $this->request = $this->createMock(IRequest::class); + $this->mandatoryTwoFactor = $this->createMock(MandatoryTwoFactor::class); + + $this->controller = new TwoFactorSettingsController( + 'settings', + $this->request, + $this->mandatoryTwoFactor + ); + } + + public function testIndex() { + $state = new EnforcementState(true); + $this->mandatoryTwoFactor->expects($this->once()) + ->method('getState') + ->willReturn($state); + $expected = new JSONResponse($state); + + $resp = $this->controller->index(); + + $this->assertEquals($expected, $resp); + } + + public function testUpdate() { + $state = new EnforcementState(true); + $this->mandatoryTwoFactor->expects($this->once()) + ->method('setState') + ->with($this->equalTo(new EnforcementState(true))); + $this->mandatoryTwoFactor->expects($this->once()) + ->method('getState') + ->willReturn($state); + $expected = new JSONResponse($state); + + $resp = $this->controller->update(true); + + $this->assertEquals($expected, $resp); + } + +} diff --git a/apps/settings/tests/Controller/UsersControllerTest.php b/apps/settings/tests/Controller/UsersControllerTest.php new file mode 100644 index 00000000000..5ca45297c58 --- /dev/null +++ b/apps/settings/tests/Controller/UsersControllerTest.php @@ -0,0 +1,552 @@ +<?php +/** + * @author Lukas Reschke + * @copyright 2014-2015 Lukas Reschke lukas@owncloud.com + * + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OCA\Settings\Tests\Controller; + +use OC\Accounts\AccountManager; +use OC\Encryption\Exceptions\ModuleDoesNotExistsException; +use OC\Group\Manager; +use OCA\Settings\Controller\UsersController; +use OCP\App\IAppManager; +use OCP\AppFramework\Http; +use OCP\BackgroundJob\IJobList; +use OCP\Encryption\IEncryptionModule; +use OCP\Encryption\IManager; +use OCP\IAvatarManager; +use OCP\IConfig; +use OCP\IGroupManager; +use OCP\IL10N; +use OCP\ILogger; +use OCP\IRequest; +use OCP\IUser; +use OCP\IUserManager; +use OCP\IUserSession; +use OCP\L10N\IFactory; +use OCP\Mail\IMailer; +use OCP\Security\ISecureRandom; + +/** + * @group DB + * + * @package Tests\Settings\Controller + */ +class UsersControllerTest extends \Test\TestCase { + + /** @var IGroupManager|\PHPUnit_Framework_MockObject_MockObject */ + private $groupManager; + /** @var IUserManager|\PHPUnit_Framework_MockObject_MockObject */ + private $userManager; + /** @var IUserSession|\PHPUnit_Framework_MockObject_MockObject */ + private $userSession; + /** @var IConfig|\PHPUnit_Framework_MockObject_MockObject */ + private $config; + /** @var ILogger|\PHPUnit_Framework_MockObject_MockObject */ + private $logger; + /** @var IMailer|\PHPUnit_Framework_MockObject_MockObject */ + private $mailer; + /** @var IFactory|\PHPUnit_Framework_MockObject_MockObject */ + private $l10nFactory; + /** @var IAppManager|\PHPUnit_Framework_MockObject_MockObject */ + private $appManager; + /** @var IAvatarManager|\PHPUnit_Framework_MockObject_MockObject */ + private $avatarManager; + /** @var IL10N|\PHPUnit_Framework_MockObject_MockObject */ + private $l; + /** @var AccountManager | \PHPUnit_Framework_MockObject_MockObject */ + private $accountManager; + /** @var ISecureRandom | \PHPUnit_Framework_MockObject_MockObject */ + private $secureRandom; + /** @var \OCA\Settings\Mailer\NewUserMailHelper|\PHPUnit_Framework_MockObject_MockObject */ + private $newUserMailHelper; + /** @var IJobList | \PHPUnit_Framework_MockObject_MockObject */ + private $jobList; + /** @var \OC\Security\IdentityProof\Manager |\PHPUnit_Framework_MockObject_MockObject */ + private $securityManager; + /** @var IManager | \PHPUnit_Framework_MockObject_MockObject */ + private $encryptionManager; + /** @var IEncryptionModule | \PHPUnit_Framework_MockObject_MockObject */ + private $encryptionModule; + + protected function setUp() { + parent::setUp(); + + $this->userManager = $this->createMock(IUserManager::class); + $this->groupManager = $this->createMock(Manager::class); + $this->userSession = $this->createMock(IUserSession::class); + $this->config = $this->createMock(IConfig::class); + $this->l = $this->createMock(IL10N::class); + $this->mailer = $this->createMock(IMailer::class); + $this->l10nFactory = $this->createMock(IFactory::class); + $this->appManager = $this->createMock(IAppManager::class); + $this->accountManager = $this->createMock(AccountManager::class); + $this->securityManager = $this->getMockBuilder(\OC\Security\IdentityProof\Manager::class)->disableOriginalConstructor()->getMock(); + $this->jobList = $this->createMock(IJobList::class); + $this->encryptionManager = $this->createMock(IManager::class); + + $this->l->method('t') + ->will($this->returnCallback(function ($text, $parameters = []) { + return vsprintf($text, $parameters); + })); + + $this->encryptionModule = $this->createMock(IEncryptionModule::class); + $this->encryptionManager->expects($this->any())->method('getEncryptionModules') + ->willReturn(['encryptionModule' => ['callback' => function() { return $this->encryptionModule;}]]); + + } + + /** + * @param bool $isAdmin + * @return UsersController | \PHPUnit_Framework_MockObject_MockObject + */ + protected function getController($isAdmin = false, $mockedMethods = []) { + if (empty($mockedMethods)) { + return new UsersController( + 'settings', + $this->createMock(IRequest::class), + $this->userManager, + $this->groupManager, + $this->userSession, + $this->config, + $isAdmin, + $this->l, + $this->mailer, + $this->l10nFactory, + $this->appManager, + $this->accountManager, + $this->securityManager, + $this->jobList, + $this->encryptionManager + ); + } else { + return $this->getMockBuilder(UsersController::class) + ->setConstructorArgs( + [ + 'settings', + $this->createMock(IRequest::class), + $this->userManager, + $this->groupManager, + $this->userSession, + $this->config, + $isAdmin, + $this->l, + $this->mailer, + $this->l10nFactory, + $this->appManager, + $this->accountManager, + $this->securityManager, + $this->jobList, + $this->encryptionManager + ] + )->setMethods($mockedMethods)->getMock(); + } + } + + /** + * @dataProvider dataTestSetUserSettings + * + * @param string $email + * @param bool $validEmail + * @param $expectedStatus + */ + public function testSetUserSettings($email, $validEmail, $expectedStatus) { + $controller = $this->getController(false, ['saveUserSettings']); + $user = $this->createMock(IUser::class); + + $this->userSession->method('getUser')->willReturn($user); + + if (!empty($email) && $validEmail) { + $this->mailer->expects($this->once())->method('validateMailAddress') + ->willReturn($validEmail); + } + + $saveData = (!empty($email) && $validEmail) || empty($email); + + if ($saveData) { + $this->accountManager->expects($this->once()) + ->method('getUser') + ->with($user) + ->willReturn([ + AccountManager::PROPERTY_DISPLAYNAME => + [ + 'value' => 'Display name', + 'scope' => AccountManager::VISIBILITY_CONTACTS_ONLY, + 'verified' => AccountManager::NOT_VERIFIED, + ], + AccountManager::PROPERTY_ADDRESS => + [ + 'value' => '', + 'scope' => AccountManager::VISIBILITY_PRIVATE, + 'verified' => AccountManager::NOT_VERIFIED, + ], + AccountManager::PROPERTY_WEBSITE => + [ + 'value' => '', + 'scope' => AccountManager::VISIBILITY_PRIVATE, + 'verified' => AccountManager::NOT_VERIFIED, + ], + AccountManager::PROPERTY_EMAIL => + [ + 'value' => '', + 'scope' => AccountManager::VISIBILITY_CONTACTS_ONLY, + 'verified' => AccountManager::NOT_VERIFIED, + ], + AccountManager::PROPERTY_AVATAR => + [ + 'scope' => AccountManager::VISIBILITY_CONTACTS_ONLY + ], + AccountManager::PROPERTY_PHONE => + [ + 'value' => '', + 'scope' => AccountManager::VISIBILITY_PRIVATE, + 'verified' => AccountManager::NOT_VERIFIED, + ], + AccountManager::PROPERTY_TWITTER => + [ + 'value' => '', + 'scope' => AccountManager::VISIBILITY_PRIVATE, + 'verified' => AccountManager::NOT_VERIFIED, + ], + ]); + + $controller->expects($this->once())->method('saveUserSettings'); + } else { + $controller->expects($this->never())->method('saveUserSettings'); + } + + $result = $controller->setUserSettings( + AccountManager::VISIBILITY_CONTACTS_ONLY, + 'displayName', + AccountManager::VISIBILITY_CONTACTS_ONLY, + '47658468', + AccountManager::VISIBILITY_CONTACTS_ONLY, + $email, + AccountManager::VISIBILITY_CONTACTS_ONLY, + 'nextcloud.com', + AccountManager::VISIBILITY_CONTACTS_ONLY, + 'street and city', + AccountManager::VISIBILITY_CONTACTS_ONLY, + '@nextclouders', + AccountManager::VISIBILITY_CONTACTS_ONLY + ); + + $this->assertSame($expectedStatus, $result->getStatus()); + } + + public function dataTestSetUserSettings() { + return [ + ['', true, Http::STATUS_OK], + ['', false, Http::STATUS_OK], + ['example.com', false, Http::STATUS_UNPROCESSABLE_ENTITY], + ['john@example.com', true, Http::STATUS_OK], + ]; + } + + /** + * @dataProvider dataTestSaveUserSettings + * + * @param array $data + * @param string $oldEmailAddress + * @param string $oldDisplayName + */ + public function testSaveUserSettings($data, + $oldEmailAddress, + $oldDisplayName + ) { + $controller = $this->getController(); + $user = $this->createMock(IUser::class); + + $user->method('getDisplayName')->willReturn($oldDisplayName); + $user->method('getEMailAddress')->willReturn($oldEmailAddress); + $user->method('canChangeDisplayName')->willReturn(true); + + if ($data[AccountManager::PROPERTY_EMAIL]['value'] === $oldEmailAddress || + ($oldEmailAddress === null && $data[AccountManager::PROPERTY_EMAIL]['value'] === '')) { + $user->expects($this->never())->method('setEMailAddress'); + } else { + $user->expects($this->once())->method('setEMailAddress') + ->with($data[AccountManager::PROPERTY_EMAIL]['value']) + ->willReturn(true); + } + + if ($data[AccountManager::PROPERTY_DISPLAYNAME]['value'] === $oldDisplayName || + ($oldDisplayName === null && $data[AccountManager::PROPERTY_DISPLAYNAME]['value'] === '')) { + $user->expects($this->never())->method('setDisplayName'); + } else { + $user->expects($this->once())->method('setDisplayName') + ->with($data[AccountManager::PROPERTY_DISPLAYNAME]['value']) + ->willReturn(true); + } + + $this->accountManager->expects($this->once())->method('updateUser') + ->with($user, $data); + + $this->invokePrivate($controller, 'saveUserSettings', [$user, $data]); + } + + public function dataTestSaveUserSettings() { + return [ + [ + [ + AccountManager::PROPERTY_EMAIL => ['value' => 'john@example.com'], + AccountManager::PROPERTY_DISPLAYNAME => ['value' => 'john doe'], + ], + 'john@example.com', + 'john doe' + ], + [ + [ + AccountManager::PROPERTY_EMAIL => ['value' => 'john@example.com'], + AccountManager::PROPERTY_DISPLAYNAME => ['value' => 'john doe'], + ], + 'johnNew@example.com', + 'john New doe' + ], + [ + [ + AccountManager::PROPERTY_EMAIL => ['value' => 'john@example.com'], + AccountManager::PROPERTY_DISPLAYNAME => ['value' => 'john doe'], + ], + 'johnNew@example.com', + 'john doe' + ], + [ + [ + AccountManager::PROPERTY_EMAIL => ['value' => 'john@example.com'], + AccountManager::PROPERTY_DISPLAYNAME => ['value' => 'john doe'], + ], + 'john@example.com', + 'john New doe' + ], + [ + [ + AccountManager::PROPERTY_EMAIL => ['value' => ''], + AccountManager::PROPERTY_DISPLAYNAME => ['value' => 'john doe'], + ], + null, + 'john New doe' + ], + [ + [ + AccountManager::PROPERTY_EMAIL => ['value' => 'john@example.com'], + AccountManager::PROPERTY_DISPLAYNAME => ['value' => 'john doe'], + ], + 'john@example.com', + null + ], + + ]; + } + + /** + * @dataProvider dataTestSaveUserSettingsException + * + * @param array $data + * @param string $oldEmailAddress + * @param string $oldDisplayName + * @param bool $setDisplayNameResult + * @param bool $canChangeEmail + * + * @expectedException \OC\ForbiddenException + */ + public function testSaveUserSettingsException($data, + $oldEmailAddress, + $oldDisplayName, + $setDisplayNameResult, + $canChangeEmail + ) { + $controller = $this->getController(); + $user = $this->createMock(IUser::class); + + $user->method('getDisplayName')->willReturn($oldDisplayName); + $user->method('getEMailAddress')->willReturn($oldEmailAddress); + + if ($data[AccountManager::PROPERTY_EMAIL]['value'] !== $oldEmailAddress) { + $user->method('canChangeDisplayName') + ->willReturn($canChangeEmail); + } + + if ($data[AccountManager::PROPERTY_DISPLAYNAME]['value'] !== $oldDisplayName) { + $user->method('setDisplayName') + ->with($data[AccountManager::PROPERTY_DISPLAYNAME]['value']) + ->willReturn($setDisplayNameResult); + } + + $this->invokePrivate($controller, 'saveUserSettings', [$user, $data]); + } + + + public function dataTestSaveUserSettingsException() { + return [ + [ + [ + AccountManager::PROPERTY_EMAIL => ['value' => 'john@example.com'], + AccountManager::PROPERTY_DISPLAYNAME => ['value' => 'john doe'], + ], + 'johnNew@example.com', + 'john New doe', + true, + false + ], + [ + [ + AccountManager::PROPERTY_EMAIL => ['value' => 'john@example.com'], + AccountManager::PROPERTY_DISPLAYNAME => ['value' => 'john doe'], + ], + 'johnNew@example.com', + 'john New doe', + false, + true + ], + [ + [ + AccountManager::PROPERTY_EMAIL => ['value' => 'john@example.com'], + AccountManager::PROPERTY_DISPLAYNAME => ['value' => 'john doe'], + ], + 'johnNew@example.com', + 'john New doe', + false, + false + ], + + ]; + } + + /** + * @param string $account + * @param string $type + * @param array $dataBefore + * @param array $expectedData + * + * @dataProvider dataTestGetVerificationCode + */ + public function testGetVerificationCode($account, $type, $dataBefore, $expectedData, $onlyVerificationCode) { + + $message = 'Use my Federated Cloud ID to share with me: user@nextcloud.com'; + $signature = 'theSignature'; + + $code = $message . ' ' . $signature; + if($type === AccountManager::PROPERTY_TWITTER) { + $code = $message . ' ' . md5($signature); + } + + $controller = $this->getController(false, ['signMessage', 'getCurrentTime']); + + $user = $this->createMock(IUser::class); + $this->userSession->expects($this->once())->method('getUser')->willReturn($user); + $this->accountManager->expects($this->once())->method('getUser')->with($user)->willReturn($dataBefore); + $user->expects($this->any())->method('getCloudId')->willReturn('user@nextcloud.com'); + $user->expects($this->any())->method('getUID')->willReturn('uid'); + $controller->expects($this->once())->method('signMessage')->with($user, $message)->willReturn($signature); + $controller->expects($this->any())->method('getCurrentTime')->willReturn(1234567); + + if ($onlyVerificationCode === false) { + $this->accountManager->expects($this->once())->method('updateUser')->with($user, $expectedData); + $this->jobList->expects($this->once())->method('add') + ->with('OCA\Settings\BackgroundJobs\VerifyUserData', + [ + 'verificationCode' => $code, + 'data' => $dataBefore[$type]['value'], + 'type' => $type, + 'uid' => 'uid', + 'try' => 0, + 'lastRun' => 1234567 + ]); + } + + $result = $controller->getVerificationCode($account, $onlyVerificationCode); + + $data = $result->getData(); + $this->assertSame(Http::STATUS_OK, $result->getStatus()); + $this->assertSame($code, $data['code']); + } + + public function dataTestGetVerificationCode() { + + $accountDataBefore = [ + AccountManager::PROPERTY_WEBSITE => ['value' => 'https://nextcloud.com', 'verified' => AccountManager::NOT_VERIFIED], + AccountManager::PROPERTY_TWITTER => ['value' => '@nextclouders', 'verified' => AccountManager::NOT_VERIFIED, 'signature' => 'theSignature'], + ]; + + $accountDataAfterWebsite = [ + AccountManager::PROPERTY_WEBSITE => ['value' => 'https://nextcloud.com', 'verified' => AccountManager::VERIFICATION_IN_PROGRESS, 'signature' => 'theSignature'], + AccountManager::PROPERTY_TWITTER => ['value' => '@nextclouders', 'verified' => AccountManager::NOT_VERIFIED, 'signature' => 'theSignature'], + ]; + + $accountDataAfterTwitter = [ + AccountManager::PROPERTY_WEBSITE => ['value' => 'https://nextcloud.com', 'verified' => AccountManager::NOT_VERIFIED], + AccountManager::PROPERTY_TWITTER => ['value' => '@nextclouders', 'verified' => AccountManager::VERIFICATION_IN_PROGRESS, 'signature' => 'theSignature'], + ]; + + return [ + ['verify-twitter', AccountManager::PROPERTY_TWITTER, $accountDataBefore, $accountDataAfterTwitter, false], + ['verify-website', AccountManager::PROPERTY_WEBSITE, $accountDataBefore, $accountDataAfterWebsite, false], + ['verify-twitter', AccountManager::PROPERTY_TWITTER, $accountDataBefore, $accountDataAfterTwitter, true], + ['verify-website', AccountManager::PROPERTY_WEBSITE, $accountDataBefore, $accountDataAfterWebsite, true], + ]; + } + + /** + * test get verification code in case no valid user was given + */ + public function testGetVerificationCodeInvalidUser() { + + $controller = $this->getController(); + $this->userSession->expects($this->once())->method('getUser')->willReturn(null); + $result = $controller->getVerificationCode('account', false); + + $this->assertSame(Http::STATUS_BAD_REQUEST, $result->getStatus()); + } + + /** + * @dataProvider dataTestCanAdminChangeUserPasswords + * + * @param bool $encryptionEnabled + * @param bool $encryptionModuleLoaded + * @param bool $masterKeyEnabled + * @param bool $expected + */ + public function testCanAdminChangeUserPasswords($encryptionEnabled, + $encryptionModuleLoaded, + $masterKeyEnabled, + $expected) { + $controller = $this->getController(); + + $this->encryptionManager->expects($this->any()) + ->method('isEnabled') + ->willReturn($encryptionEnabled); + $this->encryptionManager->expects($this->any()) + ->method('getEncryptionModule') + ->willReturnCallback(function() use ($encryptionModuleLoaded) { + if ($encryptionModuleLoaded) return $this->encryptionModule; + else throw new ModuleDoesNotExistsException(); + }); + $this->encryptionModule->expects($this->any()) + ->method('needDetailedAccessList') + ->willReturn(!$masterKeyEnabled); + + $result = $this->invokePrivate($controller, 'canAdminChangeUserPasswords', []); + $this->assertSame($expected, $result); + } + + public function dataTestCanAdminChangeUserPasswords() { + return [ + // encryptionEnabled, encryptionModuleLoaded, masterKeyEnabled, expectedResult + [true, true, true, true], + [false, true, true, true], + [true, false, true, false], + [false, false, true, true], + [true, true, false, false], + [false, true, false, false], + [true, false, false, false], + [false, false, false, true], + ]; + } + +} diff --git a/apps/settings/tests/Mailer/NewUserMailHelperTest.php b/apps/settings/tests/Mailer/NewUserMailHelperTest.php new file mode 100644 index 00000000000..20e6612f94e --- /dev/null +++ b/apps/settings/tests/Mailer/NewUserMailHelperTest.php @@ -0,0 +1,881 @@ +<?php +/** + * @copyright Copyright (c) 2017 Lukas Reschke <lukas@statuscode.ch> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\Settings\Tests\Mailer; + +use OC\Mail\EMailTemplate; +use OCP\L10N\IFactory; +use OCP\Mail\IEMailTemplate; +use OC\Mail\Message; +use OCA\Settings\Mailer\NewUserMailHelper; +use OCP\AppFramework\Utility\ITimeFactory; +use OCP\Defaults; +use OCP\IConfig; +use OCP\IL10N; +use OCP\IURLGenerator; +use OCP\IUser; +use OCP\Mail\IMailer; +use OCP\Security\ICrypto; +use OCP\Security\ISecureRandom; +use Test\TestCase; + +class NewUserMailHelperTest extends TestCase { + /** @var Defaults|\PHPUnit_Framework_MockObject_MockObject */ + private $defaults; + /** @var IURLGenerator|\PHPUnit_Framework_MockObject_MockObject */ + private $urlGenerator; + /** @var IL10N|\PHPUnit_Framework_MockObject_MockObject */ + private $l10n; + /** @var IMailer|\PHPUnit_Framework_MockObject_MockObject */ + private $mailer; + /** @var ISecureRandom|\PHPUnit_Framework_MockObject_MockObject */ + private $secureRandom; + /** @var ITimeFactory|\PHPUnit_Framework_MockObject_MockObject */ + private $timeFactory; + /** @var IConfig|\PHPUnit_Framework_MockObject_MockObject */ + private $config; + /** @var ICrypto|\PHPUnit_Framework_MockObject_MockObject */ + private $crypto; + /** @var \OCA\Settings\Mailer\NewUserMailHelper */ + private $newUserMailHelper; + + public function setUp() { + parent::setUp(); + + $this->defaults = $this->createMock(Defaults::class); + $this->defaults->method('getLogo') + ->willReturn('myLogo'); + $this->urlGenerator = $this->createMock(IURLGenerator::class); + $this->l10n = $this->createMock(IL10N::class); + $this->l10nFactory = $this->createMock(IFactory::class); + $this->mailer = $this->createMock(IMailer::class); + $template = new EMailTemplate( + $this->defaults, + $this->urlGenerator, + $this->l10n, + 'test.TestTemplate', + [] + ); + $this->mailer->method('createEMailTemplate') + ->will($this->returnValue($template)); + $this->secureRandom = $this->createMock(ISecureRandom::class); + $this->timeFactory = $this->createMock(ITimeFactory::class); + $this->config = $this->createMock(IConfig::class); + $this->config + ->expects($this->any()) + ->method('getSystemValue') + ->willReturnCallback(function($arg) { + switch ($arg) { + case 'secret': + return 'MyInstanceWideSecret'; + case 'customclient_desktop': + return 'https://nextcloud.com/install/#install-clients'; + } + return ''; + }); + $this->crypto = $this->createMock(ICrypto::class); + $this->l10n->method('t') + ->will($this->returnCallback(function ($text, $parameters = []) { + return vsprintf($text, $parameters); + })); + $this->l10nFactory->method('get') + ->will($this->returnCallback(function ($text, $lang) { + return $this->l10n; + })); + + $this->newUserMailHelper = new \OCA\Settings\Mailer\NewUserMailHelper( + $this->defaults, + $this->urlGenerator, + $this->l10nFactory, + $this->mailer, + $this->secureRandom, + $this->timeFactory, + $this->config, + $this->crypto, + 'no-reply@nextcloud.com' + ); + } + + public function testGenerateTemplateWithPasswordResetToken() { + $this->secureRandom + ->expects($this->once()) + ->method('generate') + ->with(21, + ISecureRandom::CHAR_DIGITS . + ISecureRandom::CHAR_LOWER . + ISecureRandom::CHAR_UPPER + ) + ->willReturn('MySuperLongSecureRandomToken'); + $this->timeFactory + ->expects($this->once()) + ->method('getTime') + ->willReturn('12345'); + /** @var IUser|\PHPUnit_Framework_MockObject_MockObject $user */ + $user = $this->createMock(IUser::class); + $user + ->expects($this->any()) + ->method('getEmailAddress') + ->willReturn('recipient@example.com'); + $this->crypto + ->expects($this->once()) + ->method('encrypt') + ->with('12345:MySuperLongSecureRandomToken', 'recipient@example.comMyInstanceWideSecret') + ->willReturn('TokenCiphertext'); + $user + ->expects($this->any()) + ->method('getUID') + ->willReturn('john'); + $this->config + ->expects($this->once()) + ->method('setUserValue') + ->with('john', 'core', 'lostpassword', 'TokenCiphertext'); + $this->urlGenerator + ->expects($this->at(0)) + ->method('linkToRouteAbsolute') + ->with('core.lost.resetform', ['userId' => 'john', 'token' => 'MySuperLongSecureRandomToken']) + ->willReturn('https://example.com/resetPassword/MySuperLongSecureRandomToken'); + $user + ->expects($this->any()) + ->method('getDisplayName') + ->willReturn('john'); + $user + ->expects($this->at(5)) + ->method('getUID') + ->willReturn('john'); + $this->defaults + ->expects($this->any()) + ->method('getName') + ->willReturn('TestCloud'); + $this->defaults + ->expects($this->any()) + ->method('getTextColorPrimary') + ->willReturn('#ffffff'); + + $expectedHtmlBody = <<<EOF +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en" style="-webkit-font-smoothing:antialiased;background:#f3f3f3!important"> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> + <meta name="viewport" content="width=device-width"> + <title> + + + + + + + + +
    +
    + + + +
    + + + + + + +
    + + + +
    + +
    + + +
    +
    +
    + + + + + + +
     
    + + + + + +
    +

    Welcome aboard

    +
    + + + + + + +
     
    + + + +
    + + + + + + +
    + + + + + + +
     
    + + + + + +
    + + + + + +
    +

    Welcome to your TestCloud account, you can add, protect, and share your data.

    +
    +
    + + + + + +
    + + + + + +
    +

    Your username is: john

    +
    +
    + + + + + +
     
    + + + + + + +
    + + + + + +
    +
    + + + + +
    + + + + +
    + Set your password +
    +
    + + + + +
    + + + + +
    + Install Client +
    +
    +
    +
    +
    +
    +
    + + + + + +
     
    + + + + +
    +
    + +
                                                               
    + + +EOF; + $expectedTextBody = <<newUserMailHelper->generateTemplate($user, true); + $this->assertEquals($expectedHtmlBody, $result->renderHtml()); + $this->assertEquals($expectedTextBody, $result->renderText()); + $this->assertSame('OC\Mail\EMailTemplate', get_class($result)); + } + + public function testGenerateTemplateWithoutPasswordResetToken() { + $this->urlGenerator + ->expects($this->at(0)) + ->method('getAbsoluteURL') + ->with('/') + ->willReturn('https://example.com/'); + + /** @var IUser|\PHPUnit_Framework_MockObject_MockObject $user */ + $user = $this->createMock(IUser::class); + $user + ->expects($this->any()) + ->method('getDisplayName') + ->willReturn('John Doe'); + $user + ->expects($this->any()) + ->method('getUID') + ->willReturn('john'); + $this->defaults + ->expects($this->any()) + ->method('getName') + ->willReturn('TestCloud'); + $this->defaults + ->expects($this->any()) + ->method('getTextColorPrimary') + ->willReturn('#ffffff'); + + $expectedHtmlBody = << + + + + + + + + + + + + + +
    +
    + + + +
    + + + + + + +
    + + + +
    + +
    + + +
    +
    +
    + + + + + + +
     
    + + + + + +
    +

    Welcome aboard John Doe

    +
    + + + + + + +
     
    + + + +
    + + + + + + +
    + + + + + + +
     
    + + + + + +
    + + + + + +
    +

    Welcome to your TestCloud account, you can add, protect, and share your data.

    +
    +
    + + + + + +
    + + + + + +
    +

    Your username is: john

    +
    +
    + + + + + +
     
    + + + + + + +
    + + + + + +
    +
    + + + + +
    + + + + +
    + Go to TestCloud +
    +
    + + + + +
    + + + + +
    + Install Client +
    +
    +
    +
    +
    +
    +
    + + + + + +
     
    + + + + +
    +
    + +
                                                               
    + + +EOF; + $expectedTextBody = <<newUserMailHelper->generateTemplate($user, false); + $this->assertEquals($expectedHtmlBody, $result->renderHtml()); + $this->assertEquals($expectedTextBody, $result->renderText()); + $this->assertSame('OC\Mail\EMailTemplate', get_class($result)); + } + + public function testGenerateTemplateWithoutUserId() { + $this->urlGenerator + ->expects($this->at(0)) + ->method('getAbsoluteURL') + ->with('/') + ->willReturn('https://example.com/'); + + /** @var IUser|\PHPUnit_Framework_MockObject_MockObject $user */ + $user = $this->createMock(IUser::class); + $user + ->expects($this->any()) + ->method('getDisplayName') + ->willReturn('John Doe'); + $user + ->expects($this->any()) + ->method('getUID') + ->willReturn('john'); + $user + ->expects($this->atLeastOnce()) + ->method('getBackendClassName') + ->willReturn('LDAP'); + $this->defaults + ->expects($this->any()) + ->method('getName') + ->willReturn('TestCloud'); + $this->defaults + ->expects($this->any()) + ->method('getTextColorPrimary') + ->willReturn('#ffffff'); + + $expectedHtmlBody = << + + + + + + + + + + + + + +
    +
    + + + +
    + + + + + + +
    + + + +
    + +
    + + +
    +
    +
    + + + + + + +
     
    + + + + + +
    +

    Welcome aboard John Doe

    +
    + + + + + + +
     
    + + + +
    + + + + + + +
    + + + + + + +
     
    + + + + + +
    + + + + + +
    +

    Welcome to your TestCloud account, you can add, protect, and share your data.

    +
    +
    + + + + + +
     
    + + + + + + +
    + + + + + +
    +
    + + + + +
    + + + + +
    + Go to TestCloud +
    +
    + + + + +
    + + + + +
    + Install Client +
    +
    +
    +
    +
    +
    +
    + + + + + +
     
    + + + + +
    +
    + +
                                                               
    + + +EOF; + $expectedTextBody = <<newUserMailHelper->generateTemplate($user, false); + $this->assertEquals($expectedHtmlBody, $result->renderHtml()); + $this->assertEquals($expectedTextBody, $result->renderText()); + $this->assertSame('OC\Mail\EMailTemplate', get_class($result)); + } + + public function testSendMail() { + /** @var IUser|\PHPUnit_Framework_MockObject_MockObject $user */ + $user = $this->createMock(IUser::class); + $user + ->expects($this->at(0)) + ->method('getEMailAddress') + ->willReturn('recipient@example.com'); + $user + ->expects($this->at(1)) + ->method('getDisplayName') + ->willReturn('John Doe'); + /** @var IEMailTemplate|\PHPUnit_Framework_MockObject_MockObject $emailTemplate */ + $emailTemplate = $this->createMock(IEMailTemplate::class); + $message = $this->createMock(Message::class); + $message + ->expects($this->at(0)) + ->method('setTo') + ->with(['recipient@example.com' => 'John Doe']); + $message + ->expects($this->at(1)) + ->method('setFrom') + ->with(['no-reply@nextcloud.com' => 'TestCloud']); + $message + ->expects($this->at(2)) + ->method('useTemplate') + ->with($emailTemplate); + $this->defaults + ->expects($this->exactly(1)) + ->method('getName') + ->willReturn('TestCloud'); + $this->mailer + ->expects($this->once()) + ->method('createMessage') + ->willReturn($message); + + $this->newUserMailHelper->sendMail($user, $emailTemplate); + } +} diff --git a/apps/settings/tests/Middleware/SubadminMiddlewareTest.php b/apps/settings/tests/Middleware/SubadminMiddlewareTest.php new file mode 100644 index 00000000000..752184bf7c7 --- /dev/null +++ b/apps/settings/tests/Middleware/SubadminMiddlewareTest.php @@ -0,0 +1,104 @@ +reflector = $this->getMockBuilder(ControllerMethodReflector::class) + ->disableOriginalConstructor()->getMock(); + $this->controller = $this->getMockBuilder(Controller::class) + ->disableOriginalConstructor()->getMock(); + $this->l10n = $this->createMock(IL10N::class); + + $this->subadminMiddlewareAsSubAdmin = new SubadminMiddleware($this->reflector, true, $this->l10n); + $this->subadminMiddleware = new SubadminMiddleware($this->reflector, false, $this->l10n); + } + + /** + * @expectedException \OC\AppFramework\Middleware\Security\Exceptions\NotAdminException + */ + public function testBeforeControllerAsUserWithExemption() { + $this->reflector + ->expects($this->once()) + ->method('hasAnnotation') + ->with('NoSubadminRequired') + ->will($this->returnValue(false)); + $this->subadminMiddleware->beforeController($this->controller, 'foo'); + } + + + public function testBeforeControllerAsUserWithoutExemption() { + $this->reflector + ->expects($this->once()) + ->method('hasAnnotation') + ->with('NoSubadminRequired') + ->will($this->returnValue(true)); + $this->subadminMiddleware->beforeController($this->controller, 'foo'); + } + + public function testBeforeControllerAsSubAdminWithoutExemption() { + $this->reflector + ->expects($this->once()) + ->method('hasAnnotation') + ->with('NoSubadminRequired') + ->will($this->returnValue(false)); + $this->subadminMiddlewareAsSubAdmin->beforeController($this->controller, 'foo'); + } + + public function testBeforeControllerAsSubAdminWithExemption() { + $this->reflector + ->expects($this->once()) + ->method('hasAnnotation') + ->with('NoSubadminRequired') + ->will($this->returnValue(true)); + $this->subadminMiddlewareAsSubAdmin->beforeController($this->controller, 'foo'); + } + + public function testAfterNotAdminException() { + $expectedResponse = new TemplateResponse('core', '403', array(), 'guest'); + $expectedResponse->setStatus(403); + $this->assertEquals($expectedResponse, $this->subadminMiddleware->afterException($this->controller, 'foo', new NotAdminException(''))); + } + + /** + * @expectedException \Exception + */ + public function testAfterRegularException() { + $expectedResponse = new TemplateResponse('core', '403', array(), 'guest'); + $expectedResponse->setStatus(403); + $this->subadminMiddleware->afterException($this->controller, 'foo', new \Exception()); + } +} diff --git a/apps/settings/tests/Personal/Security/AuthtokensTest.php b/apps/settings/tests/Personal/Security/AuthtokensTest.php new file mode 100644 index 00000000000..8cb394101e2 --- /dev/null +++ b/apps/settings/tests/Personal/Security/AuthtokensTest.php @@ -0,0 +1,124 @@ + + * + * @author 2019 Christoph Wurst + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +namespace Test\Settings\Personal\Security; + +use OC\Authentication\Token\DefaultToken; +use OC\Authentication\Token\IProvider as IAuthTokenProvider; +use OCA\Settings\Personal\Security; +use OCA\Settings\Personal\Security\Authtokens; +use OCP\AppFramework\Http\TemplateResponse; +use OCP\IInitialStateService; +use OCP\ISession; +use PHPUnit\Framework\MockObject\MockObject; +use Test\TestCase; + +class AuthtokensTest extends TestCase { + + /** @var IAuthTokenProvider|MockObject */ + private $authTokenProvider; + + /** @var ISession|MockObject */ + private $session; + + /** @var IInitialStateService|MockObject */ + private $initialStateService; + + /** @var string */ + private $uid; + + /** @var Security\Authtokens */ + private $section; + + public function setUp() { + parent::setUp(); + + $this->authTokenProvider = $this->createMock(IAuthTokenProvider::class); + $this->session = $this->createMock(ISession::class); + $this->initialStateService = $this->createMock(IInitialStateService::class); + $this->uid = 'test123'; + + $this->section = new Authtokens( + $this->authTokenProvider, + $this->session, + $this->initialStateService, + $this->uid + ); + } + + public function testGetForm() { + $token1 = new DefaultToken(); + $token1->setId(100); + $token2 = new DefaultToken(); + $token2->setId(200); + $tokens = [ + $token1, + $token2, + ]; + $sessionToken = new DefaultToken(); + $sessionToken->setId(100); + + $this->authTokenProvider->expects($this->once()) + ->method('getTokenByUser') + ->with($this->uid) + ->willReturn($tokens); + $this->session->expects($this->once()) + ->method('getId') + ->willReturn('session123'); + $this->authTokenProvider->expects($this->once()) + ->method('getToken') + ->with('session123') + ->willReturn($sessionToken); + $this->initialStateService->expects($this->once()) + ->method('provideInitialState') + ->with('settings', 'app_tokens', [ + [ + 'id' => 100, + 'name' => null, + 'lastActivity' => 0, + 'type' => 0, + 'canDelete' => false, + 'current' => true, + 'scope' => ['filesystem' => true], + 'canRename' => false, + ], + [ + 'id' => 200, + 'name' => null, + 'lastActivity' => 0, + 'type' => 0, + 'canDelete' => true, + 'scope' => ['filesystem' => true], + 'canRename' => true, + ], + ]); + + $form = $this->section->getForm(); + + $expected = new TemplateResponse('settings', 'settings/personal/security/authtokens'); + $this->assertEquals($expected, $form); + } + +} diff --git a/apps/settings/tests/Settings/Admin/MailTest.php b/apps/settings/tests/Settings/Admin/MailTest.php new file mode 100644 index 00000000000..5e26454a6fa --- /dev/null +++ b/apps/settings/tests/Settings/Admin/MailTest.php @@ -0,0 +1,133 @@ + + * + * @author Lukas Reschke + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ + +namespace OCA\Settings\Tests\Settings\Admin; + +use OCA\Settings\Admin\Mail; +use OCP\AppFramework\Http\TemplateResponse; +use OCP\IConfig; +use Test\TestCase; + +class MailTest extends TestCase { + /** @var Mail */ + private $admin; + /** @var IConfig */ + private $config; + + public function setUp() { + parent::setUp(); + $this->config = $this->getMockBuilder(IConfig::class)->getMock(); + + $this->admin = new Mail( + $this->config + ); + } + + public function testGetForm() { + $this->config + ->expects($this->at(0)) + ->method('getSystemValue') + ->with('mail_domain', '') + ->willReturn('mx.nextcloud.com'); + $this->config + ->expects($this->at(1)) + ->method('getSystemValue') + ->with('mail_from_address', '') + ->willReturn('no-reply@nextcloud.com'); + $this->config + ->expects($this->at(2)) + ->method('getSystemValue') + ->with('mail_smtpmode', '') + ->willReturn('smtp'); + $this->config + ->expects($this->at(3)) + ->method('getSystemValue') + ->with('mail_smtpsecure', '') + ->willReturn(true); + $this->config + ->expects($this->at(4)) + ->method('getSystemValue') + ->with('mail_smtphost', '') + ->willReturn('smtp.nextcloud.com'); + $this->config + ->expects($this->at(5)) + ->method('getSystemValue') + ->with('mail_smtpport', '') + ->willReturn(25); + $this->config + ->expects($this->at(6)) + ->method('getSystemValue') + ->with('mail_smtpauthtype', '') + ->willReturn('login'); + $this->config + ->expects($this->at(7)) + ->method('getSystemValue') + ->with('mail_smtpauth', false) + ->willReturn(true); + $this->config + ->expects($this->at(8)) + ->method('getSystemValue') + ->with('mail_smtpname', '') + ->willReturn('smtp.sender.com'); + $this->config + ->expects($this->at(9)) + ->method('getSystemValue') + ->with('mail_smtppassword', '') + ->willReturn('mypassword'); + $this->config + ->expects($this->at(10)) + ->method('getSystemValue') + ->with('mail_sendmailmode', 'smtp') + ->willReturn('smtp'); + + $expected = new TemplateResponse( + 'settings', + 'settings/admin/additional-mail', + [ + 'sendmail_is_available' => (bool) \OC_Helper::findBinaryPath('sendmail'), + 'mail_domain' => 'mx.nextcloud.com', + 'mail_from_address' => 'no-reply@nextcloud.com', + 'mail_smtpmode' => 'smtp', + 'mail_smtpsecure' => true, + 'mail_smtphost' => 'smtp.nextcloud.com', + 'mail_smtpport' => 25, + 'mail_smtpauthtype' => 'login', + 'mail_smtpauth' => true, + 'mail_smtpname' => 'smtp.sender.com', + 'mail_smtppassword' => '********', + 'mail_sendmailmode' => 'smtp', + ], + '' + ); + + $this->assertEquals($expected, $this->admin->getForm()); + } + + public function testGetSection() { + $this->assertSame('server', $this->admin->getSection()); + } + + public function testGetPriority() { + $this->assertSame(10, $this->admin->getPriority()); + } +} diff --git a/apps/settings/tests/Settings/Admin/SecurityTest.php b/apps/settings/tests/Settings/Admin/SecurityTest.php new file mode 100644 index 00000000000..ea9222ab1a7 --- /dev/null +++ b/apps/settings/tests/Settings/Admin/SecurityTest.php @@ -0,0 +1,149 @@ + + * + * @author Lukas Reschke + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ + +namespace OCA\Settings\Tests\Settings\Admin; + +use OC\Authentication\TwoFactorAuth\MandatoryTwoFactor; +use OC\Encryption\Manager; +use OCA\Settings\Admin\Security; +use OCP\AppFramework\Http\TemplateResponse; +use OCP\IInitialStateService; +use OCP\IUserManager; +use PHPUnit\Framework\MockObject\MockObject; +use Test\TestCase; + +class SecurityTest extends TestCase { + /** @var Security */ + private $admin; + /** @var Manager */ + private $manager; + /** @var IUserManager */ + private $userManager; + /** @var MandatoryTwoFactor|MockObject */ + private $mandatoryTwoFactor; + /** @var IInitialStateService|MockObject */ + private $initialState; + + public function setUp() { + parent::setUp(); + $this->manager = $this->getMockBuilder(Manager::class)->disableOriginalConstructor()->getMock(); + $this->userManager = $this->getMockBuilder(IUserManager::class)->getMock(); + $this->mandatoryTwoFactor = $this->createMock(MandatoryTwoFactor::class); + $this->initialState = $this->createMock(IInitialStateService::class); + + $this->admin = new Security( + $this->manager, + $this->userManager, + $this->mandatoryTwoFactor, + $this->initialState + ); + } + + /** + * @return array + */ + public function encryptionSettingsProvider() { + return [ + [true], + [false], + ]; + } + + /** + * @dataProvider encryptionSettingsProvider + * @param bool $enabled + */ + public function testGetFormWithOnlyOneBackend($enabled) { + $this->manager + ->expects($this->once()) + ->method('isEnabled') + ->willReturn($enabled); + $this->manager + ->expects($this->once()) + ->method('isReady') + ->willReturn($enabled); + $this->manager + ->expects($this->once()) + ->method('getEncryptionModules') + ->willReturn([]); + $this->userManager + ->expects($this->once()) + ->method('getBackends') + ->willReturn(['entry']); + $expected = new TemplateResponse( + 'settings', + 'settings/admin/security', + [ + 'encryptionEnabled' => $enabled, + 'encryptionReady' => $enabled, + 'externalBackendsEnabled' => false, + 'encryptionModules' => [] + ], + '' + ); + $this->assertEquals($expected, $this->admin->getForm()); + } + + /** + * @dataProvider encryptionSettingsProvider + * @param bool $enabled + */ + public function testGetFormWithMultipleBackends($enabled) { + $this->manager + ->expects($this->once()) + ->method('isEnabled') + ->willReturn($enabled); + $this->manager + ->expects($this->once()) + ->method('isReady') + ->willReturn($enabled); + $this->manager + ->expects($this->once()) + ->method('getEncryptionModules') + ->willReturn([]); + $this->userManager + ->expects($this->once()) + ->method('getBackends') + ->willReturn(['entry', 'entry']); + $expected = new TemplateResponse( + 'settings', + 'settings/admin/security', + [ + 'encryptionEnabled' => $enabled, + 'encryptionReady' => $enabled, + 'externalBackendsEnabled' => true, + 'encryptionModules' => [] + ], + '' + ); + $this->assertEquals($expected, $this->admin->getForm()); + } + + public function testGetSection() { + $this->assertSame('security', $this->admin->getSection()); + } + + public function testGetPriority() { + $this->assertSame(10, $this->admin->getPriority()); + } +} diff --git a/apps/settings/tests/Settings/Admin/ServerTest.php b/apps/settings/tests/Settings/Admin/ServerTest.php new file mode 100644 index 00000000000..bcb990b6b6b --- /dev/null +++ b/apps/settings/tests/Settings/Admin/ServerTest.php @@ -0,0 +1,85 @@ + + * + * @author Lukas Reschke + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ + +namespace OCA\Settings\Tests\Settings\Admin; + +use OCA\Settings\Admin\Server; +use OCP\AppFramework\Http\TemplateResponse; +use OCP\IConfig; +use Test\TestCase; + +class ServerTest extends TestCase { + /** @var Server */ + private $admin; + /** @var IConfig */ + private $config; + + public function setUp() { + parent::setUp(); + $this->config = $this->createMock(IConfig::class); + + $this->admin = new Server( + $this->config + ); + } + + public function testGetForm() { + $this->config + ->expects($this->at(0)) + ->method('getAppValue') + ->with('core', 'backgroundjobs_mode', 'ajax') + ->willReturn('ajax'); + $this->config + ->expects($this->at(1)) + ->method('getAppValue') + ->with('core', 'lastcron', false) + ->willReturn(false); + $this->config + ->expects($this->at(2)) + ->method('getAppValue') + ->with('core', 'cronErrors') + ->willReturn(''); + $expected = new TemplateResponse( + 'settings', + 'settings/admin/server', + [ + 'backgroundjobs_mode' => 'ajax', + 'lastcron' => false, + 'cronErrors' => '', + 'cli_based_cron_possible' => true, + 'cli_based_cron_user' => function_exists('posix_getpwuid') ? posix_getpwuid(fileowner(\OC::$configDir . 'config.php'))['name'] : '', // to not explode here because of posix extension not being disabled - which is already checked in the line above + ], + '' + ); + + $this->assertEquals($expected, $this->admin->getForm()); + } + + public function testGetSection() { + $this->assertSame('server', $this->admin->getSection()); + } + + public function testGetPriority() { + $this->assertSame(0, $this->admin->getPriority()); + } +} diff --git a/apps/settings/tests/Settings/Admin/SharingTest.php b/apps/settings/tests/Settings/Admin/SharingTest.php new file mode 100644 index 00000000000..91b2edf14b1 --- /dev/null +++ b/apps/settings/tests/Settings/Admin/SharingTest.php @@ -0,0 +1,271 @@ + + * + * @author Lukas Reschke + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ + +namespace OCA\Settings\Tests\Settings\Admin; + +use OCA\Settings\Admin\Sharing; +use OCP\AppFramework\Http\TemplateResponse; +use OCP\Constants; +use OCP\IConfig; +use OCP\IL10N; +use OCP\L10N\IFactory; +use OCP\Share\IManager; +use Test\TestCase; + +class SharingTest extends TestCase { + /** @var Sharing */ + private $admin; + /** @var IConfig */ + private $config; + /** @var IL10N|\PHPUnit_Framework_MockObject_MockObject */ + private $l10n; + /** @var IManager|\PHPUnit_Framework_MockObject_MockObject */ + private $shareManager; + + public function setUp() { + parent::setUp(); + $this->config = $this->getMockBuilder(IConfig::class)->getMock(); + $this->l10n = $this->getMockBuilder(IL10N::class)->getMock(); + + $l10Factory = $this->createMock(IFactory::class); + $l10Factory->method('get') + ->willReturn($this->l10n); + + $this->shareManager = $this->getMockBuilder(IManager::class)->getMock(); + + $this->admin = new Sharing( + $this->config, + $l10Factory, + $this->shareManager + ); + } + + public function testGetFormWithoutExcludedGroups() { + $this->config + ->expects($this->at(0)) + ->method('getAppValue') + ->with('core', 'shareapi_exclude_groups_list', '') + ->willReturn(''); + $this->config + ->expects($this->at(1)) + ->method('getAppValue') + ->with('core', 'shareapi_allow_group_sharing', 'yes') + ->willReturn('yes'); + $this->config + ->expects($this->at(2)) + ->method('getAppValue') + ->with('core', 'shareapi_allow_links', 'yes') + ->willReturn('yes'); + $this->config + ->expects($this->at(3)) + ->method('getAppValue') + ->with('core', 'shareapi_allow_public_upload', 'yes') + ->willReturn('yes'); + $this->config + ->expects($this->at(4)) + ->method('getAppValue') + ->with('core', 'shareapi_allow_resharing', 'yes') + ->willReturn('yes'); + $this->config + ->expects($this->at(5)) + ->method('getAppValue') + ->with('core', 'shareapi_allow_share_dialog_user_enumeration', 'yes') + ->willReturn('yes'); + $this->config + ->expects($this->at(6)) + ->method('getAppValue') + ->with('core', 'shareapi_enabled', 'yes') + ->willReturn('yes'); + $this->config + ->expects($this->at(7)) + ->method('getAppValue') + ->with('core', 'shareapi_default_expire_date', 'no') + ->willReturn('no'); + $this->config + ->expects($this->at(8)) + ->method('getAppValue') + ->with('core', 'shareapi_expire_after_n_days', '7') + ->willReturn('7'); + $this->config + ->expects($this->at(9)) + ->method('getAppValue') + ->with('core', 'shareapi_enforce_expire_date', 'no') + ->willReturn('no'); + $this->config + ->expects($this->at(10)) + ->method('getAppValue') + ->with('core', 'shareapi_exclude_groups', 'no') + ->willReturn('no'); + $this->config + ->expects($this->at(11)) + ->method('getAppValue') + ->with('core', 'shareapi_public_link_disclaimertext', null) + ->willReturn('Lorem ipsum'); + $this->config + ->expects($this->at(12)) + ->method('getAppValue') + ->with('core', 'shareapi_enable_link_password_by_default', 'no') + ->willReturn('yes'); + $this->config + ->expects($this->at(13)) + ->method('getAppValue') + ->with('core', 'shareapi_default_permissions', Constants::PERMISSION_ALL) + ->willReturn(Constants::PERMISSION_ALL); + + $expected = new TemplateResponse( + 'settings', + 'settings/admin/sharing', + [ + 'allowGroupSharing' => 'yes', + 'allowLinks' => 'yes', + 'allowPublicUpload' => 'yes', + 'allowResharing' => 'yes', + 'allowShareDialogUserEnumeration' => 'yes', + 'enforceLinkPassword' => false, + 'onlyShareWithGroupMembers' => false, + 'shareAPIEnabled' => 'yes', + 'shareDefaultExpireDateSet' => 'no', + 'shareExpireAfterNDays' => '7', + 'shareEnforceExpireDate' => 'no', + 'shareExcludeGroups' => false, + 'shareExcludedGroupsList' => '', + 'publicShareDisclaimerText' => 'Lorem ipsum', + 'enableLinkPasswordByDefault' => 'yes', + 'shareApiDefaultPermissions' => Constants::PERMISSION_ALL, + 'shareApiDefaultPermissionsCheckboxes' => $this->invokePrivate($this->admin, 'getSharePermissionList', []) + ], + '' + ); + + $this->assertEquals($expected, $this->admin->getForm()); + } + + public function testGetFormWithExcludedGroups() { + $this->config + ->expects($this->at(0)) + ->method('getAppValue') + ->with('core', 'shareapi_exclude_groups_list', '') + ->willReturn('["NoSharers","OtherNoSharers"]'); + $this->config + ->expects($this->at(1)) + ->method('getAppValue') + ->with('core', 'shareapi_allow_group_sharing', 'yes') + ->willReturn('yes'); + $this->config + ->expects($this->at(2)) + ->method('getAppValue') + ->with('core', 'shareapi_allow_links', 'yes') + ->willReturn('yes'); + $this->config + ->expects($this->at(3)) + ->method('getAppValue') + ->with('core', 'shareapi_allow_public_upload', 'yes') + ->willReturn('yes'); + $this->config + ->expects($this->at(4)) + ->method('getAppValue') + ->with('core', 'shareapi_allow_resharing', 'yes') + ->willReturn('yes'); + $this->config + ->expects($this->at(5)) + ->method('getAppValue') + ->with('core', 'shareapi_allow_share_dialog_user_enumeration', 'yes') + ->willReturn('yes'); + $this->config + ->expects($this->at(6)) + ->method('getAppValue') + ->with('core', 'shareapi_enabled', 'yes') + ->willReturn('yes'); + $this->config + ->expects($this->at(7)) + ->method('getAppValue') + ->with('core', 'shareapi_default_expire_date', 'no') + ->willReturn('no'); + $this->config + ->expects($this->at(8)) + ->method('getAppValue') + ->with('core', 'shareapi_expire_after_n_days', '7') + ->willReturn('7'); + $this->config + ->expects($this->at(9)) + ->method('getAppValue') + ->with('core', 'shareapi_enforce_expire_date', 'no') + ->willReturn('no'); + $this->config + ->expects($this->at(10)) + ->method('getAppValue') + ->with('core', 'shareapi_exclude_groups', 'no') + ->willReturn('yes'); + $this->config + ->expects($this->at(11)) + ->method('getAppValue') + ->with('core', 'shareapi_public_link_disclaimertext', null) + ->willReturn('Lorem ipsum'); + $this->config + ->expects($this->at(12)) + ->method('getAppValue') + ->with('core', 'shareapi_enable_link_password_by_default', 'no') + ->willReturn('yes'); + $this->config + ->expects($this->at(13)) + ->method('getAppValue') + ->with('core', 'shareapi_default_permissions', Constants::PERMISSION_ALL) + ->willReturn(Constants::PERMISSION_ALL); + + + $expected = new TemplateResponse( + 'settings', + 'settings/admin/sharing', + [ + 'allowGroupSharing' => 'yes', + 'allowLinks' => 'yes', + 'allowPublicUpload' => 'yes', + 'allowResharing' => 'yes', + 'allowShareDialogUserEnumeration' => 'yes', + 'enforceLinkPassword' => false, + 'onlyShareWithGroupMembers' => false, + 'shareAPIEnabled' => 'yes', + 'shareDefaultExpireDateSet' => 'no', + 'shareExpireAfterNDays' => '7', + 'shareEnforceExpireDate' => 'no', + 'shareExcludeGroups' => true, + 'shareExcludedGroupsList' => 'NoSharers|OtherNoSharers', + 'publicShareDisclaimerText' => 'Lorem ipsum', + 'enableLinkPasswordByDefault' => 'yes', + 'shareApiDefaultPermissions' => Constants::PERMISSION_ALL, + 'shareApiDefaultPermissionsCheckboxes' => $this->invokePrivate($this->admin, 'getSharePermissionList', []) + ], + '' + ); + + $this->assertEquals($expected, $this->admin->getForm()); + } + + public function testGetSection() { + $this->assertSame('sharing', $this->admin->getSection()); + } + + public function testGetPriority() { + $this->assertSame(0, $this->admin->getPriority()); + } +} diff --git a/apps/settings/tests/Settings/Personal/SecurityTest.php b/apps/settings/tests/Settings/Personal/SecurityTest.php new file mode 100644 index 00000000000..ee72ca00384 --- /dev/null +++ b/apps/settings/tests/Settings/Personal/SecurityTest.php @@ -0,0 +1,119 @@ + + * + * @author 2019 Christoph Wurst + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +namespace OCA\Settings\Tests\Settings\Personal; + +use OC\Authentication\TwoFactorAuth\ProviderLoader; +use OCP\IInitialStateService; +use OCA\Settings\Personal\Security; +use OCP\AppFramework\Http\TemplateResponse; +use OCP\IConfig; +use OCP\IUser; +use OCP\IUserManager; +use OCP\IUserSession; +use PHPUnit\Framework\MockObject\MockObject; +use Test\TestCase; + +class SecurityTest extends TestCase { + + /** @var IInitialStateService|MockObject */ + private $initialStateService; + + /** @var IUserManager|MockObject */ + private $userManager; + + /** @var ProviderLoader|MockObject */ + private $providerLoader; + + /** @var IUserSession|MockObject */ + private $userSession; + + /** @var IConfig|MockObject */ + private $config; + + /** @var string */ + private $uid; + + /** @var Security */ + private $section; + + public function setUp() { + parent::setUp(); + + $this->initialStateService = $this->createMock(IInitialStateService::class); + $this->userManager = $this->createMock(IUserManager::class); + $this->providerLoader = $this->createMock(ProviderLoader::class); + $this->userSession = $this->createMock(IUserSession::class); + $this->config = $this->createMock(IConfig::class); + $this->uid = 'test123'; + + $this->section = new Security( + $this->initialStateService, + $this->userManager, + $this->providerLoader, + $this->userSession, + $this->config, + $this->uid + ); + } + + public function testGetForm() { + $user = $this->createMock(IUser::class); + $this->userManager->expects($this->once()) + ->method('get') + ->with($this->uid) + ->willReturn($user); + $user->expects($this->once()) + ->method('canChangePassword') + ->willReturn(true); + $this->userSession->expects($this->once()) + ->method('getUser') + ->willReturn($user); + $this->providerLoader->expects($this->once()) + ->method('getProviders') + ->with($user) + ->willReturn([]); + $this->config->expects($this->once()) + ->method('getUserValue') + ->with( + $this->uid, + 'accessibility', + 'theme', + false + ) + ->willReturn(false); + + $form = $this->section->getForm(); + + $expected = new TemplateResponse('settings', 'settings/personal/security', [ + 'passwordChangeSupported' => true, + 'twoFactorProviderData' => [ + 'providers' => [], + ], + 'themedark' => false, + ]); + $this->assertEquals($expected, $form); + } + +} diff --git a/apps/settings/webpack.js b/apps/settings/webpack.js new file mode 100644 index 00000000000..7c887861f1e --- /dev/null +++ b/apps/settings/webpack.js @@ -0,0 +1,20 @@ +const path = require('path') + +module.exports = { + entry: { + 'settings-apps-users-management': path.join(__dirname, 'src', 'main-apps-users-management'), + 'settings-admin-security': path.join(__dirname, 'src', 'main-admin-security'), + 'settings-personal-security': path.join(__dirname, 'src', 'main-personal-security') + }, + output: { + path: path.resolve(__dirname, './js'), + publicPath: '/js/', + filename: 'vue-[name].js?v=[chunkhash]', + jsonpFunction: 'webpackJsonpSettings' + }, + optimization: { + splitChunks: { + automaticNameDelimiter: '-', + } + } +} diff --git a/autotest-checkers.sh b/autotest-checkers.sh index abadeeb182b..bb1ad2534fb 100755 --- a/autotest-checkers.sh +++ b/autotest-checkers.sh @@ -29,6 +29,7 @@ for app in $(find "apps/" -mindepth 1 -maxdepth 1 -type d -exec basename {} \;); [ "$app" == "files_trashbin" ] || \ [ "$app" == "files_versions" ] || \ [ "$app" == "provisioning_api" ] || \ + [ "$app" == "settings" ] || \ [ "$app" == "updatenotification" ] || \ [ "$app" == "user_ldap" ] then diff --git a/build/.phan/config.php b/build/.phan/config.php index 9eca03e06e5..17ba333718e 100644 --- a/build/.phan/config.php +++ b/build/.phan/config.php @@ -80,6 +80,8 @@ return [ 'apps/oauth2/tests', 'apps/provisioning_api/composer', 'apps/provisioning_api/tests', + 'apps/settings/composer', + 'apps/settings/tests', 'apps/sharebymail/composer', 'apps/sharebymail/tests', 'apps/systemtags/composer', diff --git a/build/files-checker.php b/build/files-checker.php index 8133b96667d..b985b32f689 100644 --- a/build/files-checker.php +++ b/build/files-checker.php @@ -71,7 +71,6 @@ $expectedFiles = [ 'remote.php', 'resources', 'robots.txt', - 'settings', 'status.php', 'tests', 'themes', diff --git a/build/integration/features/provisioning-v1.feature b/build/integration/features/provisioning-v1.feature index 10b4c1bc005..f8eae1b833b 100644 --- a/build/integration/features/provisioning-v1.feature +++ b/build/integration/features/provisioning-v1.feature @@ -337,6 +337,7 @@ Feature: provisioning | files_versions | | lookup_server_connector | | provisioning_api | + | settings | | sharebymail | | systemtags | | theming | diff --git a/composer.json b/composer.json index 0cace89979c..e3ec84c80e1 100644 --- a/composer.json +++ b/composer.json @@ -10,7 +10,6 @@ "psr-4": { "OC\\": "lib/private", "OC\\Core\\": "core/", - "OC\\Settings\\": "settings/", "OCP\\": "lib/public" } }, diff --git a/core/js/dist/login.js b/core/js/dist/login.js index bfb4f59b399..7340323d865 100644 --- a/core/js/dist/login.js +++ b/core/js/dist/login.js @@ -144,7 +144,7 @@ function Ce(e){for(var t,n=[],r=0,a=-1,i=0;r. */ -var r=["","admin","log","core/search","settings","core","3rdparty"],a=50,i=0,s=4,o=1,u=2,d=8,l=16,c=31,f="_$!!$_"},function(e,t,n){"use strict";n.d(t,"e",(function(){return o})),n.d(t,"h",(function(){return u})),n.d(t,"g",(function(){return d})),n.d(t,"f",(function(){return l})),n.d(t,"b",(function(){return c})),n.d(t,"d",(function(){return f})),n.d(t,"a",(function(){return m})),n.d(t,"c",(function(){return h}));var r=n(2),a=n.n(r),i=n(3),s=n(5),o=function(e,t){return m(e,"",t)},u=function(e){return h()+"/remote.php/"+e},d=function(e){return window.location.protocol+"//"+window.location.host+u(e)},l=function(e,t){return t=2!==t?1:2,window.location.protocol+"//"+window.location.host+h()+"/ocs/v"+t+".php/"+e+"/"},c=function(e,t,n){var r=n||{};a.a.defaults(r,{escape:!0});var s=function(e,t){return t=t||[],e.replace(/{([^{}]*)}/g,(function(e,n){var a=t[n];return r.escape?"string"==typeof a||"number"==typeof a?encodeURIComponent(a):encodeURIComponent(e):"string"==typeof a||"number"==typeof a?a:e}))};return"/"!==e.charAt(0)&&(e="/"+e),!0===i.a.config.modRewriteWorking?h()+s(e,t):h()+"/index.php"+s(e,t)},f=function(e,t){return-1===t.indexOf(".")?m(e,"img",t+".svg"):m(e,"img",t)},m=function(e,t,n){var r=-1!==s.i.indexOf(e),a=h();return"php"!==n.substring(n.length-3)||r?"php"===n.substring(n.length-3)||r?(a+="settings"!==e&&"core"!==e&&"search"!==e||"ajax"!==t?"/":"/index.php/",r||(a+="apps/"),""!==e&&(a+=e+="/"),t&&(a+=t+"/"),a+=n):(a=i.a.appswebroots[e],t&&(a+="/"+t+"/"),"/"!==a.substring(a.length-1)&&(a+="/"),a+=n):(a+="/index.php/apps/"+e,"index.php"!==n&&(a+="/",t&&(a+=encodeURI(t+"/")),a+=n)),a},h=function(){return i.a.webroot}},,,,,function(e,t,n){"use strict";t.__esModule=!0,t.extend=o,t.indexOf=function(e,t){for(var n=0,r=e.length;n":">",'"':""","'":"'","`":"`","=":"="},a=/[&<>"'`=]/g,i=/[&<>"'`=]/;function s(e){return r[e]}function o(e){for(var t=1;tthis.length&&(a=this.length),a<0&&(a+=this.length+1);var i,s,o=[],u=[],d=[],l=[],c={},f=t.add,m=t.merge,h=t.remove,_=!1,p=this.comparator&&null==a&&!1!==t.sort,y=n.isString(this.comparator)?this.comparator:null;for(s=0;s7),this._useHashChange=this._wantsHashChange&&this._hasHashChange,this._wantsPushState=!!this.options.pushState,this._hasPushState=!(!this.history||!this.history.pushState),this._usePushState=this._wantsPushState&&this._hasPushState,this.fragment=this.getFragment(),this.root=("/"+this.root+"/").replace(R,"/"),this._wantsHashChange&&this._wantsPushState){if(!this._hasPushState&&!this.atRoot()){var t=this.root.slice(0,-1)||"/";return this.location.replace(t+"#"+this.getPath()),!0}this._hasPushState&&this.atRoot()&&this.navigate(this.getHash(),{replace:!0})}if(!this._hasHashChange&&this._wantsHashChange&&!this._usePushState){this.iframe=document.createElement("iframe"),this.iframe.src="javascript:0",this.iframe.style.display="none",this.iframe.tabIndex=-1;var r=document.body,a=r.insertBefore(this.iframe,r.firstChild).contentWindow;a.document.open(),a.document.close(),a.location.hash="#"+this.fragment}var i=window.addEventListener||function(e,t){return attachEvent("on"+e,t)};if(this._usePushState?i("popstate",this.checkUrl,!1):this._useHashChange&&!this.iframe?i("hashchange",this.checkUrl,!1):this._wantsHashChange&&(this._checkUrlInterval=setInterval(this.checkUrl,this.interval)),!this.options.silent)return this.loadUrl()},stop:function(){var e=window.removeEventListener||function(e,t){return detachEvent("on"+e,t)};this._usePushState?e("popstate",this.checkUrl,!1):this._useHashChange&&!this.iframe&&e("hashchange",this.checkUrl,!1),this.iframe&&(document.body.removeChild(this.iframe),this.iframe=null),this._checkUrlInterval&&clearInterval(this._checkUrlInterval),I.started=!1},route:function(e,t){this.handlers.unshift({route:e,callback:t})},checkUrl:function(e){var t=this.getFragment();if(t===this.fragment&&this.iframe&&(t=this.getHash(this.iframe.contentWindow)),t===this.fragment)return!1;this.iframe&&this.navigate(t),this.loadUrl()},loadUrl:function(e){return!!this.matchRoot()&&(e=this.fragment=this.getFragment(e),n.some(this.handlers,(function(t){if(t.route.test(e))return t.callback(e),!0})))},navigate:function(e,t){if(!I.started)return!1;t&&!0!==t||(t={trigger:!!t}),e=this.getFragment(e||"");var n=this.root;""!==e&&"?"!==e.charAt(0)||(n=n.slice(0,-1)||"/");var r=n+e;e=e.replace($,"");var a=this.decodeFragment(e);if(this.fragment!==a){if(this.fragment=a,this._usePushState)this.history[t.replace?"replaceState":"pushState"]({},document.title,r);else{if(!this._wantsHashChange)return this.location.assign(r);if(this._updateHash(this.location,e,t.replace),this.iframe&&e!==this.getHash(this.iframe.contentWindow)){var i=this.iframe.contentWindow;t.replace||(i.document.open(),i.document.close()),this._updateHash(i.location,e,t.replace)}}return t.trigger?this.loadUrl(e):void 0}},_updateHash:function(e,t,n){if(n){var r=e.href.replace(/(javascript:|#).*$/,"");e.replace(r+"#"+t)}else e.hash="#"+t}}),t.history=new I,y.extend=v.extend=P.extend=D.extend=I.extend=function(e,t){var r,a=this;return r=e&&n.has(e,"constructor")?e.constructor:function(){return a.apply(this,arguments)},n.extend(r,a,t),r.prototype=n.create(a.prototype,e),r.prototype.constructor=r,r.__super__=a.prototype,r};var z=function(){throw new Error('A "url" property or function must be specified')},U=function(e,t){var n=t.error;t.error=function(r){n&&n.call(t.context,e,r,t),e.trigger("error",e,r,t)}};return t}(s,n,e,t)}.apply(t,a))||(e.exports=i)}).call(this,n(26))},function(e,t,n){"use strict";var r=n(2),a=n.n(r),i=n(0),s=n.n(i),o=n(19),u=n.n(o),d=n(30),l=n.n(d),c=n(3); +var r=["","admin","log","core/search","core","3rdparty"],a=50,i=0,s=4,o=1,u=2,d=8,l=16,c=31,f="_$!!$_"},function(e,t,n){"use strict";n.d(t,"e",(function(){return o})),n.d(t,"h",(function(){return u})),n.d(t,"g",(function(){return d})),n.d(t,"f",(function(){return l})),n.d(t,"b",(function(){return c})),n.d(t,"d",(function(){return f})),n.d(t,"a",(function(){return m})),n.d(t,"c",(function(){return h}));var r=n(2),a=n.n(r),i=n(3),s=n(5),o=function(e,t){return m(e,"",t)},u=function(e){return h()+"/remote.php/"+e},d=function(e){return window.location.protocol+"//"+window.location.host+u(e)},l=function(e,t){return t=2!==t?1:2,window.location.protocol+"//"+window.location.host+h()+"/ocs/v"+t+".php/"+e+"/"},c=function(e,t,n){var r=n||{};a.a.defaults(r,{escape:!0});var s=function(e,t){return t=t||[],e.replace(/{([^{}]*)}/g,(function(e,n){var a=t[n];return r.escape?"string"==typeof a||"number"==typeof a?encodeURIComponent(a):encodeURIComponent(e):"string"==typeof a||"number"==typeof a?a:e}))};return"/"!==e.charAt(0)&&(e="/"+e),!0===i.a.config.modRewriteWorking?h()+s(e,t):h()+"/index.php"+s(e,t)},f=function(e,t){return-1===t.indexOf(".")?m(e,"img",t+".svg"):m(e,"img",t)},m=function(e,t,n){var r=-1!==s.i.indexOf(e),a=h();return"php"!==n.substring(n.length-3)||r?"php"===n.substring(n.length-3)||r?(a+="core"!==e&&"search"!==e||"ajax"!==t?"/":"/index.php/",r||(a+="apps/"),""!==e&&(a+=e+="/"),t&&(a+=t+"/"),a+=n):(a=i.a.appswebroots[e],t&&(a+="/"+t+"/"),"/"!==a.substring(a.length-1)&&(a+="/"),a+=n):(a+="/index.php/apps/"+e,"index.php"!==n&&(a+="/",t&&(a+=encodeURI(t+"/")),a+=n)),a},h=function(){return i.a.webroot}},,,,,function(e,t,n){"use strict";t.__esModule=!0,t.extend=o,t.indexOf=function(e,t){for(var n=0,r=e.length;n":">",'"':""","'":"'","`":"`","=":"="},a=/[&<>"'`=]/g,i=/[&<>"'`=]/;function s(e){return r[e]}function o(e){for(var t=1;tthis.length&&(a=this.length),a<0&&(a+=this.length+1);var i,s,o=[],u=[],d=[],l=[],c={},f=t.add,m=t.merge,h=t.remove,_=!1,p=this.comparator&&null==a&&!1!==t.sort,y=n.isString(this.comparator)?this.comparator:null;for(s=0;s7),this._useHashChange=this._wantsHashChange&&this._hasHashChange,this._wantsPushState=!!this.options.pushState,this._hasPushState=!(!this.history||!this.history.pushState),this._usePushState=this._wantsPushState&&this._hasPushState,this.fragment=this.getFragment(),this.root=("/"+this.root+"/").replace(R,"/"),this._wantsHashChange&&this._wantsPushState){if(!this._hasPushState&&!this.atRoot()){var t=this.root.slice(0,-1)||"/";return this.location.replace(t+"#"+this.getPath()),!0}this._hasPushState&&this.atRoot()&&this.navigate(this.getHash(),{replace:!0})}if(!this._hasHashChange&&this._wantsHashChange&&!this._usePushState){this.iframe=document.createElement("iframe"),this.iframe.src="javascript:0",this.iframe.style.display="none",this.iframe.tabIndex=-1;var r=document.body,a=r.insertBefore(this.iframe,r.firstChild).contentWindow;a.document.open(),a.document.close(),a.location.hash="#"+this.fragment}var i=window.addEventListener||function(e,t){return attachEvent("on"+e,t)};if(this._usePushState?i("popstate",this.checkUrl,!1):this._useHashChange&&!this.iframe?i("hashchange",this.checkUrl,!1):this._wantsHashChange&&(this._checkUrlInterval=setInterval(this.checkUrl,this.interval)),!this.options.silent)return this.loadUrl()},stop:function(){var e=window.removeEventListener||function(e,t){return detachEvent("on"+e,t)};this._usePushState?e("popstate",this.checkUrl,!1):this._useHashChange&&!this.iframe&&e("hashchange",this.checkUrl,!1),this.iframe&&(document.body.removeChild(this.iframe),this.iframe=null),this._checkUrlInterval&&clearInterval(this._checkUrlInterval),I.started=!1},route:function(e,t){this.handlers.unshift({route:e,callback:t})},checkUrl:function(e){var t=this.getFragment();if(t===this.fragment&&this.iframe&&(t=this.getHash(this.iframe.contentWindow)),t===this.fragment)return!1;this.iframe&&this.navigate(t),this.loadUrl()},loadUrl:function(e){return!!this.matchRoot()&&(e=this.fragment=this.getFragment(e),n.some(this.handlers,(function(t){if(t.route.test(e))return t.callback(e),!0})))},navigate:function(e,t){if(!I.started)return!1;t&&!0!==t||(t={trigger:!!t}),e=this.getFragment(e||"");var n=this.root;""!==e&&"?"!==e.charAt(0)||(n=n.slice(0,-1)||"/");var r=n+e;e=e.replace($,"");var a=this.decodeFragment(e);if(this.fragment!==a){if(this.fragment=a,this._usePushState)this.history[t.replace?"replaceState":"pushState"]({},document.title,r);else{if(!this._wantsHashChange)return this.location.assign(r);if(this._updateHash(this.location,e,t.replace),this.iframe&&e!==this.getHash(this.iframe.contentWindow)){var i=this.iframe.contentWindow;t.replace||(i.document.open(),i.document.close()),this._updateHash(i.location,e,t.replace)}}return t.trigger?this.loadUrl(e):void 0}},_updateHash:function(e,t,n){if(n){var r=e.href.replace(/(javascript:|#).*$/,"");e.replace(r+"#"+t)}else e.hash="#"+t}}),t.history=new I,y.extend=v.extend=P.extend=D.extend=I.extend=function(e,t){var r,a=this;return r=e&&n.has(e,"constructor")?e.constructor:function(){return a.apply(this,arguments)},n.extend(r,a,t),r.prototype=n.create(a.prototype,e),r.prototype.constructor=r,r.__super__=a.prototype,r};var z=function(){throw new Error('A "url" property or function must be specified')},U=function(e,t){var n=t.error;t.error=function(r){n&&n.call(t.context,e,r,t),e.trigger("error",e,r,t)}};return t}(s,n,e,t)}.apply(t,a))||(e.exports=i)}).call(this,n(26))},function(e,t,n){"use strict";var r=n(2),a=n.n(r),i=n(0),s=n.n(i),o=n(19),u=n.n(o),d=n(30),l=n.n(d),c=n(3); /* * @copyright 2019 Christoph Wurst * diff --git a/core/js/dist/login.js.map b/core/js/dist/login.js.map index 972466d5aaf..bf60389bd3a 100644 --- a/core/js/dist/login.js.map +++ b/core/js/dist/login.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///./node_modules/moment/moment.js","webpack:///./node_modules/underscore/underscore.js","webpack:///./core/src/OC/legacy-loader.js","webpack:///./core/src/OC/notification.js","webpack:///./core/src/OC/xhr-error.js","webpack:///./core/src/OC/appconfig.js","webpack:///./core/src/OC/appsettings.js","webpack:///./core/src/OC/appswebroots.js","webpack:///./core/src/OC/backbone-webdav.js","webpack:///./core/src/OC/backbone.js","webpack:///./core/src/OC/path.js","webpack:///./core/src/OC/config.js","webpack:///./core/src/OC/currentuser.js","webpack:///./core/src/OC/dialogs.js","webpack:///./core/src/OC/eventsource.js","webpack:///./core/src/OC/get_set.js","webpack:///./core/src/OC/capabilities.js","webpack:///./core/src/OC/host.js","webpack:///./core/src/OC/menu.js","webpack:///./core/src/OC/admin.js","webpack:///./core/src/OC/msg.js","webpack:///./core/src/OC/plugins.js","webpack:///./core/src/OC/search.js","webpack:///./core/src/OC/theme.js","webpack:///./core/src/OC/util-history.js","webpack:///./core/src/OC/util.js","webpack:///./core/src/OC/debug.js","webpack:///./core/src/OC/navigation.js","webpack:///./core/src/OC/webroot.js","webpack:///./core/src/OC/index.js","webpack:///./core/src/OC/constants.js","webpack:///./core/src/OC/routing.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/utils.js","webpack:///./node_modules/backbone/backbone.js","webpack:///./core/src/OC/l10n-registry.js","webpack:///./core/src/OC/l10n.js","webpack:///./node_modules/axios/lib/utils.js","webpack:///./core/src/OC/requesttoken.js","webpack:///./core/src/OCP/appconfig.js","webpack:///./node_modules/dompurify/dist/purify.js","webpack:///./core/src/OCA/index.js","webpack:///./node_modules/handlebars/runtime.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/exception.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars.runtime.js","webpack:///./node_modules/css-loader/dist/runtime/api.js","webpack:///./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack:///./core/src/OC/query-string.js","webpack:///./core/src/OC/apps.js","webpack:///./node_modules/davclient.js/lib/client.js","webpack:///./core/src/OC/password-confirmation.js","webpack:///./core/src/Util/human-file-size.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/base.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers.js","webpack:///./node_modules/moment/locale/af.js","webpack:///./node_modules/moment/locale/ar.js","webpack:///./node_modules/moment/locale/ar-dz.js","webpack:///./node_modules/moment/locale/ar-kw.js","webpack:///./node_modules/moment/locale/ar-ly.js","webpack:///./node_modules/moment/locale/ar-ma.js","webpack:///./node_modules/moment/locale/ar-sa.js","webpack:///./node_modules/moment/locale/ar-tn.js","webpack:///./node_modules/moment/locale/az.js","webpack:///./node_modules/moment/locale/be.js","webpack:///./node_modules/moment/locale/bg.js","webpack:///./node_modules/moment/locale/bm.js","webpack:///./node_modules/moment/locale/bn.js","webpack:///./node_modules/moment/locale/bo.js","webpack:///./node_modules/moment/locale/br.js","webpack:///./node_modules/moment/locale/bs.js","webpack:///./node_modules/moment/locale/ca.js","webpack:///./node_modules/moment/locale/cs.js","webpack:///./node_modules/moment/locale/cv.js","webpack:///./node_modules/moment/locale/cy.js","webpack:///./node_modules/moment/locale/da.js","webpack:///./node_modules/moment/locale/de.js","webpack:///./node_modules/moment/locale/de-at.js","webpack:///./node_modules/moment/locale/de-ch.js","webpack:///./node_modules/moment/locale/dv.js","webpack:///./node_modules/moment/locale/el.js","webpack:///./node_modules/moment/locale/en-SG.js","webpack:///./node_modules/moment/locale/en-au.js","webpack:///./node_modules/moment/locale/en-ca.js","webpack:///./node_modules/moment/locale/en-gb.js","webpack:///./node_modules/moment/locale/en-ie.js","webpack:///./node_modules/moment/locale/en-il.js","webpack:///./node_modules/moment/locale/en-nz.js","webpack:///./node_modules/moment/locale/eo.js","webpack:///./node_modules/moment/locale/es.js","webpack:///./node_modules/moment/locale/es-do.js","webpack:///./node_modules/moment/locale/es-us.js","webpack:///./node_modules/moment/locale/et.js","webpack:///./node_modules/moment/locale/eu.js","webpack:///./node_modules/moment/locale/fa.js","webpack:///./node_modules/moment/locale/fi.js","webpack:///./node_modules/moment/locale/fo.js","webpack:///./node_modules/moment/locale/fr.js","webpack:///./node_modules/moment/locale/fr-ca.js","webpack:///./node_modules/moment/locale/fr-ch.js","webpack:///./node_modules/moment/locale/fy.js","webpack:///./node_modules/moment/locale/ga.js","webpack:///./node_modules/moment/locale/gd.js","webpack:///./node_modules/moment/locale/gl.js","webpack:///./node_modules/moment/locale/gom-latn.js","webpack:///./node_modules/moment/locale/gu.js","webpack:///./node_modules/moment/locale/he.js","webpack:///./node_modules/moment/locale/hi.js","webpack:///./node_modules/moment/locale/hr.js","webpack:///./node_modules/moment/locale/hu.js","webpack:///./node_modules/moment/locale/hy-am.js","webpack:///./node_modules/moment/locale/id.js","webpack:///./node_modules/moment/locale/is.js","webpack:///./node_modules/moment/locale/it.js","webpack:///./node_modules/moment/locale/it-ch.js","webpack:///./node_modules/moment/locale/ja.js","webpack:///./node_modules/moment/locale/jv.js","webpack:///./node_modules/moment/locale/ka.js","webpack:///./node_modules/moment/locale/kk.js","webpack:///./node_modules/moment/locale/km.js","webpack:///./node_modules/moment/locale/kn.js","webpack:///./node_modules/moment/locale/ko.js","webpack:///./node_modules/moment/locale/ku.js","webpack:///./node_modules/moment/locale/ky.js","webpack:///./node_modules/moment/locale/lb.js","webpack:///./node_modules/moment/locale/lo.js","webpack:///./node_modules/moment/locale/lt.js","webpack:///./node_modules/moment/locale/lv.js","webpack:///./node_modules/moment/locale/me.js","webpack:///./node_modules/moment/locale/mi.js","webpack:///./node_modules/moment/locale/mk.js","webpack:///./node_modules/moment/locale/ml.js","webpack:///./node_modules/moment/locale/mn.js","webpack:///./node_modules/moment/locale/mr.js","webpack:///./node_modules/moment/locale/ms.js","webpack:///./node_modules/moment/locale/ms-my.js","webpack:///./node_modules/moment/locale/mt.js","webpack:///./node_modules/moment/locale/my.js","webpack:///./node_modules/moment/locale/nb.js","webpack:///./node_modules/moment/locale/ne.js","webpack:///./node_modules/moment/locale/nl.js","webpack:///./node_modules/moment/locale/nl-be.js","webpack:///./node_modules/moment/locale/nn.js","webpack:///./node_modules/moment/locale/pa-in.js","webpack:///./node_modules/moment/locale/pl.js","webpack:///./node_modules/moment/locale/pt.js","webpack:///./node_modules/moment/locale/pt-br.js","webpack:///./node_modules/moment/locale/ro.js","webpack:///./node_modules/moment/locale/ru.js","webpack:///./node_modules/moment/locale/sd.js","webpack:///./node_modules/moment/locale/se.js","webpack:///./node_modules/moment/locale/si.js","webpack:///./node_modules/moment/locale/sk.js","webpack:///./node_modules/moment/locale/sl.js","webpack:///./node_modules/moment/locale/sq.js","webpack:///./node_modules/moment/locale/sr.js","webpack:///./node_modules/moment/locale/sr-cyrl.js","webpack:///./node_modules/moment/locale/ss.js","webpack:///./node_modules/moment/locale/sv.js","webpack:///./node_modules/moment/locale/sw.js","webpack:///./node_modules/moment/locale/ta.js","webpack:///./node_modules/moment/locale/te.js","webpack:///./node_modules/moment/locale/tet.js","webpack:///./node_modules/moment/locale/tg.js","webpack:///./node_modules/moment/locale/th.js","webpack:///./node_modules/moment/locale/tl-ph.js","webpack:///./node_modules/moment/locale/tlh.js","webpack:///./node_modules/moment/locale/tr.js","webpack:///./node_modules/moment/locale/tzl.js","webpack:///./node_modules/moment/locale/tzm.js","webpack:///./node_modules/moment/locale/tzm-latn.js","webpack:///./node_modules/moment/locale/ug-cn.js","webpack:///./node_modules/moment/locale/uk.js","webpack:///./node_modules/moment/locale/ur.js","webpack:///./node_modules/moment/locale/uz.js","webpack:///./node_modules/moment/locale/uz-latn.js","webpack:///./node_modules/moment/locale/vi.js","webpack:///./node_modules/moment/locale/x-pseudo.js","webpack:///./node_modules/moment/locale/yo.js","webpack:///./node_modules/moment/locale/zh-cn.js","webpack:///./node_modules/moment/locale/zh-hk.js","webpack:///./node_modules/moment/locale/zh-tw.js","webpack:///./core/src/OC/contactsmenu.js","webpack:///./node_modules/toastify-js/src/toastify.js","webpack:///./node_modules/nextcloud-axios/dist/client.js","webpack:///./node_modules/jstimezonedetect/dist/jstz.min.js","webpack:///./core/src/OC/contactsmenu/contact.handlebars","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/block-helper-missing.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/each.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/helper-missing.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/if.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/log.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/lookup.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/with.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/decorators.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/decorators/inline.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/logger.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/safe-string.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/runtime.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/no-conflict.js","webpack:///./core/src/OC/contactsmenu/loading.handlebars","webpack:///./core/src/OC/contactsmenu/error.handlebars","webpack:///./core/src/OC/contactsmenu/menu.handlebars","webpack:///./core/src/OC/contactsmenu/list.handlebars","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/axios/lib/helpers/buildURL.js","webpack:///./node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/axios/lib/defaults.js","webpack:///./node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/axios/lib/core/createError.js","webpack:///./node_modules/axios/lib/core/mergeConfig.js","webpack:///./node_modules/axios/lib/cancel/Cancel.js","webpack:///./node_modules/process/browser.js","webpack:///./core/src/components/login/ResetPassword.vue?db23","webpack:///./core/src/components/login/UpdatePassword.vue?1dfc","webpack:///./core/src/views/Login.vue?8954","webpack:///(webpack)/buildin/amd-define.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///./node_modules/axios/index.js","webpack:///./node_modules/axios/lib/axios.js","webpack:///./node_modules/axios/node_modules/is-buffer/index.js","webpack:///./node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///./node_modules/axios/lib/core/settle.js","webpack:///./node_modules/axios/lib/core/enhanceError.js","webpack:///./node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/axios/lib/helpers/cookies.js","webpack:///./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/axios/lib/helpers/combineURLs.js","webpack:///./node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/axios/lib/helpers/spread.js","webpack:///./node_modules/vue/dist/vue.runtime.esm.js","webpack:///./node_modules/query-string/index.js","webpack:///./node_modules/strict-uri-encode/index.js","webpack:///./node_modules/object-assign/index.js","webpack:///./node_modules/decode-uri-component/index.js","webpack:///./core/src/components/login/ResetPassword.vue?7fe2","webpack:///./core/src/components/login/ResetPassword.vue?459d","webpack:///./core/src/components/login/UpdatePassword.vue?9288","webpack:///./core/src/components/login/UpdatePassword.vue?9974","webpack:///./core/src/views/Login.vue?8728","webpack:///./core/src/views/Login.vue?6ba7","webpack:///./node_modules/timers-browserify/main.js","webpack:///./node_modules/setimmediate/setImmediate.js","webpack:///./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack:///./core/src/components/login/LoginForm.vue","webpack:///core/src/components/login/LoginForm.vue","webpack:///./core/src/components/login/LoginForm.vue?cf1f","webpack:///./core/src/components/login/ResetPassword.vue?280b","webpack:///core/src/components/login/ResetPassword.vue","webpack:///./core/src/components/login/ResetPassword.vue","webpack:///./core/src/components/login/ResetPassword.vue?100e","webpack:///core/src/components/login/UpdatePassword.vue","webpack:///./core/src/components/login/UpdatePassword.vue?f37e","webpack:///./core/src/components/login/UpdatePassword.vue","webpack:///./core/src/components/login/UpdatePassword.vue?af24","webpack:///./core/src/views/Login.vue?013d","webpack:///core/src/views/Login.vue","webpack:///./core/src/views/Login.vue","webpack:///./core/src/views/Login.vue?d9cc","webpack:///./core/src/mixins/Nextcloud.js","webpack:///./core/src/login.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","global","factory","window","this","noGlobal","arr","slice","concat","push","indexOf","class2type","toString","hasOwn","support","document","jQuery","selector","context","fn","init","rtrim","rmsPrefix","rdashAlpha","fcamelCase","all","letter","toUpperCase","isArraylike","obj","length","type","isWindow","nodeType","jquery","constructor","toArray","num","pushStack","elems","ret","merge","prevObject","each","callback","args","map","elem","apply","arguments","first","eq","last","len","j","end","sort","splice","extend","options","src","copy","copyIsArray","clone","target","deep","isFunction","isPlainObject","isArray","undefined","expando","Math","random","replace","isReady","error","msg","Error","noop","Array","isNumeric","parseFloat","isEmptyObject","globalEval","code","script","indirect","eval","trim","createElement","text","head","appendChild","parentNode","removeChild","camelCase","string","nodeName","toLowerCase","makeArray","results","inArray","second","grep","invert","matches","callbackExpect","arg","guid","proxy","tmp","now","Date","split","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","sortOrder","a","b","MAX_NEGATIVE","pop","push_native","list","booleans","whitespace","characterEncoding","identifier","attributes","pseudos","rwhitespace","RegExp","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","rinputs","rheader","rnative","rquickExpr","rsibling","rescape","runescape","funescape","_","escaped","escapedWhitespace","high","String","fromCharCode","unloadHandler","childNodes","e","els","seed","match","groups","old","nid","newContext","newSelector","ownerDocument","exec","getElementById","id","getElementsByTagName","getElementsByClassName","qsa","test","getAttribute","setAttribute","toSelector","testContext","join","querySelectorAll","qsaError","removeAttribute","keys","cache","cacheLength","shift","markFunction","assert","div","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createPositionalPseudo","argument","matchIndexes","documentElement","node","hasCompare","parent","doc","defaultView","top","addEventListener","attachEvent","className","createComment","getById","getElementsByName","find","filter","attrId","getAttributeNode","tag","innerHTML","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","attr","val","specified","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative","dir","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","simple","forward","ofType","xml","outerCache","nodeIndex","start","useCache","lastChild","pseudo","setFilters","idx","matched","matcher","unmatched","innerText","lang","elemLang","hash","location","activeElement","hasFocus","href","tabIndex","disabled","checked","selected","selectedIndex","radio","checkbox","file","password","image","submit","reset","tokens","addCombinator","combinator","base","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","filters","parseOnly","soFar","preFilters","cached","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","token","compiled","div1","defaultValue","unique","isXMLDoc","rneedsContext","needsContext","rsingleTag","risSimple","winnow","qualifier","not","self","is","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","children","contents","next","prev","sibling","until","truncate","has","targets","closest","pos","index","prevAll","add","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","siblings","contentDocument","reverse","readyList","rnotwhite","optionsCache","completed","removeEventListener","Callbacks","flag","createOptions","memory","fired","firing","firingStart","firingLength","firingIndex","stack","once","fire","data","stopOnFalse","disable","remove","empty","lock","locked","fireWith","Deferred","func","tuples","state","promise","always","deferred","fail","then","fns","newDefer","tuple","returned","resolve","reject","progress","notify","pipe","stateString","when","subordinate","progressValues","progressContexts","resolveContexts","resolveValues","remaining","updateFunc","values","notifyWith","resolveWith","readyWait","holdReady","hold","wait","triggerHandler","off","readyState","setTimeout","access","chainable","emptyGet","raw","bulk","Data","uid","acceptData","owner","accepts","descriptor","unlock","defineProperties","set","prop","stored","camel","hasData","discard","data_priv","data_user","rbrace","rmultiDash","dataAttr","parseJSON","removeData","_data","_removeData","camelKey","queue","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","count","defer","pnum","source","cssExpand","isHidden","el","css","rcheckableType","createDocumentFragment","checkClone","cloneNode","noCloneChecked","focusinBubbles","rkeyEvent","rmouseEvent","rfocusMorph","rtypenamespace","returnTrue","returnFalse","safeActiveElement","err","event","types","handleObjIn","eventHandle","events","handleObj","special","handlers","namespaces","origType","elemData","handle","triggered","dispatch","delegateType","bindType","namespace","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","trigger","onlyHandlers","bubbleType","ontype","eventPath","Event","isTrigger","namespace_re","noBubble","parentWindow","isPropagationStopped","preventDefault","isDefaultPrevented","_default","fix","handlerQueue","delegateTarget","preDispatch","currentTarget","isImmediatePropagationStopped","stopPropagation","postDispatch","sel","button","props","fixHooks","keyHooks","original","which","charCode","keyCode","mouseHooks","eventDoc","body","pageX","clientX","scrollLeft","clientLeft","pageY","clientY","scrollTop","clientTop","originalEvent","fixHook","load","focus","blur","click","beforeunload","returnValue","simulate","bubble","isSimulated","defaultPrevented","timeStamp","stopImmediatePropagation","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","relatedTarget","attaches","on","one","origFn","rxhtmlTag","rtagName","rhtml","rnoInnerhtml","rchecked","rscriptType","rscriptTypeMasked","rcleanScript","wrapMap","option","thead","col","tr","td","manipulationTarget","content","disableScript","restoreScript","setGlobalEval","refElements","cloneCopyEvent","dest","pdataOld","pdataCur","udataOld","udataCur","getAll","optgroup","tbody","tfoot","colgroup","caption","th","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","buildFragment","scripts","selection","wrap","fragment","nodes","createTextNode","cleanData","append","domManip","prepend","insertBefore","before","after","keepData","html","replaceWith","replaceChild","detach","hasScripts","iNoClone","_evalUrl","appendTo","prependTo","insertAfter","replaceAll","insert","iframe","elemdisplay","actualDisplay","style","display","getDefaultComputedStyle","defaultDisplay","write","close","rmargin","rnumnonpx","getStyles","opener","getComputedStyle","curCSS","computed","width","minWidth","maxWidth","getPropertyValue","addGetHookIf","conditionFn","hookFn","pixelPositionVal","boxSizingReliableVal","container","computePixelPositionAndBoxSizingReliable","cssText","divStyle","backgroundClip","clearCloneStyle","pixelPosition","boxSizingReliable","reliableMarginRight","marginDiv","marginRight","swap","rdisplayswap","rnumsplit","rrelNum","cssShow","position","visibility","cssNormalTransform","letterSpacing","fontWeight","cssPrefixes","vendorPropName","capName","origName","setPositiveNumber","subtract","max","augmentWidthOrHeight","extra","isBorderBox","styles","getWidthOrHeight","valueIsBorderBox","offsetWidth","offsetHeight","showHide","show","hidden","Tween","easing","cssHooks","opacity","cssNumber","cssProps","margin","padding","border","prefix","suffix","expand","expanded","parts","hide","toggle","unit","propHooks","run","percent","eased","duration","step","tween","fx","linear","swing","cos","PI","fxNow","timerId","rfxtypes","rfxnum","rrun","animationPrefilters","opts","oldfire","anim","dataShow","unqueued","overflow","overflowX","overflowY","createTween","tweeners","scale","maxIterations","createFxNow","genFx","includeWidth","height","animation","collection","Animation","properties","stopped","tick","currentTime","startTime","tweens","specialEasing","originalProperties","originalOptions","gotoEnd","rejectWith","propFilter","timer","complete","tweener","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","interval","setInterval","clearInterval","slow","fast","delay","time","timeout","clearTimeout","checkOn","optSelected","optDisabled","radioValue","boolHook","removeAttr","nType","attrHooks","bool","nodeHook","propName","attrNames","propFix","rfocusable","removeProp","hasAttribute","rclass","addClass","classes","clazz","finalValue","proceed","removeClass","toggleClass","stateVal","classNames","hasClass","rreturn","valHooks","optionSet","hover","fnOver","fnOut","unbind","delegate","undelegate","nonce","rquery","JSON","parse","parseXML","DOMParser","parseFromString","rhash","rts","rheaders","rnoContent","rprotocol","rurl","prefilters","transports","allTypes","ajaxLocation","ajaxLocParts","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","active","lastModified","etag","url","isLocal","processData","async","contentType","json","responseFields","converters","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","fireGlobals","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","lname","overrideMimeType","mimeType","status","abort","statusText","finalText","success","method","crossDomain","param","traditional","hasContent","ifModified","headers","beforeSend","send","nativeStatusText","responses","isSuccess","response","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","current","conv","dataFilter","ajaxConvert","getJSON","getScript","wrapAll","firstElementChild","wrapInner","unwrap","visible","r20","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","v","encodeURIComponent","serialize","serializeArray","xhr","XMLHttpRequest","xhrId","xhrCallbacks","xhrSuccessStatus","0","1223","xhrSupported","cors","open","username","xhrFields","onload","onerror","responseText","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","keepScripts","parsed","_load","params","animated","getWindow","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","left","using","win","box","getBoundingClientRect","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","size","andSelf","_jQuery","_$","$","noConflict","w","hookCallback","some","isObject","isUndefined","isNumber","isDate","res","hasOwnProp","valueOf","createUTC","format","locale","strict","createLocalOrUTC","utc","getParsingFlags","_pf","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","meridiem","rfc2822","weekdayMismatch","isValid","_isValid","flags","parsedParts","isNowValid","isNaN","_d","getTime","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","NaN","fun","momentProperties","copyConfig","from","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","updateInProgress","Moment","config","updateOffset","isMoment","absFloor","number","ceil","floor","toInt","argumentForCoercion","coercedNumber","isFinite","compareArrays","array1","array2","dontConvert","min","lengthDiff","abs","diffs","warn","suppressDeprecationWarnings","console","deprecate","firstTime","deprecationHandler","deprecations","deprecateSimple","Function","mergeConfigs","parentConfig","childConfig","Locale","aliases","addUnitAlias","shorthand","lowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","zeroFill","targetLength","forceSign","absNumber","zerosToFill","pow","substr","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","ordinal","localeData","formatMoment","expandFormat","array","mom","output","makeFormatFunction","invalidDate","replaceLongDateFormatTokens","longDateFormat","lastIndex","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","regexes","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","regexEscape","p1","p2","p3","p4","addParseToken","addWeekParseToken","_w","addTimeToArrayFromToken","_a","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","daysInYear","year","isLeapYear","y","parseTwoDigitYear","parseInt","getSetYear","makeGetSet","keepTime","set$1","month","date","daysInMonth","modMonth","x","mod","monthsShort","months","monthsShortRegex","monthsRegex","monthsParse","MONTHS_IN_FORMAT","defaultLocaleMonths","defaultLocaleMonthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","setMonth","dayOfMonth","getSetMonth","defaultMonthsShortRegex","defaultMonthsRegex","computeMonthsParse","cmpLenRev","shortPieces","longPieces","mixedPieces","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","createDate","h","M","ms","getFullYear","setFullYear","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","week","weekday","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","shiftWeekdays","ws","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","day","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","computeWeekdaysParse","minp","shortp","longp","minPieces","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","hFormat","hours","lowercase","minutes","matchMeridiem","_meridiemParse","seconds","kInput","_isPm","isPM","_meridiem","pos1","pos2","globalLocale","getSetHour","baseConfig","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","LTS","LT","L","LL","LLL","LLLL","dayOfMonthOrdinalParse","relativeTime","future","past","ss","mm","hh","dd","MM","yy","meridiemParse","locales","localeFamilies","normalizeLocale","loadLocale","oldLocale","_abbr","getSetGlobalLocale","getLocale","defineLocale","abbr","_config","parentLocale","forEach","names","chooseLocale","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","defaults","configFromArray","currentDate","expectedWeekday","yearToUse","nowValue","_useUTC","getUTCMonth","getUTCDate","getMonth","getDate","currentDateArray","weekYear","weekdayOverflow","GG","W","E","createLocal","_week","curWeek","gg","_dayOfYear","dayOfYearFromWeekInfo","_nextDay","getDay","setUTCMinutes","getUTCMinutes","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","configFromStringAndFormat","untruncateYear","yearStr","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromRFC2822","monthStr","dayStr","hourStr","minuteStr","secondStr","parsedArray","weekdayStr","parsedInput","checkWeekday","obsOffset","militaryOffset","numOffset","hm","calculateOffset","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","hour","isPm","meridiemHour","meridiemFixWrap","prepareConfig","preparse","tempConfig","bestMoment","scoreToBeat","currentScore","score","configFromStringAndArray","createFromInputFallback","configFromString","minute","millisecond","configFromObject","configFromInput","isUTC","getOwnPropertyNames","k","isObjectEmpty","prototypeMin","other","prototypeMax","pickBy","moments","ordering","Duration","years","quarters","quarter","weeks","isoWeek","days","milliseconds","unitHasDecimal","isDurationValid","_milliseconds","_days","_months","_bubble","isDuration","absRound","round","separator","utcOffset","sign","offsetFromString","chunkOffset","cloneWithOffset","model","setTime","local","getDateOffset","getTimezoneOffset","isUtc","aspNetRegex","isoRegex","createDuration","diffRes","parseIso","isBefore","positiveMomentsDifference","inp","isAfter","createAdder","direction","period","addSubtract","isAdding","invalid","monthDiff","wholeMonthDiff","anchor","newLocaleData","defaultFormat","defaultFormatUtc","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","addWeekYearFormatToken","getSetWeekYearHelper","weeksTarget","setWeekAll","dayOfYearData","isoWeekYear","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetSecond","parseMs","getSetMillisecond","proto","preParsePostFormat","formats","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","toObject","toDate","toISOString","keepOffset","zone","toJSON","unix","creationData","isoWeeks","weekInfo","isoWeeksInYear","parseWeekday","parseIsoWeekday","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","parseZone","tZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","dates","isDSTShifted","_isDSTShifted","proto$1","get$1","field","listMonthsImpl","out","listWeekdaysImpl","localeSorted","_calendar","_longDateFormat","formatUpper","_invalidDate","_ordinal","isFuture","_relativeTime","pastFuture","isFormat","_monthsShort","_monthsParseExact","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","_weekdaysParseExact","_fullWeekdaysParse","charAt","isLower","langData","mathAbs","addSubtract$1","absCeil","daysToMonths","monthsToDays","makeAs","alias","as","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","makeGetter","thresholds","substituteTimeAgo","abs$1","toISOString$1","Y","D","toFixed","total","totalSign","ymSign","daysSign","hmsSign","proto$2","monthsFromDays","withSuffix","posNegDuration","relativeTime$1","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","root","previousUnderscore","ArrayProto","ObjProto","SymbolProto","nativeIsArray","nativeKeys","nativeCreate","Ctor","_wrapped","VERSION","builtinIteratee","optimizeCb","argCount","accumulator","cb","iteratee","identity","Infinity","restArguments","startIndex","rest","baseCreate","shallowProperty","path","deepGet","MAX_ARRAY_INDEX","getLength","isArrayLike","collect","currentKey","createReduce","reducer","memo","initial","reduce","foldl","inject","reduceRight","foldr","detect","predicate","findIndex","findKey","negate","every","any","includes","include","item","fromIndex","guard","invoke","contextPath","pluck","where","findWhere","lastComputed","shuffle","sample","rand","sortBy","criteria","right","group","behavior","partition","groupBy","indexBy","countBy","reStrSymbol","isString","pass","take","tail","drop","compact","Boolean","flatten","shallow","isArguments","without","otherArrays","difference","uniq","isSorted","isBoolean","seen","union","arrays","intersection","argsLength","unzip","zip","createPredicateIndexFinder","findLastIndex","sortedIndex","low","mid","createIndexFinder","predicateFind","lastIndexOf","range","chunk","executeBound","sourceFunc","boundFunc","callingContext","TypeError","bound","callArgs","partial","boundArgs","placeholder","bindAll","memoize","hasher","address","throttle","previous","later","leading","throttled","trailing","cancel","debounce","immediate","debounced","callNow","wrapper","compose","times","hasEnumBug","propertyIsEnumerable","nonEnumerableProps","collectNonEnumProps","nonEnumIdx","allKeys","mapObject","pairs","functions","methods","createAssigner","keysFunc","extendOwn","assign","deepEq","keyInObj","pick","omit","tap","interceptor","isMatch","aStack","bStack","areArrays","aCtor","bCtor","isEqual","isEmpty","isElement","nodelist","Int8Array","isSymbol","isNull","constant","propertyOf","accum","escapeMap","unescapeMap","createEscaper","escaper","testRegexp","replaceRegexp","escape","unescape","fallback","idCounter","uniqueId","templateSettings","evaluate","interpolate","noMatch","escapes","escapeRegExp","escapeChar","template","oldSettings","render","variable","chain","instance","_chain","chainResult","mixin","loadedScripts","loadedStyles","addScript","app","OC","filePath","addStyle","createStyleSheet","updatableNotification","getDefaultNotificationFunction","setDefault","$row","toastify","hideToast","showHtml","isHTML","toast","OCP","Toast","message","toastElement","showUpdate","showTemporary","ajaxConnectionLostHandler","Notification","processAjaxError","_reloadCalled","currentUser","_userIsNavigatingAway","reload","_ajaxConnectionLostHandler","registerXHRForErrorProcessing","appConfig","oc_appconfig","AppConfig","getValue","setValue","getApps","getKeys","deleteKey","appSettings","appid","scriptName","popup","arrowclass","loadJS","scriptname","jqxhr","appswebroots","_oc_appswebroots","methodMap","update","patch","delete","read","urlError","parsePropFindResult","davProperties","subResult","propStat","propKey","parseIdFromLocation","queryPos","isSuccessStatus","convertModelAttributesToDavProperties","changedProp","callPropFind","client","propFind","depth","propsMapping","callPropPatch","propPatch","changed","callMkCol","request","callMethod","responseJson","locationHeader","davCall","dav","Client","baseUrl","xmlNamespaces","resolveUrl","requestToken","davSync","Backbone","isCollection","Collection","hasInnerCollection","usePUT","stringify","textStatus","errorThrown","VendorBackbone","encodePath","basename","dirname","isSamePath","path1","path2","pathSections1","pathSections2","joinPaths","nonEmptyArgs","lastArg","leadingSlash","trailingSlash","sections","acc","section","_oc_config","rawUid","displayName","getCurrentUser","Dialogs","YES_NO_BUTTONS","OK_BUTTONS","FILEPICKER_TYPE_CHOOSE","FILEPICKER_TYPE_MOVE","FILEPICKER_TYPE_COPY","FILEPICKER_TYPE_COPY_MOVE","dialogsCounter","alert","title","modal","OK_BUTTON","info","confirm","confirmHtml","prompt","_getMessageTemplate","$tmpl","dialogName","dialogId","$dlg","octemplate","dialog_name","label","buttonlist","ocdialog","defaultButton","closeOnEscape","buttons","filepicker","multiselect","mimetypeFilter","sortField","loading","emptyText","newText","filesClient","OCA","Sharing","PublicApp","fileList","Files","getClient","filelist","allowDirectoryChooser","_getFilePickerTemplate","$filePicker","emptytext","newtext","nameCol","sizeCol","modifiedCol","Util","isIE","$showGridView","_onGridviewChange","_getGridSettings","newButton","registerMenu","$input","$form","newName","lastPos","selectRange","filename","isFileNameValid","tooltip","placement","checkInput","newname","createDirectory","_fillFilePicker","hideMenus","keypress","$fileListHeader","$filelist","$filelistContainer","$dirTree","_handleTreeListSelect","_handlePickerClick","functionToCall","returnType","datapath","element","selectedName","buttonEnableDisable","dialogType","allowHtml","escapeFunction","_fileexistsshown","fileexists","replacement","controller","dialogDeferred","crop","img","canvas","getContext","drawImage","resampleHermite","toDataURL","H","W2","H2","getImageData","img2","data2","ratio_w","ratio_h","ratio_w_half","ratio_h_half","x2","weight","weights","weights_alpha","gx_r","gx_g","gx_b","gx_a","center_y","dy","center_x","w0","xx","dx","sqrt","clearRect","putImageData","addConflict","$conflicts","$conflict","$originalDiv","$replacementDiv","humanFileSize","formatDate","mtime","lastModifiedDate","directory","urlSpec","forceIcon","previewpath","generatePreviewUrl","FileReader","reader","blob","Blob","URL","webkitURL","originalUrl","createObjectURL","Image","readAsArrayBuffer","getCroppedPreview","MimeType","getIconUrl","checkboxId","_getFileExistsTemplate","allnewfiles","allexistingfiles","why","onCancel","onContinue","closeButton","$primaryButton","updatePrimaryButton","checkedCount","$checkbox","generateUrl","gridview","post","$filePickerTemplate","tmpl","$listTmpl","$messageTemplate","$fileexistsTemplate","_getFileList","mimetypes","getFolderContents","files","mimetype","Comparators","fileInfo1","fileInfo2","naturalSortCompare","comparator","file1","file2","isFavorite","fileInfo","tags","TAG_FAVORITE","_fillSlug","entry","simpleSize","sizeColor","icon","filename1","filename2","relativeModifiedDate","previewUrl","$template","paths","getOcDialog","_changeButtonsText","$element","ctrlKey","copyText","folder","moveText","OCEventSource","joinChar","dataStr","typelessListeners","closed","listeners","getToken","useFallBack","EventSource","iframeId","iframeCount","fallBackSources","onmessage","listen","fallBackCallBack","lastLength","capabilities","_oc_capabilities","getCapabilities","getProtocol","protocol","getHost","host","getHostName","hostname","getPort","port","currentMenu","$toggle","$menuEl","headerMenu","menuSpeed","unregisterMenu","lastMenu","showMenu","isAdmin","_oc_isadmin","isUserAdmin","startSaving","startAction","finishedSaving","finishedAction","finishedSuccess","finishedError","_plugins","register","targetName","plugin","plugins","getPlugins","attach","targetObject","search","query","Search","customResults","resultTypes","theme","_theme","_handlers","_pushState","strParams","buildQueryString","history","pushState","pathname","navigator","userAgent","patterns","fill","stroke","replaceState","_cancelPop","addOnPopStateHandler","_parseHashQuery","_decodeQuery","parseUrlQuery","parseQueryString","_onPopState","chunkify","tz","History","computerFileSize","bytes","timestamp","moment","getScrollBarWidth","_scrollBarWidth","inner","outer","w1","w2","clientWidth","stripTime","aa","bb","aNum","Number","bNum","localeCompare","getLanguage","waitFor","internalCallback","isCookieSetToValue","cookies","cookie","_oc_debug","debug","redirect","targetURL","webroot","_oc_webroot","coreApps","PERMISSION_ALL","PERMISSION_CREATE","PERMISSION_DELETE","PERMISSION_NONE","PERMISSION_READ","PERMISSION_SHARE","PERMISSION_UPDATE","fileIsBlacklisted","Config","blacklist_files_regex","Apps","ContactsMenu","dialogs","L10N","_processAjaxError","_capabilities","getCanonicalLocale","addTranslations","PasswordConfirmation","Plugins","getRootPath","imagePath","getRequestToken","linkTo","linkToOCS","linkToRemote","linkToRemoteBase","subscribeToRequestTokenChange","service","allOptions","_build","vars","modRewriteWorking","isCore","link","substring","encodeURI","escapeExpression","toHTML","possible","badChars","createFrame","frame","_parent","blockParams","ids","appendContextPath","chr","previousBackbone","emulateHTTP","emulateJSON","_listening","Events","eventSplitter","eventsApi","_events","onApi","ctx","listening","_listeners","interop","listenTo","_listenId","listeningTo","_listeningTo","Listening","tryCatchOn","offApi","stopListening","_callback","cleanup","onceMap","listenToOnce","offer","triggerApi","objEvents","allEvents","triggerEvents","ev","a1","a2","a3","listener","Model","preinitialize","cid","cidPrefix","initialize","validationError","idAttribute","sync","_validate","unset","silent","changes","changing","_changing","_previousAttributes","_pending","clear","hasChanged","changedAttributes","previousAttributes","fetch","resp","serverAttrs","wrapError","save","validate","isNew","destroy","models","_reset","setOptions","addOptions","at","singular","removed","_removeModels","added","merged","_isModel","toAdd","toMerge","toRemove","modelMap","sortable","sortAttr","existing","_prepareModel","_addReference","orderChanged","_removeReference","previousModels","_byId","modelId","callbackOpts","CollectionIterator","ITERATOR_VALUES","ITERATOR_KEYS","entries","ITERATOR_KEYSVALUES","_onModelEvent","prevId","$$iterator","iterator","kind","_collection","_kind","_index","View","viewOptions","_ensureElement","delegateEventSplitter","tagName","$el","_removeElement","setElement","undelegateEvents","_setElement","delegateEvents","eventName","_createElement","_setAttributes","addUnderscoreMethods","Class","attribute","defaultVal","addMethod","modelMatcher","Base","mappings","_method","Router","routes","_bindRoutes","optionalParam","namedParam","splatParam","route","isRegExp","_routeToRegExp","router","_extractParameters","execute","navigate","optional","decodeURIComponent","checkUrl","routeStripper","rootStripper","pathStripper","started","atRoot","getSearch","matchRoot","decodeFragment","decodeURI","getHash","getPath","getFragment","_usePushState","_wantsHashChange","hashChange","_hasHashChange","documentMode","_useHashChange","_wantsPushState","_hasPushState","rootPath","iWindow","contentWindow","_checkUrlInterval","loadUrl","detachEvent","decodedFragment","_updateHash","protoProps","staticProps","child","__super__","_oc_l10n_registry_translations","_oc_l10n_registry_plural_functions","registerAppTranslations","appId","translations","pluralFunction","hasAppTranslations","getAppTranslations","L10n","appName","pluralForm","bundle","_getPlural","_unregister","translate","translation","DOMPurify","sanitize","escapeHTML","translatePlural","textSingular","textPlural","plural","language","Handlebars","registerHelper","isBuffer","isArrayBuffer","isFormData","FormData","isArrayBufferView","ArrayBuffer","isView","buffer","isFile","isBlob","isStream","isURLSearchParams","URLSearchParams","isStandardBrowserEnv","product","assignValue","deepMerge","thisArg","str","observers","subscribe","observer","setToken","newToken","endpoint","requiresPasswordConfirmation","requirePasswordConfirmation","freeze$1","freeze","svg","svgFilters","mathMl","freeze$2","html$1","svg$1","mathMl$1","setPrototypeOf","apply$1","Reflect","addToSet","lcElement","newObject","thisValue","seal","MUSTACHE_EXPR","ERB_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","_typeof","_toConsumableArray","arr2","arraySlice","getGlobal","_createTrustedTypesPolicy","trustedTypes","createPolicy","currentScript","policyName","createHTML","html$$1","createDOMPurify","isSupported","originalDocument","useDOMParser","removeSVGAttr","removeTitle","DocumentFragment","HTMLTemplateElement","Node","NodeFilter","_window$NamedNodeMap","NamedNodeMap","MozNamedAttrMap","Text","Comment","TrustedTypes","trustedTypesPolicy","emptyHTML","_document","implementation","createNodeIterator","importNode","createHTMLDocument","MUSTACHE_EXPR$$1","ERB_EXPR$$1","DATA_ATTR$$1","ARIA_ATTR$$1","IS_SCRIPT_OR_DATA$$1","ATTR_WHITESPACE$$1","IS_ALLOWED_URI$$1","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","FORBID_TAGS","FORBID_ATTR","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","SAFE_FOR_JQUERY","SAFE_FOR_TEMPLATES","WHOLE_DOCUMENT","SET_CONFIG","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_DOM_IMPORT","RETURN_TRUSTED_TYPE","SANITIZE_DOM","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","CONFIG","formElement","_parseConfig","cfg","ADD_URI_SAFE_ATTR","ALLOWED_URI_REGEXP","ADD_TAGS","ADD_ATTR","table","_forceRemove","outerHTML","_removeAttribute","_initDocument","dirty","leadingWhitespace","querySelector","_createIterator","SHOW_ELEMENT","SHOW_COMMENT","SHOW_TEXT","FILTER_ACCEPT","_isNode","_executeHook","entryPoint","currentNode","hook","_sanitizeElements","elm","allowedTags","insertAdjacentHTML","htmlToInsert","_isValidAttribute","lcTag","lcName","_sanitizeAttributes","idAttr","hookEvent","attrName","attrValue","keepAttr","allowedAttributes","_attr","namespaceURI","setAttributeNS","_sanitizeShadowDOM","shadowNode","shadowIterator","nextNode","importedNode","oldNode","returnNode","toStaticHTML","nodeIterator","serializedHTML","setConfig","clearConfig","isValidAttribute","addHook","hookFunction","removeHook","removeHooks","removeAllHooks","errorProps","Exception","loc","line","column","captureStackTrace","lineNumber","nop","g","_interopRequireDefault","_interopRequireWildcard","newObj","_handlebarsSafeString2","_handlebarsException2","Utils","runtime","_handlebarsNoConflict2","hb","HandlebarsEnvironment","SafeString","VM","spec","inst","useSourceMap","cssMapping","btoa","sourceMapping","sourceMap","base64","sourceURLs","sources","sourceRoot","cssWithMappingToString","mediaQuery","alreadyImportedModules","stylesInDom","isOldIE","atob","getTarget","styleTarget","HTMLIFrameElement","listToStyles","newStyles","part","media","addStylesToDom","domStyle","refs","insertStyleElement","textStore","replaceText","applyToSingletonTag","styleSheet","cssNode","applyToTag","singleton","singletonCounter","styleIndex","removeStyleElement","newList","mayRemove","_domStyle","queryString","components","build","dynamicSlideToggleEnabled","enableDynamicSlideToggle","registerAppsSlideToggle","areaSelector","area","hideArea","showArea","_XML_CHAR_MAP","_escapeXml","ch","userName","parseClarkNotation","_renderPropSet","propValue","mkcol","xhrProvider","Promise","fulfill","onreadystatechange","resultBody","parseMultiStatus","ontimeout","_parsePropNode","propNode","subNodes","xmlBody","resolver","foo","responseIterator","XPathResult","ANY_TYPE","responseNode","iterateNext","stringValue","propStatIterator","propStatNode","propIterator","localName","baseParts","parseUrl","subString","scheme","propertyName","pageLoadTime","serverTimeDiff","nc_pageLoad","timeSinceLogin","nc_lastLogin","backendAllowsPasswordConfirmation","rejectCallback","_confirmPassword","$dialog","$error","$buttons","lastLogin","skipSmallSizes","humanList","order","log","readableFormat","relativeSize","toLocaleString","webpackPolyfill","_utils","_exception2","_helpers","_decorators","_logger2","COMPILER_REVISION","LAST_COMPATIBLE_COMPILER_REVISION","REVISION_CHANGES","1","2","3","4","5","6","7","8","helpers","partials","decorators","registerDefaultHelpers","registerDefaultDecorators","logger","unregisterHelper","registerPartial","unregisterPartial","registerDecorator","unregisterDecorator","_helpersBlockHelperMissing2","_helpersEach2","_helpersHelperMissing2","_helpersIf2","_helpersLog2","_helpersLookup2","_helpersWith2","moveHelperToHooks","helperName","keepHelper","symbolMap","numberMap","plurals","pluralize","f","weekdaysParseExact","suffixes","70","80","20","50","100","9","10","30","60","90","relativeTimeWithPlural","forms","standalone","lastDigit","last2Digits","relativeTimeWithMutation","mutationTable","softMutation","mutation","lastNumber","monthsParseExact","ll","lll","llll","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","processRelativeTime","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","_calendarEl","monthsShortDot","numbersPast","numbersFuture","verbalNumber","monthsShortWithDots","monthsShortWithoutDots","weekEndings","40","isUpper","eifelerRegelAppliesToNumber","translateSingular","relativeTimeWithSingular","translator","words","correctGrammaticalCase","wordKey","relativeTimeMr","monthsNominative","monthsSubjective","12","13","numbersNouns","numberNoun","hundred","ten","word","numberAsNoun","processHoursFunction","Contact","fullName","lastMessage","actions","hasOneAction","hasTwoActions","hasManyActions","ContactCollection","ContactsListView","_subViews","contact","ContactsListItemView","_onChildActionMenuToggle","$src","view","_template","_model","_actionMenuShown","contactTemplate","require","_onOtherActionMenuOpened","imageplaceholder","_onToggleActionsMenu","ContactsMenuView","_loadingTemplate","_errorTemplate","_contentTemplate","_contactsTemplate","_contacts","_searchTerm","templates","menu","_onSearch","searchTerm","loadingTemplate","errorTemplate","couldNotLoadText","contentTemplate","searchContactsText","contactsTemplate","noContactsFoundText","showAllContactsText","contactsAppMgmtText","showLoading","loadingText","showError","showContacts","viewData","contacts","contactsAppEnabled","contactsAppURL","canInstallApp","contactsAppMgmtURL","searchVal","_$trigger","_view","_contactsPromise","_loadContacts","_toggleVisibility","_getContacts","term","catch","Toastify","lib","containsClass","yourClass","destination","newWindow","gravity","positionLeft","backgroundColor","avatar","stopOnFocus","buildToast","divElement","background","avatarElement","insertAdjacentElement","closeElement","removeElement","parentElement","timeOutValue","innerWidth","screen","showToast","rootElement","reposition","classUsed","topLeftOffsetSize","bottom","topRightOffsetSize","offsetSize","allToasts","default","requesttoken","DAY","BASELINE_YEAR","MAX_SCORE","AMBIGUITIES","A","rules","olson","dst_rules","zones","determine","Intl","DateTimeFormat","resolvedOptions","timeZone","timezones","using_intl","needle","offsets","jstz","depth0","stack1","alias1","lambda","alias2","topAction","hyperlink","secondAction","nullContext","program","helper","helperMissing","alias4","alias3","inverse","_exception","execIteration","priorKey","conditional","includeZero","level","_decoratorsInline2","_decoratorsInline","lookupLevel","levelMap","_len","_key","checkRevision","compilerInfo","compilerRevision","currentRevision","_base","runtimeVersions","compilerVersions","templateSpec","env","main","decorator","main_d","compiler","templateWasPrecompiledWithCompilerV7","lookup","depths","invokePartial","resolvePartial","optionsWithHooks","compilerOptions","indent","lines","programs","declaredBlockParams","programWrapper","wrapProgram","_setup","useData","initData","useBlockParams","useDepths","executeDecorators","isTop","usePartial","useDecorators","keepHelperInHelpers","allowCallsToHelperMissing","_child","currentPartialBlock","partialBlock","prog","currentDepths","$Handlebars","unless","webpackContext","req","webpackContextResolve","utils","encode","paramsSerializer","serializedParams","hashmarkIndex","__CANCEL__","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","adapter","process","transformRequest","transformResponse","xsrfCookieName","xsrfHeaderName","maxContentLength","validateStatus","common","settle","buildURL","parseHeaders","isURLSameOrigin","createError","requestData","auth","Authorization","responseURL","responseType","onabort","xsrfValue","withCredentials","onDownloadProgress","onUploadProgress","upload","cancelToken","enhanceError","config1","config2","Cancel","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","marker","runClearTimeout","Item","nextTick","browser","argv","versions","addListener","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","binding","cwd","chdir","umask","locals","__webpack_amd_options__","Axios","mergeConfig","createInstance","defaultConfig","axios","instanceConfig","CancelToken","isCancel","promises","spread","InterceptorManager","dispatchRequest","interceptors","fulfilled","rejected","getUri","use","eject","transformData","isAbsoluteURL","combineURLs","throwIfCancellationRequested","throwIfRequested","baseURL","reason","normalizedName","isAxiosError","description","fileName","columnNumber","ignoreDuplicateOf","originURL","msie","urlParsingNode","resolveURL","requestURL","expires","domain","secure","toGMTString","relativeURL","executor","resolvePromise","emptyObject","isUndef","isDef","isTrue","isPrimitive","_toString","isValidArrayIndex","isPromise","toNumber","makeMap","expectsLowerCase","isReservedAttribute","camelizeRE","camelize","capitalize","hyphenateRE","hyphenate","boundFn","_length","_from","no","looseEqual","isObjectA","isObjectB","isArrayA","isArrayB","keysA","keysB","looseIndexOf","called","SSR_ATTR","ASSET_TYPES","LIFECYCLE_HOOKS","optionMergeStrategies","productionTip","devtools","performance","errorHandler","warnHandler","ignoredElements","keyCodes","isReservedTag","isReservedAttr","isUnknownElement","getTagNamespace","parsePlatformTagName","mustUseProp","_lifecycleHooks","unicodeRegExp","def","writable","configurable","bailRE","_isServer","hasProto","inBrowser","inWeex","WXEnvironment","platform","weexPlatform","UA","isIE9","isEdge","isIOS","isFF","nativeWatch","watch","supportsPassive","isServerRendering","VUE_ENV","__VUE_DEVTOOLS_GLOBAL_HOOK__","isNative","_Set","hasSymbol","ownKeys","Set","Dep","subs","addSub","sub","removeSub","depend","addDep","targetStack","pushTarget","popTarget","VNode","componentOptions","asyncFactory","fnContext","fnOptions","fnScopeId","componentInstance","isStatic","isRootInsert","isComment","isCloned","isOnce","asyncMeta","isAsyncPlaceholder","prototypeAccessors","createEmptyVNode","createTextVNode","cloneVNode","vnode","cloned","arrayProto","arrayMethods","inserted","ob","__ob__","observeArray","dep","arrayKeys","shouldObserve","toggleObserving","Observer","vmCount","__proto__","protoAugment","copyAugment","walk","observe","asRootData","isExtensible","_isVue","defineReactive$$1","customSetter","getOwnPropertyDescriptor","childOb","dependArray","newVal","del","items","strats","mergeData","toVal","fromVal","mergeDataOrFn","parentVal","childVal","vm","instanceData","defaultData","mergeHook","dedupeHooks","mergeAssets","key$1","provide","defaultStrat","mergeOptions","normalizeProps","normalized","normalizeInject","dirs","directives","def$$1","normalizeDirectives","extends","mixins","mergeField","strat","resolveAsset","warnMissing","assets","camelizedId","PascalCaseId","validateProp","propOptions","propsData","absent","booleanIndex","getTypeIndex","stringIndex","$options","_props","getType","getPropDefaultValue","prevShouldObserve","isSameType","expectedTypes","handleError","$parent","errorCaptured","globalHandleError","invokeWithErrorHandling","_handled","logError","timerFunc","isUsingMicroTask","callbacks","pending","flushCallbacks","copies","MutationObserver","setImmediate","counter","textNode","characterData","_resolve","seenObjects","traverse","_traverse","isA","depId","normalizeEvent","passive","once$$1","capture","createFnInvoker","invoker","arguments$1","updateListeners","oldOn","remove$$1","createOnceHandler","mergeVNodeHook","hookKey","oldHook","wrappedHook","checkProp","altKey","preserve","normalizeChildren","normalizeArrayChildren","nestedIndex","isTextNode","_isVList","resolveInject","provideKey","_provided","provideDefault","resolveSlots","slots","slot","name$1","isWhitespace","normalizeScopedSlots","normalSlots","prevSlots","hasNormalSlots","isStable","$stable","$key","_normalized","$hasNormal","normalizeScopedSlot","key$2","proxyNormalSlot","renderList","renderSlot","bindObject","scopedSlotFn","$scopedSlots","$slots","$createElement","resolveFilter","isKeyNotMatch","expect","actual","checkKeyCodes","eventKeyCode","builtInKeyCode","eventKeyName","builtInKeyName","mappedKeyCode","bindObjectProps","asProp","isSync","loop","domProps","camelizedKey","hyphenatedKey","$event","renderStatic","isInFor","_staticTrees","tree","markStatic","staticRenderFns","_renderProxy","markOnce","markStaticNode","bindObjectListeners","ours","resolveScopedSlots","hasDynamicKeys","contentHashKey","bindDynamicKeys","baseObj","prependModifier","symbol","installRenderHelpers","_o","_n","_s","_t","_q","_m","_k","_b","_v","_e","_u","_g","_p","FunctionalRenderContext","contextVm","this$1","_original","isCompiled","_compiled","needNormalization","injections","scopedSlots","_scopeId","_c","cloneAndMarkFunctionalResult","renderContext","mergeProps","componentVNodeHooks","hydrating","_isDestroyed","keepAlive","mountedNode","prepatch","_isComponent","_parentVnode","inlineTemplate","createComponentInstanceForVnode","activeInstance","$mount","oldVnode","parentVnode","renderChildren","newScopedSlots","oldScopedSlots","hasDynamicScopedSlot","needsForceUpdate","_renderChildren","$vnode","_vnode","$attrs","$listeners","propKeys","_propKeys","oldListeners","_parentListeners","updateComponentListeners","$forceUpdate","updateChildComponent","_isMounted","callHook","_inactive","activatedChildren","activateChildComponent","deactivateChildComponent","direct","_directInactive","isInInactiveTree","$children","$destroy","hooksToMerge","createComponent","baseCtor","errorComp","resolved","currentRenderingInstance","owners","loadingComp","timerLoading","timerTimeout","$on","forceRender","renderCompleted","ensureCtor","component","resolveAsyncComponent","createAsyncPlaceholder","resolveConstructorOptions","transformModel","extractPropsFromVNodeData","functional","vnodes","createFunctionalComponent","nativeOn","abstract","_merged","mergeHook$1","installComponentHooks","f1","f2","SIMPLE_NORMALIZE","ALWAYS_NORMALIZE","normalizationType","alwaysNormalize","simpleNormalizeChildren","pre","applyNS","force","class","registerDeepBindings","comp","getFirstComponentChild","remove$1","$off","_target","onceHandler","setActiveInstance","prevActiveInstance","_hasHookEvent","$emit","waiting","flushing","currentFlushTimestamp","getNow","createEvent","flushSchedulerQueue","watcher","activatedQueue","updatedQueue","callActivatedHooks","_watcher","callUpdatedHooks","uid$2","Watcher","expOrFn","isRenderWatcher","_watchers","user","lazy","deps","newDeps","depIds","newDepIds","expression","segments","parsePath","cleanupDeps","queueWatcher","oldValue","_isBeingDestroyed","sharedPropertyDefinition","sourceKey","initState","propsOptions","initProps","initMethods","getData","charCodeAt","watchers","_computedWatchers","isSSR","userDef","computedWatcherOptions","defineComputed","initComputed","createWatcher","initWatch","shouldCache","createComputedGetter","createGetterInvoker","$watch","uid$3","super","superOptions","modifiedOptions","latest","sealed","sealedOptions","resolveModifiedOptions","extendOptions","Vue","_init","initExtend","Super","SuperId","cachedCtors","_Ctor","Sub","Comp","initProps$1","initComputed$1","getComponentName","pruneCache","keepAliveInstance","cachedNode","pruneCacheEntry","cached$$1","_uid","vnodeComponentOptions","_componentTag","initInternalComponent","_self","$root","$refs","initLifecycle","initEvents","parentData","initRender","initInjections","initProvide","initMixin","dataDef","propsDef","$set","$delete","stateMixin","hookRE","$once","i$1","cbs","eventsMixin","_update","prevEl","prevVnode","restoreActiveInstance","__patch__","__vue__","lifecycleMixin","$nextTick","_render","ref","renderMixin","patternTypes","builtInComponents","KeepAlive","exclude","created","destroyed","mounted","configDef","util","defineReactive","observable","installedPlugins","_installedPlugins","install","initUse","initMixin$1","definition","initAssetRegisters","initGlobalAPI","ssrContext","acceptValue","isEnumeratedAttr","isValidContentEditableValue","convertEnumeratedValue","isFalsyAttrValue","isBooleanAttr","xlinkNS","isXlink","getXlinkProp","genClassForVnode","childNode","mergeClassData","staticClass","dynamicClass","stringifyClass","renderClass","stringified","stringifyArray","stringifyObject","namespaceMap","math","isHTMLTag","isSVG","unknownElementCache","isTextInputType","nodeOps","multiple","createElementNS","newNode","referenceNode","setTextContent","setStyleScope","scopeId","registerRef","isRemoval","refInFor","emptyNode","sameVnode","typeA","typeB","sameInputType","createKeyToOldIdx","beginIdx","endIdx","updateDirectives","oldDir","isCreate","isDestroy","oldDirs","normalizeDirectives$1","newDirs","dirsWithInsert","dirsWithPostpatch","oldArg","callHook$1","componentUpdated","callInsert","emptyModifiers","modifiers","getRawDirName","rawName","baseModules","updateAttrs","inheritAttrs","oldAttrs","setAttr","removeAttributeNS","baseSetAttr","__ieph","blocker","updateClass","oldData","cls","transitionClass","_transitionClasses","_prevClass","target$1","klass","RANGE_TOKEN","CHECKBOX_RADIO_TOKEN","createOnceHandler$1","remove$2","useMicrotaskFix","add$1","attachedTimestamp","_wrapper","updateDOMListeners","change","normalizeEvents","svgContainer","updateDOMProps","oldProps","_value","strCur","shouldUpdateValue","checkVal","composing","notInFocus","isNotInFocusAndDirty","_vModifiers","isDirtyWithModifiers","parseStyleText","propertyDelimiter","normalizeStyleData","normalizeStyleBinding","staticStyle","bindingStyle","emptyStyle","cssVarRE","importantRE","setProp","setProperty","normalize","vendorNames","updateStyle","oldStaticStyle","oldStyleBinding","normalizedStyle","oldStyle","newStyle","checkChild","styleData","getStyle","whitespaceRE","classList","tar","resolveTransition","autoCssTransition","enterClass","enterToClass","enterActiveClass","leaveClass","leaveToClass","leaveActiveClass","hasTransition","TRANSITION","ANIMATION","transitionProp","transitionEndEvent","animationProp","animationEndEvent","ontransitionend","onwebkittransitionend","onanimationend","onwebkitanimationend","raf","requestAnimationFrame","nextFrame","addTransitionClass","transitionClasses","removeTransitionClass","whenTransitionEnds","expectedType","getTransitionInfo","propCount","ended","onEnd","transformRE","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","durations","toMs","enter","toggleDisplay","_leaveCb","cancelled","transition","_enterCb","appearClass","appearToClass","appearActiveClass","beforeEnter","afterEnter","enterCancelled","beforeAppear","appear","afterAppear","appearCancelled","transitionNode","isAppear","startClass","activeClass","toClass","beforeEnterHook","enterHook","afterEnterHook","enterCancelledHook","explicitEnterDuration","expectsCSS","userWantsControl","getHookArgumentsLength","pendingNode","isValidDuration","leave","rm","beforeLeave","afterLeave","leaveCancelled","delayLeave","explicitLeaveDuration","performLeave","invokerFns","_enter","backend","removeNode","createElm","insertedVnodeQueue","parentElm","refElm","nested","ownerArray","isReactivated","initComponent","innerNode","activate","reactivateComponent","setScope","createChildren","invokeCreateHooks","pendingInsert","isPatchable","ref$$1","ancestor","addVnodes","startIdx","invokeDestroyHook","removeVnodes","removeAndInvokeRemoveHook","childElm","createRmCb","findIdxInOld","oldCh","patchVnode","removeOnly","hydrate","newCh","oldKeyToIdx","idxInOld","vnodeToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","canMove","updateChildren","postpatch","invokeInsertHook","isRenderedModule","inVPre","hasChildNodes","childrenMatch","fullInvoke","isInitialPatch","isRealElement","oldElm","patchable","i$2","createPatchFunction","vmodel","directive","_vOptions","setSelected","onCompositionStart","onCompositionEnd","prevOptions","curOptions","hasNoMatchingOption","actuallySetSelected","isMultiple","initEvent","dispatchEvent","locateNode","platformDirectives","transition$$1","originalDisplay","__vOriginalDisplay","transitionProps","getRealChild","compOptions","extractTransitionData","rawChild","isNotTextNode","isVShowDirective","Transition","hasParentTransition","_leaving","oldRawChild","oldChild","isSameChild","delayedLeave","moveClass","callPendingCbs","_moveCb","recordPosition","newPos","applyTranslation","oldPos","moved","transform","WebkitTransform","transitionDuration","platformComponents","TransitionGroup","beforeMount","kept","prevChildren","rawChildren","transitionData","c$1","updated","hasMove","_reflow","_hasMove","HTMLUnknownElement","HTMLElement","updateComponent","mountComponent","strictUriEncode","objectAssign","decodeComponent","extract","queryStart","formatter","arrayFormat","parserForArrayFormat","keysSorter","encoderForArrayFormat","val2","getOwnPropertySymbols","propIsEnumerable","test1","test2","test3","shouldUseNative","symbols","singleMatcher","multiMatcher","decodeComponents","decode","encodedURI","replaceMap","customDecodeURIComponent","Timeout","clearFn","_id","_clearFn","scope","unref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","_onTimeout","clearImmediate","registerImmediate","channel","messagePrefix","onGlobalMessage","nextHandle","tasksByHandle","currentlyRunningATask","attachTo","getPrototypeOf","runIfPresent","postMessage","importScripts","postMessageIsAsynchronous","oldOnMessage","canUsePostMessage","MessageChannel","port1","port2","task","normalizeComponent","scriptExports","functionalTemplate","injectStyles","moduleIdentifier","shadowMode","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","shadowRoot","_injectStyles","originalRender","beforeCreate","_vm","_h","shake","invalidPassword","autoCompleteAllowed","updateUsername","passwordInputType","togglePassword","invertedColors","throttleDelay","redirectUrl","timezone","timezoneOffset","warning","$$a","$$el","$$c","$$i","resetPassword","resetPasswordTarget","canResetPassword","resetPasswordLink","passwordResetFinished","messages","errors","localStorage","sessionStorage","Nextcloud","fromStateOr","orValue","InitialState","loadState","LoginView","Theming","inverted","resetPasswordUser"],"mappings":"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","file":"login.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 579);\n","/*!\n * jQuery JavaScript Library v2.1.4\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2015-04-28T16:01Z\n */\n\n(function( global, factory ) {\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n}(typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Support: Firefox 18+\n// Can't be in strict mode, several libs including ASP.NET trace\n// the stack via arguments.caller.callee and Firefox dies if\n// you try to trace through \"use strict\" call chains. (#13335)\n//\n\nvar arr = [];\n\nvar slice = arr.slice;\n\nvar concat = arr.concat;\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar support = {};\n\n\n\nvar\n\t// Use the correct document accordingly with window argument (sandbox)\n\tdocument = window.document,\n\n\tversion = \"2.1.4\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android<4.1\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n\n\t// Matches dashed string for camelizing\n\trmsPrefix = /^-ms-/,\n\trdashAlpha = /-([\\da-z])/gi,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn = jQuery.prototype = {\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num != null ?\n\n\t\t\t// Return just the one element from the set\n\t\t\t( num < 0 ? this[ num + this.length ] : this[ num ] ) :\n\n\t\t\t// Return all the elements in a clean array\n\t\t\tslice.call( this );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\t\tret.context = this.context;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor(null);\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend({\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === \"function\";\n\t},\n\n\tisArray: Array.isArray,\n\n\tisWindow: function( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t},\n\n\tisNumeric: function( obj ) {\n\t\t// parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t// adding 1 corrects loss of precision from parseFloat (#15100)\n\t\treturn !jQuery.isArray( obj ) && (obj - parseFloat( obj ) + 1) >= 0;\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\t// Not plain objects:\n\t\t// - Any object or value whose internal [[Class]] property is not \"[object Object]\"\n\t\t// - DOM nodes\n\t\t// - window\n\t\tif ( jQuery.type( obj ) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( obj.constructor &&\n\t\t\t\t!hasOwn.call( obj.constructor.prototype, \"isPrototypeOf\" ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// If the function hasn't returned already, we're confident that\n\t\t// |obj| is a plain object, created by {} or constructed with new Object\n\t\treturn true;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\ttype: function( obj ) {\n\t\tif ( obj == null ) {\n\t\t\treturn obj + \"\";\n\t\t}\n\t\t// Support: Android<4.0, iOS<6 (functionish RegExp)\n\t\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\t\tclass2type[ toString.call(obj) ] || \"object\" :\n\t\t\ttypeof obj;\n\t},\n\n\t// Evaluates a script in a global context\n\tglobalEval: function( code ) {\n\t\tvar script,\n\t\t\tindirect = eval;\n\n\t\tcode = jQuery.trim( code );\n\n\t\tif ( code ) {\n\t\t\t// If the code includes a valid, prologue position\n\t\t\t// strict mode pragma, execute code by injecting a\n\t\t\t// script tag into the document.\n\t\t\tif ( code.indexOf(\"use strict\") === 1 ) {\n\t\t\t\tscript = document.createElement(\"script\");\n\t\t\t\tscript.text = code;\n\t\t\t\tdocument.head.appendChild( script ).parentNode.removeChild( script );\n\t\t\t} else {\n\t\t\t// Otherwise, avoid the DOM node creation, insertion\n\t\t\t// and removal by using an indirect global eval\n\t\t\t\tindirect( code );\n\t\t\t}\n\t\t}\n\t},\n\n\t// Convert dashed to camelCase; used by the css and data modules\n\t// Support: IE9-11+\n\t// Microsoft forgot to hump their vendor prefix (#9572)\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( obj, callback, args ) {\n\t\tvar value,\n\t\t\ti = 0,\n\t\t\tlength = obj.length,\n\t\t\tisArray = isArraylike( obj );\n\n\t\tif ( args ) {\n\t\t\tif ( isArray ) {\n\t\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\t\tvalue = callback.apply( obj[ i ], args );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( i in obj ) {\n\t\t\t\t\tvalue = callback.apply( obj[ i ], args );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isArray ) {\n\t\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\t\tvalue = callback.call( obj[ i ], i, obj[ i ] );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( i in obj ) {\n\t\t\t\t\tvalue = callback.call( obj[ i ], i, obj[ i ] );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android<4.1\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArraylike( Object(arr) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar value,\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tisArray = isArraylike( elems ),\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArray ) {\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tvar tmp, args, proxy;\n\n\t\tif ( typeof context === \"string\" ) {\n\t\t\ttmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\targs = slice.call( arguments, 2 );\n\t\tproxy = function() {\n\t\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\tnow: Date.now,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n});\n\n// Populate the class2type map\njQuery.each(\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"), function(i, name) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n});\n\nfunction isArraylike( obj ) {\n\n\t// Support: iOS 8.2 (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = \"length\" in obj && obj.length,\n\t\ttype = jQuery.type( obj );\n\n\tif ( type === \"function\" || jQuery.isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\tif ( obj.nodeType === 1 && length ) {\n\t\treturn true;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.2.0-pre\n * http://sizzlejs.com/\n *\n * Copyright 2008, 2014 jQuery Foundation, Inc. and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2014-12-16\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// General-purpose constants\n\tMAX_NEGATIVE = 1 << 31,\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it's faster than native\n\t// http://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\t// http://www.w3.org/TR/css3-syntax/#characters\n\tcharacterEncoding = \"(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+\",\n\n\t// Loosely modeled on CSS identifier characters\n\t// An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors\n\t// Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = characterEncoding.replace( \"w\", \"w#\" ),\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + characterEncoding + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + characterEncoding + \")(?:\\\\((\" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*?)\" + whitespace + \"*\\\\]\", \"g\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + characterEncoding + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + characterEncoding + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + characterEncoding.replace( \"w\", \"w*\" ) + \")\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\trescape = /'|\\\\/g,\n\n\t// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t};\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar match, elem, m, nodeType,\n\t\t// QSA vars\n\t\ti, groups, old, nid, newContext, newSelector;\n\n\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\n\tcontext = context || document;\n\tresults = results || [];\n\tnodeType = context.nodeType;\n\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\tif ( !seed && documentIsHTML ) {\n\n\t\t// Try to shortcut find operations when possible (e.g., not under DocumentFragment)\n\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\t\t\t// Speed-up: Sizzle(\"#ID\")\n\t\t\tif ( (m = match[1]) ) {\n\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\telem = context.getElementById( m );\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document (jQuery #6963)\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE, Opera, and Webkit return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Context is not a document\n\t\t\t\t\tif ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&\n\t\t\t\t\t\tcontains( context, elem ) && elem.id === m ) {\n\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Speed-up: Sizzle(\"TAG\")\n\t\t\t} else if ( match[2] ) {\n\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\treturn results;\n\n\t\t\t// Speed-up: Sizzle(\".CLASS\")\n\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName ) {\n\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\treturn results;\n\t\t\t}\n\t\t}\n\n\t\t// QSA path\n\t\tif ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\n\t\t\tnid = old = expando;\n\t\t\tnewContext = context;\n\t\t\tnewSelector = nodeType !== 1 && selector;\n\n\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t// IE 8 doesn't work on object elements\n\t\t\tif ( nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\tgroups = tokenize( selector );\n\n\t\t\t\tif ( (old = context.getAttribute(\"id\")) ) {\n\t\t\t\t\tnid = old.replace( rescape, \"\\\\$&\" );\n\t\t\t\t} else {\n\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t}\n\t\t\t\tnid = \"[id='\" + nid + \"'] \";\n\n\t\t\t\ti = groups.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tgroups[i] = nid + toSelector( groups[i] );\n\t\t\t\t}\n\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) || context;\n\t\t\t\tnewSelector = groups.join(\",\");\n\t\t\t}\n\n\t\t\tif ( newSelector ) {\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch(qsaError) {\n\t\t\t\t} finally {\n\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\tcontext.removeAttribute(\"id\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {Function(string, Object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + \" \" ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created div and expects a boolean result\n */\nfunction assert( fn ) {\n\tvar div = document.createElement(\"div\");\n\n\ttry {\n\t\treturn !!fn( div );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( div.parentNode ) {\n\t\t\tdiv.parentNode.removeChild( div );\n\t\t}\n\t\t// release memory in IE\n\t\tdiv = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = attrs.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\t( ~b.sourceIndex || MAX_NEGATIVE ) -\n\t\t\t( ~a.sourceIndex || MAX_NEGATIVE );\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, parent,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// If no document and documentElement is available, return\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Set our document\n\tdocument = doc;\n\tdocElem = doc.documentElement;\n\tparent = doc.defaultView;\n\n\t// Support: IE>8\n\t// If iframe document is assigned to \"document\" variable and if iframe has been reloaded,\n\t// IE will throw \"permission denied\" error when accessing \"document\" variable, see jQuery #13936\n\t// IE6-8 do not support the defaultView property so parent will be undefined\n\tif ( parent && parent !== parent.top ) {\n\t\t// IE11 does not have attachEvent, so all must suffer\n\t\tif ( parent.addEventListener ) {\n\t\t\tparent.addEventListener( \"unload\", unloadHandler, false );\n\t\t} else if ( parent.attachEvent ) {\n\t\t\tparent.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Support tests\n\t---------------------------------------------------------------------- */\n\tdocumentIsHTML = !isXML( doc );\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert(function( div ) {\n\t\tdiv.className = \"i\";\n\t\treturn !div.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( div ) {\n\t\tdiv.appendChild( doc.createComment(\"\") );\n\t\treturn !div.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( doc.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( div ) {\n\t\tdocElem.appendChild( div ).id = expando;\n\t\treturn !doc.getElementsByName || !doc.getElementsByName( expando ).length;\n\t});\n\n\t// ID find and filter\n\tif ( support.getById ) {\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar m = context.getElementById( id );\n\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\treturn m && m.parentNode ? [ m ] : [];\n\t\t\t}\n\t\t};\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t} else {\n\t\t// Support: IE6/7\n\t\t// getElementById is not reliable as a find shortcut\n\t\tdelete Expr.find[\"ID\"];\n\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See http://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( div ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// http://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( div ).innerHTML = \"
    \" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( div.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !div.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.2+, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.7+\n\t\t\tif ( !div.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibing-combinator selector` fails\n\t\t\tif ( !div.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( div ) {\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = doc.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tdiv.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( div.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":enabled\").length ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tdiv.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( div ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( div, \"div\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( div, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully does not implement inclusive descendent\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === doc ? -1 :\n\t\t\t\tb === doc ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn doc;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\t// Make sure that attribute selectors are quoted\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, outerCache, node, diff, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\t\t\t\t\t\t\touterCache = parent[ expando ] || (parent[ expando ] = {});\n\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[0] === dirruns && cache[1];\n\t\t\t\t\t\t\tdiff = cache[0] === dirruns && cache[2];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t} else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {\n\t\t\t\t\t\t\tdiff = cache[1];\n\n\t\t\t\t\t\t// xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\tif ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {\n\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t(node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": function( elem ) {\n\t\t\treturn elem.disabled === false;\n\t\t},\n\n\t\t\"disabled\": function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tcheckNonElements = base && dir === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from dir caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\t\t\t\t\t\tif ( (oldCache = outerCache[ dir ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\touterCache[ dir ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context !== document && context;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Keep `i` a string if there are no elements so `matchedCount` will be \"00\" below\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\tmatchedCount += i;\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is no seed and only one group\n\tif ( match.length === 1 ) {\n\n\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tsupport.getById && context.nodeType === 9 && documentIsHTML &&\n\t\t\t\tExpr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\trsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( div1 ) {\n\t// Should return 1, but returns 4 (following)\n\treturn div1.compareDocumentPosition( document.createElement(\"div\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( div ) {\n\tdiv.innerHTML = \"\";\n\treturn div.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( div ) {\n\tdiv.innerHTML = \"\";\n\tdiv.firstChild.setAttribute( \"value\", \"\" );\n\treturn div.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( div ) {\n\treturn div.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.pseudos;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = (/^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/);\n\n\n\nvar risSimple = /^.[^:#\\[\\.,]*$/;\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\t/* jshint -W018 */\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t});\n\n\t}\n\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t});\n\n\t}\n\n\tif ( typeof qualifier === \"string\" ) {\n\t\tif ( risSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter( qualifier, elements, not );\n\t\t}\n\n\t\tqualifier = jQuery.filter( qualifier, elements );\n\t}\n\n\treturn jQuery.grep( elements, function( elem ) {\n\t\treturn ( indexOf.call( qualifier, elem ) >= 0 ) !== not;\n\t});\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\treturn elems.length === 1 && elem.nodeType === 1 ?\n\t\tjQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :\n\t\tjQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t}));\n};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar i,\n\t\t\tlen = this.length,\n\t\t\tret = [],\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter(function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}) );\n\t\t}\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\t// Needed because $( selector, context ) becomes $( context ).find( selector )\n\t\tret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );\n\t\tret.selector = this.selector ? this.selector + \" \" + selector : selector;\n\t\treturn ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector || [], false) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector || [], true) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n});\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,\n\n\tinit = jQuery.fn.init = function( selector, context ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[0] === \"<\" && selector[ selector.length - 1 ] === \">\" && selector.length >= 3 ) {\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[0] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[1],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( jQuery.isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[2] );\n\n\t\t\t\t\t// Support: Blackberry 4.6\n\t\t\t\t\t// gEBID returns nodes no longer in the document (#6963)\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || rootjQuery ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn typeof rootjQuery.ready !== \"undefined\" ?\n\t\t\t\trootjQuery.ready( selector ) :\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\tif ( selector.selector !== undefined ) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.extend({\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\ttruncate = until !== undefined;\n\n\t\twhile ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tmatched.push( elem );\n\t\t\t}\n\t\t}\n\t\treturn matched;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar matched = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tmatched.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn matched;\n\t}\n});\n\njQuery.fn.extend({\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter(function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\tpos = rneedsContext.test( selectors ) || typeof selectors !== \"string\" ?\n\t\t\t\tjQuery( selectors, context || this.context ) :\n\t\t\t\t0;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tfor ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {\n\t\t\t\t// Always skip document fragments\n\t\t\t\tif ( cur.nodeType < 11 && (pos ?\n\t\t\t\t\tpos.index(cur) > -1 :\n\n\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\tjQuery.find.matchesSelector(cur, selectors)) ) {\n\n\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.unique(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter(selector)\n\t\t);\n\t}\n});\n\nfunction sibling( cur, dir ) {\n\twhile ( (cur = cur[dir]) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each({\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn elem.contentDocument || jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.unique( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n});\nvar rnotwhite = (/\\S+/g);\n\n\n\n// String to Object options format cache\nvar optionsCache = {};\n\n// Convert String-formatted options into Object-formatted ones and store in cache\nfunction createOptions( options ) {\n\tvar object = optionsCache[ options ] = {};\n\tjQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t});\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\t( optionsCache[ options ] || createOptions( options ) ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Last fire value (for non-forgettable lists)\n\t\tmemory,\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\t\t// Flag to know if list is currently firing\n\t\tfiring,\n\t\t// First callback to fire (used internally by add and fireWith)\n\t\tfiringStart,\n\t\t// End of the loop when firing\n\t\tfiringLength,\n\t\t// Index of currently firing callback (modified by remove if needed)\n\t\tfiringIndex,\n\t\t// Actual callback list\n\t\tlist = [],\n\t\t// Stack of fire calls for repeatable lists\n\t\tstack = !options.once && [],\n\t\t// Fire callbacks\n\t\tfire = function( data ) {\n\t\t\tmemory = options.memory && data;\n\t\t\tfired = true;\n\t\t\tfiringIndex = firingStart || 0;\n\t\t\tfiringStart = 0;\n\t\t\tfiringLength = list.length;\n\t\t\tfiring = true;\n\t\t\tfor ( ; list && firingIndex < firingLength; firingIndex++ ) {\n\t\t\t\tif ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {\n\t\t\t\t\tmemory = false; // To prevent further calls using add\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfiring = false;\n\t\t\tif ( list ) {\n\t\t\t\tif ( stack ) {\n\t\t\t\t\tif ( stack.length ) {\n\t\t\t\t\t\tfire( stack.shift() );\n\t\t\t\t\t}\n\t\t\t\t} else if ( memory ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t} else {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Actual Callbacks object\n\t\tself = {\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\t// First, we save the current length\n\t\t\t\t\tvar start = list.length;\n\t\t\t\t\t(function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tvar type = jQuery.type( arg );\n\t\t\t\t\t\t\tif ( type === \"function\" ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && type !== \"string\" ) {\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t})( arguments );\n\t\t\t\t\t// Do we need to add the callbacks to the\n\t\t\t\t\t// current firing batch?\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tfiringLength = list.length;\n\t\t\t\t\t// With memory, if we're not firing then\n\t\t\t\t\t// we should call right away\n\t\t\t\t\t} else if ( memory ) {\n\t\t\t\t\t\tfiringStart = start;\n\t\t\t\t\t\tfire( memory );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\t\tvar index;\n\t\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\t\tlist.splice( index, 1 );\n\t\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\t\t\tif ( index <= firingLength ) {\n\t\t\t\t\t\t\t\t\tfiringLength--;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );\n\t\t\t},\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tlist = [];\n\t\t\t\tfiringLength = 0;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Have the list do nothing anymore\n\t\t\tdisable: function() {\n\t\t\t\tlist = stack = memory = undefined;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it disabled?\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\t\t\t// Lock the list in its current state\n\t\t\tlock: function() {\n\t\t\t\tstack = undefined;\n\t\t\t\tif ( !memory ) {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it locked?\n\t\t\tlocked: function() {\n\t\t\t\treturn !stack;\n\t\t\t},\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( list && ( !fired || stack ) ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tstack.push( args );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfire( args );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\njQuery.extend({\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\t\t\t\t// action, add listener, listener list, final state\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks(\"once memory\"), \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks(\"once memory\"), \"rejected\" ],\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks(\"memory\") ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\tthen: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\t\t\t\t\treturn jQuery.Deferred(function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\t\t\t\t\tvar fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];\n\t\t\t\t\t\t\t// deferred[ done | fail | progress ] for forwarding actions to newDefer\n\t\t\t\t\t\t\tdeferred[ tuple[1] ](function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject )\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t}).promise();\n\t\t\t\t},\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Keep pipe for back-compat\n\t\tpromise.pipe = promise.then;\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 3 ];\n\n\t\t\t// promise[ done | fail | progress ] = list.add\n\t\t\tpromise[ tuple[1] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(function() {\n\t\t\t\t\t// state = [ resolved | rejected ]\n\t\t\t\t\tstate = stateString;\n\n\t\t\t\t// [ reject_list | resolve_list ].disable; progress_list.lock\n\t\t\t\t}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );\n\t\t\t}\n\n\t\t\t// deferred[ resolve | reject | notify ]\n\t\t\tdeferred[ tuple[0] ] = function() {\n\t\t\t\tdeferred[ tuple[0] + \"With\" ]( this === deferred ? promise : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\t\t\tdeferred[ tuple[0] + \"With\" ] = list.fireWith;\n\t\t});\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( subordinate /* , ..., subordinateN */ ) {\n\t\tvar i = 0,\n\t\t\tresolveValues = slice.call( arguments ),\n\t\t\tlength = resolveValues.length,\n\n\t\t\t// the count of uncompleted subordinates\n\t\t\tremaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,\n\n\t\t\t// the master Deferred. If resolveValues consist of only a single Deferred, just use that.\n\t\t\tdeferred = remaining === 1 ? subordinate : jQuery.Deferred(),\n\n\t\t\t// Update function for both resolve and progress values\n\t\t\tupdateFunc = function( i, contexts, values ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tcontexts[ i ] = this;\n\t\t\t\t\tvalues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( values === progressValues ) {\n\t\t\t\t\t\tdeferred.notifyWith( contexts, values );\n\t\t\t\t\t} else if ( !( --remaining ) ) {\n\t\t\t\t\t\tdeferred.resolveWith( contexts, values );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t},\n\n\t\t\tprogressValues, progressContexts, resolveContexts;\n\n\t\t// Add listeners to Deferred subordinates; treat others as resolved\n\t\tif ( length > 1 ) {\n\t\t\tprogressValues = new Array( length );\n\t\t\tprogressContexts = new Array( length );\n\t\t\tresolveContexts = new Array( length );\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {\n\t\t\t\t\tresolveValues[ i ].promise()\n\t\t\t\t\t\t.done( updateFunc( i, resolveContexts, resolveValues ) )\n\t\t\t\t\t\t.fail( deferred.reject )\n\t\t\t\t\t\t.progress( updateFunc( i, progressContexts, progressValues ) );\n\t\t\t\t} else {\n\t\t\t\t\t--remaining;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// If we're not waiting on anything, resolve the master\n\t\tif ( !remaining ) {\n\t\t\tdeferred.resolveWith( resolveContexts, resolveValues );\n\t\t}\n\n\t\treturn deferred.promise();\n\t}\n});\n\n\n// The deferred used on DOM ready\nvar readyList;\n\njQuery.fn.ready = function( fn ) {\n\t// Add the callback\n\tjQuery.ready.promise().done( fn );\n\n\treturn this;\n};\n\njQuery.extend({\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Hold (or release) the ready event\n\tholdReady: function( hold ) {\n\t\tif ( hold ) {\n\t\t\tjQuery.readyWait++;\n\t\t} else {\n\t\t\tjQuery.ready( true );\n\t\t}\n\t},\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\n\t\t// Trigger any bound ready events\n\t\tif ( jQuery.fn.triggerHandler ) {\n\t\t\tjQuery( document ).triggerHandler( \"ready\" );\n\t\t\tjQuery( document ).off( \"ready\" );\n\t\t}\n\t}\n});\n\n/**\n * The ready event handler and self cleanup method\n */\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed, false );\n\twindow.removeEventListener( \"load\", completed, false );\n\tjQuery.ready();\n}\n\njQuery.ready.promise = function( obj ) {\n\tif ( !readyList ) {\n\n\t\treadyList = jQuery.Deferred();\n\n\t\t// Catch cases where $(document).ready() is called after the browser event has already occurred.\n\t\t// We once tried to use readyState \"interactive\" here, but it caused issues like the one\n\t\t// discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\tsetTimeout( jQuery.ready );\n\n\t\t} else {\n\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", completed, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", completed, false );\n\t\t}\n\t}\n\treturn readyList.promise( obj );\n};\n\n// Kick off the DOM ready check even if the user does not\njQuery.ready.promise();\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( jQuery.type( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\tjQuery.access( elems, fn, i, key[i], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !jQuery.isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn chainable ?\n\t\telems :\n\n\t\t// Gets\n\t\tbulk ?\n\t\t\tfn.call( elems ) :\n\t\t\tlen ? fn( elems[0], key ) : emptyGet;\n};\n\n\n/**\n * Determines whether an object can have data\n */\njQuery.acceptData = function( owner ) {\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\t/* jshint -W018 */\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\nfunction Data() {\n\t// Support: Android<4,\n\t// Old WebKit does not have Object.preventExtensions/freeze method,\n\t// return new empty object instead with no [[set]] accessor\n\tObject.defineProperty( this.cache = {}, 0, {\n\t\tget: function() {\n\t\t\treturn {};\n\t\t}\n\t});\n\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\nData.accepts = jQuery.acceptData;\n\nData.prototype = {\n\tkey: function( owner ) {\n\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t// but we should not, see #8335.\n\t\t// Always return the key for a frozen object.\n\t\tif ( !Data.accepts( owner ) ) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar descriptor = {},\n\t\t\t// Check if the owner object already has a cache key\n\t\t\tunlock = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !unlock ) {\n\t\t\tunlock = Data.uid++;\n\n\t\t\t// Secure it in a non-enumerable, non-writable property\n\t\t\ttry {\n\t\t\t\tdescriptor[ this.expando ] = { value: unlock };\n\t\t\t\tObject.defineProperties( owner, descriptor );\n\n\t\t\t// Support: Android<4\n\t\t\t// Fallback to a less secure definition\n\t\t\t} catch ( e ) {\n\t\t\t\tdescriptor[ this.expando ] = unlock;\n\t\t\t\tjQuery.extend( owner, descriptor );\n\t\t\t}\n\t\t}\n\n\t\t// Ensure the cache object\n\t\tif ( !this.cache[ unlock ] ) {\n\t\t\tthis.cache[ unlock ] = {};\n\t\t}\n\n\t\treturn unlock;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\t// There may be an unlock assigned to this node,\n\t\t\t// if there is no entry for this \"owner\", create one inline\n\t\t\t// and set the unlock as though an owner entry had always existed\n\t\t\tunlock = this.key( owner ),\n\t\t\tcache = this.cache[ unlock ];\n\n\t\t// Handle: [ owner, key, value ] args\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ data ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\t\t\t// Fresh assignments by object are shallow copied\n\t\t\tif ( jQuery.isEmptyObject( cache ) ) {\n\t\t\t\tjQuery.extend( this.cache[ unlock ], data );\n\t\t\t// Otherwise, copy the properties one-by-one to the cache object\n\t\t\t} else {\n\t\t\t\tfor ( prop in data ) {\n\t\t\t\t\tcache[ prop ] = data[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\t// Either a valid cache is found, or will be created.\n\t\t// New caches will be created and the unlock returned,\n\t\t// allowing direct access to the newly created\n\t\t// empty data object. A valid owner object must be provided.\n\t\tvar cache = this.cache[ this.key( owner ) ];\n\n\t\treturn key === undefined ?\n\t\t\tcache : cache[ key ];\n\t},\n\taccess: function( owner, key, value ) {\n\t\tvar stored;\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t((key && typeof key === \"string\") && value === undefined) ) {\n\n\t\t\tstored = this.get( owner, key );\n\n\t\t\treturn stored !== undefined ?\n\t\t\t\tstored : this.get( owner, jQuery.camelCase(key) );\n\t\t}\n\n\t\t// [*]When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i, name, camel,\n\t\t\tunlock = this.key( owner ),\n\t\t\tcache = this.cache[ unlock ];\n\n\t\tif ( key === undefined ) {\n\t\t\tthis.cache[ unlock ] = {};\n\n\t\t} else {\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( jQuery.isArray( key ) ) {\n\t\t\t\t// If \"name\" is an array of keys...\n\t\t\t\t// When data is initially created, via (\"key\", \"val\") signature,\n\t\t\t\t// keys will be converted to camelCase.\n\t\t\t\t// Since there is no way to tell _how_ a key was added, remove\n\t\t\t\t// both plain key and camelCase key. #12786\n\t\t\t\t// This will only penalize the array argument path.\n\t\t\t\tname = key.concat( key.map( jQuery.camelCase ) );\n\t\t\t} else {\n\t\t\t\tcamel = jQuery.camelCase( key );\n\t\t\t\t// Try the string as a key before any manipulation\n\t\t\t\tif ( key in cache ) {\n\t\t\t\t\tname = [ key, camel ];\n\t\t\t\t} else {\n\t\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\t\tname = camel;\n\t\t\t\t\tname = name in cache ?\n\t\t\t\t\t\t[ name ] : ( name.match( rnotwhite ) || [] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ti = name.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ name[ i ] ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\treturn !jQuery.isEmptyObject(\n\t\t\tthis.cache[ owner[ this.expando ] ] || {}\n\t\t);\n\t},\n\tdiscard: function( owner ) {\n\t\tif ( owner[ this.expando ] ) {\n\t\t\tdelete this.cache[ owner[ this.expando ] ];\n\t\t}\n\t}\n};\nvar data_priv = new Data();\n\nvar data_user = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /([A-Z])/g;\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$1\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\t\tdata === \"false\" ? false :\n\t\t\t\t\tdata === \"null\" ? null :\n\t\t\t\t\t// Only convert to a number if it doesn't change the string\n\t\t\t\t\t+data + \"\" === data ? +data :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdata_user.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend({\n\thasData: function( elem ) {\n\t\treturn data_user.hasData( elem ) || data_priv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn data_user.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdata_user.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to data_priv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn data_priv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdata_priv.remove( elem, name );\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = data_user.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !data_priv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE11+\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = jQuery.camelCase( name.slice(5) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdata_priv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tdata_user.set( this, key );\n\t\t\t});\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data,\n\t\t\t\tcamelKey = jQuery.camelCase( key );\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// with the key as-is\n\t\t\t\tdata = data_user.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// with the key camelized\n\t\t\t\tdata = data_user.get( elem, camelKey );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, camelKey, undefined );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each(function() {\n\t\t\t\t// First, attempt to store a copy or reference of any\n\t\t\t\t// data that might've been store with a camelCased key.\n\t\t\t\tvar data = data_user.get( this, camelKey );\n\n\t\t\t\t// For HTML5 data-* attribute interop, we have to\n\t\t\t\t// store property names with dashes in a camelCase form.\n\t\t\t\t// This might not apply to all properties...*\n\t\t\t\tdata_user.set( this, camelKey, value );\n\n\t\t\t\t// *... In the case of properties that might _actually_\n\t\t\t\t// have dashes, we need to also store a copy of that\n\t\t\t\t// unchanged property.\n\t\t\t\tif ( key.indexOf(\"-\") !== -1 && data !== undefined ) {\n\t\t\t\t\tdata_user.set( this, key, value );\n\t\t\t\t}\n\t\t\t});\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tdata_user.remove( this, key );\n\t\t});\n\t}\n});\n\n\njQuery.extend({\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = data_priv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || jQuery.isArray( data ) ) {\n\t\t\t\t\tqueue = data_priv.access( elem, type, jQuery.makeArray(data) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn data_priv.get( elem, key ) || data_priv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks(\"once memory\").add(function() {\n\t\t\t\tdata_priv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t})\n\t\t});\n\t}\n});\n\njQuery.fn.extend({\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[0], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each(function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[0] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t});\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = data_priv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n});\nvar pnum = (/[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/).source;\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar isHidden = function( elem, el ) {\n\t\t// isHidden might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\t\treturn jQuery.css( elem, \"display\" ) === \"none\" || !jQuery.contains( elem.ownerDocument, elem );\n\t};\n\nvar rcheckableType = (/^(?:checkbox|radio)$/i);\n\n\n\n(function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Safari<=5.1\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Safari<=5.1, Android<4.2\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE<=11+\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n})();\nvar strundefined = typeof undefined;\n\n\n\nsupport.focusinBubbles = \"onfocusin\" in window;\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu)|click/,\n\trfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)$/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = data_priv.get( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !(events = elemData.events) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !(eventHandle = elemData.handle) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== strundefined && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = origType = tmp[1];\n\t\t\tnamespaces = ( tmp[2] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend({\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join(\".\")\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !(handlers = events[ type ]) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = data_priv.hasData( elem ) && data_priv.get( elem );\n\n\t\tif ( !elemData || !(events = elemData.events) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = origType = tmp[1];\n\t\t\tnamespaces = ( tmp[2] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[2] && new RegExp( \"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector || selector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdelete elemData.handle;\n\t\t\tdata_priv.remove( elem, \"events\" );\n\t\t}\n\t},\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split(\".\") : [];\n\n\t\tcur = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf(\".\") >= 0 ) {\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split(\".\");\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf(\":\") < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join(\".\");\n\t\tevent.namespace_re = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === (elem.ownerDocument || document) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {\n\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( data_priv.get( cur, \"events\" ) || {} )[ event.type ] && data_priv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && jQuery.acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) &&\n\t\t\t\tjQuery.acceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\t\t\t\t\telem[ type ]();\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\tdispatch: function( event ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tevent = jQuery.event.fix( event );\n\n\t\tvar i, j, ret, matched, handleObj,\n\t\t\thandlerQueue = [],\n\t\t\targs = slice.call( arguments ),\n\t\t\thandlers = ( data_priv.get( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[0] = event;\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// Triggered event must either 1) have no namespace, or 2) have namespace(s)\n\t\t\t\t// a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )\n\t\t\t\t\t\t\t.apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( (event.result = ret) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, matches, sel, handleObj,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\t// Black-hole SVG instance trees (#13180)\n\t\t// Avoid non-left-click bubbling in Firefox (#3861)\n\t\tif ( delegateCount && cur.nodeType && (!event.button || event.type !== \"click\") ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.disabled !== true || event.type !== \"click\" ) {\n\t\t\t\t\tmatches = [];\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matches[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatches[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) >= 0 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matches[ sel ] ) {\n\t\t\t\t\t\t\tmatches.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matches.length ) {\n\t\t\t\t\t\thandlerQueue.push({ elem: cur, handlers: matches });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\t// Includes some event props shared by KeyEvent and MouseEvent\n\tprops: \"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),\n\n\tfixHooks: {},\n\n\tkeyHooks: {\n\t\tprops: \"char charCode key keyCode\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\n\t\t\t// Add which for key events\n\t\t\tif ( event.which == null ) {\n\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tmouseHooks: {\n\t\tprops: \"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\t\t\tvar eventDoc, doc, body,\n\t\t\t\tbutton = original.button;\n\n\t\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\t\tif ( event.pageX == null && original.clientX != null ) {\n\t\t\t\teventDoc = event.target.ownerDocument || document;\n\t\t\t\tdoc = eventDoc.documentElement;\n\t\t\t\tbody = eventDoc.body;\n\n\t\t\t\tevent.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );\n\t\t\t\tevent.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 );\n\t\t\t}\n\n\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t\t// Note: button is not normalized, so don't use it\n\t\t\tif ( !event.which && button !== undefined ) {\n\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// Create a writable copy of the event object and normalize some properties\n\t\tvar i, prop, copy,\n\t\t\ttype = event.type,\n\t\t\toriginalEvent = event,\n\t\t\tfixHook = this.fixHooks[ type ];\n\n\t\tif ( !fixHook ) {\n\t\t\tthis.fixHooks[ type ] = fixHook =\n\t\t\t\trmouseEvent.test( type ) ? this.mouseHooks :\n\t\t\t\trkeyEvent.test( type ) ? this.keyHooks :\n\t\t\t\t{};\n\t\t}\n\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n\n\t\tevent = new jQuery.Event( originalEvent );\n\n\t\ti = copy.length;\n\t\twhile ( i-- ) {\n\t\t\tprop = copy[ i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Support: Cordova 2.5 (WebKit) (#13255)\n\t\t// All events should have a target; Cordova deviceready doesn't\n\t\tif ( !event.target ) {\n\t\t\tevent.target = document;\n\t\t}\n\n\t\t// Support: Safari 6.0+, Chrome<28\n\t\t// Target should not be a text node (#504, #13143)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\treturn fixHook.filter ? fixHook.filter( event, originalEvent ) : event;\n\t},\n\n\tspecial: {\n\t\tload: {\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tfocus: {\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\n\t\t\t\t\tthis.focus();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\t\tclick: {\n\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this.type === \"checkbox\" && this.click && jQuery.nodeName( this, \"input\" ) ) {\n\t\t\t\t\tthis.click();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\n\t\t\t_default: function( event ) {\n\t\t\t\treturn jQuery.nodeName( event.target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tsimulate: function( type, elem, event, bubble ) {\n\t\t// Piggyback on a donor event to simulate a different one.\n\t\t// Fake originalEvent to avoid donor's stopPropagation, but if the\n\t\t// simulated event prevents default then we do the same on the donor.\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true,\n\t\t\t\toriginalEvent: {}\n\t\t\t}\n\t\t);\n\t\tif ( bubble ) {\n\t\t\tjQuery.event.trigger( e, null, elem );\n\t\t} else {\n\t\t\tjQuery.event.dispatch.call( elem, e );\n\t\t}\n\t\tif ( e.isDefaultPrevented() ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n};\n\njQuery.removeEvent = function( elem, type, handle ) {\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle, false );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\t// Allow instantiation without the 'new' keyword\n\tif ( !(this instanceof jQuery.Event) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\t\t\t\t// Support: Android<4.0\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && e.preventDefault ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && e.stopImmediatePropagation ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// Support: Chrome 15+\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mousenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || (related !== target && !jQuery.contains( target, related )) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n});\n\n// Support: Firefox, Chrome, Safari\n// Create \"bubbling\" focus and blur events\nif ( !support.focusinBubbles ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );\n\t\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = data_priv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdata_priv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = data_priv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdata_priv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdata_priv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\n}\n\njQuery.fn.extend({\n\n\ton: function( types, selector, data, fn, /*INTERNAL*/ one ) {\n\t\tvar origFn, type;\n\n\t\t// Types can be a map of types/handlers\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-Object, selector, data )\n\t\t\tif ( typeof selector !== \"string\" ) {\n\t\t\t\t// ( types-Object, data )\n\t\t\t\tdata = data || selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.on( type, selector, data, types[ type ], one );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( data == null && fn == null ) {\n\t\t\t// ( types, fn )\n\t\t\tfn = selector;\n\t\t\tdata = selector = undefined;\n\t\t} else if ( fn == null ) {\n\t\t\tif ( typeof selector === \"string\" ) {\n\t\t\t\t// ( types, selector, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = undefined;\n\t\t\t} else {\n\t\t\t\t// ( types, data, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t} else if ( !fn ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( one === 1 ) {\n\t\t\torigFn = fn;\n\t\t\tfn = function( event ) {\n\t\t\t\t// Can use an empty set, since event contains the info\n\t\t\t\tjQuery().off( event );\n\t\t\t\treturn origFn.apply( this, arguments );\n\t\t\t};\n\t\t\t// Use same guid so caller can remove using origFn\n\t\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.add( this, types, fn, data, selector );\n\t\t});\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn this.on( types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ? handleObj.origType + \".\" + handleObj.namespace : handleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t});\n\t},\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[0];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n});\n\n\nvar\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi,\n\trtagName = /<([\\w:]+)/,\n\trhtml = /<|&#?\\w+;/,\n\trnoInnerhtml = /<(?:script|style|link)/i,\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trscriptType = /^$|\\/(?:java|ecma)script/i,\n\trscriptTypeMasked = /^true\\/(.*)/,\n\trcleanScript = /^\\s*\\s*$/g,\n\n\t// We have to close these tags to support XHTML (#13200)\n\twrapMap = {\n\n\t\t// Support: IE9\n\t\toption: [ 1, \"\" ],\n\n\t\tthead: [ 1, \"\", \"
    \" ],\n\t\tcol: [ 2, \"\", \"
    \" ],\n\t\ttr: [ 2, \"\", \"
    \" ],\n\t\ttd: [ 3, \"\", \"
    \" ],\n\n\t\t_default: [ 0, \"\", \"\" ]\n\t};\n\n// Support: IE9\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: 1.x compatibility\n// Manipulating tables requires a tbody\nfunction manipulationTarget( elem, content ) {\n\treturn jQuery.nodeName( elem, \"table\" ) &&\n\t\tjQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ?\n\n\t\telem.getElementsByTagName(\"tbody\")[0] ||\n\t\t\telem.appendChild( elem.ownerDocument.createElement(\"tbody\") ) :\n\t\telem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = (elem.getAttribute(\"type\") !== null) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tvar match = rscriptTypeMasked.exec( elem.type );\n\n\tif ( match ) {\n\t\telem.type = match[ 1 ];\n\t} else {\n\t\telem.removeAttribute(\"type\");\n\t}\n\n\treturn elem;\n}\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdata_priv.set(\n\t\t\telems[ i ], \"globalEval\", !refElements || data_priv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( data_priv.hasData( src ) ) {\n\t\tpdataOld = data_priv.access( src );\n\t\tpdataCur = data_priv.set( dest, pdataOld );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdelete pdataCur.handle;\n\t\t\tpdataCur.events = {};\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( data_user.hasData( src ) ) {\n\t\tudataOld = data_user.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdata_user.set( dest, udataCur );\n\t}\n}\n\nfunction getAll( context, tag ) {\n\tvar ret = context.getElementsByTagName ? context.getElementsByTagName( tag || \"*\" ) :\n\t\t\tcontext.querySelectorAll ? context.querySelectorAll( tag || \"*\" ) :\n\t\t\t[];\n\n\treturn tag === undefined || tag && jQuery.nodeName( context, tag ) ?\n\t\tjQuery.merge( [ context ], ret ) :\n\t\tret;\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tbuildFragment: function( elems, context, scripts, selection ) {\n\t\tvar elem, tmp, tag, wrap, contains, j,\n\t\t\tfragment = context.createDocumentFragment(),\n\t\t\tnodes = [],\n\t\t\ti = 0,\n\t\t\tl = elems.length;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\telem = elems[ i ];\n\n\t\t\tif ( elem || elem === 0 ) {\n\n\t\t\t\t// Add nodes directly\n\t\t\t\tif ( jQuery.type( elem ) === \"object\" ) {\n\t\t\t\t\t// Support: QtWebKit, PhantomJS\n\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t\t// Convert non-html into a text node\n\t\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t\t// Convert html into DOM nodes\n\t\t\t\t} else {\n\t\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement(\"div\") );\n\n\t\t\t\t\t// Deserialize a standard representation\n\t\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\t\ttmp.innerHTML = wrap[ 1 ] + elem.replace( rxhtmlTag, \"<$1>\" ) + wrap[ 2 ];\n\n\t\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\t\tj = wrap[ 0 ];\n\t\t\t\t\twhile ( j-- ) {\n\t\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: QtWebKit, PhantomJS\n\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t\t// Remember the top-level container\n\t\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\t\ttmp.textContent = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Remove wrapper from fragment\n\t\tfragment.textContent = \"\";\n\n\t\ti = 0;\n\t\twhile ( (elem = nodes[ i++ ]) ) {\n\n\t\t\t// #4087 - If origin and destination elements are the same, and this is\n\t\t\t// that element, do not do anything\n\t\t\tif ( selection && jQuery.inArray( elem, selection ) !== -1 ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t\t// Append to fragment\n\t\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t\t// Preserve script evaluation history\n\t\t\tif ( contains ) {\n\t\t\t\tsetGlobalEval( tmp );\n\t\t\t}\n\n\t\t\t// Capture executables\n\t\t\tif ( scripts ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (elem = tmp[ j++ ]) ) {\n\t\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\t\tscripts.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn fragment;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type, key,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = elems[ i ]) !== undefined; i++ ) {\n\t\t\tif ( jQuery.acceptData( elem ) ) {\n\t\t\t\tkey = elem[ data_priv.expando ];\n\n\t\t\t\tif ( key && (data = data_priv.cache[ key ]) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( data_priv.cache[ key ] ) {\n\t\t\t\t\t\t// Discard any remaining `private` data\n\t\t\t\t\t\tdelete data_priv.cache[ key ];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Discard any remaining `user` data\n\t\t\tdelete data_user.cache[ elem[ data_user.expando ] ];\n\t\t}\n\t}\n});\n\njQuery.fn.extend({\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each(function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t});\n\t},\n\n\tafter: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t});\n\t},\n\n\tremove: function( selector, keepData /* Internal Use Only */ ) {\n\t\tvar elem,\n\t\t\telems = selector ? jQuery.filter( selector, this ) : this,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( getAll( elem ) );\n\t\t\t}\n\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\tif ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\t\t\tsetGlobalEval( getAll( elem, \"script\" ) );\n\t\t\t\t}\n\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = this[i]) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map(function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t});\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = value.replace( rxhtmlTag, \"<$1>\" );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar arg = arguments[ 0 ];\n\n\t\t// Make the changes, replacing each context element with the new content\n\t\tthis.domManip( arguments, function( elem ) {\n\t\t\targ = this.parentNode;\n\n\t\t\tjQuery.cleanData( getAll( this ) );\n\n\t\t\tif ( arg ) {\n\t\t\t\targ.replaceChild( elem, this );\n\t\t\t}\n\t\t});\n\n\t\t// Force removal if there was no new content (e.g., from empty arguments)\n\t\treturn arg && (arg.length || arg.nodeType) ? this : this.remove();\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, callback ) {\n\n\t\t// Flatten any nested arrays\n\t\targs = concat.apply( [], args );\n\n\t\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tset = this,\n\t\t\tiNoClone = l - 1,\n\t\t\tvalue = args[ 0 ],\n\t\t\tisFunction = jQuery.isFunction( value );\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( isFunction ||\n\t\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\t\treturn this.each(function( index ) {\n\t\t\t\tvar self = set.eq( index );\n\t\t\t\tif ( isFunction ) {\n\t\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t\t}\n\t\t\t\tself.domManip( args, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( l ) {\n\t\t\tfragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this );\n\t\t\tfirst = fragment.firstChild;\n\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfragment = first;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\t\thasScripts = scripts.length;\n\n\t\t\t\t// Use the original fragment for the last item instead of the first because it can end up\n\t\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\tnode = fragment;\n\n\t\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\t\tif ( hasScripts ) {\n\t\t\t\t\t\t\t// Support: QtWebKit\n\t\t\t\t\t\t\t// jQuery.merge because push.apply(_, arraylike) throws\n\t\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcallback.call( this[ i ], node, i );\n\t\t\t\t}\n\n\t\t\t\tif ( hasScripts ) {\n\t\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t\t// Reenable scripts\n\t\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t\t!data_priv.access( node, \"globalEval\" ) && jQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\t\tif ( node.src ) {\n\t\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\t\tif ( jQuery._evalUrl ) {\n\t\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.globalEval( node.textContent.replace( rcleanScript, \"\" ) );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n});\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: QtWebKit\n\t\t\t// .get() because push.apply(_, arraylike) throws\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n});\n\n\nvar iframe,\n\telemdisplay = {};\n\n/**\n * Retrieve the actual display of a element\n * @param {String} name nodeName of the element\n * @param {Object} doc Document object\n */\n// Called only from within defaultDisplay\nfunction actualDisplay( name, doc ) {\n\tvar style,\n\t\telem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),\n\n\t\t// getDefaultComputedStyle might be reliably used only on attached element\n\t\tdisplay = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ?\n\n\t\t\t// Use of this method is a temporary fix (more like optimization) until something better comes along,\n\t\t\t// since it was removed from specification and supported only in FF\n\t\t\tstyle.display : jQuery.css( elem[ 0 ], \"display\" );\n\n\t// We don't have any data stored on the element,\n\t// so use \"detach\" method as fast way to get rid of the element\n\telem.detach();\n\n\treturn display;\n}\n\n/**\n * Try to determine the default display value of an element\n * @param {String} nodeName\n */\nfunction defaultDisplay( nodeName ) {\n\tvar doc = document,\n\t\tdisplay = elemdisplay[ nodeName ];\n\n\tif ( !display ) {\n\t\tdisplay = actualDisplay( nodeName, doc );\n\n\t\t// If the simple way fails, read from inside an iframe\n\t\tif ( display === \"none\" || !display ) {\n\n\t\t\t// Use the already-created iframe if possible\n\t\t\tiframe = (iframe || jQuery( \" - diff --git a/settings/templates/settings-vue.php b/settings/templates/settings-vue.php deleted file mode 100644 index f04d577fdae..00000000000 --- a/settings/templates/settings-vue.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * @author John Molakvoæ - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - -script('settings', 'vue-settings-apps-users-management'); -style('settings', 'settings'); - -// Do we have some data to inject ? -if(is_array($_['serverData'])) { -?> - - diff --git a/settings/templates/settings/additional.php b/settings/templates/settings/additional.php deleted file mode 100644 index 3af78adde71..00000000000 --- a/settings/templates/settings/additional.php +++ /dev/null @@ -1,33 +0,0 @@ - - * - * @author Arthur Schiwon - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - -/** @var \OCP\IL10N $l */ -/** @var array $_ */ - -?> - - -
    - diff --git a/settings/templates/settings/admin/additional-mail.php b/settings/templates/settings/admin/additional-mail.php deleted file mode 100644 index 609aa3222d5..00000000000 --- a/settings/templates/settings/admin/additional-mail.php +++ /dev/null @@ -1,152 +0,0 @@ - - * - * @author Arthur Schiwon - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - -/** @var \OCP\IL10N $l */ -/** @var array $_ */ - -$mail_smtpauthtype = [ - '' => $l->t('None'), - 'LOGIN' => $l->t('Login'), - 'PLAIN' => $l->t('Plain'), - 'NTLM' => $l->t('NT LAN Manager'), -]; - -$mail_smtpsecure = [ - '' => $l->t('None'), - 'ssl' => $l->t('SSL/TLS'), - 'tls' => $l->t('STARTTLS'), -]; - -$mail_smtpmode = [ - ['smtp', 'SMTP'], -]; -if ($_['sendmail_is_available']) { - $mail_smtpmode[] = ['sendmail', 'Sendmail']; -} -if ($_['mail_smtpmode'] === 'qmail') { - $mail_smtpmode[] = ['qmail', 'qmail']; -} - -$mail_sendmailmode = [ - 'smtp' => 'smtp (-bs)', - 'pipe' => 'pipe (-t)' -]; - -?> - -
    -
    -

    t('Email server'));?>

    - -

    t('It is important to set up this server to be able to send emails, like for password reset and notifications.')); ?>

    -

    - -

    - - - - - - - - -

    - -

    - - @ - -

    - - - - -
    -
    - -
    - -
    - t('Test email settings')); ?> - - -
    diff --git a/settings/templates/settings/admin/overview.php b/settings/templates/settings/admin/overview.php deleted file mode 100644 index cbb7e136da0..00000000000 --- a/settings/templates/settings/admin/overview.php +++ /dev/null @@ -1,66 +0,0 @@ - - * - * @author Arthur Schiwon - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - -/** @var \OCP\IL10N $l */ -/** @var array $_ */ -/** @var \OCP\Defaults $theme */ - -?> - -
    -

    t('Security & setup warnings'));?>

    -

    t('It\'s important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information.'));?>

    - - - - -
    - t('Checking for system and security issues.'));?> -
    - -
    - - - -
    - - -

    - t('Check the security of your Nextcloud over our security scan ↗.', ['https://scan.nextcloud.com']));?> -

    - -
    - -
    - -

    t('Version'));?>

    -

    getTitle()); ?>

    -
    diff --git a/settings/templates/settings/admin/security.php b/settings/templates/settings/admin/security.php deleted file mode 100644 index 7d528818e42..00000000000 --- a/settings/templates/settings/admin/security.php +++ /dev/null @@ -1,97 +0,0 @@ - - * - * @author Arthur Schiwon - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - -/** @var \OCP\IL10N $l */ -/** @var array $_ */ - -script('settings', 'vue-settings-admin-security'); - -?> - -
    -

    t('Two-Factor Authentication'));?>

    -
    -
    - -
    -

    t('Server-side encryption')); ?>

    - -

    t('Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed.')); ?>

    -

    - /> -
    -

    - - - -
    -
    - t('No encryption module loaded, please enable an encryption module in the app menu.')); - } else { ?> -

    t('Select default encryption module:')) ?>

    -
    - $module): ?> - > - -
    - -
    - -
    -
    - t('You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the "Default encryption module" and run \'occ encryption:migrate\'')); - } elseif ($_['encryptionReady'] === false && $_['externalBackendsEnabled'] === false) { - p($l->t('You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one.')); ?> - - -
    -
    -
    diff --git a/settings/templates/settings/admin/server.php b/settings/templates/settings/admin/server.php deleted file mode 100644 index 92bf433ca6c..00000000000 --- a/settings/templates/settings/admin/server.php +++ /dev/null @@ -1,100 +0,0 @@ - - * - * @author Arthur Schiwon - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - -/** @var \OCP\IL10N $l */ -/** @var array $_ */ - -?> - -
    -

    t('Background jobs'));?>

    -

    - getDateTimeFormatter(); - $absolute_time = $formatter->formatDateTime($_['lastcron'], 'long', 'long'); - if (time() - $_['lastcron'] <= 600): ?> - - - t("Last job ran %s.", [$relative_time]));?> - - - - - t("Last job execution ran %s. Something seems wrong.", [$relative_time]));?> - - - - t("Background job didn’t run yet!")); - endif; ?> -

    - - -

    t('For optimal performance it\'s important to configure background jobs correctly. For bigger instances \'Cron\' is the recommended setting. Please see the documentation for more information.'));?>

    -
    -
    - t('Pick background job setting'));?> -

    - > -
    - t("Execute one task with each page loaded")); ?> -

    -

    - > -
    - t("cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP.")); ?> -

    -

    - > -
    - t("Use system cron service to call the cron.php file every 5 minutes.")); ?> - t('The cron.php needs to be executed by the system user "%s".', [$_['cli_based_cron_user']])); - } else { - print_unescaped(str_replace( - ['{linkstart}', '{linkend}'], - ['', ' ↗'], - $l->t('To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details.') - )); - } ?> - -

    -
    -
    -
    diff --git a/settings/templates/settings/admin/sharing.php b/settings/templates/settings/admin/sharing.php deleted file mode 100644 index 5913524be40..00000000000 --- a/settings/templates/settings/admin/sharing.php +++ /dev/null @@ -1,120 +0,0 @@ - - * - * @author Arthur Schiwon - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - -/** @var \OCP\IL10N $l */ -/** @var array $_ */ - -?> - -
    -

    t('Sharing'));?>

    - -

    t('As admin you can fine-tune the sharing behavior. Please see the documentation for more information.'));?>

    -

    - /> -
    -

    -

    - /> -
    -

    - -

    - /> -
    - /> -
    - /> -
    - - /> -
    - -

    -

    - t( 'Expire after ' )); ?> - ' /> - t( 'days' )); ?> - /> -
    -

    -

    - /> -
    -

    -

    - /> -
    -

    -

    - /> -
    -

    -

    - /> -
    -

    -

    - -
    - t('These groups will still be able to receive shares, but not to initiate them.')); ?> -

    -

    - /> -
    -

    -

    - /> - - -
    - -

    - -

    t('Default share permissions'));?>

    - -

    - - /> - - -

    -
    diff --git a/settings/templates/settings/empty.php b/settings/templates/settings/empty.php deleted file mode 100644 index 0ed8a873d3c..00000000000 --- a/settings/templates/settings/empty.php +++ /dev/null @@ -1,25 +0,0 @@ - - * - * @author Arthur Schiwon - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - - # used for Personal/Additional settings as fallback for legacy settings -?> diff --git a/settings/templates/settings/frame.php b/settings/templates/settings/frame.php deleted file mode 100644 index e32c4ed2fc9..00000000000 --- a/settings/templates/settings/frame.php +++ /dev/null @@ -1,92 +0,0 @@ - - * - * @author Arthur Schiwon - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - -style('settings', 'settings'); -script('settings', [ 'settings', 'admin', 'log', 'certificates'] ); -script('core', 'setupchecks'); -script('files', 'jquery.fileupload'); - -?> - -
    -
      - -
    • t('Personal')); ?>
    • - getURLGenerator()->linkToRoute('settings.PersonalSettings.index', ['section' => $form['anchor']]); - $class = 'nav-icon-' . $form['anchor']; - $sectionName = $form['section-name']; - $active = $form['active'] ? ' class="active"' : ''; - ?> -
    • > - - - - - - - - -
    • - - - -
    • t('Administration')); ?>
    • - getURLGenerator()->linkToRoute('settings.AdminSettings.index', ['section' => $form['anchor']]); - $class = 'nav-icon-' . $form['anchor']; - $sectionName = $form['section-name']; - $active = $form['active'] ? ' class="active"' : ''; - ?> -
    • > - - - - - - - - -
    • - -
    -
    - -
    - -
    diff --git a/settings/templates/settings/personal/development.notice.php b/settings/templates/settings/personal/development.notice.php deleted file mode 100644 index eac457a5fae..00000000000 --- a/settings/templates/settings/personal/development.notice.php +++ /dev/null @@ -1,66 +0,0 @@ -
    -

    - ', - '', - '', - '', - ], - $l->t('Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}.') - )); ?> -

    - - -
    diff --git a/settings/templates/settings/personal/personal.info.php b/settings/templates/settings/personal/personal.info.php deleted file mode 100644 index ad5f8ac547f..00000000000 --- a/settings/templates/settings/personal/personal.info.php +++ /dev/null @@ -1,383 +0,0 @@ - - * - * @author Arthur Schiwon - * @author Thomas Citharel - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - -/** @var \OCP\IL10N $l */ -/** @var array $_ */ - -script('settings', [ - 'usersettings', - 'templates', - 'federationsettingsview', - 'federationscopemenu', - 'settings/personalInfo', -]); -?> - -
    -
    -
    -
    -

    - -
    - - - -
    -

    -
    -
    - - - -
    - - -

    t('png or jpg, max. 20 MB')); ?>

    - - t('Picture provided by original account')); ?> - -
    - - - - - - -
    -
    -
    -

    t('Details')); ?>

    -
    -

    t('You are a member of the following groups:')); ?>

    -

    - -

    -
    -
    -
    -

    - - t('You are using %s', - [$_['usage']]));?> - - t('You are using %1$s of %2$s (%3$s %%)', - [$_['usage'], $_['total_space'], $_['usage_relative']]));?> - -

    -
    - 80): ?> class="warn" > -
    -
    -
    - -
    -
    -
    -

    - -
    - - - -
    -

    - - value="" - autocomplete="on" autocapitalize="none" autocorrect="off" /> - - t('No display name set')); } ?> - - - - - - -
    -
    -
    -
    -

    - -
    - - - -
    -

    -
    - -
    - - placeholder="t('Your email address')); ?>" - autocomplete="on" autocapitalize="none" autocorrect="off" /> - - - - t('No email address set')); }?> - - - t('For password reset and notifications')); ?> - - - - -
    -
    - -
    -
    -

    - -
    - - - -
    -

    - - value="" - placeholder="t('Your phone number')); ?>" - autocomplete="on" autocapitalize="none" autocorrect="off" /> - - - - -
    -
    - - -
    -
    -

    - -
    - - - -
    -

    - - placeholder="t('Your postal address')); ?>" - value="" - autocomplete="on" autocapitalize="none" autocorrect="off" /> - - - - -
    -
    - - -
    -
    -

    - -
    - - - -
    -

    - -
    - - > - -
    - - - /> - - - - -
    -
    - - -
    -
    -

    - -
    - - - -
    -

    - -
    - - > - -
    - - - /> - - - - -
    -
    - -
    - -
    -
    - -
    -

    - -

    - - - t('Help translate'));?> - -
    - -
    -
    - -
    -

    - -

    - -
    -

    - -

    -

    -
    -
    - -
    - -
    - -
    - -
    - -
    diff --git a/settings/templates/settings/personal/security.php b/settings/templates/settings/personal/security.php deleted file mode 100644 index e72b443f59b..00000000000 --- a/settings/templates/settings/personal/security.php +++ /dev/null @@ -1,106 +0,0 @@ - - * - * @author Arthur Schiwon - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - -script('settings', [ - 'settings', - 'templates', - 'vue-settings-personal-security', -]); - -if($_['passwordChangeSupported']) { - script('settings', 'security_password'); -} - -?> - -
    -

    t('Password'));?>

    - -
    -
    - - - -
    - - - -
    - - - -
    -
    - -
    - - -
    -

    t('Two-Factor Authentication'));?>

    - -

    t('Use a second factor besides your password to increase security for your account.'));?>

    -
      - -
    • - getLightIcon(); - } - else { - $icon = $provider->getDarkIcon(); - } - //fallback icon if the 2factor provider doesn't provide an icon. - } else { - if ($_['themedark']) { - $icon = image_path('core', 'actions/password-white.svg'); - } - else { - $icon = image_path('core', 'actions/password.svg'); - } - - } - /** @var \OCP\Authentication\TwoFactorAuth\IPersonalProviderSettings $settings */ - $settings = $data['settings']; - ?> -

      - - getDisplayName()) ?> -

      - getBody()->fetchPage()) ?> -
    • - -
    -
    - diff --git a/settings/templates/settings/personal/security/authtokens.php b/settings/templates/settings/personal/security/authtokens.php deleted file mode 100644 index 1db0d91fe69..00000000000 --- a/settings/templates/settings/personal/security/authtokens.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * @author Roeland Jago Douma - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - -script('settings', [ - 'vue-settings-personal-security', -]); - -?> - -
    diff --git a/settings/webpack.js b/settings/webpack.js deleted file mode 100644 index cee22bded8d..00000000000 --- a/settings/webpack.js +++ /dev/null @@ -1,20 +0,0 @@ -const path = require('path') - -module.exports = { - entry: { - 'settings-apps-users-management': path.join(__dirname, 'src', 'main-apps-users-management'), - 'settings-admin-security': path.join(__dirname, 'src', 'main-admin-security'), - 'settings-personal-security': path.join(__dirname, 'src', 'main-personal-security') - }, - output: { - path: path.resolve(__dirname, './js'), - publicPath: '/', - filename: 'vue-[name].js?v=[chunkhash]', - jsonpFunction: 'webpackJsonpSettings' - }, - optimization: { - splitChunks: { - automaticNameDelimiter: '-', - } - } -} diff --git a/tests/Core/Controller/ChangePasswordControllerTest.php b/tests/Core/Controller/ChangePasswordControllerTest.php index 851b5bd6c76..e171b46d86d 100644 --- a/tests/Core/Controller/ChangePasswordControllerTest.php +++ b/tests/Core/Controller/ChangePasswordControllerTest.php @@ -22,7 +22,7 @@ namespace Tests\Core\Controller; use OC\HintException; -use OC\Settings\Controller\ChangePasswordController; +use OCA\Settings\Controller\ChangePasswordController; use OC\User\Session; use OCP\App\IAppManager; use OCP\AppFramework\Http\JSONResponse; diff --git a/tests/Settings/Activity/SecurityFilterTest.php b/tests/Settings/Activity/SecurityFilterTest.php deleted file mode 100644 index 44345b83fa5..00000000000 --- a/tests/Settings/Activity/SecurityFilterTest.php +++ /dev/null @@ -1,83 +0,0 @@ - - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - -namespace Tests\Settings\Activity; - -use OC\Settings\Activity\SecurityFilter; -use OCP\IL10N; -use OCP\IURLGenerator; -use Test\TestCase; - -class SecurityFilterTest extends TestCase { - - private $urlGenerator; - private $l10n; - - /** @var SecurityFilter */ - private $filter; - - protected function setUp() { - parent::setUp(); - - $this->urlGenerator = $this->createMock(IURLGenerator::class); - $this->l10n = $this->createMock(IL10N::class); - - $this->filter = new SecurityFilter($this->urlGenerator, $this->l10n); - } - - public function testAllowedApps() { - $this->assertEquals([], $this->filter->allowedApps()); - } - - public function testFilterTypes() { - $this->assertEquals(['security'], $this->filter->filterTypes(['comments', 'security'])); - } - - public function testGetIcon() { - $this->urlGenerator->expects($this->once()) - ->method('imagePath') - ->with('core', 'actions/password.svg') - ->will($this->returnValue('path/to/icon.svg')); - $this->urlGenerator->expects($this->once()) - ->method('getAbsoluteURL') - ->with('path/to/icon.svg') - ->will($this->returnValue('abs/path/to/icon.svg')); - $this->assertEquals('abs/path/to/icon.svg', $this->filter->getIcon()); - } - - public function testGetIdentifier() { - $this->assertEquals('security', $this->filter->getIdentifier()); - } - - public function testGetName() { - $this->l10n->expects($this->once()) - ->method('t') - ->with('Security') - ->will($this->returnValue('translated')); - $this->assertEquals('translated', $this->filter->getName()); - } - - public function testGetPriority() { - $this->assertEquals(30, $this->filter->getPriority()); - } - -} diff --git a/tests/Settings/Activity/SecurityProviderTest.php b/tests/Settings/Activity/SecurityProviderTest.php deleted file mode 100644 index 98c0c3a096c..00000000000 --- a/tests/Settings/Activity/SecurityProviderTest.php +++ /dev/null @@ -1,136 +0,0 @@ - - * @copyright Copyright (c) 2016 Christoph Wurst - * - * Two-factor backup codes - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see - * - */ - -namespace Tests\Settings\Activity; - -use InvalidArgumentException; -use OC\Settings\Activity\SecurityProvider; -use OCP\Activity\IEvent; -use OCP\Activity\IManager; -use OCP\IL10N; -use OCP\IURLGenerator; -use OCP\L10N\IFactory; -use PHPUnit_Framework_MockObject_MockObject; -use Test\TestCase; - -class SecurityProviderTest extends TestCase { - - /** @var IFactory|PHPUnit_Framework_MockObject_MockObject */ - private $l10n; - - /** @var IURLGenerator|PHPUnit_Framework_MockObject_MockObject */ - private $urlGenerator; - - /** @var IManager|PHPUnit_Framework_MockObject_MockObject */ - private $activityManager; - - /** @var SecurityProvider */ - private $provider; - - protected function setUp() { - parent::setUp(); - - $this->l10n = $this->createMock(IFactory::class); - $this->urlGenerator = $this->createMock(IURLGenerator::class); - $this->activityManager = $this->createMock(IManager::class); - - $this->provider = new SecurityProvider($this->l10n, $this->urlGenerator, $this->activityManager); - } - - public function testParseUnrelated() { - $lang = 'ru'; - $event = $this->createMock(IEvent::class); - $event->expects($this->once()) - ->method('getType') - ->willReturn('comments'); - $this->expectException(InvalidArgumentException::class); - - $this->provider->parse($lang, $event); - } - - public function subjectData() { - return [ - ['twofactor_success'], - ['twofactor_failed'], - ]; - } - - /** - * @dataProvider subjectData - */ - public function testParse($subject) { - $lang = 'ru'; - $event = $this->createMock(IEvent::class); - $l = $this->createMock(IL10N::class); - - $event->expects($this->once()) - ->method('getType') - ->willReturn('security'); - $this->l10n->expects($this->once()) - ->method('get') - ->with('settings', $lang) - ->willReturn($l); - $this->urlGenerator->expects($this->once()) - ->method('imagePath') - ->with('core', 'actions/password.svg') - ->willReturn('path/to/image'); - $this->urlGenerator->expects($this->once()) - ->method('getAbsoluteURL') - ->with('path/to/image') - ->willReturn('absolute/path/to/image'); - $event->expects($this->once()) - ->method('setIcon') - ->with('absolute/path/to/image'); - $event->expects($this->once()) - ->method('getSubject') - ->willReturn($subject); - $event->method('getSubjectParameters') - ->willReturn([ - 'provider' => 'myProvider', - ]); - $event->expects($this->once()) - ->method('setParsedSubject'); - - $this->provider->parse($lang, $event); - } - - public function testParseInvalidSubject() { - $lang = 'ru'; - $l = $this->createMock(IL10N::class); - $event = $this->createMock(IEvent::class); - - $event->expects($this->once()) - ->method('getType') - ->willReturn('security'); - $this->l10n->expects($this->once()) - ->method('get') - ->with('settings', $lang) - ->willReturn($l); - $event->expects($this->once()) - ->method('getSubject') - ->willReturn('unrelated'); - - $this->expectException(InvalidArgumentException::class); - $this->provider->parse($lang, $event); - } - -} diff --git a/tests/Settings/Activity/SecuritySettingTest.php b/tests/Settings/Activity/SecuritySettingTest.php deleted file mode 100644 index 4e9ce1a0897..00000000000 --- a/tests/Settings/Activity/SecuritySettingTest.php +++ /dev/null @@ -1,73 +0,0 @@ - - * @copyright Copyright (c) 2016 Christoph Wurst - * - * Two-factor backup codes - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see - * - */ - -namespace Tests\Settings\Activity; - -use OC\Settings\Activity\SecuritySetting; -use OCP\IL10N; -use Test\TestCase; - -class SecuritySettingTest extends TestCase { - - private $l10n; - - /** @var SecuritySetting */ - private $setting; - - protected function setUp() { - parent::setUp(); - - $this->l10n = $this->createMock(IL10N::class); - - $this->setting = new SecuritySetting($this->l10n); - } - - public function testCanChangeMail() { - $this->assertFalse($this->setting->canChangeMail()); - } - - public function testCanChangeStream() { - $this->assertFalse($this->setting->canChangeStream()); - } - - public function testGetIdentifier() { - $this->assertEquals('security', $this->setting->getIdentifier()); - } - - public function testGetName() { - $this->l10n->expects($this->once()) - ->method('t') - ->with('Security') - ->will($this->returnValue('Sicherheit')); - $this->assertEquals('Sicherheit', $this->setting->getName()); - } - - public function testGetPriority() { - $this->assertEquals(30, $this->setting->getPriority()); - } - - public function testIsDefaultEnabled() { - $this->assertTrue($this->setting->isDefaultEnabledMail()); - $this->assertTrue($this->setting->isDefaultEnabledStream()); - } - -} diff --git a/tests/Settings/ApplicationTest.php b/tests/Settings/ApplicationTest.php deleted file mode 100644 index eab7d5bd8cf..00000000000 --- a/tests/Settings/ApplicationTest.php +++ /dev/null @@ -1,118 +0,0 @@ - - * - * @author Joas Schilling - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - -namespace Tests\Settings; - - -use OC\Settings\Application; -use OC\Settings\Controller\AdminSettingsController; -use OC\Settings\Controller\AppSettingsController; -use OC\Settings\Controller\AuthSettingsController; -use OC\Settings\Controller\CertificateController; -use OC\Settings\Controller\CheckSetupController; -use OC\Settings\Controller\GroupsController; -use OC\Settings\Controller\LogSettingsController; -use OC\Settings\Controller\MailSettingsController; -use OC\Settings\Controller\UsersController; -use OC\Settings\Middleware\SubadminMiddleware; -use OCP\AppFramework\Controller; -use OCP\AppFramework\Middleware; -use OCP\IUser; -use OCP\IUserSession; -use Test\TestCase; - -/** - * Class ApplicationTest - * - * @package Tests\Settings - * @group DB - */ -class ApplicationTest extends TestCase { - /** @var \OC\Settings\Application */ - protected $app; - - /** @var \OCP\AppFramework\IAppContainer */ - protected $container; - - protected function setUp() { - parent::setUp(); - $this->app = new Application(); - $this->container = $this->app->getContainer(); - } - - public function testContainerAppName() { - $this->app = new Application(); - $this->assertEquals('settings', $this->container->getAppName()); - } - - public function dataContainerQuery() { - return [ - [AdminSettingsController::class, Controller::class], - [AppSettingsController::class, Controller::class], - [AuthSettingsController::class, Controller::class], - // Needs session: [CertificateController::class, Controller::class], - [CheckSetupController::class, Controller::class], - [LogSettingsController::class, Controller::class], - [MailSettingsController::class, Controller::class], - [UsersController::class, Controller::class], - - [SubadminMiddleware::class, Middleware::class], - ]; - } - - /** - * @dataProvider dataContainerQuery - * @param string $service - * @param string $expected - */ - public function testContainerQuery($service, $expected) { - $this->assertTrue($this->container->query($service) instanceof $expected); - } - - public function dataContainerQueryRequiresSession() { - return [ - [CertificateController::class, Controller::class], - ]; - } - - /** - * @dataProvider dataContainerQueryRequiresSession - * @param string $service - * @param string $expected - */ - public function testContainerQueryRequiresSession($service, $expected) { - $user = $this->createMock(IUser::class); - $user->expects($this->once()) - ->method('getUID') - ->willReturn('test'); - - $session = $this->createMock(IUserSession::class); - $session->expects($this->once()) - ->method('getUser') - ->willReturn($user); - - $this->overwriteService('UserSession', $session); - $this->assertTrue($this->container->query($service) instanceof $expected); - $this->restoreService('UserSession'); - } -} diff --git a/tests/Settings/Controller/AdminSettingsControllerTest.php b/tests/Settings/Controller/AdminSettingsControllerTest.php deleted file mode 100644 index c86615ed590..00000000000 --- a/tests/Settings/Controller/AdminSettingsControllerTest.php +++ /dev/null @@ -1,128 +0,0 @@ - - * - * @author Lukas Reschke - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ -namespace Tests\Settings\Controller; - -use OC\Settings\Personal\ServerDevNotice; -use OC\Settings\Controller\AdminSettingsController; -use OCP\AppFramework\Http\TemplateResponse; -use OCP\Group\ISubAdmin; -use OCP\IGroupManager; -use OCP\INavigationManager; -use OCP\IRequest; -use OCP\IUser; -use OCP\IUserSession; -use OCP\Settings\IManager; -use PHPUnit\Framework\MockObject\MockObject; -use Test\TestCase; - -/** - * Class AdminSettingsControllerTest - * - * @group DB - * - * @package Tests\Settings\Controller - */ -class AdminSettingsControllerTest extends TestCase { - - /** @var AdminSettingsController */ - private $adminSettingsController; - /** @var IRequest|MockObject */ - private $request; - /** @var INavigationManager|MockObject */ - private $navigationManager; - /** @var IManager|MockObject */ - private $settingsManager; - /** @var IUserSession|MockObject */ - private $userSession; - /** @var IGroupManager|MockObject */ - private $groupManager; - /** @var ISubAdmin|MockObject */ - private $subAdmin; - /** @var string */ - private $adminUid = 'lololo'; - - public function setUp() { - parent::setUp(); - - $this->request = $this->createMock(IRequest::class); - $this->navigationManager = $this->createMock(INavigationManager::class); - $this->settingsManager = $this->createMock(IManager::class); - $this->userSession = $this->createMock(IUserSession::class); - $this->groupManager = $this->createMock(IGroupManager::class); - $this->subAdmin = $this->createMock(ISubAdmin::class); - - $this->adminSettingsController = new AdminSettingsController( - 'settings', - $this->request, - $this->navigationManager, - $this->settingsManager, - $this->userSession, - $this->groupManager, - $this->subAdmin - ); - - $user = \OC::$server->getUserManager()->createUser($this->adminUid, 'olo'); - \OC_User::setUserId($user->getUID()); - \OC::$server->getGroupManager()->createGroup('admin')->addUser($user); - } - - public function tearDown() { - \OC::$server->getUserManager()->get($this->adminUid)->delete(); - - parent::tearDown(); - } - - public function testIndex() { - $user = $this->createMock(IUser::class); - $this->userSession - ->method('getUser') - ->willReturn($user); - $user->method('getUID')->willReturn('user123'); - $this->groupManager - ->method('isAdmin') - ->with('user123') - ->willReturn(true); - $this->subAdmin - ->method('isSubAdmin') - ->with($user) - ->willReturn(false); - $this->settingsManager - ->expects($this->once()) - ->method('getAdminSections') - ->willReturn([]); - $this->settingsManager - ->expects($this->once()) - ->method('getPersonalSections') - ->willReturn([]); - $this->settingsManager - ->expects($this->once()) - ->method('getAdminSettings') - ->with('test') - ->willReturn([5 => new ServerDevNotice()]); - - $idx = $this->adminSettingsController->index('test'); - - $expected = new TemplateResponse('settings', 'settings/frame', ['forms' => ['personal' => [], 'admin' => []], 'content' => '']); - $this->assertEquals($expected, $idx); - } -} diff --git a/tests/Settings/Controller/AppSettingsControllerTest.php b/tests/Settings/Controller/AppSettingsControllerTest.php deleted file mode 100644 index 7ae815cc4fa..00000000000 --- a/tests/Settings/Controller/AppSettingsControllerTest.php +++ /dev/null @@ -1,246 +0,0 @@ - - * - * @copyright Copyright (c) 2016, Lukas Reschke - * @copyright Copyright (c) 2015, ownCloud, Inc. - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see - * - */ - -namespace Tests\Settings\Controller; - -use OC\App\AppStore\Bundles\BundleFetcher; -use OC\App\AppStore\Fetcher\AppFetcher; -use OC\App\AppStore\Fetcher\CategoryFetcher; -use OC\Installer; -use OC\Settings\Controller\AppSettingsController; -use OCP\AppFramework\Http\ContentSecurityPolicy; -use OCP\AppFramework\Http\JSONResponse; -use OCP\AppFramework\Http\TemplateResponse; -use OCP\ILogger; -use OCP\IURLGenerator; -use OCP\L10N\IFactory; -use Test\TestCase; -use OCP\IRequest; -use OCP\IL10N; -use OCP\IConfig; -use OCP\INavigationManager; -use OCP\App\IAppManager; - -/** - * Class AppSettingsControllerTest - * - * @package Tests\Settings\Controller - * - * @group DB - */ -class AppSettingsControllerTest extends TestCase { - /** @var AppSettingsController */ - private $appSettingsController; - /** @var IRequest|\PHPUnit_Framework_MockObject_MockObject */ - private $request; - /** @var IL10N|\PHPUnit_Framework_MockObject_MockObject */ - private $l10n; - /** @var IConfig|\PHPUnit_Framework_MockObject_MockObject */ - private $config; - /** @var INavigationManager|\PHPUnit_Framework_MockObject_MockObject */ - private $navigationManager; - /** @var IAppManager|\PHPUnit_Framework_MockObject_MockObject */ - private $appManager; - /** @var CategoryFetcher|\PHPUnit_Framework_MockObject_MockObject */ - private $categoryFetcher; - /** @var AppFetcher|\PHPUnit_Framework_MockObject_MockObject */ - private $appFetcher; - /** @var IFactory|\PHPUnit_Framework_MockObject_MockObject */ - private $l10nFactory; - /** @var BundleFetcher|\PHPUnit_Framework_MockObject_MockObject */ - private $bundleFetcher; - /** @var Installer|\PHPUnit_Framework_MockObject_MockObject */ - private $installer; - /** @var IURLGenerator|\PHPUnit_Framework_MockObject_MockObject */ - private $urlGenerator; - /** @var ILogger|\PHPUnit_Framework_MockObject_MockObject */ - private $logger; - - public function setUp() { - parent::setUp(); - - $this->request = $this->createMock(IRequest::class); - $this->l10n = $this->createMock(IL10N::class); - $this->l10n->expects($this->any()) - ->method('t') - ->will($this->returnArgument(0)); - $this->config = $this->createMock(IConfig::class); - $this->navigationManager = $this->createMock(INavigationManager::class); - $this->appManager = $this->createMock(IAppManager::class); - $this->categoryFetcher = $this->createMock(CategoryFetcher::class); - $this->appFetcher = $this->createMock(AppFetcher::class); - $this->l10nFactory = $this->createMock(IFactory::class); - $this->bundleFetcher = $this->createMock(BundleFetcher::class); - $this->installer = $this->createMock(Installer::class); - $this->urlGenerator = $this->createMock(IURLGenerator::class); - $this->logger = $this->createMock(ILogger::class); - - $this->appSettingsController = new AppSettingsController( - 'settings', - $this->request, - $this->l10n, - $this->config, - $this->navigationManager, - $this->appManager, - $this->categoryFetcher, - $this->appFetcher, - $this->l10nFactory, - $this->bundleFetcher, - $this->installer, - $this->urlGenerator, - $this->logger - ); - } - - public function testListCategories() { - $this->installer->expects($this->any()) - ->method('isUpdateAvailable') - ->willReturn(false); - $expected = new JSONResponse([ - [ - 'id' => 'auth', - 'ident' => 'auth', - 'displayName' => 'Authentication & authorization', - ], - [ - 'id' => 'customization', - 'ident' => 'customization', - 'displayName' => 'Customization', - ], - [ - 'id' => 'files', - 'ident' => 'files', - 'displayName' => 'Files', - ], - [ - 'id' => 'integration', - 'ident' => 'integration', - 'displayName' => 'Integration', - ], - [ - 'id' => 'monitoring', - 'ident' => 'monitoring', - 'displayName' => 'Monitoring', - ], - [ - 'id' => 'multimedia', - 'ident' => 'multimedia', - 'displayName' => 'Multimedia', - ], - [ - 'id' => 'office', - 'ident' => 'office', - 'displayName' => 'Office & text', - ], - [ - 'id' => 'organization', - 'ident' => 'organization', - 'displayName' => 'Organization', - ], - [ - 'id' => 'social', - 'ident' => 'social', - 'displayName' => 'Social & communication', - ], - [ - 'id' => 'tools', - 'ident' => 'tools', - 'displayName' => 'Tools', - ], - ]); - - $this->categoryFetcher - ->expects($this->once()) - ->method('get') - ->willReturn(json_decode('[{"id":"auth","translations":{"cs":{"name":"Autentizace & autorizace","description":"Aplikace poskytující služby dodatečného ověření nebo přihlášení"},"hu":{"name":"Azonosítás és hitelesítés","description":"Apps that provide additional authentication or authorization services"},"de":{"name":"Authentifizierung & Authorisierung","description":"Apps die zusätzliche Autentifizierungs- oder Autorisierungsdienste bereitstellen"},"nl":{"name":"Authenticatie & authorisatie","description":"Apps die aanvullende authenticatie- en autorisatiediensten bieden"},"nb":{"name":"Pålogging og tilgangsstyring","description":"Apper for å tilby ekstra pålogging eller tilgangsstyring"},"it":{"name":"Autenticazione e autorizzazione","description":"Apps that provide additional authentication or authorization services"},"fr":{"name":"Authentification et autorisations","description":"Applications qui fournissent des services d\'authentification ou d\'autorisations additionnels."},"ru":{"name":"Аутентификация и авторизация","description":"Apps that provide additional authentication or authorization services"},"en":{"name":"Authentication & authorization","description":"Apps that provide additional authentication or authorization services"}}},{"id":"customization","translations":{"cs":{"name":"Přizpůsobení","description":"Motivy a aplikace měnící rozvržení a uživatelské rozhraní"},"it":{"name":"Personalizzazione","description":"Applicazioni di temi, modifiche della disposizione e UX"},"de":{"name":"Anpassung","description":"Apps zur Änderung von Themen, Layout und Benutzererfahrung"},"hu":{"name":"Személyre szabás","description":"Témák, elrendezések felhasználói felület módosító alkalmazások"},"nl":{"name":"Maatwerk","description":"Thema\'s, layout en UX aanpassingsapps"},"nb":{"name":"Tilpasning","description":"Apper for å endre Tema, utseende og brukeropplevelse"},"fr":{"name":"Personalisation","description":"Thèmes, apparence et applications modifiant l\'expérience utilisateur"},"ru":{"name":"Настройка","description":"Themes, layout and UX change apps"},"en":{"name":"Customization","description":"Themes, layout and UX change apps"}}},{"id":"files","translations":{"cs":{"name":"Soubory","description":"Aplikace rozšiřující správu souborů nebo aplikaci Soubory"},"it":{"name":"File","description":"Applicazioni di gestione dei file ed estensione dell\'applicazione FIle"},"de":{"name":"Dateien","description":"Dateimanagement sowie Erweiterungs-Apps für die Dateien-App"},"hu":{"name":"Fájlok","description":"Fájl kezelő és kiegészítő alkalmazások"},"nl":{"name":"Bestanden","description":"Bestandebeheer en uitbreidingen van bestand apps"},"nb":{"name":"Filer","description":"Apper for filhåndtering og filer"},"fr":{"name":"Fichiers","description":"Applications de gestion de fichiers et extensions à l\'application Fichiers"},"ru":{"name":"Файлы","description":"Расширение: файлы и управление файлами"},"en":{"name":"Files","description":"File management and Files app extension apps"}}},{"id":"integration","translations":{"it":{"name":"Integrazione","description":"Applicazioni che collegano Nextcloud con altri servizi e piattaforme"},"hu":{"name":"Integráció","description":"Apps that connect Nextcloud with other services and platforms"},"nl":{"name":"Integratie","description":"Apps die Nextcloud verbinden met andere services en platformen"},"nb":{"name":"Integrasjon","description":"Apper som kobler Nextcloud med andre tjenester og plattformer"},"de":{"name":"Integration","description":"Apps die Nextcloud mit anderen Diensten und Plattformen verbinden"},"cs":{"name":"Propojení","description":"Aplikace propojující NextCloud s dalšími službami a platformami"},"fr":{"name":"Intégration","description":"Applications qui connectent Nextcloud avec d\'autres services et plateformes"},"ru":{"name":"Интеграция","description":"Приложения, соединяющие Nextcloud с другими службами и платформами"},"en":{"name":"Integration","description":"Apps that connect Nextcloud with other services and platforms"}}},{"id":"monitoring","translations":{"nb":{"name":"Overvåking","description":"Apper for statistikk, systemdiagnose og aktivitet"},"it":{"name":"Monitoraggio","description":"Applicazioni di statistiche, diagnostica di sistema e attività"},"de":{"name":"Überwachung","description":"Datenstatistiken-, Systemdiagnose- und Aktivitäten-Apps"},"hu":{"name":"Megfigyelés","description":"Data statistics, system diagnostics and activity apps"},"nl":{"name":"Monitoren","description":"Gegevensstatistiek, systeem diagnose en activiteit apps"},"cs":{"name":"Kontrola","description":"Datové statistiky, diagnózy systému a aktivity aplikací"},"fr":{"name":"Surveillance","description":"Applications de statistiques sur les données, de diagnostics systèmes et d\'activité."},"ru":{"name":"Мониторинг","description":"Статистика данных, диагностика системы и активность приложений"},"en":{"name":"Monitoring","description":"Data statistics, system diagnostics and activity apps"}}},{"id":"multimedia","translations":{"nb":{"name":"Multimedia","description":"Apper for lyd, film og bilde"},"it":{"name":"Multimedia","description":"Applicazioni per audio, video e immagini"},"de":{"name":"Multimedia","description":"Audio-, Video- und Bilder-Apps"},"hu":{"name":"Multimédia","description":"Hang, videó és kép alkalmazások"},"nl":{"name":"Multimedia","description":"Audio, video en afbeelding apps"},"en":{"name":"Multimedia","description":"Audio, video and picture apps"},"cs":{"name":"Multimédia","description":"Aplikace audia, videa a obrázků"},"fr":{"name":"Multimédia","description":"Applications audio, vidéo et image"},"ru":{"name":"Мультимедиа","description":"Приложение аудио, видео и изображения"}}},{"id":"office","translations":{"nb":{"name":"Kontorstøtte og tekst","description":"Apper for Kontorstøtte og tekstbehandling"},"it":{"name":"Ufficio e testo","description":"Applicazione per ufficio ed elaborazione di testi"},"de":{"name":"Büro & Text","description":"Büro- und Textverarbeitungs-Apps"},"hu":{"name":"Iroda és szöveg","description":"Irodai és szöveg feldolgozó alkalmazások"},"nl":{"name":"Office & tekst","description":"Office en tekstverwerkingsapps"},"cs":{"name":"Kancelář a text","description":"Aplikace pro kancelář a zpracování textu"},"fr":{"name":"Bureautique & texte","description":"Applications de bureautique et de traitement de texte"},"en":{"name":"Office & text","description":"Office and text processing apps"}}},{"id":"organization","translations":{"nb":{"name":"Organisering","description":"Apper for tidsstyring, oppgaveliste og kalender"},"it":{"name":"Organizzazione","description":"Applicazioni di gestione del tempo, elenco delle cose da fare e calendario"},"hu":{"name":"Szervezet","description":"Időbeosztás, teendő lista és naptár alkalmazások"},"nl":{"name":"Organisatie","description":"Tijdmanagement, takenlijsten en agenda apps"},"cs":{"name":"Organizace","description":"Aplikace pro správu času, plánování a kalendáře"},"de":{"name":"Organisation","description":"Time management, Todo list and calendar apps"},"fr":{"name":"Organisation","description":"Applications de gestion du temps, de listes de tâches et d\'agendas"},"ru":{"name":"Организация","description":"Приложения по управлению временем, список задач и календарь"},"en":{"name":"Organization","description":"Time management, Todo list and calendar apps"}}},{"id":"social","translations":{"nb":{"name":"Sosialt og kommunikasjon","description":"Apper for meldinger, kontakthåndtering og sosiale medier"},"it":{"name":"Sociale e comunicazione","description":"Applicazioni di messaggistica, gestione dei contatti e reti sociali"},"de":{"name":"Kommunikation","description":"Nachrichten-, Kontaktverwaltungs- und Social-Media-Apps"},"hu":{"name":"Közösségi és kommunikáció","description":"Üzenetküldő, kapcsolat kezelő és közösségi média alkalmazások"},"nl":{"name":"Sociaal & communicatie","description":"Messaging, contactbeheer en social media apps"},"cs":{"name":"Sociální sítě a komunikace","description":"Aplikace pro zasílání zpráv, správu kontaktů a sociální sítě"},"fr":{"name":"Social & communication","description":"Applications de messagerie, de gestion de contacts et de réseaux sociaux"},"ru":{"name":"Социальное и связь","description":"Общение, управление контактами и социальное медиа-приложение"},"en":{"name":"Social & communication","description":"Messaging, contact management and social media apps"}}},{"id":"tools","translations":{"nb":{"name":"Verktøy","description":"Alt annet"},"it":{"name":"Strumenti","description":"Tutto il resto"},"hu":{"name":"Eszközök","description":"Minden más"},"nl":{"name":"Tools","description":"De rest"},"de":{"name":"Werkzeuge","description":"Alles Andere"},"en":{"name":"Tools","description":"Everything else"},"cs":{"name":"Nástroje","description":"Vše ostatní"},"fr":{"name":"Outils","description":"Tout le reste"},"ru":{"name":"Приложения","description":"Что-то еще"}}}]', true)); - - $this->assertEquals($expected, $this->appSettingsController->listCategories()); - } - - public function testViewApps() { - $this->bundleFetcher->expects($this->once())->method('getBundles')->willReturn([]); - $this->installer->expects($this->any()) - ->method('isUpdateAvailable') - ->willReturn(false); - $this->config - ->expects($this->once()) - ->method('getSystemValue') - ->with('appstoreenabled', true) - ->will($this->returnValue(true)); - $this->navigationManager - ->expects($this->once()) - ->method('setActiveEntry') - ->with('core_apps'); - - $policy = new ContentSecurityPolicy(); - $policy->addAllowedImageDomain('https://usercontent.apps.nextcloud.com'); - - $expected = new TemplateResponse('settings', - 'settings-vue', - [ - 'serverData' => [ - 'updateCount' => 0, - 'appstoreEnabled' => true, - 'bundles' => [], - 'developerDocumentation' => '' - ] - ], - 'user'); - $expected->setContentSecurityPolicy($policy); - - $this->assertEquals($expected, $this->appSettingsController->viewApps()); - } - - public function testViewAppsAppstoreNotEnabled() { - $this->installer->expects($this->any()) - ->method('isUpdateAvailable') - ->willReturn(false); - $this->bundleFetcher->expects($this->once())->method('getBundles')->willReturn([]); - $this->config - ->expects($this->once()) - ->method('getSystemValue') - ->with('appstoreenabled', true) - ->will($this->returnValue(false)); - $this->navigationManager - ->expects($this->once()) - ->method('setActiveEntry') - ->with('core_apps'); - - $policy = new ContentSecurityPolicy(); - $policy->addAllowedImageDomain('https://usercontent.apps.nextcloud.com'); - - $expected = new TemplateResponse('settings', - 'settings-vue', - [ - 'serverData' => [ - 'updateCount' => 0, - 'appstoreEnabled' => false, - 'bundles' => [], - 'developerDocumentation' => '' - ] - ], - 'user'); - $expected->setContentSecurityPolicy($policy); - - $this->assertEquals($expected, $this->appSettingsController->viewApps()); - } -} diff --git a/tests/Settings/Controller/AuthSettingsControllerTest.php b/tests/Settings/Controller/AuthSettingsControllerTest.php deleted file mode 100644 index d2fab77329a..00000000000 --- a/tests/Settings/Controller/AuthSettingsControllerTest.php +++ /dev/null @@ -1,400 +0,0 @@ - - * - * @copyright Copyright (c) 2016, ownCloud, Inc. - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see - * - */ - -namespace Test\Settings\Controller; - -use OC\AppFramework\Http; -use OC\Authentication\Exceptions\InvalidTokenException; -use OC\Authentication\Token\DefaultToken; -use OC\Authentication\Token\IProvider; -use OC\Authentication\Token\IToken; -use OC\Authentication\Token\RemoteWipe; -use OC\Settings\Controller\AuthSettingsController; -use OCP\Activity\IEvent; -use OCP\Activity\IManager; -use OCP\AppFramework\Http\JSONResponse; -use OCP\ILogger; -use OCP\IRequest; -use OCP\ISession; -use OCP\IUserSession; -use OCP\Security\ISecureRandom; -use OCP\Session\Exceptions\SessionNotAvailableException; -use PHPUnit\Framework\MockObject\MockObject; -use Test\TestCase; - -class AuthSettingsControllerTest extends TestCase { - - /** @var AuthSettingsController */ - private $controller; - /** @var IRequest|MockObject */ - private $request; - /** @var IProvider|MockObject */ - private $tokenProvider; - /** @var ISession|MockObject */ - private $session; - /**@var IUserSession|MockObject */ - private $userSession; - /** @var ISecureRandom|MockObject */ - private $secureRandom; - /** @var IManager|MockObject */ - private $activityManager; - /** @var RemoteWipe|MockObject */ - private $remoteWipe; - private $uid = 'jane'; - - protected function setUp() { - parent::setUp(); - - $this->request = $this->createMock(IRequest::class); - $this->tokenProvider = $this->createMock(IProvider::class); - $this->session = $this->createMock(ISession::class); - $this->userSession = $this->createMock(IUserSession::class); - $this->secureRandom = $this->createMock(ISecureRandom::class); - $this->activityManager = $this->createMock(IManager::class); - $this->remoteWipe = $this->createMock(RemoteWipe::class); - /** @var ILogger|MockObject $logger */ - $logger = $this->createMock(ILogger::class); - - $this->controller = new AuthSettingsController( - 'core', - $this->request, - $this->tokenProvider, - $this->session, - $this->secureRandom, - $this->uid, - $this->userSession, - $this->activityManager, - $this->remoteWipe, - $logger - ); - } - - public function testCreate() { - $name = 'Nexus 4'; - $sessionToken = $this->createMock(IToken::class); - $deviceToken = $this->createMock(IToken::class); - $password = '123456'; - - $this->session->expects($this->once()) - ->method('getId') - ->willReturn('sessionid'); - $this->tokenProvider->expects($this->once()) - ->method('getToken') - ->with('sessionid') - ->willReturn($sessionToken); - $this->tokenProvider->expects($this->once()) - ->method('getPassword') - ->with($sessionToken, 'sessionid') - ->willReturn($password); - $sessionToken->expects($this->once()) - ->method('getLoginName') - ->willReturn('User13'); - - $this->secureRandom->expects($this->exactly(5)) - ->method('generate') - ->with(5, ISecureRandom::CHAR_HUMAN_READABLE) - ->willReturn('XXXXX'); - $newToken = 'XXXXX-XXXXX-XXXXX-XXXXX-XXXXX'; - - $this->tokenProvider->expects($this->once()) - ->method('generateToken') - ->with($newToken, $this->uid, 'User13', $password, $name, IToken::PERMANENT_TOKEN) - ->willReturn($deviceToken); - - $deviceToken->expects($this->once()) - ->method('jsonSerialize') - ->willReturn(['dummy' => 'dummy', 'canDelete' => true]); - - $this->mockActivityManager(); - - $expected = [ - 'token' => $newToken, - 'deviceToken' => ['dummy' => 'dummy', 'canDelete' => true, 'canRename' => true], - 'loginName' => 'User13', - ]; - - $response = $this->controller->create($name); - $this->assertInstanceOf(JSONResponse::class, $response); - $this->assertEquals($expected, $response->getData()); - } - - public function testCreateSessionNotAvailable() { - $name = 'personal phone'; - - $this->session->expects($this->once()) - ->method('getId') - ->will($this->throwException(new SessionNotAvailableException())); - - $expected = new JSONResponse(); - $expected->setStatus(Http::STATUS_SERVICE_UNAVAILABLE); - - $this->assertEquals($expected, $this->controller->create($name)); - } - - public function testCreateInvalidToken() { - $name = 'Company IPhone'; - - $this->session->expects($this->once()) - ->method('getId') - ->willReturn('sessionid'); - $this->tokenProvider->expects($this->once()) - ->method('getToken') - ->with('sessionid') - ->will($this->throwException(new InvalidTokenException())); - - $expected = new JSONResponse(); - $expected->setStatus(Http::STATUS_SERVICE_UNAVAILABLE); - - $this->assertEquals($expected, $this->controller->create($name)); - } - - public function testDestroy() { - $tokenId = 124; - $token = $this->createMock(DefaultToken::class); - - $this->mockGetTokenById($tokenId, $token); - $this->mockActivityManager(); - - $token->expects($this->exactly(2)) - ->method('getId') - ->willReturn($tokenId); - - $token->expects($this->once()) - ->method('getUID') - ->willReturn('jane'); - - $this->tokenProvider->expects($this->once()) - ->method('invalidateTokenById') - ->with($this->uid, $tokenId); - - $this->assertEquals([], $this->controller->destroy($tokenId)); - } - - public function testDestroyWrongUser() { - $tokenId = 124; - $token = $this->createMock(DefaultToken::class); - - $this->mockGetTokenById($tokenId, $token); - - $token->expects($this->once()) - ->method('getUID') - ->willReturn('foobar'); - - $response = $this->controller->destroy($tokenId); - $this->assertSame([], $response->getData()); - $this->assertSame(\OCP\AppFramework\Http::STATUS_NOT_FOUND, $response->getStatus()); - } - - public function dataRenameToken(): array { - return [ - 'App password => Other token name' => ['App password', 'Other token name'], - 'Other token name => App password' => ['Other token name', 'App password'], - ]; - } - - /** - * @dataProvider dataRenameToken - * - * @param string $name - * @param string $newName - */ - public function testUpdateRename(string $name, string $newName): void { - $tokenId = 42; - $token = $this->createMock(DefaultToken::class); - - $this->mockGetTokenById($tokenId, $token); - $this->mockActivityManager(); - - $token->expects($this->once()) - ->method('getUID') - ->willReturn('jane'); - - $token->expects($this->once()) - ->method('getName') - ->willReturn($name); - - $token->expects($this->once()) - ->method('getScopeAsArray') - ->willReturn(['filesystem' => true]); - - $token->expects($this->once()) - ->method('setName') - ->with($this->equalTo($newName)); - - $this->tokenProvider->expects($this->once()) - ->method('updateToken') - ->with($this->equalTo($token)); - - $this->assertSame([], $this->controller->update($tokenId, ['filesystem' => true], $newName)); - } - - public function dataUpdateFilesystemScope(): array { - return [ - 'Grant filesystem access' => [false, true], - 'Revoke filesystem access' => [true, false], - ]; - } - - /** - * @dataProvider dataUpdateFilesystemScope - * - * @param bool $filesystem - * @param bool $newFilesystem - */ - public function testUpdateFilesystemScope(bool $filesystem, bool $newFilesystem): void { - $tokenId = 42; - $token = $this->createMock(DefaultToken::class); - - $this->mockGetTokenById($tokenId, $token); - $this->mockActivityManager(); - - $token->expects($this->once()) - ->method('getUID') - ->willReturn('jane'); - - $token->expects($this->once()) - ->method('getName') - ->willReturn('App password'); - - $token->expects($this->once()) - ->method('getScopeAsArray') - ->willReturn(['filesystem' => $filesystem]); - - $token->expects($this->once()) - ->method('setScope') - ->with($this->equalTo(['filesystem' => $newFilesystem])); - - $this->tokenProvider->expects($this->once()) - ->method('updateToken') - ->with($this->equalTo($token)); - - $this->assertSame([], $this->controller->update($tokenId, ['filesystem' => $newFilesystem], 'App password')); - } - - public function testUpdateNoChange(): void { - $tokenId = 42; - $token = $this->createMock(DefaultToken::class); - - $this->mockGetTokenById($tokenId, $token); - - $token->expects($this->once()) - ->method('getUID') - ->willReturn('jane'); - - $token->expects($this->once()) - ->method('getName') - ->willReturn('App password'); - - $token->expects($this->once()) - ->method('getScopeAsArray') - ->willReturn(['filesystem' => true]); - - $token->expects($this->never()) - ->method('setName'); - - $token->expects($this->never()) - ->method('setScope'); - - $this->tokenProvider->expects($this->once()) - ->method('updateToken') - ->with($this->equalTo($token)); - - $this->assertSame([], $this->controller->update($tokenId, ['filesystem' => true], 'App password')); - } - - public function testUpdateTokenWrongUser() { - $tokenId = 42; - $token = $this->createMock(DefaultToken::class); - - $this->mockGetTokenById($tokenId, $token); - - $token->expects($this->once()) - ->method('getUID') - ->willReturn('foobar'); - - $token->expects($this->never()) - ->method('setScope'); - $this->tokenProvider->expects($this->never()) - ->method('updateToken'); - - $response = $this->controller->update($tokenId, ['filesystem' => true], 'App password'); - $this->assertSame([], $response->getData()); - $this->assertSame(\OCP\AppFramework\Http::STATUS_NOT_FOUND, $response->getStatus()); - } - - public function testUpdateTokenNonExisting() { - $this->tokenProvider->expects($this->once()) - ->method('getTokenById') - ->with($this->equalTo(42)) - ->willThrowException(new InvalidTokenException('Token does not exist')); - - $this->tokenProvider->expects($this->never()) - ->method('updateToken'); - - $response = $this->controller->update(42, ['filesystem' => true], 'App password'); - $this->assertSame([], $response->getData()); - $this->assertSame(\OCP\AppFramework\Http::STATUS_NOT_FOUND, $response->getStatus()); - } - - private function mockActivityManager(): void { - $this->activityManager->expects($this->once()) - ->method('generateEvent') - ->willReturn($this->createMock(IEvent::class)); - $this->activityManager->expects($this->once()) - ->method('publish'); - } - - /** - * @param int $tokenId - * @param $token - */ - private function mockGetTokenById(int $tokenId, $token): void { - $this->tokenProvider->expects($this->once()) - ->method('getTokenById') - ->with($this->equalTo($tokenId)) - ->willReturn($token); - } - - public function testRemoteWipeNotSuccessful(): void { - $this->remoteWipe->expects($this->once()) - ->method('markTokenForWipe') - ->with(123) - ->willReturn(false); - - $response = $this->controller->wipe(123); - - $expected = new JSONResponse([], Http::STATUS_BAD_REQUEST); - $this->assertEquals($expected, $response); - } - - public function testRemoteWipeSuccessful(): void { - $this->remoteWipe->expects($this->once()) - ->method('markTokenForWipe') - ->with(123) - ->willReturn(true); - - $response = $this->controller->wipe(123); - - $expected = new JSONResponse([]); - $this->assertEquals($expected, $response); - } - -} diff --git a/tests/Settings/Controller/CertificateControllerTest.php b/tests/Settings/Controller/CertificateControllerTest.php deleted file mode 100644 index fb5076dc012..00000000000 --- a/tests/Settings/Controller/CertificateControllerTest.php +++ /dev/null @@ -1,190 +0,0 @@ - - * - * @copyright Copyright (c) 2015, ownCloud, Inc. - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see - * - */ - -namespace Tests\Settings\Controller; - -use OC\Settings\Controller\CertificateController; -use OCP\App\IAppManager; -use OCP\AppFramework\Http; -use OCP\AppFramework\Http\DataResponse; -use OCP\IRequest; -use OCP\IL10N; -use OCP\ICertificateManager; - -/** - * Class CertificateControllerTest - * - * @package Tests\Settings\Controller - */ -class CertificateControllerTest extends \Test\TestCase { - /** @var CertificateController */ - private $certificateController; - /** @var IRequest */ - private $request; - /** @var ICertificateManager */ - private $certificateManager; - /** @var IL10N */ - private $l10n; - /** @var IAppManager */ - private $appManager; - /** @var ICertificateManager */ - private $systemCertificateManager; - - public function setUp() { - parent::setUp(); - - $this->request = $this->getMockBuilder(IRequest::class)->getMock(); - $this->certificateManager = $this->getMockBuilder('\OCP\ICertificateManager')->getMock(); - $this->systemCertificateManager = $this->getMockBuilder('\OCP\ICertificateManager')->getMock(); - $this->l10n = $this->getMockBuilder(IL10N::class)->getMock(); - $this->appManager = $this->getMockBuilder('OCP\App\IAppManager')->getMock(); - - $this->certificateController = $this->getMockBuilder('OC\Settings\Controller\CertificateController') - ->setConstructorArgs( - [ - 'settings', - $this->request, - $this->certificateManager, - $this->systemCertificateManager, - $this->l10n, - $this->appManager - ] - )->setMethods(['isCertificateImportAllowed'])->getMock(); - - $this->certificateController->expects($this->any()) - ->method('isCertificateImportAllowed')->willReturn(true); - } - - public function testAddPersonalRootCertificateWithEmptyFile() { - $this->request - ->expects($this->once()) - ->method('getUploadedFile') - ->with('rootcert_import') - ->will($this->returnValue(null)); - - $expected = new DataResponse(['message' => 'No file uploaded'], Http::STATUS_UNPROCESSABLE_ENTITY); - $this->assertEquals($expected, $this->certificateController->addPersonalRootCertificate()); - } - - public function testAddPersonalRootCertificateValidCertificate() { - $uploadedFile = [ - 'tmp_name' => __DIR__ . '/../../data/certificates/goodCertificate.crt', - 'name' => 'goodCertificate.crt', - ]; - - $certificate = $this->getMockBuilder('\OCP\ICertificate')->getMock(); - $certificate - ->expects($this->once()) - ->method('getName') - ->will($this->returnValue('Name')); - $certificate - ->expects($this->once()) - ->method('getCommonName') - ->will($this->returnValue('CommonName')); - $certificate - ->expects($this->once()) - ->method('getOrganization') - ->will($this->returnValue('Organization')); - $certificate - ->expects($this->exactly(2)) - ->method('getIssueDate') - ->will($this->returnValue(new \DateTime('@1429099555'))); - $certificate - ->expects($this->exactly(2)) - ->method('getExpireDate') - ->will($this->returnValue(new \DateTime('@1529099555'))); - $certificate - ->expects($this->once()) - ->method('getIssuerName') - ->will($this->returnValue('Issuer')); - $certificate - ->expects($this->once()) - ->method('getIssuerOrganization') - ->will($this->returnValue('IssuerOrganization')); - - $this->request - ->expects($this->once()) - ->method('getUploadedFile') - ->with('rootcert_import') - ->will($this->returnValue($uploadedFile)); - $this->certificateManager - ->expects($this->once()) - ->method('addCertificate') - ->with(file_get_contents($uploadedFile['tmp_name'], 'goodCertificate.crt')) - ->will($this->returnValue($certificate)); - - $this->l10n - ->expects($this->at(0)) - ->method('l') - ->with('date', new \DateTime('@1429099555')) - ->will($this->returnValue('Valid From as String')); - $this->l10n - ->expects($this->at(1)) - ->method('l') - ->with('date', new \DateTime('@1529099555')) - ->will($this->returnValue('Valid Till as String')); - - - $expected = new DataResponse([ - 'name' => 'Name', - 'commonName' => 'CommonName', - 'organization' => 'Organization', - 'validFrom' => 1429099555, - 'validTill' => 1529099555, - 'validFromString' => 'Valid From as String', - 'validTillString' => 'Valid Till as String', - 'issuer' => 'Issuer', - 'issuerOrganization' => 'IssuerOrganization', - ]); - $this->assertEquals($expected, $this->certificateController->addPersonalRootCertificate()); - } - - public function testAddPersonalRootCertificateInvalidCertificate() { - $uploadedFile = [ - 'tmp_name' => __DIR__ . '/../../data/certificates/badCertificate.crt', - 'name' => 'badCertificate.crt', - ]; - - $this->request - ->expects($this->once()) - ->method('getUploadedFile') - ->with('rootcert_import') - ->will($this->returnValue($uploadedFile)); - $this->certificateManager - ->expects($this->once()) - ->method('addCertificate') - ->with(file_get_contents($uploadedFile['tmp_name'], 'badCertificate.crt')) - ->will($this->throwException(new \Exception())); - - $expected = new DataResponse(['An error occurred.'], Http::STATUS_UNPROCESSABLE_ENTITY); - $this->assertEquals($expected, $this->certificateController->addPersonalRootCertificate()); - } - - public function testRemoveCertificate() { - $this->certificateManager - ->expects($this->once()) - ->method('removeCertificate') - ->with('CertificateToRemove'); - - $this->assertEquals(new DataResponse(), $this->certificateController->removePersonalRootCertificate('CertificateToRemove')); - } - -} diff --git a/tests/Settings/Controller/CheckSetupControllerTest.php b/tests/Settings/Controller/CheckSetupControllerTest.php deleted file mode 100644 index 9463e4b2a45..00000000000 --- a/tests/Settings/Controller/CheckSetupControllerTest.php +++ /dev/null @@ -1,1449 +0,0 @@ - - * - * @copyright Copyright (c) 2015, ownCloud, Inc. - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see - * - */ - -namespace Tests\Settings\Controller; - -use OC; -use OC\DB\Connection; -use OC\MemoryInfo; -use OC\Security\SecureRandom; -use OC\Settings\Controller\CheckSetupController; -use OCP\AppFramework\Http; -use OCP\AppFramework\Http\DataDisplayResponse; -use OCP\AppFramework\Http\DataResponse; -use OCP\AppFramework\Http\RedirectResponse; -use OCP\Http\Client\IClientService; -use OCP\IConfig; -use OCP\IDateTimeFormatter; -use OCP\IL10N; -use OCP\ILogger; -use OCP\IRequest; -use OCP\IURLGenerator; -use OCP\Lock\ILockingProvider; -use PHPUnit\Framework\MockObject\MockObject; -use Psr\Http\Message\ResponseInterface; -use Symfony\Component\EventDispatcher\EventDispatcherInterface; -use Test\TestCase; -use OC\IntegrityCheck\Checker; - -/** - * Class CheckSetupControllerTest - * - * @backupStaticAttributes - * @package Tests\Settings\Controller - */ -class CheckSetupControllerTest extends TestCase { - /** @var CheckSetupController | \PHPUnit_Framework_MockObject_MockObject */ - private $checkSetupController; - /** @var IRequest | \PHPUnit_Framework_MockObject_MockObject */ - private $request; - /** @var IConfig | \PHPUnit_Framework_MockObject_MockObject */ - private $config; - /** @var IClientService | \PHPUnit_Framework_MockObject_MockObject*/ - private $clientService; - /** @var IURLGenerator | \PHPUnit_Framework_MockObject_MockObject */ - private $urlGenerator; - /** @var IL10N | \PHPUnit_Framework_MockObject_MockObject */ - private $l10n; - /** @var ILogger */ - private $logger; - /** @var Checker|\PHPUnit_Framework_MockObject_MockObject */ - private $checker; - /** @var EventDispatcherInterface|\PHPUnit_Framework_MockObject_MockObject */ - private $dispatcher; - /** @var Connection|\PHPUnit_Framework_MockObject_MockObject */ - private $db; - /** @var ILockingProvider|\PHPUnit_Framework_MockObject_MockObject */ - private $lockingProvider; - /** @var IDateTimeFormatter|\PHPUnit_Framework_MockObject_MockObject */ - private $dateTimeFormatter; - /** @var MemoryInfo|MockObject */ - private $memoryInfo; - /** @var SecureRandom|\PHPUnit_Framework_MockObject_MockObject */ - private $secureRandom; - - /** - * Holds a list of directories created during tests. - * - * @var array - */ - private $dirsToRemove = []; - - public function setUp() { - parent::setUp(); - - $this->request = $this->getMockBuilder(IRequest::class) - ->disableOriginalConstructor()->getMock(); - $this->config = $this->getMockBuilder(IConfig::class) - ->disableOriginalConstructor()->getMock(); - $this->clientService = $this->getMockBuilder(IClientService::class) - ->disableOriginalConstructor()->getMock(); - $this->urlGenerator = $this->getMockBuilder(IURLGenerator::class) - ->disableOriginalConstructor()->getMock(); - $this->l10n = $this->getMockBuilder(IL10N::class) - ->disableOriginalConstructor()->getMock(); - $this->l10n->expects($this->any()) - ->method('t') - ->will($this->returnCallback(function($message, array $replace) { - return vsprintf($message, $replace); - })); - $this->dispatcher = $this->getMockBuilder(EventDispatcherInterface::class) - ->disableOriginalConstructor()->getMock(); - $this->checker = $this->getMockBuilder('\OC\IntegrityCheck\Checker') - ->disableOriginalConstructor()->getMock(); - $this->logger = $this->getMockBuilder(ILogger::class)->getMock(); - $this->db = $this->getMockBuilder(Connection::class) - ->disableOriginalConstructor()->getMock(); - $this->lockingProvider = $this->getMockBuilder(ILockingProvider::class)->getMock(); - $this->dateTimeFormatter = $this->getMockBuilder(IDateTimeFormatter::class)->getMock(); - $this->memoryInfo = $this->getMockBuilder(MemoryInfo::class) - ->setMethods(['isMemoryLimitSufficient',]) - ->getMock(); - $this->secureRandom = $this->getMockBuilder(SecureRandom::class)->getMock(); - $this->checkSetupController = $this->getMockBuilder('\OC\Settings\Controller\CheckSetupController') - ->setConstructorArgs([ - 'settings', - $this->request, - $this->config, - $this->clientService, - $this->urlGenerator, - $this->l10n, - $this->checker, - $this->logger, - $this->dispatcher, - $this->db, - $this->lockingProvider, - $this->dateTimeFormatter, - $this->memoryInfo, - $this->secureRandom, - ]) - ->setMethods([ - 'isReadOnlyConfig', - 'hasValidTransactionIsolationLevel', - 'hasFileinfoInstalled', - 'hasWorkingFileLocking', - 'getLastCronInfo', - 'getSuggestedOverwriteCliURL', - 'getCurlVersion', - 'isPhpOutdated', - 'isOpcacheProperlySetup', - 'hasFreeTypeSupport', - 'hasMissingIndexes', - 'isSqliteUsed', - 'isPHPMailerUsed', - 'hasOpcacheLoaded', - 'getAppDirsWithDifferentOwner', - 'hasRecommendedPHPModules', - 'hasBigIntConversionPendingColumns', - 'isMysqlUsedWithoutUTF8MB4', - 'isEnoughTempSpaceAvailableIfS3PrimaryStorageIsUsed', - ])->getMock(); - } - - /** - * Removes directories created during tests. - * - * @after - * @return void - */ - public function removeTestDirectories() { - foreach ($this->dirsToRemove as $dirToRemove) { - rmdir($dirToRemove); - } - $this->dirsToRemove = []; - } - - public function testIsInternetConnectionWorkingDisabledViaConfig() { - $this->config->expects($this->once()) - ->method('getSystemValue') - ->with('has_internet_connection', true) - ->will($this->returnValue(false)); - - $this->assertFalse( - self::invokePrivate( - $this->checkSetupController, - 'hasInternetConnectivityProblems' - ) - ); - } - - public function testIsInternetConnectionWorkingCorrectly() { - $this->config->expects($this->at(0)) - ->method('getSystemValue') - ->with('has_internet_connection', true) - ->will($this->returnValue(true)); - - $this->config->expects($this->at(1)) - ->method('getSystemValue') - ->with('connectivity_check_domains', ['www.nextcloud.com', 'www.startpage.com', 'www.eff.org', 'www.edri.org']) - ->will($this->returnValue(['www.nextcloud.com', 'www.startpage.com', 'www.eff.org', 'www.edri.org'])); - - $client = $this->getMockBuilder('\OCP\Http\Client\IClient') - ->disableOriginalConstructor()->getMock(); - $client->expects($this->any()) - ->method('get'); - - $this->clientService->expects($this->once()) - ->method('newClient') - ->will($this->returnValue($client)); - - - $this->assertFalse( - self::invokePrivate( - $this->checkSetupController, - 'hasInternetConnectivityProblems' - ) - ); - } - - public function testIsInternetConnectionFail() { - $this->config->expects($this->at(0)) - ->method('getSystemValue') - ->with('has_internet_connection', true) - ->will($this->returnValue(true)); - - $this->config->expects($this->at(1)) - ->method('getSystemValue') - ->with('connectivity_check_domains', ['www.nextcloud.com', 'www.startpage.com', 'www.eff.org', 'www.edri.org']) - ->will($this->returnValue(['www.nextcloud.com', 'www.startpage.com', 'www.eff.org', 'www.edri.org'])); - - $client = $this->getMockBuilder('\OCP\Http\Client\IClient') - ->disableOriginalConstructor()->getMock(); - $client->expects($this->any()) - ->method('get') - ->will($this->throwException(new \Exception())); - - $this->clientService->expects($this->exactly(4)) - ->method('newClient') - ->will($this->returnValue($client)); - - $this->assertTrue( - self::invokePrivate( - $this->checkSetupController, - 'hasInternetConnectivityProblems' - ) - ); - } - - - public function testIsMemcacheConfiguredFalse() { - $this->config->expects($this->once()) - ->method('getSystemValue') - ->with('memcache.local', null) - ->will($this->returnValue(null)); - - $this->assertFalse( - self::invokePrivate( - $this->checkSetupController, - 'isMemcacheConfigured' - ) - ); - } - - public function testIsMemcacheConfiguredTrue() { - $this->config->expects($this->once()) - ->method('getSystemValue') - ->with('memcache.local', null) - ->will($this->returnValue('SomeProvider')); - - $this->assertTrue( - self::invokePrivate( - $this->checkSetupController, - 'isMemcacheConfigured' - ) - ); - } - - public function testIsPhpSupportedFalse() { - $this->checkSetupController - ->expects($this->once()) - ->method('isPhpOutdated') - ->willReturn(true); - - $this->assertEquals( - ['eol' => true, 'version' => PHP_VERSION], - self::invokePrivate($this->checkSetupController, 'isPhpSupported') - ); - } - - public function testIsPhpSupportedTrue() { - $this->checkSetupController - ->expects($this->exactly(2)) - ->method('isPhpOutdated') - ->willReturn(false); - - $this->assertEquals( - ['eol' => false, 'version' => PHP_VERSION], - self::invokePrivate($this->checkSetupController, 'isPhpSupported') - ); - - - $this->assertEquals( - ['eol' => false, 'version' => PHP_VERSION], - self::invokePrivate($this->checkSetupController, 'isPhpSupported') - ); - } - - /** - * @dataProvider dataForwardedForHeadersWorking - * - * @param array $trustedProxies - * @param string $remoteAddrNotForwarded - * @param string $remoteAddr - * @param bool $result - */ - public function testForwardedForHeadersWorking(array $trustedProxies, string $remoteAddrNotForwarded, string $remoteAddr, bool $result) { - $this->config->expects($this->once()) - ->method('getSystemValue') - ->with('trusted_proxies', []) - ->willReturn($trustedProxies); - $this->request->expects($this->atLeastOnce()) - ->method('getHeader') - ->willReturnMap([ - ['REMOTE_ADDR', $remoteAddrNotForwarded], - ['X-Forwarded-Host', ''] - ]); - $this->request->expects($this->any()) - ->method('getRemoteAddress') - ->willReturn($remoteAddr); - - $this->assertEquals( - $result, - self::invokePrivate($this->checkSetupController, 'forwardedForHeadersWorking') - ); - } - - public function dataForwardedForHeadersWorking() { - return [ - // description => trusted proxies, getHeader('REMOTE_ADDR'), getRemoteAddr, expected result - 'no trusted proxies' => [[], '2.2.2.2', '2.2.2.2', true], - 'trusted proxy, remote addr not trusted proxy' => [['1.1.1.1'], '2.2.2.2', '2.2.2.2', true], - 'trusted proxy, remote addr is trusted proxy, x-forwarded-for working' => [['1.1.1.1'], '1.1.1.1', '2.2.2.2', true], - 'trusted proxy, remote addr is trusted proxy, x-forwarded-for not set' => [['1.1.1.1'], '1.1.1.1', '1.1.1.1', false], - ]; - } - - public function testForwardedHostPresentButTrustedProxiesEmpty() { - $this->config->expects($this->once()) - ->method('getSystemValue') - ->with('trusted_proxies', []) - ->willReturn([]); - $this->request->expects($this->atLeastOnce()) - ->method('getHeader') - ->willReturnMap([ - ['REMOTE_ADDR', '1.1.1.1'], - ['X-Forwarded-Host', 'nextcloud.test'] - ]); - $this->request->expects($this->any()) - ->method('getRemoteAddress') - ->willReturn('1.1.1.1'); - - $this->assertEquals( - false, - self::invokePrivate($this->checkSetupController, 'forwardedForHeadersWorking') - ); - } - - public function testCheck() { - $this->config->expects($this->at(0)) - ->method('getAppValue') - ->with('core', 'cronErrors') - ->willReturn(''); - $this->config->expects($this->at(2)) - ->method('getSystemValue') - ->with('connectivity_check_domains', ['www.nextcloud.com', 'www.startpage.com', 'www.eff.org', 'www.edri.org']) - ->will($this->returnValue(['www.nextcloud.com', 'www.startpage.com', 'www.eff.org', 'www.edri.org'])); - $this->config->expects($this->at(3)) - ->method('getSystemValue') - ->with('memcache.local', null) - ->will($this->returnValue('SomeProvider')); - $this->config->expects($this->at(4)) - ->method('getSystemValue') - ->with('has_internet_connection', true) - ->will($this->returnValue(true)); - $this->config->expects($this->at(5)) - ->method('getSystemValue') - ->with('appstoreenabled', true) - ->will($this->returnValue(false)); - - $this->request->expects($this->atLeastOnce()) - ->method('getHeader') - ->willReturnMap([ - ['REMOTE_ADDR', '4.3.2.1'], - ['X-Forwarded-Host', ''] - ]); - - $client = $this->getMockBuilder('\OCP\Http\Client\IClient') - ->disableOriginalConstructor()->getMock(); - $client->expects($this->at(0)) - ->method('get') - ->with('http://www.nextcloud.com/', []) - ->will($this->throwException(new \Exception())); - $client->expects($this->at(1)) - ->method('get') - ->with('http://www.startpage.com/', []) - ->will($this->throwException(new \Exception())); - $client->expects($this->at(2)) - ->method('get') - ->with('http://www.eff.org/', []) - ->will($this->throwException(new \Exception())); - $client->expects($this->at(3)) - ->method('get') - ->with('http://www.edri.org/', []) - ->will($this->throwException(new \Exception())); - $this->clientService->expects($this->exactly(4)) - ->method('newClient') - ->will($this->returnValue($client)); - $this->urlGenerator->expects($this->at(0)) - ->method('linkToDocs') - ->with('admin-performance') - ->willReturn('http://docs.example.org/server/go.php?to=admin-performance'); - $this->urlGenerator->expects($this->at(1)) - ->method('linkToDocs') - ->with('admin-security') - ->willReturn('https://docs.example.org/server/8.1/admin_manual/configuration_server/hardening.html'); - $this->checkSetupController - ->expects($this->once()) - ->method('isPhpOutdated') - ->willReturn(true); - $this->checkSetupController - ->expects($this->once()) - ->method('isOpcacheProperlySetup') - ->willReturn(false); - $this->urlGenerator->expects($this->at(2)) - ->method('linkToDocs') - ->with('admin-reverse-proxy') - ->willReturn('reverse-proxy-doc-link'); - $this->urlGenerator->expects($this->at(3)) - ->method('linkToDocs') - ->with('admin-code-integrity') - ->willReturn('http://docs.example.org/server/go.php?to=admin-code-integrity'); - $this->urlGenerator->expects($this->at(4)) - ->method('linkToDocs') - ->with('admin-php-opcache') - ->willReturn('http://docs.example.org/server/go.php?to=admin-php-opcache'); - $this->urlGenerator->expects($this->at(5)) - ->method('linkToDocs') - ->with('admin-db-conversion') - ->willReturn('http://docs.example.org/server/go.php?to=admin-db-conversion'); - $this->urlGenerator->expects($this->at(6)) - ->method('getAbsoluteURL') - ->with('index.php/settings/admin') - ->willReturn('https://server/index.php/settings/admin'); - $this->checkSetupController - ->method('hasFreeTypeSupport') - ->willReturn(false); - $this->checkSetupController - ->method('hasMissingIndexes') - ->willReturn([]); - $this->checkSetupController - ->method('isSqliteUsed') - ->willReturn(false); - $this->checkSetupController - ->expects($this->once()) - ->method('isReadOnlyConfig') - ->willReturn(false); - $this->checkSetupController - ->expects($this->once()) - ->method('hasValidTransactionIsolationLevel') - ->willReturn(true); - $this->checkSetupController - ->expects($this->once()) - ->method('hasFileinfoInstalled') - ->willReturn(true); - $this->checkSetupController - ->expects($this->once()) - ->method('hasOpcacheLoaded') - ->willReturn(true); - $this->checkSetupController - ->expects($this->once()) - ->method('hasWorkingFileLocking') - ->willReturn(true); - $this->checkSetupController - ->expects($this->once()) - ->method('getSuggestedOverwriteCliURL') - ->willReturn(''); - $this->checkSetupController - ->expects($this->once()) - ->method('getLastCronInfo') - ->willReturn([ - 'diffInSeconds' => 123, - 'relativeTime' => '2 hours ago', - 'backgroundJobsUrl' => 'https://example.org', - ]); - $this->checkSetupController - ->expects($this->once()) - ->method('isPHPMailerUsed') - ->willReturn(false); - $this->checker - ->expects($this->once()) - ->method('hasPassedCheck') - ->willReturn(true); - $this->memoryInfo - ->method('isMemoryLimitSufficient') - ->willReturn(true); - - $this->checkSetupController - ->expects($this->once()) - ->method('getAppDirsWithDifferentOwner') - ->willReturn([]); - - $this->checkSetupController - ->expects($this->once()) - ->method('hasRecommendedPHPModules') - ->willReturn([]); - - $this->checkSetupController - ->expects($this->once()) - ->method('hasBigIntConversionPendingColumns') - ->willReturn([]); - - $this->checkSetupController - ->expects($this->once()) - ->method('isMysqlUsedWithoutUTF8MB4') - ->willReturn(false); - - $this->checkSetupController - ->expects($this->once()) - ->method('isEnoughTempSpaceAvailableIfS3PrimaryStorageIsUsed') - ->willReturn(true); - - $expected = new DataResponse( - [ - 'isGetenvServerWorking' => true, - 'isReadOnlyConfig' => false, - 'hasValidTransactionIsolationLevel' => true, - 'hasFileinfoInstalled' => true, - 'hasWorkingFileLocking' => true, - 'suggestedOverwriteCliURL' => '', - 'cronInfo' => [ - 'diffInSeconds' => 123, - 'relativeTime' => '2 hours ago', - 'backgroundJobsUrl' => 'https://example.org', - ], - 'cronErrors' => [], - 'serverHasInternetConnectionProblems' => true, - 'isMemcacheConfigured' => true, - 'memcacheDocs' => 'http://docs.example.org/server/go.php?to=admin-performance', - 'isRandomnessSecure' => self::invokePrivate($this->checkSetupController, 'isRandomnessSecure'), - 'securityDocs' => 'https://docs.example.org/server/8.1/admin_manual/configuration_server/hardening.html', - 'isUsedTlsLibOutdated' => '', - 'phpSupported' => [ - 'eol' => true, - 'version' => PHP_VERSION - ], - 'forwardedForHeadersWorking' => true, - 'reverseProxyDocs' => 'reverse-proxy-doc-link', - 'isCorrectMemcachedPHPModuleInstalled' => true, - 'hasPassedCodeIntegrityCheck' => true, - 'codeIntegrityCheckerDocumentation' => 'http://docs.example.org/server/go.php?to=admin-code-integrity', - 'isOpcacheProperlySetup' => false, - 'hasOpcacheLoaded' => true, - 'phpOpcacheDocumentation' => 'http://docs.example.org/server/go.php?to=admin-php-opcache', - 'isSettimelimitAvailable' => true, - 'hasFreeTypeSupport' => false, - 'isSqliteUsed' => false, - 'databaseConversionDocumentation' => 'http://docs.example.org/server/go.php?to=admin-db-conversion', - 'missingIndexes' => [], - 'isPHPMailerUsed' => false, - 'mailSettingsDocumentation' => 'https://server/index.php/settings/admin', - 'isMemoryLimitSufficient' => true, - 'appDirsWithDifferentOwner' => [], - 'recommendedPHPModules' => [], - 'pendingBigIntConversionColumns' => [], - 'isMysqlUsedWithoutUTF8MB4' => false, - 'isEnoughTempSpaceAvailableIfS3PrimaryStorageIsUsed' => true, - ] - ); - $this->assertEquals($expected, $this->checkSetupController->check()); - } - - public function testIsPHPMailerUsed() { - $checkSetupController = $this->getMockBuilder('\OC\Settings\Controller\CheckSetupController') - ->setConstructorArgs([ - 'settings', - $this->request, - $this->config, - $this->clientService, - $this->urlGenerator, - $this->l10n, - $this->checker, - $this->logger, - $this->dispatcher, - $this->db, - $this->lockingProvider, - $this->dateTimeFormatter, - $this->memoryInfo, - $this->secureRandom, - ]) - ->setMethods(null)->getMock(); - - $this->config->expects($this->at(0)) - ->method('getSystemValue') - ->with('mail_smtpmode', 'smtp') - ->will($this->returnValue('php')); - $this->config->expects($this->at(1)) - ->method('getSystemValue') - ->with('mail_smtpmode', 'smtp') - ->will($this->returnValue('not-php')); - - $this->assertTrue($this->invokePrivate($checkSetupController, 'isPHPMailerUsed')); - $this->assertFalse($this->invokePrivate($checkSetupController, 'isPHPMailerUsed')); - } - - public function testGetCurlVersion() { - $checkSetupController = $this->getMockBuilder('\OC\Settings\Controller\CheckSetupController') - ->setConstructorArgs([ - 'settings', - $this->request, - $this->config, - $this->clientService, - $this->urlGenerator, - $this->l10n, - $this->checker, - $this->logger, - $this->dispatcher, - $this->db, - $this->lockingProvider, - $this->dateTimeFormatter, - $this->memoryInfo, - $this->secureRandom, - ]) - ->setMethods(null)->getMock(); - - $this->assertArrayHasKey('ssl_version', $this->invokePrivate($checkSetupController, 'getCurlVersion')); - } - - public function testIsUsedTlsLibOutdatedWithAnotherLibrary() { - $this->config->expects($this->any()) - ->method('getSystemValue') - ->will($this->returnValue(true)); - $this->checkSetupController - ->expects($this->once()) - ->method('getCurlVersion') - ->will($this->returnValue(['ssl_version' => 'SSLlib'])); - $this->assertSame('', $this->invokePrivate($this->checkSetupController, 'isUsedTlsLibOutdated')); - } - - public function testIsUsedTlsLibOutdatedWithMisbehavingCurl() { - $this->config->expects($this->any()) - ->method('getSystemValue') - ->will($this->returnValue(true)); - $this->checkSetupController - ->expects($this->once()) - ->method('getCurlVersion') - ->will($this->returnValue([])); - $this->assertSame('', $this->invokePrivate($this->checkSetupController, 'isUsedTlsLibOutdated')); - } - - public function testIsUsedTlsLibOutdatedWithOlderOpenSsl() { - $this->config->expects($this->any()) - ->method('getSystemValue') - ->will($this->returnValue(true)); - $this->checkSetupController - ->expects($this->once()) - ->method('getCurlVersion') - ->will($this->returnValue(['ssl_version' => 'OpenSSL/1.0.1c'])); - $this->assertSame('cURL is using an outdated OpenSSL version (OpenSSL/1.0.1c). Please update your operating system or features such as installing and updating apps via the app store or Federated Cloud Sharing will not work reliably.', $this->invokePrivate($this->checkSetupController, 'isUsedTlsLibOutdated')); - } - - public function testIsUsedTlsLibOutdatedWithOlderOpenSslAndWithoutAppstore() { - $this->config - ->expects($this->at(0)) - ->method('getSystemValue') - ->with('has_internet_connection', true) - ->will($this->returnValue(true)); - $this->checkSetupController - ->expects($this->once()) - ->method('getCurlVersion') - ->will($this->returnValue(['ssl_version' => 'OpenSSL/1.0.1c'])); - $this->assertSame('cURL is using an outdated OpenSSL version (OpenSSL/1.0.1c). Please update your operating system or features such as Federated Cloud Sharing will not work reliably.', $this->invokePrivate($this->checkSetupController, 'isUsedTlsLibOutdated')); - } - - public function testIsUsedTlsLibOutdatedWithOlderOpenSsl1() { - $this->config->expects($this->any()) - ->method('getSystemValue') - ->will($this->returnValue(true)); - $this->checkSetupController - ->expects($this->once()) - ->method('getCurlVersion') - ->will($this->returnValue(['ssl_version' => 'OpenSSL/1.0.2a'])); - $this->assertSame('cURL is using an outdated OpenSSL version (OpenSSL/1.0.2a). Please update your operating system or features such as installing and updating apps via the app store or Federated Cloud Sharing will not work reliably.', $this->invokePrivate($this->checkSetupController, 'isUsedTlsLibOutdated')); - } - - public function testIsUsedTlsLibOutdatedWithMatchingOpenSslVersion() { - $this->config->expects($this->any()) - ->method('getSystemValue') - ->will($this->returnValue(true)); - $this->checkSetupController - ->expects($this->once()) - ->method('getCurlVersion') - ->will($this->returnValue(['ssl_version' => 'OpenSSL/1.0.1d'])); - $this->assertSame('', $this->invokePrivate($this->checkSetupController, 'isUsedTlsLibOutdated')); - } - - public function testIsUsedTlsLibOutdatedWithMatchingOpenSslVersion1() { - $this->config->expects($this->any()) - ->method('getSystemValue') - ->will($this->returnValue(true)); - $this->checkSetupController - ->expects($this->once()) - ->method('getCurlVersion') - ->will($this->returnValue(['ssl_version' => 'OpenSSL/1.0.2b'])); - $this->assertSame('', $this->invokePrivate($this->checkSetupController, 'isUsedTlsLibOutdated')); - } - - /** - * Setups a temp directory and some subdirectories. - * Then calls the 'getAppDirsWithDifferentOwner' method. - * The result is expected to be empty since - * there are no directories with different owners than the current user. - * - * @return void - */ - public function testAppDirectoryOwnersOk() { - $tempDir = tempnam(sys_get_temp_dir(), 'apps') . 'dir'; - mkdir($tempDir); - mkdir($tempDir . DIRECTORY_SEPARATOR . 'app1'); - mkdir($tempDir . DIRECTORY_SEPARATOR . 'app2'); - $this->dirsToRemove[] = $tempDir . DIRECTORY_SEPARATOR . 'app1'; - $this->dirsToRemove[] = $tempDir . DIRECTORY_SEPARATOR . 'app2'; - $this->dirsToRemove[] = $tempDir; - OC::$APPSROOTS = [ - [ - 'path' => $tempDir, - 'url' => '/apps', - 'writable' => true, - ], - ]; - $this->assertSame( - [], - $this->invokePrivate($this->checkSetupController, 'getAppDirsWithDifferentOwner') - ); - } - - /** - * Calls the check for a none existing app root that is marked as not writable. - * It's expected that no error happens since the check shouldn't apply. - * - * @return void - */ - public function testAppDirectoryOwnersNotWritable() { - $tempDir = tempnam(sys_get_temp_dir(), 'apps') . 'dir'; - OC::$APPSROOTS = [ - [ - 'path' => $tempDir, - 'url' => '/apps', - 'writable' => false, - ], - ]; - $this->assertSame( - [], - $this->invokePrivate($this->checkSetupController, 'getAppDirsWithDifferentOwner') - ); - } - - public function testIsBuggyNss400() { - $this->config->expects($this->any()) - ->method('getSystemValue') - ->will($this->returnValue(true)); - $this->checkSetupController - ->expects($this->once()) - ->method('getCurlVersion') - ->will($this->returnValue(['ssl_version' => 'NSS/1.0.2b'])); - $client = $this->getMockBuilder('\OCP\Http\Client\IClient') - ->disableOriginalConstructor()->getMock(); - $exception = $this->getMockBuilder('\GuzzleHttp\Exception\ClientException') - ->disableOriginalConstructor()->getMock(); - $response = $this->getMockBuilder(ResponseInterface::class) - ->disableOriginalConstructor()->getMock(); - $response->expects($this->once()) - ->method('getStatusCode') - ->will($this->returnValue(400)); - $exception->expects($this->once()) - ->method('getResponse') - ->will($this->returnValue($response)); - - $client->expects($this->at(0)) - ->method('get') - ->with('https://nextcloud.com/', []) - ->will($this->throwException($exception)); - - $this->clientService->expects($this->once()) - ->method('newClient') - ->will($this->returnValue($client)); - - $this->assertSame('cURL is using an outdated NSS version (NSS/1.0.2b). Please update your operating system or features such as installing and updating apps via the app store or Federated Cloud Sharing will not work reliably.', $this->invokePrivate($this->checkSetupController, 'isUsedTlsLibOutdated')); - } - - - public function testIsBuggyNss200() { - $this->config->expects($this->any()) - ->method('getSystemValue') - ->will($this->returnValue(true)); - $this->checkSetupController - ->expects($this->once()) - ->method('getCurlVersion') - ->will($this->returnValue(['ssl_version' => 'NSS/1.0.2b'])); - $client = $this->getMockBuilder('\OCP\Http\Client\IClient') - ->disableOriginalConstructor()->getMock(); - $exception = $this->getMockBuilder('\GuzzleHttp\Exception\ClientException') - ->disableOriginalConstructor()->getMock(); - $response = $this->getMockBuilder(ResponseInterface::class) - ->disableOriginalConstructor()->getMock(); - $response->expects($this->once()) - ->method('getStatusCode') - ->will($this->returnValue(200)); - $exception->expects($this->once()) - ->method('getResponse') - ->will($this->returnValue($response)); - - $client->expects($this->at(0)) - ->method('get') - ->with('https://nextcloud.com/', []) - ->will($this->throwException($exception)); - - $this->clientService->expects($this->once()) - ->method('newClient') - ->will($this->returnValue($client)); - - $this->assertSame('', $this->invokePrivate($this->checkSetupController, 'isUsedTlsLibOutdated')); - } - - public function testIsUsedTlsLibOutdatedWithInternetDisabled() { - $this->config - ->expects($this->at(0)) - ->method('getSystemValue') - ->with('has_internet_connection', true) - ->will($this->returnValue(false)); - $this->assertSame('', $this->invokePrivate($this->checkSetupController, 'isUsedTlsLibOutdated')); - } - - public function testIsUsedTlsLibOutdatedWithAppstoreDisabledAndServerToServerSharingEnabled() { - $this->config - ->expects($this->at(0)) - ->method('getSystemValue') - ->with('has_internet_connection', true) - ->will($this->returnValue(true)); - $this->config - ->expects($this->at(1)) - ->method('getSystemValue') - ->with('appstoreenabled', true) - ->will($this->returnValue(false)); - $this->config - ->expects($this->at(2)) - ->method('getAppValue') - ->with('files_sharing', 'outgoing_server2server_share_enabled', 'yes') - ->will($this->returnValue('no')); - $this->config - ->expects($this->at(3)) - ->method('getAppValue') - ->with('files_sharing', 'incoming_server2server_share_enabled', 'yes') - ->will($this->returnValue('yes')); - - $this->checkSetupController - ->expects($this->once()) - ->method('getCurlVersion') - ->will($this->returnValue([])); - $this->assertSame('', $this->invokePrivate($this->checkSetupController, 'isUsedTlsLibOutdated')); - } - - public function testIsUsedTlsLibOutdatedWithAppstoreDisabledAndServerToServerSharingDisabled() { - $this->config - ->expects($this->at(0)) - ->method('getSystemValue') - ->with('has_internet_connection', true) - ->will($this->returnValue(true)); - $this->config - ->expects($this->at(1)) - ->method('getSystemValue') - ->with('appstoreenabled', true) - ->will($this->returnValue(false)); - $this->config - ->expects($this->at(2)) - ->method('getAppValue') - ->with('files_sharing', 'outgoing_server2server_share_enabled', 'yes') - ->will($this->returnValue('no')); - $this->config - ->expects($this->at(3)) - ->method('getAppValue') - ->with('files_sharing', 'incoming_server2server_share_enabled', 'yes') - ->will($this->returnValue('no')); - - $this->checkSetupController - ->expects($this->never()) - ->method('getCurlVersion') - ->will($this->returnValue([])); - $this->assertSame('', $this->invokePrivate($this->checkSetupController, 'isUsedTlsLibOutdated')); - } - - public function testRescanFailedIntegrityCheck() { - $this->checker - ->expects($this->once()) - ->method('runInstanceVerification'); - $this->urlGenerator - ->expects($this->once()) - ->method('linkToRoute') - ->with('settings.AdminSettings.index') - ->will($this->returnValue('/admin')); - - $expected = new RedirectResponse('/admin'); - $this->assertEquals($expected, $this->checkSetupController->rescanFailedIntegrityCheck()); - } - - public function testGetFailedIntegrityCheckDisabled() { - $this->checker - ->expects($this->once()) - ->method('isCodeCheckEnforced') - ->willReturn(false); - - $expected = new DataDisplayResponse('Integrity checker has been disabled. Integrity cannot be verified.'); - $this->assertEquals($expected, $this->checkSetupController->getFailedIntegrityCheckFiles()); - } - - - public function testGetFailedIntegrityCheckFilesWithNoErrorsFound() { - $this->checker - ->expects($this->once()) - ->method('isCodeCheckEnforced') - ->willReturn(true); - $this->checker - ->expects($this->once()) - ->method('getResults') - ->will($this->returnValue([])); - - $expected = new DataDisplayResponse( - 'No errors have been found.', - Http::STATUS_OK, - [ - 'Content-Type' => 'text/plain', - ] - ); - $this->assertEquals($expected, $this->checkSetupController->getFailedIntegrityCheckFiles()); - } - - public function testGetFailedIntegrityCheckFilesWithSomeErrorsFound() { - $this->checker - ->expects($this->once()) - ->method('isCodeCheckEnforced') - ->willReturn(true); - $this->checker - ->expects($this->once()) - ->method('getResults') - ->will($this->returnValue(array ( 'core' => array ( 'EXTRA_FILE' => array('/testfile' => array()), 'INVALID_HASH' => array ( '/.idea/workspace.xml' => array ( 'expected' => 'f1c5e2630d784bc9cb02d5a28f55d6f24d06dae2a0fee685f3c2521b050955d9d452769f61454c9ddfa9c308146ade10546cfa829794448eaffbc9a04a29d216', 'current' => 'ce08bf30bcbb879a18b49239a9bec6b8702f52452f88a9d32142cad8d2494d5735e6bfa0d8642b2762c62ca5be49f9bf4ec231d4a230559d4f3e2c471d3ea094', ), '/lib/private/integritycheck/checker.php' => array ( 'expected' => 'c5a03bacae8dedf8b239997901ba1fffd2fe51271d13a00cc4b34b09cca5176397a89fc27381cbb1f72855fa18b69b6f87d7d5685c3b45aee373b09be54742ea', 'current' => '88a3a92c11db91dec1ac3be0e1c87f862c95ba6ffaaaa3f2c3b8f682187c66f07af3a3b557a868342ef4a271218fe1c1e300c478e6c156c5955ed53c40d06585', ), '/settings/controller/checksetupcontroller.php' => array ( 'expected' => '3e1de26ce93c7bfe0ede7c19cb6c93cadc010340225b375607a7178812e9de163179b0dc33809f451e01f491d93f6f5aaca7929685d21594cccf8bda732327c4', 'current' => '09563164f9904a837f9ca0b5f626db56c838e5098e0ccc1d8b935f68fa03a25c5ec6f6b2d9e44a868e8b85764dafd1605522b4af8db0ae269d73432e9a01e63a', ), ), ), 'bookmarks' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'dav' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'encryption' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'external' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'federation' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'files' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'files_antivirus' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'files_drop' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'files_external' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'files_pdfviewer' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'files_sharing' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'files_trashbin' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'files_versions' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'files_videoviewer' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'firstrunwizard' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'gitsmart' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'logreader' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature could not get verified.', ), ), 'password_policy' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'provisioning_api' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'sketch' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'threatblock' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'two_factor_auth' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'user_ldap' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'user_shibboleth' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), ))); - - $expected = new DataDisplayResponse( - 'Technical information -===================== -The following list covers which files have failed the integrity check. Please read -the previous linked documentation to learn more about the errors and how to fix -them. - -Results -======= -- core - - EXTRA_FILE - - /testfile - - INVALID_HASH - - /.idea/workspace.xml - - /lib/private/integritycheck/checker.php - - /settings/controller/checksetupcontroller.php -- bookmarks - - EXCEPTION - - OC\IntegrityCheck\Exceptions\InvalidSignatureException - - Signature data not found. -- dav - - EXCEPTION - - OC\IntegrityCheck\Exceptions\InvalidSignatureException - - Signature data not found. -- encryption - - EXCEPTION - - OC\IntegrityCheck\Exceptions\InvalidSignatureException - - Signature data not found. -- external - - EXCEPTION - - OC\IntegrityCheck\Exceptions\InvalidSignatureException - - Signature data not found. -- federation - - EXCEPTION - - OC\IntegrityCheck\Exceptions\InvalidSignatureException - - Signature data not found. -- files - - EXCEPTION - - OC\IntegrityCheck\Exceptions\InvalidSignatureException - - Signature data not found. -- files_antivirus - - EXCEPTION - - OC\IntegrityCheck\Exceptions\InvalidSignatureException - - Signature data not found. -- files_drop - - EXCEPTION - - OC\IntegrityCheck\Exceptions\InvalidSignatureException - - Signature data not found. -- files_external - - EXCEPTION - - OC\IntegrityCheck\Exceptions\InvalidSignatureException - - Signature data not found. -- files_pdfviewer - - EXCEPTION - - OC\IntegrityCheck\Exceptions\InvalidSignatureException - - Signature data not found. -- files_sharing - - EXCEPTION - - OC\IntegrityCheck\Exceptions\InvalidSignatureException - - Signature data not found. -- files_trashbin - - EXCEPTION - - OC\IntegrityCheck\Exceptions\InvalidSignatureException - - Signature data not found. -- files_versions - - EXCEPTION - - OC\IntegrityCheck\Exceptions\InvalidSignatureException - - Signature data not found. -- files_videoviewer - - EXCEPTION - - OC\IntegrityCheck\Exceptions\InvalidSignatureException - - Signature data not found. -- firstrunwizard - - EXCEPTION - - OC\IntegrityCheck\Exceptions\InvalidSignatureException - - Signature data not found. -- gitsmart - - EXCEPTION - - OC\IntegrityCheck\Exceptions\InvalidSignatureException - - Signature data not found. -- logreader - - EXCEPTION - - OC\IntegrityCheck\Exceptions\InvalidSignatureException - - Signature could not get verified. -- password_policy - - EXCEPTION - - OC\IntegrityCheck\Exceptions\InvalidSignatureException - - Signature data not found. -- provisioning_api - - EXCEPTION - - OC\IntegrityCheck\Exceptions\InvalidSignatureException - - Signature data not found. -- sketch - - EXCEPTION - - OC\IntegrityCheck\Exceptions\InvalidSignatureException - - Signature data not found. -- threatblock - - EXCEPTION - - OC\IntegrityCheck\Exceptions\InvalidSignatureException - - Signature data not found. -- two_factor_auth - - EXCEPTION - - OC\IntegrityCheck\Exceptions\InvalidSignatureException - - Signature data not found. -- user_ldap - - EXCEPTION - - OC\IntegrityCheck\Exceptions\InvalidSignatureException - - Signature data not found. -- user_shibboleth - - EXCEPTION - - OC\IntegrityCheck\Exceptions\InvalidSignatureException - - Signature data not found. - -Raw output -========== -Array -( - [core] => Array - ( - [EXTRA_FILE] => Array - ( - [/testfile] => Array - ( - ) - - ) - - [INVALID_HASH] => Array - ( - [/.idea/workspace.xml] => Array - ( - [expected] => f1c5e2630d784bc9cb02d5a28f55d6f24d06dae2a0fee685f3c2521b050955d9d452769f61454c9ddfa9c308146ade10546cfa829794448eaffbc9a04a29d216 - [current] => ce08bf30bcbb879a18b49239a9bec6b8702f52452f88a9d32142cad8d2494d5735e6bfa0d8642b2762c62ca5be49f9bf4ec231d4a230559d4f3e2c471d3ea094 - ) - - [/lib/private/integritycheck/checker.php] => Array - ( - [expected] => c5a03bacae8dedf8b239997901ba1fffd2fe51271d13a00cc4b34b09cca5176397a89fc27381cbb1f72855fa18b69b6f87d7d5685c3b45aee373b09be54742ea - [current] => 88a3a92c11db91dec1ac3be0e1c87f862c95ba6ffaaaa3f2c3b8f682187c66f07af3a3b557a868342ef4a271218fe1c1e300c478e6c156c5955ed53c40d06585 - ) - - [/settings/controller/checksetupcontroller.php] => Array - ( - [expected] => 3e1de26ce93c7bfe0ede7c19cb6c93cadc010340225b375607a7178812e9de163179b0dc33809f451e01f491d93f6f5aaca7929685d21594cccf8bda732327c4 - [current] => 09563164f9904a837f9ca0b5f626db56c838e5098e0ccc1d8b935f68fa03a25c5ec6f6b2d9e44a868e8b85764dafd1605522b4af8db0ae269d73432e9a01e63a - ) - - ) - - ) - - [bookmarks] => Array - ( - [EXCEPTION] => Array - ( - [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException - [message] => Signature data not found. - ) - - ) - - [dav] => Array - ( - [EXCEPTION] => Array - ( - [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException - [message] => Signature data not found. - ) - - ) - - [encryption] => Array - ( - [EXCEPTION] => Array - ( - [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException - [message] => Signature data not found. - ) - - ) - - [external] => Array - ( - [EXCEPTION] => Array - ( - [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException - [message] => Signature data not found. - ) - - ) - - [federation] => Array - ( - [EXCEPTION] => Array - ( - [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException - [message] => Signature data not found. - ) - - ) - - [files] => Array - ( - [EXCEPTION] => Array - ( - [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException - [message] => Signature data not found. - ) - - ) - - [files_antivirus] => Array - ( - [EXCEPTION] => Array - ( - [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException - [message] => Signature data not found. - ) - - ) - - [files_drop] => Array - ( - [EXCEPTION] => Array - ( - [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException - [message] => Signature data not found. - ) - - ) - - [files_external] => Array - ( - [EXCEPTION] => Array - ( - [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException - [message] => Signature data not found. - ) - - ) - - [files_pdfviewer] => Array - ( - [EXCEPTION] => Array - ( - [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException - [message] => Signature data not found. - ) - - ) - - [files_sharing] => Array - ( - [EXCEPTION] => Array - ( - [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException - [message] => Signature data not found. - ) - - ) - - [files_trashbin] => Array - ( - [EXCEPTION] => Array - ( - [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException - [message] => Signature data not found. - ) - - ) - - [files_versions] => Array - ( - [EXCEPTION] => Array - ( - [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException - [message] => Signature data not found. - ) - - ) - - [files_videoviewer] => Array - ( - [EXCEPTION] => Array - ( - [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException - [message] => Signature data not found. - ) - - ) - - [firstrunwizard] => Array - ( - [EXCEPTION] => Array - ( - [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException - [message] => Signature data not found. - ) - - ) - - [gitsmart] => Array - ( - [EXCEPTION] => Array - ( - [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException - [message] => Signature data not found. - ) - - ) - - [logreader] => Array - ( - [EXCEPTION] => Array - ( - [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException - [message] => Signature could not get verified. - ) - - ) - - [password_policy] => Array - ( - [EXCEPTION] => Array - ( - [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException - [message] => Signature data not found. - ) - - ) - - [provisioning_api] => Array - ( - [EXCEPTION] => Array - ( - [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException - [message] => Signature data not found. - ) - - ) - - [sketch] => Array - ( - [EXCEPTION] => Array - ( - [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException - [message] => Signature data not found. - ) - - ) - - [threatblock] => Array - ( - [EXCEPTION] => Array - ( - [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException - [message] => Signature data not found. - ) - - ) - - [two_factor_auth] => Array - ( - [EXCEPTION] => Array - ( - [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException - [message] => Signature data not found. - ) - - ) - - [user_ldap] => Array - ( - [EXCEPTION] => Array - ( - [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException - [message] => Signature data not found. - ) - - ) - - [user_shibboleth] => Array - ( - [EXCEPTION] => Array - ( - [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException - [message] => Signature data not found. - ) - - ) - -) -', - Http::STATUS_OK, - [ - 'Content-Type' => 'text/plain', - ] - ); - $this->assertEquals($expected, $this->checkSetupController->getFailedIntegrityCheckFiles()); - } - - public function dataForIsMysqlUsedWithoutUTF8MB4() { - return [ - ['sqlite', false, false], - ['sqlite', true, false], - ['postgres', false, false], - ['postgres', true, false], - ['oci', false, false], - ['oci', true, false], - ['mysql', false, true], - ['mysql', true, false], - ]; - } - - /** - * @dataProvider dataForIsMysqlUsedWithoutUTF8MB4 - */ - public function testIsMysqlUsedWithoutUTF8MB4(string $db, bool $useUTF8MB4, bool $expected) { - $this->config->method('getSystemValue') - ->will($this->returnCallback(function($key, $default) use ($db, $useUTF8MB4) { - if ($key === 'dbtype') { - return $db; - } - if ($key === 'mysql.utf8mb4') { - return $useUTF8MB4; - } - return $default; - })); - - $checkSetupController = new CheckSetupController( - 'settings', - $this->request, - $this->config, - $this->clientService, - $this->urlGenerator, - $this->l10n, - $this->checker, - $this->logger, - $this->dispatcher, - $this->db, - $this->lockingProvider, - $this->dateTimeFormatter, - $this->memoryInfo, - $this->secureRandom - ); - - $this->assertSame($expected, $this->invokePrivate($checkSetupController, 'isMysqlUsedWithoutUTF8MB4')); - } - - public function dataForIsEnoughTempSpaceAvailableIfS3PrimaryStorageIsUsed() { - return [ - ['singlebucket', 'OC\\Files\\ObjectStore\\Swift', true], - ['multibucket', 'OC\\Files\\ObjectStore\\Swift', true], - ['singlebucket', 'OC\\Files\\ObjectStore\\Custom', true], - ['multibucket', 'OC\Files\\ObjectStore\\Custom', true], - ['singlebucket', 'OC\Files\ObjectStore\Swift', true], - ['multibucket', 'OC\Files\ObjectStore\Swift', true], - ['singlebucket', 'OC\Files\ObjectStore\Custom', true], - ['multibucket', 'OC\Files\ObjectStore\Custom', true], - ]; - } - - /** - * @dataProvider dataForIsEnoughTempSpaceAvailableIfS3PrimaryStorageIsUsed - */ - public function testIsEnoughTempSpaceAvailableIfS3PrimaryStorageIsUsed(string $mode, string $className, bool $expected) { - $this->config->method('getSystemValue') - ->will($this->returnCallback(function($key, $default) use ($mode, $className) { - if ($key === 'objectstore' && $mode === 'singlebucket') { - return ['class' => $className]; - } - if ($key === 'objectstore_multibucket' && $mode === 'multibucket') { - return ['class' => $className]; - } - return $default; - })); - - $checkSetupController = new CheckSetupController( - 'settings', - $this->request, - $this->config, - $this->clientService, - $this->urlGenerator, - $this->l10n, - $this->checker, - $this->logger, - $this->dispatcher, - $this->db, - $this->lockingProvider, - $this->dateTimeFormatter, - $this->memoryInfo, - $this->secureRandom - ); - - $this->assertSame($expected, $this->invokePrivate($checkSetupController, 'isEnoughTempSpaceAvailableIfS3PrimaryStorageIsUsed')); - } -} diff --git a/tests/Settings/Controller/MailSettingsControllerTest.php b/tests/Settings/Controller/MailSettingsControllerTest.php deleted file mode 100644 index ed241ed0533..00000000000 --- a/tests/Settings/Controller/MailSettingsControllerTest.php +++ /dev/null @@ -1,178 +0,0 @@ - - * - * @author Lukas Reschke - * @author Joas Schilling - * - * This file is licensed under the Affero General Public License version 3 or - * later. - * See the COPYING-README file. - */ - -namespace Tests\Settings\Controller; - -use OC\Mail\Message; -use OC\Settings\Controller\MailSettingsController; -use OCP\AppFramework\Http; -use OCP\IConfig; -use OCP\IL10N; -use OCP\IRequest; -use OCP\IUserSession; -use OCP\Mail\IEMailTemplate; -use OCP\Mail\IMailer; -use OC\User\User; - -/** - * @package Tests\Settings\Controller - */ -class MailSettingsControllerTest extends \Test\TestCase { - - /** @var IConfig|\PHPUnit_Framework_MockObject_MockObject */ - private $config; - /** @var IUserSession|\PHPUnit_Framework_MockObject_MockObject */ - private $userSession; - /** @var IMailer|\PHPUnit_Framework_MockObject_MockObject */ - private $mailer; - /** @var IL10N|\PHPUnit_Framework_MockObject_MockObject */ - private $l; - - /** @var MailSettingsController */ - private $mailController; - - protected function setUp() { - parent::setUp(); - - $this->l = $this->createMock(IL10N::class); - $this->config = $this->createMock(IConfig::class); - $this->userSession = $this->createMock(IUserSession::class); - $this->mailer = $this->createMock(IMailer::class); - /** @var IRequest|\PHPUnit_Framework_MockObject_MockObject $request */ - $request = $this->createMock(IRequest::class); - $this->mailController = new MailSettingsController( - 'settings', - $request, - $this->l, - $this->config, - $this->userSession, - $this->mailer, - 'no-reply@nextcloud.com' - ); - } - - public function testSetMailSettings() { - $this->config->expects($this->exactly(2)) - ->method('setSystemValues') - ->withConsecutive( - [[ - 'mail_domain' => 'nextcloud.com', - 'mail_from_address' => 'demo@nextcloud.com', - 'mail_smtpmode' => 'smtp', - 'mail_smtpsecure' => 'ssl', - 'mail_smtphost' => 'mx.nextcloud.org', - 'mail_smtpauthtype' => 'NTLM', - 'mail_smtpauth' => 1, - 'mail_smtpport' => '25', - 'mail_sendmailmode' => null, - ]], - [[ - 'mail_domain' => 'nextcloud.com', - 'mail_from_address' => 'demo@nextcloud.com', - 'mail_smtpmode' => 'smtp', - 'mail_smtpsecure' => 'ssl', - 'mail_smtphost' => 'mx.nextcloud.org', - 'mail_smtpauthtype' => 'NTLM', - 'mail_smtpauth' => null, - 'mail_smtpport' => '25', - 'mail_smtpname' => null, - 'mail_smtppassword' => null, - 'mail_sendmailmode' => null, - ]] - ); - - // With authentication - $response = $this->mailController->setMailSettings( - 'nextcloud.com', - 'demo@nextcloud.com', - 'smtp', - 'ssl', - 'mx.nextcloud.org', - 'NTLM', - 1, - '25', - null - ); - $this->assertSame(Http::STATUS_OK, $response->getStatus()); - - // Without authentication (testing the deletion of the stored password) - $response = $this->mailController->setMailSettings( - 'nextcloud.com', - 'demo@nextcloud.com', - 'smtp', - 'ssl', - 'mx.nextcloud.org', - 'NTLM', - 0, - '25', - null - ); - $this->assertSame(Http::STATUS_OK, $response->getStatus()); - - } - - public function testStoreCredentials() { - $this->config - ->expects($this->once()) - ->method('setSystemValues') - ->with([ - 'mail_smtpname' => 'UsernameToStore', - 'mail_smtppassword' => 'PasswordToStore', - ]); - - $response = $this->mailController->storeCredentials('UsernameToStore', 'PasswordToStore'); - $this->assertSame(Http::STATUS_OK, $response->getStatus()); - } - - public function testSendTestMail() { - $user = $this->createMock(User::class); - $user->expects($this->any()) - ->method('getUID') - ->will($this->returnValue('Werner')); - $user->expects($this->any()) - ->method('getDisplayName') - ->will($this->returnValue('Werner Brösel')); - - $this->l->expects($this->any()) - ->method('t') - ->willReturnCallback(function($text, $parameters = []) { - return vsprintf($text, $parameters); - }); - $this->userSession - ->expects($this->any()) - ->method('getUser') - ->will($this->returnValue($user)); - - // Ensure that it fails when no mail address has been specified - $response = $this->mailController->sendTestMail(); - $this->assertSame(Http::STATUS_BAD_REQUEST, $response->getStatus()); - $this->assertSame('You need to set your user email before being able to send test emails.', $response->getData()); - - // If no exception is thrown it should work - $this->config - ->expects($this->any()) - ->method('getUserValue') - ->will($this->returnValue('mail@example.invalid')); - $this->mailer->expects($this->once()) - ->method('createMessage') - ->willReturn($this->createMock(Message::class)); - $emailTemplate = $this->createMock(IEMailTemplate::class); - $this->mailer - ->expects($this->once()) - ->method('createEMailTemplate') - ->willReturn($emailTemplate); - $response = $this->mailController->sendTestMail(); - $this->assertSame(Http::STATUS_OK, $response->getStatus(), $response->getData()); - } - -} diff --git a/tests/Settings/Controller/TwoFactorSettingsControllerTest.php b/tests/Settings/Controller/TwoFactorSettingsControllerTest.php deleted file mode 100644 index 6872d4e2152..00000000000 --- a/tests/Settings/Controller/TwoFactorSettingsControllerTest.php +++ /dev/null @@ -1,84 +0,0 @@ - - * - * @author 2018 Christoph Wurst - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -namespace Tests\Settings\Controller; - -use OC\Authentication\TwoFactorAuth\EnforcementState; -use OC\Authentication\TwoFactorAuth\MandatoryTwoFactor; -use OC\Settings\Controller\TwoFactorSettingsController; -use OCP\AppFramework\Http\JSONResponse; -use OCP\IRequest; -use PHPUnit\Framework\MockObject\MockObject; -use Test\TestCase; - -class TwoFactorSettingsControllerTest extends TestCase { - - /** @var IRequest|MockObject */ - private $request; - - /** @var MandatoryTwoFactor|MockObject */ - private $mandatoryTwoFactor; - - /** @var TwoFactorSettingsController */ - private $controller; - - protected function setUp() { - parent::setUp(); - - $this->request = $this->createMock(IRequest::class); - $this->mandatoryTwoFactor = $this->createMock(MandatoryTwoFactor::class); - - $this->controller = new TwoFactorSettingsController( - 'settings', - $this->request, - $this->mandatoryTwoFactor - ); - } - - public function testIndex() { - $state = new EnforcementState(true); - $this->mandatoryTwoFactor->expects($this->once()) - ->method('getState') - ->willReturn($state); - $expected = new JSONResponse($state); - - $resp = $this->controller->index(); - - $this->assertEquals($expected, $resp); - } - - public function testUpdate() { - $state = new EnforcementState(true); - $this->mandatoryTwoFactor->expects($this->once()) - ->method('setState') - ->with($this->equalTo(new EnforcementState(true))); - $this->mandatoryTwoFactor->expects($this->once()) - ->method('getState') - ->willReturn($state); - $expected = new JSONResponse($state); - - $resp = $this->controller->update(true); - - $this->assertEquals($expected, $resp); - } - -} diff --git a/tests/Settings/Controller/UsersControllerTest.php b/tests/Settings/Controller/UsersControllerTest.php deleted file mode 100644 index 8294514fa50..00000000000 --- a/tests/Settings/Controller/UsersControllerTest.php +++ /dev/null @@ -1,562 +0,0 @@ -userManager = $this->createMock(IUserManager::class); - $this->groupManager = $this->createMock(Manager::class); - $this->userSession = $this->createMock(IUserSession::class); - $this->config = $this->createMock(IConfig::class); - $this->l = $this->createMock(IL10N::class); - $this->mailer = $this->createMock(IMailer::class); - $this->l10nFactory = $this->createMock(IFactory::class); - $this->appManager = $this->createMock(IAppManager::class); - $this->accountManager = $this->createMock(AccountManager::class); - $this->securityManager = $this->getMockBuilder(\OC\Security\IdentityProof\Manager::class)->disableOriginalConstructor()->getMock(); - $this->jobList = $this->createMock(IJobList::class); - $this->encryptionManager = $this->createMock(IManager::class); - - $this->l->method('t') - ->will($this->returnCallback(function ($text, $parameters = []) { - return vsprintf($text, $parameters); - })); - - $this->encryptionModule = $this->createMock(IEncryptionModule::class); - $this->encryptionManager->expects($this->any())->method('getEncryptionModules') - ->willReturn(['encryptionModule' => ['callback' => function() { return $this->encryptionModule;}]]); - - } - - /** - * @param bool $isAdmin - * @return UsersController | \PHPUnit_Framework_MockObject_MockObject - */ - protected function getController($isAdmin = false, $mockedMethods = []) { - if (empty($mockedMethods)) { - return new UsersController( - 'settings', - $this->createMock(IRequest::class), - $this->userManager, - $this->groupManager, - $this->userSession, - $this->config, - $isAdmin, - $this->l, - $this->mailer, - $this->l10nFactory, - $this->appManager, - $this->accountManager, - $this->securityManager, - $this->jobList, - $this->encryptionManager - ); - } else { - return $this->getMockBuilder(UsersController::class) - ->setConstructorArgs( - [ - 'settings', - $this->createMock(IRequest::class), - $this->userManager, - $this->groupManager, - $this->userSession, - $this->config, - $isAdmin, - $this->l, - $this->mailer, - $this->l10nFactory, - $this->appManager, - $this->accountManager, - $this->securityManager, - $this->jobList, - $this->encryptionManager - ] - )->setMethods($mockedMethods)->getMock(); - } - } - - /** - * @dataProvider dataTestSetUserSettings - * - * @param string $email - * @param bool $validEmail - * @param $expectedStatus - */ - public function testSetUserSettings($email, $validEmail, $expectedStatus) { - $controller = $this->getController(false, ['saveUserSettings']); - $user = $this->createMock(IUser::class); - - $this->userSession->method('getUser')->willReturn($user); - - if (!empty($email) && $validEmail) { - $this->mailer->expects($this->once())->method('validateMailAddress') - ->willReturn($validEmail); - } - - $saveData = (!empty($email) && $validEmail) || empty($email); - - if ($saveData) { - $this->accountManager->expects($this->once()) - ->method('getUser') - ->with($user) - ->willReturn([ - AccountManager::PROPERTY_DISPLAYNAME => - [ - 'value' => 'Display name', - 'scope' => AccountManager::VISIBILITY_CONTACTS_ONLY, - 'verified' => AccountManager::NOT_VERIFIED, - ], - AccountManager::PROPERTY_ADDRESS => - [ - 'value' => '', - 'scope' => AccountManager::VISIBILITY_PRIVATE, - 'verified' => AccountManager::NOT_VERIFIED, - ], - AccountManager::PROPERTY_WEBSITE => - [ - 'value' => '', - 'scope' => AccountManager::VISIBILITY_PRIVATE, - 'verified' => AccountManager::NOT_VERIFIED, - ], - AccountManager::PROPERTY_EMAIL => - [ - 'value' => '', - 'scope' => AccountManager::VISIBILITY_CONTACTS_ONLY, - 'verified' => AccountManager::NOT_VERIFIED, - ], - AccountManager::PROPERTY_AVATAR => - [ - 'scope' => AccountManager::VISIBILITY_CONTACTS_ONLY - ], - AccountManager::PROPERTY_PHONE => - [ - 'value' => '', - 'scope' => AccountManager::VISIBILITY_PRIVATE, - 'verified' => AccountManager::NOT_VERIFIED, - ], - AccountManager::PROPERTY_TWITTER => - [ - 'value' => '', - 'scope' => AccountManager::VISIBILITY_PRIVATE, - 'verified' => AccountManager::NOT_VERIFIED, - ], - ]); - - $controller->expects($this->once())->method('saveUserSettings'); - } else { - $controller->expects($this->never())->method('saveUserSettings'); - } - - $result = $controller->setUserSettings( - AccountManager::VISIBILITY_CONTACTS_ONLY, - 'displayName', - AccountManager::VISIBILITY_CONTACTS_ONLY, - '47658468', - AccountManager::VISIBILITY_CONTACTS_ONLY, - $email, - AccountManager::VISIBILITY_CONTACTS_ONLY, - 'nextcloud.com', - AccountManager::VISIBILITY_CONTACTS_ONLY, - 'street and city', - AccountManager::VISIBILITY_CONTACTS_ONLY, - '@nextclouders', - AccountManager::VISIBILITY_CONTACTS_ONLY - ); - - $this->assertSame($expectedStatus, $result->getStatus()); - } - - public function dataTestSetUserSettings() { - return [ - ['', true, Http::STATUS_OK], - ['', false, Http::STATUS_OK], - ['example.com', false, Http::STATUS_UNPROCESSABLE_ENTITY], - ['john@example.com', true, Http::STATUS_OK], - ]; - } - - /** - * @dataProvider dataTestSaveUserSettings - * - * @param array $data - * @param string $oldEmailAddress - * @param string $oldDisplayName - */ - public function testSaveUserSettings($data, - $oldEmailAddress, - $oldDisplayName - ) { - $controller = $this->getController(); - $user = $this->createMock(IUser::class); - - $user->method('getDisplayName')->willReturn($oldDisplayName); - $user->method('getEMailAddress')->willReturn($oldEmailAddress); - $user->method('canChangeDisplayName')->willReturn(true); - - if ($data[AccountManager::PROPERTY_EMAIL]['value'] === $oldEmailAddress || - ($oldEmailAddress === null && $data[AccountManager::PROPERTY_EMAIL]['value'] === '')) { - $user->expects($this->never())->method('setEMailAddress'); - } else { - $user->expects($this->once())->method('setEMailAddress') - ->with($data[AccountManager::PROPERTY_EMAIL]['value']) - ->willReturn(true); - } - - if ($data[AccountManager::PROPERTY_DISPLAYNAME]['value'] === $oldDisplayName || - ($oldDisplayName === null && $data[AccountManager::PROPERTY_DISPLAYNAME]['value'] === '')) { - $user->expects($this->never())->method('setDisplayName'); - } else { - $user->expects($this->once())->method('setDisplayName') - ->with($data[AccountManager::PROPERTY_DISPLAYNAME]['value']) - ->willReturn(true); - } - - $this->accountManager->expects($this->once())->method('updateUser') - ->with($user, $data); - - $this->invokePrivate($controller, 'saveUserSettings', [$user, $data]); - } - - public function dataTestSaveUserSettings() { - return [ - [ - [ - AccountManager::PROPERTY_EMAIL => ['value' => 'john@example.com'], - AccountManager::PROPERTY_DISPLAYNAME => ['value' => 'john doe'], - ], - 'john@example.com', - 'john doe' - ], - [ - [ - AccountManager::PROPERTY_EMAIL => ['value' => 'john@example.com'], - AccountManager::PROPERTY_DISPLAYNAME => ['value' => 'john doe'], - ], - 'johnNew@example.com', - 'john New doe' - ], - [ - [ - AccountManager::PROPERTY_EMAIL => ['value' => 'john@example.com'], - AccountManager::PROPERTY_DISPLAYNAME => ['value' => 'john doe'], - ], - 'johnNew@example.com', - 'john doe' - ], - [ - [ - AccountManager::PROPERTY_EMAIL => ['value' => 'john@example.com'], - AccountManager::PROPERTY_DISPLAYNAME => ['value' => 'john doe'], - ], - 'john@example.com', - 'john New doe' - ], - [ - [ - AccountManager::PROPERTY_EMAIL => ['value' => ''], - AccountManager::PROPERTY_DISPLAYNAME => ['value' => 'john doe'], - ], - null, - 'john New doe' - ], - [ - [ - AccountManager::PROPERTY_EMAIL => ['value' => 'john@example.com'], - AccountManager::PROPERTY_DISPLAYNAME => ['value' => 'john doe'], - ], - 'john@example.com', - null - ], - - ]; - } - - /** - * @dataProvider dataTestSaveUserSettingsException - * - * @param array $data - * @param string $oldEmailAddress - * @param string $oldDisplayName - * @param bool $setDisplayNameResult - * @param bool $canChangeEmail - * - * @expectedException \OC\ForbiddenException - */ - public function testSaveUserSettingsException($data, - $oldEmailAddress, - $oldDisplayName, - $setDisplayNameResult, - $canChangeEmail - ) { - $controller = $this->getController(); - $user = $this->createMock(IUser::class); - - $user->method('getDisplayName')->willReturn($oldDisplayName); - $user->method('getEMailAddress')->willReturn($oldEmailAddress); - - if ($data[AccountManager::PROPERTY_EMAIL]['value'] !== $oldEmailAddress) { - $user->method('canChangeDisplayName') - ->willReturn($canChangeEmail); - } - - if ($data[AccountManager::PROPERTY_DISPLAYNAME]['value'] !== $oldDisplayName) { - $user->method('setDisplayName') - ->with($data[AccountManager::PROPERTY_DISPLAYNAME]['value']) - ->willReturn($setDisplayNameResult); - } - - $this->invokePrivate($controller, 'saveUserSettings', [$user, $data]); - } - - - public function dataTestSaveUserSettingsException() { - return [ - [ - [ - AccountManager::PROPERTY_EMAIL => ['value' => 'john@example.com'], - AccountManager::PROPERTY_DISPLAYNAME => ['value' => 'john doe'], - ], - 'johnNew@example.com', - 'john New doe', - true, - false - ], - [ - [ - AccountManager::PROPERTY_EMAIL => ['value' => 'john@example.com'], - AccountManager::PROPERTY_DISPLAYNAME => ['value' => 'john doe'], - ], - 'johnNew@example.com', - 'john New doe', - false, - true - ], - [ - [ - AccountManager::PROPERTY_EMAIL => ['value' => 'john@example.com'], - AccountManager::PROPERTY_DISPLAYNAME => ['value' => 'john doe'], - ], - 'johnNew@example.com', - 'john New doe', - false, - false - ], - - ]; - } - - /** - * @param string $account - * @param string $type - * @param array $dataBefore - * @param array $expectedData - * - * @dataProvider dataTestGetVerificationCode - */ - public function testGetVerificationCode($account, $type, $dataBefore, $expectedData, $onlyVerificationCode) { - - $message = 'Use my Federated Cloud ID to share with me: user@nextcloud.com'; - $signature = 'theSignature'; - - $code = $message . ' ' . $signature; - if($type === AccountManager::PROPERTY_TWITTER) { - $code = $message . ' ' . md5($signature); - } - - $controller = $this->getController(false, ['signMessage', 'getCurrentTime']); - - $user = $this->createMock(IUser::class); - $this->userSession->expects($this->once())->method('getUser')->willReturn($user); - $this->accountManager->expects($this->once())->method('getUser')->with($user)->willReturn($dataBefore); - $user->expects($this->any())->method('getCloudId')->willReturn('user@nextcloud.com'); - $user->expects($this->any())->method('getUID')->willReturn('uid'); - $controller->expects($this->once())->method('signMessage')->with($user, $message)->willReturn($signature); - $controller->expects($this->any())->method('getCurrentTime')->willReturn(1234567); - - if ($onlyVerificationCode === false) { - $this->accountManager->expects($this->once())->method('updateUser')->with($user, $expectedData); - $this->jobList->expects($this->once())->method('add') - ->with('OC\Settings\BackgroundJobs\VerifyUserData', - [ - 'verificationCode' => $code, - 'data' => $dataBefore[$type]['value'], - 'type' => $type, - 'uid' => 'uid', - 'try' => 0, - 'lastRun' => 1234567 - ]); - } - - $result = $controller->getVerificationCode($account, $onlyVerificationCode); - - $data = $result->getData(); - $this->assertSame(Http::STATUS_OK, $result->getStatus()); - $this->assertSame($code, $data['code']); - } - - public function dataTestGetVerificationCode() { - - $accountDataBefore = [ - AccountManager::PROPERTY_WEBSITE => ['value' => 'https://nextcloud.com', 'verified' => AccountManager::NOT_VERIFIED], - AccountManager::PROPERTY_TWITTER => ['value' => '@nextclouders', 'verified' => AccountManager::NOT_VERIFIED, 'signature' => 'theSignature'], - ]; - - $accountDataAfterWebsite = [ - AccountManager::PROPERTY_WEBSITE => ['value' => 'https://nextcloud.com', 'verified' => AccountManager::VERIFICATION_IN_PROGRESS, 'signature' => 'theSignature'], - AccountManager::PROPERTY_TWITTER => ['value' => '@nextclouders', 'verified' => AccountManager::NOT_VERIFIED, 'signature' => 'theSignature'], - ]; - - $accountDataAfterTwitter = [ - AccountManager::PROPERTY_WEBSITE => ['value' => 'https://nextcloud.com', 'verified' => AccountManager::NOT_VERIFIED], - AccountManager::PROPERTY_TWITTER => ['value' => '@nextclouders', 'verified' => AccountManager::VERIFICATION_IN_PROGRESS, 'signature' => 'theSignature'], - ]; - - return [ - ['verify-twitter', AccountManager::PROPERTY_TWITTER, $accountDataBefore, $accountDataAfterTwitter, false], - ['verify-website', AccountManager::PROPERTY_WEBSITE, $accountDataBefore, $accountDataAfterWebsite, false], - ['verify-twitter', AccountManager::PROPERTY_TWITTER, $accountDataBefore, $accountDataAfterTwitter, true], - ['verify-website', AccountManager::PROPERTY_WEBSITE, $accountDataBefore, $accountDataAfterWebsite, true], - ]; - } - - /** - * test get verification code in case no valid user was given - */ - public function testGetVerificationCodeInvalidUser() { - - $controller = $this->getController(); - $this->userSession->expects($this->once())->method('getUser')->willReturn(null); - $result = $controller->getVerificationCode('account', false); - - $this->assertSame(Http::STATUS_BAD_REQUEST, $result->getStatus()); - } - - /** - * @dataProvider dataTestCanAdminChangeUserPasswords - * - * @param bool $encryptionEnabled - * @param bool $encryptionModuleLoaded - * @param bool $masterKeyEnabled - * @param bool $expected - */ - public function testCanAdminChangeUserPasswords($encryptionEnabled, - $encryptionModuleLoaded, - $masterKeyEnabled, - $expected) { - $controller = $this->getController(); - - $this->encryptionManager->expects($this->any()) - ->method('isEnabled') - ->willReturn($encryptionEnabled); - $this->encryptionManager->expects($this->any()) - ->method('getEncryptionModule') - ->willReturnCallback(function() use ($encryptionModuleLoaded) { - if ($encryptionModuleLoaded) return $this->encryptionModule; - else throw new ModuleDoesNotExistsException(); - }); - $this->encryptionModule->expects($this->any()) - ->method('needDetailedAccessList') - ->willReturn(!$masterKeyEnabled); - - $result = $this->invokePrivate($controller, 'canAdminChangeUserPasswords', []); - $this->assertSame($expected, $result); - } - - public function dataTestCanAdminChangeUserPasswords() { - return [ - // encryptionEnabled, encryptionModuleLoaded, masterKeyEnabled, expectedResult - [true, true, true, true], - [false, true, true, true], - [true, false, true, false], - [false, false, true, true], - [true, true, false, false], - [false, true, false, false], - [true, false, false, false], - [false, false, false, true], - ]; - } - -} diff --git a/tests/Settings/Mailer/NewUserMailHelperTest.php b/tests/Settings/Mailer/NewUserMailHelperTest.php deleted file mode 100644 index 0e7bc395f2a..00000000000 --- a/tests/Settings/Mailer/NewUserMailHelperTest.php +++ /dev/null @@ -1,881 +0,0 @@ - - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - -namespace Tests\Settings\Mailer; - -use OC\Mail\EMailTemplate; -use OCP\L10N\IFactory; -use OCP\Mail\IEMailTemplate; -use OC\Mail\Message; -use OC\Settings\Mailer\NewUserMailHelper; -use OCP\AppFramework\Utility\ITimeFactory; -use OCP\Defaults; -use OCP\IConfig; -use OCP\IL10N; -use OCP\IURLGenerator; -use OCP\IUser; -use OCP\Mail\IMailer; -use OCP\Security\ICrypto; -use OCP\Security\ISecureRandom; -use Test\TestCase; - -class NewUserMailHelperTest extends TestCase { - /** @var Defaults|\PHPUnit_Framework_MockObject_MockObject */ - private $defaults; - /** @var IURLGenerator|\PHPUnit_Framework_MockObject_MockObject */ - private $urlGenerator; - /** @var IL10N|\PHPUnit_Framework_MockObject_MockObject */ - private $l10n; - /** @var IMailer|\PHPUnit_Framework_MockObject_MockObject */ - private $mailer; - /** @var ISecureRandom|\PHPUnit_Framework_MockObject_MockObject */ - private $secureRandom; - /** @var ITimeFactory|\PHPUnit_Framework_MockObject_MockObject */ - private $timeFactory; - /** @var IConfig|\PHPUnit_Framework_MockObject_MockObject */ - private $config; - /** @var ICrypto|\PHPUnit_Framework_MockObject_MockObject */ - private $crypto; - /** @var NewUserMailHelper */ - private $newUserMailHelper; - - public function setUp() { - parent::setUp(); - - $this->defaults = $this->createMock(Defaults::class); - $this->defaults->method('getLogo') - ->willReturn('myLogo'); - $this->urlGenerator = $this->createMock(IURLGenerator::class); - $this->l10n = $this->createMock(IL10N::class); - $this->l10nFactory = $this->createMock(IFactory::class); - $this->mailer = $this->createMock(IMailer::class); - $template = new EMailTemplate( - $this->defaults, - $this->urlGenerator, - $this->l10n, - 'test.TestTemplate', - [] - ); - $this->mailer->method('createEMailTemplate') - ->will($this->returnValue($template)); - $this->secureRandom = $this->createMock(ISecureRandom::class); - $this->timeFactory = $this->createMock(ITimeFactory::class); - $this->config = $this->createMock(IConfig::class); - $this->config - ->expects($this->any()) - ->method('getSystemValue') - ->willReturnCallback(function($arg) { - switch ($arg) { - case 'secret': - return 'MyInstanceWideSecret'; - case 'customclient_desktop': - return 'https://nextcloud.com/install/#install-clients'; - } - return ''; - }); - $this->crypto = $this->createMock(ICrypto::class); - $this->l10n->method('t') - ->will($this->returnCallback(function ($text, $parameters = []) { - return vsprintf($text, $parameters); - })); - $this->l10nFactory->method('get') - ->will($this->returnCallback(function ($text, $lang) { - return $this->l10n; - })); - - $this->newUserMailHelper = new NewUserMailHelper( - $this->defaults, - $this->urlGenerator, - $this->l10nFactory, - $this->mailer, - $this->secureRandom, - $this->timeFactory, - $this->config, - $this->crypto, - 'no-reply@nextcloud.com' - ); - } - - public function testGenerateTemplateWithPasswordResetToken() { - $this->secureRandom - ->expects($this->once()) - ->method('generate') - ->with(21, - ISecureRandom::CHAR_DIGITS . - ISecureRandom::CHAR_LOWER . - ISecureRandom::CHAR_UPPER - ) - ->willReturn('MySuperLongSecureRandomToken'); - $this->timeFactory - ->expects($this->once()) - ->method('getTime') - ->willReturn('12345'); - /** @var IUser|\PHPUnit_Framework_MockObject_MockObject $user */ - $user = $this->createMock(IUser::class); - $user - ->expects($this->any()) - ->method('getEmailAddress') - ->willReturn('recipient@example.com'); - $this->crypto - ->expects($this->once()) - ->method('encrypt') - ->with('12345:MySuperLongSecureRandomToken', 'recipient@example.comMyInstanceWideSecret') - ->willReturn('TokenCiphertext'); - $user - ->expects($this->any()) - ->method('getUID') - ->willReturn('john'); - $this->config - ->expects($this->once()) - ->method('setUserValue') - ->with('john', 'core', 'lostpassword', 'TokenCiphertext'); - $this->urlGenerator - ->expects($this->at(0)) - ->method('linkToRouteAbsolute') - ->with('core.lost.resetform', ['userId' => 'john', 'token' => 'MySuperLongSecureRandomToken']) - ->willReturn('https://example.com/resetPassword/MySuperLongSecureRandomToken'); - $user - ->expects($this->any()) - ->method('getDisplayName') - ->willReturn('john'); - $user - ->expects($this->at(5)) - ->method('getUID') - ->willReturn('john'); - $this->defaults - ->expects($this->any()) - ->method('getName') - ->willReturn('TestCloud'); - $this->defaults - ->expects($this->any()) - ->method('getTextColorPrimary') - ->willReturn('#ffffff'); - - $expectedHtmlBody = << - - - - - - - - - - - - - -
    -
    - - - -
    - - - - - - -
    - - - -
    - -
    - - -
    -
    -
    - - - - - - -
     
    - - - - - -
    -

    Welcome aboard

    -
    - - - - - - -
     
    - - - -
    - - - - - - -
    - - - - - - -
     
    - - - - - -
    - - - - - -
    -

    Welcome to your TestCloud account, you can add, protect, and share your data.

    -
    -
    - - - - - -
    - - - - - -
    -

    Your username is: john

    -
    -
    - - - - - -
     
    - - - - - - -
    - - - - - -
    -
    - - - - -
    - - - - -
    - Set your password -
    -
    - - - - -
    - - - - -
    - Install Client -
    -
    -
    -
    -
    -
    -
    - - - - - -
     
    - - - - -
    -
    - -
                                                               
    - - -EOF; - $expectedTextBody = <<newUserMailHelper->generateTemplate($user, true); - $this->assertEquals($expectedHtmlBody, $result->renderHtml()); - $this->assertEquals($expectedTextBody, $result->renderText()); - $this->assertSame('OC\Mail\EMailTemplate', get_class($result)); - } - - public function testGenerateTemplateWithoutPasswordResetToken() { - $this->urlGenerator - ->expects($this->at(0)) - ->method('getAbsoluteURL') - ->with('/') - ->willReturn('https://example.com/'); - - /** @var IUser|\PHPUnit_Framework_MockObject_MockObject $user */ - $user = $this->createMock(IUser::class); - $user - ->expects($this->any()) - ->method('getDisplayName') - ->willReturn('John Doe'); - $user - ->expects($this->any()) - ->method('getUID') - ->willReturn('john'); - $this->defaults - ->expects($this->any()) - ->method('getName') - ->willReturn('TestCloud'); - $this->defaults - ->expects($this->any()) - ->method('getTextColorPrimary') - ->willReturn('#ffffff'); - - $expectedHtmlBody = << - - - - - - - - - - - - - -
    -
    - - - -
    - - - - - - -
    - - - -
    - -
    - - -
    -
    -
    - - - - - - -
     
    - - - - - -
    -

    Welcome aboard John Doe

    -
    - - - - - - -
     
    - - - -
    - - - - - - -
    - - - - - - -
     
    - - - - - -
    - - - - - -
    -

    Welcome to your TestCloud account, you can add, protect, and share your data.

    -
    -
    - - - - - -
    - - - - - -
    -

    Your username is: john

    -
    -
    - - - - - -
     
    - - - - - - -
    - - - - - -
    -
    - - - - -
    - - - - -
    - Go to TestCloud -
    -
    - - - - -
    - - - - -
    - Install Client -
    -
    -
    -
    -
    -
    -
    - - - - - -
     
    - - - - -
    -
    - -
                                                               
    - - -EOF; - $expectedTextBody = <<newUserMailHelper->generateTemplate($user, false); - $this->assertEquals($expectedHtmlBody, $result->renderHtml()); - $this->assertEquals($expectedTextBody, $result->renderText()); - $this->assertSame('OC\Mail\EMailTemplate', get_class($result)); - } - - public function testGenerateTemplateWithoutUserId() { - $this->urlGenerator - ->expects($this->at(0)) - ->method('getAbsoluteURL') - ->with('/') - ->willReturn('https://example.com/'); - - /** @var IUser|\PHPUnit_Framework_MockObject_MockObject $user */ - $user = $this->createMock(IUser::class); - $user - ->expects($this->any()) - ->method('getDisplayName') - ->willReturn('John Doe'); - $user - ->expects($this->any()) - ->method('getUID') - ->willReturn('john'); - $user - ->expects($this->atLeastOnce()) - ->method('getBackendClassName') - ->willReturn('LDAP'); - $this->defaults - ->expects($this->any()) - ->method('getName') - ->willReturn('TestCloud'); - $this->defaults - ->expects($this->any()) - ->method('getTextColorPrimary') - ->willReturn('#ffffff'); - - $expectedHtmlBody = << - - - - - - - - - - - - - -
    -
    - - - -
    - - - - - - -
    - - - -
    - -
    - - -
    -
    -
    - - - - - - -
     
    - - - - - -
    -

    Welcome aboard John Doe

    -
    - - - - - - -
     
    - - - -
    - - - - - - -
    - - - - - - -
     
    - - - - - -
    - - - - - -
    -

    Welcome to your TestCloud account, you can add, protect, and share your data.

    -
    -
    - - - - - -
     
    - - - - - - -
    - - - - - -
    -
    - - - - -
    - - - - -
    - Go to TestCloud -
    -
    - - - - -
    - - - - -
    - Install Client -
    -
    -
    -
    -
    -
    -
    - - - - - -
     
    - - - - -
    -
    - -
                                                               
    - - -EOF; - $expectedTextBody = <<newUserMailHelper->generateTemplate($user, false); - $this->assertEquals($expectedHtmlBody, $result->renderHtml()); - $this->assertEquals($expectedTextBody, $result->renderText()); - $this->assertSame('OC\Mail\EMailTemplate', get_class($result)); - } - - public function testSendMail() { - /** @var IUser|\PHPUnit_Framework_MockObject_MockObject $user */ - $user = $this->createMock(IUser::class); - $user - ->expects($this->at(0)) - ->method('getEMailAddress') - ->willReturn('recipient@example.com'); - $user - ->expects($this->at(1)) - ->method('getDisplayName') - ->willReturn('John Doe'); - /** @var IEMailTemplate|\PHPUnit_Framework_MockObject_MockObject $emailTemplate */ - $emailTemplate = $this->createMock(IEMailTemplate::class); - $message = $this->createMock(Message::class); - $message - ->expects($this->at(0)) - ->method('setTo') - ->with(['recipient@example.com' => 'John Doe']); - $message - ->expects($this->at(1)) - ->method('setFrom') - ->with(['no-reply@nextcloud.com' => 'TestCloud']); - $message - ->expects($this->at(2)) - ->method('useTemplate') - ->with($emailTemplate); - $this->defaults - ->expects($this->exactly(1)) - ->method('getName') - ->willReturn('TestCloud'); - $this->mailer - ->expects($this->once()) - ->method('createMessage') - ->willReturn($message); - - $this->newUserMailHelper->sendMail($user, $emailTemplate); - } -} diff --git a/tests/Settings/Middleware/SubadminMiddlewareTest.php b/tests/Settings/Middleware/SubadminMiddlewareTest.php deleted file mode 100644 index b464b595ab7..00000000000 --- a/tests/Settings/Middleware/SubadminMiddlewareTest.php +++ /dev/null @@ -1,104 +0,0 @@ -reflector = $this->getMockBuilder(ControllerMethodReflector::class) - ->disableOriginalConstructor()->getMock(); - $this->controller = $this->getMockBuilder(Controller::class) - ->disableOriginalConstructor()->getMock(); - $this->l10n = $this->createMock(IL10N::class); - - $this->subadminMiddlewareAsSubAdmin = new SubadminMiddleware($this->reflector, true, $this->l10n); - $this->subadminMiddleware = new SubadminMiddleware($this->reflector, false, $this->l10n); - } - - /** - * @expectedException \OC\AppFramework\Middleware\Security\Exceptions\NotAdminException - */ - public function testBeforeControllerAsUserWithExemption() { - $this->reflector - ->expects($this->once()) - ->method('hasAnnotation') - ->with('NoSubadminRequired') - ->will($this->returnValue(false)); - $this->subadminMiddleware->beforeController($this->controller, 'foo'); - } - - - public function testBeforeControllerAsUserWithoutExemption() { - $this->reflector - ->expects($this->once()) - ->method('hasAnnotation') - ->with('NoSubadminRequired') - ->will($this->returnValue(true)); - $this->subadminMiddleware->beforeController($this->controller, 'foo'); - } - - public function testBeforeControllerAsSubAdminWithoutExemption() { - $this->reflector - ->expects($this->once()) - ->method('hasAnnotation') - ->with('NoSubadminRequired') - ->will($this->returnValue(false)); - $this->subadminMiddlewareAsSubAdmin->beforeController($this->controller, 'foo'); - } - - public function testBeforeControllerAsSubAdminWithExemption() { - $this->reflector - ->expects($this->once()) - ->method('hasAnnotation') - ->with('NoSubadminRequired') - ->will($this->returnValue(true)); - $this->subadminMiddlewareAsSubAdmin->beforeController($this->controller, 'foo'); - } - - public function testAfterNotAdminException() { - $expectedResponse = new TemplateResponse('core', '403', array(), 'guest'); - $expectedResponse->setStatus(403); - $this->assertEquals($expectedResponse, $this->subadminMiddleware->afterException($this->controller, 'foo', new NotAdminException(''))); - } - - /** - * @expectedException \Exception - */ - public function testAfterRegularException() { - $expectedResponse = new TemplateResponse('core', '403', array(), 'guest'); - $expectedResponse->setStatus(403); - $this->subadminMiddleware->afterException($this->controller, 'foo', new \Exception()); - } -} diff --git a/tests/Settings/Personal/Security/AuthtokensTest.php b/tests/Settings/Personal/Security/AuthtokensTest.php deleted file mode 100644 index f833d1f6ef4..00000000000 --- a/tests/Settings/Personal/Security/AuthtokensTest.php +++ /dev/null @@ -1,124 +0,0 @@ - - * - * @author 2019 Christoph Wurst - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -namespace Test\Settings\Personal\Security; - -use OC\Authentication\Token\DefaultToken; -use OC\Authentication\Token\IProvider as IAuthTokenProvider; -use OC\Settings\Personal\Security; -use OC\Settings\Personal\Security\Authtokens; -use OCP\AppFramework\Http\TemplateResponse; -use OCP\IInitialStateService; -use OCP\ISession; -use PHPUnit\Framework\MockObject\MockObject; -use Test\TestCase; - -class AuthtokensTest extends TestCase { - - /** @var IAuthTokenProvider|MockObject */ - private $authTokenProvider; - - /** @var ISession|MockObject */ - private $session; - - /** @var IInitialStateService|MockObject */ - private $initialStateService; - - /** @var string */ - private $uid; - - /** @var Security\Authtokens */ - private $section; - - public function setUp() { - parent::setUp(); - - $this->authTokenProvider = $this->createMock(IAuthTokenProvider::class); - $this->session = $this->createMock(ISession::class); - $this->initialStateService = $this->createMock(IInitialStateService::class); - $this->uid = 'test123'; - - $this->section = new Authtokens( - $this->authTokenProvider, - $this->session, - $this->initialStateService, - $this->uid - ); - } - - public function testGetForm() { - $token1 = new DefaultToken(); - $token1->setId(100); - $token2 = new DefaultToken(); - $token2->setId(200); - $tokens = [ - $token1, - $token2, - ]; - $sessionToken = new DefaultToken(); - $sessionToken->setId(100); - - $this->authTokenProvider->expects($this->once()) - ->method('getTokenByUser') - ->with($this->uid) - ->willReturn($tokens); - $this->session->expects($this->once()) - ->method('getId') - ->willReturn('session123'); - $this->authTokenProvider->expects($this->once()) - ->method('getToken') - ->with('session123') - ->willReturn($sessionToken); - $this->initialStateService->expects($this->once()) - ->method('provideInitialState') - ->with('settings', 'app_tokens', [ - [ - 'id' => 100, - 'name' => null, - 'lastActivity' => 0, - 'type' => 0, - 'canDelete' => false, - 'current' => true, - 'scope' => ['filesystem' => true], - 'canRename' => false, - ], - [ - 'id' => 200, - 'name' => null, - 'lastActivity' => 0, - 'type' => 0, - 'canDelete' => true, - 'scope' => ['filesystem' => true], - 'canRename' => true, - ], - ]); - - $form = $this->section->getForm(); - - $expected = new TemplateResponse('settings', 'settings/personal/security/authtokens'); - $this->assertEquals($expected, $form); - } - -} diff --git a/tests/lib/App/AppManagerTest.php b/tests/lib/App/AppManagerTest.php index 371c2373f81..0e3410b8f20 100644 --- a/tests/lib/App/AppManagerTest.php +++ b/tests/lib/App/AppManagerTest.php @@ -385,6 +385,7 @@ class AppManagerTest extends TestCase { 'lookup_server_connector', 'oauth2', 'provisioning_api', + 'settings', 'test1', 'test3', 'twofactor_backupcodes', @@ -412,6 +413,7 @@ class AppManagerTest extends TestCase { 'lookup_server_connector', 'oauth2', 'provisioning_api', + 'settings', 'test1', 'test3', 'twofactor_backupcodes', @@ -439,6 +441,7 @@ class AppManagerTest extends TestCase { 'test3' => ['id' => 'test3', 'version' => '1.2.4', 'requiremin' => '9.0.0'], 'test4' => ['id' => 'test4', 'version' => '3.0.0', 'requiremin' => '8.1.0'], 'testnoversion' => ['id' => 'testnoversion', 'requiremin' => '8.2.0'], + 'settings' => ['id' => 'settings'], 'twofactor_backupcodes' => ['id' => 'twofactor_backupcodes'], 'workflowengine' => ['id' => 'workflowengine'], 'oauth2' => ['id' => 'oauth2'], @@ -485,6 +488,7 @@ class AppManagerTest extends TestCase { 'test1' => ['id' => 'test1', 'version' => '1.0.1', 'requiremax' => '8.0.0'], 'test2' => ['id' => 'test2', 'version' => '1.0.0', 'requiremin' => '8.2.0'], 'test3' => ['id' => 'test3', 'version' => '1.2.4', 'requiremin' => '9.0.0'], + 'settings' => ['id' => 'settings'], 'testnoversion' => ['id' => 'testnoversion', 'requiremin' => '8.2.0'], 'twofactor_backupcodes' => ['id' => 'twofactor_backupcodes'], 'workflowengine' => ['id' => 'workflowengine'], @@ -528,6 +532,7 @@ class AppManagerTest extends TestCase { 'lookup_server_connector', 'oauth2', 'provisioning_api', + 'settings', 'test1', 'test3', 'twofactor_backupcodes', diff --git a/tests/lib/AppFramework/AppTest.php b/tests/lib/AppFramework/AppTest.php index 3917cea68dd..b9c0f47216a 100644 --- a/tests/lib/AppFramework/AppTest.php +++ b/tests/lib/AppFramework/AppTest.php @@ -202,7 +202,7 @@ class AppTest extends \Test\TestCase { public function testSettingsApp() { $this->container['AppName'] = 'settings'; - $this->container['OC\Settings\Controller\Foo'] = $this->controller; + $this->container['OCA\Settings\Controller\Foo'] = $this->controller; $return = ['HTTP/2.0 200 OK', [], [], null, new Response()]; $this->dispatcher->expects($this->once()) diff --git a/tests/lib/AppTest.php b/tests/lib/AppTest.php index 954ffcfae7f..0848f307230 100644 --- a/tests/lib/AppTest.php +++ b/tests/lib/AppTest.php @@ -344,6 +344,7 @@ class AppTest extends \Test\TestCase { 'lookup_server_connector', 'oauth2', 'provisioning_api', + 'settings', 'twofactor_backupcodes', 'workflowengine', ), @@ -364,6 +365,7 @@ class AppTest extends \Test\TestCase { 'lookup_server_connector', 'oauth2', 'provisioning_api', + 'settings', 'twofactor_backupcodes', 'workflowengine', ), @@ -385,6 +387,7 @@ class AppTest extends \Test\TestCase { 'lookup_server_connector', 'oauth2', 'provisioning_api', + 'settings', 'twofactor_backupcodes', 'workflowengine', ), @@ -406,6 +409,7 @@ class AppTest extends \Test\TestCase { 'lookup_server_connector', 'oauth2', 'provisioning_api', + 'settings', 'twofactor_backupcodes', 'workflowengine', ), @@ -427,6 +431,7 @@ class AppTest extends \Test\TestCase { 'lookup_server_connector', 'oauth2', 'provisioning_api', + 'settings', 'twofactor_backupcodes', 'workflowengine', ), @@ -506,11 +511,11 @@ class AppTest extends \Test\TestCase { ); $apps = \OC_App::getEnabledApps(); - $this->assertEquals(array('files', 'app3', 'cloud_federation_api', 'dav', 'federatedfilesharing', 'lookup_server_connector', 'oauth2', 'provisioning_api', 'twofactor_backupcodes', 'workflowengine'), $apps); + $this->assertEquals(array('files', 'app3', 'cloud_federation_api', 'dav', 'federatedfilesharing', 'lookup_server_connector', 'oauth2', 'provisioning_api', 'settings', 'twofactor_backupcodes', 'workflowengine'), $apps); // mock should not be called again here $apps = \OC_App::getEnabledApps(); - $this->assertEquals(array('files', 'app3', 'cloud_federation_api', 'dav', 'federatedfilesharing', 'lookup_server_connector', 'oauth2', 'provisioning_api', 'twofactor_backupcodes', 'workflowengine'), $apps); + $this->assertEquals(array('files', 'app3', 'cloud_federation_api', 'dav', 'federatedfilesharing', 'lookup_server_connector', 'oauth2', 'provisioning_api', 'settings', 'twofactor_backupcodes', 'workflowengine'), $apps); $this->restoreAppConfig(); \OC_User::setUserId(null); diff --git a/tests/lib/InfoXmlTest.php b/tests/lib/InfoXmlTest.php index 3d740cd39dd..0d528dbb652 100644 --- a/tests/lib/InfoXmlTest.php +++ b/tests/lib/InfoXmlTest.php @@ -46,6 +46,7 @@ class InfoXmlTest extends TestCase { ['provisioning_api'], ['systemtags'], ['theming'], + ['settings'], ['twofactor_backupcodes'], ['updatenotification'], ['user_ldap'], diff --git a/tests/lib/L10N/FactoryTest.php b/tests/lib/L10N/FactoryTest.php index be842cf12c7..6b9bd053568 100644 --- a/tests/lib/L10N/FactoryTest.php +++ b/tests/lib/L10N/FactoryTest.php @@ -441,7 +441,7 @@ class FactoryTest extends TestCase { [null, 'de', [\OC::$SERVERROOT . '/core/l10n/de.json']], ['core', 'ru', [\OC::$SERVERROOT . '/core/l10n/ru.json']], ['lib', 'ru', [\OC::$SERVERROOT . '/lib/l10n/ru.json']], - ['settings', 'de', [\OC::$SERVERROOT . '/settings/l10n/de.json']], + ['settings', 'de', [\OC::$SERVERROOT . '/apps/settings/l10n/de.json']], ['files', 'de', [\OC::$SERVERROOT . '/apps/files/l10n/de.json']], ['files', '_lang_never_exists_', []], ['_app_never_exists_', 'de', [\OC::$SERVERROOT . '/core/l10n/de.json']], @@ -464,7 +464,7 @@ class FactoryTest extends TestCase { [null, \OC::$SERVERROOT . '/core/l10n/'], ['core', \OC::$SERVERROOT . '/core/l10n/'], ['lib', \OC::$SERVERROOT . '/lib/l10n/'], - ['settings', \OC::$SERVERROOT . '/settings/l10n/'], + ['settings', \OC::$SERVERROOT . '/apps/settings/l10n/'], ['files', \OC::$SERVERROOT . '/apps/files/l10n/'], ['_app_never_exists_', \OC::$SERVERROOT . '/core/l10n/'], ]; diff --git a/tests/lib/Settings/Admin/MailTest.php b/tests/lib/Settings/Admin/MailTest.php deleted file mode 100644 index 1a1d090418e..00000000000 --- a/tests/lib/Settings/Admin/MailTest.php +++ /dev/null @@ -1,134 +0,0 @@ - - * - * @author Lukas Reschke - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - -namespace Test\Settings\Admin; - -use OC\Settings\Admin\Additional; -use OC\Settings\Admin\Mail; -use OCP\AppFramework\Http\TemplateResponse; -use OCP\IConfig; -use Test\TestCase; - -class MailTest extends TestCase { - /** @var Additional */ - private $admin; - /** @var IConfig */ - private $config; - - public function setUp() { - parent::setUp(); - $this->config = $this->getMockBuilder(IConfig::class)->getMock(); - - $this->admin = new Mail( - $this->config - ); - } - - public function testGetForm() { - $this->config - ->expects($this->at(0)) - ->method('getSystemValue') - ->with('mail_domain', '') - ->willReturn('mx.nextcloud.com'); - $this->config - ->expects($this->at(1)) - ->method('getSystemValue') - ->with('mail_from_address', '') - ->willReturn('no-reply@nextcloud.com'); - $this->config - ->expects($this->at(2)) - ->method('getSystemValue') - ->with('mail_smtpmode', '') - ->willReturn('smtp'); - $this->config - ->expects($this->at(3)) - ->method('getSystemValue') - ->with('mail_smtpsecure', '') - ->willReturn(true); - $this->config - ->expects($this->at(4)) - ->method('getSystemValue') - ->with('mail_smtphost', '') - ->willReturn('smtp.nextcloud.com'); - $this->config - ->expects($this->at(5)) - ->method('getSystemValue') - ->with('mail_smtpport', '') - ->willReturn(25); - $this->config - ->expects($this->at(6)) - ->method('getSystemValue') - ->with('mail_smtpauthtype', '') - ->willReturn('login'); - $this->config - ->expects($this->at(7)) - ->method('getSystemValue') - ->with('mail_smtpauth', false) - ->willReturn(true); - $this->config - ->expects($this->at(8)) - ->method('getSystemValue') - ->with('mail_smtpname', '') - ->willReturn('smtp.sender.com'); - $this->config - ->expects($this->at(9)) - ->method('getSystemValue') - ->with('mail_smtppassword', '') - ->willReturn('mypassword'); - $this->config - ->expects($this->at(10)) - ->method('getSystemValue') - ->with('mail_sendmailmode', 'smtp') - ->willReturn('smtp'); - - $expected = new TemplateResponse( - 'settings', - 'settings/admin/additional-mail', - [ - 'sendmail_is_available' => (bool) \OC_Helper::findBinaryPath('sendmail'), - 'mail_domain' => 'mx.nextcloud.com', - 'mail_from_address' => 'no-reply@nextcloud.com', - 'mail_smtpmode' => 'smtp', - 'mail_smtpsecure' => true, - 'mail_smtphost' => 'smtp.nextcloud.com', - 'mail_smtpport' => 25, - 'mail_smtpauthtype' => 'login', - 'mail_smtpauth' => true, - 'mail_smtpname' => 'smtp.sender.com', - 'mail_smtppassword' => '********', - 'mail_sendmailmode' => 'smtp', - ], - '' - ); - - $this->assertEquals($expected, $this->admin->getForm()); - } - - public function testGetSection() { - $this->assertSame('server', $this->admin->getSection()); - } - - public function testGetPriority() { - $this->assertSame(10, $this->admin->getPriority()); - } -} diff --git a/tests/lib/Settings/Admin/SecurityTest.php b/tests/lib/Settings/Admin/SecurityTest.php deleted file mode 100644 index 6a9d84bd40d..00000000000 --- a/tests/lib/Settings/Admin/SecurityTest.php +++ /dev/null @@ -1,149 +0,0 @@ - - * - * @author Lukas Reschke - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - -namespace Test\Settings\Admin; - -use OC\Authentication\TwoFactorAuth\MandatoryTwoFactor; -use OC\Encryption\Manager; -use OC\Settings\Admin\Security; -use OCP\AppFramework\Http\TemplateResponse; -use OCP\IInitialStateService; -use OCP\IUserManager; -use PHPUnit\Framework\MockObject\MockObject; -use Test\TestCase; - -class SecurityTest extends TestCase { - /** @var Security */ - private $admin; - /** @var Manager */ - private $manager; - /** @var IUserManager */ - private $userManager; - /** @var MandatoryTwoFactor|MockObject */ - private $mandatoryTwoFactor; - /** @var IInitialStateService|MockObject */ - private $initialState; - - public function setUp() { - parent::setUp(); - $this->manager = $this->getMockBuilder('\OC\Encryption\Manager')->disableOriginalConstructor()->getMock(); - $this->userManager = $this->getMockBuilder(IUserManager::class)->getMock(); - $this->mandatoryTwoFactor = $this->createMock(MandatoryTwoFactor::class); - $this->initialState = $this->createMock(IInitialStateService::class); - - $this->admin = new Security( - $this->manager, - $this->userManager, - $this->mandatoryTwoFactor, - $this->initialState - ); - } - - /** - * @return array - */ - public function encryptionSettingsProvider() { - return [ - [true], - [false], - ]; - } - - /** - * @dataProvider encryptionSettingsProvider - * @param bool $enabled - */ - public function testGetFormWithOnlyOneBackend($enabled) { - $this->manager - ->expects($this->once()) - ->method('isEnabled') - ->willReturn($enabled); - $this->manager - ->expects($this->once()) - ->method('isReady') - ->willReturn($enabled); - $this->manager - ->expects($this->once()) - ->method('getEncryptionModules') - ->willReturn([]); - $this->userManager - ->expects($this->once()) - ->method('getBackends') - ->willReturn(['entry']); - $expected = new TemplateResponse( - 'settings', - 'settings/admin/security', - [ - 'encryptionEnabled' => $enabled, - 'encryptionReady' => $enabled, - 'externalBackendsEnabled' => false, - 'encryptionModules' => [] - ], - '' - ); - $this->assertEquals($expected, $this->admin->getForm()); - } - - /** - * @dataProvider encryptionSettingsProvider - * @param bool $enabled - */ - public function testGetFormWithMultipleBackends($enabled) { - $this->manager - ->expects($this->once()) - ->method('isEnabled') - ->willReturn($enabled); - $this->manager - ->expects($this->once()) - ->method('isReady') - ->willReturn($enabled); - $this->manager - ->expects($this->once()) - ->method('getEncryptionModules') - ->willReturn([]); - $this->userManager - ->expects($this->once()) - ->method('getBackends') - ->willReturn(['entry', 'entry']); - $expected = new TemplateResponse( - 'settings', - 'settings/admin/security', - [ - 'encryptionEnabled' => $enabled, - 'encryptionReady' => $enabled, - 'externalBackendsEnabled' => true, - 'encryptionModules' => [] - ], - '' - ); - $this->assertEquals($expected, $this->admin->getForm()); - } - - public function testGetSection() { - $this->assertSame('security', $this->admin->getSection()); - } - - public function testGetPriority() { - $this->assertSame(10, $this->admin->getPriority()); - } -} diff --git a/tests/lib/Settings/Admin/ServerTest.php b/tests/lib/Settings/Admin/ServerTest.php deleted file mode 100644 index adf8ef4f363..00000000000 --- a/tests/lib/Settings/Admin/ServerTest.php +++ /dev/null @@ -1,85 +0,0 @@ - - * - * @author Lukas Reschke - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - -namespace Test\Settings\Admin; - -use OC\Settings\Admin\Server; -use OCP\AppFramework\Http\TemplateResponse; -use OCP\IConfig; -use Test\TestCase; - -class ServerTest extends TestCase { - /** @var Server */ - private $admin; - /** @var IConfig */ - private $config; - - public function setUp() { - parent::setUp(); - $this->config = $this->createMock(IConfig::class); - - $this->admin = new Server( - $this->config - ); - } - - public function testGetForm() { - $this->config - ->expects($this->at(0)) - ->method('getAppValue') - ->with('core', 'backgroundjobs_mode', 'ajax') - ->willReturn('ajax'); - $this->config - ->expects($this->at(1)) - ->method('getAppValue') - ->with('core', 'lastcron', false) - ->willReturn(false); - $this->config - ->expects($this->at(2)) - ->method('getAppValue') - ->with('core', 'cronErrors') - ->willReturn(''); - $expected = new TemplateResponse( - 'settings', - 'settings/admin/server', - [ - 'backgroundjobs_mode' => 'ajax', - 'lastcron' => false, - 'cronErrors' => '', - 'cli_based_cron_possible' => true, - 'cli_based_cron_user' => function_exists('posix_getpwuid') ? posix_getpwuid(fileowner(\OC::$configDir . 'config.php'))['name'] : '', // to not explode here because of posix extension not being disabled - which is already checked in the line above - ], - '' - ); - - $this->assertEquals($expected, $this->admin->getForm()); - } - - public function testGetSection() { - $this->assertSame('server', $this->admin->getSection()); - } - - public function testGetPriority() { - $this->assertSame(0, $this->admin->getPriority()); - } -} diff --git a/tests/lib/Settings/Admin/SharingTest.php b/tests/lib/Settings/Admin/SharingTest.php deleted file mode 100644 index c40ff98a869..00000000000 --- a/tests/lib/Settings/Admin/SharingTest.php +++ /dev/null @@ -1,271 +0,0 @@ - - * - * @author Lukas Reschke - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - -namespace Test\Settings\Admin; - -use OC\Settings\Admin\Sharing; -use OCP\AppFramework\Http\TemplateResponse; -use OCP\Constants; -use OCP\IConfig; -use OCP\IL10N; -use OCP\L10N\IFactory; -use OCP\Share\IManager; -use Test\TestCase; - -class SharingTest extends TestCase { - /** @var Sharing */ - private $admin; - /** @var IConfig */ - private $config; - /** @var IL10N|\PHPUnit_Framework_MockObject_MockObject */ - private $l10n; - /** @var IManager|\PHPUnit_Framework_MockObject_MockObject */ - private $shareManager; - - public function setUp() { - parent::setUp(); - $this->config = $this->getMockBuilder(IConfig::class)->getMock(); - $this->l10n = $this->getMockBuilder(IL10N::class)->getMock(); - - $l10Factory = $this->createMock(IFactory::class); - $l10Factory->method('get') - ->willReturn($this->l10n); - - $this->shareManager = $this->getMockBuilder(IManager::class)->getMock(); - - $this->admin = new Sharing( - $this->config, - $l10Factory, - $this->shareManager - ); - } - - public function testGetFormWithoutExcludedGroups() { - $this->config - ->expects($this->at(0)) - ->method('getAppValue') - ->with('core', 'shareapi_exclude_groups_list', '') - ->willReturn(''); - $this->config - ->expects($this->at(1)) - ->method('getAppValue') - ->with('core', 'shareapi_allow_group_sharing', 'yes') - ->willReturn('yes'); - $this->config - ->expects($this->at(2)) - ->method('getAppValue') - ->with('core', 'shareapi_allow_links', 'yes') - ->willReturn('yes'); - $this->config - ->expects($this->at(3)) - ->method('getAppValue') - ->with('core', 'shareapi_allow_public_upload', 'yes') - ->willReturn('yes'); - $this->config - ->expects($this->at(4)) - ->method('getAppValue') - ->with('core', 'shareapi_allow_resharing', 'yes') - ->willReturn('yes'); - $this->config - ->expects($this->at(5)) - ->method('getAppValue') - ->with('core', 'shareapi_allow_share_dialog_user_enumeration', 'yes') - ->willReturn('yes'); - $this->config - ->expects($this->at(6)) - ->method('getAppValue') - ->with('core', 'shareapi_enabled', 'yes') - ->willReturn('yes'); - $this->config - ->expects($this->at(7)) - ->method('getAppValue') - ->with('core', 'shareapi_default_expire_date', 'no') - ->willReturn('no'); - $this->config - ->expects($this->at(8)) - ->method('getAppValue') - ->with('core', 'shareapi_expire_after_n_days', '7') - ->willReturn('7'); - $this->config - ->expects($this->at(9)) - ->method('getAppValue') - ->with('core', 'shareapi_enforce_expire_date', 'no') - ->willReturn('no'); - $this->config - ->expects($this->at(10)) - ->method('getAppValue') - ->with('core', 'shareapi_exclude_groups', 'no') - ->willReturn('no'); - $this->config - ->expects($this->at(11)) - ->method('getAppValue') - ->with('core', 'shareapi_public_link_disclaimertext', null) - ->willReturn('Lorem ipsum'); - $this->config - ->expects($this->at(12)) - ->method('getAppValue') - ->with('core', 'shareapi_enable_link_password_by_default', 'no') - ->willReturn('yes'); - $this->config - ->expects($this->at(13)) - ->method('getAppValue') - ->with('core', 'shareapi_default_permissions', Constants::PERMISSION_ALL) - ->willReturn(Constants::PERMISSION_ALL); - - $expected = new TemplateResponse( - 'settings', - 'settings/admin/sharing', - [ - 'allowGroupSharing' => 'yes', - 'allowLinks' => 'yes', - 'allowPublicUpload' => 'yes', - 'allowResharing' => 'yes', - 'allowShareDialogUserEnumeration' => 'yes', - 'enforceLinkPassword' => false, - 'onlyShareWithGroupMembers' => false, - 'shareAPIEnabled' => 'yes', - 'shareDefaultExpireDateSet' => 'no', - 'shareExpireAfterNDays' => '7', - 'shareEnforceExpireDate' => 'no', - 'shareExcludeGroups' => false, - 'shareExcludedGroupsList' => '', - 'publicShareDisclaimerText' => 'Lorem ipsum', - 'enableLinkPasswordByDefault' => 'yes', - 'shareApiDefaultPermissions' => Constants::PERMISSION_ALL, - 'shareApiDefaultPermissionsCheckboxes' => $this->invokePrivate($this->admin, 'getSharePermissionList', []) - ], - '' - ); - - $this->assertEquals($expected, $this->admin->getForm()); - } - - public function testGetFormWithExcludedGroups() { - $this->config - ->expects($this->at(0)) - ->method('getAppValue') - ->with('core', 'shareapi_exclude_groups_list', '') - ->willReturn('["NoSharers","OtherNoSharers"]'); - $this->config - ->expects($this->at(1)) - ->method('getAppValue') - ->with('core', 'shareapi_allow_group_sharing', 'yes') - ->willReturn('yes'); - $this->config - ->expects($this->at(2)) - ->method('getAppValue') - ->with('core', 'shareapi_allow_links', 'yes') - ->willReturn('yes'); - $this->config - ->expects($this->at(3)) - ->method('getAppValue') - ->with('core', 'shareapi_allow_public_upload', 'yes') - ->willReturn('yes'); - $this->config - ->expects($this->at(4)) - ->method('getAppValue') - ->with('core', 'shareapi_allow_resharing', 'yes') - ->willReturn('yes'); - $this->config - ->expects($this->at(5)) - ->method('getAppValue') - ->with('core', 'shareapi_allow_share_dialog_user_enumeration', 'yes') - ->willReturn('yes'); - $this->config - ->expects($this->at(6)) - ->method('getAppValue') - ->with('core', 'shareapi_enabled', 'yes') - ->willReturn('yes'); - $this->config - ->expects($this->at(7)) - ->method('getAppValue') - ->with('core', 'shareapi_default_expire_date', 'no') - ->willReturn('no'); - $this->config - ->expects($this->at(8)) - ->method('getAppValue') - ->with('core', 'shareapi_expire_after_n_days', '7') - ->willReturn('7'); - $this->config - ->expects($this->at(9)) - ->method('getAppValue') - ->with('core', 'shareapi_enforce_expire_date', 'no') - ->willReturn('no'); - $this->config - ->expects($this->at(10)) - ->method('getAppValue') - ->with('core', 'shareapi_exclude_groups', 'no') - ->willReturn('yes'); - $this->config - ->expects($this->at(11)) - ->method('getAppValue') - ->with('core', 'shareapi_public_link_disclaimertext', null) - ->willReturn('Lorem ipsum'); - $this->config - ->expects($this->at(12)) - ->method('getAppValue') - ->with('core', 'shareapi_enable_link_password_by_default', 'no') - ->willReturn('yes'); - $this->config - ->expects($this->at(13)) - ->method('getAppValue') - ->with('core', 'shareapi_default_permissions', Constants::PERMISSION_ALL) - ->willReturn(Constants::PERMISSION_ALL); - - - $expected = new TemplateResponse( - 'settings', - 'settings/admin/sharing', - [ - 'allowGroupSharing' => 'yes', - 'allowLinks' => 'yes', - 'allowPublicUpload' => 'yes', - 'allowResharing' => 'yes', - 'allowShareDialogUserEnumeration' => 'yes', - 'enforceLinkPassword' => false, - 'onlyShareWithGroupMembers' => false, - 'shareAPIEnabled' => 'yes', - 'shareDefaultExpireDateSet' => 'no', - 'shareExpireAfterNDays' => '7', - 'shareEnforceExpireDate' => 'no', - 'shareExcludeGroups' => true, - 'shareExcludedGroupsList' => 'NoSharers|OtherNoSharers', - 'publicShareDisclaimerText' => 'Lorem ipsum', - 'enableLinkPasswordByDefault' => 'yes', - 'shareApiDefaultPermissions' => Constants::PERMISSION_ALL, - 'shareApiDefaultPermissionsCheckboxes' => $this->invokePrivate($this->admin, 'getSharePermissionList', []) - ], - '' - ); - - $this->assertEquals($expected, $this->admin->getForm()); - } - - public function testGetSection() { - $this->assertSame('sharing', $this->admin->getSection()); - } - - public function testGetPriority() { - $this->assertSame(0, $this->admin->getPriority()); - } -} diff --git a/tests/lib/Settings/ManagerTest.php b/tests/lib/Settings/ManagerTest.php index 2b2b2250695..ed02061c595 100644 --- a/tests/lib/Settings/ManagerTest.php +++ b/tests/lib/Settings/ManagerTest.php @@ -21,13 +21,11 @@ * */ -namespace Tests\Settings; +namespace OCA\Settings\Tests\AppInfo; -use function get_class; -use OC\Settings\Admin\Sharing; +use OCA\Settings\Admin\Sharing; use OC\Settings\Manager; -use OC\Settings\Mapper; -use OC\Settings\Personal\Security; +use OCA\Settings\Personal\Security; use OC\Settings\Section; use OCP\IDBConnection; use OCP\IL10N; @@ -35,7 +33,6 @@ use OCP\ILogger; use OCP\IServerContainer; use OCP\IURLGenerator; use OCP\L10N\IFactory; -use OCP\Settings\ISettings; use OCP\Settings\ISubAdminSettings; use Test\TestCase; diff --git a/tests/lib/Settings/Personal/SecurityTest.php b/tests/lib/Settings/Personal/SecurityTest.php deleted file mode 100644 index 012c1d87a1f..00000000000 --- a/tests/lib/Settings/Personal/SecurityTest.php +++ /dev/null @@ -1,120 +0,0 @@ - - * - * @author 2019 Christoph Wurst - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -namespace Test\Settings\Personal; - -use OC\Authentication\TwoFactorAuth\ProviderLoader; -use OCP\IInitialStateService; -use OCP\InitialStateService; -use OC\Settings\Personal\Security; -use OCP\AppFramework\Http\TemplateResponse; -use OCP\IConfig; -use OCP\IUser; -use OCP\IUserManager; -use OCP\IUserSession; -use PHPUnit\Framework\MockObject\MockObject; -use Test\TestCase; - -class SecurityTest extends TestCase { - - /** @var InitialStateService|MockObject */ - private $initialStateService; - - /** @var IUserManager|MockObject */ - private $userManager; - - /** @var ProviderLoader|MockObject */ - private $providerLoader; - - /** @var IUserSession|MockObject */ - private $userSession; - - /** @var IConfig|MockObject */ - private $config; - - /** @var string */ - private $uid; - - /** @var Security */ - private $section; - - public function setUp() { - parent::setUp(); - - $this->initialStateService = $this->createMock(IInitialStateService::class); - $this->userManager = $this->createMock(IUserManager::class); - $this->providerLoader = $this->createMock(ProviderLoader::class); - $this->userSession = $this->createMock(IUserSession::class); - $this->config = $this->createMock(IConfig::class); - $this->uid = 'test123'; - - $this->section = new Security( - $this->initialStateService, - $this->userManager, - $this->providerLoader, - $this->userSession, - $this->config, - $this->uid - ); - } - - public function testGetForm() { - $user = $this->createMock(IUser::class); - $this->userManager->expects($this->once()) - ->method('get') - ->with($this->uid) - ->willReturn($user); - $user->expects($this->once()) - ->method('canChangePassword') - ->willReturn(true); - $this->userSession->expects($this->once()) - ->method('getUser') - ->willReturn($user); - $this->providerLoader->expects($this->once()) - ->method('getProviders') - ->with($user) - ->willReturn([]); - $this->config->expects($this->once()) - ->method('getUserValue') - ->with( - $this->uid, - 'accessibility', - 'theme', - false - ) - ->willReturn(false); - - $form = $this->section->getForm(); - - $expected = new TemplateResponse('settings', 'settings/personal/security', [ - 'passwordChangeSupported' => true, - 'twoFactorProviderData' => [ - 'providers' => [], - ], - 'themedark' => false, - ]); - $this->assertEquals($expected, $form); - } - -} diff --git a/tests/lib/Settings/SectionTest.php b/tests/lib/Settings/SectionTest.php index 422b931bb4b..70606135630 100644 --- a/tests/lib/Settings/SectionTest.php +++ b/tests/lib/Settings/SectionTest.php @@ -21,7 +21,7 @@ * */ -namespace Tests\Settings; +namespace OCA\Settings\Tests\AppInfo; use OC\Settings\Section; use Test\TestCase; diff --git a/tests/phpunit-autotest.xml b/tests/phpunit-autotest.xml index 05258ee6eff..b09b571c1c7 100644 --- a/tests/phpunit-autotest.xml +++ b/tests/phpunit-autotest.xml @@ -35,6 +35,7 @@ ../apps/provisioning_api/tests ../apps/systemtags/tests ../apps/theming/tests + ../apps/settings/tests ../apps/twofactor_backupcodes/tests ../apps/updatenotification/tests ../apps/user_ldap/tests diff --git a/webpack.common.js b/webpack.common.js index 7315fa9f8bc..695dcc9c226 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -3,15 +3,15 @@ const merge = require('webpack-merge'); const { VueLoaderPlugin } = require('vue-loader'); const core = require('./core/webpack'); -const settings = require('./settings/webpack'); - const accessibility = require('./apps/accessibility/webpack'); + const comments = require('./apps/comments/webpack'); const files_sharing = require('./apps/files_sharing/webpack'); const files_trashbin = require('./apps/files_trashbin/webpack'); const files_versions = require('./apps/files_versions/webpack'); const oauth2 = require('./apps/oauth2/webpack'); const systemtags = require('./apps/systemtags/webpack'); +const settings = require('./apps/settings/webpack'); const twofactor_backupscodes = require('./apps/twofactor_backupcodes/webpack'); const updatenotifications = require('./apps/updatenotification/webpack'); const workflowengine = require('./apps/workflowengine/webpack'); -- cgit v1.2.3